/*--------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
}


