function formLoad() {
	DisableTraveller();
}
function DisableTraveller() {
	var status;	
	if (document.forms[0].CbNumAdults.value < 2)
		status = true;
	else
		status = false;     
	if (status)
		document.forms[0].cmbDOB2.value="N/A";
	else {
		if (document.forms[0].cmbDOB2.value=="N/A") {
			document.forms[0].cmbDOB2.value=""
		}
	}
	document.forms[0].cmbDOB2.disabled = status;
}
function getAdults() {
   var box = document.forms[0].elements["CbNumAdults"];
   var chosenIndex=box.selectedIndex;
   return box.options[chosenIndex].value;
   }     
function validateForm() {
   var duplicate;
   var numOfAdults=parseInt(getAdults(), 10); 
    if (isCountryEmpty("cmbCountry") == true) {
		displayMessage ('You have to choose at least one destination in order to proceed.', 'cmbCountry',3, 0);
		return false;
	 }
    if ( document.forms[0].elements["cmbCountry"][0].value==null ) {
		displayMessage ('The major destination cannot be empty.', 'cmbCountry', 3, 0);
		return false;
	 }
	if ( document.forms[0].elements["cmbCountry"][0].value=="") {
		displayMessage ('The major destination cannot be empty.', 'cmbCountry', 3, 0);
		return false;
	 }
	  duplicate=existedDuplicateDest("cmbCountry");
	 if(duplicate!=""){
	  displayMessage (duplicate+ " is selected more than once, please rectify.", 'cmbCountry', 3, 0);
	  return false;
	 }
	 
	if ( trimAll(document.forms[0].elements["cmbCountry"][0].value)=="") {
		displayMessage ('The major destination cannot be empty.', 'cmbCountry', 3, 0);
		return false;
	 } 
   
    if (isCoverEmpty("cmbCover") == true) {
		displayMessage ('You must choose one cover before proceed', 'cmbCover', 1, 0);
		return false;
	}
	
   if (isTextEmpty("cmbDOB1") == true) {
		displayMessage("Traveller 1's DOB can not be empty.", 'cmbDOB1', 1, 0);
		return false;
	  } 
	 
    if (isDate("cmbDOB1") > 0) { 
		//displayMessage (formatDate("cmbDOB1", 1)  + ' is not a valid date. Please re-enter your DOB.', 'cmbDOBDay1', 1, 0);
		displayMessage ("Date format should like 'dd/mm/yyyy'. Please re-enter your DOB1.", "cmbDOBDay1", 1, 0);
		return false;
	}
   if(numOfAdults==2){ 
      if (isTextEmpty("cmbDOB2") == true) {
		displayMessage("Traveller 2's DOB can not be empty.", 'cmbDOB2', 1, 0);
		
		return false;
	  } 
	 if (isDate("cmbDOB2") > 0) {
		//displayMessage (formatDate("cmbDOB2", 1)  + ' is not a valid date. Please re-enter your DOB.', 'cmbDOB2', 1, 0);
		displayMessage ("Date format should like 'dd/mm/yyyy'. Please re-enter your DOB2.", "cmbDOBDay2", 1, 0);
		return false;
	}
   }
   
   if (isTextEmpty("cmbDateDeparture") == true) {
		displayMessage("Departure Date can not be empty.", 'cmbDateDeparture', 1, 0);
		return false;
    } 
   if (isDate("cmbDateDeparture")>0) {
		//displayMessage (formatDate("cmbDateDeparture", 1)  + ' is not a valid date. Please re-enter your departure date.', 'cmbDateParture', 1, 0);
		displayMessage ("Date format should like 'dd/mm/yyyy'. Please re-enter your departure date.", "cmbDateParture", 1, 0);
		return false;
	}
	if (isTextEmpty("cmbDateReturn") == true) {
		displayMessage("Return Date can not be empty.", 'cmbDateReturn', 1, 0);
		return false;
    } 
   if (isDate("cmbDateReturn") >0) {
		//displayMessage (formatDate("cmbDateReturn", 1)  + ' is not a valid date. Please re-enter your return date.', 'cmbDateReturn', 1, 0);
		displayMessage ("Date format should like 'dd/mm/yyyy'. Please re-enter your return date.", "cmbDateReturn", 1, 0);
		return false;
	}
	if (travelDates() < 0) {
		displayMessage ('Return date cannot start before the departure date.', 'cmbDateReturn', 1, 0);
		return false;
	}
	if (travelDates() > 31622400000) {
		displayMessage ('Travel period cannot be longer than 12 months.', 'cmbDateReturn', 1, 0);
		
		//document.frmPage1Of2.elements["cmbDateReturn"].value = ;
		
		return false;
	}
	var date_now = new Date();
	var date_start = new Date();
	var dateStr=document.frmPage1Of2.cmbDateDeparture.value;
	var dateArray1=new Array(3);
	dateArray1=dateStr.split('/');
	date_start.setFullYear(dateArray1[2]+1);
	date_start.setMonth(parseInt(dateArray1[1],10) - 1);
	date_start.setDate(dateArray1[0]);
	date_start.setHours(23);
	date_start.setMinutes(59);
 
	var date_end = new Date()
	dateStr=document.frmPage1Of2.cmbDateReturn.value;
	var dateArray2=new Array(3);
	dateArray2=dateStr.split("/");
	date_end.setFullYear(dateArray2[2]);
	date_end.setMonth(parseInt(dateArray2[1],10) - 1);
	date_end.setDate(dateArray2[0]);

	if (date_now > date_start) {   
		displayMessage ('You cannot backdate policies. Please re-enter.', 'txtT2Name', 1, 0);
		return false;
	}
	var start_day = parseInt(dateArray1[0],10);
	var start_month = parseInt(dateArray1[1],10);
	var start_year = parseInt(dateArray1[2],10);

	var end_day = parseInt(dateArray2[0],10);
	var end_month = parseInt(dateArray2[1],10);
	var end_year = parseInt(dateArray2[2],10);    
	return true;
}

