 /*
Nahuel Jose
*/

(function($){
	$.fn.nahuelVCarrusel = 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 currMargTop = 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']*(hijos.length),
				width:hijos_dimensiones['ancho'] 
			});
			contenedor.height(hijos_dimensiones['height'] * (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="#">&uarr;</a> <a class="nahuelCarrusel-posterior" href="#">&darr;</a></div>');
			
			contenedor.after(_controles);
			
			_controles.delegate('.nahuelCarrusel-anterior','click',_desplazarArriba);
			_controles.delegate('.nahuelCarrusel-posterior','click',_desplazarAbajo);
			
			var desplazame = contenedor.children('.nahuelCarrusel');
			
			function _desplazarAbajo(e){
				var altoTotal = (hijos_dimensiones['alto'] * (hijos.length));
				var altoRestante = (opciones.desplazar_no * hijos_dimensiones['alto']);
				_final = (Math.abs(currMargTop) >= (altoTotal - altoRestante))?true:false;
				if (isAnim)
					return false;
				if(_final){
					currMargTop = 0;
				}else{
					currMargTop = currMargTop - (opciones.desplazar_no*hijos_dimensiones['alto']);
				}
				isAnim = true;
				e.preventDefault();
				desplazame.animate({
					marginTop : currMargTop
				},opciones.velocidad, opciones.easing, function(){isAnim = false;})
			}
			function _desplazarArriba(e){
				_final = currMargTop >= 0?true:false;
				if (isAnim)
					return false;
					
				if(_final){
					var altoTotal = (hijos_dimensiones['alto'] * (hijos.length));
					var altoRestante = (opciones.desplazar_no * hijos_dimensiones['alto']);
					currMargTop = -1*(altoTotal - altoRestante);
				}else{
					currMargTop = currMargTop + (opciones.desplazar_no*hijos_dimensiones['alto']);
				}
				
				isAnim = true;
				e.preventDefault();
				desplazame.animate({
					marginTop : currMargTop
				},opciones.velocidad, opciones.easing, function(){isAnim = false;})
			}
		});		
		return false;
	};	
})(jQuery);
