var sAreaCodes = "|201|202|203|205|206|207|208|209|210|212|213|214|215|216|217|218|219|225|228|229|231|248|251|252|253|254|256|260|262|270|276|281|301|302|303|304|305|307|308|309|310|312|313|314|315|316|317|318|319|320|321|323|330|334|336|337|352|360|361|386|401|402|404|405|406|407|408|409|410|412|413|414|415|417|419|423|425|434|435|440|478|480|501|502|503|504|505|507|508|509|510|512|513|515|516|517|518|520|530|540|541|559|561|562|563|570|573|574|580|585|586|601|602|603|605|606|607|608|609|610|612|614|615|616|617|618|619|620|623|626|630|631|636|641|650|651|660|661|662|701|702|703|704|706|707|708|712|713|714|715|716|717|718|719|724|727|731|732|734|740|757|760|763|765|770|773|775|781|785|801|802|803|804|805|806|808|810|812|813|814|815|816|817|818|828|830|831|843|845|847|850|856|858|859|860|863|864|865|870|901|903|904|906|907|908|909|910|912|913|914|915|916|918|919|920|925|928|931|936|937|940|941|949|952|954|956|970|972|973|978|979|985|989|"
var sBadWords = "qjtt,gvdl,dvou,dpdltvdlfs,npuifsgvdlfs,ujut,bttipmf,qfojt,csfbtu,ejdlifbe,cbtubse"

var aBadWords = decodeWords(sBadWords).split(",");

window.onError = handleError;

function handleError(sError, sURL, nLineNum) {
	alert("Error:" + sError + " at line " + nLineNum);
	return false;
}


function decodeWords(sWords) {
	var i;
	var nCharCode;
	var sReturn = "";

	for (i=0; i<sWords.length; ++i)
	{	if (sWords.charAt(i) != ",") {
			nCharCode = sWords.charCodeAt(i) - 1;
			sReturn += unescape('%' + nCharCode.toString(16));
		}
		else
			sReturn += sWords.charAt(i);
	}

	return sReturn;
}

