//
// Javascript source for basic field validation
//

function invalidAIChars(inputStr)
{
   var badChar = false;
   var len = inputStr.length;
   var i = 0;
   for (; i < len; i++)
   {
      if (inputStr.substring(i,i+1) == '|')
         badChar = true;
      if (inputStr.substring(i,i+1) == '`')
         badChar = true;
      if (inputStr.substring(i,i+1) == '_')
         badChar = true;
      if (inputStr.substring(i,i+1) == '\\')
         badChar = true;
      if (inputStr.substring(i,i+1) == '~')
         badChar = true;
      if (inputStr.substring(i,i+1) == '^')
         badChar = true;
   }
   
   return badChar;
}

function removeChars(inputStr)
{
   inputStr = inputStr.replace(/\r/gi, " ");
   inputStr = inputStr.replace(/\n/gi, " ");
   return inputStr;

}

function invalidFreeText(inputStr)
{
   var badChar = false;
   var len = inputStr.length;
   var i = 0;
   for (; i < len; i++)
   {
      if (inputStr.substring(i,i+1) == '|')
         badChar = true;
      if (inputStr.substring(i,i+1) == '`')
         badChar = true;
      if (inputStr.substring(i,i+1) == '_')
         badChar = true;
      if (inputStr.substring(i,i+1) == '\\')
         badChar = true;
      if (inputStr.substring(i,i+1) == '~')
         badChar = true;
      if (inputStr.substring(i,i+1) == '^')
         badChar = true;
      if (inputStr.substring(i,i+1) == '\"')
         badChar = true;

   }
   
   return badChar;
}

function validInputChars(inputStr, numbersValid)
{
   var len = inputStr.length;
   var badChar = true;
   var i = 0;
   var ch = '';
   for (; i < len; i++)
   {
      badChar = true;
      ch = inputStr.charAt(i);
      if (ch >= 'a' && ch <= 'z')
         badChar = false;
      else if (ch >= 'A' && ch <= 'Z')
         badChar = false;
      else if (ch >= 'À')
         badChar = false;
      else if ((ch == '(') || (ch == ')'))
         badChar = false;
      else if (ch == '\'' && i != 0)
         badChar = false;
      else if (ch == '-' && i != 0)
         badChar = false;
      else if (ch == ' ' && i != 0)
         badChar = false;
      else if (ch == ',' && i != 0)
         badChar = false;
      else if (ch == '.' && i != 0)
         badChar = false;
      else if (ch == '-' && i != 0)
         badChar = false;

      if (numbersValid)
      {
         if (ch >= '0' && ch <= '9')
            badChar = false;
      }
         
      if (badChar)
         return false;
   }

   return true;
}

function validCityChars(inputStr, numbersValid)
{
   var len = inputStr.length;
   var badChar = true;
   var i = 0;
   var ch = '';
   for (; i < len; i++)
   {
      badChar = true;
      ch = inputStr.charAt(i);
      if (ch >= 'a' && ch <= 'z')
         badChar = false;
      else if (ch >= 'A' && ch <= 'Z')
         badChar = false;
      else if (ch >= 'À')
         badChar = false;
      else if (ch == '\'' && i != 0)
         badChar = false;
      else if (ch == '.' && i != 0)
         badChar = false;
      else if (ch == '-' && i != 0)
         badChar = false;
      else if (ch == ' ' && i != 0)
         badChar = false;
      else if (ch == ',' && i != 0)
         badChar = false;
         
      if (numbersValid)
      {
         if (ch >= '0' && ch <= '9')
            badChar = false;
      }
         
      if (badChar)
         return false;
   }
   
   return true;
}


