var xmlhttp = false;


try {
	xmlhttp = new ActiveXObject("Msxml2.XMLTTP");
} catch (e) {
	try {
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	} catch (E) {
		xmlhttp = false;
	}
}


if (!xmlhttp && typeof  XMLHttpRequest != 'undefined') {
	xmlhttp = new XMLHttpRequest();
}


function test(src) {
     var emailReg = "^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$";
     var regex = new RegExp(emailReg);
     return regex.test(src);
}
  
function validateForm() { //v4.0
  var errors=0,args=validateForm.arguments;
  var frm = document.forms[0];
	for (var i=0; i<(args.length-2); i+=3){
		btnName = args[i];
		btnChecked = false;
		if ((args[i+2] == "radio") || (args[i+2] == "checkbox"))
		{
			for (j=document.form1[btnName].length-1; j > -1; j--) {
				if (document.form1[btnName][j].checked){
					btnChecked = true;
				}
			}
		}
		else if (args[i+2] == "text")
		{
			if (document.form1[btnName].value != "")
			{
				if (btnName.indexOf('email') != -1){
					if (!test(document.form1[btnName].value)){
						alert("Invalid e-mail address");
						return false;
					}
					else{
						btnChecked = true;
					}
				}
				else{
					btnChecked = true;
				}
			}
		}
		document.form1[btnName].style.borderColor = "#9EADCC";
		if (!btnChecked){
			document.form1[btnName].style.borderColor = "red";
			errors = errors+1;
		}
	}
	
	
	var TableID = document.form1['TableID'];
	var TableType;
	var TotalAmount;
	
					
	for (i = 0; i<TableID.length; i++)
	{
		if( TableID[i].checked )
		{
			TableType = TableID[i].value;
			var objDD = document.getElementById('TableID_'+TableType+'_Quantity');
			
			if( TableType == 3 || TableType == 5 || TableType == 6 || TableType == 7 )
			{
				var number = objDD.options[objDD.selectedIndex].value;
			}
			else
			{
				var number = 1;
			}
			
			
			switch( TableType )
			{
				case '1':
					TotalAmount = 40000 * number;
					break;
				case '2':
					TotalAmount = 25000 * number;
					break;
				case '3':
					TotalAmount = 12000 * number;
					break;
				case '4':
					TotalAmount = 6000 * number;
					break;
				case '5':
					TotalAmount = 1200 * number;
					break;
				case '6':
					TotalAmount = 600 * number;
					break;
				case '7':
					TotalAmount = 375 * number;	
					break;	
				case '8':
					TotalAmount = document.form1['DonationAmount'].value;
					break;
					case '77':
					TotalAmount = 12000 * number;	
					break;	
			}
		}
	}
	//TotalAmount = document.form1['DonationAmount'].value;

	 // if donation is selected, must add dollar amount
	 document.form1['DonationAmount'].style.borderColor = "#9EADCC";
	 if ( TableType == '8' && document.form1['DonationAmount'].value == "")
	 {
			errors = errors+1;
			document.form1['DonationAmount'].style.borderColor = "red";
	 }
	  
	 
	 //  if credit amount given, credit info required.
	 document.form1['cc_name'].style.borderColor = "#9EADCC";
	 document.form1['cc_number'].style.borderColor = "#9EADCC";   
	 if( document.form1['CCAmount'].value != "")
	 {
	 		if( document.form1['cc_number'].value == "" )
	 		{
	 			errors = errors+1;
	 			document.form1['cc_number'].style.borderColor = "red";
	 		}
	 			
	 		if( document.form1['cc_name'].value == "" )
	 		{
	 			errors = errors+1;
	 			document.form1['cc_name'].style.borderColor = "red";
	 		}	
	 }

	if (errors > 0){
		alert("Please enter all required fields.");
		return false;
	}	
	
	var CCAmount = 0;
	if( document.form1['CCAmount'].value != "" )
		CCAmount = parseFloat(document.form1['CCAmount'].value);
	

	
	if( parseFloat(TotalAmount) != ( CCAmount ) )
	{
		alert("Your credit card amounts do not equal your total amount.");
		return false;
	}
}


function validateGuestForm() { //v4.0
  var errors=0,args=validateGuestForm.arguments;
  var frm = document.forms[0];
	for (var i=0; i<(args.length-2); i+=3){
		btnName = args[i];
		btnChecked = false;
		if ((args[i+2] == "radio") || (args[i+2] == "checkbox"))
		{
			for (j=document.form1[btnName].length-1; j > -1; j--) {
				if (document.form1[btnName][j].checked){
					btnChecked = true;
				}
			}
		}
		else if (args[i+2] == "text")
		{
			if (document.form1[btnName].value != "")
			{
				if (btnName.indexOf('email') != -1){
					if (!test(document.form1[btnName].value)){
						alert("Invalid e-mail address");
						return false;
					}
					else{
						btnChecked = true;
					}
				}
				else{
					btnChecked = true;
				}
			}
		}
		document.form1[btnName].style.borderColor = "#9EADCC";
		if (!btnChecked){
			document.form1[btnName].style.borderColor = "red";
			errors = errors+1;
		}
	}

	if (errors > 0){
		alert("Please enter the email address that you registered with.");
		return false;
	}	
	

}



function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function activeXfix(){
	theObjects = document.getElementsByTagName("div"); 
	for (var i = 0; i < theObjects.length; i++) { 
		//alert(theObjects[i].outerHTML);
		theObjects[i].outerHTML = theObjects[i].outerHTML; 
	}
}

