var arr_err_msg=new Array();


var remote=null;
function rs(n,u,w,h,x) {
remote=window.open(u,n,'width=360,height=400,resizable=yes,scrollbars=yes,status=0');
if (remote != null) {
if (remote.opener == null )
remote.opener = self;
remote.location.href=u;
}
if (x==1){return remote;}
}

function isValidStr(str){
	valStr = true;
	len = str.length;
	for ( i=0; i<len; i++ ){
		charCode = str.charCodeAt(i);
		ch = str.charAt(i);
		if ( (charCode>0) && (charCode<129) ){		// if the charCode is between 1-128 that means its valid char NOT chinese
			//valStr = true;
		}else{
			valStr = false;
			break;
		}//else
	}//for
	return valStr;
}//isValidStr


function isEmpty(inputStr) {
	if (inputStr == "" || inputStr == null) {
		return true
	}
	return false
}

function isNumeric(inputStr){
	for (var i = 0; i < inputStr.length; i++){
		var oneChar = inputStr.substring(i,i+1)
		if (oneChar < "0" || oneChar > "9"){
			return false
		}
	}
	return true
}
 function getSelectedButton(buttonGroup){
	for (var i=0;i<buttonGroup.length;i++){
		if (buttonGroup[i].checked){
			return i
		}
	}
//	return 0
	return -1
}

function preSelectDates(){
	var today = new Date()

	var conToDte = new Date()
	conToDte.setYear(conToDte.getFullYear()+1)
	conToDte.setDate(conToDte.getDate()-1)

var el_sel0=document.getElementById("eff_yy");
var tmp_opt_eff_yy;

for (i=0;i<2;i++){
  tmp_opt_eff_yy=document.createElement('option');
  tmp_opt_eff_yy.text=today.getFullYear()+i;
  tmp_opt_eff_yy.value=today.getFullYear()+i;

  try {el_sel0.add(tmp_opt_eff_yy,null);}catch(ex){el_sel0.add(tmp_opt_eff_yy);}
}


	var theAgent=navigator.appName;
	/*
	if(theAgent=="Netscape"){
		var yy1 =parseInt(document.form.confr_yy[0].value) -1900
		var yy2 =parseInt(document.form.conto_yy[0].value) -1900
		var yy3 =parseInt(document.form.eff_yy[0].value) -1900
	}else{
		var yy1 = document.form.confr_yy[0].value
		var yy2 = document.form.conto_yy[0].value
		var yy3 = document.form.eff_yy[0].value
	} */
		var yy3 = document.form.eff_yy[0].value


/* obsoleted 20071210
		var yy1 = document.form.confr_yy[0].value
		var yy2 = document.form.conto_yy[0].value
	//seccase

 	document.form.confr_mm.selectedIndex = today.getMonth()
 	document.form.confr_dd.selectedIndex = today.getDate() - 1
 	document.form.confr_yy.selectedIndex = today.getFullYear() - yy1
 	document.form.conto_mm.selectedIndex = conToDte.getMonth()
 	document.form.conto_dd.selectedIndex = conToDte.getDate() - 1
 	document.form.conto_yy.selectedIndex = conToDte.getFullYear() - yy2
*/

 	document.form.eff_mm.selectedIndex = today.getMonth()
 	document.form.eff_dd.selectedIndex = today.getDate() - 1
 	document.form.eff_yy.selectedIndex = today.getFullYear() - yy3
 	document.form.d_nat.value = ""
}

function isValidDate(dateStr) {
	// Checks for the following valid date formats:
	// MM/DD/YY   MM/DD/YYYY   MM-DD-YY   MM-DD-YYYY
	// Also separates date into month, day, and year variables

	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/

	// To require a 4 digit year entry, use this line instead:
	// var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;

	var matchArray = dateStr.match(datePat); // is the format ok?
	if (matchArray == null) {
		return false;
	}
	month = matchArray[1]; // parse date into variables
	day = matchArray[3];
	year = matchArray[4];
	if (month < 1 || month > 12) { // check month range
		return false;
	}
	if (day < 1 || day > 31) {
		return false;
	}
	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		return false
	}
	if (month == 2) { // check for february 29th
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day>29 || (day==29 && !isleap)) {
			return false;
		}
	}
	return true;  // date is valid
}