function validAddressChars(inputStr)
{
   var len = inputStr.length;
   var badChar = true;
   var i = 0;
   var ch = '';
   for (; i < len; i++)
   {
      badChar = true;
      if (inputStr.charAt(i) == '/')
      {
         if (i != 0)
            badChar = false;
      }
      else
      {
         ch = inputStr.charAt(i);
         if (ch >= 'a' && ch <= 'z')
            badChar = false;
         else if (ch >= 'A' && ch <= 'Z')
            badChar = false;
	 else if (ch >= 'À')
	    badChar = false;
         else if (ch == '\'' && i != 0)
            badChar = false;
         else if (ch == '-' && i != 0)
            badChar = false;
         else if (ch == ' ' && i != 0)
            badChar = false;
         else if (ch == ',' && i != 0)
            badChar = false;
         else if (ch == '.' && i != 0)
            badChar = false;
         else if (ch == '-' && i != 0)
            badChar = false;
         else if (ch == '/' && i != 0)
            badChar = false;
         else if (ch == '#')
            badChar = false;
         else if (ch >= '0' && ch <= '9')
            badChar = false;
      }
      
      if (badChar)
         return false;
   }
   
   return true;
}

function validChars(inputStr)
{
   var len = inputStr.length;
   var badChar = true;
   var ch = '';
   var i = 0;
   for (; i < len; i++)
   {
      badChar = true;
      ch = inputStr.charAt(i);
      if (ch >= 'a' && ch <= 'z')
         badChar = false;
      else if (ch >= 'A' && ch <= 'Z')
         badChar = false;
      else if (ch >= 'À')
         badChar = false;

      if (badChar)
	 return false;

   }
 
   return true;
}

function validNumbers(inputStr)
{
   var len = inputStr.length;
   var badChar = true;
   var ch = '';
   var i = 0;
   for (; i < len; i++)
   {
      badChar = true;
      ch = inputStr.charAt(i);
      if (ch >= '0' && ch <= '9'){
         badChar = false;
      }
      if (badChar)
         return false;
   }
   return true;
}

function validEmailChars(inputStr)
{
   var len = inputStr.length;
   var badChar = true;
   var ch = '';
   var i = 0;
   var foundAt = false;
   for (; i < len; i++)
   {
      badChar = true;
      ch = inputStr.charAt(i);
      if (ch == '@')  {
         if (foundAt || (i == 0))
	    return false;
	 foundAt = true;
      }
      else  {
	 if (!((ch >= 'a' && ch <= 'z') ||
	    (ch >= 'A' && ch <= 'Z') ||
	    (ch >= '0' && ch <= '9') ||
	    (ch == '.') || (ch == '_') ||
	    (ch == '!') || (ch == '-') ||
	    (ch == '#') || (ch == '$') ||
	    (ch == '%') || (ch == '&') ||
	    (ch == '\'') || (ch == '*') ||
	    (ch == '+') || (ch == '~') ||
	    (ch == '/') || (ch == '=') ||
	    (ch == '?') || (ch == '^') ||
	    (ch == '`') || (ch == '|')))
	    return false;
      }
   }
   
   return true;
}

function validFirstName(firstname)
{
   if (firstname.length > 0)
   {
      if (!validInputChars(firstname, false))
         return false;
   }
   else
      return false;
   
   return true;
}

function validLastName(lastname)
{
   if (lastname.length > 1)
   {
      if (!validInputChars(lastname, false))
         return false;
   }
   else
      return false;
   
   return true;
}

function validAddress(address)
{
   if (address.length > 0)
   {
      if (!validAddressChars(address))
         return false;
   }
   else
      return false;
   
   return true;
}

function validCity(city)
{
   if (city.length > 0)
   {
      if (!validCityChars(city, false))
         return false;
   }
   else
      return false;
   
   return true;
}

function isValidPostalCode (zip, country)
{
   var len = zip.length;
   var i = 0;
      
   if ((ignoreSpaces(zip) == "") || (ignoreSpaces(zip) == null))
      return false;

   if (country == "US") {
      if (!isValidUSZipCode(zip)) {
         return false;
      }
   }else {
      for (; i < len; i++) { 
         var c = zip.charAt(i);
	 if ((!validNumbers(c)) && (!validChars(c))) {
	    if ((c != '-') && (c != ' ')) {
	       return false;
	    }
	 }
      }   
   }
   return true;
}

