//////////////////////////////////////////////////////////////////////////////
// AFL code insert
// v0.9.1 (2006-11-01)
// inspired by http://aktuell.de.selfhtml.org/artikel/javascript/bbcode/
//////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////
// insert an emoticon at current cursor position
function insertEmoticon (code)
{
	var txtarea = document.getElementById('text');
	code = ' ' + code + ' ';

	// focus text area
	//txtarea.focus();

	// MS IE specific handling
	if (typeof document.selection != 'undefined') {
		// focus text area
		txtarea.focus();

		// insert formatting code
		var range = document.selection.createRange();
		range.text = code;

		// Reset cursor position
		range = document.selection.createRange();
		if (range.text.length == 0) {
			//range.move('character', 0);
		}
		else {
			range.moveStart('character', code.length);
		}
		range.select();
	}
	// Firefox / Gecko code
	else if (typeof txtarea.selectionStart != 'undefined') {
		// insert emoticon
		var start = txtarea.selectionStart;
		var end = txtarea.selectionEnd;
		txtarea.value = txtarea.value.substring(0, start) + code + txtarea.value.substring(end, txtarea.value.length);

		// reset caret position manually behing inserted text
		txtarea.focus();
		txtarea.selectionStart = start + code.length;
		txtarea.selectionEnd = start + code.length;
	}
	// any other browser
	else {
		txtarea.value += text;
	}

	txtarea.focus();
}

//////////////////////////////////////////////////////////////////////////////
// insert afl code around a selection
function insertAFLTag (aflOpenTag, aflCloseTag)
{
	var txtarea = document.getElementById('text');

	// focus on textarea
	//txtarea.focus();

	// MS IE code
	if (typeof document.selection != 'undefined') {// focus text area
		txtarea.focus();

		// insert formatting code
		var range = document.selection.createRange();
		var insText = range.text;
		range.text = aflOpenTag + insText + aflCloseTag;

		// Reset cursor position
		range = document.selection.createRange();
		if (insText.length == 0) {
			range.move('character', -aflCloseTag.length);
		}
		else {
			range.moveStart('character', aflOpenTag.length + insText.length + aflCloseTag.length);
		}
		range.select();
	}
	// Firefox / Gecko Code
	else if (typeof txtarea.selectionStart != 'undefined') {
		// insert formatting code
		var start = txtarea.selectionStart;
		var end = txtarea.selectionEnd;
		var sel = txtarea.value.substring(start, end);
		txtarea.value = txtarea.value.substring(0, start) + aflOpenTag + sel + aflCloseTag + txtarea.value.substring(end, txtarea.value.length);

		// reset cursor position
		var pos;
		if (sel.length == 0) {
			pos = start + aflOpenTag.length;
		}
		else {
			pos = start + aflOpenTag.length + sel.length + aflCloseTag.length;
		}
		txtarea.focus();
		txtarea.selectionStart = pos;
		txtarea.selectionEnd = pos;
	}
	// Code for any otherbrowser
	else {
		txtarea.value += aflOpenTag + aflCloseTag;
	}

	txtarea.focus();
}

/* eof */
