﻿document.documentElement.className = 'js';

/*
 * @include "/jTweener/src/jTweener.js"
 */

var bg_images = (function(){
	var images = {
		'nav-history': './i/history-bg.jpg',
		'nav-production': './i/production-bg2.jpg',
		'nav-museum': './i/museum-bg.jpg'
	};
	
	/**
	 * Загрузка всех картинок
	 */
	function loadImages(){
		var big_images = [];
		
		/**
		 * Создает html-элемент картинки
		 * @param {Image|String} img
		 * @param {String} className
		 * @return {jQuery}
		 */
		function createImg(img, className){
			/** @type {String} */
			var path = (typeof img == 'string') ? img : img.src;
			var img_elem = $('<img class="' + className + '" />');
			if ($.browser.msie) {
				img_elem
					.css('filter', "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + path + "',sizingMethod='scale')")
					.attr('src', path.replace(/(\.\w+)$/, '-ie.png'));
			} else {
				img_elem.attr('src', path);
			}
			
			
			img_elem.wrap('<div class="wrap"/>');
			
			
			return img_elem.parent();
		}
		
		function loadBigImages(){
			$.each(big_images, function(i, id){
				var img = new Image();
				img.onload = function(){
					$('#' + id).append(createImg(img, 'big'));
					//img = null;
				}
				
				img.src = images[id];
			});
		}
		
		/*
		 * Так как большие картинки очень сильно влияют 
		 * на производительность страницы я дополнительно загружаю
		 * маленькие картинки, которые будут отображаться в меню
		 * в скрытом состоянии
		 */
		var loaded_images = 0;
		$.each(images, function(name, path){
			var nav_elem = $('#' + name);
			if (nav_elem.hasClass('selected')) {
				// для текущего пункта меню сразу добавляю картинку,
				// чтобы сработала прогрессивная загрузка
				nav_elem.append(createImg(path, 'big'));
			} else {
				big_images.push(name);
			}
		});
		loadBigImages();
	}
	
	$(window).load(loadImages);
	
})();

// скрытие/раскрытие пунктов меню
$(function() {
	
	var nav = $('#navigation');
	nav.find('li').each(function(i){
		$(this).css('z-index', i + 1)
			.find('a')
				.append('<i class="shade"/>')
				.hover(function(){
					$(this).addClass('hover');
				}, function(){
					$(this).removeClass('hover');
				});
	});
	
	// для главной страницы ничего не делаем
	if($('body#index-page').length)
		return;
	
	var initial_width = nav.find('li:not(.selected)').width();
	var offset = parseInt(nav.find('.selected').css('margin-right'), 10);
	var anim_time = 600;

	/** Флаг, который говорит, работает сейчас анимация или нет */
	var is_busy = false;
	
	
	nav.find('a').click(function(/* Event */evt) {
		evt.preventDefault();
		expandSection($(this).parent());
	});
	
	/**
	 * @param {jQuery} item
	 */
	function expandSection(item){
		if (is_busy || item.hasClass('selected'))
			return;
		
		var prev_selected = item.siblings('.selected');
		var target_width = nav.width();
		var cur_margin = parseInt(prev_selected.css('marginRight'), 10);
		
		var w1 = initial_width - cur_margin;

		// фиксирую последнюю выбранную и текущую колонку
		prev_selected.css({
			width : target_width + cur_margin,
			marginRight : 0
		}).addClass('cur-animating');
		
		item.css({
			width : w1,
			marginRight : cur_margin
		}).addClass('animating');
		
		function resetItem(/* jQuery */ item){
			item.css({
				width : '',
				marginRight : ''
			});
		}
		
		var href = item.find('a').attr('href');
			
		jTweener.addTween({
			value : function(v) {
				if (arguments.length == 0)
					return 0;
				var width = Math.round(w1 + (target_width - w1) * v);

				item.width(width);
				prev_selected.width(target_width - width + initial_width);
			}
		}, {
			value : 1,
			time : 1,
			transition : 'easeinoutcubic',
			onComplete : function() {
				window.location.href = href;
			}
		});
		
		// показываем подпись текущего пункта
		jTweener.addTween(item.find('a'), {opacity: 0, time: 1});
		
		// прячем подпись предыдущего пункта
		jTweener.addTween(prev_selected.find('a').css({
			opacity : 0,
			display : 'block'
		}), {opacity: 1, time: 1, onComplete: function(){ item.css('display', ''); }});
		
		$('#content, #footer').animate({opacity: 0}, 500);
	}

});


$(function(){
	$('a.popup').click(function(/* Event */ evt) {
		$.popup(this.href, {scrollbars: 'yes'});
		evt.preventDefault();
	});
});