Advertisement
johnburn

rainbow.user.js

Oct 17th, 2012
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name          johnRainbow
  3. // @namespace    http://w3.tbd.my/
  4. // @description   Masukkan shoutbox ngan rainbow text
  5. // @include       http://w3.tbd.my/index.php
  6. // @include       http://w3.tbd.my/
  7. // ==/UserScript==
  8.  
  9. function init() {
  10.     var textarea = document.getElementById("shout_data");
  11.     var img = document.createTextNode("[ rainbow ]");
  12.     button = document.createElement('a');
  13.     button.href = '#';
  14.     button.addEventListener('click', MakeSFX, false);
  15.     button.appendChild(img);
  16.     textarea.parentNode.insertBefore(button, textarea);
  17. }
  18.  
  19.  
  20. function tohex(decval) {
  21.     var l, h;
  22.     var str = "";
  23.  
  24.     l = Math.floor(decval % 16);
  25.     h = Math.floor(decval / 16);
  26.  
  27.     if (h < 10) {
  28.         str = "" + h;
  29.     }
  30.     if (h > 9) {
  31.         switch (h) {
  32.         case 10:
  33.             str = "A";
  34.             break;
  35.         case 11:
  36.             str = "B";
  37.             break;
  38.         case 12:
  39.             str = "C";
  40.             break;
  41.         case 13:
  42.             str = "D";
  43.             break;
  44.         case 14:
  45.             str = "E";
  46.             break;
  47.         case 15:
  48.             str = "F";
  49.             break;
  50.         default:
  51.             str = "X";
  52.             break;
  53.         }
  54.     }
  55.  
  56.     if (l < 10) {
  57.         str = str + "" + l;
  58.     }
  59.     if (l > 9) {
  60.         switch (l) {
  61.         case 10:
  62.             str += "A";
  63.             break;
  64.         case 11:
  65.             str += "B";
  66.             break;
  67.         case 12:
  68.             str += "C";
  69.             break;
  70.         case 13:
  71.             str += "D";
  72.             break;
  73.         case 14:
  74.             str += "E";
  75.             break;
  76.         case 15:
  77.             str += "F";
  78.             break;
  79.         default:
  80.             str += "X";
  81.             break;
  82.         }
  83.     }
  84.  
  85.     return str;
  86. }
  87.  
  88. function getSFXColor(k) {
  89.     var r, g, b, k1, min, max;
  90.  
  91.     if (g_cstyle == 0) {
  92.  
  93.         k1 = k;
  94.         r = 127 + 127 * Math.cos(k1 - .5);
  95.         g = 127 + 127 * Math.cos(k1 - 2.5);
  96.         b = 127 + 127 * Math.cos(k1 - 4.5);
  97.  
  98.         min = r;
  99.         if (g < min) min = g;
  100.         if (b < min) min = b;
  101.  
  102.         r -= min;
  103.         g -= min;
  104.         b -= min;
  105.  
  106.         max = r;
  107.         if (g > max) max = g;
  108.         if (b > max) max = b;
  109.  
  110.         max = 255.0 / max;
  111.         r *= max;
  112.         g *= max;
  113.         b *= max;
  114.  
  115.         max = 1;
  116.         min = 0;
  117.  
  118.         r = r * max + min;
  119.         g = g * max + min;
  120.         b = b * max + min;
  121.  
  122.         if (r < 0) r = 0;
  123.         if (g < 0) g = 0;
  124.         if (b < 0) b = 0;
  125.  
  126.         if (r > 255) r = 255;
  127.         if (g > 255) g = 255;
  128.         if (b > 255) b = 255;
  129.  
  130.     }
  131.     g_r = r;
  132.     g_g = g;
  133.     g_b = b;
  134.  
  135. }
  136.  
  137. function MakeSFX() {
  138.  
  139.     var shout = document.getElementById("shout_data");
  140.     var r, g, b;
  141.     var i, j, k, l;
  142.     var x, scale, res;
  143.     var min, max;
  144.     var in_tag = 0;
  145.     var oignumi = 0;
  146.     temp = new String("");
  147.  
  148.     instr = new String(shout.value);
  149.     outstr = new String("");
  150.     tempstr = new String("");
  151.     res = 2;
  152.     if (res < 1) res = 1;
  153.  
  154.     j = instr.length;
  155.  
  156.     scale = Math.PI * (2 - .21) / j;
  157.     g_cstyle = 0;
  158.  
  159.     for (i = 0; i < j; i++) {
  160.  
  161.         if (instr.charAt(i) == "<") in_tag = 1;
  162.         if (in_tag == 0) {
  163.  
  164.             k = scale * i;
  165.             getSFXColor(k);
  166.             r = g_r;
  167.             g = g_g;
  168.             b = g_b;
  169.  
  170.             tempstr = tohex(r) + tohex(g) + tohex(b);
  171.  
  172.             temp = instr.charAt(i);
  173.  
  174.             if (instr.charAt(i) == "&") {
  175.  
  176.                 for (l = i + 1; l < j; l++) {
  177.                     if (instr.charAt(l) == " ") break;
  178.                     if (instr.charAt(l) == "<") break;
  179.                     if (instr.charAt(l) == ">") break;
  180.                     if (instr.charAt(l) == ";") break;
  181.                 }
  182.                 if (instr.charAt(l) == ";") {
  183.                     temp = instr.substr(i, l - i + 1);
  184.                 }
  185.  
  186.             }
  187.  
  188.  
  189.             if (i % res == 0) {
  190.                 outstr = outstr + "[color=#" + tempstr + "]";
  191.                 oignumi = 1;
  192.             }
  193.             outstr = outstr + temp;
  194.             if ((i + 1) % res == 0) {
  195.                 outstr = outstr + "[/color]";
  196.                 oignumi = 0;
  197.             }
  198.             if (temp.length > 1) i += (temp.length - 1);
  199.  
  200.         }
  201.         if (in_tag == 1) outstr = outstr + instr.charAt(i);
  202.         if (instr.charAt(i) == ">") in_tag = 0;
  203.  
  204.     }
  205.  
  206.     if (oignumi > 0) {
  207.         outstr = outstr + "[/color]";
  208.     }
  209.     //shout.focus();
  210.     shout.value = "";
  211.     shout.value = outstr;
  212.     //shout.focus();
  213. }
  214.  
  215. init();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement