/*
 * Validation data types and formats 
 */
// utility & generic
var _VALIDATION_ISLOADED = true;
var _VALIDATION_SPECIALCHARS = "\"\\`\\'\\~\\^\\$\\@\\#\\&\\|\\!\\_\\;\\:\\,\\.\\?\\<\\>\\(\\)\\[\\]\\{\\}\\+\\*\\-\\/\\\\%\\=";
var _VALIDATION_NUMERIC = "0-9";
var _VALIDATION_ALPHA = "^0-9" + _VALIDATION_SPECIALCHARS + "";
var _VALIDATION_ALPHANUMERIC = "^" + _VALIDATION_SPECIALCHARS + "";
var _VALIDATION_BLANKCHARS = "\\s";

// data types
var _VALIDATION_ADDRESS = new RegExp("^([" + _VALIDATION_ALPHANUMERIC + "]|[\\#\\,\\-\\.\\' ])*$");
var _VALIDATION_MONEY = new RegExp("^[" + _VALIDATION_NUMERIC + "\\$\\,\\.]*$");
var _VALIDATION_CITY = new RegExp("^([" + _VALIDATION_ALPHA + "]|[\\- \\.\\'])*$");
var _VALIDATION_ODOMETER = new RegExp("^[" + _VALIDATION_NUMERIC + "\\,]*$");
var _VALIDATION_LATLONG = new RegExp("^[" + _VALIDATION_NUMERIC + "\\.\\-]*$");
var _VALIDATION_CREDITCARDNUMBER = new RegExp("^[" + _VALIDATION_NUMERIC + "\\- ]*$");
var _VALIDATION_ASSETNAME = new RegExp("^((.*(\\/|\\\\))?([^" + _VALIDATION_SPECIALCHARS + " ]|[\\.\\-\\_]){1,80})?$");
var _VALIDATION_LIBRARYNAME = new RegExp("^([^" + _VALIDATION_SPECIALCHARS + "]|[ \\-\\_])*$");

// data formats
var _VALIDATION_DATE_ORDER = ["m","d","y"];
var _VALIDATION_DATE_MAP = {"01":"31", "02":"28", "03":"31", "04":"30", "05":"31", "06":"30", "07":"31", "08":"31", "09":"30", "10":"31", "11":"30", "12":"31"}
var _VALIDATION_DATE_DL = "\/";
var _VALIDATION_DATE_THIRTYONEDAYS = "((0[1-9])|([12][0-9])|(3[01]))";
var _VALIDATION_DATE_THIRTYDAYS = "((0[1-9])|([12][0-9])|(30))";
var _VALIDATION_DATE_TWENTYEIGHTDAYS = "((0[1-9])|(1[0-9])|(2[0-8]))";
var _VALIDATION_DATE_TWENTYNINEDAYS = "((0[1-9])|(1[0-9])|(2[0-9]))";
var _VALIDATION_DATE_THIRTYONEDAYMONTHS = "((0[13578])|(1[02]))";
var _VALIDATION_DATE_THIRTYDAYMONTHS = "((0[469])|(11))";
var _VALIDATION_DATE_FEBRUARY = "(02)";
var _VALIDATION_DATE_ALLYEARS = "(((19)|(20))[0-9]{2})";
var _VALIDATION_DATE_LEAPYEARS = "(((19)|(20))(([02468][048])|([13579][26])))";
var _VALIDATION_DATE_NOTLEAPYEARS = "(((19)|(20))(([02468][^048])|([13579][^26])))";
var _VALIDATION_DATE = new RegExp("^((((" + _VALIDATION_DATE_THIRTYONEDAYMONTHS + _VALIDATION_DATE_DL + _VALIDATION_DATE_THIRTYONEDAYS + ")|(" + _VALIDATION_DATE_THIRTYDAYMONTHS + _VALIDATION_DATE_DL + _VALIDATION_DATE_THIRTYDAYS + "))" + _VALIDATION_DATE_DL + _VALIDATION_DATE_ALLYEARS + ")|(" + _VALIDATION_DATE_FEBRUARY + _VALIDATION_DATE_DL + "((" + _VALIDATION_DATE_TWENTYEIGHTDAYS + _VALIDATION_DATE_DL + _VALIDATION_DATE_NOTLEAPYEARS + ")|(" + _VALIDATION_DATE_TWENTYNINEDAYS + _VALIDATION_DATE_DL + _VALIDATION_DATE_LEAPYEARS + "))))?$");

