module.exports = function (bt) {
    bt.setDefaultView('controls', 'default');

    bt.match('controls*', function (ctx) {
        var content = [];
        ctx.enableAutoInit();

        var arrows = ctx.getParam('arrows') || false;
        var zoom = ctx.getParam('zoom') || false;
        var footnotes = ctx.getParam('footnotes') || false;
        var pages = ctx.getParam('pages') || false;

        ctx.setInitOption('zoom', zoom);
        ctx.setInitOption('footnotes', footnotes);
        ctx.setInitOption('pages', pages);
        ctx.setState('hidden');

        if (arrows) {
            ctx.setInitOption('arrows', arrows);

            content.push([
                {
                    elem: 'arrow-left',
                    disabled: true
                },
                {
                    elem: 'arrow-right'
                }
            ]);
        }

        if (zoom || footnotes || pages) {

            content.push({
                elem: 'menu',
                zoom: zoom,
                footnotes: footnotes,
                pages: pages
            });
        }

        ctx.setContent(content);
    });

    bt.match('controls*__menu', function (ctx) {
        ctx.setState('state', 'closed');

        ctx.setContent([
            {
                elem: 'trigger'
            },
            {
                elem: 'buttons',
                zoom: ctx.getParam('zoom'),
                footnotes: ctx.getParam('footnotes'),
                pages: ctx.getParam('pages')
            }
        ]);
    });

    bt.match(['controls*__arrow-left', 'controls*__arrow-right'], function (ctx) {
        if (ctx.getParam('disabled')) {
            ctx.setState('disabled');
        }
        ctx.setContent({
            elem: 'arrow-inner'
        });
    });

    bt.match('controls*__buttons', function (ctx) {
        var content = [];
        var baseHeight = 42;
        var items = 0;

        if (ctx.getParam('zoom')) {
            items += 2;

            content.push({
                elem: 'plus'
            }, {
                elem: 'minus'
            });
        }
        if (ctx.getParam('footnotes')) {
            items += 1;

            content.push({
                elem: 'footnotes',
                footnotes: ctx.getParam('footnotes')
            });
        }

        if (ctx.getParam('pages')) {
            items += 1;

            content.push({
                elem: 'pages',
                pages: ctx.getParam('pages')
            });
        }

        ctx.setAttr('style', 'height: ' + baseHeight * items + 'px');

        ctx.setContent(content);
    });

    bt.match('controls*__footnotes', function (ctx) {
        ctx.setState('mode', ctx.getParam('footnotes') || 'appendix');
        ctx.setContent([{
                elem: 'footnotes-anchor'
            }, {
                elem: 'footnotes-footnote'
            }
        ]);
    });
    bt.match('controls*__footnotes-anchor', function (ctx) {
        ctx.setTag('span');
        ctx.setContent('x');
    });
    bt.match('controls*__footnotes-footnote', function (ctx) {
        ctx.setTag('span');
        ctx.setContent('[x]');
    });

    bt.match('controls*__pages', function (ctx) {
        ctx.setState('mode', ctx.getParam('pages') || 'auto');
        ctx.setContent([{
                elem: 'pages-one'
            }, {
                elem: 'pages-two'
            }
        ]);
    });
};
