var engineKeys = new Array();
var displayKeys = new Array();
var engineScrubs = new Array();

engineKeys[0] = 'FirstName';
displayKeys[0] = 'First name';
engineScrubs[0] = 'FirstName';

engineKeys[1] = 'LastName';
displayKeys[1] = 'Last name';
engineScrubs[1] = 'LastName';

engineKeys[2] = 'Email';
displayKeys[2] = 'Email address';
engineScrubs[2] = 'Email';

engineKeys[3] = 'PhoneArea';
displayKeys[3] = 'Home phone area code';
engineScrubs[3] = 'Numeric|Min=3|Max=3';

engineKeys[4] = 'Phone';
displayKeys[4] = 'Home phone';
engineScrubs[4] = 'Phone';

engineKeys[5] = 'Address';
displayKeys[5] = 'Mailing Address';
engineScrubs[5] = 'Address|AlphaNumeric';

engineKeys[6] = 'City';
displayKeys[6] = 'City';
engineScrubs[6] = 'Alpha|Max=29';

engineKeys[7] = 'State';
displayKeys[7] = 'State';
engineScrubs[7] = 'Alpha';

engineKeys[8] = 'Zip';
displayKeys[8] = 'Zip Code';
engineScrubs[8] = 'Numeric|Min=5|Max=5';

engineKeys[9] = 'Coverage_Amnt';
displayKeys[9] = 'Coverage Amount';
engineScrubs[9] = 'Coverage_Amnt';

engineKeys[10] = 'Gender';
displayKeys[10] = 'Gender';
engineScrubs[10] = 'Gender';

engineKeys[11] = 'HeightFeet';
displayKeys[11] = 'Height (feet)';
engineScrubs[11] = 'Numeric|Max=4';

engineKeys[12] = 'HeightInches';
displayKeys[12] = 'Height (inches)';
engineScrubs[12] = 'Numeric|Max=2';

engineKeys[13] = 'weight';
displayKeys[13] = 'weight';
engineScrubs[13] = 'weight';

engineKeys[14] = 'dobMonth';
displayKeys[14] = 'Month of Birth';
engineScrubs[14] = 'dobMonth';

engineKeys[15] = 'dobDay';
displayKeys[15] = 'Day of Birth';
engineScrubs[15] = 'dobDay';

engineKeys[16] = 'dobYear';
displayKeys[16] = 'Year of Birth';
engineScrubs[16] = 'dobYear';

engineKeys[17] = 'tobaccoUsage';
displayKeys[17] = 'Tobacco Usage';
engineScrubs[17] = 'tobaccoUsage';

var errmsg="";
var errcount=0;

/******************************************************************

<input type=text maxlength=30 name=mail_addr_1 value="">
<input type=hidden name=js_mail_addr_1 value="AlphaNumeric|Max=256">

<input type=text maxlength=30 name=property_value value="">
<input type=hidden name=js_property_value value="Numeric|Max=12|GT=100000">

******************************************************************/

function getDisplayKey( engineKey ) {
	for (var i=0; i<displayKeys.length; i++) {
		if (displayKeys[i] == engineKey) {
			return displayKey[i];
		}
	}
}

