function insText (id, sel, tag1, tag2) { var messageField = document.getElementById(id); var selStart = messageField.selectionStart; var selEnd = messageField.selectionEnd; var MsgVal = messageField.value; var text = new String(); var step = new Number(); messageField.focus(); if(!sel && !tag1) { alert('Для вставки цитаты необходимо выделить нужное мышью.'); } else { if(document.selection) { if (sel && !tag1 && !tag2) messageField.document.selection.createRange().text = sel; else messageField.document.selection.createRange().text = tag1 + messageField.document.selection.createRange().text + tag2; } else { if (selStart || messageField.selectionStart == '0') { step = tag1.length + sel.length + tag2.length; text = MsgVal.substring(0, selStart) + tag1 + sel; text += ((!sel || selStart == selEnd) ? MsgVal.substring(selStart, selEnd) : '') + tag2; text += MsgVal.substring(selEnd, MsgVal.length); messageField.value = text; messageField.selectionStart = selStart + selEnd + step; messageField.selectionEnd = selEnd + step; } } } messageField.focus(); } function ReceiveData (req, btn) { if (req.readyState == 4) { var busy = document.getElementById('busy'); busy.style.display = 'none'; if (req.responseJS.debug) { /* if (document.getElementById('debug')) document.getElementById('debug').innerHTML = '
' + htmlspecialchars(req.responseText, 'ENT_QUOTES') + '
'; else*/ alert(req.responseText); } if (req.responseJS.error != '') alert('Ошибка:\n' + req.responseJS.error); else { if (req.responseJS.alert) { alert(req.responseJS.alert); } if (req.responseJS.dialog) { if (req.responseJS.dialog.inner) { req.responseJS.dialog.inner = req.responseJS.dialog.inner.replace('{CLOSE}', ""); var dialog = document.getElementById('cDialog'); if (dialog.style.display != 'none') dialogClose(); if (document.getElementById('videoofday')) document.getElementById('videoofday').style.visibility = 'hidden'; var t = 0; // print_r(document.embeds[0]); for (var i = 0; i < document.embeds.length; i++) document.embeds[i].style.visibility = 'hidden'; var blank = document.getElementById('imgBlank'); dialog.innerHTML = req.responseJS.dialog.inner; dialog.style.display = "inline"; var hg = document.body.scrollTop + ((window.innerHeight) ? window.innerHeight : ((document.all) ? document.body.offsetHeight : 0)) / 2; var wg = document.body.scrollLeft + ((window.innerWidth) ? window.innerWidth : ((document.all) ? document.body.offsetWidth : 0)) / 2; var dw = ((req.responseJS.dialog.w) ? req.responseJS.dialog.w : dialog.offsetWidth) var dh = ((req.responseJS.dialog.h) ? req.responseJS.dialog.h : dialog.offsetHeight) blank.style.width = document.body.scrollWidth; blank.style.height = document.body.scrollHeight; if (req.responseJS.dialog.w && req.responseJS.dialog.h) { dialog.style.height = dh; dialog.style.width = dw; } dialog.style.top = (hg > dialog.offsetHeight / 2 && hg - dh / 2 > document.body.scrollTop) ? hg - dh / 2 : document.body.scrollTop; dialog.style.left = (wg > dialog.offsetWidth / 2) ? wg - dw / 2 : 0; dialog.style.visibility = "visible"; ShowShadow(); if (document.getElementById('imageshow')) { document.getElementById('busy').style.display = 'inline'; image = document.getElementById('imageshow'); image.onload = function() { document.getElementById('busy').style.display = 'none'; } /* if (document.body.scrollTop > dialog.offsetTop) document.body.scrollTop = dialog.offsetTop;*/ } if (req.responseJS.dialog.focus && document.getElementById(req.responseJS.dialog.focus)) document.getElementById(req.responseJS.dialog.focus).focus(); } else dialogClose(); } if (req.responseJS.filter) { filter = document.getElementById('filter'); filter.innerHTML = req.responseJS.filter; filter.style.left = btn.x; filter.style.top = btn.y - 3; } if (req.responseJS.view) { for (var i = 0; i < req.responseJS.view.length; i ++) { if (req.responseJS.view[i] && req.responseJS.view[i].container && document.getElementById(req.responseJS.view[i].container)) { var container = document.getElementById(req.responseJS.view[i].container); if (req.responseJS.view[i].inner || req.responseJS.view[i].inner == '' || req.responseJS.view[i].inner == 0) { container.innerHTML = req.responseJS.view[i].inner; document.getElementById(req.responseJS.view[i].container).parentNode.appendChild(document.getElementById(req.responseJS.view[i].container)); if (req.responseJS.view[i].scrolltop && document.body.scrollTop > req.responseJS.view[i].scrolltop) document.body.scrollTop = req.responseJS.view[i].scrolltop; if (req.responseJS.view[i].focusid && document.getElementById(req.responseJS.view[i].focusid)) document.getElementById(req.responseJS.view[i].focusid).focus(); } else if (req.responseJS.view[i].value || req.responseJS.view[i].value == '' || req.responseJS.view[i].value == 0) container.value = req.responseJS.view[i].value; } } } if (req.responseJS.referer) { if (req.responseJS.referer != '.') { window.location.href = req.responseJS.referer; } else { location.reload(true); } } } if (btn) btn.style.visibility = 'visible'; } } function SendData(op, btn, conf, formid, QuotedText) { if (conf) answerconf = confirm(conf); if (!conf || answerconf) { var req = new JsHttpRequest(); if (btn) btn.style.visibility = 'hidden'; var busy = document.getElementById('busy'); var hg = window.innerHeight; var wg = window.innerWidth; busy.style.top = document.body.scrollTop + ((window.innerHeight) ? window.innerHeight : ((document.all) ? document.body.offsetHeight : 0)) / 2 - 15; busy.style.left = document.body.scrollLeft + ((window.innerWidth) ? window.innerWidth : ((document.all) ? document.body.offsetWidth : 0)) / 2 - 15; busy.style.display = 'inline'; req.onreadystatechange = function () { ReceiveData(req, btn); } req.open(null, p_http + 'opbg.php?op=' + op, true); if (document.getElementById('formtosend') && !formid) req.send(document.getElementById('formtosend')); else if (formid && document.getElementById(formid)) req.send( document.getElementById(formid) ); else if (QuotedText) { req.send( {quoted: "" + QuotedText + ""}); } else req.send(null); } } function dialogClose() { if (document.getElementById('videoofday')) document.getElementById('videoofday').style.visibility = 'visible'; for (var i = 0; i < document.embeds.length; i++) document.embeds[i].style.visibility = 'visible'; var dialog = document.getElementById('cDialog'); dialog.innerHTML = ''; dialog.style.top = ''; dialog.style.left = ''; dialog.style.width = ''; dialog.style.height = ''; dialog.style.visibility = "hidden"; dialog.style.display = "none"; var blank = document.getElementById('imgBlank'); blank.style.width = "0"; blank.style.height = "0"; ShowShadow(); } function ShowPhoto(id) { SendData('getphoto&id=' + id); } function ShowFilePic(id) { SendData('getfilepic&id=' + id); } function AddBrowse() { var item = document.createElement('input'); item.type = 'file'; item.name = 'photo[]'; document.getElementById('files').appendChild(item); item = document.createElement('br'); document.getElementById('files').appendChild(item); document.getElementById('cDialogShadow').style.height = document.getElementById('cDialog').offsetHeight; } function ShowShadow() { if (document.getElementById('cDialog') && document.getElementById('cDialogShadow')) { var dialog = document.getElementById('cDialog'); var shadow = document.getElementById('cDialogShadow'); shadow.style.width = dialog.offsetWidth; shadow.style.height = dialog.offsetHeight; shadow.style.top = dialog.offsetTop + 3; shadow.style.left = dialog.offsetLeft + 3; shadow.style.visibility = dialog.style.visibility; shadow.style.display = dialog.style.display; if (dialog.style.display == 'inline') setTimeout("ShowShadow();", 500); } } function ShowImageInfo(e) { if (document.getElementById('imageinfo')) { document.getElementById('imageinfo').style.display = 'inline'; } } function HideImageInfo() { if (document.getElementById('imageinfo')) document.getElementById('imageinfo').style.display = 'none'; } function SetFav(e) { if (e && e > 0 && e < 6) document.getElementById('fav').style.width = e * 16 + 'px'; else document.getElementById('fav').style.width = e + 'px'; } function SelectFav(id, fav) { SendData('setfav&id=' + id + '&fav=' + fav); } function SelectionStart(id) { SelStart = id; } function SelectionEnd(id) { SelEnd = id; } function SelectionQuote(op) { if (!SelStart || !SelEnd) alert('Не выделен текст, либо выделен текст вне сообщения.'); else if (SelStart != SelEnd) alert('Нельзя цитировать несколько сообщений.'); else { if (window.getSelection) var QuotedText = window.getSelection(); else if (document.getSelection) var QuotedText = document.getSelection(); else if (document.selection) var QuotedText = document.selection.createRange().text; else return; if (!QuotedText) alert('Для цитирования необходимо выдиелить текст.'); else if (QuotedText.toString().length > 2000) alert('Оверквотинг. Однозначно.'); else { SendData(op + '"e_id=' + SelStart, '', '', '', QuotedText); } } SelStart = 0; SelEnd = 0; } function ShowTools(id, obj) { if (document.getElementById(id)) { toolbox = document.getElementById(id); if (toolbox.style.display == 'inline' && toolbox.title == obj.id) toolbox.style.display = 'none'; else { toolbox.title = obj.id; toolbox.style.display = 'inline'; toolbox.style.top = obj.getBoundingClientRect().bottom + document.body.scrollTop; toolbox.style.left = obj.getBoundingClientRect().right - toolbox.offsetWidth + + document.body.scrollLeft; } } } function ShowPhotoTools(obj) { ShowTools('phototools', obj); } function ShowFileTools(obj) { ShowTools('filetools', obj); } function ShowMsgTools(obj) { ShowTools('msgtools', obj); } function ShowCommentTools(obj) { ShowTools('commenttools', obj); }