// (c) 2004-2006 Rob Rohan, Richard Applebaum, and Barney Boisvert

if(typeof COLLECTIONS_VERSION=="undefined"||typeof XMLW3DOM_VERSION=="undefined"){alert("Fatal Error: XMLDocument is missing required libraries");throw new Error("xmldocument.js missing required libraries");}
var XMLDOCUMENT_VERSION="0.1";var XML_ELEMENT=1;var XML_ATTRIBUTE=2;var XML_TEXT=3;var XML_CDATA=4;var XML_ENTITY_REFERENCE=5;var XML_ENTITY=6;var XML_PI=7;var XML_COMMENT=8;var XML_DOCUMENT=9;var XML_DOCUMENT_TYPE=10;var XML_DOCUMENT_FRAGMENT=11;var XML_NOTATION=12;var __node_types=new Array();__node_types[1]="Element";__node_types[2]="Attribute";__node_types[3]="Text";__node_types[4]="CDATA";__node_types[5]="Entity Reference";__node_types[6]="Entity";__node_types[7]="Processing Instruction";__node_types[8]="Comment";__node_types[9]="Document";__node_types[10]="Document Type";__node_types[11]="Document Fragment";__node_types[12]="Notation";function XML_NodeTypeAsString(node)
{try{return __node_types[node.nodeType];}catch(e){throw new Error("XML_NodeTypeAsString:: "+e);}}
function XMLDocumentFactory(){;}
XMLDocumentFactory.prototype.getInstance=function _xmldoc_getInstance()
{try
{if(window.ActiveXObject)
{function wrapper(){;}
wrapper.__NSmap=new Map();wrapper.__doc=new ActiveXObject("Microsoft.XMLDOM");wrapper.documentElement=null;wrapper.loadXML=function(str)
{var status=this.__doc.loadXML(str);var rootelement=this.__doc.documentElement;this.__recurseNodeForNamespace(rootelement);this.documentElement=this.__doc.documentElement;return status;};wrapper.__recurseNodeForNamespace=function(node)
{if(node!=null)
{this.__getNamespaces(node);var dChildren=node.childNodes;var dcl=dChildren.length;var i=0;for(;i<dcl;i++)
{if(dChildren.item(i)!=null&&dChildren.item(i).nodeType==XML_ELEMENT)
this.__recurseNodeForNamespace(dChildren.item(i));}}};wrapper.__scratch_element=null;wrapper.__recurseNodeForId=function(node,id)
{var dChildren=node.childNodes;var dcl=dChildren.length;var i=0;for(;i<dcl;i++)
{if(dChildren.item(i)!=null)
{if(dChildren.item(i).nodeType==XML_ELEMENT)
{if(dChildren.item(i).getAttribute("id")==id)
{this.__scratch_element=dChildren.item(i);return this.__scratch_element;}
this.__recurseNodeForId(dChildren.item(i),id);}}}
return this.__scratch_element;};wrapper.createAttribute=function(name)
{return this.__doc.createAttribute(name);};wrapper.createAttributeNS=function(nsURI,name)
{if(this.__NSmap.get(nsURI)==null)
{}
return this.__doc.createAttribute(name);};wrapper.createElement=function(name)
{return this.__doc.createElement(name);};wrapper.createElementNS=function(nsURI,name)
{if(this.__NSmap.get(nsURI)==null)
{}
return this.__doc.createElement(name);};wrapper.createTextNode=function(data)
{return this.__doc.createTextNode(data);};wrapper.getElementById=function(id)
{var rootelement=this.__doc.documentElement;return this.__recurseNodeForId(rootelement,id);};wrapper.getElementsByTagName=function(tagname)
{return this.__doc.getElementsByTagName(tagname);};wrapper.xml=function()
{return this.__doc.xml;};wrapper.getElementsByTagNameNS=function(nsURI,tagname)
{return this.__doc.getElementsByTagName(this.__fqitem(nsURI,tagname));};wrapper.__fqitem=function(nsURI,name)
{var fqitem=this.__NSmap.get(nsURI);if(fqitem!=null&&fqitem!="")
fqitem+=":"+name;else
fqitem=name;return fqitem;}
wrapper.__getPrefix=function(tagName)
{var prefix;var prefixIndex=tagName.indexOf(":");if(prefixIndex==-1)
return null;else
return prefix=tagName.substring(0,prefixIndex);};wrapper.__getLocalName=function(tagName)
{var suffix;var prefixIndex=tagName.indexOf(":");if(prefixIndex==-1)
return tagName;else
return suffix=tagName.substring(prefixIndex+1,tagName.length);};wrapper.__getNamespaces=function(elementNode)
{if(elementNode!=null)
{var attributes=elementNode.attributes;if((attributes!=null)&&(attributes.length>0))
{var attlen=attributes.length;for(var x=0;x<attlen;x++)
{var attributeNamespacePrefix=this.__getPrefix(attributes.item(x).nodeName);var attributeNamespaceSuffix=this.__getLocalName(attributes.item(x).nodeName);if((attributeNamespacePrefix==null)&&(attributeNamespaceSuffix=="xmlns"))
{}
else if(attributeNamespacePrefix!=null&&(attributeNamespacePrefix=="xmlns"))
{this.__NSmap.put(attributes.item(x).nodeValue,attributeNamespaceSuffix)}}}}};wrapper.toString=function()
{return this.__doc.xml;};return wrapper;}
else if((!SysBrowser.safari&&!window.widget)&&document.implementation&&document.implementation.createDocument)
{var doc=document.implementation.createDocument("","",null);if(doc.readyState==null)
{doc.readyState=1;doc.addEventListener("load",function()
{doc.readyState=4;if(typeof doc.onreadystatechange=="function")
doc.onreadystatechange();},false);}
doc.loadXML=function(s)
{var doc2=(new DOMParser()).parseFromString(s,"text/xml");while(this.hasChildNodes())
this.removeChild(this.lastChild);var clen=doc2.childNodes.length;for(var i=0;i<clen;i++)
{this.appendChild(this.importNode(doc2.childNodes[i],true));}};if(!SysBrowser.opera)
{doc.__defineGetter__("xml",function()
{return(new XMLSerializer()).serializeToString(this);});doc.toString=function()
{return(new XMLSerializer()).serializeToString(this);};}
doc.__scratch_element=null;doc.__recurseNodeForId=function(node,id)
{var dChildren=node.childNodes;var dcl=dChildren.length;var i=0;for(;i<dcl;i++)
{if(dChildren.item(i)!=null)
{if(dChildren.item(i).nodeType==XML_ELEMENT)
{if(dChildren.item(i).getAttribute("id")==id)
{this.__scratch_element=dChildren.item(i);return this.__scratch_element;}
this.__recurseNodeForId(dChildren.item(i),id);}}}
return this.__scratch_element;};doc.getElementById=function(id)
{var rootelement=this.documentElement;return this.__recurseNodeForId(rootelement,id);};return doc;}
else
{function wrapper(){;}
wrapper.__docImp=new DOMImplementation();wrapper.__doc=new DOMDocument(this.__docImp);wrapper.documentElement=null;wrapper.loadXML=function(xmldoc)
{this.__doc=this.__docImp.loadXML(xmldoc);this.documentElement=this.__doc.documentElement;};wrapper.getElementById=function(id)
{return this.__doc.getElementById(id);};wrapper.toString=function()
{return this.__doc.toString();};wrapper.getElementsByTagName=function(tag)
{return this.__doc.getElementsByTagName(tag);};wrapper.getElementsByTagNameNS=function(uri,tag)
{return this.__doc.getElementsByTagNameNS(uri,tag);};wrapper.createAttribute=function(name)
{return this.__doc.createAttribute(name);};wrapper.createAttributeNS=function(uri,name)
{return this.__doc.createAttributeNS(uri,name);};wrapper.createElement=function(name)
{return this.__doc.createElement(name);};wrapper.createElementNS=function(uri,name)
{return this.__doc.createElementNS(uri,name);};wrapper.createTextNode=function(data)
{return this.__doc.createTextNode(data);};return wrapper;}
return null;}catch(ex){throw new Error("XML Document creation failed: "+ex);}};