<!--
var mouseY;
var textarea_height;
var quote=false;

//cursor
function getCursor(input)
{
 var result = {start: 0, end: 0};
    if (input.setSelectionRange){
        result.start= input.selectionStart;
        result.end = input.selectionEnd;
    } else if (!document.selection) {
        return false;
    } else if (document.selection && document.selection.createRange) {
        var range = document.selection.createRange();
        var stored_range = range.duplicate();
        stored_range.moveToElementText(input);
        stored_range.setEndPoint('EndToEnd', range);
        result.start = stored_range.text.length - range.text.length;
        result.end = result.start + range.text.length;
    }
    return result;
}

function setCursor(txtarea, start, end){
     if(txtarea.createTextRange) {
        var range = txtarea.createTextRange();
        range.move("character", start);
        range.select();
     } else if(txtarea.selectionStart) {
        txtarea.setSelectionRange(start, end);
     }
}


//

//tag modify
function insert_tag(starttag,endtag){

    var txtarea = document.getElementById("htmlarea");
    txtarea.focus();
    var scrtop = txtarea.scrollTop;
    var cursorPos=getCursor(txtarea);

    if (cursorPos.start==cursorPos.end)
    {
        var nuCursorPos=cursorPos.start+starttag.length;
        txtarea.value = txtarea.value.substring(0,cursorPos.start)+starttag+endtag+txtarea.value.substr(cursorPos.start );
        //txtarea.focus();
    }
    else {
        var txt_pre=txtarea.value.substring (0,cursorPos.start);
        var txt_sel=txtarea.value.substring(cursorPos.start,cursorPos.end);
        var txt_aft=txtarea.value.substring(cursorPos.end);
        txtarea.value = txt_pre+starttag+txt_sel+endtag+txt_aft;
        var nuCursorPos=String(txt_pre+starttag+txt_sel+endtag).length;
    }
    setCursor(txtarea,nuCursorPos,nuCursorPos);
    if (scrtop) txtarea.scrollTop = scrtop;

    return false;
}

//interface
function insert_text_quote(){
 var txtarea = document.getElementById("htmlarea");
 var cur = getCursor(txtarea);
 if (cur.start!=cur.end){
     insert_tag("&laquo;", "&raquo;");
 }
 else
 {
     document.getElementById("quoteimg").src=quote?"/images/ta/raquo.gif":"/images/ta/laquo.gif";
     insert_tag("", quote?"&laquo;":"&raquo;");
     quote=!quote;
 }
    return false;
}

function insert_text_mdash(){
    return insert_tag("", "&mdash;");
}

function insert_text_blockquote(){
     return insert_tag("[quote]", "[/quote]");
}

function insert_text_b(){
     return insert_tag("[b]", "[/b]");
}

function insert_text_img(){
    document.getElementById("addimgdiv").style.display="block";
    return false;
}

function insert_text_img_close(){
    document.getElementById("addimgdiv").style.display="none";
    return false;
}

function insert_text_i(){
    return insert_tag("[i]", "[/i]");
}

function insert_text_cut(){
    return insert_tag("", "[cut]");
}

function insert_text_user(){
     var txtarea = document.getElementById("htmlarea");
     var cur = getCursor(txtarea);

     var username=window.prompt("Кто?", '');
     if (username){
         if (cur.start!=cur.end){
             insert_tag('[user='+username+']', '[/user]');
         }
         else
         {
             insert_tag('', '[user='+username+']');
         }
     }
     return false;
}

function insert_text_u(){
 return insert_tag("[u]", "[/u]");
}

function insert_text_s(){
 return insert_tag("[s]", "[/s]");
}

