function Ajax( url, variables, onSuccess, onError ) 
{
   var http_request = false;
   function makePOSTRequest(url, parameters) {
      http_request = false;
      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
         	// set type accordingly to anticipated content type
            http_request.overrideMimeType('text/html');
         }
      } else if (window.ActiveXObject) { // IE
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
      if (!http_request) {
         Ajax_error(false);
      }
      
      http_request.onreadystatechange = alertContents;
      http_request.open('POST', url, true);
      http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=iso-8859-1");
      http_request.setRequestHeader("Content-length", parameters.length);
      http_request.setRequestHeader("Connection", "close");
      http_request.send(parameters);
   }

   function alertContents() {
      if (http_request.readyState == 4) {
         if (http_request.status == 200) {
			if(onSuccess instanceof Function) {
	           onSuccess(http_request.responseText);
            }
         } else {
			if(onError instanceof Function) {
	           onError(false);
            }
         }
      }
   }
   
   var poststr = "";
   for(key in variables) {
	   if(poststr) poststr += "&" ;
	   poststr += key + "=" + encodeURI( variables[key] );
   }
   makePOSTRequest(url, poststr);

}

