// MboxNVXOffer Include Script
document.write(unescape("%3Cscript src='/js/mboxNVX.js' type='text/javascript'%3E%3C/script%3E"));

/**
 * BROWSER CHECK
 * 
 * Used to determine if the page should use browser specific hacks
 * @returns MSIE browser version 
 **/

var Browser = {
	Version: function() {
		var version = 999;
		if (navigator.appVersion.indexOf("MSIE") != -1) {
			version = parseFloat(navigator.appVersion.split("MSIE")[1]);
		}
		return version;
	}
};
/**
 * HIDE SELECT ELEMENTS
 *
 * Used to hide the select elements to prevent SELECT element bleedthrough in Internet Explorer 6 and lower
 **/
function hideSelectElement() {	
	var selectIframe = document.createElement("iframe");
	selectIframe.id = "select-iframe";
	selectIframe.style.position = "absolute";
	selectIframe.style.width = document.getElementById("address_1_state").offsetWidth + "px";
	selectIframe.style.height = document.getElementById("address_1_state").offsetHeight +  "px";
	selectIframe.filter = "alpha(opacity=0)";
	selectIframe.style.zIndex = "4";
	selectIframe.style.display = "none";
	document.body.appendChild(selectIframe);
}
if(Browser.Version()<7) {
	window.attachEvent('onload', hideSelectElement);
}
var posx = 0;
var posy = 0;


// Create popups
function popup(s, event) {
	closeOthers(s);
	var e = event || window.event;
	var pos = getRelativeCoordinates(event, document.getElementById(s));
	document.getElementById(s).style.left=(posx*1+10)+"px";
	document.getElementById(s).style.top=(posy*1+10)+"px";
	document.getElementById(s).style.display='';
	if((Browser.Version()<7)&&(s == 'contact-info')){
		document.getElementById("select-iframe").style.left = getAbsolutePosition(document.getElementById("address_1_state")).x + "px";
		document.getElementById("select-iframe").style.top = getAbsolutePosition(document.getElementById("address_1_state")).y + "px";
		document.getElementById("select-iframe").style.display = 'block';
	}
}

// Hide Divs or popups
var hideDiv;
function hide(s) {
	hideDiv = s;
	window.setTimeout('hidePopup()',1300);
}
// hide popUps
function hidePopup() {
	document.getElementById(hideDiv).style.display='none';
}
// close other 
function closeOthers(s) {
	if(s!="health-info") document.getElementById('health-info').style.display='none';
	if(s!="health-conditions") document.getElementById('health-conditions').style.display='none';
	if(s!="contact-info") { document.getElementById('contact-info').style.display='none'; if(document.getElementById('select-iframe')) state(); }
	if(s!="security-info") document.getElementById('security-info').style.display='none';
}

/**
 * Retrieve the absolute coordinates of an element.
 *
 * @param element
 *   A DOM element.
 * @return
 *   A hash containing keys 'x' and 'y'.
 */
function getAbsolutePosition(element) {
  var r = { x: element.offsetLeft, y: element.offsetTop };
  if (element.offsetParent) {
    var tmp = getAbsolutePosition(element.offsetParent);
    r.x += tmp.x;
    r.y += tmp.y;
  }
  return r;
};

/**
 * Retrieve the coordinates of the given event relative to the center
 * of the widget.
 *
 * @param event
 *   A mouse-related DOM event.
 * @param reference
 *   A DOM element whose position we want to transform the mouse coordinates to.
 * @return
 *    A hash containing keys 'x' and 'y'.
 */
function getRelativeCoordinates(event, reference) {
  var x, y;
  event = event || window.event;
  var el = event.target || event.srcElement;

  if (!window.opera && typeof event.offsetX != 'undefined') {
    // Use offset coordinates and find common offsetParent
    var pos = { x: event.offsetX, y: event.offsetY };

    // Send the coordinates upwards through the offsetParent chain.
    var e = el;
    while (e) {
      e.mouseX = pos.x;
      e.mouseY = pos.y;
      pos.x += e.offsetLeft;
      pos.y += e.offsetTop;
      e = e.offsetParent;
    }

    // Look for the coordinates starting from the reference element.
    var e = reference;
    var offset = { x: 0, y: 0 };
    while (e) {
      if (typeof e.mouseX != 'undefined') {
        x = e.mouseX - offset.x;
        y = e.mouseY - offset.y;
        break;
      }
      offset.x += e.offsetLeft;
      offset.y += e.offsetTop;
      e = e.offsetParent;
    }

    // Reset stored coordinates
    e = el;
    while (e) {
      e.mouseX = undefined;
      e.mouseY = undefined;
      e = e.offsetParent;
    }
  }
  else {
    // Use absolute coordinates
    var pos = getAbsolutePosition(reference);
    x = event.pageX  - pos.x;
    y = event.pageY - pos.y;
  }
  // Subtract distance to middle
  return { x: x, y: y };
}

