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

(function($){

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

		$('#login').ajaxForm
		({
			success:function(data, $form)
			{
				var email = $form.find('input[name="email"]').val();
				if(data == email)
					window.location = $form.find('.login_redirect').val();
				else
					showFormAlert($form, 'Errore di connessione, si prega di ritentare', true);
			}
		});

		$('#pwd_reminder').ajaxForm
		({
			success:function(data, $form)
			{
				showFormAlert($form, data, false);
			}
		});

		$('#subscribe').ajaxForm
		({
			success:function(data, $form)
			{
				showFormAlert($form, data, false);
			}
		});


		$('#testo.cucine').height($('#cucine').height());

		$('.list').slide();

		$('#slide').autoSlide
		({
			delay:5000,
			transition:'slow'
		});

		$('#index').verticalAlign({
			shift:30
		});

		// area riservata
		var options = {
			inline:true,
			opacity:.5,
			initialWidth:150,
			initialHeight:80,
			onClosed:resetForm
		};
		function resetForm()
		{
			var $form = $($(this).attr('href'));
			$form.find('.alert').hide();
		}

		$('.link_ar').colorbox(options);

		$('.ajax').colorbox
		({
			opacity:.5,
			initialWidth:150,
			initialHeight:80,
			onComplete:function(){
				Cufon.replace('h1')
			}
		});

	});

	$.fn.slide = function()
	{
		if(this.size() == 0) return;

		var $list = this;
		var $imgBox = $('#imgBox');
		var $loader = $('.loader');

		$list.find('a').click(loadImage);
		$($list.find('a')[0]).trigger('click');

		function loadImage(e)
		{
			e.preventDefault();

			var $link = $(this);
			$link.blur();

			if(loaderRunning) return;

			$link.parent().find('.active').removeClass('active');
			$link.addClass('active');
			Cufon.replace('#testo p.list a');

			var $old = $imgBox.find('.new').removeClass('new');
			$old.fadeOut('default', removeOld);

			$imgBox.append('<img class="new"/>');
			var $new = $imgBox.find('.new');

			startLoader();
			$new
			.load(imgLoaded)
			.attr('src', $link.attr('href'));

			function removeOld()
			{
				$old.remove();
			}

			function imgLoaded()
			{
				stopLoader();
				$new.fadeIn();
			}
		}

		var loaderRunning = false;
		function startLoader()
		{
			loaderRunning = true;

			$loader.show();

			var time = 100;
			var currFrame = -1;
			var width = 28;
			var frames = 12;

			nextFrame();

			function nextFrame()
			{
				currFrame ++;
				if(currFrame >= frames)
					currFrame = 0;

				var xPos = currFrame * -width;
				$loader.css('background-position',xPos + 'px 0');

				if(loaderRunning)
					setTimeout(nextFrame, time);
			}
		}

		function stopLoader()
		{
			loaderRunning = false;
			$loader.hide();
		}
	}

	$.fn.autoSlide = function(params)
	{
		return this.each(init);
		function init()
		{
			var $slide = $(this);
			var $list = $slide.find('.list li');

			var waiting = true;
			var currIndex = -1;
			var $old;
			var $new;

			loadNext();

			function loadNext()
			{
				currIndex ++;
				if(currIndex >= $list.size())
					currIndex = 0;

				$old = $slide.find('.new').removeClass('new');

				$new = $('<img class="new"/>').appendTo($slide);
				var url = $($list[currIndex]).text();
				$new
				.load(imgLoaded)
				.attr('src',url);
			}

			function imgLoaded()
			{
				if(waiting)
				{
					waiting = false;
					displayImg();
				}
				else
					waiting = true;
			}

			function displayImg()
			{
				$new.fadeIn(params.transition);
				var $last = $old;
				$last.fadeOut(params.transition, removeOld);
				setTimeout(imgLoaded, params.delay);
				loadNext();

				function removeOld(e)
				{
					$last.remove();
				}
			}
			function timerComplete()
			{
				waiting = true;
			}
		}
	};

	$.fn._autoSlide = function(params)
	{
		if(this.size() == 0) return;

		var $slide = this;
		var $list = $slide.find('.list li');

		var waiting = true;
		var currIndex = -1;
		var $old;
		var $new;

		loadNext();

		function loadNext()
		{
			currIndex ++;
			if(currIndex >= $list.size())
				currIndex = 0;

			$old = $slide.find('.new').removeClass('new');

			$new = $('<img class="new"/>').appendTo($slide);
			var url = $($list[currIndex]).text();
			$new
			.load(imgLoaded)
			.attr('src',url);
		}

		function imgLoaded()
		{
			if($new.height() < 200)
				setTimeout(imgLoaded, 1);

			if(waiting)
			{
				waiting = false;
				displayImg();
			}
			else
				waiting = true;
		}

		function displayImg()
		{
			$new.fadeIn(params.transition);
			var $last = $old;
			$last.fadeOut(params.transition, removeOld);
			setTimeout(imgLoaded, params.delay);
			loadNext();

			function removeOld(e)
			{
				$last.remove();
			}
		}
		function timerComplete()
		{
			waiting = true;
		}
	}

	$.fn.verticalAlign = function(options)
	{
		this.each(init);

		function init()
		{
			var $this = $(this);
			var $window = $(window);

			align();
			$window.resize(align);

			function align()
			{
				var yPos = ($window.height() - $this.height()) / 2 - options.shift;
				$this.css('margin-top', yPos);
			}
		}
	}

	$.fn.ajaxForm = function(options)
	{
		this.each(init);
		return this;

		function init()
		{
			var $form = $(this);
			var url = $form.attr('action');
			var method = $form.attr('method');

			$form.submit(submit);
			function submit(event)
			{
				event.preventDefault();

				var data = $form.serialize();
				$.ajax
				({
					url:url,
					type:method,
					data:data,
					success:ajaxSuccess,
					error:ajaxError
				});
			}
			function ajaxSuccess(data)
			{
				if(data.substr(0, 6) == 'error:')
				{
					var error = data.substr(6);
					showFormAlert($form, error, true);
				}
				else
					options.success(data, $form);
			}
			function ajaxError(error)
			{
				showFormAlert($form, 'Errore di connessione: ritentare', true);
			}
		}
	}

	function showFormAlert($form, error, fadeOut)
	{
		var $alert = $form.find('.alert');

		$alert.html(error);

		var alertWidth = $alert.outerWidth();
		var formWidth = $form.outerWidth();

		if(alertWidth >= formWidth)
			$alert.width(formWidth - 20);

		$alert.css('left', (formWidth - alertWidth) / 2);
		$alert.fadeTo('fast', 1);

		if(fadeOut)
		{
			setTimeout(function()
			{
				$alert.fadeTo('fast', 0, hideAlert);
				$form.fadeTo('fast', 1);
			}, 2500);
		}
		else
		{
			setTimeout(function(){
				$.colorbox.close()
				}, 2500);
		}
		function hideAlert()
		{
			$alert.hide();
		}
	}

})(jQuery);
