/* 
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,value) {


var errflag = 0;
var errmsg = '';
// trims the entry
trim(frm,f,value);

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,value) {

// trims the entry
trim(frm,f,value);

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,value) {

// trims the entry
trim(frm,f,value);

var errmsg = "Telephone number\n";
var errflag = 0;

// format check for 10-digit area code and phone without the hyphen given by the user
// if (document.forms[frm].elements[f].value.length == 7)
	{
	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 += "- Proper area code and telephone number format is required\n(e.g., (210) 0001234, 210 0001234, 210 000-1234)\n";
			errflag = 1;
			break;
			}
         }
	}

if (document.forms[frm].elements[f].value.length < 11)
	{
	errmsg +=  "- 10-digit area code and phone number - hyphens accepted\n";
	errflag = 1;
	}
	
	
if (document.forms[frm].elements[f].value.length == 8)	
	{
   	var Prefix = document.forms[frm].elements[f].value.substring(0,3);
	var Hyphenation = document.forms[frm].elements[f].value.substring(3,4);
	var Suffix = document.forms[frm].elements[f].value.substring(4,8);
	
	var valid="1234567890";
	for (var i=0; i< Prefix.length; i++) 
		{
        if (valid.indexOf( Prefix.charAt(i)) < 0) 
			{
			errmsg += "- Telephone exchange in numeric values only\n";
			errflag = 1;
			break;
			}
         }

	if (Hyphenation != '-')
		{
		errmsg +=  "- Hyphen or no character between the telephone exchange and number\n";
		errflag = 1;
		}

	var valid="1234567890";
	for (var s=0; s< Prefix.length; s++) 
		{
        if (valid.indexOf( Prefix.charAt(s)) < 0) 
			{
			errmsg += "- Phone number in numeric values only\n";
			errflag = 1;
			break;
			}
         }

	}
	

	if (errflag == 1)
		{
		alert (errmsg);
		ChangeFieldBGToError(frm,f);		
        document.forms[frm].elements[f].focus();
		// document.forms[frm].elements[f].value = '';
		return false;
		}		
	
}

	
function DSNValidator(frm,f,value) {

// trims the entry
trim(frm,f,value);

var errmsg = "DSN\n";
var errflag = 0;

// format check for DSN 
// if (document.forms[frm].elements[f].value.length == 7)
	{
	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 += "- Proper DSN format is required (e.g., 240-1234)\n";
			errflag = 1;
			break;
			}
         }
	}


	if (errflag == 1)
		{
		alert (errmsg);
        document.forms[frm].elements[f].focus();
		// document.forms[frm].elements[f].value = '';
		return false;
		}		
	
}

function AreaCodeValidator(frm,f,value) {	 

// trims the entry
trim(frm,f,value);

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
trim(frm,f,value);

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,value) {

// trims the entry
trim(frm,f,value);


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,value) {

// trims the entry
trim(frm,f,value);


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].focus();
		// document.forms[frm].elements[f].value = '';
		return false;
		}			
	
}


function AddressValidator(frm,f,value) {

// trims the entry
trim(frm,f,value);


var errmsg = "Alphabetic entry\n";
var errflag = 0;

	var valid="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890-/ ";
	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 = "- Alphanumeric characters only (hyphen and slash accepted)\n";
			errflag = 1;
			break;
			}
         }
	
	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) );

		return false;
		}
			
	
}

function IntegerValidator(frm,f,value) {

// trims the entry
trim(frm,f,value);


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,value) {

// trims the entry
trim(frm,f,value);

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,value) {

// trims the entry
trim(frm,f,value);

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,value) {

// trims the entry
trim(frm,f,value);

var errmsg = "Email\n";
var errflag = 0;

    if (value.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)
		{
		alert (errmsg);
        document.forms[frm].elements[f].focus();
		ChangeFieldBGToError(frm,f);
		return false;
		}		

}

function PersonNameValidator(frm,f,value) {

// trims the entry
trim(frm,f,value);

var errmsg = "Person's Name\n";
var errflag = 0;

	value_alias = value.toUpperCase();

	var valid="ABCDEFGHIJKLMNOPQRSTUVWXYZ- '";
	for (var i=0; i<value_alias.length; i++) 
	
		{
        if (valid.indexOf(value_alias.charAt(i)) < 0) 
			{
			errmsg = "- Alphabetic values only (apostrophes and hyphens acceptable)\n";
			errflag = 1;
			break;
			}
		else
			{
            
			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;
			}
        }



	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 PersonMiddleInitialValidator(frm,f,value) {

// trims the entry
trim(frm,f,value);

var errmsg = "Middle Initials\n";
var errflag = 0;

	value_alias = value.toUpperCase();

	var valid="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	for (var i=0; i<value_alias.length; i++) 
	
		{
        if (valid.indexOf(value_alias.charAt(i)) < 0) 
			{
			errmsg = "- Alphabetic values only\n";
			errflag = 1;
			break;
			}
		else
			{
			document.forms[frm].elements[f].value = value.toUpperCase();
			}
        }



	if (errflag == 1)
		{
		alert (errmsg);
        document.forms[frm].elements[f].focus();
		// document.forms[frm].elements[f].value = '';
		return false;
		}		

}

function ProperNounValidator(frm,f,value) {

// trims the entry
trim(frm,f,value);

var errmsg = "Proper Noun\n";
var errflag = 0;

	value_alias = value.toUpperCase();

	var valid="0123456789;\-!@#$^&*()ABCDEFGHIJKLMNOPQRSTUVWXYZ-/ '";
	for (var i=0; i<value_alias.length; i++) 
	
		{
        if (valid.indexOf(value_alias.charAt(i)) < 0) 
			{
			errmsg = "- Alphanumeric values only (apostrophes and hyphens acceptable)\n";
			errflag = 1;
			break;
			}
		else
			{

			var firstcharacter = document.forms[frm].elements[f].value.substring(0,1).toUpperCase();
			var remainingcharacters = (document.forms[frm].elements[f].value.substring(1,150));
			
			document.forms[frm].elements[f].value = firstcharacter + remainingcharacters;
			}
        }



	if (errflag == 1)
		{
		alert (errmsg);
        document.forms[frm].elements[f].focus();
		// document.forms[frm].elements[f].value = '';
		return false;
		}		

}

function WeightValidator(frm,f,value) {

// trims the entry
trim(frm,f,value);


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,value) {

// trims the entry
trim(frm,f,value);


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,value) {

// trims the entry
trim(frm,f,value);

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) {


// trims the entry
var s = obj.value;
trim(frm,f,s);

        val = obj.value;
        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) + ' ';
        	}
        obj.value = newVal;
		
}
// onchange="return InitCap(form.name,this.name,this)" -- use 'this' for value

function InitCapFirstWordOnly(frm,f,value) {


// trims the entry
trim(frm,f,value);

var errmsg = "Person's Name\n";
var errflag = 0;

	value_alias = value.toUpperCase();

	for (var i=0; i<value_alias.length; i++) 
	
	{
	var firstcharacter = document.forms[frm].elements[f].value.substring(0,1).toUpperCase();
	var remainingcharacters = (document.forms[frm].elements[f].value.substring(1,255));
			
	document.forms[frm].elements[f].value = firstcharacter + remainingcharacters;
    }



	if (errflag == 1)
		{
		alert (errmsg);
        document.forms[frm].elements[f].focus();
		// document.forms[frm].elements[f].value = '';
		return false;
		}		

}

function DecimalValidator(frm,f,value) {

// trims the entry
trim(frm,f,value);

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,value) {


// trims the entry
trim(frm,f,value);

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,value) {


// trims the entry
trim(frm,f,value);

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 trim(frm,f,value) {

// trim function
var s = value;
while ((s.substring(0,1) == ' ') || (s.substring(0,1) == '\n') || (s.substring(0,1) == '\r'))
{ s = s.substring(1,s.length) }
document.forms[frm].elements[f].value = s;


}


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 ChangeFieldBGToReset(f,n) {
	document.forms[f].elements[n].style.backgroundColor = "#eeeeee";
	
} 

function ChangeFieldBGToConfirmed(f,n) {
	document.forms[f].elements[n].style.backgroundColor = "#aacccc";
	
} 
