var defaultValues = new Array();

$(function() {
	/* register */
	$("#reg_button").click(function(e){
		e.preventDefault();
		$("#reg_form").submit();
	});

	/* login */
	$("#login_button").click(function(e){
		e.preventDefault();
		$("#login_form").submit();
	});

	$("#login_button2").click(function(e){
		e.preventDefault();
		$("#login_form2").submit();
	});

	$("#logout_button").click(function(e){
		e.preventDefault();
		$("#logout_form").submit();
	});

	$('#link_login').add('#overlay_login div.close').click(function(e) {
		e.preventDefault();
		$('#overlay_login').toggle();
	});
	$('input:password').focusin(function() {
		$(this).next('span').hide();
	}).focusout(function() {
		if ($.trim($(this).val()) == '') {
			$(this).next('span').show();
		}
	});
	$('input:password + span.value').click(function() {
		$(this).prev('input:password').focus().focusin();
	});
	/* callback */
	$('#link_callback').add('#overlay_callback div.close').click(function(e) {
		e.preventDefault();
		$("#error_text").html("");
		$('#overlay_callback').toggle();
	});

	$('#overlay_callback_message div.close').click(function(e) {
		e.preventDefault();
		$('#overlay_callback_message').toggle();
	});

	/* why */
	$('#link_why').add('#overlay_why div.close').click(function(e) {
		e.preventDefault();
		$('#overlay_why').toggle();
	});
	$('#link_why2').add('#overlay_why2 div.close').click(function(e) {
		e.preventDefault();
		$('#overlay_why2').toggle();
	});
	$('#link_why3').add('#overlay_why3 div.close').click(function(e) {
		e.preventDefault();
		$('#overlay_why3').toggle();
	});
 
	$('#link_why160').add('#overlay_why160 div.close').click(function(e) {
		e.preventDefault();
		$('#overlay_why160').toggle();
	}); 

	$('#link_howprice').add('#overlay_howprice div.close').click(function(e) {
		e.preventDefault();
		$('#overlay_howprice').toggle();
	}); 
	/* product info */

/*
	$('a:has(span.i-information.icon)').add('#overlay_product_info div.close').click(function(e) {
		e.preventDefault();
		$('#overlay_product_info').toggle();
	});
*/

	$('a:has(span.i-information.icon)').click(function(e) {
		e.preventDefault();

		$('#overlay_product_info').hide();
		$('#overlay_product_info div.close').unbind('click');
		$('#product div.image ul.thumb li').unbind('click');
		$("#overlay_product_info .add_to_basket").unbind('click');
		$("#info_select_size").unbind('change');

//		$('#link_why160').add('#overlay_why160 div.close').unbind('click');
		
		$.get(
			"/bitrix/components/all4sex/catalog.element/info.php",
			{id: $(this).attr("rel")},
			onInfoGetResult,
			"html"
		);

	});

	function onInfoGetResult(response)
	{
		if (response != "")
		{
			$('#item_info').html(response);
						
			$('#overlay_product_info div.close').click(function(e) {
				e.preventDefault();
				$('#overlay_product_info').hide();
			});

/*			
			$('#link_why160').add('#overlay_why160 div.close').click(function(e) {
				e.preventDefault();
				$('#overlay_why160').toggle();
			}); 
*/

			/* product image thumbs */
			$('#product div.image ul.thumb li').click(function() {
				setImageNumberX($(this).prevAll('li').size() + 1);
			});

			$("#overlay_product_info .add_to_basket").click(function(e)
			{
				if ($(this).hasClass("add_to_basket"))
				{
					e.preventDefault();
					$.get(
						"/bitrix/components/all4sex/catalog.element/add_to_basket.php",
						{action: "add2basket", id: $(this).attr("rel")},
						onInfoAddGetResult,
						"json"
					);
				}
			}
			);

			$("#info_select_size").change(function()
			{
				$("#overlay_product_info .add_to_basket").attr("rel",$(this).val());
			}
			);
			
			$('#overlay_product_info').show();
		}
	}

	/* product image */
	$('#product_image').add('#overlay_product_image div.close').click(function() {
		$('#product div.image ul.thumb li.active').click();
		$('#overlay_product_image').toggle();
	});
	/* product image thumbs */
	$('#product div.image ul.thumb li').click(function() {
		setImageNumberX($(this).prevAll('li').size() + 1);
	});
    
	/* product 3d */
	$('#link23d').click(function() {
		$('#overlay_product_3d').toggle();
	});
	$('#overlay_product_3d div.close').click(function() {
		$('#overlay_product_3d').toggle();
	});
	/* product youtube */
	$('#link2y2b').click(function() {
		$('#overlay_product_y2b').toggle();
	});
	$('#overlay_product_y2b div.close').click(function() {
		$('#overlay_product_y2b').toggle();
	});

    
	/* product tabs */
	$('#product-tabs ul.main-tabs li').click(function() {
		if ($(this).hasClass('active')) {
			return;
		}
		$(this).siblings('li').removeClass('active');
		$(this).addClass('active');
		$('#product-tabs div.tab-content.active').removeClass('active');
		$('#product-tabs div.tab-content:nth-child(' + ($(this).prevAll('li').size() + 2) + ')').addClass('active');
	});
	/* product tabs links */
	$('#product table.info-options a').click(function() {
		$($(this).attr('href')).click();

	});
	/* select current product tab */
	var x = location.href.indexOf('#');
	if (x != -1) {
		x = location.href.substr(x + 1);
		x = $('#product-tabs li#' + x);
		if (x.size()) {
			x.click();
		}
	}
	/* product image popup slider */
	// left arrow
	$('#overlay_product_image div.ctrl:first').click(function() {
		var x = $('#overlay_product_image div.small-pics li.active').prevAll('li').size();
		if (x == 0) {
			x = $('#overlay_product_image div.small-pics li').size();
		}
		setImageNumberX(x);
	});
	$(this).keydown(function(e) {
        if (isVisibleOverlayPopupImage() && e.ctrlKey && e.which == 37) {
            $('#overlay_product_image div.ctrl:first').click();
        }
    });
	// right arrow
	$('#overlay_product_image div.ctrl:last').click(function() {
		var x = $('#overlay_product_image div.small-pics li.active').prevAll('li').size();
		x = (++x == $('#overlay_product_image div.small-pics li').size()) ? 1 : ++x;
		setImageNumberX(x);
	});
	$(this).keydown(function(e) {
		if (isVisibleOverlayPopupImage() && e.ctrlKey && e.which == 39) {
	        $('#overlay_product_image div.ctrl:last').click();
		}
    });
	// paginator
	$('#overlay_product_image div.small-pics li').click(function() {
		if ($(this).hasClass('active')) {
			return;
		}
		setImageNumberX($(this).prevAll('li').size() + 1);
	});
	/* default values for inputs */
	$('input.toggleDefVal').add('textarea.toggleDefVal').focusin(function() {
		if (this.id == '') {
			return;
		}
		if (!defaultValues[this.id] && this.value != '') {
			defaultValues[this.id] = this.value;
		}
		if (this.value == defaultValues[this.id]) {
			this.value = '';
		}
	}).focusout(function() {
		if (this.value == '' && defaultValues[this.id]) {
			this.value = defaultValues[this.id];
		}
	});

	$("#call_button").click(function(){
		$('#call_form').ajaxSubmit({ 
		        dataType:  'json', 
		        success:   CallMeResult
		});
		return false;
	});

});

