/**
 * @author msandow
 */
$.fn.dotSlideshow=function(options){

	var slideshow = new Object();
	slideshow.called = $(this);
	
	slideshow.defaults = {
		delay: 3000,
		target: '.slide',
		showDots:true,
		top: 0,
		left: 0,
		color:'white',
		bgImg:false,
		dotSize:[21,22]
	};
	   
	$.extend(slideshow.defaults, options);
			
	slideshow.overlay = $('<div></div>').css( {
		width : (slideshow.called.find(slideshow.defaults.target).length * (slideshow.defaults.dotSize[0]+10))+'px',
		position : 'absolute',
		height : slideshow.defaults.dotSize[1]+'px',
		top: slideshow.defaults.top+'px',
		left: slideshow.defaults.left+'px',
		backgroundColor : 'transparent',
		overflow:'hidden'
	});

	slideshow.slides = new Array();
	slideshow.controls = new Array();
	slideshow.last = 0;

	slideshow.called.find('.slide').each(function() {
		slideshow.slides.push($(this));
	});
	
	if(!slideshow.defaults.bgImg){
		switch(slideshow.defaults.color){
		case 'white':
			slideshow.btnSrc='static/img/slides/slide_controls_dots_white.png';
			break
		case 'black':
			slideshow.btnSrc='static/img/slides/slide_controls_dots_black.png';
			break
		}
	}else{
		slideshow.btnSrc=slideshow.defaults.bgImg;
	}
	
	for (slideshow.index = slideshow.called.find(slideshow.defaults.target).length; slideshow.index > 0; slideshow.index--) {
		slideshow.control = $('<div></div>')
				.css({
					float : 'left',
					width : slideshow.defaults.dotSize[0]+'px',
					height : slideshow.defaults.dotSize[1]+'px',
					background : 'transparent url('+slideshow.btnSrc+') 0px -'+slideshow.defaults.dotSize[1]+'px 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 -'+slideshow.defaults.dotSize[1]+'px');
								$(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('.slide').length - 1)) {
			$(slideshow.controls[slideshow.last + 1]).trigger('auto');
		} else {
			$(slideshow.controls[0]).trigger('auto');
		}
	};

	slideshow.timer = setInterval(function() {
		slideshow.auto();
	}, slideshow.defaults.delay);
	
};
