
	var ajaxObj=null;
	var xmlDOMObj;
	
	
	
	function createAjaxObject(){
		if(window.XMLHttpRequest){
			try{
				ajaxObj = new XMLHttpRequest(); 
					
			}
			catch(e){
				alert("Problem creating AJAX!");
			}
			
		}
		else{
			try{
				ajaxObj = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(e){
				alert("Problem creating AJAX!");
			}	
		}
		return ajaxObj;
	}
	
	//window.onerror = errorHandler;
	
	function errorHandler(message, url, line)
		{
			//alert("Error loading file!");
		    return true;
		}
	
	var docSoftXML;
	var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
	function load(xmlfile){
					
			if(is_chrome){
		
				var xmlhttp = new window.XMLHttpRequest();
				xmlhttp.open("GET",xmlfile,false);
				xmlhttp.send(null);
				xmlDOMObj = xmlhttp.responseXML.documentElement;
				//alert(xmlDOMObj);
				//SoftXMLLib.prototype.documentElement = xmlDOMObj.documentElement;
				createTableNews();	
					
				
				
			}
			else{
				if (document.implementation && document.implementation.createDocument)
				{
					xmlDOMObj = document.implementation.createDocument("", "", null);
					//SoftXMLLib.prototype.documentElement = xmlDOMObj.documentElement;
					xmlDOMObj.onload = createTableNews;
				}
				else if (window.ActiveXObject)
				{
					xmlDOMObj = new ActiveXObject("Microsoft.XMLDOM");
					xmlDOMObj.onreadystatechange = function () {
						if (xmlDOMObj.readyState == 4){
								//SoftXMLLib.prototype.documentElement = xmlDOMObj.documentElement;
								createTableNews();
						}
					}	
 				}
				else
				{
					alert('Your browser can\'t handle this script');
					return;
				}
				xmlDOMObj.load(xmlfile);
				
			}		
			
			
			
			
			
			
			
			
			
			
			
			
	}
	
	
	function loadXML(xmlString){
		if (document.implementation && document.implementation.createDocument)
			{
				var parser = new DOMParser();
				try{
					var docSoftXML = parser.parseFromString(xmlString, "text/xml");
					
				}
				catch(e){alert("XML file is not valid!");};	
				if(docSoftXML.documentElement.nodeName=="parsererror"){
					this.loadXMLError = 1;
				}
				else{
					SoftXMLLib.prototype.DOM = docSoftXML;
					SoftXMLLib.prototype.documentElement = docSoftXML.documentElement;
				}
				
				//return docSoftXML;

			}
			else if (window.ActiveXObject)
			{
				xmlDOMObj = new ActiveXObject("Microsoft.XMLDOM");
				xmlDOMObj.async=false;
				l = xmlDOMObj.loadXML(xmlString);
				
				if(!l){
					this.loadXMLError = 1;
				}
				else{
					SoftXMLLib.prototype.DOM = xmlDOMObj;
					SoftXMLLib.prototype.documentElement = xmlDOMObj.documentElement;
				}
				
			}
			else
			{
				alert('Your browser can\'t handle this script');
				return;
			}
			
			//xmlDOMObj.load(xmlfile);
			//SoftXMLLib.prototype.xmlDom = xmlDOMObj;*/
	}
	
	
	
	function selectNodes(xpath){
			var selectedNodes = new Array();
			docSoftXML = this.documentElement;
			if(docSoftXML==null){
				alert("Error loading file!");
				return;
			}
			
			if(document.all){
				var cxpath = new String(xpath).toLowerCase();
				f = docSoftXML.selectNodes(xpath);
				for(i=0;i<f.length;i++){
					var elemattr="";
					var curAttributes = f[i].attributes;
					if(curAttributes.length>0){
						for(y=0;y<curAttributes.length;y++){
							if(y<curAttributes.length-1){
								var dt=",";
							}
							else{
								var dt="";
							}
							//alert(curAttributes[y].nodeName);
							elemattr+=curAttributes[y].nodeName + ":\"" + curAttributes[y].nodeValue + "\"" + dt;
						}
						
					}	
					
					var t = eval("[{" + elemattr + "}]");
					if(f[i].parentNode.nodeName == this.documentElement.nodeName){
						
						this.self = f[i];
					}
					else{
						this.self = f[i].parentNode;
					}
					
					
					selectedNodes[selectedNodes.length] = {innerText:f[i].text,attributes:t,self:this.self};
				}
				return selectedNodes;
				
			}
			else{
				if(navigator.userAgent.indexOf("Firefox")!=-1){
					var versionindex=navigator.userAgent.indexOf("Firefox")+8
					if (parseInt(navigator.userAgent.charAt(versionindex))>=1)
					var xpe = new XPathEvaluator();
					var nsResolver = xpe.createNSResolver(docSoftXML.ownerDocument.documentElement);
					var headings = xpe.evaluate(xpath, docSoftXML, nsResolver, 0, null);
				}
				else{
					var headings = document.evaluate(xpath, docSoftXML, null, XPathResult.ANY_TYPE,null);
				}
				
				
				
				var thisHeading = headings.iterateNext();
				while (thisHeading) {
					var elemattr="";
					var curAttributes = thisHeading.attributes;
					if(curAttributes.length>0){
						for(i=0;i<curAttributes.length;i++){
							if(i<curAttributes.length-1){
								var dt=",";
							}
							else{
								var dt="";
							}
							elemattr+=thisHeading.attributes[i].nodeName + ":\"" + thisHeading.attributes[i].nodeValue + "\"" + dt;
						}
						
					}	
					var t = eval("[{" + elemattr + "}]");
					if(thisHeading.parentNode.nodeName == this.documentElement.nodeName){
						
						this.self = thisHeading;
					}
					else{
						this.self = thisHeading.parentNode;
					}
					
					selectedNodes[selectedNodes.length] = {innerText:thisHeading.textContent,attributes:t,self:this.self};
					thisHeading = headings.iterateNext();
				}
				return selectedNodes;
			}	
		;
	}
	
	
	function Decode(str){
		var decoded = "";
		var curStr = new String(str);
		var spl = curStr.split(",");
		
		for(i=0;i<spl.length;i++){
			decoded+=String.fromCharCode(spl[i])
		}
		return decoded;
	}


	function Encode(str){
		var encoded = "";
		var curStr = new String(str);
		for(i=0;i<curStr.length;i++){
			if(i<curStr.length-1){
				var dt=",";
			}
			else{
				var dt="";
			}
			encoded+=curStr.charCodeAt(i) + dt;
		}
		return encoded;
	}
	
	
	
	function SoftXMLLib(){
		this.createAjaxObject = createAjaxObject;
		this.loadXMLError = 0;
		this.loadError = 0;
		this.load = load;
		this.selectNodes = selectNodes;
		this.loadXML = loadXML;
		this.self = null;
		this.Decode = Decode;
		this.Encode = Encode;
		
	}
	
	
	
