// ------ Bootstrap ----------------

$('.btn_acessibility').on('click', function() {
    $('#acessibilitymodal_acessibility').addClass('show');
    // $('body').css('overflow', 'hidden');  // Prevenir rolagem da página
});

// Fechar modal_acessibility
$('.btn_acessibility-close, .modal_acessibility').on('click', function() {
    $('#acessibilitymodal_acessibility').removeClass('show');
    // $('body').css('overflow', 'auto');  // Restaurar rolagem da página
});

// Prevenir fechamento quando clicar dentro do modal_acessibility
$('.modal_acessibility-dialog').on('click', function(e) {
    e.stopPropagation();
});
  
// ---------------------------------
function enableContrast() {
    document.body.style.setProperty("filter", "invert(100%)");
    $('#contrast-b').addClass('activeOptionAcessibility');
    $('.lineStatusAcessibilityContrast').addClass('activeLineStatusOptionAcessibility');
    localStorage.setItem('contrast_enabled', true);
}

function disableContrast() {
    document.body.style.setProperty("filter", "invert(0%)");
    $('#contrast-b').removeClass('activeOptionAcessibility');
    $('.lineStatusAcessibilityContrast').removeClass('activeLineStatusOptionAcessibility');
    localStorage.setItem('contrast_enabled', false);
}

function toggleContrast() {
    isGrayscaleEnabled = localStorage.getItem('grayscale_enabled');
    isContrastEnabled = localStorage.getItem('contrast_enabled');

    if (isContrastEnabled === 'false' || isContrastEnabled === null) {
        if(isGrayscaleEnabled === true || isGrayscaleEnabled === 'true') {
            disableGrayscale();
        }
        enableContrast();
    } else {
        disableContrast();
    }
}

function loadContrast() {

    var isContrastEnabled = localStorage.getItem('contrast_enabled');

    if (isContrastEnabled === 'true' || isContrastEnabled === true) {
        enableContrast();
    } else {
        disableContrast();
    }
}

function enableGrayscale() {
    document.body.style.setProperty("filter", "grayscale(100%)");
    $('#grayscale').addClass('activeOptionAcessibility');
    $('.lineStatusAcessibilityGrayscale').addClass('activeLineStatusOptionAcessibility');
    localStorage.setItem('grayscale_enabled', true);
}

function disableGrayscale() {
    document.body.style.setProperty("filter", "grayscale(0%)");
    $('#grayscale').removeClass('activeOptionAcessibility');
    $('.lineStatusAcessibilityGrayscale').removeClass('activeLineStatusOptionAcessibility');
    localStorage.setItem('grayscale_enabled', false);
}

function toggleGrayscale() {
    isGrayscaleEnabled = localStorage.getItem('grayscale_enabled');
    isContrastEnabled = localStorage.getItem('contrast_enabled');

    if (isGrayscaleEnabled === 'false' || isGrayscaleEnabled === null) {
        if(isContrastEnabled === true || isContrastEnabled === 'true') {
            disableContrast();
        }
        enableGrayscale();
    } else {
        disableGrayscale();
    }
}

function loadGrayscale() {
    
    var isGrayscaleEnabled = localStorage.getItem('grayscale_enabled');

    if (isGrayscaleEnabled === 'true' || isGrayscaleEnabled === true) {
        enableGrayscale();
    } else {
        disableGrayscale();
    }
}

function enableHighlightLinks() {

    var links = $('a');

    links.each(function(i, link) {
        link.style.setProperty("text-decoration", "underline");
        link.style.setProperty("font-weight", "bold");
    });

    $('#highlightLinks').addClass('activeOptionAcessibility');
    $('.lineStatusAcessibilityHighlightLinks').addClass('activeLineStatusOptionAcessibility');
    localStorage.setItem('highlightLinks_enabled', true);
}

function disableHighlightLinks() {

    var links = $('a');

    links.each(function(i, link) {
        link.style.setProperty("text-decoration", "none");
        link.style.setProperty("font-weight", "normal");
    });

    $('#highlightLinks').removeClass('activeOptionAcessibility');
    $('.lineStatusAcessibilityHighlightLinks').removeClass('activeLineStatusOptionAcessibility');
    localStorage.setItem('highlightLinks_enabled', false);
}

