/**
 * Ensemble des fonctions JavaScript appelées sur le bandeau header indiquant le site bêta.
 */
function BetaHeader() {

    /* 
     * Ajoute la gestion du bandeau site bêta
     */
    this.initialize = function() {
        orion.event.listenToUsingSelector("click", '*[role="beta-header"] > i', orion.betaHeader.hideBetaHeaderContent);

        // Déterminer si le bêta header sera affiché ou non
        var boxHiddenInLocalStorage = orion.betaHeader.isBoxHiddenInLocalStorage();
        if (boxHiddenInLocalStorage) {
            var boxElem = $("*[role='beta-header']");
            boxElem.hide();
        }    
    };

    /**
     * Masque le contenu du bandeau site bêta
     */
    this.hideBetaHeaderContent = function() {
        var boxElem = $(this).parents("*[role='beta-header']");
        boxElem.hide();
        // On enregistre le fait que le bandeau a été fermé
        orion.betaHeader.saveBetaHeaderState(true);
    };

    /**
     * Enregistre le fait que le bandeau est masqué.
     */
    this.saveBetaHeaderState = function(value) {
        var currentStorageKey = orion.betaHeader.getLocalStorageKey();
        orion.storeInLocalStorage(currentStorageKey, value);

    };

    /**
     * Récupère la clef permettant de stocker/récupérer l'état (affiché/masqué) du bandeau.
     * 
     * @returns {String} la clef de stockage permettant d'identifier le bandeau.
     */
    this.getLocalStorageKey = function() {
        var currentStorageKey = "beta_header_hidden";
        return currentStorageKey;
    };

    /**
     * Récupère l'état, affiché ou masqué du bandeau.
     * 
     * @return true si le boxbody est masqué.
     */
    this.isBoxHiddenInLocalStorage = function() {
        var currentStorageKey = orion.betaHeader.getLocalStorageKey();
        var isHidden = orion.getFromLocalStorage(currentStorageKey);

        // Le stockage dans le local n'est pas fait au format booléen mais au format string.
        if (isHidden === "true") {
            return true;
        } else if (isHidden === "false") {
            return false;
        }

        return null;
    };

}

orion.betaHeader = new BetaHeader();

$(document).ready(function() {
    orion.betaHeader.initialize();
});


