var ID_LIMITE_RICARICA_PERIODICA = 0;
var ID_LIMITE_PROMEMORIA_SESSIONE = 1;
var ID_LIMITE_AUTOESCLUSIONE = 2;
var HASHTABLE_LAST_KEY_INDEX = 2;

var modificheLimiti = new Hashtable();


function HideInput() {
    document.getElementById("AltroV").style.visibility = "hidden";
    document.getElementById("AltroV").style.display = "none";
}

function ShowInput(I) {
    HideInput();
    var ValoreScelto = document.getElementById('ricaricamensile').options[document.getElementById('ricaricamensile').selectedIndex].value;
    if (ValoreScelto == "Altro") {
        document.getElementById("AltroV").style.visibility = "visible";
        document.getElementById("AltroV").style.display = "block";
    } else {
        document.getElementById("AltroV").style.visibility = "hidden";
        document.getElementById("AltroV").style.display = "none";
    }
}
function ControllaValue(vnt) {
    var tasto,carattereTasto;
    if (window.event) //Modello ad eventi IE
        tasto = window.event.keyCode;
    else
    if (vnt) //Modello ad eventi NN
        tasto = vnt.which;
    else
        return true;
    carattereTasto = String.fromCharCode(tasto);
    // verifica tasti particolari tipo canc, invio, ...
    if ((tasto == null) || (tasto == 0) || (tasto == 8) || (tasto == 9) || (tasto == 13) || (tasto == 27))
        return true;
    else
    if ((("0123456789").indexOf(carattereTasto) > -1)) {
        window.status = "";
        return true;

    }
    else {
        window.status = "Il campo accetta solo numeri";
        return false;
    }
}

function ControlloNumero(obj) {
    var numero = "positivo";
    valore = obj.value.replace(/[^\d]/g, '').replace(/^0+/g, '');
    document.getElementById('altroHiddenValue').value= valore*100;
    nuovovalore = '';
    while (valore.length > 3) {
        nuovovalore = '.' + valore.substr(valore.length - 3) + nuovovalore;
        valore = valore.substr(0, valore.length - 3);
    }
    if (numero == "negativo")obj.value = "+" + valore + nuovovalore;
    else obj.value = valore + nuovovalore;
}




function getAjaxHandler() {
    if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
    } else {
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
}

function controllaStatoGiocoResp() {
    var location = window.location.href;


    var htmlLoader = getAjaxHandler();

    var queryString = "/gioco-responsabile/getStatus.html";
    htmlLoader.open("GET", queryString + "?ts=" + (new Date().getTime()), true);
    htmlLoader.onreadystatechange = function () {
        if (htmlLoader.readyState == 4) {
            var statusString = htmlLoader.responseText;
            if (statusString.indexOf("OK") >= 0) {

                var statSplit = statusString.split("~");
                if (statSplit[1] == "1") {
                    // todo apertura finestra modale
                    $('#autostart').attr("src","/preferenze/editUserGrLimitModal.html").trigger('click');

                }
            }
        }

    };
    htmlLoader.send(null);

}


function controllaStatoGiocoRespGDP() {


    var htmlLoader = getAjaxHandler();

    var queryString = "/gioco-responsabile/getStatus.html";
    htmlLoader.open("GET", queryString + "?ts=" + (new Date().getTime()), true);
    htmlLoader.onreadystatechange = function () {
        if (htmlLoader.readyState == 4) {
            var statusString = htmlLoader.responseText;
            if (statusString.indexOf("OK") >= 0) {

                var statSplit = statusString.split("~");
                if (statSplit[1] == "1") {
                    window.location.href = "/contogioco-poker/preferenze/giocoResponsabileFR.html";
                }


            }
        }

    };
    htmlLoader.send(null);

}


function openGRConsoleEmbedded(){
   if (document.getElementById('modalFlag')) {
      openGRConsoleEmbeddedModal();
   } else {
      openGRConsoleEmbeddedOld();
   }
}


function openGRConsoleEmbeddedOld(){
    var url="/gioco-responsabile/getGRConsolle.html";
    var response=getPageNoCache(url);
    if(!checkIferrorsGR(response, 2)){
        $("*[id='giocoRespContainer']").html(response.split("~")[1]);
    }else{
        //TODO chiedere pagina di errore
    }
}

function openGRConsoleEmbeddedModal(){
    var url="/gioco-responsabile/getGRConsolleModal.html";
    var response=getPageNoCache(url);
    if(!checkIferrorsGR(response, 2)){
        $("*[id='giocoRespContainer']").html(response.split("~")[1]);
    }else{
        //TODO chiedere pagina di errore
    }
}





function checkIferrorsGR(remoteContent, parts) {
    var splittedContent = remoteContent.split("~");
    if (splittedContent.length != parts) {
        return true;
    } else {
        if (splittedContent[0].search(/OK/) < 0) {
            return true;
        }
    }
    return false;
}



