var ErrMsg; var InfoForm; var InfoMsg; var InfoClose; var Title; var debugMode = false; var usingIFrame = false; // true to force IFrame when developing & testing var usingOpusWB = false; //true; var IFrameTime = 15000; var seqNo = 0; //var maxCount = 5; //var xmlCount = 0; function info() { /* if (arguments.length == 0) { document.getElementById('info_msg').innerHTML = ''; return;} var s = ''; for (var i = 0; i < arguments.length; i++) { s += 'info: ' + arguments[i] + '
'; } s += document.getElementById('info_msg').innerHTML; showInfo(s); */ } var logStr = ""; function writeLog() { logStr += "
" + nowHMS() + " "; for (var i=0; i < arguments.length; i++) { if (typeof arguments[i] != 'function') logStr += arguments[i] + " | "; } if (!debugMode) return; showLog(); } function nowHMS() { var d = new Date(); var s = (d.getHours() < 10) ? "0" + d.getHours() : "" + d.getHours(); s += (d.getMinutes() < 10) ? ":0" + d.getMinutes() : ":" + d.getMinutes(); s += (d.getSeconds() < 10) ? ":0" + d.getSeconds() : ":" + d.getSeconds(); return s; } function showLog() { if (!debugMode) return; InfoForm.style.width = 1200; InfoForm.style.height = 1000; showInfo(logStr); } function clearLog() { logStr = ""; } addLoadListener(setupGeneral); function setupGeneral() { Title = document.getElementById("func_title"); ErrMsg = document.getElementById("err_msg"); InfoForm = document.getElementById("info_form"); InfoMsg = document.getElementById("info_msg"); InfoClose = document.getElementById("info_close"); InfoClose.onclick = hideInfo; InfoForm.style.offsetWidth = window.innerWidth; try { document.getElementById("back_btn").onclick = backbutton; document.getElementById("main_menu").onclick = doMenu; } catch (Ex) {}; } /* function showMainMenu () { history.go(-1); } */ /* ********************* standard code ************************* see The Javascript Anthology, pages 468-474 field is created by addField. nlrequest = NetLink request id. params = additional post parameters. callback is function. */ var validateCallBack = null; var xmlStack = new Array(); var xmlStack_i = 0; function pushXmlStack(type, field, nlrequest, params, callback) { xmlStack[xmlStack_i] = new Object(); xmlStack[xmlStack_i].type = type; xmlStack[xmlStack_i].field = field; xmlStack[xmlStack_i].nlrequest = nlrequest; xmlStack[xmlStack_i].params = params; xmlStack[xmlStack_i].callback = callback; xmlStack[xmlStack_i].validateCallBack = validateCallBack; validateCallBack = null; xmlStack_i++; writeLog('\npush ' + xmlStack_i + "|" + nlrequest + params); if (xmlStack_i == 3) { for (var i = 0; i < xmlStack_i; i++) { writeLog('\nstack ' + i + "|" + xmlStack[i].params); } } } function popXmlStack() { if (xmlStack_i > 0) { validateCallBack = xmlStack[0].validateCallBack; var xml = xmlStack[0]; xmlStack_i--; for (var i = 0; i < xmlStack_i; i++) { xmlStack[i] = cloneObject(xmlStack[i + 1]); } getpostData(xml.type, xml.field, xml.nlrequest, xml.params, xml.callback) writeLog('\npop ' + xmlStack_i + "|" + xml.nlrequest + xml.params); } else { xmlwaiting = false; writeLog('\npop nothing'); } /* if (xmlStack_i == 3) { for (var i = 0; i < xmlStack_i; i++) { writeLog('\nstack ' + i + "|" + xmlStack[i].params; } }*/ } function cloneObject(what) { var n = new Object() for (i in what) { n[i] = what[i]; } return n; } function setOpusWeb() { usingOpusWB = true; } function getData(field, nlrequest, params, callback, noshowerror) { // alert("getData " + nlrequest + " params: " + params + " callback: " + callback); if (usingOpusWB) { window.external.WBEvent(field, nlrequest, params, getFuncName(callback), noshowerror); return; } //show(nlrequest, params, callback); if (arguments.length < 5) noshowerror = false; getpostData("GET", field, nlrequest, params, callback, noshowerror) } var xmlWaiting = false; function getpostData(type, field, nlrequest, params, callback, noshowerror) { //if (xmlWaiting) {pushXmlStack(type, field, nlrequest, params, callback); return; } //if (xmlCount++ > maxCount) return; //alert("getpostData " + nlrequest + " params: " + params + " callback: " + callback); var xmlHttp=getXmlHttpObject() //console.info("gpd 1"); if (usingIFrame) { iframedoc = xmlHttp; getpostDataIFrame(type, field, nlrequest, params, callback); return; } if (xmlHttp == null) return; xmlWaiting = true; // writeLog('\nsend ' + params; xmlHttp.onreadystatechange = function() { //console.info("gpd 2 " + xmlHttp.readyState); if (xmlHttp.readyState == 4) { xmlWaiting = false; if (xmlHttp.status == 200 || xmlHttp.status == 304) { if (!hasxmlError(xmlHttp.responseText) || noshowerror) { //alert(xmlHttp.responseText); //writeLog("calling " + callback.name); callback(xmlHttp.responseText); if (validateCallBack) { //writeLog("calling val " + validateCallBack.name); var v = validateCallBack; validateCallBack = null; v(); } } else { showXMLError(field, xmlHttp.responseText, xmlHttp.status); } } else { showXMLError(field, xmlHttp.responseText, xmlHttp.status); } //popXmlStack(); } return true; } setState(field,1); seqNo++; var url = (nlrequest != '') ? action + nlrequest + "&seqNo=" + seqNo + params + "&callback=notIFrame" : params; if (window.location.href.indexOf('https:') >= 0) { url = url.replace(/http:/,'https:'); } try { //writeLog(url); xmlHttp.open(type, url, true); xmlHttp.send(""); } catch (e) { //writeLog(typeof xmlHttp); var msg = e.message; if (e.message != 'undefined') { msg = 'Cross domain violation: ' + window.location.href; } alert("xmlHttp error: " + msg + "\nType=" + type + "\nResponse Text= " + xmlHttp.responseText + "\nPost String= " + url ); } } // function dependent on server's output. This is for SouthWare NetLink function hasxmlError(responseText) { if (responseText.indexOf(FatalError) > -1) return true; if (responseText.indexOf(NetLinkError) > -1) return true; if (responseText.indexOf(StandardError) > -1) return true; if (responseText.indexOf(SessionTimeout) > -1) return true; if (responseText.indexOf(TimeoutError) > -1) return true; //if (responseText.indexOf('iframebody') == -1) return true; return false; } function xmlnoData(xmlHttp) { } function showXMLError(field, responseText, status) { setState(field, 4, "XML failure " + status); showInfo(responseText); } // same parameters as getData. mapped to this routine by getXmlHttpObject. var iframedoc; var IField; var ICBname; var xmlwaiting = false; var isavefield; var IFrameID; var IFramenoshowerror; var secondtry = false; function getpostDataIFrame(type, field, nlrequest, params, callback, noshowerror) { //alert("getpostDataIFrame " + nlrequest + " params: " + params ) if (arguments.length < 5) noshowerror = false; IFramenoshowerror = noshowerror; cbname = getFuncName(callback); // needed in IE7 if (cbname == 'undefined') { setState(field, 4, "unable to find callback.name"); return; } IField = field; ICBname = cbname; //alert('xmlwaiting ' + xmlwaiting); if (xmlwaiting) { pushXmlStack(type, field, nlrequest, params, callback); return; } xmlwaiting = true; try { isavefield = field; //writeLog("get iframe " + nlrequest + params); seqNo++; //alert('setting iframe ' + action + nlrequest + "&seqNo=" + seqNo + params + "&callback=" + cbname); iframedoc.location.replace(action + nlrequest + "&seqNo=" + seqNo + params + "&callback=" + cbname); secondtry = false; setState(field,1); IFrameID = setTimeout('IFrameTimeout()', IFrameTime); } catch (e) { if (e.message == 'Permission denied' && !secondtry) { // this is for IE 6.0.3790, which won't xmlHTTP or // use the Iframe more than once. //alert("trying to recreate"); try { var parent = iframe.parentNode; parent.removeChild(iframe); iframedoc = createIFrameRPC(); //alert('recreated'); xmlwaiting = false; secondtry = true; getpostDataIFrame(type, field, nlrequest, params, callback, noshowerror); //alert('getpostDataIFramed!'); } catch (E) { alert('second try ' + E.message); } } else { alert(e.message); setState(field, 4, e.message); } xmlwaiting = false; } } /* var console = new Object(); console.text = ''; console.info = function(t) { // console.text += t + '
'; // document.getElementById('console').innerHTML = console.text; } */ function getFuncName(func) { var cbname = func.name; if (cbname != null) return cbname; var str = func.toString(); var p1 = str.indexOf(" "); var p2 = str.indexOf("("); return trim(str.substring(p1, p2)); } // blank function referenced in XML response when not via IFrame. function notIFrame() { } function IFrameTimeout() { //alert('iframetimeout'); digestIFrame(ICBname, "
Request no " + seqNo + " timed out after" + (IFrameTime / 1000) + " seconds.
Connection may be lost.
You may wait, or refresh the page.
"); } // function referenced in response HTML when IFrame is used. function digestIFrame(callbackname, responseText) { clearTimeout(IFrameID); xmlwaiting = false; writeLog('digestIFrame ' + callbackname); if (hasxmlError(responseText)) { //alert('digestIFrame has err ' + responseText); if (!IFramenoshowerror) { if (responseText.indexOf(TimeoutError) > -1) { showXMLError(isavefield, responseText, '404.js'); } else { showXMLError(isavefield, responseText, '405.sw'); } } //alert(noshowerror); popXmlStack(); return; } var str=''; try { str = responseText.replace(/[\n\f\r\t']/g," "); } catch (e) { alert('digestIFrame eval error 1: ' + e.message + ':' + str); popXmlStack(); return; } try { exp = callbackname + "('" + str + "')"; //alert('about to:\n' + exp); //eval(exp); var func; eval('func = ' + callbackname); func(str); } catch (e) { alert('digestIFrame eval error 2: ' + e.message + ':' + exp); } if (validateCallBack) { var v = validateCallBack; validateCallBack = null; v(); } popXmlStack(); } function getXmlHttpObjectMozilla() { // mapped by getXmlHttpObject return new XMLHttpRequest(); } function getXMLHttpObjectIEOld() { // mapped by getXmlHttpObject return new ActiveXObject("Microsoft.XMLHTTP"); } function getXMLHttpObjectIEOld2() { // mapped by getXmlHttpObject return new ActiveXObject("MSXML2.ServerXMLHTTP"); } function getXmlHttpObject(){ //console.info("xho"); if (usingIFrame) { return tryIFrame(); } // to force IFrame for testing, set to true; var objXMLHttp=null; try { objXMLHttp=new XMLHttpRequest(); getXmlHttpObject = getXmlHttpObjectMozilla; } catch (error) { try { objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP"); getXmlHttpObject = getXmlHttpObjectIEOld; } catch (error) { try { objXMLHttp=new ActiveXObject("MSXML2.ServerXMLHTTP"); getXmlHttpObject = getXmlHttpObjectIEOld2; } catch (error) { return tryIFrame(); } } } return objXMLHttp } var IFrameRPC; function tryIFrame() { var objXMLHttp=null; try { objXMLHttp = createIFrameRPC(); getpostData = getpostDataIFrame; IFrameRPC = document.getElementById("iframeRPC"); } catch (e) { alert ("Browser does not support HTTP Request:" + e.message) } return objXMLHttp; } // see Javascript anthology, pages 476-481 var iframe = null; function createIFrameRPC() { var body = document.getElementsByTagName('body')[0]; iframe = document.createElement('iframe'); iframe.setAttribute('id', 'iframeRPC'); body.appendChild(iframe); if (typeof iframe.document != 'undefined' && typeof iframe.contendDocument == 'undefined' && typeof iframe.contentWindow == 'undefined') { body.removeChild(iframe); var iframeHTML = ''; body.innerHTML += iframeHTML; iframe = document.getElementById('iframeRPC'); iframe.contentWindow = new Object(); iframe.contentWindow.document = new Object(); iframe.contentWindow.document.location = new Object(); iframe.contentWindow.document.location.iframeRef = iframe; iframe.contentWindow.document.location.replace = locationReplaceIE5; } if (debugMode) { iframe.style.position = 'absolute'; iframe.style.left = '300px'; } else { iframe.style.display = 'none'; } if (typeof iframe.contentDocument != 'undefined') { var iframedoc = iframe.contentDocument; } else { if (typeof iframe.contentWindow != 'undefined') { var iframedoc = iframe.contentWindow.document; } else { return null; } } usingIFrame = true; return iframedoc; } function locationReplaceIE5(url) { this.iframeRef.setAttribute('src', url); return true; } var iframeBody = ""; function evalJSON(response) { if (!usingIFrame) { var p = response.indexOf(iframeBody); if (p >= 0) { response = response.substring(p + iframeBody.length , response.indexOf('')); } } //console.info(response); try { var temp = eval("(" + response.replace(/\\/g,"\\\\") + ")"); if (temp.length > 1) { // IE counts one too many if (temp[temp.length - 1] == null) temp.length = temp.length - 1; } return temp; } catch (e) { try { //if (debugeval) console.info('evalJSON catch'); var temp = new Array(); var tsub = 0; var items = response.replace(/\\/g,"\\\\").split('{'); var s, nam, val, l; var inNam = 0; var inVal = 1; //alert('items ' + items.length); for (var i = 1; i < items.length; i++) { temp[tsub] = new Object(); nam = ''; val = ''; s = inNam; //if (debugeval) if (i == 1) console.info(i + ' ' + items[i].length + ' ' + items[i]); for (var j = 0; j < items[i].length; j++) { switch (s) { case inNam: if (items[i].substring(j, j+1) == ':') { s = inVal; l = items[i].substring(j+1, j+2); if (l != "'" && l != '"') { val = l; l=''; } //if (debugeval) if (i == 1) console.info(j + ' ' + l + ' ' + nam); j += 1; } else { nam += items[i].substring(j, j+1); }; //if (debugeval) if (i == 1) console.info(j + ' ' + items[i].substring(j, j+1) + ' ' + nam); break; case inVal:if (((items[i].substring(j, j+1) == l) && (ifEnd(items[i].substring(j+1, j+2)))) || ((l == '') && (ifEnd(items[i].substring(j, j+1))))) { s = inNam; var tstr = '(temp['+tsub+'].' + trim(nam) + '=' + l + val + l + ')'; try { eval(tstr); } catch (e) { try { var pat = /"/g var tstr = '(temp['+tsub+'].' + trim(nam) + '="' + val.replace(pat,"''") + '")'; //if (debugeval) console.info('eval ' + tstr); eval(tstr); } catch (e) { //if (debugeval) console.info('failed eval ' + tstr + e.message); } } nam = (l=='') ? items[i].substring(j+1, j+2):''; val = ''; j += 1; //2; } else { val += items[i].substring(j, j+1); } break; } //if (j > 28) j=500; } tsub++; } return temp; } catch (e) { showInfo("couldn't eval " + response + "
" + e.message); return new Array(); } } } function ifEnd(s) { switch (s) { case ',': return true; case '}': return true; default : return false; } } // expects list of input fields (i.e. document.getElementById('field');). // hitting enter in first will skip to second, etc, except last. function setEnterOrder() { for (var i = 0; i < arguments.length - 1; i++) { var func = null; if (typeof arguments[i+1] == 'function') func = arguments[i+1]; if (typeof arguments[i+1].onclick == 'function') func = arguments[i+1].onclick; if (func) { arguments[i].func = func; if (window.event) { arguments[i].onkeypress = function() { if (window.event.keyCode == 13) { this.blur(); this.func(); return false; } else { return true; } } } else { arguments[i].onkeypress = function(e) { if (e.keyCode == 13) { this.blur(); this.func(); return false; } else { return true; } } } } else { arguments[i].nextField = arguments[i+1]; if (window.event) { arguments[i].onkeypress = function() { if (window.event.keyCode == 13) { this.nextField.focus(); return false; } else { return true; } } } else { arguments[i].onkeypress = function(e) { if (e.keyCode == 13) { this.nextField.focus(); return false; } else { return true; } } } } } } // expects input field, button. Enter in field1 will click field2 function setEnterClick(field1, func2) { field1.func2 = func2; if (window.event) { //alert('set enter click window.event'); field1.onkeypress = function() { if (window.event.keyCode == 13) { //debugMode = true; try { this.blur(); this.func2(); //writeLog(this.EnterBtn.click); } catch (Ex) {alert('catch enter');}; //debugMode = false; return false; } else { return true; } } } else { //alert('set enter click not window.event'); field1.onkeypress = function(e) { if (e.keyCode == 13) {this.blur(); this.func2(); return false; } else { return true; } } } } /* // expects input field, button. Enter in field1 will call field2. function setEnterFunc(field1, field2) { if (window.event) { field1.onkeypress = function() { if (window.event.keyCode == 13) { field2(); return false; } else { return true; } } } else { field1.onkeypress = function(e) { if (e.keyCode == 13) { field2(); return false; } else { return true; } } } } */ // expects list of field's created with addField function resetValues() { var errmsg = ErrMsg.innerHTML; for (var i = 0; i < arguments.length; i++) { arguments[i].value = ""; arguments[i].last = ""; try { if (i == 0) arguments[i].focus(); } catch (e) { } setState(arguments[i],0); } ErrMsg.innerHTML = errmsg; } var StTitles = new Array("","looking up", "found", "coundn't find", "error seeking"); var StChars = new Array("","?","*","!","E"); var StColors = new Array("white", "yellow", "green", "red", "blue"); // field, state, (optional) msg. field created with addField. state 0,1,2,3,4. function setState() { if (arguments[0] == null) return; var state = arguments[1]; arguments[0].state = state; switch (arguments.length) { case 3: var desc = arguments[2]; break; case 2: var desc = StTitles[state] + " " + arguments[0].label; break; default: alert("setState, bad # args " + arguments.length); return; } try { arguments[0].chk.innerHTML = '' + StChars[state] + ""; arguments[0].chk.style.backgroundColor = StColors[state]; if (desc.substring(0,1) == "+") { arguments[0].chk.title += "; " + desc.substring(1); } else { arguments[0].chk.title = desc; } if (state >= 3) showError(desc, true); if (state == 2) showError("", false); } catch (err) { showError("setState Error " + arguments[0].id + " " + state + " " + err.message, true); } } // expect a list of fields made with addField function allCheckedGood() { for (var i = 0; i < arguments.length; i++) { if (arguments[i].state != 2) { showError(arguments[i].chk.title, true); return false; } } return true; } function requireFields() { for (var i = 0; i < arguments.length; i++) { if (trim(arguments[i].value) == '') { setState(arguments[i], 3, "Please enter " + arguments[i].label); return false; } } return true; //getFieldStatus(arguments); } function getFieldStatus() { var s = 'OK'; for (var i = 0; i < arguments.length; i++) { // alert(i + ' is ' + arguments[i].state); switch (arguments[i].state) { case 0: showError("Please enter " + arguments[i].label, true); return 'empty'; case 1: s = 'pending'; break; case 2: break; case 3: showError(arguments[i].chk.title, true); return 'error'; default: alert('unknown state:[' + i + ']' + arguments[i].label); return 'error'; } } writeLog('getfieldstatus ', s); return s; } function backbutton() { if (InfoForm.className == 'info_show') { hideInfo(); } else { popForm(); } } var showInfoStyle = 0; function showInfo(text) { InfoMsg.innerHTML = text; InfoForm.className = 'info_show'; InfoClose.style.display = 'inline'; if (showInfoStyle == 0) return; var p = getPosition(InfoForm); var l = InfoForm.style.offsetWidth - 70; if (l < 0) l = InfoForm.style.offsetWidth; //InfoClose.style.left = l; //InfoForm.style.offsetWidth - 70; InfoClose.style.top = p[1] + 5; window.scrollTo(0,0); } function hideInfo() { InfoForm.className = 'info_hide'; InfoClose.style.display = 'none'; try { activeEle.focus(); } catch (e) { } } function formatTime(time) { var h = moves[i].time.getHours() + ":"; var m = moves[i].time.getMinutes(); if (m < 10) { h += "0" + m + ":"; } else { h += m + ":"; } var s = moves[i].time.getSeconds() if (s < 10) { return h + "0" + s; } else { return h + s; } } function formatDate(d) { var y = (d.getYear() - 100); if (y < 10) y = "0" + y; var m = (d.getMonth() + 1); if (m < 10) m = "0" + m; var d = d.getDate(); if (d < 10) d = "0" + d; return m + "/" + d + "/" + y; } var TableStyle='cellpadding="0" cellspacing="2"'; var TableCols; var TableStr; function makeTStyle(s) { TableStyle = s; } var TableRowCount; function makeTHead() { TableStr = ""; TableCols = new Array(); TableRowCount = 0; for (var i=0; i < arguments.length; i++) { if (arguments[i]) { var col = arguments[i].split("|"); TableCols[i] = new Object(); TableCols[i].head = col[0]; switch (col.length) { case 1: TableCols[i].type = 'str'; break; case 2: TableCols[i].type = col[1]; TableCols[i].dec = 0; break; case 3: TableCols[i].type = col[1]; TableCols[i].dec = parseFloat(col[2],10); break; default: alert ("Unknown parameter " + argument[i]); } var align = (TableCols[i].type == 'num') ? ' align="right"' : ''; TableStr += "" TRowClass[i] = ''; } } TableStr += "" } var TRowWidth = new Array('','','','','','','',''); function widthTRow() { for (var i=0; i < arguments.length; i++) { TRowWidth[i] = arguments[i] ? ' width="' + arguments[i] + '"' : ''; } } var TRowClass = new Array(); function classTRow() { for (var i=0; i < arguments.length; i++) { TRowClass[i] = arguments[i] ? ' class="' + arguments[i] + '"' : ''; } } function makeTRow() { var p, t; TableStr += ""; for (var i=0; i < arguments.length; i++) { try { switch (TableCols[i].type) { case 'str': try { p = arguments[i].split("|"); } catch (e) { p = [ '? ' + arguments[i]]; } if (p.length > 1) { t = " title='" + p[1] + "'"; } else { t = '';} TableStr += "" + p[0] + ""; break; case 'num': TableStr += ""; break; default: alert("Unknown col type " + TableCols[i].head + ":" + TableCols[i].type); } } catch (e) { } } TableStr += ""; TableRowCount++; } function getTable() { return TableStr + "
" + TableCols[i].head + "
" + formatTo(arguments[i], TableCols[i].dec) + "
"; } function formatToNoZero(base, precision) { var s = formatTo(base, precision); if (s.substring(0,1) == '0.') return s.substring(1); return s; } function formatTo(base, precision) { var a = roundTo(base, precision); var s = a.toString(); var decIndex = s.indexOf("."); if (precision > 0 && decIndex < 0) { decIndex = s.length; s += '.'; } while ((decIndex + precision + 1) > s.length) { s += '0'; } return trim(s); } function roundTo(base, precision) { var m = Math.pow(10, precision); return Math.round(base * m) / m; } // function will pause execution, in milliseconds function pause(millis) { var date = new Date(); var curDate = null; do { curDate = new Date(); } while(curDate-date < millis); } function mustEnter(field) { if (sameValue(field)) return; setState(field, 2); } var activeEle; function addField(form, label, field, length, onblurfunc) { /* try { doesn't work in IE7??? var table = document.getElementById(form + "_fields"); var newRow = document.createElement("tr"); newRow = table.appendChild(newRow); var newCell = document.createElement("td"); newCell = newRow.appendChild(newCell); newCell.innerHTML = label; var newCell2 = document.createElement("td"); newCell2 = newRow.appendChild(newCell2); var newField = document.createElement("input"); newField.type = 'text'; newField.id = field ; newField.size = length; var eleF = newCell.appendChild(newField); var newCell3 = document.createElement("td"); newCell3 = newRow.appendChild(newCell3); newCell3.id = field + "_chk"; // if (field == 'ubin') alert('add field ubin'); // alert("" + label + ""); // newRow.innerHTML = "" + label + ""; } catch (e) { alert("add Field error: with " + form + " field " + field + " " + e.message); return null; } */ try { var eleF = document.getElementById(field); eleF.label = label; eleF.onfocus = function() { activeEle = this; }; eleF.chk = document.getElementById(field + "_chk"); eleF.state = 0; } catch (e) { alert(e.message + '\nfor ' + field); } return eleF; } function addButton(form, label, button, call) { /* try { var table = document.getElementById(form + "_fields"); var newRow = document.createElement("tr"); newRow = table.appendChild(newRow); var newCell = document.createElement("td"); newCell = newRow.appendChild(newCell); newCell = newRow.appendChild(newCell); var newField = document.createElement("input"); newField.type = 'button'; newField.id = button; newField.value = label; var eleB = document.appendChild(newField); newCell = newRow.appendChild(newCell); newCell.id = button + "_chk"; // newRow.innerHTML = ""; } catch (e) { alert("add Field error: with " + form + " field " + button + " " + e.message); return null; } */ var eleB = document.getElementById(button); eleB.onclick = call; eleB.label = label; eleB.chk = document.getElementById(button + "_chk"); return eleB; } var ActiveForm=new Array(); var ActiveForm_i = -1; function activate(form) { if (ActiveForm_i > -1) { if (ActiveForm[ActiveForm_i].id == form.id) return; try { ActiveForm[ActiveForm_i].onexit();} catch (ex) {} ActiveForm[ActiveForm_i].style.display = 'none'; } ActiveForm_i++; ActiveForm[ActiveForm_i] = form; ActiveForm[ActiveForm_i].pop = (arguments.length == 1) ? true : arguments[1]; try { ActiveForm[ActiveForm_i].onenter();} catch (ex) {} makeForm(form); } function makeForm(form) { Title.innerHTML = form.title; form.style.display = 'block'; form.firstfield.focus(); } function popForm() { if (ActiveForm_i == 0) return; ActiveForm[ActiveForm_i].style.display = 'none'; try { ActiveForm[ActiveForm_i].onexit();} catch (ex) {} do { ActiveForm_i--; try { ActiveForm[ActiveForm_i].onenter();} catch (ex) {} if (ActiveForm[ActiveForm_i].pop ) { makeForm(ActiveForm[ActiveForm_i]); return; } } while (ActiveForm_i > 0); } function sameValue(field) { field.value = trim(field.value.toUpperCase()); if (field.value == "") { setState(field,0); return true;} if (field.value.length > field.size) { showError(field.label + " is " + field.value.length + " characters, max is " + field.size, true); return true; } if (field.last == field.value) { return true;} field.last = field.value; return false; } function MMDDYY(now) { var m = now.getMonth() + 1; if (m < 10) { var t = "0" + m + "/"; } else { var t = m + "/"; } var d = now.getDate() if (d < 10) { t += "0" + d + "/"; } else { t += d + "/"; } var y = now.getFullYear() % 10; if (y < 10) { return t + "0" + y; } else { return t + y; } } function getXMLnumber(text, tag) { var p1 = text.indexOf("<" + tag + ">"); if (p1 < 0) return -2; p1 += tag.length + 1; var p2 = text.indexOf(""); if (p2 < 0) return -3; return parseFloat(text.substring(p1 , p2).split(">")[1], 10); } function getPosition(ele) { var posX = 0; var posY = 0; while (ele != null) { posX += ele.offsetLeft; posY += ele.offsetTop; ele = ele.offsetParent; } return [posX, posY]; } function makeAnchor(call, arg) { //if (arg == "") return " Unknown" if (arguments.length > 2) { return " " + arguments[2] + ""; } else { return " " + arg + ""; } }