function urlencode(sInput)
{
  var hex = '0123456789ABCDEF', result='', onechar;
  for(var i=0; i<sInput.length; i++)
  {
    onechar = sInput.charAt(i);
    if((onechar >= 'a' && onechar <= 'z') || (onechar >= 'A' && onechar <= 'Z') || (onechar >= '0' && onechar <= '9'))
    {
      result += onechar;
    }
    else
    {
      result += '%' + hex.substr(parseInt(sInput.charCodeAt(i) / 16), 1) + hex.substr(parseInt(sInput.charCodeAt(i) % 16), 1);
    }
  }
  return result;
}
function urlencode2(sInput)
{
  var hex = '0123456789ABCDEF', result='';
  for(var i=0; i<sInput.length; i++)
    result += '%' + hex.substr(parseInt(sInput.charCodeAt(i) / 16), 1) + hex.substr(parseInt(sInput.charCodeAt(i) % 16), 1);
  return result;
}
function isblank(s)
{
  for(var i=0; i<s.length; i++)
  {
    var c = s.charAt(i);
    if (c != ' ' && c != '\n' && c != '\t')
      return false;
  }
  return true;
}
function LTrim(s)
{
  var i
  for(i=0; i<s.length; i++)
  {
    var c = s.charAt(i);
    if (c != ' ' && c != '\n' && c != '\t')
      break;
  }
  return s.substring(i);
}
function RTrim(s)
{
  var i
  for(i=s.length-1; i>-1; i--)
  {
    var c = s.charAt(i);
    if (c != ' ' && c != '\n' && c != '\t')
      break;
  }
  return s.substring(0, i+1);
}
function Trim(s)
{
  return LTrim(RTrim(s));
}
function GetCtlValue(Ctl)
{


  if (Ctl.type.substring(0, 4) == "text")
    return Ctl.value;
  else if (Ctl.type.substring(0, 6) == "select")
    return Ctl.options[Ctl.selectedIndex].value;
  else if (Ctl.type.substring(0, 6) == "hidden")
    return Ctl.value;
  else if (Ctl.type.substring(0, 8) == "password")
    return Ctl.value;
  else
    return null;
}
function SetCtlValue(Ctl, Value)
{

  if (Ctl.type.substring(0, 6) == "select")
  {
    for (var i=0; i<Ctl.options.length; i++)
    {
      if (Ctl.options[i].value == Value)
      {
      	Ctl.selectedIndex = i;
      	break;
      }
    }
  }
  else if (Ctl.type.substring(0, 5) == "check")
  {
    Ctl.checked = Value;
  }
  else
  {
    Ctl.value = Value;
  }
}
function IsEmptyControl(Ctl)
{
  var ctlvalue = GetCtlValue(Ctl);
  if (ctlvalue == null || ctlvalue == "" || isblank(ctlvalue))
    return true;
  return false;
}
function IsNotInteger(Ctl)
{
  if (IsEmptyControl(Ctl))
    return true;
  var v = parseInt(GetCtlValue(Ctl));
  if (isNaN(v))
    return true;
  return false;
}
function IsNotIntegerRange(Ctl, nMin, nMax)
{
  if (IsNotInteger(Ctl))
    return true;
  var v = parseInt(GetCtlValue(Ctl));
  if (v < nMin || v > nMax)
    return true;
  return false;
}
function HandleNumber(e)
{
  var k;
  if(navigator.appName.indexOf("Netscape") != -1)
  {
    k = e.which;
    if ((k < 48 || k > 57) && (k != 46) && (k != 8) && (k != 45))
    //        0         9            .          <-            -
      return false;   
  }   
  else
  {
    e = window.event;
    k = e.keyCode;
    if ((k < 48 || k > 57) && (k != 46) && (k != 8) && (k != 45))
    {
      e.returnValue = false;   
    }
    e.cancelBubble = true;   
  }
}
function HandleEmptyString(e)
{
  var frm, etype, dbname, chname;
  if(navigator.appName.indexOf("Netscape") != -1)
  {
    frm = e.target.form;
    etype = e.type;
    dbname = e.target.name;
  }
  else
  {
    frm = window.event.srcElement.form;
    etype = window.event.type;
    dbname = window.event.srcElement.name;
  }
  if(dbname.substring(0, 3) == 'db_')
  {
    chname = 'ch_' + dbname.substring(3);
  }
  else
  {
    chname = dbname;
    dbname = 'db_' + chname.substring(3);
  }
  if(etype == 'click')
  {
    if(frm.elements[chname].checked)
    {
      frm.elements[dbname].value = '<Empty String>';
    }
    else
    {
      if(frm.elements[chname].defaultChecked)
      {
        frm.elements[dbname].value = '';
      }
      else
      {
        frm.elements[dbname].value = frm.elements[dbname].defaultValue;
      }
      frm.elements[dbname].focus();
    }
  }
  else if(etype == 'focus')
  {
    if(frm.elements[chname].checked)
    {
      frm.elements[chname].focus();
    }
  }
}
function ReadOnlyBox(e)
{
  var frm;
  if(navigator.appName.indexOf("Netscape") != -1)
  {
    frm = e.target.form;
  }
  else
  {
    frm = window.event.srcElement.form;
  }
  for(var i=0; i<frm.elements.length; i++)
  {
    if (!frm.elements[i].readonly && (frm.elements[i].type.substring(0, 4) == 'text' || frm.elements[i].type.substring(0, 6) == 'select' || frm.elements[i].type.substring(0, 8) == 'password'))
    {
      frm.elements[i].focus();
      break;
    }
  }
}
function AtLeastOneChecked(frmname, chkname)
{
  frm = document.forms[frmname];
  for(i=0; i<frm.elements.length; i++)
    if(frm.elements[i].name == chkname && frm.elements[i].checked == 1)
      return true;
  return false;
}
function SetCheck(frmname, chkname, value)
{
  if(value == null)
    if(AtLeastOneChecked(frmname, chkname))
      value = 0;
    else
      value = 1;
  var frm = document.forms[frmname];
  for(var i=0; i<frm.elements.length; i++)
    if(frm.elements[i].name == chkname)
      frm.elements[i].checked = value;
}
function SetRadio(formname, radioname, value)
{
  var frm = document.forms[formname];
  for(var i=0; i<frm.elements.length; i++)
    if(frm.elements[i].name == radioname)
      frm.elements[i].checked = (frm.elements[i].value == value);
}
function checkPassword(pw1, pw2, pw3, pwmin, pwmax)
{
  if (pw1.value != pw2.value)
  {
    alert('New password do not match');
    pw1.focus();
    return false;
  }
  if (IsEmptyControl(pw1) && pw1.require)
  {
    alert('New password cannot be empty');
    pw1.focus();
    return false;
  }
  if (pw3 != null)
  {
    if (IsEmptyControl(pw3))
    {
      alert('Current password cannot be empty');
      pw3.focus();
      return false;
    }
    if (pw1.value == pw3.value)
    {
      alert('No change for the password');
      pw1.focus();
      return false;
    }
  }
  if (IsEmptyControl(pw1))
  {
    return true;
  }
  if (pwmin != null)
  {
    var lPassword = pw1.value.length;
    if (pwmax == null)
    {
      if (lPassword < pwmin)
      {
        alert('Length of Password should be at least ' + pwmin);
        pw1.focus();
        return false;
      }
    }
    else
    {
      if (lPassword < pwmin || lPassword > pwmax)
      {
        alert('Length of Password should be between ' + pwmin + ' and ' + pwmax);
        pw1.focus();
        return false;
      }
    }
  }
  return true;
}
function FormSubmit(frmname, checkfield, requiremsg, nochangemsg)
{
  var missing = 0;
  var frm = document.forms[frmname];
  var nochange = true;
  var el;
  for(var i=0; i<frm.elements.length; i++)
  {
    el = frm.elements[i];
    if(el.name.substring(0, 3) != "db_")
      continue;
    if(el.type.substring(0, 4) == "text" || el.type.substring(0, 8) == "password")
    {
      if(Trim(el.value) != el.defaultValue && !el.changenotcount)
      {
        nochange = false;
      }
    }
    else if(el.type.substring(0, 6) == "select")
    {
      for(var j=0; j<el.length; j++)
      {
        if(el.options[j].defaultSelected)
        {
          if(j != el.selectedIndex && !el.changenotcount)
          {
            nochange = false;
          }
          break;
        }
      }
    }
    else if(el.type.substring(0, 5) == "check" || el.type.substring(0, 5) == "radio")
    {
      if(el.checked != el.defaultChecked && !el.changenotcount)
      {
        nochange = false;
      }
    }
    if(el.require)
    {
      if(IsEmptyControl(el))
      {
        missing = 1;
        break;
      }
    }
    else if(checkfield != 0)
    {
      if(IsEmptyControl(el) && el.type.substring(0, 8) != "password")
      {
        missing = 2;
        break;
      }
    }
  }
  if(missing == 1)
  {
    alert(requiremsg);
    el.focus();
  }
  else if(missing == 2)
    alert("Cannot leave it blank: " + el.name.substring(3));
  else if(nochange)
    alert(nochangemsg);
  else
  {
    var chkPW = true;
    if (frm.pw1 != null && frm.pw2 != null)
    {
      if (frm.pw3 == null)
      {
        chkPW = checkPassword(frm.elements[frm.pw1], frm.elements[frm.pw2], null, frm.pwmin, frm.pwmax);
      }
      else
      {
        chkPW = checkPassword(frm.elements[frm.pw1], frm.elements[frm.pw2], frm.elements[frm.pw3], frm.pwmin, frm.pwmax);
      }
    }
    if (chkPW)
      frm.submit();
  }
}
function AssignSubmit(frmname, ctlnamelist, valuelist, seperator, checkfield, requiremsg, nochangemsg)
{
  frm = document.forms[frmname];
  ci = cj = vi = vj = 0;
  if(seperator == null)
    seperator = ',';
  if(ctlnamelist != null)
  {
    while(cj != -1)
    {
      cj = ctlnamelist.indexOf(seperator, ci);
      vj = valuelist.indexOf(seperator, vi);
      if(cj == -1)
      {
        ctlname = ctlnamelist.substring(ci);
        value = valuelist.substring(vi);
      }
      else
      {
        ctlname = ctlnamelist.substring(ci, cj);
        ci = cj + 1;
        value = valuelist.substring(vi, vj);
        vi = vj + 1;
      }
      SetCtlValue(frm.elements[ctlname], value);
    }
  }
  if (checkfield == null)
    frm.submit();
  else
    FormSubmit(frmname, checkfield, requiremsg, nochangemsg);
}
function CheckAssignSubmit(frmname, chkname, ctlname, value, msg, confirmmsg)
{
  if(AtLeastOneChecked(frmname, chkname))
  {
    if(confirmmsg != null)
    {
      if(!confirm(confirmmsg))
      {
        return;
      }
    }
    AssignSubmit(frmname, ctlname, value);
  }
  else if(msg != '' && msg !=null)
  {
    alert(msg);
  }
}
function ResetForm(frmname, focusfield)
{
  frm = document.forms[frmname];
  frm.reset();
  if(focusfield != null)
    frm.elements[focusfield].focus();
}
function NewValue(dropdown, EnterPrompt, isnumeric)
{
  if(isnumeric == null) isnumeric = false;
  if(dropdown.options[dropdown.options.selectedIndex].value == '$NEW')
  {
    var newvalue;
    while(1)
    {
      if((newvalue = window.prompt((EnterPrompt == null || EnterPrompt == '') ? 'Please enter a new value' : EnterPrompt, '')) == null)
      {
        break;
      }
      if(isnumeric)
      {
        if(isNaN(parseInt(newvalue)))
        {
          continue;
        }
      }
      addtodropdown(dropdown, newvalue, isnumeric);
      return;
    }
    for(var i=0; i<dropdown.options.length; i++)
    {
      if(dropdown.options[i].defaultSelected)
      {
        dropdown.selectedIndex = i;
        break;
      }
    }
  }
}
function addtodropdown(dropdown, newvalue, isnumeric, sort)
{
  if(sort == null) sort = false;
  for(var i=0; i<dropdown.options.length; i++)
  {
    if(isnumeric)
    {
      if(parseInt(dropdown.options[i].value) >= parseInt(newvalue))
      {
        break;
      }
    }
    else
    {
      if(dropdown.options[i].value >= newvalue)
      {
        break;
      }
    }
  }
  if(i<dropdown.options.length)
  {
    if(dropdown.options[i].value == newvalue)
    {
      dropdown.options.selectedIndex = i;
    }
    else if(sort)
    {
      dropdown.options[dropdown.options.length] = new Option;
      for(var j=dropdown.options.length-1; j > i; j--)
      {
        dropdown.options[j].value = dropdown.options[j-1].value;
        dropdown.options[j].text = dropdown.options[j-1].text;
      }
      dropdown.options[j].value = newvalue;
      dropdown.options[j].text = newvalue;
      dropdown.options.selectedIndex = j;
    }
    else
    {
      i = dropdown.options.length;
      dropdown.options[i] = new Option;
      dropdown.options[i].value = newvalue;
      dropdown.options[i].text = newvalue;
      dropdown.options.selectedIndex = i;
    }
  }
  else
  {
    dropdown.options[i] = new Option;
    dropdown.options[i].value = newvalue;
    dropdown.options[i].text = newvalue;
    dropdown.options.selectedIndex = i;
  }
}

