var prev_comment = 0;



// Ответ на комментарий

function cr(comment_id)

{

	if (prev_comment && prev_comment != comment_id)

	{

		document.getElementById(prev_comment).style.display = 'none';

	}



	var div = document.getElementById(comment_id);



	if (div.style.display != 'block')

	{

		div.style.display = 'block';

	}

	else

	{

		div.style.display = 'none';

	}



	prev_comment = comment_id;

}



var temp_ChildId = '';

var temp_CurrenElementId = '';

var menu_timeout_id = 0;

var filter_timeout_id = 0;



// обработчик наведения мыши на меню

function TopMenuOver(CurrenElementId, ChildId)

{

	clearTimeout(menu_timeout_id);



	if (temp_CurrenElementId != ''

	&& temp_CurrenElementId != CurrenElementId)

	{

		var oTemp_ChildId = document.getElementById(temp_ChildId);



		if (oTemp_ChildId)

		{

			oTemp_ChildId.style.display = "none";

		}

	}



	temp_ChildId = ChildId;

	temp_CurrenElementId = CurrenElementId;



	if (CurrenElementId == undefined)

	{

		return false;

	}



	if (ChildId != '')

	{

		var oChildId = document.getElementById(ChildId);



		if (oChildId)

		{

			oChildId.style.display = "block";

		}

	}

}



// обработчик уведения мыши с меню

function TopMenuOut(CurrenElementId, ChildId)

{

	if (CurrenElementId == undefined)

	{

		return false;

	}



	if (ChildId != '')

	{

		var oChildId = document.getElementById(ChildId);

		if (oChildId)

		{

			menu_timeout_id = setTimeout(function (){oChildId.style.display = "none"}, 300);

		}

	}

}



// Функция обратного вызова для AddIntoCart

function callbackfunction_AddIntoCart(responseJS)

{

	// Результат принят

	sended_request = false;



	if (typeof responseJS != 'undefined')

	{

		// Данные.

		if (typeof responseJS.cart != 'undefined')

		{

			var little_cart = document.getElementById('little_cart');



			if (little_cart)

			{

				// Создадим скрытый SPAN для IE, в который поместим текст + скрипт.

				// Если перед <script> не будет текста, нехороший IE не увидит SCRIPT

				var span = document.createElement("span");

				span.style.display = 'none';

				span.innerHTML = "Stupid IE. " + responseJS.cart;



				runScripts(span.getElementsByTagName('SCRIPT'));



				little_cart.innerHTML = responseJS.cart;

			}

			else

			{

				alert('Ошибка! Краткая корзина не найдена');

			}

		}

	}

}



function AddIntoCart(shop_path, item_id, item_count)

{

	//location.href = shop_path + 'cart/?ajax_add_item_id=' + item_id + '&count=' + item_count;

	cmsrequest = shop_path + 'cart/?ajax_add_item_id=' + item_id + '&count=' + item_count;



	// Отправляем запрос backend-у

	sendRequest(cmsrequest, 'get', callbackfunction_AddIntoCart);



	return false;

}



/**

* Склонение после числительных

* int number числительное

* int nominative Именительный падеж

* int genitive_singular Родительный падеж, единственное число

* int genitive_plural Родительный падеж, множественное число

*/

function declension(number, nominative, genitive_singular, genitive_plural)

{

	var last_digit = number % 10;

	var last_two_digits = number % 100;



	if (last_digit == 1 && last_two_digits != 11)

	{

		var result = nominative;

	}

	else

	{

		if ((last_digit == 2 && last_two_digits != 12) || (last_digit == 3 && last_two_digits != 13) || (last_digit == 4 && last_two_digits != 14))

		{

			var result = genitive_singular;

		}

		else

		{

			var result = genitive_plural;

		}

	}



	return result;

}



// массив для хранения текущих рейтингов звезд

var curr_rate = new Array();



// функция работы со звездами рейтинга

