/**
* Author - koder_alex
* ISQ - 669906617
* VK - https://vk.com/koder_alex
* It is forbidden to give, sell, modify.
*/
function des2num(int, array) {var cases = [2, 0, 1, 1, 1, 2];return int + array[ (int % 100 > 4 && int % 100 < 20) ? 2 : cases[Math.min(int % 10, 5)] ]}
function isObject(e){return"object" === typeof e}
var request = {update: 5E3, limit: 10};
var node = $('#messages');
if(node.length == 1)
{
request.limit = parseInt(node.attr('data-limit'));
request.update = parseInt(node.attr('data-update'));
}
function messageBox(type, text)
{
$('#service_msg_box').remove();
var node = $('.vk_mail');
node.prepend('<div id="service_msg_box" class="service_msg_box"><div class="service_msg service_msg_' + type + '">' + text + '</div></div>');
setTimeout(function(){
node = $('#service_msg_box');
node.slideUp(1e3, function(e){
node.remove();
})
}, 2e3)
return node;
}
MessagesActions = function()
{
return {
BoxClose: function(d)
{
d = $(d.parentNode);
d.slideUp(400, function(e){
d.remove();
})
},
actionsOpened: function(t, e)
{
cancelEvent(e);
$(t.parentNode).toggleClass('head_actions_opened');
},
onMessageClick:function(e, t)
{
if("A"==e.target.tagName || "VIDEO"==e.target.tagName)
return true;
var n = $('.messagesActions').css('width', t.parentNode.clientWidth + "px");
if(!n.hasClass('resizePanel'))
n.addClass('resizePanel vk_messages_actions_visible');
n = $('.vk_mail');
if(!n.hasClass('vk_messages_actions_visible'))
n.addClass('vk_messages_actions_visible');
$(t).toggleClass('mi_selected');
var count = $('.mi_selected').length;
if(count >= 1)
$('.messagesActions__row_counter').text('Выбрано ' + des2num(count, [' сообщение', ' сообщения', ' сообщений']));
else
this.close();
},
close: function()
{
var n = $('.vk_mail');
if(n.hasClass('vk_messages_actions_visible'))
{
n.removeClass('vk_messages_actions_visible');
n = $('.mi_selected');
n.removeClass('mi_selected');
}
return false;
},
remove: function(peer_id)
{
var n = $('.vk_mail'), data = [];
if(n.hasClass('vk_messages_actions_visible'))
{
n = $('.mi_selected');
for (var i = 0; i < n.length; i++)
data.push($(n[i]).attr('data-id'));
$.post('/mail/?act=dataSend&func=remove', {im_ajax: true, peer: peer_id, dataID: data.join(',')}, function(){
window.location = '/mail/?act=show&peer=' + peer_id;
});
}
},
toggleImportant: function(peer_id)
{
var n = $('.vk_mail'), data = [];
if(n.hasClass('vk_messages_actions_visible'))
{
n = $('.mi_selected');
for (var i = 0; i < n.length; i++)
{
var s = $(n[i]);
data.push(s.attr('data-id'));
s.toggleClass('msg_item_important');
}
this.close();
$.post('/mail/?act=dataSend&func=important', {im_ajax: true, peer: peer_id, dataID: data.join(',')});
}
},
reply: function(t, peer_id)
{
t = $(t);
var n = $('.vk_mail'), data = [], text = t.text();
if(n.hasClass('vk_messages_actions_visible'))
{
n = $('.mi_selected');
for (var i = 0; i < n.length; i++)
data.push($(n[i]).attr('data-id'));
t.html('<span class="button_locked"><b class="button_locked_label">'+text+'</b></span>');
setTimeout(function(){
MessagesActions.close();
t.html(text);
$.post('/mail/?act=dataSend&func=reply', {im_ajax: true, peer: peer_id, dataID: data.join(',')}, function(){
window.location = '/mail/?act=show&peer=' + peer_id;
});
}, 500);
}
},
reset: function(t, peer_id, type = false)
{
$('#attachments').slideUp(400, function(e){
$(this).remove();
});
$('.cp_attach_btn_sel').removeClass('cp_attach_btn_sel');
$.post('/mail/?act=dataSend&func=reset', {im_ajax: true, peer: peer_id}, function(data){
if(isObject(data) === false)
{
window.location = '/mail/?act=show&peer=' + peer_id;
return true;
}
if(data.location)
window.location = data.location;
}, 'json');
}
}
}(), mail = function(){
var interval = (new Date).getTime() + request.update;
function generateMess(node, data, deleteNode = true)
{
var tmpNode = '<div class="msg_item' + data.mess.mi_unread + '" data-id="' + data.mess.id + '" onclick="return MessagesActions.onMessageClick(event, this);">' +
'<div class="mi_iwrap"><a href="/id' + data.user.id_user + '">' + data.user.avatar + '</a></div>' +
'<div class="mi_cont"><div class="mi_head">' +
'<a class="mi_date" href="/mail?act=msg&id=' + data.mess.id + '">' + data.mess.time + '</a>' +
'<a class="mi_author" href="/id' + data.user.id_user + '">' + data.user.group + data.user.nick + data.user.medal + data.user.online + '</a>' +
'</div><div class="mi_body"><div class="mi_text">' + data.mess.msg + '</div>' +
(data.mess.attachments === undefined ? '' : data.mess.attachments) +
'</div></div></div>';
tmpNode = $(tmpNode).hide().fadeIn(400);
node.first().before(tmpNode);
if(deleteNode === true)
{
if(request.limit <= node.length)
node.last().fadeOut(400, function(){
$(this).remove();
});
}
return tmpNode;
}
return {
keyup: function(e,t)
{
var a=$(e).val()||"";
(a.length > 0) && (this.myTyping(t))
},
myTyping:function(peer_id)
{
var date = (new Date).getTime();
if(interval <= date)
{
interval = date + 2e3;
$.post('/mail/?act=dataSend&func=myTyping', {im_ajax: true, peer: peer_id});
return false
}
},
send: function(t, peer_id)
{
var config = $('#data-text'), attachments = $('#attachments'), text = $('textarea'), n = $('.vk_mail');
var data = {min: config.attr('data-min'), max: config.attr('data-max'), textLength: text.val().length};
if(attachments.length == 0 && data.textLength < data.min || data.textLength > data.max)
{
messageBox('warning', 'Сообщение должно быть длиной не менее ' + des2num(data.min, ['-го', '-х', '-ти']) + ' и не более ' + des2num(data.max, ['-го', '-х', '-ти']) + ' символов.</div>');
return false;
}
t = $(t);
t.before(ce('button', {className: 'button', id: 'nowrite_submit', innerHTML:'<span class="button_locked"><b class="button_locked_label">Отправить</b></span>', disabled:"disabled"}));
t.hide();
var node = $('#messages').children();
$.post('/mail/?act=dataSend&func=dialog', {im_ajax: true, to: peer_id, from: 'dialog', message: text.val()}, function(data,textStatus, jqXHR){
$('#nowrite_submit').remove();
t.show();
if(!data.mail)
messageBox('error', 'Неизвестная ошибка.');
if(textStatus != 'success' || isObject(data) === false)
{
messageBox('error', 'Неизвестная ошибка.');
return false;
}
if(data.msg_box && data.type)
messageBox(data.type, data.msg_box);
if('ok' == data.type)
{
text.val('');
attachments.length >= 1 && (attachments.slideUp(400, function(e){
$(this).remove();
$('.cp_attach_btn_sel').removeClass('cp_attach_btn_sel');
}));
generateMess(node, data);
}
}, 'json');
return false;
},
updateMail: function(peer_id)
{
$.post('/mail/?act=dataSend&func=update', {im_ajax: true, peer: peer_id}, function(data){
if(isObject(data) === false)
return false;
if(data.typing)
$('.near_btn').addClass('di_typing_now di_typing_animated');
else
$('.near_btn').removeClass('di_typing_now di_typing_animated');
if(data.read)
$('.mi_unread').removeClass('mi_unread');
if(data.message.length > 0)
{
var node = $('#messages').children();
for (var i = 0; i < data.message.length; i++)
generateMess(node, data.message[i], false);
$('#messages').children().each(function(key, item){
if(request.limit <= key)
$(item).fadeOut(400, function(){
$(this).remove();
});
});
node = $('#show_msg_box');
node.length > 0 &&(node.remove());
}
}, 'json');
}
}
}();