function CreateAjaxDriver(){
	var a = null;
	try{ a = new XMLHttpRequest(); }
	catch(e){}
	return a;
}

function AjaxRequest(convertXMLToObject)
{
	$convert = false;
	if(convertXMLToObject != null)
		$convert = convertXMLToObject;

	var subFuncs = new Object();
	subFuncs.$ajaxConnection = null;
	subFuncs.convertXMLToObj = $convert;
	subFuncs.execCallBack = execCallBack;
	subFuncs.onComplete = function($xml){};
	subFuncs.requestUrl = requestUrl;
	return subFuncs;
}
function convertNodesToObject(xml, o){
	var obj = o[xml.nodeName] = new Object();
	
	if(xml.attributes != null){
		var attrs = xml.attributes;
		obj.attributes = new Object();
		for(var i=0;i<attrs.length; i++){
			var att = attrs.item(i);
			obj.attributes[att.nodeName] = att.nodeValue;
		}
	}
	
	var childs = xml.childNodes;
	var cNode = null;
	var cLen = childs.length;
	for(var i=0;i<childs.length; i++){
		var n = childs.item(i);
		if(n.nodeName == "#text"){
			obj.value = n.nodeValue;
			cLen--;
		}
		else{
			if(obj.childs == null)
				obj.childs = new Object();
			
			convertNodesToObject(n, obj.childs);
			obj.childs.length = cLen;
		}
	}
	return o;
}
function convertXMLToObject(xml){
	var obj = new Object();
	var ch = xml.childNodes;
	var root = null;
	for(var i = 0; i< ch.length; i++){
		var n = ch.item(i);
		if(n.nodeType == 1){
			root = n;break;
		}
	}
	return convertNodesToObject(root, obj);
}
function execCallBack(_ajax, oncomplete){
	if(_ajax.readyState)
	if(_ajax.readyState == 4){
		if(_ajax.status == 200){
			var ajx = new Object();
			ajx.responseXML = _ajax.responseXML;
			ajx.responseText = _ajax.responseText;
			if(this.convertXMLToObj){
				ajx.responseObject = convertXMLToObject(_ajax.responseXML);
			}
		
			if(oncomplete != null)
				oncomplete(ajx);
			else
				this.onComplete(ajx);
		
		}
	} 
}
function requestUrl(url, method, params, oncomplete){
	
	if(this.$ajaxConnection == null)
		this.$ajaxConnection = CreateAjaxDriver();
	
	this.$ajaxConnection.open(method.toUpperCase(), url, true);
	var o = this;
	this.$ajaxConnection.onreadystatechange = function()
	{
		o.execCallBack(o.$ajaxConnection, oncomplete);
	}
	this.$ajaxConnection.setRequestHeader('Content-Type'
			, 'application/x-www-form-urlencoded');
	this.$ajaxConnection.send(params);
}

// var ajax = AjaxRequest();

// ajax.requestUrl('http://localhost:1300//'+query, 'GET', []);

