var spouse = 0;
var children = 0;

add_spouse = new Image();
add_spouse.src = "/images/button-add-spouse.jpg";
add_spouse_gray = new Image();
add_spouse_gray.src = "/images/button-add-spouse-on.jpg";

add_child = new Image();
add_child.src = "/images/button-add-child.jpg";
add_child_gray = new Image();
add_child_gray.src = "/images/button-add-child-on.jpg";

function addSpouse() {
	if(spouse==0) {
		document.getElementById('spouse').style.display='block';
		spouse = 1;
		document.images['add-spouse'].src=add_spouse_gray.src;
	}
}

function deleteSpouse() {
	document.getElementById('spouse').style.display='none';
	spouse = 0;
	document.images['add-spouse'].src=add_spouse.src;
	
	//Reset Spouse Values
//	document.getElementById('insured_2_gender_male').checked=false;
//	document.getElementById('insured_2_gender_female').checked=false;
	document.getElementById('insured_2_gender').value='';
	document.getElementById('insured_2_dobMM').value='';
	document.getElementById('insured_2_dobDD').value='';
	document.getElementById('insured_2_dobYYYY').value='';
	document.getElementById('insured_2_heightFT').value='';
	document.getElementById('insured_2_heightIN').value='';
	document.getElementById('insured_2_weight').value='';
	document.getElementById('insured_2_smoker').value='';
//	document.getElementById('insured_2_smoker_yes').checked=false;
//	document.getElementById('insured_2_smoker_no').checked=false;
}

function addChild() {
	if(children<6) {
		children++;
		document.getElementById('child'+children).style.display='block';
		if(children==6)
			document.images['add-child'].src=add_child_gray.src;
	}
}

function deleteChild(x) {
	for(i=(x+2);i<(children+2);i++) {
//		document.getElementById('insured_'+i+'_gender_male').checked=document.getElementById('insured_'+(i*1+1)+'_gender_male').checked;
//		document.getElementById('insured_'+i+'_gender_female').checked=document.getElementById('insured_'+(i*1+1)+'_gender_female').checked;

		document.getElementById('insured_'+i+'_dobMM').value=document.getElementById('insured_'+(i*1+1)+'_dobMM').value;
		document.getElementById('insured_'+i+'_dobDD').value=document.getElementById('insured_'+(i*1+1)+'_dobDD').value;
		document.getElementById('insured_'+i+'_dobYYYY').value=document.getElementById('insured_'+(i*1+1)+'_dobYYYY').value;
		document.getElementById('insured_'+i+'_heightFT').value=document.getElementById('insured_'+(i*1+1)+'_heightFT').value;
		document.getElementById('insured_'+i+'_heightIN').value=document.getElementById('insured_'+(i*1+1)+'_heightIN').value;
		document.getElementById('insured_'+i+'_weight').value=document.getElementById('insured_'+(i*1+1)+'_weight').value;
	}
	
	document.getElementById('child'+children).style.display='none';
	
//	document.getElementById('insured_'+(children*1+2)+'_gender_male').checked=false;
//	document.getElementById('insured_'+(children*1+2)+'_gender_female').checked=false;
	document.getElementById('insured_'+(children*1+2)+'_gender').value='';
	document.getElementById('insured_'+(children*1+2)+'_dobMM').value='';
	document.getElementById('insured_'+(children*1+2)+'_dobDD').value='';
	document.getElementById('insured_'+(children*1+2)+'_dobYYYY').value='';
	document.getElementById('insured_'+(children*1+2)+'_heightFT').value='';
	document.getElementById('insured_'+(children*1+2)+'_heightIN').value='';
	document.getElementById('insured_'+(children*1+2)+'_weight').value='';
	
	if(children==6)
		document.images['add-child'].src=add_child.src;
	
	children--;
	
}




//show hide divs
function showHidden(id, value) {
	if(value=="yes"){
		document.getElementById(id).style.display='';
	}
	else {
		document.getElementById(id).style.display='none';	
	}
	
	resetValidation(frmvalidator);
}

function showconditions(id, value) {
	if(value=="yes"){
		document.getElementById(id).style.display='';
	}
	else {
		document.getElementById(id).style.display='none';
	}

	resetValidation(frmvalidator);

}

//remove space on left and right of the words
function ltrim(s){return s.replace(/^\s*/,"");}
function rtrim(s){return s.replace(/\s*$/,"");}
function trim(s){return rtrim(ltrim(s));}

// set medical conditions

