/**
 * jQuery.photoslider - 
 * Date: 2010/08/04
 *
 * @author Michaël van Oosten
 * @version 1.0
 *
 **/

(function($) {
	$.fn.photoslider = function(settings) {

		var config = {
			'addclass' : 'photoalbum_jquery',
			'html' : '<a href="#" class="nav [prev]"></a><div class="[imgwrp]">[]</div><a href="#" class="nav [next]"></a>',
			'previous' : 'previous',
			'imgwrp' : 'imgwrp',
			'next' : 'next',
			'pixelPerSec' : 500
			
		};
		if (settings) $.extend(config, settings);
		
		this.each(function() {

			// addClass and change html
			$(this)
				.addClass(config.addclass)
				.html(
					config.html
						.replace('[]', $(this).html())
						.replace('[prev]', config.previous)
						.replace('[imgwrp]', config.imgwrp)
						.replace('[next]', config.next));
				
			// reset margin-right of last <li>
			$(this).find('li:last').css('margin-right',0);
			
			// set width <ul>
			var ulWidth = 0;
			$(this).find('li').each(function() {
				ulWidth = ulWidth + $(this).width() + parseInt($(this).css('padding-left')) + parseInt($(this).css('padding-right')) + parseInt($(this).css('margin-right'));
			});
			$(this).find('ul').width(ulWidth);
			
			// a.previous:hover
			$(this).find('a.'+config.previous).hover(
				function() { 
					var currentMarginLeft = parseInt($(this).parents('.' + config.addclass + ':first').find('ul').css('margin-left'));
					var toMarginLeft = 0; 
					var distance = Math.abs(currentMarginLeft - toMarginLeft);
					var time = Math.round((distance/config.pixelPerSec)*1000);
					
					$(this).parents('.'+config.addclass+':first').find('ul').animate({'margin-left':toMarginLeft}, time);
				},
				function() {
					$(this).parents('.'+config.addclass+':first').find('ul').stop();
				}
			);
			
			// a.next:hover
			$(this).find('a.'+config.next).hover(
				function() {
					var currentMarginLeft = parseInt($(this).parents('.' + config.addclass + ':first').find('ul').css('margin-left'));
					var toMarginLeft = $(this).parents('.' + config.addclass + ':first').find('.' + config.imgwrp).width() - $(this).parents('.' + config.addclass + ':first').find('ul').width();
					var distance = Math.abs(currentMarginLeft - toMarginLeft);
					var time = Math.round((distance/config.pixelPerSec)*1000);

					$(this).parents('.'+config.addclass+':first').find('ul').animate({'margin-left':toMarginLeft}, time);
				},
				function() {
					$(this).parents('.'+config.addclass+':first').find('ul').stop();
				}
			);

		});

		return this;

	}; 
		
 })(jQuery);
