//GLOBAL FUNCTIONS
var g_popupMenu = null;
window.onbeforeunload = confirmExit;
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
};
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
};
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
};
function toInt(sVal){return parseInt(sVal, 10);};

	function ParseXML(xmlText)
	{
		parser = new SAXDriver();
		XML.initialize();
		// pass handlers to the sax2 parser
	    parser.setDocumentHandler(XML);
	    parser.setErrorHandler(XML);
	    parser.setLexicalHandler(XML);
	    parser.parse(xmlText);// start parsing

	    // get errors from sax2 parser
	    var err='\n'+XML.getError();
	};
	//lists of elements for the e05 section, in reverse order.
  var g_timeChain = new Array(  "4092", "4088", "4090", "4641", "4676",
                                 "4586", "4523", "4086", "4084", "4080",
                                 "4078", "4076", "4074", "4072", "4070", "4068");
	var g_datesInit = false;
	function initDefDates()
	{
    if (g_datesInit == true)
      return;
    for (c = 0; c < g_timeChain.length; c++)
    {
      el = $(g_timeChain[c]);
      if (el == null)
        continue;
      Event.observe(el, "focus", defDate, false);
      Event.observe(el, "blur", resetDate, false);
    }
    g_datesInit = true;
	};
	function startParser()
	{
    	var ixml = document.getElementById("xmldata").value;
		ParseXML(ixml);
		LoadCheckTreeData();
		InitializeFD();
		InitHighlights();
		DefAgencyID();
		initDefDates();
	};
	function LoadCheckTreeData()
	{
		XML.resetCurrentNode();
		rootNdx = XML.getCurrentTag();
		nodeNdx = XML.getChildTag(rootNdx, "CTInitial");
		if (nodeNdx > -1)
		{
			for (yyy=0; yyy < XML.getLeafCount(nodeNdx); yyy++)
			{
				childNdx = XML.getLeafNode(nodeNdx, yyy);
				if (childNdx == -1)
					continue;
				CTManager.addCheckTree(XML.m_Nodes[childNdx].getAttribute("controlID"),
										XML.m_Nodes[childNdx].getAttribute("tableID"),
										XML.m_Nodes[childNdx].getAttribute("recordID"));
			}
		}
		nodeNdx = XML.getChildTag(rootNdx, "data");
		if (nodeNdx > -1)
		{
			for (yyy=0; yyy < XML.getLeafCount(nodeNdx); yyy++)
			{
				childNdx = XML.getLeafNode(nodeNdx, yyy);
				if (childNdx == -1)
					continue;
				CTManager.addOption(XML.m_Nodes[childNdx].getAttribute("controlID"),
										XML.m_Nodes[childNdx].getAttribute("tableID"),
										XML.m_Nodes[childNdx].getAttribute("recordID"),
										XML.m_Nodes[childNdx].getAttribute("optionID"));
			}
		}
	};
	function csbc(controlID, e){comboSelByChar(controlID, e);};
	function comboSelByChar(controlID, e)
	{
          if (!e)
             e=window.event;
          character = '';
          if (e.keyCode)
             character = String.fromCharCode(e.keyCode);
          else if (e.which)
             character = String.fromCharCode(e.which);
          Combo = $(controlID);
          if (!Combo) return;
          for (j = 0; j < Combo.options.length; j++)
          {
            if (Combo.options[j].text.substr(0, 1).toLowerCase() == character.toLowerCase())
            {
              Combo.options[j].selected = true;
              toggleCombo(controlID, "show");
              return;
            }
          }
        };
	function toggleCombo(controlID, show)
	{
          if (!show)
             show = "toggle";
          el = $("Combo_" + controlID);
          if (!el) return;
          combo = $(controlID);
          if (!combo) return;
          if (el.style.display == "none")
          {
            if ($('CButton_'+controlID).disabled == true)
               return;
            el.style.display = "block";
            combo.focus();
            return;
          }
          if (show == "show")
          {
              el.style.display = "block";
              el.focus();
              return;
          }
          else
              el.style.display = "none";
          el2 = $("CButton_" + controlID);
          if (combo.selectedIndex > -1)
              el2.value = combo.options[combo.selectedIndex].text;
          else
              el2.value = "";
          el2.focus();
	};
	function hideCombo(controlID)
	{
		el = $("Combo_" + controlID);
		combo = $(controlID);
		el.style.display = "none";
		el2 = $("CButton_" + controlID);
		if (combo.selectedIndex > -1)
			el2.value = combo.options[combo.selectedIndex].text;
		else
			el2.value = "";
	};
	function checkRelogin(response)
	{
         respTxt = response.responseText;
         if (respTxt.find("{login}") >= 0)
         {

         }
        };
	function countHandler(response)
	{
		xmlData = response.responseText;
		top.ParseXML(xmlData);
		top.XML.resetCurrentNode();
		rootNdx = top.XML.getCurrentTag();
		ndx = top.XML.getChildTag(rootNdx, "status");
		if (top.XML.m_Nodes[ndx].Data == "E")
		{
			ndx = top.XML.getChildTag(rootNdx, "msg");
			ndx = top.XML.getChildTag(ndx, "msg");
			alert(top.XML.m_Nodes[ndx].Data);
			return;
		}
		if (top.XML.m_Nodes[ndx].Data == "S")
		{
                        ndx = top.XML.getChildTag(rootNdx, "count");
                        if (ndx >= 0)
                        {
                         msg = top.XML.m_Nodes[ndx].Data + " records were found.";
                         alert (msg);
                        }
			return;
		}
	};
	function crewLevelHandler(response)
	{
                showNotifyBanner("", false);
		xmlData = response.responseText;
		top.ParseXML(xmlData);
		top.XML.resetCurrentNode();
		rootNdx = top.XML.getCurrentTag();
		ndx = top.XML.getChildTag(rootNdx, "pers_level");
		if (ndx > -1)
		{
                   setCrewMemberLevel(top.XML.m_Nodes[ndx].Data);
                   tID = getCrewTableID();
                   GetFieldValues(tID);
                   SetRowFieldData(tID);
                }
	};
	function ResponseHandler(response)
	{
		xmlData = response.responseText;
		ParseXML(xmlData);
		XML.resetCurrentNode();
		rootNdx = XML.getCurrentTag();
		ndx = XML.getChildTag(rootNdx, "status");
		if (XML.m_Nodes[ndx].Data == "E")
		{
			ndx = XML.getChildTag(rootNdx, "msg");
			ndx = XML.getChildTag(ndx, "msg");
			updateInfoBox("Invalid Data!", XML.m_Nodes[ndx].Data, "block");
			return;
		}
		if (XML.m_Nodes[ndx].Data == "S")
		{
			updateInfoBox("Success!", "Data was successfully saved!", "block");
			ndx = XML.getChildTag(rootNdx, "id");//id of the saved record
			setDocumentID(XML.m_Nodes[ndx].Data);
			if (XML.getChildTag(rootNdx, "print") >= 0)
			{
				postData = "wproc.cgi?action=go&id=" + XML.m_Nodes[ndx].Data + "&dest=IncidentReport";
//				top.OpenDocument(postData, //"incidentreport", "Incident Report", "IncReport");
				top.window.open (postData, "Incident Form","status=1");
			}
			else
			{
        doConfirm = false;
        if (XML.getChildTag(rootNdx, "valid") >= 0)
           doConfirm = true;
      }
      mcData = "";
      ndx = XML.getChildTag(rootNdx, "newmcdata");
      if (ndx >= 0)
        mcData = XML.m_Nodes[ndx].Data;
      ndx = XML.getChildTag(rootNdx, "newlfdata");
      if (ndx >= 0)
      {
       $('LFValues').value = XML.m_Nodes[ndx].Data;
       InitializeFD();
      }
      ndx = XML.getChildTag(rootNdx, "count");
      if (ndx >= 0)
      {
       msg = XML.m_Nodes[ndx].Data + " records were found.";
       alert (msg);
      }
      ReloadMC(mcData);
      if (doConfirm)
         confirmNeedsTransmission();
			XMLSubmittalData = BuildSubmit();//reset XMLSubmittalData for later comparison
			return;
		}

	};
	function ReloadMC(mcData)
	{
    if (mcData == "")
      return;
		ParseXML(mcData);
		XML.resetCurrentNode();
		rootNdx = XML.getCurrentTag();
		leafCount = XML.getLeafCount(rootNdx);
		for (lci = 0; lci < leafCount; lci++)
		{
      curNdx = XML.getLeafNode(rootNdx, lci);
      cid = XML.m_Nodes[curNdx].getAttribute("id");
      eval ("mc"+cid+".clear();");
      recCount = XML.getLeafCount(curNdx);
      for (lcr = 0; lcr < recCount; lcr++)
      {
        curRec = XML.getLeafNode(curNdx, lcr);
        subNdx = XML.getChildTag(curRec, "id");
        if (subNdx < 0)
          continue;
        
        curID = XML.m_Nodes[subNdx].Data;
        masterID = XML.m_Nodes[XML.getChildTag(curRec, "mid")].Data;
        optID = XML.m_Nodes[XML.getChildTag(curRec, "optid")].Data;
        textVal = XML.m_Nodes[XML.getChildTag(curRec, "val")].Data;
        eval ("mc"+cid+".insertItem('"+curID+"','"+textVal+"','"+optID+"');");
      }
		}		
	};	
	function DefAgencyID()
	{
    if ($F("id")=="-1" && $("4022"))
    {
      if ($F("4022")=="")
      {
        $("4022").value = g_defAgencyID;
      }
    }
	};
	function getDocumentID()
	{return $F("id");};
	function setDocumentID(newIDVal)
	{
          $("id").value = newIDVal;
          $("rec_id").value = newIDVal;
          $("action").value = "upd";
          
          tabNdx = getActiveTab();
          if( tabNdx > -1)
          {
            tabName = top.docTabArray[tabNdx].tabName;
            arr = tabName.split("_");
            newTabID = "";
            if(arr.length == 2)
              newTabID = arr[0] + "_" + newIDVal;
            else
            {
              xi = 0;
              for (xi = 0; xi < arr.length-1; xi++)
                newTabID += arr[xi] + "_";
              newTabID += newIDVal;
            }
            tabEl = top.$(tabName);
            tabEl.id = newTabID;
            top.docTabArray[tabNdx].tabName = newTabID;
            
            tabEl = top.$(tabName + "_spacer");
            tabEl.id = newTabID + "_spacer";
            
            contentNode = top.docTabArray[tabNdx].contentNode;
            arr = contentNode.split("_");
            newTabID = "";
            if(arr.length == 2)
              newTabID = arr[0] + "_" + newIDVal;
            else
            {
              xi = 0;
              for (xi = 0; xi < arr.length-1; xi++)
                newTabID += arr[xi] + "_";
              newTabID += newIDVal;
            }
            tabEl = top.$(contentNode);
            tabEl.id = newTabID;
            top.docTabArray[tabNdx].contentNode = newTabID;
          }
        };
	function updateInfoBox(captionText, infoText, show)
	{
		if ($('infoBoxArea').style.display != show && show=="block")
                {
                 $('infoBoxArea').style.left = "5px";
                 $('infoBoxArea').style.top = "5px";
                }
		$('infoBoxText').innerHTML = infoText;
		$('infoCaptionText').innerHTML = captionText;
		$('infoBoxArea').style.display = show;
	};
        function closeInputArea()
        {
		$('infoBoxArea').style.display = "none";
        };
        function saveAnyway()
        {
         SubmitData(false, "&ignoreVals=true");
        };
	function SubmitData(doPrint, extraOpts)
	{
          if ($("isreadonly"))
          {
            if (doPrint)
            {
              docID = getDocumentID();
              if (toInt(docID) > 0)
              {
                postData = "wproc.cgi?action=go&id=" + docID + "&dest=IncidentReport";
                top.OpenDocument(postData, "incidentreport", "Incident Report", "IncReport");
                return;
              }
            }
            alert("You do not have permission to save this record!");
            return;
          }
          if ($('defaults_mode').value == '1')
          {
            if (!extraOpts)
               extraOpts = "";
            if (extraOpts.indexOf("&ignoreVals=true") < 0)
               extraOpts += "&ignoreVals=true";
            newName = "";
            newName = prompt("Please enter a name for the new default record", $FV('defaults_name'));
            newName = newName.trim();
            if (newName == "")
            {
              alert("You must specify a name for the default record!");
              return;
            }
            $('defaults_name').value = newName;
          }
          if (doPrint == null)
             doPrint = false;
          if (!extraOpts)
             extraOpts = "";
          if (conDefaults)
            conDefaults.evaluate();
          PostData = BuildSubmit();
          if (doPrint == true)
             PostData += "&print=true";
          PostData += extraOpts;

	  updateInfoBox("Please Wait...", "Your data is being saved.", "block");

	  var myAjax = new Ajax.Request(
			"wproc.cgi",
			{
				method: 'post',
				parameters: PostData,
				onComplete: ResponseHandler
			});
	};
	function BuildDetailXML()
	{
		HiddenEl = $("LFValues");
		if (!HiddenEl)
			return;
		XML.createNewXML();
		XML.openTag("LFDATA");
		for (i = 0; i < CurData.length; i++)
		{
			Attribs = new Array (0);

			for (j = 0; j < CurData[i].Rows.length; j++)
			{
				len = Attribs.length;
				Attribs.splice(0, len);//clear the attribs

				Attrib = "MASTERID='" + CurData[i].MasterRow + "'";
				Attribs.push(Attrib);
				Attrib = "MASTERTABLE='" + CurData[i].MasterTable + "'";
				Attribs.push(Attrib);
				Attrib = "TABLENAME='" + CurData[i].TableName + "'";
				Attribs.push(Attrib);
				Attrib = "ROWID='" + CurData[i].Rows[j].RowID + "'";
				Attribs.push(Attrib);

				//Build field data
				XML.openTag("LFENTRY", Attribs);
				for (k = 0; k < CurData[i].Rows[j].Fields.length; k++)
					XML.putTag("T" + CurData[i].Rows[j].Fields[k].FldName, CurData[i].Rows[j].Fields[k].FldValue);
				//Build check tree data
				Holder = CurData[i].TableName;
				RealTableID = Holder.substr(2);
				for (k=0; k < CTManager.checkTrees.length; k++)
				{
					if (CTManager.checkTrees[k].tableID == RealTableID &&
						CTManager.checkTrees[k].recordID == CurData[i].Rows[j].RowID)
					{
						for (pmp = 0; pmp < CTManager.checkTrees[k].optionIDs.length; pmp++)
						{
							val = $("Sub_" + CTManager.checkTrees[k].optionIDs[pmp]).getAttribute("value");
							valArr = val.split("|");
							val = valArr[1];
							valArr = val.split("_");
							//put a tag like this <fieldID>fieldValue</fieldID>
							XML.putTag("T" + CTManager.checkTrees[k].controlID, valArr[2]);
						}
						CTManager.checkTrees[k].m_Processed = true;
					}
				}
				XML.openTag("SUB");
				//TODO. Add sub list and fields data here. The data should be formatted the same as above, recursively.
				XML.closeTag();
				XML.closeTag();

			}
		}
		XML.closeTag();
		HiddenEl.value = XML.m_XMLBuf;
	};
	function BuildSubmit()
	{
		DaForm = $("webform1");
		if (!DaForm)
			return;
		BuildDetailXML();
		retVal = Form.serialize($('webform1'));
		CTposts = CTManager.buildPostString(-1);
		if (CTposts.length > 0)
		{
			if (retVal.length > 0)
				retVal += "&" + CTposts;
			else
				retVal = CTposts;
		}
		retVal += "&ListAndFields=" + XML.m_XMLBuf;
		retVal += "&MultiCombo=";
		mcxml = "";
		for (jki = 0; jki < mcArray.length; jki++)
      mcxml += mcArray[jki].getXML();
		if (mcxml != "")
		{
      mcxml = "<?xml version=\"1.0\"?><outer>" + mcxml +"</outer>";
      mcxml = mcxml.replace(/>/g, "*gt;");
      mcxml = mcxml.replace(/</g, "*lt;");
      mcxml = mcxml.replace(/%/g, "*pt;");      
      mcxml = mcxml.replace(/=/g, "*eq;");
      retVal += mcxml;
    }
		return retVal;
	};
	var prevElmt;
	function focusField(ElID)
	{
		if (prevElmt)
			prevElmt.style.backgroundColor = "white";
		elmt = $("CTButton_" + ElID);
		if (elmt)
		{
			prevElmt = elmt;
			elmt.focus();
			elmt.style.backgroundColor = "#9999ff";
			return;
		}
		elmt = $("CButton_" + ElID);
		if (elmt)
		{
			prevElmt = elmt;
			elmt.focus();
			elmt.style.backgroundColor = "#9999ff";
			return;	
		}
		elmt = $("'" + ElID + "'");
		if (elmt)
		{
			prevElmt = elmt;
			elmt.focus();
			elmt.style.backgroundColor = "#9999ff";
			return;	
		}
	};
