function ltrim(s) 
  {return s.replace( /^\s*/, "" );}
function rtrim(s) 
  {return s.replace( /\s*$/, "" );} 
function trim(s) 
  {return rtrim(ltrim(s));}

function isInteger(string)
{
  var i;
  for (i = 0; i < string.length; i++)
  {   
    var c = string.charAt(i);
    if (((c < "0") || (c > "9"))) return false;
  }
  return true;
}

function checkEmail()
  {return /^((([a-zA-Z0-9\-\_~])+(\.[a-zA-Z0-9\-\_~]+)*)|(\"([a-zA-Z0-9\-_\~])+((\.? ?)([a-zA-Z0-9\-_~])+)*\"))\@((\[((([0-9]{1,2})|([01][0-9]{2,2})|(2[0-4][0-9])|(25[0-5]))\.){3,3}(([0-9]{1,2})|([01][0-9]{2,2})|(2[0-4][0-9])|(25[0-5]))\])|(([a-zA-Z0-9\-\_~])+(\.[a-zA-Z0-9\-\_~]+)*(\.(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum|tv|[a-zA-Z]{2}))))$/;}

function checkPhone(string)
{
  var area = string.substring(0,3);
  var firstDash = string.substring(3,4);
  var first = string.substring(4,7);
  var secondDash = string.substring(7,8);
  var last = string.substring(8);
  if (!isInteger(area)) return false;
  if (!isInteger(first)) return false;
  if (!isInteger(last) | last.length > 4) return false;
  if (!(firstDash == "-") | !(secondDash == "-")) return false;
  return true
}

function validateRetrieveStart(f) 
{
  var temp = "";

  if (f == document.retrievePermit) //validate the retrievePermit form...
  {
    temp = trim(f.inPermitNum.value).toUpperCase();
    f.inPermitNum.value = temp;
    if (temp.length <= 3)
    {
      alert("Please enter a valid Permit Number.");
      f.inPermitNum.focus();
      return false;
    }
    return true;
  }
  else if (f == document.searchByAddress) //validate the searchByAddres form...
  {
    temp = trim(f.inStreetName.value).toUpperCase();
    f.inStreetName.value = temp;
    if (temp.length < 3)
    {
      alert("Please enter at least 3 characters in the Street Name field.");
      f.inStreetName.focus();
      return false;
    }
    temp = trim(f.inStreetNum.value);
    f.inStreetNum.value = temp;
    if (!isInteger(temp) | temp.length > 5)
    {
      alert("If entered, Street Number must be a 1 to 5 digit number.");
      f.inStreetNum.focus();
      return false;
    }
    return true;
  }
  else if (f == document.searchByTaxmap) //validate the searchByTaxmap form...
  {
    temp = trim(f.inTaxmap.value).toUpperCase();
    f.inTaxmap.value = temp;
    if (temp.length < 4)
    {
      alert("Please enter at least the first 4 digits of the Taxmap Number.");
      f.inTaxmap.focus();
      return false;
    }
    return true;
  }
  else
  {
    return false;
  }
}

function validateRequestInspection(f)
{
  var temp = "";

  //check requestorName...
  temp = trim(f.requestorName.value);
  f.requestorName.value = temp;
  if (temp.length <= 0) {
    alert("Requestor's name must be entered.");
    f.requestorName.focus();
    return false;
  }

  //check requestorPhone...
  temp = trim(f.requestorPhone.value);
  f.requestorPhone.value = temp;
  if(!checkPhone(temp)) {
    alert("Requestor's phone number must be entered in 999-999-9999 format.");
    f.requestorPhone.focus();
    return false;
  }

  //check requestorEmail...
  temp = trim(f.requestorEmail.value);
  f.requestorEmail.value = temp;
  if(!checkEmail().test(temp)) {
    alert("Requestor's email address must be entered in valid format (example: test@test.com).");
    f.requestorEmail.focus();
    return false;
  }
  
  return true;
}

function validatePermitsByMonth(f)
{
  var temp = "";

  //check inMonth...
  temp = trim(f.inMonth.value);
  if (temp.length < 1) {
    alert("Please select a Month.");
    f.inMonth.focus();
    return false;
  }
  
  //check inYear...
  temp = trim(f.inYear.value);
  if (temp.length < 4) {
    alert("Please select a Year.");
    f.inYear.focus();
    return false;
  }
  
  //check inPermitType...
  temp = trim(f.inPermitType.value);
  if (temp.length <= 0) {
    alert("Please select a Permit Type.");
    f.inPermitType.focus();
    return false;
  }
  
  return true;
}