function closeRespOnSelect(idContenitore,selectId,idOperazione){
    if(idOperazione != ID_LIMITE_AUTOESCLUSIONE){
        if (!checkSelectedValueAndTxt(selectId)) {
            $("*[id='errorGrContainer']").css("display", "block");
            return;
        } else {
            $("*[id='errorGrContainer']").css("display", "none");
        }
    }


    var label = $('#'+selectId+' :selected').text();
    var value;

    if (document.getElementById("AltroV").style.display === "block") {
        value = document.getElementById('altroHiddenValue').value;
    } else {
         value = $('#'+selectId+' :selected').val();
    }



    if(idOperazione == ID_LIMITE_AUTOESCLUSIONE){
        label = 'Tutti i giochi '+ $("*[id='dataOraAutoesclusione']").html();
        $("*[id='"+idContenitore+"']").html(label);
    }else{
        if (document.getElementById("AltroV").style.display === "block") {
            $("*[id='" + idContenitore + "']").html(formatAsMoney(value/100) + " &euro;");
        } else {
            $("*[id='" + idContenitore + "']").html(label);
        }
        $("*[id='titleContainer"+idOperazione+"']").removeClass("Primo");
        $("*[id='titleContainer"+idOperazione+"']").addClass("PrimoOk");
    }
    modificheLimiti.put(idOperazione,value);
    confermaModifiche(idOperazione);

}



function openGRConsoleEmbeddedGdp(){
    var url="/gioco-responsabile/getGRConsolleGdp.html";
    var response=getPageNoCache(url);
    if(!checkIferrorsGR(response, 2)){
        $("*[id='giocoRespContainer']").html(response.split("~")[1]);
    }else{
        //TODO chiedere pagina di errore
        $("*[id='giocoRespContainer']").html(response);
    }
}

function annullaPrenotazioneScaduta(idLimite){
      var url="/gioco-responsabile/withDrawBooking.html?id="+idLimite;
       var response=getPageNoCache(url);
    if(checkIferrorsGR(response, 2)){
        //TODO chiedere pagina di errore
    }else{
        if (document.getElementById('modalFlag')) {
            parent.$.fancybox.close();
        } else {
             window.location.href = response.split("~")[1];
        }

    }
}

function confermaPrenotazioneScaduta(idLimite){
         var url="/gioco-responsabile/confirmBooking.html?id="+idLimite;
     var response=getPageNoCache(url);
    if(checkIferrorsGR(response, 2)){
         //TODO chiedere pagina di errore
     }else{
        if (document.getElementById('modalFlag')) {
            parent.$.fancybox.close();
        } else {
             window.location.href = response.split("~")[1];
        }

    }
}

function gotoAutoexStep1() {
    // nasconde div step 2 e 3 e accende div step 1
    $("*[id='autoExStage2']").css("display","none");
    $("*[id='autoExStage3']").css("display","none");

    $("*[id='autoExStage1']").css("display","block");
    $("*[id='txtAutoesclusione']").css("display","none");
    $("*[id='txtChiudiAutoesclusione']").css("display","block");

}

function gotoAutoexStep2() {
    // controlla che la select abbia senso quindi nasconde step 1 e 3 e accende 2
    if(checkSelectedValue('periodo-esclusione')){
        $("*[id='periodoErrContainer']").css("display","none");
        $("*[id='autoExStage1']").css("display","none");
        $("*[id='autoExStage3']").css("display","none");

        $("*[id='autoExStage2']").css("display","block");
        EliminaTxt();
    } else{
        $("*[id='periodoErrContainer']").html("&nbsp;&nbsp; Obbligatorio!");
        $("*[id='periodoErrContainer']").css("display","block");
    }


}

function gotoAutoexStep3() {
    // verifica che il pin sia corretto, prima sintatticamente poi con chiamata asincrona se ko messaggio errore se ok
    // nasconde div 1 e 2 e mostra div 3 impostando la data nel div opportuno
    var pin = $("*[id='num-pin']").val();
    if (pin == "") {
        showPinError("&nbsp; &nbsp;Obbligatorio!");
        return;
    }
    /*if(!pin.match(/^\d{5}$/)){
        showPinError("&nbsp; &nbsp;Il pin deve contenere 5 numeri!");
        return;
    }*/
    var pinCheckResult = getPageNoCache('/gioco-responsabile/checkPin.html?ctrl='+pin);
    var responseType = pinCheckResult.split("~")[0];
    if(responseType != 'OK'){
        //TODO pagina errore
    }else{
        var responseFeed = pinCheckResult.split("~")[1];
        if(responseFeed == 'FAILURE'){
            showPinError("&nbsp; &nbsp;Pin non valido!");
            return;
        }
        if(responseFeed == 'SUCCESS'){
            hidePinError();
            $("*[id='autoExStage1']").css("display","none");
            $("*[id='autoExStage2']").css("display","none");

            $("*[id='autoExStage3']").css("display","block");
        }
    }
}

