Jyte Comment Helper

By Bruce Stockwell Last update Aug 15, 2007 — Installed 200 times. Daily Installs: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0
// ==UserScript==
// @name Jyte Comment Helper
// @namespace http://www.brucestockwell.net/
// @description Gives you a little html toolbar above the comment textarea.
// @include http://*jyte*
// ==/UserScript==

var textarea;

function insertAroundCursor(fld, pre, post) {
	if (fld.selectionStart || fld.selectionStart == '0') {
		var startPos = fld.selectionStart;
		var endPos = fld.selectionEnd;
		fld.value = fld.value.substring(0, startPos)+ pre + fld.value.substring(startPos,endPos) + post + fld.value.substring(endPos, fld.value.length);
	} else {
		fld.value += val;
	}
}

function insertAnchorAroundCursor(fld) {
	if (fld.selectionStart || fld.selectionStart == '0') {
		var startPos = fld.selectionStart;
		var endPos = fld.selectionEnd;
		var href = prompt("Enter URL.", "http://");
		fld.value = fld.value.substring(0, startPos)+ "<a href='" + href + "' >" + fld.value.substring(startPos,endPos) + "</a>" + fld.value.substring(endPos, fld.value.length);
	} else {
		fld.value += val;
	}
}  

function anchorWrap(event) {
	var textarea;
    textarea = event.currentTarget._target;
	insertAnchorAroundCursor(document.getElementById(comment_id));
	event.preventDefault();
}

function emWrap(event) {
	var textarea;
    textarea = event.currentTarget._target;
	insertAroundCursor(document.getElementById(comment_id),"<em>","</em>");
	event.preventDefault();
}

function strongWrap(event) {
	var textarea;
    textarea = event.currentTarget._target;
	insertAroundCursor(document.getElementById(comment_id),"<strong>","</strong>");
	event.preventDefault();
}

function preWrap(event) {
	var textarea;
    textarea = event.currentTarget._target;
	insertAroundCursor(document.getElementById(comment_id),"<pre>","</pre>");
	event.preventDefault();
}

function createAnchor(target, text, title, fn) {
    var anchor;
    anchor = document.createElement('a');
	anchor._target = target;
	anchor.setAttribute('href','#');
    anchor.setAttribute('title',title);
    anchor.appendChild(document.createTextNode(text));
    anchor.addEventListener("click", fn, false);
    return anchor;
}


var div;
var comment_id = 'new_comment_textarea'
textarea = document.getElementById(comment_id);
if (textarea) {
	div = document.createElement('div');
	div.setAttribute('class','clearfix');
	div.setAttribute('id','html-helper');
	div.appendChild(createAnchor(textarea, '<a>', 'anchor', anchorWrap));
	div.appendChild(createAnchor(textarea, '<em>', 'emphasis', emWrap));
	div.appendChild(createAnchor(textarea, '<strong>', 'strong', strongWrap));
	div.appendChild(createAnchor(textarea, '<pre>', 'preformated', preWrap));
	textarea.parentNode.insertBefore(div, textarea);

	GM_addStyle (
	    '#html-helper {border-left: 1px solid #CCCCCC;}' +
	    '#html-helper a {display: block; float: left; text-decoration: none; padding: 5px; background-color: #F2F9FF;}' +
		'#html-helper a {border-top: 1px solid #CCCCCC; border-right: 1px solid #CCCCCC; border-bottom: 1px solid #CCCCCC; color:#888888;}' +
		'#html-helper a:hover {background-color: #D0D7DD; color:#2C8439; text-decoration: none;}' +
		'.clearfix:after {content: "."; display: block; height: 0; clear: both; visibility: hidden;}'
	);
}