
function printPage(){
	window.print();
	//return false;
}

//test implementation:
function testGoogle(){
	return googleDirections($("input[name=saddr]").val(), $("input[name=daddr]").val());
}

function googleDirections(start, finish){
	var url = 'http://maps.google.dk';
	url += "?daddr=" + finish;
	url += "&saddr=" + start;
	
	window.open(url);
	return false;
}


//.VideoEmbed
function openFancyBoxVideo(obj, width, height) {
    $.fancybox({
        'padding': 20,
        'autoScale': false,
        'transitionIn': 'none',
        'transitionOut': 'none',
        'title': obj.title,
        'width': width,
        'height': height,
        'href': obj.href,// +'&fs=1',
        'type': 'swf',
        'hideOnOverlayClick': false
    });
    return false;
}




// remap jQuery to $
(function($){	

	// jQuery tools calendar input - Danish localization
	$.tools.dateinput.localize("da", {
		months:		'Januar,Februar,Marts,April,Maj,Juni,Juli,August,September,Oktober,November,December',
		shortMonths:'Jan,Feb,Mar,Apr,Maj,Jun,Jul,Aug,Sep,Okt,Nov,Dec',
		days:		'Søndag,Mandag,Tirsdag,Onsdag,Torsdag,Fredag,Lørdag',
		shortDays:	'Sø,Ma,Ti,On,To,Fr,Lø'
	});

	//Fix for browsers that dont recognize the input placeholder="" attribute
	function activatePlaceholders(){
		if ('placeholder' in document.createElement('input')) return false;

		$("input,textarea").each(function(){
			var input = $(this),
				ph = input.attr("placeholder");
				
			if(ph && ph.length > 0){
				input
					.addClass("placeholder")
					.val(ph)
					.focus(function(){if (input.val() == ph) input.val("").removeClass("placeholder");})
					.blur(function(){if (input.val().length < 1) input.val(ph).addClass("placeholder");});
			}
		});
	}

	$(document).ready(function(){

		App.Gallery.init();
		App.Collapsible.init();
		App.Browser.init();
		
		//jQuery tools date field
		$("input.date").dateinput({
			format:'yyyy-mm-dd'
			,firstDay:1
			,lang:'da'
		});
		
	});
//	$(window).load(function(){
//		App.Tooltip.init();
//		activatePlaceholders();
//	}

	$(document).ready(function(){
		App.Tooltip.init();
		activatePlaceholders();
	}

    
    );



	var App = {}
	//Add an alias to the object if we need to call App from the outside:
	window.VK = App;

	App.Gallery = {
		gallery:"#gallery"
		,options: {
			//this.options.tabs:
			effect: 'autoheight' //'fade'
			,fadeOutSpeed: 600
			,next:'.gallery-next'
			,prev:'.gallery-prev'
			,debug:false
			,rotate: true // start from the beginning after the last tab

			//this.options.slideshow: 
			,autoplay: false
			,clickable: false
			,interval: 10000
			,onBeforeClick: function(){
				this.getPanes().find(".spot,.price-tag, .band").hide();
				
			}
			,onClick: function(){
				var slideshow = $("#gallery .paging").data("slideshow"),
					panel = this.getCurrentPane(),
					spots = panel.find(".spot"),
					wasPlaying = slideshow.getConf().autoplay;

				slideshow.getConf().autoplay = false;

				spots.fadeInSequence(200,200,function(){
					var $band = panel.find(".band"),
						$price = panel.find(".price-tag");
	
					if($band.length > 0) {
						$band.slideDown(400,function(){
							$price.fadeIn(400, function(){
								slideshow.getConf().autoplay = wasPlaying;
							});
						});
					} else { // added by TL, needed for campaigns without allincluded
						$price.fadeIn(400, function(){
							slideshow.getConf().autoplay = wasPlaying;
						});
					}
					spots.each(function(){
						var pos = $(this).position();
						if (pos.left > 600) {
							$(this).addClass("spot-left");
						}
					});
				});
			}
		},

		init:function(options){
			var $gallery = $(this.gallery);
			if($gallery.length==0) return;

			var $paging = $gallery.find('.paging'),
				$panels = $gallery.find(".panels"),
				$scrollable = $gallery.find(".scrollable"),
				gallery = this;

			//extend config from metadata if available:
			var meta = (typeof $.fn.metadata == "function") ? $gallery.metadata() : {};
			this.options = $.extend({}, this.options, options,meta);


			if ($scrollable.length>0){				
				$scrollable.before('<a class="gallery-prev prev browse left"></a><a class="gallery-next next browse right"></a>').scrollable({
					items:".paging"
					,circular:false
					,next:".scrollable-next"
					,prev:".scrollable-prev"
					//keyboard:false
				});
			}
			$paging.tabs('.panel', this.options).slideshow(this.options);
			
			var api = $("#gallery .paging").data("tabs");

			//load all images:
			api.getPanes().find("img").each(function(){
				$(this).attr("src", $(this).attr("original"));
			});
			
			var slideshowApi = $("#gallery .paging").data("slideshow");

			$("a.spot-trigger[rel]").overlay({
				fixed:true
				,effect:"kraftvaerk"//"simplefade"//
				,closeOnClick:true

				,onClose: function(){
					if(gallery.options.autoplay) slideshowApi.play();
				}
				,onBeforeLoad: function() {

					//pause autoplay
					if(gallery.options.autoplay) slideshowApi.stop();

					// check if external link
					if (this.getTrigger().attr("href").indexOf("#") != 0){
						var wrap = this.getOverlay().find(".spot-info-content");
						wrap.load(this.getTrigger().attr("href")); // load the page specified in the trigger
					}
				}
			});
		}
	}


	App.Browser = {
		options: {
			maxHistory:10
			,cookieName : 'kitchen-browser'
			,speed:800
		},

		data: {
			filterGroup:"#filter-popular" //$("#filter-tabs a:first").attr("href")
			,filterValue:".popular" //".all"
			,lastVisited: []
		},

		save: function(){
			if (typeof($.cookie)!="function") return;
			$.cookie(this.options.cookieName, $.toJSON(this.data));
		},

		load: function(){
			if (typeof($.cookie)!="function") return;
			var cookie = $.cookie(this.options.cookieName);
			var cookieExists = (typeof(cookie) != "undefined" && cookie != null);
			if (cookieExists) {
				this.data = $.extend(this.data,$.evalJSON(cookie));
			}
			//console.log(this.data,cookie,"loading data from cookie... ");
			return true;
		},

		init:function(){
			if ($("#kitchen-browser").length==0) return;
			var _B = this;
			_B.load();

			//$(window).bind("unload", function(){_B.save()});

			// Tabs
			$("#filter-tabs a").click(function(){
				$("#filter-tabs .current").removeClass("current");
				$("#kitchen-filter .filter").hide();
				//this fails in IE7 when loading content via Ajax
				//$($(this).attr("href")).show();
				$($(this).attr("hash")).show();
				$(this).addClass("current");

				if($(this).attr("href") =="#filter-visited"){
					_B.data.filterValue=".visited";
					$("#kitchen-filter a.visited").trigger("click");
				}
				if($(this).attr("href") =="#filter-popular"){
					_B.data.filterValue=".popular";
					$("#kitchen-filter a.popular").trigger("click");
				}

				_B.data.filterGroup = $(this).attr("href");

				return false;
			});

			$("#filter-tabs a[href="+_B.data.filterGroup+"]").trigger("click");
			$("#kitchen-browser").after('<div id="tooltip"><div id="tooltip-content"></div><p>Klik for at se mere</p><span class="arrow"></span></div>');
			//$("#kitchen-items .img").click(function(){$(this).parent("a").trigger("click");});
			$("#kitchen-items a").tooltip({
				onBeforeShow: function(){
					var img = $(this.getTrigger()[0]).find("img");
					$("#tooltip-content").html('<img src="'+img.attr("src")+'" alt="">');
				},
				tip: "#tooltip",
				effect: "slide",
				predelay:300,
				slideOffset: 10,
				bounce:true
			}).dynamic({ bottom:{direction:'down'} });
			/*
			$("#kitchen-browser .item a").click(function(){return;});
			$("#kitchen-browser .item").click(function(e){
				$(this).find("a").trigger("click");
				return false;
			});
			*/
			var $wall = $('#kitchen-items');
			
			$wall.children('.item').each(function(){
				this.title=this.id;
			});
			$('#kitchen-browser .filter a').click(function(e){
				var colorClass = '.' + $(this).attr('class');
				colorClass = colorClass.split(" ")[0];

				if (colorClass==".visited") {
					
					//_B.load(); //to find
					
					//$wall.children('.visited').removeClass('visited');
					//$(_B.data.lastVisited.join(",")).addClass("visited");
				}

				if(colorClass=='.all') {
					
					// show all hidden boxes
					$wall.children('.invis')
						.toggleClass('invis').fadeIn(800);
				} else {  
					
					// hide visible boxes 
					$wall.children().not(colorClass).not('.invis')
						.toggleClass('invis').fadeOut(800);
					
					// show hidden boxes
					$wall.children(colorClass+'.invis')
						.toggleClass('invis').fadeIn(800);
				} 


				$wall.masonry({
					singleMode:true,
					itemSelector: '.item:not(.invis)',
					animate: true,
					animationOptions: {
						duration: 1000,
						queue: false
					}
				},function(){
					$("#kitchen-browser .item:not(.invis) img").trigger("lazyloadit");
				});

				_B.data.filterValue = colorClass;

                _B.save();
				
                $("#kitchen-filter " + _B.data.filterValue).addClass("current")
//min
				//set to current
				$("#kitchen-browser .filter .current").removeClass("current")
				$(this).addClass("current");

				//return false;
				e.preventDefault();
			});	

			
			if (typeof $.fn.lazyload == "function"){
				$("#kitchen-browser img").lazyload({effect:"fadeIn",event:"lazyloadit"});//.bind("lazyloadit",function(){alert(this)});
			}
			$("#kitchen-filter " + _B.data.filterValue).addClass("current");
			$("#kitchen-filter a"+_B.data.filterValue).trigger("click");
			
			_B.save();
			
		}	
		
	}// Browser


	App.Collapsible = {
		init: function(){
			$(".collapsible").each(function(){
				var $headers=$(this).find(".collapsible-header");
				var $content=$(this).find(".collapsible-content");
				$content.hide();
				$headers.wrapInner('<a href="#"></a>').click(function(){
					$(this).parent().find(".collapsible-content:visible").not($(this).next()).slideUp();
					$(this).next().slideDown();
					$(this).parent().find(".expanded").removeClass("expanded");
					$(this).addClass("expanded")
					return false;
				});
				window.setTimeout(function(){$headers.eq(0).trigger("click");},1000);
			});
		}
	} // Collapsible
	
	App.Tooltip = {
		init: function(){
			$(".teaser [title]").tooltip({
				//tip: ".tooltip",
				effect: "slide",
				layout: '<div><span class="arrow"></span></div>',
				predelay:300,
				slideOffset: 10,
				bounce:true,
				position:"top center",
				offset:[10,0]
			}).dynamic({
				bottom:{direction:'down'}
			});
		}
	} // Tooltip
	

	$.fn.Expert = function(options) {
		var defaults = {
				delay:0
			},
			root = this,
			showTimer = null;

		// Extend our default options with those provided.
		var opts = $.extend(defaults, options);

		// Do something to each item
		return this.each(function() {
			var _ = { obj : $(this) };
			//console.log(_.obj.find('.answer'))
			_.answers = _.obj.find('.answer');
			if (_.answers.length > 0){
				var buttons = $('<div class="alternatives"></div>'),
					btn;
                _.answers.each(function(i){
					var el = $(this);
					var btn = null;
					//console.log(el.has('h3').length)
					if (el.has('h3').length>0){
						btn = $('<button>'+$.trim(el.find('h3').text())+'</button>').click(function(event){
							_.answers.not('eq('+i+')').hide().end().eq(i).show();//.slideDown();
							_.question.trigger("hidequestion");
							event.preventDefault();
						});
					} else {
						el = el.find('a');
						if(el.length>0) {
							btn = $('<button>'+$.trim(el.text())+'</button>').click(function(event){
								location.href = el.attr('href');
                                event.preventDefault();
							});
						}
					}
					if (btn!=null) {
						btn.appendTo(buttons);
					}
				});
				$(buttons).appendTo(_.obj.find('.question'));

			}

			_.question = _.obj.find('.person').tooltip({
				//tip: ".question",
				effect: "slide",
				layout: '<div><span class="arrow"></span></div>',
				predelay:500,
				slideOffset: 10,
				bounce:true,
				position:"top center",
				offset:[10,0],
				events: {
					//def:     "click showquestion,hidequestion",
					def:     "mouseenter showquestion,hidequestion mouseleave",
					tooltip: "mouseenter,mouseleave"
				}
			}).next('.question').append('<span class="arrow"></span>').end()
			.dynamic({ bottom:{direction:'down'} })
			.click(function(){$(this).trigger("showquestion");});
			/*
			_.question.bind("showquestion",function(){
				//console.log($(this).parent().find('.answer'))
				$(this).parent().find('.answer:visible').slideUp(200);
			});
			*/
			//extend config from metadata if available:
			_.obj.meta = (typeof $.fn.metadata == "function") ? _.obj.metadata() : {};
			_.obj.meta.delay = _.obj.meta.delay || opts.delay;
			if (_.obj.meta.delay > 0){
				showTimer = setTimeout(function(){
					_.question.trigger("showquestion");
				},_.obj.meta.delay);
			}
		});
	}; // Expert
	
//	$(window).load(function(){
//		$('#expert,.expert').Expert();
//	}

	$(document).ready(function(){
		$('#expert,.expert').Expert();
	}
    
    );


	$(document).ready(function(){		
		$('.allincluded').hoverIntent(
			function(){
				$(this).find(".content").stop(true,true).animate({width:"show", height:'show'},400);
			},
			function(){
				$(this).find(".content").stop(true,true).animate({width:"hide", height:'hide'},400);
			}
		);
	});

	// App.Gallery dependency: add new effect to the tabs plugin
	$.tools.tabs.addEffect("autoheight", function(i, done) {
		var api = this;
		var newPane = api.getPanes().eq(i);
		api.getPanes().css("z-index",0);

		newPane
			.css("z-index",2)
			.fadeIn(400,function(){
				api.getPanes().not(newPane).fadeOut(400);
			})
			.parent().animate({height: newPane.height() },300, function(){
				done.call(); // the supplied callback must be called after the effect
			});
	});


/*	//////////////////////////////////////////////////// 

	jQuery Tools overlay effect 
	(built upon the "apple" effect plugin)
	//////////////////////////////////////////////////// */

	// version number
	var t = $.tools.overlay,
		 w = $(window);

	// extend global configuragion with effect specific defaults
	$.extend(t.conf, { 
		start: { 
			top: null,
			left: null
		},
		fadeInSpeed: 'fast',
		zIndex: 9999
	});

	// utility function
	function getPosition(el) {
		var p = el.offset();
		return {
			top: p.top + el.height() / 2, 
			left: p.left + el.width() / 2
		}; 
	}


	var loadEffect = function(pos, onLoad) {
				
		var overlay = this.getOverlay(),
			 conf = this.getConf(),
			 trigger = this.getTrigger(),
			 self = this,
			 oWidth = overlay.outerWidth({margin:true}),
			oHeight = overlay.outerHeight({margin:true}),
			 //img = overlay.data("img"),
			 position = conf.fixed ? 'fixed' : 'absolute';

		if(!bg){
			var bg = $('<span class="spot-info-bg"></span>');
			bg.css({border:0, display:'none'}).width(oWidth);
			$('body').append(bg); 
			overlay.data("bg", bg);
		}
		
		// initial top & left
		var itop = conf.start.top || Math.round(w.height() / 2), 
			 ileft = conf.start.left || Math.round(w.width() / 2);

		if (trigger) {
			var p = getPosition(trigger);
			itop = p.top;
			ileft = p.left;
		} 

		// put overlay into final position
		if (conf.fixed) {
			itop -= w.scrollTop();
			ileft -= w.scrollLeft();
		} else {
			pos.top += w.scrollTop();
			pos.left += w.scrollLeft();				
		}


		// initialize background image and make it visible
		bg.css({
			position: 'absolute',
			top: itop, 
			left: ileft,
			width: 0,
			height:0,
			zIndex: conf.zIndex
		}).show();

		pos.position = position;
		overlay.css(pos);
		
		// begin growing
		bg.animate({
			top: overlay.css("top"), 
			left: overlay.css("left"), 
			width: oWidth,
			height:100
			}, conf.speed, function() {

			// set close button and content over the image
			overlay.css("zIndex", conf.zIndex + 1).fadeIn(conf.fadeInSpeed, function()  { 

				if (self.isOpened() && !$(this).index(overlay)) {	
					onLoad.call(); 
				} else {
					overlay.hide();	
				} 
			});

		}).css("position", position);

	};
	
	var closeEffect = function(onClose) {

		// variables
		var overlay = this.getOverlay().hide(), 
			 conf = this.getConf(),
			 trigger = this.getTrigger(),
			 bg = overlay.data("bg"),
			 
			 css = { 
			 	top: conf.start.top, 
			 	left: conf.start.left, 
			 	width: 0,
				height:0
			 };
		
		// trigger position
		if (trigger) { $.extend(css, getPosition(trigger)); }
		
		
		// change from fixed to absolute position
		if (conf.fixed) {
			bg.css({position: 'absolute'})
				.animate({ top: "+=" + w.scrollTop(), left: "+=" + w.scrollLeft()}, 0);
		}
		 
		// shrink image		
		bg.animate(css, conf.closeSpeed, onClose);	
	};
	
	// add overlay effect	
	t.addEffect("kraftvaerk", loadEffect, closeEffect); 




	$.tools.overlay.addEffect("simplefade", function(position, done) {
			var trigger = this.getTrigger(),
				conf = this.getConf();
			if (trigger) {
				var p = getPosition(trigger);
				itop = p.top;
				ileft = p.left;
			} 
			var pos = {top:itop,left:ileft};
			this.getOverlay().css(pos).fadeIn(conf.speed, done);
		},
		// close function
		function(done) {
			// fade out the overlay
			this.getOverlay().fadeOut(this.getConf().closeSpeed, done);
		}
	);




})(window.jQuery);
