$(window).load(function () {
	// инициализируем галерею Портфолио
	//initHGallery('.portfolio', '.nav', false, false, 'fixed', 'self', '.portfolio-wrap', 118);
	scrollGallery('.portfolio', '.nav', '.portfolio-wrap', 50, 'left');
	
	// инициализируем галерею Новостной ленты
	//initVGallery('.news', '.nav', false, false, 'fixed', 'self', '.news-wrap', 101);
	scrollGallery('.news', '.nav', '.news-wrap', 30, 'top');
	
	/* Эффекты на контактах */
	var browser = detect_browser();
	browser = browser.toLowerCase();
	var doHover = true;
	if (browser == 'explorer')
	{
		var versionIE = get_browser_version(browser);
		if (versionIE < 9.0)
			doHover = false;
	}
	if (doHover)
	{
		$('.contacts li').hover(
			function(){
				$(this).find('.bg').animate({'opacity': 1},	300);
			},
			function(){
				$(this).find('.bg').animate({'opacity': 0.5},	300);
			}
		);
	}
	else
	{
		$('.contacts li .bg').css({'background': 'url("/_common/images/new-main/contacts-bg.png")'})
	}
	/* /Эффекты на контактах */

	/* Эффект в меню */
/*	$('.menu a').each(function(){
		$(this).find('span').css({"width": ($(this).width()+30)+"px"});
	});*/
	$('.menu a').hover(
		function(){
			var spBlock = $(this).find('span');
			$(spBlock).css({"display": "block", "bottom": "0px", "width": ($(this).width()+30)+"px"});
			$(spBlock).animate(
				{
					"height": "54px",
					"opacity": 1
				},
				250,
				function(){
					$(this).animate(
						{
							"height": "44px",
							"bottom": "5px",
							"opacity": 0.2
						},
						150
					)
				}
			);
		},
		function(){
			$(this).find('span').css({"display": "none", "height": "0px", "bottom": "0px"});
		}
	);
	/* /Эффект в меню */
});

/**
	Инициализирует галерею со скроллингом
	@param container - контейнер, к которому применить галереию
	@param navClass - класс навигационных кнопок, у каждой кнопки при этом должны быть классы .next или .prev
	@param wrapGallery - селектор враппера для галереи
	@param scrollStep - шаг скроллинга
	@param scrollWay - направление скроллинга (left/top)
*/
function scrollGallery(container, navClass, wrapGallery, scrollStep, scrollWay)
{
	var wayIndent = (scrollWay == 'left') ? 'right' : 'bottom';
	$(container).each(function(){
		var cont = this;
		$(this).data('free', true);
	
		// вычисляем параметры галереи
		calcSizeScrollGallery(this, wrapGallery, wayIndent);
		// если галерея маленькая и количество элементов влазят в ширину враппера, то деактивируем навигацию
		if ($(this).data('galWidth') <= $(this).data('wrapWidth'))
		{
			$(this).find(navClass).addClass('no-active');
		}
		else
		{
			$(this).find('.prev').addClass('no-active');
			$(this).find('.next').removeClass('no-active');
		}
		
		$(this).find(navClass).click(function(){
			var znak = 1;
			if ($(this).hasClass('next'))
				znak = -1;
			moveScrollGallery(cont, scrollStep*znak, scrollWay);
			return false;
		});
		
		/*$(this).find(navClass).mousedown(function(){
			var znak = 1;
			if ($(this).hasClass('next'))
				znak = -1;
				
			setTimeout('moveScrollGallery('+cont+', '+scrollStep*znak+', '+scrollWay+')', 300);
			return false;	
		});*/
		
		$(cont).bind('mousewheel', function(event, delta){
			moveScrollGallery(cont, scrollStep*delta, scrollWay);
			return false;
		});
	});
}

