// 
//  app.js
//  Silkeborg Kirke
//  
//  Copyright 2010 Vokseværk. All rights reserved.
// 

// Configuration Constants
var SK_CONFIG = {
	
	scrollableSpeed: 600,
	
	slideshowSleep: 5,
	slideshowFade: 3
}


// Called from menuitems
function openmenu(event) {
	var link = event.target;
	var element = link.tagName;
	
	if (element == "A" && link.parentNode.parentNode.id == "nav") {
		csLinkHandler.linkClicked(link);
		return false;
	} else if (csLinkHandler.lastClicked && $(csLinkHandler.lastClicked).parent().hasClass("sfopen")) {
		toggleMenu(csLinkHandler.lastClicked);
	}
}



// Callback function for LinkController
function toggleMenu(link) {
	var currentMenu = $(link);
	var action = currentMenu.parent().hasClass('sfopen') ? 'CLOSE' : 'OPEN';
	var oldMenu = $(csLinkHandler.lastClicked);
	
	// Close last opened menu
	if (oldMenu && oldMenu !== currentMenu) {
		oldMenu.parent().removeClass("sfopen");
		oldMenu.parent().parent().removeClass("sfmenuopen");
	}
	
	if (action == 'OPEN') {
		currentMenu.parent().addClass("sfopen");
		currentMenu.parent().parent().addClass("sfmenuopen");
	} else {
		currentMenu.parent().removeClass("sfopen");
		currentMenu.parent().parent().removeClass("sfmenuopen");		
	}
}

function csLinkController(callback) {
// Properties
	this.lastClicked = null

// Events
	this.onclick = callback || new Function();
}

csLinkController.prototype.linkClicked = function(vValue) {
  	this.onclick(vValue);
	this.lastClicked = vValue;
}

function log(msg) {
	if (console) {
		console.log(msg);
	}
}

var csLinkHandler = new csLinkController(toggleMenu);

var silkeborgFrontpageSlides = [];
function startSlideShow(slides) {
	if (!slides.length) return; // No slides, so no show...
	
	$('#slideshowimg').crossSlide({
		sleep: SK_CONFIG.slideshowSleep,
		fade: SK_CONFIG.slideshowFade
	},
	silkeborgFrontpageSlides, // This is populated by Macro on frontpage
	function(idx, img, idxOut, imgOut) {
		if (idxOut == undefined) {
			// Not applicable
		} else {
	    	// starting cross-fade phase, cross-fade captions
			$('#branding .bar p').fadeOut('slow', function() {
				$(this).text(img.alt).fadeIn('slow');
			});
		}
	});
}

function initContactForm() {
	// Inline labels
	$(".formcontainer .textbox input, .formcontainer .textboxmultiple textarea").each(function() {
		var label = $(this).prev("label");
		$(this).val(label.text());
		label.hide();
	});

	$(".formcontainer").formHighlighter();
}

function initOverlay() {
	$('a[rel=#overlay]').overlay({
		mask: '#444',
		
		onBeforeLoad: function() {
			// grab wrapper element inside content
			var wrap = this.getOverlay().find(".contentWrap");

			// load the page specified in the trigger
			wrap.load(this.getTrigger().attr("href"));
		},
		
		onLoad: function() {
			this.getOverlay().find(".items a").click(function() {
				var link = $(this);
				link.closest("#overlay").find("#overlayimg").attr("src", link.attr("href"));
				return false;
			});
			
			this.getOverlay().find("#slides").scrollable({
				'prev': '#slide-controls .prevlink',
				'next': '#slide-controls .nextlink',
				'speed': SK_CONFIG.scrollableSpeed
			});
		}
	});
}
		
// Initialization
$(document).ready(function() {
	
	// Setup menu click handling
	$("#page").click(function(e) {
		return openmenu(e);
	});
	
	// Setup event toggling
	$("#events>section").click(function(e) {
		$("#events>section").toggleClass("details");
		$("body").toggleClass("details");
		e.stopPropagation();
	});

	initContactForm();

	$("#newsList footer a").click(function(e) {
		$("#newsList article.hide").removeClass("hide");
		e.preventDefault();
		$(this).parent().hide();
	});
	
	$("#content .eventlist li.more a").click(function(e) {
		$("#content .eventlist li.hide").removeClass("hide");
		e.preventDefault();
		$(this).parent().hide();
	});
	
	// Attach a fold-out behavior to truncated news items in list view
	$('.truncated').css({'cursor': 'pointer'}).find('.hide').closest('article').click(function(){
		$(this).find('.ellipsis').hide().next('.hide').fadeIn();
		$(this).css({'min-height': '79px', 'height': 'auto'});
	});
	
	
	// $("#brand-controls .nextlink").click(function(e) {
	// 	showNewSlide(silkeborgFrontpageSlides[1])
	// 	e.preventDefault();
	// });
	// 
	// $("#brand-controls .prevlink").click(function(e) {
	// 	showNewSlide(silkeborgFrontpageSlides[0]);
	// 	e.preventDefault();
	// });
	
	$("#lifestream").scrollable({
		'prev': '#stream-controls .prevlink',
		'next': '#stream-controls .nextlink',
		'speed': SK_CONFIG.scrollableSpeed
	});
	
	initOverlay();
	
	startSlideShow(silkeborgFrontpageSlides);
	
	
});
