Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function changeColor () {
- function colordiff(a, b) {
- a = rgb(a);
- b = rgb(b);
- if (!(a && b)) return 10E+100;
- var d = [];
- d[0] = a[0] - b[0];
- d[1] = a[1] - b[1];
- d[2] = a[2] - b[2];
- var rmean = (a[0] + b[0]) / 2;
- d = Math.sqrt((((512 + rmean) * d[0] * d[0]) >> 8) + 4 * d[1] * d[1] + (((767 - rmean) * d[2] * d[2]) >> 8));
- //d = Math.sqrt(3 * d[0] * d[0] + 4 * d[1] * d[1] + 2 * d[2] * d[2]);
- return d;
- }
- function rgb(i) {
- var m = i.match(/^#([0-9a-f]{6})$/i);
- if (m) {
- m = m[1];
- return [parseInt(m.substr(0, 2), 16),
- parseInt(m.substr(2, 2), 16), parseInt(m.substr(4, 2), 16)];
- }
- m = i.match(/^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i);
- if (m) return [parseInt(m[1], 10), parseInt(m[2], 10), parseInt(m[3], 10)];
- return null;
- }
- function transformHSV(I, H, S, V) {
- var VSU = V * S * Math.cos(H * Math.PI / 180);
- var VSW = V * S * Math.sin(H * Math.PI / 180);
- var ret = [];
- I = rgb(I);
- 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];
- 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];
- 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];
- return ret;
- }
- function rgb_s(i) {
- return "rgb(" + Math.ceil(i[0]) + ", " + Math.ceil(i[1]) + ", " + Math.ceil(i[2]) + ")";
- }
- var mindiff = 1500;
- var c = "#3b5998";
- var h = 80;
- var s = 1.5;
- var v = 0.8;
- ['div', 'a', 'span', 'button'].forEach(function (e) {
- var x = document.getElementsByTagName(e);
- for (var i = 0; i < x.length; i++) {
- if (colordiff(x[i].currentStyle.backgroundColor, c) < mindiff) x[i].style.backgroundColor = rgb_s(transformHSV(x[i].currentStyle.backgroundColor, h, s, v));
- if (colordiff(x[i].currentStyle.color, c) < mindiff) x[i].style.color = rgb_s(transformHSV(x[i].currentStyle.color, h, s, v));
- if (x[i].type == "submit" && colordiff(x[i].currentStyle.backgroundColor, c) < mindiff) x[i].style.backgroundImage = 'none';
- }
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement