/*
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('','—',"+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}');