
/*
	Piemers lietosanai:
		
		var a = new AjaxClass2();
		a.GetText("ajax.test.resp.php", RespnseTXT);
		function RespnseTXT(txt)
		{
			alert(txt);
		}

		//a.GetXml("ajax.test.resp.php", ResponseXML);
		function ResponseXML(xml)
		{
			alert(xml);
		}
*/


function AjaxClass2()
{

	var me = this;

	var timeoutholder = null;
	var http = null;

	function _createRequestObject()
	{
		var xmlhttp;
		try
		{
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e)
		{
			xmlhttp = null;
			/*
			try
			{
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(f)
			{
				xmlhttp = null;
			}*/
		}
		if(!xmlhttp && typeof XMLHttpRequest!="undefined")
		{
			xmlhttp = new XMLHttpRequest();
		}
		return  xmlhttp;

	}

	
	/*function _callInProgress() 
	{
		//alert(["_callInProgress", http]);
		if (http == null)
			return false;

		switch (http.readyState) 
		{
			case 1: case 2: case 3:
				return true;
			break;
			// Case 4 and 0
			default:
				return false;
			break;
		}
	}*/

	this.GetText = function(link, callback)
	{
		_Get(link, callback, null);
	}
	this.GetXml = function(link, callback)
	{
		_Get(link, null, callback);
	}

	function _Get(link, callback_txt, callback_xml)
	{
		
		if(timeoutholder!=null) 
			window.clearTimeout(timeoutholder);

		//if (!_callInProgress())
		//{
			timeoutholder = window.setTimeout(
				function()
				{
						me.Send(link, callback_txt, callback_xml);
				}, 400);
		//}
		/*else
		{
			alert("fail");
		}*/

	}


	this.Send = function(link, callback_txt, callback_xml)
	{
		//alert("Send("+link+")");
		// gļuks, kad nav neviena parametra
		//link = link + '&rndparbu=' + (new Date().getTime());
		me.SendNoRandomParam(link, callback_txt, callback_xml);
	}

	this.SendNoRandomParam = function(link, callback_txt, callback_xml)
	{
		//alert("SendNoRandomParam("+link+")");
		
		http = _createRequestObject();

		http.open('get', link);
		http.onreadystatechange = function(){_Response(callback_txt, callback_xml)};
		http.send(null);
	}


	function _Response(callback_txt, callback_xml)
	{
		if((http.readyState == 4) && (http.status == 200))
		{
			try
			{
				//alert (me.http.responseText);
				//alert (me.http.responseXML);
				//var XML_Obj = me.http.responseXML;
				if (callback_txt!=null) callback_txt(http.responseText);
				if (callback_xml!=null) callback_xml(http.responseXML);
			
			}
			catch(e)
			{
				//Ajax.http = null;
				//log("Kda HandleResponse(): " + e  + ", " + e.name + ", " + e.message  + ", " + e.description );
			}
			finally
			{
				http = null;
			}
		}
	}

	this.Abort = function()
	{
		try
		{
			if (http !=  null)
			{
				http.onreadystatechange = function(){};
				http.abort();
				http = null;
				log("Abort finished");
			}
			return true;
			
		}
		catch (e)
		{
			log("Kluda Ajax.abort(): " + e  + ", " + e.name + ", " + e.message  + ", " + e.description );
			return false;
		}
	}

}

