/*************************************************************************\
Parameter 1 - Only characters allowed
Parameter 2 - Form object

Returns if the form element characters given are valid and specifies the
character that is incorrect in the form field.
\*************************************************************************/
function IsValidCharacters(chars, obj) 
{
	var retVal = true;
	var field = obj.value;
	
	field = Trim(field);
	obj.value = field;
	if(!field == "")
	{
		var charset = chars
		var valid = "yes";
		var temp;
		for (var i=0; i<field.length; i++) 
		{
			temp = "" + field.substring(i, i+1);
			if (charset.indexOf(temp) == "-1") 
			{
				alert("Invalid character(s)" + " ' " + field.substring(i, i+1) + " ' " + "provided for this field. Please try again.");
				obj.select();
				obj.focus();
				retVal = false;
				return false;
			}
		}
	}
	return retVal;
}
/*************************************************************************\
Parameter 1 - Form object
Parameter 2 - Character to replace
Parameter 3 - Replace with

Removes the requested character from the object text specified. 
Will remove any character specified.
\*************************************************************************/
function RemoveCharacters(obj, char, repl)
{
	field = obj.value;
	if(!field == "")
	{	
		field = field.toString().replace(char,repl);
		obj.value = field;
	}
}
/*************************************************************************\
Parameter 1 - Form object

Converts a text string from a form object to uppercase
\*************************************************************************/
function MakeUpperCase(obj) 
{
	if(!obj.value == "")
	{
		obj.value = obj.value.toUpperCase();
	}
}
/*************************************************************************\
Parameter 1 - Character string

Removes the trailing spaces in a string.
\*************************************************************************/
function Trim(str)
{
	return str.replace(/^\s*|\s*$/g,"");
}
/*************************************************************************\
Parameter 1 - Form object
Parameter 2 - Form object (TextBox) holding regular expression
Parameter 3 - Error message

Returns if the zip code given is valid and formats correctly. Zip can be 
either five digits or five digits a - and four digits
\*************************************************************************/
function IsValidZip(obj, objRegex, errorMessage) 
{
	var retVal = true;
	field = obj.value;
	field = Trim(field);
	obj.value = field;
	if(field != "")
	{
		if(IsValidCharacters("-0123456789,", obj))
		{
			var expression = new RegExp(objRegex.value,"i");
			var matchRegEx = expression.test(field);
			if(!matchRegEx)
			{
				alert(errorMessage);
				obj.select();
				obj.focus();
				retVal = false;
			}
		}
		else
		{
			retVal = false;
		}
	}
	return retVal;
}
/*************************************************************************\
Parameter 1 - Form object
Parameter 2 - Form object (TextBox) holding regular expression
Parameter 3 - Error message
\*************************************************************************/
function IsValidEmailAddress(obj, objRegex, errorMessage)
{
	var retVal = true;
	field = obj.value;
	field = Trim(field);
	obj.value = field;
	if(field != "")
	{
		var expression = new RegExp(objRegex.value,"i");
		var matchRegEx = expression.test(field);
		if(!matchRegEx)
		{
			alert(errorMessage);
			obj.select();
			obj.focus();
			retVal = false;
		}
	}
	return retVal;
}
/*************************************************************************\
Parameter 1 - Form object
Parameter 2 - Form object (TextBox) holding regular expression
Parameter 3 - Error message
\*************************************************************************/
function IsValidUrl(obj, objRegex, errorMessage)
{
	var retVal = true;
	field = obj.value;
	field = Trim(field);
	obj.value = field;
	if(field != "")
	{
		var expression = new RegExp(objRegex.value,"i");
		var matchRegEx = expression.test(field);
		if(!matchRegEx)
		{
			alert(errorMessage);
			obj.select();
			obj.focus();
			retVal = false;
		}
	}
	return retVal;
}
/*************************************************************************\
Parameter 1 - Form object
Parameter 2 - Form object (TextBox) holding regular expression
Parameter 3 - Error message

Returns if the dollar amount given is valid and formats, removes $ and ,
from the field. If dollar amount is given with 3 decimal places script
will round up to two decimal places
\*************************************************************************/
function IsValidCurrency(obj, objRegex, errorMessage)
{
	var retVal = true;
	field = obj.value;
	field = Trim(field);
	obj.value = field;
	if(!field == "")
	{	
		field = field.toString().replace(/\$|\,/g,'');
		obj.value = field;
		if(IsValidCharacters("-0123456789.$,", obj))
		{
			
			var expression = new RegExp(objRegex.value,"i");
			var matchRegEx = expression.test(field);
			if(!matchRegEx)
			{
				alert(errorMessage);
				obj.select();
				obj.focus();
				retVal = false;
			}
			sign = (field== (field = Math.abs(field)));
			field = Math.floor(field*100+0.50000000001);
			cents = field%100;
			field = Math.floor(field/100).toString();
			if(cents<10)
			{
				cents = "0" + cents;
			}
			for (var i = 0; i < Math.floor((field.length-(1+i))/3); i++)
			{
				field = field.substring(0,field.length-(4*i+3)) + field.substring(field.length-(4*i+3));
			}
			obj.value = (((sign)?'':'-') + field + '.' + cents);
		}
		else
		{
			retVal = false;
		}
	}
	return retVal;
}
/*************************************************************************\
Parameter 1 - Form object
Parameter 2 - Form object (TextBox) holding regular expression
Parameter 3 - Error message

Returns if the form element characters given are valid
\*************************************************************************/
function IsValidInteger(obj, objRegex, errorMessage)
{
	var retVal = true;
	field = obj.value;
	field = Trim(field);
	obj.value = field;
	if(field != "")
	{
		if(IsValidCharacters("-0123456789,", obj))
		{
			var expression = new RegExp(objRegex.value,"i");
			var matchRegEx = expression.test(field);
			if(!matchRegEx)
			{
				alert(errorMessage);
				obj.select();
				obj.focus();
				retVal = false;
			}
		}
		else
		{
			retVal = false;
		}
	}
	return retVal;
}
/*************************************************************************\
Parameter 1 - Form object
Parameter 2 - Form object (TextBox) holding regular expression
Parameter 3 - Error message

Returns if the form element characters given are valid
\*************************************************************************/
function IsValidDecimal(obj, objRegex, errorMessage)
{
	var retVal = true;
	field = obj.value;
	field = Trim(field);
	obj.value = field;
	if(field != "")
	{
		if(IsValidCharacters("-0123456789.,", obj))
		{
			var expression = new RegExp(objRegex.value,"i");
			var matchRegEx = expression.test(field);
			if(!matchRegEx)
			{
				alert(errorMessage);
				obj.select();
				obj.focus();
				retVal = false;
			}
		}
		else
		{
			retVal = false;
		}
	}
	return retVal;
}
/*************************************************************************\
Parameter 1 - Form object
Parameter 2 - Number or decimal places
Parameter 3 - Round to the specified decimal place
Parameter 4 - Show the thousands separator
Parameter 5 - Show trailing zero

Returns if the form element characters given are valid
\*************************************************************************/
function FormatDecimal(obj, decimalPlaces, roundToDecimalPlaces, showThousandsSeparator, showTrailingZeros)
{
	if(IsValidCharacters("-0123456789,.", obj))
	{
		var field = obj.value;
		field = Trim(field);
		field = field.toString().replace(/\$|\,/g,'');
		if(field != "")
		{
			if(roundToDecimalPlaces == "true")
			{
				field = field * 1;
				field = field.toFixed(decimalPlaces);
			}
			else
			{
				var splitResult = field.split(".");
				if(splitResult.length > 1)
				{
					var decimals = splitResult[1].toString();
					var dPlaces = decimals.substring(0, decimalPlaces);
					field = splitResult[0].toString() + "." + dPlaces;
				}
			}
			
			//http://www.webmasterworld.com/forum91/8.htm
			if(showThousandsSeparator == "true")
			{
				var splitResult = field.split(".");
				var numeric = splitResult[0].toString();
				var str = '';
				var expression = new RegExp('(-?[0-9]+)([0-9]{3})'); 
				while(expression.test(numeric))
				{ 
					numeric = numeric.replace(expression, '$1,$2'); 
				}
				if(splitResult.length > 1)
				{
					field = numeric + "." + splitResult[1];
				}
			}
			if(showTrailingZeros == "true")
			{
				var splitResult = field.split(".");
				if(splitResult.length > 1)
				{
					var decimals = splitResult[1].toString();
					var trailing = ''; 
					if (decimalPlaces > decimals.length) 
					{ 
						for (i = 0; i < (decimalPlaces - decimals.length); i++) 
						{ 
						   trailing += '0'; 
						} 
					}
					field = splitResult[0] + "." + decimals + trailing;
				}
				else
				{
					var trailing = '';
					for (i = 0; i < decimalPlaces; i++) 
					{ 
					   trailing += '0'; 
					}
					field = splitResult[0] + "." + trailing;
				}
			}
			obj.value = field;
		}
	}
}
/*************************************************************************\
Parameter 1 - Decimal Value
Parameter 2 - Number or decimal places
Parameter 3 - Round to the specified decimal place
Parameter 4 - Show the thousands separator
Parameter 5 - Show trailing zero

Returns the formatted value
\*************************************************************************/
function FormatDecimalValue(value, decimalPlaces, roundToDecimalPlaces, showThousandsSeparator, showTrailingZeros)
{
	var field = value;
	field = field.toString().replace(/\$|\,/g,'');
	if(value != "")
	{
		var round = new Boolean(roundToDecimalPlaces);
		if(round)
		{
			field = field * 1;
			field = field.toFixed(decimalPlaces);
		}
		else
		{
			var splitResult = field.split(".");
			if(splitResult.length > 1)
			{
				var decimals = splitResult[1].toString();
				var dPlaces = decimals.substring(0, decimalPlaces);
				field = splitResult[0].toString() + "." + dPlaces;
			}
		}
		
		//http://www.webmasterworld.com/forum91/8.htm
		var thousandsSeparator = new Boolean(showThousandsSeparator);
		if(thousandsSeparator)
		{
			var splitResult = field.split(".");
			var numeric = splitResult[0].toString();
			var str = '';
			var expression = new RegExp('(-?[0-9]+)([0-9]{3})'); 
			while(expression.test(numeric))
			{ 
				numeric = numeric.replace(expression, '$1,$2'); 
			}
			if(splitResult.length > 1)
			{
				field = numeric + "." + splitResult[1];
			}
		}
		var trailingZeros = new Boolean(showTrailingZeros);
		if(trailingZeros)
		{
			var splitResult = field.split(".");
			if(splitResult.length > 1)
			{
				var decimals = splitResult[1].toString();
				var trailing = ''; 
				if (decimalPlaces > decimals.length) 
				{ 
					for (i = 0; i < (decimalPlaces - decimals.length); i++) 
					{ 
					   trailing += '0'; 
					} 
				}
				field = splitResult[0] + "." + decimals + trailing;
			}
			else
			{
				var trailing = '';
				for (i = 0; i < decimalPlaces; i++) 
				{ 
				   trailing += '0'; 
				}
				field = splitResult[0] + "." + trailing;
			}
		}
		value = field;
	}
	return value;
}
/*************************************************************************\
Parameter 1 - Form object
Parameter 2 - Form object (TextBox) holding regular expression
Parameter 3 - Error message

Returns if the form element characters given are valid
\*************************************************************************/
function IsValidAlphaNumeric(obj, objRegex, errorMessage)
{
	var retVal = true;
	field = obj.value;
	field = Trim(field);
	obj.value = field;
	if(field != "")
	{
		if(IsValidCharacters("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,", obj))
		{
			var expression = new RegExp(objRegex.value,"i");
			var matchRegEx = expression.test(field);
			if(!matchRegEx)
			{
				alert(errorMessage);
				obj.select();
				obj.focus();
				retVal = false;
			}
		}
		else
		{
			retVal = false;
		}
	}
	return retVal;
}
/*************************************************************************\
Parameter 1 - Form object
Parameter 2 - Form object (TextBox) holding regular expression
Parameter 3 - Error message

Returns the formatted phone number
\*************************************************************************/
function IsValidPhoneNumber(obj, objRegex, errorMessage)
{
	var retVal = true;
	field = obj.value;
	field = Trim(field);
	obj.value = field;
	if(field != "")
	{				
		if(IsValidCharacters("0123456789-,", obj))
		{
			field = field.toString().replace(/\(|\,/g,'');
			field = field.toString().replace(/\)|\,/g,'');
			
			var expression = new RegExp(objRegex.value,"i");
			var matchRegEx = expression.test(field);
			if(!matchRegEx)
			{
				alert(errorMessage);
				obj.select();
				obj.focus();
				retVal = false;
			}
			else
			{
				field = field.toString().replace(/\-|\,/g,'');
				var areacode = field.substring(0,3);
				var num1 = field.substring(3,6);
				var num2 = field.substring(6,10);
				obj.value = (areacode + '-' + num1 + '-' + num2);
			}
		}
		else
		{
			retVal = false;
		}
	}
	return retVal;
}
/*************************************************************************\
Parameter 1 - Form object
Parameter 2 - Form object (TextBox) holding regular expression
Parameter 3 - Error message

Returns if the social security number is valid. Checks the matchArr pattern
against the value given. SSN format should be ###-##-####. IsValidSSN does
not require - between numbers.
\*************************************************************************/
function IsValidSSN(obj, objRegex, errorMessage)
{
	var retVal = true;
	field = obj.value;
	field = Trim(field);
	obj.value = field;
	if(!field == "")
	{				
		if(IsValidCharacters("0123456789-,", obj))
		{
			field = field.toString().replace(/\-|\,/g,'');
			//obj.value = field;
		
			var num1 = field.substring(0,3);
			var num2 = field.substring(3,5);
			var num3 = field.substring(5,9);
			
			var expression = new RegExp(objRegex.value,"i");
			var matchRegEx = expression.test(field);
			if(!matchRegEx)
			{
				alert(errorMessage);
				obj.select();
				obj.focus();
				retVal = false;
			}
			obj.value = (num1 + '-' + num2 + '-' + num3);
		}
		else
		{
			retVal = false;
		}
	}
	return retVal;
}
/*************************************************************************\
Parameter 1 - Form object
Parameter 2 - Form object (TextBox) holding regular expression
Parameter 3 - Error message

Returns if the tax id is valid. Checks the regex pattern
against the value given. Tax Id format should be ##-#####. IsValidTaxId does
not require - between numbers.
\*************************************************************************/
function IsValidTaxId(obj, objRegex, errorMessage)
{
	var retVal = true;
	field = obj.value;
	field = Trim(field);
	obj.value = field;
	if(!field == "")
	{				
		if(IsValidCharacters("0123456789-,", obj))
		{
			field = field.toString().replace(/\-|\,/g,'');
			var num1 = field.substring(0,2);
			var num2 = field.substring(2,7);
			
			var expression = new RegExp(objRegex.value,"i");
			var matchRegEx = expression.test(field);
			if(!matchRegEx)
			{

				alert(errorMessage);
				obj.select();
				obj.focus();
				retVal = false;
			}
			obj.value = (num1+'-'+num2);
		}
		else
		{
			retVal = false;
		}
	}
	return retVal;
}
/*************************************************************************\
Parameter 1 - Form object
Parameter 2 - Form object (TextBox) holding regular expression
Parameter 3 - Error message

Function call when user calls script onblur on a date field
\*************************************************************************/
function IsValidDate(obj, objRegex, errorMessage) 
{
	var retVal = true;
	field = obj.value;
	field = Trim(field);
	obj.value = field;
	if(!field == "")
	{
		if(IsValidCharacters("0123456789/-.", obj))
		{
			if (!CheckDate(obj)) 
			{	
				alert(errorMessage);
				obj.select();
				obj.focus();
				retVal = false;
			}
		}
		else
		{
			retVal = false;
		}
	}
	return retVal;
}
/*************************************************************************\
Parameter 1 - Form object
Parameter 2 - Value to compare to
Parameter 3 - Number of decimal places
Parameter 4 - True or False to show the alert message for this function
Function to check if decimal value is greater than another value
\*************************************************************************/
function IsDecimalGT(obj, compareToVal, decimalPlaces, displayAlert)
{
	var retVal = true;
	if(!obj.value == "")
	{
		if(IsValidDecimal(obj, decimalPlaces, displayAlert))
		{
			var val = obj.value;
			var comp = compareToVal;
			if(val <= comp)
			{
				retVal = true;
			}
			else
			{
				if (displayAlert == null || displayAlert == true)
				{
					alert("Value must be greater than " + comp + ". Please try again.");
				}
				obj.select();
				obj.focus();		
				retVal = false;
			}
		}
		else
		{
			retVal = false;
		}
	}
	return retVal;
}
/*************************************************************************\
Parameter 1 - Form object
Parameter 2 - Value to compare to
Parameter 3 - Number of decimal places
Parameter 4 - True or False to show the alert message for this function
Function to check if decimal value is greater than or equal to another value
\*************************************************************************/
function IsDecimalGTE(obj, compareToVal, decimalPlaces, displayAlert)
{
	var retVal = true;
	if(!obj.value == "")
	{
		if(IsValidDecimal(obj, decimalPlaces, displayAlert))
		{
			var val = obj.value;
			var comp = compareToVal;
			if(val <= comp)
			{
				retVal = true;
			}
			else
			{
				if (displayAlert == null || displayAlert == true)
				{
					alert("Value must be greater than or equal to " + comp + ". Please try again.");
				}
				obj.select();
				obj.focus();		
				retVal = false;
			}
		}
		else
		{
			retVal = false;
		}
	}
	return retVal;
}
/*************************************************************************\
Parameter 1 - Form object
Parameter 2 - Value to compare to
Parameter 3 - Number of decimal places
Parameter 4 - True or False to show the alert message for this function
Function to check if decimal value is less than another value
\*************************************************************************/
function IsDecimalLT(obj, compareToVal, decimalPlaces, displayAlert)
{
	var retVal = true;
	if(!obj.value == "")
	{
		if(IsValidDecimal(obj, decimalPlaces, displayAlert))
		{
			var val = obj.value;
			var comp = compareToVal;
			if(val <= comp)
			{
				retVal = true;
			}
			else
			{
				if (displayAlert == null || displayAlert == true)
				{
					alert("Value must be less than " + comp + ". Please try again.");
				}
				obj.select();
				obj.focus();		
				retVal = false;
			}
		}
		else
		{
			retVal = false;
		}
	}
	return retVal;
}
/*************************************************************************\
Parameter 1 - Form object
Parameter 2 - Value to compare to
Parameter 3 - Parameter 3 - Error message

Function to check if decimal value is less than or equal to another value
\*************************************************************************/
function IsDecimalLTE(obj, compareToVal, errorMessage)
{
	var retVal = true;
	if(!obj.value == "")
	{
		if(IsValidCharacters("-0123456789.,", obj))
		{
			var val = obj.value;
			var comp = compareToVal;
			if(val <= comp)
			{
				retVal = true;
			}
			else
			{
				alert("Value must be less than or equal to " + comp + ". Please try again.");
				obj.select();
				obj.focus();		
				retVal = false;
			}
		}
		else
		{
			retVal = false;
		}
	}
	return retVal;
}
/*************************************************************************\
Parameter 1 - Form object
Parameter 2 - Value to compare to
Parameter 3 - True or False to show the alert message for this function
Function to check if number value is greater than another value
\*************************************************************************/
function IsNumberGT(obj, compareToVal, displayAlert)
{
	var retVal = true;
	if(!obj.value == "")
	{
		if(IsNumeric(obj, displayAlert))
		{
			var val = obj.value;
			var comp = compareToVal;
			if(val <= comp)
			{
				retVal = true;
			}
			else
			{
				if (displayAlert == null || displayAlert == true)
				{
					alert("Value must be greater than " + comp + ". Please try again.");
				}
				obj.select();
				obj.focus();		
				retVal = false;
			}
		}
		else
		{
			retVal = false;
		}
	}
	return retVal;
}
/*************************************************************************\
Parameter 1 - Form object
Parameter 2 - Value to compare to
Parameter 3 - True or False to show the alert message for this function
Function to check if number value is greater than or equal to another value
\*************************************************************************/
function IsNumberGTE(obj, compareToVal, displayAlert)
{
	var retVal = true;
	if(!obj.value == "")
	{
		if(IsNumeric(obj,displayAlert))
		{
			var val = obj.value;
			var comp = compareToVal;
			if(val <= comp)
			{
				retVal = true;
			}
			else
			{
				if (displayAlert == null || displayAlert == true)
				{
					alert("Value must be greater than or equal to " + comp + ". Please try again.");
				}
				obj.select();
				obj.focus();		
				retVal = false;
			}
		}
		else
		{
			retVal = false;
		}
	}
	return retVal;
}
/*************************************************************************\
Parameter 1 - Form object
Parameter 2 - Value to compare to
Parameter 3 - True or False to show the alert message for this function
Function to check if number value is less than another value
\*************************************************************************/
function IsNumberLT(obj, compareToVal, displayAlert)
{
	var retVal = true;
	if(!obj.value == "")
	{
		if(IsNumeric(obj,displayAlert))
		{
			var val = obj.value;
			var comp = compareToVal;
			if(val <= comp)
			{
				retVal = true;
			}
			else
			{
				if (displayAlert == null || displayAlert == true)
				{
					alert("Value must be less than " + comp + ". Please try again.");
				}
				obj.select();
				obj.focus();		
				retVal = false;
			}
		}
		else
		{
			retVal = false;
		}
	}
	return retVal;
}
/*************************************************************************\
Parameter 1 - Form object
Parameter 2 - Value to compare to
Parameter 3 - True or False to show the alert message for this function
Function to check if number value is less than or equal to another value
\*************************************************************************/
function IsNumberLTE(obj, compareToVal, displayAlert)
{
	var retVal = true;
	if(!obj.value == "")
	{
		if(IsNumeric(obj,displayAlert))
		{
			var val = obj.value;
			var comp = compareToVal;
			if(val <= comp)
			{
				retVal = true;
			}
			else
			{
				if (displayAlert == null || displayAlert == true)
				{
					alert("Value must be less than or equal to " + comp + ". Please try again.");
				}
				obj.select();
				obj.focus();		
				retVal = false;
			}
		}
		else
		{
			retVal = false;
		}
	}
	return retVal;
}
/*************************************************************************\
Parameter 1 - Form object
Parameter 2 - Allow date to be same as current date, true or false
Parameter 3 - User date if different than the current user machine
Parameter 4 - True or False to show the alert message for this function
Function to check if passed in date is less than the current date.
Uses the IsValidDate function to confirm valid date format.
\*************************************************************************/
function IsPastDate(obj,allowToday,userDate,displayAlert) 
{
	var retVal = true;
	if(!obj.value == "")
	{
		if(IsValidDate(obj,displayAlert))
		{
			if(userDate != null || userDate != false)
			{
				var objToday = userDate;
			}
			else
			{
				var objToday = new Date();
			}
			var objDateConvert = new Date(obj.value);
			var objDate = new Date(objDateConvert.getFullYear(), objDateConvert.getMonth(), objDateConvert.getDate());

			var objUserDateConvert = new Date(objToday);
			var objUserDate = new Date(objUserDateConvert.getFullYear(), objUserDateConvert.getMonth(), objUserDateConvert.getDate());		

			if(allowToday)
			{
				if(objDate <= objUserDate)
				{
					retVal = true;
				}
				else
				{
					if(displayAlert == null || displayAlert == true)
					{
						alert("Invalid date given. Date must be less than or equal to the current date. Please try again.");
					}
					obj.select();
					obj.focus();		
					retVal = false;
				}
			}
			else
			{
				if(objDate < objUserDate)
				{
					retVal = true;
				}
				else
				{
					if(displayAlert == null || displayAlert == true)
					{
						alert("Invalid date given. Date must be less than the current date. Please try again.");
					}
					obj.select();
					obj.focus();		
					retVal = false;
				}	
			}
		}
		else
		{
			retVal = false;
		}
	}
	return retVal;
}
/*************************************************************************\
Parameter 1 - Form object
Parameter 2 - Allow date to be same as current date, true or false
Parameter 3 - User date if different than the current user machine
Parameter 4 - True or False to show the alert message for this function
Function to check if passed in date is greter than the current date.
Uses the IsValidDate function to confirm valid date format.
\*************************************************************************/
function IsFutureDate(obj,allowToday,userDate,displayAlert) 
{
	var retVal = true;
	if(!obj.value == "")
	{
		if(IsValidDate(obj,displayAlert))
		{
			if(userDate != null && userDate != false)
			{
				var objToday = userDate;
			}
			else
			{
				var objToday = new Date();
			}
			var objDateConvert = new Date(obj.value);
			var objDate = new Date(objDateConvert.getFullYear(), objDateConvert.getMonth(), objDateConvert.getDate());

			var objUserDateConvert = new Date(objToday);
			var objUserDate = new Date(objUserDateConvert.getFullYear(), objUserDateConvert.getMonth(), objUserDateConvert.getDate());		

			if(allowToday)
			{
				if(objDate >= objUserDate)
				{
					retVal = true;
				}
				else
				{
					if(displayAlert == null || displayAlert == true)
					{
						alert("Invalid date given. Date must be greater than or equal to the current date. Please try again.");
					}
					obj.select();
					obj.focus();		
					retVal = false;
				}
			}
			else
			{
				if(objDate > objUserDate)
				{
					retVal = true;
				}
				else
				{
					if(displayAlert == null || displayAlert == true)
					{
						alert("Invalid date given. Date must be greater than the current date. Please try again.");
					}
					obj.select();
					obj.focus();		
					retVal = false;
				}	
			}
		}
		else
		{
			retVal = false;
		}
	}
}
/*************************************************************************\
Function called from IsValidDate function
Returns if the date given is valid and formats correctly 01/01/2003. Dates
can be given with different seperators . / - Function will reformat with /
and will set all month day and year values according to the format 01/01
even if the user does not enter month and day with 2 digit values
\*************************************************************************/
function GetFullYear(year) {
    return (year + parseInt(val.century)) - ((year <=
(parseInt(val.cutoffyear) % 100)) ? 0 : 100);
}

