var gsNum = "" //Global variable that holds the String representation of inputs we want to validate
var gdigitArray = new Array('0','1','2','3','4','5','6','7','8','9')

//Places a % in ebxThis if none there and calls isNumValid if func==1 and isWholeValid if func=2
function fixPerc(func, ebxThis, typ, sArg1, sArg2) {
   sNum = ebxThis.value;
   if (sNum.charAt(sNum.length-1)!="%") {
      ebxThis.value = ebxThis.value + "%";
   }
   if (func==1) {
      isNumValid(ebxThis, typ, sArg1, sArg2);
   } else if(func==2) {
      isWholeValid(ebxThis, typ, sArg1, sArg2);
   }
}

//Returns true if digit is numeric
function isDigit(sDigit, bFirst, bLast) {
   var ret = false
   var ii=0
   if (bFirst && ((sDigit=='-') || (sDigit=='+'))) {
      ret = true
   }
   if (bLast && (sDigit=='%')) {
      ret = true
   }
   if (ret==false) {
      for (ii=0;ii<gdigitArray.length;ii++) {
         if (sDigit==gdigitArray[ii]) {
            ret = true
         }
      }
   }
   return ret
}

//Returns true if gsNum is a valid number + unformats gsNum
function isItNum() {
   var iChar = 0
   var ret = true
   var ii=0
   var bPerFound=false
   
   if (gsNum.charAt(0)=="$") { //Get rid of $
      gsNum = gsNum.substring(1)
   }
   while (gsNum.indexOf(",")!=-1) { //Get rid of commas
      iChar = gsNum.indexOf(",")
      gsNum = gsNum.substring(0, iChar) + gsNum.substring(iChar+1)
   }
   for (ii=0;ii<gsNum.length;ii++) { //Make sure all digits are numeric - 1st can be - or + and last can be %
      if ((gsNum.charAt(ii)=='.') && (bPerFound==false)) {
         bPerFound=true
      } else if (isDigit(gsNum.charAt(ii), ii==0, ii==(gsNum.length-1))==false) {
         ret=false
      }
   }
   if (ret==true) {
      if (gsNum.charAt(gsNum.length-1)=="%") { //If last char is a %, divide by 100
         gsNum = parseFloat(gsNum) / 100
      }
   }
   return ret
}

//Checks to see if the value in ebxThis is between, not between, equal to, etc. Must be whole number
function isWholeValid(ebxThis, typ, sArg1, sArg2){
   gsNum = ebxThis.value
   if (gsNum.indexOf(".")==-1) {
      isNumValid(ebxThis, typ, sArg1, sArg2);
   } else {
      alert("Warning: " + ebxThis.value + " does not seem to be a whole number!")
      document.theForm.ErrorBox.value = true
   }
}

//Checks to see if the value in ebxThis is between, not between, equal to, etc.
function isNumValid(ebxThis, typ, sArg1, sArg2){
   gsNum = ebxThis.value
   arg1 = parseFloat(sArg1)
   arg2 = parseFloat(sArg2)
   var ret = false

   if (!isItNum()) {
      alert("Warning: " + ebxThis.value + " does not seem to be a numeric input!")
      ret = true
   } else {
      var fNum = parseFloat(gsNum)
      if (typ==0) { //between
         if((fNum<arg1) || (fNum>arg2)){
            alert("Warning: input a number between " + arg1 + " and " + arg2)
            ret = true
         }
      } else if (typ==1) { //not between
         if((fNum>=arg1) || (fNum<=arg2)){
            alert("Warning: input a number not between " + arg1 + " and " + arg2)
            ret = true
         }
      } else if (typ==2) { //equal to
         if(fNum!=arg1){
            alert("Warning: input a number equal to " + arg1)
            ret = true
         }
      } else if (typ==3) { //not equal to
         if(fNum==arg1){
            alert("Warning: input a number not equal to " + arg1)
            ret = true
         }
      } else if (typ==4) { //greater than
         if(fNum<=arg1){
            alert("Warning: input a number greater than " + arg1)
            ret = true
         }
      } else if (typ==5) { //less than
         if(fNum>=arg1){
            alert("Warning: input a number less than " + arg1)
            ret = true
         }
      } else if (typ==6) { //greater than or equal
         if(fNum<arg1){
            alert("Warning: input a number greater than or equal to " + arg1)
            ret = true
         }
      } else if (typ==7) { //less than or equal
         if(fNum>arg1){
            alert("Warning: input a number less than or equal to " + arg1)
            ret = true
         }
      }
   }
   document.theForm.ErrorBox.value = ret
}

//Check if the entry is a valid date format
function isDate(dateStr) {
   d = new Date(dateStr);
   if (d == "NaN" || d == "Invalid Date")
   {
	alert("Please enter a valid date format, e.g., 06/29/2001.");
	return false;
   }
   return true;
}

//Checks to see if the value in ebxThis is between, not between, equal to, etc.
function isDateValid(ebxThis, typ, loArg, hiArg){
   dat  = ebxThis.value
   var ret = false

   if (!isDate(dat)) {
      ret = true
   } else {
      ebdate = new Date(dat)
      if (ebdate.getFullYear()<1930) {
         ebdate.setYear(ebdate.getFullYear()+100);
      }
      lodate = new Date(loArg)
      hidate = new Date(hiArg)
      if (typ==0) { //between
         if((ebdate > hidate) || (ebdate < lodate)){
            alert("Warning: input a date between " + loArg + " and " + hiArg + " in mm/dd/yyyy format.")
            ret = true
         }
      } else if (typ==1) { //not between
         if((ebdate <= hidate) || (ebdate >= lodate)){
            alert("Warning: input a date not between " + loArg + " and " + hiArg + " in mm/dd/yyyy format.")
            ret = true
         }
      } else if (typ==2) { //equal to
         if(ebdate != lodate){
            alert("Warning: input a number equal to " + loArg + " in mm/dd/yyyy format.")
            ret = true
         }
      } else if (typ==3) { //not equal to
         if(ebdate == lodate){
            alert("Warning: input a number not equal to " + loArg + " in mm/dd/yyyy format.")
            ret = true
         }
      } else if (typ==4) { //greater than
         if(ebdate <= lodate){
            alert("Warning: input a number greater than " + loArg + " in mm/dd/yyyy format.")
            ret = true
         }
      } else if (typ==5) { //less than
         if(ebdate >= lodate){
            alert("Warning: input a number less than " + loArg + " in mm/dd/yyyy format.")
            ret = true
         }
      } else if (typ==6) { //greater than or equal
         if(ebdate < lodate){
            alert("Warning: input a number greater than or equal to " + loArg + " in mm/dd/yyyy format.")
            ret = true
         }
      } else if (typ==7) { //less than or equal
         if(ebdate > lodate){
            alert("Warning: input a number less than or equal to " + loArg + " in mm/dd/yyyy format.")
            ret = true
         }
      }
   }
   document.theForm.ErrorBox.value = ret
}

//Sets sWhatsNext and submits if ErrorBox is false
function SubmitOrNot(sWhat){
   if (document.theForm.ErrorBox.value=="true") {
      document.theForm.ErrorBox.value="false"
   } else {
      document.theForm.WhatsNext.value=sWhat
      document.theForm.submit()
      return false
   }
}
