if (window.btnList) {
  for (i = 0; i < btnList.length; i++) {
    btn[btnList[i]] = new makeButton(btnList[i]);
  }
}

function swap_style(obj, style) {
  obj.className = style;
}

function makeButton(n) {
  this.on = new Image();
  this.on.src = btnpath + n + "_on.gif";
  this.off = new Image();
  this.off.src = btnpath + n + "_off.gif";
}

function toggle(n, on) {
  if (/(.+)-(\d+)$/.test(n)) {
    imgndx = n;
    btnndx = RegExp.$1;
  }
  else {
    imgndx = btnndx = n;
  }
  document.images[n].src = on ? btn[btnndx].on.src : btn[btnndx].off.src;
}

lastnav = null;
function navToggle(n) {
  if (lastnav) {
    document.images[lastnav].src = btn[lastnav].off.src;
  }
  document.images[n].src = btn[n].on.src;
  lastnav = n;
}

function message(str) {
  var msg;
  msg = "========================\n" +
        "\n" +
        str +
        "\n" +
        "========================";
  alert(msg);
}


function btn(str) {
  if (str == "rst") {
    document.forms[0].reset();
  }
  else {
    var msg;
    msg = "========================\n" +
          "\n" +
          "This Feature Not Yet Implemented\n" +
          "\n" +
          "========================";
    alert(msg);
  }
}


function notImplemented() {
  var msg;
  msg = "========================\n" +
        "\n" +
        "This Feature Not Yet Implemented\n" +
        "\n" +
        "========================";
  alert(msg);
}


function phonepopup() {
  var attr = "screenX=50,screenY=50,top=50,left=50,width=500,height=300,scrollbars";
  var phone = open("phonepopup.html", "phone", attr);
}


function selectList(direction) {
  var f = document.forms[0];
  var fromlist = direction == -1 ? f.rightlist : f.leftlist;
  var tolist = direction == -1 ? f.leftlist : f.rightlist;

  var k;
  var j = tolist.options.length;

  var i = 0;
  while (fromlist.options[i]) {
    if (fromlist.options[i].selected) {
      listitem = fromlist.options[i].value;
      tolist.options[j++] = new Option(listitem, listitem);
// Insert new item into list.
      k = tolist.options.length - 1;
      while (k >= 0) {
        if (k == 0 || listitem > tolist.options[k-1].value) {
          tolist.options[k].value = listitem;
          tolist.options[k].text = listitem; 
          k = -1;
        }
        else {
          tolist.options[k].value = tolist.options[k-1].value;
          tolist.options[k].text = tolist.options[k-1].text;
        }
        k--;
      }
      fromlist.options[i] = null;
    }
    else {
      i++;
    }
  }    
}


function selectListAll(direction) {
  var f = document.forms[0];
  var fromlist = direction == -1 ? f.rightlist : f.leftlist;
  var tolist = direction == -1 ? f.leftlist : f.rightlist;

  var k;
  var j = tolist.options.length;

  var i = 0;
  while (fromlist.options[i]) {
    if (1) {
      listitem = fromlist.options[i].value;
      tolist.options[j++] = new Option(listitem, listitem);
// Insert new item into list.
      k = tolist.options.length - 1;
      while (k >= 0) {
        if (k == 0 || listitem > tolist.options[k-1].value) {
          tolist.options[k].value = listitem;
          tolist.options[k].text = listitem; 
          k = -1;
        }
        else {
          tolist.options[k].value = tolist.options[k-1].value;
          tolist.options[k].text = tolist.options[k-1].text;
        }
        k--;
      }
      fromlist.options[i] = null;
    }
    else {
      i++;
    }
  }    
}

// Validation functions
String.prototype.right = function (n) {
  if (n < this.length) {
    return this.substring (this.length - n, this.length);
  } else {
    return this;
  }
}


function valEmail (fld) {
  if (fld.value.length == 0) {
    return true;
  }
  if (!/^(\w+\.)*\w+@(\w+\.)*\w+\.\w{2,5}$/.test(fld.value)) {
    return invalid(fld);
  }
  return true;
}


