basketHandler = {
	addToBasket : function (button, product_id, instabuy, dropdead) {
		var currentURI = new URI(window.location.href);
		var data = 'product=' + product_id;
		if (dropdead) {
			data += '&traffic_source=2x';
		} else if (currentURI.get('data').utm_source) {
			data += '&traffic_source=' + currentURI.get('data').utm_source;
		}
		
		new futuAjax({
			button : button,
			color_to : '#FFFFFF',
			color_from : '#EDF14B',
			url : '/ajax/basket/add/',
			data : data,
			onLoadFunction : function (response) {
				if (!instabuy) {
					if (response.basket.product_amount > 0) {
						var products_in_basket = new Element('strong', {
							'html':response.basket.product_amount + ' в <a href="/basket/">корзине</a>',
							'class':'b-catalog_product_in_cart_count'
						});
						if (button.getParent('.b-buy_product').getElement('.b-catalog_product_in_cart_count')) {
							button.getParent('.b-buy_product').getElement('.b-catalog_product_in_cart_count').destroy();
						}
						products_in_basket.inject(button, 'after');
					}
					
					basketHandler.updateHeaderBasket(response.basket.items_count);
					futu_alert('Вы добавили {items_count} {items_count_word} в корзину.<br>Общая сумма заказа&nbsp;&mdash; {basket_total}&nbsp;руб.'.substitute({
						'items_count' : response.basket.items_count,
						'items_count_word' : utils.getPlural(response.basket.items_count, ['товар', 'товара', 'товаров']),
						'basket_total' : response.basket.display_total
					}));
				} else {
					window.location.href = '/basket/';
				}
			}
		});
	},
	deleteFromBasket : function (button, product_id) {
		new futuAjax({
			button : $(button),
			animated_element : button.getParent('tr'),
			color_to : '#F9A94C',
			color_from : '#EBEAEA',
			url : '/ajax/basket/remove/',
			data : 'id=' + product_id,
			onLoadFunction : function (response) {
				button.getParent('tr').destroy();
				basketHandler.updateHeaderBasket(response.basket.items_count);
				var res = new Hash(response);
				var prices = new Hash(response.delivery_prices);
				prices.each(function (price, delivery_id) {
					basketHandler.total_sum_non_cash[delivery_id] = price.non_cash;
					basketHandler.total_sum[delivery_id] = price.cash;
					if ($('i-order_delivery_region_' + delivery_id).checked) {
						basketHandler.total_sum.active = price.cash;
						basketHandler.total_sum_non_cash.active = price.non_cash;
					}
				});
				
				if ($('js-order_delivery_date')) {
					$('js-order_delivery_date').innerHTML = response.next_delivery_date;
				}
				
				if ($('i-order_pay_method_non_cash').checked) {
					var finished_cash_total = basketHandler.total_sum_non_cash.active;
				} else {
					var finished_cash_total = basketHandler.total_sum.active;
				}
				
				$('js-basket_total_sum').innerHTML = finished_cash_total + '&nbsp;руб.';	
				ajaxHandler.highlightField($('js-basket_total_sum'), '#F9A94C', '#D4DD25');

				if (response.basket.total == 0) {
					$('js-basket_products').addClass('hidden');
					$('js-basket_form').addClass('hidden');
					$('js-order_delivery_date_block').addClass('hidden');
					$('js-user_info').addClass('hidden');
					$('js-save_settings').addClass('hidden');
					$('js-basket_empty_block').removeClass('hidden');
					futu_alert('Вы удалили все товары из корзины.');
				}
				if (response.basket.total > 0) {
					futu_alert('Новая сумма заказа&nbsp;&mdash; ' + finished_cash_total + 'руб.');
				}
				
				if (response.basket.under_minimal_total == '1') {
					$('js-order_about_below_minimal_block').removeClass('hidden');
					//sav:$('js-basket_first_ok').addClass('hidden');
					$('js-user_info').addClass('hidden');
					$('js-save_settings').addClass('hidden');
					//sav:$('js-vkontakte_buy_button').addClass('hidden');
					
				} else {
					$('js-order_about_below_minimal_block').addClass('hidden');	
					//sav:$('js-basket_first_ok').removeClass('hidden');
					$('js-user_info').removeClass('hidden');
					$('js-save_settings').removeClass('hidden');
					//sav:$('js-vkontakte_buy_button').removeClass('hidden');					
				}
				basketHandler.setVkontakteButton();
			}
		});
	},
	changeBasketAmount : function (input, product_id) {
		new futuAjax({
			button : input,
			color_to : '#FFFFFF',
			color_from : '#ECF049',
			url : '/ajax/basket/update/',
			data : 'id=' + product_id + '&amount=' + input.value,
			onLoadFunction : function (response) {
				basketHandler.updateHeaderBasket(response.basket.items_count);
				var prices = new Hash(response.delivery_prices);
				prices.each(function (price, delivery_id) {
					basketHandler.total_sum_non_cash[delivery_id] = price.non_cash;
					basketHandler.total_sum[delivery_id] = price.cash;
					if ($('i-order_delivery_region_' + delivery_id).checked) {
						basketHandler.total_sum.active = price.cash;
						basketHandler.total_sum_non_cash.active = price.non_cash;
					}
				});
				
				if ($('i-order_pay_method_non_cash').checked) {
					var finished_cash_total = basketHandler.total_sum_non_cash.active;
				} else {
					var finished_cash_total = basketHandler.total_sum.active;
				}
				
				$('js-basket_total_sum').innerHTML = finished_cash_total + '&nbsp;руб.';
				
				ajaxHandler.highlightField($('js-basket_total_sum'), '#F9A94C', '#D4DD25');
				
				if (response.item) {
					input.getParent('tr').getElement('.b-order_product_price strong').innerHTML = response.item.display_total + '&nbsp;руб.';
					ajaxHandler.highlightField(input.getParent('tr').getElement('.b-order_product_price strong'), '#EBEAEA', '#F9A94C');
				} else {
					input.getParent('tr').destroy();
				}
				if (response.basket.total == 0) {
					$('js-basket_products').addClass('hidden');
					$('js-basket_form').addClass('hidden');
					$('js-basket_empty_block').removeClass('hidden');
					futu_alert('Вы удалили все товары из корзины.');
					//sav:$('js-vkontakte_buy_button').addClass('hidden');
				}
				if (response.basket.total > 0) {
					futu_alert(('Новая сумма заказа&nbsp;&mdash; ' + finished_cash_total + 'руб.'), false);
					//sav:$('js-vkontakte_buy_button').removeClass('hidden');
					basketHandler.setVkontakteButton();
				}
				
				if (response.basket.under_minimal_total == '1') {
					$('js-order_about_below_minimal_block').removeClass('hidden');
					//sav:$('js-basket_first_ok').addClass('hidden');
					$('js-user_info').addClass('hidden');
					$('js-save_settings').addClass('hidden');
					//sav:$('js-vkontakte_buy_button').addClass('hidden');
					
				} else {
					$('js-order_about_below_minimal_block').addClass('hidden');	
					//sav:$('js-basket_first_ok').removeClass('hidden');
					$('js-user_info').removeClass('hidden');
					$('js-save_settings').removeClass('hidden');
					//sav:$('js-vkontakte_buy_button').removeClass('hidden');
				}
			}
		});
	},
	onEnterAmount : function (e, input, product_id) {
		if (Browser.Engine.presto || Browser.Engine.trident) {
			e = new Event(e);
			if (e.key == 'enter') {
				input.onchange();
			}
		}
	},
	updateHeaderBasket : function (amount, user_name, user_email) {
		if ($('js-basket_header')) {
			if (amount > 0) {
				var basket_amount_text = 'У вас в <a href="/basket/">корзине {product_amount} {product_amount_text}</a>.'.substitute({
					'product_amount' : amount,
					'product_amount_text' : utils.getPlural(amount, ['товар','товара','товаров'])
				});
			} else {
				var basket_amount_text = 'У вас в <a href="/basket/">корзине</a> пусто.';
			}
			
			if ($('js-basket_header').hasClass('b-basket_no_user') && user_email && user_email.length > 0) {
				var user_hello_text = (user_name) ? 'Здравствуйте, <a href="/my/">{user_name}</a>!'.substitute({'user_name':user_name}) : 'Здравствуйте! <a href="/my/">Как вас зовут</a>?';
				$('js-basket_header').removeClass('b-basket_no_user');
				$('js-header_user_block').innerHTML = '<div class="b-cart_user">\
						<div class="b-cart_user_name">\
							{user_hello_text}\
						</div>\
						<form name="" method="post" action="/logout/" class="hidden" id="js-logout_form">	</form>\
						<a href="#" class="l-logout" onclick="$(\'js-logout_form\').submit(); return false;">выйти</a>\
					</div>\
					<div class="b-cart_cart_inner">\
						<a href="/basket/" class="l-cart_basket_pic png_bg"></a>\
						<span id="js-basket_header">{basket_amount_text}</span>\
					</div>'.substitute({
						'basket_amount_text':basket_amount_text,
						'user_hello_text':user_hello_text
					});
				if (Browser.Engine.trident && Browser.Engine.version  < 5) {
					DD_belatedPNG.fixPng($('js-header_user_block').getElement('.l-cart_basket_pic'));
				}
				$('js-header_user_block').set('morph', {duration:333});
				//$('js-header_user_block').morph({'bottom':0});
			} else {
				$('js-basket_header').innerHTML = basket_amount_text;
			}
		}
	},
	checkSendOrder : function () {
		if ($('i-order_legal_corporate').checked) {
			if ($('js-user_info_organization_name_input').value.trim().length < 1 || $('js-user_info_organization_name_input').value.trim() == 'Название организации') {
				futu_alert('Укажите, пожалуйста, название вашей организации');
				ajaxHandler.highlightField($('js-user_info_organization_name_input'), '#EBEAEA');
				return false;
			}
			if ($('js-user_info_legal_address_input').value.trim().length < 1) {
				futu_alert('Обязательно укажите юридический адрес вашей организации');
				ajaxHandler.highlightField($('js-user_info_legal_address_input'), '#EBEAEA');
				return false;
			}
			if ($('js-user_info_INN_input').value.trim().length < 1) {
				futu_alert('Нам необходим ИНН вашей организации');
				ajaxHandler.highlightField($('js-user_info_INN_input'), '#EBEAEA');
				return false;
			}
			if ($('js-user_info_KPP_input').value.trim().length < 1) {
				futu_alert('Нам необходим КПП вашей организации');
				ajaxHandler.highlightField($('js-user_info_KPP_input'), '#EBEAEA');
				return false;
			}
			if ($('js-user_info_about_email_input') && $('js-user_info_about_email_input').value.trim().length < 1) {
				futu_alert('Обязательно укажите ваш e-mail');
				ajaxHandler.highlightField($('js-user_info_about_email_input'), '#EBEAEA');
				return false;
			}
		}
		if ($('js-user_info_about_phone_input').value.trim().length < 1 || $('js-user_info_about_phone_input').value.trim() == 'номер') {
			futu_alert('Укажите номер телефона для связи с вами');
			ajaxHandler.highlightField($('js-user_info_about_phone_input'), '#EBEAEA');
			return false;
		}
		if ($('js-user_info_phone_code_input').value == 'код') {
			$('js-user_info_phone_code_input').value = '';
		}
		return true;
	},
	sendOrder : function (button) {
		if (basketHandler.checkSendOrder()) {
			new futuAjax({
				button : button,
				color_to : '#D4DD25',
				color_from : '#F9A94C',
				url : '/ajax/order/place/',
				data : $('js-order_user_info').toQueryString() + '&' + $('js-order_address_form').toQueryString() + '&' + $('js-basket_form').toQueryString(),
				onLoadFunction : function (response) {
					$('js-order').addClass('hidden');
					$('js-user_info').addClass('hidden');
					$('js-save_settings').addClass('hidden');
					var order_done_text = '<h3 style="font-weight:normal;">Поздравляем, Вы сделали <a href="/my/">заказ</a>!</h3><p>Его номер&nbsp;&mdash; {order_id}, стоимость&nbsp;&mdash; {order_total}&nbsp;руб.</p>'.substitute({
							'order_id' : response.order.display_id,
							'order_total' : response.order.displayed_total
					});
					var order_done_block = new Element('div', {
						'html':order_done_text,
						'class' : 'b-order_done',
						'id' : 'js-order_done_block'
					});
					//futu_alert(order_done_text, true);
					//order_done_block.inject($('js-save_settings'), 'after');
					////$('js-basket_header').innerHTML = 'У вас в <a href="/basket/">корзине</a> пусто';
					//
					//basketHandler.updateHeaderBasket(0, response.order.client_name, response.order.client_email);
					//
					//var myFx = new Fx.Scroll(window).start(window.getScroll().x, 0);
					
					window.location.href = '/basket/ok/' + response.order.display_id;
				},
				onCustomErrorFunction : function (response) {
					if (response.password_required && response.password_required == '1' && !$('js-order_user_info').getElement('.b-order_user_info_password')) {
						var password_block = new Element('div', {
							'html':'<label><span>Пароль:</span></label><input type="password" name="password">',
							'class':'b-order_user_info_password',
							'id':'js-user_info_about_password'
						});
						password_block.inject($('js-user_info_about_email'), 'after');
						password_block.getElement('input').focus();
						$('js-user_info_about_e_mail_text').removeClass('hidden');
					}
				}
			});
		}
	},
	setPayMethod : function (params) {
		if (params.delivery) {
			basketHandler.total_sum_non_cash.active = basketHandler.total_sum_non_cash[params.delivery];
			basketHandler.total_sum.active = basketHandler.total_sum[params.delivery];
			if (basketHandler.delivery_price[params.delivery] > 0) {
				$('js-order_delivery_price').innerHTML = basketHandler.delivery_price[params.delivery] + '&nbsp;руб.';
			} else {
				$('js-order_delivery_price').innerHTML = '';
			}
			if (basketHandler.non_cash_only[params.delivery]) {
				$('i-order_pay_method_non_cash').checked = true;
				$('js-order_about_only_non_cash_block').removeClass('hidden');
				$('i-order_pay_method_cash').addClass('hidden');
				$('i-order_pay_method_cash').getNext('.t-order_pay_method_cash').addClass('hidden');
				$('js-order_delivery_date_block').addClass('hidden');
			} else {
				$('js-order_about_only_non_cash_block').addClass('hidden');
				$('i-order_pay_method_cash').removeClass('hidden');
				$('i-order_pay_method_cash').getNext('.t-order_pay_method_cash').removeClass('hidden');
		}
		}
		if ($('i-order_pay_method_non_cash').checked) {
			var finished_cash_total = basketHandler.total_sum_non_cash.active;
		} else {
			var finished_cash_total = basketHandler.total_sum.active;
		}
		
		$('js-basket_total_sum').innerHTML = finished_cash_total + '&nbsp;руб.';
		
		if (params.cash && params.cash == 'cash') {
			var in_cash_text = 'Вы выбрали оплату наличными.';
			$('js-order_delivery_date_block').removeClass('hidden');
		} else if (params.cash && params.cash == 'non_cash') {
			var in_cash_text = 'Вы выбрали безналичную оплату.';
			$('js-order_delivery_date_block').addClass('hidden');
		}
		if (params.delivery) {
			var in_cash_text = 'Доставка ' + $('i-order_delivery_region_' + params.delivery).getNext('label').innerHTML + '.';
		}
		futu_alert('{in_cash_text}<br>Новая сумма заказа&nbsp;&mdash; {total_sum}&nbsp;руб.'.substitute({
			'in_cash_text' : in_cash_text,
			'total_sum' : finished_cash_total
		}));
	},
	setLegal : function (params) {
		if (params.legal == 'corporate') {
			$('js-order_user_legal_corporation_info').removeClass('hidden');
			$('js-user_info_about_phone_text').addClass('hidden');
			$('js-user_info_about_corporate_text').removeClass('hidden');
			$('js-user_info_about_e_mail_text').addClass('b-order_user_info_corporate_email');
		} else {
			$('js-order_user_legal_corporation_info').addClass('hidden');
			$('js-user_info_about_phone_text').removeClass('hidden');
			$('js-user_info_about_corporate_text').addClass('hidden');
			$('js-user_info_about_e_mail_text').removeClass('b-order_user_info_corporate_email');
		}
	},
	openPersonalInfoForm : function () {
		if ($('i-order_legal_corporate').checked) {
			$('js-order_user_legal_corporation_info').removeClass('hidden');
			$('js-user_info_about_corporate_text').removeClass('hidden');
			$('js-user_info_about_phone_text').addClass('hidden');
		}
		$('js-user_info').removeClass('hidden');
		$('js-save_settings').removeClass('hidden');
		var myFx = new Fx.Scroll(window, {'offset':{'x':0, 'y':-10}}).toElement('js-user_info');
	},
	firstPriceSet : function () {
		$('js-order_delivery_region_block').getElements('.i-order_delivery_region').each(function (input) {
			if (input.checked) {
				basketHandler.total_sum.active = basketHandler.total_sum[input.value];
				basketHandler.total_sum_non_cash.active = basketHandler.total_sum_non_cash[input.value];
				if ($('i-order_pay_method_cash').checked) {
					$('js-basket_total_sum').innerHTML = basketHandler.total_sum.active + '&nbsp;руб.';
				} else {
					$('js-basket_total_sum').innerHTML = basketHandler.total_sum_non_cash.active + '&nbsp;руб.';;
				}
				if (basketHandler.delivery_price[input.value] > 0) {
					$('js-order_delivery_price').innerHTML = basketHandler.delivery_price[input.value] + '&nbsp;руб.';
				} else {
					$('js-order_delivery_price').innerHTML = '';
				}
			}
		});
	},
	setVkontakteButton : function () {
		//sav:$('js-vkontakte_buy_button').innerHTML = VK.Merchant.button(prepareOrderForVkontakte, {type: 'button', text: 'Купить', text_right : 'Контакте'});
	}
};

