$(document).ready(function(){
	slideMenu('.menu', 200);
	illInit( generateIllList(106, [8,12,15,16,17,19,24,26,30,31,34,36,42,44,50,52,53,54,59]).shuffle() );
	
	// Внешние ссылки открываются в новом окне
	$('a[href^="http:"]').attr('target', '_blank');
	
	// Показываем ссылку на версию для печати
	$('#print-version a').click(printView);
	var curPath = window.location.pathname.toLowerCase();
	if (curPath != '/' && curPath != '/default.aspx') {
		$('#print-version').css('display','inline');
	}
	
	// Скрываем блок "Интересно знать"
	if ( $.trim( $('#wonder .SectionDescription').text() ) == '' ) {
		$('#wonder').hide();
	}
	
	// Переместить фотографии из текста новости в блок фотографий
	$('.eventPhotoList img').each(function(){
		$(this).appendTo('.newsInImg')
		.width('200px')
		.height('auto')
			.wrap('<a/>')
			.parent()
			.attr('href', $(this).attr('src'))
			.addClass('fancybox[gallery]')
			.css({'float':'left', 'padding-right':'25px', 'height':'180px', 'display':'block'})
			.find('img').attr('src', $(this).attr('src') + '?height=180') // Устанавливаем высоту картинки
	});
	setTimeout('StartUp();', 1000);
	
	// toggle-блоки
	$('.tblock').hide();
	$('.tlink').css('padding-top', '5px');
	$('.tlink strong, .tlink span').css({
		'color': '#0083d5', 
		'cursor': 'pointer',
		'border-bottom': '1px dashed #0083d5'
	});
	$('.tlink').click(function(){
		$('.tblock').slideUp();
		if ( $(this).next('.tblock').css('display') == 'none' ) {
			$(this).next('.tblock').slideDown();
		}
	});
	
	//Всплывающий баннер
	$('#popupBanner i').click(function(){$(this).parent().fadeOut(500)})
	if ($('#popupBanner div').html() != null)
		$('#popupBanner').fadeIn(500);
		
	/* Scroll to Top*/
	$('#top-link').topLink({
    	min: 400,
    	fadeSpeed: 500
  	});
  	//smoothscroll
  	$('#top-link').click(function(e) {
    	e.preventDefault();
    	$.scrollTo(0,300);
 	});	
	
});

// Версия для печати
function printView() {
	if ($('.newsInTxt, .goodTbl tr:eq(1) td:last').text()) {
		var printText = '<h1>' + $('.SectionTitle').html() + '</h1>' + $('.newsInTxt, .goodTbl tr:eq(1) td:last').html()
	} else {
		var printText = $('#content-text').html();
	}
	$("<div id='printversion'></div>").appendTo('body').html("<p style='float:right; margin-right:50px'><a href='#' onclick='normalView()'>Назад</a></p>" + printText).hide();
	$("#printversion span").attr({'style':'', 'id':'', 'class':''});
	$('body form').fadeOut('3000', function(){
		$("#printversion").slideDown('3000', function() {
			setTimeout('window.print()', 400);
		});
	});
	return false;
}

// Отменить версию для печати
function normalView() {
	$('#printversion').slideUp('3000', function(){
		$("body form").fadeIn('3000');
	});
	return false;
}

/**
 * Скользящее меню.
 * 
 * @param {String} menuID селектор блока меню
 * @param {Number} speed время в мс. для анимации
 */
function slideMenu(menuID, speed) {
	$(menuID).find('li').hover(
		function(){
			if ($.browser.msie == false) {
				$(this).find('ul').stop().height('auto').slideDown(speed);
			} else {
				$(this).find('ul').show();
			}
		},
		function(){
			if ($.browser.msie == false) {
				$(this).find('ul').slideUp(speed);
			} else {
				$(this).find('ul').hide();
			}
		}
	);
}


/**
 * Сгенерировать список номеров фотографий.
 * 
 * @param {Number} count Кол-во котографий
 * @param {Array}  delList Список номеров фотографий, которые не выводить
 */
function generateIllList(count, delList) {
	var list = new Array();
	for (var i = 1, j = 0; i <= count; i++) {
		if ($.inArray(i, delList) == -1) {
			list[j++] = i;
		}
	}
	return list;
}

