/*--------Trim a String----------------------*/
String.prototype.trim = function() {

 // skip leading and trailing whitespace
 // and return everything in between
  var x=this;
  x=x.replace(/^\s*(.*)/, "$1");
  x=x.replace(/(.*?)\s*$/, "$1");
  return x;
}
function isFieldEmpty(fld){
	if (fld.trim()=="")
		return true;
	else
		return false;
}
function enableCarDetails(x){
var driver_no = document.getElementById('DriverLicenseNo');
var driver_state = document.getElementById('USState');
var driver_expdate = document.getElementById('DriverExpDate');
	if (x==1){
		driver_no.disabled=false;
		driver_state.disabled=false;
		driver_expdate.disabled=false;
	} else {
		driver_no.disabled=true;
		driver_state.disabled=true;
		driver_expdate.disabled=true;		
		driver_no.value="";
		driver_state.value="";
		driver_expdate.value="";
	}
}
function enableCarrierDetails(x){
var insurance_expdate = document.getElementById('InsuranceExpDate');
var insurance_carrier = document.getElementById('InsuranceCarrier');
var liability = document.getElementById('Liability');	
	if (x==1){
		insurance_expdate.disabled=false;
		insurance_carrier.disabled=false;
		liability.disabled=false;
	} else {
		insurance_expdate.disabled=true;
		insurance_carrier.disabled=true;
		liability.disabled=true;	
		insurance_expdate.value="";
		insurance_carrier.value="";
		liability.value="";	
	}
}
function enableReason(){
var felony = document.forms[0].Felony;
var lawsuit = document.forms[0].Lawsuit;
var fidelity = document.forms[0].Fidelity;
var bln_reason = false;
bln_reason = (felony[1].checked && lawsuit[1].checked && fidelity[1].checked);
if (bln_reason) {document.forms[0].Reason.disabled=true;document.forms[0].Reason.value="";}
}
function submitApplicant(){
var str_text = "";
var proceed = true;
var err_text ="Please do not leave blank fields";
var field_empty = false;
var post_applied = document.getElementById('PostApplied').value.trim();
var last_name = document.getElementById('LastName').value.trim();
var first_name = document.getElementById('FirstName').value.trim();
var middle = document.getElementById('MiddleInitial').value.trim();
var email = document.getElementById('Email').value.trim();
var ssno = document.getElementById('SSNo').value.trim();
var address = document.getElementById('Address').value.trim();
var city = document.getElementById('City').value.trim();
var zipcode = document.getElementById('ZipCode').value.trim();
var contact_name = document.getElementById('ContactName').value.trim();
var contact_rel = document.getElementById('ContactRelationship').value.trim();
var contact_rel_no = document.getElementById('ContactNo').value.trim();
field_empty = (post_applied=="" || last_name=="" || first_name=="" || middle=="" || ssno=="" || address=="" || city=="" || 
			   zipcode=="" || contact_name=="" || contact_rel=="" || contact_rel_no=="" || email=="");

//Personal Information
if (field_empty){alert("Personal Information\n\nPlease do not leave the required fields empty.");return false;}
//verify email
if (!checkEmail(email)) {alert("Personal Information\n\nPlease specify a valid email address.");return false;}

//Legal Information
/*Over18,USCitizen,WithCar,Felony,Lawsuit,Fidelity,Reason*/
var over18 = document.forms[0].Over18;
var us_citizen = document.forms[0].USCitizen;
var with_car = document.forms[0].WithCar;
var felony = document.forms[0].Felony;
var lawsuit = document.forms[0].Lawsuit;
var fidelity = document.forms[0].Fidelity;
var reason = document.forms[0].Reason;

var bln_over18 = false;
var bln_us_citizen = false;
var bln_with_car = false;
var bln_felony = false;
var bln_lawsuit = false;
var bln_fidelity = false;

bln_over18 = (over18[0].checked || over18[1].checked);
bln_us_citizen = (us_citizen[0].checked || us_citizen[1].checked);
bln_with_car = (with_car[0].checked || with_car[1].checked);
bln_felony = (felony[0].checked || felony[1].checked);
bln_lawsuit = (lawsuit[0].checked || lawsuit[1].checked);
bln_fidelity = (fidelity[0].checked || fidelity[1].checked);

var err_str = "";
if (!bln_over18) {err_str= "Are you over 18 years of age?\n";}
if (!bln_us_citizen) {err_str+= "Are you a U.S. Citizen?\n";}
if (!bln_with_car) {err_str+= "Do you have a car available?\n";}
if (!bln_felony) {err_str+= "Have you ever been convicted of a felony?\n";}
if (!bln_lawsuit) {err_str+= "Have you ever been a defendant in a malpractice lawsuit?\n";}
if (!bln_fidelity) {err_str+= "Have you ever been denied Fidelity coverage?\n";}

if (err_str!="") {alert("Legal Information\n\n" + err_str);return false;}
//check if with car and details not specified

var driver_no = document.getElementById('DriverLicenseNo').value.trim();
var driver_state = document.getElementById('USState').value.trim();
var driver_expdate = document.getElementById('DriverExpDate').value.trim();
var field_not_empty = false;
field_not_empty = (with_car[0].checked && (driver_no=="" || driver_state=="" || driver_expdate==""));
if (field_not_empty) {alert("Legal Information\n\nPlease specify your driver's license no., state it was issued and the expiry date.");return false;}
if (field_not_empty && !checkDate(driver_expdate)){alert("Legal Information\n\nPlease specify a valid expiry date.");return false;}

//check reason if bln_felony=true or bln_lawsuit=true or bln_fidelity=true
field_not_empty = false;
field_not_empty = (bln_felony || bln_lawsuit || bln_fidelity);
field_not_empty = (field_not_empty && reason=="");
if (field_not_empty) {alert("Legal Information\n\nPlease state your reason");return false;}

//License Information
/*NameLicense,selLicenseType,LicenseNo,StateIssued,LicenseExpDate,Insurance,LicenseExpDate,InsuranceCarrier,Liability*/
var license = document.getElementById('NameLicense').value.trim();
var license_type = document.getElementById('selLicenseType').value.trim();
var license_no = document.getElementById('LicenseNo').value.trim();
var state_issued = document.getElementById('StateIssued').value.trim();
var license_expdate = document.getElementById('LicenseExpDate').value.trim();
var insurance = document.forms[0].Insurance;
var insurance_expdate = document.getElementById('InsuranceExpDate').value.trim();
var insurance_carrier = document.getElementById('InsuranceCarrier').value.trim();
var liability = document.getElementById('Liability').value.trim();

field_empty = (license=="" || license_type=="" || license_no=="" || state_issued=="" || license_expdate=="");
if (field_empty){alert("License Information\n\nPlease do not leave the required fields empty.");return false;}
err_str = "";
if (!checkDate(license_expdate)){err_str = "Please specify a valid license expiry date.\n";}

var bln_insurance = (insurance[0].checked || insurance[1].checked);
if (!bln_insurance){err_str+="Professional Liability Insurance Carrier?\n";}

if (err_str!=""){alert("License Information\n\n" + err_str);return false;}

field_empty = (insurance[0].checked && (insurance_expdate=="" || insurance_carrier=="" || liability==""));
if (field_empty){alert("License Information\n\nPlease do not leave the required fields empty.");return false;}



return true;
}

