
var Pieces = {
    'italic': { 'text1': '[i]', 'text2': '[/i]' },
    'bold':   { 'text1': '[b]', 'text2': '[/b]' }
}
Rules['.alizer:click'] = function(element) {
    if (element.tagName!='span') element = element.parentNode;
    var myTextArea = element.parentNode.parentNode.getElementsByTagName('textarea')[0];
    var classes = element.className.split(' ');
    for (var i=0; i<classes.length; i++) {
        if (classes[i]!='alizer' && !/^\s*$/.test(classes[i])) {
            var thisClass = classes[i];
        }
    }
    var text1 = Pieces[thisClass].text1;
    var text2 = Pieces[thisClass].text2;
    surroundText(text1, text2, myTextArea);
}

var oldonload = window.onload;
window.onload = function() { if (oldonload) oldonload(); EventSelectors.start(Rules); };

// Surrounds the selected text with text1 and text2.
function surroundText(text1, text2, textarea)
{
	// Can a text range be created?
	if (document.all)
	{
        var myrange = document.selection.createRange();
		var selText = myrange.text;

        if (myrange.parentElement()==textarea) {
            myrange.text = text1 + selText + text2;
            myrange.moveStart('character', -selText.length);
            myrange.select();
        } else {
            pos = textarea.caretPos;
            if (pos==undefined) pos = textarea.value.length;
            var begin = textarea.value.substr(0, pos);
            var end = textarea.value.substr(pos);
    
            textarea.value = begin + text1 + text2 + end;

            textarea.caretPos = begin.length + text1.length;
            
        }

        //textarea.selStart = selStart;
        //textarea.selLength = (text1 + selText + text2).length;
        //document.selection.createRange().moveEnd('character',  -text2.length);
	}
	// Mozilla text range wrap.
	else if (typeof(textarea.selectionStart) != "undefined")
	{
		var begin = textarea.value.substr(0, textarea.selectionStart);
		var selection = textarea.value.substr(textarea.selectionStart, textarea.selectionEnd - textarea.selectionStart);
		var end = textarea.value.substr(textarea.selectionEnd);

		textarea.value = begin + text1 + selection + text2 + end;

		if (textarea.setSelectionRange)
		{
			var newSelStart = begin.length + text1.length;
            var newSelEnd   = newSelStart + selection.length;
			textarea.focus();
			textarea.setSelectionRange(newSelStart, newSelEnd);
		}
	}
	// Just put them on the end, then.
	else
	{
		textarea.value += text1 + text2;
		textarea.focus(textarea.value.length - 1);
	}
}