/**
 * Global namespace
 */
Umnitsa = function() {

    var _interfaces = new Array();

    var sessionId = '';
    if (window.location.toString().match(/SESS_ID=(\d+)/)) {
        sessionId = RegExp.$1;
    }


    return {
        /** @type {String} url для ajax запроса */
        AJAX_URI : '/json/',

        /** @type {String} id сессии из командной строки */
        SESS_ID : sessionId,

        /** @type {Number} прозрачность подложки */
        OVERLAY_OPACITY : .5,

        /** @type {Array} массив интерфейсов для иницализации */
        interfaces : _interfaces,

        /** @type {Boolean} запретить фэйд-эффект */
        disableFade : ((jQuery.browser.msie) && (jQuery.browser.version < 9))
    }
}();




/**
 * Выполняет Ajax запрос с JSON-ответом
 * @param {Object} data Данные
 * @param {Function} handler Обработчик
 */
Umnitsa.getJSON = function(data, handler) {
    if (Umnitsa.SESS_ID)
        data['SESS_ID'] = Umnitsa.SESS_ID;
    $.post(Umnitsa.AJAX_URI, data, handler, 'json');
};

Umnitsa.initAjax = function() {
    var $body = $(document.body);
    function waitingState(state) {
        if (state) {
            $body.addClass('waiting');
        } else {
            $body.removeClass('waiting');
        }
    }

    var _ajaxCounter = 0;

    $(document)
        .ajaxStart(function() {
            _ajaxCounter++;
            waitingState(true);
        })
        .ajaxStop(function() {
            _ajaxCounter--;
            if (_ajaxCounter == 0) {
                waitingState(false);
            }
        })
        .ajaxError(function(event, XMLHttpRequest, ajaxOptions, thrownError) {
            alert('Произошла ошибка при загрузки данных. Поробуйте перезагрузить страницу.');
            _ajaxCounter = 0;
            waitingState(false);
        });
};



/**
 * Вывод оверлей-слоя
 */
Umnitsa.Overlay = function() {
    var $o;
    function draw() {
        $o = $(document.createElement('div'))
            .css({
                position : 'fixed',
                zIndex : 200,
                opacity : Umnitsa.OVERLAY_OPACITY,
                background : '#f7e2f5',
                left : 0,
                top : 0,
                width : '100%',
                height : '100%'
            })
            .hide()
            .appendTo(document.body);
    }
    function fixIE() {
        $o.css({
            position : 'absolute',
            height : $(document.body).height()
        });
    }

    return {
        show : function(clickHandler) {

            if (!$o) {
                draw();
            }
            $o.show();
            if ($.isFunction(clickHandler)) {
                $o.bind('click', clickHandler);
            }
            if (Browser.isIE6) {
                fixIE();
            }
        },
        hide : function() {
            if ($o) {
                $o.unbind('click').hide();
            }

        },
        _$ : $o
    }
}();


Umnitsa.Loader = function() {
    var $o;
    function draw() {
        $o = $(document.createElement('div'))
            .addClass('loader-logo')
            .css({
                opacity : .75
            })
            .hide()
            .appendTo(document.body);
    }
    return {
        show : function(element) {
            if (!$o) {
                draw();
            }
            var left = 0, top = 0;
            if (element) {
                var $el = $(element);
                var offset = $el.offset();
                top = offset.top;
                left = offset.left + $el.outerWidth() / 2;
            } else {
                left = document.documentElement.scrollLeft + document.documentElement.clientWidth / 2;
                top = document.documentElement.scrollTop + document.documentElement.clientHeight / 2;
            }

            $o.css({
                left : left,
                top : top
            }).show();
        },
        hide : function() {
            $o.hide();

        },
        _$ : $o
    }
}();


Umnitsa.showAuthForm = function(message) {
    var authForm = document.getElementById('auth-form');
    var html = authForm.innerHTML;
    if (message) {
        html = '<div class="text"><p>' + message + '</p></div>' + html;
    }
    Umnitsa.Popup.showHTML({
        html : html,
        css : 'ball',
        width : 300
    });
    Umnitsa.Popup._$.find('.buy-btn').click(function() {
        Umnitsa.Interface.submitForm(this);
    });
}