var newDocID = 0;
function DocResponseHandler(response)
{
/*
<xml>
<newtabdoc>
<status>E/S</status>
<msg><msg>...</msg></msg>
<tabname>...</tabname>
<tabtitle>...</tabtitle>
<contentnodename>...</contentnodename>
<content>......</content>
</newtabdoc>
*/
  xmlData = response.responseText;
  ParseXML(xmlData);
  XML.resetCurrentNode();
  rootNdx = XML.getCurrentTag();
  ndx = XML.getChildTag(rootNdx, "status");

  if (XML.m_Nodes[ndx].Data == "E")
  {
   ndx = XML.getChildTag(rootNdx, "msg");
   ndx = XML.getChildTag(ndx, "msg");
   updateInfoBox("Error!", XML.m_Nodes[ndx].Data, "block");
   return;
  }
  if (XML.m_Nodes[ndx].Data == "S")
  {
   ndx = XML.getChildTag(rootNdx, "tabname");
   newTabName = XML.m_Nodes[ndx].Data;
   ndx = XML.getChildTag(rootNdx, "tabtitle");
   newTabTitle = XML.m_Nodes[ndx].Data;
   ndx = XML.getChildTag(rootNdx, "contentnodename");
   newContNode = XML.m_Nodes[ndx].Data;
   ndx = XML.getChildTag(rootNdx, "content");
   newContent = XML.m_Nodes[ndx].Data;

   $('dynamicContentArea').innerHTML += newContent;
   newTab = addNewTab(newTabName, newTabTitle, newContNode);
   if (newTab != null)
      focusTab(newTab);
   return;
  }
};

function getVisibleIframe()
{
  var objIframes=top.document.getElementsByTagName('iframe');
  for ( m = 0; m< objIframes.length; m++ )
  {
    var objStyle=document.body.currentStyle? objIframes[m].currentStyle.display : getComputedStyle(objIframes[m],null).getPropertyValue('display');
    if(objStyle == "block")
    {
     return m;
    }
  }
  return -1;
};

function tb_savedata ()
{
 elNdx = getVisibleIframe();
 if (elNdx < 0)
 {
   alert("Failed to find the visible frame!");
   return;
 }
 top.window.frames[elNdx].SubmitData();
};

function tb_printincident ()
{
  elNdx = getVisibleIframe();
  if (elNdx < 0)
   {
     alert("Failed to find the visible frame!");
     return;
   }
  top.window.frames[elNdx].SubmitData(true);
};
function tb_doSearch()
{
 elNdx = getVisibleIframe();
 if (elNdx < 0)
 {
   alert("Failed to find the visible frame!");
   return;
 }
 if ( top.window.frames[elNdx].bSearch)
    top.window.frames[elNdx].bSearch.submitSearch();
 if ( top.window.frames[elNdx].submitSearch)
    top.window.frames[elNdx].submitSearch();
};

function tb_doCount()
{
 elNdx = getVisibleIframe();
 if (elNdx < 0)
 {
   alert("Failed to find the visible frame!");
   return;
 }
 if ( top.window.frames[elNdx].bSearch)
    top.window.frames[elNdx].bSearch.submitCount();
 if ( top.window.frames[elNdx].submitCount)
    top.window.frames[elNdx].submitCount();
};

