var Request = new Object();

Request.send = function(url, method, callback, data) {
	var sid = Math.random();
	url += "&sid="+sid
	var req;
	if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	 else
	 {
			return;
	}
	req.onreadystatechange = function() {
		if (req.readyState == 4) {// only if req shows "loaded"
			if (req.status < 400) {// only if "OK"
				(method=="POST") ? callback(req) : callback(req,data);
			}
		}
	}
	if (method=="POST") {
		req.open("POST", url, true);
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		req.send(data);
	} else {
		req.open("GET", url, true);
		req.send(null);
	}
	return req;
}

function handle_ajax_responses(response) {
	var okToHideLoadingDiv = 1;
//	response = trim(response);
	var parts = response.responseText.split("||||");

	var part_nr = 0;
	while (parts[part_nr]) {
		var parts_detailed = parts[part_nr].split("|||");
		if (parts_detailed[0]) {
			switch (parts_detailed[0]) {
				case "empty":
					var oEmpty = document.getElementById(parts_detailed[1]);
					if (oEmpty) oEmpty.innerHTML = "";
				break;
				
				case "addcontent":
					var oAddPlace = document.getElementById(parts_detailed[1]);
					if (oAddPlace && parts_detailed[2]) {
						oAddPlace.innerHTML += parts_detailed[2];
					}
				break;
				
				case "changecontent":
					var oAddPlace = document.getElementById(parts_detailed[1]);
					if (oAddPlace && parts_detailed[2]) {
						oAddPlace.innerHTML = parts_detailed[2];
					}
				break;
				
				case "focus":
					var oFocus = document.getElementById(parts_detailed[1]);
					if (oFocus) oFocus.focus();
				break;
				
				case "error":
				case "alert":
					if (parts_detailed[1]) alert(parts_detailed[1]);
				break;
				
				case "change_class":
					var oChangeClassName = document.getElementById(parts_detailed[1]);
					if (oChangeClassName) oChangeClassName.className = parts_detailed[2];
				break;
			}
		}
		
		part_nr++;
	}
}
