
function simpleEdit(evt){
    var ev = window.event ? window.event : evt;
    var obj = ev.target;
    var ss = obj.selectionStart;
    var se = obj.selectionEnd;
    var tab = String.fromCharCode(9);

    var key = ev.keyCode;
    if(key == 9 && ev.shiftKey){
        var news = obj.value.slice(ss,se).replace(/(^|[\r\n]+)\t/g, "$1" );
        obj.value = obj.value.replace(obj.value.slice(ss,se),news);
        obj.selectionStart = ss;
        obj.selectionEnd = obj.selectionStart + news.length;
    }else if(key == 9){
        ev.preventDefault();
        if (ss != se && obj.value.slice(ss,se).indexOf("\n") != -1) {
            var n = 0;
            var pre = obj.value.slice(0,ss);
            var sel = obj.value.slice(ss,se).replace(/\r\n/g,"\n");
            sel = sel.replace(/\n/g,"\n"+tab);
            pos = sel.indexOf("\n");
            while(pos!=-1){
                pos = sel.indexOf("\n",pos+1);
                n++;
            }
            var post = obj.value.slice(se,obj.value.length);
            obj.value = pre + tab + sel + post;
            obj.selectionStart = ss + tab.length;
            obj.selectionEnd = se + tab.length + n;
        }else {
            obj.value = obj.value.slice (0,ss)  + tab + obj.value.slice(ss,obj.value.length);
            if (ss == se) {
                obj.selectionStart = obj.selectionEnd = ss + tab.length;
                obj.selectionEnd = obj.selectionStart;
            }
            else {
                obj.selectionStart = ss + tab.length;
                obj.selectionEnd = se + tab.length;
            }
        }
    }

    if(document.getElementById('save')) document.getElementById('save').disabled = false;
}

function getCursorPos(textElement) {
    var sOldText = textElement.value;
    var objRange = document.selection.createRange();
    var sOldRange = objRange.text;
    var sUniqueString = '#^~';

    objRange.text = sOldRange + sUniqueString;
    objRange.moveStart('character', (0 - sOldRange.length - sUniqueString.length));

    var sNewText = textElement.value;
    objRange.text = sOldRange;
    for (i=0; i <= sNewText.length; i++) {
        var sTemp = sNewText.substring(i, i + sUniqueString.length);
        if (sTemp == sUniqueString) {
            var cursorPos = (i - sOldRange.length);
            return cursorPos;
        }
    }
}

function setSelectionRange(input, selectionStart, selectionEnd) {
    if (input.setSelectionRange) {
        input.focus();
        input.setSelectionRange(selectionStart, selectionEnd);
    } else if (input.createTextRange) {
        var range = input.createTextRange();
        range.collapse(true);
        range.moveEnd('character', selectionEnd);
        range.moveStart('character', selectionStart);
        range.select();
    }
};

function light_code(id){
    var element = document.getElementById(id);
    if (element.createTextRange){
        element.caretPos = document.selection.createRange();
        var sel_text = element.caretPos.text;
        var cpos = getCursorPos(element);
        var befo_text = element.value.substring (0, cpos );
        cpos+=sel_text.length;
        var afte_text = element.value.substr (cpos) ;
    }else{
        var befo_text = element.value.substring (0, element.selectionStart );
        var afte_text = element.value.substr (element.selectionEnd) ;
        var sel_text = element.value.substring (element.selectionStart,element.selectionEnd);
    }
    link="[code=php]" + sel_text + "[/code]";
    element.value=befo_text+link+afte_text;
}
function img_add(id){
    //	if(isOpera){
    //		alert('Для браузера Opera этот BB код не работает');
    //		return;
    //	}
    var element = document.getElementById(id);
    if (element.createTextRange){
        element.caretPos = document.selection.createRange();
        var sel_text = element.caretPos.text;
        var cpos = getCursorPos(element);
        var befo_text = element.value.substring (0, cpos );
        cpos+=sel_text.length;
        var afte_text = element.value.substr (cpos) ;
    }else{
        var befo_text = element.value.substring (0, element.selectionStart );
        var afte_text = element.value.substr (element.selectionEnd) ;
        var sel_text = element.value.substring (element.selectionStart,element.selectionEnd);
    }
    AJAX_run("/ajax/img.php");
}
function sh_img(id){
    var img=document.getElementById("img_"+id);
    if(img.innerHTML=="[view&nbsp;img]" || img.innerHTML=='[view img]'){
        img.innerHTML='<img id="isrc_'+id+'" src="/ajax/img.php?id='+id+'" alt="img" border=0>';
        img.style.width=document.getElementById("isrc_"+id).offsetWidth;
    }else{
        img.innerHTML="[view&nbsp;img]";
        img.style.width=65;
    }
}
function get_content(id){
    if(isGecko){
        return document.getElementById(id).textContent;
    }else{
        return document.getElementById(id).innerText;
    }
}
function file_add(id){
    //	if(isOpera){
    //		alert('Для браузера Opera этот BB код не работает');
    //		return;
    //	}
    var element = document.getElementById(id);
    if (element.createTextRange){
        element.caretPos = document.selection.createRange();
        var sel_text = element.caretPos.text;
        var cpos = getCursorPos(element);
        var befo_text = element.value.substring (0, cpos );
        cpos+=sel_text.length;
        var afte_text = element.value.substr (cpos) ;
    }else{
        var befo_text = element.value.substring (0, element.selectionStart );
        var afte_text = element.value.substr (element.selectionEnd) ;
        var sel_text = element.value.substring (element.selectionStart,element.selectionEnd);
    }
    AJAX_run("/ajax/file.php");
}
function get_file(id){
    window.open("/ajax/file.php?id="+id);
}