function setImageNumberX(x) {
	// overlay
	$('#overlay_product_image div.small-pics li.active').add('#overlay_product_image div.big-pic img.active').removeClass('active');
	$('#overlay_product_image div.small-pics li:nth-child(' + x + ')').add('#overlay_product_image div.big-pic img:nth-child(' + x + ')').addClass('active');
	// page
	if (!isVisibleOverlayPopupImage()) {
		$('#product div.image ul.thumb li.active').add('#product_image img.active').removeClass('active');
		$('#product div.image ul.thumb li:nth-child(' + x + ')').add('#product_image img:nth-child(' + x + ')').addClass('active');
	}
}

function isVisibleOverlayPopupImage() {
	return $('#overlay_product_image:visible').size();
}

/* слайдер */

/*

// пример 1: запускаем слайдер без автоперелистывания, только "ручное" управление
var Slider1 = new SliderType1(
	'bslider' // id контейнера содержащего слайдер
);
Slider1.start();

// пример 2:
var Slider2 = new SliderType1(
	'bslider2', // id контейнера содержащего слайдер
	{
		start: 5, // через каждые 5 секунд слайдер автоматически перелистывает вправо
		stop: true // остановить автоперелистывание если был клик по одному из элементов управления и больше не возобновлять
	}
);
Slider2.start();

// пример 3:
var Slider3 = new SliderType1(
	'bslider3', // id контейнера содержащего слайдер
	{
		start: 3, // через каждые 3 секунды слайдер автоматически перелистывает вправо
		stop: true, // остановить автоперелистывание при клике по элементам управления
		delay: 30 // выдерживать паузу в 30 секунд после клика, затем возобновлять автоперелистывание
	}
);
Slider3.start();

// пример 4:
var Slider4 = new SliderType1(
	'bslider4', // id контейнера содержащего слайдер
	{
		start: -2, // автоперелистывание: через каждые две секунды слайдер перелистывает влево
		stop: true, // остановить автоперелистывание при клике по элементам управления
		delay: 5, // через 5 секунд после клика по элементу управления возобновить автоперелистывание ...
		restart: 3 // ... но теперь листать вправо каждые 3 секунды
	}
);
Slider4.start();

// пример 5:
var Slider5 = new SliderType1(
	'bslider5', // id контейнера содержащего слайдер
	{
		start: -2, // автоперелистывание: через каждые две секунды слайдер перелистывает влево
		stop: true, // остановить автоперелистывание при клике по элементам управления
		delay: 5, // через 5 секунд после клика по элементу управления возобновить автоперелистывание ...
		restart: 3, // ... но теперь листать вправо каждые 3 секунды
		pause: true // ставить автоперелистывание на паузу, когда мышка находится над слайдером
	}
);
Slider5.start();

*/