/**
 * Перетасовать массив.
 *
 * @return {Array}
 */
Array.prototype.shuffle = function() {
	var arr = this;
	var i = arr.length, j, t;
	while ( i ) {
		j = Math.floor( ( i-- ) * Math.random() );
		t = arr[i];
		arr[i] = arr[j];
		arr[j] = t;
	}
	return arr;
};

/**
 * Инициализация галлереи в шапке сайта
 *
 * @param {Array} ills Список номеров фотографий
 */
function illInit(ills) {
	var images = new Array;
	
	var count = ills.length;
	for (var i=0; i<count; i++) {
		images[i] = '/Themes/AGT/img/ill/' + ills[i] + '.jpg';
	}
	
	this.ills      = ills;
	this.images    = images;
	this.loading   = false;
	this.autoSlide = 2000; // скорость смены фото, 0 - не листать
	this.illIndex  = 0;
	this.illTimer  = null;
	this.progressBarWidth = 200;
	
	buildSlider();
	changeSlide(0);

	$('#prbar').width(((illIndex+1)/images.length) * progressBarWidth);
	illShow(0);

	// Событие для "плеера"
	$('#player-start').click(illAutoStart);
	$('#player-stop').click(illAutoStop);
	$('#player-prev').click(illPrevPhoto);
	$('#player-next').click(illNextPhoto);
	$('#player-close').click(playerClose);
}


/**
 * Показать следующую иллюстрацию.
 */ 
function illNextPhoto() {
	if (loading == true) return false;
	illShow( illIndex == images.length - 1 ? 0 : illIndex + 1 );
	slideLeft();
	return false;
}

/**
 * Показать предыдущую иллюстрацию.
 */ 
function illPrevPhoto() {
	if (loading == true) return false;
	illShow( illIndex == 0 ? images.length - 1 : illIndex - 1 );
	slideRight();
	return false;
}

/**
 * Запустить автопереключение иллюстраций.
 */
function illAutoStart() {
	clearInterval(illTimer);
	illNextPhoto();
	illTimer = setInterval(illNextPhoto, 4000);
	return false;
}

/**
 * Остановить автопереключение иллюстраций.
 */
function illAutoStop() {
	clearInterval(illTimer);
	return false;
}

/**
 * Показать большую фотографию.
 *
 * @param {Number} ind Индекс эемента массива с фотографиями
 */
function illShow(ind) {
	if (loading == true) return;
	illIndex = ind;
	for (var i=ind; i<ind+5; i++) {
		$('#slider div div img[title="'+ i +'"]').attr('src', '/Themes/AGT/img/ill/thumbs/'+ills[i]+'.jpg');
	}
	//changeSlide()
	loading = true;
	var img = images[ind];
	$('body').append('<img src="' + img + '" alt="" id="ill" style="position:absolute;top:-1000px;left:-5000px"/>');
	$('#ill').load(function(){
		$('#prbar').animate({width: ((illIndex+1)/images.length) * progressBarWidth}, 500);
		$('.illustration div#ill-inc')
			.hide()
			.css('background', 'url(' + img + ') center top no-repeat')
			.fadeIn('slow', function(){
				$('.illustration').css('background-image', 'url(' + img + ')');
				$('.illustration div#ill-inc').hide();
				$('#ill').remove();
				loading = false;
			});
	});
	return false;
}


// Слайдер
var countToRemove = 1; // Кол-во скроллируемых блоков
var direction = 'left'; // Направление движения
var stopMotion = false; // Блокиратор для повторного нажатия на кнопки
var padding = 0; // Расстояние между блоками

/**
 * Скрыть окно со слайдером.
 */
function playerClose() {
	var close = false;
		$('#player, #player-btm, #player-cont').animate({bottom: "-=107px"}, 600, function(){
			close = true;
			$('#player, #player-btm, #player-cont').css('cursor', 'pointer')
		});
		$('#player, #player-btm, #player-cont').mouseover(function(){
			if (close == true) {
				close = false;
				$('#player, #player-btm, #player-cont').css('cursor', 'default')
				$('#player, #player-btm, #player-cont').animate({bottom: "+=107px"}, 600);
			}
		})
	return false;
}

