var fNs = navigator.appName == "Netscape";
//KPT added 11-8-99 for future use
var fIE = navigator.appName == "Microsoft Internet Explorer";
var fWin = navigator.platform == "Win32";
var ver = navigator.appVersion;
var f4x = ver.charAt(0) == "4" || ver.charAt(0) == "5"

var g_keys = new Object();
// var giPhonelength = 0;

function PreviousPage(currentpage, prevpage)
{
 	if (currentpage == 1) 
	{
  		document.write('<font color="#C0C0C0">Previous</FONT>');
 	}
 	else 
	{			  
  		document.write('<a href="/tm_bin/tmw_cmd.pl?tmw_cmd=StatusHitList&shl_Page=' + prevpage + '">Previous</a>');
 	}
}
function PreviousPageAPP(currentpage, prevpage)
{
 	if (currentpage == 1) 
	{
  		document.write('<font color="#C0C0C0">Previous</FONT>');
 	}
	else 
	{			  
  		document.write('<a href="/tm_bin/tmw_cmd.pl?tmw_cmd=ApplyHitList&shl_Page=' + prevpage + '">Previous</a>');
 	}
}

function PreviousPagePAR(currentpage, prevpage, querytype, query)
{
	if (currentpage == 1) 
	{
		document.write('<font color="#C0C0C0">Previous</FONT>');
	}
 	else 
	{
  		if (querytype == "people")
		{
  			document.write('<a href="/tm_bin/tmw_cmd.pl?tmw_cmd=HitList&tmw_query=EditPeopleInfo&shl_Page=' + prevpage + '">Previous</a>');
		} 
		else 
		{
			if (querytype == "parcel")
			{
	  			document.write('<a href="/tm_bin/tmw_cmd.pl?tmw_cmd=HitList&tmw_query=Parcel&shl_Page=' + prevpage + '">Previous</a>');
			} 
			else 
			{
				if (query == "InspectorCaseLC")
				{
	  				document.write('<a href="/tm_bin/tmw_cmd.pl?tmw_cmd=HitList&tmw_query=InspectorCaseLC&shl_Page=' + prevpage + '">Previous</a>');
				}
				else
				{
					if (query == "PublicCase")
					{
	  					document.write('<a href="/tm_bin/tmw_cmd.pl?tmw_cmd=HitList&tmw_query=PublicCase&shl_Page=' + prevpage + '">Previous</a>');
					}
					else
					{
	  					document.write('<a href="/tm_bin/tmw_cmd.pl?tmw_cmd=HitList&tmw_query=Parcel&shl_Page=' + prevpage + '">Previous</a>');
					} // ends if query
				}
			} // ends if parcel
 		} // ends if people
 	} // ends else if
} // ends function PreviousPagePar
 
function NextPage(currentpage,lastpage,nxtpage)
{
	if (currentpage == lastpage) 
	{
  		document.write('<font color="#C0C0C0">Next</FONT>');
 	}
 	else 
 	{
  		document.write('<a href="/tm_bin/tmw_cmd.pl?tmw_cmd=StatusHitList&shl_Page=' + nxtpage + '">Next</a>');
 	}
}
function NextPageAPP(currentpage,lastpage,nxtpage)
{
 	if (currentpage == lastpage) 
 	{
  		document.write('<font color="#C0C0C0">Next</FONT>');
 	}
 	else 
 	{
  		document.write('<a href="/tm_bin/tmw_cmd.pl?tmw_cmd=ApplyHitList&shl_Page=' + nxtpage + '">Next</a>');
 	}
}
function NextPagePAR(currentpage,lastpage,nxtpage,querytype,query)
{
 	if (currentpage == lastpage) 
 	{
  		document.write('<font color="#C0C0C0">Next</FONT>');
 	}
 	else 
 	{
   		if (querytype == "people")
   		{
  			document.write('<a href="/tm_bin/tmw_cmd.pl?tmw_cmd=HitList&tmw_query=EditPeopleInfo&shl_Page=' + nxtpage + '">Next</a>');
  		} 
  		else 
  		{
     			if (querytype == "parcel")
     			{
	  			document.write('<a href="/tm_bin/tmw_cmd.pl?tmw_cmd=HitList&tmw_query=Parcel&shl_Page=' + nxtpage + '">Next</a>');
   			} 
			else
	  		{
				if (query == "InspectorCaseLC")
				{
	  				document.write('<a href="/tm_bin/tmw_cmd.pl?tmw_cmd=HitList&tmw_query=InspectorCaseLC&shl_Page=' + nxtpage + '">Next</a>');
				}
				else
				{
					if (query == "PublicCase")
					{
	  					document.write('<a href="/tm_bin/tmw_cmd.pl?tmw_cmd=HitList&tmw_query=PublicCase&shl_Page=' + nxtpage + '">Next</a>');
					}
					else
					{
		  				document.write('<a href="/tm_bin/tmw_cmd.pl?tmw_cmd=HitList&tmw_query=Parcel&shl_Page=' + nxtpage + '">Next</a>');
					}
				}
			}
 		}
	}
}
function _KeyHandler(keyStroke)
{
	var code = (fNs) ? keyStroke.which : window.event.keyCode;
	if(code != 0)
	{
		if(g_keys[code] != null)
		{
			if(fIE && window.event.srcElement.type == "textarea")
				return;
			g_keys[code]();
			if(fIE)
				window.event.cancelBubble = true;
		}
	}
}

document.onkeydown = _KeyHandler;

function RegisterKey(keyCode, funcHandler)
{
	if(keyCode != null && (typeof funcHandler == "function"))
		g_keys[keyCode] = funcHandler;
}

function DoValidate(elem, fRequired, strDataType) {
	//alert("DoValidate(" elem.name + ", " + fRequired + ", " + strDataType + ")");
}

function DoFocusClear(elem) {
	//alert("DoFocusClear(" elem.name + ", " + fRequired + ")");
}

function CheckClear(frmName)
{
	if (fNs && f4x)
		{
		var frm = document.forms[frmName];
		var cElements = frm.elements.length;

		var j
		for (j = 0; j < cElements; j++)
			{
			if (frm.elements[j].name == 'cmdBut')
				{
				alert(frm.elements[j].name);
				}
			}

		// document.forms["frmMain"].elements[0].type == 'text'
		var i
		for (i = 0; i < cElements; i++)
			{
			if (frm.elements[i].type == 'text')
				{
				//alert('text elem: ' + frm.elements[i].name)
				frm.elements[i].value = ""
				}
			}
		return false;
		}
	else
		return true;
}

function ClearForm(frmName)
{
	if (fNs)
		{
		return CheckClear(frmName);
		}
	else // ie
		{
		// document.forms(frmName).reset();
		var i
		var cElements = document.forms[frmName].elements.length
		for (i = 0; i < cElements; i++)
			{
			var strType = document.forms[frmName].elements[i].type
			if (strType == "text" || strType == "textarea")
				document.forms[frmName].elements[i].value = ""
			}
		return false;
		}
}


function DoFillText(elem, strFieldID) {
  var idx = elem.selectedIndex;
  if (idx > -1) {
    var opt = elem.options[idx];
    var txt = elem.form.elements[strFieldID];
    if (opt != null && txt != null) {
      txt.value = opt.value
    }
  }
}

