// Tipos de cookies: Necesarias, Analiticas, Funcional, Publicidad

var cookieList = [
    { type: "Necesarias", name: "MABSession" },
    { type: "Necesarias", name: "MABCookieConfig" },
    { type: "Necesarias", name: "MABCookieRevision" },
    { type: 'Necesarias', name: 'ASP.NET_SessionId' },
    { type: 'Necesarias', name: '.ASPXAUTH' },
    { type: 'Necesarias', name: 'chkCookie' },
    { type: 'Necesarias', name: 'testCookie' },
    { type: 'Necesarias', name: '_dc_gtm_UA-xxxxxxxx' },
    { type: 'Necesarias', name: 'HideCustomPopup' },
    { type: 'Necesarias', name: 'HideNewsletter' },
    { type: 'Analiticas', name: 'VisitedProducts' },
    { type: 'Analiticas', name: 'MAButm' },
    { type: 'Analiticas', name: 'MAButmh' },
    { type: 'Analiticas', name: '_gid' },
    { type: 'Analiticas', name: '_ga' },
    { type: 'Analiticas', name: '_gat' },
    { type: 'Funcional', name: '__stripe_sid' },
    { type: 'Funcional', name: '__stripe_mid' },
    { type: 'Funcional', name: 'KievRPSSecAuth' },
    { type: 'Funcional', name: 'PPLState' },
    { type: 'Funcional', name: 'ipv6' },
    { type: 'Funcional', name: 'SRCHUSR' },
    { type: 'Funcional', name: 'WLS' },
    { type: 'Funcional', name: 'NAP' },
    { type: 'Funcional', name: '__zlcmid' },
    { type: 'Funcional', name: 'SRCHHPGUSR' },
    { type: 'Funcional', name: 'ABDEF' },
    { type: 'Publicidad', name: 'MUID' },
    { type: 'Publicidad', name: 'ANON' },
    { type: 'Publicidad', name: '_fbp' },
    { type: 'Publicidad', name: 'fr' },
    { type: 'Publicidad', name: 'IDE' },
    { type: 'Publicidad', name: 'test_cookie' },
    { type: 'Publicidad', name: '_uetsid' },
    { type: 'Publicidad', name: '_uetvid' },
    { type: 'Publicidad', name: 'm' }
];
var AcceptAllCookies = false;

function SetCookie() {
    var CookieDate = new Date;
    CookieDate.setFullYear(CookieDate.getFullYear( ) + 1);
    //document.cookie = '{{Cookiename}}=true; path=/; expires=' + CookieDate.toGMTString( ) + ';SameSite=None;';
    document.getElementById('cookies').style.display = 'none';
}
function AcceptCookies() {
    SetCookie();
    setCookieConfig(false, true);
}
function RejectCookies() {        
    DeleteCookies(false);
    setCookieConfig(false, false);
    document.getElementById('cookies').style.display = 'none';
    document.getElementById('cookiesButton').style.display = null;
}
function ConfigCookies() {
    $('#modalCookiesConfig').modal('show');
}
function CookieNameDeletable(cookieName,viewChecks) {
    var eliminar = true;

    var cookie = cookieList.find(x => x.name.startsWith(cookieName));

    if (typeof cookie !== "undefined"){
        switch(cookie.type) {
            case "Necesarias": //Necesarias
                eliminar = false; break;
            case "Analiticas": //Analiticas
                eliminar = !viewChecks || !$('#chkCookiesAnaliticas').is(':checked'); break;
            case "Funcional": //Funcional
                eliminar = !viewChecks || !$('#chkCookiesFuncional').is(':checked'); break;
            case "Publicidad": //Publicidad
                eliminar = !viewChecks || !$('#chkCookiesPublicidad').is(':checked'); break;
            default: //otras no reconocidas
                eliminar = !viewChecks; break;
        }
    } else {
        sendCookieToClassify(cookieName);
    }
    return eliminar;
}
function DeleteCookies(viewChecks) {
    var cookies_ = document.cookie.split("; ");
    for(var i=0; i < cookies_.length; i++) {
        var equals = cookies_[i].indexOf("=");
        var name = (equals > -1 ? cookies_[i].substr(0, equals) : cookies_[i]) || '';
        var nametr = name.trim();
        if (CookieNameDeletable(nametr,viewChecks) & !AcceptAllCookies) {
            var cookiestr = nametr + "=;expires=Thu, 01 Jan 1970 00:00:01 GMT;";
            document.cookie = cookiestr;
			document.cookie = cookiestr + '=; path=/; domain=' + window.location.hostname.replace('www.','.') + '; expires=' + new Date(0).toUTCString();
            console.log('cookie ' + nametr + ' eliminada');
        } else {
            console.log('cookie ' + nametr + ' NO eliminada');
        }
    }
    
    document.getElementById('cookies').style.display = 'none';
}
function SaveConfigCookies() {
    setCookieConfig(true, false);
    DeleteCookies(true);
    document.getElementById('cookies').style.display = 'none';
    SetCookie();
    $('#modalCookiesConfig').modal('close');
}