var _VALIDATION_EMAIL = new RegExp("^(([^ \\/\:\\,\\!\\;\"\\'\\`]+)@([^ \\/\:\\,\\!\\;\"\\'\\`]+)\\.([^ \\/\:\\,\\!\\;\"\\'\\`]+))?$");
var _VALIDATION_URL = new RegExp("^(([" + _VALIDATION_ALPHA + "]+\\:\\/\\/)?[" + _VALIDATION_ALPHANUMERIC + "]+\\..+)?$", "i");
var _VALIDATION_PHONEFAX = new RegExp("^(\\(?[A-Z" + _VALIDATION_NUMERIC + "]{3}\\)?[\\. -]?[A-Z" + _VALIDATION_NUMERIC + "]{3}[\\. -]?[A-Z" + _VALIDATION_NUMERIC + "]{4})?$");
var _VALIDATION_NUMERIC_PHONEFAX = new RegExp("^(\\(?[" + _VALIDATION_NUMERIC + "]{3}\\)?[\\. -]?[" + _VALIDATION_NUMERIC + "]{3}[\\. -]?[" + _VALIDATION_NUMERIC + "]{4})?$");
var _VALIDATION_ZIP = new RegExp("^([" + _VALIDATION_NUMERIC + "]{5}((-| )[" + _VALIDATION_NUMERIC + "]{4})?)?$");
var _VALIDATION_SSN = new RegExp("^([" + _VALIDATION_NUMERIC + "]{3}-[" + _VALIDATION_NUMERIC + "]{2}-[" + _VALIDATION_NUMERIC + "]{4})?$");


/*
 * Error messages 
 */
var ERROR_MISSINGFORMSENDDATA = "Please submit an entry for your form data send information.";
var ERROR_BADDATA = "Incorrect entry. Please check the information you entered and try again.";
var ERROR_ENTERREQUIREDFIELDS = "Please enter all required fields.";
var ERROR_BOTHLABELANDVALUE = "Please submit an entry for both the label and value.";
var ERROR_DOWNPAYMENTTOOLARGE = "The Down Payment is larger than the Purchase Price";
var ERROR_PRIVACYPOLICYAGREE = "You must indicate agreement with the Privacy Policy.";
var ERROR_PRIVACYPOLICYSELECT = "You must select a Privacy Option.";
var ERROR_ENTERREQUIREDDATA = "Please enter valid information in the following required field{PLURAL} and resend your request.";
var ERROR_ENTERVALIDDATA = "The information entered is invalid for the following field{PLURAL}.  Please enter valid information and resend your request. ";
var ERROR_SELECTMAKEMODEL = "Please select a vehicle make and model.";
var ERROR_YELLOWFIELDS = "The yellow field(s) contain invalid data."
var NOQUOTES="Please remove all double quotes (\") or replace them with single quotes (') before continuing."
var ERROR_SELECTANOTHERFOLDER="Please select another folder as the default to disable this folder.";

/*
 * Form element values 
 */
var FORM_SELECTONE = "Select One";
var FORM_NOINVENTORY = "No Inventory Available";
var FORM_NEW = "New";
var FORM_USED = "Used";
var FORM_PREOWNED = "Pre-Owned";
var FORM_CERTIFIED = "Certified pre-owned";
var FORM_SELECTAMAKE = "Select a make";
var FORM_SELECTAMODEL = "Select a model";
var FORM_SELECTACITY = "Select a city";
var FORM_SELECTADEALER = "Select a dealer";
var INV_NOINVENTORY = "N/A";
var INV_DEFAULTTEXT = "Any";

/*
 *Inventory Search values
*/
var INV_ALLTEXT = "Any";
var INV_NOINVENTORYAVAILABLE = "No Inventory Available";
var INV_SELECTONE = "Select One";
var INV_ALLLOCATIONS = "All Locations";
var INV_ALLVEHICLETYPES = "All Types";
var INV_ALLMAKES = "All Makes";
var INV_ALLMODELS = "All Models";
var INV_ALLTRIMS = "All Trims";
var INV_MAXPRICE_PREFIX = "Up to ";
var INV_MAXODOMETER_PREFIX = "Up to ";
var INV_DISTANCELABEL = " miles";

var INV_SEARCHTYPELABEL = new Object();
INV_SEARCHTYPELABEL["new"] = "New";
INV_SEARCHTYPELABEL["used"] = "Used";
INV_SEARCHTYPELABEL["preowned"] = "Used";
INV_SEARCHTYPELABEL["certified"] = "Certified";
INV_SEARCHTYPELABEL["non-certified"] = "Non-Certified";

function getFormattedPrice(price){
	var formattedPrice = "$" + getFormattedNumber(price);
	return formattedPrice;
}
function getFormattedNumber(num){
	num = String(num);
	var formattedNum = "";
	for(var i = 1; i <= num.length; i++){
		formattedNum = num.charAt(num.length - i) + formattedNum;
		if(i % 3 == 0 && i != num.length) formattedNum = "," + formattedNum;
	}
	return formattedNum;
}

/*
 * Other random strings 
 */
var STRING_CLICKTOENLARGE = "Click to enlarge";
