   function SetBackground(obj, elvalue)
      {
      if (obj.title != "")
         {
         obj.style.background = "#FFFF66"
         }
      else
         {
         obj.value                 = elvalue;
         obj.style.backgroundColor = "#FFFFFF"
         }

      return true;
      }

   function isEmpty(s)
      {
      return ((s == null) || (s.length == 0))
      }

   function isWhitespace(s)
      {
           var i;
           var whitespace = " \t\n\r";

           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 ValidateIsEmpty(elshortname, elnameext, elvalue)
      {
      var errmsg = "";

      if (isWhitespace(elvalue) == true)
         {
         if (elnameext == "0")
            {
            errmsg = "\nNEW " + elshortname + " cannot be empty.";
            }
         else
            {
            if (elnameext != "-1")
               {
               errmsg = "\n" + elshortname + ", line " + elnameext + " cannot be empty.";
               }
            else
               {
               errmsg = "\n" + elshortname + " cannot be empty.";
               }
            }
         }

      return errmsg;
      }

   function ValidateIsEmptyNew(obj, elshortname)
      {
      var errmsg = "";

      if (isWhitespace(obj.value) == true)
         {
         errmsg = elshortname + " cannot be empty.";
         }

      obj.setAttribute("title", errmsg);

      SetBackground(obj, obj.value);

      return true;
      }

   function ValidateIsCurrency(elshortname, elnameext, elvalue)
      {
      var errmsg = "";
      var RECurrency = /^[-]?([1-9]{1}[0-9]{0,}(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|\.[0-9]{1,2})$/;

      if (RECurrency.test(elvalue) == false)
         {
         if (elnameext == "0")
            {
            errmsg = "\nNEW " + elshortname + " is not a valid dollar amount.";
            }
         else
            {
            if (elnameext != "-1")
               {
               errmsg = "\n" + elshortname + ", line " + elnameext + " is not a valid dollar amount.";
               }
            else
               {
               errmsg = "\n" + elshortname + " is not a valid dollar amount.";
               }
            }
         }

      return errmsg;
      }


   function ValidateIsCurrencyNew(obj, elshortname)
      {
      var errmsg     = "";
      var RECurrency = /^[-]?([1-9]{1}[0-9]{0,}(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|\.[0-9]{1,2})$/;

      if (RECurrency.test(elvalue) == false)
         {
         if (elnameext == "0")
            {
            errmsg = "\nNEW " + elshortname + " is not a valid dollar amount.";
            }
         else
            {
            if (elnameext != "-1")
               {
               errmsg = "\n" + elshortname + ", line " + elnameext + " is not a valid dollar amount.";
               }
            else
               {
               errmsg = "\n" + elshortname + " is not a valid dollar amount.";
               }
            }
         }

      return errmsg;
      }

   function ValidateIsNumeric(elshortname, elnameext, elvalue)
      {
      var errmsg = "";
      var RENumeric  = /[0123456789]*$/;

      if (RENumeric.test(elvalue) == false)
         {
         if (elnameext == "0")
            {
            errmsg = "\nNEW " + elshortname + " is not numeric.";
            }
         else
            {
            if (elnameext != "-1")
               {
               errmsg = "\n" + elshortname + ", line " + elnameext + " is not numeric.";
               }
            else
               {
               errmsg = "\n" + elshortname + " is not numeric.";
               }
            }
         }

      return errmsg;
      }

   function ValidateIsNumericNew(obj, elshortname)
      {
      var errmsg    = "";
      var elvalue   = obj.value;
      var RENumeric = /[0123456789]*$/;

      if (RENumeric.test(elvalue) == false)
         {
         if (elnameext == "0")
            {
            errmsg = "\nNEW " + elshortname + " is not numeric.";
            }
         else
            {
            if (elnameext != "-1")
               {
               errmsg = "\n" + elshortname + ", line " + elnameext + " is not numeric.";
               }
            else
               {
               errmsg = "\n" + elshortname + " is not numeric.";
               }
            }
         }

      return errmsg;
      }

   function ValidateIsPhone(elshortname, elnameext, elvalue)
      {
      var errmsg = "";
      var REPhone  = /^([\(]{1}[0-9]{3}[\)]{1}[ |\-]{0,1}|^[0-9]{3}([\-| ])?)?[0-9]{3}((\-| ){1})?[0-9]{4}$/;

      if (REPhone.test(elvalue) == false)
         {
         if (elnameext == "0")
            {
            errmsg = "\nNEW " + elshortname + " is not a valid phone number.";
            }
         else
            {
            if (elnameext != "-1")
               {
               errmsg = "\n" + elshortname + ", line " + elnameext + " is not a valid phone number.";
               }
            else
               {
               errmsg = "\n" + elshortname + " is not a valid phone number.";
               }
            }
         }

      return errmsg;
      }

   function ValidateIsPhoneNew(obj, elshortname)
      {
      var errmsg  = "";
      var elvalue = obj.value;
      var REPhone = /^([\(]{1}[0-9]{3}[\)]{1}[ |\-]{0,1}|^[0-9]{3}([\-| ])?)?[0-9]{3}((\-| ){1})?[0-9]{4}$/;

      if (REPhone.test(elvalue) == false)
         {
         if (elnameext == "0")
            {
            errmsg = "\nNEW " + elshortname + " is not a valid phone number.";
            }
         else
            {
            if (elnameext != "-1")
               {
               errmsg = "\n" + elshortname + ", line " + elnameext + " is not a valid phone number.";
               }
            else
               {
               errmsg = "\n" + elshortname + " is not a valid phone number.";
               }
            }
         }

      return errmsg;
      }

   function ValidateNoDupes(elshortname, jj, linecount, passedarray)
      {
      var ii = jj;

      while (ii < linecount)
         {
         var errmsg = "";

         for (j = jj; j <= linecount; j++)
            {
            if (ii != j && passedarray[ii] == passedarray[j])
               {
               errmsg = "\nOne or more " + elshortname + " entries are duplicated. '" + passedarray[ii] + "' is the same as '" + passedarray[j] + "'";
               ii     = linecount;
               }
            }

         ii++
         }

      return errmsg;
      }

   function ValidateIsDate(elshortname, elnameext, elvalue)
      {
      var errmsg = "";
      var REDate = /^(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/;

      if (REDate.test(elvalue) == false)
         {
         if (elnameext == "0")
            {
            errmsg = "\nNEW " + elshortname + " is not a valid date.";
            }
         else
            {
            if (elnameext != "-1")
               {
               errmsg = "\n" + elshortname + ", line " + elnameext + " is not a valid date.";
               }
            else
               {
               errmsg = "\n" + elshortname + " is not a valid date.";
               }
            }
         }

     return errmsg;
   }

   function ValidateIsDateNew(obj, elshortname)
      {
      var errmsg  = "";
      var elvalue = obj.value;
      var REDate  = /^(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/;

      if (isWhitespace(elvalue) == true)
         {
         elvalue   = "";
         obj.title = "";
         }
      else
         {
         var now     = new Date();
         var dateval = elvalue.split("/");

         var inmonth = dateval[0];
         if (isNaN(inmonth)) { inmonth = 0; }
            
         var inday = dateval[1];
         if (isNaN(inday)) { inday = 0; }

         var inyear = dateval[2];
         if (isNaN(inyear)) { inyear = now.getYear(); }
         if (inyear <= 50)  { inyear = "20" + inyear; }
         if (inyear <= 100) { inyear = "19" + inyear; }
            
         elvalue = inmonth + "/" + inday + "/" + inyear;

         if (REDate.test(elvalue) == false)
            {
            errmsg = elshortname + " is not a valid date.";
            }
         }

      obj.setAttribute("title", errmsg);

      SetBackground(obj, elvalue);

      return true;
      }

   function ValidateIsEmail(elshortname, elnameext, elvalue)
      {
      var errmsg = "";
      var REEmail  = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;

      if (REEmail.test(elvalue) == false)
         {
         if (elnameext == "0")
            {
            errmsg = "\nNEW " + elshortname + " is not a valid email address.";
            }
         else
            {
            if (elnameext != "-1")
               {
               errmsg = "\n" + elshortname + ", line " + elnameext + " is not a valid email address.";
               }
            else
               {
               errmsg = "\n" + elshortname + " is not a valid email address.";
               }
            }
         }

      return errmsg;
      }


   function ValidateIsEmailNew(obj, elshortname)
      {
      var errmsg  = "";
      var elvalue = obj.value;
      var REEmail = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;

      if (REEmail.test(elvalue) == false)
         {
         if (elnameext == "0")
            {
            errmsg = "\nNEW " + elshortname + " is not a valid email address.";
            }
         else
            {
            if (elnameext != "-1")
               {
               errmsg = "\n" + elshortname + ", line " + elnameext + " is not a valid email address.";
               }
            else
               {
               errmsg = "\n" + elshortname + " is not a valid email address.";
               }
            }
         }

      return errmsg;
      }

function CommaFormatted(amount)
   {
   if (isNaN(amount)) { return ''; }

   var delimiter = ","; // replace comma if desired
   var a         = amount.split('.', 2)

   if (isNaN(a[0])) { return ''; }

   var ii    = parseInt(a[0]);
   var d     = parseInt(a[1]);
   
   var minus = '';
   
   if (ii < 0) { minus = '-'; }
   
   ii    = Math.abs(ii);
   var n = new String(ii);
   var a = [];
   
   while (n.length > 3)
      {
      var nn = n.substr(n.length - 3);
      a.unshift(nn);
      n = n.substr(0,n.length - 3);
      }
   
   if (n.length > 0) { a.unshift(n); }
   
   n = a.join(delimiter);

   if (isNaN(d))
      {
      amount = n;
      }
   else
      {
      if (d.length < 1) { amount = n; }
      else { amount = n + '.' + d; }
      }
  
   amount = minus + amount;

   return amount;
   }

   function FormatNumber(amount, decimals)
      {
	var i = parseFloat(amount);
	if(isNaN(i)) { i = 0.00; }
	var minus = '';
	if(i < 0) { minus = '-'; }
	i = Math.abs(i);
	i = parseInt((i + .005) * 100);
	i = i / 100;
	s = new String(i);
	if(s.indexOf('.') < 0) { s += '.00'; }
	if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
	s = minus + s;
	return s;
      }

   var EditHelpWindowName = null;

   function EditHelp(HelpName)
      {
      var url      = "ETech.asp?frmaction=Maintenance&data=SystemHelp&key=" + HelpName;
      var attribs  = "titlebar=no,scrollbars=yes,status=no,toolbar=no,menubar=no,resizable=yes,width=995,height=700";

      if (EditHelpWindowName)
         {
         if (EditHelpWindowName.closed)
            {
            EditHelpWindowName = window.open(url, "EditHelp", attribs);
            }
         else
            {
            EditHelpWindowName.location = url;
            EditHelpWindowName.focus();
            }
         }
      else
         {
         EditHelpWindowName = window.open(url, "EditHelp", attribs);
         }
      }
      
   var HelpWindowName = null;

   function ShowHelp(HelpName)
      {
      var url      = "ETech.asp?frmaction=GetHelpText&HelpKey=" + HelpName;
      var attribs  = "titlebar=no,scrollbars=yes,status=no,toolbar=no,menubar=no,resizable=yes,width=995,height=700";

      if (HelpWindowName)
         {
         if (HelpWindowName.closed)
            {
            HelpWindowName = window.open(url, "ShowHelp", attribs);
            }
         else
            {
            HelpWindowName.location = url;
            HelpWindowName.focus();
            }
         }
      else
         {
         HelpWindowName = window.open(url, "ShowHelp", attribs);
         }
      }
      
   function FixDate(fldvalue)
      {
      var now     = new Date();
      var inmonth = 0;
      var inday   = 0;
      var inyear  = 0;
      var dateval = fldvalue.split("/");
      var inmonth = dateval[0];

      if (isNaN(inmonth)) { inmonth = 0; }
      
      var inday = dateval[1];
      if (isNaN(inday)) { inday = 0; }

      var inyear = dateval[2];
      if (isNaN(inyear)) { inyear = now.getYear(); }
      if (inyear <= 50)  { inyear = "20" + inyear; }
      if (inyear <= 100) { inyear = "19" + inyear; }
      
      if (ValidateIsDate("Date", "-1", inmonth + "/" + inday + "/" + inyear) != "")
         {
         return "1/1/1900";
         }
      else
         {
         return inmonth + "/" + inday + "/" + inyear;
         }
      }

   function ClearSelectList(OptionList)
      {
      for (x = OptionList.length; x >= 0; x--)
         {
         OptionList[x] = null;
         }
      }

   function AddToSelectList(OptionList, OptionValue, OptionText)
      {
      // Add option to the bottom of the list
      OptionList[OptionList.length] = new Option(OptionText, OptionValue);
      }

   function ValidateForm(oform)
      {
      var errmsg    = "";
      var elnameext = "-1";

      var bIsChecked = false;

      for (var i=0; i<oform.elements.length; i++)
         {
         if (oform.elements[i].style.backgroundColor.toUpperCase() == "#FFFF66")
            {
            errmsg = "Cannot save; please correct data entry errors (indicated by fields with a yellow background)."
            oform.elements[i].focus();
            break;
            }
         }

      if (errmsg != "")
         {
         alert(errmsg);
         return true;
         }

      oform.submit();
      }

   function toProperCase(STRING)
      {
      var strReturn_Value = "";
      var iLen            = STRING.length;
      var cntUpper        = 0;
      var cntLower        = 0; 

      if (iLen == 0)
         {
         return "";
         }

      for (var iCounter = 0; iCounter < iLen - 1; iCounter++)
         {
         if ((STRING.charCodeAt(iCounter) >= 65 && STRING.charCodeAt(iCounter) <= 90) || (STRING.charCodeAt(iCounter) >= 97 && STRING.charCodeAt(iCounter) <= 122))
            {
            if (STRING.charAt(iCounter) == STRING.charAt(iCounter).toUpperCase())
               {
               cntUpper = cntUpper + 1;
               }
            else
               {
               cntLower = cntLower + 1;
               }
            }
         }

      var UcaseNext = false;

      strReturn_Value += STRING.charAt(0).toUpperCase();

      for (var iCounter = 1; iCounter < iLen; iCounter++)
         {
         if (UcaseNext == true)
            {
            strReturn_Value += STRING.charAt(iCounter).toUpperCase();
            }
         else
            {
            if (cntLower == 0)
               {
               strReturn_Value += STRING.charAt(iCounter).toLowerCase();
               }
            else
               {
               strReturn_Value += STRING.charAt(iCounter);
               }
            }

         var iChar = STRING.charCodeAt(iCounter);

         if (iChar == 32 || iChar == 45 || iChar == 46)
            {
            UcaseNext = true;
            }
         else
            {
            UcaseNext = false
            }

         if (iChar == 99 || iChar == 67)
            {
            if (STRING.charCodeAt(iCounter - 1) == 77 || STRING.charCodeAt(iCounter - 1) == 109)
               {
               UcaseNext = true;
               }
            }
         }

      return strReturn_Value;
      }

  function ExpandClick(obj)
      {
       var ID = document.getElementById(obj);

	if (ID.style.display == "none")
	   {
	   ID.style.display = "inline"; 
	   }
	else
	   {
	   ID.style.display = "none";
           }
      }
function enableField(elobj, isdisable)
{
if(elobj)
   elobj.disabled=isdisable;
}

