﻿var contentWindow;
var ajaxFinished = true;
function loadXMLDoc(url, xslt, element) {
    //while (!ajaxFinished) { }
    //alert(url);
    ajaxFinished = false;
    xmlhttp=null;
    xmlxslt=null;
    contentWindow = getElement(element);
    if (window.XMLHttpRequest) {// code for all new browsers
        xmlhttp=new XMLHttpRequest();
        xmlxslt=new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {// code for IE5 and IE6
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        xmlxslt=new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (xmlhttp!=null) {
        xmlhttp.onreadystatechange=state_Change;
        xmlxslt.onreadystatechange=state_Change;
		//xmlhttp.open("GET",'http://localhost/Site/Layers/' + url,true);
		//alert('http://localhost:52920/Site/Layers/' + url)
        xmlhttp.open("GET",'/Site/Layers/' + url,true);
        //xmlhttp.open("GET",'http://test.habarimedia.co.za/Site/Layers/' + url,true);
        xmlhttp.send(null);
		//xmlxslt.open("GET",'http://localhost/Site/Template/' + xslt,true);
        xmlxslt.open("GET",'/Site/Template/' + xslt,true);
        //xmlxslt.open("GET",'http://test.habarimedia.co.za/Site/Template/' + xslt,true);
        xmlxslt.send(null);
    } else {
        alert("Your browser does not support XMLHTTP.");
		ajaxFinished = true;
    }
	if (location.hash == '') {
		if (element.indexOf('side') > -1) {
			location.hash = '__' + selectedItem + ',' + partner;
		} else {
			location.hash = url + ',' + xslt + '__';
		}
	}
	else {
		hashvals = location.hash.split('__');
		if (element.indexOf('side') > -1) {
			location.hash = hashvals[0] + '__' + selectedItem + ',' + partner;
		} else {
			location.hash = url + ',' + xslt + '__' + hashvals[1];
		}
	}
}

function xmlParse(text) {
    try { //IE
        var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async="false";
        xmlDoc.loadXML(text);      
        return xmlDoc;
    } catch(e) {
        try { //Firefox, Mozilla, Opera, etc.
            parser=new DOMParser();
            var xmlDoc=parser.parseFromString(text,"text/xml");
            return xmlDoc;
        } catch(e) {
            alert(e.message)
            return null;
        }
    } 
    return null;
}

function state_Change() {
    if ((xmlhttp.readyState==4)&&(xmlxslt.readyState==4)) {
        if ((xmlhttp.status==200)&&(xmlxslt.status==200)) {
                var xml = xmlParse(xmlhttp.responseText);
                var xsl = xmlParse(xmlxslt.responseText);
            if (typeof XSLTProcessor != "undefined") {
                var xsl_proc = new XSLTProcessor ();
                xsl_proc.importStylesheet(xsl);
                var node = xsl_proc.transformToFragment(xml, document);
                while(contentWindow.hasChildNodes()) {
                    contentWindow.removeChild(contentWindow.lastChild);
                }
                contentWindow.appendChild(node);
                ajaxFinished = true;
				if (contentWindow.id.indexOf('sideTextBox') >= 0) {
					sideWindowQueued = false;
				} else {
	                loadWindow();
				}
            } else if (typeof xmlhttp.responseXML.transformNode != "undefined") {
                contentWindow.innerHTML = xml.transformNode(xsl);
                ajaxFinished = true;
				if (contentWindow.id.indexOf('sideTextBox') >= 0) {
					sideWindowQueued = false;
				} else {
					loadWindow();
				}
            } else {
                contentWindow.innerHTML = "XSLT not supported in browser.";
                ajaxFinished = true;
            }
        } else {
            //alert("Problem retrieving XML data");
            ajaxFinished = true;
        }
    }
}
