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 += 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) {
		if (req.responseJS.debug)
			alert(req.responseText);
		document.getElementById('statusroot').innerHTML = '';
		document.getElementById('statusroot').style.display = 'none';
		if (req.responseJS.error == '') {
			if (req.responseJS.alert) {
				alert(req.responseJS.alert);
			}
			if (req.responseJS.dialog && document.getElementById('dialog')) {
				var stat = document.getElementById('dialog');
				stat.innerHTML = req.responseJS.dialog;
				stat.style.top = document.body.scrollTop + ((window.innerHeight) ? window.innerHeight : ((document.all) ? document.body.offsetHeight : 0)) / 2 - 100;
				stat.style.left = document.body.scrollLeft + ((window.innerWidth) ? window.innerWidth : ((document.all) ? document.body.offsetWidth : 0)) / 2 - 200;
				stat.style.display = 'inline';
			}
			if (req.responseJS.view && req.responseJS.view.container && document.getElementById(req.responseJS.view.container)) {
				var container = document.getElementById(req.responseJS.view.container);
				container.innerHTML = (req.responseJS.view.inner) ? req.responseJS.view.inner : '';
				if (req.responseJS.view.style) {
					if (req.responseJS.view.style.top)
						container.style.top = req.responseJS.view.style.top;
					if (req.responseJS.view.style.height)
						container.style.height = req.responseJS.view.style.height;
				}
				container.style.display = 'inline';
			}
			if (req.responseJS.view2 && req.responseJS.view2.container && document.getElementById(req.responseJS.view2.container)) {
				var container = document.getElementById(req.responseJS.view2.container);
				container.innerHTML = (req.responseJS.view2.inner) ? req.responseJS.view2.inner : '';
				if (req.responseJS.view2.inner != '')
					container.style.display = 'inline';
				else
					container.style.display = 'none';
			}
			if (req.responseJS.referer) {
				if (req.responseJS.referer != '.')
					window.location.replace(req.responseJS.referer);
				else {
					var ref = window.location.href.replace(/#[0-9]+$/, "");
					window.location.replace(ref);
				}
			}
		}
		else {
			alert(l_error + '\n' + req.responseJS.error);
		}
		if (btn)
			btn.style.visibility = 'visible';
	}
	else if (req.readyState == 1 && document.getElementById('statusroot'))
		document.getElementById('statusroot').innerHTML = 'Receiving data...';
	else if (req.readyState == 2 && document.getElementById('statusroot'))
		document.getElementById('statusroot').innerHTML = 'Complete...';
	else if (req.readyState == 3 && document.getElementById('statusroot'))
		document.getElementById('statusroot').innerHTML = 'Partialy received...';
}
function SendData(op, btn, conf, formid) {
	if (conf)
		answerconf = confirm(conf);
	if (!conf || answerconf) {
		var req = new JsHttpRequest();
		if (btn)
			btn.style.visibility = 'hidden';
		var stat = document.getElementById('statusroot');
		stat.style.top = document.body.scrollTop + ((window.innerHeight) ? window.innerHeight : ((document.all) ? document.body.offsetHeight : 0)) / 2 - 50;
		stat.style.left = document.body.scrollLeft + ((window.innerWidth) ? window.innerWidth : ((document.all) ? document.body.offsetWidth : 0)) / 2 - 150;
		stat.innerHTML = 'Sending data & request...';
		stat.style.display = 'inline';
		req.onreadystatechange = function () { ReceiveData(req, btn); }
		req.open(null, p_http + p_prefix + '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
			req.send(null);
	}
}
function catchSelection() {
	if (window.getSelection) {
		selection = window.getSelection().toString();
	}
	else if (document.getSelection) {
		selection = document.getSelection();
	}
	else if (document.selection) {
		selection = document.selection.createRange().text;
	}
}
function SendSelection(msgid) {
	if (selection) {
		if (document.getElementById('quote')) {
			document.getElementById('quote').value = selection;
			document.getElementById('msgid').value = msgid;
			SendData('quote', '', '', 'formquote');
		}
	}
	else
		alert(l_no_select);
}
function GetSmiles(id, page, div) {
	var req = new JsHttpRequest();
	var stat = document.getElementById('statusroot');
	stat.style.top = document.body.scrollTop + ((window.innerHeight) ? window.innerHeight : ((document.all) ? document.body.offsetHeight : 0)) / 2 - 50;
	stat.style.left = document.body.scrollLeft + ((window.innerWidth) ? window.innerWidth : ((document.all) ? document.body.offsetWidth : 0)) / 2 - 150;
	stat.style.display = 'inline';
	req.onreadystatechange = function() {
		if (req.readyState == 4) {
			document.getElementById('statusroot').innerHTML = '';
			document.getElementById('statusroot').style.display = 'none';
			if (req.responseJS.error == '') {
				if (req.responseJS.answer != 'undefined')
					document.getElementById(div).innerHTML = req.responseJS.smiles;
				else {
					alert('JsHTTPRequest: ' + req.responseText);
					document.getElementById(div).innerHTML = '<span class=answererror>' + l_error + '</span>';
				}
// 				alert('JsHTTPRequest: ' + req.responseText);
			}
			else {
				alert(l_error + '\n' + req.responseJS.error);
				document.getElementById(div).innerHTML = '<span class=answererror>' + l_error + '</span>';
			}
		}
		else if (req.readyState == 1)
			document.getElementById('statusroot').innerHTML = 'Sending request...';
		else if (req.readyState == 2)
			document.getElementById('statusroot').innerHTML = 'Connecting...';
		else if (req.readyState == 3)
			document.getElementById('statusroot').innerHTML = 'Receiving data...';
	}
	req.open(null, p_http + p_prefix + 'opbg.php?op=getsmiles&page=' + page + '&id=' + id, true);
	req.send(null);
}
function DivShow(img, divid) {
	if (document.getElementById(divid)) {
		div = document.getElementById(divid);
		if (div.style.display == 'none') {
			img.src = i_hide;
			div.style.display = 'inline';
		}
		else {
			img.src = i_show;
			div.style.display = 'none';
		}
	}
}
function ZoomIn(obj, d, h) {
	span = document.getElementById('zoom' + obj.src);
	if (span && !is_operamini)
		span.innerHTML = '';
	if (!h)
		obj.width = d;
	else
		obj.height = d;
	obj.style.cursor = '-moz-zoom-out';
	obj.onclick = function() { ZoomOut(obj, d, h); }
}
function ZoomOut(obj, d, h) {
	span = document.getElementById('zoom' + obj.src);
	if (span && !is_operamini)
		span.innerHTML = 'Уменьшенное изображение. Нажмите для увеличения (' + obj.width + 'x' + obj.height + ')'
	if (!h)
		obj.width = img_width;
	else
		obj.height = img_height;
	obj.style.cursor = '-moz-zoom-in';
	obj.onclick = function() { ZoomIn(obj, d, h); }
}
function ImageLoad(obj) {
	var img = new Image();
	img.onload = function() {
		var wd = img.width;
		var hd = img.height;
		if (img.width > img_width) {
			span = document.getElementById('zoom' + img.src);
			if (span && !is_operamini)
				span.innerHTML = 'Уменьшенное изображение. Нажмите для увеличения (' + img.width + 'x' + img.height + ')'
			obj.width = img_width;
			obj.onclick = function() { ZoomIn(obj, wd, 0); }
			obj.style.cursor = '-moz-zoom-in';
		}
		else if (img.height > img_height) {
			obj.height = img_height;
			obj.onclick = function() { ZoomIn(obj, hd, 1); }
			obj.style.cursor = '-moz-zoom-in';
		}
		obj.style.display = 'block';
	}
	img.src = obj.src;
}