function checkEmail( strValue) {
var objRegExp  = /^[a-z0-9]([a-z0-9_\-\.]*)@([a-z0-9_\-\.]*)(\.[a-z]{2,3}(\.[a-z]{2}){0,2})$/i;
  return objRegExp.test(strValue);
}

function checkDate( strValue ) {

/************************************************

DESCRIPTION: Validates that a string contains only 

    valid dates with 2 digit month, 2 digit day, 

    4 digit year. Date separator can be ., -, or /.

    Uses combination of regular expressions and 

    string parsing to validate date.

    Ex. mm/dd/yyyy or mm-dd-yyyy or mm.dd.yyyy

    

PARAMETERS:

   strValue - String to be tested for validity

   

RETURNS:

   True if valid, otherwise false.

   

REMARKS:

   Avoids some of the limitations of the Date.parse()

   method such as the date separator character.

*************************************************/

  var objRegExp = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/

 

  //check to see if in correct format

  if(!objRegExp.test(strValue))

    return false; //doesn't match pattern, bad date

  else{

    var arrayDate = strValue.split(RegExp.$1); //split date into month, day, year

	var intDay = parseInt(arrayDate[1],10); 

	var intYear = parseInt(arrayDate[2],10);

    var intMonth = parseInt(arrayDate[0],10);

	

	//check for valid month

	if(intMonth > 12 || intMonth < 1) {

		return false;

	}

	

    //create a lookup for months not equal to Feb.

    var arrayLookup = { '01' : 31,'03' : 31, '04' : 30,'05' : 31,'06' : 30,'07' : 31,

                        '08' : 31,'09' : 30,'10' : 31,'11' : 30,'12' : 31}

  

    //check if month value and day value agree

    if(arrayLookup[arrayDate[0]] != null) {

      if(intDay <= arrayLookup[arrayDate[0]] && intDay != 0)

        return true; //found in lookup table, good date

    }

		

    //check for February

	var booLeapYear = (intYear % 4 == 0 && (intYear % 100 != 0 || intYear % 400 == 0));

    if( ((booLeapYear && intDay <= 29) || (!booLeapYear && intDay <=28)) && intDay !=0)

      return true; //Feb. had valid number of days

  }

  return false; //any other values, bad date

}



