var browsername = navigator.appName;
var isNS = (browsername.indexOf("Netscape")!=-1);
var isIE = (browsername.indexOf("Microsoft")!=-1);
var isMac = (navigator.appVersion.indexOf('Mac')!=-1) ? true : false;
var NS4 = (document.layers) ? true : false;
var IEmac = ((document.all)&&(isMac)) ? true : false;
var IE4plus = (document.all) ? true : false;
var IE4 = ((document.all)&&(navigator.appVersion.indexOf('MSIE 4.')!=-1)) ? true : false;
var IE5 = ((document.all)&&(navigator.appVersion.indexOf('MSIE 5.')!=-1)) ? true : false;
var IE55 = ((document.all)&&(navigator.appVersion.indexOf('MSIE 5.5')!=-1)) ? true : false;
var IE6 = ((document.all)&&(navigator.appVersion.indexOf('MSIE 6.')!=-1)) ? true : false;
var ver4 = (NS4 || IE4plus) ? true : false;
var NS6 = (!document.layers) && (navigator.userAgent.indexOf('Netscape')!=-1) ? true : false;

function doPrintPage() {
  window.print();
  window.close();
}

function gourl(theurl) {
  top.location.href=theurl;
}

function navigateParent(theurl) {
  opener.document.location=theurl;
  self.close();
}

function forceNoFrames() {
  if (self!=top) {
    top.location=self.location;
  }
}

function supportsForcedDownload() {
  return !(IE55 || IE6);
}

function supportsResizableFrames() {
  if (IEmac) {
    return false;
  } else if (IE4plus) {
    return true;
  } else {
    return false;
  }
}

function browserSwitch2(IEtext, NS4text) {
  browserSwitch5("", IEtext, NS4text, "");
}

function browserSwitch3(IEtext, netscapeText, otherText) {
  browserSwitch5("", IEtext, netscapeText, otherText, "");
}

function browserSwitch(prefText, IEtext, NS4text, suffText) {
  browserSwitch5(prefText, IEtext, NS4text, IEtext, suffText);
}

function browserSwitch5(prefText, IEtext, NS4text, otherText, suffText) {
  document.write(prefText+getText(IEtext, NS4text, otherText)+suffText);
}

function getText(IEtext, NS4text, otherText) {
  if (document.layers) {
    return NS4text;
  } else if (document.all) {
    return IEtext;
  } else {
    return otherText;
  }
}

function getObj(name) {
  if (document.getElementById) {
    return document.getElementById(name).style;
  } else if (document.all) {
    return document.all[name].style;
  } else if (document.layers) {
    return getObjNN4(document, name);
  }
}

function getObjNN4(obj, name) {
  var x = obj.layers;
  var ret;
  for (var i=0; i<x.length; i++) {
    if (x[i].id == name) {
      ret = x[i];
    } else if (x[i].layers.length) {
      var tmp = getObjNN4(x[i],name);
      if (tmp) {
        ret = tmp;
      }
    }
  }

  return ret;
}

function screenWidth() {
  if (IE4plus) {
    return document.body.clientWidth;
  } else {
    return window.innerWidth;
  }
}

function screenHeight() {
  if (IE4plus) {
    return document.body.clientHeight;
  } else {
    return window.innerHeight;
  }
}

function screenTop() {
  if (IE4plus) {
    return document.body.scrollTop;
  } else {
    return window.pageYOffset;
  }
  return 0;
}

function screenBottom() {
  return screenTop() + screenHeight();
}

String.prototype.ltrim=new Function("return this.replace(/^\\s+/,'')");

String.prototype.rtrim=new Function("return this.replace(/\\s+$/,'')");

String.prototype.trim=new Function("return this.replace(/^\\s+|\\s+$/g,'')");

function getControl(f, name) {
  for (var i=0; i<f.length; i++) {
    c = f.elements[i];
    if (c.name==name) {
      return c;
    }
  }
  return null;
}

function getControlValue(f, name) {
  c = getControl(f, name);
  if (c==null) {
    return '';
  } else {
    return c.value;
  }
}

function setEmpty(c) {
  setValue(c, '');
}

function setValue(c, val) {
  c.value = val;
}

function getComboValue(c) {
  return c.options[c.selectedIndex].value.trim();
}

function getRadioValue(f, name) {
  for (var i=0; i<f.length; i++) {
    rb = f.elements[i];
    if ((rb.name==name) && (rb.checked)) {
      return rb.value;
    }
  }
  return '';
}

function setRadioValue(f, name, value) {
  for (var i=0; i<f.length; i++) {
    rb = f.elements[i];
    if ((rb.name==name) && (rb.value==value)) {
      rb.checked = true;
    } else {
      rb.checked = false;
    }
  }
  return '';
}

function failEmpty(c, msg) {
  if (c.value.trim().length==0) {
    c.focus();
    alert(msg + ' must be specified');
    return true;
  } else {
    return false;
  }
}

function failEmptyCombo(c, msg) {
  if (getComboValue(c).length==0) {
    c.focus();
    alert(msg + ' must be specified');
    return true;
  } else {
    return false;
  }
}

function failEmail(c, msg) {
  if (failEmpty(c, msg)) {
    return true;
  } else if (!isEmailAddr(c.value.trim())) {
    c.focus();
    alert(msg + ' - ' + c.value + ' is an invalid email address');
    return true;
  } else {
    return false;
  }
}

function isEmailAddr(email) {
  var ret = false;
  var s = new String(email);
  var ix = s.indexOf("@");
  if (ix > 0) {
    var dix = s.indexOf(".", ix);
    if ((dix > ix+1) && (s.length > dix+1)) {
      ret = true;
    }
  }
  return ret;
}

function isBlank(val){
  if (val==null) {
    return true;
  }
  for (var i=0; i<val.length; i++) {
    if ((val.charAt(i)!=' ') && (val.charAt(i)!="\t") && (val.charAt(i)!="\n") && (val.charAt(i)!="\r")) {
      return false;
    }
  }
  return true;
}

function isDigit(num) {
  if (num.length>1) {
    return false;
  }
  var string="1234567890";
  if (string.indexOf(num)!=-1) {
    return true;
  }
  return false;
}

function isInteger(val) {
  if (isBlank(val)) {
    return false;
  }
  for (var i=0; i<val.length; i++) {
    if (!isDigit(val.charAt(i))) {
      return false;
    }
  }
  return true;
}

function failIntegerInRange(c, msg, min, max) {
  var val = c.value;
  var ok = false;
  if (isInteger(val)) {
    if ((val>=min) && (val<=max)) {
      ok = true;
    }
  }
  if (!ok) {
    c.focus();
    alert(msg + ' must be in range ' + min + '-' + max);
  }
  return (!ok);
}

function checkChoice(f, i) {
  if (i==0) {
    // "All" checkbox selected.
    if (f[0].checked == false) {
      for (i=1; i<f.length; i++) {
        f[i].checked = f[0].checked;
      }
    }
  } else {
    // A checkbox other than "Any" selected.
    if (f[i].checked == true) {
      f[0].checked = true;
    }
  }
  var total = 1;  
  for (i=1; i<f.length; i++) {
    if (!f[i].checked) {
      total += 1;
    }
  }
  if (f.length > 0) {
    if (total == f.length) {
      f[0].checked = false;
    }
  }   
}
