/**
 * Funzione che istanzia un oggetto XMLHttpRequest usando un meccanismo cross browser.
 *
 * @return   restituisce un'istanza di XMLHttpRequest oppure il valore false in caso
 *           di errori.
 */

function getXMLHttpRequestInstance() {

    var xmlhttp;

    // Prova il metodo Microsoft usando la versione più recente:
    try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {

        try {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (E) {
            xmlhttp = false;
        }
    }

    // Se non è stato possibile istanziare l'oggetto forse siamo
    // su Mozilla/FireFox o su un altro browser compatibile:
    if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
        try {
            xmlhttp = new XMLHttpRequest();
        } catch (e) {
            xmlhttp = false;
        }
    }

    // Restituisce infine l'oggetto:
    return xmlhttp;
}

/**
 * Funzione che sostituisce il contenuto HTML di un nodo della pagina.
 *
 * @param    nodeId ID del nodo
 * @param    html   codice HTML da sostituire a quello del nodo
 */
function updateContent(nodeId, html) {
   
    var node = document.getElementById(nodeId);
    if(null == node) {
		//alert("[ERRORE] L'elemento " + nodeId + " non esiste");
		return;
    }
    node.innerHTML = html;
    node.style.visibility = "visible";
}

/**
 * Richiede al web server il contenuto di una slide (testo o HTML) in maniera asincrona.
 * @param    nodeId    ID dell'elemento della pagina che conterrà la slide
 * @param    url       URL della slide (deve essere sullo stesso server per motivi di sicurezza)
 */
function showSlide(nodeId, url) {
    var xmlhttp = getXMLHttpRequestInstance();
    if(!xmlhttp) {
        alert("Il browser non supporta l'oggetto XMLHttpRequest");
        return false;
    }
    updateContent(nodeId,"");
    updateContent(nodeId,"<img src='../img/loading.gif'>");

    xmlhttp.open("GET", url,true);
    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4) {
            if (xmlhttp.status==200) {
                updateContent(nodeId, xmlhttp.responseText);
                //alert (xmlhttp.responseText);
            } else if (xmlhttp.status==404) {
                alert("[ERRORE] l'URL "+url+"non esiste!");
            } else {
                alert("[ERRORE] errore non gestito (" + xmlhttp.status + ")");
            }
        }
    }

    xmlhttp.send(null);
}

/**
 * Richiede al web server il contenuto di una slide (testo o HTML) in maniera asincrona.
 * @param    nodeId    ID dell'elemento della pagina che conterrà la slide
 * @param    url       URL della slide (deve essere sullo stesso server per motivi di sicurezza)
 */
function showSlideno(nodeId, url) {
    var xmlhttp = getXMLHttpRequestInstance();
    if(!xmlhttp) {
        alert("Il browser non supporta l'oggetto XMLHttpRequest");
        return false;
    }
    updateContent(nodeId,"");

    xmlhttp.open("GET", url,true);
    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4) {
            if (xmlhttp.status==200) {
                updateContent(nodeId, xmlhttp.responseText);
                //alert (xmlhttp.responseText);
            } else if (xmlhttp.status==404) {
                alert("[ERRORE] l'URL "+url+"non esiste!");
            } else {
                alert("[ERRORE] errore non gestito (" + xmlhttp.status + ")");
            }
        }
    }

    xmlhttp.send(null);
}

