var authBar = (function() {

    var authBarDiv = null;

    function init() {
        authBarDiv = $id('auth-bar-content');
        initBalance();
    }

    function update() {
        if (userInfo && userInfo.sid && userInfo.sid != '0') {
            renderAuth();
        }
        else {
            renderUnauth();
        }
    }

    function initBalance() {
        var euroSwitcher = $id('euro-switcher', authBarDiv);
        var euroAmount = $id('euro-amount', authBarDiv);

        if (!euroSwitcher || !euroAmount)
            return;

        var euroImgSwitcher = document.createElement('IMG');
        euroImgSwitcher.style.cursor = 'pointer';

        var state = balanceChecker.getState();

        if (state == 'show') {
            euroImgSwitcher.src = '/i/checkbox_balance_shown.gif';
            euroAmount.style.display = 'inline';
        }
        else {
            euroImgSwitcher.src = '/i/checkbox_balance_hidden.gif';
            euroAmount.style.display = 'none';
        }

        euroSwitcher.parentNode.replaceChild(euroImgSwitcher, euroSwitcher);
        euroImgSwitcher.id = 'euro-switcher';

        euroImgSwitcher.onclick = function() {
            var state = balanceChecker.getState();
            if (state == 'hide') {
                euroImgSwitcher.src = '/i/checkbox_balance_shown.gif';
                euroAmount.style.display = 'inline';
                balanceChecker.setState('show');
            }
            else {
                euroImgSwitcher.src = '/i/checkbox_balance_hidden.gif';
                euroAmount.style.display = 'none';
                balanceChecker.setState('hide');
            }
        };
    }

    function renderBalance(state) {
        var euroSpan = $id('euro-amount', authBarDiv);
        if (state === 'hidden') {
            euroSpan.style.display = 'none';
        }
        else {
            euroSpan.style.display = 'inline';
        }
    }

    function setBalanceEur(amount) {
        var euroSpan = $id('euro-amount', authBarDiv);
        if (!euroSpan)
            return;

        if (euroSpan.innerHTML.indexOf('.') != -1) {
            euroSpan.innerHTML = amount.toFixed(2);
        }
        else {
            euroSpan.innerHTML = parseInt(amount).toString();
        }
    }

    function setBalanceFun(amount) {
        var funSpan = $id('fun-amount', authBarDiv);
        if (!funSpan)
            return;

        if (funSpan.innerHTML.indexOf('.') != -1) {
            funSpan.innerHTML = amount.toFixed(2);
        }
        else {
            funSpan.innerHTML = parseInt(amount).toString();
        }
    }

    function renderUnauth() {
        var unauthHtml = [
            '<form name="login" action="/signin/" method="post">',
            '<input type="hidden" name="f_url" value="' + window.location.pathname + '"> ',
            'Login: <input type="text" name="f_login" value=""> ',
            'Password: <input type="password" name="f_passwd" value=""> ',
            '<input type="image" class="image_submit" src="/i/chip_enter.gif"><a href="/signin/" onclick="document.forms[\'login\'].submit(); return false;">Enter</a>',
            '<br>',
            '<a href="/signup/">Registration</a> ',
            '<a href="/reminder/">Forgot&nbsp;password?</a>',
            '</form>'
        ].join('');
        authBarDiv.innerHTML = unauthHtml;
    }

    function renderAuth() {
        setBalanceEur(userInfo.account.eur);
        setBalanceFun(userInfo.account.fun);
    }

    return {
        'init': init,
        'update': update
    };

})();
