// JavaScript Document
var xHttpRequest;
var ElementList = new Array();
var sendingRequest = false;
var PostbackActionsList = new Array();
var historyFrame = null;
var historyCache = new Array();
var loadedTitle;

function toFlashString(reqStr) {
    document.title = loadedTitle;
    reqStr = reqStr.replace(/\?/g, "#");
    reqStr = reqStr.replace(/&/g, "#");

    return reqStr;
}

function toHashString(reqStr) {
    if(loadedTitle != null && loadedTitle != undefined)
        document.title = loadedTitle;
    reqStr = reqStr.replace(/\?/g, "#");
    reqStr = reqStr.replace(/&/g, "#");

    return reqStr;
}

function getXMLHttpRequest() {
	try {
		return (new ActiveXObject("Msxml2.XMLHTTP2"));
	} catch(e) {}
	try {
		return (new ActiveXObject("Microsoft.XMLHTTP"));
	} catch(e) {}
	try {
		return (new XMLHttpRequest());
	} catch(E) {
		alert("Your browser does not support the XML HTTP Capability! Please use Internet Explorer, FireFox or Opera.");
		return null;
	}
}

function addPostbackAction(Action) {
    PostbackActionsList.push(Action);
}

function DoPostBack(EName, Data, Script) {
    if(xHttpRequest != null) {
        xHttpRequest.onreadystatechange = function() {};
    }

	xHttpRequest = getXMLHttpRequest();
	if(xHttpRequest == null)
		return;

    if(sendingRequest) {
        xHttpRequest.abort();
    }

	/*if(navigator.appName == "Microsoft Internet Explorer" && navigator.appVersion.indexOf("4.0 (compatible; MSIE 6.0;") != -1) {
			Data = Data.replace(/\#/g, "&");
			var ActionsLen = PostbackActionsList.length;
			for(var i=0; i<ActionsLen; i++) {
				var Action = PostbackActionsList[i];
				eval(Action);
			}
			document.location.href = "?" + Data;
	} else {*/
        try {
			Data = Data.replace(/\#/g, "&");
			UpdateLocationAttributes("?"+Data);
		} catch(e) {
		}
		var ActionsLen = PostbackActionsList.length;
		for(var i=0; i<ActionsLen; i++) {
			var Action = PostbackActionsList[i];
            try {
                eval(Action);
            } catch(e) {}
		}

		//xHtppRequest.abort();
		xHttpRequest.open("POST", Script, true);
		xHttpRequest.onreadystatechange = processResponse;
		xHttpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xHttpRequest.setRequestHeader("Content-Length", Data.length);
        if(!document.all) {
          xHttpRequest.setRequestHeader("Connection", "close");
        }
		xHttpRequest.send(Data);
		sendingRequest = true;
        PostbackActionsList = new Array();
	//}
}

function stripslashes( str ) {
    return (str+'').replace('/\0/g', '0').replace('/\(.)/g', '$1');
}

function EvaluateScripts(responseText)
        {
            var matchAll = new RegExp('(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)', 'img');
            var scripts = '';
            while(scripts = matchAll.exec(responseText))
            {
                //alert(scripts[1]);
                eval(scripts[1]);
            }
        }

function fadeObject(iteration) {
    //alert("ElementList.length");
    for(var i=0; i<ElementList.length; i++) {
        ElementList[i].style.opacity = iteration;
        ElementList[i].style.filter = 'alpha(opacity=' + iteration*100 + ')';
    }
    

    if(iteration < 1) {
        iteration += 0.1;
        setTimeout('fadeObject('+iteration+')', 33);
    }
}


function processResponse() {
	if(xHttpRequest == null)
		return;
	
	if(xHttpRequest.readyState != 4)
		return;

    //alert("In process response");

    sendingRequest = false;

	var responseText = xHttpRequest.responseText;
	//alert(responseText);

	// suspecting JSON object
	//var responseObject = eval('(' + responseText + ')');
    var responseObject = JSON.parse(responseText);
    //eval(responseObject["startScript"]);
//    alert(responseObject.action);

    //UpdateLocationAttributes(responseObject.addressAttributes);

    // Update the meta tags
    document.getElementById("DescriptionMetaTag").setAttribute('content', responseObject["pagedescription"]);
    document.getElementById("KeywordsMetaTag").setAttribute('content', responseObject["pagekeywords"]);


    // Check for Google Analythics
    /*if(pageTracker) {
        pageTracker._trackPageview("index.php"+responseObject.addressAttributes+"#title="+responseObject["pagetitle"]);
    }*/

    switch(responseObject.action) {
		case "changeContents":
            document.title = responseObject["pagetitle"];
            loadedTitle = responseObject["pagetitle"];

            var numChanges = responseObject.numContentChanges;
            ElementList = new Array();
            for(var i=0; i<numChanges; i++) {
                var Element = document.getElementById(responseObject["ElementID"+i]);
                if(Element != null && Element != undefined) {
                    ElementList.push(Element);

                    Element.innerHTML = responseObject["ElementData"+i];
                    EvaluateScripts(responseObject["ElementData"+i]);
                }
            }

            window.scrollTo(0, 0);

            if(navigator.appName != "Microsoft Internet Explorer") // Do not fade in IE because of an FLASH BUG
                fadeObject(0);
            
            document.title = responseObject["pagetitle"];
		break;
	}

    if(navigator.appName == "Microsoft Internet Explorer") {
        //alert(getHashString());

        if(parent == self) {
            LoadRequestString();

            historyCache[getRequestString() + "&title=" + document.title] = getPostbackAction();
            historyFrame.contentWindow.location.href = "historyFrame.php" + getRequestString() + "&title=" + document.title;
        }
        //alert("Appendign body element");
    }
}