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);
}