/* файл содержит набор функций для организации просмотра на клиенте группы картинок */

// число видимых слайдов (помещающихся в div)
var visibleSlidesCount;
// общее число слайдов
var slidesCount;
// условие зацикливания показа слайдов
var cycled;


$( initSlideShow );


// Возвращает true, если все картинки загружены
function imagesLoaded()
{
	//var images = $('img');
	//for( i = 0; i < images.length; i++ )
	//	if( images[i].src !='' && !images[i].complete )
	//		return false;

	return true;
}


/* подготовка слайдшоу к работе */
function initSlideShow()
{
	if( !imagesLoaded() )
	{
		window.setTimeout( 'initSlideShow()', 500 );
		return;
	}

	cycled = $('#cycled').val();
	visibleSlidesCount = getVisibleSlidesCount();
	slidesCount = $('#slide-show-navigation li').length;
	var currentSlideNumber = Number( $('#slide-show-navigation li.current').attr("id") );
	
	// если все слайды влезают, скрываем кнопки навигации
	if ( visibleSlidesCount >= slidesCount )
	{
		$('#backwardlink').hide();
		$('#forwardlink').hide();
	}
	else
		// если текущий слайд находится вне div`a (невидим)
		if ( currentSlideNumber > visibleSlidesCount )
		{
			for ( var i = 1; i <= currentSlideNumber - visibleSlidesCount; i++ )
				$('#slide-show-navigation li:first')
					.insertAfter( $('#slide-show-navigation li:last') )
					.css( 'marginLeft', '0' );
			// если последний отображаемый слайд (в данном случае текущий) - последний в коллекции
			// и не задано зацикливание скрываем кнопку прокрутки вперед
			if ( Number( $('#slide-show-navigation li.current').attr("id") ) == slidesCount && $('#cycled').val() != "true" )
				$('#forwardlink').hide();
		}
		else 
			// если не задан параметр зацикливания, скрываем по необходимости кнопки навигации
			{
				hideBackwardButton();
				hideForwardButton()
			}

	// всем слайдам, кроме текущего, проставляем onclick
	$('li img.ThumbNail').not($('li.current img.ThumbNail')).one( 'click', selectNewSlide );

	showSlide();
}

//выбор другого слайда
function selectNewSlide()
{
	// текущему слайду проставляем onclick
	$('li.current .ThumbNail').one( 'click', selectNewSlide );
	// из контейнера с большим изображением убираем заголовок
	//$('#slide-container h4').remove();
	// оставшееся содержимое
	//var $slideContainerContents = $('#slide-container').children();
	// присоединяем к текущему слайду
	//$('li.current').append( $slideContainerContents )
	// текущий слайд делаем "не текущим"
	$('li.current').removeClass("current");
	// выбранный слайд делаем текущим
	$(this).parent().addClass( "current" );
	// вызываем функцию показа большого изображения слайда
	showSlide();
}

//показ выбранного слайда
function showSlide()
{
	// div, в который поместится крупное изображение картинки с описанием
	//var $slide = $('#slide-container');
	// большое изображение и описание слайда
	//var $slideContents = $('li.current').children().not('img.ThumbNail').not('h4');
	// заголовок слайда (клон)
	//var $slideTitle = $('#slide-show-navigation li.current h4').clone();
	// присоединяем к диву, в котором должен вывестись сам слайд
	//$slide.append( $slideTitle );
	//$slide.append( $slideContents );
	$('#slide-container img').attr( 'src', $('#slide-show-navigation li.current input[@name="bigPicSrc"]').val() );
	$('#slide-container img').attr( 'id', $('#slide-show-navigation li.current input[@name="bigPicId"]').val() );
	$('#slide-container img').attr( 'alt', $('#slide-show-navigation li.current input[@name="bigPicAlt"]').val() );
	$('#slide-container img').attr( 'width', $('#slide-show-navigation li.current input[@name="bigPicWidth"]').val() );
	$('#slide-container img').attr( 'height', $('#slide-show-navigation li.current input[@name="bigPicHeight"]').val() );
}


// скрываем кнопку пролистывания назад, если первый отображаемый слайд - первый по порядку (Number = 1)
function hideBackwardButton()
{
	if ( cycled != "true" )
		if ( $('#slide-show-navigation li:first').attr( "id" ) == "1" )
			$('#backwardlink').hide();
}

// скрываем кнопку пролистывания вперед
function hideForwardButton()
{
	if ( cycled != "true" )
		if ( Number( $('#slide-show-navigation li:first').attr( "id" ) ) > ( slidesCount - visibleSlidesCount) )
			$('#forwardlink').hide();
}

// показываем кнопку пролистывания вперед
function showForwardButton()
{
	$('#forwardlink').show();
}

// пролистывание вперед
function slideShowForward()
{
	// убираем обработчик нажатия, чтобы кнопка не работала, пока едет слайд
	$('#forwardlink').removeAttr('onclick');
	if ( $('#slide-show-navigation li:first').css( 'margin-left' ) == "0px" && $('#slide-show-navigation li:first').css( 'margin-left' ) == "0px" )
	{
		//ширина li
		var liWidth = $('#slide-show-navigation li').not('li.current').width();
		
		$('#slide-show-navigation li:first').animate( { marginLeft: -liWidth + "px" }, 500, "", onSlideShowForwardAnimationComplete );
	}
}

// первый li, содержащий информацию о проекте, ставится после последнего, и последний ставится на место
function onSlideShowForwardAnimationComplete()
{
	$('#slide-show-navigation li:first')
		.insertAfter( $('#slide-show-navigation li:last') )
		.css( 'marginLeft', '0' );
	
	$('#backwardlink').show();
	hideForwardButton();
	
	// кнопке пролистывания вперед привязывается функция-обработчик нажатия, 
	// которая сработает только один раз (пока снова не будет присвоена)
	$('#forwardlink').one( 'click', slideShowForward );
}

// пролистывание назад
function slideShowBackward()
{
	if ( $('#slide-show-navigation li:first').css( 'margin-left' ) == "0px" )
	{
		//ширина li
		var liWidth = $('#slide-show-navigation li').not('li.current').width();
		
		// (последний li, содержащий информацию о проекте, ставится перед первым)
		$('#slide-show-navigation li:last').insertBefore( $('img.ThumbNail:first').parent() );
		
		$('#slide-show-navigation li:first').css( "margin-left", -liWidth + "px" );
		$('#slide-show-navigation li:first').animate( { marginLeft: "0"}, 500, "", showForwardButton );
	
		hideBackwardButton();
	}
}


// подсчитываем число слайдов всего и помещающихся в div`е и заносим в аттрибуты
function getVisibleSlidesCount()
{
	//слайды расположены горизонтально
	// ширина li
	var liWidth = $('#slide-show-navigation li').not('li.current').width();
	// число элементов, помещающихся в div
	return Math.floor( $('#slide-show-navigation').width() / liWidth );
}



