// JavaScript Document var taconite_parser_version=1.502; var isIE=document.uniqueID; String.prototype.trim = function() { //skip leading and trailing whitespace //and return everything in between var x=this; x=x.replace(/^\s*(.*)/, "$1"); x=x.replace(/(.*?)\s*$/, "$1"); return x; }; function requiresContextNode(xmlTagName) { return !(xmlTagName == "taconite-execute-javascript" || xmlTagName == "taconite-redirect"); } function XhtmlToDOMParser(){ this.parseXhtml = function(xml){ var xmlTagName=xml.tagName.toLowerCase(); var contextNode=document.getElementById(xml.getAttribute("contextNodeID")); if(contextNode == null && requiresContextNode(xmlTagName)){ return false; } switch (xmlTagName) { case "taconite-append-as-children": getReplaceChildren(contextNode,xml,false); break; case "taconite-delete": getDelete(contextNode,xml); break; case "taconite-append-as-first-child": getAppendAsFirstChild(contextNode,xml); break; case "taconite-insert-after": getInsertAfter(contextNode,xml); break; case "taconite-insert-before": getInsertBefore(contextNode,xml); break; case "taconite-replace-children": getReplaceChildren(contextNode,xml,true); break; case "taconite-replace": getReplace(contextNode,xml); break; case "taconite-set-attributes": xml.removeAttribute("contextNodeID"); xml.removeAttribute("parseInBrowser"); handleAttributes(contextNode,xml); break; case "taconite-redirect": handleRedirect(xml); break; case "taconite-execute-javascript": executeJavascript(xml); break; } return true; }; function isInlineMode(node) { var attrType; if(!node.tagName.toLowerCase() == "input") { return false; } attrType=node.getAttribute("type"); if(attrType=="radio" || attrType=="checkbox") { return true; } return false; } this.getJavaScript= function() { return "var dummy_taconite_variable=0"; }; function handleNode(xmlNode){ var nodeType = xmlNode.nodeType; switch(nodeType) { case 1: //ELEMENT_NODE return handleElement(xmlNode); case 3: //TEXT_NODE case 4: //CDATA_SECTION_NODE var textNode = document.createTextNode(xmlNode.nodeValue); if(isIE) { textNode.nodeValue = textNode.nodeValue.replace(/\n/g, '\r'); } return textNode; } return null; } function handleElement(xmlNode){ var domElemNode=null; var xmlNodeTagName=xmlNode.tagName.toLowerCase(); if(isIE){ if(isInlineMode(xmlNode)) { return document.createElement(""); } if(xmlNodeTagName == "style"){ //In internet explorer, we have to use styleSheets array. var text,rulesArray,styleSheetPtr; var regExp = /\s+/g; text=xmlNode.text.replace(regExp, " "); rulesArray=text.split("}"); domElemNode=document.createElement("style"); styleSheetPtr=document.styleSheets[document.styleSheets.length-1]; for(var i=0;i 0){ domElemNode.text=xmlNode.text; } } else{ for(var z = 0; z < xmlNode.childNodes.length; z++) { var domChildNode=handleNode(xmlNode.childNodes[z]); if(domChildNode!=null) { domElemNode.appendChild(domChildNode); } } } } return domElemNode; } function useIEFormElementCreationStrategy(xmlNodeTagName) { var useIEStrategy = false; if (isIE && ( xmlNodeTagName.toLowerCase() == "form" || xmlNodeTagName.toLowerCase() == "input" || xmlNodeTagName.toLowerCase() == "textarea" || xmlNodeTagName.toLowerCase() == "select" || xmlNodeTagName.toLowerCase() == "a" || xmlNodeTagName.toLowerCase() == "applet" || xmlNodeTagName.toLowerCase() == "button" || xmlNodeTagName.toLowerCase() == "img" || xmlNodeTagName.toLowerCase() == "link" || xmlNodeTagName.toLowerCase() == "map" || xmlNodeTagName.toLowerCase() == "object")) { useIEStrategy = true; } return useIEStrategy; } function createFormElementsForIEStrategy(xmlNode) { var attr = null; var name = ""; var value = ""; for (var x = 0; x < xmlNode.attributes.length; x++) { attr = xmlNode.attributes[x]; name = attr.name.trim(); if (name == "name") { value = attr.value.trim(); } } domElemNode = document.createElement("<" + xmlNode.tagName + " name='" + value + "' />"); // e.g. document.createElement(""); return domElemNode; } function handleAttributes(domNode, xmlNode) { var attr = null; var attrString = ""; var name = ""; var value = ""; var returnAsText = false; if(arguments.length == 3) { returnAsText = true; } for(var x = 0; x < xmlNode.attributes.length; x++) { attr = xmlNode.attributes[x]; name = cleanAttributeName(attr.name.trim()); value = attr.value.trim(); if(!returnAsText){ if(name == "style") { /* IE workaround */ domNode.style.cssText = value; /* Standards compliant */ domNode.setAttribute(name, value); } else if(name.trim().toLowerCase().substring(0, 2) == "on") { /* IE workaround for event handlers */ //domNode.setAttribute(name,value); eval("domNode." + name.trim().toLowerCase() + "=function(){" + value + "}"); } else if(name == "value") { /* IE workaround for the value attribute -- makes form elements selectable/editable */ domNode.value = value; } else if(useIEFormElementCreationStrategy(xmlNode.tagName) && name == "name") { //Do nothing, as the "name" attribute was handled in the createFormElementsForIEStrategy function continue; } else { /* Standards compliant */ domNode.setAttribute(name,value); } /* class attribute workaround for IE */ if(name == "class") { domNode.setAttribute("className",value); } }else{ attrString = attrString + name + "=\"" + value + "\" " ; } } return attrString; } function getAppendAsFirstChild(domNode,xml){ var firstNode=null; if(domNode.childNodes.length > 0) { firstNode=domNode.childNodes[0]; } for(var i=0;i0){ domNode.removeChild(domNode.childNodes[0]); } } for(var i=0;i