User:Cacycle/myskinify.js

// replace Special:MySkin.js links with Special:MyPage/SKIN.js links (also for SKIN.css)

function MySkinify() {

// get content container for all skins but modern

var content = document.getElementById('content');

// modern skin

if (content == null) {

content = document.getElementById('mw-content');

}

// cycle through links

var links = content.getElementsByTagName('a');

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

var link = links[i];

// quick test

if (link.href.toLowerCase().indexOf('special:myskin.') > -1) {

// regexp replace and detection

var href = link.href.replace(/(\/|=)special:myskin.(js|css)($|\?|&)/i, '$1Special:MyPage/' + skin + '.$2$3'.toLowerCase());

if (link.href != href) {

link.href = href;

// fix redlink to blue

if (link.className == 'new') {

link.className = '';

}

// fix title

if (link.title != '') {

var title = 'User:' + mw.config.get('wgUserName') + '/' + skin;

if (href.indexOf('Special:MyPage/' + skin + '.css') > -1) {

link.title = title + '.css';

}

else {

link.title = title + '.js';

}

}

}

}

}

}

// execute after page load

if (mw.config.get('wgUserName') != null) {

addOnloadHook(MySkinify);

}