smsHandler = {
	current_number : '',
	showPanel : function () {
		if (!$('js-sms_panel')) {
			smsHandler.buildPanel();
			smsHandler.showPanel();
		} else {
			$('js-sms_panel').removeClass('hidden');
		}
	},
	buildPanel : function () {
		var smsPanel = new Element('div', {
			'id' : 'js-sms_panel',
			'class' : 'b-sms_panel'
		});
		var iHTML = '<form name="" action="" method="post" onsubmit="smsHandler.sendPhone(); return false;" id="js-sms_phone_form">\
				<fieldset>\
					<p>Да, я&nbsp;хочу получать смс-уведомления о&nbsp;состоянии моего заказа на&nbsp;телефон</p>\
					<p><input class="i-sms_phone_code" id="js-sms_phone_code_input" type="text" name="phone" value="код сети"> <input class="i-sms_phone" id="js-sms_phone_input" type="text" name="phone" value="номер"></p>\
					<p class="b-sms_phone_template"><span class="b-sms_phone_template_code">xxx</span> xxxxxxx</p>\
					<div class="b-sms_submit"><a href="#" class="k-sms_submit" id="js-sms_phone_submit_button" onclick="smsHandler.sendPhone(); return false;"><span>Пожалуйста!</span></a></div>\
				</fieldset>\
			</form>\
			<form class="hidden" name="" action="" method="post" onsubmit="smsHandler.sendCode(); return false;" id="js-sms_code_form">\
				<fieldset>\
					<p><label>На телефон <span id="js-sms_current_phone_number"></span>&nbsp;(<a href="#" class="k-sms_another_phone" onclick="smsHandler.showPhoneForm(); return false;">другой</a>) отправлен код для подтверждения</label></p>\
					<p><input class="i-sms_code" id="js-sms_code_input" type="text" name="code" value="код"></p>\
					<div class="b-sms_submit"><a href="#" class="k-sms_submit" id="js-sms_code_submit_button" onclick="smsHandler.sendCode(); return false;"><span>Проверить</span></a></div>\
				</fieldset>\
			</form>\
			<a href="#" class="k-sms_close" onclick="smsHandler.hidePanel(); return false;"></a>';
		smsPanel.innerHTML = iHTML;
		smsPanel.inject($('js-page').getElement('.b-content'));
		smsPanel.setStyles({
			'top' : $('js-user_info_phone_code_input').getCoordinates('.b-content').top - 200,
			'left' : $('js-user_info_phone_code_input').getCoordinates('.b-content').left - 200
		});
		if ($('js-user_info_phone_code_input').value != 'код') {
			$('js-sms_phone_code_input').value = $('js-user_info_phone_code_input').value;
		}
		if ($('js-user_info_about_phone_input').value != 'номер') {
			$('js-sms_phone_input').value = $('js-user_info_about_phone_input').value;
		}
		utils.focusText($('js-sms_phone_code_input'), 'код сети');
		utils.focusText($('js-sms_phone_input'), 'номер');
		utils.focusText($('js-sms_code_input'), 'код');
		
	},
	hidePanel : function () {
		$('js-sms_panel').addClass('hidden');
	},
	showPhoneForm : function () {
		$('js-sms_phone_form').removeClass('hidden');
		$('js-sms_code_form').addClass('hidden');
	},
	showCodeForm : function () {
		$('js-sms_phone_form').addClass('hidden');
		$('js-sms_code_form').removeClass('hidden');
	},
	validatePhone : function () {
		if ($('js-sms_phone_input').value.trim() == '' || $('js-sms_phone_input').value.trim() == 'номер') {
			futu_alert('Укажите номер телефона и код сети, на который будут приходить смс.');
			ajaxHandler.highlightField($('js-sms_phone_input'));
			return false;
		}
		if ($('js-sms_phone_code_input').value.trim() == '' || $('js-sms_phone_input').value.trim() == 'код сети') {
			ajaxHandler.highlightField($('js-sms_phone_code_input'));
			futu_alert('Укажите код сети телефона, на который будут приходить смс.');
			return false;
		}
		return true;
	},
	sendPhone : function () {
		if (smsHandler.validatePhone()) {
			var url = '/ajax/my/confirm_mobile/';
			var data = 'phone_number=' + $('js-sms_phone_input').value + '&phone_code=' + $('js-sms_phone_code_input').value;
			new futuAjax({
				button : $('js-sms_phone_submit_button'),
				color_to : '#f9a94c',
				color_from : '#d4dd25',
				url : url,
				data : data,
				onLoadFunction : function (response) {
					futu_alert('Вам на телефон отправлен код подтверждения. Укажите его, пожалуйста.', true);
					if ($('js-user_info_about_phone_input').value.trim() == 'номер' || $('js-user_info_about_phone_input').value.trim() == '') {
						$('js-user_info_phone_code_input').value = $('js-sms_phone_code_input').value;
						$('js-user_info_about_phone_input').value = $('js-sms_phone_input').value;
					}
					smsHandler.current_number = '+7&nbsp;' + response.code + '&nbsp;' + response.number;
					$('js-sms_current_phone_number').innerHTML = smsHandler.current_number;
					smsHandler.showCodeForm();
				}
			});
		}
	},
	validateCode : function () {
		if ($('js-sms_code_input').value.trim() == '' || $('js-sms_code_input').value.trim() == 'код') {
			futu_alert('Вам на телефон отправлен код подтверждения. Укажите его, пожалуйста.');
			ajaxHandler.highlightField($('js-sms_code_input'));
			return false;
		}
	},
	sendCode : function () {
		if (smsHandler.validatePhone()) {
			var url = '/ajax/my/confirm_mobile/';
			var data = 'confirmation_code=' + $('js-sms_code_input').value;
			new futuAjax({
				button : $('js-sms_code_submit_button'),
				color_to : '#f9a94c',
				color_from : '#d4dd25',
				url : url,
				data : data,
				onLoadFunction : function (response) {
					futu_alert('Код верен, спасибо! Теперь вы следите за заказом.', true);
					smsHandler.hidePanel();
					$('js-sms_show_form_block').innerHTML = 'Отслеживание заказа по номеру ' + smsHandler.current_number + '&nbsp;(<a href="#" onclick="smsHandler.showPanel(); smsHandler.showPhoneForm(); return false;" class="k-sms_change_number">изменить</a>) установлено.';
				}
			});
		}
	}
};

