(function($){
	$.fn.slideshow = function(options) {
    
		var defaults = {
			fx:     'fade',
			speed:  300,
			timeout: 10000,
			autoplay: false
		};
  
		var options = $.extend(defaults, options);
	
		return this.each(function() {
			var randId = Math.floor(Math.random()*1000001)
    
			var $slideshow = $(this)
			var $images = $('.slideshowimages', $slideshow)
				.after('<div class="slideshownav" id="slideshownav'+randId+'container"><div id="slideshownav'+randId+'"></div></div>')
				.after('<div class="slideshowoverlay overlay">')
	
			var $nav = $('#slideshownav'+randId+'container')
				.append('<div id="slideshownext'+randId+'">&gt;</div>')
				.prepend('<div id="slideshowprevious'+randId+'">&lt;</div>')
			
			$images.cycle({ 
				fx:     options.fx, 
				speed:  options.speed, 
				timeout: options.timeout, 
				pager:  '#slideshownav'+randId,
				next: '#slideshownext'+randId,
				prev: '#slideshowprevious'+randId,
				pagerAnchorBuilder: function(idx, slide) {
					return '<a href="#">&nbsp;</a>';
				},
				before: function(currSlideElement, nextSlideElement, options, forwardFlag){
					if ( $('img', nextSlideElement).size() == 0){
						$('<img />').prependTo($(nextSlideElement))
						$('img', nextSlideElement).attr('src', $('span', nextSlideElement).attr('rel'))
						$('span', nextSlideElement).remove()
					}
				}
			});
			
			$images.cycle('pause')
	
			$slideshow.css('height', $('img', $slideshow).attr('height')+20)
			$slideshow.css('width', $('img', $slideshow).attr('width'))
			$('.slideshowimages div', $slideshow).css('height', $('img', $slideshow).attr('height')+20)
	
			$images.after('<div class="slideshowcontrol">&nbsp;</div>')
			var $control = $('.slideshowcontrol', $slideshow)
				.addClass('pause')
			$('#slideshownav'+randId+' a', $slideshow).fadeTo("fast", 0.7)
			$('.slideshowcontrol, #slideshownav'+randId+'container', $slideshow).fadeTo(0.1, 0)
			
			var navwidth = ($slideshow.parents().find('#mastermedia').size() > 0 || $slideshow.parent().hasClass('eyeL') || $slideshow.parent().hasClass("span-12") || $slideshow.parent().hasClass("narrow"))?310:0
			navwidth = ($slideshow.parent().hasClass('eyeXL'))?500:navwidth
			navwidth = (navwidth == 0)?500:navwidth		
			
			// slideshow activeren
			$('.slideshowoverlay', $slideshow).click(function(){                                          
				$images.cycle('resume');
				$('.slideshowoverlay', $slideshow).toggle();
				$('#slideshownav'+randId+'container', $slideshow).fadeTo("slow", 1)
				$control.fadeTo("slow", 0.7)
				$('#slideshownav'+randId).css('width', navwidth+'px')
				$('#slideshownav'+randId).css('height', '18px');
				$('#slideshownav'+randId+' a', $slideshow).css('width', parseInt(navwidth / $('.slideshowimages div', $slideshow).size()) - 2)
				$('#slideshowprevious'+randId).css('margin-right', '2px')
				
				//slideshow actions
				$control.click(function(){
					if ($('.pause', $slideshow).size() > 0){
						$control.removeClass('pause')
						$control.addClass('play')
						$images.cycle('pause');
					} else {
						$control.removeClass('play')
						$control.addClass('pause')
						$images.cycle('resume', true);
					}
				})
	
				$($slideshow).hover(function(){
					$('#slideshownav'+randId+'container', $slideshow).fadeTo("slow", 1)
					$control.fadeTo("slow", 0.7) 
				}, function(){
					$('.slideshowcontrol, #slideshownav'+randId+'container', $slideshow).fadeTo("fast", 0)
				})
			})

			if (options.autoplay){
				$('.slideshowoverlay', $slideshow).click()
			}
			
			if ($slideshow.parents().find('#mastermedia').size() > 0 || $slideshow.parent().hasClass('eyeL') || $slideshow.parent().hasClass("span-12") || $slideshow.parent().hasClass("narrow")){
				var widthAfter = 'width:470px !important'
			} else {
				var widthAfter = 'width:670px !important'
			}
			$slideshow.attr('style', widthAfter+";"+$slideshow.attr('style'))
			$('> div', $images).each(function(){
				$(this).attr('style', widthAfter+";"+$(this).attr('style'))
			})
		})
	}
})(jQuery)

