function AddressValidate(field) {
   var valid = "#&"
   var ok = "yes";
   var temp;
   for (var i=0; i<field.length; i++) {
      temp = "" + field.substring(i, i+1);
      if (valid.indexOf(temp) != "-1") {
         ok = "no";
         alert("Invalid character. Position: "+temp);
      }
   }
   if (ok == "no") {
      return false; 
   }
   return true;
}

function CheckEmail (emailStr) {
   var emailPat=/^(.+)@(.+)$/
   var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
   var validChars="\[^\\s" + specialChars + "\]"
   var quotedUser="(\"[^\"]*\")"
   var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
   var atom=validChars + '+'
   var word="(" + atom + "|" + quotedUser + ")"
   var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
   var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
   var matchArray=emailStr.match(emailPat)

   if (matchArray==null) {
      alert("Email address seems incorrect (check @ and .'s)")
      return false
   }

   var user=matchArray[1]
   var domain=matchArray[2]
   
   if (user.match(userPat)==null) {
      alert("The username doesn't seem to be valid.")
      return false
   }

   var IPArray=domain.match(ipDomainPat)
   if (IPArray!=null) {
      for (var i=1;i<=4;i++) {
         if (IPArray[i]>255) {
            alert("Destination IP address is invalid!")
            return false
         }
      }
      return true
   }

   var domainArray=domain.match(domainPat)
   if (domainArray==null) {
      alert("The domain name doesn't seem to be valid.")
      return false
   }

   var atomPat=new RegExp(atom,"g")
   var domArr=domain.match(atomPat)
   var len=domArr.length
   if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) {
      alert("The address must end in a three-letter domain, or two letter country.")
      return false
   }

   if (len<2) {
      var errStr="This address is missing a hostname!"
      alert(errStr)
      return false
   }

   return true;
}

function CheckInteger(object_value) {
   if (object_value.length == 0)
      return true;
   var decimal_format = ".";
   var check_char;
   
   check_char = object_value.indexOf(decimal_format)
   if (check_char < 1)
      return CheckNumber(object_value);
   else
      return false;
}

function CheckNumber(object_value) {
   if (object_value.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(object_value.charAt(0))
   if (check_char == 1) decimal = true;
   else if (check_char < 1) return false;
   
   for (var i = 1; i < object_value.length; i++) {
      check_char = number_format.indexOf(object_value.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 NumberRange(object_value, min_value, max_value) {
   if (min_value != null) {
      if (object_value < min_value)
         return false;
   }
   if (max_value != null) {
      if (object_value > max_value)
         return false;
   }
   return true;
}
function CheckPhone(object_value) {
   if (object_value.length == 0) return true;
   if (object_value.length == 12) {
      if (!CheckNumber(object_value.substring(0,3))) return false;
      else
         if (!NumberRange((eval(object_value.substring(0,3))), 100, 1000)) return false;
      if (object_value.charAt(3) != "-" && object_value.charAt(3) != " ") return false
      if (!CheckNumber(object_value.substring(4,7))) return false;
      else
         if (!NumberRange((eval(object_value.substring(4,7))), 100, 1000)) return false;
      if (object_value.charAt(7) != "-" && object_value.charAt(7) != " ") return false;
      if (object_value.charAt(8) == "-" || object_value.charAt(8) == "+") return false;
         else return (CheckInteger(object_value.substring(8,12)));
   }
}

function CheckPhoneShort(object_value) {
   if (object_value.length == 8) {
      if (!CheckNumber(object_value.substring(0,3))) return false;
      else
         if (!NumberRange((eval(object_value.substring(0,3))), 100, 1000)) return false;
      if (object_value.charAt(3) != "-" && object_value.charAt(3) != " ") return false
      if (!CheckNumber(object_value.substring(4,7))) return false;
      else
         if (!NumberRange((eval(object_value.substring(4,7))), 100, 1000)) return false;
      return true;
   }
}
   
function CheckRange(object_value, min_value, max_value) {
   if (object_value.length == 0)
      return true;
   if (!CheckNumber(object_value)) {
      return false;
   }
   else {
      return (NumberRange((eval(object_value)), min_value, max_value));
   }
   return true;
}

function Keyboard() {
   if (event.keyCode == 35 || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 34)
      event.returnValue = false;
}

function CheckZip(object_value) {
   if (object_value.length == 0) return true;
   if (object_value.length != 5 && object_value.length != 10) return false;
   if (object_value.charAt(0) == "-" || object_value.charAt(0) == "+") return false;
   if (!CheckInteger(object_value.substring(0,5))) return false;
   if (object_value.length == 5) return true;
   if (object_value.charAt(5) != "-" && object_value.charAt(5) != " ") return false;
   if (object_value.charAt(6) == "-" || object_value.charAt(6) == "+") return false;
   return (CheckInteger(object_value.substring(6,10)));
}