function toggleHighlightLinks() {

    var highlightLinksEnabled = localStorage.getItem('highlightLinks_enabled');
    
    if (highlightLinksEnabled === 'false' || highlightLinksEnabled === false) {
        enableHighlightLinks();
    } else {
        disableHighlightLinks();
    }

}

function loadHighlightLinks() {
    var highlightLinksEnabled = localStorage.getItem('highlightLinks_enabled');
    
    if (highlightLinksEnabled === 'true' || highlightLinksEnabled === true) {
        enableHighlightLinks();
    } else {
        disableHighlightLinks();
    }
    
}

function changeSize(direction) {
    var fontSizeInitial = parseInt(localStorage.getItem('fontSizeInitial')) || 0;

    if (direction == 'increase') {
        $('#increase-text').addClass('activeOptionAcessibility');
        setTimeout(function() {
        $('#increase-text').removeClass('activeOptionAcessibility');
        }, 100);
        localStorage.setItem('fontSizeInitial', fontSizeInitial + 1);
    } else {
        $('#decrease-text').addClass('activeOptionAcessibility');
        setTimeout(function() {
        $('#decrease-text').removeClass('activeOptionAcessibility');
        }, 100);
        localStorage.setItem('fontSizeInitial', fontSizeInitial - 1);
    }

    $("body, button, label, input, select, td, th, p, li, h1, h2, h3, h4, h5, h6").each(function(i, elem) {
        if (elem.tagName == 'svg' || elem.tagName == 'path' || elem.tagName == 'polyline' || elem.tagName == 'circle' || elem.tagName == 'square') {
            width = parseInt($(elem).css("width").replace('px'));

            if (direction == 'increase') {
                width = width + 1;
            } else {
                width = width - 1;
            }
            
            elem.style.setProperty("width", width + 'px', "important");

            height = parseInt($(elem).css("height").replace('px'));
            height = direction == 'increase' ? height + 1 : height - 1;
            elem.style.setProperty("height", height + 'px', "important");
        } else {
            fontSize = parseInt($(elem).css("font-size").replace('px'));
            
            if (direction == 'increase') {
                fontSize = fontSize + 1;
            } else {
                fontSize = fontSize - 1;
            }

            elem.style.setProperty("font-size", fontSize + 'px', "important");
        }
    });

}

function changeSizeInitial() {
    var fontSizeInitial = parseInt(localStorage.getItem('fontSizeInitial')) || 0;
    if (fontSizeInitial > 0) {
        for(i = 0; i < fontSizeInitial; i++){
            $("body, button, label, input, select, td, th, p, li, h1, h2, h3, h4, h5, h6").each(function(i, elem) {
                if (elem.tagName == 'svg' || elem.tagName == 'path' || elem.tagName == 'polyline' || elem.tagName == 'circle' || elem.tagName == 'square') {
                    width = parseInt($(elem).css("width").replace('px'));
        
                    width = width + 1;
                    
                    elem.style.setProperty("width", width + 'px', "important");
        
                    height = parseInt($(elem).css("height").replace('px'));

                    height = height + 1 ;
                    
                    elem.style.setProperty("height", height + 'px', "important");
                } else {
                    fontSize = parseInt($(elem).css("font-size").replace('px'));

                    fontSize = fontSize + 1;
        
                    elem.style.setProperty("font-size", fontSize + 'px', "important");
                }
            });
        }
    }else if (fontSizeInitial < 0 ){
        for(i = 0; i < (-fontSizeInitial); i++){
            $("body, button, label, input, select, td, th, p, li, h1, h2, h3, h4, h5, h6").each(function(i, elem) {
                if (elem.tagName == 'svg' || elem.tagName == 'path' || elem.tagName == 'polyline' || elem.tagName == 'circle' || elem.tagName == 'square') {
                    width = parseInt($(elem).css("width").replace('px'));
        
                    width = width - 1;
                    
                    elem.style.setProperty("width", width + 'px', "important");
        
                    height = parseInt($(elem).css("height").replace('px'));

                    height = height - 1 ;
                    
                    elem.style.setProperty("height", height + 'px', "important");
                } else {
                    fontSize = parseInt($(elem).css("font-size").replace('px'));
                    
                    fontSize = fontSize - 1;

                    elem.style.setProperty("font-size", fontSize + 'px', "important");
                }
            });
        }
    }else {
        localStorage.setItem('fontSizeInitial', 0);
    }
}

