var SAFERRORHEADING = "Important";
var SAFERRORMSG = "We need you to correct or provide more information. Please see each section marked by an error icon and follow the instructions.";
var SAFREQUIREDMSG = "Please provide ";
var SAFCHOOSEONEMSG = "Please choose one of the above options";

var MASKSPACES = /\s/g;
var MASK3DIGITS = /(^\d{3}$)/;
var MASK3DIGITSMSG = "must be 3 digits";
var MASK4DIGITS = /(^\d{4}$)/;
var MASK4DIGITSMSG = "must be 4 digits";
var MASK5DIGITS = /(^\d{5}$)/;
var MASK5DIGITSMSG = "must be 5 digits";
var MASKVALIDEMAIL = /\w[-._\w]*\w@\w[-._\w]*\w\.\w{2,3}|^\s*$/;
var MASKVALIDEMAILMSG = "is invalid";
var MASKVALIDPHONE = /^\(?[1-9]\d{2}[)-.]?\s?\d{3}[-.\s]?\d{4}$|(^\(?[1-9]\d{2}[)-.]?\s?\d{3}[-.\s]?\d{4}\s?\d{1,5}$)|^\s*$/;
var MASKVALIDPHONEMSG = "is invalid";
var MASKZIPCODE = /(^\d{5}$)/;
var MASKZIPCODEMSG = "must be 5";
var MASKVALIDDATEOFBIRTH = /^[0-1]\d(\-|\/|\.)[0-3]\d\1[1][9]\d{2}$/;
var MASKVALIDDATEOFBIRTHMSG = "is invalid";
var MASKVALIDCCNUM = /^4\d{3}-?\d{4}-?\d{4}-?\d{4}|5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}|3[4,7]\d{13}$/;
var MASKVALIDCCNUMMSG = "is invalid or not an accepted card type";


var timer = setTimeout('',2000);
var lastFieldValidated = "";
var lastFieldFocused = "";
var isValid = 0;


function validate(vFld) {
	if (document.getElementById && document.createTextNode) {
		var fld = document.getElementById(vFld);
		var e, required, requiredErr, requiredIf, requiredIfErr, masked, maskedErr, multiple, charLimited, charLimitedErr;
		message = fld.title;
		thisRadio = "";
		
		validationRules = fld.className.split(' ');
		if (fld.type == "radio") {
			defList = fld.parentNode.parentNode.parentNode;
			thisRadioId = fld.id.replace(/\d/g,'');
			elemMsg = document.getElementById(thisRadioId + "Msg");
		} else {
			defList = fld.parentNode.parentNode;
			elemMsg = document.getElementById(fld.id + "Msg");
		}
		
		for (var i = validationRules.length; i != 0; i--) {
			var vRule = validationRules[i-1];
			if (vRule == "REQUIRED") {
				required = 1;
			}
			if (vRule.indexOf("REQUIREDIF") != -1) {
				requiredIf = 1;
				requiredIfId = vRule;
			}
			if (vRule.indexOf("MASK") != -1) {
				masked = 1;
				maskMsg = eval(vRule + "MSG");
				maskrule = eval(vRule);
				var maskId = vRule;
			}
			if (vRule.indexOf("CHARLIMIT") != -1) {
				charLimited = 1;
				limit = vRule.replace('CHARLIMIT','');
			}
			if (vRule.indexOf("HAS") != -1) {
				multiple = 1;
				n = vRule.replace('HAS','');
				id = fld.id.replace(/\d/g,'');
			}
		}
		if (fld.type == "radio") {
			thisRadio = eval('fld.form.' + fld.name);
			message = thisRadio[0].title;
			if (required && !isChecked(thisRadio)) {
				requiredErr = 1;
			}
		} else if (fld.type == "text" || fld.type == "select-one" || fld.type == "textarea" || fld.type == "password" ) {
			if (required && (fld.value == "" || fld.value == null)) {
				requiredErr = 1;
			}
			if (requiredIf) {
				if (!valRequiredIf(fld.form,fld.id,requiredIfId)) {
					requiredIfErr = 1;
				}
			}
			if (charLimited && fld.value != "") {
				if (!withinCharLimit(fld.value, limit)) {
					charLimitedErr = 1;
				}
			}
			
			if (multiple) {
				for (var i = 1; i < n; i++) {
					fld.value += document.getElementById(fld.id + i).value;
				}
			}
			if (masked && !requiredErr) {
				if (!maskrule.test(fld.value)) {
					maskedErr = 1;
				} else if (maskId == "MASKZIPCODE") {
					setCookie('zip',fld.value);
				}
			}
		}
		
		if (maskedErr) {
			message = message + " " + maskMsg;
		} else if (charLimitedErr) {
			message = message + " must be less than " + n + " characters";
		} else if (requiredErr) {
			message = SAFREQUIREDMSG + message.toLowerCase();
		} else {
			message = "\u00A0";
		}
		
		if (requiredErr || requiredIfErr || charLimitedErr || maskedErr) {
			elemMsg.parentNode.className += "error";
			elemMsg.firstChild.nodeValue = message;
			e = 1;
		} else {
				elemMsg.parentNode.className = "";
				elemMsg.firstChild.nodeValue = message;
		}
		
		lastFieldValidated = vFld;
		
		if (!e) {
			return true;
		} else {
			return false;
		}
	}
}