function SliderType1(id, auto) {
	this.id = id; // id контейнера содержащего слайдер
	this.auto = auto; /* {
		start: автоперелистывание (0 - нет, значение - задержка в секундах, -/+ перед значением - влево/вправо)
		stop: останавливать ли автоперелистывание при клике по элементу управления (стрелочкам или цифрам) - true/false
		delay: через сколько секунд возобновить автоперелистывание после клика по элементу управления: 0 или параметр не передан - не возобновлять, значение - задержка в секундах
		restart: новые параметры автоперелистывания после остановки: 0 или параметр не передан - используетя параметр auto; значение - задержка в секундах, -/+ перед значением - влево/вправо
		pause: ставить автоперелистывание на паузу, когда мышка находится над слайдером - true/false
	} */

	this.size = 0; // количество элементов в слайдере
	this.curSlide = 0; // номер текущего слайда
	this.pause = false;
	this.timer = null;

	this.start = function() {
		this.setSize();
		if (this.size) {
			this.dispayNumbers();
			this.initControls();
			this.setSlide();
		}
		if (this.auto !== undefined && this.auto.start !== undefined) {
			this.startAuto(this.auto.start);
		}
	}

	this.setSize = function() {
		this.size = $('#' + this.id + ' ul:first li').size();
	}

	this.dispayNumbers = function() {
		var x = '<ul class="numbers">';
		for (var i = 1; i <= this.size; i++) {
			x += '<li><span>' + i + '</span></li>';
		}
		$('#' + this.id).append(x + '</ul>');
	}

	this.startAuto = function(auto) {
		if (isNaN(auto) || auto == 0) {
			return;
		}
		var self = this;
		this.timer = setInterval(function() {
			self.setSlideAuto(auto);
		}, Math.abs(auto) * 1000);
	}

	this.setSlideAuto = function(dir) {
		if (this.pause) {
			return;
		}
		if (isNaN(dir) || dir == 0) {
			return;
		}
		if (dir < 0) {
			this.setSlide(this.curSlide > 1 ? this.curSlide - 1 : this.size);
		} else {
			this.setSlide(this.curSlide < this.size ? this.curSlide + 1 : 1);
		}
	}

	this.stopAuto = function() {
		if (this.auto === undefined) {
			return;
		}
		if (this.auto.stop === undefined || this.auto.stop !== true) {
			return;
		}
		if (this.timer != null) {
			clearInterval(this.timer);
			this.timer = null;
		}
		if (this.auto.delay !== undefined && !isNaN(this.auto.delay) && this.auto.delay > 0) {
			var self = this;
			this.timer = setInterval(function() {
				self.restartAuto();
			}, this.auto.delay * 1000);
		}
	}

	this.restartAuto = function() {
		if (this.timer == null) {
			return;
		}
		clearInterval(this.timer);
		if (this.auto.restart === undefined || isNaN(this.auto.restart) || this.auto.restart == 0) {
			this.startAuto(this.auto.start);
		} else {
			this.startAuto(this.auto.restart);
		}
	}

	this.setAutoPause = function(pause) {
		if (this.auto === undefined || this.auto.pause === undefined || this.auto.pause !== true) {
			return;
		}
		this.pause = pause;
	}

	this.initControls = function() {
		// цифры
		$('#' + this.id + ' ul:last li').bind('click', {obj: this}, function(event) {
			event.data.obj.stopAuto();
			event.data.obj.setSlide(event.data.obj.size - $(this).nextAll().size());
		});
		// влево
		$('#' + this.id + ' > span:first').bind('click', {obj: this}, function(event) {
			event.data.obj.stopAuto();
			event.data.obj.setSlide(event.data.obj.curSlide > 1 ? event.data.obj.curSlide - 1 : event.data.obj.size);
		});
		// вправо
		$('#' + this.id + ' > span:last').bind('click', {obj: this}, function(event) {
			event.data.obj.stopAuto();
			event.data.obj.setSlide(event.data.obj.curSlide < event.data.obj.size ? event.data.obj.curSlide + 1 : 1);
		});
		// mouseover
		if (this.auto !== undefined && this.auto.pause !== undefined && this.auto.pause === true) {
			$('#' + this.id).bind('mouseover', {obj: this}, function(event) {
				event.data.obj.setAutoPause(true);
			}).bind('mouseout', {obj: this}, function(event) {
				event.data.obj.setAutoPause(false);
			});
		}
	}

	this.setSlide = function(x) {
		x = isNaN(x) ? 1 : x;
		if (this.curSlide == x) {
			return;
		}
		this.curSlide = x;
		$('#' + this.id + ' ul li').removeClass('active');
		$('#' + this.id + ' ul li:nth-child(' + this.curSlide + ')').addClass('active');
	}
}

