function isInt(num)
{
   return (num!="" && !isNaN(num) && (num/1)==parseInt(num));
}

function isValidState(input)
{
   var states = new Array("AL","AK","AZ","AR","CA","CO","CT","DC","DE","FL","GA","HI","ID","IL","IN","IA","KS","KN","LA","ME","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY");
   for (i = 0; i < states.length; i++) {if (input.toUpperCase() == states[i]) {return true;}}
   return false;
}

function isValidZip(input)
{
   if (input.match(/^\d{5}$/) || input.match(/^\d{5}-\d{4}$/)) {return true;}
   else {return false;}
}

function isValidCurrency(input)
{
   if (input.match(/^-{0,1}\d+$/) || input.match(/^-{0,1}\d*\.\d{2}$/)) {return true;}
   else {return false;}
}

function isValidFloat(input,precision)
{
   var scalar = Math.pow(10,precision);
   var isInteger = isInt(input);
   var isFloat = isInt(input*scalar);
   if (isInteger || isFloat) {return true;}
   else {return false;}
}

function isValidPhone(input)
{
   var phone = input
   phone = phone.replace(/\D/g, '');
   if (phone.length != 10) {return "";}
   else
   {
      // format
      var c1 = phone.match(/^(\d{3})\d+$/);
      var c2 = phone.match(/^\d{3}(\d{3})\d{4}$/);
      var c3 = phone.match(/^\d+(\d{4})$/);
      return +c1[1]+"-"+c2[1]+"-"+c3[1];
   }
}

function isValidEmail(input)
{
   var email = input;
   if (email.indexOf('@') < 1 ||
       email.lastIndexOf('.') <= email.indexOf('@') + 1 ||
       email.lastIndexOf('.') == email.length - 1 ||
       email.indexOf(' ') != -1)
   {
      return false;
   }
   else {return true;}
}
