Facebook Notes QuickEdit

By Hans van de Bruggen Last update Aug 2, 2007 — Installed 1,486 times. Daily Installs: 2, 1, 1, 3, 5, 1, 2, 2, 4, 3, 2, 3, 3, 6, 1, 4, 2, 5, 7, 5, 4, 4, 1, 1, 3, 2, 9, 3, 3, 5, 2, 9
/*
version: 0.6
*/

// ==UserScript==
// @name          Facebook Notes QuickEdit
// @author	  Hans van de Bruggen <hans@hansv.com>
// @namespace     http://greasemonkey.hansv.com/
// @description	  Adds shortcuts for formatting Facebook notes.
// @include       http://*facebook.com/editnote.php*
// ==/UserScript==

//  
//  New in 0.6:
//  Added "http://" to link and image popups.
//
//  New in 0.5:
//  Based off Jason Rhyley's "Flickr Rich Edit" script at http://www.rhyley.org/gm/ 
//  (available under Creative Commons Attribution-NonCommercial-ShareAlike 2.0)
//



enableShortcuts = true;		// Remove later

(function start () 	{
if(enableShortcuts) { shortcutMode(); }
else                { classicMode(); }		//Remove later
		})();

// Shortcut mode -------------------------------
function shortcutMode () 
{
	unsafeWindow.tagIt = function (tagOpen,tagClose,i) 
	{
		var v = unsafeWindow.textArray[i].value;
		var selLength = unsafeWindow.textArray[i].textLength;
		var selStart = unsafeWindow.textArray[i].selectionStart;
		var selEnd = unsafeWindow.textArray[i].selectionEnd;
		if (selEnd==1 || selEnd==2) selEnd=selLength;
		var start = (v).substring(0,selStart);
		var middle = (v).substring(selStart, selEnd)
		var end = (v).substring(selEnd, selLength);
		unsafeWindow.textArray[i].value = start + tagOpen + middle + tagClose + end;
	
		unsafeWindow.textArray[i].selectionStart = selStart + tagOpen.length;
		unsafeWindow.textArray[i].selectionEnd = (selEnd - 1) + tagClose.length;
		unsafeWindow.textArray[i].focus();
	}


unsafeWindow.linkIt = function (i)
{
	var myLink = prompt("Enter URL:","http://"); 
	if (myLink != null) 
	{
		unsafeWindow.tagIt('<a href="' + myLink + '">','</a>', i);
	}
}

unsafeWindow.imgIt = function (i) 
{
	var myImg = prompt("Enter image URL:","http://"); 
	if (myImg != null) 
	{
		unsafeWindow.tagIt('<img src="' + myImg + '">','', i);
	}
}

textareas = document.evaluate("//textarea",document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);
unsafeWindow.textArray = new Array();

for (i=0; i<textareas.snapshotLength; i++) 
{
	unsafeWindow.textArray[i] = textareas.snapshotItem(i);
	var accessBar = document.createElement("div");
	accessBar.setAttribute('class','shortcutDiv');
	accessBar.innerHTML = 
	"<a href=\"javascript:tagIt('<blockquote>','</blockquote>',"+ i +")\" accesskey='q' title='Alt+Q (Ctrl for Mac users)'>Block<span class='sngl'>q</span>uote</a> | " +
   	"<a href=\"javascript:tagIt('<i>','</i>',"+ i +")\" accesskey='i' title='Alt+I (Ctrl for Mac users)'><i><span class='sngl'>I</span>talic</i></a> | " +
	"<a href=\"javascript:tagIt('<b>','</b>',"+ i +")\" accesskey='b' title='Alt+B (Ctrl for Mac users)'><b><span class='sngl'>B</span>old</b></a> | " +
	"<a href=\"javascript:tagIt('<u>','</u>',"+ i +")\" accesskey='u' title='Alt+U (Ctrl for Mac users)'><span class='dble'>U</span><span class='sngl'>nderline</span></a> | " +
	"<a href=\"javascript:tagIt('<s>','</s>',"+i+")\" accesskey='s' title='Alt+S (Ctrl for Mac users)'><s><span class='sngl'>S</span>trikethrough</s></a> | " + 
	"<a href=\"javascript:linkIt("+i+")\" accesskey='l' title='Alt+L (Ctrl for Mac users)'><span class='sngl'>L</span>ink</a> | " + 
	"<a href=\"javascript:imgIt("+i+")\" accesskey='m' title='Alt+M (Ctrl for Mac users)'>I<span class='sngl'>m</span>age</a> <br> " +
	"<a href=\"javascript:tagIt('<big>','</big>',"+i+")\" accesskey='g' title='Alt+G (Ctrl for Mac users)'><big>Bi<span class='sngl'>g</span></big></a> | " + 
	"<a href=\"javascript:tagIt('<small>','</small>',"+i+")\" accesskey='a' title='Alt+A (Ctrl for Mac users)'><small>Sm<span class='sngl'>a</span>ll</small></a> | " + 
	"<a href=\"javascript:tagIt('','&mdash;',"+i+")\" accesskey='d' title='Alt+D (Ctrl for Mac users)'><span class='sngl'>D</span>ash</a> | " + 
	"<a href=\"javascript:tagIt('<h1>','</h1>',"+i+")\" accesskey='1' title='Alt+1 (Ctrl for Mac users)'>Headline <span class='sngl'>1</span></h1></a> | " + 
	"<a href=\"javascript:tagIt('<h2>','</h2>',"+i+")\" accesskey='2' title='Alt+2 (Ctrl for Mac users)'>Headline <span class='sngl'>2</span></h2></a> | " + 
	"<a href=\"javascript:tagIt('<h3>','</h3>',"+i+")\" accesskey='3' title='Alt+3 (Ctrl for Mac users)'>Headline <span class='sngl'>3</span></h3></a>"  	;
	
	unsafeWindow.textArray[i].parentNode.insertBefore(accessBar, unsafeWindow.textArray[i]);
}
return;
}



// Underline / double underline CSS
function addCSSStyle(css) {
    var head, style;
    head = document.getElementsByTagName('head')[0];
    style = document.createElement('style');
    style.type = 'text/css';
    style.innerHTML = css;
    head.appendChild(style);
}

addCSSStyle('.sngl { border-bottom-style: solid !important; border-bottom-width: 1px}');
addCSSStyle('.dble { border-bottom-style: double !important; border-bottom-width: 3px !important}');
addCSSStyle('.shortcutDiv { text-decoration: none; margin-bottom: 4px }');
addCSSStyle('.shortcutDiv a:hover { text-decoration: none; border-bottom-style: solid; border-bottom-width: 1px !important}');