function validateform()
{
	var arrFields;
	var i = 0;
	
	if (document.getElementById('hdnfields') != 'undefined')
	{
		arrFields = document.getElementById('hdnfields').value.split(',');
		for (i = 0; i < arrFields.length; i++)
		{
			if (document.getElementById(arrFields[i]) != 'undefined')
			{
				if (document.getElementById(arrFields[i]).value != '')
				{
					switch(document.getElementById(arrFields[i]).fieldtype)
					{
						case '1':	
							if (!isNumeric(document.getElementById(arrFields[i]).value))
							{
								alert(document.getElementById(arrFields[i]).caption + ' is not numeric.');
								document.getElementById(arrFields[i]).focus();
								return false; 
							}
							break;
						case '2':	
							if (!isDate(document.getElementById(arrFields[i])))
							{
								alert(document.getElementById(arrFields[i]).caption + ' is not a valid date.');
								document.getElementById(arrFields[i]).focus();
								return false; 
							}
							break;
						case '3':	
							if (!isEmailAddress(document.getElementById(arrFields[i]).value))
							{
								alert(document.getElementById(arrFields[i]).caption + ' is not a valid email address.');
								document.getElementById(arrFields[i]).focus();
								return false;							
							}
							break;
						case '4':	
							if (!isPhoneNumber(document.getElementById(arrFields[i]).value))
							{	alert(document.getElementById(arrFields[i]).caption + ' is not a valid phone number.');
								document.getElementById(arrFields[i]).focus();
								return false;									
							}
							break;
						case '7':	
							if ((!isNumeric(document.getElementById(arrFields[i]).value)) ||
								(!isNumeric(document.getElementById(arrFields[i] + '_inches').value)))
							{	
								alert(document.getElementById(arrFields[i]).caption + ' is not a valid height.');
								document.getElementById(arrFields[i]).focus();
								return false;									
							}
							else
							{
								if ((document.getElementById(arrFields[i]).value > 7) || 
									(document.getElementById(arrFields[i] + '_inches').value > 11))
								{
									alert(document.getElementById(arrFields[i]).caption + ' is not a valid height.');
									document.getElementById(arrFields[i]).focus();
									return false;		
								}
							}
							break;
					}
				}
				else if (document.getElementById(arrFields[i]).isrequired == 'true')
				{
					alert(document.getElementById(arrFields[i]).caption + ' is required.  Please enter a value.');
					document.getElementById(arrFields[i]).focus();
					return false;
				}
			}
		}
	}
	
	return true;
}

function isDate(fld) {
    var RegExPattern = /^(?=\d)(?:(?:(?:(?:(?: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}))($|\ (?=\d)))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$/;
    var errorMessage = 'Please enter valid date as month, day, and four digit year.\nYou may use a slash, hyphen or period to separate the values.\nThe date must be a real date. \nFormat mm/dd/yyyy.';
	if ((fld.value.match(RegExPattern)) && (fld.value!='')) {
        return true;
    } else {
        alert(errorMessage);
        fld.focus();
        return false;
    } 
}

function isNumeric(sText)
{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
   
}

function isEmailAddress(addr)
{
	var atPos;
	var allvalid = true;
	if (addr.length == 0)
		return true;
	atPos = addr.indexOf("@");
	if (atPos == -1)
		return false;
	if (	(addr.indexOf(" ") != -1) ||
		(addr.indexOf("/") != -1) ||
		(addr.indexOf(";") != -1) ||
		(addr.indexOf(":") != -1) ||
		(addr.indexOf(",") != -1) ||
		(addr.indexOf("<") != -1) ||
		(addr.indexOf(">") != -1) )
		return false;
	else
		if ((addr.indexOf("@", atPos+1) != -1) || (addr.indexOf(".",atPos) == atPos+1) || (addr.indexOf(".",atPos) == -1))
			return false;
	return (true); 
}

function isPhoneNumber(theField)
{ 
	var CleanedString=""; 
	var index = 0; 
	var ch;
	var checkOK = "0123456789"; 

	if (theField.length == 0)
		return true;

	while (index <= theField.length)
		{
	    ch = theField.charAt(index);
		for (j = 0;  j < checkOK.length;  j++)
			{
			if (ch == checkOK.charAt(j))
				{
				CleanedString = CleanedString + ch;
		        break;
		        }
			}
			index = index + 1;
		}

	if (CleanedString.length == 10)
		{
		return "(" + CleanedString.substring(0,3) + ") " + CleanedString.substring(3,6) + "-" + CleanedString.substring(6,10);
		}
 
	else
		return false;
} 

function numbersonly(evt)
{
 var charCode = (evt.which) ? evt.which : event.keyCode
 if (charCode > 31 && (charCode < 48 || charCode > 57))
	return false;

 return true;
}
