//#########################################################
// Submit Form Function
//
function SubmitForm() {
	var sErrMsg = "";

	// Index into the list boxes
	//alert ("Event:[" + document.forms[0].Event.options.selectedIndex + "]");
	//alert ("Event:[" + document.forms[0].Event.options[document.forms[0].Event.options.selectedIndex].text+ "]");
	//alert ("State:[" + document.forms[0].State.options.selectedIndex+ "]");
	//alert ("State:[" + document.forms[0].State.options[document.forms[0].State.options.selectedIndex].text+ "]");
	
	document.forms[1].CompanyName.value = trim(document.forms[1].CompanyName.value);
	document.forms[1].MailingAddress1.value = trim(document.forms[1].MailingAddress1.value);
	document.forms[1].MailingAddress2.value = trim(document.forms[1].MailingAddress2.value);
	document.forms[1].City.value = trim(document.forms[1].City.value);
	document.forms[1].State.value = trim(document.forms[1].State.value);
	document.forms[1].Zip.value = trim(document.forms[1].Zip.value);
	document.forms[1].YourName.value = trim(document.forms[1].YourName.value);
	document.forms[1].Phone.value = trim(document.forms[1].Phone.value);
	document.forms[1].Email.value = trim(document.forms[1].Email.value);
	document.forms[1].NumberAttending.value = trim(document.forms[1].NumberAttending.value);

	sErrMsg = CheckAddressItem(document.forms[1].NumberAttending, sErrMsg, "  + Number Attending");
	sErrMsg = CheckAddressItem(document.forms[1].Email, sErrMsg, "  + Email");
	sErrMsg = CheckAddressItem(document.forms[1].Phone, sErrMsg, "  + Phone");
	sErrMsg = CheckAddressItem(document.forms[1].YourName, sErrMsg, "  + Your Name");
	sErrMsg = CheckAddressItem(document.forms[1].Zip, sErrMsg, "  + Zip");
	sErrMsg = CheckAddressItem(document.forms[1].State, sErrMsg, "  + State");
	sErrMsg = CheckAddressItem(document.forms[1].City, sErrMsg, "  + City");
	sErrMsg = CheckAddressItem(document.forms[1].MailingAddress1, sErrMsg, "  + Mailing Address");
	sErrMsg = CheckAddressItem(document.forms[1].CompanyName, sErrMsg, "  + Company Name");
 
	// Make sure the required fields are filled in
	if (sErrMsg!="") {
		sErrMsg = "The following information is still needed.\n" + sErrMsg;
		alert (sErrMsg);
		return;
		}

	// Make sure that the zip code is a number
	if (!(IsANumber(document.forms[1].Zip.value))) {
		alert ("The zip code must be a number.  Please verify it again.");
		document.forms[1].Zip.focus();
		return;
		}		

	// Make sure that the number attending is a number
	if (!(IsANumber(document.forms[1].NumberAttending.value))) {
		alert ("The number attending must be a number.  Please verify it again.");
		document.forms[1].NumberAttending.focus();
		return;
		}		
	
	// Make sure the email address appears to be valid
	if (!(IsAEmail(document.forms[1].Email.value))) {
		alert ("Your email does not appear to be a vaild email address.\n" +
			"Please verify it again.");
		document.forms[1].Email.focus();
		return;
		}

	document.forms[1].submit();
}

//=========================================================
function CheckAddressItem (oItem, sErrList, sErrMsg) {
	if (oItem.value=="") {
		sErrList = AddPreString (sErrList, sErrMsg);
		oItem.focus(); }
	return(sErrList);
}

//#########################################################
// General pattern validate function
//
function ValidatePattern (szVal, szPattern) {
	var i, j;
	var bAllOk = true;
	
	if (szVal=="") {
		bAllOk = false;
		return (bAllOk);
		}
	
	for (i=0; i < szVal.length; i++) {
		ch = szVal.charAt(i);
		for (j=0; j < szPattern.length; j++) {
			if (ch == szPattern.charAt(j)) { break; }
			}
		if (j == szPattern.length) {
			bAllOk = false;
			break;
			}
		}
	return (bAllOk);
}

