function AddFieldForVal(ItemId, ItemName, ValType, MinLength, MaxLength)
	{
		arrVal[arrVal.length] = new Array(ItemId, ItemName, ValType, MinLength, MaxLength);
	}
	
	function validateForm(objForm)
	{
		for(iIndex in arrVal)
		{
			if(!validateField(arrVal[iIndex]))
				return false;
		}
		return true;
	}
	
	function validateField(arrEle)
	{
			// Get the values from the Element's array
			var sItemId = arrEle[0];
			var sItemName = arrEle[1];
			var sValType = arrEle[2];
			var iMinLength = arrEle[3];
			var iMaxLength = arrEle[4];
			
			// try to get hold of the object
			try{ var oEle = document.getElementById(sItemId);}
			catch(e){	var oEle = null;}
			if(oEle)
			{
				var sValue = oEle.value;
				resetField(oEle);
				// First check for Min Length
				if(iMinLength > 0 && sValue.length < iMinLength)
				{
						if(iMinLength == 1)
							var strMessage = "The " + sItemName + " field is required and was left blank. Please enter a value.";
						else
							var strMessage = "The " + sItemName + " field must be at least " + iMinLength + " characters in length. Please enter a longer value.";
							
						throwError(oEle, strMessage)
						return false;
				}
				
				// Then Check for Max Length
				if(iMaxLength > 0 && sValue.length > iMaxLength)
				{
					var strMessage = "The " + sItemName + " field must be no more than " + iMinLength + " characters in length. Please enter a shorter value.";
					throwError(oEle, strMessage)
					return false;
				}
				
				if(sValue.length > 0)
				{
					// Now check against Validation Regular Expression
					var regEx = getRegExFromTypeCode(sValType);
					if(!sValue.match(regEx))
					{
						//Failed RegEx check
						var strMessage = "The " + sItemName + " field does not appear valid and/or contains characters that are not allowed.";
						throwError(oEle, strMessage)
						return false;
						
					}
				}
				
			}
			else
			{
				// can't attach to the object so we'll have to skip it.
			}
			return true; //Passes Inspection
	}
	
	function throwError(oEle, Message)
	{
		oEle.focus();
		oEle.select();
		if(!strErrBGColor || strErrBGColor.length < 7)
			strErrBGColor = "#FFFF99";
		oEle.style.backgroundColor = strErrBGColor;
		alert(Message);
	}
	
	function resetField(oEle)
	{
		oEle.style.backgroundColor = "";
	}
	
	function getRegExFromTypeCode(strCode)
	{
			var regEx = null;
			switch(strCode.toLowerCase())
			{
				case "text":
					regEx = /^[\w$()*+?'";:,.!@#%&_ \t\-]*$/ig;
					break;
				case "integer":
					regEx = /^[\d]*$/ig;
					break;
				case "currency":
					regEx = /^[$]?[\d,]*[.]?[\d]*$/ig;
					break;
				case "name":
					regEx = /^[A-Za-z .'"]*$/ig;
					break;
				case "account":
					regEx = /^[\d- ]*$/ig;
					break;
				case "code":
					regEx = /^[\w- ]*$/ig;
					break;
				case "address":
					regEx = /^[\w #'"();,.-]*$/ig;
					break;
				case "decimal":
					regEx = /^[\d.]*$/ig;
					break;
				case "email":
					regEx = /^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/ig;
					break;
				case "phone":
					regEx = /^\(?[0-9]{0,3}\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}$/ig;
					break;
				case "date":
					regEx = /^(0?[1-9]|1[012])[- \x2F.](0?[1-9]|[12][0-9]|3[01])[- \x2F.](19|20)?[0-9]{2}$/ig;
					break;
				case "time":
					regEx = /^[\d]{1,2}[:][\d]{1,2}[ ]?[amp]{0,2}$/ig;
					break;
				case "datetime":
					regEx = /^[\d-:.amp \x2F]*$/ig;
					break;
				default:
					regEx = /^[\w$()*+?'";:,!@#%&_ \t\-]*$/ig;
					break;
			}
			return regEx;
	}