function ajax()
{
	var oXML, bool = false;
		
	this.createXMLHttpRequest = function ()
	{
		var oXML = null;

		if (window.ActiveXObject)
		{
			var versions = ['Microsoft.XMLHTTP', 'MSXML6.XMLHTTP', 'MSXML5.XMLHTTP', 'MSXML4.XMLHTTP', 'MSXML3.XMLHTTP', 'MSXML2.XMLHTTP', 'MSXML.XMLHTTP'];

			for (var i = 0; i < versions.length; i ++ )
			{
				try
				{
					oXML = new ActiveXObject(versions[i]);
					break;
				}
				catch (ex)
				{
					continue;
				}
			}
		}
		else
		{
			oXML = new XMLHttpRequest();
		}

		return oXML;
	};

	this.connect = function(sURL, sMethod, sVars, fFunction , responseType)
	{
		if (!oXML)
		{
			return false;
		}
		bool		 = false;
		sMethod 	 = sMethod.toUpperCase();
		responseType = responseType.toUpperCase();

		try 
		{
			if (sMethod == "GET")
			{
				oXML.open(sMethod, sURL+"?"+sVars, true);
				sVars = "";
			}
			else
			{
				oXML.open(sMethod,sURL,true);
				oXML.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1");
				oXML.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
			}

			oXML.onreadystatechange = function()
			{

				if (oXML.readyState == 4 && !bool)
				{

					bool = true;
					var result = null;
					switch (responseType)
					{
						case "JSON" :

						result = oXML.responseText.replace(/\xEF\xBB\xBF/g, "");

						try
						{
							result = result.parseJSON();

						}
						catch (e)
						{
							alert("Ajax->line:73 /parseResult() error: can't parse to JSON.\n\nError:\n\n" + oXML.responseText);
							return false;
						}
						break;
						
						case "XML" :
						result = oXML.responseXML;
						break;
						
						case "TEXT" :
						result = oXML.responseText.replace(/\xEF\xBB\xBF/g, "");
						break;
						
						default :
							alert("Ajax->line:84 /parseResult() error: unknown response type:" + responseType);
					}

					fFunction(result);
				}
			}
			oXML.send(sVars);
		}
		catch(z)
		{
			return false;
		}
		return true;
	};
	

	oXML = this.createXMLHttpRequest();

	if (!oXML)
		return null;

	return this;
}

var oAjax = new ajax();