catalogHandler = {
	setAttributes : function (category_id) {
		var url = '';
		if (category_id) {
			url = '/catalog/' + category_id + '?';
		} else {
			url = '?';
		}
		$(document).getElement('.b-displayed_attributes').getElements('li').each(function (li_item) {
			if (li_item.getElement('input').checked) {
				if (li_item.getParent('ul').hasClass('b-displayed_attributes_manufacturers')) {
					url += 'manufacturer=' + li_item.getElement('input').value + '&';
				} else {
					url += 'attribute_values=' + li_item.getElement('input').value + '&';
				}
			}
		});
		$(document).getElement('.b-displayed_attributes').getElements('select').each(function (select_item) {
			if (select_item.value.length > 0) {
				url += 'attribute_values=' + select_item.value + '&';
			}
		});
		window.location.href = url;
	}
};

fullCatalogHandler = {
	catalog_height : 270,
	catalog_width : function () {
		return $('js-page').getSize().x*0.64;
	},
	closeCatalog : function () {
		var holder = $('js-full_catalog');
		holder.removeClass('b-full_catalog_opened');
		holder.morph({
			'width':'1px',
			'height':'163px'
		});
	},
	openCatalog : function () {
		var holder = $('js-full_catalog');
		fullCatalogHandler.calculateDimensions(holder);
		holder.addClass('b-full_catalog_opened');
		holder.morph({
			'width':fullCatalogHandler.catalog_width() + 'px',
			'height':fullCatalogHandler.catalog_height + 'px'
		});
	},
	loadCatalog : function () {
		var holder = $('js-full_catalog');
		holder.style.width = '25px';
		holder.style.height = '163px';
		new futuAjax({
			button : holder,
			color_to : '#edf14b',
			color_from : '#ebeaea',
			remove_element_color : false,
			url : '/ajax/categories/list/',
			data : '',
			onLoadFunction : function (response) {
				holder.addClass('b-full_catalog_loaded');
				fullCatalogHandler.setHTML(response, holder);
				fullCatalogHandler.calculateDimensions(holder);
				holder.morph({
					'width':fullCatalogHandler.catalog_width() + 'px',
					'height':fullCatalogHandler.catalog_height + 'px'
				});
			}
		});
	},
	toggleOpen : function () {
		var holder = $('js-full_catalog');
		holder.set('morph', {duration:366, link:'cancel'});
		if (holder.hasClass('b-full_catalog_opened')) {
			fullCatalogHandler.closeCatalog();
		} else {
			if (!holder.hasClass('b-full_catalog_loaded')) {
				fullCatalogHandler.loadCatalog();
			} else {
				fullCatalogHandler.openCatalog();
			}
			
		}
	},
	setHTML : function (response, holder) {
		var categoriesHash = new Hash(response.categories);
		var iHTML = '<div class="b-full_catalog_holder">';
		var iHTML_left = '<ul class="b-full_catalog_left">';
		var iHTML_right = '<ul class="b-full_catalog_right">';
		
		for (var i = 0; i < categoriesHash.getLength(); i++) {
			var category = categoriesHash.get(i);
			var iHTML_leaf = '<li><a href="/catalog/{category_id}">{category_name}</a>'.substitute({
				'category_name' : category.name,
				'category_id' : category.id
			});
			
			if (category.leafs) {
				var leafsHash = new Hash(category.leafs);
				iHTML_leaf += '<div class="b-full_catalog_leafs">';
				for (var j = 0; j < leafsHash.getLength(); j++) {
					var leaf = leafsHash.get(j);
					iHTML_leaf += '<a href="/catalog/{leaf_id}">{leaf_name}</a>{leaf_comma}'.substitute({
						'leaf_name' : leaf.name,
						'leaf_id' : leaf.id,
						'leaf_comma' : (j < leafsHash.getLength() - 1) ? ', ' : ''
					});
				}
				iHTML_leaf += '</div>';
			}
			iHTML_leaf += '</li>';
			
			if (i % 2 == 0) {
				iHTML_left += iHTML_leaf;
			} else {
				iHTML_right += iHTML_leaf;
			}
		}
		
		iHTML_left += '</ul>';
		iHTML_right += '</ul>';
		iHTML += iHTML_left + iHTML_right + '</div><a href="#" class="l-full_catalog_close" onclick="fullCatalogHandler.toggleOpen(); return false;"></a>';
		holder.innerHTML = iHTML;
	},
	calculateDimensions : function (holder) {
		holder.setStyle('position', 'absolute');
		holder.setStyle('width', Math.round(fullCatalogHandler.catalog_width()) + 'px');
		holder.getElement('.b-full_catalog_holder').setStyle('width', Math.round(fullCatalogHandler.catalog_width()) + 'px');
		holder.getElements('.b-full_catalog_holder>ul').setStyle('width', fullCatalogHandler.catalog_width()/2 - 61 + 'px');
		fullCatalogHandler.catalog_height = (holder.getElement('.b-full_catalog_left').getSize().y >= holder.getElement('.b-full_catalog_right').getSize().y) ? holder.getElement('.b-full_catalog_left').getSize().y : holder.getElement('.b-full_catalog_right').getSize().y;
		holder.setStyle('width', '1px');
		holder.setStyle('height', '1px');
	}
};
loginHandler = {
	login : function (form) {
		if (loginHandler.checkLogin()) {
			new futuAjax({
				button : form,
				color_to : '#F9A94C',
				color_from : '#D4DD25',
				url : '/ajax/login',
				data : form.toQueryString(),
				onLoadFunction : function (response) {
					//if (/\/basket/.test(window.location.href)) {
					//	window.location.reload();
					//}
					//else {
					//	basketHandler.updateHeaderBasket(response.user.basket_items_count, response.user.name, response.user.email);
					//}
					window.location.reload();
				}
			});
		}
	},
	generateNewPassword : function (email_field_id) {
		if ($(email_field_id).value.trim().length == 0) {
			ajaxHandler.highlightField($(email_field_id));
			futu_alert('Вы зарегистрированы у нас? Укажите адрес вашей электронной почты!', false, 'red');
			$(email_field_id).focus();
			return false;
		}
		
		new futuAjax({
			button : $(email_field_id),
			color_to : '#F9A94C',
			color_from : '#D4DD25',
			url : '/ajax/login/generate_password',
			data : 'email=' + $(email_field_id).value.trim(),
			onLoadFunction : function (response) {
				futu_alert('Новый пароль был успешно сгенерирован и отправлен на введенный на email адрес.', true);
			}
		});
	},
	checkLogin : function (skip_password_check) {
		if ($('js-login_email').value.trim().length == 0) {
			ajaxHandler.highlightField($('js-login_email'));
			futu_alert('Вы зарегистрированы у нас? Укажите адрес вашей электронной почты!', false, 'red');
			$('js-login_email').focus();
			return false;
		}
		if ($('js-login_password').value.trim().length == 0) {
			ajaxHandler.highlightField($('js-login_password'));
			futu_alert('Вы не ввели пароль!', false, 'red');
			$('js-login_password').focus();
			return false;
		}
		return true;
	}
};

