
var ajaxManager = new AjaxManager();

var xmlHttp = new XMLHttpRequest;
var self = this;

function AjaxManager()
{	
	this.xmlHttp = null;

	/*
	this.exampleCallbackFunction = function()
	{	if(xmlHttp.readyState == Sarissa.successState || xmlHttp.readyState == "complete")
		{				
			document.getElementById("layer").innerHTML = xmlHttp.responseText;
		}
	}
	*/
	
	this.nothingCallback = function()
	{	if(xmlHttp.readyState == Sarissa.successState || xmlHttp.readyState == "complete")
		{	
		}
	}

	this.ajaxGet = function(callbackFunction, url, params)
	{			
		var timestamp = new Date();
		
		xmlHttp = new XMLHttpRequest;
		xmlHttp.onreadystatechange = callbackFunction;
			
		try
		{	xmlHttp.open("GET", url + "?timestamp=" + timestamp.getTime() + params, true);
			xmlHttp.send(null);
		}
		catch(e)
		{	alert("There was an error.  Please try again. " + e.description);
		}
	}
	
	this.ajaxGetSync = function(callbackFunction, url, params)
	{			
		var timestamp = new Date();
			
		xmlHttp = new XMLHttpRequest;
		xmlHttp.onreadystatechange = callbackFunction;
			
		try
		{	xmlHttp.open("GET", url + "?timestamp=" + timestamp.getTime() + params, false);
			xmlHttp.send(null);
		}
		catch(e)
		{	alert("There was an error.  Please try again. " + e.description);
		}
	}
	
	this.ajaxPost = function(callbackFunction, url, params)
	{			
		var timestamp = new Date();
			
		xmlHttp = new XMLHttpRequest;
		xmlHttp.onreadystatechange = callbackFunction;
			
		try
		{	xmlHttp.open("POST", url + "?timestamp=" + timestamp.getTime(), true);
			xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	  	  	xmlHttp.setRequestHeader("Content-length", params.length);
	  	  	xmlHttp.setRequestHeader("Connection", "close");
			xmlHttp.send(params);
		}
		catch(e)
		{	alert("There was an error.  Please try again.");
		}
	}
	
	this.ajaxPostSync = function(callbackFunction, url, params)
	{			
		var timestamp = new Date();
			
		xmlHttp = new XMLHttpRequest;
		xmlHttp.onreadystatechange = callbackFunction;
			
		xmlHttp.open("POST", url + "?timestamp=" + timestamp.getTime(), false);
		xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	    xmlHttp.setRequestHeader("Content-length", params.length);
	    xmlHttp.setRequestHeader("Connection", "close");
		xmlHttp.send(params);
	}
	
	this.loadContentGet = function(xmlUrl, xslUrl, params, contentId)
	{	
		var self = this;
		
		callbackFunction = function()
		{	if(xmlHttp.readyState == Sarissa.successState || xmlHttp.readyState == "complete")
			{				
				if(document.getElementById(contentId))
				{	document.getElementById(contentId).innerHTML = 
						self.xslTransform(xmlHttp.responseXML, xslUrl);
				}
			}
		}
	
		this.ajaxGet(callbackFunction, xmlUrl, params);
	}
	
	this.loadContentGetNoXSLT = function(xmlUrl, params, contentId)
	{	
		var self = this;
		
		callbackFunction = function()
		{			
			if(xmlHttp.readyState == Sarissa.successState || xmlHttp.readyState == "complete")
			{	
				if(document.getElementById(contentId))
				{	document.getElementById(contentId).innerHTML = xmlHttp.responseText;
				}
			}
		}
		this.ajaxGet(callbackFunction, xmlUrl, params);
	}
	
	this.loadContentGetNoXSLTSync = function(xmlUrl, params, contentId)
	{	
		var self = this;
		
		callbackFunction = function()
		{	if(xmlHttp.readyState == Sarissa.successState || xmlHttp.readyState == "complete")
			{	alert(xmlHttp.responseText);
				if(document.getElementById(contentId))
				{	document.getElementById(contentId).innerHTML = xmlHttp.responseText;
				}
			}
			alert("at state: " + xmlHttp.readyState);
			
		}
		alert("calling ajax");
		this.ajaxGetSync(callbackFunction, xmlUrl, params);
	}
	
	this.loadContentPost = function(xmlUrl, xslUrl, params, contentId)
	{	
		var self = this;
		
		callbackFunction = function()
		{	if(xmlHttp.readyState == Sarissa.successState || xmlHttp.readyState == "complete")
			{				
				document.getElementById(contentId).innerHTML = 
					self.xslTransform(xmlHttp.responseXML, xslUrl);
			}
		}
	
		this.ajaxPost(callbackFunction, xmlUrl, params);
	}
	
	this.loadContentGetBasic = function(url, params, contentId)
	{	
		callbackFunction = function()
		{	if(xmlHttp.readyState == Sarissa.successState || xmlHttp.readyState == "complete")
			{				
				if(document.getElementById(contentId))
				{	document.getElementById(contentId).innerHTML = xmlHttp.responseText;
				}
			}
		}
	
		this.ajaxGet(callbackFunction, url, params);
	}
	
	this.xslTransform = function(xmlDoc, xslUrl)
	{	var today = new Date();	
	
		var xslDoc = Sarissa.getDomDocument();
		// set loading method to synchronous
		xslDoc.async = false;
				
		// populate the DOM Document using a remote file
		xslDoc.load(xslUrl + "?timestamp=" + today.getTime());
		
		if(xmlDoc == null)
		{	return "";
		}
		
		var processor = new XSLTProcessor();
		
		/*try
		{	if(this.optionalParams != null)
			{	processor.setParameter(null, "options", this.optionalParams);
			}
		}
		catch(e)
		{	//do nothing
		}*/
		
		// configure the processor to use our stylesheet 
		processor.importStylesheet(xslDoc);
		
		// transform and store the result as a new doc
		var htmlOutput = processor.transformToDocument(xmlDoc);
				
		var serializer = new XMLSerializer();
		//alert("XSL DOC: " + serializer.serializeToString(this.xslDocif(this.tempTable.parseError != 0)
		
		if(Sarissa.getParseErrorText(htmlOutput) != Sarissa.PARSED_OK)
		{	alert("PARSE ERROR: " + Sarissa.getParseErrorText(htmlOutput));
		}
		//alert("HTML TO PRINT: " + serializer.serializeToString(this.tempTable));
		
		return serializer.serializeToString(htmlOutput);
	}
	
	
}