function setConditions() {
	document.getElementById("insured_1_health_conditions_detail").value=(((document.getElementById("aids").checked)?"HIV/AIDS / ":"")+""+((document.getElementById("diabetes").checked)?"Diabetes / ":"")+""+((document.getElementById("cancer").checked)?"Cancer / ":"")+""+((document.getElementById("heart-attack").checked)?"Heart Attack / ":"")+""+((document.getElementById("high-blood-pressure").checked)?"High Blood Pressure / ":"")+""+((document.getElementById("pregnant").checked)?"Pregnant / ":"")+""+((document.getElementById("stroke").checked)?"Stroke / ":"")+""+((document.getElementById("depression").checked)?"Depression / ":"")+""+((document.getElementById("other-illness").checked)?"Other major illness not listed. / ":""));
}

 // unset medical conditions
function unSetConditions() {
	document.getElementById("aids").checked=false;
	document.getElementById("diabetes").checked=false;
	document.getElementById("cancer").checked=false;
	document.getElementById("heart-attack").checked=false;
	document.getElementById("high-blood-pressure").checked=false;
	document.getElementById("pregnant").checked=false;
	document.getElementById("stroke").checked=false;
	document.getElementById("depression").checked=false;
	document.getElementById("other-illness").checked=false;
	document.getElementById("insured_1_health_conditions_detail").value="";
}


