// Browser
var _ua = navigator.userAgent.toLowerCase();
var browser = {
	version: (_ua.match( /.+(?:me|ox|on|rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1],
	opera: /opera/i.test(_ua),
	msie: (/msie/i.test(_ua) && !/opera/i.test(_ua)),
	msie6: (/msie 6/i.test(_ua) && !/opera/i.test(_ua)),
	msie7: (/msie 7/i.test(_ua) && !/opera/i.test(_ua)),
	msie8: (/msie 8/i.test(_ua) && !/opera/i.test(_ua)),
	msie9: (/msie 9/i.test(_ua) && !/opera/i.test(_ua)),
	mozilla: /firefox/i.test(_ua),
	chrome: /chrome/i.test(_ua),
	safari: (!(/chrome/i.test(_ua)) && /webkit|safari|khtml/i.test(_ua)),
	iphone: /iphone/i.test(_ua),
	ipod: /ipod/i.test(_ua),
	iphone4: /iphone.*OS 4/i.test(_ua),
	ipod4: /ipod.*OS 4/i.test(_ua),
	ipad: /ipad/i.test(_ua),
	safari_mobile: /iphone|ipod|ipad/i.test(_ua),
	opera_mobile: /opera mini|opera mobi/i.test(_ua),
	mobile: /iphone|ipod|ipad|opera mini|opera mobi/i.test(_ua)
};

// Tabs
$.fn.initTabs = function()
{
	return this.each(function()
	{
		var active = 0, self = $(this), childs = self.children(), panels = [];
		
		childs.each(function(i) {
			var child = $(this);
			var link = child.find('a');
			
			if(child.hasClass('active')) active = i;
			link.click(function(){ return showTab(i); });
			
			if(link.attr('href').indexOf('#') != -1)
				panels.push(link.attr('href'));
		});
		
		// show tab content
		// @param (int) index tab
		function showTab(i)
		{
			var current = $(childs.get(i));
			
			childs.removeClass('active');
			current.addClass('active');
			
			var tab = current.find('a').attr('href');
			for(p in panels) $(panels[p]).hide();
			
			$(tab).show();
			return false;
		}
		
		showTab(active);
	});
};

// Slider
$.fn.initSlider = function(settings)
{
	return this.each(function()
	{
		settings = $.extend({easeFunc:"expoinout",easeTime:500}, settings);
		
		var slider = $(this);
		var wrap = slider.find(".wrap");
		var panelWidth = slider.find(".panel").width();
		var panelCount = slider.find(".panel").size();
		var sliderWidth = panelWidth * panelCount;
		
		// scroll to page
		function scrollTo(i)
		{
			setPage(i);
			var cnt = -(panelWidth * i);
			wrap.animate({left:cnt},settings.easeTime,settings.easeFunc)
			return false;
		}
		
		if (sliderWidth >= 0)
		{
			wrap.width(sliderWidth);
			
			if(panelCount > 1)
			{
				var $back = $("<a href=\"#back\" class=\"back\" title=\"Назад\"></a>")
					.click(function(){
						var thiswrap = $(this).parents(".slider").find(".wrap");
						var cnt = parseInt(thiswrap.css("left"));
						cnt = Math.floor(cnt/panelWidth)*panelWidth;
						if (cnt != 0)
						{
							cnt = cnt + panelWidth;
							thiswrap.animate({left:cnt},settings.easeTime,settings.easeFunc);
						}
						return false;
					});
				
				var $forward = $("<a href=\"#forward\" class=\"forward\" title=\"Вперед\"></a>")
					.click(function(){
						var thiswrap = $(this).parents(".slider").find(".wrap");
						var cnt = parseInt(thiswrap.css("left"));
						cnt = Math.ceil(cnt/panelWidth)*panelWidth;
						if (cnt != -(sliderWidth-panelWidth))
						{
							cnt = cnt - panelWidth;
							thiswrap.animate({left:cnt},settings.easeTime,settings.easeFunc);
						}
						else
						{
							if(slider.hasClass('slider-forward')) thiswrap.animate({left:0},settings.easeTime,settings.easeFunc);
						}
						return false;
					});
				
				slider.append($back, $forward);
			}
		}
	});
};

// slider
var slider = function(p){
	this.params = p || {};

	this.dom = $(p.dom);
	
	this.min = p.min || 1;
	this.max = p.max || 64;
	this.sub_range = p.sub_range
	this.valueMin = this.params.valueMin || this.min;
	this.valueMax = this.params.valueMax || this.max;
	this.value = p.value || this.min;
	this.slotSize = p.slotSize || 1;
	this.total = this.max - this.min;
	this.width = p.width - 10;
	this.disabled = p.disabled || false;
	this.onchange = function(){
		if (typeof p.onchange == 'function') {
			p.onchange(this);
		}
	}

	var self = this;

	$('input[name="last_value"]', this.dom).focusout(function() {
		var last_val = ($('input[name="last_value"]', self.dom).val()).replace(',', '.');

		if (/^\d+([.,]\d+)?$/.test(last_val)) {
			self.val(Math.round(parseFloat(last_val) / self.slotSize));
		} else {
			$('input[name="last_value"]', self.dom).val(self.value * self.slotSize);
		}
	});

	$('input[name="min"]', this.dom).focusout(function() {
		var last_val = ($('input[name="min"]', self.dom).val()).replace(',', '.');

		if (/^\d+([.,]\d+)?$/.test(last_val)) {
			self.valMin(Math.round(parseFloat(last_val) / self.slotSize));
		} else {
			$('input[name="min"]', self.dom).val(self.valueMin * self.slotSize);
		}
	});

	$('input[name="max"]', this.dom).focusout(function() {
		var last_val = ($('input[name="max"]', self.dom).val()).replace(',', '.');

		if (/^\d+([.,]\d+)?$/.test(last_val)) {
			self.valMax(Math.round(parseFloat(last_val) / self.slotSize));
		} else {
			$('input[name="max"]', self.dom).val(self.valueMax * self.slotSize);
		}
	});

	$('.mainSliderWorkLine a.max', this.dom).drag(function(ev, dd){
		if (self.disabledMinMax) return false;
		var p = dd.offsetX - $(this.parentNode).offset().left;

		self.valMax(Math.round(p / (self.width / self.total)) + 1);

		if (typeof self.onchange == 'function') {
			self.onchange(self);
		}
	});

	$('.mainSliderWorkLine a.min', this.dom).drag(function(ev, dd){
		if (self.disabledMinMax) return false;
		var p = dd.offsetX - $(this.parentNode).offset().left;

		self.valMin(Math.round(p / (self.width / self.total)) + 1);

		if (typeof self.onchange == 'function') {
			self.onchange(self);
		}
	});

	$('.mainSliderWorkLine a.slots', this.dom).drag(function(ev, dd){
		if (self.disabled) return false;
		var p = (dd.offsetX - $(this.parentNode).offset().left) + 8;

		self.val(Math.round(p / (self.width/ self.total)));

		if (typeof self.onchange == 'function') {
			self.onchange(self);
		}
	});

	this.val = function(value) {
		if (typeof value == 'number') {
			if (value > this.valueMax) {
				this.value = this.valueMax;
			} else if (value < this.valueMin) {
				this.value = this.valueMin;
			} else {
				this.value = value;
			}

			$('.mainSliderWorkLine a.slots', this.dom).css('left', parseInt((this.value - this.min) * (this.width/ this.total))+ 'px');
			if (typeof this.onchange == 'function') {
				this.onchange(this);
			}
		} else {
			return this.value;
		}
	}

	this.valMin = function(value) {
		if (typeof value == 'number') {
			if (value > this.value) {
				this.val(value);
			}

			if (value > this.value) {
				this.valueMin = this.value;
			} else if (value < this.min) {
				this.valueMin = this.min;
			} else {
				this.valueMin = value;
			}

			if (this.valueMin < 2 && this.valueMax > 32 && this.sub_range) {
				if (this.value > 32) {
					this.val(32);
				}
				this.valMax(32);
			}

			$('.mainSliderWorkLine a.min', this.dom).css('left', parseInt((this.valueMin - this.min) * (this.width/ this.total)) + 'px');
			if (typeof this.onchange == 'function') {
				this.onchange(this);
			}

		} else {
			return this.valueMin;
		}
	}

	this.valMax = function(value) {
		if (typeof value == 'number') {
			if (value < this.value) {
				this.val(value);
			}

			if (value < this.value) {
				this.valueMax = this.value;
			} else if (value > this.max) {
				this.valueMax = this.max;
			} else {
				this.valueMax = value;
			}

			if (this.valueMax > 32 && this.valueMin < 2 && this.sub_range) {
				if (this.value < 2) {
					this.val(2);
				}
				this.valMin(2);
			}

			$('.mainSliderWorkLine a.max', this.dom).css('left', parseInt((this.valueMax - this.min) * (this.width/ this.total)) + 'px');
			if (typeof this.onchange == 'function') {
				this.onchange(this);
			}
		} else {
			return this.valueMax;
		}
	}

	$('.mainSliderWorkLine a.min', this.dom).css('left', parseInt((this.valueMin - this.min) * (this.width/ this.total)) + 'px');
	$('.mainSliderWorkLine a.max', this.dom).css('left', parseInt((this.valueMax - this.min) * (this.width/ this.total)) + 'px');
	$('.mainSliderWorkLine a.slots', this.dom).css('left', parseInt((this.value - this.min) * (this.width/ this.total)) + 'px');
};

// DOM onload
$(function() {
	// init sliders
	if($(".slider") != null) $(".slider").initSlider();
	if($(".tabs") != null) $(".tabs").initTabs();
	
	// check catalog menu
	$('#catalog .active').parents('li').addClass('openned');

	// consult link click event
	$('a.consult').click(function()
	{
		location.href = '/contacts.html';
		return false;
	});
	
	// modal
	$('.modal').colorbox({
		fixed: 1,
		iframe:1,
		height:'66%',
		width:'44%'
	});
	
	// modal
	$('.gallery-modal').colorbox({
		rel: 'gallery',
		fixed: 1,
		transition: 'fade',
		width: '60%',
		height: '60%',
		current: '{current} / {total}'
	});
	
	// ------------------------
	// dropdown menu 
	// ------------------------
	
	var tt_box = null;
	var tt_timer = null;
	
	$('#menu ol a,.submenu').hover(function(e)
	{
		var rel = $(this).attr('rel');
		
		clearTimeout(tt_timer);
		tt_timer = null;
		
		if(e.target.href != undefined)
		{
			if(tt_box != null && e.target.rel != tt_box.attr('id'))
			{
				$('#menu .submenu').hide();
			}
		}
		
		if(rel && $('#' + rel).length)
		{
			tt_box = $('#' + rel);
			if(tt_box.is(':hidden')) tt_box.fadeIn(100);
		}
		
		$(this).addClass('hover');
	},
	function()
	{
		tt_timer = setTimeout(function() {
			if(tt_box!=null)
			{
				tt_box.hide();
				tt_box = null;
			}
		}, 300);
		
		$(this).removeClass('hover');
	});
});