function DoOnLoad()
{
	var i;
	var ele;
	var frm;

	frm = document.forms["frmMain"];
	if(frm == null) return;

	// user definable
	if (f4x)
	{
		if (fNs)
			{
			if ((frm.elements[0].type == 'text' || frm.elements[0].type == 'password'))
				{
				frm.elements[0].focus()

				}
			}
		else // ie
			{
			if ((frm.elements[0].type == 'text' || frm.elements[0].type == 'password'))
				{
				frm.elements[0].focus()
				}
			}


		RegisterKey(13,function() { document.forms["frmMain"].submit(); });

		for (i = 0; i < frm.elements.length; i++)
		{
			ele = frm.elements[i];
			if (ele.type == "text" || ele.type == "password") ele.onkeydown = _KeyHandler;
		}
	}
}

function DoOnLoadSel()
{
	// user definable
	if (f4x)
		{
      var frm = document.forms["frmMain"];
      if (frm == null) return;


      RegisterKey(13,function() { document.forms["frmMain"].submit(); });

      var i;
      var ele;
      for (i = 0; i < frm.elements.length; i++)
         {
         ele = frm.elements[i];
         if (ele.type == "text") ele.onkeydown = _KeyHandler;

         if (ele.type == "text" || ele.type == "password" || ele.type == 'textarea')
            {
				ele.focus();
            ele.select();
            break;
            }
         }
      }
}
function DoOnLoadSelLC(casetype)
{
	// user definable
	if (f4x)
		{
      var frm = document.forms["frmMain"];
      if (frm == null) return;

      RegisterKey(13,function() { document.forms["frmMain"].submit(); });

      var i;
      var ele;
      for (i = 0; i < frm.elements.length; i++)
         {
         ele = frm.elements[i];
         if (ele.type == "text") ele.onkeydown = _KeyHandler;

         if (ele.type == "text" || ele.type == "password" || ele.type == 'textarea')
            {
				ele.focus();
            ele.select();
            break;
            }
         }
      }
      if (casetype.substring(0,3) == "BLS")
         {
          alert("ONLY Re-Inspection Fees are able to be Paid Online for This Permit Type.");
          return;
         }
      else 
         if (casetype.substring(0,3) == "COM")
            {
             alert("ONLY Re-Inspection Fees and Solid Waste Fees are able to be Paid Online for This Permit Type.");
             return;
            }
         else 
            if (casetype.substring(0,3) == "DEM")
               {
                alert("ONLY Re-Inspection Fees are able to be Paid Online for This Permit Type.");
                return;
               }
            else
               if (casetype.substring(0,3) == "FNC")
                  {
                   alert("ONLY Re-Inspection Fees are able to be Paid Online for This Permit Type.");
                   return;
                  }
               else
                  if (casetype.substring(0,3) == "MOV")
                     {
                      alert("ONLY Re-Inspection Fees are able to be Paid Online for This Permit Type.");
                      return;
                     }
                  else
                     if (casetype.substring(0,3) == "MRV")
                        {
                         alert("ONLY Re-Inspection Fees are able to be Paid Online for This Permit Type.");
                         return;
                        }
                     else
                        if (casetype.substring(0,3) == "POL")
                           {
                            alert("ONLY Re-Inspection Fees are able to be Paid Online for This Permit Type.");
                            return;
                           }
                        else
                           if (casetype.substring(0,3) == "RES")
                              {
                               alert("ONLY Re-Inspection Fees and Solid Waste Fees are able to be Paid Online for This Permit Type.");
                               return;
                              }
                           else
                              if (casetype.substring(0,3) == "SGN")
                                 {
                                  alert("ONLY Re-Inspection Fees are able to be Paid Online for This Permit Type.");
                                  return;
                                 }
                              else
                                 if (casetype.substring(0,3) == "TMP")
                                    {
                                     alert("ONLY Re-Inspection Fees are able to be Paid Online for This Permit Type.");
                                     return;
                                    }
                                 else
                                    if (casetype.substring(0,3) == "USE")
                                       {
                                        alert("ONLY Re-Inspection Fees are able to be Paid Online for This Permit Type.");
                                        return;
                                       }
                                    else
                                       if (casetype.substring(0,3) == "ELE")
                                          {
                                           alert("ONLY Trade Permit Fees and Re-Inspection Fees are able to be Paid Online.");
                                           return;
                                          }
                                       else
                                          if (casetype.substring(0,3) == "FIR")
                                             {
                                              alert("ONLY Trade Permit Fees and Re-Inspection Fees are able to be Paid Online.");
                                              return;
                                             }
                                          else
                                             if (casetype.substring(0,3) == "MEC")
                                                {
                                                 alert("ONLY Trade Permit Fees and Re-Inspection Fees are able to be Paid Online.");
                                                 return;
                                                }
                                             else
                                                if (casetype.substring(0,3) == "PLU")
                                                   {
                                                    alert("ONLY Trade Permit Fees and Re-Inspection Fees are able to be Paid Online.");
                                                    return;
                                                   }
                                                else
                                                   if (casetype.substring(0,3) == "ROF")
                                                      {
                                                       alert("ONLY Trade Permit Fees and Re-Inspection Fees are able to be Paid Online.");
                                                       return;
                                                      }
                                                   else
                                                      if (casetype.substring(0,3) == "SOL")
                                                         {
                                                          alert("ONLY Trade Permit Fees and Re-Inspection Fees are able to be Paid Online.");
                                                          return;
                                                         }
                                                      else
                                                         {
                                                          return;
                                                         }
         
}
function DoOnLoadSelEForm()
{
	// user definable
	if (f4x)
		{
      var frm = document.forms["eApplyAppForm"];
      if (frm == null) return;

      var i;
      var ele;
      for (i = 0; i < frm.elements.length; i++)
         {
         ele = frm.elements[i];
         if (ele.type == "text" || ele.type == "password" || ele.type == 'textarea')
            {
				ele.focus();
            ele.select();
            break;
            }
         }
      }
}

function ComputeFeeTotal(sFrmName)
{
   var frm = document.forms[sFrmName];
   var iEle;
   var ele;

   ele = frm.elements["acf_fee_count"];
   var cFees = ele.value;

   var dTotal = 0.0;
   var dNewAmount;
   var dAmtDue;
   for (iEle = 1; iEle <= cFees; iEle++)
   {
      ele = frm.elements["acf_fee_newamt_" + iEle];
      if (ele.value == "") ele.value = "0.00";
      dNewAmount = parseFloat(ele.value);
      if(!isFinite(dNewAmount))	dNewAmount = 0.0;
      // MMT 9/6/00: negative payments are allowed
      //if(dNewAmount < 0.0) dNewAmount = 0.0;
   	  dAmtDue = parseFloat(frm.elements["acf_fee_amt_due_" + iEle].value);
   	  if(!isFinite(dAmtDue)) dAmtDue = 0.0;
      // MMT 9/6/00: payments over the amount due must be allowed as well.
      //if(dNewAmount > dAmtDue) dNewAmount = dAmtDue;
      dTotal += dNewAmount;
      ele.value = FormatAsCurrency(dNewAmount);
   }
   ele = frm.elements["acf_fee_amt_total"];
   ele.value = FormatAsCurrency(dTotal);

}

function FormatAsCurrency(flt)
{
   return Math.floor(flt) + "." + String(Math.floor(Math.round((flt-Math.floor(flt))* 100))+100).substr(1,2);
}

function DoPayAll(sFrmName)
{
   var frm = document.forms[sFrmName];
   var iEle;
   var ele;

   ele = frm.elements["acf_fee_count"];
   var cFees = ele.value;

   for (iEle = 1; iEle <= cFees; iEle++)
      {
      ele = frm.elements["acf_fee_newamt_" + iEle];
      ele.value = frm.elements["acf_fee_amt_due_" + iEle].value;
      }
   ComputeFeeTotal(sFrmName);
}

function DoClearAll(sFrmName)
{
   var frm = document.forms[sFrmName];
   var iEle;
   var ele;

   ele = frm.elements["acf_fee_count"];
   var cFees = ele.value;

   for (iEle = 1; iEle <= cFees; iEle++)
      {
      ele = frm.elements["acf_fee_newamt_" + iEle];
      ele.value = "0.00";
      }
   ComputeFeeTotal(sFrmName);
}

function DoPayFees(sFrmName)
{
	var frm = document.forms[sFrmName];
	if(frm.elements["EPayInstalled"].value == "1")
	{
		//check if method type is creditcard, if so, then change form action to TPUrl.
		//get payment method select element
		if(frm.elements["acf_fee_pymtmeth"].options[1].selected)
		{
			frm.action = frm.elements["TPURL"].value;
		}
	}
}

function UpdateApplAndNav(sSource, sTarget)
{
   // get form, set action, call submit
   var frm = document.forms["TMC_Form"];
   if (frm == null)
      {
      document.location = "/tm_bin/tmw_cmd.pl?tmw_cmd=ApplyGetForm&agf_source=" + sSource + "&agf_section=" +sTarget;
      return;
      }
   var sSuffix = "&agf_section=" + sTarget + "&tmw_mode=" + "update" + "&tmw_cmd=" + "ApplyGetForm";
   var sAction = "/tm_bin/tmw_cmd.pl?agf_source=" + sSource + sSuffix;
   if (frm != null)
      {
      frm.action = sAction;
      frm.submit();
      return true;
      }
   else
      {
      alert("Could not submit data: form not found.");
      return false;
      }
}

function CheckCheckBox(sCheckBoxName)
{
   // KPT Added 11-8-99
   // Checks the checkbox whose name is sCheckBoxName

   var ele;

   ele =document.forms["TMC_Form"].elements[sCheckBoxName];

   ele.checked = true;

}

function UncheckCheckBox(sCheckBoxName)
{
   // KPT Added 11-8-99
   // Unchecks the checkbox whose name is sCheckBoxName

   var ele;

   ele =document.forms["TMC_Form"].elements[sCheckBoxName];

   ele.checked = false;

}

function SelectListItem(sFldName, sValue)
{
   // KPT Rewrote 04-19-00
   // Select drop down list item

   var ele = document.forms["TMC_Form"].elements[sFldName];

   var selectedIdx = ele.selectedIndex;

   var space = " ";

   var selText = new String(ele.options[selectedIdx].text);

   var allblanks = true;

   for (var i=0; i < selText.length; i++)
   {
     	if(selText.charAt(i) != space)
	{
	  allblanks = false;
	  break;
	}
   }

   if (allblanks)
   {
     for (var i=0; i < ele.options.length; i++)
     {
        if (ele.options[i].value == sValue)
        {
	     ele.selectedIndex = i;
	     break;
        }
     }
   }
}

function UpdateCurrentAndNav(sTarget)
{
   // get form, set action, call submit
   var frm = document.forms["TMC_Form"];
   var ele = frm.elements("agf_origSection")
   var sSuffix = "&agf_section=" + sTarget + "&tmw_mode=" + "update" + "&tmw_cmd=" + "ApplyGetForm";
   var sAction = "/tm_bin/tmw_cmd.pl?agf_source=" + ele.value + sSuffix;
   if (frm != null)
      {
      frm.action = sAction;
      frm.submit();
      return true;
      }
   else
      {
      alert("Could not sumbmit data: form not found.");
      return false;
      }
}


function SubmitApplAndNav(sSource, fOldWay)
{
   // get form, set action, call submit
   var frm = document.forms["TMC_Form"];
   var sSuffix;
   if (fOldWay)
      {
      sSuffix = "&agf_section=" + "TMC_FGMain" + "&tmw_mode=" + "update" + "&tmw_cmd=" + "ApplySubmitApplication";
      }
   else  // new way, used for direct
      {
      sSuffix = "&agf_section=" + "TMC_FGSubmit" + "&tmw_mode=" + "submit" + "&tmw_cmd=" + "ApplyGetForm";
      }
   var sAction = "/tm_bin/tmw_cmd.pl?agf_source=" + sSource + sSuffix;
   if (frm != null)
      {
      frm.action = sAction;
      frm.submit();
      }
   else
      {
      alert("Could not sumbmit data: form not found.");
      return false;
      }
}

function SubmitApplAndNavFees(sSource, fOldWay, fHasFees)
{
   // get form, set action, call submit
   var frm = document.forms["TMC_Form"];
   var sSuffix;
   if (fOldWay)
      {
      sSuffix = "&agf_section=" + "TMC_FGMain" + "&tmw_mode=" + "update" + "&tmw_cmd=" + "ApplySubmitApplication";
      }
   else  // new way, used for direct
      {
      if (fHasFees)
         sSuffix = "&agf_section=" + "TMC_FGFeeDetails" + "&tmw_mode=" + "validate" + "&tmw_cmd=" + "ApplyGetForm";
      else
         sSuffix = "&agf_section=" + "TMC_FGSubmit" + "&tmw_mode=" + "submit" + "&tmw_cmd=" + "ApplyGetForm";
      }
   var sAction = "/tm_bin/tmw_cmd.pl?agf_source=" + sSource + sSuffix;
   if (frm != null)
      {
      frm.action = sAction;
      frm.submit();
      }
   else
      {
      alert("Could not sumbmit data: form not found.");
      return false;
      }
}


function ClearCustomDate()
{
   var ele
   ele =document.forms["frmConditions"].elements["itdCustomDate"];
   ele.selectedIndex = 0
}

function ClearStartEndDates()
{
   var ele
   ele =document.forms["frmConditions"].elements["itdStartDate"];
   ele.value = ""
   ele =document.forms["frmConditions"].elements["itdEndDate"];
   ele.value = ""
}

function ClearCaseType()
{
   var ele
   ele =document.forms["frmConditions"].elements["itdCaseType"];
   ele.selectedIndex = 0
}
function ClearActivityType()
{
   var ele
   ele =document.forms["frmConditions"].elements["itdActivityType"];
   ele.selectedIndex = 0
}

function ValuationGradeChanged(sFormName, sGrade)
{
   // The user selected a new radio button.
   // Get the current rate for this grade, if any, and look up the mult.
   // Then compute the total
   ComputeValueTotal(sFormName);
}

function ValuationRateChanged(sFormName, sGrade, sRate)
{
   // select corresponding grade

   var frm = document.forms[sFormName];
   var ele
   ele = frm.elements["acf_value_grade"];
   var i;
   if (!ele.length)
      {
      ele.checked = true;
      }
   else
      {
      for (i = 0; i < ele.length; i++)
         {
         if (ele[i].value == sGrade)
            {
            if (ele[i].checked == false)
               ele[i].checked = true;
            break;
            }
         }
      }
   ComputeValueTotal(sFormName);

}

function StripNonNumeric(sVal)
{
   //strip $ and , for now
   var i
   var sRes = "";
   for (i = 0; i < sVal.length; i++)
      {
      if (sVal.charAt(i) != "$" && sVal.charAt(i) != ",")
         sRes += sVal.charAt(i);
      }
   return sRes;
}

