function log(data){if(window.console != undefined) console.log(data)}

(function($){

	var containerPaddingTop;
	var scrollEase = 'easeInOutExpo';
	var $navigation;

    $(function()
    {
        /* $(document).ready() */

		$('.toggler').toggler();
		$('.toggler').handleTogglerHover();

		$('#navigation a').click(handleMenuClick);
		$('a.img_box').colorbox({opacity:.9});

		var $container = $('#container');
		containerPaddingTop = parseInt($container.css('padding-top')) + 15;
		$navigation = $('#navigation');

		$('.load_user_form').userForm
		({
			target:$('#user_form'),
			contents:$('#user_form_contents')
		});

		$('#view_expand').click(function(event)
		{
			event.preventDefault();
			$('.articolo').slideDown();
			$('.toggler').addClass('active');
		});
		$('#view_collapse').click(function(event)
		{
			event.preventDefault();
			$('.articolo').slideUp();
			$('.toggler').removeClass('active');
		});

    });     //  closing $(document).ready()

	$.fn.userForm = function(params)
	{
		var $overlay = $('<div/>')
			.appendTo('#header')
			.addClass('user_form_overlay')
			.hide();

		return this.each(init);
		function init()
		{
			var $link = $(this);
			var href = $link.attr('href');

			var $formTarget = params.target;
			var $formContents = params.contents;

			$link.click(loadForm);

			function loadForm(event)
			{
				event.preventDefault();
				$formContents.load(href, null, loadComplete);
			}
			function loadComplete()
			{
				$overlay.fadeTo('fast', .5);
				$overlay.click(function(){hideForm()});
				$formTarget.slideDown('fast');
			}
			function hideForm()
			{
				$overlay.fadeTo('fast', 0, function(){$overlay.hide()});
				$formTarget.slideUp('fast');
			}
		}
	};

	$.fn.handleTogglerHover = function()
	{
		var startRight = 50;
		var endRight = 20;

		return this.each(init);
		function init()
		{
			var $toggler = $(this);
			var $img = $toggler.next().find('.img_box img');

			if($img == undefined || $img.size() == 0)
				return;

			$img = $img.clone()
					.addClass('hover_thumb')
					.appendTo($toggler)
					.fadeTo(1, 0)
					.show()
					.css('right', startRight);

			$toggler.mouseenter(function()
			{
				if($toggler.hasClass('active'))
					return;

				$img.stop();
				$img.animate({opacity:1, right:endRight}, 'slow', 'easeOutExpo');
			});
			$toggler.mouseleave(function()
			{
				$img.stop();
				$img.fadeTo(null, 0, resetPosition);
			});

			function resetPosition()
			{
				$img.css('right', startRight);
			}
		}
	};

	function handleMenuClick(event)
	{
		event.preventDefault();

		$link = $(this);
		$target = $($link.attr('href'));

		if($target == undefined || $target.size() == 0)
		{
			log('undefined target')
			return;
		}

		var scrollToValue = $target.position().top - containerPaddingTop + 10;
		if(scrollToValue < 0)
			scrollToValue = 0;
		$.scrollTo(scrollToValue, 750, {easing:'easeInOutQuad'});

		$navigation.find('.active').removeClass('active');
		$link.addClass('active');
	}

	$.fn.toggler = function()
	{
		var $active = null;

		return this.each(init);
		function init()
		{
			var $toggler = $(this);
			$toggler.click(handleClick);

			function handleClick()
			{
				if($toggler == $active || $toggler.hasClass('active'))
					closeContents($toggler);
				else
				{
					if($active)
						closeContents($active);
					openContents($toggler);
				}

				if(! $toggler.hasClass('visited'))
					$toggler.addClass('visited');
			}

			function openContents($target)
			{
				$target
					.addClass('active')
					.next().slideDown('fast', scrollToContents);

				var $hoverThumb = $target.find('.hover_thumb');
				if($hoverThumb != undefined)
					$hoverThumb.hide();

				$active = $target;

				selectActiveLink();

				function selectActiveLink()
				{
					var $activeArea = $target.parent()
					var $link_menu = $($activeArea.find('.link_menu').attr('href'));
					$navigation.find('.active').removeClass('active');

					if($link_menu == undefined || $link_menu == null)
						return;

					$link_menu.addClass('active');
				}

				function scrollToContents()
				{
					var scrollToPos = $target.position().top - containerPaddingTop + 20;
					$.scrollTo(scrollToPos, 500, {easing:'easeInOutQuad'});
				}
			}
			function closeContents($target)
			{
				$target
					.removeClass('active')
					.next().slideUp('fast');

				$active = null;
			}
		}
	};

})(jQuery);
