function isNotEmpty(elem, elemName) {
	//alert(elem.value);
		var str = elem.value;
		var re = /.+/;
		if(!str.match(re)) {
				return(elemName + " is required");
		} else {
			return '';
		}
}
function hasNumber(elem, elemName) {
		var str = elem.value;
		var re = /^.*\d+.*$/;
		str = str.toString( );
		if (str.match(re)) {
				return(elemName + " should not have number");
		} else {
			return '';
		}
}
function isEMailAddr(elem) {
		var str = elem.value;
		var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
		if (!str.match(re)) {
				return("Verify the email address format.");
		} else {
				return '';
		}
}

function isPostalCode(elem) {
		var str = elem.value;
    var re = /^[a-zA-Z]\d[a-zA-Z]\s\d[a-zA-Z]\d$/;
		if (!str.match(re)) {
				return("Verify the Postal Code format.");		
		} else {
				return '';		
		}
}

function isPhoneNumber(elem) {
		var str = elem.value;
    var re = /^\d{3}\-\d{3}\-\d{4}$/;
		if (!str.match(re)) {
				return("Verify the Phone Number format.");
		} else {
				return '';
		}
}

function isDate(elem){
	var str=elem.value;
	var re=/^\d{2}\/\d{2}\/\d{4}$/;
	if(!str.match(re)){
		return("Please fill in the date in the format mm/dd/yyyy");
	}else{
    if (isValidDate(str))
      return ''
    else
		  return("Please fill in the date in the format mm/dd/yyyy");
	}
}

function y2k(number) { return (number < 1000) ? number + 1900 : number; }

function isValidDate (myDate) {

  var date  = myDate.substring(3,5);
  var month = myDate.substring(0,2);
  var year  = myDate.substring(6,10);

  var test = new Date(year,month-1,date);

  if (year == y2k(test.getYear()) && (month-1 == test.getMonth()) && (date == test.getDate())) {
    return true;
  }
  else {
    return false;
  }
}


