	function ValidatePage()
	{
		var bValid = true;
		var oItem;
		var oElement;
	
		for(var i=0;i<document.all.length;++i)
		{
			oItem = document.all(i);
			if( oItem.tagName.toUpperCase() == "INPUT" )
			{
				if( ValidateRequiredField(oItem) )
				{
					if( !ValidateFieldType(oItem) )
					{
						bValid = false;
					}
				}
				else
					bValid = false;
			}
			else if(oItem.tagName.toUpperCase() == "FORM" )
			{
				for(var j=0;j<oItem.elements.length;++j)
				{
					oElement = oItem.elements(j);

					if( oElement.type.toUpperCase() == "SELECT-ONE" )
					{
						if( ValidateRequiredField(oElement) )
						{
							if( !ValidateFieldType(oElement) )
							{
								bValid = false;
							}
						}
						else
							bValid = false;
					}
				}
			}
		}
	
		return bValid;
	}
	
	function ValidateRequiredField(oItem)
	{
		var bValid = true;
		
		if( oItem.Required != null )
		{
			if( oItem.value.length <  1 )
			{
				SetItemInvalid(oItem, "Item is Required" );
				bValid = false;
			}
			else
			{
				SetItemValid(oItem);
			}
		}
		
		return bValid;
	}
	
	function ValidateFieldType(oItem)
	{
		if( oItem.DataType != null )
		{
			switch( oItem.DataType.toLowerCase() )
			{
				case "date":
					if( !ValidateDate(oItem.value) )
					{
						SetItemInvalid( oItem, "Invalid Date Type Entered");
						return false;
					}
					else
					{
						SetItemValid( oItem );
						return true;
					}
				break;

				case "time":
					if( !ValidateTime( oItem.value ) )
					{
						SetItemInvalid( oItem, "Invalid Time Entered: Sample: 16:23");
						return false;
					}
					else
					{
						SetItemValid( oItem );
						return true;
					}
				break;
				
				case "int":
					if( !ValidateInt(oItem.value) )
					{
						SetItemInvalid( oItem, "Invalid Integer Type Entered");
						return false;
					}
					else
					{
						SetItemValid( oItem );
						return true;
					}
				break;
				
				default:
					alert("Invalid DataType Encountered: " + oItem.DataType );
					return false;
			}
		}
			
		return true;
	}
		
	
	function ValidateTime(strValue)
	{
		var strTest = strValue;
		
		if(strValue.length == 0)
			return true;
		
		var vTimeParts = strTest.split(":");
		if( ( new Number(vTimeParts[0]) > 23 ) || ( new Number(vTimeParts[1]) > 59) )
		{
			return false;
		}
		else
		{
			var vTest = new Date(1, 1, 2000, vTimeParts[0], vTimeParts[1] );
			if(  vTest == "NaN" )
			{
				return false;
			}
		}
		
		return true;
	}
	
	function ValidateDate( strValue )
	{
		if( strValue.length < 1 )
			return true;
			
		var vTest = new Date(strValue);
		if(  vTest == "NaN" )
		{
			return false;
		}
		
		return true;
	}
	
	function ValidateInt(strValue)
	{
		if( strValue.length == 0)
			return true;
			
		var vTest = new Number(strValue);
		if(  isNaN(vTest) )
		{
			return false;
		}
		
		return true;
	}
	
	
	function SetItemInvalid( oItem,  strToolTip )
	{
		oItem.style.backgroundColor = "gainsboro";
		oItem.title = strToolTip;
	}
	
	function SetItemValid( oItem )
	{
		oItem.style.backgroundColor = "white";
		oItem.title = "";
	}
	
