/* 
Usage: Using the onchange event, use onchange="return MonetaryValidator(form.name, this.name,
this.value)"
*/ 


// This trims out spacebars, returns, etc. for required fields ..
// at the local JS level, syntax RequiredValidator('main', 'fieldname' , document.main.fieldname.value);
function RequiredValidator(frm,f,v) {


var errflag = 0;
var errmsg = '';
// trims the entry
TrimAll(frm,f,v);

if (document.forms[frm].elements[f].value.length == 0)	
	{
	errmsg += "- This field is required\n";
	errflag = 1;
	}

if (errflag == 1)
	{
	alert (errmsg);
       	document.forms[frm].elements[f].focus();
		// document.forms[frm].elements[f].value = '';
	return false;
	}		

}

function AlphaNumericValidator(frm,f,v) {

// trims the entry
TrimAll(frm,f,v);

var firstcharacter = document.forms[frm].elements[f].value.substring(0,1).toUpperCase();
var remainingcharacters = (document.forms[frm].elements[f].value.substring(1,30));
			
document.forms[frm].elements[f].value = firstcharacter + remainingcharacters;

}

function TelephoneNumberValidator(frm,f,v) {

// trims the entry
TrimAll(frm,f,v);


var errmsg = "Numeric entry\n";
var errflag = 0;

	var valid="1234567890. -()";
	for (var i=0; i < document.forms[frm].elements[f].value.length; i++) 
	
		{
        if (valid.indexOf(document.forms[frm].elements[f].value.charAt(i)) < 0) 
			{
			errmsg = "- Numeric values, hyphens, enclosures only\n";
			errflag = 1;
			break;
			}
         }
	
	if (errflag == 1)
		{
		alert (errmsg);
        document.forms[frm].elements[f].value = substring.document.forms[frm].elements[f].value(0,document.forms[frm].elements[f].value.length-2);
		document.forms[frm].elements[f].focus();
		return false;
		}			
	
}
	


function AreaCodeValidator(frm,f,v) {	 

// trims the entry
TrimAll(frm,f,v);

var errmsg = "Area Code\n";
var errflag = 0;


// AC number only check
var valid="1234567890";
	for (var i=0; i<document.forms[frm].elements[f].value.length; i++) 
		{
        if (valid.indexOf(document.forms[frm].elements[f].value.charAt(i)) < 0) 
			{
			errmsg += "- Area code in numeric values only\n";
			errflag = 1;
			break;
			}
         }		 
		 
	if (document.forms[frm].elements[f].value.length == 0)		 
		{
		return true;
		}
		 
	if (document.forms[frm].elements[f].value.length != 3)
		{
		errmsg += "- Area code in the US must be 3 characters\n";
		errflag = 1;
		}
	

	if (errflag == 1)
		{
		alert (errmsg);
        document.forms[frm].elements[f].focus();
		// document.forms[frm].elements[f].value = '';
		return false;
		}		 
		 
}


function ZipCodeValidator(frm,f,field) {

// trims the entry
TrimAll(frm,f,v);

var valid = "0123456789-";
var hyphencount = 0;

if (field.length!=5 && field.length!=10) 
	{
	alert("Please enter your 5 digit or 5 digit+4 zip code.");
	return false;
	}

for (var i=0; i < field.length; i++) 
	{
	temp = "" + field.substring(i, i+1);
	if (temp == "-") hyphencount++;
	if (valid.indexOf(temp) == "-1") 
		{
		alert("Invalid characters in your zip code. Please try again.");
		return false;
		}
	if ((hyphencount > 1) || ((field.length==10) && ""+field.charAt(5)!="-")) 
		{
		alert("The hyphen character should be used with a properly formatted 5 digit+four zip code, like '12345-6789'. Please try again.");
		return false;
		}

}
return true;
}


function AlphaValidator(frm,f,v) {

// trims the entry
TrimAll(frm,f,v);

document.forms[frm].elements[f].value = v.toUpperCase();

var errmsg = "Alphabetic entry\n";
var errflag = 0;

	var valid="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	for (var i=0; i < document.forms[frm].elements[f].value.length; i++) 
	
		{
        if (valid.indexOf(document.forms[frm].elements[f].value.charAt(i)) < 0) 
			{
			errmsg = "- Alphabetic characters only\n";
			errflag = 1;
			break;
			}
         }
	
	if (errflag == 1)
		{
		alert (errmsg);
        document.forms[frm].elements[f].focus();
		// document.forms[frm].elements[f].value = '';
		return false;
		}			
	
}


function StateValidator(frm,f,v) {

// trims the entry
TrimAll(frm,f,v);


var errmsg = "Alphabetic entry\n";
var errflag = 0;

	

	var valid="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	for (var i=0; i < document.forms[frm].elements[f].value.length; i++) 
	
		{
        if (valid.indexOf(document.forms[frm].elements[f].value.charAt(i)) < 0) 
			{
			errmsg = "- Alphabetic characters only\n";
			errflag = 1;
			break;
			}
         }
	
	if (errflag == 1)
		{
		alert (errmsg);
        document.forms[frm].elements[f].focus();
		// document.forms[frm].elements[f].value = '';
		return false;
		}			
	
}



