//===========================
// Functions goes here...
//===========================
   /* AJAX Functions */
   function createRequestObject() {
      //The PHP's no-cache header must be present to avoid the caching-related errors...
      var obj;

      if(window.XMLHttpRequest){ 
         // Firefox, Safari, Opera...
         obj = new XMLHttpRequest();
      } else if(window.ActiveXObject) {
         // Internet Explorer 5+...
         obj = new ActiveXObject("Microsoft.XMLHTTP");
      } else {
         // There is an error creating the object, just as an old browser is being used...
         //alert('Problem creating the XMLHttpRequest object');
      }
      return obj;
   }
   function errorNotifyByEmail(msg, url, linenumber) {
	   // Block sending of any further emails if javascript errors is in infinite loop while web events or browser is running...
	   if (maxJsErrorEmailCount < 10) {
		   var http = createRequestObject();  //Make the XMLHttpRequest object...

		   /* 06/12/2006 - Discontinued and is replaced below... */
		   /*
          var httpStr = url.substring(0,7);
		    if (httpStr == "http://") { httpStr = "http"; } 
          else if (httpStr == "https:/") { httpStr = "https"; } 
          else { httpStr = "http"; }
		   */ 

		   /* httpPort variable exist from the parent's web page... */
		   if (httpPort == "80") {
			   httpPort = "http";
		   } else if (httpPort == "443") {
			   httpPort = "https";
		   } else {
			   httpPort = "http";
		   }

         /* alert(window.location.protocol);  //Another option to use ports... */

		   /* Do the conversion to a code-name and convert it back in php via javascript_error.php... */
		   httpQueryStr = httpQueryStr.replace(/&/g,"**ampersand**");
		   httpQueryStr = httpQueryStr.replace(/=/g,"**equal**");

		   /* httpHost & httpUrlFile variable exist from the parent's web page... */
		   // Open PHP script for requests...
		   http.open("get", httpPort+"://"+httpHost+"/javascript_error.php?httpWebFile="+httpWebFile+"&httpQueryStr="+httpQueryStr+"&Url="+url+"&Line="+linenumber+"&Msg="+msg);
		   http.send(null);
		   maxJsErrorEmailCount++;
		   http = null;
   	}

	   return true;
   }

   /* General Functions */
   function CurrencyFormattedWithoutCommasJS(amount)
   {
      var i = String(amount);
      var minus1 = "";
      var minus2 = "";
      if(i.charAt(0) == "-") { minus1 = "-"; i = ReplaceF(i,"-",""); }
      if(i.charAt(0) == "(") { minus1 = "("; minus2 = ")"; i = ReplaceF(i,"(",""); i = ReplaceF(i,")",""); }
      i = parseFloat(i);
      if(isNaN(i)) { i = 0.00; }
      i = i * 100;
      i = Math.round(i);
      i = i / 100;
      var s = new String(i);
      if(s.indexOf(".") < 0) { s += ".00"; }
      if(s.indexOf(".") == (s.length - 2)) { s += "0"; }
      s = minus1 + s + minus2;
      return s;
   }
   function CurrencyFormattedWithCommasJS(amount)
   {
      var i = String(amount);
      var minus1 = "";
      var minus2 = "";
      if(i.charAt(0) == "-") { minus1 = "-"; i = ReplaceF(i,"-",""); }
      if(i.charAt(0) == "(") { minus1 = "("; minus2 = ")"; i = ReplaceF(i,"(",""); i = ReplaceF(i,")",""); }
      i = parseFloat(i);
      if(isNaN(i)) { i = 0.00; }
      i = i * 100;
      i = Math.round(i);
      i = i / 100;
      var s = new String(i);
      if(s.indexOf(".") < 0) { s += ".00"; }
      if(s.indexOf(".") == (s.length - 2)) { s += "0"; }

      var a1 = s.split(".",2);
      var cent = a1[1];
      var dollar = "";
      var nn = String(parseInt(a1[0],10));
      var x = 0;
      var nnLen1 = nn.length;
      var nnLen2 = "";
      while(x < nnLen1)
      {
         nnLen2 = nn.length;

         if (nnLen2 > 3) {
            x += 3;
            dollar = "," + nn.substring((nnLen2-3),nnLen2) + dollar;
            nn = nn.substring(0,(nnLen2-3));
         } else {
            x += nnLen2;
            dollar = nn.substring(0,nnLen2) + dollar;
            //nn = nn.substring(0,nnLen2);
         }
      }

      amount = minus1 + dollar + "." + cent + minus2;
      return amount;
   }
   function dateDiff(input_date, clock_date) {
      //==================================================================
      //MSG #1 - Parameter1 must be in this date format --> "mm/dd/yyyy"
      //==================================================================
      //Debug sample date that will produce float value for Days...
      //
      //Sample #1 ------------------------------------- (Postive #)
      //clockDate = new Date(2005, 03, 01, 00, 00, 00);
      //inputDate = new Date(2004, 07, 08, 00, 00, 00);
      //
      //Sample #2 ------------------------------------- (Negative #)
      //clockDate = new Date(2004, 01, 08, 00, 00, 00);
      //inputDate = new Date(2004, 07, 08, 00, 00, 00);
      //==================================================================
		if (clock_date.length == 0) {
			alert("Missing Clock Date!");
		}

      var UserInput,UserInputMonth,UserInputDay,UserInputYear;
      var UserClock,UserClockMonth,UserClockDay,UserClockYear;
      var Days;

      input_date = String(input_date);
      clock_date = String(clock_date);

      UserInput = input_date.split(/\/|-/);
      UserClock = clock_date.split(/\/|-/);
   
      UserInputMonth = String(UserInput[0]);
      UserInputDay = String(UserInput[1]);
      UserInputYear = String(UserInput[2]);
      UserClockMonth = String(UserClock[0]);
      UserClockDay = String(UserClock[1]);
      UserClockYear = String(UserClock[2]);
   
      clockDate = new Date(UserClockYear, UserClockMonth, UserClockDay, 00, 00, 00);
      inputDate = new Date(UserInputYear, UserInputMonth, UserInputDay, 00, 00, 00);

      input_date = String(input_date);
      clock_date = String(clock_date);

      Days = ((clockDate-inputDate) / (24 * 60 * 60 * 1000));

      if (Days >= 0) {
         if (Days > parseInt(Days,10)) {
            Days = (parseInt(Days,10)+1);
         } else {
            Days = parseInt(Days,10);
         }
      } else {
         //This script is used to avoid a value of 0...
         Days = (Days * -1);
   
         if (Days > parseInt(Days,10)) {
            Days = (parseInt(Days,10)-1);
         } else {
            Days = parseInt(Days,10);
         }
   
         Days = (Days * -1);
      }
   
      return Days;
   }
   /*
   function disableEnterKey(event)
   {
       //Windows use keycode 13 for Enter...
       //Mac use keycode 3 for Enter...
       if (event.keyCode == 13) { return false; }
       return true;
   }
   */
   function emptyField(textObj)
   {
     if (textObj.value.length == 0) return true;
     for (var i=0; i<textObj.value.length; ++i)
     {
        var ch = textObj.value.charAt(i);
        if (ch !=' ' && ch !='\t') return false;
     }
     return true;
   }
   function FirstCharUpperSecondCharLowerAlteringStringJS(DataStrVariable)
   {
      var SpacerEvaluate = "false";
      var DataStrFinal;
      var ch;
   
      DataStrVariable = String(DataStrVariable);
      DataStrVariable = DataStrVariable.toLowerCase();
   
      //Use a rarely-used counter variable to avoid an accidently altering of the original counter variable outside of this function...
      for (xyielx=0;xyielx<DataStrVariable.length;xyielx++) {
         ch = DataStrVariable.substr(xyielx,1);
   
         if (ch == " ") {
            SpacerEvaluate = "true";
            DataStrFinal = DataStrFinal + ch;
         } else {
            if (xyielx == 0) {
               DataStrFinal = ch.toUpperCase();
            } else {
               if (SpacerEvaluate != "true") {
                  DataStrFinal = DataStrFinal + ch;
               } else {
                  DataStrFinal = DataStrFinal + ch.toUpperCase();
                  SpacerEvaluate = "false";
               }
            }
         }
      }
   
      DataStrVariable = DataStrFinal;
   
      return DataStrVariable;
   }
   function isAlpha(textObj)
   {
     var newValue = textObj.value;
     var newLength = newValue.length;
     var extraChars = ". - ";
     var search;
   
     for(var i=0; i != newLength; i++)
     {
        aChar = newValue.substring(i,i+1);
        aChar = aChar.toUpperCase();
        search = extraChars.indexOf(aChar);
        if ((search == -1) && (aChar != "'") && (aChar < "A" || aChar > "Z") ) 
        {
           return false;
        }
     }
     return true;
   }
   function isAlphaNumOnly(textObj)
   {
     var newValue = textObj.value;
     var newLength = newValue.length;
   
     for(var i=0; i != newLength; i++)
     {
        aChar = newValue.substring(i,i+1);
        aChar = aChar.toUpperCase();
        if (aChar != " ")
        {
          if ((aChar != "'") && (aChar < "A" || aChar > "Z") && (!((aChar >= '0') && (aChar <= '9')))      ) return false;
        }
     }
     return true;
   }
   function isAlphaNumOnlyNoApostrophe(textObj)
   {
     var newValue = textObj.value;
     var newLength = newValue.length;
   
     for(var i=0; i != newLength; i++)
     {
        aChar = newValue.substring(i,i+1);
        aChar = aChar.toUpperCase();
        if (aChar != " ")
        {
          if ((aChar == "'") && (aChar < "A" || aChar > "Z") && (!((aChar >= '0') && (aChar <= '9')))      ) return false;
        }
     }
     return true;
   }
   function isAlphaStrictOnly(textObj)
   {
     var newValue = textObj.value;
     var newLength = newValue.length;
   
     for(var i=0; i != newLength; i++)
     {
        aChar = newValue.substring(i,i+1);
        aChar = aChar.toUpperCase();

        if ((aChar != " ")&&(aChar != "'")) {
           if (aChar < "A" || aChar > "Z") return false;
        }
     }
     return true;
   }
   function isDateNumericFormat(textObj)
   {
      var TxtLen = textObj.value.length;

      if (TxtLen != 10) {
         return false;
      } else {
         for (var x=0; x<TxtLen; x++) {
            var ch = textObj.value.charAt(x);

            if ((x == 2)||(x == 5)) {
               if (ch != "/") {
                  return false;
               }
            } else {
               if (!((ch >= '0')&&(ch <= '9'))) {
                  return false;
               }
            }
         }
      }
      return true;
   }
   function isMoney(textObj)
   {
     var money = textObj.value.split(".");
   
     if (
       (isNaN(money[0]))                                       ||                 // dollars must be numeric
       (textObj.value.charAt(textObj.value.length - 3) != ".") ||                 // 3'rd char from back has to be decimal period
       (isNaN(money[1]))                                       ||                 // cents must be numeric
       (textObj.value.length < 4)                                                 // must be more than 4 characters long (i.e 1.23)
        )  
     {
        return false;
     }
   
     return true;
   }
   function isMoneyNoValuePart(textObj)
   {
     var money = textObj.split(".");
   
     if (
       (isNaN(money[0]))                           ||                 // dollars must be numeric
       (textObj.charAt(textObj.length - 3) != ".") ||                 // 3'rd char from back has to be decimal period
       (isNaN(money[1]))                           ||                 // cents must be numeric
       (textObj.length < 4)                                           // must be more than 4 characters long (i.e 1.23)
        )  
     {
        return false;
     }
   
     return true;
   }
   function isNumeric(textObj)
   {
     if(textObj.value.length == 0) return true;
     for(var i = 0; i < textObj.value.length; i++)
     {
        var ch = textObj.value.charAt(i);
        if (!((ch >= '0') && (ch <= '9'))) return false;         
     }
     return true;
   }
   function isNumericMoney(textObj)
   {
     var dotCount = 0;
     var hyphenCount = 0;
     var ParathesisCount = 0;
     var charCheck = 0;
     
     if(textObj.value.length == 0) return true;

     for(var i = 0; i < textObj.value.length; i++)
     {
        var ch = textObj.value.charAt(i);
        if ((ch != ".")&&(ch != "-")&&(ch != "(")&&(ch != ")"))
        {
           if (!((ch >= '0') && (ch <= '9'))) return false;         
        } else {
           if (ch == ".") {
              dotCount++;
           } else if (ch == "-") {
              hyphenCount++;
           } else if ((ch == "(")||(ch == ")")) {
              ParathesisCount++;
           }
        }
     }

     if (dotCount != 1) {
        //One decimal dot only...
        return false;
     } else {
        var MoneyLen;
        //Checking for decimal placement...
        if (textObj.value.charAt(textObj.value.length - 1) == ")") {
           if (textObj.value.charAt(textObj.value.length - 4) != ".") {
             return false;
           } else {
              MoneyLen = 4;
           }
           if (!(textObj.value.length >= (MoneyLen + 2))) { //Check to see if $ is in (x.xx) format instead of (.xx) format)
              return false;
           }
        } else {
           if (textObj.value.charAt(textObj.value.length - 3) != ".") {
             return false;
           } else {
              MoneyLen = 3;
           }
           if (!(textObj.value.length >= (MoneyLen + 1))) { //Check to see if $ is in x.xx format instead of .xx format)
              return false;
           }
        }

        if (hyphenCount > 1) {  
           //No hyphen or one hyphen only...
           return false;
        } else if ((ParathesisCount == 1)||(ParathesisCount > 2)) {
           //No parathesis or two parathesis only...
           return false;
        } else if ((ParathesisCount == 2)&&(hyphenCount == 1)) {
           return false;
        }
     }
   
     return true;
   }
   function isNumericMoneyNoRoundOff(textObj)
   {
     var txtMoney = textObj.value;

     if(txtMoney.length == 0) return false;

     if (txtMoney.charAt(0) == "-") {
        txtMoney = txtMoney.substring(1,txtMoney.length)
     }
     if (txtMoney.charAt(0) == "(") {
        txtMoney = txtMoney.substring(1,txtMoney.length)
     }
     if (txtMoney.charAt(txtMoney.length-1) == ")") {
        txtMoney = txtMoney.substring(0,(txtMoney.length-1))
     }

     if (!(txtMoney.indexOf(".") == -1))
     {
        var money = txtMoney.split(".");
        var MoneyValue = money[0];

        for(var i = 0; i < MoneyValue.length; i++)
        {
           var ch = MoneyValue.charAt(i);
           if (!((ch >= '0') && (ch <= '9'))) return false;         
        }

        MoneyValue = money[1];

        for(var i = 0; i < MoneyValue.length; i++)
        {
           var ch = MoneyValue.charAt(i);
           if (!((ch >= '0') && (ch <= '9'))) return false;         
        }
     }
     else 
     {
        for(var i = 0; i < txtMoney.length; i++)
        {
           var ch = txtMoney.charAt(i);
           if (!((ch >= '0') && (ch <= '9'))) return false;         
        }
     }

     return true;
   }
   function isPercent(textObj)
   {
     if(textObj.value.length == 0) return true;
     for(var i = 0; i < textObj.value.length; i++)
     {
        var ch = textObj.value.charAt(i);
        if (ch != ".") {
           if (!((ch >= '0') && (ch <= '9'))) return false;         
        }
     }
     return true;
   }
   function isPostalCode(textObj)
   {
     var extraChars = "-";
     var search;
   
     if(textObj.value.length == 0) return true;
     for(var i = 0; i < textObj.value.length; i++)
     {
        var ch = textObj.value.charAt(i);
        search = extraChars.indexOf(ch);
        if (search == -1 && ( !((ch >= '0') && (ch <= '9')))) return false;         
     }
     return true;
   }
   function LeftF(str,n)
   {
      str = String(str);
      
      if (n <= 0)
         return "";
      else if (n > str.length)
         return str;
      else
         return str.substring(0,n);
   }
   function NumericFormattedWithoutCommasJS(tmp)
   {
      var i = String(tmp);
      var minus1 = "";
      var minus2 = "";
      if(i.charAt(0) == "-") { minus1 = "-"; i = ReplaceF(i,"-",""); }
      if(i.charAt(0) == "(") { minus1 = "("; minus2 = ")"; i = ReplaceF(i,"(",""); i = ReplaceF(i,")",""); }
      i = parseInt(i,10);
      if(isNaN(i)) { i = 0; }
      var s = String(i);
      s = minus1 + s + minus2;
      return s;
   }
   function NumericFormattedWithCommasJS(tmp1)
   {
      var i = String(tmp1);
      var minus1 = "";
      var minus2 = "";
      if(i.charAt(0) == "-") { minus1 = "-"; i = ReplaceF(i,"-",""); }
      if(i.charAt(0) == "(") { minus1 = "("; minus2 = ")"; i = ReplaceF(i,"(",""); i = ReplaceF(i,")",""); }
      i = parseInt(i,10);
      if(isNaN(i)) { i = 0; }
      var s = String(i);

      var tmp = "";
      var nn = String(parseInt(s,10));
      var x = 0;
      var nnLen1 = nn.length;
      var nnLen2 = "";
      while(x < nnLen1)
      {
         nnLen2 = nn.length;

         if (nnLen2 > 3) {
            x += 3;
            tmp = "," + nn.substring((nnLen2-3),nnLen2) + tmp;
            nn = nn.substring(0,(nnLen2-3));
         } else {
            x += nnLen2;
            tmp = nn.substring(0,nnLen2) + tmp;
            //nn = nn.substring(0,nnLen2);
         }
      }

      s = minus1 + tmp + minus2;
      return s;
   }
   function PercentFormattedWithoutCommasJS(tmp)
   {
      var i = String(tmp);
      var minus1 = "";
      var minus2 = "";
      if(i.charAt(0) == "-") { minus1 = "-"; i = ReplaceF(i,"-",""); }
      if(i.charAt(0) == "(") { minus1 = "("; minus2 = ")"; i = ReplaceF(i,"(",""); i = ReplaceF(i,")",""); }
      i = parseFloat(i);
      if(isNaN(i)) { i = 0; }
      var s = new String(i);
      s = minus1 + s + minus2;
      return s;
   }
   function PercentFormattedWithCommasJS(tmp)
   {
      var i = String(tmp);
      var minus1 = "";
      var minus2 = "";
      if(i.charAt(0) == "-") { minus1 = "-"; i = ReplaceF(i,"-",""); }
      if(i.charAt(0) == "(") { minus1 = "("; minus2 = ")"; i = ReplaceF(i,"(",""); i = ReplaceF(i,")",""); }
      i = parseFloat(i);
      if(isNaN(i)) { i = 0; }
      var s = new String(i);

      var a1 = s.split(".");
      var suffix = a1[1];
      var percent = "";
      var nn = String(parseInt(a1[0],10));
      var x = 0;
      var nnLen1 = nn.length;
      var nnLen2 = "";
      while(x < nnLen1)
      {
         nnLen2 = nn.length;

         if (nnLen2 > 3) {
            x += 3;
            percent = "," + nn.substring((nnLen2-3),nnLen2) + percent;
            nn = nn.substring(0,(nnLen2-3));
         } else {
            x += nnLen2;
            percent = nn.substring(0,nnLen2) + percent;
            //nn = nn.substring(0,nnLen2);
         }
      }
      
      if (suffix.length != 0) {
         percent = percent+"."+suffix;
      }

      s = minus1 + percent + minus2;
      return s;
   }
   function RemoveDirtyCharacters(parStrVar,parAction)
   {
      var len = parStrVar.length;
      var x = 0;
      var aChar, ch;
      var jsStrTmp = "Null!!";  //Assign data to prevent the JavaScript's undefined error

      //parAction options are 1) ALPHA, 2) ALPHANUMERIC, 3) EMAIL
      while (x <= len) 
      {
         ch = parStrVar.charAt(x);
         aChar = ch.toUpperCase();
	 
         if (!(aChar < "A" || aChar > "Z")) {
            if (jsStrTmp == "Null!") {
               jsStrTmp = ch;
            } else {
               jsStrTmp += ch;
            }
         }
         if (parAction == "ALPHANUMERIC") {
            if (!(aChar < "0" || aChar > "9")) {
               if (jsStrTmp == "Null!") {
                  jsStrTmp = ch;
               } else {
                  jsStrTmp += ch;
               }
            }
         }
         if (aChar == "'") {
            if (jsStrTmp == "Null!") {
               jsStrTmp = ch;
            } else {
               jsStrTmp += ch;
            }
         }
	      x++;
      }

      jsStrTmp = jsStrTmp.replace("Null!!","");
      parStrVar = jsStrTmp;

      return parStrVar;
   }
   function ReplaceF(jsStrVar,jsStrOriginal,jsStrReplaced)
   {
      while(jsStrVar != jsStrVar.replace(jsStrOriginal,jsStrReplaced))jsStrVar = jsStrVar.replace(jsStrOriginal,jsStrReplaced);

      return jsStrVar;
   }
   function RightF(str,n)
   {
      str = String(str);
      
      if (n <= 0)
         return "";
      else if (n > str.length)
         return str;
      else {
         var iLen = str.length;
         return str.substring(iLen, iLen - n);
      }
   }
   function TrimF(jsStrVar)
   {
      while(jsStrVar != jsStrVar.replace(" ",""))jsStrVar = jsStrVar.replace(" ","");

      return jsStrVar;
   }
   function UpdateValue(formVar)
   {
      var txtVar = formVar.value;
   
      while(txtVar.charAt(0)==' ')txtVar=txtVar.substring(1,txtVar.length);  //Trim Begin Area
      while(txtVar.charAt(txtVar.length-1)==' ')txtVar=txtVar.substring(0,txtVar.length-1);  //Trim End Area
   
      //Temporary remmed out due to web user's strange reverse engineering that messed up this...
      /*
      if ((txtVar.indexOf('.') == -1)&&(txtVar.length != 0)) {
         txtVar = CurrencyFormattedWithCommasJS(txtVar);
         formVar.value = txtVar;
      }
      */

      if (txtVar.charAt(0)=='-') {
         if (txtVar.charAt(txtVar.length-3) == ".") {
            txtVar=txtVar.substring(1,txtVar.length);
            while(txtVar.charAt(0)==' ')txtVar=txtVar.substring(1,txtVar.length);  //Trim Begin Area
            formVar.value = "("+txtVar+")";
         }
      }

      return true;
   }
   function ValidateEmail(MAIL)
   {
     if (
       (MAIL.value.indexOf("@") == -1) ||                        // must have @ simbol
       (MAIL.value.charAt(MAIL.value.length - 4) != ".")  ||     // 3'rd char from back has to be period .com .org etc,etc
       (MAIL.value.indexOf(" ") != -1) ||                        // must not have empty spaces
       (MAIL.value.length < 7)                                   // must be at least 7 characters long
        )                                                     
     {
       alert("Sorry, Customer's Email Address is NOT in 'user@domain.xxx' format.");
       MAIL.focus();
       MAIL.select();
       return false;
     }
     return true;   
   }
   function ValidateEmailAcct(MAIL)
   {
     if (
       (MAIL.value.indexOf("@") == -1) ||                        // must have @ simbol
       (MAIL.value.charAt(MAIL.value.length - 4) != ".")  ||     // 3'rd char from back has to be period .com .org etc,etc
       (MAIL.value.indexOf(" ") != -1) ||                        // must not have empty spaces
       (MAIL.value.length < 7)                                   // must be at least 7 characters long
        )                                                     
     {
       alert("Sorry, account's e-mail login name is NOT in 'user@domain.xxx' format.");
       MAIL.focus();
       MAIL.select();
       return false;
     }
     return true;   
   }