function confermaAutoesclusione() {
    // inserisce nel vettore delle modifiche anche l'autoesclusione, chiude l'accordion e
    // mette la stringa verde opportuna .
    closeRespOnSelect('autExAttuale','periodo-esclusione',ID_LIMITE_AUTOESCLUSIONE);
}


function completaInfoAutoesclusione() {
    // inserisce parsando la data di fine autoesclusione derivante dalla select (deve essere calcolata) negli appositi div
    // <strong> hh:mm </strong> del <strong > gg/mm/aaaa </strong>
    var now = new Date().getTime();
    var selectedMillis = $('#periodo-esclusione :selected').val();
    if (selectedMillis == 3155673600000) {
        var formattedDate = "a <strong> tempo indeterminato </strong>";
    } else {
        var dataExcl = new Date(now * 1 + selectedMillis * 1);
        var oraString = dataExcl.getHours() + "";
        if (oraString.length == 1) {
            oraString = "0" + oraString;
        }
        var minString = dataExcl.getMinutes() + "";
        if (minString.length == 1) {
            minString = "0" + minString;
        }
        var ddString = dataExcl.getDate();
        var mmString = dataExcl.getMonth() + 1;
        var aaaaString = dataExcl.getFullYear();

        var formattedDate = "fino alle <strong>" + oraString + ":" + minString + " </strong> del <strong > " + ddString + "/" + mmString + "/" + aaaaString + " </strong>.";
    }
    $("*[id='dataOraAutoesclusione']").html(formattedDate);
    $("*[id='dataOraAutoesclusione3']").html(formattedDate);

}

function hidePinError() {
   $("*[id='pinErrContainer']").css("display","none");
}

function showPinError(message) {
    $("*[id='pinErrContainer']").html(message);
    $("*[id='pinErrContainer']").css("display","block");
}

function confermaModifiche(idLimiteDaModificare){

        var elementi = 0;
        var separatoreElementi = "@";
        var separatoreDati = "|";
        var dati = "";
            var item = modificheLimiti.get(idLimiteDaModificare);
            if (item != null) {
                if (elementi > 0) {
                    dati += separatoreElementi + idLimiteDaModificare + separatoreDati + item;
                } else {
                    dati += idLimiteDaModificare + separatoreDati + item;
                }

        }


        var response = getPageNoCache('/gioco-responsabile/modificaLimiti.html?dati='+dati);

        if (checkIferrorsGR(response, 3)) {
            if (idLimiteDaModificare == ID_LIMITE_RICARICA_PERIODICA) {
                $("*[id='errorGrContainer']").css("display", "block");
            }

        } else {
            var redirectUrl = response.split("~")[1];
            var urlLogoutClient = response.split("~")[2];
            if(urlLogoutClient.indexOf("http") >= 0){
                var frameLogout = "<iframe src=\""+urlLogoutClient+"\" id=\"logoutClient\"></iframe>";

                $("*[id='containerFrameLogout']").html(frameLogout);
            }
            if (document.getElementById('modalFlag')) {
                if (document.getElementById("AltroV").style.display == "block") {
                    $("*[id='valoreNuovoLimite']").html(formatAsMoney(item/100) + " &euro;");
                }else{
                     $("*[id='valoreNuovoLimite']").html($('#ricaricamensile :selected').text());    
                }    
                $("*[id='titoloModalObbligatorio']").css("display","none");
                $("*[id='titoloModalScelto']").css("display","block");

            } else {
                 setTimeout(function(){window.location.href = redirectUrl; },1000);
            }


        }

}


function checkSelectedValue(idSelect) {
    var selectedValue = $('#'+idSelect+' :selected').val();
    return selectedValue != "" && selectedValue != null;
}

function checkSelectedValueAndTxt(idSelect) {
    var selectedValue = $('#'+idSelect+' :selected').val();
    var valid = selectedValue != "" && selectedValue != null;
    if (valid && selectedValue == "Altro") {
         var testoLibero = document.getElementById('altroHiddenValue').value;
         valid = testoLibero != "";
    }
    return valid;
}

function getLimiteAttuale(){
    var url="/gioco-responsabile/getLimiteAttuale.html";
    var response=getPageNoCache(url);
    var dataI = "<strong>";
    var dataF = "</strong>  ricaricabili ogni 30 giorni";
    if(!checkIferrorsGR(response, 2)){
        $("*[id='limiteAttuale']").html(dataI+response.split("~")[1]+dataF);
    }else{
        //TODO chiedere pagina di errore
        $("*[id='limiteAttuale']").html('Limite non disponibile');
    }
}