function set_rate(id, new_rate)

{

	// устанавливаем атрибуты

	curr_star = document.getElementById(id);

	parent_id = parseInt(curr_star.parentNode.id);



	// при первом пересчете ставим рейтинг для группы звезд в 0

	if (!curr_rate[parent_id])

	{

		curr_rate[parent_id] = 0;

	}



	// устанавливаем новый рейтинг в массив рейтингов и значение скрытого поля

	if (new_rate != curr_rate[parent_id] && parseInt(new_rate) > 0)

	{

		curr_rate[parent_id] = new_rate;



		/*curr_form = document.getElementById('comment_form_0' + (parent_id != 0 ? parent_id : ''));

		curr_form.comment_grade.value = curr_rate[parent_id].charAt(curr_rate[parent_id].length - 1);*/

		

		var curr_form_id = 'comment_form_0' + (parent_id != 0 ? parent_id : '');

		var comment_grade_value = curr_rate[parent_id].charAt(curr_rate[parent_id].length - 1);

		$("#"+curr_form_id+" input[name=comment_grade]").val(comment_grade_value);

		$("#"+curr_form_id+" input[name=shop_comment_grade]").val(comment_grade_value);

		

	}



	// пересчет стилей для звезд

	for (i = 1; i < 6; i++)

	{

		if (parent_id != 0)

		{

			j = parent_id + '' + i + '_star_' + i;

		}

		else

		{

			j = i + '_star_' + i;

		}



		temp_obj = document.getElementById(j);



		if (new_rate == 0)

		{

			id = curr_rate[parent_id];

		}



		if (parseInt(j) > parseInt(id))

		{

			temp_obj.className = '';

		}

		else

		{

			temp_obj.className = 'curr';

		}

	}

}



// Функция обратного вызова для CheckBlogUrl

function callbackfunction_CheckBlogUrl(responseJS)

{

	// Результат принят

	sended_request = false;



	if (typeof responseJS != 'undefined')

	{

		// Данные.

		if (typeof responseJS.check_url_result != 'undefined')

		{

			var check_url = document.getElementById('check_url');



			if (responseJS.check_url_result == 0)

			{

				check_url.className = 'error';

				html = 'Адрес занят.';

			}

			else

			{

				check_url.className = 'green';

				html = 'Адрес свободен.';

			}



			if (check_url)

			{

				check_url.innerHTML = html;

			}

			else

			{

				alert('Ошибка! Блок для вывода результатов запроса не найден');

			}

		}

	}

}



function CheckBlogUrl(blog_path, blog_url, parent_id, id)

{

	cmsrequest = blog_path + '?ajax_check_blog_url=' + blog_url + '&group_parent_id=' + parent_id + '&group_id=' + id;



	var check_url = document.getElementById('check_url');



	if (check_url)

	{

		check_url.innerHTML = '<img src="/hostcmsfiles/images/ajax_loader_mini.gif"/>';

	}



	// Отправляем запрос backend-у

	sendBackgroundRequest(cmsrequest, 'get', callbackfunction_CheckBlogUrl);



	return false;

}



// Установка или снятие всех флажков для checkbox'ов элементов.

function SelectAllItemsByPrefix(ASelect, prefix)

{

	element_array = document.getElementsByTagName("input");

	if (element_array.length > 0)

	{

		for (var i = 0; i < element_array.length; i++)

		{

			if (element_array[i].name.search(prefix) != -1)

			{

				// Устанавливаем checked

				element_array[i].checked = ASelect;

			}

		}



	}

}



//Проверка ячейки

function FieldCheckEmail(elementId)

{

	return true;

}



/*

 * jQuery Личные сообщения

 */



// список сообщений