/**
 * Собрать список превьюшек для слайдера.
 */
function buildSlider() {
	var html = '';
	var count = ills.length;
	for (i = 0; i < count ; i++) {
		html += '<img src="/Themes/AGT/img/ill/thumbs/0.gif" title="'+i+'" style="width:85px; height:60px" onclick="slideTo(this)" />';
	}
	$(html).appendTo('#slider div div');
	padding = parseInt( $($('#slider img:first')).css('margin-right') );
	$('#slider div div img').each(function(){
		$(this).hover(
			function(){$(this).addClass('hov');}, 
			function(){$(this).removeClass('hov');
		});
	});
}

/**
 * Прокрутить список превьюшек влево.
 */
function slideLeft() {
	direction = 'left';
	slide();
}

/**
 * Прокрутить список превьюшек вправо.
 */
function slideRight() {
	direction = 'right';
	slide();
}

/**
 * Прокрутить список превьюшек до определенной позиции.
 *
 * @param {Object} t DOM-объект до которого необходимо совершить сдвиг
 */
function slideTo(t) {
	if (loading == true || stopMotion == true) return false;
	var index = $('#slider img').index($(t));
	countToRemove = index;
	direction = 'left';
	slide();
	var ind = illIndex + index
	ind = images.length > ind ? ind : ind - images.length;
	illShow( ind );
	changeSlide(index);
}

/**
 * Прокрутить фотографию, 
 * сам механизм выполнения прокрутки.
 */
function slide() {
	var rmWidth = 0;
	if (stopMotion == false) {
		stopMotion = true;
		if (direction == 'left') { // Влево
			changeSlide(1)
			for (var i = 0; i < countToRemove; i++) {
				rmWidth += $($('#slider img')[i]).width() + padding;
			}
			$('#slider div div').animate({'left': '-=' + rmWidth + 'px'}, rmWidth * 5, rmLeftBlocks);
		} else { // Вправо
			for (var i = 0; i < countToRemove; i++) {
				rmWidth += $($('#slider img')[ $('#slider img').length - i - 1 ]).width() + padding;
			}
			rmRightBlocks();
			changeSlide(0);
			$('#slider div div').animate({'left': '0px'}, rmWidth * 4, function(){stopMotion = false;});
		}
	}
}

/**
 * Перекинуть блоки в слайдере с начала в конец (для реализации замыкания списка в кольцо)
 */
function rmLeftBlocks(){
	for (var i = 0; i < countToRemove; i++) {
		$($('#slider img:first')).clone().appendTo("#slider div div");
		$($('#slider img:first')).remove();
	}
	$('#slider div div').css('left', '0px');
	stopMotion = false;
	countToRemove = 1;
}

/**
 * Перекинуть блоки в слайдере с конца на начало (для реализации замыкания списка в кольцо)
 */
function rmRightBlocks(){
	var rmWidth = 0;
	for (var i = 0; i < countToRemove; i++) {
		rmWidth += $($('#slider img:last')).width() + padding;
		$($('#slider img:last')).clone().prependTo("#slider div div");
		$($('#slider img:last')).remove();
	}
	$('#slider div div').css('left', '-' + rmWidth + 'px');
}

/**
 * Сменить класс для текущей превьюшки в слайдере.
 *
 * @param {Number} i Позиция превьюшки в слайдере
 */
function changeSlide(i) {
	$('#slider div div img').removeClass('cur');
	$('#slider div div img').eq(i).addClass("cur");
}

/**
 * Показать Scroll to Top.
 * Дока: http://davidwalsh.name/jquery-top-link/
 *
 */
jQuery.fn.topLink = function(settings) {
  settings = jQuery.extend({
    min: 1,
    fadeSpeed: 200
  }, settings);
  return this.each(function() {
    //listen for scroll
    var el = $(this);
    el.hide(); //in case the user forgot
    $(window).scroll(function() {
      if($(window).scrollTop() >= settings.min)
      {
        el.fadeIn(settings.fadeSpeed);
      }
      else
      {
        el.fadeOut(settings.fadeSpeed);
      }
    });
  });
};

