// Debugging-Function. Only active in Browser who support it
function pr() {
	if (!window.console) {
		return;
	}
	if (typeof window.console !== 'undefined' && typeof window.console.log === 'function') {
		console.log(pr.arguments);
	}
}

var bg = {
	width: 1500,
	height: 996
};

(function($) {
	// No JS for IE6
	if ($.browser.msie && $.browser.version < 7) {
		return false;
	}

	// Produces correct URLs relative to Router::url('/)
	$.url = function(url) {
		return $('meta[name=identifier-url]').attr('content')+url.substr(1);
	};

	$(function() {
		// Generate a Page-Object to bind events on
		window.Page = $('body');
		
		//Take care about the non-js fallback-version of the site 
		$('body').addClass('js').removeClass('no-js');
		 
		// Make external links open in a new window
		$('a[rel=external]').live('click', function() {
			window.open(this.href);
			return false;
		});

		// Fix Alpha-PNG's for IE6
		if ($.browser.msie && $.browser.version < 7) {
			// $.ifixpng($.url('/js/jquery/ifixpng/pixel.gif'));
			// $('img[src$=.png]').ifixpng();
		}

		$('a.mitglieder').bind('mouseover', function(){
			$('#branchen').show();
			$('a.mitglieder').focus();
			$(this).addClass('active');
			$('#news').hide();
			$('a.news').removeClass('active');
		})
		.bind('click', function(){
			return false;
		});
		$('#branchen').bind('mouseleave', function(e) {
			$('#branchen').hide();
			$('a.mitglieder').removeClass('active');
		});

		$('a.news').bind('mouseover', function(){
			$('#news').show();
			$(this).addClass('active');
			$('#branchen').hide();
			$('a.mitglieder').removeClass('active');
		}).bind('click', function(){
			return false;
		});
		$('#news').bind('mouseleave', function(e) {
			$('#news').hide();
			$('a.news').removeClass('active');
		});
		$('.newsentry').live('click', function() {
			location.href = $(this).find('h4 a').attr('href');
			return false;
		});

		$('body').bind('click', function(){
			$('#branchen').hide();
			$('#news').hide();
			$('a.mitglieder, a.news').removeClass('active');
		});

		// Suche

		$('#search').data('text', $('#search').attr('value'));
		$('#search').bind('focus', function(){
			if ($('#search').data('text') == $('#search').attr('value')) {
				$('#search').attr('value', '');
			}
		}).bind('blur', function(){
			if ($('#search').attr('value').length < 1) {
				$('#search').attr('value', $('#search').data('text'));
			}
		});



		$("#search").autocomplete({
			source: function(request, response) {
				$.ajax({
					url: $.url('/pages/search.json'),
					type: 'POST',
					dataType: "json",
					data: $('#searchform').serialize(),
					success: function(data) {
						response($.map(data, function(item) {
							var label = '';
							if (!item.Page.logo.match(/json$/)) {
								label += '<div class="thumb" style="background-image:url('+item.Page.logo+')"></div>';
							}
							label += '<h4>'+item.Page.title+'</h4><p>'+item.Page.description+'</p>';
							return {
								label: label,
								id: item.Page.id,
								value: item.Page.title,
								url_title: item.Page.url_title
							};
						}));
					}
				});
			},
			minLength: 3,
			search: function(event, ui) {
				$('#search').addClass('loading');
			},
			open: function(event, ui) {
				$('#search').removeClass('loading');
			},
			focus: function(event, ui) {
				$(event.target).val(ui.item.value);
			},
			select: function(event, ui) {
				location.href = $.url('/'+ui.item.id+':'+ui.item.url_title);
				return false;
			}
		});

		// Resize background image
		$(window)
			.bind('resize', function() {
				var targetRatio = bg.width/bg.height;
				var targetW = realW = $(this).width();
				var targetH = realH = $(this).height()-$('#footer').height();
				var realRatio = realW/realH;

				if (realRatio > targetRatio) {
					// Current viewport is more landscape, take width as reference and adjust height
					targetH = Math.round(realW/targetRatio);
				} else {
					// Current viewport is more portrait, take height as reference and adjust width
					targetW = Math.round(realH*targetRatio);
				}
				// Center the background image
				$('#background a').css({
					marginLeft: '-'+Math.round((targetW-realW)/2)+'px',
					marginTop: '-'+Math.round((targetH-realH)/2)+'px'
				});
				$('#background').width(targetW).height(targetH);
			})
			.trigger('resize');

		$('.arrow.right').live('click', function(){
			$.switchImage('next');
			return false;
		});
		$('.arrow.left').live('click', function(){
			$.switchImage('prev');
			return false;
		});
		$('#footer a.fotos').live('click', function(){
			if ($(this).hasClass('active')) {
				// pr('already open');
				return false;
			}
			$(this).addClass('active');
			$.animateToGalery();
			return false;
		});
		$('#galery-navi a.close,body.galery a.logo').live('click', function(){
			$.animateFromGalery();
			return false;
		});
		$('#footer a.gutschein').live('click', function(){
			if ($(this).hasClass('active')) {
				return false;
			}
			$(this).addClass('active');
			$('#gutschein').fadeIn('fast', function(){
				$('body').bind('click', function(){
					$('#gutschein').fadeOut('fast');
					$('#footer a.gutschein').removeClass('active');
				});
			});
			return false;
		});

		// precaching images
		// $.each(images, function(i) {
		//   images[i] = new Image();
		//   images[i].src = $.url('/'+this);
		// });
		// $('#background a').each(function() {
		// 	var src = $(this).attr('href');
		// 	var alt = $(this).attr('title');
		// 	var id = $(this).attr('id');
		// 	$('#background').append('<img src="'+src+'" alt="'+alt+'" id="'+id+'" class="hidden" />');
		// 	$(this).remove();
		// });
	});

	// Generate namespace for project-specific functions encapsulated in the jQuery $-namespace
	$.local = function() {};
	// Definition of project-specific function
	$.local.func = function() {
		
	};


	$('#background a').live('click', function() {
		return false;
	});

	var animating = false;
	$.switchImage = function(direction) {
		if (animating) {
			return false;
		}
		animating = true;

		var $bgimages = $('#background a');

		var $from = $('#background a.show');
		var $to = $from.prev();
		if (direction == 'next') {
			$to = $from.next();
		}
		
		if ($to.length < 1 && direction == 'next') {
			$to = $bgimages.first();
		}
		if ($to.length < 1 && direction == 'prev') {
			$to = $bgimages.last();
		}

		if ($to.find('img').length == 0) {
			$('#loading').show();
			$to.empty().append($('<img />').attr('src', $to.attr('href')).bind('load', function() {
				$('#loading').hide();
				$.animateImage($from, $to);
			}));
		} else {
			$.animateImage($from, $to);
		}
	};
	$.animateImage = function($from, $to) {
		$('#background a').css('z-index', 5);
		$('#galery-navi .main p.description').text($to.attr('title'));
		$from.css('z-index', 7);
		$to.css('z-index', 10).removeClass('hidden').hide().addClass('show').fadeIn(1000, function() {
			$from.removeClass('show').addClass('hidden');
			animating = false;
		});
		$.ajax({
			url: $.url('/background/'+$to.attr('id'))
		});
	};

	$.animateToGalery = function(){
		if (animating) {
			return false;
		}
		animating = true;
		if ($('body').hasClass('galery')) {
			return false;
		}
		$('#galery-navi .main').find('.arrow,.close').hide().end().hide();
		$('#galery-header').show();
		$('#page .content, #header').fadeOut(1000, function(){
			$('#galery-navi .main').slideDown(function(){
				$('body').addClass('galery');
				$('#galery-navi .main p.description').text($('#background .show').attr('title'));
				$('#galery-navi .main :hidden:not(.arrow),.arrow').fadeIn('fast', function() {
					animating = false;
				});
				$(window).trigger('resize');
			});
			var $current = $('#background img.show');
		});
	};

	$.animateFromGalery = function(){
		$('#galery-navi .main').slideUp(function(){
			$('.arrow').fadeOut(function(){
				$(this).hide();
			});
			$('#page .content, #header').fadeIn(1000, function(){
				$('#galery-header').fadeOut(function() {
					$('#footer a.fotos').removeClass('active');
				});
				$('body').removeClass('galery');
				$('#galery-navi .main p.description').hide();
			});
		});
	};
	
})(jQuery);

