Advertisement
Guest User

javascript color changer

a guest
May 21st, 2013
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function changeColor () {
  2.  
  3.     function colordiff(a, b) {
  4.         a = rgb(a);
  5.         b = rgb(b);
  6.         if (!(a && b)) return 10E+100;
  7.         var d = [];
  8.         d[0] = a[0] - b[0];
  9.         d[1] = a[1] - b[1];
  10.         d[2] = a[2] - b[2];
  11.         var rmean = (a[0] + b[0]) / 2;
  12.         d = Math.sqrt((((512 + rmean) * d[0] * d[0]) >> 8) + 4 * d[1] * d[1] + (((767 - rmean) * d[2] * d[2]) >> 8));
  13.         //d = Math.sqrt(3 * d[0] * d[0] + 4 * d[1] * d[1] + 2 * d[2] * d[2]);
  14.         return d;
  15.     }
  16.  
  17.     function rgb(i) {
  18.         var m = i.match(/^#([0-9a-f]{6})$/i);
  19.         if (m) {
  20.             m = m[1];
  21.             return [parseInt(m.substr(0, 2), 16),
  22.             parseInt(m.substr(2, 2), 16), parseInt(m.substr(4, 2), 16)];
  23.         }
  24.         m = i.match(/^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i);
  25.         if (m) return [parseInt(m[1], 10), parseInt(m[2], 10), parseInt(m[3], 10)];
  26.         return null;
  27.     }
  28.  
  29.     function transformHSV(I, H, S, V) {
  30.         var VSU = V * S * Math.cos(H * Math.PI / 180);
  31.         var VSW = V * S * Math.sin(H * Math.PI / 180);
  32.         var ret = [];
  33.         I = rgb(I);
  34.         ret[0] = (0.299 * V + 0.701 * VSU + 0.168 * VSW) * I[0] + (0.587 * V - 0.587 * VSU + 0.330 * VSW) * I[1] + (0.114 * V - 0.114 * VSU - 0.497 * VSW) * I[2];
  35.         ret[1] = (0.299 * V - 0.299 * VSU - 0.328 * VSW) * I[0] + (0.587 * V + 0.413 * VSU + 0.035 * VSW) * I[1] + (0.114 * V - 0.114 * VSU + 0.292 * VSW) * I[2];
  36.         ret[2] = (0.299 * V - 0.3 * VSU + 1.25 * VSW) * I[0] + (0.587 * V - 0.588 * VSU - 1.05 * VSW) * I[1] + (0.114 * V + 0.886 * VSU - 0.203 * VSW) * I[2];
  37.         return ret;
  38.     }
  39.  
  40.     function rgb_s(i) {
  41.         return "rgb(" + Math.ceil(i[0]) + ", " + Math.ceil(i[1]) + ", " + Math.ceil(i[2]) + ")";
  42.     }
  43.  
  44.     var mindiff = 1500;
  45.     var c = "#3b5998";
  46.     var h = 80;
  47.     var s = 1.5;
  48.     var v = 0.8;
  49.     ['div', 'a', 'span', 'button'].forEach(function (e) {
  50.         var x = document.getElementsByTagName(e);
  51.         for (var i = 0; i < x.length; i++) {
  52.             if (colordiff(x[i].currentStyle.backgroundColor, c) < mindiff) x[i].style.backgroundColor = rgb_s(transformHSV(x[i].currentStyle.backgroundColor, h, s, v));
  53.             if (colordiff(x[i].currentStyle.color, c) < mindiff) x[i].style.color = rgb_s(transformHSV(x[i].currentStyle.color, h, s, v));
  54.             if (x[i].type == "submit" && colordiff(x[i].currentStyle.backgroundColor, c) < mindiff) x[i].style.backgroundImage = 'none';
  55.         }
  56.     });
  57.  
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement