var prompttext = [];
prompttext['img'] = 'Voeg afbeelding url toe';
prompttext['center'] = 'Centreer tekst';
prompttext['b'] = 'Voeg tekst toe die dikgedrukt moet worden';
prompttext['i'] = 'Voeg tekst toe die schuin moet worden';
prompttext['s'] = 'Voeg tekst toe die doorstreept moet worden';
prompttext['u'] = 'Voeg tekst toe die onderstreept moet worden';
prompttext['url'] = 'Voeg url toe';
prompttext['urld'] = 'Voeg url beschrijving toe (optioneel)';
prompttext['mail'] = 'Voeg e-mail address toe';

var ubbTarget = null;

function storeCursor(el) {
	el.cursorPos = document.selection.createRange().duplicate();
}

function putStr(text) {
	if (ubbTarget) {
		if (ubbTarget.cursorPos) {
			var cursorPos = ubbTarget.cursorPos;
			cursorPos.text = text;
		} else if (typeof(ubbTarget.selectionStart) != 'undefined') {
			var scrollTop = ubbTarget.scrollTop;
			var sStart = ubbTarget.selectionStart;
			var sEnd = ubbTarget.selectionEnd;
			ubbTarget.value = ubbTarget.value.substr(0, sStart) + text + ubbTarget.value.substr(sEnd);
			var nStart = (sStart == sEnd) ? sStart + text.length : sStart;
			var nEnd = sStart + text.length;
			ubbTarget.setSelectionRange(nStart, nEnd);
			ubbTarget.scrollTop = scrollTop;
		} else {
			ubbTarget.value += text;
		}
		ubbTarget.focus();
		if (ubbTarget.cursorPos) ubbTarget.onselect();
	}
}

function applyUBB(style) {
	if (!ubbTarget) ubbTarget = $('message') ? $('message') : $('textarea');
	if (!ubbTarget) return;
	var selectedtext = '';
	if (document.all && ubbTarget.cursorPos) {
		selectedtext = ubbTarget.cursorPos.text;
	} else if (typeof(ubbTarget.selectionStart) != 'undefined') {
		selectedtext = ubbTarget.value.substr(ubbTarget.selectionStart, ubbTarget.selectionEnd - ubbTarget.selectionStart);
	}
	if (!selectedtext) selectedtext = prompt(prompttext[style], '');
	if (!selectedtext) {
		ubbTarget.focus();
		return;
	}
	if (style == 'url') {
		var description = prompt(prompttext['urld'], '');
		if (!description) {
			selectedtext = '[url]'+selectedtext+'[/url]';
		} else {
			selectedtext = '[url='+selectedtext+']'+description+'[/url]';
		}
	} else {
		selectedtext = '['+style+']'+selectedtext+'[/'+style+']';
	}
	putStr(selectedtext);
}

function addSmilie(code) {
	insertAtCursor(($('message')) ? $('message') : $('textarea'), code);
}

function insertAtCursor(el, myValue) {
  //IE support
  if (document.selection) {
    el.focus();
    sel = document.selection.createRange();
    sel.text = myValue;
  } else if (el.selectionStart || el.selectionStart == '0') {//MOZILLA/NETSCAPE support
    var startPos = el.selectionStart;
    var endPos = el.selectionEnd;
    el.value = el.value.substring(0, startPos)
    + myValue
    + el.value.substring(endPos, el.value.length);
  } else {
    el.value += myValue;
  }
}

function setCursorAtEnd(sTextboxID) {
	var oTextbox = $(sTextboxID);
	if (oTextbox.createTextRange) {
		var r = (oTextbox.createTextRange());
		r.moveStart('character', (oTextbox.value.length)); r.collapse(); r.select();
	}
}

function setCursorAtBegin(ctrl) {
	var ctrl = $(ctrl);
	var pos = '0';
	if(ctrl.setSelectionRange) {
		ctrl.focus();
		ctrl.setSelectionRange(pos,pos);
	} else if (ctrl.createTextRange) {
		var range = ctrl.createTextRange();
		range.collapse(true);
		range.moveEnd('character', pos);
		range.moveStart('character', pos);
		range.select();
	}
}

window.addEvent('domready', function() {
	if (!ubbTarget)	ubbTarget = $('message') ? $('message') : $('textarea');
	if (!ubbTarget) return;
	ubbTarget.focus();
	if (ubbTarget.createTextRange) {
		ubbTarget.addEvents({
			'keyup': function(e) {
				storeCursor(this);
			},
			'click': function(e) {
				storeCursor(this);
			},
			'select': function(e) {
				storeCursor(this);
			}
		});
		ubbTarget.onselect();
	}
	if(!$('quickreply')) {
		if($('textarea')) {
			setCursorAtBegin('textarea');
		} else if($('message')) {
			setCursorAtEnd('message');
		}
	}
});