function ComputeValueTotal(sFormName)
{
   // called when radio changes, popup changes, or quantity changes in the valuation add/edit form
   // it should compute the total and fill it in, and also normalize the quantity with two decimal places.
   var frm = document.forms[sFormName];
   var ele;

   // get value of selected radio button
   var sGrade = "";
   var sRate;
   var dRateMult = 0.0;
   var dQuantity = 0.0;
   var dTotal = 0.0;
   var dStateMult = 1.0;

   // get state mult
   ele = frm.elements["acf_value_mult_amt"];
   var dStateMult = parseFloat(ele.value);

   // get and fixup quant
   ele = frm.elements["acf_value_quant"];
   var sQuant = ele.value;
   // strip commas
   sQuant = StripNonNumeric(sQuant);
   // continue with processing
   var dQuantity = parseFloat(sQuant);
   if (isNaN(dQuantity))
      dQuantity = 0.0;
   else
      ele.value = FormatAsCurrency(dQuantity);

   ele = frm.elements["acf_value_grade"];
   if (!ele.length)
      {
      sGrade = ele.value;
      }
   else
      {
      var i;
      for (i = 0; i < ele.length; i++)
         {
         if (ele[i].checked)
            {
            sGrade = ele[i].value;
            break;
            }
         }
      }

   if (sGrade == "" || dQuantity == 0.0)
      {
      frm.elements["acf_value_amt_total"].value = "";
      return;
      }

   ele = frm.elements["acf_value_rate_" + sGrade];
   sRate = ele.options[ele.selectedIndex].value;
   if (sRate == "")
      {
      frm.elements["acf_value_amt_total"].value = "";
      return;
      }

   ele = frm.elements["rate_" + sGrade + ":" + sRate];
   dRate = parseFloat(ele.value);

   ele = frm.elements["mult_" + sGrade + ":" + sRate];
   if (ele.value == "N")
      dStateMult = 1.0;

   ele = frm.elements["acf_value_amt_total"];
   ele.value = FormatAsCurrency(dQuantity * dRate * dStateMult);
}


function RequireField(frm, sField)
{
if (frm.elements[sField].value.length == 0)
	{
	alert ('Please provide a filename.');
	return false;
	}
else
	{
	return true;
	}
}

function submit_ePay_refund(refCode)
{
	//To be completed by Matt Tadd to enabled refunds.  Is OnClick event handler for
	//refund links, that will populate the form on page appropriately, and submit that form.
	var frm = document.forms["frmEPayRefund"];
	var ele = frm.elements["EPayRefCode"];
	ele.value = refCode;
	frm.submit();
}

function RevLicSelectAll(frm,yes)
{
	var count;
	var i;
	count = frm.elements["license_count"].value;
	for(i=1;i<=count;i++)
	{
		frm.elements["license_" + i].checked = yes;
	}
}


/* new function for eforms */
// validate form -- req and data types
var kstrEForm = "eApplyAppForm";

function UpdateAndNavFromNavBar(sTargetSection)
{
	// get correct document, form, get correct parent func, pass params
	return EFRTUpdateAndNav("", "", "", "", "", sTargetSection, "");
}

function UpdateAndNavFromNavBarFrame(sTargetSection)
{
	// get correct document, form, get correct parent func, pass params
	var frm = parent.frames["EFormMain"].document.forms[kstrEForm];
	var sTarget = "";
	if (!frm) sTarget = "EFormMain";
	return EFRTUpdateAndNavFrm(frm, "", "", "", "", "", sTargetSection, sTarget);
}


function EFRTUpdateAndNav(sSrc, sOp, sMode, sIRec, sParam, sSection, sFormTarget)
{
	var frm = document.forms[kstrEForm];
	return EFRTUpdateAndNavFrm(frm, sSrc, sOp, sMode, sIRec, sParam, sSection, sFormTarget)
}

function EFRTGetNavUrl(sSrc, sOp, sMode, sIRec, sParam, sSection)
{
	var sUrl;

	// fix params we need: sOp, sMode
	if (sOp.length == 0)	sOp = "GetSection";
	if (sMode.length == 0)	sMode = "None"; // there is no src section

	sUrl = "/tm_bin/tmw_cmd.pl?tmw_cmd=ApplyGetSection&egs_src=" + sSrc + "&egs_op=" + sOp + "&egs_mode=" + sMode + "&egs_irec=" + sIRec + "&egs_section=" + sSection;
	sUrl = sUrl + "&egs_dummy=" + Math.floor(1000*Math.random());

	return sUrl;
}


function EFRTUpdateAndNavFrm(frm, sSrc, sOp, sMode, sIRec, sParam, sSection, sFormTarget)
{
	if (!frm)
		{
		var doc = document;
		if (sFormTarget == "_top")
			doc = parent.document;
		else if (sFormTarget == "EFormMain")
			doc = parent.frames["EFormMain"].document;

		doc.location = EFRTGetNavUrl(sSrc, sOp, sMode, sIRec, sParam, sSection);

		return;
		}

	// ok we have the form

	// if a param has zero len, dont set it
	if (sFormTarget.length > 0) frm.target = sFormTarget;

	// validate form -- we are updating
	if (sMode != "None")
		{
		if (!EFRTValidate(frm))  // also alerts and sets focus
			{
			return;
			}
		}
		
	// set form target
	var fld;
	if (sSrc.length > 0)  fld = frm.elements["egs_src"].value = sSrc;
	if (sOp.length > 0)  fld = frm.elements["egs_op"].value = sOp;
	if (sMode.length > 0)  fld = frm.elements["egs_mode"].value = sMode;
	if (sIRec.length > 0)  fld = frm.elements["egs_irec"].value = sIRec;
	if (sSection.length > 0)  fld = frm.elements["egs_section"].value = sSection;

	// submit form

	frm.submit();
}

function GetDocTarget(sFormTarget)
{
	if (sFormTarget == "_top")
		return top.document;
	else
		return document;
}

function EFRTBuildUrl(sSrc, sOp, sMode, sIRec, sParam, sSection)
{
	//MDH 03/22/02 Bug 105 - need primary flag
	if (sMode == "AddMe")
	{
		var sfrm = document.forms[kstrEForm];
		var sT = "/tm_bin/tmw_cmd.pl?tmw_cmd=ApplyGetSection&egs_src=" + sSrc + "&egs_op=" + sOp + "&egs_mode=" + sMode+ "&egs_section=" + sSection + "&egs_sparam=" + sfrm.elements["case_people:csp_primary:0"].value;
	}
	else
	{
		var sT = "/tm_bin/tmw_cmd.pl?tmw_cmd=ApplyGetSection&egs_src=" + sSrc + "&egs_op=" + sOp + "&egs_mode=" + sMode+ "&egs_section=" + sSection;
	}
	if (sIRec.length > 0) sT += "&egs_irec=" + sIRec;
	return sT;
}

function EFRTDeleteApp(sSrc, sOp, sMode, sIRec, sParam, sSection, sFormTarget)
{
	var bDelete = confirm('Are you sure you want to ' + sParam + '?');
	if (!bDelete)
		return;

	var doc = GetDocTarget(sFormTarget);
	doc.location = EFRTBuildUrl(sSrc, sOp, sMode, sIRec, sParam, sSection);
}


function EFRTCopyApp(sSrc, sOp, sMode, sIRec, sParam, sSection, sFormTarget)
{
	var doc = GetDocTarget(sFormTarget);
	doc.location = EFRTBuildUrl(sSrc, sOp, sMode, sIRec, "", sSection) + "&egs_appid=" + sParam;
}