profileHandler = {
	saveSettings : function (button) {
		if (profileHandler.checkSaveSettings()) {
			new futuAjax({
				button : button,
				color_to : '#D4DD25',
				color_from : '#F9A94C',
				url : '/ajax/my/settings/',
				data : $('js-order_user_info').toQueryString() + '&' + $('js-order_address_form').toQueryString(),
				onLoadFunction : function (response) {
					futu_alert('ЭВМ сохранила ваши новые данные.');
					if ($('js-user_info_authentication_data')) {
						$('js-user_info_authentication_data').destroy();
					}
					if (response.user.email != '') {
						$('js-user_info_change_password_link').removeClass('hidden');
					}
				}
			});
		}
	},
	checkSaveSettings : function () {
		if ($('js-user_info_authentication_data')) {
			if ($('js-user_info_authentication_old_password_input').value.trim().length < 1) {
				ajaxHandler.highlightField($('js-user_info_authentication_old_password_input'), '#F9A94C');
				futu_alert('Вам необходимо ввести старый пароль, чтобы его изменить.');
				$('js-user_info_authentication_old_password_input').focus();
				return false;
			}
			if ($('js-user_info_authentication_new_password_input').value.trim().length < 1) {
				ajaxHandler.highlightField($('js-user_info_authentication_new_password_input'), '#F9A94C');
				futu_alert('Введите новый пароль.');
				$('js-user_info_authentication_new_password_input').focus();
				return false;
			}
			if ($('js-user_info_authentication_new_password2_input').value.trim().length < 1) {
				ajaxHandler.highlightField($('js-user_info_authentication_new_password2_input'), '#F9A94C');
				futu_alert('Введите новый пароль еще раз, пожалуйста.');
				$('js-user_info_authentication_new_password2_input').focus();
				return false;
			}
			if ($('js-user_info_authentication_new_password_input').value != $('js-user_info_authentication_new_password2_input').value) {
				ajaxHandler.highlightField($('js-user_info_authentication_new_password2_input'), '#F9A94C');
				futu_alert('Введенные вами пароли не совпадают.');
				$('js-user_info_authentication_new_password2_input').focus();
				return false;
			}
		}
		if ($('js-user_info_organization_name_input') && $('js-user_info_organization_name_input').value == 'Название организации') {
			$('js-user_info_organization_name_input').value = '';
		}
		if ($('js-user_info_about_phone_input').value.trim().length < 1 || $('js-user_info_about_phone_input').value.trim() == 'номер') {
			futu_alert('Не забудьте указать свой номер телефона.');
			ajaxHandler.highlightField($('js-user_info_about_phone_input'));
			return false;
		}
		if ($('js-user_info_phone_code_input').value.trim() == 'код') {
			$('js-user_info_phone_code_input').value = '';
		}
		return true;
	},
	changePassword : function (button) {
		if ($('js-user_info_authentication_data')) {
			$('js-user_info_authentication_data').destroy();
		} else {
			var iHTML = '<p><label>Старый пароль:</label><input id="js-user_info_authentication_old_password_input" type="password" name="old_password" value=""></p>\
						<p><label>Новый пароль:</label><input id="js-user_info_authentication_new_password_input" type="password" name="new_password" value=""></p>\
						<p><label>Еще раз:</label><input id="js-user_info_authentication_new_password2_input" type="password" name="new_password2" value=""></p>';
			var change_password_block = new Element('div', {
				'id' : 'js-user_info_authentication_data',
				'class' : 'b-user_info_authentication_data'
			});
			change_password_block.innerHTML = iHTML;
			change_password_block.inject(button.getParent('.l-user_info_change_password'), 'after');
		}
	}
	
};

picHandler = {
	showPic : function (thumb_image, target_image_url) {
		picHandler.closePic();
		if (!$(thumb_image).hasClass('b-popup_active_thumb')) {
			var target_image_holder = new Element('div', {
				'class' : 'b-popup_image_holder',
				'styles' : {
					'width' : $(thumb_image).getCoordinates().width - 3 + 'px',
					'height' : $(thumb_image).getCoordinates().height - 3 + 'px',
					'top' : $(thumb_image).getCoordinates().top + 'px',
					'left' : $(thumb_image).getCoordinates().left + 'px'
				},
				'onclick' : 'ev = new Event(event); ev.stopPropagation();',
				'html' : '<a href="#" class="k-popup_pic_close" onclick="picHandler.closePic(); return false;"></a>'
			});
			target_image_holder.inject(document.body);
			
			$(thumb_image).addClass('b-popup_active_thumb');
			
			var target_image = new Image();
			target_image.src = target_image_url;
			target_image.onload = function () {
				if (target_image_holder) {
					//niceOverlay.show();
					target_image_holder.set('morph', {duration:333});
					//target_image_holder.setStyle('background', 'url(' + target_image_url + ') no-repeat 50% 50%');
					target_image_holder.innerHTML += '<img src="' + target_image_url + '" style="display:block; width:100%; height:100%;">'
					//right
					var target_padding = 10;
					var target_left = 0;
					if ($(thumb_image).getCoordinates().left + $(thumb_image).getCoordinates().width + target_padding + target_image.width <= document.getSize().x) { //if place on right
						target_left = $(thumb_image).getCoordinates().left + $(thumb_image).getCoordinates().width + target_padding; //put right
					} else if (target_image.width < $(thumb_image).getCoordinates().left - target_padding) {  //if place on left
						target_left = $(thumb_image).getCoordinates().left - target_image.width - target_padding; //put left
					} else {
						target_left = $(thumb_image).getCoordinates().left + $(thumb_image).getCoordinates().width + target_padding; //else put right
					}
					
					var relative_thumb_top = $(thumb_image).getCoordinates().top - document.getScroll().y
					var relative_target_top = relative_thumb_top + $(thumb_image).getCoordinates().height/2 - target_image.height/2;
					if (relative_target_top + target_image.height > document.getSize().y) {
						relative_target_top = document.getSize().y - target_image.height - 6;
					}
					if (relative_target_top < 0) {
						relative_target_top = 0;
					}
					
					
					
					target_image_holder.morph({
						'width' : target_image.width,
						'height' : target_image.height,
						'left' : target_left,
						'top' : document.getScroll().y + relative_target_top
					});
					document.body.addEvent('click', picHandler.closePic);
				}
			}
		}
	},
	closePic : function () {
		//niceOverlay.hide();
		if (document.getElement('.b-popup_image_holder')) {
			document.getElements('.b-popup_image_holder').destroy();
			document.getElements('.b-popup_active_thumb').removeClass('b-popup_active_thumb');
		}
		document.body.removeEvent('click', picHandler.closePic);
	}
};