//#########################################################
// If the string is a number, return true
//
function IsANumber (szVal) {
	var szPattern = "0123456789";
	
	return (ValidatePattern (szVal, szPattern));
}

//#########################################################
// If the string appears to be an email, return true
//
function IsAEmail (szVal) {
	var szPattern = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz&#402;&#352;&#338;&#381;&#353;&#339;&#382;&#376;ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþ0123456789-@.-_";

	if (szVal.search("@")==-1) {
		return(false); }
	
	return (ValidatePattern (szVal, szPattern));
}


//#########################################################
// If the string is a number, return true
//
function IsACCNumber (szVal) {
	var szResult;
	
	szResult = IsACCNumberError (szVal);
	
	if (szResult=="") {
		return (true) }
	else {
		return (false); }
}
	
//#########################################################
// Dual purpose function to allow CC check in a single
// place.  Function is designed to return a string with
// the error message if an issue is found.
//
function IsACCNumberError (szVal) {
	var i;
	var ch;
	var ddigit=0;
	var kdig=0;
	var checksum=0;
	var szPattern = "0123456789";
	
	// Remove all characters except numbers
	szVal = strip(szVal) + '';

	// Check length of 13	
	if (szVal.length < 13) 
		return ("Invalid CC number: digits missing");
		
	// Check validity of card number (simple check)
	for (i = szVal.length-1;  i >= 0;  i--) {
		kdig++;
		ch = szVal.charAt(i);
		if ((kdig % 2) != 0) {
			checksum=checksum+parseInt(ch)
			}
		else {
			ddigit=parseInt(ch)*2;
			if (ddigit >= 10)
				checksum=checksum+1+(ddigit-10)
			else
				checksum=checksum+ddigit;
			}
		}
  
	if ((checksum % 10) != 0)
		return('Invalid credit card number. Please check for errors.');

	// Return blank string, no errors found
	return ('');
}

//#########################################################
//Removes all other characters accept numbers.
function strip(number) {
	var sOut = '';
	mask = '1234567890';
	for(count = 0; count <= number.length; count++) {
		if(mask.indexOf(number.substring(count, count+1),0) != -1 ) 
			sOut += number.substring(count,count+1);
		}
	return sOut;
}

//#########################################################
// Removes spaces at the end and the beginning of the string.
//
function trim(szVal) {
	var i;
	var nStart;
	var nEnd;
	
	if (szVal.length==0) return ('');
	
	// Check for leading spaces
	for (i = 0; i < szVal.length; i++) {
		if (szVal.charAt(i) != " ") { 
			nStart = i;
			break;
			}
		}
			
	// Check for trailing spaces
	for (i = szVal.length-1; i >= 0; i--) {
		if (szVal.charAt(i) != " ") {
			nEnd = i;
			break;
			}
		}
	// Extract trimmed string
	return (szVal.substr (nStart, nEnd - nStart + 1));

}

//#########################################################
function IsADate (szVal) {
	szPattern = "0123456789-/";
	
	return (ValidatePattern(szVal, szPattern));
}

//#########################################################
function IsBlank(szVal) {
	if (trim(szVal) != "") return (false)
	else return (true);	
}


//#########################################################
// Adds string to end of existing string
function AddString(sCurrent, sAdd) {
	if (sAdd=="") {
		return (sCurrent) }
	else if (sCurrent=="") {
		return (sAdd) }
	else {
		return (sCurrent + "\n" + sAdd);  }

}

//#########################################################
// Adds string to start of existing string
function AddPreString(sCurrent, sAdd) {
	if (sAdd=="") {
		return (sCurrent) }
	else if (sCurrent=="") {
		return (sAdd) }
	else {
		return (sAdd + "\n" + sCurrent);  }
}

