/**
 * Handles all XML related javascript interactions
 *
 * @title		XML Parsering Hander
 * @author		Colin Nolan
 * @created		24/08/09
 * @updated		07/06/11 v3.1.1, 13/04/11 v3.1.0, 12/04/11 v3.0.1, 05/06/10 v2.5, 03/06/10 v2.1
 * @version		v3.1.0
 * @references	http://www.devguru.com/technologies/xmldom/quickref/obj_document.html
 *				http://www.w3schools.com/xsl/xsl_client.asp
 *				http://help.dottoro.com/ljbcjfot.php
 */
var XMLHandler={parse:function(file){var req;if(window.XMLHttpRequest){req=new XMLHttpRequest();try{req.open("GET",file,false);req.send(null);return req.responseXML.documentElement}catch(e){throw e}}else{req=new ActiveXObject("Microsoft.XMLHTTP");req.async=false;try{req.load(file);return req}catch(e){throw e}}},XSLT:function(XMLDocument,XSLStyleSheet){var noXSLTProcessorMsg="The browser does not have a known XSLT processor";if(window.ActiveXObject){var ex=XMLDocument.transformNode(XSLStyleSheet);var holder=document.createElement("div");holder.innerHTML=ex;return holder}else if(document.implementation&&document.implementation.createDocument){if(!window.XSLTProcessor){throw noXSLTProcessorMsg}try{var processor=new XSLTProcessor();processor.importStylesheet(XSLStyleSheet);var resultDocument=processor.transformToFragment(XMLDocument,document)}catch(e){throw e}if(!resultDocument){throw"An error occurred in the XSLT process"}var holder=document.createElement("div");holder.appendChild(resultDocument);return holder}else{throw noXSLTProcessorMsg}},XMLCreator:function(rootName){var XMLDocument;function construct(){rootName=rootName||"data";createXML()};this.appendChild=function(node){XMLDocument.documentElement.appendChild(node)};this.createNode=function(type,data){var node=XMLDocument.createElement(type);if(data){node.appendChild(XMLDocument.createTextNode(data))}return node};this.getXMLDocument=function(){return XMLDocument};var createXML=function(){if(navigator.appName=="Microsoft Internet Explorer"){XMLDocument=new ActiveXObject("Microsoft.FreeThreadedXMLDOM");var rootNode=XMLDocument.createElement(rootName);XMLDocument.appendChild(rootNode)}else{XMLDocument=document.implementation.createDocument("",rootName,null)}};construct()}};