function Edit(id,type){
    element = document.getElementById(id);
    switch(type){
        case 'link':
            if (element.createTextRange){
                element.caretPos = document.selection.createRange();
                var sel_text = element.caretPos.text;
                var cpos = getCursorPos(element);
                var befo_text = element.value.substring (0, cpos );
                cpos+=sel_text.length;
                var afte_text = element.value.substr (cpos) ;
            }else{
                var befo_text = element.value.substring (0, element.selectionStart );
                var afte_text = element.value.substr (element.selectionEnd) ;
                var sel_text = element.value.substring (element.selectionStart,element.selectionEnd);
            }
            var link = prompt("Введите адрес: ", "http://");
            if(link){
                link="[url=" + link + "]" + sel_text + "[/url]";
                element.value=befo_text+link+afte_text;
            }
            break;
        case 'bold':
            if (element.createTextRange){
                element.caretPos = document.selection.createRange();
                var sel_text = element.caretPos.text;
                var cpos = getCursorPos(element);
                var befo_text = element.value.substring (0, cpos );
                cpos+=sel_text.length;
                var afte_text = element.value.substr (cpos) ;
            }else{
                var befo_text = element.value.substring (0, element.selectionStart );
                var afte_text = element.value.substr (element.selectionEnd) ;
                var sel_text = element.value.substring (element.selectionStart,element.selectionEnd);
            }
            link="[b]" + sel_text + "[/b]";
            element.value=befo_text+link+afte_text;
            break;
        case 'italic':
            if (element.createTextRange){
                element.caretPos = document.selection.createRange();
                var sel_text = element.caretPos.text;
                var cpos = getCursorPos(element);
                var befo_text = element.value.substring (0, cpos );
                cpos+=sel_text.length;
                var afte_text = element.value.substr (cpos) ;
            }else{
                var befo_text = element.value.substring (0, element.selectionStart );
                var afte_text = element.value.substr (element.selectionEnd) ;
                var sel_text = element.value.substring (element.selectionStart,element.selectionEnd);
            }
            link="[i]" + sel_text + "[/i]";
            element.value=befo_text+link+afte_text;
            break;
        case 'quote':
            if (element.createTextRange){
                element.caretPos = document.selection.createRange();
                var sel_text = element.caretPos.text;
                var cpos = getCursorPos(element);
                var befo_text = element.value.substring (0, cpos );
                cpos+=sel_text.length;
                var afte_text = element.value.substr (cpos) ;
            }else{
                var befo_text = element.value.substring (0, element.selectionStart );
                var afte_text = element.value.substr (element.selectionEnd) ;
                var sel_text = element.value.substring (element.selectionStart,element.selectionEnd);
            }
            link="[quote]" + sel_text + "[/quote]";
            element.value=befo_text+link+afte_text;
            break;
       case 'paragraph':
            if (element.createTextRange){
                element.caretPos = document.selection.createRange();
                var sel_text = element.caretPos.text;
                var cpos = getCursorPos(element);
                var befo_text = element.value.substring (0, cpos );
                cpos+=sel_text.length;
                var afte_text = element.value.substr (cpos) ;
            }else{
                var befo_text = element.value.substring (0, element.selectionStart );
                var afte_text = element.value.substr (element.selectionEnd) ;
                var sel_text = element.value.substring (element.selectionStart,element.selectionEnd);
            }
            link="[p]" + sel_text + "[/p]";
            element.value=befo_text+link+afte_text;
            break;
      case 'br':
            if (element.createTextRange){
                element.caretPos = document.selection.createRange();
                var sel_text = element.caretPos.text;
                var cpos = getCursorPos(element);
                var befo_text = element.value.substring (0, cpos );
                cpos+=sel_text.length;
                var afte_text = element.value.substr (cpos) ;
            }else{
                var befo_text = element.value.substring (0, element.selectionStart );
                var afte_text = element.value.substr (element.selectionEnd) ;
                var sel_text = element.value.substring (element.selectionStart,element.selectionEnd);
            }
            link = sel_text + "[br]";
            element.value=befo_text+link+afte_text;
            break;
    }
}