From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.

/* HTML colour names */

var colour_names = {};

colour_names.aliceblue = "f0f8ff";

colour_names.antiquewhite = "faebd7";

colour_names.aqua = "00ffff";

colour_names.aquamarine = "7fffd4";

colour_names.azure = "f0ffff";

colour_names.beige = "f5f5dc";

colour_names.bisque = "ffe4c4";

colour_names.black = "000000";

colour_names.blanchedalmond = "ffebcd";

colour_names.blue = "0000ff";

colour_names.blueviolet = "8a2be2";

colour_names.brown = "a52a2a";

colour_names.burlywood = "deb887";

colour_names.cadetblue = "5f9ea0";

colour_names.chartreuse = "7fff00";

colour_names.chocolate = "d2691e";

colour_names.coral = "ff7f50";

colour_names.cornflowerblue = "6495ed";

colour_names.cornsilk = "fff8dc";

colour_names.crimson = "dc143c";

colour_names.cyan = "00ffff";

colour_names.darkblue = "00008b";

colour_names.darkcyan = "008b8b";

colour_names.darkgoldenrod = "b8860b";

colour_names.darkgray = "a9a9a9";

colour_names.darkgrey = "a9a9a9";

colour_names.darkgreen = "006400";

colour_names.darkkhaki = "bdb76b";

colour_names.darkmagenta = "8b008b";

colour_names.darkolivegreen = "556b2f";

colour_names.darkorange = "ff8c00";

colour_names.darkorchid = "9932cc";

colour_names.darkred = "8b0000";

colour_names.darksalmon = "e9967a";

colour_names.darkseagreen = "8fbc8f";

colour_names.darkslateblue = "483d8b";

colour_names.darkslategray = "2f4f4f";

colour_names.darkslategrey = "2f4f4f";

colour_names.darkturquoise = "00ced1";

colour_names.darkviolet = "9400d3";

colour_names.deeppink = "ff1493";

colour_names.deepskyblue = "00bfff";

colour_names.dimgray = "696969";

colour_names.dimgrey = "696969";

colour_names.dodgerblue = "1e90ff";

colour_names.firebrick = "b22222";

colour_names.floralwhite = "fffaf0";

colour_names.forestgreen = "228b22";

colour_names.fuchsia = "ff00ff";

colour_names.gainsboro = "dcdcdc";

colour_names.ghostwhite = "f8f8ff";

colour_names.gold = "ffd700";

colour_names.goldenrod = "daa520";

colour_names.gray = "808080";

colour_names.grey = "808080";

colour_names.green = "008000";

colour_names.greenyellow = "adff2f";

colour_names.honeydew = "f0fff0";

colour_names.hotpink = "ff69b4";

colour_names.indianred = "cd5c5c";

colour_names.indigo = "4b0082";

colour_names.ivory = "fffff0";

colour_names.khaki = "f0e68c";

colour_names.lavender = "e6e6fa";

colour_names.lavenderblush = "fff0f5";

colour_names.lawngreen = "7cfc00";

colour_names.lemonchiffon = "fffacd";

colour_names.lightblue = "add8e6";

colour_names.lightcoral = "f08080";

colour_names.lightcyan = "e0ffff";

colour_names.lightgoldenrodyellow = "fafad2";

colour_names.lightgray = "d3d3d3";

colour_names.lightgrey = "d3d3d3";

colour_names.lightgreen = "90ee90";

colour_names.lightpink = "ffb6c1";

colour_names.lightsalmon = "ffa07a";

colour_names.lightseagreen = "20b2aa";

colour_names.lightskyblue = "87cefa";

colour_names.lightslategray = "778899";

colour_names.lightslategrey = "778899";

colour_names.lightsteelblue = "b0c4de";

colour_names.lightyellow = "ffffe0";

colour_names.lime = "00ff00";

colour_names.limegreen = "32cd32";

colour_names.linen = "faf0e6";

colour_names.magenta = "ff00ff";

colour_names.maroon = "800000";

colour_names.mediumaquamarine = "66cdaa";

colour_names.mediumblue = "0000cd";

colour_names.mediumorchid = "ba55d3";

colour_names.mediumpurple = "9370db";

colour_names.mediumseagreen = "3cb371";

colour_names.mediumslateblue = "7b68ee";

colour_names.mediumspringgreen = "00fa9a";

colour_names.mediumturquoise = "48d1cc";

colour_names.mediumvioletred = "c71585";