function setSAF() {
	if (document.getElementById && document.createTextNode) {
		var fs = document.forms;
		for (var i = fs.length; i != 0; i--) {
			var thisForm = fs[i-1];
			if (thisForm.className == "saf") {
				thisForm.onsubmit = function() { return validateAll(this); }
				
				if (document.getElementById('loanamt')){
				var loanamtField = document.getElementById('loanamt');
				loanamtField.onkeypress = numberOnly;}

				if (document.getElementById('sales')){
				var salesField = document.getElementById('sales');
				salesField.onkeypress = numberOnly;}


				//var addVehicleButton = document.getElementById('addvehicle');
				//addVehicleButton.onclick = function() { addVehicle(this);return false; }
				var safFields = thisForm.elements;
				for (var j = safFields.length; j != 0; j--) {
					var thisField = safFields[j-1];
					
					if (thisField.type != "radio" && thisField.type != "text" && thisField.type != "select-one" && thisField.type !="textarea" && thisField.type != "password") continue;
					thisField.onblur = function() { setBlur(this); }
					
					if (thisField.type == "select-one") {
						thisField.onchange = function() { setBlur(this); }
					}
					
					if (thisField.type == "radio") {
						thisField.onfocus = function() {  }
						thisField.onclick = function() {  }
					} else {
						thisField.onfocus = function() {  }
					}
				}
			}
		}
	}
}

function setFocus(thisField,waitToValidate) {
	if (document.getElementById && document.createTextNode) {
		if (thisField.type == "radio") {
			var parentDL = thisField.parentNode.parentNode.parentNode.parentNode;
		} else {
			var parentDL = thisField.parentNode.parentNode;
		}
		if (parentDL.className.indexOf("focus") == -1 && parentDL.className.indexOf("error") == -1 && parentDL.className.indexOf("valid") == -1) {
			parentDL.className = "focus";
		}
		if ((waitToValidate && thisField.id.lastIndexOf("0") == -1) || (thisField.id == lastFieldValidated) || (thisField.id == lastFieldFocused)) {
			clearTimeout(timer);
		}
		lastFieldFocused = thisField.id;
	}
}
	
function setBlur(thisField) {
	if (document.getElementById && document.createTextNode) {
		timer = setTimeout("validate('" + thisField.id + "')",200);

				if (document.getElementById('loanamt')){
				var loanamt = document.getElementById('loanamt');
				loanamt.value = formatCurrency(loanamt.value);}

				if (document.getElementById('sales')){
				var sales = document.getElementById('sales');
				sales.value = formatCurrency(sales.value);}

	}
}

function validateAll(thisForm) {
	var containsErrors = 0;
	var safFields = thisForm.elements;
	for (var j = safFields.length; j != 0; j--) {
		var thisField = safFields[j-1];
		if (thisField.type != "radio" && thisField.type != "text" && thisField.type != "select-one"  && thisField.type != "textarea" && thisField.type != "password") continue;
		isValid = validate(thisField.id);
		if (validate(thisField.id) == false) {
			containsErrors = 1;
		}
	}
	if (containsErrors) {
		scrollTo(0,0);
		return false;
	}
	return true;
}

function valRequiredIf(f,fld,reqClassName,fldtype) {
	var filter = reqClassName.split('-');
	var dependantField = eval("f." + filter[1]);
	var dependantValue = filter[2];
	var actualValue;
	if (dependantField.type == "radio" || dependantField.type == "checkbox") {
		if (dependantField.checked) { 
			actualValue = dependantField.value;
		}
	} else {
		actualValue = dependantField.value;
	}
		
	if (actualValue == dependantValue || (dependantValue == "NOTNULL" && actualValue.length != 0) || (dependantValue == "NULL" && actualValue.length == 0)) {
		if (fldtype == "radio") {
    		var thisField = document.getElementById(fld + "0");
    	} else {
    		var thisField = document.getElementById(fld);
   		}
   		if (thisField.value == "" || thisField.value == null) {
			return 0;
		}
	}
	return 1;
}

function withinCharLimit(value, restriction) {
	if (value.length <= restriction) { return 1; }
	return 0;
}

function isChecked(obj) {
	for (var i = obj.length; i != 0; i--) {
		thisObj = obj[i-1];
		if (thisObj.checked) { return 1; }
	}
	return 0;
}

function formatCurrency(num)  {
				num = num.toString().replace(/\$|\,/g,'');
				if(isNaN(num))
				num = "0";
				num = Math.floor(num*100+0.50000000001);
				cents = num%100;
				num = Math.floor(num/100).toString();
				if(cents<10)
				cents = "0" + cents;
				for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
				num = num.substring(0,num.length-(4*i+3))+','+
				num.substring(num.length-(4*i+3));
				return '$' + num + '.' + cents;
}

function numberOnly(evt) {
	if (document.getElementById) {
		evt = (evt) ? evt : ((window.event) ? event : null)
		if (evt) {
			var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
			if (elem) {
				var containerEl = elem.parentNode.parentNode;
				elemMsg = document.getElementById(elem.id + "Msg");
				
				var charCode = (evt.charCode) ? evt.charCode : evt.keyCode;
				if ((charCode < 32) || 
					(charCode > 44 && charCode < 47) || 
					(charCode > 47 && charCode < 58)) {
					return true;
				} else {
					containerEl.className = "error";
					elemMsg.firstChild.nodeValue = "Please enter numbers only";
					return false;
					
				}
			}
		}
	}
}

var vehicleCount = 2;