function validateForm( formName ) {
	errmsg = "Please correct all errors before continuing: \n\n";
	var errors=0;

	var Alpha = /^[a-zA-Z\s\.\-\'\,\xC0-\xFF]+$/;
	var AlphaOnly = /^[a-zA-Z]+$/;
	var Numeric = /^\d+$/;
	var AlphaNumeric = /^[a-zA-Z0-9\s\.\-\'\,\#]+$/;
	var Email = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;

	for (var i=0; i<document.forms[formName].length; i++) {
		for (var e=0; e<engineKeys.length; e++) {
			var key = document.forms[formName].elements[i].name;
			var val = document.forms[formName].elements[i].value;
			var val_max = val;
			val = val.replace(/\s/g,''); // BUG 5057, 4884 -> delete all spaces before validating / checking the length
			var js_key = "js_" + key;
			var js_val = "";
			if (document.forms[formName].elements[js_key] != null) {
				js_val = document.forms[formName].elements[js_key].value;
			}

			if (key == engineKeys[e]) {

				var scrubVal = "";
				if (js_val == "" || js_val == null) {
					scrubVal = engineScrubs[e].split('|');
				} else {
					scrubVal = js_val.split('|');
				}

				var s=0;
				for (s=0; s<scrubVal.length; s++) {
					var scrub = "";
					var arg = "";
					if ( scrubVal[s].indexOf('=') ) {
						var tmp = scrubVal[s].split('=');
						scrub = tmp[0];
						arg = tmp[1];
					} else {
						scrub = scrubVal[s];
					}

					switch ( scrub.toLowerCase() ) {
						case 'alpha':
							if (val != null && val.match( Alpha ) == null) {
								errmsg += displayKeys[e] + " contains non-valid characters.\n";
								errors++;
							}
							break;
						case 'alphaonly':
							if (val != null && val.match( AlphaOnly ) == null) {
								errmsg += displayKeys[e] + " contains non-valid characters.\n";
								errors++;
							}
							break;
						case 'numeric':
							if (val != null && val.match( Numeric ) == null) {
								errmsg += displayKeys[e] + " must be only numbers (NO $,%.).\n";
								errors++;
							}
							break;
						case 'alphanumeric':
							if (val != null && val.match( AlphaNumeric ) == null) {
								errmsg += displayKeys[e] + " contains non-valid characters.\n";
								errors++;
							}
							break;
						case 'email':
							if (val != null && val.match( Email ) == null) {
								errmsg += displayKeys[e] + " contains non-valid characters.\n";
								errors++;
							}
							break;
						case 'min':
							if (val != null && val.length < arg) {
								errmsg += displayKeys[e] + " cannot be less than " + arg + " characters.\n";
								errors++;
							}
							break;
						case 'max':
							if (val != null && val_max.length > arg) {
								errmsg += displayKeys[e] + " cannot be more than " + arg + " characters.\n";
								errors++;
							}
							break;
						case 'gt':
							if (val != null && val <= arg) {
								errmsg += displayKeys[e] + " must be greater than " + arg + ".\n";
								errors++;
							}
							break;
						case 'lt':
							if (val != null && val >= arg) {
								errmsg += displayKeys[e] + " must be less than " + arg + ".\n";
								errors++;
							}
							break;
						case 'optional':
							// do nothing its optional
							break;
						default:
							if (val == null || val == "") {
								errmsg += displayKeys[e] + " is a required field.\n";
								errors++;
							}
							break;
					}
				}
			}
		} // form loop
	} // engineKeys loop

	if (errors <= 0) {
			try {
				cst = "document."+formName+".CID.value";

				if( getQueryValue("CID") && getQueryValue("CID") != "undefined" ) eval(cst+" = getQueryValue('CID')");
				if( getQueryValue("SID") && getQueryValue("SID") != "undefined" ) addHidden( getQueryValue("SID") );
				if( getQueryValue("ADTID") && getQueryValue("ADTID") != "undefined" ) addHidden( getQueryValue("ADTID") );
				if( getQueryValue("HSID") && getQueryValue("HSID") != "undefined" ) addHidden( getQueryValue("HSID") );
				if( getQueryValue("TID") && getQueryValue("TID") != "undefined" ) addHidden( getQueryValue("TID") );
				if( getQueryValue("CRID") && getQueryValue("CRID") != "undefined" ) addHidden( getQueryValue("CRID") );
				if( getQueryValue("TEST") && getQueryValue("TEST") != "undefined" ) addHidden( getQueryValue("TEST") );
			} catch( $emsg ) {
				//this didn't work, oh well!
			}
			// This block disables the submit button
			if (document.all || document.getElementById) {
				var allinputs = document.getElementsByTagName("input");
				for (i = 0; i < allinputs.length; i++) {
					var tempobj = allinputs[i];
					if ((tempobj.type.toLowerCase() == "submit") && (document.forms[formName].contains(tempobj)) ) {
						tempobj.disabled = true;
					} else if ((tempobj.type.toLowerCase() == "image") && (document.forms[formName].contains(tempobj)) ) {
						tempobj.disabled = true;
						tempobj.style.filter = "progid:DXImageTransform.Microsoft.BasicImage(grayscale=1, xray=0, mirror=0, invert=1, opacity=0.5, rotation=0);"
					}
				}
			}

		return true;
	}

	alert(errmsg);
	if (document.all) {
		if (errmsg != null && document.all.item("error") != null) {
			document.all.item("error").innerText = errmsg;
		}
	} else {
		if (errmsg != null && document.getElementById('error') != null) {
			if (document.getElementById('error').childNodes[0] == null) {
				var textNode = document.createTextNode(errmsg);
				document.getElementById('error').appendChild(textNode);
			} else {
				document.getElementById('error').childNodes[0].nodeValue = errmsg;
			}
		}

	}
	errcount = errors;
	return false;
}
 