function NumericValidator(frm,f,v) {

// trims the entry
TrimAll(frm,f,v);


var errmsg = "Numeric entry\n";
var errflag = 0;

	var valid="1234567890. ";
	for (var i=0; i < document.forms[frm].elements[f].value.length; i++) 
	
		{
        if (valid.indexOf(document.forms[frm].elements[f].value.charAt(i)) < 0) 
			{
			errmsg = "- Numeric values only - no negatives\n";
			errflag = 1;
			break;
			}
         }
	
	if (errflag == 1)
		{
		alert (errmsg);
        document.forms[frm].elements[f].value = substring.document.forms[frm].elements[f].value(0,document.forms[frm].elements[f].value.length-2);
		document.forms[frm].elements[f].focus();
		return false;
		}			
	
}


function IntegerValidator(frm,f,v) {

// trims the entry
TrimAll(frm,f,v);


var errmsg = "Numeric entry\n";
var errflag = 0;

	var valid="1234567890-";
	for (var i=0; i < document.forms[frm].elements[f].value.length; i++) 
	
		{
        if (valid.indexOf(document.forms[frm].elements[f].value.charAt(i)) < 0) 
			{
			errmsg = "- Integer values +/- only\n";
			errflag = 1;
			break;
			}
         }
	
	if (errflag == 1)
		{
		alert (errmsg);
        document.forms[frm].elements[f].focus();
		// document.forms[frm].elements[f].value = '';
		return false;
		}			
	
}


function MonetaryValidator(frm,f,v) {

// trims the entry
TrimAll(frm,f,v);

var errmsg = "Monetary entry\n";
var errflag = 0;

	var valid="1234567890.,$";
	for (var i=0; i < document.forms[frm].elements[f].value.length; i++) 
	
		{
        if (valid.indexOf(document.forms[frm].elements[f].value.charAt(i)) < 0) 
			{
			errmsg = "- Monetary values only\n";
			errflag = 1;
			break;
			}
         }
	
	if (errflag == 1)
		{
		alert (errmsg);
        document.forms[frm].elements[f].focus();
		// document.forms[frm].elements[f].value = '';
		return false;
		}			
	
}

function SSNValidator(frm,f,v) {

// trims the entry
TrimAll(frm,f,v);

var errmsg = "SSN entry\n";
var errflag = 0;

	var valid="1234567890";
	for (var i=0; i<document.forms[frm].elements[f].value.length; i++) 
	
		{
        if (valid.indexOf(document.forms[frm].elements[f].value.charAt(i)) < 0) 
			{
			errmsg = "- Numeric values only\n";
			errflag = 1;
			break;
			}
         }
	
	
	if(document.forms[frm].elements[f].value.length < 9)
		{
		errmsg = "- SSN must be 9 digits long\n";
		errflag = 1;
		}
	
	
	if (errflag == 1)
		{
		alert (errmsg);

        document.forms[frm].elements[f].focus();
		/* document.forms[frm].elements[f].value = 
	document.forms[frm].elements[f].value.substring(0,(document.forms[frm].elements[f].value.length  -1 ) ) */;
		return false;
		}			
	
}