function healthValidation(frmvalidator){	
		
		var form = document.forms[frmvalidator.formobj._sfm_form_name];

		//Validate Gender
		frmvalidator.addValidation("insured_1_gender","req", SEL_GENDER);
		
		//Validate DOB month
		frmvalidator.addValidation("insured_1_dobMM","req", DOB_MM_REQ);
		frmvalidator.addValidation("insured_1_dobMM","num", DOB_MM_NUMERIC);
		frmvalidator.addValidation("insured_1_dobMM","lt=13",DOB_MM_LESS_THAN);
		frmvalidator.addValidation("insured_1_dobMM","gt=0",DOB_MM_GREATER_THAN);
						
		//Validate DOB day
		frmvalidator.addValidation("insured_1_dobDD","req",DOB_DD_REQ);
		frmvalidator.addValidation("insured_1_dobDD","num", DOB_DD_NUMERIC);
		frmvalidator.addValidation("insured_1_dobDD","lt=32",DOB_DD_LESS_THAN);
		frmvalidator.addValidation("insured_1_dobDD","gt=0",DOB_DD_GREATER_THAN);
		
		
		//Validate DOB year
		frmvalidator.addValidation("insured_1_dobYYYY","req",DOB_YYYY_REQ);
		frmvalidator.addValidation("insured_1_dobYYYY","num",DOB_YYYY_NUMERIC);
		frmvalidator.addValidation("insured_1_dobYYYY", "minlen=4", DOB_YYYY_MIN_LEN)
		frmvalidator.addValidation("insured_1_dobYYYY","gt="+(d.getFullYear()-101),DOB_YYYY_GREATER_THAN);	
		frmvalidator.addValidation("insured_1_dobYYYY","lt="+(d.getFullYear()+1),DOB_YYYY_LESS_THAN);		
		
		//Validate Height Feet
		frmvalidator.addValidation("insured_1_heightFT","req",HEIGHT_FT_REQ);
		
		//Validate Height inches
		frmvalidator.addValidation("insured_1_heightIN","req",HEIGHT_IN_REQ);
		
		//Validate Weight
		frmvalidator.addValidation("insured_1_weight","req",WEIGHT_REQ);
		frmvalidator.addValidation("insured_1_weight","num",WEIGHT_NUMERIC);
		frmvalidator.addValidation("insured_1_weight","gt=0",WEIGHT_GREATER_THAN);
		
		//Validate Smoker
		frmvalidator.addValidation("insured_1_smoker","req",SMOKER_REQ);	
		
		//validate medical conditions
		frmvalidator.addValidation("insured_1_health_conditions","selone_radio",HEALTH_CONDITIONS_SEL);	
		if(form.insured_1_health_conditions[0].checked){ 			
			var conditionsDetail=form.insured_1_health_conditions_detail.value;		
			//If have conditions was selected and no conditions were selected;
			if(trim(conditionsDetail).length<3 || conditionsDetail == "none selected") {
				frmvalidator.addValidation("insured_1_health_conditions_detail","req",HEALTH_CONDITIONS_REQ);			
			}
		}			
		// Validate Spouse
		if(spouse ==1) {
			// Spouse's gender
			frmvalidator.addValidation("insured_2_gender","req", SPOUSE_SEL_GENDER);
			
			// Spouse's birth month
			frmvalidator.addValidation("insured_2_dobMM", "req", SPOUSE_DOB_MM_REQ);
			frmvalidator.addValidation("insured_2_dobMM", "num", SPOUSE_DOB_MM_NUMERIC);
			frmvalidator.addValidation("insured_2_dobMM", "gt=0", SPOUSE_DOB_MM_GREATER_THAN);
			frmvalidator.addValidation("insured_2_dobMM", "lt=13", SPOUSE_DOB_MM_LESS_THAN);
			
			// Spouse's birth day
			frmvalidator.addValidation("insured_2_dobDD", "req", SPOUSE_DOB_DD_REQ);
			frmvalidator.addValidation("insured_2_dobDD", "num", SPOUSE_DOB_DD_NUMERIC);
			frmvalidator.addValidation("insured_2_dobDD", "gt=0", SPOUSE_DOB_DD_GREATER_THAN);
			frmvalidator.addValidation("insured_2_dobDD", "lt=32", SPOUSE_DOB_DD_LESS_THAN);
			
			// Spouse's birth year
			frmvalidator.addValidation("insured_2_dobYYYY", "req", SPOUSE_DOB_YYYY_REQ);
			frmvalidator.addValidation("insured_2_dobYYYY", "num", SPOUSE_DOB_YYYY_NUMERIC);
			frmvalidator.addValidation("insured_2_dobYYYY", "minlength=4", SPOUSE_DOB_YYYY_MIN_LEN);
			frmvalidator.addValidation("insured_2_dobYYYY", "gt=" + (d.getFullYear()-101), SPOUSE_DOB_YYYY_GREATER_THAN);
			frmvalidator.addValidation("insured_2_dobYYYY", "lt=" + (d.getFullYear()+1), SPOUSE_DOB_YYYY_LESS_THAN);			

			// Spouse's Height (Feet)
			frmvalidator.addValidation("insured_2_heightFT", "req", SPOUSE_HEIGHT_FT_REQ);
			
			// Spouse's Height (Weight)
			frmvalidator.addValidation("insured_2_heightIN", "req", SPOUSE_HEIGHT_IN_REQ);
			
			// Spouse's Weight (in lbs)
			frmvalidator.addValidation("insured_2_weight", "req", SPOUSE_WEIGHT_REQ);
			frmvalidator.addValidation("insured_2_weight", "req", SPOUSE_WEIGHT_REQ);
			frmvalidator.addValidation("insured_2_weight", "num", SPOUSE_WEIGHT_NUMERIC);
			frmvalidator.addValidation("insured_2_weight", "gt=0", SPOUSE_WEIGHT_GREATER_THAN);
			
		
			// Spouse's smoking history
			frmvalidator.addValidation("insured_2_smoker","req", SPOUSE_SEL_SMOKING);			
		}

		// Validate Children
		for(var j=1; j<7; j++) {
			var childinst = document.getElementById("child" + j);
			if(childinst.style.display != "none") {
				i = j+2;
				// Child's gender

				frmvalidator.addValidation("insured_" + i + "_gender","req", CHILD_SEL_GENDER);
				
				// Child's birth month
				frmvalidator.addValidation("insured_" + i + "_dobMM", "req", CHILD_DOB_MM_REQ);
				frmvalidator.addValidation("insured_" + i + "_dobMM", "num", CHILD_DOB_MM_NUMERIC);
				frmvalidator.addValidation("insured_" + i + "_dobMM", "gt=0", CHILD_DOB_MM_GREATER_THAN);
				frmvalidator.addValidation("insured_" + i + "_dobMM", "lt=13", CHILD_DOB_MM_LESS_THAN);
				
				// Child's birth day
				frmvalidator.addValidation("insured_" + i + "_dobDD", "req", CHILD_DOB_DD_REQ);
				frmvalidator.addValidation("insured_" + i + "_dobDD", "num", CHILD_DOB_DD_NUMERIC);
				frmvalidator.addValidation("insured_" + i + "_dobDD", "gt=0", CHILD_DOB_DD_GREATER_THAN);
				frmvalidator.addValidation("insured_" + i + "_dobDD", "lt=32", CHILD_DOB_DD_LESS_THAN);				

				// Child's birth year
				frmvalidator.addValidation("insured_" + i + "_dobYYYY", "req", CHILD_DOB_YYYY_REQ);
				frmvalidator.addValidation("insured_" + i + "_dobYYYY", "num", CHILD_DOB_YYYY_NUMERIC);
				frmvalidator.addValidation("insured_" + i + "_dobYYYY", "minlen=4", CHILD_DOB_YYYY_MIN_LEN);
				frmvalidator.addValidation("insured_" + i + "_dobYYYY", "gt="+(d.getFullYear()-101), CHILD_DOB_YYYY_GREATER_THAN);
				frmvalidator.addValidation("insured_" + i + "_dobYYYY", "lt="+(d.getFullYear()+1), CHILD_DOB_YYYY_LESS_THAN);
				
				// Child's Height (Feet)
				frmvalidator.addValidation("insured_" + i + "_heightFT", "req", CHILD_HEIGHT_FT_REQ);
				
				//Child's Height (Weight)
				frmvalidator.addValidation("insured_" + i + "_heightIN", "req", CHILD_HEIGHT_IN_REQ);
				
				// Child's Weight (in lbs)
				frmvalidator.addValidation("insured_" + i + "_weight", "req", CHILD_WEIGHT_REQ);
				frmvalidator.addValidation("insured_" + i + "_weight", "req", CHILD_WEIGHT_REQ);
				frmvalidator.addValidation("insured_" + i + "_weight", "num", CHILD_WEIGHT_NUMERIC);
				frmvalidator.addValidation("insured_" + i + "_weight", "gt=0", CHILD_WEIGHT_GREATER_THAN);				
			}
		}
		
		//validate First Name
		frmvalidator.addValidation("first_name","req",FIRST_NAME_REQ);
		frmvalidator.addValidation("first_name","maxlength=35",FIRST_NAME_MAX_LENGTH);
		frmvalidator.addValidation("first_name","name",FIRST_NAME_NAME);		
		
		// Validate Last Name
		frmvalidator.addValidation("last_name","req",LAST_NAME_REQ);
		frmvalidator.addValidation("last_name","maxlength=35",LAST_NAME_MAX_LENGTH);		
		frmvalidator.addValidation("last_name","name",LAST_NAME_NAME);
		
		// Validate Address
		frmvalidator.addValidation("address_1_street1","req",ADDRESS_STREET_REQ);		
		frmvalidator.addValidation("address_1_street1","1alpha_1digit", ADDRESS_STREET_ALPHADIGIT);
		frmvalidator.addValidation("address_1_street1","address", ADDRESS_STREET_ADDRESS);
	
		// Validate city
		frmvalidator.addValidation("address_1_city","req",ADDRESS_CITY_REQ);
		frmvalidator.addValidation("address_1_city","city",ADDRESS_CITY_CITY);
		frmvalidator.addValidation("address_1_city","minlength=2", ADDRESS_CITY_MIN_LENGTH);		
		
		// Validate state
		frmvalidator.addValidation("address_1_state","req",ADDRESS_STATE_REQ);
	
		// Validate Zip Code
		frmvalidator.addValidation("address_1_zip","req",ADDRESS_ZIP_REQ);	
		frmvalidator.addValidation("address_1_zip","num",ADDRESS_ZIP_NUMERIC);		
		frmvalidator.addValidation("address_1_zip","minlen=5",ADDRESS_ZIP_MIN_LENGTH);
		
		// Validate phone1_1
		frmvalidator.addValidation("phone1_1","req",PHONE_1_REQ);	
		frmvalidator.addValidation("phone1_1","numeric",PHONE_1_NUMERIC);
		frmvalidator.addValidation("phone1_1","minlength=3",PHONE_1_MIN_LENGTH);		
			
		// Validate phone1_2		
		frmvalidator.addValidation("phone1_2","req",PHONE_2_REQ);
		frmvalidator.addValidation("phone1_2","numeric",PHONE_2_NUMERIC);		
		frmvalidator.addValidation("phone1_2","minlength=3",PHONE_2_MIN_LENGTH);
			
			
		// Validate phone1_3		
		frmvalidator.addValidation("phone1_3","req",PHONE_3_REQ);
		frmvalidator.addValidation("phone1_3","numeric",PHONE_3_NUMERIC);
		frmvalidator.addValidation("phone1_3","minlength=4",PHONE_3_MIN_LENGTH);
		
		// Validate Email
		frmvalidator.addValidation("email","req",EMAIL_REQ);
		frmvalidator.addValidation("email","email",EMAIL_EMAIL);
		
		frmvalidator.setAddnlValidationFunction("doCustomHealthValidation");
}