/* моталка */
	function SliderType2(id) {
	this.id = id; // id контейнера содержащего моталку
	this.elementWidth = 150; // ширина одного элемента в моталке
	this.size = 0; // количество элементов в моталке
	this.curStartSlide = 0;
	this.length = 0; // количество помещающихся в моталку "видимых" элементов (float)
	this.Slider = null;

	this.start = function() {
		this.setLenght();
		if (!isNaN(this.length) && this.length > 0) {
			this.setSize();
			if (this.size) {
				this.initControls();
				this.move(1);
			}
		}
	}

	this.setLenght = function() {
		if (this.elementWidth > 0) {
			this.length = parseInt($('#' + this.id + ' div.scroll-content').css('width')) / this.elementWidth;
			if (this.curStartSlide) {
				this.move();
			}
		}
	}

	this.setSize = function() {
		this.Slider = $('#' + this.id + ' ul:first');
		this.size = this.Slider.children('li').size();
	}

	this.initControls = function() {
		$(window).bind('resize', {obj: this}, function(e) {
			e.data.obj.setLenght();
		});
		// влево
		$('#' + this.id + ' > span:first').bind('click', {obj: this}, function(e) {
			if ($(this).hasClass('active')) {
				e.data.obj.move(-1);
			}
		});
		// вправо
		$('#' + this.id + ' > span:last').bind('click', {obj: this}, function(e) {
			if ($(this).hasClass('active')) {
				e.data.obj.move(1);
			}
		});
	}

	this.move = function(shift) {
		var nextStartSlide = this.curStartSlide + (isNaN(shift) ? 0 : shift);
		this.curStartSlide = nextStartSlide;
		var x = this.size - (this.curStartSlide - 1 + this.length);
		x = this.curStartSlide + ((x < -1) ? parseInt(x) - 1 : - 1);
		this.Slider.children('li').removeClass('active').slice(x, x + Math.ceil(this.length)).addClass('active');
		this.setControls();
	}

	this.setControls = function() {
		var x = $('#' + this.id + ' > span:first');
		if (this.curStartSlide > 1) {
			if (!x.hasClass('active')) {
				x.addClass('active');
			}
		} else {
			x.removeClass('active');
		}
		x = $('#' + this.id + ' > span:last');
		if (this.curStartSlide - 1 + this.length < this.size) {
			if (!x.hasClass('active')) {
				x.addClass('active');
			}
		} else {
			x.removeClass('active');
		}
	}
}

function CallMeResult(data)
{
	if (data.success == 'Y')
	{
		$('#overlay_callback').toggle();
		$('#overlay_callback_message').toggle();
	}
	else
	if (data.error == 'Y')
	{
		$("#error_text").html(data.error_text+'<br />');
	}
}
