﻿var Url = {

    // public method for url encoding
    encode: function(string) {
        return escape(this._utf8_encode(string));
    },

    // public method for url decoding
    decode: function(string) {
        return this._utf8_decode(unescape(string));
    },

    // private method for UTF-8 encoding
    _utf8_encode: function(string) {
        string = string.replace(/\r\n/g, "\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if ((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    },

    // private method for UTF-8 decoding
    _utf8_decode: function(utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;

        while (i < utftext.length) {

            c = utftext.charCodeAt(i);

            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if ((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i + 1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i + 1);
                c3 = utftext.charCodeAt(i + 2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }

        }

        return string;
    }
}

// funzione per assegnare l'oggetto XMLHttpRequest
// compatibile con i browsers più recenti e diffusi
function assegnaXMLHttpRequest() {

    var XHR = null
    var browserUtente = navigator.userAgent.toUpperCase();


    // browser standard con supporto nativo
    // non importa il tipo di browser
    if (typeof (XMLHttpRequest) === "function" || typeof (XMLHttpRequest) === "object")
        XHR = new XMLHttpRequest();

    // browser Internet Explorer
    // è necessario filtrare la versione 4
    else if (window.ActiveXObject && browserUtente.indexOf("MSIE 4") < 0) {
        // la versione 6 di IE ha un nome differente
        // per il tipo di oggetto ActiveX
        if (browserUtente.indexOf("MSIE 5") < 0)
            XHR = new ActiveXObject("Msxml2.XMLHTTP");

        // le versioni 5 e 5.5 invece sfruttano lo stesso nome
        else
            XHR = new ActiveXObject("Microsoft.XMLHTTP");
    }

    return XHR;
}

function query(index, sDati, oOUTPUT) {
    var bAsync;
    if (index == 12 || index == 13 || index == 10) //Sessioni
        bAsync = false;
    else
        bAsync = true;
        
    var ajax = assegnaXMLHttpRequest();
    var dataChiamata;
    var oDataDraw;
    var inizioChiamata;
    if (ajax) {
        // inizializzo la richiesta in post
        if (index == 10) {
            oDataDraw = document.getElementById('dataDraw');
            //oDataDraw.value = '';
            dataChiamata = new Date();
            inizioChiamata = dataChiamata.getTime();
            ajax.open("post", "/ajax/queryFast.asp", bAsync);
        }
        else
            ajax.open("post", "/ajax/query.asp", bAsync);
        ajax.setRequestHeader("content-type", "application/x-www-form-urlencoded");
        ajax.onreadystatechange = function() {
            if (ajax.readyState <= 3) {
                switch (parseInt(index)) {
                    case 8:
                        oOUTPUT.innerHTML = "<img src='/images/Ilmioiploader.gif' alt='Mail in uscita' />";
                        break;
                    case 10: case 12: case 13:
                        ; //oOUTPUT.innerHTML = "<center><img src='/images/Ilmioiploader.gif' alt='attendi' /></center>";
                        break;
                    default:
                        oOUTPUT.innerHTML = "<img src='/images/ajax-loader.gif' alt='attendi' border='0'/>"; //"Attendi...."
                        break;
                }
            }

            // verifica dello stato
            if (ajax.readyState === 4) {
                // verifica della risposta da parte del server
                if (ajax.statusText === "OK") {
                    if (index == '12') {
                        SessionCiclo = sDati.split("|")[1];
                    }
                    if (index == '13') {
                        SessionCiclo = ajax.responseText;
                        //alert('sono qui:' + ret);
                        //return ret;
                    }
                    if (index == '1' || index == '2') {
                        oOUTPUT.innerHTML = 'Mail<br>Inviata!';
                        setTimeout("document.getElementById('box').style.display = 'none'", 3000);
                    }
                    if (index == '3') {
                        oOUTPUT.innerHTML = 'Messaggio<br>Inviato!';
                        setTimeout("document.getElementById('box').style.display = 'none'", 3000);
                    }
                    if (index == '7') { //TSK_UpdateCompetenze
                        iValueProfiliProfessionale = sDati.split("|")[1]
                        var oElencoCompetenze = document.getElementById('ElencoCompetenze');
                        queryOut(1, '/ajax/ckbox.asp?label=competenza', 'RS_Competenze|' + iValueProfiliProfessionale, oElencoCompetenze);
                    }
                    if (index == '8') { // email Ripristino password
                        if (ajax.responseText != 'OK')
                            oOUTPUT.innerHTML = ajax.responseText;
                        else
                            oOUTPUT.innerHTML = 'Mail Inviata!';
                        setTimeout("oOUTPUT.innerHTML = ''", 3000);
                    }
                    if (index == '9') {
                        //alert(ajax.responseText);
                        var aResponse = ajax.responseText.split("|")
                        if (aResponse[0] == 'KO')
                            alert('ATTENZIONE!!\nEmail già registrata!\nSe non ricordi la password clicca su "Password persa?"');
                        else
                            alert('Ti abbiamo inviato una mail!!\nClicca sul link contenuto nella mail per completare la registrazione.')

                    }
                    if (index == '10') { // Aggiornamento DNS
                        //alert('|' + ajax.responseText + '|');
                        var aResponse = ajax.responseText.split("|");
                        var dataChiamata = new Date();
                        var ore = dataChiamata.getHours() + ":" + dataChiamata.getMinutes() + "." + dataChiamata.getSeconds();
                        fineChiamata = dataChiamata.getTime();
                        
                        var ms =  fineChiamata-inizioChiamata;
                        var a = new Array()
                        a[0] = ore;
                        a[1] = ms;
                        aDataDraw.push(a);
                        if (aDataDraw.length>100)
                            aDataDraw.shift();
                        //if (oDataDraw.value.length>0) 
                        //    oDataDraw.value = oDataDraw.value + ",['" + ore + "'," + ms + "]"
                        //else
                       //     oDataDraw.value = "['" + ore + "'," + ms + "]";
                        drawChart(); 
                        //AzzeraSlider();

                        if (aResponse[0] == 'KO') {
                            oOUTPUT.innerHTML = aResponse[1];
                            //window.clearInterval(ciclo);
                            query(12, 'SessionCiclo|0', null);
                            //document.getElementById('myPost').value = 'ciclo=0';
                        }
                        else {
                            var oClickTime = document.getElementById('clickTime');
                            //alert(clickTime);
                            if (oClickTime.value == "0")
                                oClickTime.value = aResponse[1];

                            if (oClickTime.value == aResponse[1]) {
                                document.getElementById('myPost').value = 'ciclo=1';
                                var today = new Date();
                                var sAdesso = Right('0' + today.getDate(), 2) + '/' + Right('0' + parseInt(today.getMonth() + 1).toString(), 2) + '/' + today.getFullYear() + ' alle ore ' + Right('0' + today.getHours(), 2) + ':' + Right('0' + today.getMinutes(), 2) + '.' + Right('0' + today.getSeconds(), 2);
                                oOUTPUT.innerHTML = '<p>DNS sincronizzato il ' + sAdesso + '<p>';
                                var oRaggiungibile = document.getElementById('raggiungibile');
                                var oDominii = document.getElementById('dominii');
                                oRaggiungibile.innerHTML = "ora raggiungibile all'indirizzo: <b>" + document.getElementById('cName').value + "." + oDominii.options[oDominii.selectedIndex].text + "</b>";
                                oRaggiungibile.title = document.getElementById('cName').value + "." + oDominii.options[oDominii.selectedIndex].text;
                                document.getElementById('IPADDRESS').value = aResponse[2];

                                if (iSlider == 0) {
                                    x = window.setInterval(slider, slideTime);
                                    iSlider = 1;
                                    //slider();

                                }
                                //setTimeout("document.getElementById('InviaDiv').innerHTML = ''", 3000);
                            }
                            else {
                                oOUTPUT.innerHTML = '<p><font color=red>ATTENZIONE: troppe pagine: "/dnsdinamico" APERTE!</font></p>';
                                var oRaggiungibile = document.getElementById('raggiungibile');
                                oRaggiungibile.innerHTML = "ora raggiungibile all'indirizzo: ....";
                                oRaggiungibile.title = "";
                                //document.getElementById('myPost').value = 'ciclo=0';
                                //window.clearInterval(ciclo);
                                query(12, 'SessionCiclo|0', null);
                                document.getElementById('clickTime').value = '0';
                                document.getElementById('BTN_KO').style.display = 'none';
                                document.getElementById('BTN_OK').style.display = 'block';
                            }
                        }

                    }
                }
            }
        }
        //document.getElementById('HELP').value = "index=" + index + "&sDati=" + Url.encode(sDati);
        //if (index == 9)
        //    alert("index=" + index + "&sDati=" + sDati);
        //alert("index=" + index + "&sDati=" + sDati);
        try {
            ajax.send("index=" + index + "&sDati=" + Url.encode(sDati));
        }
        catch (e) {
            ajax.abort();
            x = window.setInterval(slider, slideTime);
            iSlider = 1;
         }
    }
}

function queryOut(index, PageASP, sDati, oOUTPUT) {
    var ajax = assegnaXMLHttpRequest();
    if (ajax) {
        ajax.open("post", PageASP, true);
        ajax.setRequestHeader("content-type", "application/x-www-form-urlencoded");
        ajax.onreadystatechange = function() {
            if (ajax.readyState <= 3) {
                oOUTPUT.innerHTML = 'ATTENDI ....';
            }
            if (ajax.readyState == 4) {
                oOUTPUT.innerHTML = ajax.responseText;
            }

        }

    ajax.send("jAjax=" + index + "&sDati=" + Url.encode(sDati));

    
    }



}

