﻿/* Скрипты для различных сеток модальных окон */

$(document).ready(
	function()
	{
		// Простая смена изображений в сетке «превьюхи-картинка»
		var photosContainer = $('.photos-layout'),
			previewsLinks = $('.previews a', photosContainer),
			photoLink = $('.photo a', photosContainer),
			photo = $('#changing-photo', photosContainer),
			photoToShow = new Image()
		
		previewsLinks.click(
			function()
			{
				if( !$(this).hasClass('selected') ){
					var thisHref = $(this).attr('href')
					
					photo.fadeOut(
						'fast',
						function()
						{
							photoToShow.src = thisHref
							
							$(photoToShow).load(
								function()
								{
									photo.attr('src', photoToShow.src)
									photo.fadeIn()
									resizeModalByContent()
								}
							)
						}
					)
					
					previewsLinks.removeClass('selected')
					$(this).addClass('selected')
					
					updatePhotoLinkLocation( $(this) )
				}
				
				return false
			}
		)
		
		photoLink.click(
			function()
			{
				var photoLinkLocation = $(this).attr('href')
			
				var previewLink = previewsLinks.filter(
					function( index )
					{
						return $(this).attr('href') == photoLinkLocation
					}
				)
				previewLink.click()
				
				return false
			}
		)
		
		function updatePhotoLinkLocation( _previewLink )
		{			
			var nextPreviewLink = _previewLink.parent('li').next().children('a')
			
			if( nextPreviewLink.length )
				photoLink.attr( 'href', nextPreviewLink.attr('href') )
			else
				photoLink.attr( 'href', previewsLinks.eq(0).attr('href') )
		}
	}
)

// Подгоняем окно фикбокса под фотки
function resizeModalByContent()
{
	var tbWindow = $('#TB_window'),
		tbAjaxContent = $('#TB_ajaxContent'),
		photosLayout = $('.photos-layout', tbAjaxContent),
		photo = $('.photo img, .one-photo img', photosLayout),
		windowSize = getWindowSize()
	
	if( photosLayout.length )
	{
		var widthToAnimate = photo.width() + 194,
			heightToAnimate = photosLayout.height() + 60,
			marginLeftToAnimate = '-' + parseInt((widthToAnimate / 2), 10),
			marginTopToAnimate = '-' + parseInt((heightToAnimate / 2), 10),
			widthOverflow = widthToAnimate > windowSize[0],
			heightOverflow = heightToAnimate > windowSize[1]
		
		tbAjaxContent.width('auto').height('auto')
		
		if( widthOverflow || heightOverflow ){
			tbWindow.width( widthToAnimate )
			tbWindow.height( heightToAnimate )
			//tbAjaxContent.width( photo.width() + 164 ).height( photosLayout.height() + 30 )
			
			if( widthOverflow )
				tbWindow.addClass('bigger-x')
			else
				tbWindow.removeClass('bigger-x').css( {marginLeft: marginLeftToAnimate + 'px'} )
			
			if( heightOverflow )
				tbWindow.addClass('bigger-y')
			else
			{
				tbWindow.removeClass('bigger-y')
				if( !($.browser.msie && $.browser.version < 7) )
					tbWindow.css( {marginTop: marginTopToAnimate + 'px'} )
			}
		}
		else{
			
			tbWindow.removeClass('bigger-x bigger-y').stop().animate(
				{
					width: widthToAnimate,
					height: heightToAnimate,
					marginLeft: marginLeftToAnimate,
					marginTop: marginTopToAnimate
				},
				'fast',
				function()
				{
					tbAjaxContent.width( photo.width() + 164 ).height( photosLayout.height() + 30 )
				}
			)
		}
	}
}

function getWindowSize(){
	var windowWidth, windowHeight
	
	if( self.innerHeight ) // all except Explorer
	{
		windowWidth = self.innerWidth
		windowHeight = self.innerHeight
	}
	else if( document.documentElement && document.documentElement.clientHeight ) // Explorer 6 Strict Mode
	{
		windowWidth = document.documentElement.clientWidth
		windowHeight = document.documentElement.clientHeight
	}
	else if( document.body ) // other Explorers
	{
		windowWidth = document.body.clientWidth
		windowHeight = document.body.clientHeight
	}

	return [windowWidth, windowHeight]
}
