var browser=0;
var OPERA=1;
var IE=2;
var OTHER=3;
if(navigator.appName.indexOf("Opera") != -1) browser=OPERA;
else if(navigator.appName.indexOf("Internet Explorer") != -1) browser=IE;
else browser=OTHER;

function AJAX()
{
	this.method="POST";
	this.reaction="";
	this.async=false;
	this.xml=false;
	this.json=false;
	
	var http_request=false;
	var react="";
	var xml=false;
	var json=false;
	
	this.makeParams=function(params)
	{
		if((params instanceof Array ))
		{
			var ask=params[0];
			for(a=1;a<params.length;a++) ask += "&"+params[a];
			return ask;
		}
		else return params;
	}
	
	this.request=function(url, parameters) 
	{
	  parameters=this.makeParams(parameters);
	  xml=this.xml;
	  json=this.json;
	  http_request = false;
	  if (window.XMLHttpRequest) { // Mozilla, Safari,...
		 http_request = new XMLHttpRequest();
		 if (http_request.overrideMimeType) {
			// set type accordingly to anticipated content type
			//http_request.overrideMimeType('text/xml');
			http_request.overrideMimeType('text/html');
		 }
	  } else if (window.ActiveXObject) { // IE
		 try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		 } catch (e) {
			try {
			   http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		 }
	  }
	  if (!http_request) {
		 alert('Cannot create XMLHTTP instance');
		 return false;
	  }
	  
	  if(this.async && this.reaction.length > 0)
	  {
		react=this.reaction;
		http_request.onreadystatechange=this.receive;
	  }
	  http_request.open(this.method, url, this.async);
	  if(parameters != null && parameters.length > 0)
	  {
		  http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		  http_request.setRequestHeader("Content-length", parameters.length);
		  http_request.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
		  http_request.setRequestHeader("Cache-Control", "no-cache");
		  http_request.setRequestHeader("Connection", "close");
		  http_request.send(parameters);
	  }
	  else  http_request.send(null);
	  if(!this.async)
	  {
		 if (http_request.readyState == 4) {
			 if (http_request.status == 200) 
			 {
				if(json)
				{
					return eval("("+http_request.responseText+")");
				}
				else if(xml)
				{
					switch(browser)
					{
						case 1: return http_request.responseXML;
						case 2: 
							var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
							  xmlDoc.async="false";
							  xmlDoc.loadXML(http_request.responseText);
							  return xmlDoc;
						default: 
							return (new DOMParser()).parseFromString(http_request.responseText, "text/xml");
					}
				}
				else return http_request.responseText;
			 } else {
				return 'There was a problem with the request.';
			 }
		  }
 	  }
	}
	
	this.receive=function()
	{
	   if (http_request.readyState == 4) {
		 if (http_request.status == 200) 
		 { 
			if(json)
			{
				eval(react+"(eval(http_request.responseText));");
			}
			else if(xml)
			{
				switch(browser)
				{
					case 1: eval(react+"(http_request.responseXML);"); break;
					case 2: 
						var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
					  xmlDoc.async="false";
					  xmlDoc.loadXML(http_request.responseText);
					  eval(react+"(xmlDoc);");
					  break;
					default: 
						var parser=(new DOMParser()).parseFromString(http_request.responseText, "text/xml");
					eval(react+"(parser);");
				}
			}
			else eval(react+"(http_request.responseText);");
			
		 } else {
			eval(react+"('There was a problem with the request.');");
		 }
	  }
	}	
}