colour_names.midnightblue = "191970";

colour_names.mintcream = "f5fffa";

colour_names.mistyrose = "ffe4e1";

colour_names.moccasin = "ffe4b5";

colour_names.navajowhite = "ffdead";

colour_names.navy = "000080";

colour_names.oldlace = "fdf5e6";

colour_names.olive = "808000";

colour_names.olivedrab = "6b8e23";

colour_names.orange = "ffa500";

colour_names.orangered = "ff4500";

colour_names.orchid = "da70d6";

colour_names.palegoldenrod = "eee8aa";

colour_names.palegreen = "98fb98";

colour_names.paleturquoise = "afeeee";

colour_names.palevioletred = "db7093";

colour_names.papayawhip = "ffefd5";

colour_names.peachpuff = "ffdab9";

colour_names.peru = "cd853f";

colour_names.pink = "ffc0cb";

colour_names.plum = "dda0dd";

colour_names.powderblue = "b0e0e6";

colour_names.purple = "800080";

colour_names.rebeccapurple = "663399";

colour_names.red = "ff0000";

colour_names.rosybrown = "bc8f8f";

colour_names.royalblue = "4169e1";

colour_names.saddlebrown = "8b4513";

colour_names.salmon = "fa8072";

colour_names.sandybrown = "f4a460";

colour_names.seagreen = "2e8b57";

colour_names.seashell = "fff5ee";

colour_names.sienna = "a0522d";

colour_names.silver = "c0c0c0";

colour_names.skyblue = "87ceeb";

colour_names.slateblue = "6a5acd";

colour_names.slategray = "708090";

colour_names.slategrey = "708090";

colour_names.snow = "fffafa";

colour_names.springgreen = "00ff7f";

colour_names.steelblue = "4682b4";

colour_names.tan = "d2b48c";

colour_names.teal = "008080";

colour_names.thistle = "d8bfd8";

colour_names.tomato = "ff6347";

colour_names.turquoise = "40e0d0";

colour_names.violet = "ee82ee";

colour_names.wheat = "f5deb3";

colour_names.white = "ffffff";

colour_names.whitesmoke = "f5f5f5";

colour_names.yellow = "ffff00";

colour_names.yellowgreen = "9acd32";



function colourCompliance(bground,fground){

	var ratio;

	bground = bground.trim().toLowerCase();;

	if (colour_namesbground]) bground = colour_namesbground];

	

	if (fground === false) {

        var ratio_w = getColorsRatio(bground,'FFFFFF');

        var ratio_b = getColorsRatio(bground,'000000');

        fground = (ratio_w > ratio_b ? 'FFFFFF' : '000000');

        ratio = (ratio_w > ratio_b ? ratio_w : ratio_b);

	} else {

		ratio = getColorsRatio(bground,fground);

	}



	if (ratio <= 7) {

		hsv = RGBtoHSV(br,bg,bb);

		bh = hsv.h; bs = hsv.s; bv = hsv.v;

		if (bv < 100 && bv > 0) {

			bv += (fground == 'FFFFFF' ? -1 : 1);

		} else {

			bs += (fground == 'FFFFFF' ? 1 : -1);

		}

		var new_bground = HSVtoRGB(bh,bs,bv);

		new_bground = RGBtoHEX(new_bground0],new_bground1],new_bground2]);

		return colourCompliance(new_bground,fground,false);

	} else {

		if (bground.length == 3) bground = bground0+bground0+bground1+bground1+bground2+bground2];

		return bground.toUpperCase();

	}

}



function getColorsRatio(bground,fground) {

    var bgroundH = HEXtoRGB(bground);

    var fgroundH = HEXtoRGB(fground);

    

	br = bgroundH.r; bg = bgroundH.g; bb = bgroundH.b;

    fr = fgroundH.r; fg = fgroundH.g; fb = fgroundH.b;

	

	var ratio = 1;

	var l1 = getLuminance([fr/255, fg/255, fb/255]);

	var l2 = getLuminance([br/255, bg/255, bb/255]);



	if (l1 >= l2) {

		ratio = (l1 + 0.05) / (l2 + 0.05);

	} else {

		ratio = (l2 + 0.05) / (l1 + 0.05);

	}

	ratio = Math.round(ratio * 100) / 100;

	

	return ratio;

}



