var isIE = false;

var req;

function SelectNodes ( xpath )
{
	if ( document.all )		// IE
	{
		return req.responseXML.selectNodes( xpath ) ;
	} else					// Gecko
	{
		var aNodeArray = new Array();

		var xPathResult = req.responseXML.evaluate( xpath, req.responseXML, 
				req.responseXML.createNSResolver(req.responseXML.documentElement), XPathResult.ORDERED_NODE_ITERATOR_TYPE, null) ;
		if ( xPathResult ) 
		{
			var oNode = xPathResult.iterateNext() ;
 			while( oNode )
 			{
 				aNodeArray[aNodeArray.length] = oNode ;
 				oNode = xPathResult.iterateNext();
 			}
		} 
		return aNodeArray ;
	}
}

function SelectSingleNode( xpath ) 
{
	if ( document.all ){		// IE
		return req.responseXML.selectSingleNode( xpath ) ;
	} else					// Gecko
	{
		var xPathResult = req.responseXML.evaluate( xpath, req.responseXML,
				req.responseXML.createNSResolver(req.responseXML.documentElement), 9, null);

		if ( xPathResult && xPathResult.singleNodeValue )
			return xPathResult.singleNodeValue ;
		else	
			return null ;
	}
}

// XMLloader 

function processReqChange() {
	 //alert(req);
    if (req.readyState == 4) {
        if (req.status == 200) {
					//alert('Nacetlo se!!!!');
					//alert(req.responseXML);
        } else {
            //alert("Problem se ziskanim XML nebo sablonovych dat:\n" + req.statusText);
            //alert("Problem se ziskanim XML nebo sablonovych dat (" + lastUrl + "): " + req.statusText);
       }
    }
}

function randomizeRequest(request) {
	return request + (request.search(/\?/) == -1 ? '?rnd=' : '&rnd=') + Math.round(Math.random()*100000);
}

function loadXMLDoc(url) {
	url = randomizeRequest(url);
	//alert(url);
	lastUrl = url;
	req = false;
	//alert(url);
    // branch for native XMLHttpRequest object
    if(window.XMLHttpRequest) {
    	try {
			req = new XMLHttpRequest();
        } catch(e) {
			req = false;
        }
    // branch for IE/Windows ActiveX version
    } else if(window.ActiveXObject) {
       	try {
        	req = new ActiveXObject("Msxml2.XMLHTTP");
      	} catch(e) {
        	try {
          		req = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
          		req = false;
        	}
		}
    }
	if(req) {
		req.onreadystatechange = processReqChange;
		req.open("GET", url, false);
		req.send("");
	}
}

// TemplateLoader

function loadTemplate(url) {
	url = randomizeRequest(url);
	req = false;
    // branch for native XMLHttpRequest object
    if(window.XMLHttpRequest) {
    	try {
			req = new XMLHttpRequest();
        } catch(e) {
			req = false;
        }
    // branch for IE/Windows ActiveX version
    } else if(window.ActiveXObject) {
       	try {
        	req = new ActiveXObject("Msxml2.XMLHTTP");
      	} catch(e) {
        	try {
          		req = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
          		req = false;
        	}
		}
    }
	if(req) {
		req.onreadystatechange = processReqChange;
		req.open("GET", url, false);
		req.send("");
	}
}

var dataReq = new Array();

function prepareData(url) {
	url = randomizeRequest(url);
	i = 0;
	while (dataReq[i]) {i++;}
	dataReq[i] = false;
    // branch for native XMLHttpRequest object
    if(window.XMLHttpRequest) {
    	try {
			dataReq[i] = new XMLHttpRequest();
        } catch(e) {
			dataReq[i] = false;
        }
    // branch for IE/Windows ActiveX version
    } else if(window.ActiveXObject) {
       	try {
        	dataReq[i] = new ActiveXObject("Msxml2.XMLHTTP");
      	} catch(e) {
        	try {
          		dataReq[i] = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
          		dataReq[i] = false;
        	}
		}
    }
	if(dataReq[i]) {
		dataReq[i].onreadystatechange = processReqChange;
		dataReq[i].open("GET", url, true);
		dataReq[i].send("");
	}
}