//hide state
function hideSelect() {
	
}
//show state
function showSelect() {
	window.setTimeout('state()', 1300);
}
//display states
function state() {
	if(document.getElementById("select-iframe")) {
		document.getElementById("select-iframe").style.display = 'none';
	}
}

// makes a popup
function makePopUp(whereTo,winWidth,winHeight) {
	remote=window.open("","remotewin","width="+winWidth+",height="+winHeight+",menubar=0,toolbar=no,scrollbars=yes");
	remote.location.href=whereTo;remote.focus();
}






var spouse = 0;
var children = 0;

add_spouse = new Image();
add_spouse.src = "/images/add-spouse.jpg";
add_spouse_gray = new Image();
add_spouse_gray.src = "/images/add-spouse-gray.jpg";

add_child = new Image();
add_child.src = "/images/add-child.jpg";
add_child_gray = new Image();
add_child_gray.src = "/images/add-child-gray.jpg";

function addSpouse() {
	if(spouse==0) {
		document.getElementById('spouse').style.display='block';
		spouse = 1;
		document.images['add-spouse'].src=add_spouse_gray.src;
		resetValidation(frmvalidator);
	}
}

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_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_yes').checked=false;
	document.getElementById('insured_2_smoker_no').checked=false;
	resetValidation(frmvalidator);
}

function addChild() {
	if(children<6) {
		children++;
		document.getElementById('child'+children).style.display='block';
		resetValidation(frmvalidator);
		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)+'_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--;
	resetValidation(frmvalidator);
}




//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 displayCommentBox(commentId, val) {
	if(val == true) {
		document.getElementById(commentId).style.display="block";
	}
	
	if(val == false) {
		document.getElementById(commentId).style.display="none";
	}
}


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="";
}

