/*
* XML viewer
*
* Copyright (c) 2007 Lev Muchnik <LevMuchnik@gmail.com>. All rights reserved.
* You may copy and modify this script as long as the above copyright notice,
* this condition and the following disclaimer is left intact.
* This software is provided by the author "AS IS" and no warranties are
* implied, including fitness for a particular purpose. In no event shall
* the author be liable for any damages arising in any way out of the use
* of this software, even if advised of the possibility of such damage.
* $Date: 2007-10-03 19:08:15 -0700 (Wed, 03 Oct 2007) $
*
* Modifyed on 2009.09.10 by Zefext.
*/
function LoadXMLDom(d,h){if(h){var g=h;var c=GetParentElement(d);if(c==null){return false}while(c.childNodes.length){c.removeChild(c.childNodes.item(c.childNodes.length-1))}for(z=0;z<g.childNodes.length;z++){if(g.childNodes[z].nodeName!="xml"){var i=g.childNodes[z];var e=ShowXML(c,i,0)}}var f=document.createElement("div");var b=document.createElement("a");b.setAttribute("href","http://www.levmuchnik.net/Content/ProgrammingTips/WEB/XMLDisplay/DisplayXMLFileWithJavascript.html");var a=document.createTextNode("Source: Lev Muchnik");c.appendChild(b);return e}else{return false}}function LoadXMLObject(b,a){return LoadXMLDom(b,a)}function GetParentElement(a){if(typeof(a)=="string"){return document.getElementById(a)}else{if(typeof(a)=="object"){return a}else{return null}}}var IDCounter=1;var NestingIndent=15;function ShowXML(b,m,c){if(m==null||b==null){alert("root ?");return false}var d=true;var k=document.createElement("div");k.className="x-xmlviewer-element";k.style.position="relative";k.style.left=NestingIndent+"px";var n=AddTextNode(k,"+","x-xmlviewer-clickable");n.onclick=function(){ToggleElementVisibility(this)};n.id="div_empty_"+IDCounter;AddTextNode(k,"<","x-xmlviewer-utility");AddTextNode(k,m.nodeName,"x-xmlviewer-nodename");for(var f=0;m.attributes&&f<m.attributes.length;++f){CurrentAttribute=m.attributes.item(f);AddTextNode(k," "+CurrentAttribute.nodeName,"x-xmlviewer-attributename");AddTextNode(k,"=","x-xmlviewer-utility");AddTextNode(k,'"'+CurrentAttribute.nodeValue+'"',"x-xmlviewer-attributevalue")}AddTextNode(k,"></","x-xmlviewer-utility");AddTextNode(k,m.nodeName,"x-xmlviewer-nodename");AddTextNode(k,">","x-xmlviewer-utility");b.appendChild(k);SetVisibility(k,false);var a=document.createElement("div");a.className="x-xmlviewer-element";a.style.position="relative";a.style.left=NestingIndent+"px";var h=true;if(m.childNodes.length!=0){n=AddTextNode(a,"-","x-xmlviewer-clickable");n.onclick=function(){ToggleElementVisibility(this)};n.id="div_content_"+IDCounter;h=false}else{n=AddSpaceNode(a,"x-xmlviewer-noclickable")}++IDCounter;AddTextNode(a,"<","x-xmlviewer-utility");AddTextNode(a,m.nodeName,"x-xmlviewer-nodename");for(var f=0;m.attributes&&f<m.attributes.length;++f){CurrentAttribute=m.attributes.item(f);AddTextNode(a," "+CurrentAttribute.nodeName,"x-xmlviewer-attributename");AddTextNode(a,"=","x-xmlviewer-utility");AddTextNode(a,'"'+CurrentAttribute.nodeValue+'"',"x-xmlviewer-attributevalue")}if(h){AddTextNode(a,"/>","x-xmlviewer-utility")}else{AddTextNode(a,">","x-xmlviewer-utility")}var g="";for(var f=0;m.childNodes&&f<m.childNodes.length;++f){if(m.childNodes.item(f).nodeName!="#text"){d&=ShowXML(a,m.childNodes.item(f),c+1)}else{g=g+m.childNodes.item(f).nodeValue}}if(m.nodeValue){g=m.nodeValue}if(g){var e=false;if(m.nodeName=="eval"){e=true}var j=document.createElement("div");j.style.position="relative";j.style.left=NestingIndent+"px";if(e){var l=document.createElement("pre");l.className="sh_javascript";l.innerHTML=ZefextUxml.opt(g);l.style.overflow="scroll";l.style.height="250px";l.style.width="565px";l.style.border="1px solid #FFFFFF";l.style.padding="5px";j.appendChild(l)}else{AddTextNode(j,ZefextUxml.opt(g),"x-xmlviewer-nodevalue")}a.appendChild(j)}if(h){}else{AddTextNode(a,"</","x-xmlviewer-utility");AddTextNode(a,m.nodeName,"x-xmlviewer-nodename");AddTextNode(a,">","x-xmlviewer-utility")}b.appendChild(a);return d}function AddTextNode(c,b,a){NewNode=document.createElement("span");if(a){NewNode.className=a}if(b){NewNode.appendChild(document.createTextNode(b))}if(c){c.appendChild(NewNode)}return NewNode}function AddSpaceNode(b,a){NewNode=document.createElement("span");if(a){NewNode.className=a}NewNode.innerHTML="&nbsp;";if(b){b.appendChild(NewNode)}return NewNode}function CompatibleGetElementByID(a){if(!a){return null}if(document.getElementById){return document.getElementById(a)}else{if(document.layers){return document.id}else{return document.all.id}}}function SetVisibility(b,a){if(!b){return}var c=(a)?"block":"none";if(document.getElementById){b.style.display=c}else{if(document.layers){b.display=c}else{b.id.style.display=c}}}function ToggleElementVisibility(b){if(!b||!b.id){return}try{ElementType=b.id.slice(0,b.id.lastIndexOf("_")+1);ElementID=parseInt(b.id.slice(b.id.lastIndexOf("_")+1))}catch(c){return}var a=null;var d=null;if(ElementType=="div_content_"){a="div_content_"+ElementID;d="div_empty_"+ElementID}else{if(ElementType=="div_empty_"){d="div_content_"+ElementID;a="div_empty_"+ElementID}}a=CompatibleGetElementByID(a);d=CompatibleGetElementByID(d);if(a){a=a.parentNode}if(d){d=d.parentNode}SetVisibility(a,false);SetVisibility(d,true)};
