function makeRequest(url,callbackhandler, method,web,cfunc) {
	if(typeof(method)=="undefined") {method="GET";}
	var xhr_response;
	var async=true;
	if(callbackhandler==null) async=false;

	try {
		xhr_response = new XMLHttpRequest();
	} catch (e) {
		xhr_response = new ActiveXObject('Msxml2.XMLHTTP');
	}

	try {
		netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');
	} catch (e) { }

	if(method=="GET") {
		xhr_response.open(method,url,async);
		if(async) {
			xhr_response.onreadystatechange = function() {
				if(xhr_response.readyState==4) {
					if(typeof(cfunc)=="undefined") eval(callbackhandler(xhr_response));
					else eval(callbackhandler(xhr_response,cfunc));
					try {
						//eval(callbackhandler(xhr_response));
					}
					catch (e) {
						//alert(xhr_response.responseText);
					}
				}
			}
		}
		xhr_response.send(null);
		if(!async) return xhr_response;
	} else {
		xhr_response.open(method,web,false);
		xhr_response.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
		xhr_response.send(url);
		eval(callbackhandler(xhr_response));
	}
}

function urlEncode(str) {
	var encodedStr = escape(str);
	encodedStr = encodedStr.replace(/\//g,"%2F");
	encodedStr = encodedStr.replace(/\?/g,"%3F");
	encodedStr = encodedStr.replace(/=/g,"%3D");
	encodedStr = encodedStr.replace(/&/g,"%26");
	encodedStr = encodedStr.replace(/@/g,"%40");
	encodedStr = encodedStr.replace(/\+/g, "%2B");
	return encodedStr;
}
