// =========================================== useful funcs  ---------------------------

	$.postJSON = function(url, data, func) { $.post(url, data, func, "json"); }


	function russifyWord(names, val)
	{
		if (val < 10 || val >=20)
		{
           	x = val%10;
			if (x == 1) rr = 0;
			else if (x <= 4) rr = 1;
			else rr = 2;
		}
		else
           	rr = 2;
		return names[rr];
	}

	function strpos (haystack, needle, offset) {
	    var i = (haystack+'').indexOf(needle, (offset || 0));
    	return i === -1 ? false : i;
	}

	//IE doesn't support indexOf - Oh....
	if(!Array.indexOf){
	   Array.prototype.indexOf = function(obj){
	      for(var i=0; i<this.length; i++)
	         if(this[i]===obj)
	            return i;
	      return -1;
	   }
	}

	//Like split, but makes array if no separator found (split returns string itself, not array)
	String.prototype.explode = function(separator){
		var res = this.split(separator);
		if (res == this)
		{
			res = new Array();
			res.push(this);
		}
		return res;
	}

	function serializeForm(obj, skip_zeros)
	{
		var ret = [];
		var x = obj.serializeArray();
		var need_to;
		for (var i=0; i<x.length; i++)
		{
			need_to = true;
			if (skip_zeros === true)
				if (x[i].value == 0)
					need_to = false;

			if (need_to == true)
				ret.push(x[i].name+"="+encodeURI(x[i].value));
		}
		return ret.join('&');
	}

	function getQuerystring(key, default_)
	{
	  if (default_==null) default_="";
	  key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
	  var regex = new RegExp("[\\?&]"+key+"=([^&#]*)");
	  var qs = regex.exec(window.location.href);
	  if(qs == null)
	    return default_;
	  else
	    return qs[1];
	}


// =========================================== SETUPS  ---------------------------


// =========================================== on window resize ---------------------------


$(window).resize(function() {
});