picsHandler = {
	enabled : false,
	imgPreviewDiv : false,
	imgPreviewTimer : false,
	previewImg : false,
	mouseOverThumb : function (previewImg) {
		if (picsHandler.enabled) {
			picsHandler.previewImg = previewImg;
			var normalImgSrc = previewImg.src.replace('_80.jpg', '.jpg');
			picsHandler.bigPicHidden = new Element('img', {
				'src' : normalImgSrc,
				'class' : 'pos_hidden'
			});
			picsHandler.bigPicHidden.inject(document.body);
			picsHandler.imgPreviewTimer = (function () {
				if (picsHandler.imgPreviewDiv) {
					picsHandler.showImgPreview(normalImgSrc, previewImg);
				} else {
					picsHandler.createImgPreview(normalImgSrc, previewImg);
					picsHandler.showImgPreview(normalImgSrc, previewImg);
				}
			}).delay(300);
		}
	},
	mouseOutThumb : function () {
		$clear(picsHandler.imgPreviewTimer);
	},
	createImgPreview : function (normalImgSrc, previewImg) {
		picsHandler.imgPreviewDiv = new Element('div', {
			'class' : 'b-image_preview'
		});
		picsHandler.imgPreviewLink = new Element('a', {
			'class' : 'b-image_preview_link',
			'html' : '<span>&nbsp;</span>'
		});
		picsHandler.imgPreviewDiv.set('morph', {duration:233});
		picsHandler.imgPreviewLink.set('morph', {duration:233, onComplete: function () {
			if (picsHandler.imgPreviewLink.style.width == '1px') {
				picsHandler.imgPreviewLink.addClass('hidden');
			} else {
				picsHandler.imgPreviewLink.getElement('span').removeClass('hidden');
			}
		}});
		picsHandler.imgPreviewDiv.inject(document.body);
		picsHandler.imgPreviewLink.inject(document.body);
	},
	showImgPreview : function (normalImgSrc, previewImg) {
		if (picsHandler.bigPicHidden.getSize().x > 0) {
			$clear(picsHandler.hideImgPreviewTimer);
			picsHandler.imgPreviewDivTop = $(previewImg).getPosition().y + previewImg.getSize().y/2 - picsHandler.bigPicHidden.getSize().y/2;
			picsHandler.imgPreviewDivLeft = $(previewImg).getPosition().x + previewImg.getSize().x/2 - picsHandler.bigPicHidden.getSize().x/2;
			if (picsHandler.imgPreviewDivLeft < 0) {
				picsHandler.imgPreviewDivLeft = 0;
			}
			if (picsHandler.imgPreviewDivLeft + picsHandler.bigPicHidden.getSize().x > $(document.body).getSize().x) {
				picsHandler.imgPreviewDivLeft = $(document.body).getSize().x - $(picsHandler.bigPicHidden).getSize().x;
			}
			picsHandler.imgPreviewDiv.setStyles({
				'clip' : 'rect(0px 0px 0px 0px)',
				'width' : picsHandler.bigPicHidden.getSize().x + 'px',
				'height' : picsHandler.bigPicHidden.getSize().y + 'px',
				'background' : 'url(' + normalImgSrc + ') no-repeat center center',
				'top' : picsHandler.imgPreviewDivTop + 'px',
				'left' : picsHandler.imgPreviewDivLeft + 'px'
			});
			picsHandler.imgPreviewLink.removeClass('hidden');
			picsHandler.imgPreviewLink.href = previewImg.getParent('a').href;
			picsHandler.imgPreviewLink.getElement('span').innerHTML = previewImg.alt;
			picsHandler.imgPreviewLink.getElement('span').addClass('hidden');
			picsHandler.imgPreviewLink.setStyles({
				'width' : '1px',
				'height' : '1px',
				'top' : picsHandler.imgPreviewDivTop + picsHandler.bigPicHidden.getSize().y/2 + 'px',
				'left' : picsHandler.imgPreviewDivLeft + picsHandler.bigPicHidden.getSize().x/2 + 'px'
			});
			
			picsHandler.imgPreviewDiv.morph({
				'clip' : [picsHandler.bigPicHidden.getSize().y/2 + 'px ' + picsHandler.bigPicHidden.getSize().x/2 + 'px ' + picsHandler.bigPicHidden.getSize().y/2 + 'px ' + picsHandler.bigPicHidden.getSize().x/2 + 'px', '0px ' + picsHandler.bigPicHidden.getSize().x + 'px ' + picsHandler.bigPicHidden.getSize().y + 'px 0px']
			});
			picsHandler.imgPreviewLink.morph({
				'width' : picsHandler.bigPicHidden.getSize().x - 4 + 'px',
				'height' : picsHandler.bigPicHidden.getSize().y - 4 + 'px',
				'top' : picsHandler.imgPreviewDivTop + 'px',
				'left' : picsHandler.imgPreviewDivLeft + 'px'
			});
			picsHandler.imgPreviewLink.addEvent('mouseout', picsHandler.imgPreviewMouseOut);
			picsHandler.imgPreviewLink.addEvent('mouseover', picsHandler.imgPreviewMouseOver);
			picsHandler.imgPreviewLink.addEvent('click', function (e) {
				e = new Event(e);
				e.stopPropagation();
			});
			document.addEvent('click', picsHandler.documentClickCloseImgPreview);
		} else {
			picsHandler.imgPreviewTimer = (function () {
				picsHandler.showImgPreview(normalImgSrc, previewImg);
			}).delay(500);
		}
	},
	hideImgPreviewTimer : false,
	hideImgPreview : function () {
		$clear(picsHandler.hideImgPreviewTimer);
		document.removeEvent('click', picsHandler.documentClickCloseImgPreview);
		picsHandler.imgPreviewLink.getElement('span').addClass('hidden');
		picsHandler.imgPreviewDiv.morph({
			'clip' : ['0px ' + picsHandler.bigPicHidden.getSize().x + 'px ' + picsHandler.bigPicHidden.getSize().y + 'px 0px', picsHandler.bigPicHidden.getSize().y/2 + 'px ' + picsHandler.bigPicHidden.getSize().x/2 + 'px ' + picsHandler.bigPicHidden.getSize().y/2 + 'px ' + picsHandler.bigPicHidden.getSize().x/2 + 'px']
		});
		picsHandler.imgPreviewLink.morph({
			'width' : '1px',
			'height' : '1px',
			'top' : picsHandler.imgPreviewDivTop + picsHandler.bigPicHidden.getSize().y/2 + 'px',
			'left' : picsHandler.imgPreviewDivLeft + picsHandler.bigPicHidden.getSize().x/2 + 'px'
		});
	},
	imgPreviewMouseOut : function () {
		picsHandler.hideImgPreviewTimer = (function () {
			picsHandler.hideImgPreview();
		}).delay(300);
	},
	documentClickCloseImgPreview : function (e) {
		picsHandler.hideImgPreview();
	},
	imgPreviewMouseOver : function () {
		$clear(picsHandler.hideImgPreviewTimer);
	}
};
galeryHandler = {
	left_button_on : false,
	right_button_on : false,
	first_left_thumb_num : 0,
	auto_play:false,
	active:0,
	init: function (options) {
		galeryHandler.thumbs_holder = options.thumbs_holder;
		galeryHandler.galery_description = options.galery_description;
		galeryHandler.galery_image = options.galery_image;
		galeryHandler.visible_big_image_holder = options.visible_big_image_holder;
		galeryHandler.thumbs = galeryHandler.thumbs_holder.getElements('.b-galery_thumb');
		galeryHandler.thumb_width = galeryHandler.thumbs[0].getSize().x;
		galeryHandler.thumbs_col = galeryHandler.thumbs.length;
		galeryHandler.thumbs_moving_holder = galeryHandler.thumbs_holder.getElement('.b-galery_thumbs_real');
		galeryHandler.thumbs_width = galeryHandler.thumbs.length * galeryHandler.thumb_width;
		galeryHandler.thumbs_moving_holder.style.width = galeryHandler.thumbs_width + 'px';
		galeryHandler.thumbs_moving_holder.set('morph', {duration:444, onComplete : function () {
			if (galeryHandler.left_button_on) {
				galeryHandler.moveLeft();
			} else if (galeryHandler.right_button_on) {
				galeryHandler.moveRight();
			}
		}});
		galeryHandler.button_left = galeryHandler.thumbs_holder.getElement('.l-galery_button_left');
		galeryHandler.button_right = galeryHandler.thumbs_holder.getElement('.l-galery_button_right');
		galeryHandler.button_left.addEvent('mousedown', function () {
			galeryHandler.moveLeft();
			galeryHandler.left_button_on = true;
			$clear(galeryHandler.auto_play);
			$clear(galeryHandler.auto_play_delay);
		});
		galeryHandler.button_left.addEvent('mouseup', function () {
			galeryHandler.left_button_on = false;
		});
		galeryHandler.button_left.addEvent('mouseout', function () {
			galeryHandler.left_button_on = false;
		});
		
		galeryHandler.button_right.addEvent('mousedown', function () {
			galeryHandler.moveRight();
			galeryHandler.right_button_on = true;
			$clear(galeryHandler.auto_play);
			$clear(galeryHandler.auto_play_delay);
		});
		galeryHandler.button_right.addEvent('mouseup', function () {
			galeryHandler.right_button_on = false;
		});
		galeryHandler.button_right.addEvent('mouseout', function () {
			galeryHandler.right_button_on = false;
		});
		galeryHandler.checkButtonsEnabled();
		window.addEvent('resize',function () {
			galeryHandler.checkButtonsEnabled();
		});
		
		galeryHandler.thumbs.each(function (thumb, thumb_num) {
			var thumb_text = thumb.getElement('.b-galery_thumb_text');
			thumb.addEvent('mouseover', function () {
				if (galeryHandler.first_thumb_text && thumb != galeryHandler.first_thumb_text) {
					galeryHandler.first_thumb_text.morph({'height':1});
					galeryHandler.first_thumb_text = false;
				}
				var thumb_text_height = galeryHandler.getThumbTextHeight(thumb_text);
				thumb_text.set('morph', {duration:222});
				thumb_text.morph({'height':thumb_text_height});
				galeryHandler.delayedStartAutoPlay();
			});
			thumb_text.addEvent('mouseover', function (e) {
				e = new Event(e);
				e.stopPropagation();
			});
			thumb.addEvent('mouseout', function (e) {
				e = new Event(e);
				if (e.relatedTarget && e.relatedTarget != thumb_text && $(e.relatedTarget).getParent() != thumb_text) {
					thumb_text.morph({'height':1});
				}
				
			});
			thumb.addEvent('click', function (e) {
				if (!options.galery_no_big_product) {
					e = new Event(e);
					e.preventDefault();
				}
				if (!thumb.hasClass('b-galery_thumb_active')) {
					galeryHandler.active = thumb_num;
					galeryHandler.setActive(thumb);
				}
			});
			thumb.set('morph', {duration:333});
		});
		galeryHandler.visible_big_image_holder.addEvent('mouseover', function () {
			galeryHandler.delayedStartAutoPlay();
		});
		galeryHandler.visible_big_image_holder.getElement('table').set('morph', {duration:333});
		
		galeryHandler.first_thumb_text = galeryHandler.thumbs_holder.getElement('.b-galery_thumb_active').getElement('.b-galery_thumb_text');
		galeryHandler.first_thumb_text.setStyle('display', 'block');
		galeryHandler.first_thumb_text.morph({'height':galeryHandler.getThumbTextHeight(galeryHandler.first_thumb_text)});
		
		galeryHandler.delayedStartAutoPlay();
	},
	setActive : function (thumb, auto_play) {
		//$(galeryHandler.visible_big_image_holder).style.width = 'auto';
		
		// hide onload opened first description
		if (galeryHandler.first_thumb_text) {
			galeryHandler.first_thumb_text.morph({'height':0});
			galeryHandler.first_thumb_text = false;
		}
		
		// animate active thumb
		thumb.morph({'border-bottom-color':'#676767'});
		galeryHandler.thumbs_holder.getElement('.b-galery_thumb_active').morph({'border-bottom-color':'#FFFFFF'});
		galeryHandler.thumbs_holder.getElement('.b-galery_thumb_active').removeClass('b-galery_thumb_active');
		
		thumb.addClass('b-galery_thumb_active');
		
		// check thumb visibility and move line if hidden
		if (galeryHandler.active < galeryHandler.first_left_thumb_num) {
			galeryHandler.first_left_thumb_num = galeryHandler.active;
			galeryHandler.checkButtonsEnabled();
			galeryHandler.thumbs_moving_holder.morph({'left': -galeryHandler.first_left_thumb_num * galeryHandler.thumb_width});
		} else if (galeryHandler.active > galeryHandler.first_left_thumb_num + galeryHandler.visible_thumbs_col - 1) {
			galeryHandler.first_left_thumb_num = galeryHandler.active - galeryHandler.visible_thumbs_col + 1;
			galeryHandler.checkButtonsEnabled();
			galeryHandler.thumbs_moving_holder.morph({'left': -galeryHandler.first_left_thumb_num * galeryHandler.thumb_width});
		}
		
		// prepare big img with text
		galeryHandler.visible_big_image_holder.getElement('table').setStyle('opacity', 0);
		// prepare text
		var descriptionHTML = '<h2><a href="{galery_image_href}">{galery_image_name}</a></h2>\
			<div class="b-index_product_description">{galery_image_description}</div>\
			<div class="b-index_product_price">\
				<strong><tmpl_var popular_product_display_price>{galery_image_price}</strong>\
			</div>\
			<div class="b-catalog_product_delivery_date">\
				Ближайшая дата доставки&nbsp;&mdash; {galery_image_next_delivery_date}, с 10 до 18 часов\
			</div>\
			<div class="b-buy_product">\
				<a href="#" class="l-catalog_cart" onclick="basketHandler.addToBasket(this, \'{galery_image_id}\'); return false;"><span>Положить в корзину</span></a>\
				<a href="#" class="l-catalog_buy" onclick="basketHandler.addToBasket(this, \'{galery_image_id}\', true); return false;"><span>Купить в один клик</span></a>\
			</div>'.substitute({
			galery_image_href : thumb.getElement('a').href,
			galery_image_name : thumb.getElement('.b-galery_thumb_name').innerHTML,
			galery_image_description : thumb.getElement('.b-galery_thumb_desc').innerHTML,
			galery_image_price : thumb.getElement('.b-galery_thumb_price').innerHTML,
			galery_image_id : thumb.id.substr(16),
			galery_image_next_delivery_date : thumb.getElement('.b-galery_thumb_next_delivery_date').innerHTML
		});
		galeryHandler.galery_description.innerHTML = descriptionHTML;
		// prepare big img
		if (thumb.getElement('.b-galery_thumb_big_img')) {
			var big_image = new Asset.image(thumb.getElement('.b-galery_thumb_big_img').src, {onload : function () {
				//galeryHandler.visible_big_image_holder.setStyle('overflow','hidden');
				//galeryHandler.visible_big_image_holder.setStyle('height',galeryHandler.visible_big_image_holder.getSize().y + 'px');
				//galeryHandler.visible_big_image_holder.set('morph', {duration:240, onComplete : function () {
					//galeryHandler.visible_big_image_holder.setStyle('overflow','visible');
					//galeryHandler.visible_big_image_holder.setStyle('height','auto');
				//}});
				
				var imageHTML = '<a href="{galery_image_href}"><img src="{galery_big_image_src}" alt="" class="b-index_product_image"></a>'.substitute({
					galery_image_href : thumb.getElement('a').href,
					galery_big_image_src : thumb.getElement('.b-galery_thumb_big_img').src
				});
				galeryHandler.galery_image.innerHTML = imageHTML;
				galeryHandler.showActive(auto_play, false);
				
				/*if ($('js-galery_big_image_sizer')) {
					$('js-galery_big_image_sizer').destroy();
				}
				var big_image_sizer = new Element('table', {'style':'width:' + galeryHandler.visible_big_image_holder.getElement('table').getSize().width + 'px; position:absolute; top:-5000px; left:-5000px; width:' + $(galeryHandler.visible_big_image_holder.getElement('table')).getSize().x + 'px;', 'id': 'js-galery_big_image_sizer', 'class':'b-galery_big_image_sizer','html':'<tbody><tr><td class="b-index_product_image_holder">{image_col}</td><td class="b-index_product_info">{text_col}</td></tr></tbody>'.substitute({
					image_col : imageHTML,
					text_col : descriptionHTML
				})});
				big_image_sizer.inject(document.body);
				(function () {
					if (big_image_sizer.getSize().x > $(galeryHandler.visible_big_image_holder).getSize().x) {
						$(galeryHandler.visible_big_image_holder).style.width = big_image_sizer.getSize().x + 'px';
					}
				}).delay(100);
				(function () {
					galeryHandler.visible_big_image_holder.morph({'height':big_image_sizer.getSize().y});
				}).delay(250);*/
			}, onerror : function () {
				galeryHandler.showActive(auto_play, true);
			}});
		} else {
			galeryHandler.showActive(auto_play, true);
		}
		
	},
	showActive : function (auto_play, no_pic) {
		if (no_pic) {
			galeryHandler.galery_image.innerHTML = '';
		}
		galeryHandler.visible_big_image_holder.getElement('table').morph({'opacity':1});
		if (auto_play) {
			galeryHandler.auto_play_delay = (function () {galeryHandler.autoPlayPeriodical();}).delay(3000);
		} else {
			galeryHandler.delayedStartAutoPlay();
		}
	},
	delayedStartAutoPlay : function () {
		$clear(galeryHandler.auto_play);
		$clear(galeryHandler.auto_play_delay);
		galeryHandler.auto_play = (function () {galeryHandler.startAutoPlay()}).delay(3000);
	},
	startAutoPlay : function () {
		galeryHandler.auto_play_delay = (function () {galeryHandler.autoPlayPeriodical();}).delay(3000);
	},
	autoPlayPeriodical : function () {
		if (!galeryHandler.visible_big_image_holder.getElement('.js-loading')) {
			if (galeryHandler.active == galeryHandler.thumbs_col - 1) {
				galeryHandler.active = 0;
			} else {
				galeryHandler.active++;
			}
			galeryHandler.setActive(galeryHandler.thumbs[galeryHandler.active], true);
		}
	},
	getThumbTextHeight : function (thumb_text_holder) {
		var galery_text_sizer = $('js-galery_text_sizer');
		if (!galery_text_sizer) {
			galery_text_sizer = new Element('div', {
				'id':'js-galery_text_sizer',
				'style':'width:' + galeryHandler.thumb_width + 'px;position:absolute;top:-1000px;left:-1000px;',
				'class' : 'b-galery_text_sizer'
			});
			galery_text_sizer.inject(document.body);
		}
		
		galery_text_sizer.innerHTML = thumb_text_holder.innerHTML;
		return galery_text_sizer.getSize().y;
	},
	moveLeft : function () {
		if (galeryHandler.first_left_thumb_num > 0) {
			galeryHandler.first_left_thumb_num--;
			galeryHandler.checkButtonsEnabled();
			galeryHandler.thumbs_moving_holder.morph({'left': -galeryHandler.first_left_thumb_num * galeryHandler.thumb_width});
		}
	},
	moveRight : function () {
		if (galeryHandler.visible_thumbs_col + galeryHandler.first_left_thumb_num < galeryHandler.thumbs_col) {
			galeryHandler.first_left_thumb_num++;
			galeryHandler.checkButtonsEnabled();
			galeryHandler.thumbs_moving_holder.morph({'left': -galeryHandler.first_left_thumb_num * galeryHandler.thumb_width});
		}
	},
	checkButtonsEnabled : function () {
		galeryHandler.visible_width = galeryHandler.thumbs_holder.getSize().x;
		galeryHandler.visible_thumbs_col = Math.floor(galeryHandler.visible_width / galeryHandler.thumb_width);
		if (galeryHandler.first_left_thumb_num + galeryHandler.visible_thumbs_col >= galeryHandler.thumbs_col) {
			galeryHandler.button_right.addClass('hidden');
		} else {
			galeryHandler.button_right.removeClass('hidden');
		}
		if (galeryHandler.first_left_thumb_num == 0) {
			galeryHandler.button_left.addClass('hidden');
		} else {
			galeryHandler.button_left.removeClass('hidden');
		}
	}
};

