function getSelectionRoot() { var range, root; if(window.getSelection) { // Gecko, Opera var selection = window.getSelection(); range = selection.getRangeAt(0); root = range.commonAncestorContainer; return root; } else if(window.document.selection) { // MSIE range = window.document.selection.createRange(); root = range.parentElement(); return root; } return null // браузер, не поддерживающий работу с выделением } function CheckParent(sID) { var domParent = getSelectionRoot(); if(!domParent) return false; if(domParent.id == sID) return true; while(domParent = domParent.parentNode) { if(!domParent) return false; if(domParent.id == sID) return true; } return false; } function QuoteMsg(sID,iGender) { var domMsg = document.getElementById("msg_id_"+sID); var domLog = document.getElementById("usr_log_"+sID); var domText = document.getElementById("tp_text_text"); if(!editor1 || !domMsg || !domLog) return; var sSelected = ''; var sText = trim(domMsg.innerHTML); if(document.selection) { range = document.selection.createRange(); if(range.text!='' && CheckParent("msg_id_"+sID)) { if(range.htmlText) sText = range.htmlText; else sText = range.text; } } else if(document.getSelection) { var objSelection = window.getSelection(); if(objSelection && objSelection.rangeCount>0) { range = objSelection.getRangeAt(0); if(CheckParent("msg_id_"+sID)) sText = range+""; } } editor1.FormatText('Quote',new Array(domLog.innerHTML,sText,iGender)); return; sText = ReplaceString(sText,"\r",''); sText = ReplaceString(sText,"\n",''); // Форматирование sText = sText.replace(/(.*?)<\/b>/gim,"[B]$1[/B]"); sText = sText.replace(/(.*?)<\/i>/gim,"[I]$1[/I]"); sText = sText.replace(/(.*?)<\/u>/gim,"[U]$1[/U]"); // Картинки sText = sText.replace(//gim,"[IMG]$1[/IMG]"); sText = sText.replace(//gim,"[IMG]$1[/IMG]"); // Картинки с превью sText = sText.replace(/<\/a>/gim,"[URL=$1][IMG]$2[/IMG][/URL]"); sText = sText.replace(/<\/a>/gim,"[URL=$1][IMG]$2[/IMG][/URL]"); // Ссылки sText = sText.replace(/(.*?)<\/a>/gim,"[URL=$2]$4[/URL]"); sText = sText.replace(/(.*?)<\/a>/gim,"[URLT=$2]$3[/URLT]"); // Смайлики sText = sText.replace(//gim,"[sm$2]"); sText = sText.replace(//gim,"[sm$2]"); // Цитирование //sText = sText.replace(/(.*?)<\/a>/gim,"[URL=$1]$2[/URL]"); var aQuoteSrch = new Array('
','
','
','
'); var aQuote = new Array('
','
','
','
'); var iFind1 = -1; var iLen = 0; while(true) { for(var i=0;i-1) { iLen = aQuoteSrch[i].length; break; } } if(iFind1==-1) break; var iFind2 = sText.indexOf('писал'); if(iFind1>-1 && iFind2>-1) { var sQuoter = sText.substring(iFind1+iLen,iFind2-6); sText = sText.substring(0,iFind1)+sText.substring(iFind2,sText.length); var iFnd = sText.indexOf('писал(а):
'); if(iFnd==-1) iFnd = sText.indexOf('писал(а):
'); if(iFnd>-1) { sText = sText.substring(0,iFnd)+sText.substring(iFnd+15,sText.length); iFnd = -1; iLen = -1; for(var i=0;i-1) { iLen = aQuote[i].length; break; } } if(iFnd>-1) { sText = sText.substring(0,iFnd)+"[QUOTE='"+sQuoter+"']"+sText.substring(iFnd+iLen,sText.length); iFnd = sText.indexOf('
'); if(iFnd==-1) iFnd = sText.indexOf('
'); if(iFnd>-1) { sText = sText.substring(0,iFnd)+"[/QUOTE]"+sText.substring(iFnd+12,sText.length); } } } } } var sRep = "\r\n"; if(window.event && window.event.target) sRep = ''; if(!window.event) sRep = ''; sText = ReplaceString(sText,'
',sRep); sText = ReplaceString(sText,'
',sRep); sText = ReplaceString(sText,'
',sRep); sText = ReplaceString(sText,'
',sRep); sText = ReplaceString(sText,'
',sRep); sText = ReplaceString(sText,'
',sRep); domText.value = domText.value+"[QUOTE='"+domLog.innerHTML+"']"+sText+"[/QUOTE]"; domText.focus(); } function JSmileHTML(sSmile,sID) { editor1.FormatText("Smile",sSmile); } function JQuoteName(sName) { editor1.FormatText("SPAN",sName); window.location = "#msg"; }