/**
*
* @author Ala'a A. Ibrahim <alaa_ibrahim@maktoob.com>
* @copyright Maktoob.com, Inc. (c) 2006.
* @version 1.0.6.8.30
**/

//Make IE Behave like Mozilla
if (typeof XMLHttpRequest == "undefined" && window.ActiveXObject) {
	function XMLHttpRequest() {
		var arrSignatures = ["MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0",
		"MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP",
		"Microsoft.XMLHTTP"];
		for (var i=0; i < arrSignatures.length; i++) {
			try {
				var oRequest = new ActiveXObject(arrSignatures[i]);
				return oRequest;
			} catch (oError) {
				//ignore
			}
		}
		throw new Error("MSXML is not installed on your system.");
	}
}

//Make an Xml Loader For IE and Mozilla
function XmlDom() {
	if(window.ActiveXObject) {
		var arrSignatures = ["MSXML2.DOMDocument.5.0", "MSXML2.DOMDocument.4.0",
		"MSXML2.DOMDocument.3.0", "MSXML2.DOMDocument",
		"Microsoft.XmlDom"];
		for (var i=0; i < arrSignatures.length; i++) {
			try {
				var oXmlDom = new ActiveXObject(arrSignatures[i]);
				return oXmlDom;
			} catch (oError) {
				//ignore
			}
		}
		throw new Error("MSXML is not installed on your system.");
	} else if (document.implementation && document.implementation.createDocument) {
		var oXmlDom = document.implementation.createDocument("","",null);
		oXmlDom.addEventListener("load", function () {
			this.__changeReadyState__(4);
		}, false);
		return oXmlDom;
	} else {
		throw new Error("Your browser doesn’t support an XML DOM object.");
	}
}

/**
* AjaxGet
* Perform an HTTPRequest on the url sent to it, and send the result to
* the callback function, this function uses the javascript XMLHTTPRequest
* if it's not supported, it trys to use the JVM URL object to perform the
* Same task.
*
* @author Ala'a A. Ibrahim <alaa_ibrahim@maktoob.com>
* @copyright Maktoob.com, Inc. (c) 2006.
* @version 1.0.6.8.30
*
* @param string url
* @param function callback
* @param bool XML Whether the result is XML or Text, true for XML, default false
*/
function AJAXGet() {
	var url = arguments[0];
	var callback = arguments[1];
	var bXMLResult = arguments[2];
	var callLoading = arguments[3];
	if(callLoading == ''){
		callLoading = false;
	}
	
	if(typeof XMLHttpRequest == "object" || typeof XMLHttpRequest == "function" || window.ActiveXObject) {
		var xmlhttp = new XMLHttpRequest();
		xmlhttp.onreadystatechange= function () {
			if(xmlhttp.readyState == 1 && !callLoading){
				sendDataToServer();
			}

			if (xmlhttp.readyState == 4) {

				if (xmlhttp.status == 200) {
					
					if(bXMLResult) {
						callback(xmlhttp.responseXML)
					} else {
						callback(xmlhttp.responseText)
					}
				} else {
					throw new Error("Could not connect to page")
				}
			}
		}
		urlData = url.split("?");
		url= urlData[0];
		data = urlData[1];
		if(data == undefined) {
			data = "";
		}
		xmlhttp.open('POST', url, true);
		xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xmlhttp.setRequestHeader("Content-length", data.length);
		xmlhttp.send(data)
	} else if(navigator.javaEnabled() && typeof java != "undefined" && typeof java.net != "undefined") {
		var oURL = new java.net.URL(url);
		var oStream = this.oURL.openStream();
		var oReader = new java.io.BufferedReader(new java.io.InputStreamReader(oStream));
		var sResponseText = "";
		var sLine = oReader.readLine();
		while (sLine != null) {
			sResponseText += sLine + "\n";
			sLine = oReader.readLine();
		}
		oReader.close();
		if(arguments[2]) {
			var oXmlDom = new XmlDom();
			oXmlDom.onreadystatechange = function () {
				if (oXmlDom.readyState == 4) {
					alert(oXmlDom.xml);
				}
			};
			oXmlDom.loadXML(sResponseText);
			callback(oXmlDom);
		} else {
			callback(sResponseText);
		}
	} else {
		throw new Error("Could Not Perform AJAX Here")
	}
}

function sendDataToServer() {
	//_(DivcontainerG).innerHTMl = '<img src="http://corp.maktoob.com/homePage/images/loader.gif" border="0" align="center" />';
}