brandsGaleryHandler = {
	current_item : 0,
	showDescription : function (galery_item) {
		var galery_item_desc = $(galery_item).getElement('.b-brand_galery_item_about');
		galery_item_desc.set('morph', {duration:222});
		galery_item_desc.morph({'height' : 70});
	},
	hideDescription : function (galery_item) {
		var galery_item_desc = $(galery_item).getElement('.b-brand_galery_item_about');
		galery_item_desc.set('morph', {duration:222});
		galery_item_desc.morph({'height' : 1});
	},
	moveLeft : function () {
		if (brandsGaleryHandler.current_item > 0) {
			brandsGaleryHandler.current_item --;
			$('js-brand_galery_items').set('morph', {duration:222});
			$('js-brand_galery_items').morph({'left' : - brandsGaleryHandler.current_item * 185});
			$('js-brand_galery_right').removeClass('hidden');
			if (brandsGaleryHandler.current_item == 0) {
				$('js-brand_galery_left').addClass('hidden');
			}
		}
	},
	moveRight : function () {
		$('js-brand_galery_items').setStyle('width', $('js-brand_galery_items').getElements('.b-brand_galery_item').length * 185 + 20);
		if (brandsGaleryHandler.current_item < $('js-brand_galery_items').getElements('.b-brand_galery_item').length - 4) {
			brandsGaleryHandler.current_item ++;
			$('js-brand_galery_items').set('morph', {duration:222});
			$('js-brand_galery_items').morph({'left' : - brandsGaleryHandler.current_item * 185});
			$('js-brand_galery_left').removeClass('hidden');
			if (brandsGaleryHandler.current_item == $('js-brand_galery_items').getElements('.b-brand_galery_item').length - 4) {
				$('js-brand_galery_right').addClass('hidden');
			}
		}
	}
};