$(function () {

	function reload_data (new_data) {

		$("#tmp").html(new_data);

		$("#messages_list").html($("#tmp #messages_list").html());

		x();

	}



	function x ()

	{

		// отправка сообщения 

		$('#send_messages').submit(

			function () {

				$.ajax({

					context: $('#messages_list'),

					data: 'JsHttpRequest=' + Math.round(new Date().getTime() / 1000) + '-xml&add_message=1&' + $('#send_messages').serialize(),

					dataType: 'json',

					success: function (data) {

						reload_data(data.js.content);

					}}

				)

				return false;

			}

		)



		// удаление сообщения 

		$('.delete').click(function () {

				curr_url = $(this).attr('href');



				$.ajax({

					url: curr_url,

					context: $('#messages_list'),

					data: 'JsHttpRequest=' + Math.round(new Date().getTime() / 1000) + '-xml',

					dataType: 'json',

					success: function (data) {

						reload_data(data.js.content);

					}

				})

				return false;

		})



		// отправка формы по Ctrl+Enter

		$('#send_messages textarea').keydown(function (e) {

			if (e.ctrlKey && e.keyCode == 13) {

				$('#send_messages').submit();

			}

		});



		// визуализация формы

		$('.form_msg').click(function () {

			var opt = {speed: 'fast'},

			form_msg = $('#form_msg');



			if(form_msg.is(':visible')) {

				form_msg.fadeOut(opt['speed']);

			}

			else {

				form_msg.fadeIn(opt['speed']);

			}

		});

	}



	x();



	// обновление данных по таймауту

	setInterval(function () {

		if ($('#messages_list').length && !$('#form_msg').is(':visible'))

		{

			$.ajax({

				context: $('#messages_list'),

				data: {'JsHttpRequest': Math.round(new Date().getTime() / 1000) + '-xml'},

				dataType: 'json',

				success: function (data) {

					reload_data(data.js.content);

				}

			})

		}

	}, 10000);

})



// окно переписки

