//*************  Check Numeric *************************
function CheckNumeric()
{
// Get ASCII Value of key User Pressed
	var key = window.event.keycode;
	// Was Key Numeric Character (0-9)
	if ( key > 47 && key < 58 )
	   return;  // Do Nothing
	else
 	   window.event.returnValue=null; // Discard Character
}

//*************  NUMBER VALIDATE  **********************
function validNum(field){
	
	var valid = "1234567890";
	var temp;
	var ok = "yes";

	for(var f = 0; f < field.value.length; f++){
		temp = "" + field.value.substring(f, f+1);
		if(valid.indexOf(temp) == "-1") ok = "no";
	}
	
	if(ok == "no"){
		
		return false;
	}else{
		
		return true;
	}

}// end - function

function hasSpecialChar(str){
	var testchars = "ñüáé"; 
   	for (var i=0; i < str.length; i++) 
	{
		var temp = "" + str.substring(i, i+1);		 
		if (testchars.indexOf(temp) >=0 )
		{
			alert("Please do not enter special charachters ñ, ü, á, é, etc.");
			return true;
		}
	}	
	return false; 
}

//******************  MONTH Validate ******************

function validMonth(field){
	if(field.value == "01"){
		return true;
	}else if(field.value == "1" ){
		field.value = "01";
		return true;	
	}else if(field.value == "02"){
		return true;
	}else if(field.value == "2"){
		field.value = "02";
		return true;	
	}else if(field.value == "03"){
		return true;
	}else if(field.value == "3"){
		field.value = "03";
		return true;
	}else if(field.value == "04"){
		return true;
	}else if( field.value == "4"){
		field.value = "04";
		return true;
	}else if(field.value == "05"){
		return true;
	}else if(field.value == "5"){
		field.value = "05";
		return true;
	}else if(field.value == "06"){
		return true;
	}else if(field.value == "6"){
		field.value = "06";
		return true;
	}else if(field.value == "07"){
		return true;
	}else if(field.value == "7"){
		field.value = "07";
		return true;
	}else if(field.value == "08"){
		return true;
	}else if(field.value == "8"){
		field.value = "08";
		return true;
	}else if(field.value == "09"){
		return true;
	}else if(field.value == "9"){
		field.value = "09";
		return true;
	}else if(field.value == "10"){
		return true;
	}else if(field.value == "11"){
		return true;
	}else if(field.value == "12"){
		return true;
	}else{
		return false;
	}
}// end function

//******************  DAY Validate ******************

function validDay(field){
	var bGood = false;
	
	if( field.value == "1"){
		field.value = "0" + field.value;
		bGood = true;
	}else if( field.value == "01"){
		bGood = true;
	}else if(field.value == "2"){
		field.value = "02";
		bGood = true;
	}else if(field.value == "02"){
		bGood = true;
	}else if(field.value == "3"){
		field.value = "03";
		bGood = true;
	}else if(field.value == "03"){
		bGood = true;
	}else if(field.value == "4"){
		field.value = "04";
		bGood = true;
	}else if(field.value == "04"){
		bGood = true;
	}else if(field.value == "5"){
		field.value = "05";
		bGood = true;
	}else if(field.value == "05"){
		bGood = true;
	}else if(field.value == "6"){
		field.value = "06";
		bGood = true;
	}else if(field.value == "06"){
		bGood = true;
	}else if(field.value == "7"){
		field.value = "07";
		bGood = true;
	}else if(field.value == "07"){
		bGood = true;
	}else if(field.value == "8"){
		field.value = "08";
		bGood = true;
	}else if(field.value == "08"){
		bGood = true;
	}else if(field.value == "9"){
		field.value = "09";
		bGood = true;
	}else if(field.value == "09"){
		bGood = true;
	}else if(field.value == "10"){
		bGood = true;
	}else if(field.value == "11"){
		bGood = true;
	}else if(field.value == "12"){
		bGood = true;	
	}else if(field.value == "13"){
		bGood = true;
	}else if(field.value == "14"){
		bGood = true;
	}else if(field.value == "15"){
		bGood = true;
	}else if(field.value == "16"){
		bGood = true;
	}else if(field.value == "17"){
		bGood = true;
	}else if(field.value == "18"){
		bGood = true;
	}else if(field.value == "19"){
		bGood = true;
	}else if(field.value == "20"){
		bGood = true;
	}else if(field.value == "21"){
		bGood = true;
	}else if(field.value == "22"){
		bGood = true;
	}else if(field.value == "23"){
		bGood = true;	
	}else if(field.value == "24"){
		bGood = true;
	}else if(field.value == "25"){
		bGood = true;
	}else if(field.value == "26"){
		bGood = true;
	}else if(field.value == "27"){
		bGood = true;
	}else if(field.value == "28"){
		bGood = true;
	}else if(field.value == "29"){
		bGood = true;
	}else if(field.value == "30"){
		bGood = true;
	}else if(field.value == "31"){
		bGood = true;
	}
	
	return bGood;
		
}// end function