function tb_doExport()
{
 elNdx = top.getVisibleIframe();
 if (elNdx < 0){
   alert("Failed to find the visible frame!");
   return;
 }
 if ( top.window.frames[elNdx].bSearch){
    top.window.frames[elNdx].bSearch.exportNEMSIS();
    return;
 }
 if ( top.window.frames[elNdx].exportNEMSIS){
    if (top.window.frames[elNdx].IsNEMSISExportable)
      top.window.frames[elNdx].exportNEMSIS();
    return;
 }
};

function exportNEMSISHandler(response)
{  
};

function exportNEMSIS()
{
  tName = IsNEMSISExportable();
  if (tName == ""){
    alert("Only a full incident or information from the agency screen may be exported to NEMSIS format.");
    return;
  }
  if (toInt(getDocumentID())<=0){
    alert("You must save this data before it may be exported.");
    return;
  }
  
    PostData = "wproc.cgi?action=go&searchvars=<?xml version='1.0'?><QUERY MODE='ALL'><NAT_INCIDENT><ID OP='EQ'>"+getDocumentID()+"</ID></NAT_INCIDENT></QUERY>&dest=ExportNEMSIS";
    top.OpenDocument(PostData, 'NEMSISExport', 'NEMSIS Export', 'NExportNode');
};

function exportCSV()
{
  alert ("coming soon");
};
function tbHandlerRegister(tabName, tabID, newTab)
{
  if (newTab.handlerArray.length > 0)//handlers already registered
     return;

  if (tabName == "incident" || tabName == "agency" ||
     tabName == "personnel" || tabName == "facility" ||
     tabName == "vehicles" || tabName == "zones" ||
     tabName == "defIncident" ||
     tabName == "defProcedure" ||
     tabName == "defInsurance" ||
     tabName == "defPriorAid" ||
     tabName == "defMedication" ||
     tabName == "defAssessment" ||
     tabName == "procedures" ||
     tabName == "protocols" ||
     tabName == "states")
  {
    newTab.handlerArray.push(new tbHandler("tb_save", tb_savedata));
  }

  if (tabName == "advancedsearch" || tabName == "basicsearch")
  {
    newTab.handlerArray.push(new tbHandler("tb_search", tb_doSearch));
    newTab.handlerArray.push(new tbHandler("tb_count", tb_doCount));
    newTab.handlerArray.push(new tbHandler("tb_export", tb_doExport));
  }

  if (tabName == "incident")
  {
    newTab.handlerArray.push(new tbHandler("tb_print", tb_printincident));
    newTab.handlerArray.push(new tbHandler("tb_export", tb_doExport));
  }

};

function OpenDocument(PostData, tabName, tabTitle, contentNode, docID)
{
  if (docID == null)
   docID = newDocID--;
  dynCont = $('dynamicContentArea');
  if (!dynCont)
     return;
  uniqueTabName = tabName + "_" + docID;
  uniqueContent = contentNode + "_" + docID;

  newTab = addNewTab(uniqueTabName, tabTitle, uniqueContent);
  if (newTab == null)
     return;

  newEl = document.createElement("iframe");
  newEl.setAttribute("ID", uniqueContent);
  newEl.setAttribute("src", PostData);
  newEl.setAttribute("width", "100%");
  newEl.setAttribute("frameborder", "0");

  ht =window.innerHeight-dynCont.offsetTop;
  newEl.setAttribute("height", ht+"px");
  dynCont.appendChild(newEl);

  if (newTab)
  {
    tbHandlerRegister(tabName, docID, newTab);
     focusTab($(uniqueTabName));
  }

/* var myRequest = new Ajax.Request(
     "wproc.cgi",
     {
      method: 'post',
      parameters: PostData,
      onComplete: DocResponseHandler
     });*/

};

function mask(EditID, loc, delim, e)
{
  var KC = 0;
  if (navigator.appName == "Microsoft Internet Explorer")
    KC = e.keyCode;
  if (navigator.appName == "Netscape")
     KC = e.which;
  switch (KC)
  {
   case 8:
   case 9:
   case 37:
   case 38:
   case 39:
   case 40:
   case 46:
   return;
  }
  if (EditID == "")
     return;
  var Edit = $(EditID);
  var str = Edit.value;
  var locs = loc.split('|');
  var delims = delim.split('|');
  for (var i = 0; i <= locs.length; i++)
  {
      for (var k = 0; k <= str.length; k++)
      {
          curChar = str.substring(k, k+1);
          if ((curChar >= 'a' && curChar <= 'z') ||
             (curChar >= 'A' && curChar <= 'Z'))
          {
             str = str.slice(0, k-1);
             k--;
             continue;
          }
          if (k == locs[i] && str.substring(k, k+1) != delims[i])
             str = str.substring(0,k) + delims[i] + str.substring(k,str.length);
      }
  }
  Edit.value = str;
};
function defaultDate(elID)
{
  if ($("isreadonly"))
     return;
  if ($(elID).disabled == true)
    return;
  Today = new Date();
  month = Today.getMonth()+1;
  day = Today.getDate();
  year = Today.getFullYear();
  hour = Today.getHours();
  minute = Today.getMinutes();
  if (toInt(month) < 10) month = "0" + month;
  if (toInt(day) < 10) day = "0" + day;
  if (toInt(year) < 10) year = "0" + year;
  if (toInt(hour) < 10) hour = "0" + hour;
  if (toInt(minute) < 10) minute = "0" + minute;
  timeStr = month + '/' + day + '/' + year  + ' ' + hour + ':' + minute;
  $(elID).value = timeStr;
  fillIncidentDate();
  if ($(elID).onblur)
    $(elID).onblur();
};