function enableReadingRuler() {
    $('.reading-ruler').addClass('reading-ruler-enabled');
    $('#readingRuler').addClass('activeOptionAcessibility');
    $('.lineStatusAcessibilityReadingRuler').addClass('activeLineStatusOptionAcessibility');
    localStorage.setItem('readingRuler_enabled', true);
}

function disableReadingRuler() {
    $('.reading-ruler').removeClass('reading-ruler-enabled');
    $('#readingRuler').removeClass('activeOptionAcessibility');
    $('.lineStatusAcessibilityReadingRuler').removeClass('activeLineStatusOptionAcessibility');
    localStorage.setItem('readingRuler_enabled', false);
}

function toggleReadingRuler() {

    var readingRulerEnabled = localStorage.getItem('readingRuler_enabled');

    if (readingRulerEnabled === 'false' || readingRulerEnabled === false) {
        enableReadingRuler();
    } else {
        disableReadingRuler();
    }
}

function loadReadingRuler() {

    var readingRulerEnabled = localStorage.getItem('readingRuler_enabled');

    if (readingRulerEnabled === 'true' || readingRulerEnabled === true) {
        enableReadingRuler();
    } else {
        disableReadingRuler();
    }
}

function toggleResetDefault() {
    localStorage.setItem('readingRuler_enabled', false);
    localStorage.setItem('highlightLinks_enabled', false);
    localStorage.setItem('grayscale_enabled', false);
    localStorage.setItem('contrast_enabled', false);
    localStorage.setItem('fontSizeInitial', 0);

    $('#resetDefault').addClass('activeOptionAcessibility');
    setTimeout(function() {
    $('#resetDefault').removeClass('activeOptionAcessibility');
    }, 100);
    
    location.reload();
}

function themeLoad() {

    var isContrastEnabled = localStorage.getItem('contrast_enabled');
    var isGrayscaleEnabled = localStorage.getItem('grayscale_enabled');
     
    if ( isContrastEnabled == "true" || isContrastEnabled == true && isGrayscaleEnabled == "false" || isGrayscaleEnabled == false ) {
        loadContrast();
    }else if(isGrayscaleEnabled == "true" || isGrayscaleEnabled == true && isContrastEnabled == "false" || isContrastEnabled == false) {
          loadGrayscale();
    }else {
        localStorage.setItem('contrast_enabled', false);
        localStorage.setItem('grayscale_enabled', false);
    }
}

function showMessage() {

    document.getElementById("msgEsquerda").style.display = "block";
}

function hideMessage() {

    document.getElementById("msgEsquerda").style.display = "none";
}

$(document).ready(function() {

    /* Increase Text */
    $("#increase-text").click(() => changeSize('increase'));

    /* Decrease Text */
    $("#decrease-text").click(() => changeSize('decrease'));

    /* Default */
    $("#normal-text").click(function() {
        var fontSize = 16;

        $(".main-content").css("font-size", fontSize + "px");
        $('body').removeClass("contrast-white");
        $('body').removeClass("contrast-black");
    });

    /* Contrast Black */
    $("#contrast-b").click(function() {
        toggleContrast();
    });

    /* Contrast Gray */
    $("#grayscale").click(function () {
        toggleGrayscale();
    });

    /* highlightLinks */
    $("#highlightLinks").click(function() {
        toggleHighlightLinks();
    });

    /* readingRuler */
    $("#readingRuler").click(function() {
        toggleReadingRuler();
    });

    /* resetDefault */
    $("#resetDefault").click(function() {
        toggleResetDefault();
    });

    loadHighlightLinks();
    changeSizeInitial();
    loadReadingRuler();
    themeLoad();

});

$(document).on('mousemove scroll', function(event) {
    if ($('.reading-ruler').hasClass('reading-ruler-enabled')) {
        var readingRuler = $('.reading-ruler');
        readingRuler.css({
            'top': (event.clientY + window.scrollY + 10)+ 'px',
            'left': 0,
        });
    }
});