/**
 * Markup area
 * 
 * @author Alexander Makarov (http://rmcreative.ru/)
 * @version 0.8
 * 
 */
function BBArea(id){
    var element = document.getElementById(id);
	
    this.insertTag = function(name, param){
        if(param!=undefined){
            this.insertAtCursor('['+name+'='+param+']','[/'+name+']');
        }
        else {
            this.insertAtCursor('['+name+']','[/'+name+']');
        }
    }
	
    this.insertAtCursor = function(open, close){
        //FF, Opera
        if ( element.selectionEnd!=undefined ){
            var ss = element.selectionStart;
            var se = element.selectionEnd;
	
            if (se <= 2){
                se = element.textLength;
            }
	
            var start  = (element.value).substring(0, ss);
            var middle = (element.value).substring(ss, se);
            var end    = (element.value).substring(se, element.textLength);
										
            var cur;
            //selected text
            if (element.selectionEnd - element.selectionStart > 0){
                middle = open + middle + close;
                element.value = start + middle + end;
                cur = ss + (middle.length);
            }
            //no selection
            else{
                middle = open + close + middle;
                element.value = start + middle + end;
                cur = ss + (open.length);
            }
	
            element.selectionStart = cur;
            element.selectionEnd   = cur;
        }
				
        //IE
        else if(document.selection!=undefined){
            if (element.isTextEdit){
                element.focus();
                var sel = document.selection;
                var rng = sel.createRange();
                rng.colapse;
                if((sel.type == "Text" || sel.type == "None") && rng != null){
                    rng.text = open + rng.text + close;
                }
            }
            //Not supported, just append tag…
            else{
                element.value += open + close;
            }
        }
		
        //Not supported, just append tag…
        else{
            element.value += open + close;
        }
	
        element.focus();
	
        return closed;
    }
}