function putFipsNode(elID, nodeTxt)
{
 Attribs = new Array (0);
 Attrib = "";

 Attrib = "ctrlid='" + elID+ "'";
 Attribs.push(Attrib);
 curVal = "";
 if ($(elID)) curVal = $F(elID);
 XML.putTag(nodeTxt, curVal, Attribs);
 Attribs.splice(0, 1);
};
function doFips(stateEl, countyEl, cityEl, zipEl, e)
{
  if (!e)
     e=window.event;
  targetEl = e.target || e.srcElement;

  if (targetEl.value ==  g_CurACVal)
  {
    g_CurACVal = "";
    return;
  }
  if (targetEl.value == "")
    return;
 request = "action=lookupfips";
 XML.createNewXML();
 XML.openTag("fipslookup");

 putFipsNode(stateEl, "state");
 putFipsNode(countyEl, "county");
 putFipsNode(cityEl, "city");
 putFipsNode(zipEl, "zip");

 XML.closeTag();

 request += "&fipsquery=";
 request += XML.m_XMLBuf;
 rq = request;
 showNotifyBanner("Performing location lookup", true);
 var fipsAjax = new Ajax.Request(
		"wproc.cgi",
		{
			method: 'post',
			parameters: rq,
			onComplete: handleFipsResponse
		});
};

function fillFipsControl(ndx2)
{
  h = 0;
  html = "";
  controlID = XML.m_Nodes[ndx2].getAttribute("ctrlid");
  if (!$(controlID))
     return;
  leafCount = XML.getLeafCount(ndx2);
  for (h = 0; h < leafCount; h++)
  {
   childNdx = XML.getLeafNode(ndx2, h);
   html += "<div onclick=\"javascript:SetText('" + controlID + "', this);\">" + XML.m_Nodes[childNdx].Data + "</div>";
  }
  html += "<div onclick=\"javascript:SetText('" + controlID + "', this)\">Not Applicable</div>";
  html += "<div onclick=\"javascript:SetText('" + controlID + "', this)\">Not Available</div>";
  html += "<div onclick=\"javascript:SetText('" + controlID + "', this)\">Not Known</div>";
  html += "<div onclick=\"javascript:SetText('" + controlID + "', this)\">Not Recorded</div>";
  html += "<div onclick=\"javascript:SetText('" + controlID + "', this)\">Not Reporting</div>";
  if (leafCount == 1)
  {
    childNdx = XML.getLeafNode(ndx2, 0);
    $(controlID).value = XML.m_Nodes[childNdx].Data;
  }
  controlID = "drop"+controlID;
  $(controlID).innerHTML = html;
  if (leafCount+5 > 20)
     $(controlID).style.height = "300px";
  else
     $(controlID).style.height = "auto";
};

function handleFipsResponse(response)
{
  showNotifyBanner("", false);
  xmlData = response.responseText;
  ParseXML(xmlData);
  XML.resetCurrentNode();
  rootNdx = XML.getCurrentTag();
  ndx2 = XML.getChildTag(rootNdx, "states");
  fillFipsControl(ndx2);
  ndx2 = XML.getChildTag(rootNdx, "counties");
  fillFipsControl(ndx2);
  ndx2 = XML.getChildTag(rootNdx, "cities");
  fillFipsControl(ndx2);
  ndx2 = XML.getChildTag(rootNdx, "zips");
  fillFipsControl(ndx2);
};

var g_CurACVal = "";
function saveComp(elName)
{
 g_CurACVal = $FV(elName);
};

function $FV(elID)
{
 if (!$(elID))
    return "";
 return $F(elID);
};

function setComboSelByText(elId, txt)
{
	el = $(elId);
	if (!el) return;
	for(ph = 0; ph < el.options.length; ph++)
	{
		if (el.options[ph].text == txt)
		{
			el.value = el.options[ph].value;
			if ($('CButton_'+elId))
                           $('CButton_'+elId).value = txt;
			return;
		}
	}
};

function setComboSelByID(elId, IDValue)
{
         if (!$('CButton_'+elId))
            return;
	el = $(elId);
	if (!el) return;
	for(ph = 0; ph < el.options.length; ph++)
	{
		if (el.options[ph].value == IDValue)
		{
			el.value = IDValue;
                        $('CButton_'+elId).value = el.options[ph].text;
			return;
		}
	}
};

function narrativeResponse(response)
{
  showNotifyBanner("", false);
  xmlData = response.responseText;
  ParseXML(xmlData);
  XML.resetCurrentNode();
  rootNdx = XML.getCurrentTag();
  ndx = XML.getChildTag(rootNdx, "status");
  if (XML.m_Nodes[ndx].Data == "S")
  {
	ndx = XML.getChildTag(rootNdx, "body");//id of the saved record
        $($('narrativeID').value).value = XML.m_Nodes[ndx].Data;
        return;
  }
  else
  {
   alert("Error while trying to generate narrative!");
  }
};
function genNarrative()
{
 curNar = $F($('narrativeID').value);
 if (curNar != "")
 {
   ConfirmChoice = confirm("Building a narrative will overwrite the current narrative. Do you still want to proceed?");
   if (ConfirmChoice != true)
      return;
 }
PostData = BuildSubmit();
PostData = "action=narrative&" + PostData;
showNotifyBanner("Building narrative", true);
var fipsAjax = new Ajax.Request(
		"wproc.cgi",
		{
			method: 'post',
			parameters: PostData,
			onComplete: narrativeResponse
		});
};
function setValFromXML(fldName)
{
  ndx2 = XML.getChildTag(rootNdx, fldName);
  if (ndx2 < 0)
    return;
  elID = XML.m_Nodes[ndx2].getAttribute("ctrlid");
  if (!$(elID))
     return;
  Dat = XML.m_Nodes[ndx2].Data;     
  if ($('CButton_'+elID))
  {
    setComboSelByID(elID, Dat);
    return;
  }
  if (fldName=="facilityid")
     return;
  Dat = Dat.replace("{amp;}", "&");
  $(elID).value = Dat;
  if (Dat == "-5")
     $(elID).value = "Not Available";
  if (Dat == "-10")
     $(elID).value = "Not Known";
  if (Dat == "-15")
     $(elID).value = "Not Reporting";
  if (Dat == "-20")
     $(elID).value = "Not Recorded";
  if (Dat == "-25")
     $(elID).value = "Not Applicable";
};
function facilityResponse(response)
{
  showNotifyBanner("", false);
  xmlData = response.responseText;
  ParseXML(xmlData);
  XML.resetCurrentNode();
  rootNdx = XML.getCurrentTag();
  setValFromXML("facility");
  setValFromXML("facilityid");
  setValFromXML("code");
  setValFromXML("address");
  setValFromXML("address2");
  setValFromXML("city");
  setValFromXML("state");
  setValFromXML("county");
  setValFromXML("zip");
  setValFromXML("type");
};
function putFacilityNode(nodeName, ctrlID, nodeTxt)
{
 Attribs = new Array(0);
 Attribs.push("ctrlid='" + ctrlID + "'");
 XML.putTag(nodeName, nodeTxt, Attribs);
 Attribs.splice(0, 1);
};
function LookupFacility (facEl, codeEl, addressEl, address2El, cityEl, stateEl, countyEl, zipEl, typeEl, targetID)
{
curNar = $F($('narrativeID').value);

facText = "";
codeText = "";
if (targetID == facEl)
 facText = $FV(facEl);
else
 codeText = $FV(codeEl);

XML.createNewXML();
XML.openTag("facilitylookup");
 putFacilityNode("facility", facEl, facText);
 putFacilityNode("code", codeEl, codeText);
 putFacilityNode("address", addressEl, "");
 putFacilityNode("address2", address2El, "");
 putFacilityNode("city", cityEl, "");
 putFacilityNode("state", stateEl, "");
 putFacilityNode("county", countyEl, "");
 putFacilityNode("zip", zipEl, "");
 putFacilityNode("type", typeEl, "");
XML.closeTag();

xmlDat = XML.m_XMLBuf;
xmlDat = xmlDat.replace("&", "{amp;}");
PostData = "action=facilitylookup&query=" + xmlDat;
showNotifyBanner("Performing facility lookup", true);
var facAjax = new Ajax.Request(
		"wproc.cgi",
		{
			method: 'post',
			parameters: PostData,
			onComplete: facilityResponse
		});
};
function doFire(objID)
{
    var newEvt = document.createEventObject();
    newEvt.button = 3;
    document.all(objID).fireEvent("onclick", newEvt);
    // don't let button clicks bubble
    event.cancelBubble = true;
};

