/******************************************************************************
*                                                                             
* Page name: 	Validate.js
* Description:  Contains functions to be used for form validation
* Functions: 
*			Name:						Description:
*			validateGreaterThan			Checks to see if a value is greater than a specified value
*			validateLength				Checks to see if item is longer than a specified minimum length
*			validateExactLength			Checks to see if an item is a certain length
*   		validateAreaCode			Check to see if area code is a three digit integer
*			validatePhoneNumber			Check if phone number is in proper format
*			validateSame				Checks to see if two items match
*			validateSelect				Checks to see if an item has been selected from a pull-down menu
*			validateRadio				Checks to see if a radio button has been selected
*			validateInteger				Checks to see if a value is an integer
*			validateFloat				Checks to see if a value is a Float
*			validateDate				Check date to see that it is a real date in x/x/xxxx format
*			LTrim, RTrim, Trim			Trim Functions
*		                                                                     
*
* Author: Mitzi Shanedling
* Date: 05.18.2000
* 
* Updates
* Author:
* Date:
* Reason:
**********************************************************************************/

function validateGreaterThan(objFormField, intMinValue, strErrorMessage) {
	if(objFormField.options[objFormField.selectedIndex].value < intMinValue) {
		error_message = error_message + strErrorMessage;
		error_flag = 1;
		return true;
	}
}

function validateLength (objFormField, intMinLength, strErrorMessage) {
	if(objFormField.value.length < intMinLength) {
		error_message = error_message + strErrorMessage;
		error_flag = 1;
		return true;
	}
}

function validateExactLength (objFormField, intExactLength, strErrorMessage) {
	if(objFormField.value.length != intExactLength) {
		error_message = error_message + strErrorMessage;
		error_flag = 1;
		return true;
	}
}

function validateAreaCode(objFormField, strErrorMessage, blnAllowNull) {
	var blnError = false;
	var strAreaCode = objFormField.value;
	
	if (blnAllowNull) {
		if (objFormField.value.length == 0) return false;
	}
	
	if (validateExactLength(strAreaCode, 3)) {
		blnError = true;
	}
	
	//Note objPhonePrefix is used because pattern for area code and prefix is the same
	if (validateInternalRE(strAreaCode, objPhonePrefixRE)) {
		blnError = true;
	}
	
	if(blnError) {
		error_message = error_message + strErrorMessage;
		error_flag = 1;
		return true;
	}
	else {
		return false;
	}
	
}

function validatePhoneNumber (objFormFieldPrefix, objFormFieldSuffix, strErrorMessage, blnAllowNull) {
	
	//Assume phone number is in the 555.5555 format
	var blnError = false;
	var strPrefix = objFormFieldPrefix.value;
	var strSuffix = objFormFieldSuffix.value;
	
	if (blnAllowNull) {
		if (objFormFieldPrefix.value.length == 0 &&
		objFormFieldSuffix.value.length ==0) return false;
	}
	
 	if (validateExactLength(strPrefix,3)) {
		blnError = true;
	}
	
	if (validateExactLength(strSuffix,4)) {
		blnError = true;
	}

	
	if (validateInternalRE(strPrefix, objPhonePrefixRE)) {
		blnError = true;
	}
 	
	if (validateInternalRE(strSuffix, objPhoneSuffixRE)) {
		blnError=true;
	}
	
	if(blnError) {
		error_message = error_message + strErrorMessage;
		error_flag = 1;
		return true;
	}
	else {
		return false;
	}
}


function validateSame (objFormField, objFormField2, strErrorMessage) {
	if (objFormField.value != objFormField2.value) {
		error_message = error_message + strErrorMessage;
		error_flag = 1;
		return true;
	}
} 


function validateSelect (objFormField, strErrorMessage) {
	for (i = 0; i < objFormField.length; i++) {
		if (objFormField.options[i].selected) {
			if(objFormField.options[i].value > -1) {
				return false;
			}
			else {
				error_message = error_message + strErrorMessage;
				error_flag = 1;
				return true;
			}
		}
	}
	error_message = error_message + strErrorMessage;
	error_flag = 1;
	return true;
}