// =========================================== on dom ready ---------------------------
$(document).ready(function(){

//------Logo вверху страницы
	$("#topPlace_Logo").click(function(){window.location.href='/'});

//------ Декорация черестрочно табличек
	//Decorate even and orr rows
	function decorateStrippedTable()
	{
		$('.strippedTable tr:even').addClass('even');
	}
	decorateStrippedTable();

//------------- Сабмит логина
	$("#exec_LoginProcess").bind('click', function(){


		var q = "/user/login";
		$.postJSON(q, { "user[password]": $("#user_password").val(), "user[login]": $("#user_login").val(), "user[csrf_token]": $("#user_csrf_token").val() }, function (json) {
			if (json)
			{
				$("#topUserLogin_Form_Err").html('');
				if (json[0].status != 'ok')
				{
					$.each(json[0].errors, function(i, item){
						$("#topUserLogin_Form_Err").append("<p>"+item.message+"</p>")
					});
				}
				else
				{
					window.location.href='';
				}
			}
		});


		return false;
	});

//------------ Декораци селектов и инпутов
	//decorate form inputs
	var inputs = $('input.decorate, textarea, #body button, body.popupwindow button').not('.not_decorate')
	if ($.browser.msie && $.browser.version < 7) {
		inputs = inputs.not('#body *, body.popupwindow *');
	}
	inputs.decorate();

//----------- Попапы -------------

	//Разворачивание формы входа
	$("#execTopUserLogin_Show").bind('click', function(){
		if ($('#topUserLogin_Form').css('display') == 'none')
		{
	    	$("#topUserLogin_Login").addClass('topUserLogin_Login_Active');
    		$("#topUserLogin_Form").show();
		}
		else
		{
			$("#topUserLogin_Form").hide();
	    	$("#topUserLogin_Login").removeClass('topUserLogin_Login_Active');
		}
		return false;
	});



//----------- Top Menu

	$("#exec_MenuClick_Men").bind('mouseenter', function(){
		$(".topMenu_CatPopup").hide();

		$("#topMenu_CatPopup_Men").show();
		$(this).addClass('activated');
		$("#exec_MenuClick_Women").removeClass('activated');

		return false;
	});
	$("#exec_MenuClick_Women").bind('mouseenter', function(){
		$(".topMenu_CatPopup").hide();
		$("#topMenu_CatPopup_Women").show();
		$(this).addClass('activated');
		$("#exec_MenuClick_Men").removeClass('activated');
		return false;
	});
	$(".topMenu_CatPopup").bind('mouseleave', function(){
		$(".topMenu_CatPopup").hide();
		return false;
	});



/*
	$("#exec_MenuClick_Men").bind('click', function(){
		$(".topMenu_CatPopup").hide();
		if (!$(this).hasClass('activated'))
		{
			$("#topMenu_CatPopup_Men").show();
			$(this).addClass('activated');
			$("#exec_MenuClick_Women").removeClass('activated');
		}
		else
			$(this).removeClass('activated');

		return false;
	});
	$("#exec_MenuClick_Women").bind('click', function(){
		$(".topMenu_CatPopup").hide();

		if (!$(this).hasClass('activated'))
		{
			$("#topMenu_CatPopup_Women").show();
			$(this).addClass('activated');
			$("#exec_MenuClick_Men").removeClass('activated');
		}
		else
			$(this).removeClass('activated');

		return false;
	});
*/

	$(".execMenu_CatPopup_Close").bind('click', function(){
		$(".topMenu_CatPopup").hide();
		$("#exec_MenuClick_Men").removeClass('activated');
		$("#exec_MenuClick_Women").removeClass('activated');
		return false;
	});

//----------- Заголовки страницы - ширина <a>
	$.each($(".sectionHeader_Img a"), function(i, item){
		$(item).css('width', $(item).parent().css('width'));
	});


//----------- Закрывалка попапа
	$(".execPopupMsgClose").click(function(){tb_remove();});


//----------- Cart at TOP
	function cartTopPlaceRebuild()
	{
		var q = "/user/ajax_get_cart_info";
		$.postJSON(q, {"rand": Math.random()}, function (json) {
			if (json)
			{
				$("#topUserCart_Info").html('');

				if (json.total_quantity == 0)
				{
					$("#topUserCart_Info").html('Ваша корзина пуста');
				}
				else
				{
					var names = ['товар', 'товара', 'товаров'];
					$("#topUserCart_Info").html("<a href='/user/cart/'>&nbsp;"+json.total_quantity +'&nbsp;'+ russifyWord(names, json.total_quantity) +"&nbsp;на&nbsp;"+json.sum+" руб.</a>");
				}

				//Для зареганых бывает старая корзина с прошлого посещения
				if (json.old_cart_exists)
				{
					$("#topUserCart_Info").append("<br /><a class='gray' href='/user/cart/'>Товары с прошлого визита</a>");
				}

			}
		});


	}
	cartTopPlaceRebuild();


//------------ Online at top of page (skype, icq, etc.)
	$('#topPlace_Skype_IcqHref').cluetip({local:true, hideLocal: true, activation: 'hover', sticky: true, mouseOutClose: true, clickThrough: false, width: 229, closePosition: 'title', closeText: "&nbsp;", showTitle: false, positionBy: 'fixed', rightOffset: -124, topOffset: 0});




//------------ LOOKS
	if ($("#page-looks-index").length > 0)
	{
                $.each($(".looksCarousel_IDS"), function (i, item){
                        var id= $(item).val();

										var caro = new dw_scrollObj('looksCarousel_'+id, 'looksCarousel_Inner_'+id, 'looksCarousel_Table_'+id, true);
                                        caro.setUpScrollControls('looksCarousel_ButtonLeft_'+id);
                                        caro.setUpScrollControls('looksCarousel_ButtonRight_'+id);

                                $(".mouseover_right").bind('mouseenter', function(){
                                    //alert(1);
                                    caro.updateDims();
                                });
                });

	}

//---------- Color selector -------------
	if ($("#page-details-view").length > 0)
	{

    	var goodsDetails_ColorSize_WhoFirst = '';

		//Ивент на сброс цвета и размера
		$(".goodsDetails_ColorsSizes_Initiate").bind('click', function(){

			$("#goodsColorPicker_js").val('');
			$("#goodsDetails_SizeSelect").val(0);

			$('.goodsDetails_ColorActive').removeClass('goodsDetails_ColorActive');

			$(".goodsDetails_Hint").animate({height: 'hide'});

			goodsDetails_ColorSize_WhoFirst = '';

			goodsDetails_BuildColors_Sizes();

			return false;
		});

		//Перестроить селект и цвета
		function goodsDetails_BuildColors_Sizes()
		{

			var selected_color = (goodsDetails_ColorSize_WhoFirst == 'colors')?$("#goodsColorPicker_js").val():'';
			var selected_size = (goodsDetails_ColorSize_WhoFirst == 'sizes')? $("#goodsDetails_SizeSelect").val(): '';
			var selected_size_preserved = $("#goodsDetails_SizeSelect").val();

			var need_colors = false;
			var need_sizes = false;

			if (goodsDetails_ColorSize_WhoFirst == '')
			{
				need_colors = true;
				need_sizes = true;
			}

			if (goodsDetails_ColorSize_WhoFirst == 'sizes')
				need_colors = true;
			if (goodsDetails_ColorSize_WhoFirst == 'colors')
				need_sizes = true;




			var q = "/clothes/ajax_color_size";
			$.postJSON(q, { "color": selected_color, "size": selected_size, "cl_id": $("#goodsDetailId_js").val() }, function (json) {
				if (json)
				{
					if (need_colors)
					{
						$('.goodsDetails_ColorBlocked').show();

						$.each(json.colors, function(i, item){
							$('#goodsDetails_ColorBlocked_'+item).hide();
						});
					}
					if (need_sizes)
					{
						$("#goodsDetails_SizeSelect").remove();
						$("#__select_goodsDetails_SizeSelect_value").remove();
						$("#__select_goodsDetails_SizeSelect_options").remove();

						$("#goodsDetails_DescInnerSize").append("<select id='goodsDetails_SizeSelect'></select>");

						var local_selected_item = selected_size_preserved;

						var select = $("#goodsDetails_SizeSelect");
						select.append("<option value='0' " + ((local_selected_item == 0)?'selected':'') + ">Выберите свой размер</option>");
						$.each(json.sizes, function(i, item){
							select.append("<option value='"+item+"' " + ((local_selected_item == item)?'selected':'') + " >"+item+"</option>");
						});

						new HTMLSelect("#goodsDetails_SizeSelect", goodsDetails_SelectChange);
					}

				}
			});

		}


		//Событие на выбор в декорированном селекте - вызывается как call-back функция из самого селекта
    	function goodsDetails_SelectChange()
		{
			if (goodsDetails_ColorSize_WhoFirst == 'sizes')
			{
				$("#goodsColorPicker_js").val('');
				$('.goodsDetails_ColorActive').removeClass('goodsDetails_ColorActive');
			}

			if (goodsDetails_ColorSize_WhoFirst == '')
			{
				$(".goodsDetails_Hint").hide();
				$("#goodsDetails_Hint_SomeColors").animate({height: 'show'});

//alert('size was first');

				goodsDetails_ColorSize_WhoFirst = 'sizes';
			}

			goodsDetails_BuildColors_Sizes();
		}

		var size_select = new HTMLSelect("#goodsDetails_SizeSelect", goodsDetails_SelectChange);

		//Событие на выбор цвета
		$(".goodsDetails_ColorHolder").bind('click', function(){

			if ($(this).children('div.goodsDetails_ColorBlocked').css('display') == 'block') //что бы не кликалось по заблокированному цвету
				return false;

			$('.goodsDetails_ColorActive').addClass('goodsDetails_ColorNonactive');
			$('.goodsDetails_ColorActive').removeClass('goodsDetails_ColorActive');
			$(this).children('.goodsDetails_ColorNonactive').addClass('goodsDetails_ColorActive');

			$("#goodsColorPicker_js").val($(this).children('a')[0].rel);

			if (goodsDetails_ColorSize_WhoFirst == 'colors')
			{
			}


			if (goodsDetails_ColorSize_WhoFirst == '') //Размер не выбран, но кликнут цвет - показать размеры только этого цвета
			{
				$(".goodsDetails_Hint").hide();
				$("#goodsDetails_Hint_SomeSizes").animate({height: 'show'});

				goodsDetails_ColorSize_WhoFirst = 'colors';
//alert('color was first');
			}

			goodsDetails_BuildColors_Sizes();

		});

		//Автовыбор цвета при загрузке страницы, если цвет один
		if ($(".goodsDetails_ColorHolder a").length == 1)
		{
			$("#goodsDetails_ColorHolder").children('.goodsDetails_ColorNonactive').addClass('goodsDetails_ColorActive');
			$("#goodsColorPicker_js").val($("#goodsDetails_ColorHolder").children('a')[0].rel);
			goodsDetails_ColorSize_WhoFirst = 'colors';
		}


//------Корзина - кнопка "положить" в карточке детали
		$("#execButtonAddToCart").bind('click', function(){

			//Проверить выбран ли размер и количество
			if ($("#goodsColorPicker_js").val() == '' || $("#goodsDetails_SizeSelect").val() == 0)
			{
				//alert('Пожалуйста, выберите размер и цвет товара, что бы добавить его в корзину.');
				tb_init_manual($("#popupMsg_AddToCart_Initer")[0]);

				return false;
			}

			//Проверить корзину - может быть там уже есть такой товар?


			//Засунуть в корзину
			var q = "/user/ajax_put_to_cart";
			$.postJSON(q, { "color": $("#goodsColorPicker_js").val(), "size": $("#goodsDetails_SizeSelect").val(), "cl_id": $("#goodsDetailId_js").val() }, function (json) {
				if (json)
				{
					if (json.status == 'ok')
					{
						$("#buttonAddToCart_Hint").fadeIn();
						setTimeout(function(){ $("#buttonAddToCart_Hint").fadeOut(1000); }, 1500);
						cartTopPlaceRebuild();
					}
					else
					{
						if (json.status == 'too_many_goods_in_cart')
							$("#buttonAddToCart_Error").html("<img src='/img/err.gif' />Товар не добавлен - в вашей корзине слишком много товаров.");
						else if (json.status == 'no_goods_in_stock_left')
							$("#buttonAddToCart_Error").html("<img src='/img/err.gif' />Товар не добавлен -  к сожалению, он закончился. Приносим свои извинения.");
						else
							$("#buttonAddToCart_Error").html("<img src='/img/err.gif' />Ошибка добавления в корзину. Обновите страницу и попробуйте снова.");


						$("#buttonAddToCart_Error").fadeIn();
					}
				}
			});


			return false;
		});
	}

//------Корзина - на странице корзины
	if ($("#page-user-cart").length > 0)
	{
		function cartRebuildPrices()
		{
			var q = "/user/ajax_get_cart_info";
			$.postJSON(q, {"details_sums": 1}, function (json) {
				if (json)
				{

					$(".cartProcessOrder_sum_data").html(json.sum);
					$.each(json.details_sums, function(i, item){
						$("#catrItem_price_"+i).html(item);
					});
				}
			});
		}

		$(".execCartDeleteParticularSize").bind('click', function() {
			var link = $(this);

			var dt = this.rel.split("&");
			var q = "/user/ajax_remove_from_cart";
			$.postJSON(q, { "removal_count": "all", "color": dt[0], "size": dt[1], "cl_id": dt[2] }, function (json) {
				if (json)
				{
					if (json.status == 'ok')
					{
						link.parent().parent().animate({width: 'hide'});

						if (json.quantity_this_detail == 0)
						{
							link.parent().parent().parent().parent().animate({height: 'hide'});
						}

						if (json.quantity_total_details == 0)
						{
							$('#contentPlace').append("<div id='cartEmpty'>Ваша корзина пуста.</div>");
							$('.cartProcessOrder').remove();
						}
					}
					else
					{

					}

					cartRebuildPrices();
					cartTopPlaceRebuild();
				}
			});

			return false;
		});

		//Изменение количества деталей в корзине
		$(".execCartChangeQntParticularSize").bind('click', function() {
			var link = $(this);

			var dt = this.rel.split("&");
			var q = "/user/ajax_change_qnt_cart";
			$.postJSON(q, { "plusminus": (link.hasClass('minus')?'minus':'plus'), "color": dt[0], "size": dt[1], "cl_id": dt[2] }, function (json) {
				if (json)
				{
					if (json.status == 'ok')
					{
						if (json.detail_left <=1)
							link.children('img.minus').attr('src', '/img/blank9x9.gif');

						if (link.hasClass('plus'))
							link.parent().children('a').children('img.minus').attr('src', '/img/plusminus_minus.gif');

						$("#catrItem_qnt_"+dt[0]+"_"+dt[1]+"_"+dt[2]).html(json.detail_left);
					}
					else
					{
						if (json.status == 'unable_set_less_than_one')
							link.children('img.minus').attr('src', '/img/blank9x9.gif');
					}

					cartTopPlaceRebuild();
					cartRebuildPrices();
				}
			});

			return false;
		});

		$(".execCartDeleteWholeDetail").bind('click', function() {

			var link = $(this);
			link.parent().parent().parent().animate({height: 'hide'});
			return false;
		});

		//Удалить из "старой" корзины
		$(".execCartOldDelete").bind('click', function(){
			var link = $(this);
			var q = "/user/ajax_remove_from_oldcart";

			$.postJSON(q, { "cl_id": this.rel }, function (json) {
				if (json)
				{
					if (json.status == 'ok')
						link.parent().parent().parent().animate({width: 'hide'});
					if (json.oldcartemty)
						$("#cartOldCart").animate({height: 'hide'});

				}
			});
			return false;
		});

		//Вернуть из "старой" корзины в обычную
		$(".execCartOldPutIn").bind('click', function(){
			var q = "/user/ajax_restore_from_oldcart";
			$.postJSON(q, { "cl_id": this.rel }, function (json) {
				if (json)
					window.location.href = '';
			});
			return false;
		});
	}

//------Регистрация
	if ($("#page-user-register").length > 0)
	{
		new HTMLSelect("#register_birthdate_day");
		new HTMLSelect("#register_birthdate_month");
		new HTMLSelect("#register_birthdate_year");

		$("#register_phone").mask("+7 (999) 999 99 99");
	}


//------Оформление закзаа
	if ($("#page-user-order_process").length > 0)
	{

		$("#form_phone").mask("+7 (999) 999 99 99");

		new HTMLSelect("#form_delivery_ems_passport_issued_date_day");
		new HTMLSelect("#form_delivery_ems_passport_issued_date_month");
		new HTMLSelect("#form_delivery_ems_passport_issued_date_year");

		new HTMLSelect("#form_delivery_ems_birthdate_day");
		new HTMLSelect("#form_delivery_ems_birthdate_month");
		new HTMLSelect("#form_delivery_ems_birthdate_year");




		//Пересчет всех стоимостей по AJAX
		function orderProcessCountPrices()
		{
			//Delivery options
			var delivery_type = '';
            if ($("#form_delivery_type_self").parent().parent().hasClass('jdecor-radio-checked')) delivery_type = 'self';
            if ($("#form_delivery_type_courier").parent().parent().hasClass('jdecor-radio-checked')) delivery_type = 'courier';
            if ($("#form_delivery_type_ems").parent().parent().hasClass('jdecor-radio-checked')) delivery_type = 'ems';


			//Coupon options
			var check_coupon = '';
			if ($('#form_coupon').val() != '')
			{
				if ($('#form_coupon').val().length == 7)
					check_coupon = $('#form_coupon').val();
			}
			else
			{
				var t = $('#form_coupon_existing').val();
				if (t != 'manual' && t != '')
					check_coupon = t;
			}


			//AJAX Call
			var q = "/user/ajax_count_order_prices";
			$.postJSON(q, { "coupon": check_coupon, "delivery_type": delivery_type, 'city': $("#form_delivery_city").val() }, function (json) {
				if (json)
				{
					if (json.delivery_error == 'unknown')
						$("#orderDelivery_delivery_sum").html('уточните параметры доставки');
					else if (json.delivery_error == 'error')
						$("#orderDelivery_delivery_sum").html('ошибка вычисления стоимости');
					else
						$("#orderDelivery_delivery_sum").html(json.delivery_price+"&nbsp;руб.");

					if (delivery_type == 'courier')
						$("#orderDelivery_Part_courier_sum").html(json.delivery_price+"&nbsp;руб.");

					if (delivery_type == 'ems')
					{
						if (json.delivery_error == 'unknown')
							$("#orderDelivery_Part_ems_sum").html('Стоимость доставки: уточните параметры доставки');
						else if (json.delivery_error == 'error')
							$("#orderDelivery_Part_ems_sum").html('Ошибка вычисления стоимости');
						else
							$("#orderDelivery_Part_ems_sum").html("Стоимость доставки: "+json.delivery_price+" руб., от "+json.delivery_days.min+" до "+json.delivery_days.max+" дней.<br />Подробнее <a href='/info/delivery' target='_blank'>на нашем сайтe</a> или <a href='http://www.emspost.ru/calc' target='_blank'>сайте EMS Почта России</a>");
					}

					$('#orderDelivery_whole_sum').html(json.whole_sum);

					$("#orderDelivery_coupon_discount_sum").html(json.coupon_discount_sum);
				}
			});
		}

		orderProcessCountPrices(); //Call on page load


		//SELECT + Смена города в доставке
		new HTMLSelect("#form_delivery_city", orderProcessCountPrices);



		//Купоны
        //Now display SELECT or INPUT
		if ($('#form_coupon_existing').children('option').length == 0)
			$('#form_coupon').show();
		else
		{
			if ($('#form_coupon').val() != '') //This happens after form unlucky form submit
				$('#form_coupon').show();
			else
				new HTMLSelect("#form_coupon_existing",  orderProcessCountPrices);
		}

		$("#__select_form_coupon_existing_value_manual").click(function(){
			$('#form_coupon').show();
			$("#__select_form_coupon_existing_value").hide();
			$("#form_coupon_existing").val('');
		});

		$('#form_coupon').keyup(function(e){
			if ($('#form_coupon').val().length == 7)
	        	orderProcessCountPrices();
		});





        //Выбор типа доставки
		$("#form_delivery_type_self").change(function(){
			orderProcessCountPrices();
			$(".orderDelivery_Part").hide();
			$(".orderDelivery_Part_self").show();
		});
		$("#form_delivery_type_courier").change(function(){
			orderProcessCountPrices();
			$(".orderDelivery_Part").hide();
			$(".orderDelivery_Part_courier").show();
		});
		$("#form_delivery_type_ems").change(function(){
			orderProcessCountPrices();
			$(".orderDelivery_Part").hide();
			$(".orderDelivery_Part_ems").show();
		});

	}


//------------------ Каталог товаров
	if ($("#page-catalog-index").length > 0)
	{

		//Function to rotate slides inside cluetip
		function cluetipShowSlides(cluetip)
		{
			var innerdiv_object = cluetip.find('td.tooltipInnerTop_c div.tooltipInnerTop_Rotator');
			var innerdiv_id = innerdiv_object[0].id;

			var image_rotator = {};
			var image_list = [];
			var image_names = [];
			$.each($('#'+innerdiv_id+"_imagelist").html().replace(/^\s*|\s*$/g,"").explode(','), function(i,item){ // replace here works as TRIM
				image_names.push(item);
				var x = [];
				x.push(item);
				image_list.push(x);
			});

			//Preload images to find out maximum width for slide rotator! We add to #innerdiv_object - it will be cleared later by `new fadeSlideShow`
			var images_to_wait_count = image_names.length;
			var images_to_wait_hidden_div = innerdiv_object.append("<div style='position: absolute; top: 99000px; left: 99000px;'></div>");
			$.each(image_names, function(i, item){
				images_to_wait_hidden_div.find('div').append("<img class='execFadeslideshowImagePreloading' src='"+item+"'>");
			});

			$('.execFadeslideshowImagePreloading').load(function(){

				setTimeout(function(){ //tiny timeout - IE needs some time to complete internal shit

					images_to_wait_count -= 1;

					//All images are being loaded, do real stuff!
					if (images_to_wait_count == 0)
					{
						var max_width = 0;
	            		$.each($('.execFadeslideshowImagePreloading'), function(i2, item2){
							if (item2.clientWidth > max_width)
								max_width = item2.clientWidth;
						});

						if (max_width > 0)
						{
							image_rotator[innerdiv_id] = new fadeSlideShow({
								wrapperid: innerdiv_id, //ID of blank DIV on page to house Slideshow
								wrapperobject: innerdiv_object,//jQuery object of that wrapper div (see line ~50)
								dimensions: [max_width, 280], //width/height of gallery in pixels. Should reflect dimensions of largest image

								displaymode: {type:'auto', pause:1500, cycles:0, wraparound:true},
								persist: false, //remember last viewed slide and recall within same session?
								fadeduration: 500, //transition duration (milliseconds)
								descreveal: "ondemand",

								imagearray: image_list
							});
						}


					}
				}, 200); //setTimeout ends
			});


			return true;
		}



		//Tooltip
		var _topOffset = -330;
		var _rightOffset = -6;
		if (($.browser.msie == true && $.browser.version.slice(0,1) < "8"))
			_topOffset = -230;
		if ($.browser.opera == true )
		{
			_topOffset = -170;
			_rightOffset = 66;
		}



		function cluetipAssign(e)
		{
	        e.cluetip({onShow: cluetipShowSlides, local:true, hideLocal: true, activation: 'hover', sticky: false, clickThrough: true, width: 229, closePosition: 'title', closeText: "&nbsp;", showTitle: false, positionBy: 'fixed', rightOffset: _rightOffset, topOffset: _topOffset});
		}

		//Wait for image to be loaded to correctly determine rightOffset! (dom.ready is wrong - it fires BEFORE all images are downloaded)
		$.each($('.tooltipInfo'), function(i, item){
			//Для некоторых картинок dom.ready наступает раньше чем они загрузились. Поэтому мы ждем пока они загрузятся и родят .load(), а для остальных load уже был и картинка загружена, для них можно просто навесить (и более того, для них load никогда не насупит больше так как был раньше dom.ready)
			var client_width_to_check = ($.browser.msie == true)?28:0; //Для всех браузеров у картинки, которая НЕ загружена, ширина равна НОЛЬ, а у IE почему-то 28px...
			if ($(item).find('img')[0].clientWidth == client_width_to_check)
			{
	            $(item).find('img').load(function(){
    	        	cluetipAssign($(item));
				});
			}
			else
				cluetipAssign($(item));

		});


	}



//------------------ Поиск search
	try {
		$('#topSearch_input').val(decodeURI(getQuerystring('query', 'введите слово')).replace(/[+]/g, ' '));
	} catch (err) {}

	$('#topSearch_input').click(function(){
		if ($(this).val() == 'введите слово')
			$(this).val('');
	});
	$('#topSearch_input').focusout(function(){
		if ($(this).val() == '')
			$(this).val('введите слово');
	});


	//Search SUGGEST
	$("#topSearch_input").keyup(function(e){
		if (e.which == 38/*up*/ || e.which == 40/*down*/)
		{
			var total = 0;
			var current = 0;
        	$.each($('.search_suggest_row'), function(i, item){
				if ($(item).hasClass('search_suggest_rowsel'))
					current=i+1;
				total++;
			});
			if (total > 0)
			{
				if (e.which == 38/*up*/)
					if (current > 1)
						current--;
				if (e.which == 40/*down*/)
					if (current < total)
						current++;

                //now move
				if (current > 0)
				{
					$('.search_suggest_rowsel').removeClass('search_suggest_rowsel');
					$('#search_suggest_t tr:nth-child('+current+') td').addClass('search_suggest_rowsel');
				}
			}
		}
		else
		{
			if ($(this).val().length > 1)
			{
				var q = "/search/ajax_suggest";
				$.postJSON(q, { "query": $(this).val()}, function (json) {

					$("#topSearch_Suggest").html('');

					if (json)
					{
						$("#topSearch_Suggest").show();

						$("#topSearch_Suggest").append("<table class='search_suggest_t' id='search_suggest_t'></table>");
						var table = $('#search_suggest_t');

						$.each(json, function(i, item){
							var search_val = $("#topSearch_input").val();

							var hl = strpos(item.toLowerCase(), search_val.toLowerCase(), 0);
							if (hl !== false)
								item = item.substring(0, hl)+"<b>"+item.substring(hl, hl+search_val.length)+"</b>"+item.substring(hl+search_val.length, item.length);

							table.append("<tr><td class='search_suggest_row'>"+item+"</td></tr>");
						});

						//Add events
						$('.search_suggest_row').mouseover(function(){
							$('.search_suggest_rowsel').removeClass('search_suggest_rowsel');
							$(this).addClass('search_suggest_rowsel');
						});
						$('.search_suggest_row').click(function(){
							$("#topSearch_input").val($(this).html().replace(/(<([^>]+)>)/ig, ""));
							$("#topSearch_form").submit();
						});

					}
					else
						$("#topSearch_Suggest").hide();

				});
			}
		}
	});

	$("#topSearch_input").keydown(function(e){
		if (e.which == 13)
		{
			//Если что-то выбрано в suggest - вставить в поле
			if ($('.search_suggest_rowsel').length > 0)
			{
				$("#topSearch_input").val($($('.search_suggest_rowsel')[0]).html().replace(/(<([^>]+)>)/ig, ""));

				//and now form will be submitted automatically - 'cause ENTER pressed ))
			}
			else //А иначе засабмитить форму
			{
				if ($.trim($("#topSearch_input").val()) != '' && $("#topSearch_input").val() != 'введите слово')
					$("#topSearch_form").submit();
			}
		}
	});


	$("#topSearch_input").focusout(function(){
		setTimeout(function(){
			$("#topSearch_Suggest").html('');
    		$("#topSearch_Suggest").hide();
		}, 1000);
	});




})

