//...  Common JavaScript functions...
//...  trim(fld)
//...  isNum(fld)
//...  isFloat(fld)
//...  isEmpty(fld)
//...  validZip(zip)
//...  validEmail(email)
//...  validDate(fld)

function chkReset(theForm) {
   //...  Check to reset this form...
   var retval;         //...  return value...

   //...  Prompt the user wish to reset the form...
   retval = confirm("Do you REALLY wish to reset this form?");
   //...  Return to the caller...
   return retval;
}

function trim(fld) {
   //...  Remove leading and trailing blanks from a field...
   var retval;                //...  return value...
   var i;                     //...  just a counter...
   var done;                  //...  indicates non-blank found...

   //...  Copy the field to trim...
   retval = fld;
   //...  Check for non-empty input...
   if (retval != null) {
      //...  Remove leading blanks...
      i = 0;
      done = false;
      while (i < retval.length  &&  !done) {
         if (retval.charAt(i) != " ") {
            done = true;
         } else {
            i++;
         }
      }
      retval = retval.substring(i);
      //...  Remove trailing blanks...
      i = retval.length - 1;
      done = false;
      while (i >= 0  &&  !done) {
         if (retval.charAt(i) != " ") {
            done = true;
         } else {
            i--;
         }
      }
      retval = retval.substring(0,i+1);
   }
   //...  Return to the caller...
   return retval;
}

function isNum(fld) {
   //...  Check for a field of numbers...
   var retval;                //...  return value...
   var i;                     //...  just a counter...
   var done;                  //...  indicates non-number found...

   //...  Assume field contains all numbers...
   retval = true;
   //...  Check for field of length 0...
   if (fld.length == 0) {
      retval = false;
   } else {
      //...  Scan field for a non-number...
      for (i=0; i<fld.length && retval; i++) {
         if (fld.charAt(i) < "0"  ||  fld.charAt(i) > "9") {
            retval = false;
         }
      }
   }
   //...  Return to the caller...
   return retval;
}

function isFloat(fld) {
   //...  Check for a floating point field...
   var retval;                //...  return value...
   var flt_regex = /^(\d*)((\.\d{0,2})?)$/;
   var result = fld.match(flt_regex);

   //...  Assume field contains a float...
   retval = true;
   //...  Check for a float...
   if (result == null)  {
      //...  Field is not a float...
      retval = false;
   }
   //...  Return to the caller...
   return retval;
}

function isEmpty(fld) {
   //...  Check for an empty field...
   var retval;         //... return value...
   
   retval = false;
   if (fld == ""  ||  fld == null) {
      retval = true;
   }
   return retval;
}

function validZip(zip) {
   //...  Validate a zip code...
   var retval;                //... return value...
   var zipRegExp = /^(\d{5}){1}((-\d{4})?)$/
   retval = zipRegExp.test(zip);
   return retval;
}

function validEmail(email) {
   //...  Validate an Email field...
   var retval;                //... return value...
   var emailRegExp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
   retval = emailRegExp.test(email);
   return retval;
}

