function limiterText(str,limit,limiter){
  var tex=str.value;
  var len=tex.length;
  if (len>limit){
    tex=tex.substring(0,limit);
    str.value=tex;
    alert("Max length reached");
    str.focus();
    return false;
  }
  limiter.value=limit-len;
}

function objSelect(description,code){
  this.description=description;
  this.code=code;
}

function allEmailChars(email){
  var parsed = true;
  var validchars = "abcdefghijklmnopqrstuvwxyz0123456789@.-_";
  for (var i = 0; i < email.length; i++){
    var letter = email.charAt(i).toLowerCase();
    if (validchars.indexOf(letter) != -1)
      continue;
    parsed = false;
    break;
  }
  return parsed;
}

function isEmail(field){
  var email = field.value;
  var at = "@";
  var dot = ".";
  var lat = email.indexOf(at);
  var lstr = email.length;
  var ldot = email.indexOf(dot);
  if (!allEmailChars(email)){
    return false;
  }
  if (email.indexOf(at) == -1 || email.indexOf(at) == 0 || email.lastIndexOf(at) == lstr-1){
    return false;
  }
  if (email.indexOf(dot) == -1 || email.indexOf(dot) == 0 || email.lastIndexOf(dot) == lstr-1){
    return false
  }
  if (email.lastIndexOf(dot) < email.indexOf(at)){
    return false;
  }
  return true;
}

function isNumber(field, len){
  var checkOK = "0123456789";
  var checkStr = field.value;
  var allValid = true;
  var i, j, ch;
  if (checkStr.length > len){
    allValid = false;
  }else{
    for (i = 0; i < checkStr.length; i++){
      ch = checkStr.charAt(i);
      for (j = 0; j < checkOK.length; j++)
        if (ch == checkOK.charAt(j))
          break;
      if (j == checkOK.length){
        allValid = false;
        break;
      }
    }
  }
  if (!allValid)
    return false;
  return true;
}

function isChar(field, len){
  var checkOK = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  var checkStr = field.value;
  var allValid = true;
  var i, j, ch;
  if (checkStr.length > len){
    allValid = false;
  }else{
    for (i = 0; i < checkStr.length; i++){
      ch = checkStr.charAt(i);
      for (j = 0; j < checkOK.length; j++)
        if (ch == checkOK.charAt(j))
          break;
      if (j == checkOK.length){
        allValid = false;
        break;
      }
    }
  }
  if (!allValid)
    return false;
  return true;
}

function getRandomNum(lbound, ubound){
  return (Math.floor(Math.random() * (ubound - lbound)) + lbound);
}

function getRandomChar(number,lower,upper,other,extra){
  var numberChars = "0123456789";
  var lowerChars = "abcdefghijklmnopqrstuvwxyz";
  var upperChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  var otherChars = "`~!@#$%^&*()-_=+[{]}\\|;:'\",<.>/? ";
  var charSet = extra;
  if (number == true)
    charSet += numberChars;
  if (lower == true)
    charSet += lowerChars;
  if (upper == true)
    charSet += upperChars;
  if (other == true)
    charSet += otherChars;
  return charSet.charAt(getRandomNum(0, charSet.length));
}

function getPassword(length, extraChars, firstNumber, firstLower, firstUpper, firstOther, latterNumber, latterLower, latterUpper, latterOther){
  var rc = "";
  if (length > 0)
    rc = rc + getRandomChar(firstNumber, firstLower, firstUpper, firstOther, extraChars);
    for (var idx = 1; idx < length; ++idx){
      rc = rc + getRandomChar(latterNumber, latterLower, latterUpper, latterOther, extraChars);
    }
  return rc;
}

