function getInnerText(element) {
    if (navigator.appVersion.indexOf("MSIE") != -1)
        return element.innerText;
    else {
        var innerText = ""
        for (var i=0; i<element.childNodes.length; i++) {
            switch (element.childNodes.item(i).nodeType) {
            case 1: //ELEMENT_NODE
                innerText += getInnerText(element.childNodes.item(i));
                break;
            case 3: //TEXT_NODE
                innerText += element.childNodes.item(i).nodeValue;
                break;
            }
        }
        return innerText;
    }
}
/* Обрамление тегами BB-code, текст под курсором, коды смайликов, захват выделения (быстрая цитата).
Author: 12345с, isvetlov/at/hotmail_com http://javascript.aho.ru/subs/subs013.shtml*/
brkL="[";brkR="]";selted='';
function insPic(s1,s2,s3){if(!d.all&&selted==''&&s3==3){s1=s2;s2=brkL+'/'+s2+brkR;s3='';}
if(s3==3){s1+=s2;s2='';}
s1=brkL+s1+(s2==brkR?'=':brkR);
if(s3==2){s1+=s2;s2='';}
var isPic=s2==null; 
var s=insField.value;var insPosL,insPosR;
var scrl=insField.scrollTop;
if(insField.selectionEnd==null){var ch=0;
    if(d.selection&&d.selection.createRange)
      {var tR=d.selection.createRange();var ch='character';var tR1=d.body.createTextRange();}
  if(!ch||tR.parentElement&&tR.parentElement()!=insField){insPosL=insPosR=s.length;}
  else{    insPosL=tR.text.length;
    if(insField.type=='textarea'){tR1.moveToElementText(insField);
      tR.setEndPoint('StartToStart',tR1);insPosR=tR.text.length;
    }else{tR.moveStart('textedit',-1);insPosR=tR.text.length;}
    insPosL=insPosR-insPosL; 
}}else{  insPosL=insField.selectionStart;  insPosR=insField.selectionEnd;
  if(insBeg&&self.opera&&!insPosL&&!insPosR){insPosL=insPosR=s.length;insBeg=0;}
}var insText=s.substring(insPosL,insPosR);
if((isInSel=selted==insText)&&s3==3){isInSel=insText.length;insText='';}
if(d.all)insField.defaultValue=s;else defa=s;
if(isPic&&!(s3==2&&insText!='')){s2=s1;s1='';}
insField.value=s.substring(0,insPosL)+s1+insText+s2+s.substring(insPosR,s.length);
if(isInSel&&s3==3)insPosR-=isInSel;
var insCursor=insPosR+s1.length+(isPic||insPosL!=insPosR?s2.length:0);
var insCursorL=insCursor;
if(s3==1){insCursorL=insPosL+s1.length;insCursor=s1.length+insPosR;}
var a1=s.substr(0,s3!=3?insPosR:insPosR+isInSel).match(/\r\n/g);
if(d.body.createTextRange){setTimeout("var t=insField.createTextRange();t.collapse();t.moveEnd('"
  +ch+"',"+(insCursor-(a1?a1.length:0))+");t.moveStart('"+ch+"',"
  +(insCursorL-((a1=s3!=3?s.substr(0,s3==1?insPosL:insPosR).match(/\r\n/g):a1)?a1.length:0))
  +");t.select();",1); 
}else{  if(d.all)insField.focus();
  if(insField.selectionEnd!=null){
    insField.selectionStart=insCursorL;insField.selectionEnd=insCursor+(d.all?1:0);
    setTimeout("insField.focus();if(d.all)insField.selectionEnd--",50);
  if(d.all){var tR=d.selection.createRange();
    if(insCursorL==insCursor)tR.collapse();tR.select();}
  else if(scrl>0)insField.scrollTop=scrl;
}}}
function insTag(s,c){insPic(s,(c?c:'')+brkL+'/'+s+brkR+(c?', ':''),c?2:null);}
function insTagSel(s){insPic(s,brkL+'/'+s+brkR,1);} 
function insTagArg(s){insPic(s,brkR);} 
function insBack(){with(insField){var s=d.all?value:defa;value=d.all?defaultValue:defa;if(d.all)defaultValue=s;else defa=s;}}
d=document;
d.onmouseup=function(){if(self.opera)str=d.getSelection();}
function insCapt(s){insPic(s+brkR
  +(selted=(d.getSelection?(self.str?str:(d.all?(d.getSelection()
    ?d.getSelection():d.selection.createRange().text):getSelection()))
    :(d.selection?d.selection.createRange().text:'')))
  +brkL+'/',s,3);} 
onload=function(){insField=d.getElementById('frmtxtarea');insBeg=1}

/* мое */
function frmedteurl(tmptext,tmptag){
 var frmurl = prompt(tmptext,'http://');
 if(frmurl!=null) insPic(tmptag+'='+frmurl);
}

function frmans(tmpautor) {
 document.getElementById('frmtxtarea').value='[autor]'+tmpautor+'[/autor] '+document.getElementById('frmtxtarea').value;
 document.location.href="#frmedit";
}

function frmclr() {
 document.getElementById('frmtxtarea').value='';
}

function frmcpymsg(tmpelement) {
 tmpobj=document.getElementById('frmmsg'+tmpelement);
 insPic('quote message='+tmpelement+']'+getInnerText(tmpobj)+'[/quote');
}
function frmedtsmile(tmpsmile) {
 brkL="";brkR="";
 insPic(tmpsmile);
 brkL="[";brkR="]";
}

function frmsnd(formname) {
document.getElementById(formname).submit();
}
  