   // -------------------------------------------------------
   // Function to verify a date input field
   // Arguments:
   //    1. reference to the date-entry field
   //    2. error message (if passed empty, uses default)
   //    3. date display format (defaults to 'dd MMM yyyy')
   // Called as onChange="return validDate(this,'Duh!','0')"
   // Function converts date to a standard database format
   //    or selects invalid entry and prompts the user.
   // If year does not include century, and year < 10 (n),
   //    converts the century to 2K+
   // -------------------------------------------------------
    function validateDate(field)
    {
      return validDate(field,field.value + ' is an unknown date format. \nPlease try again...','8');
    }

    function checkDevpDate(field)
    {
       //valid range is 365 days before and after today
        var today = new Date();
        var rangeMax;
        var rangeMin;
        var todaysMonth = ((today.getMonth()+1)<10)?0+""+(today.getMonth()+1):today.getMonth()+1;
        var todaysDay = (today.getDate()<10)?0+""+today.getDate():today.getDate();
        var todaysYear = (today.getYear() < 1900) ? today.getYear() + 1900 : today.getYear();

        rangeMin = todaysMonth+"/"+todaysDay+"/"+(todaysYear-1);
        rangeMax = todaysMonth+"/"+todaysDay+"/"+(todaysYear+1);

        return checkDateRange(field ,rangeMin ,rangeMax);
    }

    function validateDatesRange(rangeMin ,rangeMax ,errMsg) // Ranges are string formated to mm/dd/yyyy or dd-mon-yyyy
    {
       var minMM = 0;
       var minDD = 0;
       var minYYYY = 0;
       var maxMM = 0;
       var maxDD = 0;
       var maxYYYY = 0;
       if (rangeMin == "" || rangeMax == "" ) return true;
       if (!errMsg) errMsg = "End Date must be greater or equal to Start Date.";
		
       rangeMin = translate_dd_mon_to_mm_dd(new Date(rangeMin));
       rangeMax = translate_dd_mon_to_mm_dd(new Date(rangeMax));

       minMM = rangeMin.substring(0,2);
       minDD = rangeMin.substring(3,5);
       minYYYY = rangeMin.substring(6,10);

       var rangeMinString = minYYYY+""+minMM+""+minDD;

       maxMM = rangeMax.substring(0,2);
       maxDD = rangeMax.substring(3,5);
       maxYYYY = rangeMax.substring(6,10);

       var rangeMaxString = maxYYYY+""+maxMM+""+maxDD;

       if (rangeMaxString < rangeMinString)
       {
           alert(errMsg);
           return false;
       }
       return true;
    }

    function checkDateLessThen(checkedDate ,maxDate ,errMsg) // Ranges are string formated to mm/dd/yyyy or dd-mon-yyyy
    {
       var maxMM = "a";
       var maxDD = "a";
       var maxYYYY = "a";

       checkedDate = translate_dd_mon_to_mm_dd(checkedDate);
       maxDate = translate_dd_mon_to_mm_dd(maxDate);

       checkedMM = checkedDate.substring(0,2);
       checkedDD = checkedDate.substring(3,5);
       checkedYYYY = checkedDate.substring(6,10);

       var checkedDateString = checkedYYYY+""+checkedMM+""+checkedDD;

       maxMM = maxDate.substring(0,2);
       maxDD = maxDate.substring(3,5);
       maxYYYY = maxDate.substring(6,10);

       var maxDateString = maxYYYY+""+maxMM+""+maxDD;
       if ((maxDateString < checkedDateString))
       {
           alert(errMsg);
           return false;
       }
       return true;

    }

    function checkDateRange(field ,rangeMin ,rangeMax) // Ranges are string formated to mm/dd/yyyy or dd-mon-yyyy
    {
       var checkedDD = 0;
       var checkedMM  = 0;
       var checkedYYYY  = 0;
       var minMM = 0;
       var minDD = 0;
       var minYYYY = 0;
       var maxMM = 0;
       var maxDD = 0;
       var maxYYYY = 0;


       if (validDate(field,'Unknown date format. \nPlease try again...','3'))
       {
           var checkedDate = field.value;
           if (checkedDate == "") return true;

           minMM = rangeMin.substring(0,2);
           minDD = rangeMin.substring(3,5);
           minYYYY = rangeMin.substring(6,10);

           var rangeMinString = minYYYY+""+minMM+""+minDD;

           maxMM = rangeMax.substring(0,2);
           maxDD = rangeMax.substring(3,5);
           maxYYYY = rangeMax.substring(6,10);

           var rangeMaxString = maxYYYY+""+maxMM+""+maxDD;

           checkedDate = translate_dd_mon_to_mm_dd(checkedDate);
           checkedMM = checkedDate.substring(0,2);
           checkedDD = checkedDate.substring(3,5);
           checkedYYYY = checkedDate.substring(6,10);

           var checkDateString = checkedYYYY+""+checkedMM+""+checkedDD;

           if (checkDateString > rangeMaxString || checkDateString < rangeMinString)
           {
              alert("You can only choose dates between " + minDD + "-" + numToMonth(minMM) + "-" + minYYYY + " and " +  maxDD + "-" + numToMonth(maxMM) + "-" + maxYYYY + ".");
              field.select();
              field.focus();
              return false;
           }
           return true;
        }
        else
        {
          return false;
        }
    }


    function translate_dd_mon_to_mm_dd(dateValue)
    {
        var ds = dateValue;
        if (dateValue.indexOf("-",0)>0 && dateValue.indexOf("-",0)<3)
        {
                    // test for DD-MMM-YYYY standard format
           if (dateValue.length == 11 && dateValue.indexOf("-",0) == 2 && dateValue.lastIndexOf("-") == 6)
           {
              var dd = dateValue.substring(0,2);
              var mm = monthToNum(dateValue.substring(3,6));
              var yyyy = dateValue.substring(7,11);
              if (dd.charAt(0) == "0") dd = dd.substring(1,2);
              if (isNum(mm+dd+yyyy))
              {
                    ds = ((mm<10)?0+""+mm:mm)+ "/" + dateValue.substring(0,2) + "/" + yyyy;
              }
           }
        }
        return ds;
    }

    function translate_mm_dd_to_dd_mon(dateValue)
    {
        var ds = dateValue;
        if (dateValue.indexOf("-",0)>0 && dateValue.indexOf("-",0)<3)
        {
                    // test for DD-MMM-YYYY standard format
           if (dateValue.length == 11 && dateValue.indexOf("-",0) == 2 && dateValue.lastIndexOf("-") == 6)
           {
              var dd = dateValue.substring(0,2);
              var mm = monthToNum(dateValue.substring(3,6));
              var yyyy = dateValue.substring(7,11);
              if (dd.charAt(0) == "0") dd = dd.substring(1,2);
              if (isNum(mm+dd+yyyy))
              {
                    ds = ((mm<10)?0+""+mm:mm)+ "/" + dateValue.substring(0,2) + "/" + yyyy;
              }
           }
        }
        return ds;
    }



    function validDate(dateField, errMsg, fmt)
    {
      var ds = dateField.value;
      // bail if the date parameter is empty
      if (ds == "")
         return true;

      // declare local variables
      var n = 50;   // the Y2K offset in years
      var today = new Date();
      var err = 0;  // error flag
      var month = "";
      var d;
      var m;
      var y;
      var p1 = 0;
      var p2 = 0;
      var dd = 0;
      var mm = 0;
      var yy = (today.getYear() < 1900) ? today.getYear() + 1900 : today.getYear();

      var e = errMsg;
      if (errMsg == "") {
         // default error message if second parameter is empty
         e = "Invalid date! Please re-enter using a standard format...";
      }

      // strip leading and trailing spaces
      while (ds.charAt(0) == " ") {
            ds = ds.substring(1,ds.length);
            dateField.value = ds;
      }
      while (ds.charAt(ds.length-1) == " ") {
            ds = ds.substring(0,ds.length-1);
            dateField.value = ds;
      }

      // handle common data-entry shortcuts
      if (ds == "t" || ds == "today" || ds == "0") {
            dd = today.getDate();
            mm = today.getMonth() + 1;
            ds = mm + "/" + dd + "/" + yy;
      }
      else if (ds.length < 3 && isNum(ds)) {
         // try as a date in the current month and year
         if (parseInt(ds) < 32) {
            dd = ds;
            mm = today.getMonth() + 1;
            ds = mm + "/" + dd + "/" + yy;
         }
      }
      else if (ds.length == 3 && monthToNum(ds) > 0) {
         // assume it's a month string, set date as 1st
         dd = 1;
         mm = monthToNum(ds);
         ds = mm + "/" + dd + "/" + yy;
      }
      else if (ds.length == 4 && isNum(ds)) {
         if (parseInt(ds) > 1231) {
            // assume it's a year [yyyy], set date to 1st January
            dd = 1;
            mm = 1;
            yy = ds;
            ds = mm + "/" + dd + "/" + yy;
         } else {
            // assume it's a month and day [mmdd], set year as current
            dd = ds.substring(2);
            mm = ds.substring(0,2);
            ds = mm + "/" + dd + "/" + yy;
         }
      }
      else if (ds.length>4 && ds.length<7 && monthToNum(ds.substring(0,3))>0 && ds.indexOf(" ",0)>0) {
         // assume it's a month and day (mmm d[d]), set year as current
         p1 = ds.indexOf(" ");   // position of space
         dd = ds.substring(p1+1,ds.length);
         mm = monthToNum(ds.substring(0,3));
         ds = mm + "/" + dd + "/" + yy;
      }
      else if (ds.length>2 && ds.length<6 && ds.indexOf("/",0)>0 && ds.indexOf("/",0)==ds.lastIndexOf("/")) {
         // assume it's a month and day (mm/dd), set year as current
         p1 = ds.indexOf("/");   // position of slash
         mm = ds.substring(0,p1);
         dd = ds.substring(p1+1,p1+3);
         if (dd.charAt(0) == "0") dd = dd.substring(1,2);
         if (mm.charAt(0) == "0") mm = mm.substring(1,2);
         ds = mm + "/" + dd + "/" + yy;
      }
      else if (ds.length>2 && ds.length<6 && ds.indexOf(" ",0)>0 && ds.indexOf(" ",0)==ds.lastIndexOf(" ")) {
         // assume it's a month and day (mm dd), set year as current
         p1 = ds.indexOf(" ");   // position of space
         mm = ds.substring(0,p1);
         dd = ds.substring(p1+1,p1+3);
         if (dd.charAt(0) == "0") dd = dd.substring(1,2);
         if (mm.charAt(0) == "0") mm = mm.substring(1,2);
         ds = mm + "/" + dd + "/" + yy;
      }
      else if (ds.length>2 && ds.length<6 && ds.indexOf("-",0)>0 && ds.indexOf("-",0)==ds.lastIndexOf("-")) {
         // assume it's a day and month (dd-mm), set year as current
         p1 = ds.indexOf("-");   // position of dash
         dd = ds.substring(0,p1);
         mm = ds.substring(p1+1,ds.length);
         if (dd.charAt(0) == "0") dd = dd.substring(1,2);
         if (mm.charAt(0) == "0") mm = mm.substring(1,2);
         ds = mm + "/" + dd + "/" + yy;
      }

      if (ds.indexOf("-",0)>0 && ds.indexOf("-",0)<3) {
         // test for DD-MMM-YYYY standard format
         if (ds.length == 11 && ds.indexOf("-",0) == 2 && ds.lastIndexOf("-") == 6) {
            dd = ds.substring(0,2);
            mm = monthToNum(ds.substring(3,6));
            yy = ds.substring(7,11);
            if (dd.charAt(0) == "0") dd = dd.substring(1,2);
            if (isNum(mm+dd+yy)) {
               ds = mm + "/" + dd + "/" + yy;
            }
            else {
               mm = 0;
               dd = 0;
               yy = 0;
            }
         }
         // test for DD-MMM-YY abbreviated format
         else if (ds.length == 9 && ds.indexOf("-",0) == 2 && ds.lastIndexOf("-") == 6) {
            dd = ds.substring(0,2);
            mm = monthToNum(ds.substring(3,6));
            yy = (parseInt(ds.substring(7,9))<n) ? ("20" + ds.substring(7,9)) : ("19" + ds.substring(7,9));
            if (dd.charAt(0) == "0") dd = dd.substring(1,2);
            if (isNum(mm+dd+yy)) {
               ds = mm + "/" + dd + "/" + yy;
            }
            else {
               mm = 0;
               dd = 0;
               yy = 0;
            }
         }
         // test for DD-MM-YY[YY] format
         else {
            p1 = ds.indexOf("-");   // position of first dash
            dd = ds.substring(0,p1);
            p2 = ds.lastIndexOf("-");   // position of last dash
            mm = ds.substring(p1+1,p2);
            yy = ds.substring(p2+1,ds.length);
            if (dd.charAt(0) == "0") dd = dd.substring(1,2);
            if (mm.charAt(0) == "0") mm = mm.substring(1,2);
            if (yy.length > 4) yy = yy.substring(0,4);
            if (dd==0 || mm==0) {
                  mm = 0;
                  dd = 0;
                  yy = 0;
            }
            else {
               if (yy == "0" || yy == "00" || yy == "000") yy = "2000";
               while (yy.substring(0,1)=="0") {
                  yy = yy.substring(1,yy.length);  // remove leading zeroes
               }
               if (yy == "") yy = (today.getYear() < 1900) ? today.getYear() + 1900 : today.getYear();
               if (isNum(mm+dd+yy)) {
                  if (yy > 0 && yy < 100) {
                     yy = (yy < n) ? (2000 + parseInt(yy)) : (1900 + parseInt(yy));
                  }
                  ds = mm + "/" + dd + "/" + yy;
               }
               else {
                     mm = 0;
                     dd = 0;
                     yy = 0;
               }
            }
         }
      }

      // test for MMDDYY patterned formats
      else if (ds.length == 6 && isNum(ds)) {
         dd = ds.substring(2,4);
         mm = ds.substring(0,2);
         yy = ds.substring(4,6);
         if (dd.charAt(0) == "0") dd = dd.substring(1,2);
         if (mm.charAt(0) == "0") mm = mm.substring(1,2);
         if (yy.charAt(0) == "0") yy = yy.substring(1,2);
         if (yy == "0" || yy == "00") yy = "2000";
         if (yy > 0 && yy < 100) {
            yy = (yy < n) ? (2000 + parseInt(yy)) : (1900 + parseInt(yy));
         }
         ds = mm + "/" + dd + "/" + yy;
      }

      // test for MMDDYYYY patterned formats
      else if (ds.length == 8  && isNum(ds)) {
         dd = ds.substring(2,4);
         mm = ds.substring(0,2);
         yy = ds.substring(4,8);
         if (yy == "0" || yy == "00" || yy == "000") yy = "2000";
         if (dd.charAt(0) == "0") dd = dd.substring(1,2);
         if (mm.charAt(0) == "0") mm = mm.substring(1,2);
         ds = mm + "/" + dd + "/" + yy;
      }

      // convert year 2K+ for MM/DD/YY[YY] pattern formats
      else if (ds.indexOf("/",0) > 0 && (ds.length-ds.lastIndexOf("/")) < 6) {
         p1 = ds.indexOf("/");   // position of first slash
         mm = ds.substring(0,p1);
         p2 = ds.lastIndexOf("/");   // position of last slash
         dd = ds.substring(p1+1,p2);
         yy = ds.substring(p2+1,ds.length);
         if (dd.charAt(0) == "0") dd = dd.substring(1,2);
         if (mm.charAt(0) == "0") mm = mm.substring(1,2);
         if (yy.length > 4) yy = yy.substring(0,4);
         if (yy == "0" || yy == "00" || yy == "000") yy = "2000";
         while (yy.substring(0,1)=="0") {
            yy = yy.substring(1,yy.length);  // remove leading zeroes
         }
         if (yy == "") yy = (today.getYear() < 1900) ? today.getYear() + 1900 : today.getYear();
         if (isNum(mm+dd+yy)) {
            if (yy > 0 && yy < 100) {
               yy = (yy < n) ? (2000 + parseInt(yy)) : (1900 + parseInt(yy));
            }
            ds = mm + "/" + dd + "/" + yy;
         }
         else {
               mm = 0;
               dd = 0;
               yy = 0;
         }
      }

      // convert year 2K+ for MM.DD.YY[YY] pattern formats
      else if (ds.indexOf(".",0) > 0 && (ds.length-ds.lastIndexOf(".")) < 6) {
         p1 = ds.indexOf(".");   // position of first dot
         mm = ds.substring(0,p1);
         p2 = ds.lastIndexOf(".");   // position of last dot
         dd = ds.substring(p1+1,p2);
         yy = ds.substring(p2+1,ds.length);
         if (dd.charAt(0) == "0") dd = dd.substring(1,2);
         if (mm.charAt(0) == "0") mm = mm.substring(1,2);
         if (yy.length > 4) yy = yy.substring(0,4);
         if (yy == "0" || yy == "00" || yy == "000") yy = "2000";
         while (yy.substring(0,1)=="0") {
            yy = yy.substring(1,yy.length);  // remove leading zeroes
         }
         if (yy == "") yy = (today.getYear() < 1900) ? today.getYear() + 1900 : today.getYear();
         if (isNum(mm+dd+yy)) {
            if (yy > 0 && yy < 100) {
               yy = (yy < n) ? (2000 + parseInt(yy)) : (1900 + parseInt(yy));
            }
            ds = mm + "/" + dd + "/" + yy;
         }
         else {
               mm = 0;
               dd = 0;
               yy = 0;
         }
      }

      // validate the standard space-delimited formats
      else if (ds.indexOf(" ",0)>0 && (ds.length-ds.lastIndexOf(" "))<6) {
         if (ds.indexOf(",",0) > 0) {
            // validate 'mmm[...] dd, yy[yy]' type formats
            p1 = ds.indexOf(" ");   // position of first space
            mm = monthToNum(ds.substring(0,3));
            dd = ds.substring(p1+1,ds.indexOf(",",0));
            p2 = ds.lastIndexOf(" ");   // position of last space
            yy = ds.substring(p2+1,ds.length);
            if (dd.charAt(0) == "0") dd = dd.substring(1,2);
            if (yy.length > 4) yy = yy.substring(0,4);
            if (yy == "0" || yy == "00" || yy == "000") yy = "2000";
            while (yy.substring(0,1)=="0") {
               yy = yy.substring(1,yy.length);  // remove leading zeroes
            }
            if (yy == "") yy = (today.getYear() < 1900) ? today.getYear() + 1900 : today.getYear();
            if (isNum(mm+dd+yy)) {
               if (yy > 0 && yy < 100) {
                  yy = (yy < n) ? (2000 + parseInt(yy)) : (1900 + parseInt(yy));
               }
               ds = mm + "/" + dd + "/" + yy;
            }
            else {
               mm = 0;
               dd = 0;
               yy = 0;
            }
         }

         else if (monthToNum(ds.substring(ds.indexOf(" ")+1,ds.indexOf(" ")+4))>0) {
            // validate 'dd mmm[...] yy[yy]' type formats
            p1 = ds.indexOf(" ");   // position of first space
            dd = ds.substring(0,p1);
            if (dd.charAt(0) == "0") dd = dd.substring(1,2);
            p2 = ds.lastIndexOf(" ");   // position of last space
            mm = monthToNum(ds.substring(p1+1,p1+4));   // extract 3 bytes for month
            yy = ds.substring(p2+1,ds.length);
            if (yy.length > 4) yy = yy.substring(0,4);
            if (yy == "0" || yy == "00" || yy == "000") yy = "2000";
            while (yy.substring(0,1) == "0") {
               yy = yy.substring(1,yy.length);  // remove leading zeroes
            }
            if (yy == "") yy = (today.getYear() < 1900) ? today.getYear() + 1900 : today.getYear();
            if (isNum(mm+dd+yy)) {
               if (yy > 0 && yy < 100) {
                  yy = (yy < n) ? (2000 + parseInt(yy)) : (1900 + parseInt(yy));
               }
               ds = mm + "/" + dd + "/" + yy;
            }
            else {
               mm = 0;
               dd = 0;
               yy = 0;
            }
         }

         // validate 'MM DD YY[YY]' formats
         else {
            p1 = ds.indexOf(" ");   // position of first space
            mm = ds.substring(0,p1);
            p2 = ds.lastIndexOf(" ");   // position of last space
            dd = ds.substring(p1+1,p2);
            yy = ds.substring(p2+1,ds.length);
            if (dd.charAt(0) == "0") dd = dd.substring(1,2);
            if (mm.charAt(0) == "0") mm = mm.substring(1,2);
            if (yy.length > 4) yy = yy.substring(0,4);
            if (yy == "0" || yy == "00" || yy == "000") yy = "2000";
            while (yy.substring(0,1)=="0") {
               yy = yy.substring(1,yy.length);  // remove leading zeroes
            }
            if (yy == "") yy = (today.getYear() < 1900) ? today.getYear() + 1900 : today.getYear();
            if (isNum(mm+dd+yy)) {
               if (yy > 0 && yy < 100) {
                  yy = (yy < n) ? (2000 + parseInt(yy)) : (1900 + parseInt(yy));
               }
               ds = mm + "/" + dd + "/" + yy;
            }
            else {
               mm = 0;
               dd = 0;
               yy = 0;
            }
         }
      }

      // attempt to parse any other dates with valid IETF formats
      if (dd==0 && mm==0 && yy==0) {
         d = new Date(Date.parse(ds));
         dd = d.getDate();
         mm = (d.getMonth() + 1);
         // Netscape returns last 2 digits of years 1900-1999,
         // and the full year (4 char) string for dates > 2000 or < 1900;
         // IE returns 1900 minus the current year in all cases,
         // <duh> except IE3, when the year is earlier than 1970 </duh>
         if (d.getYear() > 2000) {
            yy = d.getYear();  // Netscape
         }
         else if (d.getYear() < 1900 && d.getYear() > 200) {
            yy = d.getYear();  // Netscape, date prior to 1900
         }
         else {
            yy = d.getYear() + 1900;
         }
         if (dd == 31 && mm == 12 && yy == 1969) {
            // IE's start-epoch date
            mm = 0;
            dd = 0;
            yy = 0;
         }
         ds = mm + "/" + dd + "/" + yy;
      }

      // verify the date components
      if (parseInt(dd)>0 && parseInt(mm)>0 && parseInt(yy)+1>0) {
         if (mm < 1 || mm > 12) err = 1;
         if (dd < 1 || dd > 31) err = 1;
         if (yy < 1000 || yy > 9999) err = 1;

         // check the months with 30 days
         if (mm == 4 || mm == 6 || mm == 9 || mm == 11) {
            if (dd == 31) {
               dd = 1;  // flick it forward a day
               mm = mm + 1;
            }
         }
         // check February and leap years
         if (mm == 2) {
            if (dd > 29) err = 1;
            if (dd == 29 && ((yy/4) != parseInt(yy/4))) {
               dd = 1;  // flick it forward a day
               mm = 3;
            }
         }
      }

      // finally, test whether the input string can be Date.parsed
      d = new Date(Date.parse(ds));
      if (!d.getDate()) err = 1;

      if (err==1 || dd==0 || mm==0) {
         alert(e);
         dateField.value = "";
         dateField.select();
         dateField.focus();
         return false;
      }

      // we have a valid IETF date, so convert it to
      // the specified standard format for database entry
      if (parseInt(dd)<10 && (fmt < 4 || fmt > 6))
         dd = "0" + dd;   // add leading zero to days 1-9

      // convert month numeric to string
      if (mm == 1)
         month = "Jan";
      else if (mm == 2)
         month = "Feb";
      else if (mm == 3)
         month = "Mar";
      else if (mm == 4)
         month = "Apr";
      else if (mm == 5)
         month = "May";
      else if (mm == 6)
         month = "Jun";
      else if (mm == 7)
         month = "Jul";
      else if (mm == 8)
         month = "Aug";
      else if (mm == 9)
         month = "Sep";
      else if (mm == 10)
         month = "Oct";
      else if (mm == 11)
         month = "Nov";
      else if (mm == 12)
         month = "Dec";
      else month == "";
      // add leading zero to months 1-9 for mm formats
      if (fmt > 6 && mm < 10) mm = "0" + mm;

      // trim for yy formats
      if ((yy>99) && (fmt==0 || fmt==2 || fmt==5 || fmt==7 || fmt==9)) {
         yy = yy - (parseInt(yy/100)*100);
         if (yy < 10) yy = "0" + yy;
      }

      // re-test the date components
      if (dd==0 || dd=="" || month=="" || mm==0 || mm=="" || yy=="") {
         alert(e);
         dateField.value="";
         dateField.select();
         dateField.focus();
         return false;
      }

      // redraw the date input field per format parameter:
      /*  0 = "dd mmm yy"     e.g. 27 Jan 99
          1 = "dd mmm yyyy"   e.g. 27 Jan 1999
          2 = "dd-mmm-yy"     e.g. 05-Aug-98
          3 = "dd-mmm-yyyy"   e.g. 05-Aug-1998
          4 = "mmm d, yyyy"   e.g. Aug 5, 1999
          5 = "m/d/yy"        e.g. 8/5/98
          6 = "m/d/yyyy"      e.g. 8/5/1998
          7 = "mm/dd/yy"      e.g. 09/21/56
          8 = "mm/dd/yyyy"    e.g. 08/05/1998
          9 = "mm dd yy"      e.g. 08 15 98
          10 = "mm dd yyyy"   e.g. 21 09 1956  */

      if (fmt == 1)
         dateField.value = dd + " " + month + " " + yy;
      else if (fmt == 2)
         dateField.value = dd + "-" + month + "-" + yy;
      else if (fmt == 3)
         dateField.value = dd + "-" + month + "-" + yy;
      else if (fmt == 4)
         dateField.value = month + " " + dd + ", " + yy;
      else if (fmt == 5)
         dateField.value = mm + "/" + dd + "/" + yy;
      else if (fmt == 6)
         dateField.value = mm + "/" + dd + "/" + yy;
      else if (fmt == 7)
         dateField.value = mm + "/" + dd + "/" + yy;
      else if (fmt == 8)
         dateField.value = mm + "/" + dd + "/" + yy;
      else if (fmt == 9)
         dateField.value = mm + " " + dd + " " + yy;
      else if (fmt == 10)
         dateField.value = mm + " " + dd + " " + yy;
      else
         dateField.value = dd + " " + month + " " + yy;

      return true;
   }

   // Internal function to test whether argument is a number
   function isNum(arg) {
      if (arg == "")
         return false;
      for (i=0; i<arg.length; i++) {
         if (arg.charAt(i) < "0" || arg.charAt(i) > "9") {
            return false;
         }
      }
      return true;
   }

   // Internal function to convert a month string to numeric 1-12
   function monthToNum(monthStr)
   {
      if (monthStr=="")
         return false;
      var m = monthStr;
      if (monthStr.length>3)
         var m = monthStr.substring(0,2);
      if (m=="jan" || m=="Jan" || m=="JAN")
         return 1;
      else if (m=="feb" || m=="Feb" || m=="FEB")
         return 2;
      else if (m=="mar" || m=="Mar" || m=="MAR")
         return 3;
      else if (m=="apr" || m=="Apr" || m=="APR")
         return 4;
      else if (m=="may" || m=="May" || m=="MAY")
         return 5;
      else if (m=="jun" || m=="Jun" || m=="JUN")
         return 6;
      else if (m=="jul" || m=="Jul" || m=="JUL")
         return 7;
      else if (m=="aug" || m=="Aug" || m=="AUG")
         return 8;
      else if (m=="sep" || m=="Sep" || m=="SEP")
         return 9;
      else if (m=="oct" || m=="Oct" || m=="OCT")
         return 10;
      else if (m=="nov" || m=="Nov" || m=="NOV")
         return 11;
      else if (m=="dec" || m=="Dec" || m=="DEC")
         return 12;
      else
         return 0;
   }
   function numToMonth(monthNum)
   {
      if (monthNum=="") return false;
      var m = monthNum;
      if (m.substring(0,1)=="0")
         var m = m.substring(1,2);
      else
         var m = m.substring(0,2);
      if (m=="1")
        return "Jan";
      else if (m=="2")
        return "Feb";
      else if (m=="3")
        return "Mar";
      else if (m=="4")
        return "Apr";
      else if (m=="5")
        return "May";
      else if (m=="6")
        return "Jun";
      else if (m=="7")
        return "Jul";
      else if (m=="8")
        return "Aug";
      else if (m=="9")
        return "Sep";
      else if (m=="10")
        return "Oct";
      else if (m=="11")
        return "Nov";
      else if (m=="12")
        return "Dec";
      else
         return 0;
   }
        function validateNotInRange(rangeMin ,rangeMax, checkedMin, checkedMax, errorMsg) // Ranges are string formated to mm/dd/yyyy or dd-mon-yyyy
        {
           var minMM = 0;
           var minDD = 0;
           var minYYYY = 0;
           var maxMM = 0;
           var maxDD = 0;
           var maxYYYY = 0;
           var checkMaxMM = 0;
           var checkMaxDD = 0;
           var checkMaxYYYY = 0;
           var checkMinMM = 0;
           var checkMinDD = 0;
           var checkMinYYYY = 0;


           //alert("checking " + rangeMin + " " + rangeMax + " " + checkedMin + " " + checkedMax  + " " + errorMsg);
           if (rangeMin == "" || rangeMax == "" ) return true;

           rangeMin = translate_dd_mon_to_mm_dd(rangeMin);
           rangeMax = translate_dd_mon_to_mm_dd(rangeMax);
           checkedMin = translate_dd_mon_to_mm_dd(checkedMin);
           checkedMax = translate_dd_mon_to_mm_dd(checkedMax);

           minMM = rangeMin.substring(0,2);
           minDD = rangeMin.substring(3,5);
           minYYYY = rangeMin.substring(6,10);

           var rangeMinString = minYYYY+""+minMM+""+minDD;

           maxMM = rangeMax.substring(0,2);
           maxDD = rangeMax.substring(3,5);
           maxYYYY = rangeMax.substring(6,10);

           var rangeMaxString = maxYYYY+""+maxMM+""+maxDD;

           checkMaxMM = checkedMax.substring(0,2);
           checkMaxDD = checkedMax.substring(3,5);
           checkMaxYYYY = checkedMax.substring(6,10);

           var checkMaxString = checkMaxYYYY+""+checkMaxMM+""+checkMaxDD;

           checkMinMM = checkedMin.substring(0,2);
           checkMinDD = checkedMin.substring(3,5);
           checkMinYYYY = checkedMin.substring(6,10);

           var checkMinString = checkMinYYYY+""+checkMinMM+""+checkMinDD;

           //alert(rangeMinString + " " + rangeMaxString + " " + checkMinString + " " + checkMaxString );
           if ((checkMinString < rangeMaxString) && (checkMaxString > rangeMinString))
           {
               alert(errorMsg);
               return false;
           }
           else
           {
             return true;
           }

    }
