Your IP : 18.219.40.177
/**
* Message templates
* @param {object} window global object
* @param {function} $ jQuery library
* @param {object} EventMgr EventMgr library
* @param {object} App Application
* @return {object} api
*/
App.MessageTempl = function(window, $, EventMgr, App) {
'use strict';
var msgTemplLink = '.b-msg-templ__link';
function $content() {
return $('#main-wrapper');
}
function $body() {
return $('body');
}
function showFullMsg() {
var ind = this.getAttribute('data-ind');
$('.b-msg-templ__title-content-item_ind_' + ind).show();
}
function hideFullMsg() {
var ind = this.getAttribute('data-ind');
$('.b-msg-templ__title-content-item_ind_' + ind).hide();
}
function frRevstring(str) {
var retStr = '';
for (var i = str.length - 1; i > -1; i--) { retStr += str.substr(i, 1); }
return retStr;
}
function getMsgTempl(e) {
e.preventDefault();
var id = this.getAttribute('data-id'),
msgTempl = $('#b-msg-templ-' + id).find('.b-msg-templ'),
tabId = this.getAttribute('data-tabid'),
textarea = App.Dom.byId(id);
var str = textarea.value,
pos = (str.length === 0) ? 0 : App.u.getCaretPosition(textarea),
start = str.lastIndexOf('\n', pos - 1) + 1,
s = str.slice(start, pos),
len = s.length;
s = frRevstring(s);
var sm = s.match(/(.*?)[\.\?\!] */);
s = frRevstring((!sm) ? s : sm[1]);
s = s.replace(/^ */, '');
if (msgTempl.length > 0) {
msgTempl.remove();
} else {
var param = $('#frm-' + tabId).serializeObject();
/* jslint camelcase: false */
param.source_func = param.func;
/* jslint camelcase: true */
param.func = 'anstempl.get';
/* jslint camelcase: false */
param.source_string = s;
/* jslint camelcase: true */
EventMgr.trigger('ajaxRequest', {
param: param,
invar: {
id: id
},
type: 'get',
outtype: 'json',
trfunc: 'msgTemplResp'
});
}
}
function closeMsgTemlList(e) {
var $msgTemlList = $('.tab-content_st_active .b-msg-templ');
$msgTemlList.remove();
$body().off('click.msgTempl', closeMsgTemlList);
}
function renderMsgTemplList(e, data) {
var templList = data.savedmessage,
id = data.id;
var html = templates.msgTemplList({ templList: templList, id: id });
$('#b-msg-templ-' + id).append(html);
setTimeout(function() {
$body().on('click.msgTempl', closeMsgTemlList);
}, 1);
}
function insertMessage(e) {
e.preventDefault();
var ind = this.getAttribute('data-ind'),
id = this.getAttribute('data-id'),
textMsg = $('.b-msg-templ__title-content-item_ind_' + ind).text(),
targetId = $(this).closest('.b-msg-templ').attr('data-target');
var elem = App.Dom.byId(targetId);
if (elem) {
elem.focus();
App.u.insertStringAfterCaret(elem, textMsg, true);
EventMgr.trigger('ajaxRequest', {
param: {
func: 'anstempl.stat',
id: id
},
type: 'get',
outtype: 'json',
trfunc: 'DoNothing'
});
}
var msgTempl = $('#b-msg-templ-' + targetId).find('.b-msg-templ');
msgTempl.remove();
$body().off('click.msgTempl', closeMsgTemlList);
}
function init() {
EventMgr.on($content(), msgTemplLink, 'click', getMsgTempl);
EventMgr.bind('msgTemplResp', renderMsgTemplList);
EventMgr.on($content(), '.b-msg-templ__title-list-item', 'mouseenter',
showFullMsg);
EventMgr.on($content(), '.b-msg-templ__title-list-item', 'mouseleave',
hideFullMsg);
EventMgr.on($content(), '.b-msg-templ__title-list-item', 'click',
insertMessage);
}
var api = {
init: init
};
return api;
} (window, $, EventMgr, App);