function isSIN(elem, elemName){
	var str=elem.value;
	var re=/^\d{3}[\s\-]+\d{3}[\s\-]+\d{3}$/;
	if(!str.match(re)){
		return("Please fill in correct " + elemName + " number");
	}else{
		return '';
	}
}
function hasSymbol(elem,elemName){
	var str = elem.value;
		var re = /^.*[!@#\$%\^&\*(\)].*$/;
		if (str.match(re)) {
				return(elemName + " should not have symbol");
		} else {
				return '';
		}
}

function Validate1(){
	var f = document.forms[0];
	var strError = '';
	
	var strTmp = isNotEmpty(f['txtName'], "Name");
	strError = strAppend(strError, strTmp);
	if (!strTmp) {

		strTmp = hasNumber(f['txtName'], "Name");
		
		if (strTmp) {
			strError = strAppend(strError, strTmp);
		}
	}
	
	strTmp = isNotEmpty(f['txtSIN'], "SIN");
	strError = strAppend(strError, strTmp);
	if (!strTmp) {

		strTmp = isSIN(f['txtSIN'], "SIN");
		
		if (strTmp) {
			strError = strAppend(strError, strTmp);
		}
	}
	
	if (strError) {
		alert(strError)
		return false;
	}
	else {
		var summary = "Please check the following information.";
		summary += "\r\n\r\n Name: ";
		summary += f['txtName'].value;
		summary += "\r\n\r\n SIN: ";
		summary += f['txtSIN'].value;
		return confirm(summary);
	}
}

function Validate2(){
	var f = document.forms[0];
	var strError = '';
	
  strError = strAppend(strError, isNotEmpty(f['txtAddress'], "Address"));
	
	strTmp = isNotEmpty(f['txtCity'], "City");
	strError = strAppend(strError, strTmp);
	if (!strTmp) {

		strTmp = hasNumber(f['txtCity'], "City");
		
		if (strTmp) {
			strError = strAppend(strError, strTmp);
		}
	}
	
	strTmp = isNotEmpty(f['txtProvince'], "Province");
	strError = strAppend(strError, strTmp);
	if (!strTmp) {

		strTmp = hasNumber(f['txtProvince'], "Province");
		
		if (strTmp) {
			strError = strAppend(strError, strTmp);
		}
	}
	strTmp = isNotEmpty(f['txtPostalCode'], "Postal Code");
	strError = strAppend(strError, strTmp);
	if (!strTmp) {

		strTmp = isPostalCode(f['txtPostalCode']);
		
		if (strTmp) {
			strError = strAppend(strError, strTmp);
		}
	}
	
	strTmp = isNotEmpty(f['txtPhoneNumber'], "Phone Number");
	strError = strAppend(strError, strTmp);
	if (!strTmp) {

		strTmp = isPhoneNumber(f['txtPhoneNumber']);
		
		if (strTmp) {
			strError = strAppend(strError, strTmp);
		}
	}
				
	strTmp = isNotEmpty(f['txtEmail'], "Email");
	strError = strAppend(strError, strTmp);
	if (!strTmp) {

		strTmp = isEMailAddr(f['txtEmail'], "Email");
		
		if (strTmp) {
			strError = strAppend(strError, strTmp);
		}
	}

	strTmp = isNotEmpty(f['txtDateOfBirth'], "Date of Birth");
	strError = strAppend(strError, strTmp);
	if (!strTmp) {

		strTmp = isDate(f['txtDateOfBirth'], "Date of Birth");
		
		if (strTmp) {
			strError = strAppend(strError, strTmp);
		}
		else {

     var d1 = new Date(f['txtDateOfBirth'].value);
     var d2 = new Date(); // today

     if (d1.getTime() - d2.getTime() > 0) {
     
        strError = strAppend(strError, "Please fill valid Date of Birth");
     }
		
		}
	}	
	
	strTmp = isNotEmpty(f['txtCountryOfBirth'], "Country Of Birth");
	strError = strAppend(strError, strTmp);
	if (!strTmp) {

		strTmp = hasNumber(f['txtCountryOfBirth'], "Country Of Birth");
		
		if (strTmp) {
			strError = strAppend(strError, strTmp);
		}
	}
	
	//addons
	strTmp = isNotEmpty(f['PassportCountry'], "Passport Issued Country");
	strError = strAppend(strError, strTmp);
	strTmp = isNotEmpty(f['PassportNo'], "Passport No");
	strError = strAppend(strError, strTmp);
	
	strTmp = isNotEmpty(f['PassportDate'], "Date of Passport");
	strError = strAppend(strError, strTmp);
	if (!strTmp) {

		strTmp = isDate(f['PassportDate'], "Date of Passport");
		
		if (strTmp) {
			strError = strAppend(strError, strTmp);
		}
		else {

     //var d1 = new Date(f['PassportDate'].value);
     //var d2 = new Date(); // today

     //if (d1.getTime() - d2.getTime() > 0) {
     
        //strError = strAppend(strError, "Please fill valid passport expiry date");
     //}
		
		}
	}
	if (f['cbDriverLicence'].checked){
			strTmp = isNotEmpty(f['DriverProv'], "Driver Licence Province");
			strError = strAppend(strError, strTmp);
			strTmp = isNotEmpty(f['DriverNo'], "Driver Licence No");
			strError = strAppend(strError, strTmp);
			
			strTmp = isNotEmpty(f['DriverDate'], "Date of Licence");
			strError = strAppend(strError, strTmp);
			if (!strTmp) {
				strTmp = isDate(f['DriverDate'], "Date of Licence");
				if (strTmp) {
					strError = strAppend(strError, strTmp);
				}
			else {

			//var d1 = new Date(f['DriverDate'].value);
			//var d2 = new Date(); // today

			//if (d1.getTime() - d2.getTime() > 0) {
			//	strError = strAppend(strError, "Please fill valid Licence expiry date");
			//}
			}	
			}	
	}
	
	//end of addons
	
	
	if (f['radiobutton1'][0].checked || f['radiobutton1'][1].checked) {
	}
	else {
	  strError = strAppend(strError, "Please select Sex");
	}
	
    if (f['rbCitizen'][0].checked || f['rbCitizen'][1].checked) {
	}
	else {
	  strError = strAppend(strError, "Please select citizen");
	}	
	if (f['rbBeenUnitedStates'][0].checked || f['rbBeenUnitedStates'][1].checked) {
	}
	else {
	  strError = strAppend(strError, "Please select if you have been to United States");
	}		
	if (f['rbChildren'][0].checked || f['rbChildren'][1].checked) {
	}
	else {
	  strError = strAppend(strError, "Please select if any of your children are US ciziten");
	}		
		
	if (strError) {
		alert(strError)
		return false;
	}
	else {
	
	var summary = "Please check the following information.";
		summary += "\r\n\r\n Name: ";
		summary += f['txtName2'].value;
		summary += "\r\n\r\n Address: ";
		summary += f['txtAddress'].value;
		summary += "\r\n\r\n City: ";
		summary += f['txtCity'].value;
		summary += "\r\n\r\n Province: ";
		summary += f['txtProvince'].value;
		summary += "\r\n\r\n Postal Code: ";
		summary += f['txtPostalCode'].value;
		summary += "\r\n\r\n Email: ";
		summary += f['txtEmail'].value;
		summary += "\r\n\r\n Date of Birth: ";
		summary += f['txtDateOfBirth'].value;
		summary += "\r\n\r\n Country Of Birth: ";
		summary += f['txtCountryOfBirth'].value;
		
    summary += "\r\n\r\n Sex: ";
    summary += (f['radiobutton1'][0].checked)? "Male":"Female";
    summary += "\r\n\r\n Identification Number: ";
    summary += (f['txtApplicantNumber'].value=="")? "NIL":f['txtApplicantNumber'].value;
    summary += "\r\n\r\n Spouse Number: ";
    summary += (f['txtSpouseNumber'].value=="")? "NIL":f['txtSpouseNumber'].value;
    
    summary += "\r\n\r\n US Citizen: ";
	  summary += (f['rbCitizen'][0].checked)? "Yes":"No";
	  
    summary += "\r\n\r\n Been to US: ";
    summary += (f['rbBeenUnitedStates'][0].checked)? "Yes":"No";
    
    summary += "\r\n\r\n Any of your children are US citizens: ";
    summary += (f['rbChildren'][0].checked)? "Yes":"No";
    
    //summary += "\r\n\r\n Agent Info: ";
    //summary += (f['txtAgentInfo'].value=="")? "NIL":f['txtAgentInfo'].value;
	
	//Addon
	summary += "\r\n\r\n Passport Issued by: ";
	summary += f['PassportCountry'].value;
	summary += "\r\n\r\n Passport No: ";
	summary += f['PassportNo'].value;
	summary += "\r\n\r\n Passport Expiry: ";
	summary += f['PassportDate'].value;
	summary += "\r\n\r\n Licence Issued by: ";
	summary += f['DriverProv'].value;
	summary += "\r\n\r\n Licence No: ";
	summary += f['DriverNo'].value;
	summary += "\r\n\r\n Licence Expiry: ";
	summary += f['DriverDate'].value;
	

		
	return confirm(summary);
	}
}

function strAppend(a, b) {
 if(!b) return a;
 if(a) a += "\n";
 return a + b;
}
