var isIE = false;

//global request and XML document objects
var req;

var obj_target;

//retrieve XML document (reusable generic function);
//parameter is URL string (relative or complete) to
//an .xml file whose Content-Type is a valid XML
//type, such as text/xml; XML source must be from
//same domain as HTML file
function loadXMLDoc(url) {
    // branch for native XMLHttpRequest object
//alert(url);
//document.write(url);
 if (window.XMLHttpRequest) {
     req = new XMLHttpRequest();
     req.onreadystatechange = processReqChange;
     req.open("GET", url, true);
     req.send(null);
     //alert(url);
     //alert(req.responseText);
     // branch for IE/Windows ActiveX version
 } else if (window.ActiveXObject) {
     isIE = true;
     req = new ActiveXObject("Microsoft.XMLHTTP");
     if (req) {
         req.onreadystatechange = processReqChange;
         req.open("GET", url, true);
         req.send();
         //alert(url);
         //alert(req.responseText);
     }
 }
}

//handle onreadystatechange event of req object
function processReqChange() {
 // only if req shows "loaded"
 if (req.readyState == 4) {
     // only if "OK"
     if (req.status == 200) {
 		if(obj_target.id=="search_results")
 			buildSearchList(obj_target);
 		else
         		buildTopicList(obj_target);
      } else {
         alert("There was a problem retrieving the XML data:\n" +
             req.statusText);
      }
 }
}

//invoked by "Category" select element change;
//loads chosen XML document, clears Topics select
//element, loads new items into Topics select element
function loadDoc(evt, obj, url) {
 
    // equalize W3C/IE event models to get event object
    obj_target = obj;
    evt = (evt) ? evt : ((window.event) ? window.event : null);

 if (evt) {
     // equalize W3C/IE models to get event target reference
     // alert(evt.target);
     var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
     if (elem) {
         try {
         	loadXMLDoc(url);
		 } catch(e) {
             var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
             alert("Klaida. Negalima užkrauti duomenų iš serverio.\n"/* + msg + " - " + elem.selectedIndex*/);
             return;
         }
     }
 }
}

//retrieve text of an XML document element, including
//elements using namespaces
function getElementTextNS(prefix, local, parentElem, index) {
 var result = "";
 if (prefix && isIE) {
     // IE/Windows way of handling namespaces
     result = parentElem.getElementsByTagName(prefix + ":" + local)[index];
 } else {
     // the namespace versions of this method 
     // (getElementsByTagNameNS()) operate
     // differently in Safari and Mozilla, but both
     // return value with just local name, provided 
     // there aren't conflicts with non-namespace element
     // names
     result = parentElem.getElementsByTagName(local)[index];
 }
 if (result) {
     // get text, accounting for possible
     // whitespace (carriage return) text nodes 
     if (result.childNodes.length > 1) {
         return result.childNodes[1].nodeValue;
     } else {
     	if(result.firstChild)
         return result.firstChild.nodeValue;
        else
         return "";
     }
 } else {
     return "";
 }
}

//fill Topics select list with items from
//the current XML document
function buildTopicList(obj_target) {

	var items = req.responseXML.getElementsByTagName("item");
	
     title_ = getElementTextNS("", "title", items[0], 0), document.createTextNode(getElementTextNS("", "title", items[0], 0));
     description_ = getElementTextNS("", "description", items[0], 0), document.createTextNode(getElementTextNS("", "description", items[0], 0));

	document.getElementById("page_title").innerHTML = title_;
	document.getElementById("page_description").innerHTML = description_;
	
}

function buildSearchList(obj_target){
	var items = req.responseXML.getElementsByTagName("item");
	obj_target.innerHTML = "";
	for (var i = 0; i < items.length; i++) {
	     id	= getElementTextNS("", "id", items[i], 0), document.createTextNode(getElementTextNS("", "id", items[i], 0));
	     title = getElementTextNS("", "title", items[i], 0), document.createTextNode(getElementTextNS("", "title", items[i], 0));
	     var span = document.createElement("span");
	     span.innerHTML = "<a style=\"cursor:pointer;\" onclick=\"javascript: loadDoc(event, document.getElementById('rightSide'), 'xml.php?get=get_page_content&id="+id+"');\">" + title + "</a>";
	     obj_target.appendChild(span);
	     var br = document.createElement("br");
	     obj_target.appendChild(br);
	}
	if(items.length==0){
	     var span = document.createElement("span");
	     span.innerHTML = "Paieškos rezultatų nerasta.";
	     obj_target.appendChild(span);
	}
}

