jQuery(document).ready(function($) { function createSelection(field, start, end) { if( field.createTextRange ) { var selRange = field.createTextRange(); selRange.collapse(true); selRange.moveStart('character', start); selRange.moveEnd('character', end); selRange.select(); field.focus(); } else if( field.setSelectionRange ) { field.focus(); field.setSelectionRange(start, end); } else if( typeof field.selectionStart != 'undefined' ) { field.selectionStart = start; field.selectionEnd = end; field.focus(); } } function addtag(element, tag) { var obj = element; var tagOpen,tagClose; function putcursorat() { if (!selectedText) { start=beforeText + tagOpen; end=tagClose + afterText; } } beforeText = obj.value.substring(0, obj.selectionStart); selectedText = obj.value.substring(obj.selectionStart, obj.selectionEnd); afterText = obj.value.substring(obj.selectionEnd, obj.value.length); var start=false,end=false; switch(tag) { case "bold": tagOpen = "[b]"; tagClose = "[/b]"; putcursorat(); newText = beforeText + tagOpen + selectedText + tagClose + afterText; break; case "italic": tagOpen = "[i]"; tagClose = "[/i]"; putcursorat(); newText = beforeText + tagOpen + selectedText + tagClose + afterText; break; case "underline": tagOpen = "[u]"; tagClose = "[/u]"; putcursorat(); newText = beforeText + tagOpen + selectedText + tagClose + afterText; break; case "url": url = prompt("Enter Link", ""); if (url == null) { return; } tagOpen = "[url=" + url + "]"; tagClose = "[/url]"; if (selectedText=='') { putcursorat(); selectedText=url; } newText = beforeText + tagOpen + selectedText + tagClose + afterText; break; case "img": imgURL = prompt("Enter image URL", ""); if (imgURL == null) { return; } tagOpen = "[img=" + imgURL + "]"; tagClose = "[/img]"; newText = beforeText + tagOpen + selectedText + tagClose + afterText; break; } obj.value = newText; if (start!==false && end!==false) { createSelection(element,start.length,obj.value.length-end.length); } } $('.bbcode').livequery(function() { var textarea=this; var c=$('
'); $(this).after(c); c.append(this); var b=$(''); b.hide(); c.append(b); $('button',b).click(function() { addtag(textarea,$(this).data('type')); return false; }); c.mouseenter(function() { b.show(); }); c.mouseleave(function() { b.hide(); }); }); });