/*
 * Returns a new XMLHttpRequest object, or false if this browser
 * doesn't support it
 */
function EditorAjax(){ 
	var _self = this;	
	function newXMLHttpRequest() {
	  var xmlreq = false;
	  if (window.XMLHttpRequest) {
	    xmlreq = new XMLHttpRequest();
	  }else if (window.ActiveXObject) {
	  	try {
	      xmlreq = new ActiveXObject("Msxml2.XMLHTTP");
	    } catch (e1) {
	    	try {
	        	xmlreq = new ActiveXObject("Microsoft.XMLHTTP");
	      	} catch (e2) {}
	    }
	  }	
	  return xmlreq;
	}
	
	this.previewDemoPage = function(){
		_elementsManager.selectElementById("mainPage");
		var pageXML = "<page>" +
				"<pageInfo>no</pageInfo>" +
				_utilities.createPageXML() +
				"<WebsiteCSS>"+_cssManager.CSSToXML()+"</WebsiteCSS>"+
				"</page>";
	  var previewForm= document.createElement("form");
	  document.body.appendChild(previewForm);
	  var newElement = document.createElement("input");
	  newElement.name = "pageXML";
	  newElement.type="hidden";
 	  previewForm.appendChild(newElement);
	  newElement.value = pageXML;
	  var pageID = document.createElement("input");
	  pageID.name = "templateID";
	  pageID.type="hidden";
 	  previewForm.appendChild(pageID);
	  pageID.value = _pageInfo['template'];
	  previewForm.method = "POST";
	  previewForm.target= "PreviewPage";
	  previewForm.action= "PreviewPage";
 	  previewForm.submit();	
	}
	
	this.ajaxCall_process = function(servlet, xml, parameters, responseFunction){		
		var req = newXMLHttpRequest();
		var handlerFunction = processAjaxCall(req,responseFunction);
		req.onreadystatechange = handlerFunction;
		req.open("POST", servlet +"?RANDOM=" + (Math.random() * Date.parse(new Date()))+"&"+parameters, true);	
		req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		req.send(xml);	
	}
	function processAjaxCall(req,responseFunction) {
		return function () {
			if (req.readyState == 4) {
				if (req.status == 200) {
					if(req.responseText == "err:-999"){_utilities.sessionTimeOut()}
					else{eval(responseFunction+"(\"" + req.responseText +"\")");}
	     		} else {
	      			alert("HTTP error: "+req.status);
	     		}
	    	}
	  	}
	}
	this.ajaxCall_eval = function(servlet, xml, parameters){		
		var req = newXMLHttpRequest();
		var handlerFunction = evalAjaxCall(req);
		req.onreadystatechange = handlerFunction;
		req.open("POST", servlet +"?RANDOM=" + (Math.random() * Date.parse(new Date()))+"&"+parameters, true);	
		req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		req.send(xml);	
	}
	function evalAjaxCall(req) {
		return function () {
			if (req.readyState == 4) {
				if (req.status == 200) {
					if(req.responseText == "err:-999"){_utilities.sessionTimeOut()}
					else{eval(req.responseText);}
	     		} else {
	      			alert("HTTP error: "+req.status);
	     		}
	    	}
	  	}
	}		 
}