var dtCh= "/";
var minYear=1900;
var maxYear=3000;

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){
        // Check that current character is number.
        var c = s.charAt(i);
        if ((c < "0") || (c > "9")) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

// Validate a phone number
// Expects a phone number. Makes sure the user doesn't just enter sequential numbers or identical characters
function checkPhone(phonenumber, lblPhone){
	var lastpart=phonenumber.substring(0,10);
	var sample=lastpart.substring(0,1);
	var sPhone = stripCharsInBag(phonenumber, "-");


	if (sPhone.length == 0)
		return true;

	if (sPhone.length < 10)
	{	alert("Please enter a valid 10 digit " + lblPhone + " Phone Number.");
		return false;
	}

	if ((sPhone=="0123456789") || (sPhone=="1234567890"))
	{
		alert("Please enter valid "+ lblPhone +" Phone Number.0123456789 and 1234567890 not allowed");
		return false;
	}
	else if (!isInteger(sPhone)) {
		alert("Please use only numbers in " + lblPhone + " Phone");
		return false;
	}
	else if (sAreaCodes.indexOf(phonenumber.substring(0,3)) < 1) {
		alert("Please enter valid "+ lblPhone +" Phone Area code.");
		return false;
	}
	else if (phonenumber.substring(3,6) == "555") {
		alert("Please enter valid "+ lblPhone +" Phone Number. Invalid Due To The 555 Exchange");
		return false;
	}
	else {
		for(i=1;i<lastpart.length;i++)
		{
			if ((lastpart.substring(i,i+1))!=sample) return true;
		}
		alert("Please enter valid "+ lblPhone +" Phone Number")
		return false;
	}
	return true;
}

function isValidEmail (strEmail) {
	return (strEmail.match(/^[^\/\#\,\^\*\\]+\@([A-Za-z0-9\-]{1,}\.)+([A-Za-z]{2,3})$/) ? true:false);
}

// Verify required fields
function validate(objForm) {
	var nOpt;
   var isSelected = ""
   var objForm = document.formStep1;
   var sErrorMsg = "";

	if (!isFieldValid(objForm.RequestedAmount, 1, "Loan Amount"))
		return false;

	if (!isFieldValid(objForm.FNAME, 1, "First Name"))
		return false;

	if (!isFieldValid(objForm.LNAME, 1, "Last Name"))
		return false;

	if (!isFieldValid(objForm.STATE, 1, "State"))
		return false;

	if (!isFieldValid(objForm.ADDR, 1, "Street Address"))
		return false;

	if (!isFieldValid(objForm.CITY, 1, "City"))
		return false;

	if (!isFieldValid(objForm.ZIP, 5, "Zip"))
		return false;

	if (!isFieldValid(objForm.TIME_AT_CURRENT_HOME, 1, "Length at address"))
		return false;

	if (!isFieldValid(objForm.RENT_OWN, 1, "Rent or Own"))
		return false;

	if (!isFieldValid(objForm.PREF_CALLTIME, 1, "Best contact time"))
		return false;

	if(isValidEmail(objForm.EMAIL.value) == false) {
		objForm.EMAIL.focus();
		alert ("Please enter a valid Email address.")
		return false;
	}

	if (!isFieldValid(objForm.DRIVER, 1, "Driver License"))
		return false;
	if (!isFieldValid(objForm.DRIV_LIC_STATE, 1, "Issuing State"))
		return false;

	var strWorkPhone = objForm.WORK_PHONE_0.value + objForm.WORK_PHONE_1.value + objForm.WORK_PHONE_2.value;
	var strHomePhone = objForm.PRI_PHONE_0.value + objForm.PRI_PHONE_1.value + objForm.PRI_PHONE_2.value;

	if ((strWorkPhone.length == 0) && (strHomePhone.length == 0)) {
		objForm.PRI_PHONE_0.focus();
		alert ("Please enter at least one phone number.")
		return false;
	}
	if (checkPhone(strWorkPhone, "Work")==false) {
		objForm.WORK_PHONE_0.focus();
		return false;
	}
	if (checkPhone(strHomePhone, "Primary")==false) {
		objForm.PRI_PHONE_0.focus();
		return false;
	}

	if (!isFieldValid(objForm.SSN_0, 1, "SSN") || !isFieldValid(objForm.SSN_1, 1, "SSN") || !isFieldValid(objForm.SSN_2, 1, "SSN"))
		return false;
	if (!isFieldValid(objForm.DOB_d, 1, "Date of Birth") || !isFieldValid(objForm.DOB_m, 1, "Date of Birth") || !isFieldValid(objForm.DOB_y, 1, "Date of Birth"))
		return false;
	if (!isFieldValid(objForm.gender, 1, "Gender"))
		return false;

	return true;
}

function validate2(objForm) {
	var nOpt;
   var isSelected = ""
   var objForm = document.formStep1;
   var sErrorMsg = "";

//	if (!isFieldValid(objForm.RequestedAmount, 1, "Loan Amount"))
//		return false;
	return true;
}

function isFieldValid(objField, nMinLen, sFieldName) {
	var bSelectField = false

	if (objField.type == 'select-one')
		bSelectField = true;

	if ((bSelectField && objField.value < 1)
	     || objField.value.length < nMinLen) {
		objField.focus();
		if (bSelectField)
			alert("Please select a '" + sFieldName + "'");
		else
			alert("Please enter '" + sFieldName + "'");
		return false;
	}

	if (!bSelectField && findBadWord(objField.value)) {
		alert("Contents of '" + sFieldName + "' cannot be accepted");
		objField.focus();
		return false;
	}
	return true;
}

function findBadWord(sText) {
	var nIndex;

	sText = sText.toLowerCase();
	for (nIndex=0; nIndex<aBadWords.length; ++nIndex) {
		if (sText.indexOf(aBadWords[nIndex]) >= 0)
			return true;
	}

	return false;
}

function liveVal()
{
	// validation
	var FNAME_I = new LiveValidation('FNAME_I');
	FNAME_I.add( Validate.Presence );
	var LNAME_I = new LiveValidation('LNAME_I');
	LNAME_I.add( Validate.Presence );

	var RequestedAmount = new LiveValidation('RequestedAmount');
	RequestedAmount.add( Validate.Presence );
	var STATE = new LiveValidation('STATE');
	STATE.add( Validate.Presence );
	var ADDR_I = new LiveValidation('ADDR_I');
	ADDR_I.add( Validate.Presence );
	var CITY_I = new LiveValidation('CITY_I');
	CITY_I.add( Validate.Presence );
	var ZIP_I = new LiveValidation('ZIP_I');
	ZIP_I.add( Validate.Presence );
	var TIME_AT_CURRENT_HOME_ = new LiveValidation('TIME_AT_CURRENT_HOME_');
	TIME_AT_CURRENT_HOME_.add( Validate.Presence );
	var RENT_OWN = new LiveValidation('RENT_OWN');
	RENT_OWN.add( Validate.Presence );
	var PREF_CALLTIME = new LiveValidation('PREF_CALLTIME');
	PREF_CALLTIME.add( Validate.Presence );
	var EMAIL_I = new LiveValidation('EMAIL_I');
	EMAIL_I.add( Validate.Presence );
	var DRIVER_I = new LiveValidation('DRIVER_I');
	DRIVER_I.add( Validate.Presence );

	var SSN_0 = new LiveValidation('SSN_0');
	SSN_0.add( Validate.Presence );
	var SSN_1 = new LiveValidation('SSN_1');
	SSN_1.add( Validate.Presence );
	var SSN_2 = new LiveValidation('SSN_2');
	SSN_2.add( Validate.Presence );
	var gender = new LiveValidation('gender');
	gender.add( Validate.Presence );

}

function liveVal2()
{
	var URLParams = new Object() ;
	var aParams = document.location.search.substr(1).split('&') ;
	for ( i = 0 ; i < aParams.length ; i++ )
	{
		var aParam = aParams[i].split('=') ;
		var sParamName  = aParam[0] ;
		var sParamValue = unescape( aParam[1] ) ;
		URLParams[ sParamName ] = sParamValue ;
	}
	$('#FNAME').attr("value",URLParams['FNAME']);
	$('#LNAME').attr("value",URLParams['LNAME']);
	$('#STATE').attr("value",URLParams['STATE']);
	$('#ADDR').attr("value",URLParams['ADDR']);
	$('#CITY').attr("value", URLParams['CITY']);
	$('#ZIP').attr("value", URLParams['ZIP']);
	$('#TIME_AT_CURRENT_HOME').attr("value", URLParams['TIME_AT_CURRENT_HOME']);
	$('#RENT_OWN').attr("value", URLParams['RENT_OWN']);
	$('#PREF_CALLTIME').attr("value", URLParams['PREF_CALLTIME']);
	$('#EMAIL').attr("value", URLParams['EMAIL']);
	$('#DRIVER').attr("value", URLParams['DRIVER']);
	$('#DRIV_LIC_STATE').attr("value", URLParams['DRIV_LIC_STATE']);
	$('#PRI_PHONE_0').attr("value",URLParams['PRI_PHONE_0']);
	$('#PRI_PHONE_1').attr("value", URLParams['PRI_PHONE_1']);
	$('#PRI_PHONE_2').attr("value",URLParams['PRI_PHONE_2']);
	$('#WORK_PHONE_0').attr("value",URLParams['WORK_PHONE_0']);
	$('#WORK_PHONE_1').attr("value", URLParams['WORK_PHONE_1']);
	$('#WORK_PHONE_2').attr("value", URLParams['WORK_PHONE_2']);
	$('#SSN_0').attr("value", URLParams['SSN_0']);
	$('#SSN_1').attr("value", URLParams['SSN_1']);
	$('#SSN_2').attr("value", URLParams['SSN_2']);
	$('#DOB_d').attr("value", URLParams['DOB_d']);
	$('#DOB_m').attr("value", URLParams['DOB_m']);
	$('#DOB_y').attr("value", URLParams['DOB_y']);
	$('#gender').attr("value", URLParams['gender']);
	$('#active_military').attr("value", URLParams['active_military']);
	$('#RequestedAmount').attr("value", URLParams['RequestedAmount']);

	// validation
	var ENAME_I = new LiveValidation('ENAME_I');
	ENAME_I.add( Validate.Presence );
	var JTITLE_I = new LiveValidation('JTITLE_I');
	JTITLE_I.add( Validate.Presence );

	var EMPLOYMENT_YEARS = new LiveValidation('EMPLOYMENT_YEARS');
	EMPLOYMENT_YEARS.add( Validate.Presence );
	var EMPLOYMENT_MONTHS = new LiveValidation('EMPLOYMENT_MONTHS');
	EMPLOYMENT_MONTHS.add( Validate.Presence );
	var appl_emp_phone_0 = new LiveValidation('appl_emp_phone_0');
	appl_emp_phone_0.add( Validate.Presence );
	var appl_emp_phone_1 = new LiveValidation('appl_emp_phone_1');
	appl_emp_phone_1.add( Validate.Presence );
	var appl_emp_phone_2 = new LiveValidation('appl_emp_phone_2');
	appl_emp_phone_2.add( Validate.Presence );
	var PAY_FORMAT = new LiveValidation('PAY_FORMAT');
	PAY_FORMAT.add( Validate.Presence );
	var INCOME_SRC = new LiveValidation('INCOME_SRC');
	INCOME_SRC.add( Validate.Presence );
	var NET_MONTHLY_INCOME = new LiveValidation('NET_MONTHLY_INCOME');
	NET_MONTHLY_INCOME.add( Validate.Presence );
	var PAY_CYCLE = new LiveValidation('PAY_CYCLE');
	PAY_CYCLE.add( Validate.Presence );
	var NEXT_PAY_DATE = new LiveValidation('NEXT_PAY_DATE');
	NEXT_PAY_DATE.add( Validate.Presence );

	var NEXT_AFTER_NEXT_PAY_DATE = new LiveValidation('NEXT_AFTER_NEXT_PAY_DATE');
	NEXT_AFTER_NEXT_PAY_DATE.add( Validate.Presence );
	var BANK_ACCT_TYPE = new LiveValidation('BANK_ACCT_TYPE');
	BANK_ACCT_TYPE.add( Validate.Presence );
	var RNUM_I = new LiveValidation('RNUM_I');
	RNUM_I.add( Validate.Presence );
	var BNUM_I = new LiveValidation('BNUM_I');
	BNUM_I.add( Validate.Presence );

	var appl_bank_len_month = new LiveValidation('appl_bank_len_month');
	appl_bank_len_month.add( Validate.Presence );
	var appl_bank_phone_0 = new LiveValidation('appl_bank_phone_0');
	appl_bank_phone_0.add( Validate.Presence );
	var appl_bank_phone_1 = new LiveValidation('appl_bank_phone_1');
	appl_bank_phone_1.add( Validate.Presence );
	var appl_bank_phone_2 = new LiveValidation('appl_bank_phone_2');
	appl_bank_phone_2.add( Validate.Presence );
	var BNAME_I = new LiveValidation('BNAME_I');
	BNAME_I.add( Validate.Presence );

	var R1NAME_I = new LiveValidation('R1NAME_I');
	R1NAME_I.add( Validate.Presence );
	var h1ref_0 = new LiveValidation('h1ref_0');
	h1ref_0.add( Validate.Presence );
	var h1ref_1 = new LiveValidation('h1ref_1');
	h1ref_1.add( Validate.Presence );
	var h1ref_2 = new LiveValidation('h1ref_2');
	h1ref_2.add( Validate.Presence );
	var R2NAME_I = new LiveValidation('R2NAME_I');
	R2NAME_I.add( Validate.Presence );
	var h2ref_0 = new LiveValidation('h2ref_0');
	h2ref_0.add( Validate.Presence );
	var h2ref_1 = new LiveValidation('h2ref_1');
	h2ref_1.add( Validate.Presence );
	var h2ref_2 = new LiveValidation('h2ref_2');
	h2ref_2.add( Validate.Presence );
	var R2REL_I = new LiveValidation('R2REL_I');
	R2REL_I.add( Validate.Presence );
	var R1REL_I = new LiveValidation('R1REL_I');
	R1REL_I.add( Validate.Presence );
}

function addDays(myDate,days) {
    return new Date(myDate.getTime() + days*24*60*60*1000);
}