// Validate form fields.
function healthFormValidation(frmvalidator){
	// form name
	var form = document.forms[frmvalidator.formobj._sfm_form_name];

	// validate gender
	frmvalidator.addValidation("insured_1_gender","selone_radio",SEL_GENDER);

	//Validate DOB month
	frmvalidator.addValidation("insured_1_dobMM","req", DOB_MM_REQ);
	frmvalidator.addValidation("insured_1_dobMM","numeric", 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","numeric", 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);
	frmvalidator.addValidation("insured_1_heightFT","num",HEIGHT_FT_NUMERIC);
	frmvalidator.addValidation("insured_1_heightFT","lt=8",HEIGHT_FT_LESS_THAN);
	frmvalidator.addValidation("insured_1_heightFT","gt=0",HEIGHT_FT_GREATER_THAN);
		
	//Validate Height inches
	frmvalidator.addValidation("insured_1_heightIN","req",HEIGHT_IN_REQ);
	frmvalidator.addValidation("insured_1_heightIN","num",HEIGHT_IN_NUMERIC);
	frmvalidator.addValidation("insured_1_heightIN","lt=12",HEIGHT_IN_LESS_THAN);
	frmvalidator.addValidation("insured_1_heightIN","gt=-1",HEIGHT_IN_GREATER_THAN);
		
	//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 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","selone_radio", 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);
		frmvalidator.addValidation("insured_2_heightFT", "num", SPOUSE_HEIGHT_FT_NUMERIC);
		frmvalidator.addValidation("insured_2_heightFT","lt=8", SPOUSE_HEIGHT_FT_LESS_THAN);
		frmvalidator.addValidation("insured_2_heightFT","gt=0", SPOUSE_HEIGHT_FT_GREATER_THAN);
			
		// Spouse's Height (Weight)
		frmvalidator.addValidation("insured_2_heightIN", "req", SPOUSE_HEIGHT_IN_REQ);
		frmvalidator.addValidation("insured_2_heightIN", "num", SPOUSE_HEIGHT_IN_NUMERIC);
		frmvalidator.addValidation("insured_2_heightIN", "lt=12", SPOUSE_HEIGHT_IN_LESS_THAN);
		frmvalidator.addValidation("insured_2_heightIN", "gt=-1", SPOUSE_HEIGHT_IN_GREATER_THAN);
		
		// Spouse's Weight (in lbs)
		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 Smoker Status
		frmvalidator.addValidation("insured_2_smoker","selone_radio",SPOUSE_SEL_SMOKING);	
	
			
	}
	// Validate Children
	for(var j=1; j<7; j++) {
		var childinst = document.getElementById("child" + j);
		if(childinst.style.display == "block") {
			i = j+2;
			// Child's gender
			frmvalidator.addValidation("insured_" + i + "_gender","selone_radio", 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);
			frmvalidator.addValidation("insured_" + i + "_heightFT", "num", CHILD_HEIGHT_FT_NUMERIC);
			frmvalidator.addValidation("insured_" + i + "_heightFT","lt=8", CHILD_HEIGHT_FT_LESS_THAN);
			frmvalidator.addValidation("insured_" + i + "_heightFT","gt=0", CHILD_HEIGHT_FT_GREATER_THAN);
				
			//Child's Height (Weight)
			frmvalidator.addValidation("insured_" + i + "_heightIN", "req", CHILD_HEIGHT_IN_REQ);
			frmvalidator.addValidation("insured_" + i + "_heightIN", "num", CHILD_HEIGHT_IN_NUMERIC);
			frmvalidator.addValidation("insured_" + i + "_heightIN", "gt=-1", CHILD_HEIGHT_IN_GREATER_THAN);
			frmvalidator.addValidation("insured_" + i + "_heightIN", "lt=12", CHILD_HEIGHT_IN_LESS_THAN);
				
			// Child's Weight (in lbs)
			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","minlength=2",LAST_NAME_MIN_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");
}

// Reset Validation
function resetValidation(frmvalidator){
	frmvalidator.clearAllValidations();
	healthFormValidation(frmvalidator);
	zipStateValidation.runAjax();
}

// add phone values to the hidden phone field.
function doCustomHealthValidation(){
	var today=new Date();
	var MSG=null;
	for(var i=1; i<9; i++){
		if(i==1){//applicant
			MSG=DOB_IN_FUTURE;		
		}else if(i==2){//spouse
			if(spouse != 1){continue;}
			MSG=SPOUSE_DOB_IN_FUTURE;			
		}else{//child
			var childinst = document.getElementById("child" + (i-2));			
			if(childinst == null || childinst.style.display == "none") {
				break;
			}
			
			MSG=CHILD_DOB_IN_FUTURE;	
		}
		
		var day=document.getElementById('insured_'+i+'_dobDD').value;
		var month=document.getElementById('insured_'+i+'_dobMM').value;
		var year=document.getElementById('insured_'+i+'_dobYYYY').value;
		
		if( isInFuture((month-1),day,year,today)){
			alert(MSG);
			return false;
		}	
	}
	
	document.getElementById('phone').value=document.getElementById('phone1_1').value+document.getElementById('phone1_2').value+document.getElementById('phone1_3').value;
}


// ZIP/State Validation
var zipStateValidation = {
	// ZIP Code values
	zip : {
		name : "address_1_zip",
		value : "",
		jObj : null
	},
	// State values
	state : {
		name : "address_1_state",
		value : "",
		jObj : null
	},
	// Bind a list of events to an object
	bindEventList : function(inputElem, eventList) {
		jQuery.each(eventList, function(k, v) {
			inputElem.bind(v, zipStateValidation.attemptCheck);
		});
	},
	// Add the ZIP code input events
	addZipEvents : function() {
		var eventList = ["blur", "keyup", "change", "focus"];
		zipStateValidation.bindEventList(zipStateValidation.zip.jObj, eventList);
	},
	// Add the state dropdown events
	addStateEvents : function() {
		var eventList = ["blur", "change"];
		zipStateValidation.bindEventList(zipStateValidation.state.jObj, eventList);
	},
	// ZIP Code field validation
	runZipValidation : function (val) {
		return (/^\d{5}$/.test(val));
	},
	// State field validation
	runStateValidation : function(val) {
		return (val != "");
	},
	// Check if form fields are ready for comparison
	attemptCheck : function() {
		var zipValue = jQuery.trim(zipStateValidation.zip.jObj.val());
		var stateValue = jQuery.trim(zipStateValidation.state.jObj.val());
		var clearedValidation = zipStateValidation.runStateValidation(stateValue) & zipStateValidation.runZipValidation(zipValue);
		if (clearedValidation && (zipValue != zipStateValidation.zip.value || stateValue != zipStateValidation.state.value) ) {
			zipStateValidation.state.value = stateValue;
			zipStateValidation.zip.value = zipValue;
			zipStateValidation.initValidation();
		}
	},
	// Initialize validation
	initValidation : function() {
		frmvalidator.clearAllValidations();
		healthFormValidation(frmvalidator);
		zipStateValidation.runAjax();
	},
	// Run AJAX Request
	runAjax : function() {
		jQuery.post("zip.jsp", {zip: zipStateValidation.zip.value}, zipStateValidation.checkZipState);
	},
	// Check Zip and State Values 
	checkZipState : function(data) {
		var stateField = jQuery("state", data);
		if (stateField.length == 1 && jQuery.trim(stateField.text()) !=  "") {
			if(jQuery.trim(stateField.text()) != zipStateValidation.state.value) {
				frmvalidator.addValidation("address_1_zip","regexp=^[A-Za-z]{20,}","Please check your zip code and your state.");
			}
		}
	},
	// When the document is ready, run this command
	onReady : function() {
		zipStateValidation.zip.jObj = jQuery("#" + zipStateValidation.zip.name);
		zipStateValidation.state.jObj = jQuery("#" + zipStateValidation.state.name);
		if (zipStateValidation.zip.jObj.length == 1 && zipStateValidation.state.jObj.length == 1) {
			zipStateValidation.addStateEvents();
			zipStateValidation.addZipEvents();
		}
	}
};
jQuery(zipStateValidation.onReady);

// mbox prefetch
(function() {
	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 loadMboxPrefetch = 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;
				document.body.appendChild(ghiMboxIframe);
			}
		}
	};
	addLoadEvent(loadMboxPrefetch);
})();