/* @ >>>> Для всплывающих сообщений */
Lib.PopupMsg ={
    isInit:false,

    init: function(){
        if(!Lib.PopupMsg.isInit){
            Lib.PopupMsg.isInit = true;
            
            Lib.PopupMsg.Html = '<div class="popup-box-msg popup-box-message" style="display:none"><div class="box-shadow" style="display:none"></div><div class="popup-info-msg"><div class="popup-info-msg_i"><div class="popup-info-msg-body clearfix"><div class="msg-icon"><span></span></div><div class="msg-content"><div class="msg-title"></div><div class="msg-message"></div></div><div class="popup-info-msg-foot"><input type="button" id="msg-close" value="закрыть" /></div></div></div></div></div>';
            $("body").append(Lib.PopupMsg.Html);
            Lib.PopupMsg.Box = $(".popup-box-message");
            Lib.PopupMsg.Border = $(".popup-info-msg");
            Lib.PopupMsg.Shadow = $(".box-shadow",Lib.PopupMsg.Box).bind('click', function() { Lib.PopupMsg.Hide() });
            Lib.PopupMsg.Content = $(".popup-info-msg_i",Lib.PopupMsg.Box);
            Lib.PopupMsg.Stack=new Array();
            Lib.PopupMsg.Opened=false;
            
            $("#msg-close",Lib.PopupMsg.Box).bind('click', function() { Lib.PopupMsg.Hide() });
        }
    },


    Show:function(noClose){

        Lib.PopupMsg.init();
        //popupMsgBox.addClass("popup-box_loading").show();
        Lib.PopupMsg.Opened=true;
        Lib.PopupMsg.Box.show();
        Lib.PopupMsg.Shadow.css({
            "width":$(document).width(),
            "height":$(document).height(),
            "display":"block",
            "opacity":0
        })
        .animate({ opacity: 0.5 });
    },
    Hide:function(){
        Lib.PopupMsg.init();
        // если есть еще не показанные сообщения, то показать верхнее
        // иначе закрыть окно
        if (!Lib.PopupMsg.CheckStack(true)) {
            Lib.PopupMsg.Shadow.animate({ opacity: 0 });
            Lib.PopupMsg.Box.hide();
            Lib.PopupMsg.Opened=false;
        }
    },

    SetMessage:function (msg) {
        Lib.PopupMsg.init();
        Lib.PopupMsg.Border.attr('class','popup-info-msg');
        switch (msg.type) {
            case 'message': Lib.PopupMsg.Border.addClass('popup-info-msg-message'); break;
            case 'error': Lib.PopupMsg.Border.addClass('popup-info-msg-error'); break;
        }
        $('.msg-title',Lib.PopupMsg.Box).html(msg.message);
        $('.msg-message',Lib.PopupMsg.Box).html(msg.description);
        if (msg.icon=='') { msg.icon='empty'; }
        $('.msg-icon span',Lib.PopupMsg.Box).attr('class',msg.icon);
        if (msg.noClose) {
            // открепить события закрытия окна
            $("#msg-close, .box-shadow",Lib.PopupMsg.Box).unbind('click');
            $('.popup-info-msg-foot',Lib.PopupMsg.Box).hide();
        }
    },

    AddMessages:function (msgArray) {
        Lib.PopupMsg.init();
        // пробегаем по массиву и выбираем не игноренные сообщения
        // их вносим в стэк показа
        for (var i=0;i<msgArray.length;i++) {
            if (!msgArray[i].ignore) {
                Lib.PopupMsg.Stack.push(msgArray[i]);
            }
        }
        // если стэк не пустой и окно закрыто, то надо показать сообшение
        if (!Lib.PopupMsg.Opened) {
            Lib.PopupMsg.CheckStack();
        }
    },


     AddMessage:function(msg) {
         Lib.PopupMsg.init();
        // если не игноренное сообщение, то добавляем
        if (!msg.ignore) {
            Lib.PopupMsg.Stack.push(msg);
        }
        // если стэк не пустой и окно закрыто, то надо показать сообшение
        if (!Lib.PopupMsg.Opened) {
            Lib.PopupMsg.CheckStack();
        }
    },

    CheckStack:function(showNew) {
        Lib.PopupMsg.init();
        var msg=Lib.PopupMsg.Stack.shift();
        var ok=false;
        if (msg) {
            if (!Lib.PopupMsg.Opened || showNew) {
                Lib.PopupMsg.SetMessage(msg);
            }
            if (!Lib.PopupMsg.Opened) {
                Lib.PopupMsg.Show();
            }
            ok=true;
        }
        return ok;
    }


}

