var digits = "0123456789";
var lowercaseLetters = "abcdefghijklmnopqrstuvwxyz";
var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var whitespace = " \t\n\r";
var decimalPointDelimiter = ".";
var invalidChar = "'";
var radioFlag = 'false';
var defaultEmptyOK = true;

function makeArray(n) {
   for (var i = 1; i <= n; i++) {
      this[i] = 0;
   }
   return this;
}

var daysInMonth = makeArray(12);
daysInMonth[1] = 31;
daysInMonth[2] = 29;   // must programmatically check this
daysInMonth[3] = 31;
daysInMonth[4] = 30;
daysInMonth[5] = 31;
daysInMonth[6] = 30;
daysInMonth[7] = 31;
daysInMonth[8] = 31;
daysInMonth[9] = 30;
daysInMonth[10] = 31;
daysInMonth[11] = 30;
daysInMonth[12] = 31;

function isEmpty(s) {
 return ((s == null) || (s.length == 0));
}
function isWhitespace (s) {
  var i;
  if (isEmpty(s)) return true;
  for (i = 0; i < s.length; i++) {
    var c = s.charAt(i);
    if (whitespace.indexOf(c) == -1) return false;
  }
  return true;
}
function stripWhitespace (s){
  return stripCharsInBag (s, whitespace);
}
function charInString (c, s){
  for (i = 0; i < s.length; i++) {
   if (s.charAt(i) == c) return true;
  }
  return false;
}
function stripInitialWhitespace (s){
  var i = 0;
  while ((i < s.length) && charInString (s.charAt(i), whitespace))
    i++;
  return s.substring (i, s.length);
}
function isLetter (c){
  return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) );
}
function isDigit (c){
  return ((c >= "0") && (c <= "9"));
}
function isLetterOrDigit (c) {
  return (isLetter(c) || isDigit(c));
}
function isInteger (s){
  var i;
  if (isEmpty(s)) {
    if (isInteger.arguments.length == 1) return defaultEmptyOK;
    else return (isInteger.arguments[1] == true);
  }
  for (i = 0; i < s.length; i++) {
    var c = s.charAt(i);
    if (!isDigit(c)) {
      return false;
    }
  }
  return true;
}
function isblank(s) {
    for (var i=0; i< s.length; i++) {
      var c = s.charAt(i);
      if ((c !=0) && (c !='') && (c !='\n') && (c !='\t')) return false;
    }
    return true;
}
function isSignedInteger (s) {
  if (isEmpty(s)) {
    if (isSignedInteger.arguments.length == 1) return defaultEmptyOK;
    else return (isSignedInteger.arguments[1] == true);
  } else {
    var startPos = 0;
    var secondArg = defaultEmptyOK;
    if (isSignedInteger.arguments.length > 1)
       secondArg = isSignedInteger.arguments[1];
        // skip leading + or -
       if ( (s.charAt(0) == "-") || (s.charAt(0) == "+")){
         startPos = 1;
       }
       return (isInteger(s.substring(startPos, s.length), secondArg));
    }
}
function isPositiveInteger (s){
  var secondArg = defaultEmptyOK;
  if (isPositiveInteger.arguments.length > 1) {
     secondArg = isPositiveInteger.arguments[1];
  }
  return ( (isEmpty(s) && secondArg)  || (parseInt (s) > 0));
}
function isNonnegativeInteger (s){
  var secondArg = defaultEmptyOK;
  if (isNonnegativeInteger.arguments.length > 1) {
    secondArg = isNonnegativeInteger.arguments[1];
  }
  return (isSignedInteger(s, secondArg) && ( (isEmpty(s) && secondArg) || (parseInt (s) >= 0)));
}
function isNegativeInteger (s){
   var secondArg = defaultEmptyOK;
   if (isNegativeInteger.arguments.length > 1){
     secondArg = isNegativeInteger.arguments[1];
   }
   return (isSignedInteger(s, secondArg) && ( (isEmpty(s) && secondArg)  || (parseInt (s) < 0)));
}
function isNonpositiveInteger (s){
  var secondArg = defaultEmptyOK;
  if (isNonpositiveInteger.arguments.length > 1){
     secondArg = isNonpositiveInteger.arguments[1];
  }
  return (isSignedInteger(s, secondArg) && ( (isEmpty(s) && secondArg)  || (parseInt (s) <= 0)));
}
function isFloat(s) {
  var seenDecimalPoint = false;
  if (isEmpty(s)) {
       if (isFloat.arguments.length == 1) return defaultEmptyOK;
       else return (isFloat.arguments[1] == true);
   }
   if (s == decimalPointDelimiter) return false;
   for (var i = 0; i < s.length; i++) {
    var c = s.charAt(i);
    if ((c == decimalPointDelimiter) && !seenDecimalPoint) {
       seenDecimalPoint = true;
    } else if (!isInteger(c)) {
       return false;
    }
   }
   return true;
}
function isSignedFloat (s) {
  if (isEmpty(s)) {
    if (isSignedFloat.arguments.length == 1) return defaultEmptyOK;
    else return (isSignedFloat.arguments[1] == true);
  } else {
    var startPos = 0;
    var secondArg = defaultEmptyOK;
    if (isSignedFloat.arguments.length > 1)
       secondArg = isSignedFloat.arguments[1];
    // skip leading + or -
     if ( (s.charAt(0) == "-") || (s.charAt(0) == "+") )
       startPos = 1;
       return (isFloat(s.substring(startPos, s.length), secondArg));
    }
}
function isAlphabetic (s){
  var i;
  if (isEmpty(s)) {
    if (isAlphabetic.arguments.length == 1) return defaultEmptyOK;
    else return (isAlphabetic.arguments[1] == true);
  }
  for (i = 0; i < s.length; i++) {
    var c = s.charAt(i);
    if (!isLetter(c))
      return false;
  }
  return true;
}
function isAlphanumeric (s) {
  var i;
  if (isEmpty(s)) {
     if (isAlphanumeric.arguments.length == 1) return defaultEmptyOK;
     else return (isAlphanumeric.arguments[1] == true);
  }
  for (i = 0; i < s.length; i++) {
    var c = s.charAt(i);
    if (! (isLetter(c) || isDigit(c) ) )
     return false;
  }
  return true;
}
function isIntegerInRange (s, a, b) {
  if (isEmpty(s)) {
     if (isIntegerInRange.arguments.length == 3) return defaultEmptyOK;
     else return (isIntegerInRange.arguments[3] == true);
  }
  if (!isInteger(s, false)) return false;
  var num = parseInt (s);
  return ((num >= a) && (num <= b));
}
function warnEmpty (theField, s) {
  theField.focus();
  alert(mPrefix + s + mSuffix);
  return false;
}
function warnInvalid (theField, s){
  theField.focus();
  theField.select();
  alert(s);
  return false;
}
function checkString (theField, s, emptyOK) {
  // Next line is needed on NN3 to avoid "undefined is not a number" error
  // in equality comparison below.
  if (checkString.arguments.length == 2) emptyOK = defaultEmptyOK;
  if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  if (isWhitespace(theField.value)) {
       return warnEmpty (theField, s);
  } else {
    return true;
  }
}
function isYear (s){
  if (isEmpty(s)) {
      if (isYear.arguments.length == 1) return defaultEmptyOK;
      else return (isYear.arguments[1] == true);
   }
   if (!isNonnegativeInteger(s)) return false;
   return (s.length == 4);
}
function isMonth (s){
  if (isEmpty(s)) {
    if (isMonth.arguments.length == 1) return defaultEmptyOK;
    else return (isMonth.arguments[1] == true);
  }
  return isIntegerInRange (s, 1, 12);
}
function isDay (s){
  if (isEmpty(s)) {
      if (isDay.arguments.length == 1) return defaultEmptyOK;
      else return (isDay.arguments[1] == true);
  }
  return isIntegerInRange (s, 1, 31);
}
function daysInFebruary (year) {
  return ( ((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0) ) ) ? 29 : 28 );
}
function isDate (year, month, day) {
  if (! (isYear(year, false) && isMonth(month, false) && isDay(day, false))) return false;
  var intYear = parseInt(year);
  var intMonth = parseInt(month);
  var intDay = parseInt(day);
  if (intDay > daysInMonth[intMonth]) return false;
  if ((intMonth == 2) && (intDay > daysInFebruary(intYear))) return false;
  return true;
}
function isShortDate (year, month) {
  if (! (isYear(year, false) && isMonth(month, false))) return false;
  else return true;
}
function checkYear (theField, emptyOK){
  if (checkYear.arguments.length == 1) emptyOK = defaultEmptyOK;
  if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  if (!isYear(theField.value, false)) {
       return warnInvalid (theField, iYear);
  } else {
    return true;
  }
}
function checkMonth (theField, emptyOK){
  if (checkMonth.arguments.length == 1) emptyOK = defaultEmptyOK;
  if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  if (!isMonth(theField.value, false)) {
       return warnInvalid (theField, iMonth);
  } else {
    return true;
  }
}
function checkDay (theField, emptyOK){
  if (checkDay.arguments.length == 1) emptyOK = defaultEmptyOK;
  if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  if (!isDay(theField.value, true)) {
     return warnInvalid (theField, iDay);
  } else {
    return true;
  }
}
function alertOnError(form_obj, input_obj, obj_value, error_msg) {
  alert(error_msg);
  return false;
}
function checkFormFields(obj, obj_type){
  if (obj_type=="checkbox") {
    for (i=0; i< obj.length; i++) {
      if (obj[i].checked) {
        return true;
        break;
      }
    }
    return false;
  }
  if (obj_type == "radio") {
    for (i=0; i< obj.length; i++) {
      if (obj[i].checked) {
        return true;
        break;
      }
    }
    return false;
  }
  else if (obj_type == "hidden") {
    if (!isblank(obj.value))  return true;
    else {
     return false;
    }
  }
  else if (obj_type == "text" || obj_type=="textarea" || obj_type=="file" ) {
    if (!isblank(obj.value))  return true;
    else {
     return false;
    }
  }
  else if (obj_type == "select" || obj_type =="select-one" || obj_type =="select-multiple") {
    if (!isblank(obj.value)) {
      for (i=0 ; i< obj.length; i++) {
        if (obj.options[i].selected) {
           return true;
           break;
        }
      }
      return false;
    }
    else {
      return false;
    }
  }
}
function checkIntegerValue(val, emptyOK) {
  if (checkIntegerValue.arguments.length == 1) emptyOK = defaultEmptyOK;
  if (!isblank(val.value)){
    if ((emptyOK == true) && isInteger(val.value)) return true;
    else {
       alert ( invalidNum + ' ' + val.value + '. ' + mIntegerValue);
       val.value=""; val.focus();
       return false;
    }
  }
}
function checkFloatValue(val, emptyOK) {
  if (checkFloatValue.arguments.length == 1) emptyOK = defaultEmptyOK;
  if (!isblank(val.value)){
    if ((emptyOK == true) && !isAlphabetic(val.value) && isFloat(val.value)) return true;
    else {
       alert ( invalidNum + ' ' + val.value + '. ' + mFloatValue);
       val.value=""; val.focus();
       return false;
    }
  }
}
function checkNegativeFloatValue(val, emptyOK){
  if (checkNegativeFloatValue.arguments.length == 1) emptyOK = defaultEmptyOK;
  if (!isblank(val.value)) {
    if ((emptyOK == true) && !isAlphabetic(val.value) && (isSignedFloat(val.value) || isFloat(val.value))) return true;
    else {
      alert(invalidNum + val.value + '. ' + mNegFloatValue);
      val.value = "";
      return false;
    }
  }
}
function setAVGvalue(val1,val2,val3){
  if (!isblank(val1.value) || !isblank(val2.value)) {
    if (checkNegativeFloatValue(val1) && checkNegativeFloatValue(val2)) {
      var avg = (parseFloat(val1.value) + parseFloat(val2.value)) /2;
      if (isNaN(avg)){
        avg.value= "";
      } else { val3.value = avg.toString().slice(0,5); }
    }
  }
}
function toggle(p_img, p_tx_File) {
  p_img.src = p_tx_File;
}
function resetValue(f,val1,val2){
  val1.value = "";
  val2.value = "";
}
function logout(){
  if (confirm(mLogout)) {
    return true;
  }
  else return false;
}
function goToPage(val) {
  location.href = val;
}
function goToLogout(){
  if (goToLogout.arguments[0] == '../') {
    var ahref = '../ipp.htm?TRX=Logout';
  } else {
    var ahref = 'ipp.htm?TRX=Logout';
  }
  location.href = ahref;
}
function editUser() {
  var ahref = 'ipp.htm?TRX=CreateNewUserAdmin&ACTION=SETUP';
  if (navigator.appName=="Netscape") { window.setResizable(true);}
  window.open(ahref, "popUp", "status=yes,resizable=yes,scrollbars=yes,height=520,width=600,top=0,left=0");
}
function changeLN(val) {
  window.location.replace('changeLN.jsp?LN='+val);
}
function changeImg(input, file){
   input.src = file;
}
function stripInvalidChar (s,val,bag){
  var returnString = "";
  for (var i = 0; i < s.length; i++) {
      var c = s.charAt(i);
      if (bag.indexOf(c) == -1) returnString += c;
      else{
       if (bag == ','){
         c = '.';
       } else {
         c = '';
       }
       returnString += c;
      }
   }
  val.value  = returnString;
}
function stripApostf (s,val){
  return stripInvalidChar (s,val,invalidChar);
}
function stripComman (s,val){
  return stripInvalidChar (s,val,',');
}
function isEmail (s){
  if (isEmpty(s))
  if (isEmail.arguments.length == 1) return defaultEmptyOK;
    else return (isEmail.arguments[1] == true);
  if (isWhitespace(s)) return false;
  var i = 1;
  var sLength = s.length;
  // look for @
   while ((i < sLength) && (s.charAt(i) != "@")) { i++ }
   if ((i >= sLength) || (s.charAt(i) != "@")) return false;
   else i += 2;
  // look for .
   while ((i < sLength) && (s.charAt(i) != ".")) { i++ }
  // there must be at least one character after the .
   if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
   else return true;
}
function checkEmail (theField, emptyOK){
   if (checkEmail.arguments.length == 1) emptyOK = defaultEmptyOK;
   if ((emptyOK == true) && (isEmpty(theField.value))) return true;
   else if (!isEmail(theField.value, false))
       return warnInvalid (theField, iEmail);
   else return true;
}
function checkDate(yearField,monthField,dayField,type) {
 var flag = false;
 if (type==1) {
   flag = isDate(yearField.value, monthField.value, dayField.value);
 } else if (type==2 && dayField==null) {
   flag = isShortDate(yearField.value, monthField.value);
 } else if (type==3 && monthField==null && dayField==null){
   flag = isYear(yearField.value);
 } else if (type==4 && yearField==null && dayField==null){
   flag = isMonth(monthField.value);
 }
 if (!flag){
  alert(mDateInvalid);
  return false;
 } else return true;
}
function checkValues(a,b,c, emptyOK){
  if (checkValues.arguments.length ==3) emptyOK = defaultEmptyOK;
  if ((emptyOK == true) && isblank(a.value) && isblank(b.value) && isblank(c.value)) return 4;
  else if (!isblank(a.value) && !isblank(b.value) && !isblank(c.value)) return 1;
  else if (!isblank(a.value) && !isblank(b.value)) return 2;
  else if (!isblank(a.value)) return 3;
  else if (!isblank(b.value)) return 0;
}
function checkRange(s, minValue, maxValue){
  if (isEmpty(s.value)) {
     if (checkRange.arguments.length == 4) return defaultEmptyOK;
     else return (checkRange.arguments[3] == true);
  }
  var e = s.value;
  if (!isAlphabetic(e) && isIntegerInRange(parseInt(e),minValue,maxValue)) return true;
  else {
    alert (invalidNum + ':' + e + '\n' + invalidRange + ' ' + minValue + '-' + maxValue);
    s.value = "";
    return false;
  }
}
function canSubmitForm(f){
 var flag = false;
 for (var i=0; i< f.length; i++){
   var obj = f.elements[i];
   if (obj.type != "hidden" && obj.type != "radio"){
     var flag = checkFormFields(obj, obj.type);
     if (flag) break;
   }
 }
 return flag;
}
function setRadioFlag(flag){
 radioFlag = flag;
}
function submitForm(){
  var flag = verify(this.document.forms[0]);
  if (flag==true){
    this.document.forms[0].submit();
  }
}
function resetForm(){
  if (confirm (mReset)) {
    this.document.forms[0].reset();
  }
}
function newImage(arg) {
  if (document.images) {
	rslt = new Image();
	rslt.src = arg;
	return rslt;
  }
}
var preloadFlag = false;
function preloadImages(code) {
  if (!preloadFlag && document.images) {
	newImage('images/g1.gif');
	newImage('images/g2.gif');
	newImage('images/g3.gif');
	newImage('images/g4.gif');
	newImage('images/g5.gif');
	newImage('images/g6.gif');
	newImage('images/g7.gif');
	newImage('images/g8.gif');
	newImage('images/counter/1.gif');
	newImage('images/counter/2.gif');
	newImage('images/counter/3.gif');
	newImage('images/counter/4.gif');
	newImage('images/counter/5.gif');
	newImage('images/counter/6.gif');
	newImage('images/counter/7.gif');
	newImage('images/counter/8.gif');
	newImage('images/counter/9.gif');
	newImage('images/counter/0.gif');
	newImage('images/tabs/gifs/pixel.gif');
	newImage('images/tabs/gifs/taboffdiv.gif');
	newImage('images/tabs/gifs/tabofflt.gif');
	newImage('images/tabs/gifs/taboffltB.gif');
	newImage('images/tabs/gifs/tabon.gif');
	newImage('images/tabs/gifs/tabltdown.gif');
	newImage('images/tabs/gifs/tabondiv.gif');
	newImage('images/tabs/gifs/taboffrt.gif');
	newImage('images/tabs/gifs/taboffrtB.gif');
	newImage('images/tabs/gifs/taboffrtdown.gif');
	newImage('images/tabs/gifs/tabondiv.gif');
	newImage('images/tabs/gifs/tabonlt.gif');
	newImage('images/tabs/gifs/tabonoffdiv.gif');
	newImage('images/tabs/gifs/tabonrt.gif');
	newImage('images/smallArrow_dn_on.gif');
	newImage('images/smallArrow_dn_off.gif');
	newImage('images/smallArrow_up_on.gif');
	newImage('images/FirstNodeMinus.gif');
	newImage('images/NodeMinus.gif');
	newImage('images/LastNodeMinus.gif');
	newImage('images/FirstNodePlus.gif');
	newImage('images/NodePlus.gif');
	newImage('images/LastNodePlus.gif');
	newImage('images/LastNode.gif');
	newImage('images/Node.gif');
	newImage('images/minus.gif');
    newImage('images/redball.gif');
    preloadFlag = true;
  }
}
function switchFocus(objID, status){
  document.getElementById(objID).style.visibility = status;
}
function setCheckBox(obj){
 if (obj.value== 'T'){
   obj.value = 'F';
 } else if (obj.value== 'F') {
   obj.value = 'T';
 }
}
function printDocument(){
  window.print();
}
function valueInRange(s, min, max){
  var flag = false;
  if (!isEmpty(s)){
   if ((isFloat(s) || isInteger(s)) && (parseFloat(s) >= parseFloat(min) && parseFloat(s) <= parseFloat(max))) {
     flag = true;
   }
  }
  return flag;
}
function protect(){
 if(event.button==2){
   window.alert(mProtect)
 }
}
function popUpImage(ahref, width, height){
  if (ahref=='null') {
     alert(mInvalidLink);
  }
  else if (ahref!=null && ahref!='') {
     window.open("viewpicture.jsp?&ahref=" + ahref, "popUpPicture" ,"toolbar=no,resizable=yes,location=no,scrollbars=yes,width=" + width +",height=" + height +",top=0,left=0");
  }
}
function popUp(ahref){
  if (ahref=='null') {
     alert(mInvalidLink);
  }
  else if (ahref!=null && ahref!='') {
     window.open(ahref, "popUp","toolbar=yes,location=yes,resizable=yes,scrollbars=yes,width=800,height=600,top=0,left=0");
  }
}
function switchDisplay(objID){
  if(document.getElementById(objID).style.display == "block"){
    changeFocus(objID, "none");
  }
  else changeFocus(objID, "block");
}
function changeFocus(objID, status){
  document.getElementById(objID).style.display = status;
}
function increaseSize(image){
  while(image.width < 350){image.width++;}
  while(image.height < 350){image.height++;}
}
function decreaseSize(image){
  image.width = 122;
  image.height = 90;
}
//document.onmousedown=protect