	/*
	 * jQuery Nivo Slider v2.4
	 * http://nivo.dev7studios.com
	 *
	 * Copyright 2011, Gilbert Pellegrom
	 * Free to use and abuse under the MIT license.
	 * http://www.opensource.org/licenses/mit-license.php
	 * 
	 * May 2010 - Pick random effect from specified set of effects by toronegro
	 * May 2010 - controlNavThumbsFromRel option added by nerd-sh
	 * May 2010 - Do not start nivoRun timer if there is only 1 slide by msielski
	 * April 2010 - controlNavThumbs option added by Jamie Thompson (http://jamiethompson.co.uk)
	 * March 2010 - manualAdvance option added by HelloPablo (http://hellopablo.co.uk)
	 */
	
	(function($) {
	
	    var NivoSlider = function(element, options){
			//Defaults are below
			var settings = $.extend({}, $.fn.nivoSlider.defaults, options);
	
	        //Useful variables. Play carefully.
	        var vars = {
	            currentSlide: 0,
	            currentImage: '',
	            totalSlides: 0,
	            randAnim: '',
	            running: false,
	            paused: false,
	            stop: false
	        };
	    
	        //Get this slider
	        var slider = $(element);
	        slider.data('nivo:vars', vars);
	        slider.css('position','relative');
	        slider.addClass('nivoSlider');
	        
	        //Find our slider children
	        var kids = slider.children();
	        kids.each(function() {
	            var child = $(this);
	            var link = '';
	            if(!child.is('img')){
	                if(child.is('a')){
	                    child.addClass('nivo-imageLink');
	                    link = child;
	                }
	                child = child.find('img:first');
	            }
	            //Get img width & height
	            var childWidth = child.width();
	            if(childWidth == 0) childWidth = child.attr('width');
	            var childHeight = child.height();
	            if(childHeight == 0) childHeight = child.attr('height');
	            //Resize the slider
	            if(childWidth > slider.width()){
	                slider.width(childWidth);
	            }
	            if(childHeight > slider.height()){
	                slider.height(childHeight);
	            }
	            if(link != ''){
	                link.css('display','none');
	            }
	            child.css('display','none');
	            vars.totalSlides++;
	        });
	        
	        //Set startSlide
	        if(settings.startSlide > 0){
	            if(settings.startSlide >= vars.totalSlides) settings.startSlide = vars.totalSlides - 1;
	            vars.currentSlide = settings.startSlide;
	        }
	        
	        //Get initial image
	        if($(kids[vars.currentSlide]).is('img')){
	            vars.currentImage = $(kids[vars.currentSlide]);
	        } else {
	            vars.currentImage = $(kids[vars.currentSlide]).find('img:first');
	        }
	        
	        //Show initial link
	        if($(kids[vars.currentSlide]).is('a')){
	            $(kids[vars.currentSlide]).css('display','block');
	        }
	        $('#featured ul li:eq(0)').find('div').css('display','block');
	        //Set first background
	        slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
	        
	        //Add initial slices
	        for(var i = 0; i < settings.slices; i++){
	            var sliceWidth = Math.round(slider.width()/settings.slices);
	            if(i == settings.slices-1){
	                slider.append(
	                    $('<div class="nivo-slice"></div>').css({ left:(sliceWidth*i)+'px', width:(slider.width()-(sliceWidth*i))+'px' })
	                );
	            } else {
	                slider.append(
	                    $('<div class="nivo-slice"></div>').css({ left:(sliceWidth*i)+'px', width:sliceWidth+'px' })
	                );
	            }
	        }
	        
	        //Create caption
	        slider.append(
	            $('<div class="nivo-caption"><p></p></div>').css({ display:'none', opacity:settings.captionOpacity })
	        );			
			
	        //Process initial  caption
	        if(vars.currentImage.attr('title') != ''){
				$('.nivo-caption p', slider).html(vars.currentImage.attr('title'));					
				$('.nivo-caption', slider).fadeIn(settings.animSpeed);
			}
	        
	        //In the words of Super Mario "let's a go!"
	        var timer = 0;
	        if(!settings.manualAdvance && kids.length > 1){
	            timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime);
	        }
	
	        //Add Direction nav
	        if(settings.directionNav){
				slider.append('<div class="nivo-directionNav"><a class="nivo-prevNav">&laquo;</a><span class="nivo-Status"> Training 1 van '+vars.totalSlides+' </span><a class="nivo-nextNav">&raquo;</a></div>');
	            
	            //Hide Direction nav
	            if(settings.directionNavHide){
	                $('.nivo-directionNav', slider).hide();
	                slider.hover(function(){
	                    $('.nivo-directionNav', slider).show();
	                }, function(){
	                    $('.nivo-directionNav', slider).hide();
	                });
	            }
	            
	            $('a.nivo-prevNav', slider).live('click', function(){
	                if(vars.running) return false;
	                clearInterval(timer);
	                timer = '';
	                vars.currentSlide-=2;
	                nivoRun(slider, kids, settings, 'prev');
	            });
	            
	            $('a.nivo-nextNav', slider).live('click', function(){
	                if(vars.running) return false;
	                clearInterval(timer);
	                timer = '';
	                nivoRun(slider, kids, settings, 'next');
	            });
	        }
	        
	        //Add Control nav
	        if(settings.controlNav){
	            var nivoWrapper = $('<div class="nivo-controlNav"></div>');
				var nivoControl = $('<ul></ul>');
				nivoWrapper.append(nivoControl);
				slider.parent().parent().append(nivoWrapper);
				for(var i = 0; i < kids.length; i++){
					var pre = vars.currentImage;
					vars.currentImage = $(kids[i]);
					if(settings.controlNavThumbs){
						var child = kids.eq(i);
						if(!child.is('img')){
							child = child.find('img:first');
						}
                        if (settings.controlNavThumbsFromRel) {
                            nivoControl.append('<a class="nivo-control" rel="'+ i +'"><img src="'+ child.attr('rel') + '" alt="" /></a>');
                        } else {
                            nivoControl.append('<a class="nivo-control" rel="'+ i +'"><img src="'+ child.attr('src').replace(settings.controlNavThumbsSearch, settings.controlNavThumbsReplace) +'" alt="" /></a>');
                        }
					} else {
						nivoControl.append('<li><a class="nivo-control" rel="'+ i +'"><span>'+ vars.currentImage.find('h1.hidden').text() +'</span></a><span class="excerpt">'+ vars.currentImage.find('p').text() +' <a href="'+ vars.currentImage.find('a').attr('href') +'">Lees verder</a></span></li>');
					}
					vars.currentImage = pre;
	                
	            }
	            //Set initial active link
	            $('.nivo-controlNav a.nivo-control:eq('+ vars.currentSlide +')').addClass('active');
				$('.nivo-controlNav ul li:eq('+ vars.currentSlide +')').addClass('first').addClass('active2');
				
	            $('.nivo-controlNav a').live('click', function(){
					if(vars.running) return false;
					if($(this).hasClass('active')) return false;
					clearInterval(timer);
					timer = '';
					slider.css('background','url('+ vars.currentImage.attr('src') +') no-repeat');
					vars.currentSlide = $(this).attr('rel') - 1;
					if (jQuery.browser.msie) {
						jQuery('#featured').css('left', '20px');
						jQuery('.jspContainer').css('left','20px');
					};
		
					nivoRun(slider, kids, settings, 'control');
				});
	        }
	        
	        //Keyboard Navigation
	        if(settings.keyboardNav){
				$(window).keypress(function(event){
					//Left
					if(event.keyCode == '37'){
						if(vars.running) return false;
						clearInterval(timer);
						timer = '';
						vars.currentSlide-=2;
						nivoRun(slider, kids, settings, 'prev');
					}
					//Right
					if(event.keyCode == '39'){
						if(vars.running) return false;
						clearInterval(timer);
						timer = '';
						nivoRun(slider, kids, settings, 'next');
					}
				});
			}
	        
	        //For pauseOnHover setting
	        if(settings.pauseOnHover){
	            slider.hover(function(){
	                vars.paused = true;
	                clearInterval(timer);
	                timer = '';
	            }, function(){
	                vars.paused = false;
	                //Restart the timer
	                if(timer == '' && !settings.manualAdvance){
	                    timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime);
	                }
	            });
	        }
	        
	        //Event when Animation finishes
	        slider.bind('nivo:animFinished', function(){
	            vars.running = false; 
	            //Hide child links
	            $(kids).each(function(){
	                if($(this).is('a')){
	                    $(this).css('display','none');
	                }
	            });
	            //Show current link
	            if($(kids[vars.currentSlide]).is('a')){
	                $(kids[vars.currentSlide]).css('display','block');
	            }
	            //Restart the timer
	            if(timer == '' && !vars.paused && !settings.manualAdvance){
	                timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime);
	            }
	            //Trigger the afterChange callback
	            settings.afterChange.call(this);
	        });
	        
	        // Reset slice width before animations run
	        var resetSliceWidth = function(slider, settings){
	            var slices = $('.nivo-slice', slider);
	            var i = 0;
	            slices.each(function(){
	                var slice = $(this);
	                var sliceWidth = Math.round(slider.width()/settings.slices);
	                if(i == settings.slices-1){
	                    slice.css('width', (slider.width()-(sliceWidth*i)) + 'px');
	                } else {
	                    slice.css('width', sliceWidth + 'px');
	                }
	                i++;
	            });
	        }
	
	        // Private run method
			var nivoRun = function(slider, kids, settings, nudge){
				//Get our vars
				var vars = slider.data('nivo:vars');
	            
	            //Trigger the lastSlide callback
	            if(vars && (vars.currentSlide == vars.totalSlides - 1)){ 
					settings.lastSlide.call(this);
				}
				
	            // Stop
				if((!vars || vars.stop) && !nudge) return false;
				
				//Trigger the beforeChange callback
				settings.beforeChange.call(this);
						
				//Set current background before change
				if(!nudge){
					slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
				} else {
					if(nudge == 'prev'){
						slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
					}
					if(nudge == 'next'){
						slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
					}
				}
				vars.currentSlide++;
				
				var slideCurent = vars.currentSlide + 1;
				if(slideCurent > vars.totalSlides) slideCurent -= vars.totalSlides;
				if (slideCurent==0) slideCurent = vars.totalSlides;
				jQuery('.nivo-Status').remove('');
				jQuery('.nivo-prevNav').after('<span class="nivo-Status"> Training '+slideCurent+' van '+vars.totalSlides+' </span>');
	            
				
	            //Trigger the slideshowEnd callback
				if(vars.currentSlide == vars.totalSlides){ 
					vars.currentSlide = 0;
					settings.slideshowEnd.call(this);
				}
				if(vars.currentSlide < 0) vars.currentSlide = (vars.totalSlides - 1);
				//Set vars.currentImage
				if($(kids[vars.currentSlide]).is('img')){
					vars.currentImage = $(kids[vars.currentSlide]);
				} else {
					vars.currentImage = $(kids[vars.currentSlide]).find('img:first');
				}
				jQuery('.movie').css('display','none');
				//Set acitve links
				if(settings.controlNav){
					$('.nivo-controlNav ul li.active2').stop().animate({height: 42}, 500);
					//$('.nivo-controlNav ul li.active').css('height', '42px');
					$('.nivo-controlNav ul li.active2').removeClass('active2'); 
					$('.nivo-controlNav a').removeClass('active');
					//$('.nivo-controlNav a.nivo-control:eq('+ vars.currentSlide +')').addClass('active');
					$('.nivo-controlNav ul li:eq('+ vars.currentSlide +')').addClass('active2');
					$('.nivo-controlNav ul li.active2').stop().animate({height: 132}, 480);
					$('#featured ul li:eq('+ vars.currentSlide +')').find('div').css('display','block');
					
				}
				
				//Process caption
				if(vars.currentImage.attr('title') != ''){
	                var title = vars.currentImage.attr('title');
	                if(title.substr(0,1) == '#') title = $(title).html();	
	                    
					if($('.nivo-caption', slider).css('display') == 'block'){
						$('.nivo-caption p', slider).fadeOut(settings.animSpeed, function(){
							$(this).html(title);
							$(this).fadeIn(settings.animSpeed);
						});
					} else {
						$('.nivo-caption p', slider).html(title);
					}					
					$('.nivo-caption', slider).fadeIn(settings.animSpeed);
				} else {
					$('.nivo-caption', slider).fadeOut(settings.animSpeed);
				}
				
				//Set new slice backgrounds
				var  i = 0;
				$('.nivo-slice', slider).each(function(){
					var sliceWidth = Math.round(slider.width()/settings.slices);
					$(this).css({ height:'0px', opacity:'0', 
						background: 'url("'+ vars.currentImage.attr('src') +'") no-repeat -'+ ((sliceWidth + (i * sliceWidth)) - sliceWidth) +'px 0%' });
					i++;
				});
				
				if(settings.effect == 'random'){
					var anims = new Array('sliceDownRight','sliceDownLeft','sliceUpRight','sliceUpLeft','sliceUpDown','sliceUpDownLeft','fold','fade','slideInRight','slideInLeft');
					vars.randAnim = anims[Math.floor(Math.random()*(anims.length + 1))];
					if(vars.randAnim == undefined) vars.randAnim = 'fade';
				}
	            
	            //Run random effect from specified set (eg: effect:'fold,fade')
	            if(settings.effect.indexOf(',') != -1){
	                var anims = settings.effect.split(',');
	                vars.randAnim = anims[Math.floor(Math.random()*(anims.length))];
					if(vars.randAnim == undefined) vars.randAnim = 'fade';
	            }
			
				//Run effects
				vars.running = true;
				if(settings.effect == 'sliceDown' || settings.effect == 'sliceDownRight' || vars.randAnim == 'sliceDownRight' ||
					settings.effect == 'sliceDownLeft' || vars.randAnim == 'sliceDownLeft'){
					var timeBuff = 0;
					var i = 0;
	                resetSliceWidth(slider, settings);
					var slices = $('.nivo-slice', slider);
					if(settings.effect == 'sliceDownLeft' || vars.randAnim == 'sliceDownLeft') slices = $('.nivo-slice', slider)._reverse();
					slices.each(function(){
						var slice = $(this);
						slice.css({ 'top': '0px' });
						if(i == settings.slices-1){
							setTimeout(function(){
								slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
							}, (100 + timeBuff));
						} else {
							setTimeout(function(){
								slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed);
							}, (100 + timeBuff));
						}
						timeBuff += 50;
						i++;
					});
				} 
				else if(settings.effect == 'sliceUp' || settings.effect == 'sliceUpRight' || vars.randAnim == 'sliceUpRight' ||
						settings.effect == 'sliceUpLeft' || vars.randAnim == 'sliceUpLeft'){
					var timeBuff = 0;
					var i = 0;
	                resetSliceWidth(slider, settings);
					var slices = $('.nivo-slice', slider);
					if(settings.effect == 'sliceUpLeft' || vars.randAnim == 'sliceUpLeft') slices = $('.nivo-slice', slider)._reverse();
					slices.each(function(){
						var slice = $(this);
						slice.css({ 'bottom': '0px' });
						if(i == settings.slices-1){
							setTimeout(function(){
								slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
							}, (100 + timeBuff));
						} else {
							setTimeout(function(){
								slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed);
							}, (100 + timeBuff));
						}
						timeBuff += 50;
						i++;
					});
				} 
				else if(settings.effect == 'sliceUpDown' || settings.effect == 'sliceUpDownRight' || vars.randAnim == 'sliceUpDown' || 
						settings.effect == 'sliceUpDownLeft' || vars.randAnim == 'sliceUpDownLeft'){
					var timeBuff = 0;
					var i = 0;
					var v = 0;
	                resetSliceWidth(slider, settings);
					var slices = $('.nivo-slice', slider);
					if(settings.effect == 'sliceUpDownLeft' || vars.randAnim == 'sliceUpDownLeft') slices = $('.nivo-slice', slider)._reverse();
					slices.each(function(){
						var slice = $(this);
						if(i == 0){
							slice.css('top','0px');
							i++;
						} else {
							slice.css('bottom','0px');
							i = 0;
						}
						
						if(v == settings.slices-1){
							setTimeout(function(){
								slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
							}, (100 + timeBuff));
						} else {
							setTimeout(function(){
								slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed);
							}, (100 + timeBuff));
						}
						timeBuff += 50;
						v++;
					});
				} 
				else if(settings.effect == 'fold' || vars.randAnim == 'fold'){
					var timeBuff = 0;
					var i = 0;
	                resetSliceWidth(slider, settings);
					$('.nivo-slice', slider).each(function(){
						var slice = $(this);
						var origWidth = slice.width();
						slice.css({ top:'0px', height:'100%', width:'0px' });
						if(i == settings.slices-1){
							setTimeout(function(){
								slice.animate({ width:origWidth, opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
							}, (100 + timeBuff));
						} else {
							setTimeout(function(){
								slice.animate({ width:origWidth, opacity:'1.0' }, settings.animSpeed);
							}, (100 + timeBuff));
						}
						timeBuff += 50;
						i++;
					});
				}  
				else if(settings.effect == 'fade' || vars.randAnim == 'fade'){
					var firstSlice = $('.nivo-slice:first', slider);
	                firstSlice.css({
	                    'height': '100%',
	                    'width': slider.width() + 'px'
	                });
	    
					firstSlice.animate({ opacity:'1.0' }, (settings.animSpeed*2), '', function(){ slider.trigger('nivo:animFinished'); });
				}    
	            else if(settings.effect == 'slideInRight' || vars.randAnim == 'slideInRight'){
	                var firstSlice = $('.nivo-slice:first', slider);
	                firstSlice.css({
	                    'height': '100%',
	                    'width': '0px',
	                    'opacity': '1'
	                });
	
	                firstSlice.animate({ width: slider.width() + 'px' }, (settings.animSpeed*2), '', function(){ slider.trigger('nivo:animFinished'); });
	            }
	            else if(settings.effect == 'slideInLeft' || vars.randAnim == 'slideInLeft'){
	                var firstSlice = $('.nivo-slice:first', slider);
	                firstSlice.css({
	                    'height': '100%',
	                    'width': '0px',
	                    'opacity': '1',
	                    'left': '',
	                    'right': '0px'
	                });
	
	                firstSlice.animate({ width: slider.width() + 'px' }, (settings.animSpeed*2), '', function(){ 
	                    // Reset positioning
	                    firstSlice.css({
	                        'left': '0px',
	                        'right': ''
	                    });
	                    slider.trigger('nivo:animFinished'); 
	                });
	            }
			}
	        
	        // For debugging
	        var trace = function(msg){
	            if (this.console && typeof console.log != "undefined")
	                console.log(msg);
	        }
	        
	        // Start / Stop
	        this.stop = function(){
	            if(!$(element).data('nivo:vars').stop){
	                $(element).data('nivo:vars').stop = true;
	                trace('Stop Slider');
	            }
	        }
	        
	        this.start = function(){
	            if($(element).data('nivo:vars').stop){
	                $(element).data('nivo:vars').stop = false;
	                trace('Start Slider');
	            }
	        }
	        
	        //Trigger the afterLoad callback
	        settings.afterLoad.call(this);
	    };
	        
	    $.fn.nivoSlider = function(options) {
	    
	        return this.each(function(){
	            var element = $(this);
	            // Return early if this element already has a plugin instance
	            if (element.data('nivoslider')) return;
	            // Pass options to plugin constructor
	            var nivoslider = new NivoSlider(this, options);
	            // Store plugin object in this element's data
	            element.data('nivoslider', nivoslider);
	        });
	
		};
		
		//Default settings
		$.fn.nivoSlider.defaults = {
			effect: 'random',
			slices: 15,
			animSpeed: 500,
			pauseTime: 3000,
			startSlide: 0,
			directionNav: true,
			directionNavHide: false,
			controlNav: true,
			controlNavThumbs: false,
	        controlNavThumbsFromRel: false,
			controlNavThumbsSearch: '.jpg',
			controlNavThumbsReplace: '_thumb.jpg',
			keyboardNav: true,
			pauseOnHover: true,
			manualAdvance: false,
			captionOpacity: 0.8,
			beforeChange: function(){},
			afterChange: function(){},
			slideshowEnd: function(){},
	        lastSlide: function(){},
	        afterLoad: function(){}
		};
		
		$.fn._reverse = [].reverse;
		
	})(jQuery);