function doSelChg(keyCode, len)
{
 if (keyCode == 38)
 {
   g_ctSelNdx--;
   if (g_ctSelNdx < 1) g_ctSelNdx++;
 }
 if (keyCode == 40)
 {
   g_ctSelNdx++;
   if (g_ctSelNdx > len) g_ctSelNdx--;
 }
};
function adjustCTSel(keyCode, el)
{
 arr = el.id.split("_");
 parEl = el;
 if (arr[0] == "Sub")
    parEl = el.parent;

 oldNdx = g_ctSelNdx;
 doSelChg(keyCode, parEl.childNodes.length);

 if (oldNdx >= 0 && oldNdx < parEl.childNodes.length)
    parEl.childNodes[oldNdx].style.backgroundColor = "white";
 if (g_ctSelNdx >= 0 && g_ctSelNdx < parEl.childNodes.length)
 {
   parEl.childNodes[g_ctSelNdx].focus();
   parEl.childNodes[g_ctSelNdx].style.backgroundColor = "#cfcfff";
 }
};
function adjustACSel(keyCode, el2)
{
 oldNdx = g_ctSelNdx;
 doSelChg(keyCode, el2.childNodes.length);
 if (oldNdx >= 0 && oldNdx < el2.childNodes.length)
  el2.childNodes[oldNdx].style.backgroundColor = "white";
 if (g_ctSelNdx >= 0 && g_ctSelNdx < el2.childNodes.length)
  el2.childNodes[g_ctSelNdx].style.backgroundColor = "#cfcfff";
};
function combokd(e)
{
 if (!e)
    e=window.event;
  keyCode = e.keyCode || e.which;
  if (keyCode == 9)
  return true;

  targetEl = e.target || e.srcElement;
  arr = targetEl.id.split("_");
  if (keyCode == 40)
  {
    DropEl = $("drop"+targetEl.id);
    if (DropEl)
       ShowDropdown(DropEl.id);
    if (arr.length >= 1)
    {
      if (arr[0] == "CTButton")
      {
        targetEl.onclick();
      }
      else
      {
        DropEl = $(arr[1]);
        if (DropEl)
           toggleCombo(DropEl.id);
      }
    }
  }
  if (keyCode == 38 || keyCode == 40)
  {
    if (arr[0] == "branch" || arr[0] == "Sub")
       adjustCTSel(keyCode, targetEl);
    DropEl = $("drop"+targetEl.id);
    elname = targetEl.id;
    elname = elname.substr(0, 5);
    if (elname == "drop_")    
      return false;
    elname = elname.substr(0, 4);
    if (elname == "drop")
       DropEl = targetEl;
    if (DropEl)
       adjustACSel(keyCode, DropEl);
  }
  if (keyCode == 32)
  {
   if (arr[0] == "branch")
      targetEl.childNodes[g_ctSelNdx].onclick();
   if (arr[0] == "Sub")
      targetEl.onclick();
  }
  if (keyCode == 13)
  {
    DropEl = $("drop"+targetEl.id);
    elname = targetEl.id;
    elname = elname.substr(0, 4);
    if (elname == "drop")
       DropEl = targetEl;
   if (DropEl)
   {
     if (DropEl.childNodes[g_ctSelNdx])
        if (DropEl.childNodes[g_ctSelNdx].onclick)
           DropEl.childNodes[g_ctSelNdx].onclick();
   }
   toggleCombo(targetEl.id);
  }
  if(arr.length > 0)
   if (arr[0] == "CButton" || arr[0] == "CTButton")
    return false;
  return true;
};

