/* Pager for FELD */
;(function($) {

	function mod (a, b) {
		return ((a%b)+b)%b;
	}

	var ver = '0.1';

	$.fn.teaserSlide = function(settings) {

		settings = jQuery.extend($.fn.teaserSlide.defaults, settings);

		return this.each( function(){

			var container = $('ul', this);
			var slides = $('ul li', this);
			//var overlay = $('.overlay', this);
			var numberOfSlides = slides.length;
			var currentSlide = 0;

			/* Let the container grow */
			$(container).css( { width: (numberOfSlides * 100) + '%' } );
			$(slides).css( { width: (100 / numberOfSlides) + '%' } );


			/* Construct a pager */
			if(settings.addPager == true){
							
				var pager = $('<ul></ul>').appendTo(this);
    	            	
				$(slides).each( function(z){
					var pagerItem = $('<li>'+z+'</li>').appendTo(pager);
					
					if( $('iframe', this).size() > 0 ) {  // is movie
						$(pagerItem).addClass(settings.pagerMovieClass);
					}
				} );
				
				
				$(pager).children().each( function(z) {
						$(this).bind("click", function(){
							disableAuto();
		 					jumpTo(z);
		 				});
				});	
			}
			
			updatePager();
		

			/* Runtime functions */
			function advanceOne() {
				advance(1);
			}
			
			
			function positionForNumber(theNumber) {
				var scrollWidth = $(container).width() / numberOfSlides;
				return -scrollWidth * theNumber;
			}

			function jumpTo(theNumber) {
				var newPosition = positionForNumber(theNumber);

				currentSlide = theNumber;
				
				$(container).stop().animate(
					{ left: newPosition }, 
					settings.duration, function() {});
					
				if(pager){	updatePager() };			
			}

 			function advance(theStep) {
 				nextSlide = mod(currentSlide+theStep, numberOfSlides);

 				jumpTo(nextSlide);
 			}

 			function disableAuto(theForce) {
	
				//disableOverlay();
 				if(settings.autoStopOnAction == true || theForce) {
 					if(interval) clearInterval(interval);
 				}
 			}

			function updatePager() {	
				$(pager).children().each( function(z) {
					if(z == currentSlide){
						$(this).addClass(settings.pagerActiveClass);
					} else {
						$(this).removeClass(settings.pagerActiveClass);
					}
				});
			}
			
			//function disableOverlay() {
			//	$(overlay).fadeOut();
			//}
			
			function reposition() {
				var newPosition = positionForNumber(currentSlide);
				$(container).css({left: newPosition});
			}
			
			function sizeContent() {
				var scaledHeight = ( ($(container).width() / numberOfSlides) / settings.fullWidth) * settings.fullHeight;
				$('iframe', slides).height(scaledHeight);
			}


 			/* Auto action */
 			if(settings.auto == true) {
 				var interval = setInterval(advanceOne, settings.autoInterval );
 			}

 			/* Add classes */
 			$(container).addClass(settings.containerClass);

			if( $(pager).children().length > 1) {
				$(pager).addClass(settings.pagerClass);		
			} else {
	 			$(pager).addClass(settings.pagerWithOnlyOneElementClass);
			}



 			/* Bind keys */
 			if(settings.useArrowKeys == true){
 				$(document).keydown(function(e){
 					if (e.keyCode == 39) { 
 						disableAuto();
 						advance(1);
 						return false;
 					}

 					if(e.keyCode == 37) { 
 						disableAuto();
 						advance(-1);
 						return false;
 					}
 				});
 			}


 			/* Bind actions */
 			$(slides).each(function(z) {			
 				$(this).bind("click", function(){
					disableAuto();
 					advance(1);
 				});
 			});


			$(window).resize(function() {
				reposition();
			  	sizeContent();
			});
			
			
			sizeContent();
			
 		});
 	}


 	$.fn.teaserSlide.ver = function() { return ver; };


 	$.fn.teaserSlide.defaults = {
		addPager: 			true, 
 		pagerClass:    		'pager',
 		pagerWithOnlyOneElementClass:    		'pagerSingle',
 		pagerActiveClass: 	'active',
 		pagerMovieClass: 	'movie',
 		containerClass: 	'container',
 		duration: 			800,  // duration of transition
 		useArrowKeys: 		true, // bind to the arrow keys
 		auto: 				true, // auto change slides
 		autoInterval: 		10000, // change slide every x ms
 		autoStopOnAction: 	true, // Stops the auto action if user intervenes 
		fullWidth:         1000, // manually calculate height for iframes n stuff 
		fullHeight:         550 // manually calculate height for iframes n stuff 
 	};
 
})(jQuery);




// Invoke it hard
$('.teaser').teaserSlide();



// Resizing videos in news entries 
$(window).resize(function() {
	scaleStuff();
});

scaleStuff();

function scaleStuff() {
	$('article.news div.media iframe').each( function() {
		var myParentWidth = $(this).parent().width();
		
		var myOriginalWidth = $(this).attr('width');
		var myOriginalHeight = $(this).attr('height');
		
		var myNewHeight = (myParentWidth / myOriginalWidth) * myOriginalHeight;
		
		$(this).width( myParentWidth );
		$(this).height( myNewHeight );
	});
}





// Hijack links on the teaser :()
$('.teaser ul li .overlay').each(
	function() {
		
		var myUrl =  $('a', this).first().attr('href');
		
		if(myUrl) {
			$(this).bind("click", function(){
				window.location.href = myUrl;
				return false;
			});
		}
		
		
	}
);






