
function CheckboxCheckedFunction(Field)
{
	isChecked = false;
	if(Field.length)
	{
		for(var i=0; i<Field.length; i++)
		{
			if(Field[i].checked)
				isChecked = true;
		}
	}
	else
	{
		if(Field.checked)
			isChecked = true;
	}
	return isChecked;
}
function CheckboxOnlyOneCheckedFunction(Field)
{
	isChecked = false;
	if(Field.length)
	{
		for(var i=0; i<Field.length; i++)
		{
			if(Field[i].checked)
                        {
                                if(isChecked == false)
				     isChecked = true;
                                else
                                     return false;
                        }
		}
	}
	else
	{
		if(Field.checked)
			isChecked = true;
	}
	return isChecked;
}
function MultiSelectCountFunction(Field, Value)
{
	number = parseInt(Value)
	if(isNaN(number))
		return false;
		
	var count = 0;
	
	for(var i=0; i < Field.length;i++)
	{
		if(Field[i].selected)
			count++;
	}
	
	if(count == number) return true;
	
	return false;
}
function OptionalCreditCardNumberFunction(Field)
{
        if(Trim(Field.value) == "")
             return true;

	Field.value = '' + Field.value;

	if (Field.value.length > 16 || Field.value.length < 13 ) return false;
	else
	{
		if (isNaN(parseInt(Field.value))) return false;
	
		// calculate checksum using mod10
		var checksum = 0;
		for(var i=Field.value.length-1; i>=0; i--)
		{
			var isOdd = ((Field.value.length-i) % 2 != 0)?true:false;
			digit = Field.value.charAt(i);
			
			if(isOdd)
				checksum += parseInt(digit);
			else
			{
				var evenDigit = parseInt(digit) * 2;
				if(evenDigit >= 10)
					checksum += 1 + (evenDigit - 10);
				else
					checksum += evenDigit;
			}
		}
		if((checksum % 10) == 0) return true;
		return false;
	}
}
function OptionalDateFunction(Field)
{
	if(Trim(Field.value) == "")
		return true;
	var inputStr = Trim(Field.value);
	if(window.RegExp && /a/.test("a"))
	{
		re = /^(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/;
		if(!re.test(Field.value)){
			return false;}
		else
		{
			re2 = /^(\d\d?)\/(\d\d?)\/(\d{2})?(\d{2})$/;
			arrResults = re2.exec(Trim(Field.value));
			dMonth = arrResults[1];
			dDay = arrResults[2];
			dYear1 = arrResults[3];
			dYear2 = arrResults[4];
			if(dYear1 == "")
				(dYear2 >= 90)?dYear1 = "19":dYear1 = "20";
			return(Field.value=dMonth + "/" + dDay + "/" + dYear1 + dYear2);
		}
	}
	else
	{
		inputStr = inputStr.replace(/-/g,"/");
		var delim1 = inputStr.indexOf("/");
		var delim2 = inputStr.lastIndexOf("/");
		if(delim1 != -1 && delim1 == delim2)
			return false;
		if(delim1 != -1)
		{
			var mm = parseInt(inputStr.substring(0,delim1),10);
			var dd = parseInt(inputStr.substring(delim1 + 1,delim2),10);
			var yyyy = parseInt(inputStr.substring(delim2 + 1, delim2 + 5),10);
		}
		else
		{
			var mm = parseInt(inputStr.substring(0,2),10);
			var dd = parseInt(inputStr.substring(2,4),10);
			var yyyy = parseInt(inputStr.substring(delim2 + 1, delim2 + 5),10);
		}
					
		if(isNaN(parseInt(mm)) || isNaN(dd) || isNaN(yyyy))
			return false;
		if(mm < 1 || mm > 12)
			return false;
		if(dd < 1 || dd > 31)
			return false;
		if(yyyy < 100)
			if(yyyy >= 50)
				yyyy += 1900;
			else
				yyyy += 2000;
		else if(yyyy < 1900)
			return false;
					  
		if ((mm == 4 || mm == 6 || mm == 9 || mm == 11) && dd > 30)
			return false;
		else if (dd > 31)
			return false;
		if(mm == 2)
		{
			if (yyyy % 4 == 0)
				if (yyyy % 100 == 0)
					if (yyyy % 400 == 0)
						NumDays = 29;
					else
						NumDays = 28;
				else
					NumDays = 29;
			else
				NumDays = 28;
			if (dd > NumDays)
				return false;
		}
						
		return (Field.value = mm + "/" + dd + "/" + yyyy);
	}
}

function OptionalEmailFunction(Field)
{
	if(Trim(Field.value) == "")
		return true;
	if(!(window.RegExp && /a/.test("a")))
		return (Field.value.indexOf('.') > 2) && (Field.value.indexOf('@') > 0);
	var r1 = new RegExp('(@.*@)|(\\.\\.)|(@\\.)|(^\\.)');
	var r2 = new RegExp('^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$');
	return (!r1.test(Field.value) && r2.test(Field.value));
}

function OptionalFloatFunction(Field)
{
	if(!isNaN(parseFloat(Trim(Field.value))))
		Field.value = parseFloat(Trim(Field.value));
	if(Trim(Field.value) == "")
		return true;
	if(isNaN(parseFloat(Trim(Field.value))))
		return false;
	return true;
}
function OptionalIntegerFunction(Field)
{
	if(!isNaN(parseInt(Trim(Field.value))))
		Field.value = parseInt(Trim(Field.value));
	if(Trim(Field.value) == "")
		return true;
	if(isNaN(parseInt(Trim(Field.value))))
		return false;
	return true;
}

function OptionalMACAddressFunction(Field)
{
	if(Trim(Field.value) == "")
		return true;
	var supported = 0;
	if(window.RegExp)
	{
		var tempStr = "a";
		var tempReg = new RegExp(tempStr);
		if(tempReg.test(tempStr)) supported = 1;
	}
	if(supported)
		return /^[A-Za-z]{1}\d{4}\-\d{2}[A-Za-z0-9]{1}$/.test(Field.value);
	else
	{
		arrTemp = Field.value.split("-");
		if(arrTemp.length > 2)
			return false;
		if(arrTemp[0].length != 5)
			return false;
		if(arrTemp[0].toUpperCase().charCodeAt(0) < 65 ||  arrTemp[0].toUpperCase().charCodeAt(0) > 90)
			return false;
		if(arrTemp[1])
			if(arrTemp[1].length != 3)
				return false;
		var okMAC = "0123456789-";
		for(i=1; i<Field.value.length; i++)
		{
			if(i==Field.value.length-1)  //  last character may be alpha or digit
			{
				okMAC_LastChar = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
				var theChar = Field.value.charAt(i);
				if(okMAC_LastChar.indexOf(theChar) == -1)
					return false;
			}
			else
			{
				var theChar = Field.value.charAt(i);
				if(okMAC.indexOf(theChar) == -1)
					return false;
			}
		}
		return true;
	}
}

function OptionalMMDDDateFunction(Field)
{
	if(Trim(Field.value) == "")
		return true;
	var inputStr = Trim(Field.value);
	if(window.RegExp && /a/.test("a"))
	{
		re = /^(\d\d?)\/(\d\d?)$/;
		if(!re.test(Field.value)){
			return false;}
		else
		{
			re2 = /^(\d\d?)\/(\d\d?)$/;
			arrResults = re2.exec(Trim(Field.value));
			dMonth = arrResults[1];
			dDay = arrResults[2];
			return(Field.value=dMonth + "/" + dDay );
		}
	}
	else
	{
		inputStr = inputStr.replace(/-/g,"/");
		var delim1 = inputStr.indexOf("/");
		var delim2 = inputStr.lastIndexOf("/");
		if(delim1 != -1 && delim1 == delim2)
			return false;
		if(delim1 != -1)
		{
			var mm = parseInt(inputStr.substring(0,delim1),10);
			var dd = parseInt(inputStr.substring(delim1 + 1,delim2),10);
		}
		else
		{
			var mm = parseInt(inputStr.substring(0,2),10);
			var dd = parseInt(inputStr.substring(2,4),10);
		}
					
		if(isNaN(parseInt(mm)) || isNaN(dd) || isNaN(yyyy))
			return false;
		if(mm < 1 || mm > 12)
			return false;
		if(dd < 1 || dd > 31)
			return false;
					  
		if ((mm == 4 || mm == 6 || mm == 9 || mm == 11) && dd > 30)
			return false;
		else if (dd > 31)
			return false;
		if(mm == 2)
		{
			NumDays = 29;
			if (dd > NumDays)
				return false;
		}
						
		return (Field.value = mm + "/" + dd );
	}
}

function OptionalPhoneNumberFunction(Field)
{
	if(Trim(Field.value) == "")
		return true;
	if(window.RegExp && /a/.test("a"))
	{
		Field2 = Field.value.replace(/[^0-9]/gi, "");
		if(Field2.length != 10)
			return false;
		else
			return (Field.value = Field2.substr(0,3) + "." + Field2.substr(3,3) + "." + Field2.substr(6,4));
	}
	else
	{
		sNewValue = "";
		for(var i=0; i<Field.value.length; i++)
			if("0123456789".indexOf(Field.value.charAt(i)) != -1) sNewValue += Field.value.charAt(i);
		if(sNewValue.length != 10)
			return false;
		else
			return (Field.value = sNewValue.substr(0,3) + "." + sNewValue.substr(3,3) + "." + sNewValue.substr(6,4));
	}
}
function OptionalRangeFloatFunction(Field, OptionalParams)
{
	if(Trim(Field.value) == "")
		return true;
	if(OptionalParams)
	{
		arrTemp = OptionalParams.split("-");
		if(arrTemp.length != 2)
			return false;
		Lower = parseInt(arrTemp[0]);
		Upper = parseInt(arrTemp[1]);
		if(isNaN(Lower) || isNaN(Upper))
			return false;
	}
	if(isNaN(parseFloat(Field.value)))
		return false;
	return (parseFloat(Field.value) >= Lower && parseFloat(Field.value) <= Upper);
}

function OptionalRangeIntegerFunction(Field, OptionalParams)
{
	if(Trim(Field.value) == "")
		return true;
	if(OptionalParams)
	{
		arrTemp = OptionalParams.split("-");
		if(arrTemp.length != 2)
			return false;
		Lower = parseInt(arrTemp[0]);
		Upper = parseInt(arrTemp[1]);
		if(isNaN(Lower) || isNaN(Upper))
			return false;
	}
	if(isNaN(parseInt(Field.value)))
		return false;
	return (parseInt(Field.value) >= Lower && parseInt(Field.value) <= Upper);
}

function OptionalSSNFunction(Field)
{
	if(Trim(Field.value) == "")
		return true;
	sValue = "";
	for(var i=0; i<Field.value.length; i++)
		if("0123456789".indexOf(Field.value.charAt(i)) != -1) sValue += Field.value.charAt(i);
	if(!isNaN(parseInt(sValue)) && sValue.length == 9)
		return (Field.value = sValue.substr(0,3) + "-" + sValue.substr(3,2) + "-" + sValue.substr(5,4));
	else
		return false;
}

function OptionalTimeFunction(Field)
{
	if(Trim(Field.value) == "")
		return true;
	var theString = new String(Trim(Field.value));
	if(window.RegExp && /a/.test("a"))
	{
		re = /^([01]?\d|2[0-3]):([0-5]\d):?([0-5]\d)?(\sam|\sAM|\spm|\sPM)?$/;
		if(!re.exec(theString))
			return false;
		firstElement = RegExp.$1
		lastElement = RegExp.$2;
		middleElement = "";
		if(RegExp.$3 != "")
			lastElement = lastElement + ":" + RegExp.$3;
		ampmIndicator = Trim(RegExp.$4).toUpperCase();
		therest = ""
	}
	else
	{
		var theElements = theString.split(':');
		if(theElements.length != 2 && theElements.length != 3)
			return false;
			
		var firstElement = new String(theElements[0])
		firstElement = Trim(firstElement);
		var middleElement = "";
		if(theElements.length == 3)
		{
			middleElement = new String(theElements[1])
			middleElement = Trim(middleElement);
		}
		var lastElement = new String(theElements[theElements.length - 1])
		lastElement = Trim(lastElement);

		if(isNaN(parseInt(firstElement)))
			return false;
		var num = parseInt(firstElement);
			if(!((num >= 0) && (num <= 23)))
				return false;
			
		if(theElements.length == 3)
		{
			if(isNaN(parseInt(middleElement)))
				return false;
			var num = parseInt(middleElement);
			if(!((num >= 0) && (num <= 59)))
				return false;
		}
				
		if(!(lastElement.charAt(1) >= "0") && (lastElement.charAt(1) <= "9"))
			return false;
			
		var lastValue;
		var ampmIndicator;
		if((lastElement.charAt(1) >= "0") && (lastElement.charAt(1) <= "9"))
		{
			lastValue = new String(lastElement.substring(0, 2));
			if(lastElement.length >= 3)
			{
				ampmIndicator = new String(Trim(lastElement.substring(3, 5)));
				if(lastElement.length >= 5)
					therest = new String(Trim(lastElement.substring(5, lastElement.length)));
				else
					therest = "";
			}
			else
			{
				ampmIndicator = new String();
				therest = new String();
			}
		}
		else
		{
			lastValue = new String(lastElement.substring(0, 1));
			if(lastElement.length >= 2)
			{
				if(lastElement.length >= 4)
				{
					ampmIndicator = new String(Trim(lastElement.substring(2, 4)));
					therest = new String(Trim(lastElement.substring(4, lastElement.length)));
				}
				else
				{
					ampmIndicator = new String(Trim(lastElement.substring(2, lastElement.length)));
					therest = "";
				}
			}
			else
			{
				ampmIndicator = new String();
				therest = new String();
			}
		}
		ampmIndicator = ampmIndicator.toUpperCase();
		therest = " " + therest.toUpperCase();
		
		if(isNaN(parseInt(lastValue)))
			return false;
		var num = parseInt(lastValue);
		if(!((num >= 0) && (num <= 59)))
			return false;
			
		if(ampmIndicator.length > 0)
			if(!( ampmIndicator == "AM" || ampmIndicator == "PM"))
				return false;
	}
					
	sMiddle = lastElement.split(" ")[0];
	if(middleElement != "")
		middleElement = middleElement + ":";
	if(ampmIndicator == "")
		(firstElement >= 12)?ampmIndicator="PM":ampmIndicator="AM";
	else
		(firstElement >= 12 && ampmIndicator=="AM")?ampmIndicator="PM":ampmIndicator=ampmIndicator;
			
	if(firstElement > 12)
		return (Field.value = firstElement-12 + ":" + middleElement + sMiddle + " " + ampmIndicator + therest);
	else
		return (Field.value = firstElement + ":" + middleElement + sMiddle + " " + ampmIndicator + therest);
}

function OptionalZipCodeFunction(Field)
{
	if(Trim(Field.value) == "")
		return true;
	var supported = 0;
	if(window.RegExp)
	{
		var tempStr = "a";
		var tempReg = new RegExp(tempStr);
		if(tempReg.test(tempStr)) supported = 1;
	}
	if(supported)
		return /^\d{5}(\-?\d{4})?$/.test(Field.value);
	else
	{
		arrTemp = Field.value.split("-");
		if(arrTemp.length > 2)
			return false;
		if(arrTemp[0].length != 5 && arrTemp[0].length != 9)
			return false;
		if(arrTemp[1])
			if(arrTemp[1].length != 4)
				return false;
		var OKZip = "0123456789-";
		for(i=0; i<Field.length; i++)
		{
			var theChar = Field.charAt(i);
			if((OKZip.indexOf(theChar) == -1))
				return false;
		}
	}
}

function PasswordConfirmMatch(Field, Value)
{
	if(Field.value != eval(Value))
		return false;
	return true;
}

function RadioSelectedFunction(Field)
{
	isSelected = false;
	if(Field.length)
	{
		for(var i=0; i<Field.length; i++)
		{
			if(Field[i].checked)
				isSelected = true;
		}
	}
	else
	{
		if(Field.checked)
			isSelected = true;
	}
	return isSelected;
}

function RequiredCreditCardNumberFunction(Field)
{
	Field.value = '' + Field.value;

	if (Field.value.length > 16 || Field.value.length < 13 ) return false;
	else
	{
		if (isNaN(parseInt(Field.value))) return false;
	
		// calculate checksum using mod10
		var checksum = 0;
		for(var i=Field.value.length-1; i>=0; i--)
		{
			var isOdd = ((Field.value.length-i) % 2 != 0)?true:false;
			digit = Field.value.charAt(i);
			
			if(isOdd)
				checksum += parseInt(digit);
			else
			{
				var evenDigit = parseInt(digit) * 2;
				if(evenDigit >= 10)
					checksum += 1 + (evenDigit - 10);
				else
					checksum += evenDigit;
			}
		}
		if((checksum % 10) == 0) return true;
		return false;
	}
}
function RequiredDateFunction(Field)
{
	if(Trim(Field.value) == "")
		return false;
	var inputStr = Trim(Field.value);
	if(window.RegExp && /a/.test("a"))
	{
		re = /^(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/;
		if(!re.test(Field.value)){
			return false;}
		else
		{
			re2 = /^(\d\d?)\/(\d\d?)\/(\d{2})?(\d{2})$/;
			arrResults = re2.exec(Trim(Field.value));
			dMonth = arrResults[1];
			dDay = arrResults[2];
			dYear1 = arrResults[3];
			dYear2 = arrResults[4];
			if(dYear1 == "")
				(dYear2 >= 90)?dYear1 = "19":dYear1 = "20";
			return(Field.value=dMonth + "/" + dDay + "/" + dYear1 + dYear2);
		}
	}
	else
	{
		inputStr = inputStr.replace(/-/g,"/");
		var delim1 = inputStr.indexOf("/");
		var delim2 = inputStr.lastIndexOf("/");
		if(delim1 != -1 && delim1 == delim2)
			return false;
		if(delim1 != -1)
		{
			var mm = parseInt(inputStr.substring(0,delim1),10);
			var dd = parseInt(inputStr.substring(delim1 + 1,delim2),10);
			var yyyy = parseInt(inputStr.substring(delim2 + 1, delim2 + 5),10);
		}
		else
		{
			var mm = parseInt(inputStr.substring(0,2),10);
			var dd = parseInt(inputStr.substring(2,4),10);
			var yyyy = parseInt(inputStr.substring(delim2 + 1, delim2 + 5),10);
		}
					
		if(isNaN(parseInt(mm)) || isNaN(dd) || isNaN(yyyy))
			return false;
		if(mm < 1 || mm > 12)
			return false;
		if(dd < 1 || dd > 31)
			return false;
		if(yyyy < 100)
			if(yyyy >= 50)
				yyyy += 1900;
			else
				yyyy += 2000;
		else if(yyyy < 1900)
			return false;
					  
		if ((mm == 4 || mm == 6 || mm == 9 || mm == 11) && dd > 30)
			return false;
		else if (dd > 31)
			return false;
		if(mm == 2)
		{
			if (yyyy % 4 == 0)
				if (yyyy % 100 == 0)
					if (yyyy % 400 == 0)
						NumDays = 29;
					else
						NumDays = 28;
				else
					NumDays = 29;
			else
				NumDays = 28;
			if (dd > NumDays)
				return false;
		}
						
		return (Field.value = mm + "/" + dd + "/" + yyyy);
	}
}

function RequiredEmailFunction(Field)
{
	if(Trim(Field.value) == "")
		return false;

	if(!(window.RegExp && /a/.test("a")))
		return (Field.value.indexOf('.') > 2) && (Field.value.indexOf('@') > 0);
	var r1 = new RegExp('(@.*@)|(\\.\\.)|(@\\.)|(^\\.)');
	var r2 = new RegExp('^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$');
	return (!r1.test(Field.value) && r2.test(Field.value));
}
function RequiredFileFunction(Field)
{
	if(Trim(Field.value) == "")
		return false;
		
	return true;
}

function RequiredFloatFunction(Field)
{
	if(!isNaN(parseFloat(Trim(Field.value))))
		Field.value = parseFloat(Trim(Field.value));
	if(Trim(Field.value) == "")
		return false;
	if(isNaN(parseFloat(Trim(Field.value))))
		return false;
	return true;
}
function RequiredIntegerFunction(Field)
{
	if(!isNaN(parseInt(Trim(Field.value))))
		Field.value = parseInt(Trim(Field.value));
	if(Trim(Field.value) == "")
		return false;
	if(isNaN(parseInt(Field.value)))
		return false;
	return true;
}
function RequiredMACAddressFunction(Field)
{
	if(Trim(Field.value) == "")
		return false;
	var supported = 0;
	if(window.RegExp)
	{
		var tempStr = "a";
		var tempReg = new RegExp(tempStr);
		if(tempReg.test(tempStr)) supported = 1;
	}
	if(supported)
		return /^[A-Za-z]{1}\d{4}\-\d{2}[A-Za-z0-9]{1}$/.test(Field.value);
	else
	{
		arrTemp = Field.value.split("-");
		if(arrTemp.length > 2)
			return false;
		if(arrTemp[0].length != 5)
			return false;
		if(arrTemp[0].toUpperCase().charCodeAt(0) < 65 ||  arrTemp[0].toUpperCase().charCodeAt(0) > 90)
			return false;
		if(arrTemp[1])
			if(arrTemp[1].length != 3)
				return false;
		var okMAC = "0123456789-";
		for(i=1; i<Field.value.length; i++)
		{
			if(i==Field.value.length-1)  //  last character may be alpha or digit
			{
				okMAC_LastChar = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
				var theChar = Field.value.charAt(i);
				if(okMAC_LastChar.indexOf(theChar) == -1)
					return false;
			}
			else
			{
				var theChar = Field.value.charAt(i);
				if(okMAC.indexOf(theChar) == -1)
					return false;
			}
		}
		return true;
	}
}

function RequiredMMDDDateFunction(Field)
{
	if(Trim(Field.value) == "")
		return false;
	var inputStr = Trim(Field.value);
	if(window.RegExp && /a/.test("a"))
	{
		re = /^(\d\d?)\/(\d\d?)$/;
		if(!re.test(Field.value)){
			return false;}
		else
		{
			re2 = /^(\d\d?)\/(\d\d?)$/;
			arrResults = re2.exec(Trim(Field.value));
			dMonth = arrResults[1];
			dDay = arrResults[2];
			return(Field.value=dMonth + "/" + dDay );
		}
	}
	else
	{
		inputStr = inputStr.replace(/-/g,"/");
		var delim1 = inputStr.indexOf("/");
		var delim2 = inputStr.lastIndexOf("/");
		if(delim1 != -1 && delim1 == delim2)
			return false;
		if(delim1 != -1)
		{
			var mm = parseInt(inputStr.substring(0,delim1),10);
			var dd = parseInt(inputStr.substring(delim1 + 1,delim2),10);
		}
		else
		{
			var mm = parseInt(inputStr.substring(0,2),10);
			var dd = parseInt(inputStr.substring(2,4),10);
		}
					
		if(isNaN(parseInt(mm)) || isNaN(dd) || isNaN(yyyy))
			return false;
		if(mm < 1 || mm > 12)
			return false;
		if(dd < 1 || dd > 31)
			return false;
					  
		if ((mm == 4 || mm == 6 || mm == 9 || mm == 11) && dd > 30)
			return false;
		else if (dd > 31)
			return false;
		if(mm == 2)
		{
			NumDays = 29;
			if (dd > NumDays)
				return false;
		}
						
		return (Field.value = mm + "/" + dd );
	}
}

function RequiredMultiSelectFunction(Field)
{
	var count = 0;
	
	for(var i=0; i < Field.length;i++)
	{
		if(Field[i].selected)
			count++;
	}
	
	if(count > 0) return true;
	
	return false;
}

function RequiredPasswordFunction(Field)
{
	if(Trim(Field.value) == "")
		return false;
		
	return true;
}

function RequiredPhoneNumberFunction(Field)
{
	if(Trim(Field.value) == "")
		return false;
	if(window.RegExp && /a/.test("a"))
	{
		Field2 = Field.value.replace(/[^0-9]/gi, "");
		if(Field2.length != 10)
			return false;
		else
			return (Field.value = Field2.substr(0,3) + "." + Field2.substr(3,3) + "." + Field2.substr(6,4));
	}
	else
	{
		sNewValue = "";
		for(var i=0; i<Field.value.length; i++)
			if("0123456789".indexOf(Field.value.charAt(i)) != -1) sNewValue += Field.value.charAt(i);
		if(sNewValue.length != 10)
			return false;
		else
			return (Field.value = sNewValue.substr(0,3) + "." + sNewValue.substr(3,3) + "." + sNewValue.substr(6,4));
	}
}

function RequiredRangeFloatFunction(Field, OptionalParams)
{
	if(Trim(Field.value) == "")
		return false;
	if(OptionalParams)
	{
		arrTemp = OptionalParams.split("-");
		if(arrTemp.length != 2)
			return false;
		Lower = parseInt(arrTemp[0]);
		Upper = parseInt(arrTemp[1]);
		if(isNaN(Lower) || isNaN(Upper))
			return false;
	}
	if(isNaN(parseFloat(Field.value)))
		return false;
	return (parseFloat(Field.value) >= Lower && parseFloat(Field.value) <= Upper);
}

function RequiredRangeIntegerFunction(Field, OptionalParams)
{
	if(Trim(Field.value) == "")
		return false;
	if(OptionalParams)
	{
		arrTemp = OptionalParams.split("-");
		if(arrTemp.length != 2)
			return false;
		Lower = parseInt(arrTemp[0]);
		Upper = parseInt(arrTemp[1]);
		if(isNaN(Lower) || isNaN(Upper))
			return false;
	}
	if(isNaN(parseInt(Field.value)))
		return false;
	return (parseInt(Field.value) >= Lower && parseInt(Field.value) <= Upper);
}

function RequiredSSNFunction(Field)
{
	if(Trim(Field.value) == "")
		return false;
	sValue = "";
	for(var i=0; i<Field.value.length; i++)
		if("0123456789".indexOf(Field.value.charAt(i)) != -1) sValue += Field.value.charAt(i);
	if(!isNaN(parseInt(sValue)) && sValue.length == 9)
		return (Field.value = sValue.substr(0,3) + "-" + sValue.substr(3,2) + "-" + sValue.substr(5,4));
	else
		return false;
}

function RequiredTextareaFunction(Field)
{
	if(Trim(Field.value) == "")
		return false;
	
	return true;
}
function RequiredTextFunction(Field)
{
	if(Trim(Field.value) == "")
		return false;
	return true;
}
function RequiredTimeFunction(Field)
{
	var theString = new String(Trim(Field.value));
	if(Trim(theString) == "")
		return false;

	if(window.RegExp && /a/.test("a"))
	{
		re = /^([01]?\d|2[0-3]):([0-5]\d):?([0-5]\d)?(\sam|\sAM|\spm|\sPM)?$/;
		if(!re.exec(theString))
			return false;
		firstElement = RegExp.$1
		lastElement = RegExp.$2;
		middleElement = "";
		if(RegExp.$3 != "")
			lastElement = lastElement + ":" + RegExp.$3;
		ampmIndicator = Trim(RegExp.$4).toUpperCase();
		therest = ""
	}
	else
	{
		var theElements = theString.split(':');
		if(theElements.length != 2 && theElements.length != 3)
			return false;
			
		var firstElement = new String(theElements[0])
		firstElement = Trim(firstElement);
		var middleElement = "";
		if(theElements.length == 3)
		{
			middleElement = new String(theElements[1])
			middleElement = Trim(middleElement);
		}
		var lastElement = new String(theElements[theElements.length - 1])
		lastElement = Trim(lastElement);

		if(isNaN(parseInt(firstElement)))
			return false;
		var num = parseInt(firstElement);
			if(!((num >= 0) && (num <= 23)))
				return false;
			
		if(theElements.length == 3)
		{
			if(isNaN(parseInt(middleElement)))
				return false;
			var num = parseInt(middleElement);
			if(!((num >= 0) && (num <= 59)))
				return false;
		}
				
		if(!(lastElement.charAt(1) >= "0") && (lastElement.charAt(1) <= "9"))
			return false;
			
		var lastValue;
		var ampmIndicator;
		if((lastElement.charAt(1) >= "0") && (lastElement.charAt(1) <= "9"))
		{
			lastValue = new String(lastElement.substring(0, 2));
			if(lastElement.length >= 3)
			{
				ampmIndicator = new String(Trim(lastElement.substring(3, 5)));
				if(lastElement.length >= 5)
					therest = new String(Trim(lastElement.substring(5, lastElement.length)));
				else
					therest = "";
			}
			else
			{
				ampmIndicator = new String();
				therest = new String();
			}
		}
		else
		{
			lastValue = new String(lastElement.substring(0, 1));
			if(lastElement.length >= 2)
			{
				if(lastElement.length >= 4)
				{
					ampmIndicator = new String(Trim(lastElement.substring(2, 4)));
					therest = new String(Trim(lastElement.substring(4, lastElement.length)));
				}
				else
				{
					ampmIndicator = new String(Trim(lastElement.substring(2, lastElement.length)));
					therest = "";
				}
			}
			else
			{
				ampmIndicator = new String();
				therest = new String();
			}
		}
		ampmIndicator = ampmIndicator.toUpperCase();
		therest = " " + therest.toUpperCase();
		
		if(isNaN(parseInt(lastValue)))
			return false;
		var num = parseInt(lastValue);
		if(!((num >= 0) && (num <= 59)))
			return false;
			
		if(ampmIndicator.length > 0)
			if(!( ampmIndicator == "AM" || ampmIndicator == "PM"))
				return false;
	}
					
	sMiddle = lastElement.split(" ")[0];
	if(middleElement != "")
		middleElement = middleElement + ":";
	if(ampmIndicator == "")
		(firstElement >= 12)?ampmIndicator="PM":ampmIndicator="AM";
	else
		(firstElement >= 12 && ampmIndicator=="AM")?ampmIndicator="PM":ampmIndicator=ampmIndicator;
			
	if(firstElement > 12)
		return (Field.value = firstElement-12 + ":" + middleElement + sMiddle + " " + ampmIndicator + therest);
	else
		return (Field.value = firstElement + ":" + middleElement + sMiddle + " " + ampmIndicator + therest);
}

function RequiredZipCodeFunction(Field)
{
	if(Trim(Field.value) == "")
		return false;
	var supported = 0;
	if(window.RegExp)
	{
		var tempStr = "a";
		var tempReg = new RegExp(tempStr);
		if(tempReg.test(tempStr)) supported = 1;
	}
	if(supported)
		return /^\d{5}(\-?\d{4})?$/.test(Field.value);
	else
	{
		arrTemp = Field.value.split("-");
		if(arrTemp.length > 2)
			return false;
		if(arrTemp[0].length != 5 && arrTemp[0].length != 9)
			return false;
		if(arrTemp[1])
			if(arrTemp[1].length != 4)
				return false;
		var OKZip = "0123456789-";
		for(i=0; i<Field.length; i++)
		{
			var theChar = Field.charAt(i);
			if((OKZip.indexOf(theChar) == -1))
				return false;
		}
	}
}

function SelectNotEqualTo(Field, Value)
{
	if(Trim(Value) == "")
		return false;
	
	if(Field[Field.selectedIndex].value == Value)
		return false;
	
	return true;
}
function TextareaMaxLengthFunction(Field, Value)
{
	max = parseInt(Value);
	if(isNaN(max))
		return false;

	if(Field.value.length > max)
		return false;	
	
	return true;
}
function Trim(sString)
{
	return TrimLeading(TrimTrailing(sString));
}
function TrimLeading(sString)
{
	if(sString && sString != "") 
	{
		var strchar = sString.charAt(0);
		while(strchar == ' ')
		{
			sString = sString.substr(1);
			strchar = sString.charAt(0);
		}
	}
		return sString;
}
function TrimTrailing(sString)
{
	if(sString && sString != "") 
	{
		var strchar = sString.charAt(sString.length - 1);
		while(strchar == ' ')
		{
			sString = sString.substr(0,sString.length - 1);
			strchar = sString.charAt(sString.length - 1);
		}
	}
	return sString;
}



