function aj_getAjaxObj() {
	var xmlhttp=false;

	var msxmlhttp = new Array(
		'Msxml2.XMLHTTP.6.0',
		'Msxml2.XMLHTTP.5.0',
		'Msxml2.XMLHTTP.4.0',
		'Msxml2.XMLHTTP.3.0',
		'Msxml2.XMLHTTP',
		'Microsoft.XMLHTTP');

	try {
		//firefox
		xmlhttp = new XMLHttpRequest();
	} catch (e) {
		for (var i = 0; i < msxmlhttp.length; i++) {
			try {
				xmlhttp = new ActiveXObject(msxmlhttp[i]);
			} catch (e) {
				xmlhttp = null;
			}
		}
	}
	if (!xmlhttp && window.createRequest) {
		try {
			xmlhttp = window.createRequest();
		} catch (e) {
			xmlhttp=false;
		}
	}
	
	return xmlhttp;
}

function aj_loadXML(url, handler) {
	var req;
	if(req = aj_getAjaxObj()) {
		req.onreadystatechange = function() {
			if (req.readyState==4) {
				if(req.status==200) {
					handler(req.responseXML.documentElement);
				}
			}			
		} 
		req.open("GET", url, true);
		req.send(null);
	} else {
		return "";
	}
}


function aj_loadResponse(url, handler, handlerparams) {
	var aObj;
	if(aObj = aj_getAjaxObj()) {
		aObj.onreadystatechange=function() {
			if (aObj.readyState==4) {
				if(aObj.status==200) {
					if(handlerparams == null) {
						handlerparams = new Array();
					}
					handler(aObj.responseText, handlerparams);
				}
			}
		} 
		aObj.open("GET", url, true);
		aObj.send(null);
	} else {
		return '';
	}
}

function aj_postLoadXML(url, handler, params) {
	var req;
	if(req = aj_getAjaxObj()) {
		req.onreadystatechange = function() {
			if (req.readyState==4) {
				if(req.status==200) {
					handler(req.responseXML.documentElement);
				}
			}
		} 
		req.open("POST", url, true);
		params = aj_urlEncode(params);       
		req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		req.setRequestHeader("Content-length", params.length);
		req.setRequestHeader("Connection", "close");
		req.send(params);
	} else {
		alert('problem');
		return "";
	}
}

function aj_postLoadResponse(url, handler, params, callbackParam) {
	var aObj;
	if(aObj = aj_getAjaxObj()) {
		aObj.onreadystatechange=function() {
			if (aObj.readyState==4) {
				if(aObj.status==200) {
					handler(aObj.responseText, callbackParam);
				}
			}
		} 
		aObj.open("POST", url, true);
		params = aj_urlEncode(params);
		aObj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		aObj.setRequestHeader("Content-length", params.length);
		aObj.setRequestHeader("Connection", "close");
		aObj.send(params);
	} else {
		return '';
	}
}

function aj_urlEncode(params) {
	var parar = new Array();
	var newstring = '';
	parar = params.split('&');
	
	for(i=0; i<parar.length; i++) {
		newstring += newstring == '' ? '' : '&';
		newstring += encodeURI(parar[i]);
	}
	return newstring;
}