/**
 * OnweerOnline Block Minimizer
 */

var _supportedBlocks = [
    'block_c0b988106b24e51f4c232e17b15c2209', //NL/BE - Forumposts
    'block_f81dc4aff89968a30dee7c8c592d53ad', //NL - Weerbericht & Kaart
    'block_4c1484675c2640b46ca4de1f61ebfd02', //NL/BE - Meldboek
    'block_622bd90daab73ceea503f98a0f8cfb29', //NL - Snelle melding
    'block_c27207a58e1b262a50e3aef6b3eee46a', //BE - Weerbericht & kaart
    'block_cce28f43692d7aac0d59436a2d6b5db5', //NL/BE - Online
];

var blockManager = {

    addMinimalizing: function(_html) {
        _html.find('.minimize').remove();

        _html.find('.block_layer h1').each(function() {
            var _this = $(this);
            var _parent = $(this).parent();
            var _blockID = _parent.attr('id');

            if(_supportedBlocks.indexOf(_blockID) > -1) {
                _this.append('<small class="minify-content"></small>');
            }

        });
    },

    handleMinimization: function(_html) {
        $(document).on('click.minifyBlock', '.minify-content', function() {
            var _this = $(this);
            var _parent = _this.parent().parent();

            var _contents = _parent.find('.block_content');
            var _blockID = _parent.attr('id');

            if(!_this.hasClass('minified')) {
                _contents.slideToggle();

                blockManager.addMinifiedState(_blockID);
                _this.addClass('minified');
            } else {
                _contents.slideToggle();

                blockManager.removeMinifiedState(_blockID);
                _this.removeClass('minified');
            }

        });
    },

    loadMinimization: function(_html) {
        if(Cookies.get('minifiedStates')) {
            var elements = Cookies.get('minifiedStates').split(',');
            $.each(elements, function(i, elem) {
                var _parent = _html.find('#'+elem);
                _parent.find('.block_content').hide();
                _parent.find('.minify-content').addClass('minified');
            });
        }
    },

    addMinifiedState: function(_blockID) {
        if(!Cookies.get('minifiedStates')) {
            var _states = [];
        } else {
            var _states = Cookies.get('minifiedStates').split(',');
        }

        _states.push(_blockID);
        Cookies.set('minifiedStates', _states.join(','), {expires: 365});
    },

    removeMinifiedState: function(_blockID) {
        if(!Cookies.get('minifiedStates')) {
            return
        } else {
            var _states = Cookies.get('minifiedStates').split(',');

            if(_states.length == 1) {
                Cookies.remove('minifiedStates');
            } else {
                //var _intOffset = _states.indexOf(_blockID);
                //_states = _states.splice(_intOffset, 1);

                Cookies.set('minifiedStates', Cookies.get('minifiedStates').replace(_blockID+',', '').replace(_blockID, ''), {expires: 365});
            }

        }
    },

    init: function() {
        var _html = $('html');

        this.addMinimalizing(_html);
        this.handleMinimization(_html);
        this.loadMinimization(_html);
    }

}

$(document).ready(function() {
    blockManager.init();
});