//******************  YEAR Validate ******************

function validYear(field){
	var bGood = true;
	
	if(parseInt(field.value) < 1900 || parseInt(field.value) > 2000){
		return false;	
	}
	if(field.value.length == 1 && bGood == true){
		field.value = "0" + field.value;
		return true;
	}else{
		return true;
	}	
}// end function


//******************  SocNumber Validate ***************
function validSoc(field){
	
	var ssn = field.value;
	var split = ssn.split('-');
	
	var numDashes = split.length - 1;
	var matchArr = ssn.match(/^(\d{3})-?\d{2}-?\d{4}$/);
	
	if (matchArr == null || numDashes == 1) {
		alert('Invalid SSN. Must be 9 digits or in the form NNN-NN-NNNN.');
		field.focus();
		field.select();
		return false;
	}else if (parseInt(matchArr[1],10)==0) {
		alert("Invalid SSN: SSN's can't start with 000.");
		field.focus();
		field.select();
		return false;
	}else {
		return true;
		alert(ssn + "\r\n\r\n" + msg + " Social Security Number.");
   }
}// end - function


//****************  EMAIL Validate  *********************
function validEmail(field){
	if (field.value != ""){
		var emailFilter=/^.+@.+\..{2,3}$/;
    
		if (!(emailFilter.test(field.value))){ 
			return false;
		}else{
			return true;	
		}
	}else{
		return false;
	}		
}// end - function 

//****************  State Validate  *********************
function isValidState(fieldState, fieldCountry){
	var caState = "AB-BC-MB-NB-NF-NS-NT-ON-PE-QC-SK-YT";
	var usState1 = "AK-AL-AE-AP-AR-AZ-CA-CO-CT-DC-DE-FL-GA-GU-HI-IA-ID-IL-IN-KS-KY-LA-MA-MD-ME-MI-MN-MO-MS-MT";
	var usState2 = "NC-ND-NE-NH-NJ-NM-NV-NY-OH-OK-OR-PA-PR-RI-SC-SD-TN-TX-UT-VA-VT-WA-WI-WV-WY";
	var strState = fieldState.value;
	if(fieldCountry.value == "CA"){
	 	if (caState.indexOf(strState) >= 0){
			return true;
		}
	}else if(fieldCountry.value == "US"){
		if (usState1.indexOf(strState) >= 0 || usState2.indexOf(strState) >= 0 ){
			return true;
		}			
	}  
	return false;			
}// end - function


//************** ZIPCODE Validate ******************
function validZIP(field) {
var valid = "0123456789-";
var hyphencount = 0;


if (field.value.length != 8 && field.value.length != 6 && field.value.length != 7 && field.value.length != 5 && field.value.length != 10) {
alert("Please enter a valid zip code. e.g.- V0N 2L1 in Canada; 5 digit or 5 digit+4 zip code in US.");
field.focus();
field.select();
return false;
}

if (field.value.length == 5 || field.value.length == 10) {
	for (var i=0; i < field.value.length; i++) {
		temp = "" + field.value.substring(i, i+1);
		if (temp == "-") hyphencount++;
		if (valid.indexOf(temp) == "-1") {
			alert("Invalid characters in your zip code.  Please try again.");
			field.focus();
			field.select();
			return false;
		}
		if ((hyphencount > 1) || ((field.length==10) && ""+field.charAt(5)!="-")) {
			alert("The hyphen character should be used with a properly formatted 5 digit+four zip code, like '12345-6789'.   Please try again.");
			field.focus();
			field.select();
			return false;
   		}
	}
}
return true;
}