function calcAge(bmm,bdd,byy){
	var age;

	//curent info
	today = new Date();
	year = today.getFullYear() ;
	month = today.getMonth() + 1;
	day = today.getDate();

	if ( month < bmm ){
		age = year - byy - 1;
	}else if ( month > bmm ){
		age = year - byy;
	}else if ( month == bmm ){
		if ( day < bdd ){
			age = year - byy - 1;
		}else if ( day > bdd ){
			age = year - byy;
		}else if ( day == bdd ){
			age = year - byy;
		}
  	}
	return age;
	//alert (age  + "12");

}//calcAge

function calcAge1(dob, fr_date){

	var age;

	var theAgent=navigator.appName;
	if(theAgent=="Netscape"){
	    year = fr_date.getYear() + 1900;
	}//if
	else{
	    year = fr_date.getYear();
	    if ( year < 100 ){
		year = year + 1900
	    }//if
	}//else

	month = fr_date.getMonth() + 1;
	day = fr_date.getDate();

	bdd = dob.getDate();
	bmm = dob.getMonth() + 1;

	if ( theAgent=="Netscape" ){
	    byy = dob.getYear() + 1900;
	}//if
	else{
	    byy = dob.getYear();
	    if ( byy < 100 ){
		byy = byy + 1900
	    }//if
	}//else

	if ( month < bmm ){
		age = year - byy - 1;
	}else if ( month > bmm ){
		age = year - byy;
	}else if ( month == bmm ){
		if ( day < bdd ){
			age = year - byy - 1;
		}else if ( day > bdd ){
			age = year - byy;
		}else if ( day == bdd ){
			age = year - byy;
		}
  	}
	return age;
	//alert (age  + "45");

}//calcAge1