function displayMessage (msg, controlFocus, size, pos){
	window.alert(msg);
	if(size==1)
	  document.forms[0].elements[controlFocus].focus();
	else
	   document.forms[0].elements[controlFocus][pos].focus();
}

function SubmitForm(action) {
	if (validateForm()) {
		if (action=='IAF_Page2Of2.asp') {		
			document.forms[0].action = action + '?Page=1';
			// document.forms[0].target = '_top';
			document.forms[0].submit();
		}
		else {
			document.forms[0].action = action;
			// document.forms[0].target = '_top';
			document.forms[0].submit();
		}
	}
}
function trimAll(sString) {
	if (sString=="") return "";
	while (sString.substring(0,1) == ' ') {
		sString = sString.substring(1, sString.length); 
	}
	while (sString.substring(sString.length-1, sString.length) == ' ') {
		sString = sString.substring(0,sString.length-1);
	}
	return sString;
} 
function checkemail(str){
	var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
	if (filter.test(str)) {
		testresults=true;
	}
	else {
		alert("Please input a valid email address!")
		testresults=false;
	}
	return (testresults);
}

function FormPost(action, sender) {
	var strEmail;
	if (sender=="SaveQuote") {
		strEmail = document.forms[0].elements["txtEmailSave"].value;
    	if (checkemail(strEmail) && validateForm()) {
	  		document.forms[0].action = action + '?SaveQuickQuote=True';
	  		document.forms[0].submit();
		}
	}
	else if (sender=="RetrieveQuote") {
		strEmail=document.forms[0].elements["txtEmailRetrieve"].value;
		if (checkemail(strEmail)) { 
			document.forms[0].action = action + '?RetrieveQuickQuote=True';
			document.forms[0].submit();
		}
 	}
}

function travellerAge(travellerNum) {
	var d = new Date();    //today's date
	var current_year = d.getYear();	
	var b = new Date();    //calculated birthday
	var return_age;
	var formDOB;
	var dateArray=new Array(3);
   if (travellerNum == 1) {
        formDOB=trimAll(document.frmPage1Of2.elements["cmbDOB1"].value);
	    dateArray=formDOB.split("/");
		b.setMonth(parseInt(dateArray[1], 10) - 1);
		b.setDate(dateArray[0]);
		birth_year = parseInt(dateArray[2],10);
		b.setYear(birth_year);
    }
    else {
        formDOB=document.frmPage1Of2.elements["cmbDOB2"].value;
		dateArray=formDOB.split("/");
		b.setMonth(parseInt(dateArray[1], 10) - 1);
		b.setDate(dateArray[0]);
		birth_year = parseInt(dateArray[2],10);
		b.setYear(birth_year);
	}

	if (d < b) {
		return_age = current_year - birth_year - 1
	}
	else {
		return_age = current_year - birth_year;
	}
	return return_age;
}