//*******************  PREPARE DISTRIB APP  *************************
function prepareApp(form){
	var bSend = true;
	var bSoc = false;
	var bMonth = false;
	var bDay = false;
	var bYear = false;
	var bEmail = false;
	var valid = "0123456789";
		
		if (!form.agree.checked)
		{
			alert("YOU MUST READ AND AGREE TO THE TERMS AND CONDITIONS BEFORE SUBMITTING YOUR REGISTRATION FORM");
			bSend = false;
			form.agree.focus();
			form.agree.select();
			return false;
		}
		
		
		if (form.sponsorDistributionNumber.value.length < 1)
		{
			alert("A distributor is required.  Please enter one and resubmit.");
			bSend = false;
			form.sponsorDistributionNumber.focus();
			form.sponsorDistributionNumber.select();
			return false;
		}

		if (form.sponsorDistributionNumber.value.length != 12)
		{
			alert("A distributor number must have 12 digits.  Please enter one and resubmit.");
			bSend = false;
			form.sponsorDistributionNumber.focus();
			form.sponsorDistributionNumber.select();
			return false;
		}
		
		
		if (form.lastName.value.length < 1 )
		{
			alert("A last name is required.  Please enter one and resubmit.");
			bSend = false;
			form.lastName.focus();
			form.lastName.select();
			return false;
		}		
		
		for (i=0; i<form.lastName.value.length; i++)
		{
			if (valid.indexOf(form.lastName.value.charAt(i))>0)
			{
		    	alert("Last name cannot contain a numeric value.");
		    	form.lastName.focus();
		    	form.lastName.select();
		    	return false;
		    	break;
			}
		}	
		
		if (form.firstName.value.length < 1)
		{
			alert("A first name is required.  Please enter one and resubmit.");
			bSend = false;
			form.firstName.focus();
			form.firstName.select();
			return false;
		}		
		
		for (i=0; i<form.firstName.value.length; i++)
		{
			if (valid.indexOf(form.firstName.value.charAt(i))>0)
			{
		    	alert("First name cannot contain a numeric value.");
		    	form.firstName.focus();
		    	form.firstName.select();
		    	return false;
		    	break;
			}
		}
		
		if (hasSpecialChar(form.lastName.value))
		{			 
			bSend = false;
			form.lastName.focus();
			form.lastName.select();
			return false;
		}
		
		if (hasSpecialChar(form.firstName.value))
		{
			bSend = false;
			form.firstName.focus();
			form.firstName.select();
			return false;
		}
		
		if (hasSpecialChar(form.middleName.value))
		{
			bSend = false;
			form.middleName.focus();
			form.middleName.select();
			return false;
		}
		
		if (hasSpecialChar(form.spouseLastName.value))
		{
			bSend = false;
			form.spouseLastName.focus();
			form.spouseLastName.select();
			return false;
		}
		if (hasSpecialChar(form.spouseFirstName.value))
		{
			bSend = false;
			form.spouseFirstName.focus();
			form.spouseFirstName.select();
			return false;
		}
		if (hasSpecialChar(form.spouseMiddleName.value))
		{
			bSend = false;
			form.spouseMiddleName.focus();
			form.spouseMiddleName.select();
			return false;
		}
		
		if (form.socialSecurityNumber.value.length < 1 )
		{
			
		}else if (form.socialSecurityNumber.value.length > 1 ){
			
			bSoc = validSoc(form.socialSecurityNumber);
			if(bSoc == false){
				return false;
			}
			
		}
		
		
		if (form.month.value.length < 1)
		{
			alert("A month value is required in the date of birth field.  Please enter one and resubmit.");
			bSend = false;
			form.month.focus();
			form.month.select();
			return false;
		}else if(form.month.value.length >= 1){
			var isNum = validNum(form.month);
			if(isNum == true){
				bMonth = validMonth(form.month);
			}else{
				alert("The month field requires a valid number from 1-12");
				form.month.focus();
				form.month.select();
				return false;
			}
			if(bMonth == false){
				alert("Please enter a valid month value.(1-12)");
				form.month.focus();
				form.month.select();
				return false;	
			}	
		}
		
		if (form.day.value.length < 1)
		{
			alert("A day value is required in the date of birth field.  Please enter one and resubmit.");
			bSend = false;
			form.day.focus();
			form.day.select();
			return false;
		}
		else if(form.day.value.length >= 1){
			var isNum = validNum(form.day);
			if(isNum == true){
				bDay = validDay(form.day);
			}else{
				alert("The day field requires a valid number.");
				form.day.focus();
				form.day.select();
				return false;
			}
			if(bDay == false){
				alert("Please enter a valid day value.");
				form.day.focus();
				form.day.select();
				return false;	
			}	
		}
		
		if (form.year.value.length < 1){
			alert("A year value is required in the date of birth field.  Please enter one and resubmit.");
			bSend = false;
			form.year.focus();
			form.year.select();
			return false;
		}else if(form.year.value.length < 4){
			alert("Please enter a year value in the format 'YYYY'.");
			bSend = false;
			form.year.focus();
			form.year.select();
			return false;
		}
		
		var isNum = validNum(form.year);
		if(isNum == true){
				bYear = validYear(form.year);
		}else{
			alert("The year field must be a number.");
			form.year.focus();
			form.year.select();
			bSend = false;
			return false;
		}
		if(bYear == false){
			alert("Please enter a valid year value.");
			form.year.focus();
			form.year.select();
			bSend = false;
			return false;	
		}	
		
		if(bYear == true && bDay == true && bMonth == true){
			form.dateOfBirth.value = form.month.value + "-" + form.day.value + "-" + form.year.value;
		}
		
		
		if (form.email.value < 1)
		{
			alert("A valid email address is required for registration.  Please enter one and resubmit.");
			bSend = false;
			form.email.focus();
			form.email.select();
			return false;
		}else if(form.email.value.length < 1){
		
			bEmail = validEmail(form.email);
			if(bEmail == false){
				bSend = false;
				form.email.focus();
				form.email.select();
				alert("You have entered an invalid email address.  Please try again.");	
				return false;
			}	
		}
		
		if(form.emailConfirm.value.length < 1){
			bSend = false;
			form.emailConfirm.focus();
			form.emailConfirm.select();
			alert("A confirmation email address is required.  Please enter one and resubmit");
			return false;
			
		}else if(form.emailConfirm.value.length < 1){
		
			bEmail = validEmail(form.emailConfirm);
			if(bEmail == false){
				bSend = false;
				form.email.focus();
				form.email.select();
				alert("You have entered an invalid email address in the email confirmation field.  Please try again.");	
				return false;
			}	
		}// end - if
		
		if(form.emailConfirm.value != form.email.value){
			bSend = false;
			form.emailConfirm.focus();
			form.emailConfirm.select();
			alert("The confirmation email does not match the original email entered.  Please re-enter and resubmit");	
			return false;
		}
	
		if (form.streetAddress1.value.length < 1)
		{
			alert("A valid address is required for registration.  Please enter one and resubmit.");
			bSend = false;
			form.streetAddress1.focus();
			form.streetAddress1.select();
			return false;
		}

		if (form.city.value.length < 1)
		{
			alert("A city is required for registration.  Please enter one and resubmit.");
			bSend = false;
			form.city.focus();
			form.city.select();
			return false;
		}
		
		if (form.state.value == "" )
		{
			alert("A state is required for registration.  Please enter one and resubmit.");
			bSend = false;
			form.state.focus();
			return false;
		}		
		var bState = isValidState(form.state, form.country);
		if (!bState){
			alert("The state is not valid in your selected country.");
			bSend = false;
			form.state.focus();
			return false;
		}
		
		if (form.zip.value.length < 1)
		{
			alert("A valid zip code is required for registration.  Please enter one and resubmit.");
			bSend = false;
			form.zip.focus();
			form.zip.select();
			return false;
		}else if(form.zip.value.length > 1){
			var bZip = validZIP(form.zip);
			if(bZip == false){
				bSend = false;
				form.zip.focus();
				form.zip.select();
				return false;
			}
		}


		if(bSend == true){
			// form.submit(); prevent double submit, by Sam 09-23-02	
			 
			if (document.all) {
				form.submit(); //IE
				form.btnSubmit.disabled=true; 
    			} else {
        			form.btnSubmit.onfocus = function () { this.blur(); } // NS4
        			form.btnSubmit.onclick = null;
				form.submit();
			}  		
		}
}// end function