function EFRTLookup(sSrc, sOp, sMode, sIRec, sParam, sSection, sFormTarget)
{
	var doc = GetDocTarget(sFormTarget);
	
	if (sSection == "EFormDirect")
		{
		//05/31/02 MDH - if this is parcel lookup & if they clicked Primary, if so set egs_addrx_primary = Y	
		if (sOp == "Lookup" && sMode == "Parcel")
			{
			var frm;
			frm = document.forms[kstrEForm];
			sParam = frm.elements["site_address:addrx_primary:" + sIRec].checked
			EFRTDoLookupSubmit(sSrc, sOp, sMode, sIRec, sParam, sSection);
			}
		else
			{
			EFRTDoLookupSubmit(sSrc, sOp, sMode, sIRec, sParam, sSection);
			}
		}
	else
		{
		doc.location = EFRTBuildUrl(sSrc, sOp, sMode, sIRec, sParam, sSection);
		}
}

function EFRTClearItem(sSrc, sOp, sMode, sIRec, sParam, sSection, sFormTarget)
{
	var bDelete = confirm('Are you sure you want to clear this item?');
	if (!bDelete)
		return;
	var doc = GetDocTarget(sFormTarget);
	if (sSection == "EFormDirect")
		{
		EFRTDoLookupSubmit(sSrc, sOp, sMode, sIRec, sParam, sSection);
		}
	else
		doc.location = EFRTBuildUrl(sSrc, sOp, sMode, sIRec, sParam, sSection); // "/tmconnect/tmadmin.asp?tmw_fAdmin=1&tmw_cmd=FormList22&tmw_mode=FormDelete&tmw_efCaseType=" + sCaseType + "&tmw_efVariant=" + sVariant;
}

//05/31/02 MDH - not sure why we are not including sParam??? will now include it and reference it, specifically
//right now for grabbing the primary parcel flag
function EFRTDoLookupSubmit(sSrc, sOp, sMode, sIRec, sParam, sSection)
{
	var frm = document.forms[kstrEForm];
	var frmlen = frm.elements.length;
	if (!EFRTValidate(frm))  // also alerts and sets focus
		return;
	var fld;
	if (sSrc.length > 0)  fld = frm.elements["egs_src"].value = sSrc;
	if (sOp.length > 0)  fld = frm.elements["egs_op"].value = sOp;
	if (sMode.length > 0)  fld = frm.elements["egs_mode"].value = sMode;
	if (sIRec.length > 0)  fld = frm.elements["egs_irec"].value = sIRec;
	if (sSection.length > 0)  fld = frm.elements["egs_section"].value = sSection;
	
	//05/31/02 MDH - need the sParam for parcel lookups primary flag, add new formelement
	if (sParam == true)
	{
	frm.elements["egs_src"].value = sSrc + "Y";
	//var primprcl = document.createElement('egs_addrx_primary');
	//var primprcl;
	//primprcl = new element('egs_addrx_primary');
	//primprcl.value = sParam;
	//primprcl.type = 'hidden';
	//primprcl.tag = 'egs_addrx_primary';
	//primprcl.name = 'egs_addrx_primary';
	//primprcl.name = 'egs_sparam';
	//alert("does this have a name??? " + primprcl.name);
	//frm.elements[primprcl.name] = primprcl;
	//alert("sparam is: " + sParam);
	//alert("primprcl.value = " + primprcl.value);
	//alert("frm.elements[primprcl.name].value = " + frm.elements[primprcl.name].value);
	//alert("frm.elements[primprcl.name].name = " + frm.elements[primprcl.name].name);
	}
	
	frm.submit();
}

function EFRTPayNow()
{
	var frm = document.forms[kstrEForm];
	frm.action= frm.elements["tpurl"].value;
	frm.submit();
}

// right now, this is the same as EFRTClearItem
function EFRTDeleteDDItem(sSrc, sOp, sMode, sIRec, sParam, sSection, sFormTarget)
{
	var bDelete = confirm('Are you sure you want to delete this item?');
	if (!bDelete)
		return;
	var doc = GetDocTarget(sFormTarget);
	doc.location = EFRTBuildUrl(sSrc, sOp, sMode, sIRec, sParam, sSection); // "/tmconnect/tmadmin.asp?tmw_fAdmin=1&tmw_cmd=FormList22&tmw_mode=FormDelete&tmw_efCaseType=" + sCaseType + "&tmw_efVariant=" + sVariant;
}


// validate form -- look for req_ fields and dt_ fields
function EFRTValidate(frm)
{
	if (!frm) return true;

	// uses req_field (0 or 1), label_field (label) and valid_field (data type = 0-6)
	// 0 is int, 1 is nonneg int, 2 is float, 3 is string, 4 is date, 5 is time, 6 is datetime
	var rgele = frm.elements;
	var ele, eleValid, eleLabel;
	var valMain;
	var iValue;
	var uLongValue;
	var sValue;
	var dtValue;
	var tmValue;
	var dttmValue;
	for (var i = 0; i < frm.length; i++)
		{
		eleValid = rgele[i];
		if (eleValid.name.substring(0,4) == "req_" && eleValid.value != "0")  // 0 is not req
			{
			ele = frm.elements[eleValid.name.substring(4)];
			eleLabel = frm.elements["label_" + eleValid.name.substring(4)];

			if (ele == null)
				{
				alert("could not find " + eleValid.name.substring(4));
				continue;
				}
			if (ele.value == "")
				{
				EFRTWarnValue(ele, eleLabel.value, "filled in.", true);
				return false;
				}
			}
		else if (eleValid.name.substring(0,23) == "case_people:csp_primary")
			{
				//05/24/02 MDH - enforcing single primary person
				if (eleValid.checked)
					{
						//check if anybody else is primary
						var iPrimCount;
						var strFldName;
						var strFieldCount;
						iPrimCount = 0;
						strFieldCount = 1;
						for (var c = 1; c < frm.length; c++)
						{
							strFldName = 'case_people:csp_primary:' + strFieldCount;
							if (frm.elements[c].name == strFldName)
							{
							  if (frm.elements[c].checked && c != strFieldCount) 
							  {
							    iPrimCount++;
							    strFieldCount++;
							    if (iPrimCount > 1)
								{
								  alert("Please select only one primary person");
								  return false;
							  	}
							  }
							}
						}
					}
			}
		else if (eleValid.name.substring(0,26) == "site_address:addrx_primary")
			{
				//05/29/02 MDH - enforcing single primary parcel 
				if(eleValid.checked)
					{
						//check if another is primary
						var iPrimCount;
						var strFldName;
						var strFieldCount;
						iPrimCount = 0;
						strFieldCount = 1;
						for (var c = 1; c < frm.length; c++)
						{
							strFldName = 'site_address:addrx_primary:' + strFieldCount;
							if (frm.elements[c].name == strFldName)
							{
							  if (frm.elements[c].checked && c != strFieldCount) 
							  {
							    iPrimCount++;
							    strFieldCount++;
							    if (iPrimCount > 1)
								{
								  alert("Please select only one primary parcel");
								  return false;
							  	}
							  }
							}
						}
					}
			}	
		else if (eleValid.name.substring(0,24) == "case_address:csm_primary")
			{
				//05/29/02 MDH - enforcing single primary address 
				if(eleValid.checked)
					{
						//check if another is primary
						var iPrimCount;
						var strFldName;
						var strFieldCount;
						iPrimCount = 0;
						strFieldCount = 1;
						for (var c = 1; c < frm.length; c++)
						{
							strFldName = 'case_address:csm_primary:' + strFieldCount;
							if (frm.elements[c].name == strFldName)
							{
							  if (frm.elements[c].checked && c != strFieldCount) 
							  {
							    iPrimCount++;
							    strFieldCount++;
							    if (iPrimCount > 1)
								{
								  alert("Please select only one primary address");
								  return false;
							  	}
							  }
							}
						}
					}
			}			
		else if (eleValid.name.substring(0,3) == "dt_" && eleValid.value != "varchar" && eleValid.value != "long varchar")  // 3 is string: we dont care
			{
			ele = frm.elements[eleValid.name.substring(3)];
			eleLabel = frm.elements["label_" + eleValid.name.substring(3)];
			if (ele == null || ele.value == "")
				{
				if (ele == null)
					{
					alert("could not find " + eleValid.name.substring(3));
					}
				continue;
				}
			switch (eleValid.value)
				{
			case "integer":
				if (!EFRTIsInteger(ele.value))
					{
					EFRTWarnValue(ele, eleLabel.value, "an integer.", true);
					return false;
					}
				break;
			case "posinteger":
				if (!EFRTIsInteger(ele.value) || parseInt(ele.value) < 0)
					{
					EFRTWarnValue(ele, eleLabel.value, "a positive integer.", true);
					return false;
					}
				break;
			case "numeric":
			case "double":
			case "float":
			case "real":
				if (!EFRTIsFloat(ele.value))
					{
					EFRTWarnValue(ele, eleLabel.value, "a number.", true);
					return false;
					}
				//02-28-2002 Michael Hanshew - BUG 319
				//the parsefloat is truncating the number at the first occurence of a comma
				//call new function to strip out the ,
				var scomma = ",";
				var snull = "";
				ele.value = replaceval(ele.value,scomma,snull);
				ele.value = parseFloat(ele.value);
				
				//5/21/03 Hardy Xu -Bug 123  -----begin---------------
				//Make sure a numeric field don't generate overflow error.
				if (ele.value == "")
					{
					continue;
					}
				var prele;
				scomma = ".";
				var elevalue, prelevalue;
				elevalue = ele.value;
				prele = frm.elements["pr_" + eleValid.name.substring(3)];
				if (prele == null || prelevalue == "" )
					{
					if ( elevalue.indexOf(scomma) >= 0 )
						{
						alert("The value of " + eleLabel.value + " must be an integer." );
						return false;
						}
					continue;
					}
				else
					{					
					prelevalue = prele.value;
					if ( prelevalue.indexOf(scomma) < 0 ) continue;	
					if (Math.abs(elevalue) > prelevalue)
						{								
							alert("The absolute value of " + eleLabel.value + " must be less than " + prelevalue);
							return false;
						}					
					var ipos = elevalue.indexOf(scomma);					
					if (ipos >= 0 )
						{
						var iLen;						
						iLen = prelevalue.length - prelevalue.indexOf(scomma);
						if ( (elevalue.length - ipos) > iLen )
							{								
							alert("The decimal part of " + eleLabel.value + " must be limited to " + (iLen-1) + " digits. ");
							return false;
							}
						}						
					}
				//5/21/03 Hardy Xu -Bug 123  ----- end ---------------
				break;
			case "varchar":			 // no validation
			case "long varchar":
			case "long text":
				break;
			case "date":
				if (!EFRTIsDate(ele.value))
					{
					EFRTWarnValue(ele, eleLabel.value, "a valid date (with no time).", true);
					return false;
					}
				break;
			case "time":
				if (!EFRTIsTime(ele.value))
					{
					EFRTWarnValue(ele, eleLabel.value, "a valid time.", true);
					return false;
					}
				break;
			case "datetime":
				if (!EFRTIsDateTime(ele.value))
					{
					EFRTWarnValue(ele, eleLabel.value, "a valid date and time.", true);
					return false;
					}
				break;
				}
			}
		}
	return true;
}

