var taconite_client_version="2.0-rc1"; function AjaxRequest(url) { var self = this; var xmlHttp = createXMLHttpRequest(); var queryString = ""; var requestURL = url; var method = "GET"; var preRequest = null; var postRequest = null; var debugResponse = false; var async = true; var errorHandler = null; var name = 'AjaxRequest'; this.getXMLHttpRequestObject = function() { return xmlHttp; } this.setPreRequest = function(func) { preRequest = func; } this.setPostRequest = function(func) { postRequest = func; } this.getPostRequest = function() { return postRequest; } this.setUsePOST = function() { method = "POST"; } this.setUseGET = function() { method = "GET"; } this.setEchoDebugInfo = function() { debugResponse = true; } this.isEchoDebugInfo = function() { return debugResponse; } this.setQueryString = function(qs) { queryString = qs; } this.getQueryString = function() { return queryString; } this.setAsync = function(asyncBoolean){ async = asyncBoolean; } this.setErrorHandler = function(func){ errorHandler = func; } this.addFormElements = function(form) { var formElements = new Array(); if (form != null) { if (typeof form == "string") { var el = document.getElementById(form); if (el != null) { formElements = el.elements; } } else { formElements = form.elements; } } var values = toQueryString(formElements); accumulateQueryString(values); } function accumulateQueryString(newValues) { if(queryString == "") { queryString = newValues; } else { queryString = queryString + "&" + newValues; } } this.addNameValuePair = function(name, value) { var nameValuePair = name + "=" + encodeURIComponent(value); accumulateQueryString(nameValuePair); } this.addNamedFormElementsByFormID = function() { var elementName = ""; var namedElements = null; for(var i = 1; i < arguments.length; i++) { elementName = arguments[i]; namedElements = document.getElementsByName(elementName); var arNamedElements = new Array(); for(j = 0; j < namedElements.length; j++) { if(namedElements[j].form && namedElements[j].form.getAttribute("id") == arguments[0]){ arNamedElements.push(namedElements[j]); } } if(arNamedElements.length > 0){ elementValues = toQueryString(arNamedElements); accumulateQueryString(elementValues); } } } this.addNamedFormElements = function() { var elementName = ""; var namedElements = null; for(var i = 0; i < arguments.length; i++) { elementName = arguments[i]; namedElements = document.getElementsByName(elementName); elementValues = toQueryString(namedElements); accumulateQueryString(elementValues); } } this.addFormElementsById = function() { var id = ""; var element = null; var elements = new Array(); for(var h = 0; h < arguments.length; h++) { element = document.getElementById(arguments[h]); if(element != null) { elements[h] = element; } } elementValues = toQueryString(elements); accumulateQueryString(elementValues); } this.sendRequest = function() { if(preRequest) { preRequest(self); } var obj = this; if(async) xmlHttp.onreadystatechange = function () { handleStateChange(self) }; if(requestURL.indexOf("?") > 0) { requestURL = requestURL + "&ts=" + new Date().getTime(); } else { requestURL = requestURL + "?ts=" + new Date().getTime(); } try { if(method == "GET") { if(queryString.length > 0) { requestURL = requestURL + "&" + queryString; } xmlHttp.open(method, requestURL, async); xmlHttp.send(null); } else { xmlHttp.open(method, requestURL, async); try { if (xmlHttp.overrideMimeType) { xmlHttp.setRequestHeader("Connection", "close"); } } catch(e) { } xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xmlHttp.send(queryString); } } catch(exception) { if(errorHandler) { errorHandler(self, exception); } else { throw exception; } } if(!async) { handleStateChange(self); } if(self.isEchoDebugInfo()) { echoRequestParams(); } } handleStateChange = function(ajaxRequest) { if(ajaxRequest.getXMLHttpRequestObject().readyState != 4) { return; } if(ajaxRequest.getXMLHttpRequestObject().status != 200) { errorHandler(self); return; } try { var debug = ajaxRequest.isEchoDebugInfo(); if(debug) { echoResponse(ajaxRequest); } } catch(exception) { if(errorHandler) { errorHandler(self, exception); } else { throw exception; } } finally { try { if(ajaxRequest.getPostRequest()) { var f = ajaxRequest.getPostRequest(); f(ajaxRequest); } } catch(exception) { if(errorHandler) { errorHandler(self, exception); } } } } function isTaconiteTag(node) { return node.tagName.substring(0, 9) == "taconite-"; } function toQueryString(elements) { var node = null; var qs = ""; var name = ""; var tempString = ""; for(var i = 0; i < elements.length; i++) { tempString = ""; node = elements[i]; name = node.getAttribute("name"); if (!name) { name = node.getAttribute("id"); } name = encodeURIComponent(name); if(node.tagName.toLowerCase() == "input") { if(node.type.toLowerCase() == "radio" || node.type.toLowerCase() == "checkbox") { if(node.checked) { tempString = name + "=" + encodeURIComponent(node.value); } } if(node.type.toLowerCase() == "text" || node.type.toLowerCase() == "hidden" || node.type.toLowerCase() == "password") { tempString = name + "=" + encodeURIComponent(node.value); } } else if(node.tagName.toLowerCase() == "select") { tempString = getSelectedOptions(node); } else if(node.tagName.toLowerCase() == "textarea") { tempString = name + "=" + encodeURIComponent(node.value); } if(tempString != "") { if(qs == "") { qs = tempString; } else { qs = qs + "&" + tempString; } } } return qs; } function getSelectedOptions(select) { var options = select.options; var option = null; var qs = ""; var tempString = ""; for(var x = 0; x < options.length; x++) { tempString = ""; option = options[x]; if(option.selected) { tempString = encodeURIComponent(select.name) + "=" + encodeURIComponent(option.value); } if(tempString != "") { if(qs == "") { qs = tempString; } else { qs = qs + "&" + tempString; } } } return qs; } function echoResponse(ajaxRequest) { var echoTextArea = document.getElementById("debugResponse"); if(echoTextArea == null) { echoTextArea = createDebugTextArea("Server Response:", "debugResponse"); } var debugText = ajaxRequest.getXMLHttpRequestObject().status + " " + ajaxRequest.getXMLHttpRequestObject().statusText + "\n\n\n"; echoTextArea.value = debugText + ajaxRequest.getXMLHttpRequestObject().responseText; } function echoParsedJavaScript(js) { var echoTextArea = document.getElementById("debugParsedJavaScript"); if(echoTextArea == null) { var echoTextArea = createDebugTextArea("Parsed JavaScript (by JavaScript Parser):", "debugParsedJavaScript"); } echoTextArea.value = js; } function createDebugTextArea(label, id) { echoTextArea = document.createElement("textarea"); echoTextArea.setAttribute("id", id); echoTextArea.setAttribute("rows", "15"); echoTextArea.setAttribute("style", "width:100%"); echoTextArea.style.cssText = "width:100%"; document.getElementsByTagName("body")[0].appendChild(document.createTextNode(label)); document.getElementsByTagName("body")[0].appendChild(echoTextArea); return echoTextArea; } function echoRequestParams() { var qsTextBox = document.getElementById("qsTextBox"); if(qsTextBox == null) { qsTextBox = createDebugTextBox("Query String:", "qsTextBox"); } qsTextBox.value = queryString; var urlTextBox = document.getElementById("urlTextBox"); if(urlTextBox == null) { urlTextBox = createDebugTextBox("URL (Includes query string if GET request):", "urlTextBox"); } urlTextBox.value = requestURL; } function createDebugTextBox(label, id) { textBox = document.createElement("input"); textBox.setAttribute("type", "text"); textBox.setAttribute("id", id); textBox.setAttribute("style", "width:100%"); textBox.style.cssText = "width:100%"; document.getElementsByTagName("body")[0].appendChild(document.createTextNode(label)); document.getElementsByTagName("body")[0].appendChild(textBox); return textBox; } }; function createXMLHttpRequest() { var req = false; if (window.XMLHttpRequest) { req = new XMLHttpRequest(); } else if (window.ActiveXObject) { try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { req = false; } } } return req; }; /* Compiled from X 4.18 by XC 1.07 on 17Feb09 */ xLibrary={version:'4.18',license:'GNU LGPL',url:'http://cross-browser.com/'};function xCamelize(cssPropStr){var i,c,a=cssPropStr.split('-');var s=a[0];for(i=1;iw.innerWidth)v-=16;}return v;}function xClientWidth(){var v=0,d=document,w=window;if((!d.compatMode||d.compatMode=='CSS1Compat')&&!w.opera&&d.documentElement&&d.documentElement.clientWidth){v=d.documentElement.clientWidth;}else if(d.body&&d.body.clientWidth){v=d.body.clientWidth;}else if(xDef(w.innerWidth,w.innerHeight,d.height)){v=w.innerWidth;if(d.height>w.innerHeight)v-=16;}return v;}function xDef(){for(var i=0;i=eX+l&&x<=eX+xWidth(e)-r&&y>=eY+t&&y<=eY+xHeight(e)-b);}function xHeight(e,h){if(!(e=xGetElementById(e)))return 0;if(xNum(h)){if(h<0)h=0;else h=Math.round(h);}else h=-1;var css=xDef(e.style);if(e==document||e.tagName.toLowerCase()=='html'||e.tagName.toLowerCase()=='body'){h=xClientHeight();}else if(css&&xDef(e.offsetHeight)&&xStr(e.style.height)){if(h>=0){var pt=0,pb=0,bt=0,bb=0;if(document.compatMode=='CSS1Compat'){var gcs=xGetComputedStyle;pt=gcs(e,'padding-top',1);if(pt!==null){pb=gcs(e,'padding-bottom',1);bt=gcs(e,'border-top-width',1);bb=gcs(e,'border-bottom-width',1);}else if(xDef(e.offsetHeight,e.style.height)){e.style.height=h+'px';pt=e.offsetHeight-h;}}h-=(pt+pb+bt+bb);if(isNaN(h)||h<0)return;else e.style.height=h+'px';}h=e.offsetHeight;}else if(css&&xDef(e.style.pixelHeight)){if(h>=0)e.style.pixelHeight=h;h=e.style.pixelHeight;}return h;}function xLeft(e,iX){if(!(e=xGetElementById(e)))return 0;var css=xDef(e.style);if(css&&xStr(e.style.left)){if(xNum(iX))e.style.left=iX+'px';else{iX=parseInt(e.style.left);if(isNaN(iX))iX=xGetComputedStyle(e,'left',1);if(isNaN(iX))iX=0;}}else if(css&&xDef(e.style.pixelLeft)){if(xNum(iX))e.style.pixelLeft=iX;else iX=e.style.pixelLeft;}return iX;}function xMoveTo(e,x,y){xLeft(e,x);xTop(e,y);}function xNum(){for(var i=0;i=0){var pl=0,pr=0,bl=0,br=0;if(document.compatMode=='CSS1Compat'){var gcs=xGetComputedStyle;pl=gcs(e,'padding-left',1);if(pl!==null){pr=gcs(e,'padding-right',1);bl=gcs(e,'border-left-width',1);br=gcs(e,'border-right-width',1);}else if(xDef(e.offsetWidth,e.style.width)){e.style.width=w+'px';pl=e.offsetWidth-w;}}w-=(pl+pr+bl+br);if(isNaN(w)||w<0)return;else e.style.width=w+'px';}w=e.offsetWidth;}else if(css&&xDef(e.style.pixelWidth)){if(w>=0)e.style.pixelWidth=w;w=e.style.pixelWidth;}return w;}