function valPhone (fld) {
  if (fld.value.length == 0) {
    return true;
  }
  if (/^\((\d{3})\)\s?(\d{3})[\s|\.|-](\d{4})((\s+|\s?)([eE][xX][tT]|[xX]?|[eE][xX][tT]\.)(\d+))?$/.test(fld.value) ||
      /^(\d{3})[\s|\/|\.|-]?(\d{3})[\s|\.|-]?(\d{4})((\s+|\s?)([eE][xX][tT]|[xX]?|[eE][xX][tT]\.)(\d+))?$/.test(fld.value)) {
    if (RegExp.$7) fld.value="("+RegExp.$1+") "+RegExp.$2+"-"+RegExp.$3+"X"+RegExp.$7;
    else fld.value="("+RegExp.$1+") "+RegExp.$2+"-"+RegExp.$3;
  } else {
    return invalid(fld);
  }
  return true;
}


function valZip(fld) {
  if (fld.value.length == 0) {
    return true;
  }
  if (/[^\d]/.test(fld.value) || fld.value.length < 5 || fld.value.length > 5 && fld.value.length < 9) {
    return invalid(fld);
  }
  return true;
}


function valCurrency(fld) {
  if (fld.value.length == 0) {
    return true;
  }
// Strip non-numeric characters.
  var tmp = "";
  var formatted = "";
  var error = "";
  for (var i = 0; i < fld.value.length; i++) {
    if ("0123456789.".indexOf(fld.value.charAt(i)) != -1) {
      tmp += fld.value.charAt(i);
    }
  }
  if (tmp.indexOf(".") != tmp.lastIndexOf(".")) {
    error = "Invalid amount";
  }
  else {
    var parts = tmp.split(".");
    var dollars = parts[0];
    var cents = parts[1] ? parts[1] : "00";
// Punctuate dollars.
    while (dollars.length > 0) {
      formatted = dollars.length > 3 ? "," + dollars.right(3) + formatted : dollars + formatted;
      dollars = dollars.substr(0, dollars.length - 3);
    }
    cents = (cents + "00").substr(0, 2);
    formatted = "$" + formatted + "." + cents;
  }
  if (error.length > 0) {
    return invalid(fld);
  }
  else {
    fld.value = formatted;
    return true;
  }
}


function valDate(fld) {
  if (fld.value.length == 0) {
    return;
  }
  var tmp = "";
  if (/^(\d{1,2})([-./])(\d{1,2})\2(\d{2,4})$/.test(fld.value)) {
    var m = RegExp.$1;
    var d = RegExp.$3;
    var y = RegExp.$4;
    
    tmp = m + "/" + d + "/" + y;
    var tmpdt = new Date(tmp);
    if (m != tmpdt.getMonth() + 1 || d != tmpdt.getDate()) {
      return invalid(fld);
    }
    else {
      fld.value = tmp;
    }
  } 
  else {
    return invalid(fld);
  }
}


function valQuantity(fld) {
  if (fld.value.length == 0) {
    return true;
  }
  if (isNaN(fld.value * 1) || fld.value * 1 < 0 || fld.value.indexOf(".") > -1) {
    return invalid(fld);
  }
  return true;
}


function invalid(fld) {
  fld.value="";
  alert("Invalid entry.  Please try again");
  fld.focus();
  return false;
}


IE = (document.all);
function validate(f) {
  var fldList="";
  var desc;
  
  for (var i=0; i < f.elements.length; ++i) {
    if (f.elements[i].onfocus) {
      s=f.elements[i].onfocus.toString();
      if (s.indexOf("required = true") > -1) {
if (IE) f.elements[i].onblur=resetColor;
        var pattern=/fldDesc\s*=\s*(["'])(.*)\1/;
        if (pattern.test(s)) {
          desc = RegExp.$2;
        }
        else {
          desc = f.elements[i].name;
        }
        if (f.elements[i].type=="text" || f.elements[i].type=="password") {
          if (f.elements[i].value.length==0) {
            fldList+="  "+desc+"\n";
            if (IE) f.elements[i].style.backgroundColor="#ffff00";
          }
          else if (IE) f.elements[i].style.backgroundColor="#ffffff";
        }
        else if (f.elements[i].type.substr(0, 6)=="select") {
          if (f.elements[i].selectedIndex==0) {
            fldList+="  "+desc+"\n";
            if (IE) f.elements[i].style.backgroundColor="#ffff00";
          }
          else if (IE) f.elements[i].style.backgroundColor="#ffffff";
        }
      }
    }
  }
  if (fldList.length > 0) {
    alert("Before submitting this form, please fill in the following:\n\n"+fldList);
    return false;
  }
  else return true;
}


function resetColor() {
  this.style.backgroundColor="#ffffff";
}

