
      (function($) {
        $.fn.panelslider = function(optionen) {
          var parameter = jQuery.extend(
          {
            panels: '.panel',
            autostart: true,
            selektorzurueck: '.zurueck',
            selektorweiter:  '.weiter',           
            geschwindigkeit:  500,        // Animationsgeschwindigkeit
            pausierung:      3000         // Pause zwischen jeder Animation
          }, optionen);
    
          
          $(this).each(function() {
          
            var referenz = $(this);
            var stopp = false;
            
            $(parameter.panels, referenz).css({float:'left'});
            $(referenz).css({ overflow:'hidden', position:'relative'});
            
            var panel_breite = referenz.find(parameter.panels).width();
            var panel_anzahl = referenz.find(parameter.panels).size();
            var panel_aktuell = 1;
            
            $(parameter.panels, referenz).wrapAll('<div class="panelcontainer" style="clear:both; overflow:hidden; position:relative;"></div>');
            $('.panelcontainer', referenz).css({width: panel_breite * panel_anzahl });
            
            // MouseEnter und MouseLeave
            $(referenz).mouseenter(function(){
                        stopp = true;
                     }).mouseleave(function(){
                        stopp = false;
                     });
            
            // zurück
            $(parameter.selektorzurueck).click(function(klick){
              klick.preventDefault();
              stopp = true;
              
              if(panel_aktuell == 1)  // "zurückspulen", ganz nach hinten
              {
                xpos = - (panel_breite * (panel_anzahl-1));
                panel_aktuell = panel_anzahl;
                $('.panelcontainer', referenz).animate({ 'margin-left': xpos }, panel_anzahl * Math.floor(parameter.geschwindigkeit/2), 'swing');                                
              }
              else
              {
                panel_aktuell -= 1;
                xpos = - (panel_breite * (panel_aktuell-1));                
                $('.panelcontainer', referenz).animate({ 'margin-left': xpos }, parameter.geschwindigkeit, 'swing');
              };
            });
  
            // weiter
            $(parameter.selektorweiter).click(function(klick){
              klick.preventDefault();
              stopp = true;
              if(panel_aktuell == panel_anzahl)  // ganz nach vorne
              {
                xpos = 0;
                panel_aktuell = 1;
                $('.panelcontainer', referenz).animate({ 'margin-left': xpos }, panel_anzahl * Math.floor(parameter.geschwindigkeit/2), 'swing');
              }
              else
              {
                xpos = - (panel_aktuell * panel_breite);
                panel_aktuell += 1;
                $('.panelcontainer', referenz).animate({ 'margin-left': xpos }, parameter.geschwindigkeit, 'swing');
              };
            });
            


            if(parameter.autostart == true)
            {
              referenz.ready(function(){
                setTimeout(autoschleife, parameter.pausierung);
              });
            }

       
            function autoschleife()
            { 
              if(stopp == false)
              {
                if(panel_aktuell == panel_anzahl)  // ganz nach vorne
                {
                  xpos = 0;
                  panel_aktuell = 1;
                  $('.panelcontainer', referenz).animate({ 'margin-left': xpos }, panel_anzahl * Math.floor(parameter.geschwindigkeit/2), 'swing');
                }
                else
                {
                  xpos = - (panel_aktuell * panel_breite);
                  panel_aktuell += 1;
                  $('.panelcontainer', referenz).animate({ 'margin-left': xpos }, parameter.geschwindigkeit, 'swing');
                };
              }
              if(panel_aktuell == 1)
              {              
                setTimeout(autoschleife, parameter.pausierung + panel_anzahl * Math.floor(parameter.geschwindigkeit/2));
              }
              else
              {
                setTimeout(autoschleife, parameter.pausierung);
              }
            };
           
            
          });
      	};
      })(jQuery);  
