NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
/** Адаптация проекта под Maxthon: Amilman (http://joyreactor.cc/user/Amilman) Adaptation of the project under the Maxthon: Amilman **/ // ==UserScript== // @name Joyreactor advanced script for Maxthon // @namespace joyreactor.cc // @description comment tree collapse, remove/hide posts/comments by username/tag, remove share buttons and more // @description http://joyreactor.cc/tag/jras // @include *reactor.cc* // @include *joyreactor.cc* // @require http://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js // @require https://code.jquery.com/ui/1.11.4/jquery-ui.min.js // @version 1.3.18 // @author AntiUser (http://joyreactor.cc/user/AntiUser) // @grant GM_getValue // @grant GM_setValue // @grant GM_listValues // @grant GM_deleteValue // @grant GM_xmlhttpRequest // ==/UserScript== /* RELEASE NOTES 2.3.18 + Диалог настроек закрывается при нажатии "сохранить" 2.3.17 + опция "Убирать цветовую отметку донатера" в тултипах [false] + опция при каком количестве медальки скрывать [60] (0 - показывать все) * опция сколько показывать, если скрывать [40] * добавлены кнопки в GUI настроек - Отправить мне персональное сообщение - Удалить все сохраненные данные - Настройки по умолчанию * поправлены медальки в тултипе + дерево комментариев теперь строится также и в старом дизайне при разворачивании коментов в ленте + для комментариев маленькая кнопка collapseToParent при отсутствии большой collapseNode рисуется выше * поправлена высота ника в тултипе * мелкие исправления 1.3.6 + сворачивание комментариев наверх к паренту * не блокировался юзер в коментариях при раскрытии их в ленте в новом дизайне 1.3.2 + отправка сообщения пользователю из tooltip'а + возможность ограничить количество сразу выводимых в tooltip'е медалек + плавающая верхняя панель в новой дизайне + автоматическая отметка коментариев как прочитанных при сворачивании ветки + настройки сохраняются для каждого пользователя реактора отдельно + добавлены опции для настройки работы скрипта - создавать ли дерево коментариев [true] - дерево коментариев только для полного поста (в ленте при раскрытии не будет создаваться) [false] - когда ветка коментариев сворачивается все дочерние коменты помечаются прочитанными [true] - загружать ли данные пользователя для Tooltip'а [true] - сколько медалек показывать при загрузке [40] (0 - все) - зафиксировать верхнюю панель наверху окна (только новый дизайн) [true] - скрывать зафиксированную верхнюю панель (только новый дизайн) [true] - показывать Tooltip'ы в ленте [true] - показывать Tooltip'ы в коментариях [true] - показывать Tooltip'ы на странице ПМ [true] - показывать Tooltip'ы на странице Люди [true] - показывать Tooltip'ы в правом баре для юзеров топа [true] - показывать Tooltip'ы в правом баре для аватарок [true] * мелкие исправления 1.2.3 - некоторый фунционал был удален Если вы обнаружили его недостачу и он вам нужен - пишите ПМ 1.2.2 * добавиил tooltip'ы на: - страница личных сообщений - страница люди - топы в правой колонке - на авах в правой колонке * мелкие исправления 1.2.0 + просмотр информации по пользователю при наведении мыши на его ник + возможность добавить в друзья, заблокировать пользователя из tooltip'а * мелкие исправления 1.1.3 * в хроме на новом дизайне не строилось дерево коментариев при раскрытии их в ленте * по той же причине не блокировались коментарии пользователей 1.1.0 + GUI для настройки JRAS * не блокировались теги на новом дизайне 1.0.6 * в список заблокированных тегов, котрый выводится при блокировке поста могло попасть содержимое поста, а не только теги 1.0.5 * в случае нахождения блокированного юзера в коментах, мог быть заблокирован пост 1.0.2 * Не работал в хроме из-за неверного определения адреса документа 1.0.0 + release TODO: Больше инфы в тултипе юзеров Имаджи в коментах */ (function(){ 'use strict'; console.log(' ================ start JRAS'); var curLng = initLng(); var isUserLogon = $('li.login.lastitem a').is('#logout'); var currentUser = isUserLogon ? $.trim($('li.login a#settings').text()) : 'Anonymous'; // console.log('isUserLogon - ' + isUserLogon + ' ::: userName - ' + currentUser); var userOptions = initOptions(); userOptions.loadUserData(); var colorScheme = { scheme: getColorScheme(), // light or dark isLight: function(){ return this.scheme == 'light' } }; var currentPage = unsafeWindow.location.href; var isNewDesign = isNewVersion(currentPage); addNewCSSClasses(); makePropElements(); var BlockUsersAsFindStr = 'a:contains(' + userOptions.data.BlockUsers.join('), a:contains(') + ')'; removeElementsByClass('a', ['share_vk', 'share_fb', 'share_twitter', 'share_mail']); userRemove(userOptions.data.BlockUsers); tagRemove(userOptions.data.BlockTags, true); makeAllTooltip(); procTopbar(); if (pageIs('post')){ correctImageInComment(); if(userOptions.val('makeTreeComments')){ makeTreeComments(); } } subscribeShowComment(); console.log(' ================ end JRAS'); //===================================================================================================== function initOptions(){ var retVal = { data: { currentLng: { dt: null, guiDesc: function(){ return curLng.getVal('JRAS_GUI_SELECTLANGUAGE') } }, makeTreeComments: { dt: null, guiDesc: function(){ return curLng.getVal('JRAS_GUI_MAKETREECOMMENTS') } }, treeCommentsOnlyFullPost: { dt: null, guiDesc: function(){ return curLng.getVal('JRAS_GUI_TREECOMMENTSONLYFULLPOST') } }, whenCollapseMakeRead: { dt: null, guiDesc: function(){ return curLng.getVal('JRAS_GUI_WHENCOLLAPSEMAKEREAD') } }, isToBeLoadingUserData: { dt: null, guiDesc: function(){ return curLng.getVal('JRAS_GUI_ISTOBELOADINGUSERDATA') } }, hideUserAwardsWhen: { dt: null, guiDesc: function(){ return curLng.getVal('JRAS_GUI_HIDEUSERAWARDSWHEN') } }, minShowUserAwards: { dt: null, guiDesc: function(){ return curLng.getVal('JRAS_GUI_MINSHOWUSERAWARDS') } }, fixedTopbar: { dt: null, guiDesc: function(){ return curLng.getVal('JRAS_GUI_FIXEDTOPBAR') } }, hideFixedTopbar: { dt: null, guiDesc: function(){ return curLng.getVal('JRAS_GUI_HIDEFIXEDTOPBAR') } }, showTooltipOnLine: { dt: null, guiDesc: function(){ return curLng.getVal('JRAS_GUI_SHOWTOOLTIPONLINE') } }, showTooltipOnComment: { dt: null, guiDesc: function(){ return curLng.getVal('JRAS_GUI_SHOWTOOLTIPONCOMMENT') } }, showTooltipOnPrivateMess: { dt: null, guiDesc: function(){ return curLng.getVal('JRAS_GUI_SHOWTOOLTIPONPRIVATEMESS') } }, showTooltipOnPeople: { dt: null, guiDesc: function(){ return curLng.getVal('JRAS_GUI_SHOWTOOLTIPONPEOPLE') } }, showTooltipOnSidebarTopUsers: { dt: null, guiDesc: function(){ return curLng.getVal('JRAS_GUI_SHOWTOOLTIPONSIDEBARTOPUSERS') } }, showTooltipOnSidebarOnline: { dt: null, guiDesc: function(){ return curLng.getVal('JRAS_GUI_SHOWTOOLTIPONSIDEBARONLINE') } }, chatlaneToPacaki: { // Убирать цветовую отметку донатера dt: null, guiDesc: function(){ return curLng.getVal('JRAS_GUI_CHATLANETOPACAKI') } }, BlockUsers: [], BlockTags: [] }, val: function(option, value){ if(this.data[option]){ if(value === undefined){ return this.data[option].dt }else{ this.data[option].dt = value; } } }, getGuiDesc: function(option){ return this.data[option].guiDesc(); }, setDef: function(){ this.data.currentLng.dt = 'ru'; this.data.makeTreeComments.dt = true; this.data.treeCommentsOnlyFullPost.dt = false; this.data.whenCollapseMakeRead.dt = true; this.data.isToBeLoadingUserData.dt = true; this.data.hideUserAwardsWhen.dt = 60; this.data.minShowUserAwards.dt = 40; this.data.fixedTopbar.dt = true; this.data.hideFixedTopbar.dt = true; this.data.showTooltipOnLine.dt = true; this.data.showTooltipOnComment.dt = true; this.data.showTooltipOnPrivateMess.dt = true; this.data.showTooltipOnPeople.dt = true; this.data.showTooltipOnSidebarTopUsers.dt = true; this.data.showTooltipOnSidebarOnline.dt = true; this.data.chatlaneToPacaki.dt = false; this.data.BlockUsers = []; this.data.BlockTags = []; }, removeAllSavedData: function(){ this.removeSavedUserData(); }, removeSavedUserData: function(user){ var pref = (user === undefined) ? '' : user + '_'; var keys = GM_listValues(); for(var i = 0; i < keys.length; i++){ var key = keys[i]; if(!key.match(new RegExp(pref + '.*'))){ continue } GM_deleteValue(key); } }, saveUserData: function(){ var i; this.removeSavedUserData(currentUser); var pref = currentUser + '_'; for(i in this.data){ if((i == 'BlockUsers') || (i == 'BlockTags')){ continue } GM_setValue(pref + i, this.data[i].dt); } for(i = 0; i < this.data.BlockUsers.length; i++){ GM_setValue(pref + 'BlockUsers_name_' + i, this.data.BlockUsers[i]); } for(i = 0; i < this.data.BlockTags.length; i++){ GM_setValue(pref + 'BlockTags_name_' + i, this.data.BlockTags[i]); } }, loadUserDataFrom: function(prefix){ var retVal = false; var posf = '.*'; var keys = GM_listValues(); this.data.BlockUsers = []; this.data.BlockTags = []; for(var i = 0; i < keys.length; i++){ var key = keys[i]; if(!key.match(new RegExp(prefix + posf))){ continue } if(key.match(new RegExp(prefix + 'BlockUsers_name_' + posf))){ this.data.BlockUsers.push(GM_getValue(key, '')); }else{ if(key.match(new RegExp(prefix + 'BlockTags_name_' + posf))){ this.data.BlockTags.push(GM_getValue(key, '')); }else{ var rkey = key.replace(prefix, ''); if(this.data[rkey] === undefined){ continue } this.data[rkey].dt = GM_getValue(key, this.data[rkey]); retVal = true; } } } this.data.BlockUsers.sort(); this.data.BlockTags.sort(); return retVal; }, loadUserData: function(){ if(this.loadUserDataFrom(currentUser + '_')){ return } if(this.loadUserDataFrom('')){ this.saveUserData(); } } }; retVal.setDef(); return retVal; } function getColorScheme(){ var c = $('body').css('background-color'); var rgb = (/^#[0-9A-F]{6}$/i.test(c)) ? c : c.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/); var mono = parseInt((0.2125 * rgb[1]) + (0.7154 * rgb[2]) + (0.0721 * rgb[3]), 10); return (mono <= 128) ? 'dark' : 'light'; } function makeAllTooltip(){ var sel = []; if(userOptions.val('showTooltipOnLine')){ sel.push('div.uhead_nick > a'); } if(userOptions.val('showTooltipOnComment')){ sel.push('span.reply-link > a:first-child'); } if(userOptions.val('showTooltipOnPrivateMess')){ sel.push('div.mess_from > a'); } if(userOptions.val('showTooltipOnPeople')){ sel.push('div.user > div.userblock > a'); } if(userOptions.val('showTooltipOnSidebarTopUsers')){ sel.push('div.user.week_top > a'); } if(userOptions.val('showTooltipOnSidebarOnline')){ sel.push('div.avatar_holder > a'); } if(sel.length != 0){ makeTooltips(sel.join(', ')); } } function removeElementsByClass(elm, removeClassArr){ if(removeClassArr == null){ return } for(var i = 0; i < removeClassArr.length; i++){ $(elm + '.' + removeClassArr[i]).each(function(){ $(this).remove(); }) } } function procTopbar(){ if (!isNewDesign){return} if(userOptions.val('fixedTopbar')){ $('#topbar.topbar_wr').css({'position': 'fixed', 'background': 'rgba(57, 47, 30, 0.85) none repeat scroll 0% 0%'}); if(userOptions.val('hideFixedTopbar')){ var checkPos = function(){ var $topbar = $('#topbar.topbar_wr'); if($(window).scrollTop() < 38){ $topbar.find('.topbar_inner').removeClass('jras-topbar_inner'); $topbar.removeClass('jras-topbar_wr'); }else{ $topbar.find('.topbar_inner').addClass('jras-topbar_inner'); $topbar.addClass('jras-topbar_wr'); } }; checkPos(); $(window).scroll(function(){ checkPos(); }); } } } function userRemove(userNameArr){ $(BlockUsersAsFindStr).parent('div.uhead_nick').closest('div.article').each(function(idx, elm){ var currentUser = $(this).find(BlockUsersAsFindStr).text(); if(userNameArr.indexOf(currentUser) != -1){ // $(this).remove(); // для просто удаления // return; elm.parentElement.style.paddingBottom = '40px'; makeBlockPostElements(elm, elm.parentElement.id, curLng.getVal('JRAS_POSTBLOCKBYUSER'), currentUser); console.info(' user - ' + currentUser + ' : hide post - ' + elm.parentElement.id); $(this).hide(); } }); $(BlockUsersAsFindStr).parent('span.reply-link').closest('div[id^=comment_txt_].txt').each(function(idx, elm){ var currentUser = $(this).find(BlockUsersAsFindStr).text(); if(userNameArr.indexOf(currentUser) != -1){ // $(this).remove(); // для просто удаления. Будет пустой комент // return; makeBlockCommElements(elm, elm.parentElement.id, curLng.getVal('JRAS_COMMBLOCKBYUSER'), currentUser); console.info(' user - ' + currentUser + ' : hide comment - ' + elm.parentElement.id); $(this).hide(); } }) } function tagRemove(tagNameArr, strictComp){ var findStr = 'a:contains(' + tagNameArr.join('), a:contains(') + ')'; // findStr = ':contains(Anime):not(:contains(Anime Coub))'; // тест варианта условной блокировки $('.taglist ' + findStr).closest('div.article').each(function(idx, elm){ var foundTagStr = ''; var validTag = strictComp !== true; $(this).find('.taglist').find(findStr).text(function(index, text){ if(strictComp === true){ validTag = validTag || tagNameArr.indexOf(text) != -1; } foundTagStr += ' "' + text + '"'; }); if(validTag){ // $(this).remove(); // для просто удаления // return; elm.parentElement.style.paddingBottom = '40px'; makeBlockPostElements(elm, elm.parentElement.id, curLng.getVal('JRAS_POSTBLOCKBYTAG'), foundTagStr); console.info('hide post by tag - ' + foundTagStr); $(this).hide(); } }) } function correctImageInComment(){ $('div[id^=comment].comment>div[id^=comment_txt_].txt>div.image').each(function(idx, elm){ //console.log(elm); }) } function makeTreeComments(){ $('div[id^=comment].comment').each(function(idx, elm){ makeTreeCommentNode(elm, elm.id.replace('comment', '')); }) } function subscribeShowComment(){ var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver; var observer = new MutationObserver(function(mutations){ mutations.forEach(function(mutation){ if (mutation.type === 'childList'){ if (userOptions.val('showTooltipOnComment')){ makeTooltips($(mutation.addedNodes).find('span.reply-link > a:first-child'), 'a'); } for (var i = 0; i < mutation.addedNodes.length; i++){ var itm = mutation.addedNodes[i]; if (userOptions.val('makeTreeComments') && !userOptions.val('treeCommentsOnlyFullPost')){ if ($(itm).is('div[id^=comment_list_post].comment_list_post')){ $(itm).find('div[id^=comment].comment').each(function(idx, elm){ makeTreeCommentNode(elm, elm.id.replace('comment', '')); }) } } $(itm).find(BlockUsersAsFindStr).closest('div[id^=comment_txt_].txt').each(function(idx, elm){ var currUser = $.trim($(this).find(BlockUsersAsFindStr).text()); if (userOptions.data.BlockUsers.indexOf(currUser) != -1){ makeBlockCommElements(elm, elm.parentElement.id, curLng.getVal('JRAS_COMMBLOCKBYUSER'), currUser); $(this).hide(); } }) } } }); }); $('div.post_comment_list').each(function(idx, elm){ observer.observe(elm, { characterData: true, childList: true, subtree: true }); }) } function makeTreeCommentNode(elm, commentID){ if($('span#treeColl' + commentID)[0]){ return } var collapseToParent = function(design){ var retVal = null; var $parentElm = $(elm).parent(); if($parentElm.prev().is('div[id^=comment].comment') && $(elm).is(':not(:first-child)')){ // если парент elm - div#comment???.comment и elm не первый чилд var parentNodeID = $parentElm.prop('id'); var $newElm = $(elm).prepend(design.replace('##parentNodeID##', parentNodeID)) .find('div#jras-colltoparent-' + commentID); $newElm.click(function(){ var $par = $('div#' + $(this).attr('parentNodeID')); var currID = $(this).parent().prop('id'); var $child = $par.find('>:first-child'); while($child.prop('id') != currID){ $child.find('>div[id^=jras-treecomm]:first-child').click(); $child = $child.next(); } // далее происходит следующее // сдвигаем все вверх, так чтобы парент был на четверть экрана ниже верхней границы // когда анимация закончится проверим виден ли основной комент // если он находится ниже видимой области экрана, // то сдвинем парент на самый верх экрана // и помигаем :) $('html, body') .animate({ scrollTop: $par.prev().offset().top - (unsafeWindow.innerHeight / 4) }, { complete: function(){ if($(elm).offset().top > unsafeWindow.pageYOffset + unsafeWindow.innerHeight){ $('html, body') .animate({ scrollTop: $(elm).parent().prev().offset().top - 20 }, 'slow'); } for(var i = 0; i < 3; i++){ $(elm).parent().prev().fadeTo('fast', 0.1).fadeTo('fast', 1.0); $(elm).fadeTo('fast', 0.1).fadeTo('fast', 1.0); } } }); }); retVal = $newElm; } return retVal; }; var $collToPar; var needCoolTree = $(elm).next().children().length != 0; if(isNewDesign){ $collToPar = collapseToParent( '<div id="jras-colltoparent-' + commentID + '" parentNodeID="##parentNodeID##" class="treeCross-new treeCross-new-toparent">' + '<t style="position: absolute;margin-left: 3px;margin-top: -5px;font-size: 11px;font-weight: bold;">^</t></div>'); if(needCoolTree){ $(elm).prepend( '<div id="jras-treecomm-' + commentID + '" class="treeCross-new">' + '<span id="treeColl' + commentID + '" style="margin-left: 1px; margin-top: -10px;">-</span></div>') .find('div#jras-treecomm-' + commentID) .click(function(){ var $toggleContainer = $('#comment_list_comment_' + commentID); var $treeColl = $('span#treeColl' + commentID); if($toggleContainer.css('display') == 'none'){ $treeColl.text('-'); $treeColl.css('margin-left', '1px'); }else{ $treeColl.text('+'); $treeColl.css('margin-left', '-1px'); if(userOptions.val('whenCollapseMakeRead')){ $toggleContainer.find('div.new').removeClass('new'); } } $toggleContainer.slideToggle('display'); }); } if($collToPar !== null || needCoolTree){ $(elm).find('>div.txt').css('padding-left', '15px'); if($collToPar !== null && !needCoolTree){ $collToPar.css('margin-top', '-3px') } } }else{ $collToPar = collapseToParent( '<div id="jras-colltoparent-' + commentID + '" parentNodeID="##parentNodeID##" class="comment treeCross-old treeCross-old-toparent">' + '<t style="margin-left: -4px;margin-top: -3px;position: absolute;font-size: 8px;">^</t></div>'); if(needCoolTree){ $(elm).prepend( '<div id="jras-treecomm-' + commentID + '" class="comment treeCross-old">'+ '<span id="treeColl' + commentID + '" style="margin-left: 0;">-</span></div>') .find('div#jras-treecomm-' + commentID) .click(function(){ var $toggleContainer = $('#comment_list_comment_' + commentID); var $treeColl = $('span#treeColl' + commentID); if($toggleContainer.css('display') == 'none'){ $treeColl.text('-'); $treeColl.css('margin-left', '0px'); }else{ $treeColl.text('+'); $treeColl.css('margin-left', '-2px'); if(userOptions.val('whenCollapseMakeRead')){ $toggleContainer.find('div.new').removeClass('new'); } } $toggleContainer.slideToggle('display'); }); $(elm).find('>div.avatar') .addClass('avatarCorrect') .css('left', '-10px'); } if($collToPar !== null || needCoolTree){ $(elm).find('>div.avatar').addClass('avatarCorrect').css('left', '-10px'); if($collToPar !== null && !needCoolTree){ $collToPar.css({'margin-top': '-3px', 'margin-left': '-36px'}) } } } } function makePropElements(){ if(isNewDesign){ $('div.topbar_right:first div.lang_select').after( '<label id="jras_prop-button" style="cursor: pointer;" class="lang_select" for="modal-1">JRAS</label>' ); $('label#jras_prop-button').click(openProp); }else{ $('div#header:first div.lang_select').after( '<label id="navcontainer" class="lang_select" for="modal-1"' + 'style="cursor: pointer; right: 39px; padding: 1px 2px 2px;' + 'font-size: 9px; border-radius: 0 0 5px 5px; height: 17px; cursor: pointer;' + 'background: transparent url("../images/mainmenu_active_bg1.png") repeat-x scroll 0 0;">' + 'JRAS' + '</label>'); $('div#header:first div.lang_select + label').click(openProp); } $('body').append( '<div id="jras-prop-gui-dialog">' + '<input class="modal-state" id="modal-1" type="checkbox" />' + '<div class="modal">' + '<label class="modal__bg" for="modal-1"></label>' + '<div class="modal__inner">' + '<div class="jras-prop-gui-contentTop">' + '<span style="color: #8B857B;font-weight: bold; line-height: 27px; padding-left: 8px;">' + 'JRAS - JoyReactor Advanced Script' + '</span>' + '<label class="modal__close" for="modal-1"></label>' + '</div>' + '<div class="jras-prop-gui-contentMain">' + ' <div id="jras-prop-gui-tabs" style="border: 0 none;">' + '<ul class="jras-tabs-nav">' + '<li id="jras-tabs-nav-0"><a href="#jras-prop-gui-tab-1">Общие</a></li>' + '<li id="jras-tabs-nav-1"><a href="#jras-prop-gui-tab-2">Блокировки</a></li>' + '<li id="jras-tabs-nav-2"><a href="#jras-prop-gui-tab-3">Tooltip`ы</a></li>' + '</ul>' + '<div id="jras-prop-gui-tab-1" class="jras-tabs-panel">' + '<div class="jras-tabs-panel-content">' + '<section class="jras-prop-gui-section">' + '<span id="jras-gui-SelectLngCaption" style="vertical-align: middle;"></span>' + '<select id="jras-gui-SelectLngcbb" name="jras-lngSelect" style="vertical-align: middle; width: 30%;height: 1.4em;;">' + '</select>' + '</section>' + '<section class="jras-prop-gui-section">' + '<input id="jras-gui-makeTreeCommentsVal" type="checkbox" style="vertical-align: middle;"/>' + '<label id="jras-gui-makeTreeCommentsCaption" for="jras-gui-makeTreeCommentsVal" style="cursor: pointer;vertical-align: middle;"> </label>' + '</section>' + '<section class="jras-prop-gui-section">' + '<input id="jras-gui-treeCommentsOnlyFullPostVal" type="checkbox" style="vertical-align: middle;"/>' + '<label id="jras-gui-treeCommentsOnlyFullPostCaption" for="jras-gui-treeCommentsOnlyFullPostVal" style="cursor: pointer;vertical-align: middle;"> </label>' + '</section>' + '<section class="jras-prop-gui-section">' + '<input id="jras-gui-whenCollapseMakeReadVal" type="checkbox" style="vertical-align: middle;"/>' + '<label id="jras-gui-whenCollapseMakeReadCaption" for="jras-gui-whenCollapseMakeReadsVal" style="cursor: pointer;vertical-align: middle;"> </label>' + '</section>' + '<section class="jras-prop-gui-section">' + '<input id="jras-gui-fixedTopbarVal" type="checkbox" style="vertical-align: middle;"/>' + '<label id="jras-gui-fixedTopbarCaption" for="jras-gui-fixedTopbarVal" style="cursor: pointer;vertical-align: middle;"> </label>' + '</section>' + '<section class="jras-prop-gui-section">' + '<input id="jras-gui-hideFixedTopbarVal" type="checkbox" style="vertical-align: middle;"/>' + '<label id="jras-gui-hideFixedTopbarCaption" for="jras-gui-hideFixedTopbarVal" style="cursor: pointer;vertical-align: middle;"> </label>' + '</section>' + '</div>' + '</div>' + '<div id="jras-prop-gui-tab-2" class="jras-tabs-panel">' + '<div class="jras-tabs-panel-content">' + '<span id="jras-guiBlockUserListCaption"></span>' + '<textarea id="jras-guiBlockUserList" style="width: 98%; border: 1px solid rgb(216, 216, 216); height: 139px;">' + '</textarea>' + '<span id="jras-guiBlockTagListCaption"></span>' + '<textarea id="jras-guiBlockTagList" style="width: 98%; border: 1px solid rgb(216, 216, 216); height: 139px;">' + '</textarea>' + '</div>' + '</div>' + '<div id="jras-prop-gui-tab-3" class="jras-tabs-panel">' + '<div class="jras-tabs-panel-content">' + '<section class="jras-prop-gui-section">' + '<input id="jras-gui-isToBeLoadingUserDataVal" type="checkbox" style="vertical-align: middle;"/>' + '<label id="jras-gui-isToBeLoadingUserDataCaption" for="jras-gui-isToBeLoadingUserDataVal" style="cursor: pointer;vertical-align: middle;"> </label>' + '</section>' + '<section class="jras-prop-gui-section">' + '<input id="jras-gui-showTooltipOnLineVal" type="checkbox" style="vertical-align: middle;"/>' + '<label id="jras-gui-showTooltipOnLineCaption" for="jras-gui-showTooltipOnLineVal" style="cursor: pointer;vertical-align: middle;"> </label>' + '</section>' + '<section class="jras-prop-gui-section">' + '<input id="jras-gui-showTooltipOnCommentVal" type="checkbox" style="vertical-align: middle;"/>' + '<label id="jras-gui-showTooltipOnCommentCaption" for="jras-gui-showTooltipOnCommentVal" style="cursor: pointer;vertical-align: middle;"> </label>' + '</section>' + '<section class="jras-prop-gui-section">' + '<input id="jras-gui-showTooltipOnPrivateMessVal" type="checkbox" style="vertical-align: middle;"/>' + '<label id="jras-gui-showTooltipOnPrivateMessCaption" for="jras-gui-showTooltipOnPrivateMessVal" style="cursor: pointer;vertical-align: middle;"> </label>' + '</section>' + '<section class="jras-prop-gui-section">' + '<input id="jras-gui-showTooltipOnPeopleVal" type="checkbox" style="vertical-align: middle;"/>' + '<label id="jras-gui-showTooltipOnPeopleCaption" for="jras-gui-showTooltipOnPeopleVal" style="cursor: pointer;vertical-align: middle;"> </label>' + '</section>' + '<section class="jras-prop-gui-section">' + '<input id="jras-gui-showTooltipOnSidebarTopUsersVal" type="checkbox" style="vertical-align: middle;"/>' + '<label id="jras-gui-showTooltipOnSidebarTopUsersCaption" for="jras-gui-showTooltipOnSidebarTopUsersVal" style="cursor: pointer;vertical-align: middle;"> </label>' + '</section>' + '<section class="jras-prop-gui-section">' + '<input id="jras-gui-showTooltipOnSidebarOnlineVal" type="checkbox" style="vertical-align: middle;"/>' + '<label id="jras-gui-showTooltipOnSidebarOnlineCaption" for="jras-gui-showTooltipOnSidebarOnlineVal" style="cursor: pointer;vertical-align: middle;"> </label>' + '</section>' + '<section class="jras-prop-gui-section">' + '<span id="jras-gui-hideUserAwardsWhenCaption" style="vertical-align: middle;"></span>' + '<select id="jras-gui-hideUserAwardsWhencbb" name="jras-hideUserAwardsWhen" style="vertical-align: middle; width: 60px;height: 20px;">' + '</select>' + '<span id="jras-gui-minShowUserAwardsCaption" style="vertical-align: middle;margin-left: 3px;"></span>' + '<select id="jras-gui-minShowUserAwardscbb" name="jras-minShowUserAwards" style="vertical-align: middle; width: 60px;height: 20px;">' + '</select>' + '</section>' + '<section class="jras-prop-gui-section">' + '<input id="jras-gui-chatlaneToPacakiVal" type="checkbox" style="vertical-align: middle;"/>' + '<label id="jras-gui-chatlaneToPacakiCaption" for="jras-gui-chatlaneToPacakiVal" style="cursor: pointer;vertical-align: middle;"> </label>' + '</section>' + '</div>' + '</div>' + '</div>' + '</div>' + '<div id="jras-prop-gui-bottomCcontent" class="jras-prop-gui-contentBottom">' + '<input id="jras-gui-SaveSettings" style="padding-left: 20px; padding-right: 20px; height: 22px;" class="jras-prop-gui-button-right" value="" type="button">' + '</div>' + '</div>' + '</div>' + '</div>'); var $propDialog = $('#jras-prop-gui-dialog'); $propDialog.find('select#jras-gui-SelectLngcbb').append(curLng.getHTMLList()); $propDialog.find('select#jras-gui-hideUserAwardsWhencbb').append(getHideAwardsCountList()); $propDialog.find('select#jras-gui-minShowUserAwardscbb').append(getShowAwardsCountList()); $propDialog.find('[id*=jras-tabs-nav-]').click(function(){ $propDialog.find('#jras-prop-gui-tabs').tabs({active: $(this).attr('id').replace('jras-tabs-nav-', '')}); }); if(colorScheme.isLight()){ $propDialog.find('[id*=jras-prop-gui-tab]').css('color', '#686868'); }else{ $propDialog.find('[id*=jras-prop-gui-tab]').css('color', '#BBBBBB'); } if(!isNewDesign){ $propDialog.find('ul.jras-tabs-nav li a').css('padding-top', '11px'); } makeServiceGUIButton(); updateGuiLocalize(); } function openProp(){ var $propDialog = $('#jras-prop-gui-dialog'); $propDialog.find('#jras-gui-SelectLngcbb').val(userOptions.val('currentLng')); $propDialog.find('#jras-gui-makeTreeCommentsVal').prop('checked', userOptions.val('makeTreeComments')); $propDialog.find('#jras-gui-treeCommentsOnlyFullPostVal').prop('checked', userOptions.val('treeCommentsOnlyFullPost')); $propDialog.find('#jras-gui-whenCollapseMakeReadVal').prop('checked', userOptions.val('whenCollapseMakeRead')); $propDialog.find('#jras-gui-fixedTopbarVal').prop('checked', userOptions.val('fixedTopbar')); $propDialog.find('#jras-gui-hideFixedTopbarVal').prop('checked', userOptions.val('hideFixedTopbar')); $propDialog.find('#jras-gui-isToBeLoadingUserDataVal').prop('checked', userOptions.val('isToBeLoadingUserData')); $propDialog.find('#jras-gui-showTooltipOnLineVal').prop('checked', userOptions.val('showTooltipOnLine')); $propDialog.find('#jras-gui-showTooltipOnCommentVal').prop('checked', userOptions.val('showTooltipOnComment')); $propDialog.find('#jras-gui-showTooltipOnPrivateMessVal').prop('checked', userOptions.val('showTooltipOnPrivateMess')); $propDialog.find('#jras-gui-showTooltipOnPeopleVal').prop('checked', userOptions.val('showTooltipOnPeople')); $propDialog.find('#jras-gui-showTooltipOnSidebarTopUsersVal').prop('checked', userOptions.val('showTooltipOnSidebarTopUsers')); $propDialog.find('#jras-gui-showTooltipOnSidebarOnlineVal').prop('checked', userOptions.val('showTooltipOnSidebarOnline')); $propDialog.find('#jras-gui-chatlaneToPacakiVal').prop('checked', userOptions.val('chatlaneToPacaki')); $propDialog.find('#jras-gui-hideUserAwardsWhencbb').val(userOptions.val('hideUserAwardsWhen')); $propDialog.find('#jras-gui-minShowUserAwardscbb').val(userOptions.val('minShowUserAwards')); $propDialog.find('#jras-guiBlockUserList').val(userOptions.data.BlockUsers.join("\n")); $propDialog.find('#jras-guiBlockTagList').val(userOptions.data.BlockTags.join("\n")); $propDialog.find('#jras-prop-gui-tabs').tabs({active: 0}); $propDialog.find('#jras-prop-gui-tabs').tabs({selected: 0}); $propDialog.find('#jras-prop-gui-tabs').tabs({focused: 0}); } function updateGuiLocalize(){ var $propDialog = $('#jras-prop-gui-dialog'); $propDialog.find('#jras-gui-SaveSettings').attr('value', curLng.getVal('JRAS_GUI_BTNSAVE')); $propDialog.find('#jras-gui-sendPMforMe').attr('title', curLng.getVal('JRAS_GUI_BTNSENDPMME')); $propDialog.find('#jras-gui-DeleteAllSavedSettings').attr('title', curLng.getVal('JRAS_GUI_BTNDELETESETT')); $propDialog.find('#jras-gui-ResetSettings').attr('title', curLng.getVal('JRAS_GUI_BTNRESETSETT')); $propDialog.find('#jras-tabs-nav-0 a').text(curLng.getVal('JRAS_GUI_TABMAIN')); $propDialog.find('#jras-tabs-nav-1 a').text(curLng.getVal('JRAS_GUI_TABBLOCK')); $propDialog.find('#jras-tabs-nav-2 a').text(curLng.getVal('JRAS_GUI_TABTOOLTIP')); $propDialog.find('#jras-gui-SelectLngCaption').text(userOptions.getGuiDesc('currentLng')); $propDialog.find('#jras-gui-makeTreeCommentsCaption').text(userOptions.getGuiDesc('makeTreeComments')); $propDialog.find('#jras-gui-treeCommentsOnlyFullPostCaption').text(userOptions.getGuiDesc('treeCommentsOnlyFullPost')); $propDialog.find('#jras-gui-whenCollapseMakeReadCaption').text(userOptions.getGuiDesc('whenCollapseMakeRead')); $propDialog.find('#jras-gui-fixedTopbarCaption').text(userOptions.getGuiDesc('fixedTopbar')); $propDialog.find('#jras-gui-hideFixedTopbarCaption').text(userOptions.getGuiDesc('hideFixedTopbar')); $propDialog.find('#jras-gui-isToBeLoadingUserDataCaption').text(userOptions.getGuiDesc('isToBeLoadingUserData')); $propDialog.find('#jras-gui-showTooltipOnLineCaption').text(userOptions.getGuiDesc('showTooltipOnLine')); $propDialog.find('#jras-gui-showTooltipOnCommentCaption').text(userOptions.getGuiDesc('showTooltipOnComment')); $propDialog.find('#jras-gui-showTooltipOnPrivateMessCaption').text(userOptions.getGuiDesc('showTooltipOnPrivateMess')); $propDialog.find('#jras-gui-showTooltipOnPeopleCaption').text(userOptions.getGuiDesc('showTooltipOnPeople')); $propDialog.find('#jras-gui-showTooltipOnSidebarTopUsersCaption').text(userOptions.getGuiDesc('showTooltipOnSidebarTopUsers')); $propDialog.find('#jras-gui-showTooltipOnSidebarOnlineCaption').text(userOptions.getGuiDesc('showTooltipOnSidebarOnline')); $propDialog.find('#jras-gui-chatlaneToPacakiCaption').text(userOptions.getGuiDesc('chatlaneToPacaki')); $propDialog.find('#jras-gui-hideUserAwardsWhenCaption').text(userOptions.getGuiDesc('hideUserAwardsWhen')); $propDialog.find('#jras-gui-minShowUserAwardsCaption').text(userOptions.getGuiDesc('minShowUserAwards')); $propDialog.find('#jras-guiBlockUserListCaption').text(curLng.getVal('JRAS_GUI_BLOCKUSERLIST')); $propDialog.find('#jras-guiBlockTagListCaption').text(curLng.getVal('JRAS_GUI_BLOCKTAGLIST')); } function makeServiceGUIButton(){ var $propDialog = $('#jras-prop-gui-dialog'); if(isNewDesign){ $propDialog.find('#jras-gui-SaveSettings').css('border-radius', '3px'); $propDialog.find('#jras-prop-gui-bottomCcontent').prepend( '<div id="jras-gui-sendPMforMe" class="big_button jras-gui-btn-newdesign jras-prop-gui-button-left jras-gui-btn-pmme" title=""> </div>' + '<div id="jras-gui-DeleteAllSavedSettings" class="big_button jras-gui-btn-newdesign jras-prop-gui-button-left jras-gui-btn-deleteall" title="" > </div>' + '<div id="jras-gui-ResetSettings" class="big_button jras-gui-btn-newdesign jras-prop-gui-button-left jras-gui-btn-resetdef" title="" > </div>' ); }else{ $propDialog.find('#jras-prop-gui-bottomCcontent').prepend( '<input id="jras-gui-sendPMforMe" style="padding-left: 3px;padding-right: 3px;width: 24px;height: 22px;" class="jras-prop-gui-button-left jras-gui-btn-pmme" title="" value="" type="button">' + '<input id="jras-gui-DeleteAllSavedSettings" style="padding-left: 3px; padding-right: 3px; width: 24px; height: 22px;" class="jras-prop-gui-button-left jras-gui-btn-deleteall" title="" value="" type="button">' + '<input id="jras-gui-ResetSettings" style="padding-left: 3px; padding-right: 3px; width: 24px; height: 22px;" class="jras-prop-gui-button-left jras-gui-btn-resetdef" title="" value="" type="button">' ); } $propDialog.find('#jras-gui-sendPMforMe').click(function(){ closeSettingDialog(); sendPM('AntiUser') }); $propDialog.find('#jras-gui-DeleteAllSavedSettings').click(function(){ closeSettingDialog(); userOptions.removeAllSavedData(); }); $propDialog.find('#jras-gui-ResetSettings').click(function(){ closeSettingDialog(); userOptions.setDef(); }); $propDialog.find('#jras-gui-SaveSettings').click(function(){ var $propDialog = $('#jras-prop-gui-dialog'); userOptions.val('currentLng', $propDialog.find('#jras-gui-SelectLngcbb').val()); userOptions.val('makeTreeComments', $propDialog.find('#jras-gui-makeTreeCommentsVal').prop('checked')); userOptions.val('treeCommentsOnlyFullPost', $propDialog.find('#jras-gui-treeCommentsOnlyFullPostVal').prop('checked')); userOptions.val('whenCollapseMakeRead', $propDialog.find('#jras-gui-whenCollapseMakeReadVal').prop('checked')); userOptions.val('fixedTopbar', $propDialog.find('#jras-gui-fixedTopbarVal').prop('checked')); userOptions.val('hideFixedTopbar', $propDialog.find('#jras-gui-hideFixedTopbarVal').prop('checked')); userOptions.val('isToBeLoadingUserData', $propDialog.find('#jras-gui-isToBeLoadingUserDataVal').prop('checked')); userOptions.val('showTooltipOnLine', $propDialog.find('#jras-gui-showTooltipOnLineVal').prop('checked')); userOptions.val('showTooltipOnComment', $propDialog.find('#jras-gui-showTooltipOnCommentVal').prop('checked')); userOptions.val('showTooltipOnPrivateMess', $propDialog.find('#jras-gui-showTooltipOnPrivateMessVal').prop('checked')); userOptions.val('showTooltipOnPeople', $propDialog.find('#jras-gui-showTooltipOnPeopleVal').prop('checked')); userOptions.val('showTooltipOnSidebarTopUsers', $propDialog.find('#jras-gui-showTooltipOnSidebarTopUsersVal').prop('checked')); userOptions.val('showTooltipOnSidebarOnline', $propDialog.find('#jras-gui-showTooltipOnSidebarOnlineVal').prop('checked')); userOptions.val('chatlaneToPacaki', $propDialog.find('#jras-gui-chatlaneToPacakiVal').prop('checked')); userOptions.val('hideUserAwardsWhen', $propDialog.find('#jras-gui-hideUserAwardsWhencbb').val()); userOptions.val('minShowUserAwards', $propDialog.find('#jras-gui-minShowUserAwardscbb').val()); userOptions.data.BlockUsers = $propDialog.find('#jras-guiBlockUserList').val().split('\n'); userOptions.data.BlockTags = $propDialog.find('#jras-guiBlockTagList').val().split('\n'); updateGuiLocalize(); userOptions.saveUserData(); closeSettingDialog() }); } function makeTooltips(selector){ $(selector).tooltip({ items: 'a', content: function(){ return '<div id="jras-tooltipcontainer"' + 'style="height: 30px; line-height: 30px; margin: 8px; color: rgb(120, 120, 120); text-align: center;">' + curLng.getVal('JRAS_LOADINGUSERDATA') + '</div>'; }, show: {effect: "fade", duration: 400}, track: true, open: function(event, ui){ var UserName = $.trim($(this).text()); var UserLink = $(this).attr('href'); if(typeof(event.originalEvent) === 'undefined'){ return false; } var $tooltip = $(ui.tooltip); $('div.ui-tooltip').not('#' + $tooltip.attr('id')).remove(); $tooltip.width('212px'); $tooltip.css({ 'border-radius': '5px', 'z-index': '500', 'border': '1px solid rgb(102, 102, 102)', '-webkit-box-shadow': '6px 6px 8px 0px rgba(0, 0, 0, 0.5)', '-moz-box-shadow': '6px 6px 8px 0px rgba(0, 0, 0, 0.5)', 'box-shadow': '6px 6px 8px 0px rgba(0, 0, 0, 0.5)' }); var $tooltipContainer = $tooltip.find('div#jras-tooltipcontainer'); getUserData(UserName, UserLink, $tooltipContainer); }, close: function(event, ui){ ui.tooltip.hover(function(){ $(this).stop(true).fadeTo(400, 1); }, function(){ $(this).fadeOut('400', function(){ $(this).remove(); }); }); } }); } function getUserData(userName, userLink, $outContainer){ var $mainBtnContainer; var clearContainer = function(container){ container.find('*').remove(); container.empty(); container.css({ 'line-height': '', 'text-align': '', 'height': '' }); }; var mainBtnContainer = '<div ' + 'id="jras-tooltip-mainBtnContainer" ' + 'style="margin-top: 4px; border-top: 1px solid rgb(85, 85, 85); padding-top: 3px;">' + '</div>'; if(userOptions.val('isToBeLoadingUserData')){ GM_xmlhttpRequest({ method: 'GET', url: userLink, onload: function(response){ // console.log('Loading user data from "' + userLink + '" - ' + response.status); if(response.status != 200){ $outContainer.text('Loading error: ' + response.status); console.log("Loading user data error: - " + response.status); }else{ var doc = document.implementation.createHTMLDocument(""); doc.documentElement.innerHTML = response.responseText; clearContainer($outContainer); var $userData = $(doc).find('div.user-awards').parent('div.sidebarContent'); $userData.find('div.user').clone().appendTo($outContainer).css({'line-height': '22px'}) .find('span') .css({ 'position': 'absolute', 'overflow': 'hidden', 'max-width': '66%', 'padding-left': '8px' }); if (userOptions.val('chatlaneToPacaki')){ $outContainer.find('div.user > span').css('color', $outContainer.find('div.user').css('color')); } makeUserAwardsBlock($userData.find('div.user-awards'), $outContainer); var $userStars = $userData.find('div.stars').clone().appendTo($outContainer); $userStars.css('width', '100%'); $userStars.find('div:not([class])').not('[style*="border: black solid 1px"]').remove(); $userStars.find('div[class*="star-row-"]') .css({ 'height': '15px', 'margin-left': '15px', 'transform': 'scale(0.7)' }); var a = isNewDesign ? 'rgb(230, 230, 230)' : 'rgb(72, 72, 72)'; $userStars.find('[style*="border: black solid 1px"]') .css({ 'border': '', 'margin-top': '3px', 'background-color': a, 'height': '4px' }); $userData.find('div#rating-text').clone().appendTo($outContainer) .css('font-size', '10px') .css('line-height', '16px'); var $mainBtnContainer = $outContainer.append(mainBtnContainer).find('#jras-tooltip-mainBtnContainer'); if(isUserLogon){ // если залоген makeSendPMelements($mainBtnContainer, userName); // $(doc).find('a.send_private_message.big_button').clone().appendTo(outContainer); var txtToUserAction; var linkToUserAction; if($userData.find('div#friend_link > p').is('.add_tofr_lnk.user_icons')){ txtToUserAction = curLng.getVal('JRAS_ADDFRIEND'); linkToUserAction = $userData.find('div#friend_link > p.add_tofr_lnk.user_icons > a[href]').attr('href'); }else{ if($userData.find('div#friend_link > p').is('.remove_fromfr_lnk.user_icons')){ txtToUserAction = curLng.getVal('JRAS_REMOVEFRIEND'); linkToUserAction = $userData.find('div#friend_link > p.remove_fromfr_lnk.user_icons > a[href]').attr('href'); } } if(txtToUserAction){ var $friendUser = $mainBtnContainer.append( '<div id="jras-tooltip-frienduser" class="jras-tooltip-button" style="cursor: pointer;">' + '<i class="jras-tooltip-button-img jras-tooltip-frienduser-img"></i>' + '<span id="jras-tooltip-frienduser-txt" class="jras-tooltip-button-text">' + txtToUserAction + '</span>' + '</div>' ).find('#jras-tooltip-frienduser'); $friendUser.click({clickLink: linkToUserAction, updateContainer: $friendUser}, function(eventObject){ var t = eventObject.data.updateContainer.find('#jras-tooltip-frienduser-txt'); var ct = t.text(); t.text(ct + ' : wait'); GM_xmlhttpRequest({ method: 'GET', url: eventObject.data.clickLink, onload: function(response){ if(response.status != 200){ t.text(ct + ' : error: ' + response.status); }else{ t.text(ct + ' : ok'); } eventObject.data.updateContainer .css('cursor', '') .removeClass('jras-tooltip-button') .unbind(eventObject); } }); }); } txtToUserAction = null; if($userData.find('div#friend_link > p').is('.add_toblock_lnk.user_icons')){ txtToUserAction = curLng.getVal('JRAS_BLOCKUSER_JR'); linkToUserAction = $userData.find('div#friend_link > p.add_toblock_lnk.user_icons > a[href]').attr('href'); }else{ if($userData.find('div#friend_link > p').is('.remove_fromblock_lnk.user_icons')){ txtToUserAction = curLng.getVal('JRAS_UNBLOCKUSER_JR'); linkToUserAction = $userData.find('div#friend_link > p.remove_fromblock_lnk.user_icons > a[href]').attr('href'); } } if(txtToUserAction){ var $blockUserJR = $mainBtnContainer.append( '<div id="jras-tooltip-blockuser-jr" class="jras-tooltip-button" style="cursor: pointer;">' + '<i class="jras-tooltip-button-img jras-tooltip-blockuser-img"></i>' + '<span id="jras-tooltip-blockuser-jr-txt" class="jras-tooltip-button-text">' + txtToUserAction + '</span>' + '</div>' ).find('#jras-tooltip-blockuser-jr'); $blockUserJR.click({clickLink: linkToUserAction, updateContainer: $blockUserJR}, function(eventObject){ var t = eventObject.data.updateContainer.find('#jras-tooltip-blockuser-jr-txt'); var ct = t.text(); t.text(ct + ' : wait'); GM_xmlhttpRequest({ method: 'GET', url: eventObject.data.clickLink, onload: function(response){ if(response.status != 200){ t.text(ct + ' : error: ' + response.status); }else{ t.text(ct + ' : ok'); } eventObject.data.updateContainer .css('cursor', '') .removeClass('jras-tooltip-button') .unbind(eventObject); } }); }); } } makeJRASTooltipElm($mainBtnContainer, userName); } } }); }else{ clearContainer($outContainer); $mainBtnContainer = $outContainer.append(mainBtnContainer).find('#jras-tooltip-mainBtnContainer'); $mainBtnContainer.css({ 'margin-top': '', 'border-top': '', 'padding-top': '' }); makeJRASTooltipElm($mainBtnContainer, userName); } } function makeSendPMelements(containerFoElements, userName){ if(!isUserLogon || userName == 'anon' || userName == currentUser){ return } var $sendPM = containerFoElements.append( '<div id="jras-tooltip-sendPM" class="jras-tooltip-button" style="cursor: pointer;">' + '<i class="jras-tooltip-button-img jras-tooltip-sendmess-img"></i>' + '<span class="jras-tooltip-button-text">' + curLng.getVal('JRAS_SENDPRIVMESS') + '</span>' + '</div>' ).find('#jras-tooltip-sendPM'); $sendPM.click({user: userName}, function(eventObject){ sendPM(eventObject.data.user) }) } function makeJRASTooltipElm(containerFoElements, userName){ var txtToUserAction = (userOptions.data.BlockUsers.indexOf(userName) == -1) ? curLng.getVal('JRAS_BLOCKUSER_JRAS') : curLng.getVal('JRAS_UNBLOCKUSER_JRAS'); var $blockUserJRAS = containerFoElements.append( '<div id="jras-tooltip-blockuser-jras" class="jras-tooltip-button" style="cursor: pointer;">' + '<i class="jras-tooltip-button-img jras-tooltip-blockuser-img" style="transform: scale(.7);"></i>' + '<span id="jras-tooltip-blockuser-jras-text" class="jras-tooltip-button-text">' + txtToUserAction + '</span>' + '</div>' ).find('#jras-tooltip-blockuser-jras'); $blockUserJRAS.click({dataUserName: userName, updateContainer: $blockUserJRAS}, function(eventObject){ var t = eventObject.data.updateContainer.find('#jras-tooltip-blockuser-jras-text'); var iof = userOptions.data.BlockUsers.indexOf(eventObject.data.dataUserName); if(iof == -1){ t.text(curLng.getVal('JRAS_UNBLOCKUSER_JRAS')); userOptions.data.BlockUsers.push(eventObject.data.dataUserName); }else{ t.text(curLng.getVal('JRAS_BLOCKUSER_JRAS')); userOptions.data.BlockUsers.splice(iof, 1); } userOptions.saveUserData(); }) } function makeUserAwardsBlock($userAwards, $containerFor){ var hideUserAwardsWhen = userOptions.val('hideUserAwardsWhen'); var minShowUserAwards = userOptions.val('minShowUserAwards'); if (hideUserAwardsWhen != 0 && hideUserAwardsWhen < minShowUserAwards){ hideUserAwardsWhen = +minShowUserAwards + 1; } if(hideUserAwardsWhen != 0 && $userAwards.children().length > hideUserAwardsWhen){ var $jrasTooltipUserAwards = $containerFor.append('<div id="jras-tooltip-user-awards" class="jras-user-awards-slice" style="-webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none;"></div>') .find('#jras-tooltip-user-awards'); $jrasTooltipUserAwards.append($userAwards.children().slice(0, minShowUserAwards)); $jrasTooltipUserAwards.append('<div id="jras-tooltip-user-awards-hide" class="jras-user-awards-slice" style="display: none;"></div>') .find('#jras-tooltip-user-awards-hide') .append($userAwards.children().clone()); var correctShadow = function(visible){ if(!isNewDesign && !colorScheme.isLight()){ return } $jrasTooltipUserAwardsHideBtn.css('background-color', '#C3C3C3'); $jrasTooltipUserAwardsHideBtn.hover(function(){ $(this).css('background-color', '#F0E400') }, function(){ $(this).css('background-color', '#C3C3C3') }); if(visible){ $jrasTooltipUserAwardsHideBtn.css('box-shadow', '0px -4px 8px 0px rgb(138, 138, 138)'); }else{ $jrasTooltipUserAwardsHideBtn.css('box-shadow', ''); } }; var $jrasTooltipUserAwardsHideBtn = $jrasTooltipUserAwards.append('<div id="jras-tooltip-user-awards-hide-btn"></div>') .find('#jras-tooltip-user-awards-hide-btn') .addClass('jras-tooltip-user-awards-hide-btn') .addClass('jras-tooltip-user-awards-hide-btn-close'); correctShadow(true); $jrasTooltipUserAwardsHideBtn.click(function(){ var $toggleContainer = $('#jras-tooltip-user-awards-hide'); if($toggleContainer.css('display') == 'none'){ $toggleContainer.slideToggle('display', function(){ $jrasTooltipUserAwardsHideBtn.toggleClass('jras-tooltip-user-awards-hide-btn-close'); correctShadow(false); }); }else{ $jrasTooltipUserAwardsHideBtn.toggleClass('jras-tooltip-user-awards-hide-btn-close'); correctShadow(true); $toggleContainer.slideToggle('display'); } }); }else{ $userAwards.clone().appendTo($containerFor).addClass('jras-user-awards'); } $containerFor.find('img').css('border', 'none') } function sendPM(userName){ var $pmDialog = $('body #jras-send-pm-dialog'); if($pmDialog.length == 0){ $pmDialog = $('body').append( '<div id="jras-send-pm-dialog" title="" style="width: 100%;height: 100%;">' + '<form action="/private/create" method="POST" id="private_form" style="width: 100%;height: 100%;">' + '<div id="private_form_flash" style="display:none;"></div>' + '<input id="jras-send-pm-username" name="username" type="hidden" id="private_form_username" value="">' + '<textarea style="width: 100%;height: 70%;" id="private_form_text" name="text" rows="12" cols="76"></textarea>' + '<div class="ui-dialog-buttonpane ui-widget-content ui-helper-clearfix" style="margin:0; padding:0;border: none;">' + '<div class="ui-dialog-buttonset">' + '<input type="submit" value="" id="jras-send-pm-sendbutton">' + '</div>' + '<div id="private_form_uploading" style="display: none;">' + '<img src="http://css.joyreactor.cc/images/jquery-ui/ui-anim_basic_16x16.gif" alt="uploading...">' + '<span id="jras-send-pm-sendmess"></span>' + '</div>' + '</div>' + '</form>' + '</div>' ).find('#jras-send-pm-dialog'); } $pmDialog.attr('title', curLng.getVal('JRAS_SENDPMDIALOG_HEADERCAPTION') + userName); $pmDialog.find('input#jras-send-pm-username').attr('value', userName); $pmDialog.find('input#jras-send-pm-sendbutton').attr('value', curLng.getVal('JRAS_SENDPMDIALOG_SENDBUTTON')); var $pmSendMess = $pmDialog.find('span#jras-send-pm-sendmess'); $pmSendMess.text(curLng.getVal('JRAS_SENDPMDIALOG_SENDMESS')); if(!colorScheme.isLight()){ $pmSendMess.css('color', 'rgb(172, 174, 173)'); } $pmDialog.dialog({ resizable: false, minWidth: 300, minHeight: 200, width: 550, height: 300, title: curLng.getVal('JRAS_SENDPMDIALOG_HEADERCAPTION') + userName, closeText: curLng.getVal('JRAS_SENDPMDIALOG_CLOSEBUTTON'), show: { effect: "drop", duration: 400 }, hide: { effect: "scale", duration: 300 }, open: function(){ //function(event, ui){ var magicNumber = 40; //высота нижней панели if(isNewDesign){ magicNumber = 55; } $('textarea#private_form_text').css({ width: $(this).width(), height: $(this).height() - magicNumber }); } }); } function closeSettingDialog(){ $('#jras-prop-gui-dialog').find('label.modal__close').click(); } function newCssClass(cssClass){ var head = document.head || document.getElementsByTagName('head')[0]; var style = document.createElement('style'); style.type = 'text/css'; if(style.styleSheet){ style.styleSheet.cssText = cssClass; }else{ style.appendChild(document.createTextNode(cssClass)); } head.appendChild(style); } function addNewCSSClasses(){ newCssClass( ' /* для старого дизайна */' + ' .treeCross-old{' + ' float: left;' + ' width: 13px;' + ' margin-top: -8px;' + ' margin-left: -34px;' + ' font-weight: bold;' + ' border-radius: 14px;' + ' display: block;' + ' position: absolute;' + ' height: 20px;' + ' padding: 0 1px 0 6px;' + ' cursor: pointer;' + ' }' + ' .avatarCorrect{' + ' background: url("../images/comments.png") no-repeat;' + ' padding-left: 9px;' + ' left: -10px;' + ' }' + ' .treeCross-old-toparent {' + ' border-radius: 6px;' + ' height: 10px;' + ' width: 4px;' + ' margin-left: -37px;' + ' margin-top: 6px;' + ' }' + '' + ' /* для нового дизайна */' + ' .treeCross-new{' + ' float: left;' + ' width: 10px;' + ' border-radius: 14px;' + ' display: block;' + ' position: absolute;' + ' color: rgb(255, 255, 255);' + ' border: 2px solid rgb(255, 255, 255);' + ' margin-top: -8px;' + ' margin-left: -16px;' + ' background: #DFDFDF none repeat scroll 0 0;' + ' font-weight: bold;' + ' font-size: 18px;' + ' height: 28px;' + ' padding: 0 16px 0 8px;' + ' cursor: pointer;' + ' }' + ' .treeCross-new-toparent {' + ' margin-top: 10px;' + ' border-radius: 8px;' + ' height: 15px;' + ' padding: 0 12px 0 0;' + ' margin-left: -18px;' + ' }' + ' .treeCross-new:hover, .treeCross-new-toparent:hover {' + ' background-color: rgb(254, 204, 101);' + ' }' + '' + ' .jras-user-awards img {' + ' width: 16px;' + ' height: 16px;' + ' }' + ' .jras-user-awards-slice img {' + ' height: 16px;' + ' padding-left: 3px;' + ' }' + ' .jras-tooltip-button:hover span, .jras-tooltip-button:hover i {' + ' color: #CC9622;' + ' opacity: 1;' + ' }' + ' .jras-tooltip-button-img {' + ' vertical-align: middle;' + ' width: 16px;' + ' height: 16px;' + ' display: inline-block;' + ' opacity: 0.7;' + ' }' + ' .jras-tooltip-button-text {' + ' padding-left: 4px;' + ' font-size: 10px;' + ' vertical-align: middle;' + ' display: inline-block;' + ' line-height: 10px;' + ' }' + ' .jras-tooltip-blockuser-img {' + ' background: transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADEUlEQVQ4T2WTW08USRTH/1U91TUXdAoV54Ibh8tu4sZkmOyD8cFFgzEaHzaExMBb9zfAT6B8Anj3oTvx2YyYrGtMNsL6xG42uMZkBGYDYZhpEMRiYKB7ZrrbdCeMRCo5D5VT53cu9T8E352iEELhXPOAYRAiQrfvS5/SeXBujq6tyZMh5OTlRSo1qQrxKHvjhogkkwidrgu32UTr8BBbCwvySMqpUcuaOY7rAJ5fvGj0FArahUIBslSC22ig5TjwPQ8RRQHxfZzp78fnchm7q6vmWK2mB5AQEGQ+PzQ0fXZgAAfLy7D397FnWSal9D8KoO15+WgyqSXicRBKsVOrBVU9HLOsGRL0HEulVn+4d0/UP3yA327Ds2041ao+UqmYx6UWe3uHunK5N8muLlFfW4Pc35eKqvaRF+m0dun2baNVr6OxsQFVVQFC4DsOmtvbpyDZkZFFlEqwNjfhep5Ogt77x8a0g5UVfFpeNs/4/jw7d87wDg7QlhLEtvWRRqNTye/XrhmXMhmtMjcHO5EwyfN0+s1PExM3dxYX4arq1K3Xrx//wZhGFcVQFAWhUar/KmUIKQ4OTv58//70xtOn+BKPz4WAHx88uPlpYQHo7p669erV4+Dhn4lECAl+gEUiYIqi/7K5aQaA/Pj4dO3JE1iMhQDj8t27Wm12FnYs1vmeAPKXEJrKmMEYQ2iRiP5/T8/w1Xxeq758CQswSTGd1lKFgvHl7Vu0olH4nBdGq9V3x9P/N53WGOeGylg4YO/OHbD371Eul/HZ93VSzOUEV9XVrnhc1JeW4GYy7zzH0U9CSgMDGufciHIOns3isFLB31JKSmlfKKRiJjMp+vqmnY8fwYVA5MoV1Hd2zKNabTbwR3t7fxvM57ULS0tQWy38s7WF7Wbz4fj6+kxHys+yWcNvtzV1bw9JIdB9/TpIMgmFc8RcF6RcBt3dxcrRURBsjq+vf5Pycb/PMplJz/MeEdsWcQAxRQFXVRDG4BCCXUA2gakg86ll6kg2lxNeq6X5hAwDEH6wzYRIQsh8hNJT6/wV5lBT8JU2J8oAAAAASUVORK5CYII=") no-repeat scroll 0 0;' + ' }' + ' .jras-tooltip-sendmess-img {' + ' background: transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB2UlEQVQ4T2NkoBAwUqifAWyAm5OdkwAveyoDEwMTUQb+Y/j34fPP2bv2HdrHGBPm0RAWYVlrZa3GxMREnIP+/fvPcOTwjf9rVh1vZCzNj7xTVumrzMxMnOUwF/7584+hvXnjfcbUAPdV0ooiof5RlgzyCiJE+eD+vdcMm5YfZ7h+4/EmxoxAj2WqonyRH/79ZVAxU2Tw9jdmwOUVkNM3rz/NcO/MQwYBJmaGmy8/rAAbYKYgHvn152+GD1+/MTCK8zIExdowSEjwo7jm2bP3DOuWHGNgevWZgZ+bi4GbnZXh1IOXy+EGgFT//vuP4eqz1wx/2VkYHLz0GZxcdcCG7N5xieHgjksMLD/+MujIiDKwQsMLxYB3X38wvPz0jUFehI/h379/DB++fWdgEuJm+AeKmHffGAQ4ORgYGRkZ7r/9yCDJx80gzM0JcUGqn+tKQW6OMEEuDgZxPi64s//8/cvw4/dfMJ+DlZmBhZkZLvf841eG999/MHz8/ns1Y4yX8x0HNWllJkbi0gDMlL///jMcuPnwHqOPg029gaxwnaIwPxPIicSA////M9x78/Hf5edvGsA6rM2MbHk5ONL///lLVGpiZGH+9+XnzxlHTp49QpyVeJxFsQEAvJ+vaZNelxMAAAAASUVORK5CYII=") no-repeat scroll 0 0;' + ' }' + ' .jras-tooltip-frienduser-img {' + ' background: transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADQUlEQVQ4T6WTaWxUZRSG32/u3O27M9y5s3SWdtqZ1rZDoB20LG0ADQSqVQoaKmltBGITFVH/WLZQhdSFRQlLgIAQHLcILSaAssRqQhNoaZMCAck4aiMtlU5S6D7MdjvXGOOE8lPPz3PyPsnJk5fgfw55OP9qZQmdkWPb7sj2zGW02JFlGwKHHr5ro0FLf2sjcVV+c+/ffRowt9BqZBITR0UkVjicDpisFrV/YOS1pvbQsd++qp0yNK41Sp6y5UPB84yaVDtyC7PWZi87djcNKHXQCobBuQxZgF6gUAmLnt5w89WB6IpTjZX1l6+FP86cosFiltE7nII/j25e0nD2ozSg5omsYrOFttVVzZFExYrhSBJfft3yycEfQ+u2VM8+evVWX92a1Qsxs6QA7207icec4oH6QMebacCNw8t9IzHdjTll01lWMkJLEfT83tPifWFPeUPVrO01S3wb8ktLwRqM6PypDa0Xr7+7/rMrH6QBt5pe5GSV/1xPhWqjokA0GlNEz9SR4s2BZ4tcG6sX5myrqq2AYJKxb/dJjEe1pQ2BS99NsnC6fnqxYjJ3ZrgsPMfTX7wv5U8jZGtqnsf0NmW1vZteLgKlPLZ+2tXn80/1725uH5wEOH74/TxzuLWTScXNdqsclGsCi91W65+lMtYXz/LveH3tSpiFOJq+b+t1S0NlNTsv/2Nh5a6zBQYD//y8Gd5XKrJiheLEfWiiGSGSd3swnmwe/+Id/2zuWrntyVUg9iKQByFgsCuo9gTfIqsOtNdyrLbf61ZMDqcBbpsJTipC1BOoiRgSIIiyInRdR1ASaYH2+BoQvQiE2xAPnTlDqvZ2XLQp/FNTvSa47CLsEg8H5eCQOKgpDaMJFcOqDt39d/BM5ARETzkgKEDoW8RvnrhJntt5qTvbTnN9XgVupwSHgYdNYGERWfz9X2wihdtjcfwxMILFQ4dgdeYCOorIuT0YG7v/K3n6w9ZQpl0q8OUoyHRR2GUBCsfCwDJgdASjcRXhaAJ370WT8oU3zutSkZFsTk0Md//c5831/kAWNF6YJiXH52cYtTJFZjxmEy9RjiMsAI0gOgHtjqoTOjXqvLJuUX77o+WdpPG/NPsvfmchq5NnMwsAAAAASUVORK5CYII=") no-repeat scroll 0 0;' + ' }' + '' + ' .jras-gui-btn-newdesign {' + ' border-radius: 3px;' + ' padding-left: 3px;' + ' padding-right: 3px;' + ' width: 24px;' + ' height: 22px;' + ' }' + ' .jras-gui-btn-pmme {' + ' background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA/ElEQVQ4T63TTyvEQRwH4GddnLko+XNycZe2nJRyc5OUHPw5yMlhSzns5qo4uEi5Skk5SznsRl6BG0ki70CbNJnR9sPP2jXHaT7Pd+Y7MwVtjkKbeQEYRLFFqBaAGYzg8o/IGKoJqGAKN00iwzjFegK6MI9tHP2CzGIFh3hOQB0nKKMba3jNQJ3YwRM2MY16I3AcA5PYxTju41xo9AWWcRbnQu++BQawhyGsoiMe7RaLeMgDUngBL9jCG0rowT6WIvJlB9excgg//tDIvgYkXOPnEXoxgbxwMhNyjrvUxANs5FTObigg4SbmAtCP0SYfUHbZ1b98phaLf8TeAXUaOZJ+0HVlAAAAAElFTkSuQmCC");' + ' background-repeat: no-repeat;' + ' background-position: center center;' + ' border: medium none;' + ' }' + ' .jras-gui-btn-deleteall {' + ' background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABV0lEQVQ4T4XTPUiXURTH8Y9D0NDkGCqNDb0NkRLS1GYQBL04+DJpQ1BQuJQiqIsGtQQlFASJgbS6pNAiKNJUBCJCQU0NbkHgG0fOH54uPv3v8jz3nN/93nPPS4v6dRoX0r2OraOkLWk8j9FC0Im2tH3H58I/jq8NwFk8/k80pWsfE/jWAITgAbqxh6cYwSccRxem0xbaJbyMnyrgWULCfhMLmMMJXEcv5jOUuH2sBDzMm+sAd/A+AcOYLQG3K4KjIqgCerBYAi5jJW9oBjiHLyWgAz9qANcwgHfpb8V2CTiGv5nYPrzOREYSozqRtBf4k4mNUv5Thdj/wkncywMfU3wGbzCFDUSXHq5qGWO/hkt4gn5EC0cE0ZHL2QfxvVoH+IAbWc4r2ExAQGIWhvAWg3WA57if72/H7wTsYBe3MFmdm/IJjzDTZCbu4lVdBKdwsQlgFT8bmgPWFkcRlMznyAAAAABJRU5ErkJggg==");' + ' background-repeat: no-repeat;' + ' background-position: center center;' + ' border: medium none;' + ' }' + ' .jras-gui-btn-resetdef {' + ' background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABF0lEQVQ4T6XTyypGURjG8d93A8pp4gIkp5AUIxegGMlhggsQkhswUJQBZaakMHO4DFPikwswxNRA9Grt7HZ2e5c12+t93/9+1rOe1fDP1SiZH8IMulP9GZe4K/YXAR04wAvO8ZgG+rCIqK/hNQPlAZ04wzoeSpQNYBcLeIuePOAC27m/lrkziA0s5QEjmMNWTU8ncIvPUDCVzveUzv8jrcbqCq8CEG5f4QQr+KoxHH07GMs8mMUNPmoMt+MIozguy0EVZxyToSID9CdXN6smU/0wqWjmFZxiD/cVkGGsYrmYg7YUpLjKMkhEPMybx3sREN+t2E/FSGUkMlRmUW5JIfoZ/guQ7fdiGj1pIzJyjWbVY6rp4W/bN3aAMKpdgLqNAAAAAElFTkSuQmCC");' + ' background-repeat: no-repeat;' + ' background-position: center center;' + ' border: medium none;' + ' }' + '' + '' + ' .jras-tooltip-user-awards-hide-btn-close{' + ' position: relative;' + ' box-shadow: 0 -4px 8px 0 rgb(0, 0, 0);' + ' margin-bottom: -6px;' + ' }' + ' .jras-tooltip-user-awards-hide-btn{' + ' background-color: rgb(80, 80, 80);' + ' height: 5px;' + ' width: 105%;' + ' margin-left: -5px;' + ' top: -4px;' + ' border-radius: 0 0 10px 10px;' + ' }' + ' .jras-tooltip-user-awards-hide-btn:hover{' + ' background-color: rgb(0, 135, 21);' + ' }' + ' .jras-prop-gui-content, .jras-prop-gui-contentTop, .jras-prop-gui-contentBottom{' + ' background-color: #2F2E2E;' + ' position: absolute;' + ' top: 0;' + ' left: 0;' + ' width: 100%;' + ' height: 30px;' + ' overflow: hidden;' + ' }' + ' .jras-prop-gui-contentTop{' + ' margin-bottom: 5px;' + ' }' + ' .jras-prop-gui-contentBottom{' + ' top: auto;' + ' bottom: 0;' + ' height: 30px;' + ' overflow: hidden;' + ' margin-top: 5px;' + ' }' + ' .jras-prop-gui-contentMain{' + ' position: absolute;' + ' top: 30px;' + ' left: 0;' + ' right: 0;' + ' bottom: 30px;' + ' overflow: auto;' + ' background-color: #262626;' + ' }' + ' .jras-prop-gui-section{' + ' margin-top: 5px;' + ' margin-bottom: 14px;' + ' }' + ' .jras-prop-gui-button-right{' + ' padding-left: 20px;' + ' right: 0px;' + ' padding-right: 20px;' + ' margin-right: 5px;' + ' position: absolute;' + ' margin-top: 4px;' + ' height: 22px;' + ' }' + ' .jras-prop-gui-button-left{' + ' left: 0px;' + ' margin-left: 5px;' + ' margin-top: 4px;' + ' cursor: pointer;' + ' }' + '' + ' .jras-topbar_wr {height: 10px;}' + ' .jras-topbar_wr:hover {height: 48px;}' + ' .jras-topbar_wr:hover .topbar_inner {display: block;}' + ' .jras-topbar_inner { display: none;}' + '' + ' .jras-tabs-panel-content {padding: 6px 10px;}' + '' + ' #jras-prop-gui-dialog{' + ' border: 0;' + ' width: 100%;' + ' }' + ' #jras-prop-gui-dialog .jras-tabs-nav{' + ' margin-left: 6px;' + ' margin-top: 6px;' + ' float: left;' + ' width: 25%;' + ' border: 0;' + ' background: none;' + ' }' + ' #jras-prop-gui-dialog .jras-tabs-nav li{' + ' height: 30px;' + ' clear: left;' + ' width: 100%;' + ' margin: 0 0 5px 0;' + ' background: #2d2d2d none repeat scroll 0 0;' + ' border: 0 none;' + ' padding: 0 0 3px 5px;' + ' font-weight: normal;' + ' border-radius: 3px;' + ' }' + ' #jras-prop-gui-dialog .jras-tabs-nav li.ui-tabs-active{' + ' background-color: #3e7a35;' + ' }' + ' #jras-prop-gui-dialog .jras-tabs-nav li.ui-state-focus{' + ' background-color: #2b5326;' + ' }' + ' #jras-prop-gui-dialog .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited{' + ' line-height: 30px;' + ' color: #818181;' + ' text-decoration: none;' + ' }' + ' #jras-prop-gui-dialog .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited{' + ' color: #d4d4d4;' + ' font-weight: bold;' + ' text-decoration: none;' + ' line-height: 30px;' + ' }' + ' #jras-prop-gui-dialog .jras-tabs-panel{' + ' box-shadow: -1px 0 20px 0 #000000;' + ' border: 0;' + ' left: 25%;' + ' height: 100%;' + ' overflow: auto;' + ' position: absolute;' + ' float: right;' + ' right: 0;' + ' }' + '' + ' /* Окно настроек */' + ' .modal {' + ' z-index: 1000;' + ' opacity: 0;' + ' visibility: hidden;' + ' position: fixed;' + ' top: 0;' + ' right: 0;' + ' bottom: 0;' + ' left: 0;' + ' text-align: left;' + ' background: rgba(0,0,0, .9);' + ' transition: opacity .25s ease;' + ' }' + ' .modal__bg {' + ' position: absolute;' + ' top: 0;' + ' right: 0;' + ' bottom: 0;' + ' left: 0;' + ' cursor: pointer;' + ' }' + ' .modal-state {' + ' display: none;' + ' }' + ' .modal-state:checked + .modal {' + ' opacity: 1;' + ' visibility: visible;' + ' }' + ' .modal-state:checked + .modal .modal__inner {' + ' top: 0;' + ' }' + ' .modal__inner {' + ' transition: top .25s ease;' + ' position: absolute;' + ' top: -20%;' + ' width: 55%;' + ' margin-left: 42%;' + ' margin-top: 20px;' + ' overflow: auto;' + ' background: #fff;' + ' border-radius: 5px;' + ' height: 55%;' + ' }' + ' .modal__close {' + ' position: absolute;' + ' right: 8px;' + ' top: 8px;' + ' width: 1.1em;' + ' height: 1.1em;' + ' cursor: pointer;' + ' }' + ' .modal__close:after,' + ' .modal__close:before {' + ' content: "";' + ' position: absolute;' + ' width: 2px;' + ' height: 1.5em;' + ' background: #ccc;' + ' display: block;' + ' transform: rotate(45deg);' + ' left: 50%;' + ' margin: -3px 0 0 -1px;' + ' top: 0;' + ' }' + ' .modal__close:hover:after,' + ' .modal__close:hover:before {' + ' background: #aaa;' + ' }' + ' .modal__close:before {' + ' transform: rotate(-45deg);' + ' }' + ' @media screen and (max-width: 768px) {' + ' .modal__inner {' + ' width: 93%;' + ' height: 93%;' + ' margin-left: 3%;' + ' box-sizing: border-box;' + ' }' + ' }' + ' @media screen and (max-height: 600px) {' + ' .modal__inner {' + ' height: 75%;' + ' box-sizing: border-box;' + ' }' + ' }' + ' @media screen and (max-height: 400px) {' + ' .modal__inner {' + ' height: 91%;' + ' box-sizing: border-box;' + ' }' + ' }' ); } function makeBlockPostElements(forElm, parentID, blockMess, blockMessBold, blockMessDesc){ if($('#togglebutton' + parentID)[0]){ return } var newElement = document.createElement("input"); newElement.style.marginRight = '30px'; newElement.style.paddingLeft = '20px'; newElement.style.paddingRight = '20px'; newElement.id = 'togglebutton' + parentID; newElement.type = 'button'; newElement.value = curLng.getVal('JRAS_TOGGLEBUTTONCAPTIONSHOW'); newElement.onclick = function(){ var toggleContainer = $('#' + parentID + ' > div'); var buttonCaption = toggleContainer.css('display') != 'none' ? curLng.getVal('JRAS_TOGGLEBUTTONCAPTIONHIDE') : curLng.getVal('JRAS_TOGGLEBUTTONCAPTIONSHOW'); toggleContainer.slideToggle('display'); $('#togglebutton' + parentID).attr("value", buttonCaption); }; forElm.parentElement.insertBefore(newElement, forElm); var newDIV = document.createElement("div"); newDIV.style.display = 'inline'; forElm.parentElement.insertBefore(newDIV, forElm); newElement = document.createElement("span"); newElement.textContent = blockMess; newDIV.appendChild(newElement); newElement = document.createElement("span"); newElement.style.fontWeight = 'bold'; newElement.textContent = blockMessBold; newDIV.appendChild(newElement); newElement = document.createElement("span"); newElement.textContent = blockMessDesc; newDIV.appendChild(newElement); } function makeBlockCommElements(forElm, parentID, blockMess, blockMessBold, blockMessDesc){ if($('#newToggle_' + parentID)[0]){ return } var newDIV = document.createElement("div"); newDIV.id = 'newToggle_' + parentID; newDIV.style.display = 'inline'; forElm.parentElement.insertBefore(newDIV, forElm); var newElement = document.createElement("span"); newElement.textContent = blockMess; newElement.style.cursor = 'pointer'; newElement.style.color = 'rgb(242, 119, 119)'; // newElement.className = 'comment_show'; if(isNewDesign){ newElement.style.paddingLeft = '20px'; } newElement.onclick = function(){ $('#' + parentID + ' > div.txt').slideToggle('display'); }; newDIV.appendChild(newElement); newElement = document.createElement("span"); newElement.style.fontWeight = 'bold'; newElement.textContent = blockMessBold; newDIV.appendChild(newElement); newElement = document.createElement("span"); newElement.textContent = blockMessDesc; newDIV.appendChild(newElement); } function isNewVersion(currLoc){ var regEx = /^((https?:)(\/\/\/?)([\w]*(?::[\w]*)?@)?([\d\w\.-]+)(?::(\d+))?)?([\/\\\w\.()-]*)?(?:([?][^#]*)?(#.*)?)*/gmi; var matches = regEx.exec(currLoc); if(matches[5] == undefined){ return false } return matches[5] != 'old.reactor.cc'; } function pageIs(page){ var retVal = false; var regEx = /^((https?:)(\/\/\/?)([\w]*(?::[\w]*)?@)?([\d\w\.-]+)(?::(\d+))?)?([\/\\\w\.()-]*)?(?:([?][^#]*)?(#.*)?)*/gmi; var matches = regEx.exec(currentPage); if(matches[7] !== undefined){ if (matches[7].match(new RegExp('.*(' + page + ').*'))){ retVal = true; } } return retVal; } function getHideAwardsCountList(){ var retVal = ''; for(var i = 0; i < 101; i += 5){ if (i != 0 && i < 20){continue} retVal += '<option value="' + i + '">' + i + '</option>'; } return retVal; } function getShowAwardsCountList(){ var retVal = ''; for(var i = 10; i < 101; i += 10){ retVal += '<option value="' + i + '">' + i + '</option>'; } return retVal; } function initLng(){ return { getVal: function(val){ var cl = userOptions.val('currentLng'); if(!this[val][cl]){ return this[val]['ru']; } return this[val][cl]; }, getHTMLList: function(){ var retVal = ''; for(var a in this.JRAS_LANGLIST){ retVal += '<option value="' + a + '">' + this.JRAS_LANGLIST[a] + '</option>'; } return retVal; }, JRAS_LANGLIST: { ru: 'Русский', en: 'English' }, JRAS_POSTBLOCKBYUSER: { ru: 'Пост заблокированного пользователя: ', en: 'Post is blocked by Username: ' }, JRAS_TOGGLEBUTTONCAPTIONHIDE: { ru: 'Скрыть', en: 'Hide' }, JRAS_TOGGLEBUTTONCAPTIONSHOW: { ru: 'Показать', en: 'Show' }, JRAS_POSTBLOCKBYTAG: { ru: 'Пост заблокированый по тегам: ', en: 'Post is blocked by Tag: ' }, JRAS_COMMBLOCKBYUSER: { ru: 'Коментарий заблокированного пользователя: ', en: 'Comment is blocked by Username: ' }, JRAS_GUI_SELECTLANGUAGE: { ru: 'Язык интерфейса: ', en: 'Language: ' }, JRAS_GUI_MAKETREECOMMENTS: { ru: ' Создавать дерево коментариев', en: ' Makr tree comments' }, JRAS_GUI_TREECOMMENTSONLYFULLPOST: { ru: ' Дерево коментариев только для полного поста', en: ' treeCommentsOnlyFullPost' }, JRAS_GUI_WHENCOLLAPSEMAKEREAD: { ru: ' При сворачивании комментариев все дочерние помечаются прочитанными', en: ' whenCollapseMakeRead' }, JRAS_GUI_FIXEDTOPBAR: { ru: ' Зафиксировать верхнюю панель наверху окна', en: ' fixedTopbar' }, JRAS_GUI_HIDEFIXEDTOPBAR: { ru: ' Скрывать зафиксированную верхнюю панель', en: ' hideFixedTopbar' }, JRAS_GUI_ISTOBELOADINGUSERDATA: { ru: ' Загружать данные пользователя для Tooltip\u0027а', en: ' isToBeLoadingUserData' }, JRAS_GUI_HIDEUSERAWARDSWHEN: { ru: ' Если медалек больше чем: ', en: ' hideUserAwardsWhen: ' }, JRAS_GUI_MINSHOWUSERAWARDS: { ru: ' то показывать первые: ', en: ' minShowUserAwards: ' }, JRAS_GUI_SHOWTOOLTIPONLINE: { ru: ' Показывать в ленте', en: ' showTooltipOnLine' }, JRAS_GUI_SHOWTOOLTIPONCOMMENT: { ru: ' Показывать в коментариях', en: ' showTooltipOnComment' }, JRAS_GUI_SHOWTOOLTIPONPRIVATEMESS: { ru: ' Показывать на странице ПМ', en: ' showTooltipOnPrivateMess' }, JRAS_GUI_SHOWTOOLTIPONPEOPLE: { ru: ' Показывать на странице Люди', en: ' showTooltipOnPeople' }, JRAS_GUI_SHOWTOOLTIPONSIDEBARTOPUSERS: { ru: ' Показывать в правом баре для юзеров топа', en: ' showTooltipOnSidebarTopUsers' }, JRAS_GUI_SHOWTOOLTIPONSIDEBARONLINE: { ru: ' Показывать в правом баре для аватарок', en: ' showTooltipOnSidebarOnline' }, JRAS_GUI_CHATLANETOPACAKI: { ru: ' Убирать цветовую отметку донатера', en: ' chatlaneToPacaki' }, JRAS_GUI_BLOCKUSERLIST: { ru: 'Заблокированные пользователи', en: 'Blocked users' }, JRAS_GUI_BLOCKTAGLIST: { ru: 'Заблокированные теги', en: 'Blocked tags' }, JRAS_GUI_BTNSAVE: { ru: 'Сохранить', en: 'Save' }, JRAS_GUI_BTNSENDPMME: { ru: 'Отправить мне персональное сообщение', en: 'Send PM for me' }, JRAS_GUI_BTNDELETESETT: { ru: 'Удалить все сохраненные данные', en: 'Delete all saved data' }, JRAS_GUI_BTNRESETSETT: { ru: 'Настройки по умолчанию', en: 'Reset settings to default' }, JRAS_GUI_TABMAIN: { ru: 'Общие', en: 'General' }, JRAS_GUI_TABBLOCK: { ru: 'Блокировки', en: 'Blocks' }, JRAS_GUI_TABTOOLTIP: { ru: 'Tooltip\u0027ы', en: 'Tooltips' }, JRAS_LOADINGUSERDATA: { ru: 'Загрузка данных...', en: 'Load data...' }, JRAS_SENDPRIVMESS: { ru: 'Отправить сообщение', en: 'Send message' }, JRAS_ADDFRIEND: { ru: 'Добавить в друзья', en: 'Add as friend' }, JRAS_REMOVEFRIEND: { ru: 'Удалить из друзей', en: 'Remove from friends' }, JRAS_BLOCKUSER_JR: { ru: 'Блокировать юзера (JR)', en: 'Block user (JR)' }, JRAS_UNBLOCKUSER_JR: { ru: 'Разблокировать юзера (JR)', en: 'Unblock user (JR)' }, JRAS_BLOCKUSER_JRAS: { ru: 'Блокировать юзера (JRAS)', en: 'Block user (JRAS)' }, JRAS_UNBLOCKUSER_JRAS: { ru: 'Разблокировать юзера (JRAS)', en: 'Unblock user (JRAS)' }, JRAS_SENDPMDIALOG_SENDBUTTON: { ru: 'Отправить', en: 'Send' }, JRAS_SENDPMDIALOG_CLOSEBUTTON: { ru: 'Закрыть', en: 'Close' }, JRAS_SENDPMDIALOG_HEADERCAPTION: { ru: 'Отправка сообщения для ', en: 'Send message for ' }, JRAS_SENDPMDIALOG_SENDMESS: { ru: 'Отправка данных...', en: 'Sending...' } } } }());