// ========== REQUEST ====================================================================================================

var Request = new Object();

Request.send = function(url, method, responseHandler, data, urlencoded) {

	var req;	
	if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	req.onreadystatechange = function() {
		if (req.readyState == 4) {// only if req shows "loaded"
			if (req.status < 400) {// only if "OK"
				 responseHandler(req,data);
			} else {
				//alert("There was a problem loading data :\n" + req.status+ "/" + req.statusText);
			}
		}
	}
	if (method=="POST") {
		req.open("POST", url, true);
		if (urlencoded) req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		req.send("" + data);
	} else if(method=="PUT") {
		req.open("PUT", url, true);
		if (urlencoded) req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');		
		req.send("" + data);
	} else if(method=="DELETE"){
		req.open("DELETE", url, true);
		req.send(null);
	}else{
		req.open("GET", url, true);
		req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		req.send(null);
	}
	
	return req;
}

Request.sendPOST = function(url, data, responseHandler) {
	if(undefined == data)
	data = '';
	Request.send(url, "POST", responseHandler, data, true);
}
Request.sendGET = function(url, responseHandler, args) {
	return Request.send(url, "GET", responseHandler, args);
}
Request.sendPUT = function(url, responseHandler, args) {
	if(undefined == args)
	args = '';
	if(Browser.isSafari){
	return Request.send(App.redirectPUT + url, "POST", responseHandler, args, true);
	}
	else{
	return Request.send(url, "PUT", responseHandler, args, true);
	}
}
Request.sendDEL = function(url, responseHandler, args) {
	if(undefined == args)
	args = '';
	if(Browser.isSafari){
	return Request.send(App.redirectDelete + url, "POST", responseHandler, args);
	}
	else{
	return Request.send(url, "DELETE", responseHandler, args);
	}
}

Request.connectPOST = function( url , params , handler, handlerParams )
{
	url = unescape(url);

	if( params != null )
	{
		for( var i=0; i<params.length; i++ )
			  url +=  "/" + params[i];
	}
	Request.sendPOST( url, null, handler, handlerParams );
}