function checkForm(form){
	arr_err_msg[0]="請輸入所需有關僱主的資料。\n";
	arr_err_msg[1]="所有項目必須以英文及數字填寫。\n";
	arr_err_msg[2]="電郵地址錯誤。\n";
	arr_err_msg[3]="請輸入所需有關受保家傭的資料。\n";
	//arr_err_msg[4]="此表格必須以英文填寫。\n";
	//arr_err_msg[5]="你的申請須要提供更進一步資料。請致電 852-25987660 與洪潤源垂詢聯絡。\n";
	arr_err_msg[6]="請選擇適合之單一個保險計劃。\n";
	//arr_err_msg[7]="僱主年齡必須為18歲至70歲。\n";
	//arr_err_msg[8]="僱主出生日期錯誤。注意：出生年份必須以4位數字填寫。\n";
	arr_err_msg[9]="受保家傭年齡必須為18至60歲。\n";
	arr_err_msg[10]="受保家傭出生日期排序錯誤。\n注意：出生年份必須以完整4位數字填寫。\n";
	arr_err_msg[11]="此保單必須定於今天起三十日內生效。\n";
	//arr_err_msg[12]="保單生效日期祇可為今天或以後的日子。\nEffective Date must be today or any day after!";
	//arr_err_msg[13]="保單生效日期錯誤\nInvalid Effective Date.";
	//arr_err_msg[14]="保單生效日期祇可為受僱合約期內。\nEffective Date should within Contract Period of Employment!";
	//arr_err_msg[15]="由於保單生效日期與受僱合約結束日期相隔不足一年，請選擇一年保險計劃。\nThe period between effective starting date and contract end date is less than 1 year.\nPlease choose plan for One year.";
	arr_err_msg[17]="本網上投保程式不適用於擬投保的家傭，若其年齡超過60歲。\n";
	//arr_err_msg[16]="受僱合約期錯誤\nInvalid Contract Starting Date OR contract end date.";
	arr_err_msg[18]="請閱讀及同意以上聲明及所有條款以繼續申請程序 。\n";
	arr_err_msg[19]="請覆核所輸入資料均正確無誤，若你已同意所有聲明及有關條款細則，請按 [確定] 繼續申請程序，否則按 [取消] 返回並作出修改。\n";
	arr_err_msg[20]="計劃B及計劃C只適用於海外家傭。如閣下聘用了香港或中國的家傭，請選擇計劃A。\n";

	var txt_err="0";
	var txt_msg;
	//alert(form.badnat.value);
	if (form.badnat.value != "n") {
		form.d_nat.value = "";
	}


	if (isEmpty(form.a_title.value) ) {txt_err=txt_err+",1";}  if (isEmpty(form.a_lname.value) ) {txt_err=txt_err+",2";}  if (isEmpty(form.a_fname.value) ) {txt_err=txt_err+",3";}  if (isEmpty(form.a_FOID.value) ) {txt_err=txt_err+",4";}  if (isEmpty(form.ph.value) ) {txt_err=txt_err+",5";}  if (isEmpty(form.mail.value) ) {txt_err=txt_err+",6";}  if (isEmpty(form.addr.value) ) {txt_err=txt_err+",7";}  if (isEmpty(form.i_addr.value) ) {txt_err=txt_err+",7";}

	// obsoleted 20071210
	/* if (isEmpty(form.occp.value) ){txt_err=txt_err+",8";} */

	if (isEmpty(form.a_title.value) || isEmpty(form.a_lname.value) || isEmpty(form.a_fname.value) || isEmpty(form.a_FOID.value) || isEmpty(form.ph.value) || isEmpty(form.mail.value) || isEmpty(form.addr.value)  || isEmpty(form.i_addr.value)){
	// 20071210  || isEmpty(form.occp.value) 

			txt_msg = "Employer’s information necessary for this application must be filled in.";
			if (b_chVer) {txt_msg = arr_err_msg[0]+txt_msg;} 
			alert(txt_msg);
		return false
	}else{
		if (!isValidStr(form.a_title.value) || !isValidStr(form.a_lname.value) || !isValidStr(form.a_fname.value) || !isValidStr(form.a_FOID.value) || !isValidStr(form.ph.value) || !isValidStr(form.fax.value) || !isValidStr(form.mail.value) || !isValidStr(form.addr.value) || !isValidStr(form.i_addr.value)  ){
	// obsoleted 20071210  || !isValidStr(form.occp.value)
				txt_msg = "All fields must be filled in with English and number.";
				if (b_chVer) {txt_msg = arr_err_msg[1]+txt_msg;} alert(txt_msg);

			return false
		}
	
		if ( form.mail.value.indexOf('@', 0) == -1 ){
				txt_msg = "Invalid email address.";
			if (b_chVer) {txt_msg = arr_err_msg[2]+txt_msg;} alert(txt_msg);

			return false
		}	
	}

	txt_msg = "Plan B and Plan C are suitable for Overseas Domestic Helpers only. Please select Plan A for Domestic Helpers from Hong Kong or China.";
	if (b_chVer) {txt_msg = arr_err_msg[20]+txt_msg;} 
	//alert("1" + form.badnat.value);
	if (((form.plan.value == "B") || (form.plan.value == "C")) && (form.badnat.value == -1)) {
		//alert("2" + form.badnat.value);
		var rc2=confirm(txt_msg);
		if (rc2) {
		//alert(rc2);
			return false
		}
	}

	if (isEmpty(form.d_title.value) || isEmpty(form.d_lname.value) || isEmpty(form.d_fname.value) || isEmpty(form.d_FOID.value) || ((form.plan.value != "A") && (isEmpty(form.d_nat.value))) ){
/*if (isEmpty(form.d_title.value)){alert(" 1");} if(isEmpty(form.d_lname.value)){alert(" 2");} if(isEmpty(form.d_fname.value)){alert(" 3");} if(isEmpty(form.d_FOID.value)){alert(" 4");} if(isEmpty(form.d_nat.value) ){alert("  5")}*/
		
		

		txt_msg = "Insured Domestic Helper’s information necessary for this application must be filled in.";
		if (b_chVer) {txt_msg = arr_err_msg[3]+txt_msg;} alert(txt_msg);
		return false
	}else{
		if (!isValidStr(form.d_title.value) || !isValidStr(form.d_lname.value) || !isValidStr(form.d_fname.value) || !isValidStr(form.d_FOID.value) || !isValidStr(form.d_nat.value) ){
				txt_msg = "All fields must be filled in with English and number.";
			if (b_chVer) {txt_msg = arr_err_msg[1]+txt_msg;} alert(txt_msg);
			return false
		}
	}



/* obsoleted 20071210
	if (!(getSelectedButton(form.opt_def) == 1 && getSelectedButton(form.opt_haz) == 1)) {
			txt_msg = "It appears that further information is required for your application, \n please contact Mr Peter Hung at Tel: 852-25987660 for assistance.";
		if (b_chVer) {txt_msg = arr_err_msg[5]+txt_msg;} alert(txt_msg);
		return false
	}
*/

	var err_opt_com=true;
	if (form.opt_com) {
	   switch(form.opt_com.value) {
	   case "1":
	      err_opt_com=false;
	      break;    
	   case "2":
	      err_opt_com=false;
	      break;
	      default:
	} // switch(val)
	} if (form.opt_com)
	if (err_opt_com) {
	txt_msg = "Please select one suitable plan.";
		if (b_chVer) {txt_msg = arr_err_msg[6]+txt_msg;} alert(txt_msg);

		return false
	}

	// obsoleted 20071219
	//check applicant's DOB
/*	var goodaDOB = isValidDate((form.a_bmm.selectedIndex+1)+"/"+(form.a_bdd.selectedIndex+1)+"/"+form.a_byy.value) 
	var a_byear = form.a_byy.value
	if (goodaDOB && a_byear.length==4){
		if(calcAge(form.a_bmm.selectedIndex+1,form.a_bdd.selectedIndex+1,form.a_byy.value)<18 || calcAge(form.a_bmm.selectedIndex+1,form.a_bdd.selectedIndex+1,form.a_byy.value)>70){
				txt_msg = "Applicant should be between 18 and 70!";
			if (b_chVer) {txt_msg = arr_err_msg[7]+txt_msg;} alert(txt_msg);
			return false
		}	
	}else{
			txt_msg = "Invalid Applicant's Date of Birth.";
		if (b_chVer) {txt_msg = arr_err_msg[8]+txt_msg;} alert(txt_msg);

		return false
	}			
*/
	//check effective date
	//	var eff_year = form.eff_yy.selectedIndex+2002
	var eff_year = form.eff_yy.value

	var eff_date =  new Date((form.eff_mm.selectedIndex+1)+"/"+(form.eff_dd.selectedIndex+1)+"/"+eff_year)

	var goodeff = isValidDate((form.eff_mm.selectedIndex+1)+"/"+(form.eff_dd.selectedIndex+1)+"/"+eff_year) 
	if(goodeff){
 		var today_now = new Date()
 		today_now.setHours(0)
 		today_now.setMinutes(0)
 		today_now.setSeconds(0)
 		var today = today_now

		if ( Math.ceil(eff_date - today ) /86400000 >30 - 1){
			
			
				txt_msg = "The Policy Effective Date must be within 30 days counting from today.";
			if (b_chVer) {txt_msg = arr_err_msg[11]+txt_msg;} alert(txt_msg);

			return false
		};

		if ( Math.ceil(eff_date/86400000 - today/86400000 )  <0){
			
			
				txt_msg = "The Policy Effective Date must be within 30 days counting from today.";
			if (b_chVer) {txt_msg = arr_err_msg[11]+txt_msg;} alert(txt_msg);

			return false
		};

	}else{
		
		
			txt_msg = "The Policy Effective Date must be within 30 days counting from today.";
		if (b_chVer) {txt_msg = arr_err_msg[11]+txt_msg;} alert(txt_msg);

		return false
	}	

	//check helper's DOB
	var dom_date =  new Date((form.d_bmm.selectedIndex+1)+"/"+(form.d_bdd.selectedIndex+1)+"/"+form.d_byy.value)
	var gooddDOB = isValidDate((form.d_bmm.selectedIndex+1)+"/"+(form.d_bdd.selectedIndex+1)+"/"+form.d_byy.value) 
	var d_byear = form.d_byy.value
	eff_to = new Date(eff_date)
	
	eff_to.setYear( eff_date.getFullYear() + getSelectedButton(form.opt_com)+1 )

	eff_to.setDate( eff_date.getDate())
	
	dom_age = calcAge1(dom_date, eff_to)
	//alert(dom_age)
	//alert(dom_date)
	//alert(eff_to)

	if (gooddDOB && d_byear.length==4){

		if( (dom_age <18) || (calcAge(form.d_bmm.selectedIndex+1,form.d_bdd.selectedIndex+1,form.d_byy.value)>=60)){
		//if(calcAge(form.d_bmm.selectedIndex+1,form.d_bdd.selectedIndex+1,form.d_byy.value)<18 || calcAge(form.d_bmm.selectedIndex+1,form.d_bdd.selectedIndex+1,form.d_byy.value)>=60){

				txt_msg = "Insured Domestic Helper must be aged between 18 and 60.\n";
			if (b_chVer) {txt_msg = arr_err_msg[9]+txt_msg;} alert(txt_msg);

			return false
		}	
	}else{
		
		
		txt_msg = "Invalid Insured Domestic Helper's date of birth. \nNotice: Year of Birth must be filled in with 4 digits in full.";
		if (b_chVer) {txt_msg = arr_err_msg[10]+txt_msg;} alert(txt_msg);

		return false
	}			


	

	//check contract fr, contract to
//	var confr_year = form.confr_yy.selectedIndex+1997
//	var conto_year = form.conto_yy.selectedIndex+2002 
/* obsoleted 20071210
	var confr_year = form.confr_yy.value
	var conto_year = form.conto_yy.value


	var confr_date =  new Date((form.confr_mm.selectedIndex+1)+"/"+(form.confr_dd.selectedIndex+1)+"/"+confr_year)
	var conto_date =  new Date((form.conto_mm.selectedIndex+1)+"/"+(form.conto_dd.selectedIndex+1)+"/"+conto_year)

	var goodconfr = isValidDate((form.confr_mm.selectedIndex+1)+"/"+(form.confr_dd.selectedIndex+1)+"/"+confr_year) 
	var goodconto = isValidDate((form.conto_mm.selectedIndex+1)+"/"+(form.conto_dd.selectedIndex+1)+"/"+conto_year) 

	if(goodconfr && goodconto){
//		if(Math.ceil(eff_date - conto_date +1000 ) /86400000 >=0 || Math.ceil(eff_date - confr_date + 1000 ) /86400000 <=0){
		if(Math.ceil(eff_date - conto_date ) /86400000 >0 || Math.ceil(eff_date - confr_date ) /86400000 <0){
			
			
				txt_msg = "Effective Date should within Contract Period of Employment!";
			if (b_chVer) {txt_msg = arr_err_msg[14]+txt_msg;} alert(txt_msg);

			return false
		}
	}else{
		
		
			txt_msg = "Invalid Contract Starting Date OR contract end date.";
		if (b_chVer) {txt_msg = arr_err_msg[15]+txt_msg;} alert(txt_msg);

		return false
	}
*/


	// check the applicant can only choose one year plan if the conto_date-eff_date < 1 year	
	/*if( getSelectedButton(form.opt_com) == 1 && goodconto && goodeff){
		//alert(" 10");
	now_conto = calcAge1(eff_date,conto_date)

		if(now_conto<1){
			
			
				txt_msg = "Notice: This insurance policy becomes invalid if the Insured Domestic Helper is over 60. \n";
				txt_msg = '';
			if (b_chVer) {txt_msg = arr_err_msg[16]+txt_msg;} alert(txt_msg);
			return false
		}	
	}*/


	// check the domestic helper's age should be less than or equal to 60 at the eff_to
	/*eff_to = new Date(eff_date)
	
	eff_to.setYear( eff_date.getFullYear() + getSelectedButton(form.opt_com)+1 )

	eff_to.setDate( eff_date.getDate() - 1 )*/
	//var aa = dom_date.getMonth()+1;
	//alert(aa);
	
	//dom_age = calcAge1(dom_date, eff_to)
	//alert(eff_date.getMonth()+","+dom_age);
	if (( dom_age >= 60 ) || ((dom_age == 59) && (eff_date.getMonth()+1 == dom_date.getMonth()+1 ) )) {
		
			// 
			txt_msg = "Notice: This insurance policy becomes invalid if the Insured Domestic Helper is over 60 years of age.";
		if (b_chVer) {txt_msg = arr_err_msg[17]+txt_msg;} alert(txt_msg);
		return false;

	}//if

	//check the domestic helper's age should be 
	//if (dom_age < )

//alert("goodaDOB: "+goodaDOB);

	if (form.agreeTNC.checked==false)  {
		
		
			txt_msg = "To continue the application process, please read and agree to the Declaration and Terms and Conditions.";
		if (b_chVer) {txt_msg = arr_err_msg[18]+txt_msg;} alert(txt_msg);

		return false
	}

		
		/*txt_msg = "Plan B and Plan C are suitable for Overseas Domestic Helpers only. Please select Plan A for Domestic Helpers from Hong Kong or China.";
		if (b_chVer) {txt_msg = arr_err_msg[20]+txt_msg;} 

		if (((form.plan.value == "B") || (form.plan.value == "C"))&&((isEmpty(form.d_nat.value))||(form.d_nat.value=""))) {
			var rc2=confirm(txt_msg);
			if (!rc2) {
				return false
			}
		}*/	
		
		txt_msg = "Please review the information you have entered; if you agree with the Declaration and related Terms and Conditions, press [OK] to proceed. To make amendments or corrections, please press [Cancel].";
		if (b_chVer) {txt_msg = arr_err_msg[19]+txt_msg;} 
//alert(txt_msg);

	// if (confirm(txt_msg)) {form.submit();}
var rc1=confirm(txt_msg);
return rc1;

}