function travelDates () {
	depart_ddmmyyyy = formatDate("cmbDateDeparture",0);
	return_ddmmyyyy = formatDate("cmbDateReturn",0);	
	d = Date.parse(depart_ddmmyyyy); 
	r = Date.parse(return_ddmmyyyy); 	
	diff = r - d;
	return diff;
}

function formatDate (DateElement, type) {
    var ddmmyyyy
	var strMonthArray = new Array(12);
	var formDateValue
	var dateParts = new Array(3);
	strMonthArray[0] = "Jan";
	strMonthArray[1] = "Feb";
	strMonthArray[2] = "Mar";
	strMonthArray[3] = "Apr";
	strMonthArray[4] = "May";
	strMonthArray[5] = "Jun";
	strMonthArray[6] = "Jul";
	strMonthArray[7] = "Aug";
	strMonthArray[8] = "Sep";
	strMonthArray[9] = "Oct";
	strMonthArray[10] = "Nov";
	strMonthArray[11] = "Dec";	 
	formDateValue=document.frmPage1Of2.elements[DateElement].value;
	dateParts=formDateValue.split("/");	 
	dd  = new String(dateParts[0]);
	mm = new String(dateParts[1]);
	yyyy = new String(dateParts[2]);	
	if (type == 0) {
		ddmmyyyy = (dd + strMonthArray[mm-1] + yyyy);
	 }
	else {
		ddmmyyyy = (dd + '-' + strMonthArray[mm-1] + '-' + yyyy);
	 }	
	return ddmmyyyy;
}
function DisableAgeApproval() {
	// Disable the Age Approval if under age
	if (document.forms[0].radTravelCompanion[0].checked == true) {
		if (travellerAge(1) <= 75) {
			disableControl ("txtT1Approval", true)
		}
		else {
			disableControl ("txtT1Approval", false);
		}
		if (document.forms[0].radTravelCompanion[0].checked == true) {
			if (travellerAge(2) <= 75) {
				disableControl ("txtT2Approval", true);
			}
			else {
				disableControl ("txtT2Approval", status);
			}
			DisableMedicalApproval();
		}
	}
}
/*
function ShowChildren() {
	if (document.forms[0]("cmbChildren").value < 5) {
		disableControl ("txtChild5Surname", true)
		disableControl ("txtChild5Name", true)
		disableControl ("txtChild5Initial", true)
		document.forms[0].elements["cmbChild5DOB"].disabled = true
	}
	else {
		disableControl ("txtChild5Surname", false)
		disableControl ("txtChild5Name", false)
		disableControl ("txtChild5Initial", false)
		document.forms[0].elements["cmbChild5DOB"].disabled = false
	}

	if (document.forms[0]("cmbChildren").value < 4) {
		disableControl ("txtChild4Surname", true)
		disableControl ("txtChild4Name", true)
		disableControl ("txtChild4Initial", true)
		document.forms[0].elements["cmbChild4DOB"].disabled = true
	}
	else {
		disableControl ("txtChild4Surname", false)
		disableControl ("txtChild4Name", false)
		disableControl ("txtChild4Initial", false)
		document.forms[0].elements["cmbChild4DOB"].disabled = false
	}

	if (document.forms[0]("cmbChildren").value < 3) {
		disableControl ("txtChild3Surname", true)
		disableControl ("txtChild3Name", true)
		disableControl ("txtChild3Initial", true)
		document.forms[0].elements["cmbChild3DOB"].disabled = true
	}
	else {
		disableControl ("txtChild3Surname", false)
		disableControl ("txtChild3Name", false)
		disableControl ("txtChild3Initial", false)
		document.forms[0].elements["cmbChild3DOB"].disabled = false
	}
	
	if (document.forms[0]("cmbChildren").value < 2) {
		disableControl ("txtChild2Surname", true)
		disableControl ("txtChild2Name", true)
		disableControl ("txtChild2Initial", true)
		document.forms[0].elements["cmbChild2DOB"].disabled = true
	}
	else {
		disableControl ("txtChild2Surname", false)
		disableControl ("txtChild2Name", false)
		disableControl ("txtChild2Initial", false)
		document.forms[0].elements["cmbChild2DOB"].disabled = false
	}

	if (document.forms[0]("cmbChildren").value < 1) {
		disableControl ("txtChild1Surname", true)
		disableControl ("txtChild1Name", true)
		disableControl ("txtChild1Initial", true)
		document.forms[0].elements["cmbChild1DOB"].disabled = true
	}
	else {
		disableControl ("txtChild1Surname", false)
		disableControl ("txtChild1Name", false)
		disableControl ("txtChild1Initial", false)
		document.forms[0].elements["cmbChild1DOB"].disabled = false
	}
}
*/
function DisablePolicyExtension(form) {
	var status

	if (document.forms[0].radPolicyExtension[1].checked == true) {
		status = true;
	}
	if (document.forms[0].radPolicyExtension[0].checked == true) {
		status = false;
	}

	document.forms[0].radNoClaims[0].checked = false;
	document.forms[0].radNoClaims[1].checked = true;

	disableControl ("txtPreviousPolicyNo", status)
	disableControl ("txtPreviousPolicyName", status)

	document.forms[0].radNoClaims[0].disabled = status
	document.forms[0].radNoClaims[1].disabled = status
	document.forms[0].btnPreviousPolicy.disabled = status
}
function DisableMedicalApproval(form) {
	var status
	
	if (document.forms[0].radExistingMedical[1].checked == true) {
		status = true;
		disableControl ("txtMedicalApproval2", status)
		disableControl ("txtMedicalPremium2", status)
	}
	if (document.forms[0].radExistingMedical[0].checked == true) {
		status = false;
		if (document.forms[0]("cmbFamily").value != '1') {
			disableControl ("txtMedicalApproval2", status);
			disableControl ("txtMedicalPremium2", status);
		}
	}
	disableControl ("txtMedicalApproval1", status)
	disableControl ("txtMedicalPremium1", status)
}

