/*
*	Class JSHttpRequest introduced to standardize interaction
*	between Js program on client side and Php script on server side.
*/
function JSHttpRequest(name)
{
	var requestObj;
	var xmlhttp;
	var handler;
	var responseStr;

	var thisObjName = name;

	//this.url = '123';

	this.initLoader = function ()
	{
		//xmlhttp = false;
		// branch for native XMLHttpRequest object
		if(window.XMLHttpRequest) {
			try {
				requestObj = new XMLHttpRequest();
				xmlhttp = true;
			} catch(e) {
				xmlhttp = false;
			}
		// branch for IE/Windows ActiveX version
		} else if(window.ActiveXObject) {
			try {
				requestObj = new ActiveXObject("Msxml2.XMLHTTP");
				xmlhttp = true;
			} catch(e) {
				try {
					requestObj = new ActiveXObject("Microsoft.XMLHTTP");
					xmlhttp = true;
				} catch(e) {
					xmlhttp = false;
				}
			}
		} else {
			xmlhttp = false;
		}		
	}

	this.open = function(url) {
		var new_url = this.formatUrl(url);
		if(xmlhttp) {
			requestObj.open("GET", new_url, true);
			requestObj.onreadystatechange = this.stateChanged;
			requestObj.send("");
		}
		else
		{
			var bodyRef = document.getElementsByTagName("head").item(0);
			scrpt=document.createElement('script');
			scrpt.language = 'javascript';
			scrpt.type = 'text/javascript';
			scrpt.src = new_url;
			bodyRef.appendChild(scrpt);
		}
	}

	this.formatUrl = function(url)
	{
		var new_url = '';
		if(url.indexOf("?")>-1)
		{
			var parts = url.split("?");
			if(parts.length == 2 && parts[1].length>0)
			{
				new_url = url+'&sv='+Math.random();
			}
			else if (parts.length > 2)
			{
				var idx = url.indexOf("?");
				new_url = url.substring(idx+1, url.length);
				new_url = new_url.replace(/\?/g, '&');
				new_url = parts[0]+'?'+new_url+'&sv='+Math.random();
			}
			else
				alert('Incorect url passed to the function Open\nURL: '+url);
		}
		else
			new_url = url+'?'+'sv='+Math.random();
		
		if(!xmlhttp)
		{
			new_url += '&handler='+thisObjName;			
		}

		return new_url;
	}

	
	//processRequestChange
	this.stateChanged = function()
	{
		if(xmlhttp == true)
		{
			// only if requestObj shows "loaded"
			if (requestObj.readyState == 4) {
				// only if "OK"
				if (requestObj.status == 200) {
					// ...processing statements go here...
					responseStr = requestObj.responseText;
					handler();
				} else {
					alert("There was a problem retrieving the XML data:\n" +
						requestObj.statusText);
				}
			}
		}
		else
		{
			responseStr = '';			
			handler();
		}
	}

	this.setHandler = function(functionName)
	{
		handler = functionName;
	}

	this.getText = function()
	{
		return responseStr;
	}

	this.disableXMLHttp = function()
	{
		xmlhttp = false;
	}
	
	this.initLoader();
}