function frm_prem(myform, val){
   switch(val) {
   case "1":
      myform.opt_com.value="1";
      myform.plan.value="A";
      break;    
   case "2":
      myform.opt_com.value="2";
      myform.plan.value="A";
      break;
   case "3":
      myform.opt_com.value="1";
      myform.plan.value="B";
      break;
   case "4":
      myform.opt_com.value="2";
      myform.plan.value="B";
      break;
   case "5":
      myform.opt_com.value="1";
      myform.plan.value="C";
      break;
   case "6":
      myform.opt_com.value="2";
      myform.plan.value="C";
      break;
   case "7":
      myform.opt_com.value="1";
      myform.plan.value="Bgold";
      break;
   case "8":
      myform.opt_com.value="1";
      myform.plan.value="Bdiam";
      break;
   case "9":
      myform.opt_com.value="2";
      myform.plan.value="Bgold";
      break;
   case "10":
      myform.opt_com.value="2";
      myform.plan.value="Bdiam";
      break;
   case "11":
      myform.opt_com.value="1";
      myform.plan.value="Cgold";
      break;
   case "12":
      myform.opt_com.value="1";
      myform.plan.value="Cdiam";
      break;
   case "13":
      myform.opt_com.value="2";
      myform.plan.value="Cgold";
      break;
   case "14":
      myform.opt_com.value="2";
      myform.plan.value="Cdiam";
      break;
      default:
} // switch(val)
/*alert("You are choosing Plan "+ myform.plan.value +" for "+myform.opt_com.value +" year(s)");*/

if (myform.plan.value=="A") {
   myform.d_title.selectedIndex=0;
   myform.d_lname.value="PlanA";
   myform.d_fname.value="PlanA";
   myform.d_nat.value="PlanA";
   myform.d_FOID.value="PlanA";
   myform.d_bmm.value="1";
   myform.d_bdd.value="1";
   d_tmp0=new Date();
   myform.d_byy.value=d_tmp0.getFullYear()-57;
} // if (myform.plan.value=="A")

} // function frm_prem(myform, val)

