var digits = "0123456789";
var phoneNumberDelimiters = "()- ";
var validWorldPhoneChars = phoneNumberDelimiters + "+";
var minDigitsInIPhoneNumber = 10;

function newImage(arg) {
	if (document.images) {
		rslt = new Image();
		rslt.src = arg;
		return rslt;
	}
}

function changeImages() {
	if (document.images && (preloadFlag == true)) {
		for (var i=0; i<changeImages.arguments.length; i+=2) {
			document[changeImages.arguments[i]].src = changeImages.arguments[i+1];
		}
	}
}

var preloadFlag = false;
function preloadImages() {
	if (document.images) {
		ahc_04_over = newImage("http://www.affordable-health-coverage.com/images/ahc_04-over.gif");
		ahc_05_over = newImage("http://www.affordable-health-coverage.com/images/ahc_05-over.gif");
		ahc_06_over = newImage("http://www.affordable-health-coverage.com/images/ahc_06-over.gif");
		ahc_07_over = newImage("http://www.affordable-health-coverage.com/images/ahc_07-over.gif");
		ahc_08_over = newImage("http://www.affordable-health-coverage.com/images/ahc_08-over.gif");
		ahc_09_over = newImage("http://www.affordable-health-coverage.com/images/ahc_09-over.gif");
		preloadFlag = true;
	}
}

function isInteger(s)
{   var i;
    for (i = 0; i < s.length; i++)
    {
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++)
    {
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function checkInternationalPhone(strPhone){
	s=stripCharsInBag(strPhone,validWorldPhoneChars);
	return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}

function emailCheck (emailStr) {
	var checkTLD=1;
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum|tv|la)$/;
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");

	var matchArray=emailStr.match(emailPat);

	if (matchArray==null) {
		//alert("Email address seems incorrect (check @ and .'s)");
		return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];

	for (i=0; i<user.length; i++) {
		if (user.charCodeAt(i)>127) {
			//alert("Ths username contains invalid characters.");
			return false;
	   }
	}
	for (i=0; i<domain.length; i++) {
		if (domain.charCodeAt(i)>127) {
		//alert("Ths domain name contains invalid characters.");
			return false;
		}
	}

	if (user.match(userPat)==null) {
		//alert("The username doesn't seem to be valid.");
		return false;
	}

	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				//alert("Destination IP address is invalid!");
				return false;
			}
		}
		return true;
	}

	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++) {
		if (domArr[i].search(atomPat)==-1) {
			//alert("The domain name does not seem to be valid.");
			return false;
		}
	}

	/*if (checkTLD && domArr[domArr.length-1].length!=2 &&
	domArr[domArr.length-1].search(knownDomsPat)==-1) {
	alert("The address must end in a well-known domain or two letter " + "country.");
	return false;
	}*/

	if (len<2) {
		//alert("This address is missing a hostname!");
		return false;
	}

	return true;
}

/*function checkZip() {
	 if (!frmUserData.txtZip.value) {
		  alert('Please enter your Zip Code');
		  frmUserData.txtZip.focus();
		  return(false);
	 }
	 else {frmUserData.submit();}
}*/

function checkForm() {
	if (!frmUserData.zip_code.value) {
		alert('Please enter your Zip Code');
		frmUserData.zip_code.focus();
		return(false);
	}
	/*
	else if (!frmUserData.month.value) {
		alert('Please enter your Birthday (missing month)');
		frmUserData.month.focus();
		return(false);
	}
	else if (!frmUserData.day.value) {
		alert('Please enter your Birthday (missing day)');
		frmUserData.day.focus();
		return(false);
	}
	else if (!frmUserData.year.value) {
		alert('Please enter your Birthday (missing year)');
		frmUserData.year.focus();
		return(false);
	}
	*/
	else frmUserData.submit();
}

