
function validateExists(field)
{
  var exec = 'document.'+field+'.value'
  val = eval(exec)
  if(val.length == 0) return false;
}

function validatePhone(field)
{
  var exec = 'document.'+field+'.value'
  val = eval(exec)
  
  if(!checkPhone(val))
    alert("Please enter phone number in the format\n408-555-1212 (numbers and dashes only)");
}

function validateZip(field)
{
  var exec = 'document.'+field+'.value'
  val = eval(exec)
  
  if(!checkZip(val))
    alert("Please enter Zip Code in the format\n01234 or 01234-5678 (numbers and dashes only)");
}

function validateDate(field)
{
  var exec = 'document.'+field+'.value'
  val = eval(exec)
  
  if(!checkDate(val))
    alert("Please enter a valid date in the format \nMM/DD/YYYY (numbers and slashes only)");
}

///////////////////////////////////////////
// Helper functions only below this line //
///////////////////////////////////////////

function onError(message)
{
  alert(message);
  return false;	
}

function checkInteger(val)
{
  if (val.length == 0)
    return true;

  var decimal_format = ".";
  var check_char;

  check_char = val.indexOf(decimal_format)

  if (check_char < 1)
    return checkNumber(val);
  else
    return false;
}


function numberRange(val, min, max)
{
  if (min != null)
  {
    if (val < min)
      return false;
  }

  if (max != null)
  {
    if (val > max)
      return false;
  }
	
  return true;
}


function checkNumber(val)
{
  if (val.length == 0)
    return true;

  var start_format = " .+-0123456789";
  var number_format = " .0123456789";
  var check_char;
  var decimal = false;
  var trailing_blank = false;
  var digits = false;

  check_char = start_format.indexOf(val.charAt(0))

  if (check_char == 1)
    decimal = true;
  else if (check_char < 1)
    return false;
        
  for (var i = 1; i < val.length; i++)
  {
    check_char = number_format.indexOf(val.charAt(i))
    if (check_char < 0)
      return false;
    else if (check_char == 1)
    {
      if (decimal)
        return false;
      else
        decimal = true;
    }
    else if (check_char == 0)
    {
      if (decimal || digits)	
        trailing_blank = true;
    }
    else if (trailing_blank)
      return false;
    else
      digits = true;
  }	
  return true
}


function checkRange(val, min, max)
{
  if (val.length == 0)
    return true;

  if (checkNumber(val))
  {
    return false;
  }
  else
  {
    return (numberRange((eval(val)), min, max));
  }
	
  return true;
}


function checkPhone(val)
{
  if (val.length == 0)
    return true;
		
  if (val.length != 12)
    return false;

  if (!checkNumber(val.substring(0,3)))
    return false;
  else if (!numberRange((eval(val.substring(0,3))), 100, 1000))
      return false;

  if (val.charAt(3) != "-")
    return false

  if (!checkNumber(val.substring(4,7)))
    return false;
  else if (!numberRange((eval(val.substring(4,7))), 100, 1000))
    return false;
	
  if (val.charAt(7) != "-")
    return false;

  if (val.charAt(8) == "-" || val.charAt(8) == "+")
    return false;
  else
  {
    return (checkInteger(val.substring(8,12)));
  }
}


function checkZip(val)
{
  if (val.length == 0)
    return true;
		
  if (val.length != 5 && val.length != 10)
    return false;

  if (val.charAt(0) == "-" || val.charAt(0) == "+")
    return false;

  if (!checkInteger(val.substring(0,5)))
    return false;

  if (val.length == 5)
    return true;
	
  if (val.charAt(5) != "-")
    return false;

  if (val.charAt(6) == "-" || val.charAt(6) == "+")
    return false;

  return (checkInteger(val.substring(6,10)));
}


function checkDate(val)
{
  if(val.length == 0)
    return true;

  if(val.length != 10)
    return false;

  if (!checkNumber(val.substring(0,2)))
    return false;
  else if (!numberRange((eval(val.substring(0,2))), 0, 13))
      return false;

  if (val.charAt(2) != "/")
    return false

  if (!checkNumber(val.substring(3,5)))
    return false;
  else if (!numberRange((eval(val.substring(3,5))), 0, 32))
    return false;
	
  if (val.charAt(5) != "/")
    return false;

  if (val.charAt(6) == "-" || val.charAt(6) == "+")
    return false;
  else if(!checkInteger(val.substring(6,10)))
    return false;

  return numberRange(eval(val.substring(6,10)), 1900, 2010);
}
