function insert(inChar) {
	var element=document.forms['search']['wordSearch'];
	insertAtCursorPos(inChar,element);
}

function insertAtCursorPos(addtext, fe) { //http://aktuell.de.selfhtml.org/artikel/javascript/bbcode/
	fe.focus();
	if (typeof document.selection != 'undefined') { //IE, Opera
		var range = document.selection.createRange();
		var rangetext = range.text;
		range.text = addtext;
		if (navigator.appName!="Opera") {
			range = document.selection.createRange();
			if (rangetext.length != 0) range.move('character', 1);
			if (addtext==' ()' || addtext==' []' || addtext==' {}' || addtext==' <>') range.move('character', -1);
			range.select();
		}
	}
	else if (typeof fe.selectionStart != 'undefined') { //Gecko-based
		var start = fe.selectionStart;
		var end = fe.selectionEnd;
		var selectedtext = fe.value.substring(start, end);
		fe.value = fe.value.substr(0, start) + addtext + fe.value.substr(end);
		if (addtext==' ()' || addtext==' []' || addtext==' {}' || addtext==' <>') start--;
		fe.selectionStart = start+addtext.length;
		fe.selectionEnd = start+addtext.length;
	}
	else { //others
		fe.value = fe.value + addtext;
	}
}

function clickLink(linkobj) {
     var onclickHandler = linkobj.getAttribute('onclick')
     if (onclickHandler == null) document.location = linkobj.getAttribute('href');

     //pass self reference back to handler in case handler normally called with 'this', other params will fail:
     else eval(onclickHandler(linkobj));
}

var rules = {
	'.dictionaryInsert' : function(el) {
		el.onclick = function() {
			insert(el.innerHTML);
			return false;
		}
	},
	'.foswikiInputField' : function(el) {
		// prefill with the topic name
		var detailPageName = foswiki.getMetaTag('DETAILPAGE');
		if (detailPageName) {
			var element=document.forms['search']['wordSearch'];
			if (element) {
				if (element.value == '') {
					detailPageName = detailPageName.toLowerCase();
					detailPageName = detailPageName.replace(/_/g, " ");
					insertAtCursorPos(detailPageName, element);
					element.blur();
				}
			}
			
		}
	},
	'.foswikiTable tr' : function(el) {
		el.onmouseover = function() {
			foswiki.CSS.addClass(el, 'dictionaryFocus');
		}
		el.onmouseout = function() {
			foswiki.CSS.removeClass(el, 'dictionaryFocus');
		}
	},
	'#patternBottomBarContents' : function(el) {
		el.onmouseover = function() {
			foswiki.CSS.addClass(el, 'dictionaryFocus');
		}
		el.onmouseout = function() {
			foswiki.CSS.removeClass(el, 'dictionaryFocus');
		}
	}
};
Behaviour.register(rules);