$(function () {

	var temp_data = $('#temp_data'),

		send_message = $('#send_message'), // форма отправки сообщения

		load_messages = $('#load_messages'), // ссылка на подгрузку ранее добавленных сообщений

		messages_block = $('#message_list'), // окно вывода сообщений 

		messages_list = $('#message_list table'), // блок вывода сообщений 

		message_blocks = $('#message_list tr'), // блок вывода сообщения

		messages_list_height = '500', // максимальная высота окна переписки

		messages_update_limit = '10000', // интервал обновления статуса сообщений

		auto_scroll = true,  // автоматическая прокрутка

		status_activity = 0;  // статус активности пользователя



	// изменение статуса активности пользователя

	$('body').mouseover(function () {

		status_activity++;

	});



	// id сообщения в DOM модели 

	function dom_message_id () {

		var msg_obj = $('.unread_to,.unread_from'), // первое не прочитанное сообщение

			dom_msg_id = msg_obj.prev().attr('id'); // id сообщения предшествующее первому не прочитанному



		if (dom_msg_id == undefined) {

			dom_msg_id = msg_obj.first().attr('id');



			if (dom_msg_id == undefined) {

				var last_msg = $('#message_list tr:last');

				dom_msg_id = last_msg.prev().attr('id');



				if (dom_msg_id == undefined) dom_msg_id = last_msg.attr('id');

			}

		}

		return dom_msg_id;

	};



	// id сообщения в формате int

	// используется для отправки запроса на сервер

	function message_id () {

		return dom_message_id().split('_')['1'];

	};



	// замена сообщения в списке

	$.fn.replaceMessage = function () {

		var new_msg = $(this),

			old_msg = messages_list.find('[id="' + new_msg.attr('id') +'"]');



		// есть что менять

		if (old_msg.length) old_msg.replaceWith(new_msg);

	};



	// добавить в начало

	$.fn.addToBefore = function (add_list) {

		$(this).prepend(add_list);

	};



	// добавить в конец

	$.fn.addToAffter = function (add_list) {

		$(this).append(add_list);

	};



	$.fn.maxHeight = function (max_height) {

		var height_block = $(this);



		if (height_block.height() > max_height) height_block.height(max_height + 'px');

		else height_block.height('auto');

	}



	// отправка формы по Ctrl+Enter

	send_message.find('textarea').keydown(function (e) {

		if (e.ctrlKey && e.keyCode == 13) send_message.submit();

	});



	// отправка/обновлене списка сообщений

	function update_messages(type, read_status) 

	{

		// отправка сообщения

		if (type == 'add') {

			var config = {

				data: 'JsHttpRequest=' + Math.round(new Date().getTime() / 1000) + '-xml&add_message=1&' + send_message.serialize() + '&after_message_id=' + message_id() + '&read_status=1'

			};

		}

		// обновдение списка сообщений

		else {

			var config = {

				data: {

					JsHttpRequest: Math.round(new Date().getTime() / 1000) + '-xml',

					after_message_id: message_id(),

					read_status: read_status

				}

			};

		}



		$.ajax ($.extend({

			context: messages_list,

			dataType: 'json',



			success: function (data) {



				// данные во временный блок

				temp_data.html(data.js.content);



				// удаляем первое сообщение из полученных данных, если блок сообщений обновлялся не полностью

				if (messages_block.find('tr:first').attr('id') != dom_message_id()) temp_data.find('tr:first').remove();



				var new_messages = temp_data.find('tr');



				// обновление информации о существующих сообщениях

				new_messages.each(function () {

					$(this).replaceMessage(message_blocks);

				});



				// дописать не существующие сообщения в конец пепериски

				$(this).addToAffter(new_messages);



				// ограничение максимальной высоты окна списка сообщений

				messages_block.maxHeight(messages_list_height);



				// очистка формы

				if (type == 'add') {

					$('#send_message textarea[name=text]').val('');

					// включаем автоматическую прокрутку

					auto_scroll = true;

				}



				// прокрутка списка сообщений в конец

				if (auto_scroll == true) messages_block.scrollTop(messages_block.children(':first').height());

			}

		}, config))

	}



	// ограничение максимальной высоты окна списка сообщений

	messages_block.maxHeight(messages_list_height);

	messages_block.scrollTop(messages_block.children(':first').height());



	// автообновлене списка сообщений

	if (messages_block.length) {

		setInterval(function () {

			if (status_activity > 10 && auto_scroll == true) read_status = 1;

			else read_status = 0;



			// сброс статуса активности пользователя

			status_activity = 0;



			update_messages('update', read_status);

		},messages_update_limit);

	}



	// отправка сообщения

	send_message.submit(function () {

		update_messages('add');

		return false;

	});



	// подгрузка старых сообщений

	load_messages.click(function () {

		$.ajax({

			context: messages_list,

			dataType: 'json',



			data: {

				JsHttpRequest : Math.round(new Date().getTime() / 1000) + '-xml',

				load_messages : 1,

				count_messages : messages_list.find('tr').length - 1

			},



			success: function (data) {

				// данные во временный блок

				temp_data.html(data.js.content);



				var new_messages = temp_data.find('tr');



				// скрываем ссылку на догрузку

				if (new_messages.is('.first_msg') && load_messages.is(':visible')) load_messages.fadeOut('fast');



				// обновление информации о существующих сообщениях

				new_messages.each(function () {

					$(this).replaceMessage(message_blocks);

				});



				// дописать не существующие сообщения в начало пепериски

				$(this).addToBefore(new_messages);



				// ограничение максимальной высоты окна списка сообщений

				messages_block.maxHeight(messages_list_height);

				// прокрутка списка сообщений в начало

				messages_block.scrollTop(0);

			}

		})



		return false;

	});



	// прокрутка чата

	messages_block.scroll(function () { 

		if (messages_block.scrollTop() >= messages_block.children(':first').height() - messages_list_height - 30) auto_scroll = true;

		else auto_scroll = false;

	});

});