function DisableLuggage(form) {
	var status;
	var l;

	if (document.forms[0].radAdditionalLuggage[1].checked == true) {
	
		status = true;

		for ( l = 1; l <= 4; l++ ) {
			disableControl ("txtItem" + l, status)
			disableControl ("txtDescription" + l, status)
			disableControl ("txtValue" + l, status)
		}
	}
	if (document.forms[0].radAdditionalLuggage[0].checked == true) {

		status = true;

		for ( l = 4; l >= 1; l-- ) {
			if (document.forms[0].radNumberOfItems[l-1].checked == true) { status = false }
				disableControl ("txtItem" + l, status)
				disableControl ("txtDescription" + l, status)
				disableControl ("txtValue" + l, status)
		}
	}
}

function DisableAgent() {
	var msg
	msg = 1;
	if (document.forms[0].chkAgent.checked == true) {
		document.forms[0].elements["cmbAgent"].disabled = true
		msg = -1;
	}
	else{
		document.forms[0].elements["cmbAgent"].disabled = false
	}
	document.forms[0].elements["cmbAgent"].value = msg;
}

function EnableAgent() {
    document.forms[0].chkAgent.checked = false;
    document.forms[0].elements["cmbAgent"].disabled = false;
    document.forms[0].elements["cmbAgent"].options[0].selected = true;
}

function disableControl (controlName, status) {
	var varMessage

	if (status == true) {
	 	// disable control
		varMessage = 'N/A';
	}
	else {
		// enable control
		if (document.forms[0](controlName).value == 'N/A') {
			varMessage = '';
		}
		else {
			 varMessage = document.forms[0](controlName).value
		}
	}
	document.forms[0](controlName).value = varMessage;
	document.forms[0](controlName).disabled = status;
}

