/*****************************************************************************************
 USO:
 ajaxGetRand(url, div, handler, vars, met)

    - url:string        = url relativa alla pagina da richiedere
    - div:string 	    = oggetto in cui scrivere il risultato finale

    (optionals)
    - handler:variabile = funzione che gestisce il contenuto della richiesta ajax
                          ATTENZIONE! Il nome della funzione deve essere passato come variabile non come stringa
 	                      (Se omesso: il contenuto viene mostrato in div)

    - vars:string       = coppie nome=valore separati da '&', variabili da spedire alla pagina richiesta
    - met:string        = metodo (get | post)

*****************************************************************************************/

function new_xmlhttp_obj() {
var xml_http = null;

   	if(window.XMLHttpRequest) xml_http = new XMLHttpRequest();
   	else if(window.ActiveXObject) xml_http = new ActiveXObject("Microsoft.XMLHTTP");

   	return xml_http;
}

function ajaxOk(req) {
    if(req.readyState == 4 && req.status == 200) return req.responseText;
    else return false;
}

function no_response(){return true;}

function ajaxGet(url,div,handler,vars,met){
var a = new Array(), ajax_req = new_xmlhttp_obj();

	a.length = div ? 2 : 1
	a[0] = a.length > 1 ? div : vars;
	if(a.length > 1) a[1] = vars;

    var myhandler = function() {
        var content = ajaxOk(ajax_req);
        if (content !== false) {

            a[a.length -1] = content;

            return handler.apply(this, a);
        }
    }

    var vars = (met == 'post') ? vars : null;

    ajax_req.onreadystatechange = myhandler;
    ajax_req.open(met,url);
    ajax_req.setRequestHeader("content-type", "application/x-www-form-urlencoded")
    ajax_req.send(vars);
}

function trim(stringa){

    while (stringa.substring(0,1) == ' ') stringa = stringa.substring(1, stringa.length);

    while (stringa.substring(stringa.length-1, stringa.length) == ' ') stringa = stringa.substring(0,stringa.length-1);

    return stringa;
}

// main function
function ajaxGetRand(url, div, handler, vars, met) {
var rand_var = "rand=" + escape(Math.random()), new_vars = '';

    div = (!div) ? false : div;
    handler = (!handler) ? write_in : handler;


	url += (url.indexOf("?") == -1) ? "?" : "&";
	url += rand_var;

	if(!met || met == 'get'){

		if(vars && trim(vars) != ''){

			new_vars += escape(vars);
		}

		url += "&" + new_vars;
		arguments[0] = url;

		return ajaxGet(url, div, handler, null, 'get');
	}

   	arguments[3] = vars;
  	return ajaxGet.apply(this,arguments);
}

function write_in(div, content){
    document.getElementById(div).innerHTML = content;
}