var g_prevElColor = new Array(0);
var g_flashEls = new Array(0);
function flashPrevColor()
{
  el = g_flashEls[0];
  el.style.backgroundColor = g_prevElColor[0];
  g_flashEls.splice(0, 1);
  g_prevElColor.splice(0, 1);
};
var g_prevErrElement;
function getTabNdx(elID)//Finds which tab the element is located on.
{
  curEl = $(elID);
  if (!curEl)
    curEl = $('CButton_'+elID);
  if (!curEl)
    curEl = $('CTButton_'+elID);
  if (!curEl)
    return -1;
  while(curEl)
  {
    parElID = curEl.id;
    if (parElID == null)
       return -1;
    if (!parElID.split)
       return -1;
    if (parElID != "")
    {
      idArr = parElID.split("_");
      if (idArr[0] == "tab")
         return toInt(idArr[1]);
    }
    curEl = curEl.parentNode;
  }
  return -1;
};
function focusFld(elID, e)
{
  if (!e)
     e = window.event;
  targetEl = e.target || e.srcElement;
  if (g_prevErrElement)
     g_prevErrElement.style.backgroundColor = "#efefef";
  targetEl.style.backgroundColor = "#b8bbff";
  g_prevErrElement = targetEl;
 el = $('CButton_'+elID);
 if (!el)
    el = $('CTButton_'+elID);
 if (!el)
    el = $(elID);
 tabNdx = getTabNdx(elID);
 if (tabNdx > -1)
    $('mainTabber').tabber.tabShow(tabNdx);

 el.focus();
 prevElColor = el.style.backgroundColor;
 if (prevElColor == "#b8bbff" ||
    prevElColor == "rgb(184, 187, 255)")
    return;
 el.style.backgroundColor = "#b8bbff";
 g_flashEls.push(el);
 g_prevElColor.push(prevElColor);
 setTimeout("flashPrevColor()", 700);
};
function confirmExit()
{
  var objIframes=document.getElementsByTagName('iframe');
  alertSave = false;
  for ( m = 0; m< objIframes.length; m++ )
  {
    if ( window.frames[m].BuildSubmit)
    {
     curSubmittal =  window.frames[m].BuildSubmit();
     if (curSubmittal !=  window.frames[m].XMLSubmittalData)
     {
       alertSave = true;
       break;
     }
    }
  }
  if (!alertSave)
    return;
  if (top.docTabArray.length > 0)
    return "You still have open documents, possibly unsaved.";
};
function getQBTableName()
{
 return "NAT_INCIDENT";
};
function advancedSearch(xmlQueryString)
{
    top.OpenDocument('wproc.cgi?action=srch&dest=IncidentsToday&searchvars=' + xmlQueryString, 'advancedsearchresults', 'Incident Search Results', 'SearchResultsNode');
};
function advancedCount(xmlQueryString, path)
{
    PostData = "action=count&searchvars=" + xmlQueryString;
    var countAjax = new Ajax.Request(
		path+"wproc.cgi",
		{
			method: 'post',
			parameters: PostData,
			onComplete: countHandler
		});
};
function fetchCrewLevel(e)
{
  if (!e)
     e=window.event;
  targetEl = e.target || e.srcElement;
  PostData = "action=fetchcrewlevel&searchvars=" + targetEl.value;
  showNotifyBanner("Performing crew member level lookup", true);
  var countAjax = new Ajax.Request(
  "wproc.cgi",
  {
    method: 'post',
    parameters: PostData,
    onComplete: crewLevelHandler
  });  
};

function getLastValidAssessment(tIndex)
{
  rci = 0;
  for (rci = CurData[tIndex].Rows.length-1; rci >= 0; rci--)
  {
    curRowID = CurData[tIndex].Rows[rci].RowID.toString();
    doDel = curRowID.substr(0, 1);
    if (doDel == "D")
      continue;
     return rci;
  }
  return -1;
};
function copyAssessment()
{
  tableID = getAssessmentTableID();
  tIndex = FindTable(tableID);
  if (tIndex < 0)
    return;
  oldRowNdx = getLastValidAssessment(tIndex);
  if (oldRowNdx < 0)
    return;
  GetFieldValues(tableID);    
  AddRecord(tableID);
  rowNdx = CurData[tIndex].Rows.length-1;
  if (rowNdx==oldRowNdx)
    return;
  fi = 0;
  for (fi = 0; fi < CurData[tIndex].Rows[oldRowNdx].Fields.length; fi++)
    CurData[tIndex].Rows[rowNdx].Fields[fi].FldValue = CurData[tIndex].Rows[oldRowNdx].Fields[fi].FldValue;
  RowName = tableID + "R" + CurData[tIndex].Rows[rowNdx].RowID;
  RowName = RowName.replace("-", "");
  OldRow = CurRow;
  CurRow = RowName;
  SetFieldValues(tableID);

  RealTableID = tableID.substr(2);
  for (fi = 0; fi < CurData[tIndex].Rows[oldRowNdx].Fields.length; fi++)
  {
    ctEl = $('CTButton_'+CurData[tIndex].Rows[oldRowNdx].Fields[fi].FldName);
    if (ctEl)
    {
      CTManager.copyCheckTree(CurData[tIndex].Rows[oldRowNdx].Fields[fi].FldName,
                              RealTableID,
                              CurData[tIndex].Rows[oldRowNdx].RowID,
                              CurData[tIndex].Rows[rowNdx].Fields[fi].FldName,
                              RealTableID,
                              CurData[tIndex].Rows[rowNdx].RowID);
      CTManager.checkEntries(CurData[tIndex].Rows[rowNdx].Fields[fi].FldName,
                RealTableID,
                CurData[tIndex].Rows[rowNdx].RowID,
                true);
    }
  }
  SetRowFieldData(tableID);
};

function createCopyAssessment()
{
  parEl = $(getAssessmentTableID());
  if (!parEl)
    return;
  parEl = parEl.parentNode;
  parEl = parEl.parentNode;
  newDiv = document.createElement('div');  
  newLink = document.createElement('a');
  newLink.setAttribute('href', 'javascript:copyAssessment()');
  newLink.appendChild(document.createTextNode('Copy the last assessment'));
  newDiv.appendChild(newLink);
  parEl.appendChild(newDiv);
};
var g_NotifyBanner = null;
function showNotifyBanner(bMsg, show)
{
  if (g_NotifyBanner==null)
  {
   g_NotifyBanner = document.createElement("div");
   if (navigator.appName == "Microsoft Internet Explorer")
        g_NotifyBanner.setAttribute("className", "notifyBanner");
   else
        g_NotifyBanner.setAttribute("class", "notifyBanner");
   document.body.appendChild(g_NotifyBanner);
  }
  if (show == true)
  {
   g_NotifyBanner.style.display = "block";
   g_NotifyBanner.innerHTML = bMsg + "<img src='images/elipsisTicker.gif'/>";
  }
  else
  {
   g_NotifyBanner.style.display = "none";
   g_NotifyBanner.innerHTML = "";
  }
};
function doAgeRound(ageVal)
{
 return ageVal - (ageVal % 1);
};
function point()
{
  this.x = 0;
  this.y = 0;
};
function getMouseXY(e)
{
 pnt = new point();
 if (e.pageX || e.pageY)
 {
   pnt.x = e.pageX;
   pnt.y = e.pageY;
 }
 else if (e.clientX || e.clientY)
 {
   pnt.x = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
   pnt.y = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
 }
 return pnt;
};
function ntHandler(response)
{
		xmlData = response.responseText;
		top.ParseXML(xmlData);
		top.XML.resetCurrentNode();
		rootNdx = top.XML.getCurrentTag();
		ndx = top.XML.getChildTag(rootNdx, "status");
		if (top.XML.m_Nodes[ndx].Data == "E")
		{
			ndx = top.XML.getChildTag(rootNdx, "msg");
			ndx = top.XML.getChildTag(ndx, "msg");
			alert(top.XML.m_Nodes[ndx].Data);
			return;
		}
		if (top.XML.m_Nodes[ndx].Data == "S")
		{
                        $(getNeedsTransmissionID()).checked = true;
			return;
		}
};
function confirmNeedsTransmission()
{
  if ($('defaults_mode').value == '1')
     return;
  if (!($(getNeedsTransmissionID())))
     return;
  if ($(getNeedsTransmissionID()).checked==true)
     return;
  if (confirm("Would you like to mark this incident for transmission?"))
  {
    PostData = "action=marktrans&tabid=" + $("id").value;
    var countAjax = new Ajax.Request(
		"wproc.cgi",
		{
			method: 'post',
			parameters: PostData,
			onComplete: ntHandler
		});
  }
};
function InitHighlights()
{
 curForm = $("webform1");
 for (ei = 0; ei < curForm.elements.length; ei++)
 {
   if (curForm.elements[ei].type=="text" ||
       curForm.elements[ei].type=="password")
   {
     curForm.elements[ei].addEventListener("focus", hf, false);
     curForm.elements[ei].addEventListener("blur", hb, false);
   }
 }
};