function validateRadio (objFormField, strErrorMessage) {
	for (i = 0; i < objFormField.length; i++) {
		if (objFormField[i].checked) {
			return false;
		}
	}
	error_message = error_message + strErrorMessage;
	error_flag = 1;
	return true;
}


function validateInteger (strInteger, strErrorMessage) {
	if (isNaN(strInteger)) {
		error_message = error_message + strErrorMessage;
		error_flag = 1;
		return true;
	}
	strValidChars = " 0123456789";
	for (i = 1; i < strInteger.length; i++) {
		if(strValidChars.indexOf(strInteger.charAt(i)) < 0) {
			error_message = error_message + strErrorMessage;
			error_flag = 1;
			return true;
		}
	}
	return false;
}

function validateFloat (strInteger, strErrorMessage) {
	if (isNaN(strInteger)) {
		error_message = error_message + strErrorMessage;
		error_flag = 1;
		return true;
	}
	strValidChars = " .0123456789";
	for (i = 1; i < strInteger.length; i++) {
		if(strValidChars.indexOf(strInteger.charAt(i)) < 0) {
			error_message = error_message + strErrorMessage;
			error_flag = 1;
			return true;
		}
	}
	return false;
}


function validateDate (strDate, strErrorMessage) {
	if(strDate.length == 0) {
		return false;
	}
	
	intTokenPos = strDate.indexOf('/');
	if (intTokenPos == strDate.length || intTokenPos == -1) {
		error_message = error_message + strErrorMessage;
		error_flag = 1;
		return true;
	}
	
	strMonth = strDate.substring(0, intTokenPos);
	intTokenPos = strDate.indexOf('/', intTokenPos + 1);
	if (intTokenPos == strDate.length || intTokenPos == -1) {
		error_message = error_message + strErrorMessage;
		error_flag = 1;
		return true;
	}
	
	strDay = strDate.substring((strMonth.length + 1), intTokenPos);
	strYear = strDate.substring(intTokenPos + 1);
	if (validateInteger(strMonth, strErrorMessage)) {
		return true;
	}
	
	if (validateInteger(strDay, strErrorMessage)) {
		return true;
	}
	
	if (validateInteger(strYear, strErrorMessage)) {
		return true;
	}
	
	if (strMonth > 12 || strMonth < 0) {
		error_message = error_message + strErrorMessage;
		error_flag = 1;
		return true;
	}
	
	if (strYear < 0 || strYear > 2050) {
		error_message = error_message + strErrorMessage;
		error_flag = 1;
		return true;
	}
	
	if (strMonth == 4 || strMonth == 6 || strMonth == 9 || strMonth == 11) {
		if (strDay < 0 || strDay > 30) {
			error_message = error_message + strErrorMessage;
			error_flag = 1;
			return true;
		}
	}
	else {
		if (strMonth == 2) {
			if (strYear % 4 > 0) {
				if(strDay < 0 || strDay > 28) {
					error_message = error_message + strErrorMessage;
					error_flag = 1;
					return true;	
				}
			}
			else {
				if (strYear % 100 == 0 && strYear % 400 > 0) {
					if(strDay < 0 || strDay > 28) {
						error_message = error_message + strErrorMessage;
						error_flag = 1;
						return true;	
					}
				}
				else {
					if(strDay < 0 || strDay > 29) {
						error_message = error_message + strErrorMessage;
						error_flag = 1;
						return true;	
					}
				}
			}
		}
		else {
			if (strDay < 0 || strDay > 31) {
				error_message = error_message + strErrorMessage;
				error_flag = 1;
				return true;
			}
		}
	}
	return false;
}

function RTrim(strMyString) {
    return(strMyString.replace(/^\s*/,""));
}
 
function LTrim(strMyString) {
    return(strMyString.replace(/\s*$/, ""));
}
 
function Trim(strMyString) {
    return(RTrim(LTrim(strMyString)));
}