function isDate(DateElement) {
	var Error = 0;
	var formDateValue;
	var dateParts = new Array(3);
	formDateValue=trimAll(document.frmPage1Of2.elements[DateElement].value);
	if(!isValidDate(formDateValue)) return false;
	
	dateParts=formDateValue.split("/");
	d  = new String(dateParts[0]);
	m = new String(dateParts[1]);
	y = new String(dateParts[2]);

	if (d.length == 1) d = '0' + d;
	if (m.length == 1) m = '0' + m;
	if (y.length != 4) {
	   Error = 4;
	   return Error;
	} 

	if (d.length != 2 || m.length != 2 || y.length != 4) return false;
	if (isNaN(d) || d<0 || d.indexOf(',')!=-1 || d.indexOf('.')!=-1 || d.indexOf('-')!=-1) Error = 1;
	if (isNaN(m) || m<0 || m.indexOf(',')!=-1 || m.indexOf('.')!=-1 || m.indexOf('-')!=-1) Error = 2;
	if (isNaN(y) || y<0 || y.indexOf(',')!=-1 || y.indexOf('.')!=-1 || y.indexOf('-')!=-1) Error = 3;
	if (m<1 || m>12) Error = 2;
	if (d<1 || d>31) Error = 1;
	//if (y<1900 || y>2079) Error = 1;
	//check months with 30 days
	if (m==4 || m==6 || m==9 || m==11)
		{
		if (d==31) Error=1;
		}
	// february, leap year
	if (m==2)
	{
		// feb
		var feb=parseInt(y/4);
		if (isNaN(feb)) 
			{
			Error=1;
			}
		if (d>29) Error=1;
		if (d==29 && ((y/4)!=parseInt(y/4))) Error=1;
	}

	return Error;
}

function isValidDate(str_date) {
    var arr_date = str_date.split('/');
	var RE_NUM = /^\-?\d+$/;
    if (arr_date.length != 3) {
		//alert("Invalid date format: '" + str_date + "'.\nFormat accepted is dd/mm/yyyy.");
		return false;
	}
	 
	if (!arr_date[0]) {
		//alert ("Invalid date format: '" + str_date + "'.\nNo day of month value can be found.");
		return false;
	}
	if (!RE_NUM.exec(arr_date[0])) {
		//alert("Invalid day of month value: '" + arr_date[0] + "'.\nAllowed values are unsigned integers.");
		return false;
	}
	if (!arr_date[1]) {
		//alert ("Invalid date format: '" + str_date + "'.\nNo month value can be found.");
		return false;
	}
	if (!RE_NUM.exec(arr_date[1])) {
		//alert("Invalid month value: '" + arr_date[1] + "'.\nAllowed values are unsigned integers.");
		return false;
	}
	if (!arr_date[2]) {
		//alert("Invalid date format: '" + str_date + "'.\nNo year value can be found.");
		return false;
	}
	if (!RE_NUM.exec(arr_date[2])) {
		//alert ("Invalid year value: '" + arr_date[2] + "'.\nAllowed values are unsigned integers.");
		return false;
	}
	return true;
 }
 
 function isTextEmpty(formElement) {
     if(document.forms[0].elements[formElement]==null) return true;
	 if(document.forms[0].elements[formElement].value==null) return true;
	 if(document.forms[0].elements[formElement].value=="") return true;
	 if(trimAll(document.forms[0].elements[formElement].value)=="") return true;
	 return false;
}

function isCountryEmpty(formElement) {
	var controlType;
	var chosenIndex;
	var box;
	if(document.forms[0].elements[formElement]==null) return true;
    box = document.forms[0].elements[formElement];
	for(var i=0; i<document.forms[0].elements[formElement].length; i++) {
		chosenIndex=box[i].selectedIndex;
		if (chosenIndex>0) return false;
	}
	return true;
}

function isCoverEmpty(formElement) {
	var controlType;
	var chosenIndex;
	var box;
	if (document.forms[0].elements[formElement]==null) return true;
	box = document.forms[0].elements[formElement];
	chosenIndex = box.selectedIndex;
	if (chosenIndex>0) return false;	
	return true;
}

function existedDuplicateDest(formCountry) {
	var controlType;
	var chosenIndex;
	var box;
	var size;
	var dests;
   
	if (document.forms[0].elements[formCountry]==null) return "";
	box = document.forms[0].elements[formCountry];
	size=box.length;
	if (size==1) {
		return "";
	}
	else {
		dests=new Array(size);
	 	for(var i=0; i<size; i++) {
			chosenIndex=box[i].selectedIndex;
			if (chosenIndex>1)
				dests[i]=box[i].options[chosenIndex].value;
			else
				dests[i]="";
		}
		for(var j=0; j<size; j++) {
			var temp=dests[i];
			if (temp!="") {
				for (var k=i+1; k<size; k++) {
	     			if (temp==dests[k])
		   				return temp;
	    		}
	   		}
		}
		return "";
	}
	return "";
}



