
(function($) { 
$.fn.jCarouselLite = function(o) {
    o = $.extend({
		container:null,
		liClass:null,
        btnPrev: null,
        btnNext: null,

        speed: 450,
        easing: null,

        orientation: 'horizontal',
        visible: 1,
        start: 0,
        scroll: 1,

        beforeStart: null,
        afterEnd: null
    }, o || {});

    return this.each(function() { 

		var idSelector=$(o.container).attr('class');
		
        var running = false, 
			animCss=(o.orientation=='horizontal'?"left":"top"), 
			sizeCss=(o.orientation=='horizontal'?"width":"height");
		
        var ulContainer = $(this), 
			ul = $("#selectorDestino"), 
			tLi = $("#selectorDestino .paso"), 
			tl = tLi.size(), v = o.visible;

        var li = $("#selectorDestino .paso"), itemLength = li.size(), curr = o.start;
		var alturaM=0;
		
        li.css({float:o.orientation=='horizontal' ? 'left':'none'});
        
        ul.css({margin:'0',padding:'0',position:'relative','list-style-type':'none','z-index':'1',overflow: 'hidden'});
        ulContainer.css({overflow:'hidden',position:'relative','z-index':'2',left:'0px'});
		
		$(li[0]).css({margin:'0'});
				
		//si 3 niveles : continentes,paises,destinos
		//si 2 niveles : paises,destinos
		//si 1 nivel   : destinos
		var nivelesSelectores=$('#selectorDestino >li').length;
		//destinos según pais
		//paises según continentes
		//recorrer la lista de li y anotar sus alturas
		
		var desplaAcum=0;
		var alturaSelectorContinente = $(li[0]).height();
		var alturaSelectorDestinos   = $('>ul >li',li[nivelesSelectores-1]).height();// suponemos tamaño invariable,264px +10px
		var alturaSelectorPaises     = new Array();
		var desplaSelectorPaises     = new Array();	
		
		$('>ul >li',li[1]).each(function(n){
			
			var alturaPadre=$(this).height();
			
			//calculo de los tamaños de los li
			if (n == 0) desplaSelectorPaises.push(0);
			else desplaSelectorPaises.push(desplaSelectorPaises[n-1]+alturaSelectorPaises[n-1]+10);
			alturaSelectorPaises.push($(this).height());
					
			//eventos para los distintos selectores de destino
			$('.idPaso',$(this)).append($("<span class='volver'>Atrás</span>")).click(function() { 
				$(o.container).css('height',alturaSelectorContinente+10+'px');
				$.cookie('selector','');
				go(curr-o.scroll);
 			});
 	
		 	if(nivelesSelectores>2){
				$('a',$(this)).each(function(j){
					var pos=j +desplaAcum;
					if($('.volver',$('.idPaso',$('>ul >li',li[2])[pos])).html()==null)
						$('.idPaso',$('>ul >li',li[2])[pos]).append($("<span class='volver'>Atrás</span>")).click(function() { 
							$(o.container).css('height',alturaPadre+10+'px');
							$.cookie('selector','');
							//console.log('borra,'+$.cookie('selector'))
							go(curr-o.scroll);
				 		});
				 			
					 $(this).bind('click',function(event){
					 	event.preventDefault();
						$('> ul',li[2]).css({'margin-top':-(alturaSelectorDestinos*pos+10*pos)+'px',float:'left'});
						$(o.container).css('height',alturaSelectorDestinos+10+'px');
						$.cookie('selector',idSelector+';'+(-(alturaSelectorDestinos*pos+10*pos)+'px')+';'+alturaM);
						go(curr+o.scroll);
					 });
				});
		 	}
			desplaAcum+=$('a',$(this)).length;
		});

		//panel continentes
	 	if(nivelesSelectores>=2)
			$("li a",li[0]).each(function(n){ 
			   $(this).bind('click',function(event){ 
					event.preventDefault();
					alturaM=-(desplaSelectorPaises[n])
					$('> ul',li[1]).css({'margin-top':-(desplaSelectorPaises[n])+'px',float:'left'});
					$(o.container).css('height',alturaSelectorPaises[n]+10+'px');
					go(curr+o.scroll);
					if(nivelesSelectores==2)
						$.cookie('selector',idSelector+';'+$('> ul',li[1]).css('margin-top'));	
				});
			}); 
		
        var liSize = o.orientation=='horizontal' ? li.width():li.height(); 
        var ulSize = liSize * itemLength;       
        var divSize = liSize * o.visible;  
		
		//ajuste tamaños contenedor
        ulContainer.css({'width':divSize+'px','visibility':'visible'});
        ul.css(sizeCss, ulSize+"px").css(animCss, -(curr*liSize));
		$(o.container).css({height:li.height()+10+'px',position:'relative'});
		
		//persistencia del ultimo destino seleccionado
		//console.log($.cookie('selector'))
		if($.cookie('selector')==null){
			$.cookie('selector',idSelector,{path:'/',expires:0});$.cookie('selector','');
		}else{
			var data=$.cookie('selector').split(';');
			if(data.length>=2 && data.length<=3){
				if(data[0]!=idSelector){
					$.cookie('selector',idSelector,{path:'/',expires:0});
				}
				else{
					if(data[1]!=null){
						//personajes con malas intenciones pueden perfectamente manipular la cookie....
						$('> ul',li[nivelesSelectores-2]).css({float:'left'})
						$('> ul',li[nivelesSelectores-1]).css({'margin-top':data[1],float:'left'});
						if(nivelesSelectores==3)
							$('> ul',li[1]).css({'margin-top':data[2]+'px',float:'left'});
						$(o.container).css('height',alturaSelectorDestinos+10+'px');
						go(nivelesSelectores-1);	
					}
				}
			}
			else $.cookie('selector',idSelector,{path:'/',expires:0});
			//curr=nivelesSelectores-1;
			//ul.css({left: -(1*liSize)})
		}

        if(o.btnPrev)
            $(o.btnPrev).click(function() {
                return go(curr-o.scroll);
            });

        if(o.btnNext)
            $(o.btnNext).click(function() {
                return go(curr+o.scroll);
            });

        if(o.btnGo)
            $.each(o.btnGo, function(i, val) {
                $(val).click(function() {
                    return go(o.circular ? o.visible+i : i);
                });
            });

        function vis() {
            return li.slice(curr).slice(0,v);
        };

        function go(to) {
            if(!running) {
				
				if(to<0 || to>itemLength-v) return;
               	else curr = to;

                running = true;

                ul.animate(
                    animCss == "left" ? { left: -(curr*liSize) } : { top: -(curr*liSize) } , o.speed, o.easing,
                    function() {
                        if(o.afterEnd)
                            o.afterEnd.call(this, vis());
                        running = false;
                    }
                );
            }
            return false;
        };
    });
};

function css(el, prop) {
    return parseInt($.css(el[0], prop)) || 0;
};

})(jQuery);


$(document).ready(function(){
	$("#selectorDestino").jCarouselLite({
		container:'#cajaSelector',
		ajuste:'10'
	});					
	$('#cajaSelector').css({width:'900px',overflow:'hidden'});
});