my = {

    // inizializzazione oggetto XMLHttpRequest per ajax
    xhr: function()
    {
        var conn = null;
        try {
            conn = new XMLHttpRequest();
        } catch (trymicrosoft) {
            try {
                conn = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (othermicrosoft) {
                try {
                    conn = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (failed) {
                    conn = null;
                }
            }
        }
        return conn;
    },

    // astrazione della richiesta XmlHttpRequest
    richiedi: function(script, params, funzione)
    {
        my.attesa(1);
        var conn = my.xhr();
        if (conn == null) {
            my.attesa(0);
            alert('errore connessione ajax');
            return;
        }
        conn.open('POST', script, true);
        conn.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        conn.onreadystatechange = function() {
            if (conn.readyState == 4) {
                if (conn.status == 200) {
                    my.attesa(0);
                    var risposta = conn.responseText;
                    if (risposta.substr(0, 6)  == 'errore') {
                        alert(risposta);    // TODO si potrebbe fare + carino...
                    } else {
                        eval(funzione + '(risposta)');
                    }
                }
            }
        }
        conn.send(params);
    },

    // mostra o nasconde l'iconcina di attesa
    attesa: function(stato)
    {
        var attesa = document.getElementById('attesa');
        if (attesa == null) {   // se non esiste il div con l'immagine, lo crea
            var img = document.createElement('img');
            img.setAttribute('src', 'http://img.studenti.it/grafica/loading.gif');
            var attesa = document.createElement('div');
            attesa.setAttribute('id', 'attesa');
            //attesa.setAttribute('style', 'float: left');
            attesa.setAttribute('style', 'position: absolute; top: 5px; left: 5px');
            attesa.appendChild(img);
            var body = document.getElementsByTagName('body')[0];
            body.insertBefore(attesa, body.firstChild);
        }
        if (stato == 1) {   // mostra
            attesa.style.display = 'block';
        } else {    // nascondi
            attesa.style.display = 'none';
        }
    }

}