//...  This script and many more are available free online at
//...  The JavaScript Source!! http://javascript.internet.com
//...  Original:  Torsten Frey (tf@tfrey.de)
//...  Web Site:  http://www.tfrey.de
//...  Some mods: ssk.
function validDate(fld) {
   //... Valid a date (mm/dd/yy, mm/dd/yyyy, ...)
   var retval;                //... return value...
   var checkstr = "0123456789";
   var DateField = fld;
   var DateValue = "";
   var DateTemp = "";
   var separator = "/";
   var day;
   var month;
   var year;
   var leap = 0;
   var err = 0;
   var i;

   retval = false;   //...  assume date is not valid...
   err = 0;
   DateValue = DateField.value;
   //...  Delete all chars except 0-9...
   for (i = 0; i < DateValue.length; i++) {
	  if (checkstr.indexOf(DateValue.substr(i,1)) >= 0) {
	     DateTemp = DateTemp + DateValue.substr(i,1);
	  }
   }
   if (DateValue.length > 0) {
      DateValue = DateTemp;
   }
   //...  Always change date to 8 digits - string...
   //...  if year is entered as 2-digit / 0 <= yy <= 50 -> 20yy, else 19yy...
   if (DateValue.length == 6) {
      if ((DateValue.substr(4,2) >= 0)  &&
          (DateValue.substr(4,2) <= 50)) {
         DateValue = DateValue.substr(0,4) + "20" + DateValue.substr(4,2);
      } else {
         DateValue = DateValue.substr(0,4) + "19" + DateValue.substr(4,2);
      }
   }
   if (DateValue.length != 8) { err = 19; }
   //...  year is wrong if year = 0000...
   year = DateValue.substr(4,4);
   if (year == 0) {
      err = 20;
   }
   //...  Validation of month...
   month = DateValue.substr(0,2);
   if ((month < 1) || (month > 12)) {
      err = 21;
   }
   //...  Validation of day...
   day = DateValue.substr(2,2);
   if (day < 1) {
     err = 22;
   }
   //...  Validation leap-year / february / day...
   if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
      leap = 1;
   }
   if ((month == 2) && (leap == 1) && (day > 29)) {
      err = 23;
   }
   if ((month == 2) && (leap != 1) && (day > 28)) {
      err = 24;
   }
   //...  Validation of other months...
   if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {
      err = 25;
   }
   if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {
      err = 26;
   }
   //...  if no error, write the completed date to Input-Field...
   if (err == 0) {
      DateField.value = month + separator + day + separator + year;
   }
   //...  Set the return value...
   if (err == 0) {
      retval = true;
   }
   return retval;
}

var helpWin = null;   //...  global var to track existence of help window...
function newWindow(url,name,h,w) {
   var nameWin = name;        //...  name of the help window...
   var height = h;            //...  help window height...
   var width = w;             //...  help window width...
   var xTop;                  //...  x upper left position of help window...
   var yTop;                  //...  y upper left position of help window...

/*
   if (!helpWin) {
      alert("helpWin is null...");
   } else {
      if (!helpWin.open) {
         alert("helpWin is not open...");
         if (helpWin.screenX) {
            alert("screenX = "+helpWin.screenX);
         }
      } else {
         if (helpWin.closed) {
            alert("helpWin has been closed...");
         }
      }
   }
*/

   //...  Center the help window...
   xTop = screen.width/2 - (width/2);
   yTop = screen.height/2 - (height/2);

   //...  Close the help window if it is already open...
   if (helpWin && helpWin.open && !helpWin.closed) {
      if (helpWin.screenX) {
         //...  Get the old size...
         xTop = helpWin.screenX;
         yTop = helpWin.screenY;
      }
      if (helpWin.innerHeight) {
         //...  Get the old position...
         height = helpWin.innerHeight;
         width = helpWin.innerWidth;
      }
      helpWin.close();
      helpWin = null;
   }

//   alert("1");
   if (navigator.appVersion.indexOf('4') != -1) {
      //...  Vars for centering the new window on Version 4 Browsers...
//      alert("2");
      helpWin = window.open(url,
                  nameWin,
                  "height="+height+","+
                  "width="+width+","+
                  "scrollbars=yes,"+
                  "resizable=yes,"+
                  "menubar=yes,"+
                  "toolbar=no,"+
                  "status=no,"+
                  "left="+xTop+","+
                  "top="+yTop);
   } else {
//      alert("3");
      helpWin = window.open(url,
                  nameWin,
                  "height="+height+","+
                  "width="+width+","+
                  "scrollbars=yes,"+
                  "resizable=no,"+
                  "menubar=yes,"+
                  "toolbar=no,"+
                  "status=yes,"+
                  "screenX="+xTop+","+
                  "screenY="+yTop);
   }
}


function xnewWindow(url, nameW, height, width) {
   if (navigator.appVersion.indexOf('4') != -1) {
      //...  Vars for centering the new window on Version 4 Browsers...
      xTop = screen.width/2 - (width/2);
      yTop = screen.height/2 - (height/2);
      window.open(url, nameW, 'height='+height+',width='+width+',scrollbars=1,resizable=1,menubar=0,toolbar=0,status=0,location=0,directories=0,left=' + xTop + ',top=' + yTop + '');
   } else {
      window.open(url, nameW, 'height='+height+',width='+width+',scrollbars=1,resizable=1,menubar=0,toolbar=0,status=0,location=0,directories=0,left=75,top=10');
   }
}