function EmailValidator(frm,f,v) {

var errmsg = "Email\n";
var errflag = 0;

    if (v.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
		{
        return true;
		}
    else
		{
		errmsg += "- Email format only\n";
		errflag = 1;
		}

	if (errflag == 1)
		{
		ChangeFieldBGToError(frm,f) 
		alert (errmsg);
        document.forms[frm].elements[f].focus();
		// document.forms[frm].elements[f].value = '';
		return false;
		}	

}

function WeightValidator(frm,f,v) {

// trims the entry
TrimAll(frm,f,v);


var errmsg = "Numeric entry\n";
var errflag = 0;

	var valid="1234567890.";
	for (var i=0; i < document.forms[frm].elements[f].value.length; i++) 
	
		{
        if (valid.indexOf(document.forms[frm].elements[f].value.charAt(i)) < 0) 
			{
			errmsg = "- Values in grams only (e.g., 2928.6)\n";
			errflag = 1;
			break;
			}
         }
	
	if (errflag == 1)
		{
		alert (errmsg);
        document.forms[frm].elements[f].focus();
		// document.forms[frm].elements[f].value = '';
		return false;
		}			
	
}


function VolumeValidator(frm,f,v) {

// trims the entry
TrimAll(frm,f,v);


var errmsg = "Numeric entry\n";
var errflag = 0;

	var valid="1234567890";
	for (var i=0; i < document.forms[frm].elements[f].value.length; i++) 
	
		{
        if (valid.indexOf(document.forms[frm].elements[f].value.charAt(i)) < 0) 
			{
			errmsg = "- Values in mls only (e.g., 1050)\n";
			errflag = 1;
			break;
			}
         }
	
	if (errflag == 1)
		{
		alert (errmsg);
        document.forms[frm].elements[f].focus();
		// document.forms[frm].elements[f].value = '';
		return false;
		}			
	
}

function YearValidator(frm,f,v) {

// trims the entry
TrimAll(frm,f,v);

var errmsg = "Year entry\n";
var errflag = 0;

	var valid="1234567890";
	for (var i=0; i < document.forms[frm].elements[f].value.length; i++) 
	
		{
        if (valid.indexOf(document.forms[frm].elements[f].value.charAt(i)) < 0) 
			{
			errmsg = "- 4-digit year values only\n";
			errflag = 1;
			break;
			}
         }
		 
		if (document.forms[frm].elements[f].value.length < 4)
			{
			errmsg = "- 4-digit limit\n";
			errflag = 1;
			}
			
		 
	
	if (errflag == 1)
		{
		alert (errmsg);
        document.forms[frm].elements[f].focus();
		// document.forms[frm].elements[f].value = '';
		return false;
		}			
	
}

function InitCap(frm,f,obj) {


        val = obj.value;
		// trim function does not work for this function		
        newVal = '';
        val = val.split(' ');
        for(var c=0; c < val.length; c++) 
			{
         newVal += val[c].substring(0,1).toUpperCase() + val[c].substring(1,val[c].length) + ' ';
        	}
			
	    // this will get rid of leading spaces 
    	while (newVal.substring(0,1) == ' ') 
        	newVal = newVal.substring(1, newVal.length);

	    // this will get rid of trailing spaces 
    	while (newVal.substring(newVal.length-1,newVal.length) == ' ')
        	newVal = newVal.substring(0, newVal.length-1);
			
        obj.value = newVal;
		
}
// onchange="return InitCap(form.name,this.name,this)" -- use 'this' for value

function InitCapFirstWordOnly(frm,f,v) {

// trims the entry
TrimAll(frm,f,v);

document.forms[frm].elements[f].value = v.substring(0,1).toUpperCase()+v.substring(1,this.v.length);


}

function DecimalValidator(frm,f,v) {

// trims the entry
TrimAll(frm,f,v);

decallowed = 2;  // how many decimals are allowed?

// if (isNaN(value) || value == "") 
if (isNaN(value)) 
	{
	alert("- Number (with decimal acceptable) only");
	document.forms[frm].elements[f].focus();
	return false;
	}
else
	{
	if (value.indexOf('.') == -1) value += ".";
	dectext = value.substring(value.indexOf('.')+1, value.length);

	if (dectext.length > decallowed)
		{
		alert ("- Please enter a number with up to " + decallowed + " decimal places.");
		document.forms[frm].elements[f].focus();
		return false;
		}
	else 
		{

    	}	
   }
}


function DecimalValidator3(frm,f,v) {


// trims the entry
TrimAll(frm,f,v);

decallowed = 3;  // how many decimals are allowed?

// if (isNaN(value) || value == "") 
if (isNaN(value)) 
	{
	alert("- Number (with decimal acceptable) only");
	document.forms[frm].elements[f].focus();
	return false;
	}
else
	{
	if (value.indexOf('.') == -1) value += ".";
	dectext = value.substring(value.indexOf('.')+1, value.length);
		
	if (dectext.length > decallowed)
		{
		alert ("- Please enter a number with up to " + decallowed + " decimal places.");
		document.forms[frm].elements[f].focus();
		return false;
		}
	else 
		{

    	}	
   }
}


function DecimalValidator4(frm,f,v) {


// trims the entry
TrimAll(frm,f,v);

decallowed = 4;  // how many decimals are allowed?

// if (isNaN(value) || value == "") 
if (isNaN(value)) 
	{
	alert("- Number (with decimal acceptable) only");
	document.forms[frm].elements[f].focus();
	return false;
	}
else
	{
	if (value.indexOf('.') == -1) value += ".";
	dectext = value.substring(value.indexOf('.')+1, value.length);
		
	if (dectext.length > decallowed)
		{
		alert ("- Please enter a number with up to " + decallowed + " decimal places.");
		document.forms[frm].elements[f].focus();
		return false;
		}
	else 
		{

    	}	
   }
}


function TrimAll(frm,f,v) { 

	    // this will get rid of leading spaces 
    	while (v.substring(0,1) == ' ') 
        	v = v.substring(1,v.length);

	    // this will get rid of trailing spaces 
    	while (v.substring(v.length-1,v.length) == ' ')
        	v = v.substring(0,v.length-1);
			
		document.forms[frm].elements[f].value = v;
}


function ChangeFieldBGToError(f,n) {

	document.forms[f].elements[n].style.backgroundColor = 'FF4444';
	
} 

function ChangeFieldBGToEntered(f,n) {
	document.forms[f].elements[n].style.backgroundColor = 'dddddd';
	
} 

function ChangeFieldBGToRequired(f,n) {
	document.forms[f].elements[n].style.backgroundColor = 'ddffff';
	
} 

function ChangeFieldBGToReset(f,n) {
	document.forms[f].elements[n].style.backgroundColor = 'eeeeee';
	
} 

function ChangeFieldBGToConfirmed(f,n) {
	document.forms[f].elements[n].style.backgroundColor = 'aacccc';
	
} 

