Guest User

PrideLands.ru & Yiff.ru user-script for Opera

a guest
Aug 14th, 2014
278
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //- PrideLands.ru / Yiff.ru
  2. //- v. 0.3.1
  3. //---------------
  4.  
  5. var confSmiles = true;
  6. var strPreview = "Предпросмотр",
  7.     strAvatar = "Аватар";
  8.  
  9. Node.prototype.p = function () { return this.parentNode; }
  10. Node.prototype.c = function (a) { return this.childNodes[a]; }
  11. Node.prototype.sel = function (a) { return this.selectNodes(a); }
  12. Node.prototype.sel1 = function (a) { return this.selectSingleNode(a); }
  13. Object.prototype.asgn = function (a) { for (var i in a) this[i] = i != 'onclick' ? a[i] : Function(a[i]); return this; };
  14. var newe = function (a) { return document.createElement(a); },
  15.     newx = function (a, b) { return document.createElement(a).asgn(b); },
  16.     newt = function (a) { return document.createTextNode(a); },
  17.     sel  = function (a) { return document.sel(a); },
  18.     sel1 = function (a) { return document.sel1(a); },
  19.     gid  = function (a) { return document.getElementById(a); };
  20.  
  21. if (location.href.search(/(pridelands|yiff)\.ru\/forum\.(tlk|yiff)\?a=showonline/) != -1) {
  22.  
  23.   window.addEventListener(
  24.     'DOMContentLoaded',
  25.     function () {
  26.  
  27.       // Online users - avatars
  28.       var tbl = document.selectNodes("//table[@class='stable']")[1];
  29.       var th = document.createElement('th');
  30.       th.innerHTML = strAvatar;
  31.       tbl.rows[0].insertBefore(th, tbl.rows[0].cells[0]);
  32.       for (var i = 1, row; row = tbl.rows[i]; ++i) {
  33.         var td = document.createElement('td'),
  34.             uid = row.cells[0].selectSingleNode('a').href.match(/(\d+)$/)[1];
  35.         td.innerHTML = '<img onload="this.nextSibling.parentNode.removeChild(this.nextSibling)" '+
  36.                             'alt="" src="/avatars/'+uid+'.jpg">'+
  37.                        '<img alt="" src="/avatars/'+uid+'.gif">';
  38.         td.align = 'center';
  39.         row.insertBefore(td, row.cells[0]);
  40.       }
  41.  
  42.     },
  43.     false
  44.   );
  45. }
  46.  
  47. if (location.host.search(/(pridelands|yiff)\.ru/) != -1) {
  48.   var smiles = {
  49.     ':sad:': 'smile_sad.gif',
  50.     ':cute:': 'smile_acute.gif',
  51.     ':assin:': 'smile_assassin.gif',
  52.     ':beach:': 'smile_beach.gif',
  53.     ':beye:': 'smile_beye.gif',
  54.     ':car:': 'smile_car.gif',
  55.     ':drag:': 'smile_drag.gif',
  56.     ':hi:': 'smile_hi.gif',
  57.     ':king:': 'smile_king.gif',
  58.     ':lazy:': 'smile_lazy.gif',
  59.     ':read:': 'smile_read.gif',
  60.     ':scenic:': 'smile_scenic.gif',
  61.     ':secr:': 'smile_secret.gif',
  62.     ':suic:': 'smile_suicide.gif',
  63.     ':super:': 'smile_superman.gif',
  64.     ':swoon:': 'smile_swoon.gif',
  65.     ':tease:': 'smile_tease.gif',
  66.     ':uzhas:': 'smile_uzhas.gif',
  67.     ':wizz:': 'smile_wizard.gif',
  68.     ':yes:': 'smile_yes.gif',
  69.     ':(': 'smile_sad.gif',
  70.     '=(': 'smile_sad.gif',
  71.     ':-(': 'smile_sad.gif',
  72.     ':-l': 'smile_frustrated.gif',
  73.     ':!:': 'smile_exclamation.gif',
  74.     ':?:': 'smile_question.gif',
  75.     '[-(': 'smile_nottalking.gif',
  76.     '[(': 'smile_nottalking.gif',
  77.     ':)>': 'smile_peace.gif',
  78.     ':x': 'smile_lovestruck.gif',
  79.     '$-)': 'smile_moneyeyes.gif',
  80.     '$)': 'smile_moneyeyes.gif',
  81.     ':s': 'smile_worried.gif',
  82.     ':-s': 'smile_worried.gif',
  83.     ':wist:': 'smile_whistling.gif',
  84.     '=;': 'smile_talktothehand.gif',
  85.     ':alien:': 'smile_alien1.gif',
  86.     'i-)': 'smile_sleep.gif',
  87.     'i)': 'smile_sleep.gif',
  88.     ':o': 'smile_shocked.gif',
  89.     ':о': 'smile_shocked.gif',
  90.     ':-o': 'smile_shocked.gif',
  91.     ':-о': 'smile_shocked.gif',
  92.     'o:)': 'smile_angel.gif',
  93.     'o:-)': 'smile_angel.gif',
  94.     'о:)': 'smile_angel.gif',
  95.     'о:-)': 'smile_angel.gif',
  96.     'x(': 'smile_angry.gif',
  97.     'x-(': 'smile_angry.gif',
  98.     'х(': 'smile_angry.gif',
  99.     'х-(': 'smile_angry.gif',
  100.     ':mad:': 'smile_angry.gif',
  101.     '=d>': 'smile_applause.gif',
  102.     ':d>': 'smile_applause.gif',
  103.     '=>': 'smile_arrow.gif',
  104.     '8|': 'smile_bigeyes.gif',
  105.     '8-)': 'smile_bigeyes.gif',
  106.     ':d': 'smile_biggrin.gif',
  107.     ':-d': 'smile_biggrin.gif',
  108.     ':))': 'smile_biggrin.gif',
  109.     ':>': 'smile_blushing.gif',
  110.     ':->': 'smile_blushing.gif',
  111.     ':blush:': 'smile_blush.gif',
  112.     ':o)': 'smile_clown.gif',
  113.     ':о)': 'smile_clown.gif',
  114.     ':/': 'smile_confused.gif',
  115.     ':conf:': 'smile_confused2.gif',
  116.     ':\\': 'smile_confused.gif',
  117.     ':-\\': 'smile_confused.gif',
  118.     ':-/': 'smile_confused.gif',
  119.     ':cold:': 'smile_cold.gif',
  120.     'b)': 'smile_cool.gif',
  121.     'b-)': 'smile_cool.gif',
  122.     'bd': 'smile_cool.gif',
  123.     'b-d': 'smile_cool.gif',
  124.     ':cool:': 'smile_cool2.gif',
  125.     ':cool2:': 'smile_cool3.gif',
  126.     ':razz:': 'smile_razz.gif',
  127.     '=p~': 'smile_drooling.gif',
  128.     '=р~': 'smile_drooling.gif',
  129.     ':p~': 'smile_drooling.gif',
  130.     ':р~': 'smile_drooling.gif',
  131.     ']:)': 'smile_devilish.gif',
  132.     '):)': 'smile_cowboy.gif',
  133.     ':\'(': 'smile_crying.gif',
  134.     ':\'-(': 'smile_crying.gif',
  135.     ':\'((': 'smile_crying.gif',
  136.     ':\'-((': 'smile_crying.gif',
  137.     ':((': 'smile_cry.gif',
  138.     ':cry:': 'smile_cry.gif',
  139.     '@-)': 'smile_hypnotized.gif',
  140.     '@)': 'smile_hypnotized.gif',
  141.     '[-x': 'smile_shameonyou.gif',
  142.     '[x': 'smile_shameonyou.gif',
  143.     '[-х': 'smile_shameonyou.gif',
  144.     '[х': 'smile_shameonyou.gif',
  145.     '8-|': 'smile_rollingeyes.gif',
  146.     '8|': 'smile_rollingeyes.gif',
  147.     ':rolleye:': 'smile_rolleye2.gif',
  148.     '/:)': 'smile_raisedeyebrow.gif',
  149.     '\\:)': 'smile_raisedeyebrow.gif',
  150.     '%)': 'smile_raisedeyebrow.gif',
  151.     '%-)': 'smile_raisedeyebrow.gif',
  152.     '%%-': 'smile_goodluck.gif',
  153.     ':)': 'smile_happy.gif',
  154.     ':-)': 'smile_happy.gif',
  155.     '=)': 'smile_happy.gif',
  156.     '[:d]': 'smile_hugs.gif',
  157.     '[:)]': 'smile_hugs.gif',
  158.     ':idea:': 'smile_idea.gif',
  159.     ':yawn:': 'smile_yawn.gif',
  160.     ':*': 'smile_kiss.gif',
  161.     ':-*': 'smile_kiss.gif',
  162.     ':)))': 'smile_laughing.gif',
  163.     ':-)))': 'smile_laughing.gif',
  164.     ':^o': 'smile_liarliar.gif',
  165.     ':b': 'smile_nerd.gif',
  166.     ':-b': 'smile_nerd.gif',
  167.     ':o<': 'smile_praying.gif',
  168.     ':о<': 'smile_praying.gif',
  169.     '@-/--': 'smile_rose.gif',
  170.     '@};-': 'smile_rose.gif',
  171.     ':rose:': 'smile_rose2.gif',
  172.     ':-$': 'smile_shhh.gif',
  173.     ':$': 'smile_shhh.gif',
  174.     ':&': 'smile_sick.gif',
  175.     ':-&': 'smile_sick.gif',
  176.     ':-?': 'smile_thinking.gif',
  177.     ':?': 'smile_thinking.gif',
  178.     '(:|': 'smile_tired.gif',
  179.     ':p': 'smile_tongue.gif',
  180.     ':-p': 'smile_tongue.gif',
  181.     ':р': 'smile_tongue.gif',
  182.     ':-р': 'smile_tongue.gif',
  183.     ';)': 'smile_wink.gif',
  184.     ';))': 'smile_wink.gif',
  185.     ';-)': 'smile_wink.gif',
  186.     ':wink:': 'smile_wink2.gif',
  187.     '8d': 'smile_bigeyes2.gif',
  188.     ':.': 'smile_raisedeyebrow2.gif',
  189.     ':bangin:': 'smile_bangin.gif',
  190.     ':bang:': 'smile_bang.gif',
  191.     ':bee:': 'smile_bee.gif',
  192.     ':bleh:': 'smile_bleh.gif',
  193.     ':blink:': 'smile_blink.gif',
  194.     ':bomb:': 'smile_bomb.gif',
  195.     ':book:': 'smile_book.gif',
  196.     ':bye:': 'smile_bye1.gif',
  197.     ':bye2:': 'smile_bye2.gif',
  198.     ':cnsrd:': 'smile_censored.gif',
  199.     ':chair:': 'smile_chair.gif',
  200.     ':crazy:': 'smile_crazy.gif',
  201.     ':crazy2:': 'smile_crazy2.gif',
  202.     ':dead:': 'smile_dead.gif',
  203.     ':devil:': 'smile_devil.gif',
  204.     ':devil2:': 'smile_devil2.gif',
  205.     ':beer:': 'smile_beer.gif',
  206.     ':drink:': 'smile_drink.gif',
  207.     ':tea:': 'smile_tea.gif',
  208.     ':dry:': 'smile_dry.gif',
  209.     ':fool:': 'smile_fool.gif',
  210.     ':ggg:': 'smile_gggg.gif',
  211.     ':good:': 'smile_good.gif',
  212.     ':haha:': 'smile_haha.gif',
  213.     ':happy:': 'smile_happy2.gif',
  214.     ':huh:': 'smile_huh.gif',
  215.     ':lol:': 'smile_lol1.gif',
  216.     ':lol2:': 'smile_lol2.gif',
  217.     ':mell:': 'smile_mellow.gif',
  218.     ':ninja:': 'smile_ninja.gif',
  219.     ':notme:': 'smile_notme.gif',
  220.     ':ohmy:': 'smile_ohmy.gif',
  221.     ':ok:': 'smile_ok.gif',
  222.     ':pilot:': 'smile_pilot.gif',
  223.     ':riseye:': 'smile_riseeye.gif',
  224.     ':sad:': 'smile_sad.gif',
  225.     ':search:': 'smile_search.gif',
  226.     ':sila:': 'smile_sila.gif',
  227.     ':slap:': 'smile_slap.gif',
  228.     ':sleep:': 'smile_sleep.gif',
  229.     ':soska:': 'smile_soska.gif',
  230.     ':stroke:': 'smile_stroke.gif',
  231.     ':tongu:': 'smile_tongu.gif',
  232.     ':vic:': 'smile_victory.gif',
  233.     ':yahoo:': 'smile_yahoo.gif',
  234.     ':tdown:': 'smile_thumbdow.gif',
  235.     ':tup:': 'smile_thumbup.gif',
  236.     ':unsure:': 'smile_unsure.gif',
  237.     ':wacko:': 'smile_wacko.gif',
  238.  
  239.     'f:p': 'smile_fbee.gif',
  240.     'f:-p': 'smile_fbee.gif',
  241.     ':3': 'smile_fbee.gif',
  242.     ';3': 'smile_fbee.gif',
  243.     'f:\'(': 'smile_fcry.gif',
  244.     'f:dog': 'smile_fdog.gif',
  245.     'f:grr': 'smile_fgrr.gif',
  246.     'f:cat:': 'smile_ficon_cat.gif',
  247.     'f:d': 'smile_flough.gif',
  248.     'f:-d': 'smile_flough.gif',
  249.     'f:love:': 'smile_flove.gif',
  250.     'f:nifiga:': 'smile_fnifiga.gif',
  251.     'f:)': 'smile_fsmile.gif',
  252.     'f:-)': 'smile_fsmile.gif',
  253.     'f:\'(': 'smile_fsmush.gif',
  254.     'f;)': 'smile_fswing.gif',
  255.     'f:>': 'smile_flo.gif',
  256.     'f:|': 'smile_fwhat.gif',
  257.     'f:/': 'smile_fwhat.gif',
  258.     'f:\\': 'smile_fwhat.gif',
  259.     'f8|': 'smile_frolledeye.gif',
  260.  
  261.     ':ban:': 'smile_banned.gif',
  262.     ':offtop:': 'smile_off.gif',
  263.     ':spam:': 'smile_spam.gif'
  264.   };
  265.  
  266.   function convSmile (str, m1, m2)
  267.   {
  268.     var sm = smiles[m2];
  269.     return sm ? " <img src=\"i/" + sm + "\" border=0 alt=\" \"> " : str;
  270.   }
  271.  
  272.   function preView (lnk, i) {
  273.     var s = gid('mess'+i),
  274.         v = s.value,
  275.         t = gid('preview'+i);
  276.  
  277.     if (!CheckSend()) {
  278.       t.style.display = 'none';
  279.       return;
  280.     }
  281.  
  282.     v = v.replace(/\n/ig, '<br>');
  283.     v = v.replace(/\[(\/)?(b|i|u|s|sup|sub)\]/ig, "<$1$2>");
  284.     v = v.replace(/\[q\]/ig, "<div class=d1>");
  285.     v = v.replace(/\[code\](\<br\>)?/ig, "<pre>");
  286.     v = v.replace(/\[\/code\]/ig, "</pre>");
  287.  
  288.     v = v.replace(/\[(left|center|right)\]/ig, "<div class=$1>");
  289.  
  290.     v = v.replace(/\[\/(q|left|right|center)\]/ig, "</div>");
  291.  
  292.     v = v.replace(/\[hr\](\<br\>)?/ig, "<hr noshade size=\"1\">");
  293.  
  294.     v = v.replace(/\[color=([^\]]*)?\]/ig, "<font style=\"color:#$1\">");
  295.     v = v.replace(/\[\/color\]/ig, "</font>");
  296.  
  297.     v = v.replace(/\[url\]/ig, "<a>");
  298.     v = v.replace(/\[url=([^\]]*)?\]/ig, "<a href=\"$1\">");
  299.     v = v.replace(/\[\/url\]/ig, "</a>");
  300.  
  301.     v = v.replace(/\[list\](\<br\>)?/ig, "<ul>");
  302.     v = v.replace(/\[\/list\](\<br\>)?/ig, "</ul>");
  303.     v = v.replace(/\[\*\]/ig, "<li>");
  304.  
  305.     v = v.replace(/\[img\]([^\[]*)?\[\/img\]/ig, "<img alt=\" \" src=\"$1\">");
  306.  
  307.     if (confSmiles)
  308.       v = v.replace(new RegExp("(^| )?(([:fF]+\\w+:)|([a-zA-Zа-яА-Я_/\\\\:;^\\+\\'\\.!?()\\[\\]$~&%\\-@{}\\d#=|*<>]{2,8}[(){}]*))", 'g'), convSmile);
  309.  
  310.     t.innerHTML = "<b>"+strPreview+":</b><br>" + v;
  311.     t.style.display = 'block';
  312.   }
  313.  
  314.   window.addEventListener(
  315.     'DOMContentLoaded',
  316.     function () {
  317.  
  318.       // Styles
  319.       sel1("/html/head").appendChild(newx('style', {innerHTML:
  320.         "div.preview { width: 408px; padding: 5px; margin-top: 5px; }"+
  321.         ".bb { margin: 3px 0px 0px 3px; padding: 2px 1px; }"
  322.       }));
  323.  
  324.       // Preview message, resize edit box
  325.       var txts = sel("//textarea[@name='mess']");
  326.       for (var i=0, txt; txt = txts[i]; ++i) {
  327.         var but = txt.sel1("following::input[@type='submit']");
  328.         txt.id = 'mess'+i;
  329.         txt.tabIndex = 0;
  330.         but.className= 'in2';
  331.         but = but.p();
  332.         but.appendChild(newt("  "));
  333.         but.appendChild(newx('input', {type: 'button', value: strPreview, className: 'in2', onclick: "preView(this, "+i+")"}));
  334.         but.appendChild(newx('div', {id: 'preview'+i, className: 'in1 preview', style: "display: none"}));
  335.       }
  336.  
  337.       // BB tags
  338.       var but = sel1("//td/a[@onclick=\"return wo('./shablons/ubbhelp.html', 400, 400);\"]");
  339.       if (but) {
  340.         but = but.p();
  341.         but.appendChild(newx('p', {}));
  342.         but.appendChild(newx('button', {innerHTML: '<b>B</b>', className: 'in2 bb', style: 'width: 20px', tabIndex: '-1', onclick: "ins2('[b]','[/b]')"}));
  343.         but.appendChild(newx('button', {innerHTML: '<i>I</i>', className: 'in2 bb', style: 'width: 20px', tabIndex: '-1', onclick: "ins2('[i]','[/i]')"}));
  344.         but.appendChild(newx('button', {innerHTML: '<u>U</u>', className: 'in2 bb', style: 'width: 20px', tabIndex: '-1', onclick: "ins2('[u]','[/u]')"}));
  345.         but.appendChild(newx('button', {innerHTML: '<s>S</s>', className: 'in2 bb', style: 'width: 20px', tabIndex: '-1', onclick: "ins2('[s]','[/s]')"}));
  346.         but.appendChild(newx('br', {}));
  347.         but.appendChild(newx('button', {innerHTML: 'url', className: 'in2 bb', style: 'width: 43px', tabIndex: '-1', onclick: "ins2('[url]','[/url]')"}));
  348.         but.appendChild(newx('button', {innerHTML: 'img', className: 'in2 bb', style: 'width: 43px', tabIndex: '-1', onclick: "ins2('[img]','[/img]')"}));
  349.         but.appendChild(newx('br', {}));
  350.         but.appendChild(newx('button', {innerHTML: 'code', className: 'in2 bb', style: 'width: 36px', tabIndex: '-1', onclick: "ins2('[code]','[/code]')"}));
  351.         but.appendChild(newx('button', {innerHTML: 'list', className: 'in2 bb', style: 'width: 27px', tabIndex: '-1', onclick: "ins2('[list]','[/list]')"}));
  352.         but.appendChild(newx('button', {innerHTML: '*', className: 'in2 bb', style: 'width: 20px', tabIndex: '-1', onclick: "ins('[*]')"}));
  353.         but.appendChild(newx('br', {}));
  354.         but.appendChild(newx('button', {innerHTML: '&lt;', className: 'in2 bb', style: 'width: 28px; padding-right: 10px', tabIndex: '-1', onclick: "ins2('[left]','[/left]')"}));
  355.         but.appendChild(newx('button', {innerHTML: '&lt;&gt;', className: 'in2 bb', style: 'width: 27px', tabIndex: '-1', onclick: "ins2('[center]','[/center]')"}));
  356.         but.appendChild(newx('button', {innerHTML: '&gt;', className: 'in2 bb', style: 'width: 28px; padding-left: 10px', tabIndex: '-1', onclick: "ins2('[right]','[/right]')"}));
  357.         but.appendChild(newx('br', {}));
  358.         but.appendChild(newx('button', {innerHTML: 'Quote', className: 'in2 bb', style: 'width: 89px', tabIndex: '-1', onclick: "ins2('[q]','[/q]')"}));
  359.       }
  360.  
  361.     },
  362.     false
  363.   );
  364. }
RAW Paste Data