
	$(function(){
		$("div.section.collapsed .heading").addClass('collapseSwitcher');
		$(".collapseSwitcher").click(function(){
			$(this).parent('div').toggleClass('collapsed');
		})
	});

	function animate(elem, duration)
	{
		var loko = $(elem).find("div:first").get(0);
		var vagon = $(elem).find("div:last").get(0);
		var wdth = $(loko).width();
		var left = -wdth;
		$(loko).css('margin-left', left);
		var anim = function()
		{
		var left = parseInt($(loko).css('margin-left'));
		if(left > 0)
			{
				$(vagon).prependTo(elem);
				loko = $(elem).find("div:first").get(0);
				vagon = $(elem).find("div:last").get(0);
				var wdth = $(loko).width();
				var left = -wdth;
			}
			left += 1;
			$(loko).css('margin-left', left);
		}
		var t = setInterval(anim, duration);
	}

	function animateDown(elem, duration)
	{
		var loko = $(elem).find("div:first").get(0);
		var vagon = $(elem).find("div:last").get(0);
		var wdth = $(loko).width();
		var left = -wdth;
		var count = 0;
		$(loko).css('margin-left', left);
		var anim = function()
		{
			var left = parseInt($(loko).css('margin-left'));
			if(left > 0)
			{
				$(vagon).prependTo(elem);
				loko = $(elem).find("div:first").get(0);
				vagon = $(elem).find("div:last").get(0);
				var wdth = $(loko).width();
				var left = -wdth;
				$(loko).css('margin-left', left);
			}
			if ($(elem).hasClass('sub'))
			{
				$(elem).removeClass('sub');
			}
			else
			{
				left += 1;
				$(elem).addClass('sub');
				$(loko).css('margin-left', left);
			}
		}
		var t = setInterval(anim, 50);
	}
	
$.config.override({
		animation: {
		duration: 500,
		method: "linear",
		timeout: 0
	}
})

function setOpacity(elem, value) {
	elem.style.opacity = value;
	elem.style.filter = 'alpha(opacity=' + value * 100 + ')';
}
function animOpacity(animElem, options) {
	var len = $(animElem).find('div').length;
	var elem = $(animElem).children('div').eq(0);
	userFadeOut(elem, len, animElem, options);
}

function delta(progress, method) {
	switch(method)
	{
		case "linear":
		{
			return progress;
		}
		case "polynom":
		{
			return Math.pow(progress, 4);
		}
		case "sin":
		{
			return Math.sin(progress * Math.PI / 2);
		}
		case "bounce":
		{
			for(var a = 0, b = 1, result; 1; a += b, b /= 2) {
				if (progress >= (7 - 4 * a) / 11)
					return -Math.pow((11 - 6 * a - 11 * progress) / 4, 2) + Math.pow(b, 2);
			}
		}
		case "elastic":
		{
			return Math.pow(2,10 * (progress - 1)) * Math.cos(20 * progress * Math.PI * 1.5 / 3);
		}
		default:
		{
			return progress;
		}
	}
}

function userFadeOut(elem, length, parent, options) {
	setTimeout(function() {
		var t = 0;
		var index = $(parent).children('div').index(elem);
		index = (index + 1) % (length);
		var zIndex = $(elem).css('z-index');
		if (zIndex == 1) 
		{ 
			$(elem).css('z-index', "9999");
			zIndex = 9999;
		}
		
		var newElem = $(parent).children('div').eq(index);
		$(newElem).css('z-index', zIndex - 1);
		$(newElem).fadeTo(0, 1);
		
		var op = parseInt($(elem).css('opacity'));
		var duration = options.duration;
		var start = new Date().getTime();
		
		var anim = function() {
			var time = new Date().getTime();
			var now = time - start;
			var progress = now / duration;
			if (progress >= 1) {
				$(elem).css({opacity: 0});
				clearInterval(t);
				userFadeOut(newElem, length, parent, options);
			}
			else
			{
				var result = delta(progress, options.method);
				var outOpacity = 1.0 - result;
				
				$(elem).css({opacity: outOpacity});

			}
		}
		var t = setInterval(anim, 1);
	}, options.timeout);
}


$(document).ready(function() {
	var up = $(".extraDiv1 .bgUp").get(0);
	var down = $(".extraDiv1 .bgDown").get(0);
	
	animate(up, 40);
	animateDown(down, 120);

	var options = $.config.get('animation');

	var elem2 = $('div.flag-1');
	animOpacity(elem2, options);

	var elem3 = $('div.flag-2');
	animOpacity(elem3, options);

	var elem4 = $('div.flag-3');
	animOpacity(elem4, options);

	function loader() {
		var item = this;

		var complete = function(data) {
			loader.data = data;

			var itemElements = $(data).find("[component='page.navigation.menu'] item[key='" + item.menu.parentItem.name + "'] > list > item").get();

			if (itemElements.length) {
				for (var i = 0; i < itemElements.length; i++) {
					var name = $(itemElements[i]).attr('key');
					var link = $(itemElements[i]).children('link');
					var url = link.attr('uri');

					var options = { caption: link.text(), url: url };
					item.menu.addItem(options);
				}

				item.remove();
			}
			else item.menu.parentItem.removeSubmenu();
		}

		var data = {
			componentFilter: 'page.navigation.menu',
			outputMimeType: 'application/xml',
			language: document.documentElement.lang,
			'page.navigation.menu.items.submenus.display': 1
		};

		if (loader.data) complete(loader.data);
		else $.get('/', data, complete, 'xml')
	}

	function preload() {
		var complete = function(data) {
			loader.data = data;
		}

		var data = {
			componentFilter: 'page.navigation.menu',
			outputMimeType: 'application/xml',
			language: document.documentElement.lang,
			'page.navigation.menu.items.submenus.display': 1
		};

		if (loader.data) complete(loader.data);
		else $.get('/', data, complete, 'xml')
	}

	var itemFunction = function() { this.addSubmenu().addItem({ loader: loader }) }
	var menu = $("body.main ul.mainMenu");
	if (menu.length) {
		menu.dropdownMenu({ className: 'menu', itemOptions: { className: 'item'} }).eachItem(itemFunction);
		setTimeout(preload, 700)
	}
})