function getCookiesConfig(){
    var configCookie = getCookie("MABCookieConfig");
    var cookies_ = JSON.parse(configCookie);

    console.log(cookies_);
    if (cookies_ !== null){
        cookies_.forEach(cookie => {
            switch(cookie.type) {
                case "All": //All
                    AcceptAllCookies = cookie.checked; break;
                case "Analiticas": //Analiticas
                    $('#chkCookiesAnaliticas').prop('checked', cookie.checked); break;
                case "Funcional": //Funcional
                    $('#chkCookiesFuncional').prop('checked', cookie.checked); break;
                case "Publicidad": //Publicidad
                    $('#chkCookiesPublicidad').prop('checked', cookie.checked); break;
                default: //otras no reconocidas
                break;
            }
        });
        DeleteCookies(true);
        document.getElementById('cookiesButton').style.display = null;
    }else{
        DeleteCookies(false);
        document.getElementById('cookies').style.display = null;
    }
}
function setCookieConfig(viewChecks, acceptAll) {
    var configCookie;
    if (viewChecks) {
        configCookie = [
            { type: 'Analiticas', checked: $('#chkCookiesAnaliticas').is(':checked') },
            { type: 'Funcional', checked: $('#chkCookiesFuncional').is(':checked') },
            { type: 'Publicidad', checked: $('#chkCookiesPublicidad').is(':checked') },
            { type: 'All', checked: false }
        ]
        AcceptAllCookies = false;
    } else {
        if (acceptAll){
            configCookie = [
                { type: 'Analiticas', checked: true },
                { type: 'Funcional', checked: true },
                { type: 'Publicidad', checked: true },
                { type: 'All', checked: true }
            ]
            AcceptAllCookies = true;
        }else{
            configCookie = [
                { type: 'Analiticas', checked: false },
                { type: 'Funcional', checked: false },
                { type: 'Publicidad', checked: false },
                { type: 'All', checked: false }
            ]
            AcceptAllCookies = false;
        }
    }

    var d = new Date();
    d.setTime(d.getTime() + (360 * 24 * 60 * 60 * 1000));
    var expires = "expires=" + d.toUTCString();
    document.cookie = "MABCookieConfig=" + JSON.stringify(configCookie) + ";" + expires + ";path=/;samesite";
    console.log(JSON.stringify(configCookie));
}
function getCookie(name) {
    function escape(s) {
        return s.replace(/([.*+?\^${}()|\[\]\/\\])/g, '\\$1');
    };
    var match = document.cookie.match(RegExp('(?:^|;\\s*)' + escape(name) + '=([^;]*)'));
    return match ? match[1] : null;
}

function sendCookieToClassify(name){
    var cookies_ = getCookiesRevision();

    var cookie = cookies_.find(x => x === name);

    if (typeof cookie === "undefined"){
        var ajax = $.post("/admin/handlers/cookiesregistro.ashx", { 
            cookie: name, domain: window.location.hostname
        },
            function (data) {
                var obj = jQuery.parseJSON(data);
                if (obj.status == "OK") {
                    putCookiesRevision(name);
    
                    console.log('ok');
                } else {
                    if(obj.message.includes("clave duplicado")){
                        putCookiesRevision(name);
                    }
                    //console.log(obj.message);
                }
            });
    }
}
function getCookiesRevision(){
    var configCookie = getCookie("MABCookieRevision");

    if(configCookie == null){configCookie = "[]"}
    return JSON.parse(configCookie);
}
function putCookiesRevision(name){
    var cookies_ = getCookiesRevision();

    cookies_.push(name);
    var d = new Date();
    d.setTime(d.getTime() + (360 * 24 * 60 * 60 * 1000));
    var expires = "expires=" + d.toUTCString();
    document.cookie = "MABCookieRevision=" + JSON.stringify(cookies_) + ";" + expires + ";path=/;samesite";
}