function EFRTWarnValue(ele, sLabel, sMsg, bDoFocus)
{
	alert("The value of " + sLabel + " must be " + sMsg);
	if (bDoFocus)
		{
		ele.focus();
		if(ele.type == "text" || ele.type == "textarea")
			ele.select();
		}
	return false; // so you can just return this value
}

function EFRTIsInteger(sValue)
{
	if (!EFRTIsFloat(sValue)) return false;
	var iValue = parseInt(sValue);
	if (iValue * 1.0 != parseFloat(sValue)) return false;
	return true;
}

function EFRTIsFloat(sValue)
{
	var fltValue = parseFloat(sValue);
	if (isNaN(fltValue)) return false;
	return true;
}

function EFRTIsDateTime(sValue)
{
	var dt = new Date(sValue)
	if (isNaN(dt)) return false;
	return true;
}

function EFRTIsDate(sValue)
{
	if (!EFRTIsDateTime(sValue)) return false;
	var dt;
	dt = new Date(sValue);
	if (dt.getHours() != 0 || dt.getMinutes() != 0 || dt.getSeconds() != 0) return false;
	return true;
}

function EFRTIsTime(sValue)
{
	if (!EFRTIsDateTime(sValue))
		{
		if (EFRTIsDateTime("1/1/11 " + sValue)) return true;
		return false;
		}
	return false;
}

// Manage Case - Quick Add javascript functions

function MC_ClearOptions(vOptions)
{
	var i, cnt;
	if(vOptions == null) return;
	cnt = vOptions.length;
	for(i=0;i<cnt;i++)
		vOptions.options[0] = null;
}

function MC_FillOptions(vOpt,vArr)
{
	var i;
	MC_ClearOptions(vOpt);
	for(i=0;i<vArr.length;i++)
	{
		MC_AddOption(vOpt,vArr[i].desc,vArr[i].id);
	}
	if(vOpt.options.length > 0)
	{
		vOpt.options[0].selected = true;
	}
}

function MC_AddOption(vOpt, vTxt, vVal)
{
	if(vOpt == null) return;
	vOpt.options[vOpt.options.length] = new Option(vTxt,vVal);
}

//Activities

function MCA_OnResetForm(vMenu,vAct)
{
    var i, idx, menuid;
     
    //populate optMenu from menu
	if(vMenu == null || vAct == null)
		return;
	MC_ClearOptions(document.frmQuickAdd.optAct);
	MC_FillOptions(document.frmQuickAdd.optMenu,vMenu);
    menuid = document.frmQuickAdd.tmw_actmenuid.value;
    idx = 0;
    if(menuid != "")
	{
        for(i=0;i<vMenu.length;i++)
        {
            if (menuid == vMenu[i].id)
            {
                idx = i;
                break;
            }
        }
    }
    document.frmQuickAdd.optMenu.options[idx].selected = true;   
	MCA_OnChangeMenu(vMenu,vAct);
}

function MCA_OnChangeMenu(vMenu,vAct)
{
	var i, idx;
	//find selected menu
	idx = document.frmQuickAdd.optMenu.selectedIndex;
    MC_ClearOptions(document.frmQuickAdd.optAct);

	//populate activities for menu offset = idx
	for(i=0;i<vAct.length;i++)
	{
		if(vAct[i].id == vMenu[idx].id)
		{			MC_AddOption(document.frmQuickAdd.optAct,vAct[i].desc,vAct[i].code);
		}
	}

	//KPT 11-30-00 Added the second && condition in case there no items in optAct.length
	if((vAct.length > 0) && (document.frmQuickAdd.optAct.length > 0))
	{
		document.frmQuickAdd.optAct.options[0].selected = true;
		MCA_OnChangeAct(vAct);
	}
	
}

function MCA_OnChangeAct(vAct)
{
	var i, vCode;
	vCode = document.frmQuickAdd.optAct.options[document.frmQuickAdd.optAct.selectedIndex].value;

	for(i=0;i<vAct.length;i++)
	{
		if(vAct[i].code == vCode)
			break;
	}
	if(i<vAct.length)
	{
		// document.frmQuickAdd.fastadd.value = vAct[i].fast;
		document.frmQuickAdd.shl_code.value = vAct[i].code;
		// morganb 2000-08-28 dont need this for now -- we will do full validation
		// document.frmQuickAdd.btnQuickAdd.disabled = (vAct[i].fast == 0);
	}
	else
	{
		alert('fail');
	}
}

//Conditions

function MCC_OnResetForm(vCnd)
{
	if(vCnd == null)
		return;
	MC_FillOptions(document.frmQuickAdd.shl_code,vCnd);
}

// Fees
function MCF_OnResetForm(vFee,bCanEdit)
{
	var i;

	if(vFee == null || bCanEdit == null)
		return;

	MC_ClearOptions(document.frmQuickAdd.optFees);
	for(i=0;i<vFee.length;i++)
	{
		MC_AddOption(document.frmQuickAdd.optFees,vFee[i].desc,i);
	}
	if(document.frmQuickAdd.optFees.options.length > 0)
	{
		document.frmQuickAdd.optFees.options[0].selected = true;
	}
	MCF_OnChangeFees(vFee,bCanEdit);
}

function MCF_OnChangeFees(vFee,bCanEdit)
{
	var i;
	i = document.frmQuickAdd.optFees.options[document.frmQuickAdd.optFees.selectedIndex].value;
	if (vFee[i].amt == 0)
		document.frmQuickAdd.acf_fee_amt.value = "";
	else
		document.frmQuickAdd.acf_fee_amt.value = vFee[i].amt;
	document.frmQuickAdd.shl_code.value = vFee[i].code;
	MCF_OnChangeAmt();
}

function MCF_OnChangeAmt()
{
	var amt = document.frmQuickAdd.acf_fee_amt.value;
	if (amt == "") return;
   if (isNaN(parseFloat(amt)))
      amt = "";
	document.frmQuickAdd.acf_fee_amt.value = FormatAsCurrency(amt);
}

// Valuations

function MCV_OnResetForm(vVal)
{
	var i, curVal;

	if(vVal == null)
		return;

	if(document.frmQuickAdd != null) MC_ClearOptions(document.frmQuickAdd.optType);
	if(document.frmQuickAddManual != null) MC_ClearOptions(document.frmQuickAddManual.shl_code);
	for(i=0;i<vVal.length;i++)
	{
		if(vVal[i].manual)
		{
			curVal = vVal[i].val_id;
			MC_AddOption(document.frmQuickAddManual.shl_code,vVal[i].val_desc,curVal);
		}
		else if((i==0) || (vVal[i].val_id != curVal))
		{
			curVal = vVal[i].val_id;
			MC_AddOption(document.frmQuickAdd.optType,vVal[i].val_desc,i);
		}
	}

	if(document.frmQuickAdd != null)
	{
		if(document.frmQuickAdd.optType.options.length > 0)
			document.frmQuickAdd.optType.options[0].selected = true;
		MCV_OnChangeType(vVal);
	}
	if(document.frmQuickAddManual != null)
	{
		if(document.frmQuickAddManual.shl_code.options.length > 0)
			document.frmQuickAddManual.shl_code.options[0].selected = true;
	}
}

function MCV_OnChangeType(vVal)
{
	var i, j, k, val_id, curGrd;
	i = document.frmQuickAdd.optType.options[document.frmQuickAdd.optType.selectedIndex].value;
	val_id = vVal[i].val_id;
	document.frmQuickAdd.shl_valtype.value = val_id;
	// update hidden field with old var name
	document.frmQuickAdd.shl_code.value = val_id;
	//find last instance of val_id
	for(j=i;j<vVal.length;j++)
	{
		if(vVal[j].val_id != val_id)
			break;
	}


	MC_ClearOptions(document.frmQuickAdd.optGrade);

	//populate grades for this type
	for(k=i;k<j;k++)
	{
		if((k==i) || (vVal[k].gr_id != curGrd))
		{
			curGrd = vVal[k].gr_id;
			MC_AddOption(document.frmQuickAdd.optGrade,vVal[k].gr_desc,k);
		}
	}
	if(document.frmQuickAdd.optGrade.options.length > 0)
		document.frmQuickAdd.optGrade.options[0].selected = true;
	MCV_OnChangeGrade(vVal)
}

function MCV_OnChangeGrade(vVal)
{
	var i,j,k, val_id, gr_id;
	//find first instance of val_id, gr_id
	i = document.frmQuickAdd.optGrade.options[document.frmQuickAdd.optGrade.selectedIndex].value;
	val_id = vVal[i].val_id;
	gr_id = vVal[i].gr_id;
	document.frmQuickAdd.shl_grade.value = gr_id;

	for(j=i;j<vVal.length;j++)
	{
		if(vVal[j].val_id != val_id || vVal[j].gr_id != gr_id)
			break;
	}

	MC_ClearOptions(document.frmQuickAdd.optRate);
	for(k=i;k<j;k++)
	{
		MC_AddOption(document.frmQuickAdd.optRate,vVal[k].rate_desc,k);
	}
	if(document.frmQuickAdd.optRate.options.length > 0)
		document.frmQuickAdd.optRate.options[0].selected = true;
	MCV_OnChangeRate(vVal)
}

function MCV_OnChangeRate(vVal)
{
	var i;
	i = document.frmQuickAdd.optRate.options[document.frmQuickAdd.optRate.selectedIndex].value;
	document.frmQuickAdd.shl_rate.value = vVal[i].rate;
	document.frmQuickAdd.shl_rate_code.value = vVal[i].rate_id;
	document.frmQuickAdd.shl_rate_desc.value = vVal[i].rate_desc;
	document.frmQuickAdd.shl_rate_mult_flag.value = vVal[i].mult_flag;
	document.frmQuickAdd.shl_mult.value = vVal[i].mult;
	MCV_CalculateTotal();
}

function MCV_CalculateTotal()
{
	var qty, rate, mult;
	qty = document.frmQuickAdd.shl_quantity.value;
	rate = document.frmQuickAdd.shl_rate.value;
	mult = document.frmQuickAdd.shl_mult.value;
	var dQty = parseFloat(qty);
	if (isNaN(dQty) || dQty <= 0)
	{
		alert("You must enter a positive number for Quantity.");
		qty = 1;
	}
	else
	{
		if((dQty - Math.floor(dQty)) > 0.0)
			alert("You must enter an integer for Quantity.");

		//truncate any fraction from dQty.
		qty = Math.floor(dQty);
	}

	document.frmQuickAdd.shl_quantity.value = qty;
	document.frmQuickAdd.shl_total.value = FormatAsCurrency(qty * rate * mult);
}

// Added 4-13-01
// note: MUST remove DoOnLoad() or DoOnLoadSel() from body onload event to use. (bypasses validation).

function NoBlanks(theForm)
{
var intCount = 0 
  for(i=0;i<theForm.elements.length;i++) 
  {
  // alert(theForm.elements[i].type)
  if(theForm.elements[i].type == "text" || theForm.elements[i].type == "select-one" || theForm.elements[i].type == "textarea") {
    if (theForm.elements[i].value != "")
        intCount = intCount+1;
    }
  else if (theForm.elements[i].type == "checkbox") {
    if (theForm.elements[i].checked)
     intCount = intCount+1;
    }
  }
  if (intCount == 0)
    {
    alert("Please enter a search criteria.   ");
    return (false);
    }
  else {
  theForm.submit()
    }
}

function DoOnLoadStatus()
{
	// user definable
	if (f4x)
		{
      var frm = document.forms["frmMain"];
      if (frm == null) return;

      RegisterKey(13,function() { NoBlanks(frm); });

      var i;
      var ele;
      for (i = 0; i < frm.elements.length; i++)
         {
         ele = frm.elements[i];
         if (ele.type == "text") ele.onkeydown = _KeyHandler;

         if (ele.type == "text" || ele.type == "password" || ele.type == 'textarea')
            {
				ele.focus();
            ele.select();
            break;
            }
         }
      }
}

//MDH 02/28/02 - new function to set numeric values correctly
function replaceval(string,text,by) {
// Replaces text with by in string
// new function for bug 319
    var strLength = string.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0)) return string;
    
    var i = string.indexOf(text);
    if ((!i) && (text != string.substring(0,txtLength))) return string;
    if (i == -1) return string;
    
    var newstr = string.substring(0,i) + by;
	
    if (i+txtLength < strLength)
	//newstr += string.replace(string.substring(i+txtLength,strLength),text,by);
       	 newstr += string.substring(i+txtLength,strLength);


    if (i>0)
	{
   	var tempstr;
	var j;
	j = 0;
	while(newstr.indexOf(text) > 0)
		{
		    i = newstr.indexOf(text);
		    tempstr = newstr.substring(0,i);
		    newstr = newstr.substring(i+1);
		    tempstr += newstr;
		    newstr = tempstr;
		}
	}
	
    return newstr;
}

//HXU 11/08/02 -new function for adding,upadating,deleting activity attached table
function ActAttachedUpdateAndNav(sMode, sAttid)
{
	if (sMode =="Delete")
	{
		var bDelete = confirm('Are you sure you want to delete this item?');
			if (!bDelete)
				return;
	}
	var frm = document.ActAttTable;
	frm.sAtt_mode.value = sMode;
        frm.sAtt_id.value = sAttid;
	frm.shl_caseno.value = document.frmMain.shl_caseno.value;
	frm.shl_code.value = document.frmMain.shl_code.value;
	frm.shl_id.value = document.frmMain.shl_id.value;
	frm.shl_xact.value = document.frmMain.shl_xact.value;
	frm.submit();	
        return true;
}

function ActAttachedSelectChange(arrNotes)
{
    var i = document.ActAttTable.ResultCode.selectedIndex;
    document.ActAttTable.tmwResultText.value = arrNotes[i].notes;
    return true;
}

function ActAttachedResultCodeOnFocus()
{ 
    document.ActAttTable.tmwResultNotes.focus();
    return true;
}

//HXU 11/27/02 -for bug 584,the function is used by ACFAdjust_Fee.tmw and ACFAdd_pymt.tmw
function ACFAdjustFee_OnChangeAmt()
{
	var amt = document.frmMain.acf_fee_newamt.value;
	if (amt == "" ) amt = "";
	if (amt == null ) amt = "";
	if (isNaN(parseFloat(amt)))
		amt = "";
	if (isNaN(FormatAsCurrency(amt)))
		amt = "";
	document.frmMain.acf_fee_newamt.value = FormatAsCurrency(amt);
}
function EFTObjectID(theForm, objName)
{
	var i;
	for(i = 0; i < theForm.length; i++)
	{
		if(theForm.elements[i].name == objName)
			return i;
	}
	return -1;
}
//Savi Liang, 04/26/04, Fixed bug #1514. Ensure both Inpection Time and AmPm are (Not) filled in.
function INS_Validation(insForm)
{
	var due_time, due_time_ampm;
	var due_time_id;
	var due_time_ampm_id;
	due_time_id  = EFTObjectID(insForm, "ins_due_time");
	due_time_ampm_id = EFTObjectID(insForm, "ins_due_time_ampm");
	if(due_time_id != -1 && due_time_ampm_id != -1)
	{
		due_time = insForm.elements[due_time_id].value;
		due_time_ampm = insForm.elements[due_time_ampm_id].value;
		if (due_time.length == 0 && due_time_ampm.length > 0)
		{
			alert("Due time should not be null while AMPM is not null.");
			return false;
		}	
		if (due_time.length > 0 && due_time_ampm.length == 0)
		{
			alert("AMPM should not be null while Due Time is not null.");
			return false;
		}
		if (due_time.length > 0 && !EFRTIsTime(due_time))
		{
			alert("Due Time is NOT correct time format!");
			return false;
		}
	}
	insForm.submit();
	return false;
}

//Leong Liang 03/15/2005 New Feature 01363 Case Tag Notice
function casetagnotify(notifysyntax,casenumber)
{	
	var winname;
	if (notifysyntax != ""){ 
	winname = casenumber + "casetag";  
	msgWindow=open("", winname,"toolbar=no,menubar=no,scrollbars=yes,width=600");
	msgWindow.document.write();
	msgWindow.document.write(notifysyntax);
	msgWindow.document.close();		
	}	
}

//Leong Liang 03/15/2005 New Feature 01363 Parcel Tag Notice
function parceltagnotify(strshowalert){
	var frm = document.forms["frmMain"];
      	if (frm == null) {
      	return ;
	}
	if (strshowalert == "Y") {
		alert("A special parcel tag exists on the parcel selected. This tag will not allow an application to be created on this parcel.")
		return;
	}
	else {
		frm.submit();
		return true;
 	}
}

//Leong Liang 06/23/2005 New feature 04act-05122 Activity Disposition Limit to List.
function Refresh_selectoptions(sSelected_value){
	document.getElementById('acf_csa_disp').value = sSelected_value;
	document.getElementById('acf_csa_disp_sel').value = "";
	return true;
}

//Nancy added for validation
function PeopleInfoRequireField()
{
if (document.frmMain.lastname.value == "")
 {
 alert ('Please provide a last name.');
 document.frmMain.lastname.focus();
 }
else if (document.frmMain.company.value == "")
 {
 alert ('Please provide a company name.');
 document.frmMain.company.focus();
 }
else if (document.frmMain.address1.value == "")
 {
 alert ('Please provide at least one address line.');
 document.frmMain.address1.focus();
 }
else if (document.frmMain.city.value == "")
 {
 alert ('Please provide a city.');
 document.frmMain.city.focus();
 }
else if (document.frmMain.state.value == "")
 {
 alert ('Please provide a state.');
 document.frmMain.state.focus();
 }
else if (document.frmMain.zip.value == "")
 {
 alert ('Please provide a zip code.');
 document.frmMain.zip.focus();
 }
else if (document.frmMain.contacttype1.value == "")
 {
 alert ('Please provide at least one phone number.');
 document.frmMain.contacttype1.focus();
 }
else
 {
 document.frmMain.submit();
 }
}

function numericOnly(e)
{
    var keynum
    var keychar
    var numcheck
    if(window.event) // IE
    {
        keynum = e.keyCode
    } 
        else if(e.which) // Netscape/Firefox/Opera
    {
        keynum = e.which
    }
/*
	if( (keynum >= 48 && keynum <= 57) || keynum == 189 || (keynum >= 96 && keynum <= 105))
	{
		giPhonelength++;
	} else if((keynum == 189 || keynum == 109) || (keynum >= 96 && keynum <= 105) ||
	     (keynum == 8 || keynum == 9) || (keynum == 13 || keynum == 45) || keynum == 46)
     		{	 
			giPhonelength--;
		}
*/

// Backspace, Tab, Enter, Insert, and Delete
      if( (keynum == 189 || keynum == 109) || (keynum >= 48 && keynum <= 57) || (keynum >= 96 && keynum <= 105) ||
	 (keynum == 8 || keynum == 9) ||(keynum == 13 || keynum == 45) ||
	 (keynum == 37 || keynum == 39) || keynum == 46) 
	{	 
    		return true;   // (giPhonelength<13); 
	} else {
    		return false;
  	}
}