function checkCC(form){
	//check sum
		while (number.length <16) {
			number = "0" + number;
		}
		//alert ("number: " + number);
		var validity = false;       // Assume invalid card
		var ln = number.length;  // Get input value length
    	ln --;
    	var checkSum = 0; // start with 0 checksum
    	var dbl = false; // Start with a non-doubling
		var cDigit = 0

    	//------------------------------------------------------------
    	// Beginning backward loop through string
    	//-------------------------------------------------------------
    	for (idx = ln; idx >= 0; idx --){
 			digit = number.substr(idx, 1);   // Isolate character
			//alert ("digit:" + digit);
 			if (dbl){    // If in the "double-add" phase
      			cDigit = parseInt(digit)*2; // Then double first
      			if (cDigit > 9){ // Cast nines
   					cDigit -= 9;
      			}
			} else {
				cDigit = parseInt(digit);
			}
  			dbl = !dbl; // Flip doubling flag
  			checkSum += cDigit;  // Add to running sum
 			if (checkSum > 9){  // Cast tens
      			checkSum -= 10; // Same as MOD 10, but faster
  			} 
			//alert ("sum:" + checkSum);
		}
		//alert (checkSum);
  		validity = (checkSum == 0) ? "yes" : "no"; // Must sum to 0
		
		if (validity == "no"){
			//alert("returning " + false);
			return false;
			 
		} else {
			//alert("returning " + true);
			return true;
		}
		

	
}