function resetValidation(frmvalidator){
	frmvalidator.clearAllValidations();
	healthValidation(frmvalidator);	
}

function doCustomHealthValidation(){
	document.getElementById('phone').value=document.getElementById('phone1_1').value+document.getElementById('phone1_2').value+document.getElementById('phone1_3').value;
}


// ZIP/State Validation

var zipStateLookUp = function() {
	var stateField = "";
	var stateValue = "";
	var zipField = "";
	var zipValue = "";
	var formField = "";
	var ajaxZipState;
	var addLoadEvent = function(func) {
		var oldonload = window.onload;
		if (typeof window.onload != 'function') {
			window.onload = func;
			
		} else {
			window.onload = function() {
				if (oldonload) {
					oldonload();
				}
				func();
			};
		}
	};
	
	var bindFunctionality = function() {
		stateField = document.getElementById(stateField);
		zipField = document.getElementById(zipField);
		formField = document.getElementsByName(formField)[0];
		if((typeof formField !="undefined") && (typeof stateField !="undefined") && (typeof zipField !="undefined")){
			// Make sure you check all cases
			stateField.onblur = attemptCheck;
			stateField.onchange = attemptCheck; 
			zipField.onblur = attemptCheck;
			zipField.onkeyup = attemptCheck;
			zipField.onchange = attemptCheck;
			zipField.onfocus = attemptCheck;
		}
	};
	var checkFieldValueReq = function (fieldName) {
		return (getFieldValueLength(fieldName)==0)? false : true;
	};
	var getFieldValueLength = function (fieldName) {
		var fieldValue = fieldName.value;
		try {
			fieldValue = trim(fieldName.value);
		}
		catch(e){
			fieldValue = fieldValue.replace(/^\s+|\s+$/g,""); 
		}
		return fieldValue.length;
	};
	var confirmZipState = function () {
		try {
			ajaxZipState = new XMLHttpRequest();
			
		}
		catch(e) {
			try {
				ajaxZipState = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch(e) {
				try {
				 ajaxZipState = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch(e) {
					ajaxZipState = false;
				}
			}
		}
		if(ajaxZipState) {
			try {
				ajaxZipState.onreadystatechange = ajaxZipStateReadyStateChange;
				ajaxZipState.open("POST", "/zip.jsp", true);
				ajaxZipState.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				ajaxZipState.setRequestHeader("Content-length", zipField.value.length);
				ajaxZipState.setRequestHeader("Connection", "close");
				ajaxZipState.send("zip="+zipField.value);
			}
			catch(e){}
		}
	};
	var ajaxZipStateReadyStateChange = function() {
		if(ajaxZipState.readyState == 4) {
			if((ajaxZipState.status >= 200 && ajaxZipState.status < 300)|| (ajaxZipState.status == 304) || (ajaxZipState.status == 1223)) {
				var checkedState = trim(ajaxZipState.responseXML.getElementsByTagName("state")[0].firstChild.data);
					if(checkedState == stateField.value){
						resetValidation(frmvalidator);	
					}
					else {
						frmvalidator.addValidation("address_1_zip","regexp=^[A-Za-z]{20,}","Please check your zip code and your state.");
					}
			}
		}
	};
	var attemptCheck = function() {
		var success = checkFieldValueReq(stateField);
		success = success & checkFieldValueReq(zipField);
		success = success & (zipField.value.length==5);
		if(success && (stateField.value!=stateValue || zipField.value!=zipValue)) {
			stateValue = stateField.value;
			zipValue = zipField.value;
			resetValidation(frmvalidator);	
			confirmZipState();
		}
	};
	return {
		init: function(state, zip, form) {
				stateField = state;
				zipField = zip;
				formField = form;
				addLoadEvent(bindFunctionality);
		}
	};
}();
zipStateLookUp.init("address_1_state", "address_1_zip", "Health");

(function() {
	if (typeof mboxFactoryDefault != "undefined") {
		var ghiMboxSessionId = mboxFactoryDefault.getSessionId().getId();
		if (ghiMboxSessionId != "" ) {
			var ghiMboxIframe = document.createElement("iframe");
			var ghiMboxProtocol = document.location.protocol;
			var oldWindowOnload = window.onload;
			ghiMboxIframe.height = "0px";
			ghiMboxIframe.width = "0px";
			ghiMboxIframe.style.border = "none";
			ghiMboxIframe.frameBorder = "0";
			ghiMboxIframe.src = ghiMboxProtocol + "//www.gohealthinsurance.com/mboxTracking.jsp?mbox_SessionId=" + ghiMboxSessionId;
			window.onload = function () {
				if (typeof oldWindowOnload == "function") {
					oldWindowOnload();
				}
				document.body.appendChild(ghiMboxIframe);
			};
		}
	}
})();