function makerequest(serverPage, objID) {

	var obj = document.getElementById(objID);
	xmlhttp.open("GET", serverPage);
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
			obj.innerHTML = xmlhttp.responseText;
		}
	}
	xmlhttp.send(null);
}

function displayfirstuser()
{
	document.form1['GuestName1'].value = document.form1['prefix'].value + ' ' + document.form1['fname'].value + ' ' + document.form1['lname'].value + ' ' +document.form1['suffix'].value;
}

function displaytotalamount()
{
	var TableID = document.form1['TableID'];
	var TableType;
	var TotalAmount;
	
	
				
	for (i = 0; i<TableID.length; i++)
	{
		
		if( TableID[i].checked )
		{
			TableType = TableID[i].value;
			var objDD = document.getElementById('TableID_'+TableType+'_Quantity');
			
			if( TableType == 3 || TableType == 5 || TableType == 6 || TableType == 7 )
			{
				var number = objDD.options[objDD.selectedIndex].value;
			}
			else
			{
				var number = 1;
			}
	
			switch( TableType )
				{
		case '1':
			TotalAmount = 40000 * number;
			break;
		case '2':
			TotalAmount = 25000 * number;
			break;
		case '3':
			TotalAmount = 12000 * number;
			break;
		case '4':
			TotalAmount = 6000 * number;
			break;
		case '5':
			TotalAmount = 1200 * number;
			break;
		case '6':
			TotalAmount = 600* number;
			break;
		case '7':
			TotalAmount = 375 * number;	
			break;
		case '9':
			TotalAmount = 0;	
			break;		
				case '8':
					TotalAmount = document.form1['DonationAmount'].value;
					break;
					case '77':
			TotalAmount = 12000 * number;
			break;
				default:
					TotalAmount = 0;
					break;
			}
		}
	}
	
	//TotalAmount = document.form1['DonationAmount'].value;
	
	
	document.getElementById('TotalAmount').innerHTML = "$" + TotalAmount;
	document.getElementById('TotalAmount').innerHTML = "$" + TotalAmount;
}



function Mod10(ccNumb) 
{  // v2.0
	var valid = "0123456789"  // Valid digits in a credit card number
	var len = ccNumb.length;  // The length of the submitted cc number
	var iCCN = parseInt(ccNumb);  // integer of ccNumb
	var sCCN = ccNumb.toString();  // string of ccNumb
	sCCN = sCCN.replace (/^\s+|\s+$/g,'');  // strip spaces
	var iTotal = 0;  // integer total set at zero
	var bNum = true;  // by default assume it is a number
	var bResult = false;  // by default assume it is NOT a valid cc
	var temp;  // temp variable for parsing string
	var calc;  // used for calculation of each digit
	
	// Determine if the ccNumb is in fact all numbers
	for (var j=0; j<len; j++) {
	  temp = "" + sCCN.substring(j, j+1);
	  if (valid.indexOf(temp) == "-1"){bNum = false;}
	}
	
	// if it is NOT a number, you can either alert to the fact, or just pass a failure
	if(!bNum){
	  /*alert("Not a Number");*/bResult = false;
	}
	
	// Determine if it is the proper length 
	if((len == 0)&&(bResult)){  // nothing, field is blank AND passed above # check
	  bResult = false;
	} else{  // ccNumb is a number and the proper length - let's see if it is a valid card number
	  if(len >= 15){  // 15 or 16 for Amex or V/MC
	    for(var i=len;i>0;i--){  // LOOP throught the digits of the card
	      calc = parseInt(iCCN) % 10;  // right most digit
	      calc = parseInt(calc);  // assure it is an integer
	      iTotal += calc;  // running total of the card number as we loop - Do Nothing to first digit
	      i--;  // decrement the count - move to the next digit in the card
	      iCCN = iCCN / 10;                               // subtracts right most digit from ccNumb
	      calc = parseInt(iCCN) % 10 ;    // NEXT right most digit
	      calc = calc *2;                                 // multiply the digit by two
	      // Instead of some screwy method of converting 16 to a string and then parsing 1 and 6 and then adding them to make 7,
	      // I use a simple switch statement to change the value of calc2 to 7 if 16 is the multiple.
	      switch(calc){
	        case 10: calc = 1; break;       //5*2=10 & 1+0 = 1
	        case 12: calc = 3; break;       //6*2=12 & 1+2 = 3
	        case 14: calc = 5; break;       //7*2=14 & 1+4 = 5
	        case 16: calc = 7; break;       //8*2=16 & 1+6 = 7
	        case 18: calc = 9; break;       //9*2=18 & 1+8 = 9
	        default: calc = calc;           //4*2= 8 &   8 = 8  -same for all lower numbers
	      }                                               
	    iCCN = iCCN / 10;  // subtracts right most digit from ccNum
	    iTotal += calc;  // running total of the card number as we loop
	  }  // END OF LOOP
	  if ((iTotal%10)==0){  // check to see if the sum Mod 10 is zero
	    bResult = true;  // This IS (or could be) a valid credit card number.
	  } else {
	    bResult = false;  // This could NOT be a valid credit card number
	    }
	  }
	}
	// change alert to on-page display or other indication as needed.
	document.form1['cc_number'].style.borderColor = "#9EADCC";
	if(!bResult){
		document.form1['cc_number'].style.borderColor = "red";
	  alert("This is NOT a valid Credit Card Number!");
	}
	  return bResult; // Return the results
}
