         
          jQuery.fn.panelSlider = function(vars){                   
                // Riporto le variabili e setto i valori di default in caso non vengano dichiarate
                var idPanelSlider=this;
                var transitionTime= (vars.transitionTime != undefined) ? vars.transitionTime : 1000; 
                var tPause= (vars.tPause != undefined) ? vars.tPause : 3000;        
                var transitionMetod=(vars.transitionMetod != undefined) ? vars.transitionMetod : 'easeOutQuart'; 
				var horizontal=(vars.horizontal != undefined) ? vars.horizontal : false;
                var loop=(vars.loop != undefined) ? vars.loop : true;
                
                    
                // Variabili iniziali
                var startPos=0;
                var posizione=0;
                var transitionDuration=0;
                             
                if(loop){
                    // Se setto il loop duplico il primo pannello alla fine
                    if(jQuery('#'+idPanelSlider[0].id + ' .panelContainer .panel').size() > 1){
                   	 	 var firstPanelContent=jQuery('#' + idPanelSlider[0].id + " .panelContainer .panel:first-Child").html();
                  		 jQuery("<div class='panel'>"+firstPanelContent+"</div>").appendTo('#' + idPanelSlider[0].id +' .panelContainer');
                    };
                };
                
                                
                // Creo gli oggetti
                var panel=jQuery('#' + idPanelSlider[0].id +' .panelContainer .panel');
                var panelContainer=jQuery('#' + idPanelSlider[0].id +' .panelContainer');
            
            
                if(horizontal){
                    // controllo se la visualizzazione è in orizzontale
                    panel.css('float','left');
             		panelContainer.css('width', panel.width()*panel.size())
                };
                     
                // funzione slide
                 function slide(){
                    var step = horizontal ? panel.width() : panel.height();
                    posizione -= step;
                                         
                    if(posizione == -(step * (panel.size()))){
                                        	
                        if(loop){
                        		// Se ho settato il loop
                                posizione= -(startPos + step);
                                horizontal ? panelContainer.css('left', startPos) : panelContainer.css('top', startPos);
                            } else{
                            	// Se non sono in loop
                                posizione = startPos;
                                transitionDuration=(transitionTime * panel.size())/2;
                            }
                                transition();
                        
                        }else{
                                transitionDuration=transitionTime;
                                transition();
                            };
      
                     };
                              
                // Funzione per la transizione 
                function transition(){  
                		if(horizontal){     
                          	panelContainer.animate({left: posizione}, {easing:transitionMetod, duration:transitionDuration});
                          }else{
                          	panelContainer.animate({top: posizione}, {easing:transitionMetod, duration:transitionDuration});                          
                          }
                          nextSlide();
                    };                         
                
                // Funzione con timeout per la slide successiva
                function nextSlide(){
                    setTimeout(slide, (tPause+transitionDuration));
                    };
                
                //Inizializzo        
                nextSlide();
               };     
        