function isValidUSZipCode(zip)
{
   var len = zip.length;
   var i = 0;

   if ((len < 5) || (len > 10)) {
      return false;
   }

   var zip_sub = zip.substring(0,5);
   if (!validNumbers(zip_sub)) {
      return false;
   }
   
   if (len > 5) {
      if (zip.substring(5,6) == '-') {
         zip_sub = zip.substring(6,10);
	 if ((!validNumbers(zip_sub)) || (zip_sub.length < 4)) {
	    return false;
	 }
      }else {
         return false;
      }
   }
   return true;
}

function validEmail(email)
{
   if (email.length > 0)
   {
      //removing trailing spaces from email 1st
      while(''+email.charAt(email.length-1)==' ') {
	 email=email.substring(0,email.length-1);
      }

      if (!validEmailChars(email))
         return false;
   
      var atpos = email.indexOf("@"); 
      var dotpos = email.lastIndexOf(".");
      var lastpos = email.length-1;
      // (cant end with @)(cant end with .) (must have at least one . after @)
      if ((lastpos-atpos < 3 || lastpos-dotpos < 2 || dotpos-atpos < 1) || (email.indexOf("@") == -1))
         return false;
   }
   
   return true;
}

function validPhone(phoneNbr)
{
   var len = phoneNbr.length;
   var badChar = true;
   var i = 0;
   var ch = '';
   for (; i < len; i++)
   {
      
      badChar = true;
      ch = phoneNbr.charAt(i);
      if (!validInputChars(ch, false))
         badChar = false;
      else if (ch >= '0' && ch <= '9')
         badChar = false;
      if ((!validNumbers(ch)) && (i == 0))
         badChar = true;
      if ((ch == '(') || (ch == ')'))
         badChar = false;
      
      if (badChar)
         return false;
   }
   
   return true;
}


function isANumber(nbr)
{
   var len = nbr.length;
   var ch = '';
   var i = 0;

   if (len == 0) {
      return false; 
   } 

   for (; i < len; i++)
   {
      ch = nbr.substring(i,i+1);
      if (ch < '0' || ch > '9')
         return false;
   }
   
   return true;
}


function ignoreSpaces(string) {
   var temp = "";
   string = '' + string;
   var splitstring = string.split(" ");
   for(var i = 0; i < splitstring.length; i++)
      temp += splitstring[i];
   return temp;
}

function compareTodaysDate (given_year, given_month, given_day) {
   var today = new Date();
   var this_day = today.getDate()
   var this_month = today.getMonth()+1
   var this_year = today.getYear();
   //workaround for y2k bug 
   if (this_year < 2000){
      this_year = this_year + 1900; 
   }
   //compare given date to today's date
   if (eval(given_year) < eval(this_year)){
      return false;
   } 
   else if ((eval(given_year) == eval(this_year)) && 
            (eval(given_month) < eval(this_month))) {
	       return false;
   }
   else if ((eval(given_year) == eval(this_year)) && 
            (eval(given_month) == eval(this_month)) &&
            (eval(given_day) < eval(this_day))) {
	       return false;
   }
   return true;
}

function compareStartToEndDate (start_year, start_month, start_day, end_year, end_month, end_day) {
   //compare the start date to the end date
   if (eval(end_year) < eval(start_year)){
      return false;
   } 
   else if ((eval(end_year) == eval(start_year)) && 
            (eval(end_month) < eval(start_month))) {
	       return false;
   }
   else if ((eval(end_year) == eval(start_year)) && 
            (eval(end_month) == eval(start_month)) &&
            (eval(end_day) < eval(start_day))) {
	       return false;
   }
   return true;
   
   
}
function compareStartToEndDateExclusive (start_year, start_month, start_day, end_year, end_month, end_day) {
   
   //compare the start date to the end date
   if (eval(end_year) < eval(start_year)){
      return false;
   } 
   else if ((eval(end_year) == eval(start_year)) && 
            (eval(end_month) < eval(start_month))) {
	       return false;
   }
   else if ((eval(end_year) == eval(start_year)) && 
            (eval(end_month) == eval(start_month)) &&
            (eval(end_day) <= eval(start_day))) {
	       return false;
   }
   return true;
}

function textLimiter(field, maxlimit) {
  if(field.value.length > maxlimit) {
     field.value = field.value.substring(0, maxlimit);
  } 
}
