function GetXmlHttpObject() {
	var xmlHttp=null;
		try {
			xmlHttp=new XMLHttpRequest();
		} catch (e) {
		try {
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return xmlHttp;
}

function show_preloader() {
	var pHeight = window.pageYOffset + 250;
	document.getElementById('preloader').style.top = pHeight + 'px';
	document.getElementById('preloader').style.display = '';
}

function hide_preloader() {
	document.getElementById('preloader').style.display = 'none';
}

function response_handler(response) {
	//hide_preloader();
	var instances = response.split('[-]');
	for(i = 0; i < instances.length; i++) {

	if(instances[i].substr(0, 5) == "Error") {
		window.alert(instances[i]);
	} else if(instances[i].substr(0, 3) == "Add") {
		var parts = instances[i].split('[:]');
		var content = document.getElementById(parts[1]).innerHTML;
		document.getElementById(parts[1]).innerHTML = parts[2] + content;
	} else if(instances[i].substr(0, 6) == "Insert") {
		var parts = instances[i].split('[:]');
		document.getElementById(parts[1]).innerHTML = parts[2];
	} else if(instances[i].substr(0, 6) == "Delete") {
		var parts = instances[i].split('[:]');
		var remove_el = document.getElementById(parts[1]);
        remove_el.parentNode.removeChild(remove_el);
	} else if(instances[i].substr(0, 6) == "Update") {
		var parts = instances[i].split(':'); 
		document.getElementById(parts[1]).attributes[parts[2]].value = parts[3];
	} else if(instances[i].substr(0, 8) == "Redirect") {
		window.location.href = instances[i].substr(9);
	} else if(instances[i].substr(0, 3) == "CSS") {
		var parts = instances[i].split('[:]');
		document.getElementById(parts[1]).style.backgroundColor = parts[3];
	} else if(instances[i].substr(0, 6) == "Custom") {
		var parts = instances[i].split('[:]');
		eval.call(window, parts[1]);		
	} else if(instances[i].substr(0, 6) == "jQuery") {
		var jquery = instances[i].substr(8);
		eval.call(window, jquery);
	} else if(instances[i].substr(0, 7) == "Session") {
		var url = instances[i].substr(9);
		save_session(url);
	} else {
		window.location.reload();
	}
	}
}

function ajax_post_data(form, url, skip_preloader) {

	var http=GetXmlHttpObject()
	if(skip_preloader != 1) {
		show_preloader();
	}

	http.onreadystatechange=function() {
		if (http.readyState==4 || http.readyState=="complete") {
			response_handler(http.responseText);
		}
	}

	var params = '';
	for(i=0; i < form.elements.length; i++) {
		if(form.elements[i].disabled != true && form.elements[i].type != "button" && form.elements[i].type != "reset") {
			if(form.elements[i].type == "checkbox") {
				params += form.elements[i].name + "=" + form.elements[i].checked + "&";
			} else {
				params += form.elements[i].name + "=" + escape(form.elements[i].value) + "&";
			}
		}
	}
	var send_params = params.substr(0, params.length - 1);

	http.open("POST", url, true);
	http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http.setRequestHeader("Content-length", params.length);
	http.setRequestHeader("Connection", "close");
	http.send(send_params);
}

function ajax_get_data(url, params, skip_preloader) {

	var http=GetXmlHttpObject()
	if(skip_preloader != 1) {
		show_preloader();
	}
	
	http.onreadystatechange=function() {
		if (http.readyState==4 || http.readyState=="complete") {
			response_handler(http.responseText);
		}
	}

	var url_string=url+"?"+params+"&sid="+Math.random();
	http.open("GET", url_string, true);
	http.send(null);
}

function save_session(url) {
	setTimeout("ajax_get_data('" + url + "', 'id=1', '1')", 1200000);
}