/**
	Двигает галерею на определенный шаг
	Проверяет, если дошли до конца/начала галереи, то не двигает ничего больше в этом направлении
	@param container - контейнер галереи
	@param step - шаг сдвига
	@param scrollWay - направление сдвига (left/top)
*/
function moveScrollGallery(container, step, scrollWay)
{
	if ($(container).data('free'))
	{
		var curPos = $(container).find('ul').css(scrollWay);
		curPos = curPos.replace("px", "");
		curPos = parseInt(curPos);
		
		// устанавливаем текущие левую и правую границы
		var leftBorder = curPos;
		var rightBorder = Math.abs(leftBorder - $(container).data('wrapWidth'));
		
		var canMove = false;
		// проверяем, можем ли мы двигать галерею в нужном направлении
		if (step < 0)
		{
			// высчитываем ширину оставшихся элементов за кнопкой вправо
			var widthOtherRItems = $(container).data('galWidth') - rightBorder;
			// если мы не дошли до правой границы и ширина оставшихся элементов меньше шага, то уменьшаем шаг до оставшейся длины
			if ((widthOtherRItems > 0) && (widthOtherRItems < Math.abs(step)))
			{
				canMove = true;
				step = -widthOtherRItems;
			}
			else if(widthOtherRItems > 0)
			{
				canMove = true;
			}
		}
		else
		{
			// если мы не дошли до левой границы, то проверяем, если левая граница ближе, чем длина шага, то уменьшаем длину шага до левой границы
			if ((Math.abs(leftBorder) > 0) && (Math.abs(leftBorder) < Math.abs(step)))
			{
				canMove = true;
				step = Math.abs(leftBorder);
			}
			else if (Math.abs(leftBorder) > 0)
			{
				canMove = true;
			}
		}
		
		// если можно двигать галерею, то двигаем
		if (canMove)
		{
			if (scrollWay == 'left')
				$(container).find('ul').css({'left': (leftBorder+step)+'px'});
			else
				$(container).find('ul').css({'top': (leftBorder+step)+'px'});
			// проверяем дошли ли до одной из границ, если дошли, то деактивируем кнопку
			if ((leftBorder + step) >= 0)
			{
				$(container).find('.prev').addClass('no-active');
			}
			else
			{
				$(container).find('.prev').removeClass('no-active');
			}
			if ((rightBorder - step) < $(container).data('galWidth'))
			{
				$(container).find('.next').removeClass('no-active');
			}
			else
			{
				$(container).find('.next').addClass('no-active');
			}
		}
	}
}

/**
	Подсчитывает ширину галереи и величину отступа в элементе
	@param container - контейнер галереи
	@param wrapGallery - селектор враппера галереи
	@param wayIndent - направление отступа в галерее (bottom/right)
*/
function calcSizeScrollGallery(container, wrapGallery, wayIndent)
{
	// определим сначала отступы в элементах
	var padding = $(container).find('ul li').css('padding-'+wayIndent);
	padding = padding.replace('px', '');
	padding = parseInt(padding);
	var margin = $(container).find('ul li').css('margin-'+wayIndent);
	margin = margin.replace('px', '');
	margin = parseInt(margin);
	var itemIndent = margin + padding;
	$(container).data("item-indent", itemIndent);
	
	// теперь посчитаем ширину каждого элемента и просуммируем
	var galWidth = 0;
	if (wayIndent == 'right')
	{
		$(container).find('ul li img').each(function(){
			galWidth += $(this).width() + itemIndent;
		});
		
		// установим ширину враппера
		$(container).data('wrapWidth', $(container).find(wrapGallery).width());
	}
	else
	{
		galWidth = $(container).find('ul').height();
		// установим ширину враппера
		$(container).data('wrapWidth', $(container).find(wrapGallery).height());
	}
	$(container).data('galWidth', galWidth);
	
}

function detect_browser()
{
	var agt = navigator.userAgent.toLowerCase();
	if (agt.indexOf("opera mini") != -1) return 'OperaMini';
	if (agt.indexOf("opera") != -1) return 'Opera';
	if (agt.indexOf("firefox") != -1) return 'Firefox';
	if (agt.indexOf("chrome") != -1) return 'Chrome';
	if (agt.indexOf("safari") != -1) return 'Safari';
	if (agt.indexOf("msie") != -1) return 'Explorer';
	if (agt.indexOf("netscape") != -1) return 'Netscape';
	if (agt.indexOf("mozilla/5.0") != -1) return 'Mozilla';
	/*if (agt.indexOf('\/') != -1) {
		if (agt.substr(0,agt.indexOf('\/')) != 'mozilla') 
		{
			return navigator.userAgent.substr(0,agt.indexOf('\/'));
		}
		else 
			return 'Netscape';
	}
	else 
		if (agt.indexOf(' ') != -1)
			return navigator.userAgent.substr(0,agt.indexOf(' '));
		else 
			return navigator.userAgent;*/
	return 'other';
}

function get_version_ie()
{
	var agt = navigator.userAgent.toLowerCase();
	return agt.substr(agt.indexOf("msie")+5,1);
}

function get_browser_version(browser)
{
	var agt = navigator.userAgent.toLowerCase();
	//alert(agt);
	var version = 100;
	if (browser == 'explorer')
	{
		//version = get_version_ie();
		var reg = new RegExp('.*msie ([\\d\.]+)', 'gi') ;
	}
	else
	{
		if (browser == 'safari')
			var reg = new RegExp('.*version/([\\d\.]+)', 'gi') ;
		else
			if (browser == 'operamini')
				var reg = new RegExp('.*opera mini/([\\d\.]+)', 'gi') ;
			else
				if (browser == 'opera')
				{
					var ver = new RegExp('.*version/([\\d\.]+)', 'gi') ;
					var reg = new RegExp('.*'+browser+'/([\\d\.]+)', 'gi') ;					
				}
				else	
					var reg = new RegExp('.*'+browser+'/([\\d\.]+)', 'gi') ;
	}
	var result = reg.exec(agt);
	version = result[1];	
	
	if ((browser == 'opera') && (parseFloat(version) <= 9.64))
	{
		if (result = ver.exec(agt))
			version = result[1];
	}
	return parseFloat(version);
}
