User:Alex 21/script-linecolour.js

$(function($) {	setTimeout(function { $.when( mw.loader.using( ['mediawiki.util']), $.ready ).then(function {			var portletlink = mw.util.addPortletLink('p-tv', '#', 'Line colours');			$(portletlink).click( function(e) { e.preventDefault; // Default parameters and determine if we need to go to the editing page var loc = window.location.href; var wpTextbox1 = document.getElementById('wpTextbox1'); var i;				if (loc.indexOf('action=edit') < 0 && loc.indexOf('action=submit') < 0) { alert("Go to the edit page to use this script."); } else { // Gather colours from text of textarea var colours = []; var topcolours = []; var s = wpTextbox1.value.split("\n"); for (i = 0; i < s.length; i++) { if (s[i].indexOf('LineColor') > 0 || s[i].indexOf('TopColor') > 0 || s[i].indexOf('line_color') > 0) { // LineColor regex var reg = /\|\s*(LineColor|TopColor|line_color)[\s\=\#]*([^\s]*)/g; var t = reg.exec(s[i]); if (!t) continue; // Add colour to saved colours if its not already added var fontColor = t[2]; if (colours.indexOf(fontColor) >= 0) continue; colours[colours.length] = fontColor; if (s[i].indexOf('TopColor') > 0) topcolours[topcolours.length] = fontColor; }					}					for (i = 0; i < colours.length; i++) { // Gather colour, and individually adjust to AAA compliancy var thiscolour = colours[i]; var fground = (topcolours.indexOf(thiscolour) >= 0 ? '0645AD' : false); var newcolour = colourCompliance(thiscolour,fground); // Update if the original colour has been changed to be compliant if (thiscolour != newcolour) { // 3-digits codes (e.g. #FF3344 = #F34) var _3code; if (thiscolour[0] == thiscolour[1] && thiscolour[2] == thiscolour[3] && thiscolour[4] == thiscolour[5]) _3code = thiscolour[0]+thiscolour[2]+thiscolour[4]+'|'; else _3code = ''; // Replace colours, check for minus error var reg2 = new RegExp('\\b'+_3code+thiscolour+'\\b','gi'); if (newcolour.indexOf("-") < 0) wpTextbox1.value = wpTextbox1.value.replace(reg2,newcolour); else alert("Error fixing colour code "+thiscolour+" - please fix manually."); }					}					// Done document.getElementById('wpSummary').value += "Adjusted color contrasts via script per WP:COLOR and Template talk:Infobox television season/Archive 3."; }			});		});	},300); });