function hf(e)
{
  if (!e)
    e = window.event;
  targetEl = e.target || e.srcElement;
  targetEl.style.backgroundColor = "#DEE1F7";
  targetEl.focus();
};
function hb(e)
{
  if (!e)
    e = window.event;
  targetEl = e.target || e.srcElement;
  targetEl.style.backgroundColor = "#ffffff";
};
function addOpt(el, text, val)
{$(el).options[$(el).length] = new Option(text, val);};
function defSSNHandler(response)
{
  showNotifyBanner("", false);
  xmlData = response.responseText;
  ParseXML(xmlData);
  XML.resetCurrentNode();
  rootNdx = XML.getCurrentTag();
  setValFromXML("last_name");
  setValFromXML("first_name");
  setValFromXML("mid_name");
  setValFromXML("address");
  setValFromXML("address2");
  setValFromXML("city");
  setValFromXML("county");
  setValFromXML("state");
  setValFromXML("zip");
  setValFromXML("country");
  setValFromXML("gender");
  setValFromXML("race");
  setValFromXML("ethnicity");
  setValFromXML("dob");
  setValFromXML("phone");
  setValFromXML("dl_state");
  setValFromXML("dl_number");
  calcPatAge();
};
function defaultPatFromSSN(el)
{
  xmlDat = XML.m_XMLBuf;
  xmlDat = xmlDat.replace("&", "{amp;}");  
  showNotifyBanner("Looking up patient info", true);
    PostData = "action=defssn&defvalues=" + el.value;
    var countAjax = new Ajax.Request(
		"wproc.cgi",
		{
			method: 'post',
			parameters: PostData,
			onComplete: defSSNHandler
		});
};
function defVehLicHandler(response)
{
  showNotifyBanner("", false);
  xmlData = response.responseText;
  ParseXML(xmlData);
  XML.resetCurrentNode();
  rootNdx = XML.getCurrentTag();
  setValFromXML("vehicle_lic");
};
function defVehLic(sel_el)
{
  showNotifyBanner("Looking up vehicle license", true);
    PostData = "action=defvehlic&defvalues=" + sel_el.value;
    var countAjax = new Ajax.Request(
		"wproc.cgi",
		{
			method: 'post',
			parameters: PostData,
			onComplete: defVehLicHandler
		});
};

function testElVal(srcElID)
{
  val = $F(srcElID).trim();
  if (val == "INVALID DATE!")
    return false;
  if (val.length >= 10)
    return true;
  return false;
};

function getSrcDateEl()
{
  for (c = 0; c < g_timeChain.length; c++)
    if (testElVal(g_timeChain[c]) == true)
      return g_timeChain[c];
  return "";
};
function setCaretToEnd (control) {
  if (control.createTextRange) {
    var range = control.createTextRange();
    range.collapse(false);
    range.select();
  }
  else if (control.setSelectionRange) {
    control.focus();
    var length = control.value.length;
    control.setSelectionRange(length, length);
  }
};
var g_oldVal = "";
function defDate(e)
{
  if (!e)
    e = window.event;
  el = e.srcElement || e.target;
  destElId = el.id;
  srcEl = getSrcDateEl(0);
  if (srcEl == "")
    return;
  srcEl = $(srcEl);
  destEl = $(destElId);
  srcVal = srcEl.value.trim();
  destVal = destEl.value.trim();
  if (destVal.length > 0)
    return;
  if (srcVal.length < 10)
    return;
  destVal = srcVal.substr(0, 10);
  destEl.value = destVal;
  
  setTimeout('setCaretToEnd(destEl)', 10);
  g_oldVal = destVal;
};

function resetDate(e)
{
  if (!e)
    e = window.event;
  if (e)
  {
    el = e.srcElement || e.target;
    if (el.value.trim() == g_oldVal)
    {
      el.value = "";
      return;
    }
  }
};
function checkDate(str)
{
  mm = toInt(str.substr(0, 2));
  dd = toInt(str.substr(3, 2));
  year = toInt(str.substr(6, 4));
  valid = false;
  if (mm < 0 || mm > 12)
    return false;
  switch (mm)
  {
  case 1:
  case 3:
  case 5:
  case 7:
  case 8:
  case 10:
  case 12:
    if (dd <= 31)
      valid = true;
  break;
  case 4:
  case 6:
  case 9:
  case 11:
    if (dd <= 30)
      valid = true;    
  break;
  case 2:
    if (year % 4 == 0 && dd <= 29)
      valid = true;
    if (year % 4 != 0 && dd <= 28)
      valid = true;
  break;
  }
  return valid;
};
function checkTime(str)
{
  hh = toInt(str.substr(11, 2));
  mm = toInt(str.substr(14, 2));
  if (hh < 0 || hh > 23)
    return false;
  if (mm < 0 || mm > 59)
    return false;
  return true;
};
function checkDT(e)
{
  if (!e)
    e = window.event;
  if (e)
  {
    el = e.srcElement || e.target;
    dt = el.value.trim();
    if (dt.length <= 0)
      return;
    if (dt.length == 10)
    {
      if (checkDate(dt) == true)
        return;
    }
    if (dt.length == 16)
    {
      if(checkDate(dt) == true && checkTime(dt) == true)
        return;
    }
    el.value = "INVALID DATE!";
    setTimeout("$('"+el.id+"').style.backgroundColor='#FF6363';", 10);
    setTimeout("$('"+el.id+"').value = '';$('"+el.id+"').style.backgroundColor='#ffffff';", 1000);
  }
};