// lib-ajax
// provides an interface to make requests in ajax way
// here basic ajax knowledge needed about XMLHttpRequest,onreadystatechange etc
function ajaxRequest()
{
	 var requestObject = null;
	 var PDS=new Array(); // PDS = postadas
	 
	 // create the requestObject in a way wich handles browser differences 
	 if (window.XMLHttpRequest) { 
		requestObject = new XMLHttpRequest();
		if (requestObject.overrideMimeType) 
		{	
			requestObject.overrideMimeType('text/xml');
		} 
	 } else if (window.ActiveXObject) { 
			try {
					requestObject = new ActiveXObject("Msxml2.XMLHTTP");
				} catch (e) 
						{
						try {
								requestObject = new ActiveXObject("Microsoft.XMLHTTP");
							} catch (e) 
									{
										// hibakezelés
									}
			}
		}	
			
	// add new post data to our request			
	// associative array, the index contains the name of the data, value contains value
	this.addPD=addPD;
	function addPD(name,value) {
		PDS[name]=value;
	}
	
	// start a request
	// behavior is about, how to handle response
	// special case is load, when the response is set as content in the target
	// in case of behavior "XML" & "TEXT" target is function wich handles the response
	this.request=request;	
	function request(behavior,url,target,cThis) {
		var passedArgs = Array.prototype.slice.call(arguments);
		passedArgs=passedArgs.slice(4);
		requestObject.onreadystatechange = function() { 
		if (requestObject.readyState == 4) 
			{
			if (requestObject.status == 200 || requestObject.status == 0) 
				{
					if(target!=null) {
						if(cThis==null)
							cThis=target;
						switch(behavior) {
							case "xml"  :  passedArgs.push(requestObject.responseXML); target.apply(cThis,passedArgs);  break;
							case "text" :  passedArgs.push(requestObject.responseText); target.apply(cThis,passedArgs); break;
							case "load" : 
								document.getElementById(target).innerHTML=requestObject.responseText;
								var sa=document.getElementById(target).getElementsByTagName("script");
								for(var i=0; i<sa.lenght; i++) {
									eval(sa[i].firstChild.nodeValue);
								}
								break;
						}
					}
				} else { 
				// hibakezelés
				}
			}
		};
		
		requestObject.open('POST', url, true);
		requestObject.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); 
		var PDSTR=""; 
		// iterate through our post data, and create the url from it
		for ( var pd in PDS )
			PDSTR+="&" + pd + "=" + encodeURIComponent(PDS[pd]);
		PDSTR=PDSTR.substr(1);
		requestObject.send(PDSTR);		
	}
}

