/**
 * @author msandow
 */
$(function(){

	$.fn.dotSlideshow=function(options){
	
		$(this).each(function(){	
		
			var slideshow = new Object();
			slideshow.called = $(this);
			
			slideshow.defaults = {
				delay: 3000,
				target: '.slide',
				showDots:true,
				top: 0,
				left: 0,
				color:'white'
			};
			   
			$.extend(slideshow.defaults, options);
					
			slideshow.overlay = $('<div></div>').css( {
				width : (slideshow.called.find(slideshow.defaults.target).length * 31)+'px',
				position : 'absolute',
				height : '22px',
				top: slideshow.defaults.top+'px',
				left: slideshow.defaults.left+'px',
				backgroundColor : 'transparent'
			});
		
			slideshow.slides = new Array();
			slideshow.controls = new Array();
			slideshow.last = 0;
		
			slideshow.called.find(slideshow.defaults.target).each(function() {
				slideshow.slides.push($(this));
			});
			
			slideshow.called.find(slideshow.defaults.target).not(':first').hide();
			
			switch(slideshow.defaults.color){
			case 'white':
				slideshow.btnSrc='img/slides/slide_controls_dots_white.png';
				break
			case 'black':
				slideshow.btnSrc='img/slides/slide_controls_dots_black.png';
				break
			}
			
			for (slideshow.index = slideshow.called.find(slideshow.defaults.target).length; slideshow.index > 0; slideshow.index--) {
				slideshow.control = $('<div></div>')
						.css({
							float : 'left',
							width : '21px',
							height : '22px',
							background : 'transparent url('+slideshow.btnSrc+') 0px -22px no-repeat',
							marginRight : '10px',
							cursor : 'pointer'
						}).bind('click auto',function(e) {
									if (e.type == 'click') {
										clearInterval(slideshow.timer);
									}
									slideshow.which = $(slideshow.controls).index($(this).get(0));
									if (slideshow.last != slideshow.which) {
										slideshow.last = slideshow.which;
										$(slideshow.slides[slideshow.which]).hide()
												.insertBefore(slideshow.overlay)
												.fadeIn(500, function() {
													$(this).css('style', '');
												});
										$(slideshow.controls).css('background-position', '0px -22px');
										$(this).css('background-position', '0px 0px');
									}
								});
				
				if(slideshow.defaults.showDots == false){
					slideshow.control.css('display','none');
				}
				
				slideshow.controls.push(slideshow.control.get(0));
				slideshow.overlay.append(slideshow.control);
			}
		
			slideshow.called.append(slideshow.overlay);
		
			$(slideshow.controls[0]).css('background-position', '0px 0px');
		
			slideshow.auto = function() {
				if (slideshow.last < (slideshow.called.find(slideshow.defaults.target).length - 1)) {
					$(slideshow.controls[slideshow.last + 1]).trigger('auto');
				} else {
					$(slideshow.controls[0]).trigger('auto');
				}
			};
		
			slideshow.timer = setInterval(function() {
				slideshow.auto();
			}, slideshow.defaults.delay);
		
		});
		
	};

});