function insert_text_link(){
 var txtarea = document.getElementById("htmlarea");
 var cur = getCursor(txtarea);

 if (cur.start!=cur.end){
     var hreff=window.prompt("Введите URL ссылки", '');
     //(http[s]?|ftp)://([^:/\s]+)((/\w+)*/)([\w\-\.]+[^#?\s]+)(.*)?(#[\w\-]+)
     var regexx = new RegExp('([A-Za-z][A-Za-z0-9+.-]{1,120}:[A-Za-z0-9/](([A-Za-z0-9$_.+!*,;/?:@&~=-])|%[A-Fa-f0-9]{2}){1,333}(#([a-zA-Z0-9][a-zA-Z0-9$_.+!*,;/?:@&~=%-]{0,1000}))?)');
 //'^(http[s]?|ftp)://[a-z/#\.\-]+$');
 //'([A-Za-z][A-Za-z0-9+.-]{1,120}:[A-Za-z0-9/](([A-Za-z0-9$_.+!*,;/?:@&~=-])|%[A-Fa-f0-9]{2}){1,333}(#([a-zA-Z0-9][a-zA-Z0-9$_.+!*,;/?:@&~=%-]{0,1000}))?)'


     if (hreff && hreff.match(regexx)) {
        insert_tag('[url='+hreff+']', "[/url]");
     } else alert("Это не URL");
 } else {
    alert("Сначала выделите текст, который вы желаете сделать ссылкой");
 }
 return false;
}
//

function insert_text_img(){
 var txtarea = document.getElementById("htmlarea");
 var cur = getCursor(txtarea);

 var hreff=window.prompt("Введите URL каритнки", '');
     //(http[s]?|ftp)://([^:/\s]+)((/\w+)*/)([\w\-\.]+[^#?\s]+)(.*)?(#[\w\-]+)
 var regexx = new RegExp('([A-Za-z][A-Za-z0-9+.-]{1,120}:[A-Za-z0-9/](([A-Za-z0-9$_.+!*,;/?:@&~=-])|%[A-Fa-f0-9]{2}){1,333}(#([a-zA-Z0-9][a-zA-Z0-9$_.+!*,;/?:@&~=%-]{0,1000}))?)');
 //'^(http[s]?|ftp)://[a-z/#\.\-]+$');
 //'([A-Za-z][A-Za-z0-9+.-]{1,120}:[A-Za-z0-9/](([A-Za-z0-9$_.+!*,;/?:@&~=-])|%[A-Fa-f0-9]{2}){1,333}(#([a-zA-Z0-9][a-zA-Z0-9$_.+!*,;/?:@&~=%-]{0,1000}))?)'


 if (hreff && hreff.match(regexx)) {
    insert_tag('', '[img]'+hreff+'[/img]');
 } else alert("Это не URL каритнки");
}
//

// Отображаем блок смайликов
function show_smile_block()
{
	$('#smiles_block').toggle();
}

// Вставляем смайлик в редактор и закрываем блок
function insert_smile(smile)
{
	insert_tag(smile,'');
	$('#smiles_block').hide();
}

//resizing
function resize_mousemove(evt){
 if (!evt) evt=this.event;


 //document.getElementById("debug").innerHTML=mouseY+"-"+evt.pageY;
 if (evt.pageY)
     var newheight=evt.pageY-mouseY;
 else
     var newheight=evt.clientY-mouseY;
 
 if (newheight>=50){
    document.getElementById("htmlarea").style.height=newheight+"px";
    textarea_height=newheight;
 }
}
function resize_start(evt){
 if (!evt) evt=this.event;
 if (!textarea_height) textarea_height=100;
 if (evt.pageY)
 mouseY=evt.pageY-textarea_height;
 else
 mouseY=evt.clientY-textarea_height;
 if (document.addEventListener){ //GECKO
     document.addEventListener('mousemove',resize_mousemove,false);
 }
 else{//IE
    document.attachEvent('onmousemove',resize_mousemove);
 }

}

function resize_stop(){
 if (document.addEventListener){ //GECKO
    document.removeEventListener('mousemove',resize_mousemove,false);
 }
 else {//IE
    document.detachEvent('onmousemove',resize_mousemove);
 }
}

if (document.addEventListener){ //GECKO
    document.addEventListener('mouseup',resize_stop,false);
}
else {//IE
    document.attachEvent('onmouseup',resize_stop);
}