var ajax = {

	caching: true,
	cache: {},
	xmlHttp: null,
	params: [],
	timer: 0,
	
	xmlHttpClass: function() {
    return window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
	},
	
	get: function(url,func,param) {
    if(!param) param = "";
    if(ajax.timer) clearTimeout(ajax.timer);
	  if(ajax.caching && ajax.cache[url]) {
			if(func) func(ajax.cache[url],param);
			return;
		}
    ajax.params = [url,func,param];
    ajax.timer = setTimeout("ajax.request(ajax.params,1);",250);
	},
	
	post: function(url,func,param) {
    if(!param) param = "";
    if(ajax.timer) clearTimeout(ajax.timer);
	  if(ajax.caching && ajax.cache[url]) {
			if(func) func(ajax.cache[url],param);
			return;
		}
    ajax.params = [url,func,param];
    ajax.timer = setTimeout("ajax.request(ajax.params,0);",250);
	},

	request: function(x,via_get) {
    var url = x[0];
    var func = x[1];
    var param = x[2];
		var now = (new Date).getTime();
		var urlAddr = url.split("?");
		urlAddr = urlAddr[0];
	  ajax.xmlHttp = ajax.xmlHttpClass();
	  ajax.xmlHttp.onreadystatechange = function() {
      try { ok = ajax.xmlHttp.readyState; }
      catch(e) { }
      if(ok==4) {
				if(func) func(ajax.xmlHttp.responseText,param);
				if(ajax.caching) ajax.cache[url] = ajax.xmlHttp.responseText;
			}
	  };
    if(via_get) ajax.get1(url);
    else ajax.post1(url);
	},
	
	get1: function(url) {
	  ajax.xmlHttp.open("GET",url,true);
	  ajax.xmlHttp.send(null);
	},

	post1: function(url) {
		var urlAddr = url.split("?");
		var urlVar = urlAddr[1];
		urlAddr = urlAddr[0];
	  ajax.xmlHttp.open("POST",urlAddr,true);
    ajax.xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    ajax.xmlHttp.setRequestHeader("Content-length", urlVar.length);
    ajax.xmlHttp.setRequestHeader("Connection", "close");
	  ajax.xmlHttp.send(urlVar);
	},

  filler: function(target_id,scrpt,method) {
    if(!method) method = ajax.get;
    return method( "/inc/"+scrpt, function(response) {document.getElementById(target_id).innerHTML = response;} );
  }
	
}

