 /*
Nahuel Jose
*/

(function($){
	$.fn.nahuelCarrusel = function(opciones){
		//valores por defecto
		var defaults = {
			desplazar : 'li',
			desplazar_no : 1,
			velocidad : 'slow',
			easing : 'swing'
	  	};  		
		var opciones = $.extend(defaults, opciones);
		$(this).each(function(){
			//auxs
			var currMargLeft = 0;
			var isAnim = false;
			
			var contenedor = $(this);
			var hijos = contenedor.children(opciones.desplazar);
			
			//estilos iniciales
			contenedor.css({'overflow':'hidden'});
			hijos.css({'float':'left'});

			var hijos_dimensiones = new Array(2);
			hijos_dimensiones['ancho'] = hijos.outerWidth();
			hijos_dimensiones['alto'] = hijos.outerHeight();
			
			//enmarcado
			var _wrap = $('<div class="nahuelCarrusel" />');
			_wrap.css({
				height:hijos_dimensiones['alto'],
				width:hijos_dimensiones['ancho'] * (hijos.length)
			});
			contenedor.width(hijos_dimensiones['ancho'] * (opciones.desplazar_no))
			contenedor.wrapInner(_wrap);
			
			var mostrar = hijos.length<=opciones.desplazar_no?'none':'block';
			var _controles = $('<div class="nahuelCarruselControles" style="clear:both; display:'+mostrar+'"><a class="nahuelCarrusel-anterior" href="#">&laquo;</a> <a class="nahuelCarrusel-posterior" href="#">&raquo;</a></div>');
			
			contenedor.append(_controles);
			
			contenedor.delegate('.nahuelCarrusel-anterior','click',_desplazarIzquierda);
			contenedor.delegate('.nahuelCarrusel-posterior','click',_desplazarDerecha);
			
			var desplazame = contenedor.children('.nahuelCarrusel');
			
			function _desplazarDerecha(e){
				var anchoTotal = (hijos_dimensiones['ancho'] * (hijos.length));
				var anchoRestante = (opciones.desplazar_no * hijos_dimensiones['ancho']);
				_final = (Math.abs(currMargLeft) >= (anchoTotal - anchoRestante))?true:false;
				if (isAnim)
					return false;
				if(_final){
					currMargLeft = 0;
				}else{
					currMargLeft = currMargLeft - (opciones.desplazar_no*hijos_dimensiones['ancho']);
				}
				isAnim = true;
				e.preventDefault();
				desplazame.animate({
					marginLeft : currMargLeft
				},opciones.velocidad, opciones.easing, function(){isAnim = false;})
			}
			function _desplazarIzquierda(e){
				_final = currMargLeft >= 0?true:false;
				if (isAnim)
					return false;
					
				if(_final){
					var anchoTotal = (hijos_dimensiones['ancho'] * (hijos.length));
					var anchoRestante = (opciones.desplazar_no * hijos_dimensiones['ancho']);
					currMargLeft = -1*(anchoTotal - anchoRestante);
				}else{
					currMargLeft = currMargLeft + (opciones.desplazar_no*hijos_dimensiones['ancho']);
				}
				
				isAnim = true;
				e.preventDefault();
				desplazame.animate({
					marginLeft : currMargLeft
				},opciones.velocidad, opciones.easing, function(){isAnim = false;})
			}
		});		
		return false;
	};	
})(jQuery);
