// function to valdiate a number
function validateNumber(sText)
{
  var ValidChars = "0123456789.,";
  var IsNumber=true;
  var Char;
  for (var i = 0; i < sText.length && IsNumber == true; i++)
  {
    Char = sText.charAt(i);
    if(ValidChars.indexOf(Char) == -1)
    {
      IsNumber = false;
    }
  }
  return IsNumber;
}


// function to valdiate a phone number
function validatePhone(sText)
{
  var ValidChars = "0123456789-() ";
  var IsPhone=true;
  var Char;
  var count=0;
  for (var i = 0; i < sText.length && IsPhone == true; i++)
  {
    Char = sText.charAt(i);
    if(ValidChars.indexOf(Char) == -1)
    {
      IsPhone = false;
    }
    if(validateNumber(Char))
    {
      count++;
    }
  }
  if(count != 10)
  {
    IsPhone = false;
  }
  return IsPhone;
}


// function to valdiate an email address
function validateEmail(sText)
{
var emailFilter=/^.+@.+\..{2,3,4,6}$/;
  if (!((sText.indexOf(".") > 2) && (sText.indexOf("@") > 0))) 
  {
    return false;
  } else {
    return true;
  }
}


// function to validate dates
function validateDate(sText)
{
  var validformat=/^\d{2}\/\d{2}\/\d{4}$/ //Basic check for format validity
  if (!validformat.test(sText))
    return "is not in the correct date format";
  else{ //Detailed check for valid date ranges
    var monthfield=sText.split("/")[0]
    var dayfield=sText.split("/")[1]
    var yearfield=sText.split("/")[2]
    var dayobj = new Date(yearfield, monthfield-1, dayfield)
    if ((dayobj.getMonth()+1!=monthfield)||(dayobj.getDate()!=dayfield)||(dayobj.getFullYear()!=yearfield))
      return "has an invalid day, month, or year range";
    }
  return "";
}

// function to validate zip codes
function validateZip(sText) 
{
  var valid = "0123456789-";
  var hyphencount = 0;
  
  if (sText.length!=5 && sText.length!=10) 
    return "Please enter your 5 digit or 5 digit+4 zip code.";

  for (var i=0; i < sText.length; i++) 
  {
    temp = "" + sText.substring(i, i+1);
    if (temp == "-") hyphencount++;
    if (valid.indexOf(temp) == "-1") 
      return "Invalid characters in your zip code.  Please try again.";

    if ((hyphencount > 1) || ((sText.length==10) && ""+sText.charAt(5)!="-")) 
      return "The hyphen character should be used with a properly formatted 5 digit+four zip code, like '12345-6789'. Please try again.";
  }
  return "";
}

// function to validate a SSN
function validateSSN(sText) 
{
  var matchArr = sText.match(/^(\d{3})-?\d{2}-?\d{4}$/);
  var numDashes = sText.split('-').length - 1;
  if (matchArr == null || numDashes == 1) 
  {
    return "Invalid SSN. Must be 9 digits or in the form NNN-NN-NNNN.";
  }
  else 
  if (parseInt(matchArr[1],10)==0) 
  {
    return "Invalid SSN: SSN's can't start with 000.";
  }
    return "";
}

