By Onyxstone
—
Last update
Jan 31, 2009
—
Installed
254 times.
// ==UserScript==// @name SU CSS Themer// @namespace http://onyxstone.stumbleupon.com/// @description SU CSS Themer// @include http://*.stumbleupon.com/*// @version 0.0.1// ==/UserScript==var stylelink = document.getElementsByClassName( 'stylelink')[0];var prefsForm1 = document.getElementById( 'prefsForm1' );var listThemes = document.getElementById( 'listThemes' );var input;//About textareavar textarea;var about_prev;var stumbler = window.wrappedJSObject.stumbler;//On owner pageif( stumbler ) { var s = GM_getValue( 'stylelink_' + stumbler ); if( s && checkCSS( s ) ) injectStyle( s ); }else if( stylelink ) { injectStyle( stylelink.href );}//On preferences pageif( listThemes ) { var div = document.createElement( 'div' ); div.textContent = 'Link to a custom stylesheet:' div.style.paddingTop = '20px'; div.style.border = '1px dashed gray'; input = document.createElement( 'input' ); input.style.display = 'block'; input.type = 'text'; input.style.width = '400px'; var btn = document.createElement( 'button' ); btn.textContent = 'Submit'; btn.style.display = 'inline'; btn.type = 'button'; btn.addEventListener( 'click' , setStyleSheet , false ); var rem = document.createElement( 'button' ); rem.textContent = 'Remove style'; rem.style.display = 'inline'; rem.type = 'button'; rem.addEventListener( 'click' , removeStyleSheet , false ); div.appendChild( input ); div.appendChild( btn ); div.appendChild( rem ); prefsForm1.childNodes[1].appendChild( div ); var txt = xpath("//textarea[@name='description']", document); textarea = txt.snapshotItem(0); about_prev = document.createElement( 'div' ); insert( textarea , about_prev ); about_prev.innerHTML = textarea.value;}function checkCSS( href ) { var a = href.match( /^http:\/\/.*\.css$/ ); return a;}function injectStyle( href ) { var link = document.createElement( 'link' ); checkCSS( href ); if( checkCSS( href ) ) link.href = href; link.type = "text/css"; link.rel ="stylesheet"; document.getElementsByTagName('head')[0].appendChild(link);}function setStyleSheet( e ) { setHREF( input.value );}function removeStyleSheet( e ) { setHREF( "" );}function setHREF( href ) { about_prev.innerHTML = textarea.value; var stylelink2 = document.getElementsByClassName( 'stylelink' )[0]; if( stylelink2 ) { stylelink2.setAttribute('href' , href ); textarea.value = about_prev.innerHTML; } else { textarea.value = textarea.value + "<a class=\"stylelink\" href=\"" + href + "\">*</a>"; about_prev.innerHTML = textarea.value; } GM_setValue( 'stylelink_' + stumbler, href );}function xpath (exp, node ){ var result = document.evaluate(exp, node, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); return result;}function insert( rel_node , node ) {rel_node.parentNode.insertBefore( node, rel_node );}