callbackHandler = {
	toggleForm : function () {
		if ($('js-callback_block')) {
			if ($('js-callback_block').hasClass('js-complain_opened')) {
				$('js-callback_block').addClass('hidden');
				$('js-callback_block').removeClass('js-complain_opened');
				$('js-menu_callback_button').removeClass('active');
			} else {
				$('js-callback_block').removeClass('hidden');
				$('js-callback_block').addClass('js-complain_opened');
				$('js-menu_callback_button').addClass('active');
			}
		} else {
			callbackHandler.buildForm();
			callbackHandler.toggleForm();
		}
	},
	buildForm : function () {
		var form_holder = new Element('div', {
			'class' : 'b-callback hidden',
			'id' : 'js-callback_block',
			'html' : '<form action="" method="post" name="" onsubmit="if (callbackHandler.validateForm()) {callbackHandler.sendForm();} return false;">\
				<input type="hidden" id="js-callback_source_page" name="source_page">\
				<p>Оставьте нам, пожалуйста, ваш номер телефона, и&nbsp;мы&nbsp;обязательно вам перезвоним!</p>\
				<div class="b-callback_phone">\
					<input id="js-callback_phone_code" class="i-callback_phone_code" type="text" value="код" name="phone_code">\
					<input id="js-callback_phone_number" class="i-callback_phone_number" type="text" value="номер" name="phone_number">\
				</div>\
				<div class="b-callback_submit">\
					<a href="#" class="k-callback_submit" onclick="if (callbackHandler.validateForm()) { callbackHandler.sendForm(); } return false;"><span>Жду звонка!</span></a>\
				</div>\
			</form>'
		});
		form_holder.inject(document.body);
		form_holder.setStyles({
			'top' : $('js-menu_callback_button').getPosition().y + $('js-menu_callback_button').getCoordinates().height,
			'left' : $('js-menu_callback_button').getPosition().x
		});
		utils.focusText($('js-callback_phone_code'), 'код');
		utils.focusText($('js-callback_phone_number'), 'номер');
		$('js-callback_source_page').value = window.location.href;
		
	},
	sendForm : function () {
		var callback_block = $('js-callback_block');
		var callback_form = $('js-callback_block').getElement('form');
		var callback_submit = $('js-callback_block').getElement('.k-callback_submit');
		var url = '/ajax/feedback/callback/';
		var data = callback_form.toQueryString();
		new futuAjax({
			button : callback_submit,
			color_to : '#f9a94c',
			color_from : '#d4dd25',
			url : url,
			data : data,
			onLoadFunction : function (response) {
				futu_alert('Спасибо, мы записали Ваш номер и скоро перезвоним. Не оставляйте телефон без присмотра!');
				callback_form.reset();
				callbackHandler.toggleForm();
			}
		});
	},
	validateForm : function () {
		var callback_block = $('js-callback_block');
		if (callback_block.getElement('.i-callback_phone_number').value.length < 1 || callback_block.getElement('.i-callback_phone_number').value.trim() == 'номер') {
			futu_alert('Укажите номер телефона, на который нам нужно перезвонить.')
			return false;
		}
		return true;
	}
};

complainHandler = {
	toggleForm : function () {
		if ($('js-complain_block')) {
			if ($('js-complain_block').hasClass('js-complain_opened')) {
				$('js-complain_block').addClass('hidden');
				$('js-complain_block').removeClass('js-complain_opened');
				$('js-menu_complain_button').removeClass('active');
			} else {
				$('js-complain_block').removeClass('hidden');
				$('js-complain_block').addClass('js-complain_opened');
				$('js-menu_complain_button').addClass('active');
			}
		} else {
			complainHandler.buildForm();
			complainHandler.toggleForm();
		}
	},
	buildForm : function () {
		var form_holder = new Element('div', {
			'class' : 'b-complain hidden',
			'id' : 'js-complain_block',
			'html' : '<form action="" method="post" name="" onsubmit="if (complainHandler.validateForm()) {complainHandler.sendForm();} return false;">\
				<input type="hidden" id="js-complain_source_page" name="source_page">\
				<div class="b-complain_email">\
					<label class="b-complain_email_label">e-mail</label>\
					<input class="i-complain_email" type="text" name="reply_to">\
				</div>\
				<div class="b-complain_subject">\
					<select name="subject">\
						<option value="">Что случилось?</option>\
						<option value="Не привезли заказ">Не привезли заказ</option>\
						<option value="Не позвонили">Не позвонили</option>\
						<option value="Жалоба на сотрудника">Жалоба на сотрудника</option>\
						<option value="Вам не стыдно в конце-концов?!">Вам не стыдно в конце-концов?!</option>\
						<option value="Другое...">Другое...</option>\
					</select>\
				</div>\
				<div class="b-complain_message">\
					<textarea class="i-complain_message" name="message"></textarea>\
				</div>\
				<div class="b-complain_submit">\
					<a href="#" class="k-complain_submit" onclick="if (complainHandler.validateForm()) { complainHandler.sendForm(); } return false;"><span>Разберитесь</span></a>\
				</div>\
			</form>'
		});
		form_holder.inject($('js-page').getElement('.b-content'));
		$('js-complain_source_page').value = window.location.href;
	},
	sendForm : function (standalone) {
		$('js-complain_source_page').value = window.location.href;
		var complain_block = $('js-complain_block');
		var complain_form = $('js-complain_block').getElement('form');
		var complain_submit = $('js-complain_block').getElement('.k-complain_submit');
		var url = '/ajax/feedback/';
		var data = complain_form.toQueryString();
		new futuAjax({
			button : complain_submit,
			color_to : '#f9a94c',
			color_from : '#d4dd25',
			url : url,
			data : data,
			onLoadFunction : function (response) {
				futu_alert('Спасибо, что потратили на нас время! Нам это важно, честно.');
				complain_form.reset();
				if (!standalone) {
					complainHandler.toggleForm();
				}
			}
		});
	},
	validateForm : function () {
		var complain_block = $('js-complain_block');
		if (complain_block.getElement('.i-complain_email').value.length < 1 && complain_block.getElement('.i-complain_message').value.length < 1) {
			futu_alert('Опишите жалобу подробнее или укажите, пожалуйста, e-mail для связи.')
			return false;
		}
		return true;
	}
};



dropdownMenuHandler = {
	dropdown_menus : [],
	resizing : false,
	dropdown_menu_opened : false,
	init : function (menu, dropdown_menu) {
		dropdownMenuHandler.setMenuItems(menu, dropdown_menu);
		dropdownMenuHandler.dropdown_menus.push(dropdown_menu);
		window.onresize = function () {
			dropdownMenuHandler.setMenuItems(menu, dropdown_menu);
		};
	},
	setMenuItems : function (menu, dropdown_menu) {
		while (menu.getLast('li').getPosition(menu).y > 0) {
			menu.getLast('li').getPrevious().inject(dropdown_menu.getElement('ul'), 'top');
		}
		var menu_width = 0;
		menu.getElements('li').each(function (li_item) {
			menu_width += li_item.getCoordinates().width;
		});
		var available_width = menu.getCoordinates().width - menu_width;
		if (available_width > dropdown_menu.getCoordinates().width) {
			if (dropdown_menu.getElement('li')) {
				dropdown_menu.getElement('li').inject(menu.getElement('.b-dropdown_categories_menu'), 'before');
			}
		}
		if (dropdown_menu.getElements('li').length < 1) {
			menu.getElement('.b-dropdown_categories_menu').setStyle('visibility' , 'hidden');
		} else {
			menu.getElement('.b-dropdown_categories_menu').setStyle('visibility' , 'visible');
		}
	},
	toggleMenu : function (dropdown_menu) {
		if (dropdown_menu.hasClass('pos_hidden')) {
			dropdownMenuHandler.showMenu(dropdown_menu);
		} else {
			dropdownMenuHandler.hideMenu(dropdown_menu); 
		}
	},
	showMenu : function (dropdown_menu) {
		dropdown_menu.removeClass('pos_hidden');
		(function () {
			document.addEvent('click', dropdownMenuHandler.hideMenus);
		}).delay(300);
	},
	hideMenu : function (dropdown_menu) {
		dropdown_menu.addClass('pos_hidden');
	},
	hideMenus : function () {
		$A(dropdownMenuHandler.dropdown_menus).each(function (m) {
			dropdownMenuHandler.hideMenu(m);
		});
		document.removeEvent('click', dropdownMenuHandler.hideMenus);
	}
	
};