function checkForm2() {
	var Phone = frmUserData.phone11.value + frmUserData.phone12.value + frmUserData.phone13.value;

	if (!frmUserData.first_name.value) {
		alert('Please enter your first name');
		frmUserData.first_name.focus();
		return(false);
	}
	else if (!frmUserData.last_name.value) {
		alert('Please enter your last name');
		frmUserData.last_name.focus();
		return(false);
	}
	else if (!frmUserData.address.value) {
	alert('Please enter your Street Address');
		frmUserData.address.focus();
		return(false);
	}
	else if (!frmUserData.city.value) {
		alert('Please enter your City');
		frmUserData.city.focus();
		return(false);
	}
	else if (!frmUserData.state.value) {
		alert('Please enter your State');
		frmUserData.state.focus();
		return(false);
	}
	else if (!frmUserData.zip_code.value) {
		alert('Please enter your Zip Code');
		frmUserData.zip_code.focus();
		return(false);
	}
	else if (!Phone || !checkInternationalPhone(Phone)){
		alert("Please enter your Phone Number");
		if (!frmUserData.phone11.value) frmUserData.phone11.focus();
		if (!frmUserData.phone12.value) frmUserData.phone12.focus();
		if (!frmUserData.phone13.value) frmUserData.phone13.focus();
		return(false);
	}
	else if (!frmUserData.email_address.value || !emailCheck(frmUserData.email_address.value)) {
		alert('Please enter your email address');
		frmUserData.email_address.focus();
		return(false);
	}
	else frmUserData.submit();
}

function checkForm3() {
	if (!frmUserData.height.value) {
		alert('Please enter your height');
		frmUserData.height.focus();
		return(false);
	}
	else if (!frmUserData.weight.value) {
		alert('Please enter your weight');
		frmUserData.weight.focus();
		return(false);
	}
	else frmUserData.submit();
}

/*		function checkVals2() {
			var Phone = frmUserData.txtPhone11.value + frmUserData.txtPhone12.value + frmUserData.txtPhone13.value;

			if (!frmUserData.txtFName.value) {
				alert('Please enter your first name');
				frmUserData.txtFName.focus();
				return(false);
			}
			else if (!frmUserData.txtLName.value) {
				alert('Please enter your last name');
				frmUserData.txtLName.focus();
				return(false);
			}
			else if (!frmUserData.txtAddress.value) {
				alert('Please enter your Street Address');
				frmUserData.txtAddress.focus();
				return(false);
			}
			else if (!frmUserData.txtCity.value) {
				alert('Please enter your City');
				frmUserData.txtCity.focus();
				return(false);
			}
			else if (!frmUserData.selState.value) {
				alert('Please enter your State');
				frmUserData.selState.focus();
				return(false);
			}
			else if (!frmUserData.txtZip.value) {
				alert('Please enter your Zip Code');
				frmUserData.txtZip.focus();
				return(false);
			}
			else if (!Phone || !checkInternationalPhone(Phone)){
				alert("Please enter your Phone Number");
				frmUserData.txtPhone11.focus();
				return(false);
			}
			else if (!frmUserData.txtEmail.value || !emailCheck(frmUserData.txtEmail.value)) {
				alert('Please enter your email address');
				frmUserData.txtEmail.focus();
				return(false);
			}
			else if (!frmUserData.selPAMonth.value) {
				alert('Please enter your Month of birth');
				frmUserData.selPAMonth.focus();
				return(false);
			}
			else if (!frmUserData.selPADay.value) {
				alert('Please enter your Day of birth');
				frmUserData.selPADay.focus();
				return(false);
			}
			else if (!frmUserData.selPAYear.value) {
				alert('Please enter your Month of birth');
				frmUserData.selPAYear.focus();
				return(false);
			}
			else if (!frmUserData.selPAFeet.value) {
				alert('Please enter your Height');
				frmUserData.selPAFeet.focus();
				return(false);
			}
			else if (!frmUserData.selPAInches.value) {
				alert('Please enter your Height');
				frmUserData.selPAInches.focus();
				return(false);
			}
			else if (!frmUserData.txtPAWeight.value) {
				alert('Please enter your Weight');
				frmUserData.txtPAWeight.focus();
				return(false);
			}
			else if (!frmUserData.selPATobacco.value) {
				alert('Please tell us when you last used Tobacco products');
				frmUserData.selPATobacco.focus();
				return(false);
			}
			else if (frmUserData.rbSEmployed[0].value && !frmUserData.txtEmpCnt.value) {
				alert('Please tell us the Number of Employees');
				frmUserData.txtEmpCnt.focus();
				return(false);
			}
			else if (!frmUserData.selContact.value) {
				alert('Please tell the Best Time to Contact you');
				frmUserData.selContact.focus();
				return(false);
			}
			else if (!frmUserData.selCoverage.value) {
				alert('Please enter the Converage Needed');
				frmUserData.selConverage.focus();
				return(false);
			}
		  else return(true);
		}*/