//Copyright ©2009, Grizella Corporation. All Rights Reserved.
var comWebApp = "services";var comTraceMode = false;var comTraceLog = "";var comExceptLog = "";function comTrace(msg) {try {if (!comTraceMode) return;comTraceLog = comTraceLog + "\n" + msg;} catch (e) {alert("JJS00110 " + e);}}function comTraceShow() {if (!comTraceMode) return;var log = "COM TRACE:\n" + comTraceLog;log = log + "\n\nEXCEPTION TRACE:\n" + comExceptLog;document.getElementById("debugTxt").value = log;setOn("debugWin");}function comTraceHide() {if (!comTraceMode) return;setOff("debugWin");}function comTraceClear() {if (!comTraceMode) return;comTraceLog = "";comExceptLog = "";document.getElementById("debugTxt").value = comTraceLog;}function comExceptTrace(msg) {try {if (!comTraceMode) return;comExceptLog = comExceptLog + "\n" + msg;} catch (e) {alert("JJS00109 " + e);}}function comExceptionCatch(code, e) {comSysError(new comErrorResp(code, e));}function comSysError(resp) {comExceptTrace(resp.code + " -> " + resp.techMsg + " " + resp.displayMsg);alert(resp.code + " Unexpected Error. Please try again or contact technical support.");}function comDefaultSysError(code, techMsg) {comSysError(new comErrorResp(code, techMsg));}function comServRespError(code, servResp) {comExceptTrace("Service Response at code " + code + " resulted in response code " + servResp.code + " -> " + servResp.techMsg);alert(code + " Unexpected Error. Please try again or contact technical support.");}function comTraceResp(resp) {comExceptTrace("System Error " + resp.code + " -> " + resp.techMsg);}function comReqNextPage(pageRoot, subset, sort) {setCookie('PageRoot', pageRoot, 365);setCookie('Subset', subset, 365);setCookie('Sort', sort, 365);window.location="/index.php";}function comOpenPage(pageName, subset, sort) {comSetCookie('PageRoot', pageName, 365);comSetCookie('Subset', subset, 365);comSetCookie('Sort', sort, 365);window.location="/index.php";}function comApprovedResp(code, displayMsg) {return new comResp("APPROVED", "OK", code, displayMsg, "");}function comDeniedResp(code, displayMsg) {return new comResp("DENIED", "OK", code, displayMsg, "");}function comErrorResp(code, techMsg) {return new comResp("ERROR", "OK", code, "", techMsg);}function comResp(status, action, code, displayMsg, techMsg) {this.status = status;this.action = action;this.code = code;this.displayMsg = displayMsg;this.techMsg = techMsg;this.isApproved = function() {try {if (this.status == "APPROVED") return true;return false;} catch (e) {return false;}};this.isDenied = function() {try {if (this.status == "DENIED") return true;return false;} catch (e) {return false;}};this.isError = function() {try {if (this.status == "ERROR") return true;return false;} catch (e) {return false;}};this.show = function() {try {var outln = "Code -> " + this.code + "\n";outln = outln + "Status -> " + this.status + "\n";outln = outln + "Action -> " + this.action + "\n";outln = outln + "Display Msg -> " + this.displayMsg + "\n";outln = outln + "Tech Msg -> " + this.techMsg + "\n";alert(outln);} catch (e) {alert("JJS00049" + e);}};}function comShowParmList(list) {var showStr = "";var keys = list.getKeys();for (var parmPos=0; parmPos<keys.length; parmPos++) {showStr = showStr + keys[parmPos] + "=" + list.getParm(keys[parmPos]) + "\n";}alert(showStr);}function comParmList(parmListName) {this.parmListName = parmListName;var parmList = new Array();this.addParm = function(parmKey, parmValue) {for (var parmPos=0; parmPos<parmList.length; parmPos++) {if (parmList[parmPos][0] == parmKey) {parmList[parmPos][1] = parmValue;return;}}var parm = new Array(parmKey, parmValue);parmList.push(parm);};this.getParm = function(parmKey) {for (var parmPos=0; parmPos<parmList.length; parmPos++) {if (parmList[parmPos][0] == parmKey) return parmList[parmPos][1];}return null;};this.getLength = function() {return parmList.length;};this.getKeys = function() {var keys = new Array();for (var parmPos=0; parmPos<parmList.length; parmPos++) {keys.push(parmList[parmPos][0]);}return keys;};}function comSetCookie(name, value, expiredays) {try {var cookieStr = name + "=" + escape(value);if (expiredays > 0) {var expdate = new Date();expdate.setDate(expdate.getDate() + expiredays);cookieStr = cookieStr + ";expires=" + expdate.toGMTString();}document.cookie=cookieStr;} catch (e) {comExceptTrace("JJS00111 Unable to set cookie " + name + e);}}function comGetCookie(name) {try {if (document.cookie.length > 0) {var start = document.cookie.indexOf(name + "=");if (start!=-1) {start = start + name.length + 1;var end = document.cookie.indexOf(";", start);if (end == -1) end = document.cookie.length;return unescape(document.cookie.substring(start, end));}}return "";} catch (e) {comExceptTrace("JJS00112 Unable to get cookie " + name + e);return "";}}function comCheckCookie() {var subset=getCookie('subset');if (subset!=null && subset!="") {alert('Welcome again '+subset+'!');} else {subset=prompt('Please enter your subset:',"");if (subset!=null && subset!="") {setCookie('subset',subset,2);}}}function comReplaceAll(OldString,FindString,ReplaceString) {var SearchIndex = 0;var NewString = "";while (OldString.indexOf(FindString,SearchIndex) != -1)    {NewString += OldString.substring(SearchIndex,OldString.indexOf(FindString,SearchIndex));NewString += ReplaceString;SearchIndex = (OldString.indexOf(FindString,SearchIndex) + FindString.length);}NewString += OldString.substring(SearchIndex,OldString.length);return NewString;}function comTrim(trimVal) {var outVal = trimVal.replace(/^\s*/, "").replace(/\s*$/, "");return outVal;}function comPrint(printNodeID, printSheet) {var newwindow=window.open("",'Print','left=240, top=170, width=730, height=480, toolbar=no, directories=no, location=no, status=no, menubar=no, resizable=yes, scrollbars=no');var existsNode = newwindow.document.getElementById("print");if (existsNode != null) {alert("Please print or cancel your prior print first.");newwindow.focus();return true;}var printNode = document.getElementById(printNodeID);var newhtml = "";newhtml = newhtml + "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">";newhtml = newhtml + "<html><head>";newhtml = newhtml + "<META http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">";newhtml = newhtml + "<title>SaferWatch.com - Print Report</title>";newhtml = newhtml + "<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"" + printSheet + "\">";newhtml = newhtml + "</head><body><div id=\"print\">";newhtml = newhtml + printNode.innerHTML;newhtml = newhtml + "</div></body></html>";newwindow.document.write(newhtml);newwindow.document.close();if (window.focus) {newwindow.focus();}newwindow.print();newwindow.close();return true;}function comPrintNodes(printNodeIDs, printSheet) {var newwindow=window.open("",'Print','left=240, top=170, width=730, height=480, toolbar=no, directories=no, location=no, status=no, menubar=no, resizable=yes, scrollbars=no');var existsNode = newwindow.document.getElementById("print");if (existsNode != null) {alert("Please print or cancel your prior print first.");newwindow.focus();return true;}var newhtml = "";newhtml = newhtml + "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">";newhtml = newhtml + "<html><head>";newhtml = newhtml + "<META http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">";newhtml = newhtml + "<title>SaferWatch.com - Print Report</title>";newhtml = newhtml + "<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"" + printSheet + "\">";newhtml = newhtml + "</head><body><div id=\"print\">";for (var i=0; i<printNodeIDs.length; i++) {var printNode = document.getElementById(printNodeIDs[i]);if (printNode == null) {comExceptTrace("JJS00364 Unable to find print node: " + printNodeIDs[i]);continue;}newhtml = newhtml + printNode.innerHTML;}newhtml = newhtml + "</div></body></html>";newwindow.document.write(newhtml);newwindow.document.close();if (window.focus) {newwindow.focus();}newwindow.print();newwindow.close();return true;}function bbsGetEventID(comEvt) {try {var evtID = comEvt.target.id;if (evtID != null && evtID.length > 0) return evtID;} catch (e) {}try {var evtID = comEvt.srcElement.id;if (evtID != null && evtID.length > 0) return evtID;} catch (e) {}comDefaultSysError("JJS00048", "Unable to determine event id");return null;}function comKeyName(evt) {if (!evt) evt = window.event;var code = evt.charCode || evt.keyCode;var c = String.fromCharCode(code);if (code == 27) return "ESC";if (code == 13) return "ENTER";if (code == 32) return "SPACE";return c;}var comWEQ = new comWinEventQueue();function comWinEventQueue() {var evtQ = new Array();this.listen = function(winID, compID, evtType, listenerID, listenerInst, listenerMeth) {for (var evtPos=0; evtPos<evtQ.length; evtPos++) {if (evtQ[evtPos][0] == evtType && evtQ[evtPos][1] == evtHandle && evtQ[evtPos][2] == listenerID) return;}var listenEvt = new Array(winID, compID, evtType, listenerID, listenerInst, listenerMeth);evtQ.push(listenEvt);};this.fireEvent = function(winIDin, compIDin, evtType, evt) {if (!evt) evt = window.event;var compID = compIDin;if (compID == "COMPID") compID = bbsGetEventID(evt);var winID = winIDin;if (winID == "COMPWINID") winID = compID.slice(0,compID.indexOf(".",0));for (var evtPos=0; evtPos<evtQ.length; evtPos++) {if ((evtQ[evtPos][0] == "*" || evtQ[evtPos][0] == winID) &&(evtQ[evtPos][1] == "*" || evtQ[evtPos][1] == compID) &&(evtQ[evtPos][2] == "*" || evtQ[evtPos][2] == evtType)) {if (evtQ[evtPos][4] == null) {var propagate = evtQ[evtPos][5](evt);if (propagate == false) return false;} else {var propagate = evtQ[evtPos][5].call(evtQ[evtPos][4], evt);if (propagate == false) return false;}}}return true;};this.show = function() {var outln = "";for (var evtPos=0; evtPos<evtQ.length; evtPos++) {outln = outln + evtQ[evtPos][0] + " - " + evtQ[evtPos][1] + " - " + evtQ[evtPos][2] + " - " + evtQ[evtPos][3] + "\n";}alert(outln);};}var comEQ = new comEventQueue();function comEventQueue() {var evtQ = new Array();this.listen = function(winID, compID, evtType, listenerID, listenerInst, listenerMeth) {for (var evtPos=0; evtPos<evtQ.length; evtPos++) {if (evtQ[evtPos][0] == evtType && evtQ[evtPos][1] == evtHandle && evtQ[evtPos][2] == listenerID) return;}var listenEvt = new Array(winID, compID, evtType, listenerID, listenerInst, listenerMeth);evtQ.push(listenEvt);};this.fireEvent = function(winIDin, compIDin, evtType, evtobj) {var winID = winIDin;var compID = compIDin;for (var evtPos=0; evtPos<evtQ.length; evtPos++) {if ((evtQ[evtPos][0] == "*" || evtQ[evtPos][0] == winID) &&(evtQ[evtPos][1] == "*" || evtQ[evtPos][1] == compID) &&(evtQ[evtPos][2] == "*" || evtQ[evtPos][2] == evtType)) {if (evtQ[evtPos][4] == null) {var propagate = evtQ[evtPos][5](evtobj);if (propagate == false) return false;} else {var propagate = evtQ[evtPos][5].call(evtQ[evtPos][4], evtobj);if (propagate == false) return false;}}}return true;};this.show = function() {var outln = "";for (var evtPos=0; evtPos<evtQ.length; evtPos++) {outln = outln + evtQ[evtPos][0] + " - " + evtQ[evtPos][1] + " - " + evtQ[evtPos][2] + " - " + evtQ[evtPos][3] + "\n";}alert(outln);};}function xxForm(formName, modal) {this.formName = formName;this.modal = modal;var winDefList = new Array();this.cmdReq = null;this.cmdResp = null;this.setModal = function(tfVal) {modal = tfVal;};this.isModal = function() {return modal;};this.addWinDef = function(winDef) {var winID = winDef.getWinID();for (var parmPos=0; parmPos<winDefList.length; parmPos++) {if (winDefList[parmPos][0] == winID) {winDefList[parmPos][1] = winDef;return;}}var parm = new Array(winID, winDef);winDefList.push(parm);winDef.setForm(this);};this.showWinDefList = function() {for (var parmPos=0; parmPos<winDefList.length; parmPos++) {alert(winDefList[parmPos][0]);}};this.getWinDef = function(winID) {for (var parmPos=0; parmPos<winDefList.length; parmPos++) {if (winDefList[parmPos][0] == winID) return winDefList[parmPos][1];}return null;};this.getWinDoc = function(winID) {for (var parmPos=0; parmPos<winDefList.length; parmPos++) {if (winDefList[parmPos][0] == winID) return winDefList[parmPos][1].getDoc();}return null;};this.getWinDefbyType = function(defType) {for (var parmPos=0; parmPos<winDefList.length; parmPos++) {if (winDefList[parmPos][1].getDefType() == defType) return winDefList[parmPos][1];}return null;};this.xwbDocs2Wins = function() {this.xwbDocs2Win();};this.xwbDocs2Win = function() {var winDef = null;for (var parmPos=0; parmPos<winDefList.length; parmPos++) {winDef = winDefList[parmPos][1];winDef.xwbDoc2Win();}};this.xwbWins2Docs = function() {var winDef = null;for (var parmPos=0; parmPos<winDefList.length; parmPos++) {winDef = winDefList[parmPos][1];winDef.xwbWin2Doc();}};this.registerTriggers = function() {var winDef = null;for (var parmPos=0; parmPos<winDefList.length; parmPos++) {winDef = winDefList[parmPos][1];winDef.registerTriggers();}};this.registerListeners = function() {var winDef = null;for (var parmPos=0; parmPos<winDefList.length; parmPos++) {winDef = winDefList[parmPos][1];winDef.registerListeners();}};this.showForm = function() {this.setFormResp(comApprovedResp("JJS00076", ""));var winDef = null;for (var parmPos=0; parmPos<winDefList.length; parmPos++) {winDef = winDefList[parmPos][1];winDef.clearWinEdits();}if (this.isModal()) setOn('modalWin');setOn(this.formName);};this.isShowing = function() {var node = document.getElementById(this.formName);if (node.className == 'on') return true;return false;};this.hideForm = function() {if (this.isModal()) setOff('modalWin');setOff(this.formName);comWEQ.fireEvent(this.formName, this.formName, "FormClose", this);};this.edit = function() {this.xwbWins2Docs();var winDef = null;var passedEdits = true;for (var parmPos=0; parmPos<winDefList.length; parmPos++) {winDef = winDefList[parmPos][1];if (!winDef.getDoc().editDoc()) passedEdits = false;winDef.applyWinEdits();}if (passedEdits) {this.setFormResp(comApprovedResp("JJS00138", ""));} else {this.setFormResp(comDeniedResp("JJS00139", "Please correct the errors and try again."));}return passedEdits;};this.clearEdits = function() {var winDef = null;for (var parmPos=0; parmPos<winDefList.length; parmPos++) {winDef = winDefList[parmPos][1];winDef.clearWinEdits();}this.setFormResp(comApprovedResp("JJS00140", ""));};this.setFormResp = function(editResp) {try {var respNode = document.getElementById(this.formName + ".RESPMSG");if (respNode != null && respNode != "undefined") {respNode.innerHTML = editResp.displayMsg;}} catch (e) {}};}function xxWinDef(winID, winName, winType) {this.winID = winID;this.winName = winName;this.winType = winType;var formHandle = null;var metaDoc = new Array();var compIDx = 0;var compTypex = 1;var displayTypex = 2;var fieldNamex = 3;var formatterx = 4;var eventTypex = 5;var eventHandlerx = 6;var parmList = new Array();var dataDoc = null;this.setForm = function(form) {formHandle = form;};this.getForm = function() {return formHandle;};this.setDoc = function(doc) {dataDoc = doc;};this.getDoc = function() {return dataDoc;};this.getWinID = function() {if (this.winID == null) return "";return this.winID;};this.getWinName = function() {if (this.winName == null) return "";return this.winName;};this.getWinType = function() {if (this.winID == null) return "";return this.winType;};this.setModal = function(tfVal) {this.addParm("MODAL", tfVal);};this.isModal = function() {var modal = this.getParm("MODAL");if (modal == null) return false;return modal;};this.addComp = function(compID, compType, displayType, fieldName, formatter, eventType, eventHandler) {var row = new Array(compID, compType, displayType, fieldName, formatter, eventType, eventHandler);metaDoc.push(row);};this.getCompCount = function() {return metaDoc.length;};this.getCompID = function(col) {try {return metaDoc[col][compIDx];} catch (e) {throw("JJS00041" + this.getWinID() + " error getting component for column " + col);}};this.getColbyCompID = function(compID) {for (var i=0; i<metaDoc.length; i++) {if (metaDoc[i][compIDx] == compID) return i;}return -1;};this.getCompType = function(col) {try {return metaDoc[col][compTypex];} catch (e) {throw("JJS00042" + this.getWinID() + " error getting component type for column " + col);}};this.getDisplayType = function(col) {try {return metaDoc[col][displayTypex];} catch (e) {throw("JJS00043" + this.getWinID() + " error getting component display type for column " + col);}};this.getFieldName = function(col) {try {return metaDoc[col][fieldNamex];} catch (e) {throw("JJS00044" + this.getWinID() + " error getting field name for column " + col);}};this.getFormatter = function(col) {try {return metaDoc[col][formatterx];} catch (e) {throw("JJS00045" + this.getWinID() + " error getting field formatter for column " + col);}};this.getEventType = function(col) {try {return metaDoc[col][eventTypex];} catch (e) {throw("JJS00046" + this.getWinID() + " error getting event type for column " + col);}};this.getEventHandler = function(col) {try {return metaDoc[col][eventHandlerx];} catch (e) {throw("JJS00047" + this.getWinID() + " error getting event handler for column " + col);}};this.show = function() {var out = winName + "\n";for (var i=0; i<metaDoc.length; i++) {out = out + metaDoc[i][compIDx] + " - " +metaDoc[i][compTypex] + " - " +metaDoc[i][displayTypex] + " - " +metaDoc[i][fieldNamex] + " - " +metaDoc[i][eventTypex] + "\n";}alert(out);};this.addParm = function(parmKey, parmValue) {for (var parmPos=0; parmPos<parmList.length; parmPos++) {if (parmList[parmPos][0] == parmKey) {parmList[parmPos][1] = parmValue;return;}}var parm = new Array(parmKey, parmValue);parmList.push(parm);};this.getParm = function(parmKey) {for (var parmPos=0; parmPos<parmList.length; parmPos++) {if (parmList[parmPos][0] == parmKey) return parmList[parmPos][1];}return null;};}function xxWinDefEdit(winID, winName) {var superDef = new acWinDef(winID, winName, "EDIT");this.xwbDoc2Win = function() {for (var compCol=0; compCol<this.getCompCount(); compCol++) {this.xwbDocField2Win(compCol);}};this.xwbDocField2Win = function(compCol) {var compID = this.getCompID(compCol);var displayType = this.getDisplayType(compCol);var compType = this.getCompType(compCol);var dataDoc = this.getDoc();var docVal = null;if (compType == "switch") {if (displayType == "showselected") {docVal = dataDoc.getValue(0,this.getFieldName(compCol));if (this.getFormatter(compCol) != null) {this.getFormatter(compCol)(compID, docVal);return;}var compVal = compID.split(".")[2];if (compVal == docVal) {setOn(compID);} else {setOff(compID);}return;}if (displayType == "hideempty") {docVal = dataDoc.getValue(0,this.getFieldName(compCol));if (this.getFormatter(compCol) != null) {this.getFormatter(compCol)(compID, docVal);return;}if (docVal == null || docVal.length < 1) {setOff(compID);} else {setOn(compID);}return;}if (displayType == "showempty") {docVal = dataDoc.getValue(0,this.getFieldName(compCol));if (this.getFormatter(compCol) != null) {this.getFormatter(compCol)(compID, docVal);return;}if (docVal == null || docVal.length < 1) {setOn(compID);} else {setOff(compID);}return;}return;}if (displayType != "data") return;if (this.getFormatter(compCol) != null) {docVal = this.getFormatter(compCol)(dataDoc, 0, dataDoc.getColPos(this.getFieldName(compCol)));} else {docVal = dataDoc.getValue(0,this.getFieldName(compCol));}if (compType == "radio") {if (docVal == null || docVal.length < 1) {var nodes = document.getElementsByName(compID);for (var i=0; i<nodes.length; i++) {nodes[i].checked = false;}return;}var node = document.getElementById(compID + "." + docVal);if (node == null || node == "undefined") {comExceptTrace("JJS00100 " + this.getWinName() + " missing component ID " + compID + "." + docVal);return;}node.checked = true;return;}var node = document.getElementById(compID);if (node == null) {comExceptTrace("JJS00032 " + this.getWinName() + " missing component ID " + compID);return;}if (compType == "checkbox") {if (docVal == null || docVal.length < 1) docVal = "false";if (docVal == "true") {node.checked = true;} else {node.checked = false;}return;}if (node.nodeName == "INPUT") {node.value = docVal;return;}if (node.nodeName == "TEXTAREA") {node.value = docVal;node.innerHTML = docVal;return;}if (node.nodeName == "SPAN") {node.innerHTML = docVal;return;}if (node.nodeName == "SELECT") {var node = document.getElementById(this.getFieldName(compCol) + "." + docVal);if (node != null) {node.selected = true;}return;}if (node.nodeName == "B") {node.innerHTML = docVal;return;}};this.xwbWin2Doc = function() {try {var doc = this.getDoc();for (col=0; col<this.getCompCount(); col++) {this.xwbComp2Doc(col);}} catch (e) {alert(e);}};this.xwbComp2Doc = function(compPos) {try {var doc = this.getDoc();var compID = this.getCompID(compPos);var fieldName = this.getFieldName(compPos);var displayType = this.getDisplayType(compPos);var compType = this.getCompType(compPos);var nodeVal = "";if (displayType == "data") {if (compType == "radio") {var nodes = document.getElementsByName(compID);for (var i=0; i<nodes.length; i++) {if (nodes[i].checked == true) {var parts = nodes[i].id.split(".");doc.setValue(0, fieldName, parts[2]);break;}}return;}var node = document.getElementById(compID);if (node != null) {if (compType == "checkbox") {if (node.checked == true) {doc.setValue(0, fieldName, "true");} else {doc.setValue(0, fieldName, "false");}return;}if (node.nodeName == "INPUT") {nodeVal = node.value;} else if (node.nodeName == "TEXTAREA") {nodeVal = node.value;} else if (node.nodeName == "SELECT") {nodeVal = node.options[node.selectedIndex].value;} else if (node.nodeName == "B") {nodeVal = node.innerHTML;} else if (node.nodeName == "SPAN") {nodeVal = node.innerHTML;}doc.setValue(0, fieldName, nodeVal);doc.edit(0, doc.getColPos(fieldName));}}} catch (e) {alert(e);}};this.registerTriggers = function() {var node = null;var compType = null;var eventType = null;for (var col=0; col< this.getCompCount(); col++) {eventType = this.getEventType(col);if (eventType == "none") continue;compType = this.getCompType(col);if (compType == "displayfield") {node = document.getElementById(this.getCompID(col));if (node == null) {comExceptTrace("JJS00535 unable to obtain comp ID " + this.getCompID(col)); continue;}if (eventType == "default") {node.onfocus = function (evt) {return comWEQ.fireEvent("COMPWINID", "COMPID", "dfldonfocus", evt)};}continue;}if (compType == "textfield") {node = document.getElementById(this.getCompID(col));if (node == null) {comExceptTrace("JJS00536 unable to obtain comp ID " + this.getCompID(col)); continue;}if (eventType == "default") {node.onfocus = function (evt) {return comWEQ.fireEvent("COMPWINID", "COMPID", "onfocus", evt)};node.onkeydown = function (evt) {return comWEQ.fireEvent("COMPWINID", "COMPID", "onkeydown", evt)};node.onkeypress = function (evt) {return comWEQ.fireEvent("COMPWINID", "COMPID", "onkeypress", evt)};node.onkeyup = function (evt) {return comWEQ.fireEvent("COMPWINID", "COMPID", "onkeyup", evt)};node.onchange = function (evt) {return comWEQ.fireEvent("COMPWINID", "COMPID", "onchange", evt)};node.onblur = function (evt) {return comWEQ.fireEvent("COMPWINID", "COMPID", "onblur", evt)};}continue;}if (compType == "button") {node = document.getElementById(this.getCompID(col));if (node == null) {comExceptTrace("JJS00537 unable to obtain comp ID " + this.getCompID(col)); continue;}if (eventType == "default") {node.onclick = function (evt) {return comWEQ.fireEvent("COMPWINID", "COMPID", "buttonpress", evt)};node.onkeypress = function (evt) {return comWEQ.fireEvent("COMPWINID", "COMPID", "buttonpress", evt)};}continue;}if (compType == "radio") {if (eventType == "default") {var nodes = document.getElementsByName(this.getCompID(col));for (var i=0; i<nodes.length; i++) {nodes[i].checked = false;nodes[i].onclick = function (evt) {return comWEQ.fireEvent("COMPWINID", "COMPID", "radioclick", evt)};}continue;}continue;}if (compType == "select") {if (eventType == "default") {node = document.getElementById(this.getCompID(col));if (node == null) {comExceptTrace("JJS00538 unable to obtain comp ID " + this.getCompID(col)); continue;}node.onchange = function (evt) {return comWEQ.fireEvent("COMPWINID", "COMPID", "onchange", evt)};continue;}continue;}if (compType == "switch") {node = document.getElementById(this.getCompID(col));if (node == null) {comExceptTrace("JJS00539 unable to obtain comp ID " + this.getCompID(col)); continue;}if (eventType == "default") {node.onclick = function (evt) {return comWEQ.fireEvent("COMPWINID", "COMPID", "buttonpress", evt)};node.onkeypress = function (evt) {return comWEQ.fireEvent("COMPWINID", "COMPID", "buttonpress", evt)};}continue;}}};this.registerListeners = function() {var winID = this.getWinID();var compID = null;var compType = null;var eventType = null;for (var col=0; col< this.getCompCount(); col++) {eventType = this.getEventType(col);if (eventType == "none") continue;compID = this.getCompID(col);compType = this.getCompType(col);if (compType == "displayfield") {if (eventType == "default") {comWEQ.listen(winID, compID, "dfldonfocus", winID, this, this.dfldonfocus);}continue;}if (compType == "textfield") {if (eventType == "default") {comWEQ.listen(winID, compID, "onfocus", winID, this, this.onfocus);comWEQ.listen(winID, compID, "onkeypress", winID, this, this.onkeypress);comWEQ.listen(winID, compID, "onchange", winID, this, this.onchange);}continue;}if (compType == "button") {comWEQ.listen(winID, "*", "buttonpress", winID, this, this.buttonpress);continue;}if (compType == "radio") {comWEQ.listen(winID, "*", "radioclick", winID, this, this.radioclick);continue;}if (compType == "select") {comWEQ.listen(winID, compID, "onchange", winID, this, this.selectchange);continue;}if (compType == "switch") {comWEQ.listen(winID, "*", "buttonpress", winID, this, this.buttonpress);continue;}}};this.buttonpress = function(evt) {try {if (evt.type == "keypress") {var keyName = comKeyName(evt);if (keyName != "SPACE" && keyName != "ENTER") return true;}var compID = bbsGetEventID(evt);var compPos = this.getColbyCompID(compID);var node = document.getElementById(compID);this.cmdReq = node.name;this.getEventHandler(compPos)(evt);return false;} catch (e) {comSysError(comErrorResp("JJS00035", "buttonclick error " + e));return false;}};this.radioclick = function(evt) {try {if (evt.type == "keypress") {var keyName = comKeyName(evt);if (keyName != "SPACE" && keyName != "ENTER") return true;}var compID = bbsGetEventID(evt);var compParts = compID.split(".");compID = compParts[0] + "." + compParts[1];var compPos = this.getColbyCompID(compID);return this.getEventHandler(compPos)(evt);} catch (e) {comSysError(comErrorResp("JJS00101", "radioclick error " + e.message));return false;}};this.selectchange = function(evt) {try {var compID = bbsGetEventID(evt);var compPos = this.getColbyCompID(compID);return this.getEventHandler(compPos)(evt);} catch (e) {comSysError(comErrorResp("JJS00426", "selectchange error " + e));return false;}};this.dfldonfocus = function(evt) {try {if (!evt) evt = window.event;var compID = bbsGetEventID(evt);var compPos = this.getColbyCompID(compID);return this.getEventHandler(compPos)(evt);} catch (e) {comTrace(e)}};this.onfocus = function(evt) {try {if (!evt) evt = window.event;var compID = bbsGetEventID(evt);var compPos = this.getColbyCompID(compID);var docFieldName = this.getFieldName(compPos);if (docFieldName == null || docFieldName.length < 1) {this.getForm().setFormResp(comApprovedResp("JJS00427", ""));return true;}var docField = this.getDoc().getField(0, docFieldName);if (docField.status == true) {this.getForm().setFormResp(comApprovedResp("JJS00428", ""));return true;}if (docField.msg == null || docField.msg.length < 1) {this.getForm().setFormResp(comApprovedResp("JJS00429", ""));return true;}this.getForm().setFormResp(comDeniedResp("JJS00430", docField.msg));return true;} catch (e) {comTrace("JJS00540 " + e)}};this.onchange = function(evt) {try {if (!evt) evt = window.event;var compID = bbsGetEventID(evt);var compPos = this.getColbyCompID(compID);this.xwbComp2Doc(compPos);var docFieldName = this.getFieldName(compPos);var docFieldPos = this.getDoc().getColPos(docFieldName);this.getDoc().edit(0,docFieldPos);var docField = this.getDoc().getColField(0, docFieldPos);this.setFieldError(compID, docField);if (docField.status == true) {this.xwbDocField2Win(compPos);this.getForm().setFormResp(comApprovedResp("JJS00431", ""));}return true;} catch (e) {}};this.onkeyup = function(evt) {var keyName = comKeyName(evt);return true;};this.onblur = function(evt) {if (!evt) evt = window.event;var compID = bbsGetEventID(evt);return true;};this.onkeydown = function(evt) {var keyName = comKeyName(evt);return true;};this.onkeypress = function(evt) {var keyName = comKeyName(evt);if (keyName == "ESC") {var compID = this.getParm("ESCKEY");if (compID == null) return false;var compPos = this.getColbyCompID(compID);var node = document.getElementById(compID);this.cmdReq = node.name;this.getEventHandler(compPos)(evt);return false;}if (keyName == "ENTER") {var compID = this.getParm("ENTERKEY");if (compID == null) return false;var compPos = this.getColbyCompID(compID);var node = document.getElementById(compID);this.cmdReq = node.name;this.getEventHandler(compPos)(evt);return false;}return true;};this.clearWinEdits = function() {var field = new xxDataDocField("");field.status = true;var fieldName = null;for (var col=0; col< this.getCompCount(); col++) {fieldName = this.getFieldName(col);if (fieldName == null || fieldName.length < 1) continue;this.setFieldError(this.getCompID(col), field);}};this.applyWinEdits = function() {var dataDoc = this.getDoc();var fieldName = null;for (var col=0; col< this.getCompCount(); col++) {fieldName = this.getFieldName(col);if (fieldName == null || fieldName.length < 1) continue;this.setFieldError(this.getCompID(col), dataDoc.getField(0,fieldName));}};this.applyFieldEdit = function(editFieldName) {this.xwbWin2Doc();var dataDoc = this.getDoc();var fieldName = null;for (var col=0; col< this.getCompCount(); col++) {fieldName = this.getFieldName(col);if (fieldName == null || fieldName.length < 1) continue;if (fieldName != editFieldName) continue;var docCol = dataDoc.getColPos(fieldName);if (!dataDoc.edit(0,docCol)) {this.setFieldError(this.getCompID(col), dataDoc.getColField(0, docCol));break;}}};this.setFieldError = function(compID, docField) {try {if (this.getCompType(this.getColbyCompID(compID)) == "radio") return;var cName = document.getElementById(compID).parentNode.className;cName = cName.toUpperCase();if (cName != "FIELDOK" && cName != "FIELDERROR") return;if (docField.status == true) {document.getElementById(compID).parentNode.className="fieldok";document.getElementById(compID).title = "";} else {document.getElementById(compID).parentNode.className="fielderror";document.getElementById(compID).title = docField.msg;}} catch (e) {comExceptTrace("JJS00102 setFieldError on comp " + compID + ": " + e);}};this.setWinResp = function(editResp) {try {var respNode = document.getElementById(this.getWinID() + ".RESPMSG");if (respNode != null && respNode != "undefined") {if (editResp.displayMsg.length < 1) {respNode.className="off";} else {respNode.className="feedback";}respNode.innerHTML = editResp.displayMsg;}} catch (e) {}};this.getWinID = function() {return superDef.getWinID();};this.getWinName = function() {return superDef.getWinName();};this.getWinType = function() {return superDef.getWinType();};this.getForm = function() {return superDef.getForm();};this.setForm = function(form) {return superDef.setForm(form);};this.getDoc = function() {return superDef.getDoc();};this.setDoc = function(doc) {return superDef.setDoc(doc);};this.setModal = function(tfVal) {return superDef.setModal(tfVal);};this.isModal = function() {return superDef.isModal();};this.addComp = function(compID, compType, displayType, fieldName, formatter, eventType, eventHandler) {return superDef.addComp(compID, compType, displayType, fieldName, formatter, eventType, eventHandler);};this.getCompCount = function() {return superDef.getCompCount();};this.getCompID = function(col) {return superDef.getCompID(col);};this.getColbyCompID = function(compID) {return superDef.getColbyCompID(compID);};this.getCompType = function(col) {return superDef.getCompType(col);};this.getDisplayType = function(col) {return superDef.getDisplayType(col);};this.getFieldName = function(col) {return superDef.getFieldName(col);};this.getFormatter = function(col) {return superDef.getFormatter(col);};this.getEventType = function(col) {return superDef.getEventType(col);};this.getEventHandler = function(col) {return superDef.getEventHandler(col);};this.show = function() {return superDef.show();};this.addParm = function(parmKey, parmValue) {return superDef.addParm(parmKey, parmValue);};this.getParm = function(parmKey) {return superDef.getParm(parmKey);};}function xxWinDefRepList(winID, winName) {var superDef = new xxWinDef(winID, winName, "REPLIST");var optionParms = null;var initialized = false;this.initTemplate = function() {if (initialized) return;initialized = true;var plateBody = null;var plateRow = null;var plateTD = null;optionParms = new Array();var plateSpanTxt = new Array();var tBody = document.getElementById(this.getWinID() + ".BODYDEF");plateBody = tBody.cloneNode(false);plateBody.id=this.getWinID() + ".LISTID";var tEmpty = document.getElementById(this.getWinID() + ".EMPTY");if (tEmpty != null) {tEmptyClone = tEmpty.cloneNode(true);this.addParm("TEMPLATEEMPTY", tEmptyClone);}var tRowList = tBody.getElementsByTagName("tr");if (tRowList == null || tRowList.length != 1) return comDefaultSysError("JJS00058", "List template requires one row tag");var tRow = tRowList[0];var tdNode = null;var spanNode = null;plateRow = tRow.cloneNode(false);var tdList = tRow.getElementsByTagName("td");if (tdList == null) return comDefaultSysError("JJS00059", "List template missing td tags");for (var col=0; col<tdList.length; col++) {tdNode = tdList[col];spanNode = tdNode.childNodes[0];plateTD = tdNode.cloneNode(false);spanTD = spanNode.cloneNode(false);plateTD.appendChild(spanTD);plateRow.appendChild(plateTD);var spanTxt = tdList[col].childNodes[0].innerHTML;var tStart = spanTxt.search(/<COLTEMPLATE>/);if (tStart < 0) return comDefaultSysError("JJS00060", "List template missing COLTEMPLATE start tag");tStart = tStart + 13;var tEnd = spanTxt.search(/<\/COLTEMPLATE>/);if (tEnd < 0) return comDefaultSysError("JJS00061", "List template missing COLTEMPLATE end tag");var tTxt = spanTxt.substring(tStart,tEnd);var rx = new RegExp("  *","g");tTxt = tTxt.replace(rx, " ");tTxt = tTxt.replace(/\r/g, "\n");tTxt = tTxt.replace(/\n\n/g, "\n");tTxt = tTxt.replace(/\n\s/g, "\n");tTxt = tTxt.replace(/\s\n/g, "\n");tTxt = tTxt.replace(/\t/g, "");tTxt = tTxt.replace(/^\s*/, "").replace(/\s*$/, "");plateSpanTxt.push(tTxt);var tStart = spanTxt.search(/<OPTIONLIST>/);if (tStart > -1) {tStart = tStart + 12;tEnd = spanTxt.search(/<\/OPTIONLIST>/);if (tEnd < 0) return comDefaultSysError("JJS00062", "List template missing OPTIONLIST end tag");var optTxt = spanTxt.substring(tStart,tEnd);var rx = new RegExp("  *","g");optTxt = optTxt.replace(rx, " ");optTxt = optTxt.replace(/\r/g, "\n");optTxt = optTxt.replace(/\n\n/g, "\n");optTxt = optTxt.replace(/\n\s/g, "\n");optTxt = optTxt.replace(/\s\n/g, "\n");optTxt = optTxt.replace(/\t/g, "");optTxt = optTxt.replace(/^\s*/, "").replace(/\s*$/, "");var optionsArray = optTxt.split('\n');var oper = -1;for(var i = 0; i < optionsArray.length; i++) {var oper = optionsArray[i].indexOf("=",0);this.addOption(optionsArray[i].substring(0,oper), optionsArray[i].substring(oper+1));}}}this.addParm("TEMPLATEBODY", plateBody);this.addParm("TEMPLATEROW", plateRow);this.addParm("TEMPLATECOLINNER", plateSpanTxt);var repArray = new Array();var repColArray = null;var rep = null;var repCompID = null;var repDisplayType = null;var docCol = null;var docVal = null;var repXML = null;var dataDoc = this.getDoc();for (var tplCol=0; tplCol<plateSpanTxt.length; tplCol++) {repColArray = new Array();repXML = plateSpanTxt[tplCol];for (var defCol=0; defCol<this.getCompCount(); defCol++) {repCompID = this.getCompID(defCol);repDisplayType = this.getDisplayType(defCol);if (repDisplayType == "optionlist") {docCol = dataDoc.getColPos(this.getFieldName(defCol));rep = new Array(repCompID, "OPTIONLIST", docCol, defCol);repColArray.push(rep);for (var parmPos=0; parmPos<optionParms.length; parmPos++) {if (optionParms[parmPos][0].indexOf(repCompID + ".") > -1) {repXML = repXML + optionParms[parmPos][1];}}}if (repXML.indexOf(repCompID + ".COLID") > -1) {rep = new Array(repCompID, "COLID", tplCol, defCol);repColArray.push(rep);}if (repXML.indexOf(repCompID + ".VALUE") > -1) {docCol = dataDoc.getColPos(this.getFieldName(defCol));rep = new Array(repCompID, "VALUE", docCol, defCol);repColArray.push(rep);}}repArray.push(repColArray);}this.addParm("TEMPLATEREPARRAY", repArray);};this.addOption = function(parmKey, parmValue) {for (var parmPos=0; parmPos<optionParms.length; parmPos++) {if (optionParms[parmPos][0] == parmKey) {optionParms[parmPos][1] = parmValue;return;}}var parm = new Array(parmKey, parmValue);optionParms.push(parm);};this.getOption = function(parmKey) {for (var parmPos=0; parmPos<optionParms.length; parmPos++) {if (optionParms[parmPos][0] == parmKey) return optionParms[parmPos][1];}return null;};this.showOptions = function() {var showStr = "";for (var parmPos=0; parmPos<optionParms.length; parmPos++) {showStr = showStr + optionParms[parmPos][0] + "=" + optionParms[parmPos][1] + "\n";}alert(showStr);};this.xwbDoc2Win = function() {try {this.initTemplate();var templateBody = this.getParm("TEMPLATEBODY").cloneNode(false);var templateRow = this.getParm("TEMPLATEROW");var templateColInner = this.getParm("TEMPLATECOLINNER");var repArray = this.getParm("TEMPLATEREPARRAY");var dataDoc = this.getDoc();var docVal = null;var nRow = null;var nSpanNodes = null;var repHtml = null;var winID = this.getWinID();var formatter = null;if (dataDoc.getRowCount() < 1) {var templateEmpty = this.getParm("TEMPLATEEMPTY");if  (templateEmpty != null) {templateBody.appendChild(templateEmpty);var oldbody = document.getElementById(winID + ".LISTID");var tbl = document.getElementById(winID + ".TABLE");tbl.removeChild(oldbody);tbl.appendChild(templateBody);return;}}for (var row=0; row < dataDoc.getRowCount(); row++) {nRow = templateRow.cloneNode(true);nSpanNodes = nRow.getElementsByTagName("td");nRow.id = winID + "." + row;for (var tplCol=0; tplCol<templateColInner.length; tplCol++) {repHtml = templateColInner[tplCol];repColArray = repArray[tplCol];for (var repCol=0; repCol<repColArray.length; repCol++) {formatter = this.getFormatter(repColArray[repCol][3]);if (repColArray[repCol][1] == "VALUE") {if (formatter == null) {docVal = dataDoc.getColValue(row, repColArray[repCol][2]);} else {docVal = formatter(dataDoc, row, repColArray[repCol][2]);}repHtml = repHtml.replace(repColArray[repCol][0] + ".VALUE", docVal);} else if (repColArray[repCol][1] == "COLID") {repHtml = comReplaceAll(repHtml,repColArray[repCol][0] + ".COLID", repColArray[repCol][0] + "." + row + "." + tplCol);} else if (repColArray[repCol][1] == "OPTIONLIST") {if (formatter == null) {docVal = dataDoc.getColValue(row, repColArray[repCol][2]);} else {docVal = formatter(dataDoc, row, repColArray[repCol][2]);}var optStr = this.getOption(repColArray[repCol][0] + "." + docVal);if (optStr == null) optStr = "";repHtml = repHtml.replace(repColArray[repCol][0] + ".OPTIONLIST", optStr);}}nSpanNodes[tplCol].childNodes[0].innerHTML = repHtml;}templateBody.appendChild(nRow);}var oldbody = document.getElementById(winID + ".LISTID");var tbl = document.getElementById(winID + ".TABLE");tbl.removeChild(oldbody);tbl.appendChild(templateBody);} catch (e) {comDefaultSysError("JJS00064", e);return;}};this.xwbRow2Win = function(row) {try {this.initTemplate();var templateBody = this.getParm("TEMPLATEBODY");var templateRow = this.getParm("TEMPLATEROW");var templateColInner = this.getParm("TEMPLATECOLINNER");var repArray = this.getParm("TEMPLATEREPARRAY");var dataDoc = this.getDoc();var docVal = null;var nRow = null;var nSpanNodes = null;var repHtml = null;var winID = this.getWinID();nRow = templateRow.cloneNode(true);nSpanNodes = nRow.getElementsByTagName("td");nRow.id = winID + "." + row;for (var tplCol=0; tplCol<templateColInner.length; tplCol++) {repHtml = templateColInner[tplCol];repColArray = repArray[tplCol];for (var repCol=0; repCol<repColArray.length; repCol++) {if (repColArray[repCol][1] == "VALUE") {docVal = dataDoc.getColValue(row, repColArray[repCol][2]);repHtml = repHtml.replace(repColArray[repCol][0] + ".VALUE", docVal);} else if (repColArray[repCol][1] == "COLID") {repHtml = comReplaceAll(repHtml,repColArray[repCol][0] + ".COLID", repColArray[repCol][0] + "." + row + "." + tplCol);} else if (repColArray[repCol][1] == "OPTIONLIST") {docVal = dataDoc.getColValue(row, repColArray[repCol][2]);var optStr = this.getOption(repColArray[repCol][0] + "." + docVal);if (optStr == null) throw "JJS00063 Option not found for " + repColArray[repCol][0] + "." + docVal;repHtml = repHtml.replace(repColArray[repCol][0] + ".OPTIONLIST", optStr);}}nSpanNodes[tplCol].childNodes[0].innerHTML = repHtml;}var oldbody = document.getElementById(winID + ".LISTID");oldRow = document.getElementById(winID + "." + row);oldbody.replaceChild(nRow, oldRow);} catch (e) {comDefaultSysError("JJS00103", e);return;}};this.clearWinEdits = function() {return true;};this.xwbWin2Doc = function() {return true;};this.registerTriggers = function() {return true;};this.registerListeners = function() {return true;};this.getWinID = function() {return superDef.getWinID();};this.getWinName = function() {return superDef.getWinName();};this.getWinType = function() {return superDef.getWinType();};this.getForm = function() {return superDef.getForm();};this.setForm = function(form) {return superDef.setForm(form);};this.getDoc = function() {return superDef.getDoc();};this.setDoc = function(doc) {return superDef.setDoc(doc);};this.setModal = function(tfVal) {return superDef.setModal(tfVal);};this.isModal = function() {return superDef.isModal();};this.addComp = function(compID, compType, displayType, fieldName, formatter, eventType, eventHandler) {return superDef.addComp(compID, compType, displayType, fieldName, formatter, eventType, eventHandler);};this.getCompCount = function() {return superDef.getCompCount();};this.getCompID = function(col) {return superDef.getCompID(col);};this.getColbyCompID = function(compID) {return superDef.getColbyCompID(compID);};this.getCompType = function(col) {return superDef.getCompType(col);};this.getDisplayType = function(col) {return superDef.getDisplayType(col);};this.getFieldName = function(col) {return superDef.getFieldName(col);};this.getFormatter = function(col) {return superDef.getFormatter(col);};this.getEventType = function(col) {return superDef.getEventType(col);};this.getEventHandler = function(col) {return superDef.getEventHandler(col);};this.show = function() {return superDef.show();};this.addParm = function(parmKey, parmValue) {return superDef.addParm(parmKey, parmValue);};this.getParm = function(parmKey) {return superDef.getParm(parmKey);};}function xxWinDefPageMeta(winID, winName, defType) {var superDef = new xxWinDefEdit(winID, winName, defType);this.getDoc = function() {var pageDoc = superDef.getDoc();if (pageDoc != null) return pageDoc;pageDoc = new xxDataDoc("PageDO");pageDoc.addField("pageCurrent", false, null);pageDoc.addField("pageTotal", false, null);pageDoc.addField("pageRecCount", false, null);pageDoc.addField("pageSize", false, null);pageDoc.addField("subset", false, null);pageDoc.addField("sort", false, null);pageDoc.initOne();pageDoc.setValue(0, "pageCurrent", "1");pageDoc.setValue(0, "pageTotal", "1");pageDoc.setValue(0, "pageRecCount", "-1");pageDoc.setValue(0, "pageSize", "500");pageDoc.setValue(0, "subset", "");pageDoc.setValue(0, "sort", "");superDef.setDoc(pageDoc);return pageDoc;};this.clearWinEdits = function() {return true;};this.xwbDoc2Win = function() {return superDef.xwbDoc2Win();};this.xwbWin2Doc = function() {return superDef.xwbWin2Doc();};this.registerTriggers = function() {return superDef.registerTriggers();};this.registerListeners = function() {return superDef.registerListeners();};this.getWinID = function() {return superDef.getWinID();};this.getWinName = function() {return superDef.getWinName();};this.getWinType = function() {return superDef.getWinType();};this.getForm = function() {return superDef.getForm();};this.setForm = function(form) {return superDef.setForm(form);};this.setDoc = function(doc) {return superDef.setDoc(doc);};this.setModal = function(tfVal) {return superDef.setModal(tfVal);};this.isModal = function() {return superDef.isModal();};this.addComp = function(compID, compType, displayType, fieldName, formatter, eventType, eventHandler) {return superDef.addComp(compID, compType, displayType, fieldName, formatter, eventType, eventHandler);};this.getCompCount = function() {return superDef.getCompCount();};this.getCompID = function(col) {return superDef.getCompID(col);};this.getColbyCompID = function(compID) {return superDef.getColbyCompID(compID);};this.getCompType = function(col) {return superDef.getCompType(col);};this.getDisplayType = function(col) {return superDef.getDisplayType(col);};this.getFieldName = function(col) {return superDef.getFieldName(col);};this.getFormatter = function(col) {return superDef.getFormatter(col);};this.getEventType = function(col) {return superDef.getEventType(col);};this.getEventHandler = function(col) {return superDef.getEventHandler(col);};this.show = function() {return superDef.show();};this.addParm = function(parmKey, parmValue) {return superDef.addParm(parmKey, parmValue);};this.getParm = function(parmKey) {return superDef.getParm(parmKey);};}function xxDataDoc(docName) {this.docName = docName;var dmFieldName = 0;var dmRequired = 1;var dmValidator = 2;var dmFormatter = 3;var metaDoc = new Array();var dataDoc = null;this.addField = function(fieldName, required, validator, formatter) {var row = new Array(fieldName, required, validator, formatter);metaDoc.push(row);};this.setMeta = function(meta) {metaDoc = meta;};this.getValidator = function(col) {return metaDoc[col][dmValidator];};this.getColCount = function() {return metaDoc.length;};this.getColName = function(col) {try {return metaDoc[col][dmFieldName];} catch (e) {alert("Unable to find column " + col);}};this.getColPos = function(fieldName) {for (var dmRow=0; dmRow<metaDoc.length; dmRow++) {if (metaDoc[dmRow][dmFieldName] == fieldName) return dmRow;}return -1;};this.getFieldListComma = function() {var out = metaDoc[0][dmFieldName];for (var dmRow=1; dmRow<metaDoc.length; dmRow++) {out = out + "," + metaDoc[dmRow][dmFieldName];}return out;};this.setFromParms = function(row, parmList) {if (this.getRowCount() < row+1) {comSysError(new comErrorResp("JJS00036",doName + " not found in response"));return false;}var keys = parmList.getKeys();for (var parmPos=0; parmPos<keys.length; parmPos++) {if (this.getColPos(keys[parmPos]) > -1) {this.setValue(row, keys[parmPos], parmList.getParm(keys[parmPos]));}}return true;};this.getField = function(row, fieldName) {try {var col = this.getColPos(fieldName);return dataDoc[row][col];} catch (e) {alert("Unable to get field for fieldName " + fieldName);}};this.getColField = function(row, col) {if (dataDoc == null) this.init();try {return dataDoc[row][col];} catch (e) {alert("Unable to get field for column " + col);}};this.getValueEncode = function(row, fieldName) {try {var val = this.getValue(row, fieldName);val = this.encodeForXML(val);return val;} catch (e) {throw e;}};this.encodeForXML = function(val) {if (val.length < 1) return val;val = val.replace(/\&/g,'&amp;');val = val.replace(/</g,'&lt;');val = val.replace(/>/g,'&gt;');val = val.replace(/"/g,'&quot;');val = val.replace(/'/g,'&apos;');return val;};this.getValue = function(row, fieldName) {if (dataDoc == null) this.init();try {for (var dmCol=0; dmCol<metaDoc.length; dmCol++) {if (metaDoc[dmCol][dmFieldName] == fieldName) return dataDoc[row][dmCol].value;}comExceptTrace("JJS00039 Error getting value for field " + fieldName);throw "JJS00039 Error getting value for field " + fieldName;} catch (e) {comExceptTrace("JJS00040 Error getting value for field " + fieldName);throw "JJS00040 Error getting value for field " + fieldName + ": " + e;}};this.getColValue = function(row, col) {if (dataDoc == null) this.init();try {return dataDoc[row][col].value;} catch (e) {alert("Unable to get value for column " + col);}};this.setValue = function(row, fieldName, value) {if (dataDoc == null) this.init();try {value = value.replace(/^\s*/, "").replace(/\s*$/, "");dataDoc[row][this.getColPos(fieldName)].value = value;} catch (e) {alert("Unable to set value for " + fieldName);}};this.setColValue = function(row, col, value) {if (dataDoc == null) this.init();try {value = value.replace(/^\s*/, "").replace(/\s*$/, "");dataDoc[row][col].value = value;} catch (e) {alert("Unable to set col value " + col);}};this.editDoc = function() {try {var passedEdits = true;if (dataDoc == null) this.init();for (var row=0; row<dataDoc.length; row++) {for (var col=0; col<metaDoc.length; col++) {if (!this.edit(row, col)) passedEdits = false;}}return passedEdits;} catch (e) {alert("Unable to edit doc " + this.docName);}};this.edit = function(row, col) {try {if (dataDoc == null) this.init();if (metaDoc[col][dmRequired] == true) {if (dataDoc[row][col].value.length < 1) {dataDoc[row][col].status = false;dataDoc[row][col].msg = "A value is required";return dataDoc[row][col].status;}}if (metaDoc[col][dmValidator] == null) {dataDoc[row][col].status = true;dataDoc[row][col].msg = null;return dataDoc[row][col].status;}var resp = metaDoc[col][dmValidator](this, row, col);if (resp.isApproved()) {dataDoc[row][col].status = true;dataDoc[row][col].msg = resp.displayMsg;return dataDoc[row][col].status;} else if (resp.isDenied()) {dataDoc[row][col].status = false;dataDoc[row][col].msg = resp.displayMsg;return dataDoc[row][col].status;} else if (resp.isError()) {dataDoc[row][col].status = false;dataDoc[row][col].msg = resp.displayMsg;comTrace("JJS00224 " + this.docName + " edit. Validator returned system error response");comTraceResp(resp);return dataDoc[row][col].status;} else {dataDoc[row][col].status = false;dataDoc[row][col].msg = resp.displayMsg;comTrace("JJS00225 " + this.docName + " edit. Validator returned invalid response status");return dataDoc[row][col].status;}} catch (e) {comTrace("JJS00226 " + this.docName + " exception validating field at row " + row + " col " + col + ": " + e);throw e;}};this.getRowCount = function() {if (dataDoc == null) this.initDoc();return dataDoc.length;};this.getRowFormattedXML = function() {if (dataDoc == null) this.init();var out = "";var val = null;for (var col=0; col<metaDoc.length; col++) {val = this.encodeForXML(dataDoc[0][col].value);out = out + "<" + metaDoc[col][dmFieldName] + ">" + val + "</" + metaDoc[col][dmFieldName] + ">\n";}return out;};this.setRowFromDoc = function(row, srcDoc, srcRow) {try {if (dataDoc == null) this.init();var srcColPos = -1;for (var col=0; col<metaDoc.length; col++) {srcColPos = srcDoc.getColPos(metaDoc[col][dmFieldName]);if (srcColPos < 0) {dataDoc[row][col].value = "";} else {dataDoc[row][col].value = srcDoc.getColValue(srcRow,srcColPos);}}} catch (e) {alert("Unable to set row " + e);}};this.updateRowFromDoc = function(row, srcDoc, srcRow) {try {if (dataDoc == null) this.init();var srcColPos = -1;for (var col=0; col<metaDoc.length; col++) {srcColPos = srcDoc.getColPos(metaDoc[col][dmFieldName]);if (srcColPos > -1) {dataDoc[row][col].value = srcDoc.getColValue(srcRow,srcColPos);}}} catch (e) {alert("Unable to set row " + e);}};this.addRow = function() {try {if (dataDoc == null) this.initDoc();var row = new Array(this.getColCount());for (var i=0; i<row.length; i++) {row[i] = new xxDataDocField("");}dataDoc.push(row);} catch (e) {alert("Unable to add row");}};this.addRowData = function(rowIN) {try {if (dataDoc == null) this.init();if (rowIN.length != metaDoc.length) {comExceptTrace("JJS00104 addRowData rowIN contains wrong number of columns");return false;}var newRow = new Array(this.getColCount());for (var i=0; i<newRow.length; i++) {newRow[i] = new xxDataDocField(rowIN[i]);}dataDoc.push(newRow);return true;} catch (e) {comExceptTrace("JJS00105 Exception addRowData: " + e);return false;}};this.findRow = function(col, value) {for (var row=0; row<dataDoc.length; row++) {if (dataDoc[row][col].value == value) return row;}return -1;};this.findRowByMult = function(fieldsArray, valsArray) {for (var cols=0; cols<fieldsArray.length; cols++) fieldsArray[cols] = this.getColPos(fieldsArray[cols]);var found = true;for (var row=0; row<dataDoc.length; row++) {found = true;for (var cols=0; cols<fieldsArray.length; cols++) {if (dataDoc[row][fieldsArray[cols]].value != valsArray[cols]) {found = false;break;}}if (found) return row;}return -1;};this.initDoc = function() {dataDoc = new Array();};this.clear = function() {dataDoc = null;};this.getDataDocArray = function() {return dataDoc;};this.init = function() {dataDoc = new Array();};this.initOne = function() {dataDoc = new Array();this.addRow();};this.copyFromDoc = function(fromDoc) {var currentRow = -1;for (var fromRow=0; fromRow < fromDoc.getRowCount(); fromRow++) {this.addRow();currentRow = this.getRowCount() - 1;for (var col=0; col<this.getColCount(); col++) {if (fromDoc.getColPos(metaDoc[col][dmFieldName]) > -1) {this.setColValue(currentRow, col, fromDoc.getValue(fromRow, metaDoc[col][dmFieldName]));}}}};this.getCookieFormat = function() {var out = "";for (var row=0; row<this.getRowCount(); row++) {if (row > 0) out = out + "~";for (var col=0; col<this.getColCount(); col++) {if (col == 0) {out = this.getColValue(row, col);} else {out = out + "|" + this.getColValue(row, col);}}}return out;};this.setFromCookie = function(cookData) {try {this.clear();if (cookData == null || cookData.length < 1) return true;var rows = cookData.split("~");for (var row=0; row<rows.length; row++) {this.addRow();var cols = rows[row].split("|");if (cols.length != this.getColCount()) throw "JJS00227 cookie to document mismatch col count";for (var col=0; col<cols.length; col++) {this.setColValue(row,col,cols[col]);}}return true;} catch (e) {throw "JJS00228 setFromCookie Exception" + e;}};this.setFromCookieQuiet = function(cookData) {try {this.clear();if (cookData == null || cookData.length < 1) return true;var rows = cookData.split("~");for (var row=0; row<rows.length; row++) {this.addRow();var cols = rows[row].split("|");for (var col=0; col<cols.length; col++) {this.setColValue(row,col,cols[col]);}}return true;} catch (e) {throw "JJS00457 setFromCookie Exception" + e;}};this.show = function() {alert(this.showGet());};this.showTrace = function() {comTrace(this.showGet());};this.showGet = function() {var out = docName + "\n";for (var col=0; col<metaDoc.length-1; col++) {out = out + metaDoc[col][dmFieldName] + ",";}out = out + metaDoc[metaDoc.length-1][dmFieldName];out = out + "\n";if (dataDoc == null) {out = out + "Uninitialized!!!\n";} else {for (var row=0; row<dataDoc.length; row++) {for (var col=0; col<metaDoc.length; col++) {out = out + "  " + metaDoc[col][dmFieldName] + "=" +dataDoc[row][col].value + "|" +dataDoc[row][col].status + "|" +dataDoc[row][col].msg + "\n";}}out = out + "row " + row + "\n";}return out;};}function xxDataDocField(value) {this.value = value;this.status = null;this.msg = null;}function xxfldGetNumeric(strVal) {var retVal = "";var sign = "";for (var i=0; i < strVal.length; i++) {var c = strVal.substring(i,i+1);if (c=="-"||c=="(") {sign = "-";continue;}if (c=="1"||c=="2"||c=="3"||c=="4"||c=="5"||c=="6"||c=="7"||c=="8"||c=="9"||c=="0") retVal = retVal + c;}retVal = retVal.replace(/^[0]+/g,"");if (retVal.length < 1) return "0";return sign + retVal;}function xxfldGetDigits(strVal) {var retVal = "";for (var i=0; i < strVal.length; i++) {var c = strVal.substring(i,i+1);if (c=="1"||c=="2"||c=="3"||c=="4"||c=="5"||c=="6"||c=="7"||c=="8"||c=="9"||c=="0") retVal = retVal + c;}return retVal;}function xxfldIsAlpha(value) {var include = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";if (value.length < 1) return true;for (var i=0; i<value.length; i++) {if (include.indexOf(value.charAt(i),0) == -1) return false;}return true;}function xxfldIsNumeric(value) {var include = "0123456789";if (value.length < 1) return true;for (var i=0; i<value.length; i++) {if (include.indexOf(value.charAt(i),0) == -1) return false;}return true;}function xxfldContainsOnly(value, checkChars) {if (value.length < 1) return true;for (var i=0; i<value.length; i++) {if (checkChars.indexOf(value.charAt(i),0) == -1) return false;}return true;}function popNew(url) {var newwindow=window.open(url,'New','left=0, top=0, width=1024, height=768, toolbar=yes, directories=yes, location=yes, status=yes, menubar=yes, resizable=yes, scrollbars=yes');if (window.focus) {newwindow.focus();}}function popPDF(url) {var pdfwindow=window.open(url,'PDF','left=10, top=20, width=878, height=600, toolbar=yes, directories=yes, location=yes, status=yes, menubar=yes, resizable=yes, scrollbars=yes');if (window.focus) {pdfwindow.focus();}}function popCenter(url, name, w, h) {w += 32;h += 96;var wleft = (screen.width - w) / 2;var wtop = (screen.height - h) / 2;if (wleft < 0) {w = screen.width;wleft = 0;}if (wtop < 0) {h = screen.height;wtop = 0;}var win = window.open(url,name,'width=' + w + ', height=' + h + ', ' +'left=' + wleft + ', top=' + wtop + ', ' +'location=no, menubar=no, directories=no' +'status=no, toolbar=no, scrollbars=no, resizable=no');win.resizeTo(w, h);win.moveTo(wleft, wtop);win.focus();}function onOff(id) {var oo = document.getElementById(id);if (oo.className == 'off') {oo.className = 'on';}else {oo.className = 'off';}}function setOn(id) {try {var on = document.getElementById(id);if (on.className == 'off') on.className = 'on';} catch (e) {throw "JJS00332 setOn id " + id + " Exception " + e;}}function setOff(id) {var off = document.getElementById(id);if (off.className == 'on') {off.className = 'off';}else return;}function hideThis(id) {var hide = document.getElementById(id);if (hide.className != 'never') {hide.className = 'hide';}else return;}function hereThis(id) {var here = document.getElementById(id);if (here.className != 'never') {here.className = 'here';}else return;}function pressThis(id) {var press = document.getElementById(id);if (press.className != 'never') {press.className = 'pressed';}else return;}function disThis(id) {var dis = document.getElementById(id);if (dis.className != 'never') {dis.className = 'dissed';}else return;}function hoverThis(id) {var hover = document.getElementById(id);if (hover.className != 'never') {hover.className = 'hover';}else return;}function oddThis(id) {var odd = document.getElementById(id);if (odd.className == 'hover') {odd.className = 'odd';}else return;}function evenThis(id) {var even = document.getElementById(id);if (even.className == 'hover') {even.className = 'even';}else return;}function emEnc(account,domain,name) {document.write('<a href="mailto:'+account+'&#64;'+domain+'&#46;com?subject='+name+'">'+name+'</a>');}function xxfPipeListToComma(dataDoc, row, col) {var field = dataDoc.getColField(row, col);if (field.status == null || field.status == false) return field.value;var cVal = comReplaceAll(field.value,"|",", ");cVal = comTrim(cVal);return cVal;}function xxfDateMMDDYYYYSlash(dataDoc, row, col) {try {var field = dataDoc.getColField(row, col);if (field.status == null || field.status == false) return field.value;if (field.value.length < 1) return "";var dateParts = field.value.split("-");return dateParts[1].toString() + "/" + dateParts[2].toString() + "/" + dateParts[0].toString();} catch (e) {return dataDoc.getColValue(row, col);}}function xxfDate(dateVal, format) {try {var dateParts = dateVal.split("-");var retVal = format.replace(/MM/g, dateParts[1].toString());var retVal = retVal.replace(/DD/g, dateParts[2].toString());var retVal = retVal.replace(/YYYY/g, dateParts[0].toString());var yyVal = dateParts[0].substring(2);var mVal = dateParts[1].replace(/^[0]+/g,"");var dVal = dateParts[2].replace(/^[0]+/g,"");var retVal = retVal.replace(/YY/g, yyVal);var retVal = retVal.replace(/M/g, mVal);var retVal = retVal.replace(/D/g, dVal);return retVal;} catch (e) {return dateVal;}}function xxfNumDC(dataDoc, row, col) {var field = dataDoc.getColField(row, col);if (field.status == null || field.status == false) return field.value;if (field.value.length < 1) return "";var numParts = field.value.split(".");var digits = numParts[0];var regExp = /(\d+)(\d{3})/;while (regExp.test(digits)) {digits = digits.replace(regExp, '$1' + ',' + '$2');}return "$" + digits;}function xxfNumC(dataDoc, row, col) {try {var field = dataDoc.getColField(row, col);if (field.status == null || field.status == false) return field.value;if (field.value.length < 1) return "";var numParts = field.value.split(".");var digits = numParts[0];var regExp = /(\d+)(\d{3})/;while (regExp.test(digits)) {digits = digits.replace(regExp, '$1' + ',' + '$2');}return digits;} catch (e) {comExceptTrace("JJS00315 formatter exception " + e);try {return dataDoc.getColField(row, col).value;}catch (e) {return "";}}}function xxfBoolYesNo(dataDoc, row, col) {var field = dataDoc.getColField(row, col);if (field.status == null || field.status == false) return field.value;if (field.value.length < 1) return "";if (field.value == "true") return "Yes";if (field.value == "false") return "No";return field.value;}function xxfPhone(dataDoc, row, col) {var field = dataDoc.getColField(row, col);if (field.status == null || field.status == false) return field.value;var phoneVal = field.value;if (phoneVal.length < 1) return "";var digits = xxfldGetDigits(phoneVal);digits = digits.replace(/^[1]+/g,"");if (digits.length < 10) return phoneVal;var s1 = digits.substring(0,3);var s2 = digits.substring(3,6);var s3 = digits.substring(6,10);var s4 = "";if (digits.length > 10) s4 = digits.substring(10);var retVal = "(" + s1 + ") " + s2 + "-" + s3;if (s4.length > 0) retVal = retVal + " x" + s4;return retVal;}function xxiDate(dateVal) {var byear = 0;var bmonth = 1;var bday = 2;if (dateVal.length < 1) return "";var dateValUpper = dateVal.toUpperCase();if (dateValUpper == "T" || dateValUpper == "TO" || dateValUpper == "TOD" || dateValUpper == "TODA" || dateValUpper == "TODAY" ) {var tday = new Date();var baseDate = new Array(tday.getFullYear(), tday.getMonth() + 1, tday.getDate());return xxiDateReturn(baseDate);}if (dateValUpper.substr(0,3) == "TOM") {var tday = new Date();tday.setDate(tday.getDate() + 1);var baseDate = new Array(tday.getFullYear(), tday.getMonth() + 1, tday.getDate());return xxiDateReturn(baseDate);}if (dateValUpper == "Y" || dateValUpper == "YE" || dateValUpper.substr(0,3) == "YES") {var tday = new Date();tday.setDate(tday.getDate() - 1);var baseDate = new Array(tday.getFullYear(), tday.getMonth() + 1, tday.getDate());return xxiDateReturn(baseDate);}var dateParts = new Array();var part = "";for (i=0; i<dateVal.length; i++) {var c = dateVal.charAt(i);if (((c < "0") || (c > "9"))) {if (part.length > 0) {dateParts.push(part);part = "";}} else {if (c == "0" && part.length < 1) continue;part = part + c;}}if (part.length > 0) {dateParts.push(part);}if (dateParts.length < 1) return null;if (dateParts.length == 1) {if (dateParts[0].length == 8) {var baseDate = new Array(dateParts[0].substr(0,4), dateParts[0].substr(4,2), dateParts[0].substr(6,2));return xxiDateReturn(baseDate);}if (dateParts[0] < 32) {var tday = new Date();var baseDate = new Array(tday.getFullYear(), tday.getMonth() + 1, dateParts[0]);if (baseDate[bday] < 1) baseDate[bday] = tday.getDate();if (baseDate[bday] > 28) {var dim = xxiDateDaysInMonth(baseDate[bmonth],baseDate[byear]);if (baseDate[bday] > dim) baseDate[bday] = dim;}return xxiDateReturn(baseDate);}return null;}if (dateParts.length == 2) {if (dateParts[0] < 1) return null;if (dateParts[0] < 13) {var tday = new Date();var baseDate = new Array(tday.getFullYear(), dateParts[0], dateParts[1]);if (baseDate[bday] < 1) baseDate[bday] = tday.getDate();if (baseDate[bday] > 28) {var dim = xxiDateDaysInMonth(baseDate[bmonth],baseDate[byear]);if (baseDate[bday] > dim) baseDate[bday] = dim;}return xxiDateReturn(baseDate);}if (dateParts[0] > 1900 && dateParts[0] < 3000) {var tday = new Date();var baseDate = new Array(dateParts[0], dateParts[1], 1);if (baseDate[bmonth] < 1) baseDate[bmonth] = tday.getMonth() + 1;if (baseDate[bmonth] > 12) return null;if (baseDate[bday] > 28) {var dim = xxiDateDaysInMonth(baseDate[bmonth],baseDate[byear]);if (baseDate[bday] > dim) baseDate[bday] = dim;}return xxiDateReturn(baseDate);}return null;}if (dateParts.length == 3) {if (dateParts[0] < 13) {var tday = new Date();var baseDate = new Array(dateParts[2], dateParts[0], dateParts[1]);if (baseDate[bday] > 28) {var dim = xxiDateDaysInMonth(baseDate[bmonth],baseDate[byear]);if (baseDate[bday] > dim) baseDate[bday] = dim;}if (baseDate[byear].length == 1) {var tdayYear = tday.getFullYear();comTrace(tdayYear);var tdayCent = tdayYear.toString().substring(0,2);comTrace(tdayCent);baseDate[byear] = tdayCent + "0" + baseDate[byear];comTrace(tdayCent);return xxiDateReturn(baseDate);}if (baseDate[byear].length == 2) {var tdayYear = tday.getFullYear();var tdayCent = tdayYear.toString().substring(0,2);if (baseDate[byear] < 40) {baseDate[byear] = tdayCent + baseDate[byear];} else {tdayCent = tdayCent - 1;baseDate[byear] = tdayCent + baseDate[byear];}return xxiDateReturn(baseDate);}if (baseDate[byear].length == 3) {baseDate[byear] = baseDate[byear] + "0";return xxiDateReturn(baseDate);}if (baseDate[byear].length == 4) {return xxiDateReturn(baseDate);}return null;}var baseDate = new Array(dateParts[0], dateParts[1], dateParts[2]);return xxiDateReturn(baseDate);}return null;}function xxiDateReturn(baseDate) {var byear = 0;var bmonth = 1;var bday = 2;if (baseDate[byear] == null) return null;if (baseDate[bmonth] == null) return null;if (baseDate[bday] == null) return null;if (baseDate[byear] < 1900) return null;if (baseDate[byear] > 3000) return null;if (baseDate[bmonth] < 1) return null;if (baseDate[bmonth] > 12) return null;if (baseDate[bday] < 1) return null;if (baseDate[bday] > 28) {var dim = xxiDateDaysInMonth(baseDate[bmonth],baseDate[byear]);if (baseDate[bday] > dim) return null;}var mStr = baseDate[bmonth].toString();if (mStr.length < 2) mStr = "0" + mStr;var dStr = baseDate[bday].toString();if (dStr.length < 2) dStr = "0" + dStr;return baseDate[byear] +"-" + mStr + "-" + dStr;}function xxiDateDaysInMonth(month,year) {if (month == 1) return 31;if (month == 2) {var testDate = new Date(year, month, 0);return testDate.getDate();}if (month == 3) return 31;if (month == 4) return 30;if (month == 5) return 31;if (month == 6) return 30;if (month == 7) return 31;if (month == 8) return 31;if (month == 9) return 30;if (month == 10) return 31;if (month == 11) return 30;if (month == 12) return 31;return - 1;}function xxsDate(format) {this.format = format;this.interpret = function(dateVal) {var interpVal = xxiDate(dateVal);if (interpVal == null) return null;return xxfDate(interpVal, format);interpreter = interpFunc;};}function xxsSuggester(winID, compID, interpFunc) {try {var sug = new xxsSuggestControl(compID);sug.setInterpreter(interpFunc);comWEQ.listen(winID, compID, "onfocus", "suggestOnFocus", sug, sug.sugOnFocus);comWEQ.listen(winID, compID, "onchange", "suggestOnBlur", sug, sug.sugOnChange);comWEQ.listen(winID, compID, "onblur", "suggestOnBlur", sug, sug.sugBlur);comWEQ.listen(winID, compID, "onkeyup", "suggestOnKeyUp", sug, sug.sugKeyUp);comWEQ.listen(winID, compID, "onkeypress", "suggestOnKeyPress", sug, sug.sugKeyPress);} catch (e) {comExceptTrace("xxsSuggester Exception " + e);}}function xxsSuggestControl(srcID) {var suggestNode = document.getElementById("valSuggestControl");var suggestText = document.getElementById("valSuggestText");var srcNode = document.getElementById(srcID);var holdVal = "";var interpreter = null;var formatter = null;var show = function(srcID) {suggestNode.className = "on";$(suggestNode).clonePosition(document.getElementById(srcID));var h = $(suggestNode).getHeight();var y = $(suggestNode).offsetTop;var newTop = y +h;var newTopStr = newTop + "px";suggestNode.style.top = newTopStr;return;};this.setInterpreter = function(interpFunc) {interpreter = interpFunc;};this.setFormatter = function(formatterFunc) {formatter = formatterFunc;};this.sugOnFocus = function(e) {try {holdVal = srcNode.value;} catch (e) {comExceptTrace("sugOnFocus Exception " + e);return;}};this.sugKeyPress = function(e) {try {var keyName = comKeyName(e);if (keyName == "ESC") {if (suggestNode.className == "on") {suggestNode.className = "off";return false;}return true;}return true;} catch (e) {comExceptTrace("sugKeyPress Exception " + e);return false;}};this.sugKeyUp = function(e) {try {var keyName = comKeyName(e);if (keyName == "ENTER") {if (suggestNode.className == "on") {suggestNode.className = "off";var sugVal = suggestText.innerHTML;if (sugVal != "hmmm...") srcNode.value = suggestText.innerHTML;return false;}return true;}var curVal = srcNode.value;if (curVal == holdVal) return true;if (suggestNode.className == "off") {var eid = bbsGetEventID(e);show(eid);}holdVal = curVal;var interpVal = interpreter.interpret(curVal);if (interpVal == null) interpVal = "hmmm...";suggestText.innerHTML = interpVal;return true;} catch (e) {comExceptTrace("sugKeyUp Exception " + e);return false;}};this.sugOnChange = function(e) {try {if (suggestNode.className != "off") {suggestNode.className = "off";var sugVal = suggestText.innerHTML;if (sugVal != "hmmm...") {srcNode.value = suggestText.innerHTML;}}} catch (e) {comExceptTrace("sugOnChange Exception " + e);return;}};this.sugBlur = function(e) {try {if (suggestNode.className != "off") {suggestNode.className = "off";}} catch (e) {comExceptTrace("sugBlur Exception " + e);return;}};}function xxvEmail(dataDoc, row, col) {try {var emailVal = dataDoc.getColValue(row, col);if (emailVal.length < 1) return comApprovedResp("JJS00239", "");var atPos=emailVal.indexOf("@");if (atPos < 1) return comDeniedResp("JJS00240", "Invalid email address");var dotPos=emailVal.lastIndexOf(".");if (dotPos-atPos<2) return comDeniedResp("JJS00241", "Invalid email address");return comApprovedResp("JJS00085", "");} catch (e) {throw "JJS00242 xxvEmail caught exception " + e;}}function xxvDateTime(dataDoc, row, col) {try {var dateVal = dataDoc.getColValue(row, col);if (dateVal.length < 1) return comApprovedResp("JJS00083", "");dateVal = dateVal.split(" ")[0];dateVal = xxiDate(dateVal);if (dateVal == null) return comDeniedResp("JJS00084", "Invalid date");dataDoc.setColValue(row, col, dateVal);return comApprovedResp("JJS00085", "");} catch (e) {throw "JJS00243 xxvDate caught exception " + e;}}function xxvDate(dataDoc, row, col) {try {var dateVal = dataDoc.getColValue(row, col);if (dateVal.length < 1) return comApprovedResp("JJS00083", "");dateVal = xxiDate(dateVal);if (dateVal == null) return comDeniedResp("JJS00084", "Invalid date");dataDoc.setColValue(row, col, dateVal);return comApprovedResp("JJS00085", "");} catch (e) {throw "JJS00243 xxvDate caught exception " + e;}}function xxvNumber(dataDoc, row, col) {try {var numVal = dataDoc.getColValue(row, col);if (numVal.length < 1) return comApprovedResp("JJS00083", "");if (!xxfldContainsOnly(numVal, "0123456789$-(),.")) return comDeniedResp("JJS00084", "Invalid number.");var posVal = true;if (numVal.indexOf("-") > -1) posVal = false;if (numVal.indexOf("(") > -1) posVal = false;if (numVal.indexOf(".") == 0) {dataDoc.setColValue(row, col, "0");return comApprovedResp("JJS00085", "");}if (numVal.indexOf(".") > 0) numVal = numVal.split(".")[0];numVal = comReplaceAll(numVal, "-", "");numVal = comReplaceAll(numVal, "(", "");numVal = comReplaceAll(numVal, ")", "");numVal = numVal.replace(/^[0]+/g,"");if (numVal.length < 1) {dataDoc.setColValue(row, col, "0");return comApprovedResp("JJS00085", "");}if (!posVal) numVal = "-" + numVal;dataDoc.setColValue(row, col, numVal);return comApprovedResp("JJS00085", "");} catch (e) {throw "JJS00244 xxvNumber caught exception " + e;}}function xxvPhone(dataDoc, row, col) {try {var phoneVal = dataDoc.getColValue(row, col);if (phoneVal.length < 1) return comApprovedResp("JJS00083", "");var digits = xxfldGetDigits(phoneVal);digits = digits.replace(/^[1]+/g,"");if (digits.length < 10) return comDeniedResp("JJS00084", "Invalid phone number. Example 555-555-5555 x123");var s1 = digits.substring(0,3);var s2 = digits.substring(3,6);var s3 = digits.substring(6,10);var s4 = "";if (digits.length > 10) s4 = digits.substring(10);var retVal = s1 + "-" + s2 + "-" + s3;if (s4.length > 0) retVal = retVal + " x" + s4;dataDoc.setColValue(row, col, retVal);return comApprovedResp("JJS00085", "");} catch (e) {throw "JJS00245 xxvPhone caught exception " + e;}}function xxvBoolean(dataDoc, row, col) {try {var booVal = dataDoc.getColValue(row, col);if (booVal.length < 1) return comApprovedResp("JJS00083", "");booVal = booVal.toUpperCase();if (booVal == "TRUE" || booVal == "T" || booVal == "1" || booVal == "Y" || booVal == "YES" || booVal == "+") {dataDoc.setColValue(row, col, "true");return comApprovedResp("JJS00085", "");}if (booVal == "FALSE" || booVal == "F" || booVal == "0" || booVal == "N" || booVal == "NO" || booVal == "-") {dataDoc.setColValue(row, col, "false");return comApprovedResp("JJS00085", "");}return comDeniedResp("JJS00084", "Invalid boolean value. Example True or False");} catch (e) {throw "JJS00246 xxvBoolean caught exception " + e;}}function xxvPostalCode(dataDoc, row, col) {try {var zipVal = dataDoc.getColValue(row, col);if (zipVal.length < 1) return comApprovedResp("JJS00086", "Postal Code is valid");var digits = xxfldGetDigits(zipVal);if (digits.length != 5 && digits.length != 9) return comDeniedResp("JJS00087", "Invalid Postal Code. Example 58638 or 58638-1234");var retVal = digits.substring(0,5);var box = "";if (digits.length == 9) box = digits.substring(5);if (box.length > 0) retVal = retVal + "-" + box;dataDoc.setColValue(row, col, retVal);return comApprovedResp("JJS00088", "Postal Code is valid");} catch (e) {throw "JJS00247 xxvPostalCode caught exception " + e;}}function acForm(formName, modal) {this.formName = formName;this.modal = modal;var winDefList = new Array();this.cmdReq = null;this.cmdResp = null;this.setModal = function(tfVal) {modal = tfVal;};this.isModal = function() {return modal;};this.addWinDef = function(winDef) {var winID = winDef.getWinID();for (var parmPos=0; parmPos<winDefList.length; parmPos++) {if (winDefList[parmPos][0] == winID) {winDefList[parmPos][1] = winDef;return;}}var parm = new Array(winID, winDef);winDefList.push(parm);winDef.setForm(this);};this.showWinDefList = function() {for (var parmPos=0; parmPos<winDefList.length; parmPos++) {alert(winDefList[parmPos][0]);}};this.getWinDef = function(winID) {for (var parmPos=0; parmPos<winDefList.length; parmPos++) {if (winDefList[parmPos][0] == winID) return winDefList[parmPos][1];}return null;};this.getWinDoc = function(winID) {for (var parmPos=0; parmPos<winDefList.length; parmPos++) {if (winDefList[parmPos][0] == winID) return winDefList[parmPos][1].getDoc();}return null;};this.getWinDefbyType = function(defType) {for (var parmPos=0; parmPos<winDefList.length; parmPos++) {if (winDefList[parmPos][1].getDefType() == defType) return winDefList[parmPos][1];}return null;};this.xwbDocs2Win = function() {var winDef = null;for (var parmPos=0; parmPos<winDefList.length; parmPos++) {winDef = winDefList[parmPos][1];winDef.xwbDoc2Win();}};this.xwbWins2Docs = function() {var winDef = null;for (var parmPos=0; parmPos<winDefList.length; parmPos++) {winDef = winDefList[parmPos][1];winDef.xwbWin2Doc();}};this.registerTriggers = function() {var winDef = null;for (var parmPos=0; parmPos<winDefList.length; parmPos++) {winDef = winDefList[parmPos][1];winDef.registerTriggers();}};this.registerListeners = function() {var winDef = null;for (var parmPos=0; parmPos<winDefList.length; parmPos++) {winDef = winDefList[parmPos][1];winDef.registerListeners();}};this.showForm = function() {this.setFormResp(comApprovedResp("JJS00076", ""));var winDef = null;for (var parmPos=0; parmPos<winDefList.length; parmPos++) {winDef = winDefList[parmPos][1];winDef.clearWinEdits();}if (this.isModal()) setOn('modalWin');setOn(this.formName);};this.hideForm = function() {if (this.isModal()) setOff('modalWin');setOff(this.formName);comWEQ.fireEvent(this.formName, this.formName, "FormClose", this);};this.edit = function() {this.xwbWins2Docs();var winDef = null;var passedEdits = true;for (var parmPos=0; parmPos<winDefList.length; parmPos++) {winDef = winDefList[parmPos][1];if (!winDef.getDoc().editDoc()) passedEdits = false;winDef.applyWinEdits();}if (passedEdits) {this.setFormResp(comApprovedResp("JJS00138", ""));} else {this.setFormResp(comDeniedResp("JJS00139", "Please correct the errors and try again."));}return passedEdits;};this.clearEdits = function() {var winDef = null;for (var parmPos=0; parmPos<winDefList.length; parmPos++) {winDef = winDefList[parmPos][1];winDef.clearWinEdits();}this.setFormResp(comApprovedResp("JJS00140", ""));};this.setFormResp = function(editResp) {try {var respNode = document.getElementById(this.formName + ".RESPMSG");if (respNode != null && respNode != "undefined") {respNode.innerHTML = editResp.displayMsg;}} catch (e) {}};}function acWinDef(winID, winName, winType) {this.winID = winID;this.winName = winName;this.winType = winType;var formHandle = null;var metaDoc = new Array();var compIDx = 0;var compTypex = 1;var displayTypex = 2;var fieldNamex = 3;var formatterx = 4;var eventTypex = 5;var eventHandlerx = 6;var parmList = new Array();var dataDoc = null;this.setForm = function(form) {formHandle = form;};this.getForm = function() {return formHandle;};this.setDoc = function(doc) {dataDoc = doc;};this.getDoc = function() {return dataDoc;};this.getWinID = function() {if (this.winID == null) return "";return this.winID;};this.getWinName = function() {if (this.winName == null) return "";return this.winName;};this.getWinType = function() {if (this.winID == null) return "";return this.winType;};this.setModal = function(tfVal) {this.addParm("MODAL", tfVal);};this.isModal = function() {var modal = this.getParm("MODAL");if (modal == null) return false;return modal;};this.addComp = function(compID, compType, displayType, fieldName, formatter, eventType, eventHandler) {var row = new Array(compID, compType, displayType, fieldName, formatter, eventType, eventHandler);metaDoc.push(row);};this.getCompCount = function() {return metaDoc.length;};this.getCompID = function(col) {try {return metaDoc[col][compIDx];} catch (e) {throw("JJS00041" + this.getWinID() + " error getting component for column " + col);}};this.getColbyCompID = function(compID) {for (var i=0; i<metaDoc.length; i++) {if (metaDoc[i][compIDx] == compID) return i;}return -1;};this.getCompType = function(col) {try {return metaDoc[col][compTypex];} catch (e) {throw("JJS00042" + this.getWinID() + " error getting component type for column " + col);}};this.getDisplayType = function(col) {try {return metaDoc[col][displayTypex];} catch (e) {throw("JJS00043" + this.getWinID() + " error getting component display type for column " + col);}};this.getFieldName = function(col) {try {return metaDoc[col][fieldNamex];} catch (e) {throw("JJS00044" + this.getWinID() + " error getting field name for column " + col);}};this.getFormatter = function(col) {try {return metaDoc[col][formatterx];} catch (e) {throw("JJS00045" + this.getWinID() + " error getting field formatter for column " + col);}};this.getEventType = function(col) {try {return metaDoc[col][eventTypex];} catch (e) {throw("JJS00046" + this.getWinID() + " error getting event type for column " + col);}};this.getEventHandler = function(col) {try {return metaDoc[col][eventHandlerx];} catch (e) {throw("JJS00047" + this.getWinID() + " error getting event handler for column " + col);}};this.show = function() {var out = winName + "\n";for (var i=0; i<metaDoc.length; i++) {out = out + metaDoc[i][compIDx] + " - " +metaDoc[i][compTypex] + " - " +metaDoc[i][displayTypex] + " - " +metaDoc[i][fieldNamex] + " - " +metaDoc[i][eventTypex] + "\n";}alert(out);};this.addParm = function(parmKey, parmValue) {for (var parmPos=0; parmPos<parmList.length; parmPos++) {if (parmList[parmPos][0] == parmKey) {parmList[parmPos][1] = parmValue;return;}}var parm = new Array(parmKey, parmValue);parmList.push(parm);};this.getParm = function(parmKey) {for (var parmPos=0; parmPos<parmList.length; parmPos++) {if (parmList[parmPos][0] == parmKey) return parmList[parmPos][1];}return null;};}function acWinDefEdit(winID, winName) {var superDef = new acWinDef(winID, winName, "EDIT");this.xwbDoc2Win = function() {for (var compCol=0; compCol<this.getCompCount(); compCol++) {this.xwbDocField2Win(compCol);}};this.xwbDocField2Win = function(compCol) {var compID = this.getCompID(compCol);var displayType = this.getDisplayType(compCol);var compType = this.getCompType(compCol);var dataDoc = this.getDoc();var docVal = null;if (compType == "switch") {if (displayType == "showselected") {docVal = dataDoc.getValue(0,this.getFieldName(compCol));if (this.getFormatter(compCol) != null) {this.getFormatter(compCol)(compID, docVal);return;}var compVal = compID.split(".")[2];if (compVal == docVal) {setOn(compID);} else {setOff(compID);}return;}if (displayType == "hideempty") {docVal = dataDoc.getValue(0,this.getFieldName(compCol));if (this.getFormatter(compCol) != null) {this.getFormatter(compCol)(compID, docVal);return;}if (docVal == null || docVal.length < 1) {setOff(compID);} else {setOn(compID);}return;}if (displayType == "showempty") {docVal = dataDoc.getValue(0,this.getFieldName(compCol));if (this.getFormatter(compCol) != null) {this.getFormatter(compCol)(compID, docVal);return;}if (docVal == null || docVal.length < 1) {setOn(compID);} else {setOff(compID);}return;}return;}if (displayType != "data") return;if (this.getFormatter(compCol) != null) {docVal = this.getFormatter(compCol)(dataDoc, 0, dataDoc.getColPos(this.getFieldName(compCol)));} else {docVal = dataDoc.getValue(0,this.getFieldName(compCol));}if (compType == "radio") {if (docVal == null || docVal.length < 1) {var nodes = document.getElementsByName(compID);for (var i=0; i<nodes.length; i++) {nodes[i].checked = false;}return;}var node = document.getElementById(compID + "." + docVal);if (node == null || node == "undefined") {comExceptTrace("JJS00100 " + this.getWinName() + " missing component ID " + compID + "." + docVal);return;}node.checked = true;return;}var node = document.getElementById(compID);if (node == null) {comExceptTrace("JJS00032 " + this.getWinName() + " missing component ID " + compID);return;}if (compType == "checkbox") {if (docVal == null || docVal.length < 1) docVal = "false";if (docVal == "true") {node.checked = true;} else {node.checked = false;}return;}if (node.nodeName == "INPUT") {node.value = docVal;return;}if (node.nodeName == "TEXTAREA") {node.value = docVal;node.innerHTML = docVal;return;}if (node.nodeName == "SPAN") {node.innerHTML = docVal;return;}if (node.nodeName == "SELECT") {var node = document.getElementById(this.getFieldName(compCol) + "." + docVal);if (node != null) {node.selected = true;}return;}if (node.nodeName == "B") {node.innerHTML = docVal;return;}};this.xwbWin2Doc = function() {try {var doc = this.getDoc();for (col=0; col<this.getCompCount(); col++) {this.xwbComp2Doc(col);}} catch (e) {alert(e);}};this.xwbComp2Doc = function(compPos) {try {var doc = this.getDoc();var compID = this.getCompID(compPos);var fieldName = this.getFieldName(compPos);var displayType = this.getDisplayType(compPos);var compType = this.getCompType(compPos);var nodeVal = "";if (displayType == "data") {if (compType == "radio") {var nodes = document.getElementsByName(compID);for (var i=0; i<nodes.length; i++) {if (nodes[i].checked == true) {var parts = nodes[i].id.split(".");doc.setValue(0, fieldName, parts[2]);break;}}return;}var node = document.getElementById(compID);if (node != null) {if (compType == "checkbox") {if (node.checked == true) {doc.setValue(0, fieldName, "true");} else {doc.setValue(0, fieldName, "false");}return;}if (node.nodeName == "INPUT") {nodeVal = node.value;} else if (node.nodeName == "TEXTAREA") {nodeVal = node.value;} else if (node.nodeName == "SELECT") {nodeVal = node.options[node.selectedIndex].value;} else if (node.nodeName == "B") {nodeVal = node.innerHTML;} else if (node.nodeName == "SPAN") {nodeVal = node.innerHTML;}doc.setValue(0, fieldName, nodeVal);}}} catch (e) {alert(e);}};this.registerTriggers = function() {var node = null;var compType = null;var eventType = null;for (var col=0; col< this.getCompCount(); col++) {eventType = this.getEventType(col);if (eventType == "none") continue;compType = this.getCompType(col);if (compType == "radio") {if (eventType == "default") {var nodes = document.getElementsByName(this.getCompID(col));for (var i=0; i<nodes.length; i++) {nodes[i].checked = false;nodes[i].onclick = function (evt) {return comWEQ.fireEvent("COMPWINID", "COMPID", "radioclick", evt)};}continue;} else {continue;}}if (compType == "select") {if (eventType == "default") {node = document.getElementById(this.getCompID(col));if (node == null) return comSysError(comErrorResp("JJS00295", "Uable to obtain element comp ID " + this.getCompID(col)));node.onchange = function (evt) {return comWEQ.fireEvent("COMPWINID", "COMPID", "onchange", evt)};continue;} else {continue;}}node = document.getElementById(this.getCompID(col));if (node == null) return comSysError(comErrorResp("JJS00033", "Uable to obtain element comp ID " + this.getCompID(col)));if (eventType == "default") {if (compType == "textfield") {node.onfocus = function (evt) {return comWEQ.fireEvent("COMPWINID", "COMPID", "onfocus", evt)};node.onblur = function (evt) {return comWEQ.fireEvent("COMPWINID", "COMPID", "onblur", evt)};node.onkeyup = function (evt) {return comWEQ.fireEvent("COMPWINID", "COMPID", "onkeyup", evt)};node.onkeypress = function (evt) {return comWEQ.fireEvent("COMPWINID", "COMPID", "onkeypress", evt)};} else if (compType == "button") {node.onclick = function (evt) {return comWEQ.fireEvent("COMPWINID", "COMPID", "buttonpress", evt)};node.onkeypress = function (evt) {return comWEQ.fireEvent("COMPWINID", "COMPID", "buttonpress", evt)};} else if (compType == "switch") {node.onclick = function (evt) {return comWEQ.fireEvent("COMPWINID", "COMPID", "buttonpress", evt)};node.onkeypress = function (evt) {return comWEQ.fireEvent("COMPWINID", "COMPID", "buttonpress", evt)};}}}};this.registerListeners = function() {var winID = this.getWinID();var compID = null;var compType = null;var eventType = null;for (var col=0; col<this.getCompCount(); col++) {eventType = this.getEventType(col);if (eventType == "none") continue;if (eventType == "default") {compType = this.getCompType(col);compID = this.getCompID(col);if (compType == "radio") {comWEQ.listen(winID, "*", "radioclick", winID, this, this.radioclick);continue;}if (compType == "select") {comWEQ.listen(winID, compID, "onchange", winID, this, this.selectchange);continue;}var node = document.getElementById(compID);if (node == null) return comSysError(comErrorResp("JJS00034", "Uable to obtain element comp ID " + compID));if (compType == "textfield") {comWEQ.listen(winID, compID, "onblur", winID, this, this.onblur);comWEQ.listen(winID, compID, "onkeypress", winID, this, this.onkeypress);} else if (compType == "button") {comWEQ.listen(winID, "*", "buttonpress", winID, this, this.buttonpress);} else if (compType == "switch") {comWEQ.listen(winID, "*", "buttonpress", winID, this, this.buttonpress);}}}};this.buttonpress = function(evt) {try {if (evt.type == "keypress") {var keyName = comKeyName(evt);if (keyName != "SPACE" && keyName != "ENTER") return true;}var compID = bbsGetEventID(evt);var compPos = this.getColbyCompID(compID);var node = document.getElementById(compID);this.cmdReq = node.name;this.getEventHandler(compPos)(evt);return false;} catch (e) {comSysError(comErrorResp("JJS00035", "buttonclick error " + e));return false;}};this.radioclick = function(evt) {try {if (evt.type == "keypress") {var keyName = comKeyName(evt);if (keyName != "SPACE" && keyName != "ENTER") return true;}var compID = bbsGetEventID(evt);var compParts = compID.split(".");compID = compParts[0] + "." + compParts[1];var compPos = this.getColbyCompID(compID);return this.getEventHandler(compPos)(evt);} catch (e) {comSysError(comErrorResp("JJS00101", "radioclick error " + e.message));return false;}};this.selectchange = function(evt) {try {var compID = bbsGetEventID(evt);var compPos = this.getColbyCompID(compID);return this.getEventHandler(compPos)(evt);} catch (e) {comSysError(comErrorResp("JJS00296", "selectchange error " + e));return false;}};this.onblur = function(evt) {try {if (!evt) var evt = window.event;var compID = bbsGetEventID(evt);var compPos = this.getColbyCompID(compID);this.xwbComp2Doc(compPos);var docField = this.getFieldName(compPos);var docFieldPos = this.getDoc().getColPos(docField);var editResp = this.getDoc().edit(0,docFieldPos);this.setFieldError(compID, editResp);if (editResp.isApproved()) {this.xwbDocField2Win(compPos);}return true;} catch (e) {}};this.onkeypress = function(evt) {var keyName = comKeyName(evt);if (keyName == "ESC") {var compID = this.getParm("ESCKEY");if (compID == null) return false;var compPos = this.getColbyCompID(compID);var node = document.getElementById(compID);this.cmdReq = node.name;this.getEventHandler(compPos)(evt);return false;}if (keyName == "ENTER") {var compID = this.getParm("ENTERKEY");if (compID == null) return false;var compPos = this.getColbyCompID(compID);var node = document.getElementById(compID);this.cmdReq = node.name;this.getEventHandler(compPos)(evt);return false;}return true;};this.clearWinEdits = function() {var editResp = comApprovedResp("JJS00297", "");var fieldName = null;for (var col=0; col< this.getCompCount(); col++) {fieldName = this.getFieldName(col);if (fieldName == null || fieldName.length < 1) continue;this.setFieldError(this.getCompID(col), editResp);}};this.applyWinEdits = function() {this.xwbWin2Doc();var dataDoc = this.getDoc();var passedEdits = true;var editResp = null;var fieldName = null;for (var col=0; col< this.getCompCount(); col++) {fieldName = this.getFieldName(col);if (fieldName == null || fieldName.length < 1) continue;editResp = dataDoc.edit(0,dataDoc.getColPos(fieldName));if (!editResp.isApproved()) {passedEdits = false;}this.setFieldError(this.getCompID(col), editResp);}return passedEdits;};this.applyFieldEdit = function(editFieldName) {this.xwbWin2Doc();var dataDoc = this.getDoc();var passedEdits = true;var editResp = null;var fieldName = null;for (var col=0; col< this.getCompCount(); col++) {fieldName = this.getFieldName(col);if (fieldName == null || fieldName.length < 1) continue;if (fieldName != editFieldName) continue;editResp = dataDoc.edit(0,dataDoc.getColPos(fieldName));if (!editResp.isApproved()) {passedEdits = false;}this.setFieldError(this.getCompID(col), editResp);}return passedEdits;};this.setFieldError = function(compID, editResp) {try {if (this.getCompType(this.getColbyCompID(compID)) == "radio") return;var cName = document.getElementById(compID).parentNode.className;cName = cName.toUpperCase();if (cName != "FIELDOK" && cName != "FIELDERROR") return;if (editResp.isApproved()) {document.getElementById(compID).parentNode.className="fieldok";document.getElementById(compID).title = "";} else if (editResp.isDenied()) {document.getElementById(compID).parentNode.className="fielderror";document.getElementById(compID).title = editResp.displayMsg;} else {document.getElementById(compID).parentNode.className="fielderror";document.getElementById(compID).title = editResp.displayMsg;}} catch (e) {comExceptTrace("JJS00102 setFieldError on comp " + compID + ": " + e);}};this.setWinResp = function(editResp) {try {var respNode = document.getElementById(this.getWinID() + ".RESPMSG");if (respNode != null && respNode != "undefined") {if (editResp.displayMsg.length < 1) {respNode.className="off";} else {respNode.className="feedback";}respNode.innerHTML = editResp.displayMsg;}} catch (e) {}};this.getWinID = function() {return superDef.getWinID();};this.getWinName = function() {return superDef.getWinName();};this.getWinType = function() {return superDef.getWinType();};this.getForm = function() {return superDef.getForm();};this.setForm = function(form) {return superDef.setForm(form);};this.getDoc = function() {return superDef.getDoc();};this.setDoc = function(doc) {return superDef.setDoc(doc);};this.setModal = function(tfVal) {return superDef.setModal(tfVal);};this.isModal = function() {return superDef.isModal();};this.addComp = function(compID, compType, displayType, fieldName, formatter, eventType, eventHandler) {return superDef.addComp(compID, compType, displayType, fieldName, formatter, eventType, eventHandler);};this.getCompCount = function() {return superDef.getCompCount();};this.getCompID = function(col) {return superDef.getCompID(col);};this.getColbyCompID = function(compID) {return superDef.getColbyCompID(compID);};this.getCompType = function(col) {return superDef.getCompType(col);};this.getDisplayType = function(col) {return superDef.getDisplayType(col);};this.getFieldName = function(col) {return superDef.getFieldName(col);};this.getFormatter = function(col) {return superDef.getFormatter(col);};this.getEventType = function(col) {return superDef.getEventType(col);};this.getEventHandler = function(col) {return superDef.getEventHandler(col);};this.show = function() {return superDef.show();};this.addParm = function(parmKey, parmValue) {return superDef.addParm(parmKey, parmValue);};this.getParm = function(parmKey) {return superDef.getParm(parmKey);};}function acWinDefRepList(winID, winName) {var superDef = new acWinDef(winID, winName, "REPLIST");var optionParms = null;var initialized = false;this.initTemplate = function() {if (initialized) return;initialized = true;var plateBody = null;var plateRow = null;var plateTD = null;var plateSpan = null;optionParms = new Array();var plateSpanTxt = new Array();var tBody = document.getElementById(this.getWinID() + ".BODYDEF");plateBody = tBody.cloneNode(false);plateBody.id=this.getWinID() + ".LISTID";var tEmpty = document.getElementById(this.getWinID() + ".EMPTY");if (tEmpty != null) {tEmptyClone = tEmpty.cloneNode(true);this.addParm("TEMPLATEEMPTY", tEmptyClone);}var tRowList = tBody.getElementsByTagName("tr");if (tRowList == null || tRowList.length != 1) return comDefaultSysError("JJS00058", "List template requires one row tag");var tRow = tRowList[0];var tdNode = null;var spanNode = null;plateRow = tRow.cloneNode(false);var tdList = tRow.getElementsByTagName("td");if (tdList == null) return comDefaultSysError("JJS00059", "List template missing td tags");for (var col=0; col<tdList.length; col++) {tdNode = tdList[col];spanNode = tdNode.childNodes[0];plateTD = tdNode.cloneNode(false);spanTD = spanNode.cloneNode(false);plateTD.appendChild(spanTD);plateRow.appendChild(plateTD);var spanTxt = tdList[col].childNodes[0].innerHTML;var tStart = spanTxt.search(/<COLTEMPLATE>/);if (tStart < 0) return comDefaultSysError("JJS00060", "List template missing COLTEMPLATE start tag");tStart = tStart + 13;var tEnd = spanTxt.search(/<\/COLTEMPLATE>/);if (tEnd < 0) return comDefaultSysError("JJS00061", "List template missing COLTEMPLATE end tag");var tTxt = spanTxt.substring(tStart,tEnd);var rx = new RegExp("  *","g");tTxt = tTxt.replace(rx, " ");tTxt = tTxt.replace(/\r/g, "\n");tTxt = tTxt.replace(/\n\n/g, "\n");tTxt = tTxt.replace(/\n\s/g, "\n");tTxt = tTxt.replace(/\s\n/g, "\n");tTxt = tTxt.replace(/\t/g, "");tTxt = tTxt.replace(/^\s*/, "").replace(/\s*$/, "");plateSpanTxt.push(tTxt);var tStart = spanTxt.search(/<OPTIONLIST>/);if (tStart > -1) {tStart = tStart + 12;tEnd = spanTxt.search(/<\/OPTIONLIST>/);if (tEnd < 0) return comDefaultSysError("JJS00062", "List template missing OPTIONLIST end tag");var optTxt = spanTxt.substring(tStart,tEnd);var rx = new RegExp("  *","g");optTxt = optTxt.replace(rx, " ");optTxt = optTxt.replace(/\r/g, "\n");optTxt = optTxt.replace(/\n\n/g, "\n");optTxt = optTxt.replace(/\n\s/g, "\n");optTxt = optTxt.replace(/\s\n/g, "\n");optTxt = optTxt.replace(/\t/g, "");optTxt = optTxt.replace(/^\s*/, "").replace(/\s*$/, "");var optionsArray = optTxt.split('\n');var oper = -1;for(var i = 0; i < optionsArray.length; i++) {var oper = optionsArray[i].indexOf("=",0);this.addOption(optionsArray[i].substring(0,oper), optionsArray[i].substring(oper+1));}}}this.addParm("TEMPLATEBODY", plateBody);this.addParm("TEMPLATEROW", plateRow);this.addParm("TEMPLATECOLINNER", plateSpanTxt);var repArray = new Array();var repColArray = null;var rep = null;var repCompID = null;var repDisplayType = null;var docCol = null;var docVal = null;var repXML = null;var dataDoc = this.getDoc();for (var tplCol=0; tplCol<plateSpanTxt.length; tplCol++) {repColArray = new Array();repXML = plateSpanTxt[tplCol];for (var defCol=0; defCol<this.getCompCount(); defCol++) {repCompID = this.getCompID(defCol);repDisplayType = this.getDisplayType(defCol);if (repDisplayType == "optionlist") {docCol = dataDoc.getColPos(this.getFieldName(defCol));rep = new Array(repCompID, "OPTIONLIST", docCol, defCol);repColArray.push(rep);for (var parmPos=0; parmPos<optionParms.length; parmPos++) {if (optionParms[parmPos][0].indexOf(repCompID + ".") > -1) {repXML = repXML + optionParms[parmPos][1];}}}if (repXML.indexOf(repCompID + ".COLID") > -1) {rep = new Array(repCompID, "COLID", tplCol, defCol);repColArray.push(rep);}if (repXML.indexOf(repCompID + ".VALUE") > -1) {docCol = dataDoc.getColPos(this.getFieldName(defCol));rep = new Array(repCompID, "VALUE", docCol, defCol);repColArray.push(rep);}}repArray.push(repColArray);}this.addParm("TEMPLATEREPARRAY", repArray);};this.addOption = function(parmKey, parmValue) {for (var parmPos=0; parmPos<optionParms.length; parmPos++) {if (optionParms[parmPos][0] == parmKey) {optionParms[parmPos][1] = parmValue;return;}}var parm = new Array(parmKey, parmValue);optionParms.push(parm);};this.getOption = function(parmKey) {for (var parmPos=0; parmPos<optionParms.length; parmPos++) {if (optionParms[parmPos][0] == parmKey) return optionParms[parmPos][1];}return null;};this.showOptions = function() {var showStr = "";for (var parmPos=0; parmPos<optionParms.length; parmPos++) {showStr = showStr + optionParms[parmPos][0] + "=" + optionParms[parmPos][1] + "\n";}alert(showStr);};this.xwbDoc2Win = function() {try {this.initTemplate();var templateBody = this.getParm("TEMPLATEBODY").cloneNode(false);var templateRow = this.getParm("TEMPLATEROW");var templateColInner = this.getParm("TEMPLATECOLINNER");var repArray = this.getParm("TEMPLATEREPARRAY");var dataDoc = this.getDoc();var docVal = null;var nRow = null;var nSpanNodes = null;var repHtml = null;var winID = this.getWinID();var formatter = null;if (dataDoc.getRowCount() < 1) {var templateEmpty = this.getParm("TEMPLATEEMPTY");if  (templateEmpty != null) {templateBody.appendChild(templateEmpty);var oldbody = document.getElementById(winID + ".LISTID");var tbl = document.getElementById(winID + ".TABLE");tbl.removeChild(oldbody);tbl.appendChild(templateBody);return;}}for (var row=0; row < dataDoc.getRowCount(); row++) {nRow = templateRow.cloneNode(true);nSpanNodes = nRow.getElementsByTagName("td");nRow.id = winID + "." + row;for (var tplCol=0; tplCol<templateColInner.length; tplCol++) {repHtml = templateColInner[tplCol];repColArray = repArray[tplCol];for (var repCol=0; repCol<repColArray.length; repCol++) {formatter = this.getFormatter(repColArray[repCol][3]);if (repColArray[repCol][1] == "VALUE") {if (formatter == null) {docVal = dataDoc.getColValue(row, repColArray[repCol][2]);} else {docVal = formatter(dataDoc, row, repColArray[repCol][2]);}repHtml = repHtml.replace(repColArray[repCol][0] + ".VALUE", docVal);} else if (repColArray[repCol][1] == "COLID") {repHtml = comReplaceAll(repHtml,repColArray[repCol][0] + ".COLID", repColArray[repCol][0] + "." + row + "." + tplCol);} else if (repColArray[repCol][1] == "OPTIONLIST") {if (formatter == null) {docVal = dataDoc.getColValue(row, repColArray[repCol][2]);} else {docVal = formatter(dataDoc, row, repColArray[repCol][2]);}var optStr = this.getOption(repColArray[repCol][0] + "." + docVal);if (optStr == null) optStr = "";repHtml = repHtml.replace(repColArray[repCol][0] + ".OPTIONLIST", optStr);}}nSpanNodes[tplCol].childNodes[0].innerHTML = repHtml;}templateBody.appendChild(nRow);}var oldbody = document.getElementById(winID + ".LISTID");var tbl = document.getElementById(winID + ".TABLE");tbl.removeChild(oldbody);tbl.appendChild(templateBody);} catch (e) {comDefaultSysError("JJS00064", e);return;}};this.xwbRow2Win = function(row) {try {this.initTemplate();var templateBody = this.getParm("TEMPLATEBODY");var templateRow = this.getParm("TEMPLATEROW");var templateColInner = this.getParm("TEMPLATECOLINNER");var repArray = this.getParm("TEMPLATEREPARRAY");var dataDoc = this.getDoc();var docVal = null;var nRow = null;var nSpanNodes = null;var repHtml = null;var winID = this.getWinID();nRow = templateRow.cloneNode(true);nSpanNodes = nRow.getElementsByTagName("td");nRow.id = winID + "." + row;for (var tplCol=0; tplCol<templateColInner.length; tplCol++) {repHtml = templateColInner[tplCol];repColArray = repArray[tplCol];for (var repCol=0; repCol<repColArray.length; repCol++) {if (repColArray[repCol][1] == "VALUE") {docVal = dataDoc.getColValue(row, repColArray[repCol][2]);repHtml = repHtml.replace(repColArray[repCol][0] + ".VALUE", docVal);} else if (repColArray[repCol][1] == "COLID") {repHtml = comReplaceAll(repHtml,repColArray[repCol][0] + ".COLID", repColArray[repCol][0] + "." + row + "." + tplCol);} else if (repColArray[repCol][1] == "OPTIONLIST") {docVal = dataDoc.getColValue(row, repColArray[repCol][2]);var optStr = this.getOption(repColArray[repCol][0] + "." + docVal);if (optStr == null) throw "JJS00063 Option not found for " + repColArray[repCol][0] + "." + docVal;repHtml = repHtml.replace(repColArray[repCol][0] + ".OPTIONLIST", optStr);}}nSpanNodes[tplCol].childNodes[0].innerHTML = repHtml;}var oldbody = document.getElementById(winID + ".LISTID");oldRow = document.getElementById(winID + "." + row);oldbody.replaceChild(nRow, oldRow);} catch (e) {comDefaultSysError("JJS00103", e);return;}};this.clearWinEdits = function() {return true;};this.xwbWin2Doc = function() {return true;};this.registerTriggers = function() {return true;};this.registerListeners = function() {return true;};this.getWinID = function() {return superDef.getWinID();};this.getWinName = function() {return superDef.getWinName();};this.getWinType = function() {return superDef.getWinType();};this.getForm = function() {return superDef.getForm();};this.setForm = function(form) {return superDef.setForm(form);};this.getDoc = function() {return superDef.getDoc();};this.setDoc = function(doc) {return superDef.setDoc(doc);};this.setModal = function(tfVal) {return superDef.setModal(tfVal);};this.isModal = function() {return superDef.isModal();};this.addComp = function(compID, compType, displayType, fieldName, formatter, eventType, eventHandler) {return superDef.addComp(compID, compType, displayType, fieldName, formatter, eventType, eventHandler);};this.getCompCount = function() {return superDef.getCompCount();};this.getCompID = function(col) {return superDef.getCompID(col);};this.getColbyCompID = function(compID) {return superDef.getColbyCompID(compID);};this.getCompType = function(col) {return superDef.getCompType(col);};this.getDisplayType = function(col) {return superDef.getDisplayType(col);};this.getFieldName = function(col) {return superDef.getFieldName(col);};this.getFormatter = function(col) {return superDef.getFormatter(col);};this.getEventType = function(col) {return superDef.getEventType(col);};this.getEventHandler = function(col) {return superDef.getEventHandler(col);};this.show = function() {return superDef.show();};this.addParm = function(parmKey, parmValue) {return superDef.addParm(parmKey, parmValue);};this.getParm = function(parmKey) {return superDef.getParm(parmKey);};}function acWinDefPageMeta(winID, winName, defType) {var superDef = new acWinDefEdit(winID, winName, defType);this.getDoc = function() {var dataDoc = superDef.getDoc();if (dataDoc != null) return dataDoc;var dataDoc = new sddDoc("PageDO", "SINGLE");dataDoc.addField("pageCurrent", false, null, null);dataDoc.addField("pageTotal", false, null, null);dataDoc.addField("pageRecCount", false, null, null);dataDoc.addField("pageSize", false, null, null);dataDoc.addField("subset", false, null, null);dataDoc.addField("sort", false, null, null);dataDoc.addRow();dataDoc.setValue(0, "pageCurrent", "1");dataDoc.setValue(0, "pageTotal", "1");dataDoc.setValue(0, "pageRecCount", "-1");dataDoc.setValue(0, "pageSize", "25");dataDoc.setValue(0, "subset", "");dataDoc.setValue(0, "sort", "");superDef.setDoc(dataDoc);return dataDoc;};this.clearWinEdits = function() {return true;};this.xwbDoc2Win = function() {return superDef.xwbDoc2Win();};this.xwbWin2Doc = function() {return superDef.xwbWin2Doc();};this.registerTriggers = function() {return superDef.registerTriggers();};this.registerListeners = function() {return superDef.registerListeners();};this.getWinID = function() {return superDef.getWinID();};this.getWinName = function() {return superDef.getWinName();};this.getWinType = function() {return superDef.getWinType();};this.getForm = function() {return superDef.getForm();};this.setForm = function(form) {return superDef.setForm(form);};this.setDoc = function(doc) {return superDef.setDoc(doc);};this.setModal = function(tfVal) {return superDef.setModal(tfVal);};this.isModal = function() {return superDef.isModal();};this.addComp = function(compID, compType, displayType, fieldName, formatter, eventType, eventHandler) {return superDef.addComp(compID, compType, displayType, fieldName, formatter, eventType, eventHandler);};this.getCompCount = function() {return superDef.getCompCount();};this.getCompID = function(col) {return superDef.getCompID(col);};this.getColbyCompID = function(compID) {return superDef.getColbyCompID(compID);};this.getCompType = function(col) {return superDef.getCompType(col);};this.getDisplayType = function(col) {return superDef.getDisplayType(col);};this.getFieldName = function(col) {return superDef.getFieldName(col);};this.getFormatter = function(col) {return superDef.getFormatter(col);};this.getEventType = function(col) {return superDef.getEventType(col);};this.getEventHandler = function(col) {return superDef.getEventHandler(col);};this.show = function() {return superDef.show();};this.addParm = function(parmKey, parmValue) {return superDef.addParm(parmKey, parmValue);};this.getParm = function(parmKey) {return superDef.getParm(parmKey);};}function acWinDefRepSec(winID, winName) {var superDef = new acWinDef(winID, winName, "REPSEC");var initialized = false;this.initTemplate = function() {if (initialized) return;var xmlDoc = this.getDoc();var holderNode = document.getElementById(this.getWinID() + ".HOLDER");if (holderNode == null || holderNode.length < 1) throw "JJS00323 Missing HOLDER";var emptyNode = document.getElementById(this.getWinID() + ".DETAIL");if (emptyNode == null || emptyNode.length < 1) throw "JJS00324 Missing DETAIL";var emptyNodeClone = emptyNode.cloneNode(true);emptyNodeClone.id = this.getWinID() + ".EMPTY";this.addParm("EMPTY", emptyNodeClone);var mainTemplate = document.getElementById(this.getWinID() + ".TEMPLATE");if (mainTemplate == null || mainTemplate.length < 1) throw "JJS00325 Missing TEMPLATE";var branches = xmlDoc.getBranches();if (branches == null || branches.length < 1) throw "JJS00326 Document missing branch definition";for (var sec=0; sec<branches.length; sec++) {var secNode = document.getElementById(this.getWinID() + ".SECTEMPLATE." + branches[sec][0]);if (secNode == null || secNode.length < 1) throw "JJS00327 Missing Template section for " + this.getWinID() + ".TEMPLATE." + branches[sec][0];var spanTxt = secNode.childNodes[0].innerHTML;var tStart = spanTxt.search(/<TEMPLATEINNER>/);if (tStart < 0) return comDefaultSysError("JJS00060", "List template missing TEMPLATEINNER start tag");tStart = tStart + 15;var tEnd = spanTxt.search(/<\/TEMPLATEINNER>/);if (tEnd < 0) return comDefaultSysError("JJS00061", "List template missing TEMPLATEINNER end tag");var tTxt = spanTxt.substring(tStart,tEnd);var rx = new RegExp("  *","g");tTxt = tTxt.replace(rx, " ");tTxt = tTxt.replace(/\r/g, "\n");tTxt = tTxt.replace(/\n\n/g, "\n");tTxt = tTxt.replace(/\n\s/g, "\n");tTxt = tTxt.replace(/\s\n/g, "\n");tTxt = tTxt.replace(/\t/g, "");tTxt = tTxt.replace(/^\s*/, "").replace(/\s*$/, "");this.addParm("TEMPLATEINNER" + branches[sec][0], tTxt);}initialized = true;};this.xwbDoc2WinRecurse = function(xmlDoc, branchNode, repHtml) {var branchDoc = xmlDoc.getBranchDoc(branchNode);var branchName = branchNode.nodeName;var branchID = branchNode.id;var templateHtml = this.getParm("TEMPLATEINNER" + branchNode.nodeName);var docVal = null;for (var col=0; col < this.getCompCount(); col++) {var fieldData = this.getFieldName(col);if (fieldData == null || fieldData.length < 1) continue;var fieldParts = fieldData.split(".");if (fieldParts[0] != branchName) continue;var fieldName = fieldParts[1];formatter = this.getFormatter(col);if (formatter == null) {docVal = branchDoc.getValue(0, fieldName);} else {docVal = formatter(branchDoc, 0, branchDoc.getColPos(fieldName));}var nodeID = xmlDoc.getChildElement(branchNode, fieldName).id;templateHtml = templateHtml.replace(this.getWinID() + "." + fieldName + ".VALUE", docVal);templateHtml = comReplaceAll(templateHtml, this.getWinID() + "." + fieldName + ".NODEID", this.getWinID() + "." + fieldName + "." + nodeID);}repHtml = repHtml + templateHtml;var childBranchNodes = xmlDoc.getChildBranchNodes(branchNode);for (var i=0; i<childBranchNodes.length; i++) {repHtml = this.xwbDoc2WinRecurse(xmlDoc, childBranchNodes[i], repHtml);}return repHtml;};this.xwbDoc2Win = function() {try {this.initTemplate();var winID = this.getWinID();var xmlDoc = this.getDoc();var holderNode = document.getElementById(winID + ".HOLDER");if (holderNode == null || holderNode.length < 1) throw "JJS00328 Missing HOLDER";if (xmlDoc.isEmpty()) {var emptyNode = this.getParm("EMPTY").cloneNode(true);if (emptyNode == null || emptyNode.length < 1) throw "JJS00329 Missing EMPTY node";var oldChild = document.getElementById(winID + ".DETAIL");if (oldChild == null || oldChild.length < 1) throw "JJS00330 Missing DETAIL";holderNode.removeChild(oldChild);emptyNode.id = winID + ".DETAIL";holderNode.appendChild(emptyNode);return;}var repHtml = "";repHtml = this.xwbDoc2WinRecurse(xmlDoc, xmlDoc.getRootNode(), repHtml);var oldChild = document.getElementById(winID + ".DETAIL");if (oldChild == null || oldChild.length < 1) throw "JJS00331 Missing DETAIL";oldChild.innerHTML = repHtml;} catch (e) {comDefaultSysError("JJS00064", e);return;}};this.clearWinEdits = function() {return;};this.xwbWin2Doc = function() {return true;};this.registerTriggers = function() {return true;};this.registerListeners = function() {return true;};this.getWinID = function() {return superDef.getWinID();};this.getWinName = function() {return superDef.getWinName();};this.getWinType = function() {return superDef.getWinType();};this.getForm = function() {return superDef.getForm();};this.setForm = function(form) {return superDef.setForm(form);};this.getDoc = function() {return superDef.getDoc();};this.setDoc = function(doc) {return superDef.setDoc(doc);};this.setModal = function(tfVal) {return superDef.setModal(tfVal);};this.isModal = function() {return superDef.isModal();};this.addComp = function(compID, compType, displayType, fieldName, formatter, eventType, eventHandler) {return superDef.addComp(compID, compType, displayType, fieldName, formatter, eventType, eventHandler);};this.getCompCount = function() {return superDef.getCompCount();};this.getCompID = function(col) {return superDef.getCompID(col);};this.getColbyCompID = function(compID) {return superDef.getColbyCompID(compID);};this.getCompType = function(col) {return superDef.getCompType(col);};this.getDisplayType = function(col) {return superDef.getDisplayType(col);};this.getFieldName = function(col) {return superDef.getFieldName(col);};this.getFormatter = function(col) {return superDef.getFormatter(col);};this.getEventType = function(col) {return superDef.getEventType(col);};this.getEventHandler = function(col) {return superDef.getEventHandler(col);};this.show = function() {return superDef.show();};this.addParm = function(parmKey, parmValue) {return superDef.addParm(parmKey, parmValue);};this.getParm = function(parmKey) {return superDef.getParm(parmKey);};}function acWinDefRepUList(winID, winName) {var superDef = new acWinDef(winID, winName, "REPULIST");var optionParms = null;var initialized = false;this.initTemplate = function() {if (initialized) return;initialized = true;optionParms = new Array();var ulPlate = document.getElementById(this.getWinID() + ".ULTEMPLATE");var ulPlateClone = ulPlate.cloneNode(false);var rowPlate = document.getElementById(this.getWinID() + ".ROWDEF");var rowPlateClone = rowPlate.cloneNode(false);var origUL = document.getElementById(winID + ".ULLIST");var origULClone = origUL.cloneNode(true);this.addParm("TEMPLATEULORIG", origULClone);var spanTxt = rowPlate.childNodes[0].innerHTML;var tStart = spanTxt.search(/<COLTEMPLATE>/);if (tStart < 0) return comDefaultSysError("JJS00060", "List template missing COLTEMPLATE start tag");tStart = tStart + 13;var tEnd = spanTxt.search(/<\/COLTEMPLATE>/);if (tEnd < 0) return comDefaultSysError("JJS00061", "List template missing COLTEMPLATE end tag");var tTxt = spanTxt.substring(tStart,tEnd);var rx = new RegExp("  *","g");tTxt = tTxt.replace(rx, " ");tTxt = tTxt.replace(/\r/g, "\n");tTxt = tTxt.replace(/\n\n/g, "\n");tTxt = tTxt.replace(/\n\s/g, "\n");tTxt = tTxt.replace(/\s\n/g, "\n");tTxt = tTxt.replace(/\t/g, "");tTxt = tTxt.replace(/^\s*/, "").replace(/\s*$/, "");tStart = spanTxt.search(/<OPTIONLIST>/);if (tStart > -1) {tStart = tStart + 12;tEnd = spanTxt.search(/<\/OPTIONLIST>/);if (tEnd < 0) return comDefaultSysError("JJS00062", "List template missing OPTIONLIST end tag");var optTxt = spanTxt.substring(tStart,tEnd);var rx = new RegExp("  *","g");optTxt = optTxt.replace(rx, " ");optTxt = optTxt.replace(/\r/g, "\n");optTxt = optTxt.replace(/\n\n/g, "\n");optTxt = optTxt.replace(/\n\s/g, "\n");optTxt = optTxt.replace(/\s\n/g, "\n");optTxt = optTxt.replace(/\t/g, "");optTxt = optTxt.replace(/^\s*/, "").replace(/\s*$/, "");var optionsArray = optTxt.split('\n');var oper = -1;for (var i = 0; i < optionsArray.length; i++) {var oper = optionsArray[i].indexOf("=",0);this.addOption(optionsArray[i].substring(0,oper), optionsArray[i].substring(oper+1));}}this.addParm("TEMPLATEUL", ulPlateClone);this.addParm("TEMPLATEROW", rowPlateClone);this.addParm("TEMPLATEROWINNER", tTxt);};this.addOption = function(parmKey, parmValue) {for (var parmPos=0; parmPos<optionParms.length; parmPos++) {if (optionParms[parmPos][0] == parmKey) {optionParms[parmPos][1] = parmValue;return;}}var parm = new Array(parmKey, parmValue);optionParms.push(parm);};this.getOption = function(parmKey) {for (var parmPos=0; parmPos<optionParms.length; parmPos++) {if (optionParms[parmPos][0] == parmKey) return optionParms[parmPos][1];}return null;};this.showOptions = function() {var showStr = "";for (var parmPos=0; parmPos<optionParms.length; parmPos++) {showStr = showStr + optionParms[parmPos][0] + "=" + optionParms[parmPos][1] + "\n";}alert(showStr);};this.xwbDoc2Win = function() {try {this.initTemplate();var winID = this.getWinID();var templateUL = this.getParm("TEMPLATEUL").cloneNode(true);templateUL.id = winID + ".ULLIST";var templateRow = this.getParm("TEMPLATEROW");var templateColInner = this.getParm("TEMPLATEROWINNER");var dataDoc = this.getDoc();var nRow = null;var repHtml = null;var formatter = null;var docVal = null;if (dataDoc.getRowCount() < 1) {var origUL = this.getParm("TEMPLATEULORIG");var ulHolder = document.getElementById(winID + ".ULHOLDER");var oldUL = document.getElementById(winID + ".ULLIST");ulHolder.removeChild(oldUL);ulHolder.appendChild(origUL);return;}for (var row=0; row < dataDoc.getRowCount(); row++) {nRow = templateRow.cloneNode(true);nRow.id = winID + "." + row;repHtml = templateColInner;for (var col=0; col < this.getCompCount(); col++) {var fieldName = this.getFieldName(col);if (fieldName == null || fieldName.length < 1) continue;formatter = this.getFormatter(col);if (formatter == null) {docVal = dataDoc.getValue(row, fieldName);} else {docVal = formatter(dataDoc, row);}repHtml = repHtml.replace(fieldName + ".VALUE", docVal);repHtml = comReplaceAll(repHtml, "ROWID", row);if (optionParms != null) {var optStr = this.getOption(fieldName + "." + docVal);if (optStr == null) optStr = "";repHtml = repHtml.replace(fieldName + ".OPTIONLIST", optStr);}}nRow.innerHTML = repHtml;templateUL.appendChild(nRow);}var ulHolder = document.getElementById(winID + ".ULHOLDER");var oldUL = document.getElementById(winID + ".ULLIST");ulHolder.removeChild(oldUL);ulHolder.appendChild(templateUL);} catch (e) {comDefaultSysError("JJS00064", e);return;}};this.clearWinEdits = function() {return true;};this.xwbWin2Doc = function() {return true;};this.registerTriggers = function() {return true;};this.registerListeners = function() {return true;};this.getWinID = function() {return superDef.getWinID();};this.getWinName = function() {return superDef.getWinName();};this.getWinType = function() {return superDef.getWinType();};this.getForm = function() {return superDef.getForm();};this.setForm = function(form) {return superDef.setForm(form);};this.getDoc = function() {return superDef.getDoc();};this.setDoc = function(doc) {return superDef.setDoc(doc);};this.setModal = function(tfVal) {return superDef.setModal(tfVal);};this.isModal = function() {return superDef.isModal();};this.addComp = function(compID, compType, displayType, fieldName, formatter, eventType, eventHandler) {return superDef.addComp(compID, compType, displayType, fieldName, formatter, eventType, eventHandler);};this.getCompCount = function() {return superDef.getCompCount();};this.getCompID = function(col) {return superDef.getCompID(col);};this.getColbyCompID = function(compID) {return superDef.getColbyCompID(compID);};this.getCompType = function(col) {return superDef.getCompType(col);};this.getDisplayType = function(col) {return superDef.getDisplayType(col);};this.getFieldName = function(col) {return superDef.getFieldName(col);};this.getFormatter = function(col) {return superDef.getFormatter(col);};this.getEventType = function(col) {return superDef.getEventType(col);};this.getEventHandler = function(col) {return superDef.getEventHandler(col);};this.show = function() {return superDef.show();};this.addParm = function(parmKey, parmValue) {return superDef.addParm(parmKey, parmValue);};this.getParm = function(parmKey) {return superDef.getParm(parmKey);};}function sddDoc(docName, docType) {this.docName = docName;this.docType=docType;var dmFieldName = 0;var dmRequired = 1;var dmValidator = 2;var dmFormatter = 3;var metaDoc = new Array();var dataDoc = null;this.addField = function(fieldName, required, validator, formatter) {var row = new Array(fieldName, required, validator, formatter);metaDoc.push(row);};this.setMeta = function(meta) {metaDoc = meta;};this.getValidator = function(col) {return metaDoc[col][dmValidator];};this.getColCount = function() {return metaDoc.length;};this.getColName = function(col) {try {return metaDoc[col][dmFieldName];} catch (e) {alert("Unable to find column " + col);}};this.getColPos = function(fieldName) {for (var dmRow=0; dmRow<metaDoc.length; dmRow++) {if (metaDoc[dmRow][dmFieldName] == fieldName) return dmRow;}return -1;};this.getFieldListComma = function() {var out = metaDoc[0][dmFieldName];for (var dmRow=1; dmRow<metaDoc.length; dmRow++) {out = out + "," + metaDoc[dmRow][dmFieldName];}return out;};this.setFromParms = function(row, parmList) {if (this.getRowCount() < row+1) {comSysError(new comErrorResp("JJS00036",doName + " not found in response"));return false;}var keys = parmList.getKeys();for (var parmPos=0; parmPos<keys.length; parmPos++) {if (this.getColPos(keys[parmPos]) > -1) {this.setValue(row, keys[parmPos], parmList.getParm(keys[parmPos]));}}};this.getValue = function(row, fieldName) {if (dataDoc == null) this.init();try {for (var dmCol=0; dmCol<metaDoc.length; dmCol++) {if (metaDoc[dmCol][dmFieldName] == fieldName) return dataDoc[row][dmCol];}alert("JJS00039 Error getting value for field " + fieldName);} catch (e) {alert("JJS00040 Error getting value for field " + fieldName);}};this.getColValue = function(row, col) {if (dataDoc == null) this.init();try {return dataDoc[row][col];} catch (e) {alert("Unable to get value for column " + col);}};this.setValue = function(row, fieldName, value) {if (dataDoc == null) this.init();try {dataDoc[row][this.getColPos(fieldName)] = value;} catch (e) {alert("Unable to set value for " + fieldName);}};this.setColValue = function(row, col, value) {if (dataDoc == null) this.init();try {dataDoc[row][col] = value;} catch (e) {alert("Unable to set col value " + col);}};this.edit = function(row, col) {if (dataDoc == null) this.init();if (metaDoc[col][dmRequired] == true) {if (dataDoc[row][col].length < 1) return comDeniedResp("JJS00037", "A value is required.");}if (metaDoc[col][dmValidator] == null) return comApprovedResp("JJS00038", "Passed");return metaDoc[col][dmValidator](this, row, col);};this.getRowCount = function() {if (dataDoc == null) this.initDoc();return dataDoc.length;};this.getRowFormattedXML = function() {if (dataDoc == null) this.init();var out = "";for (var col=0; col<metaDoc.length; col++) {out = out + "<" + metaDoc[col][dmFieldName] + ">" + dataDoc[0][col] + "</" + metaDoc[col][dmFieldName] + ">\n";}return out;};this.setRowFromDoc = function(row, srcDoc, srcRow) {try {if (dataDoc == null) this.init();var srcColPos = -1;for (var col=0; col<metaDoc.length; col++) {srcColPos = srcDoc.getColPos(metaDoc[col][dmFieldName]);if (srcColPos < 0) {dataDoc[row][col] = "";} else {dataDoc[row][col] = srcDoc.getColValue(srcRow,srcColPos);}}} catch (e) {alert("Unable to set row " + e);}};this.updateRowFromDoc = function(row, srcDoc, srcRow) {try {if (dataDoc == null) this.init();var srcColPos = -1;for (var col=0; col<metaDoc.length; col++) {srcColPos = srcDoc.getColPos(metaDoc[col][dmFieldName]);if (srcColPos > -1) {dataDoc[row][col] = srcDoc.getColValue(srcRow,srcColPos);}}} catch (e) {alert("Unable to set row " + e);}};this.addRow = function() {try {if (dataDoc == null) this.initDoc();var row = new Array(this.getColCount());for (var i=0; i<row.length; i++) {row[i] = "";}dataDoc.push(row);} catch (e) {alert("Unable to add row");}};this.addRowData = function(rowIN) {try {if (dataDoc == null) this.initDoc();if (rowIN.length != metaDoc.length) {comExceptTrace("JJS00104 addRowData rowIN contains wrong number of columns");return false;}dataDoc.push(rowIN);} catch (e) {comExceptTrace("JJS00105 Exception addRowData: " + e);}};this.removeRow = function(rowIN) {try {if (dataDoc == null) return;dataDoc.splice(rowIN, 1);} catch (e) {comExceptTrace("JJS00301 Exception removeRow: " + e);}};this.findRow = function(col, value) {for (var row=0; row<dataDoc.length; row++) {if (dataDoc[row][col] == value) return row;}return -1;};this.findRowByMult = function(fieldsArray, valsArray) {for (var cols=0; cols<fieldsArray.length; cols++) fieldsArray[cols] = this.getColPos(fieldsArray[cols]);var found = true;for (var row=0; row<dataDoc.length; row++) {found = true;for (var cols=0; cols<fieldsArray.length; cols++) {if (dataDoc[row][fieldsArray[cols]] != valsArray[cols]) {found = false;break;}}if (found) return row;}return -1;};this.initDoc = function() {dataDoc = new Array();};this.clear = function() {dataDoc = null;};this.getDataDocArray = function() {return dataDoc;};this.editDoc = function() {return true;};this.init = function() {dataDoc = new Array();var row = new Array(this.getColCount());for (var i=0; i<row.length; i++) {row[i] = "";}dataDoc.push(row);};this.initOne = function() {dataDoc = new Array();var row = new Array(this.getColCount());for (var i=0; i<row.length; i++) {row[i] = "";}dataDoc.push(row);};this.copyFromDoc = function(fromDoc) {var currentRow = -1;for (var fromRow=0; fromRow < fromDoc.getRowCount(); fromRow++) {this.addRow();currentRow = this.getRowCount() - 1;for (var col=0; col<this.getColCount(); col++) {if (fromDoc.getColPos(metaDoc[col][dmFieldName]) > -1) {this.setColValue(currentRow, col, fromDoc.getValue(fromRow, metaDoc[col][dmFieldName]));}}}};this.getCookieFormat = function() {var out = "";for (var row=0; row<this.getRowCount(); row++) {if (row > 0) out = out + "~";for (var col=0; col<this.getColCount(); col++) {if (col == 0) {out = this.getColValue(row, col);} else {out = out + "|" + this.getColValue(row, col);}}}return out;};this.setFromCookie = function(cookData) {try {this.clear();if (cookData == null || cookData.length < 1) return;var rows = cookData.split("~");for (var row=0; row<rows.length; row++) {this.addRow();var cols = rows[row].split("|");if (cols.length != this.getColCount()) throw "JJS00302 cookie to document mismatch col count";for (var col=0; col<cols.length; col++) {this.setColValue(row,col,cols[col]);}}return true;} catch (e) {throw "JJS00303 setFromCookie Exception" + e;}};this.show = function() {alert(this.showGet());};this.showGet = function() {var out = docName + "\n";for (var col=0; col<metaDoc.length-1; col++) {out = out + metaDoc[col][dmFieldName] + ",";}out = out + metaDoc[metaDoc.length-1][dmFieldName];out = out + "\n";if (dataDoc == null) {out = out + "Uninitialized!!!\n";} else {for (var row=0; row<dataDoc.length; row++) {out = out + dataDoc[row].toString() + "\n";}}return out;};}function sxmlTagExists(tagName, xml) {try {var node = xml.getElementsByTagName(tagName);if (node == null || node.length < 1) return false;return true;} catch (e) {throw "JJS00367 sxmlTagExists tagName " + tagName + " caught exception " + e;}}function sxmlDocFromTag(tagName, xml) {try {var xmlBranch = xml.getElementsByTagName(tagName);if (xmlBranch == null || xmlBranch.length < 1 || !xmlBranch[0].hasChildNodes) {throw "JJS00368 sxmlDocFromTag tagName " + tagName + " not found in xml ";}var xmlClone = xmlBranch[0].cloneNode(true);return new sxmlDoc(tagName, xmlClone);} catch (e) {throw "JJS00369 sxmlDocFromTag tagName " + tagName + " caught exception " + e;}}function sxmlDoc(docName, xml) {this.docName = docName;this.xml = xml;this.getElement = function(tagName) {try {var nodes = xml.getElementsByTagName(tagName);if (nodes == null || nodes.length < 1 || !nodes[0].hasChildNodes) {throw "JJS00370 getElement " + this.docName + " does not contain node for tag " + tagName;}if (nodes.length > 1) {throw "JJS00371 getElement " + this.docName + " contains mulitple nodes for tag " + tagName;}return nodes[0];} catch (e) {throw "JJS00372 getElement " + this.docName + " getting tag " + tagName + " caught exception " + e;}};this.getElements = function(tagName) {try {var nodes = xml.getElementsByTagName(tagName);if (nodes == null || nodes.length < 1 || !nodes[0].hasChildNodes) {throw "JJS00373 getElements " + this.docName + " does not contain node for tag " + tagName;}return nodes;} catch (e) {throw "JJS00374 getElements " + this.docName + " getting tag " + tagName + " caught exception " + e;}};this.getChildElement = function(parentNode, tagName) {try {var nodes = parentNode.getElementsByTagName(tagName);if (nodes == null || nodes.length < 1) {throw "JJS00375 getChildElement " + this.docName + " parent does not contain node for tag " + tagName;}if (nodes.length > 1) {throw "JJS00376 getChildElement " + this.docName + " parent contains mulitple nodes for tag " + tagName;}return nodes[0];} catch (e) {throw "JJS00377 getChildElement " + this.docName + " getting tag " + tagName + " caught exception " + e;}};this.getChildElements = function(parentNode, tagName) {try {var nodes = parentNode.getElementsByTagName(tagName);if (nodes == null || nodes.length < 1) {throw "JJS00498 getChildElements " + this.docName + " parent does not contain node for tag " + tagName;}return nodes;} catch (e) {throw "JJS00499 getChildElements " + this.docName + " getting tag " + tagName + " caught exception " + e;}};this.getValue = function(parentNode, childTag) {try {var value = this.getValueReq(parentNode, childTag);return value;} catch (e) {return "";}};this.getValueReq = function(parentNode, childTag) {try {var node = this.getChildElement(parentNode, childTag);try {var value = node.childNodes[0].nodeValue;return value;} catch (e) {return "";}} catch (e) {throw (e);}};this.getAttr = function(parentNode, childTag, attrName) {try {var node = this.getChildElement(parentNode, childTag);if (!node.hasAttribute(attrName)) return "";try {var value = node.getAttribute(attrName);return value;} catch (e) {return "";}} catch (e) {throw (e);}};this.getAttrReq = function(parentNode, childTag, attrName) {try {if (navigator.userAgent.indexOf("MSIE") != -1) {var node = this.getChildElement(parentNode, childTag);if (node == null || node.length < 1) throw "JJS00378 1 getAttrReq " + this.docName + " Tag " + childTag + " not found in parent";if (node.attributes.length < 0) throw "JJS00379 2 getAttrReq " + this.docName + " attribute " + attrName + " not found in Tag " + childTag;for (var i=0; i<node.attributes.length; i++) {if (node.attributes[i].nodeName == attrName) {var attrVal = node.attributes[i].text;if (attrVal == null || attrVal == "undefined") return "";return attrVal;}}throw "JJS00380 getAttrReq  5 " + this.docName + " attribute " + attrName + " not found in Tag " + childTag;} else {var node = this.getChildElement(parentNode, childTag);if (node == null || node.length < 1) throw "JJS00381 getAttrReq " + this.docName + " Tag " + childTag + " not found in parent";if (!node.hasAttribute(attrName)) throw "JJS00382 getAttrReq " + this.docName + " Tag " + childTag + " missing attribute " + attrName;var value = node.getAttribute(attrName);if (value == null || value == "undefined") return "";return value;}} catch (e) {throw ("JJS00383 " + e);}};this.getNodeAttr = function(node, attrName) {try {if (node == null) {comExceptTrace("JJS00500 getNodeAttr node cannot be null");return null;}if (navigator.userAgent.indexOf("MSIE") != -1) {if (node.attributes.length < 1) return "";for (var i=0; i<node.attributes.length; i++) {if (node.attributes[i].nodeName == attrName) {var attrVal = node.attributes[i].text;if (attrVal == null || attrVal == "undefined") return "";return attrVal;}}return "";} else {if (!node.hasAttribute(attrName)) return "";var value = node.getAttribute(attrName);if (value == null || value == "undefined") return "";return value;}} catch (e) {comExceptTrace("JJS00501 getNodeAttr exception: " + e);return null;}};}function acxmlNew(xmlText) {var xmlDoc = null;try {xmlDoc=new ActiveXObject("Microsoft.XMLDOM");xmlDoc.async="false";xmlDoc.loadXML(xmlText);} catch(e) {try {parser=new DOMParser();xmlDoc=parser.parseFromString(xmlText,"text/xml");} catch(e) {throw "JJS00337 acxmlNew exception "+ e;}}return xmlDoc;}function acxmlTagExists(tagName, xml) {try {var node = xml.getElementsByTagName(tagName);if (node == null || node.length < 1) return false;return true;} catch (e) {throw "JJS00338 acxmlTagExists tagName " + tagName + " caught exception " + e;}}function acxmlGetBranch(tagName, xml) {try {var xmlBranch = xml.getElementsByTagName(tagName);if (xmlBranch == null || xmlBranch.length < 1 || !xmlBranch[0].hasChildNodes) {throw "JJS00339 acxmlDocFromTag tagName " + tagName + " not found in xml ";}var xmlClone = xmlBranch[0].cloneNode(true);return xmlClone;} catch (e) {throw "JJS00340 acxmlDocFromTag tagName " + tagName + " caught exception " + e;}}function acxmlDoc(docName, idName, xml) {this.docName = docName;this.idName = idName;this.xml = xml;var xmlBranches = null;this.clear = function() {xml = null;};this.addBranchField = function(branchName, fieldName, required, validator, formatter) {if (xmlBranches == null) xmlBranches = new Array();var field = new Array(fieldName, required, validator, formatter);var branch = this.getBranch(branchName);if (branch == null) {var fieldArray = new Array();fieldArray.push(field);var row = new Array(branchName, fieldArray);xmlBranches.push(row);} else {branch[1].push(field);}};this.isEmpty = function() {if (xml == null) return true;return false;};this.setFromXMLText = function(tagName, xmlText) {try {var tStart = xmlText.search("<" + tagName + ">");if (tStart < 0) throw "JJS00341 acxmlGetDocFromText start tagName not found " + tagName;var tEnd = xmlText.search("</" + tagName + ">");if (tEnd < 0) throw "JJS00342 acxmlGetDocFromText end tagName not found " + tagName;tEnd = tEnd + tagName.length;var tTxt = xmlText.substring(tStart,tEnd+3);var rx = new RegExp("  *","g");tTxt = tTxt.replace(rx, " ");tTxt = tTxt.replace(/\r/g, "");tTxt = tTxt.replace(/\n/g, "");var domDoc = acxmlNew(tTxt);xml = domDoc;var idNum = new Array();idNum.push(0);this.setIDs(xml.documentElement, idNum);} catch(e) {throw e;}};this.getRootNode = function() {return xml.documentElement;};this.getBranches = function() {return xmlBranches;};this.getBranch = function(tagName) {try {for (var i=0; i<xmlBranches.length; i++) {if (xmlBranches[i][0] == tagName) return xmlBranches[i];}return null;} catch (e) {throw "JJS00343 getBranch" + this.docName + " caught exception " + e;}};this.isBranch = function(tagName) {try {for (var i=0; i<xmlBranches.length; i++) {if (xmlBranches[i][0] == tagName) return true;}return false;} catch (e) {throw "JJS00344 isBranch" + this.docName + " caught exception " + e;}};this.setIDs = function(node, level) {if (node.nodeType == 3) return;level[0] = level[0] + 1;node.setAttribute('id', "N" + level);for (var i=0; i<node.childNodes.length; i++) {out = this.setIDs(node.childNodes[i], level);}return;};this.getBranchDoc = function(branchNode) {try {var branchDoc = new sddDoc(branchNode.nodeName, "SINGLE");var branch = this.getBranch(branchNode.nodeName);branchDoc.setMeta(branch[1]);var fieldName = null;var fieldValue = null;for (var i=0; i<branchDoc.getColCount(); i++) {fieldName = branchDoc.getColName(i);fieldValue = this.getValueReq(branchNode, fieldName);branchDoc.setColValue(0,i, fieldValue);}return branchDoc;} catch (e) {throw "JJS00345 getBranchDoc Exception " + e;}};this.showBranches = function() {var test = xmlBranches;var out = "There are " + xmlBranches.length + " branches:\n";for (var i=0; i<xmlBranches.length; i++) {var fieldArray = xmlBranches[i][1];out = out + xmlBranches[i][0] + " has " + fieldArray.length + " fields\n";for (var j=0; j<fieldArray.length; j++) {out = out + " -> " + fieldArray[j][0] + "\n";}}alert(out);};this.showTree = function(node, out) {if (node.nodeType == 3) {out = out + node.nodeValue + "\n";} else {out = out + node.nodeName + "-" + node.id + "\n";}for (var i=0; i<node.childNodes.length; i++) {out = this.showTree(node.childNodes[i], out);}return out;};this.getElement = function(tagName) {try {var nodes = xml.getElementsByTagName(tagName);if (nodes == null || nodes.length < 1 || !nodes[0].hasChildNodes) {throw "JJS00346 getElement " + this.docName + " does not contain node for tag " + tagName;}if (nodes.length > 1) {throw "JJS00347 getElement " + this.docName + " contains mulitple nodes for tag " + tagName;}return nodes[0];} catch (e) {throw "JJS00348 getElement " + this.docName + " getting tag " + tagName + " caught exception " + e;}};this.getElements = function(tagName) {try {var nodes = xml.getElementsByTagName(tagName);if (nodes == null || nodes.length < 1 || !nodes[0].hasChildNodes) {throw "JJS00349 getElements " + this.docName + " does not contain node for tag " + tagName;}return nodes;} catch (e) {throw "JJS00350 getElements " + this.docName + " getting tag " + tagName + " caught exception " + e;}};this.getChildElement = function(parentNode, tagName) {try {if (parentNode.childNodes.length < 1) throw "JJS00351 getChildElement " + this.docName + " parent has no children ";for (var i=0; i<parentNode.childNodes.length; i++) {if (parentNode.childNodes[i].nodeName == tagName) return parentNode.childNodes[i];}throw "JJS00352 getChildElement " + this.docName + " parent does not contain node for tag " + tagName;} catch (e) {throw "JJS00353 getChildElement " + this.docName + " getting tag " + tagName + " caught exception " + e;}};this.getChildBranchNodes = function(parentNode) {try {var branchNodes = new Array();if (parentNode.childNodes.length < 1) return branchNodes;for (var i=0; i<parentNode.childNodes.length; i++) {if (this.isBranch(parentNode.childNodes[i].nodeName)) branchNodes.push(parentNode.childNodes[i]);}return branchNodes;} catch (e) {throw "JJS00357 getChildBranchNodes " + this.docName + " caught exception " + e;}};this.getValue = function(parentNode, childTag) {try {var value = this.getValueReq(parentNode, childTag);return value;} catch (e) {return "";}};this.getValueReq = function(parentNode, childTag) {try {var node = this.getChildElement(parentNode, childTag);try {var value = node.childNodes[0].nodeValue;return value;} catch (e) {return "";}} catch (e) {throw (e);}};this.getAttr = function(parentNode, childTag, attrName) {try {var node = this.getChildElement(parentNode, childTag);if (!node.hasAttribute(attrName)) return "";try {var value = node.getAttribute(attrName);return value;} catch (e) {return "";}} catch (e) {throw (e);}};this.getAttrReq = function(parentNode, childTag, attrName) {try {if (navigator.userAgent.indexOf("MSIE") != -1) {var node = this.getChildElement(parentNode, childTag);if (node == null || node.length < 1) throw "JJS00358 1 getAttrReq " + this.docName + " Tag " + childTag + " not found in parent";if (node.attributes.length < 0) throw "JJS00359 2 getAttrReq " + this.docName + " attribute " + attrName + " not found in Tag " + childTag;for (var i=0; i<node.attributes.length; i++) {if (node.attributes[i].nodeName == attrName) {var attrVal = node.attributes[i].text;if (attrVal == null || attrVal == "undefined") return "";return attrVal;}}throw "JJS00360 getAttrReq  5 " + this.docName + " attribute " + attrName + " not found in Tag " + childTag;} else {var node = this.getChildElement(parentNode, childTag);if (node == null || node.length < 1) throw "JJS00361 getAttrReq " + this.docName + " Tag " + childTag + " not found in parent";if (!node.hasAttribute(attrName)) throw "JJS00362 getAttrReq " + this.docName + " Tag " + childTag + " missing attribute " + attrName;var value = node.getAttribute(attrName);if (value == null || value == "undefined") return "";return value;}} catch (e) {throw ("JJS00363 " + e);}};}function drqHTTPEncode(val) {if (val.length < 1) return val;val = val.replace(/\&/g,'&amp;');val = val.replace(/</g,'&lt;');val = val.replace(/>/g,'&gt;');val = val.replace(/"/g,'&quot;');val = val.replace(/'/g,'&apos;');return val;}function drqCommonResp(servResp) {if (servResp.action == "SESSIONEXPIRED") {comOpenPage("index", "", "");return true;}if (servResp.action == "CONFIRMEMAIL") {comOpenPage("accountMain", "", "");return true;}if (servResp.action == "SUSPENDEDFORPAY") {comOpenPage("accountMain", "", "");return true;}if (servResp.action == "ACCOUNTCLOSED") {comOpenPage("accountMain", "", "");return true;}return false;}function drqDataRequest(serviceName, serviceAction) {this.serviceName = serviceName;this.serviceAction = serviceAction;var drqHttpReq = null;var onCompleteFunc = null;var xmlResponse = null;var servResp = null;var itsme = this;var getSubsetXML = function(subset) {if (subset.length < 1) return "";var subParts = subset.split("|");var subsetXML = "";for (var i=0; i<subParts.length; i=i+3) {subsetXML = subsetXML + "<" + subParts[i] + " operator=\"" + subParts[i+1] + "\">" + subParts[i+2] + "</" + subParts[i] + ">";}return subsetXML;};var resetHttpReq = function() {if (window.XMLHttpRequest) {drqHttpReq = new XMLHttpRequest();} else if (window.ActiveXObject) {drqHttpReq = new ActiveXObject("Microsoft.XMLHTTP");}if (drqHttpReq == null) {alert("KEY09282 Your browser does not support XMLHTTP.");return;}};this.trace = function() {comTrace(this.getTheRespText());};this.doCustom = function(xmlDoc, callBack) {try {onCompleteFunc = callBack;resetHttpReq();if (drqHttpReq == null) return;drqHttpReq.onreadystatechange=drqStateMonitor;var url = comWebApp + "/" + this.serviceName + ".php?Action=" + this.serviceName + "." + this.serviceAction;drqHttpReq.open("POST",url,true);drqHttpReq.setRequestHeader('Content-Type','text/xml');drqHttpReq.send(xmlDoc);} catch(e) {comSysError(new comErrorResp("JJS00008","Exception getting data: "+e));}};var drqStateMonitor = function() {if (drqHttpReq.readyState < 4) {try {if (document.getElementById("progressWin").getAttribute("class") == "on") {} else {setOn('progressWin');}} catch (e) {alert(e.discription);}}if (drqHttpReq.readyState==4) {try {setOff('progressWin');servResp = drqGetStateResp();}catch (e) {servResp = new comResp("ERROR","SHOWMESSAGE","JJS00009","","Exception communicating with server: " +e);}onCompleteFunc(itsme);}};var getDocVal = function(node, tagName) {try {var val = node.getElementsByTagName(tagName)[0];if (val.hasChildNodes()) {return val.childNodes[0].nodeValue;} else {return "";}} catch (e) {return "";}};var drqGetStateResp = function() {try {if (drqHttpReq.status != 200) {return new comResp("ERROR","SHOWMESSAGE","JJS00010","Error communicating with the server","Server responded with status of " + drqHttpReq.status);}xmlResponse = drqHttpReq.responseXML;if (!xmlResponse) {return new comResp("ERROR","SHOWMESSAGE","JJS00011","Error communicating with the server","Failed to parse response as XML.");}try {var respNode = xmlResponse.getElementsByTagName("ResponseDO");if (!respNode[0].hasChildNodes) {return new comResp("ERROR","SHOWMESSAGE","JJS00012","","Missing response from server.");}var sResp = new comResp("","","","","");sResp.status = getDocVal(respNode[0], "status");sResp.action = getDocVal(respNode[0], "action");sResp.code = getDocVal(respNode[0], "code");sResp.displayMsg = getDocVal(respNode[0], "displayMsg");sResp.techMsg = getDocVal(respNode[0], "techMsg");if (sResp.status.length < 1) {return new comResp("ERROR","SHOWMESSAGE","JJS00013","","Missing server response status");}if (sResp.status != "APPROVED" && sResp.status != "DENIED" && sResp.status != "ERROR") {return new comResp("ERROR","SHOWMESSAGE","JJS00014","","Invalid server response status " + servResp.status);}if (sResp.action.length < 1) {return new comResp("ERROR","SHOWMESSAGE","JJS00015","","Missing server response action");}return sResp;} catch (e) {return new comResp("ERROR","SHOWMESSAGE","JJS00016","","Error getting response: " + e);}} catch (e) {return new comResp("ERROR","SHOWMESSAGE","JJS00017","","Exception communicating with server: " +e);}};this.getServResp = function() {return servResp;};this.getXMLResp = function() {return xmlResponse;};this.showRespText = function() {var respTxt = drqHttpReq.responseText;var fmtTxt = "";var counter = 0;for (var i=0; i<respTxt.length; i++) {fmtTxt = fmtTxt + respTxt.substr(i,1);counter = counter + 1;if (counter > 100) {fmtTxt = fmtTxt + "\n";counter = 0;}}alert(fmtTxt);};this.getTheRespText = function() {var respTxt = drqHttpReq.responseText;return respTxt;};this.doGet = function(subset, dataDoc, callBack) {try {onCompleteFunc = callBack;var xmlDoc= "<" + this.serviceName + "." + "Get" + ">\n" + getSubsetXML(subset) + "\n";xmlDoc= xmlDoc + "<FieldList>" + dataDoc.getFieldListComma() + "</FieldList>\n";xmlDoc = xmlDoc + "</" + this.serviceName + "." +  "Get" + ">\n";resetHttpReq();if (drqHttpReq == null) return;drqHttpReq.onreadystatechange=drqStateMonitor;var url = comWebApp + "/" + this.serviceName + ".php?Action=" + this.serviceName + "." + this.serviceAction;drqHttpReq.open("POST",url,true);drqHttpReq.setRequestHeader('Content-Type','text/xml');drqHttpReq.send(xmlDoc);} catch(e) {comSysError(new comErrorResp("JJS00018","Exception getting page data: "+e));}};this.doGetPage = function(subset, sort, pageSize, currentPage, dataDoc, callBack) {try {onCompleteFunc = callBack;var xmlDoc= "<" + this.serviceName + "." + "GetPage" + ">\n";xmlDoc= xmlDoc + "<Subset>" +  getSubsetXML(subset) + "</Subset>\n";xmlDoc= xmlDoc + "<Sort>" + sort + "</Sort>\n";xmlDoc= xmlDoc + "<FieldList>" + dataDoc.getFieldListComma() + "</FieldList>\n";xmlDoc= xmlDoc + "<PageSize>" + pageSize + "</PageSize>\n";xmlDoc= xmlDoc + "<Page>" + currentPage + "</Page>\n";xmlDoc = xmlDoc + "</" + this.serviceName + "." +  "GetPage" + ">\n";resetHttpReq();if (drqHttpReq == null) return;drqHttpReq.onreadystatechange=drqStateMonitor;var url = comWebApp + "/" + this.serviceName + ".php?Action=" + this.serviceName + "." + this.serviceAction;drqHttpReq.open("POST",url,true);drqHttpReq.setRequestHeader('Content-Type','text/xml');drqHttpReq.send(xmlDoc);} catch(e) {comSysError(new comErrorResp("JJS00019","Exception getting page data: "+e));}};this.doGetPageListGetXML = function(pageDoc, dataDoc) {var xmlDoc= "<" + this.serviceName + "." + "GetPage" + ">\n";xmlDoc= xmlDoc + "<Subset>" +  pageDoc.getValue(0, "subset") + "</Subset>\n";xmlDoc= xmlDoc + "<Sort>" + pageDoc.getValue(0, "sort") + "</Sort>\n";xmlDoc= xmlDoc + "<FieldList>" + dataDoc.getFieldListComma() + "</FieldList>\n";xmlDoc= xmlDoc + "<PageSize>" + pageDoc.getValue(0, "pageSize") + "</PageSize>\n";xmlDoc= xmlDoc + "<Page>" + pageDoc.getValue(0, "pageCurrent") + "</Page>\n";xmlDoc = xmlDoc + "</" + this.serviceName + "." +  "GetPage" + ">\n";return xmlDoc;};this.doGetPageList = function(pageDoc, dataDoc, callBack) {try {onCompleteFunc = callBack;var xmlDoc = this.doGetPageListGetXML(pageDoc, dataDoc);resetHttpReq();if (drqHttpReq == null) return;drqHttpReq.onreadystatechange=drqStateMonitor;var url = comWebApp + "/" + this.serviceName + ".php?Action=" + this.serviceName + "." + this.serviceAction;drqHttpReq.open("POST",url,true);drqHttpReq.setRequestHeader('Content-Type','text/xml');drqHttpReq.send(xmlDoc);} catch(e) {comSysError(new comErrorResp("JJS00020","Exception getting page data: "+e));}};this.doSave = function(doName, dataDoc, callBack) {try {onCompleteFunc = callBack;var xmlDoc= "<" + this.serviceName + "." + "Save" + ">\n<" + doName + ">\n";xmlDoc= xmlDoc + dataDoc.getRowFormattedXML();xmlDoc = xmlDoc + "</" + doName + "></" + this.serviceName + "." +  "Save" + ">\n";resetHttpReq();if (drqHttpReq == null) return;drqHttpReq.onreadystatechange=drqStateMonitor;var url = comWebApp + "/" + this.serviceName + ".php?Action=" + this.serviceName + "." + this.serviceAction;drqHttpReq.open("POST",url,true);drqHttpReq.setRequestHeader('Content-Type','text/xml');drqHttpReq.send(xmlDoc);} catch(e) {comSysError(new comErrorResp("JJS00021","Exception saving data: "+e));}};this.getDO = function(doName, dataDoc) {dataDoc.clear();var nodeVal = null;var doNode = xmlResponse.getElementsByTagName(doName);if (doNode == null || doNode.length < 1) return dataDoc;if (!doNode[0].hasChildNodes) {comSysError(new comErrorResp("JJS00023",doName + " missing items in response"));return false;}var itemNodes = doNode[0].getElementsByTagName("DOItem");for (var row=0; row<itemNodes.length; row++) {dataDoc.addRow();for (var col=0; col<dataDoc.getColCount(); col++) {nodeVal = getNodeVal(itemNodes[row], dataDoc.getColName(col));dataDoc.setColValue(row, col, nodeVal);}}dataDoc.editDoc();return true;};this.addDOData = function(doName, dataDoc) {var nodeVal = null;var doNode = xmlResponse.getElementsByTagName(doName);if (doNode == null || doNode.length < 1) return dataDoc;if (!doNode[0].hasChildNodes) {comSysError(new comErrorResp("JJS00023",doName + " missing items in response"));return false;}var itemNodes = doNode[0].getElementsByTagName("DOItem");for (var row=0; row<itemNodes.length; row++) {for (var col=0; col<dataDoc.getColCount(); col++) {if (hasNodeVal(itemNodes[row], dataDoc.getColName(col))) {nodeVal = getNodeVal(itemNodes[row], dataDoc.getColName(col));dataDoc.setColValue(row, col, nodeVal);}}}dataDoc.editDoc();return true;};this.getDOPage = function(doName, pageDoc, dataDoc) {dataDoc.clear();var nodeVal = null;var doNode = xmlResponse.getElementsByTagName(doName);if (doNode == null || doNode.length < 1 || !doNode[0].hasChildNodes) {pageDoc.setValue(0, "pageCurrent", "1");pageDoc.setValue(0, "pageTotal", "1");pageDoc.setValue(0, "pageRecCount", "-1");return true;}var itemNodes = doNode[0].getElementsByTagName("DOItem");var listItemsCount = itemNodes.length;for (var row=0; row<listItemsCount; row++) {dataDoc.addRow();for (var col=0; col<dataDoc.getColCount(); col++) {nodeVal = getNodeVal(itemNodes[row], dataDoc.getColName(col));dataDoc.setColValue(row, col, nodeVal);}}dataDoc.editDoc();itemNodes = doNode[0].getElementsByTagName("RecCount");if (itemNodes == null || itemNodes.length < 1) {pageDoc.setValue(0, "pageTotal", "1");pageDoc.setValue(0, "pageRecCount", listItemsCount);if (pageCurrent > pageTotal) pageDoc.setValue(0, "pageCurrent", "1");} else {var pageRecCount = itemNodes[0].childNodes[0].nodeValue;var pageSize = pageDoc.getValue(0,"pageSize");var pageCurrent = pageDoc.getValue(0,"pageCurrent");var pageTotal = Math.floor(pageRecCount/pageSize);if (pageRecCount % pageSize > 0) pageTotal = pageTotal + 1;pageDoc.setValue(0, "pageTotal", pageTotal);pageDoc.setValue(0, "pageRecCount", pageRecCount);if (pageCurrent > pageTotal) pageDoc.setValue(0, "pageCurrent", pageTotal);}return true;};var hasNodeVal = function(node, tagName) {try {var val = node.getElementsByTagName(tagName)[0];if (val.hasChildNodes()) {return true;} else {return false;}} catch (e) {return false;}};var getNodeVal = function(node, tagName) {try {var val = node.getElementsByTagName(tagName)[0];if (val.hasChildNodes()) {return val.childNodes[0].nodeValue;} else {return "";}} catch (e) {return "";}};}function acfYesNo(dataDoc, row, col) {var ynVal = dataDoc.getColValue(row, col);if (ynVal.length < 1) return "";if (ynVal.toUpperCase() == "Y") return "Yes";if (ynVal.toUpperCase() == "N") return "No";return ynVal;}function acfNumDC(dataDoc, row, col) {var field = dataDoc.getColField(row, col);if (field.status == null || field.status == false) return field.value;if (field.value.length < 1) return "";var numParts = field.value.split(".");var digits = numParts[0];var regExp = /(\d+)(\d{3})/;while (regExp.test(digits)) {digits = digits.replace(regExp, '$1' + ',' + '$2');}return "$" + digits;}function acfBoolYesNo(dataDoc, row, col) {var field = dataDoc.getColField(row, col);if (field.status == null || field.status == false) return field.value;if (field.value.length < 1) return "";if (field.value == "true") return "Yep";if (field.value == "false") return "Nope";return field.value;}function acfPhone(dataDoc, row, col) {var field = dataDoc.getColField(row, col);if (field.status == null || field.status == false) return field.value;var phoneVal = field.value;if (phoneVal.length < 1) return "";var digits = valGetNumeric(phoneVal);digits = digits.replace(/^[1]+/g,"");if (digits.length < 10) return phoneVal;var s1 = digits.substring(0,3);var s2 = digits.substring(3,6);var s3 = digits.substring(6,10);var s4 = "";if (digits.length > 10) s4 = digits.substring(10);var retVal = "(" + s1 + ") " + s2 + "-" + s3;if (s4.length > 0) retVal = retVal + " x" + s4;return retVal;}function acfPhoneOld(dataDoc, row, col) {var phoneVal = dataDoc.getColValue(row, col);if (phoneVal.length < 1) return "";var digits = valGetNumeric(phoneVal);digits = digits.replace(/^[1]+/g,"");if (digits.length < 10) return phoneVal;var s1 = digits.substring(0,3);var s2 = digits.substring(3,6);var s3 = digits.substring(6,10);var s4 = "";if (digits.length > 10) s4 = digits.substring(10);var retVal = s1 + "-" + s2 + "-" + s3;if (s4.length > 0) retVal = retVal + " x" + s4;return retVal;}function acttGetNumeric(strVal) {var retVal = "";for (var i=0; i < strVal.length; i++) {var c = strVal.substring(i,i+1);if (c=="1"||c=="2"||c=="3"||c=="4"||c=="5"||c=="6"||c=="7"||c=="8"||c=="9"||c=="0") retVal = retVal + c;}retVal = retVal.replace(/^[0]+/g,"");return retVal;}function acttIsAlpha(value) {var include = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";if (value.length < 1) return true;for (var i=0; i<value.length; i++) {if (include.indexOf(value.charAt(i),0) == -1) return false;}return true;}function acttIsNumeric(value) {var include = "0123456789";if (value.length < 1) return true;for (var i=0; i<value.length; i++) {if (include.indexOf(value.charAt(i),0) == -1) return false;}return true;}function acttContainsOnly(value, checkChars) {if (value.length < 1) return true;for (var i=0; i<value.length; i++) {if (checkChars.indexOf(value.charAt(i),0) == -1) return false;}return true;}function acvPhone(dataDoc, row, col) {try {var phoneVal = dataDoc.getColValue(row, col);if (phoneVal.length < 1) return comApprovedResp("JJS00083", "");var digits = xxfldGetDigits(phoneVal);digits = digits.replace(/^[1]+/g,"");if (digits.length < 10) return comDeniedResp("JJS00084", "Invalid phone number. Example 555-555-5555 x123");var s1 = digits.substring(0,3);var s2 = digits.substring(3,6);var s3 = digits.substring(6,10);var s4 = "";if (digits.length > 10) s4 = digits.substring(10);var retVal = s1 + "-" + s2 + "-" + s3;if (s4.length > 0) retVal = retVal + " x" + s4;dataDoc.setColValue(row, col, retVal);return comApprovedResp("JJS00085", "");} catch (e) {throw "JJS00407 acvPhone caught exception " + e;}}function acvBoolean(dataDoc, row, col) {try {var booVal = dataDoc.getColValue(row, col);if (booVal.length < 1) return comApprovedResp("JJS00083", "");booVal = booVal.toUpperCase();if (booVal == "TRUE" || booVal == "T" || booVal == "1" || booVal == "Y" || booVal == "YES" || booVal == "+") {dataDoc.setColValue(row, col, "true");return comApprovedResp("JJS00085", "");}if (booVal == "FALSE" || booVal == "F" || booVal == "0" || booVal == "N" || booVal == "NO" || booVal == "-") {dataDoc.setColValue(row, col, "false");return comApprovedResp("JJS00085", "");}return comDeniedResp("JJS00084", "Invalid boolean value. Example True or False");} catch (e) {throw "JJS00408 acvBoolean caught exception " + e;}}function acvPostalCode(dataDoc, row, col) {try {var zipVal = dataDoc.getColValue(row, col);if (zipVal.length < 1) return comApprovedResp("JJS00086", "Postal Code is valid");var digits = xxfldGetDigits(zipVal);if (digits.length != 5 && digits.length != 9) return comDeniedResp("JJS00087", "Invalid Postal Code. Example 58638 or 58638-1234");var retVal = digits.substring(0,5);var box = "";if (digits.length == 9) box = digits.substring(5);if (box.length > 0) retVal = retVal + "-" + box;dataDoc.setColValue(row, col, retVal);return comApprovedResp("JJS00088", "Postal Code is valid");} catch (e) {throw "JJS00409 acvPostalCode caught exception " + e;}}var acCheckList = null;function acchklsthWinDef() {var winDef = new acWinDefEdit("acchklsth", "CheckListHeader");winDef.addComp("acchklsth.selectall", "button", "button", "", null, "default", acchklsthSelectAll);winDef.addComp("acchklsth.clearall", "button", "button", "", null, "default", acchklsthClearAll);winDef.addComp("acchklsth.select", "button", "button", "", null, "default", acchklsthSelect);winDef.addComp("acchklsth.closeX", "button", "button", "", null, "default", acchklsthCloseWin);winDef.addParm("ESCKEY", "acchklsth.closeX");winDef.setModal(true);return winDef;}function acchklsthDataDoc() {var dataDoc = new sddDoc("acchklsthDO", "SINGLE");return dataDoc;}function acchklstdWinDef() {var winDef = new acWinDefRepUList("acchklstd", "CheckListDetail");winDef.addComp("acchklstd.techName", "textfield", "data", "techName", null, "default", null);winDef.addComp("acchklstd.displayName", "textfield", "data", "displayName", null, "default", null);winDef.setModal(false);return winDef;}function acchklstdDataDoc() {var dataDoc = new sddDoc("acchklstdDO", "SINGLE");dataDoc.addField("techName", true, null, null);dataDoc.addField("displayName", true, null, null);dataDoc.addField("selected", true, null, null);return dataDoc;}function acCheckListInit() {if (acCheckList != null) return;acCheckList = new acForm("acCheckList", false);var acchklsthDef = acchklsthWinDef();var acchklsthDoc = acchklsthDataDoc();acchklsthDef.setDoc(acchklsthDoc);acCheckList.addWinDef(acchklsthDef);var acchklstdDef = acchklstdWinDef();var acchklstdDoc = acchklstdDataDoc();acchklstdDef.setDoc(acchklstdDoc);acCheckList.addWinDef(acchklstdDef);acCheckList.registerTriggers();acCheckList.registerListeners();}function acCheckListLoad() {var openParms = new comParmList();acCheckListOpen(openParms);}function acCheckListOpen(openParms) {acCheckListInit();var acchklstdDoc = acCheckList.getWinDoc("acchklstd");var openDoc = openParms.getParm("OPENDOC");if (openDoc == null) throw "JJS00452 CheckList Selector missing open parms";acchklstdDoc.clear();acchklstdDoc.copyFromDoc(openDoc);acCheckList.xwbDocs2Win();acCheckList.getWinDef("acchklstd").addParm("LISTNAME", openParms.getParm("LISTNAME"));for (var i=0; i<acchklstdDoc.getRowCount(); i++) {if (acchklstdDoc.getValue(i, "selected") == "true") {document.getElementById("acchklstd.check." + i).checked = true;} else {document.getElementById("acchklstd.check." + i).checked = false;}}acCheckList.showForm();}function acchklsthSelect(evt) {var acchklstdDoc = acCheckList.getWinDoc("acchklstd");for (var i=0; i<acchklstdDoc.getRowCount(); i++) {if (document.getElementById("acchklstd.check." + i).checked == true) {acchklstdDoc.setValue(i, "selected", "true");} else {acchklstdDoc.setValue(i, "selected", "false");}}comEQ.fireEvent("acchklstd", acCheckList.getWinDef("acchklstd").getParm("LISTNAME"), "datachange", acchklstdDoc);acCheckList.hideForm();return true;}function acchklsthSelectAll(evt) {var acchklstdDoc = acCheckList.getWinDoc("acchklstd");for (var i=0; i<acchklstdDoc.getRowCount(); i++) {document.getElementById("acchklstd.check." + i).checked = true;}}function acchklsthClearAll(evt) {var acchklstdDoc = acCheckList.getWinDoc("acchklstd");for (var i=0; i<acchklstdDoc.getRowCount(); i++) {document.getElementById("acchklstd.check." + i).checked = false;}}function acchklsthCloseWin(evt) {acCheckList.hideForm();}