/*
 *  Личные сообщения
 */
var Messages = new Object();

// текущее состояние (#inbox,#sent или #trash)
Messages.mode='';

// устанавливаем URL
Messages.setUrl = function (url){
    if(document.location.hash!='' && !url) url=document.location.hash;
    if(!url)
    {
        var url="#inbox";
    }
    Messages.mode=url;
    document.location.hash=Messages.mode;
}

// текущая страница
Messages.page=1;

// получение входящих сообщений
Messages.getInboxMessages = function (){
    $.getJSON("/execplugin/?plg=messages&plugFunc=getMessages", {mode:"inbox", page:Messages.page}, function(response){
        var html=TrimPath.processDOMTemplate ("inboxTpl", {messages:response['messages'], pages:response['pages']});
        $("#messages_list").html(html);
        var current=(Messages.page-1)*response['perpage']+parseInt(response['messages'].length);
        $("#messages_count").text(current +' / '+ response['total_messages']);
    });
}

// получение исходящих сообщений
Messages.getSentMessages = function (){
    $.getJSON("/execplugin/?plg=messages&plugFunc=getMessages", {mode:"sent", page:Messages.page}, function(response){
        var html=TrimPath.processDOMTemplate ("sentTpl", {messages:response['messages'], pages:response['pages']});
        $("#messages_list").html(html);
        $("#messages_count").text((Messages.page-1)*response['perpage']+response['messages'].length+' / '+ response['total_messages']);
    });
}

// получение непрочитанных сообщений
Messages.getUnreadMessages = function (){
    $.getJSON("/execplugin/?plg=messages&plugFunc=getMessages", {mode:"unread", page:Messages.page}, function(response){
        var html=TrimPath.processDOMTemplate ("inboxTpl", {messages:response['messages'], pages:response['pages']});
        $("#messages_list").html(html);
        var current=(Messages.page-1)*response['perpage']+parseInt(response['messages'].length);
        $("#messages_count").text(current +' / '+ response['total_messages']);
    });
}

// чтение входящего сообщения
Messages.viewInboxMessage = function (message_id){
    $.getJSON("/execplugin/?plg=messages&plugFunc=viewMessage", {mode:"inbox", id:message_id}, function(response){
        var html=TrimPath.processDOMTemplate ("messageReadTpl", {message:response.message});
        $("#message_flybox").html(html);
        // помещаем окно по высоте прокрутки
        if($(document).scrollTop())
        {
            $(".inReg").css("padding-top", $(document).scrollTop()-140);
        }
        // если больше нет непрочитанных сообщений - убираем иконку вверху страницы
        if(parseInt(response.unread)<=0) {
            $("#user_m").removeClass('icon').text('Мои личные сообщения');
        }
        // инициализируем TinyMCE
        userTinyMCEInit();
    });
}

// чтение исходящего сообщения
Messages.viewSentMessage = function (message_id){
    $.getJSON("/execplugin/?plg=messages&plugFunc=viewMessage", {mode:"sent", id:message_id}, function(response){
        var html=TrimPath.processDOMTemplate ("messageSendMoreTpl", {message:response.message});
        $("#message_flybox").html(html);
        // помещаем окно по высоте прокрутки
        if($(document).scrollTop())
        {
            $(".inReg").css("padding-top", $(document).scrollTop()-140);
        }
        // инициализируем TinyMCE
        userTinyMCEInit();
    });
}

// отправка нового сообщения
Messages.sendNewMessage = function (to){
    $.getJSON("/execplugin/?plg=registration&plugFunc=getUserById", {id:to}, function(user){
        var html=TrimPath.processDOMTemplate ("messageSendTpl", {user:user});
        if($("#message_flybox").length<1)
        {
            $('<div id="message_flybox"></div>').prependTo("body");
        }
        $("#message_flybox").html(html);
        // помещаем окно по высоте прокрутки
        if($(window.document).scrollTop())
            $(".inReg").css("padding-top", parseInt($(window.document).scrollTop()-50)+'px');
        // инициализируем TinyMCE
        userTinyMCEInit();
    });
}

// функция закрытия окна сообщения
Messages.close = function () {
    if(window.tinyMCE.activeEditor) {
        // удаляем визивик из этой textarea из-за бага: http://tinymce.moxiecode.com/punbb/viewtopic.php?pid=22977
        tinyMCE.activeEditor.destroy();
    }
    $("#messageBox").fadeOut();
};

// отправка сообщения
Messages.sendMessage = function (to, subject, body, parent){
    if($.trim(body.replace(/<p><\/p>/gi, '')).length==0) {
        $("#messages_form :submit").attr('disabled', '').val('Отправить');
        return false;
    }
    $.ajax({type: "POST",dataType :"json", url:"/execplugin/?plg=messages&plugFunc=sendMessage", data : {to:to, subject:subject, body:body, parent:parent}, success: function(code){
    if(parseInt(code)>0) {
        // если сообщение было отправлено не как ответ, а из раздела исходящих - перезагрузим список исходящих сообщений
        if(Messages.mode=="#sent")
        {
            Messages.getSentMessages();
        }
        Messages.close();
    } else {
        alert('Вы не можете отправлять сообщения этому пользователю.');
    }
    }});
}

// удаление сообщения
Messages.deleteMessages = function (messages){
    $.getJSON("/execplugin/?plg=messages&plugFunc=deleteMessages", {'messages[]':messages}, function(response){
    // загружаем список сообщений после удаления
    switch(Messages.mode)
    {
        case "#inbox":
            Messages.getInboxMessages();
        break;

        case "#sent":
            Messages.getSentMessages();
        break;
    }
    });
}

Messages.allowPolling=false;

// проверка новых сообщений
Messages.checkNew = function (){
    $.getJSON("/execplugin/?plg=messages&plugFunc=checkNewMessages", null, function(response){
        if(parseInt(response['code'])==1)
        {
            ringobox("/img/new_mess.gif", "Новое сообщение", '/user/messages/#inbox');
            // если мы находимся в списке входящих сообщений - обновим список
            if(Messages.mode=="#inbox")
            {
                Messages.getInboxMessages();
            }
            else
            {
                // добавим иконку нового сообщения в шапку сайта
                $("#user_m").addClass("icon").text("Новые сообщения");
            }
        }
    });

}
