/* 
	jQuery Carrousel
	It can handle more than one instance on the same html
	@author: Claurio Romano Cherñac
	@date: October 2010
*/


jQuery.fn.carrousel = function(settings) {

	 settings = jQuery.extend({
		panel: 'div.panel',
		panelContainer: 'div.panel-container',
		nextbutton: '.next',
		prevbutton: '.prev',
		move: 1,
		mode: 'fade'
	}, settings);

	return this.each(function(){
		
		var container        = jQuery(this);
		var panelContainer   = jQuery(settings.panelContainer, container);
		var panelCount       = jQuery(settings.panel, container).size();
		var panelWidth       = jQuery(settings.panel, container).width();
		var carrouselWidth   = panelWidth * panelCount;
		var cPanel           = 1;

		panelContainer.css("width",carrouselWidth);

		container.each(function(i) {

			jQuery('a.next', container).click(function(e){
				e.preventDefault();
				if (cPanel >= panelCount-(settings.move-1)) {
					var cnt = 0;
					cPanel = 1;
				} else {
					var cnt = -(panelWidth * cPanel);
					cPanel += 1;
				};
				if(settings.mode == 'fade'){
					panelContainer.fadeOut('fast', function(){
						panelContainer.css({left: cnt+'px'});
						panelContainer.fadeIn('fast');
					});
				}else{
					panelContainer.animate({left: cnt+'px'});
				}
			});

			jQuery('a.prev', container).click(function(e){
				e.preventDefault();
				if (cPanel == 1) {
					var cnt = - (panelWidth*((panelCount-(settings.move-1)) - 1));
					cPanel = panelCount;
				} else if (cPanel == panelCount){
					cPanel -= settings.move;
					var cnt = - (panelWidth*(cPanel - 1));
				} else {
					cPanel -= 1;
					var cnt = - (panelWidth*(cPanel - 1));
				};	
				if(settings.mode == 'fade'){
					panelContainer.fadeOut('fast', function(){
						panelContainer.css({left: cnt+'px'});
						panelContainer.fadeIn('fast');
					});
				}else{
					panelContainer.animate({left: cnt+'px'});
				}
			});

		}); //container.each
	}); //this.each
	
};