function getLuminance(rgb){

	for (var i = 0; i < rgb.length; i++) {

		if (rgbi <= 0.03928) {

			rgbi = rgbi / 12.92;	

		} else {

			rgbi = Math.pow( ((rgbi+0.055)/1.055), 2.4 );

		}

	}

	var l = (0.2126 * rgb0]) + (0.7152 * rgb1]) + (0.0722 * rgb2]);

	return l;

}



function componentToHex(c) {

    var hex = parseInt(c).toString(16).toUpperCase();

    return hex.length == 1 ? "0" + hex : hex;

}



function RGBtoHEX(r, g, b) {

    return componentToHex(r) + componentToHex(g) + componentToHex(b);

}



function HEXtoRGB(hex) {

	if (hex.length == 6) {

		return {

			r: parseInt(hex0+''+hex1], 16),

			g: parseInt(hex2+''+hex3], 16),

			b: parseInt(hex4+''+hex5], 16)

		};

	} else {

		return {

			r: parseInt(hex0+''+hex0], 16),

			g: parseInt(hex1+''+hex1], 16),

			b: parseInt(hex2+''+hex2], 16)

		};

	}

}



function RGBtoHSV() {

    var rr, gg, bb,

        r = arguments0 / 255,

        g = arguments1 / 255,

        b = arguments2 / 255,

        h, s,

        v = Math.max(r, g, b),

        diff = v - Math.min(r, g, b),

        diffc = function(c){

            return (v - c) / 6 / diff + 1 / 2;

        };



    if (diff === 0) {

        h = s = 0;

    } else {

        s = diff / v;

        rr = diffc(r);

        gg = diffc(g);

        bb = diffc(b);



        if (r === v) {

            h = bb - gg;

        }else if (g === v) {

            h = (1 / 3) + rr - bb;

        }else if (b === v) {

            h = (2 / 3) + gg - rr;

        }

        if (h < 0) {

            h += 1;

        }else if (h > 1) {

            h -= 1;

        }

    }

    return {

        h: Math.round(h * 360),

        s: Math.round(s * 100),

        v: Math.round(v * 100)

    };

}



function HSVtoRGB(h,s,v) {

    s = s / 100,

	v = v / 100;



    var hi = Math.floor((h/60) % 6);

    var f = (h / 60) - hi;

    var p = v * (1 - s);

    var q = v * (1 - f * s);

    var t = v * (1 - (1 - f) * s);



    var rgb = [];



    switch (hi) {

        case 0: rgb = v,t,p];break;

        case 1: rgb = q,v,p];break;

        case 2: rgb = p,v,t];break;

        case 3: rgb = p,q,v];break;

        case 4: rgb = t,p,v];break;

        case 5: rgb = v,p,q];break;

    }



    var r = Math.min(255, Math.round(rgb0*256)),

        g = Math.min(255, Math.round(rgb1*256)),

        b = Math.min(255, Math.round(rgb2*256));



    return r,g,b];



}



function RGBSTRtoHEX(rgb) {

	if (colour_namesrgb]) return '#'+colour_namesrgb];

	rgb = rgb.split(',');

	rgb.r=parseInt(rgb0].substring(4)).toString(16);

	rgb.g=parseInt(rgb1]).toString(16);

	rgb.b=parseInt(rgb2]).toString(16);

	var hex="#"+(rgb.r.length==1?'0':'')+rgb.r+(rgb.g.length==1?'0':'')+rgb.g+(rgb.b.length==1?'0':'')+rgb.b;

	return hex.toUpperCase();

}



function copyContent(text) {

	var textArea = document.createElement("textarea");

	textArea.innerHTML = text;

	document.body.appendChild(textArea);

	textArea.select();

	if (!document.execCommand('copy')) console.log(text);

	document.body.removeChild(textArea);

}



function newContentHeader(title,id) {

	var nav = document.createElement('nav');

	nav.setAttribute('id',id);

	nav.setAttribute('aria-labelledby','p-tb-label');

	nav.className = 'vector-menu vector-menu-portal portal';

	nav.setAttribute('role','navigation');

	var tb = document.getElementById('p-tb');

	if(tb) { tb.parentNode.insertBefore(nav, tb.nextSibling); } else { return; }



	var h3 = document.createElement('h3');

	h3.id = id+'-label';

	h3.innerHTML = title;

	h3.className = 'vector-menu-heading';

	document.getElementById(id).appendChild(h3);



	var div = document.createElement('div');

	div.className = 'body vector-menu-content';

	document.getElementById(id).appendChild(div);

}



newContentHeader('TV Tools','p-tv');