var spouse=new Array("","","","","","","");

function checkSubmit(form){									
	//Company name cannot contain a number
	if(!noNum(form.group_company.value)) {
		alert("Your company name appears to have been entered incorrectly. Please re-enter your first name.");
		form.group_company.focus();
		return false;
	}
	
	//Company name cannot be left blank
	if(form.group_company.value == "") {
		alert("Please enter your company name.");
		form.group_company.focus();
		return false;
	}

	//name cannot contain a number
	if(!noNum(form.name.value)) {
		alert("Your name appears to have been entered incorrectly. Please re-enter your first name.");
		form.name.focus();
		return false;
	}
	
	//name cannot be left blank
	if(form.name.value=="") {
		alert("Please enter your name.");
		form.name.focus();
		return false;
	}

	//Street address must contain at least 1 letter and 1 number
	if(form.address_1_street1.value=="" || !validAddress(form.address_1_street1.value)) {
		alert("Your address appears to have been entered incorrectly. Please re-enter your address, including your street name and number.");
		form.address_1_street1.focus();
		return false;
	}

	//City cannot contain a number
	if(!noNum(form.address_1_city.value)) {
		alert("The name of your city appears to have been entered incorrectly. Please re-enter the name of your city or town.");
		form.address_1_city.focus();
		return false;
	}
	
	//City cannot be blank
	if(form.address_1_city.value=="") {
		alert("Please enter the name of your city or town.");
		form.address_1_city.focus();
		return false;
	}
		
	//State must be selected
	if(form.address_1_state.value=="" || form.address_1_state.value=="null") {
		alert("Please select the state you live in.");
		form.address_1_state.focus();
		return false;
	}

	//Zip must be 5 numbers
	if(form.address_1_zip.value=="" || isNaN(form.address_1_zip.value) || form.address_1_zip.value.length != 5) {
		alert("Your Zip code appears to have been entered incorrectly. Please re-enter your Zip code.");
		form.address_1_zip.value="";
		form.address_1_zip.focus();
		return false;
	}

	
	var stripped=form.phone.value.replace(/[\(\)\.\-\ ]/g,'');

	if(isNaN(parseInt(stripped)) || stripped.length!=10) {
		alert("Your phone number appears to have been entered incorrectly. Please re-enter your phone number.");
		document.getElementById('phone').focus();
		return false;
	}
	
	if(form.phone2) {
		stripped=form.phone2.value.replace(/[\(\)\.\-\ ]/g,'');
	
		if(isNaN(parseInt(stripped)) || stripped.length!=10) {
			alert("Your phone number appears to have been entered incorrectly. Please re-enter your phone number.");
			document.getElementById('phone2').focus();
			return false;
		}
	}
	//Email cannot be left blank
	if(form.email.value == "") {
		alert("Please enter your email address.");
		form.email.focus();
		return false;
	}

	//Email must be in a proper format
	if (!emailCheck(form.email.value)) {
		alert ("Your email address appears to have been entered incorrectly. Please re-enter your email address, using the format \"name@domain.com\"");
		form.email.focus();
		return false;
	}
	
	//Email domain must have a valid extension
	if(!validDomain(form.email.value)) {
		alert("Your email address appears to have been entered incorrectly. Please re-enter your email address, using the format \"name@domain.com\"");
		form.email.focus();
		return false;
	}

	
	if (form.group_business_type.value.length == 0) {
		alert("Please enter the business type.");
		return false;
	}
	
	
	
	if (form.current_plan_type.value=="") {
		alert("Please choose your current plan type.");
		return false;
	}
	
	
	
	if (form.deductible.value=="") {
		alert("Please choose your desired deductible.");
		return false;
	}
	
	
	
	if (form.copay.value=="") {
		alert("Please choose your desired copay.");
		return false;
	}
	

	var coverages = "";
	for(var i=0; i<10; i++){
		var e = document.getElementById("coverage_type_item_"+i);
		if(e!=null && e.checked){
			if(coverages.length>0)
				coverages += ", ";
			coverages += e.value;
			form.coverage_type.value = coverages;
		}
	}
	
	if (coverages=="") {
		alert("Please enter at least one plan type.");
		return false;
	}

	if (form.number_of_employees.value == 0) {
		alert("Please enter the number of employees.");
		return false;
	}
	if(!employeeCheck(form.number_of_employees.value)) {
		return false;
	}
	return true;
}







function displayCompany() {

	if(document.getElementById("insured_1_current_policy_yes").checked) {
		document.getElementById("current_policy").style.display = "";
	} else {
		document.getElementById("current_policy").style.display = "none";
		document.getElementById("current_policy_company").value = "";
	}

}



function emailCheck(emailStr){
   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){return false;}
   var user=matchArray[1];
   var domain=matchArray[2];
   if(user.match(userPat)==null){return false;}
   var IPArray=domain.match(ipDomainPat);
   if(IPArray!=null){for(var i=1;i<=4;i++){if(IPArray[i]>255){return false;}}return true;}
   var domainArray=domain.match(domainPat);
   if(domainArray==null){return false;}
   var atomPat=new RegExp(atom,"g");
   var domArr=domain.match(atomPat);
   var len=domArr.length;
   if(domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3){return false;}
   if(len<2){var errStr="This address is missing a hostname!";return false;}
   return true;
}

function ltrim(s){return s.replace(/^\s*/,"");}
function rtrim(s){return s.replace(/\s*$/,"");}
function trim(s){return rtrim(ltrim(s));}

function noNum(s){
	for(var i = 0; i < s.length; i++)
		if(!isNaN(s.charAt(i)))
			return false;
	return true;
}

function validAddress(s) {
	var numbers = false;
	var letters = false;
	for(var i = 0; i < s.length; i++) {
		if(!isNaN(s.charAt(i)))
			numbers = true;
		else
			letters = true;
		if(numbers && letters)
			return true;
	}
	return false;	
}

function validDomain(email){
	//Divide email by @
	var split_email = email.split("@");
	
	//Find extension by splitting domain by .
	var domain = split_email[1].split(".");
	
	var valid=false;
	
	//Array of possible domain extensions
	var valid_domains = new Array("aero","asia","biz","cat","com","coop","edu","gov","info","int","jobs","mil","mobi","museum","name","net","org","pro","tel","travel","ac","ad","ae","af","ag","ai","al","am","an","ao","aq","ar","as","at","au","aw","ax","az","ba","bb","bd","be","bf","bg","bh","bi","bj","bm","bn","bo","br","bs","bt","bv","bw","by","bz","ca","cc","cd","cf","cg","ch","ci","ck","ch","ci","ck","cl","cm","cn","co","cr","cu","cv","cx","cy","cz","de","dj","dk","dm","do","dz","ec","ee","eg","er","es","et","eu","fi","fj","fk","fm","fo","fr","ga","gb","gd","ge","gf","gg","gh","gi","gl","gm","gn","gp","gq","gr","gs","gt","gu","gw","gy","hk","hm","hn","hr","ht","hu","id","ie","il","im","in","io","iq","ir","is","it","je","jm","jo","jp","ke","kg","kh","ki","km","kn","kr","kw","ky","la","lb","lc","li","lk","lr","ls","lt","lu","lv","ly","ma","mc","md", "mg","mh","mk","ml","mm","mn","mo","mp","mq","mr","ms","mt","mu","mv","mw","mx","my","mz","na","nc","ne","nf","ng","ni","nl","no","np","nr","nu","nz","om","pa","pe","pf","pg","ph","pk","pl","pm","pn","pr","ps","pt","pw","py","qa","re","ro","ru","rw","sa","sb","sc","sd","se","sg","sh","si","sj","sk","sl","sm","sn","so","sr","st","su","sv","sy","sz","tc","td","tf","tg","th","tj","tk","tl","tm","tn","to","tp","tr","tt","tv","tw","tz","ua","ug","uk","um","us","uy","uz","va","vc","ve","vg","vi","vn","vu","wf","ws","ye","yt","yu","za","zm","zw");
	
	//Check if domain extension is valid
	for(var i = 0; i < valid_domains.length; i++) {
		if(domain[1]==valid_domains[i])
			valid=true;
	}
	
	return valid;
}
function employeeCheck(number_of_employees) {
	if (number_of_employees == 0) {
		alert("Please choose the number of employees.");
		return false;
	} else {
		for (var i = 1; i <= number_of_employees; i++) {
			if (getElement("gh_insured_" + i + "_first_name").value=="") {
				alert("Employee " + i + " First Name cannot be blank.");
				return false;
			}
			if (getElement("gh_insured_" + i + "_last_name").value=="") {
				alert("Employee " + i + " Last Name cannot be blank.");
				return false;
			}
			if (getElement("gh_insured_" + i + "_zip").value=="") {
				alert("Employee " + i + " ZIP code cannot be blank.");
				return false;
			}
			if (getElement("gh_insured_" + i + "_dobMM").value=="" || 
				getElement("gh_insured_" + i + "_dobDD").value=="" || 
				getElement("gh_insured_" + i + "_dobYYYY").value=="" ||
				getElement("gh_insured_" + i + "_dobYYYY").value.length < 4) {
				alert("Employee " + i + " Birth Date is empty/incomplete.");
				return false;
			}
			if (getElement("gh_insured_" + i + "_gender").value=="") {
				alert("Employee " + i + " Gender is not set.");
				return false;
			}
		}
	}
	return true;
}