dropdeadHandler = {
	seconds_overall_left : 0,
	banner_active : false,
	dropdead_timer : false,
	init : function (seconds_overall_left) {
		dropdeadHandler.seconds_overall_left = seconds_overall_left;
		dropdeadHandler.setTimer();
		dropdeadHandler.startTimer();
	},
	startTimer : function () {
		$clear(dropdeadHandler.dropdead_timer);
		dropdeadHandler.dropdead_timer = dropdeadHandler.setTimer.periodical(1000);
	},
	setTimer : function () {
		if (dropdeadHandler.seconds_overall_left > 0) {
			dropdeadHandler.seconds_overall_left--;
			var hours_left = Math.floor(dropdeadHandler.seconds_overall_left / 3600);
			var minutes_left = Math.floor((dropdeadHandler.seconds_overall_left - hours_left*3600) / 60);
			var seconds_left = dropdeadHandler.seconds_overall_left % 60;
			
			
			if (hours_left < 10) {
				hours_left = '0' + hours_left;
			}
			if (minutes_left < 10) {
				minutes_left = '0' + minutes_left;
			}
			if (seconds_left < 10) {
				seconds_left = '0' + seconds_left;
			}
			
			var time_string = hours_left + 'c' + minutes_left + 'c' + seconds_left;
			var iHTML = '';
			if (dropdeadHandler.banner_active) {
				for (var i = 0; i < time_string.length; i++) {
					iHTML += '<span class="b-2x_banner_digit b-2x_banner_digit_' + time_string.charAt(i) + '"></span>';
				}
				$('js-2x_banner_digits').innerHTML = iHTML;
			} else {
				for (var i = 0; i < time_string.length; i++) {
					iHTML += '<span class="b-dropdead_digit b-dropdead_digit_' + time_string.charAt(i) + '"></span>';
				}
				$('js-dropdead_timer').innerHTML = iHTML;
			}
		} else {
			if (dropdeadHandler.banner_active) {
				$('js-2x_banner_digits').innerHTML = '<span class="b-2x_banner_digit b-2x_banner_digit_0"></span><span class="b-2x_banner_digit b-2x_banner_digit_0"></span><span class="b-2x_banner_digit b-2x_banner_digit_c"></span><span class="b-2x_banner_digit b-2x_banner_digit_0"></span><span class="b-2x_banner_digit b-2x_banner_digit_0"></span><span class="b-2x_banner_digit b-2x_banner_digit_c"></span><span class="b-2x_banner_digit b-2x_banner_digit_0"></span><span class="b-2x_banner_digit b-2x_banner_digit_0"></span>';
			} else {
				$('js-dropdead_timer').innerHTML = '<span class="b-dropdead_digit b-dropdead_digit_0"></span><span class="b-dropdead_digit b-dropdead_digit_0"></span><span class="b-dropdead_digit b-dropdead_digit_c"></span><span class="b-dropdead_digit b-dropdead_digit_0"></span><span class="b-dropdead_digit b-dropdead_digit_0"></span><span class="b-dropdead_digit b-dropdead_digit_c"></span><span class="b-dropdead_digit b-dropdead_digit_0"></span><span class="b-dropdead_digit b-dropdead_digit_0"></span>';
				futu_alert('Время вышло. Приходите завтра за новым, еще более невообразимым товаром!', true);
			}
			$clear(dropdeadHandler.dropdead_timer);
		}
	},
	validateSubscription : function () {
		var user_mail = $('js-dropdead_subscription_email').value;
		var regexp_email = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
		if (!regexp_email.test(user_mail)) {
			futu_alert('В вашем e-mail адресе есть какая-то ошибка');
			ajaxHandler.highlightField($('js-dropdead_subscription_email'), '#D9E140');
			return false;
		}
		return true;
	},
	sendSubscription : function () {
		if (dropdeadHandler.validateSubscription()) {
			var url = '/ajax/subscription/subscribe/';
			var data = $('js-dropdead_subscription_form').toQueryString();
			new futuAjax({
				button : $('js-dropdead_subscription_email'),
				color_to : '#F9A94C',
				color_from : '#D9E140',
				url : url,
				data : data,
				onLoadFunction : function (response) {
					futu_alert('Наша ЭВМ послала вам на почту активационную ссылку. Проверьте, пожалуйста.');
					$('js-dropdead_subscription_block').addClass('hidden');
				}
			});
		}
	},
	loadCaptcha : function () {
		var url = '/ajax/captcha/';
		var data = '';
		new futuAjax({
			button : $('js-dropdead_subscription_secret'),
			color_to : '#F9A94C',
			color_from : '#D9E140',
			url : url,
			data : data,
			onLoadFunction : function (response) {
				$('js-dropdead_subscription_secret').value = response.secret;
				$('js-dropdead_subscription_captcha_pic').removeClass('hidden');
				$('js-dropdead_subscription_captcha_pic').src = '/captcha/' + response.secret + '.png';
			}
		});
	}
};

window.addEvent('domready', function() {
	if ($('js-categories_menu')) {
		dropdownMenuHandler.init($('js-categories_menu'), $('js-categories_dropdown_menu'));
	}
});

if (Browser.Engine.trident && Browser.Engine.version  < 5) {
	window.addEvent('domready', function() {
		DD_belatedPNG.fix('.png_bg');
		window.onresize = function(){
			if (document.documentElement.clientWidth < 1100) {
				$('js-page').style.width = '990px';
			} else {
				$('js-page').style.width = '90%';
			}
		}
		if (document.documentElement.clientWidth < 1100) {
			$('js-page').style.width = '990px';
		} else {
			$('js-page').style.width = '90%';
		}
	});
}
if ((Browser.Engine.gecko && Browser.Engine.version >= 19 && Number(BrowserDetect.version)*10 >= 35) || (Browser.Engine.webkit && Browser.Engine.version > 500)) {
	window.addEvent('domready', function() {
		if ($('l-logo')) {
			$('js-phone_and_email_block').addEvent('dblclick', function (e) {
				$('js-phone_and_email_block').removeEvents('dblclick');
				var e = new Event(e);
				if ($('js-page').getElement('.b-header').hasClass('b-header_woody')) {
					var woody_timeout_beat = (function () {return $random(2000,4000)})();
					var woody_timeout_silent = (function () {return $random(2000,11000)})();
					var woody_beating = true;
					(function () {
						woody_beating = false;
					}).delay(woody_timeout_beat);
					var myEffects = new Fx.Morph($('l-logo').getElement('.l-i-logo'), {duration: 50, onComplete : function () {
						if ($('l-logo').getElement('.l-i-logo').hasClass('js-right_angle')) {
							$('l-logo').style.left = '-9px';
							$('l-logo').getElement('.l-i-logo_lightning').removeClass('hidden');
							(function () {
								$('l-logo').style.left = '-11px';
								$('l-logo').getElement('.l-i-logo_lightning').addClass('hidden');
							}).delay(20);
							myEffects.start({
								'-webkit-transform':['rotate(7deg)','rotate(-3deg)'],
								'-moz-transform':['rotate(7deg)','rotate(-3deg)']
							});
							$('l-logo').getElement('.l-i-logo').removeClass('js-right_angle');
						} else {
							if (woody_beating) {
								
								myEffects.start({
									'-webkit-transform':['rotate(-3deg)','rotate(7deg)'],
									'-moz-transform':['rotate(-3deg)','rotate(7deg)']
								});
								$('l-logo').getElement('.l-i-logo').addClass('js-right_angle');
							}
						}
						if (!woody_beating) {
							(function () {
								var woody_timeout_beat = (function () {return $random(2000,4000)})();
								var woody_timeout_silent = (function () {return $random(5000,11000)})();
								woody_beating = true;
								myEffects.start({
									'-webkit-transform':['rotate(7deg)','rotate(-3deg)'],
									'-moz-transform':['rotate(7deg)','rotate(-3deg)']
								});
								(function () {
									woody_beating = false;
								}).delay(woody_timeout_beat);
							}).delay(woody_timeout_silent);
						}
					}});
					myEffects.start({
						'-webkit-transform':['rotate(7deg)','rotate(-3deg)'],
						'-moz-transform':['rotate(7deg)','rotate(-3deg)']
					});
				} else if ($('js-page').getElement('.b-header').hasClass('b-header_whale')) {
					var ran1 = (function () {return $random(5,7)})();
					var ran2 = (function () {return $random(8,10)})();
					var ran3 = (function () {return Math.floor($random(0,50))})();
					var ran_time1 = (function () {return Math.floor($random(1200, 2400))})();
					var myEffects2 = new Fx.Morph($('l-logo'), {duration: ran_time1, link:'cancel'});
					var myEffects = new Fx.Morph($('l-logo').getElement('.l-i-logo'), {duration: ran_time1, onComplete : function () {
						if ($('l-logo').getElement('.l-i-logo').hasClass('js-right_angle')) {
							myEffects.start({
								'-webkit-transform':['rotate(' + ran1 + 'deg)','rotate(-' + ran2 + 'deg)'],
								'-moz-transform':['rotate(' + ran1 + 'deg)','rotate(-' + ran2 + 'deg)']
							});
							$('l-logo').getElement('.l-i-logo').removeClass('js-right_angle');
							ran1 = (function () {return $random(5,7)})();
						} else {
							myEffects.start({
								'-webkit-transform':['rotate(-' + ran2 + 'deg)','rotate(' + ran1 + 'deg)'],
								'-moz-transform':['rotate(-' + ran2 + 'deg)','rotate(' + ran1 + 'deg)']
							});
							$('l-logo').getElement('.l-i-logo').addClass('js-right_angle');
							ran2 = (function () {return $random(0,10)})();
						}
						myEffects2.start({'left':String(ran3)});
						ran3 = (function () {return Math.floor($random(0,50))})();
						ran_time1 = (function () {return Math.floor($random(1200, 2400))})();
					}});
					myEffects.start({
						'-webkit-transform':['rotate(0deg)','rotate(' + ran1 + 'deg)'],
						'-moz-transform':['rotate(0deg)','rotate(' + ran1 + 'deg)']
					});
					myEffects2.start({'left':String(ran3)});
					$('l-logo').getElement('.l-i-logo').addClass('js-right_angle');
					
					ran_direction = (function () {return Math.round($random(0,1))})();
					var myEffects4 = new Fx.Morph(document.body, {duration: Math.floor($random(3600, 8500)), transition: Fx.Transitions.Cubic.easeInOut, onComplete : function () {
						document.body.style.backgroundPosition = '0 0';
						ran_direction = (function () {return Math.round($random(0,1))})();
						if (ran_direction == 0) {
							myEffects4.start({'background-position':'-99px 0'});
						} else {
							myEffects4.start({'background-position':'99px 0'});
						}	
					}});
					if (ran_direction == 0) {
						myEffects4.start({'background-position':'-99px 0'});
					} else {
						myEffects4.start({'background-position':'99px 0'});
					}
					
				}
					
				if (Browser.Engine.gecko) {
					var myEffects5 = new Fx.Morph($('b-location'), {duration: 16000, transition: Fx.Transitions.linear, onComplete : function () {
						myEffects5.start({'-moz-transform':['rotate(0deg)','rotate(360deg)']});
					}});
					myEffects5.start({'-moz-transform':['rotate(0deg)','rotate(360deg)']});
				} else {
					var b_location_degree = 0;
					b_location_degree += 360;
					$('b-location').style.webkitTransform='rotate(' + b_location_degree + 'deg)';
					(function () {
						b_location_degree += 360;
						$('b-location').style.webkitTransform='rotate(' + b_location_degree + 'deg)';
					}).periodical(16000);
				}
				
			});
		}
	});
}