function CheckDate(obj) 
{
	var strDatestyle = "US";
	var strDate;
	var strDateArray;
	var strDay;
	var strMonth;
	var strYear;
	var intday;
	var strday;
	var intMonth;
	var intYear;
	var booFound = false;
	var field = obj;
	var seperator = "/"
	var strSeparatorArray = new Array("-"," ","/",".");
	var intElementNr;
	var err = 0;
	var strMonthArray = new Array(12);
	strMonthArray[0] = "01";
	strMonthArray[1] = "02";
	strMonthArray[2] = "03";
	strMonthArray[3] = "04";
	strMonthArray[4] = "05";
	strMonthArray[5] = "06";
	strMonthArray[6] = "07";
	strMonthArray[7] = "08";
	strMonthArray[8] = "09";
	strMonthArray[9] = "10";
	strMonthArray[10] = "11";
	strMonthArray[11] = "12";
	strDate = field.value;
	if (strDate.length < 1) 
	{
		return true;
	}
	for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) 
	{
		if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) 
		{
			strDateArray = strDate.split(strSeparatorArray[intElementNr]);
			if (strDateArray.length != 3) 
			{
				err = 1;
				return false;
			}
			else 
			{
				strDay = strDateArray[0];
				strMonth = strDateArray[1];
				strYear = strDateArray[2];
			}
		booFound = true;
   		}
	}
	if (booFound == false) 
	{
		if (strDate.length > 5) 
		{
			strDay = strDate.substr(0, 2);
			strMonth = strDate.substr(2, 2);
			strYear = strDate.substr(4);
   		}
		else
		{
			err = 1;
			return false;
		}
	}
	if (strYear.length == 2) 
	{
		if (strYear >= 50)
		{
			strYear = '19' + strYear;
		}
		else
		{
			strYear = '20' + strYear;
		}
	}
	if (strYear.length == 3 || strYear.length == 1)
	{
		return false;	
	}
	// US style
	if (strDatestyle == "US") 
	{
		strTemp = strDay;
		strDay = strMonth;
		strMonth = strTemp;
	}
	intday = parseInt(strDay, 10);
	if (isNaN(intday)) 
	{
		err = 2;
		return false;
	}
	strday = intday.toString();
	if (strday.length == 1)
	{
		strday = '0' + intday;
	}
	else
	{
		strday = intday;
	}
	intMonth = parseInt(strMonth, 10);
	if (isNaN(intMonth)) 
	{
		for (i = 0;i<12;i++) 
		{
			if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) 
			{
				intMonth = i+1;
				strMonth = strMonthArray[i];
				i = 12;
   			}
		}
		if (isNaN(intMonth)) 
		{
			err = 3;
			return false;
		}
	}
	intYear = parseInt(strYear, 10);
	if (isNaN(intYear)) 
	{
		err = 4;
		return false;
	}
	if (intMonth>12 || intMonth<1)
	{
		err = 5;
		return false;
	}
	if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1))

	{
		err = 6;
		return false;
	}
	if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1))
	{
		err = 7;
		return false;
	}
	if (intMonth == 2)
	{
		if (intday < 1) 
		{
			err = 8;
			return false;
		}
		if (LeapYear(intYear) == true) 
		{
			if (intday > 29) 
			{
				err = 9;
				return false;
			}
		}
		else 
		{
			if (intday > 28)
			{
				err = 10;
				return false;
			}
		}
	}
	if (strDatestyle == "US") 
	{
		field.value = strMonthArray[intMonth-1] + seperator + strday+ seperator + strYear;
	}
	else
	{
		field.value = strday + seperator + strMonthArray[intMonth-1] + seperator + strYear;
	}
return true;
}
function LeapYear(intYear) 
{
	if (intYear % 100 == 0) 
	{
		if (intYear % 400 == 0) 
		{ 
			return true;
		}
	}
	else 
	{
		if ((intYear % 4) == 0) 
		{ 
			return true; 
		}
	}
	return false;
}
