
var data = "";
function getPrint(id)
{
    data = document.getElementById(id).innerHTML;
    window.open('/print.htm','_blank','height=700,width=800,status=0,toolbar=0,scrollbars=1,menubar=1');
}


if (document.selection || document.getSelection) Q = true; else Q = false; 
var copytxt = '';


function copy_text() 
{ 
	copytxt = '';
	if (document.getSelection && (document.getSelection() != '')) copytxt = '[quote]' + document.getSelection() + '[/quote]'; 
	  else if (document.selection && (document.selection.createRange().text != '')) copytxt = '[quote]' + document.selection.createRange().text + '[/quote]';
} 


function paste_text(elname) 
{
	var elm = document.getElementById(elname);
	elm.value += copytxt;
}


function count_simbols(obj, max)
{
	var s_count = obj.value.length;
	$('s_count').html(s_count);
}

function rand() {return Math.floor( Math.random() * (100000 - 1 + 1) ) + 1;}

/**
 * Отправить данные формы через аякс запрос. Вроде бы должна быть универсальная функция.
 * @param form_id - UID отправляемой формы
 * @param spinner_id - UID спинера, который будет бултыхаться во время отправки формы
 * @param message_id - UID плашки где будет показан результат работы запроса
 */
function send_ajax_form(form_id, spinner_id, message_id)
{
	form_id.remotize();
	form_id.send({
		encoding:'windows-1251',
		evalScripts:true,
		spinner:spinner_id,
		onFailure:function() {
			alert("Во время попытки отправить данные формы произошла ошибка. Попробуйте жмакнуть на кнопку ещё раз.");
		},
		onSuccess: function(response) {
			if (!message_id.visible()) message_id.toggle('fade');
			message_id.html(response.responseText);
		}
	});	
}

/**
 * Отправить данные формы через аякс запрос. Вроде бы должна быть универсальная функция.
 * @param form_id - UID отправляемой формы
 * @param spinner_id - UID спинера, который будет бултыхаться во время отправки формы
 * @param message_id - UID плашки где будет показан результат работы запроса
 * @param send_btn_id - UID кнопки, которую жмакнули для отправки формы
 * @param use_image_code - флаг необходимости использования капчи
 * @param eval_response - флаг того, что ответ сервера надо исполнить как скрипт
 */
function send_ajax_form2(form_id, spinner_id, message_id, send_btn_id, use_image_code, eval_response)
{
	ret_flag = true;
	
	send_btn_id.set('value', 'Сохраняю...');
	form_id.remotize();
	form_id.send({
		evalScripts:true,
		evalResponse:eval_response,
		encoding:'windows-1251',
		spinner: spinner_id,
		onFailure:function() {
			alert("Во время попытки отправить данные формы произошла ошибка. Попробуйте жмакнуть на кнопку ещё раз.");
			ret_flag = false;
		},
		onSuccess: function(r) {
			message_id.update(r.responseText);
			send_btn_id.set('value', 'Сохранить');
		    $(window).scrollTo(message_id.get('name'));

		    if (use_image_code)
		    {
				if ($('image_code-id'))
				{
					var img_url = '/image_code.php?rnd=' + Math.random(100000); 
					$('image_code-id').set('src', img_url);		
				}
		    }
		}
	});
	
	return ret_flag;
}


/*
 * Функции для получения позиции элемента
 */
var offset_top_position = 167; //поправка нужна т.к вёрстка делает отступ в 167 пикселей

function getOffset(elem) {
    if (elem.getBoundingClientRect) {
        // "правильный" вариант
        return getOffsetRect(elem)
    } else {
        // пусть работает хоть как-то
        return getOffsetSum(elem)
    }
}

function getOffsetSum(elem) {
    var top=0, left=0
    while(elem) {
        top = top + parseInt(elem.offsetTop)
        left = left + parseInt(elem.offsetLeft)
        elem = elem.offsetParent
    }
    top += offset_top_position;

    return {top: top, left: left}
}

function getOffsetRect(elem) {
    var box = elem.getBoundingClientRect()

    var body = document.body
    var docElem = document.documentElement

    var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop
    var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft

    var clientTop = docElem.clientTop || body.clientTop || 0
    var clientLeft = docElem.clientLeft || body.clientLeft || 0

    var top  = box.top +  scrollTop - clientTop
    var left = box.left + scrollLeft - clientLeft

    top += offset_top_position;
    
    return { top: Math.round(top), left: Math.round(left) }
}

