// global flag
var isIE = false;
// global request and XML document objects

function loadXMLDoc(url, func, errorFunc) {

	    // branch for native XMLHttpRequest object
	    if (window.XMLHttpRequest) {
		    req = new XMLHttpRequest();
		    req.onreadystatechange = function(){processReqChange(func, errorFunc)};
		    req.open("GET", url, true);
		    req.send(null);
	    // branch for IE/Windows ActiveX version
	    } else if (window.ActiveXObject) {
		    isIE = true;
		    req = new ActiveXObject("Microsoft.XMLHTTP");
		    if (req) {
			    req.onreadystatechange = function(){processReqChange(func, errorFunc)};
			    req.open("GET", url, true);
			    req.send();
		    }
	    }
    }

    // handle onreadystatechange event of req object
function processReqChange(func, errorFunc) {
	    // only if req shows "loaded"
	    if (req.readyState == 4) {
		    // only if "OK"
		    if (req.status == 200) {
			    func(req);
		    } else {
			    // Stop displaying loading flag
			    errorFunc();
	        }
	    }
    }

    // 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 {
			    return result.firstChild.nodeValue;
		    }
	    } else {
		    return "n/a";
	    }
    }
    function nextEntry(object, func)
    {
        if(object.index<object.total-1){
            object.index++;
        }else{
            object.index = 0;
        }
        func();
    }
    function prevEntry(object, func)
    {
        if(object.index>0){
            object.index--;
        }else{
            object.index = object.total - 1;
        }
        func();
    }
    
    function doError(reader)
    {
        reader.style.display = "none";
        reader.style.height = "0px";
    }