/*
  Supersized - Fullscreen Slideshow jQuery Plugin
  Version 3.1.3
  www.buildinternet.com/project/supersized
  
  By Sam Dunn / One Mighty Roar (www.onemightyroar.com)
  Released under MIT License / GPL License
*/

(function($){

  //Add in Supersized elements
  $(document).ready(function() {
    $('body').prepend('<div id="supersized-loader"></div>').prepend('<div id="supersized"></div>');
  });
  
  //Resize image on ready or resize
  $.supersized = function( options ) {
    
    //Default settings
    var settings = {
      
      //Functionality
      slideshow               :   1,    //Slideshow on/off
      autoplay        :  1,    //Slideshow starts playing automatically
      start_slide             :   1,    //Start slide (0 is random)
      random          :   0,    //Randomize slide order (Ignores start slide)
      slide_interval          :   5000,  //Length between transitions
      transition              :   1,     //0-None, 1-Fade, 2-Slide Top, 3-Slide Right, 4-Slide Bottom, 5-Slide Left, 6-Carousel Right, 7-Carousel Left
      transition_speed    : 1500,  //Speed of transition
      new_window        :  1,    //Image links open in new window/tab
      pause_hover             :   0,    //Pause slideshow on hover
      keyboard_nav            :   1,    //Keyboard navigation on/off
      performance        :  1,    //0-Normal, 1-Hybrid speed/quality, 2-Optimizes image quality, 3-Optimizes transition speed // (Only works for Firefox/IE, not Webkit)
      image_protect      :  1,    //Disables image dragging and right click with Javascript
      image_path        :  'img/', //Default image path
      
      //Size & Position
      min_width            :   0,    //Min width allowed (in pixels)
      min_height            :   0,    //Min height allowed (in pixels)
      vertical_center         :   1,    //Vertically center background
      horizontal_center       :   1,    //Horizontally center background
      fit_portrait           :   0,    //Portrait images will not exceed browser height
      fit_landscape      :   0,    //Landscape images will not exceed browser width  
      
      //Components
      navigation              :   1,    //Slideshow controls on/off
      thumbnail_navigation    :   0,    //Thumbnail navigation
      slide_counter           :   1,    //Display slide numbers
      slide_captions          :   1,    //Slide caption (Pull from "title" in slides array)
      
      //ANF CHANGES, added events
      slide_imageLoading      :   function(currentSlide){
        //our extension method :D
      },
      slide_imageLoaded      :   function(currentSlide){
        //our extension method :D
      },
      slide_imageSlided      :   function(currentSlide){
        //our extension method :D
      }
      };
    
    //Default elements
    var element = $('#supersized');    //Supersized container
    var pauseplay = '#pauseplay';    //Pause/Play
    
    //Combine options with default settings
    if (options) {
      var options = $.extend(settings, options);  //Pull from both defaults and supplied options
    }else{
      var options = $.extend(settings);      //Only pull from default settings    
    }
    
    //General slideshow variables
    var inAnimation = false;          //Prevents animations from stacking
    var isPaused = false;            //Tracks paused on/off
    var image_path = options.image_path;    //Default image path for navigation control buttons
    
    //Determine starting slide (random or defined)
    if (options.start_slide){
      var currentSlide = options.start_slide - 1;  //Default to defined start slide
    }else{
      var currentSlide = Math.floor(Math.random()*options.slides.length);  //Generate random slide number
    }
    
    //If links should open in new window
    var linkTarget = options.new_window ? ' target="_blank"' : '';
    
    //Set slideshow quality (Supported only in FF and IE, no Webkit)
    if (options.performance == 3){
      element.addClass('speed');     //Faster transitions
    } else if ((options.performance == 1) || (options.performance == 2)){
      element.addClass('quality');  //Higher image quality
    }
    
    //Shuffle slide order if needed    
    if (options.random){
      arr = options.slides;
      for(var j, x, i = arr.length; i; j = parseInt(Math.random() * i), x = arr[--i], arr[i] = arr[j], arr[j] = x);  //Fisher-Yates shuffle algorithm (jsfromhell.com/array/shuffle)
        options.slides = arr;
    }
    
    /***Load initial set of images***/

    if (options.slides.length > 1){
      //Set previous image
      currentSlide - 1 < 0  ? loadPrev = options.slides.length - 1 : loadPrev = currentSlide - 1;  //If slide is 1, load last slide as previous
      var imageLink = (options.slides[loadPrev].url) ? "href='" + options.slides[loadPrev].url + "'" : "";
      $("<img/>").attr("src", options.slides[loadPrev].image).appendTo(element).wrap('<a ' + imageLink + linkTarget + '></a>');
    }
    
    //Set current image
    imageLink = (options.slides[currentSlide].url) ? "href='" + options.slides[currentSlide].url + "'" : "";
    $("<img/>").attr("src", options.slides[currentSlide].image).appendTo(element).wrap('<a class="activeslide" ' + imageLink + linkTarget + '></a>');
    
    if (options.slides.length > 1){
      //Set next image
      currentSlide == options.slides.length - 1 ? loadNext = 0 : loadNext = currentSlide + 1;  //If slide is last, load first slide as next
      imageLink = (options.slides[loadNext].url) ? "href='" + options.slides[loadNext].url + "'" : "";
      $("<img/>").attr("src", options.slides[loadNext].image).appendTo(element).wrap('<a ' + imageLink + linkTarget + '></a>');
    }
    /***End load initial images***/
    
    element.hide();          //Hide image to be faded in
    $('#controls-wrapper').hide();  //Hide controls to be displayed
    
    //Account for loading in IE
    $(document).ready(function() {
      resizenow();
    });

    $(window).load(function(){
      
      $('#supersized-loader').hide();    //Hide loading animation
      element.fadeIn('fast');        //Fade in background
      $('#controls-wrapper').show();    //Display controls
      
      //Display thumbnails
      if (options.thumbnail_navigation){
      
        //Load previous thumbnail
        currentSlide - 1 < 0  ? prevThumb = options.slides.length - 1 : prevThumb = currentSlide - 1;
        $('#prevthumb').show().html($("<img/>").attr("src", options.slides[prevThumb].image));
        
        //Load next thumbnail
        currentSlide == options.slides.length - 1 ? nextThumb = 0 : nextThumb = currentSlide + 1;
        $('#nextthumb').show().html($("<img/>").attr("src", options.slides[nextThumb].image));
    
      }
      
      resizenow();  //Resize background image
      
      if (options.slide_captions) $('#slidecaption').html(options.slides[currentSlide].title);    //Pull caption from array
      if (!(options.navigation)) $('#navigation').hide();  //Display navigation
      
      
      //Start slideshow if enabled
      if (options.slideshow && options.slides.length > 1){
      
        if (options.slide_counter){  //Initiate slide counter if active
          $('#slidecounter .slidenumber').html(currentSlide + 1);      //Pull initial slide number from options    
            $('#slidecounter .totalslides').html(options.slides.length);  //Pull total from length of array
          }
          
          slideshow_interval = setInterval(nextslide, options.slide_interval);  //Initiate slide interval
        
        //Prevent slideshow if autoplay disabled
          if (!(options.autoplay)){
          
          clearInterval(slideshow_interval);  //Stop slideshow
          isPaused = true;  //Mark as paused
          
          if ($(pauseplay).attr('src')) $(pauseplay).attr("src", image_path + "play_dull.png");  //If pause play button is image, swap src
            
        }
        
        //Thumbnail Navigation
        if (options.thumbnail_navigation){
          
          //Next thumbnail clicked
          $('#nextthumb').click(function() {
          
              if(inAnimation) return false;    //Abort if currently animating
              
              clearInterval(slideshow_interval);  //Stop slideshow
              nextslide(element, options);    //Go to next slide
              if(!(isPaused)) slideshow_interval = setInterval(nextslide, options.slide_interval);  //If not paused, resume slideshow
              
              return false;
              
            });
            
            //Previous thumbnail clicked
            $('#prevthumb').click(function() {
            
              if(inAnimation) return false;    //Abort if currently animating
              
              clearInterval(slideshow_interval);  //Stop slideshow
              prevslide(element, options);    //Go to previous slide
              if(!(isPaused)) slideshow_interval = setInterval(nextslide, options.slide_interval);  //If not paused, resume slideshow
              
              return false;
              
            });
            
        }
        
        //Navigation controls
        if (options.navigation){
        
          $('#navigation a').click(function(){  
               $(this).blur();  
               return false;  
             });
          
          //Next button clicked
            $('#nextslide').click(function() {
            
              if(inAnimation) return false;    //Abort if currently animating
              
              clearInterval(slideshow_interval);  //Stop slideshow
              nextslide();    //Go to next slide
              if(!(isPaused)) slideshow_interval = setInterval(nextslide, options.slide_interval);  //If not paused, resume slideshow
              
              return false;
              
            });
            
            //If next slide button is image
            if ($('#nextslide').attr('src')){
              
              $('#nextslide').mousedown(function() {
                 $(this).attr("src", image_path + "forward.png");
            });
            $('#nextslide').mouseup(function() {
                $(this).attr("src", image_path + "forward_dull.png");
            });
            $('#nextslide').mouseout(function() {
                $(this).attr("src", image_path + "forward_dull.png");
            });
            
            }
            
            //Previous button clicked
            $('#prevslide').click(function() {
            
              if(inAnimation) return false;    //Abort if currently animating
              
              clearInterval(slideshow_interval);  //Stop slideshow
              prevslide();    //Go to previous slide
              if(!(isPaused)) slideshow_interval = setInterval(nextslide, options.slide_interval);  //If not paused, resume slideshow
              
              return false;
              
            });
          
          //If previous slide button is image
          if ($('#prevslide').attr('src')){
                    
            $('#prevslide').mousedown(function() {
                $(this).attr("src", image_path + "back.png");
            });
            $('#prevslide').mouseup(function() {
                $(this).attr("src", image_path + "back_dull.png");
            });
            $('#prevslide').mouseout(function() {
                $(this).attr("src", image_path + "back_dull.png");
            });
          
          }
          
            //Pause/play element clicked
            $(pauseplay).click(function() {
            
            if(inAnimation) return false;    //Abort if currently animating
            
            if (isPaused){
              
              if ($(pauseplay).attr('src')) $(pauseplay).attr("src", image_path + "pause_dull.png");  //If image, swap to pause
              
              //Resume slideshow
              isPaused = false;
                  slideshow_interval = setInterval(nextslide, options.slide_interval);
                    
                }else{
                  
                  if ($(pauseplay).attr('src')) $(pauseplay).attr("src", image_path + "play_dull.png");  //If image, swap to play
                  
                  //Stop slideshow
                  clearInterval(slideshow_interval);  
                  isPaused = true;
                 
                 }
              
              return false;
              
            });
            
        }  //End navigation controls
        
      }  //End slideshow options
      
    });    //End window load
        
    //Keyboard Navigation
    if (options.keyboard_nav){
    
      $(document.documentElement).keydown(function (event) {
        
        if ((event.keyCode == 37) || (event.keyCode == 40)) { //Left Arrow or Down Arrow
          if ($('#prevslide').attr('src')) $('#prevslide').attr("src", image_path + "back.png");    //If image, change back button to active
        } else if ((event.keyCode == 39) || (event.keyCode == 38)) { //Right Arrow or Up Arrow
          if ($('#nextslide').attr('src')) $('#nextslide').attr("src", image_path + "forward.png");  //If image, change next button to active
        }
        
      });
      
      $(document.documentElement).keyup(function (event) {
      
        clearInterval(slideshow_interval);  //Stop slideshow, prevent buildup
        
        if ((event.keyCode == 37) || (event.keyCode == 40)) { //Left Arrow or Down Arrow
          
          if ($('#prevslide').attr('src')) $('#prevslide').attr("src", image_path + "back_dull.png");  //If image, change back button to normal
          
          if(inAnimation) return false;    //Abort if currently animating
                
          clearInterval(slideshow_interval);  //Stop slideshow
          prevslide();    //Go to previous slide
          
          if(!(isPaused)) slideshow_interval = setInterval(nextslide, options.slide_interval);  //If not paused, resume slideshow
          
          return false;
        
        } else if ((event.keyCode == 39) || (event.keyCode == 38)) { //Right Arrow or Up Arrow
          
          if ($('#nextslide').attr('src')) $('#nextslide').attr("src", image_path + "forward_dull.png");  //If image, change next button to normal
          
          if(inAnimation) return false;    //Abort if currently animating
                
          clearInterval(slideshow_interval);  //Stop slideshow
            nextslide();    //Go to next slide
            
            if(!(isPaused)) slideshow_interval = setInterval(nextslide, options.slide_interval);  //If not paused, resume slideshow
           
            return false;
        
        } else if (event.keyCode == 32) { //Spacebar
          
          if(inAnimation) return false;    //Abort if currently animating
          
          if (isPaused){
            if ($(pauseplay).attr('src')) $(pauseplay).attr("src", image_path + "pause_dull.png");  //If image, swap to pause
            isPaused = false;  //Resume slideshow
                slideshow_interval = setInterval(nextslide, options.slide_interval);
              }else{
                if ($(pauseplay).attr('src')) $(pauseplay).attr("src", image_path + "play_dull.png");  //If image, swap to play
                isPaused = true;  //Mark as paused
               }
            
            return false;
        }
      
      });
    }
    
    
    //Pause when hover on image
    if (options.slideshow && options.pause_hover){
      $(element).hover(function() {
      
        if(inAnimation) return false;    //Abort if currently animating
             
             if(!(isPaused) && options.navigation){
               if ($(pauseplay).attr('src')) $(pauseplay).attr("src", image_path + "pause.png");   //If image, swap to pause
               clearInterval(slideshow_interval);
             }
           
         }, function() {
          
        if(!(isPaused) && options.navigation){
          if ($(pauseplay).attr('src')) $(pauseplay).attr("src", image_path + "pause_dull.png");  //If image, swap to active
          slideshow_interval = setInterval(nextslide, options.slide_interval);
        }
        
         });
    }
    
        
    //Adjust image when browser is resized
    $(window).resize(function(){
        resizenow();
    });
    
    
    //Adjust image size
    function resizenow() {
      return element.each(function() {
        
          var t = $('img', element);
          
          //Resize each image seperately
          $(t).each(function(){
          
          var ratio = ($(this).height()/$(this).width()).toFixed(2);  //Define image ratio
          thisSlide = $(this);
          
          //Gather browser size
          var browserwidth = $(window).width();
          var browserheight = $(window).height();
          var offset;
          
          /**Resize image to proper ratio**/
          
          if ((browserheight <= options.min_height) && (browserwidth <= options.min_width)){  //If window smaller than minimum width and height
          
            if ((browserheight/browserwidth) > ratio){
              options.fit_landscape && ratio <= 1 ? resizeWidth(true) : resizeHeight(true);  //If landscapes are set to fit
            } else {
              options.fit_portrait && ratio > 1 ? resizeHeight(true) : resizeWidth(true);    //If portraits are set to fit
            }
          
          } else if (browserwidth <= options.min_width){    //If window only smaller than minimum width
          
            if ((browserheight/browserwidth) > ratio){
              options.fit_landscape && ratio <= 1 ? resizeWidth(true) : resizeHeight();  //If landscapes are set to fit
            } else {
              options.fit_portrait && ratio > 1 ? resizeHeight() : resizeWidth(true);    //If portraits are set to fit
            }
            
          } else if (browserheight <= options.min_height){  //If window only smaller than minimum height
          
            if ((browserheight/browserwidth) > ratio){
              options.fit_landscape && ratio <= 1 ? resizeWidth() : resizeHeight(true);  //If landscapes are set to fit
            } else {
              options.fit_portrait && ratio > 1 ? resizeHeight(true) : resizeWidth();    //If portraits are set to fit
            }
          
          } else {  //If larger than minimums
            
            if ((browserheight/browserwidth) > ratio){
              options.fit_landscape && ratio <= 1 ? resizeWidth() : resizeHeight();  //If landscapes are set to fit
            } else {
              options.fit_portrait && ratio > 1 ? resizeHeight() : resizeWidth();    //If portraits are set to fit
            }
            
          }
          
          /**End Image Resize**/
          
          
          /**Resize Functions**/
          
          function resizeWidth(minimum){
            if (minimum){  //If minimum height needs to be considered
              if(thisSlide.width() < browserwidth || thisSlide.width() < options.min_width ){
                if (thisSlide.width() * ratio >= options.min_height){
                  thisSlide.width(options.min_width);
                    thisSlide.height(thisSlide.width() * ratio);
                  }else{
                    resizeHeight();
                  }
                }
            }else{
              if (options.min_height >= browserheight && !options.fit_landscape){  //If minimum height needs to be considered
                if (browserwidth * ratio >= options.min_height || (browserwidth * ratio >= options.min_height && ratio <= 1)){  //If resizing would push below minimum height or image is a landscape
                  thisSlide.width(browserwidth);
                  thisSlide.height(browserwidth * ratio);
                } else if (ratio > 1){    //Else the image is portrait
                  thisSlide.height(options.min_height);
                  thisSlide.width(thisSlide.height() / ratio);
                } else if (thisSlide.width() < browserwidth) {
                  thisSlide.width(browserwidth);
                    thisSlide.height(thisSlide.width() * ratio);
                }
              }else{  //Otherwise, resize as normal
                thisSlide.width(browserwidth);
                thisSlide.height(browserwidth * ratio);
              }
            }
          };
          
          function resizeHeight(minimum){
            if (minimum){  //If minimum height needs to be considered
              if(thisSlide.height() < browserheight){
                if (thisSlide.height() / ratio >= options.min_width){
                  thisSlide.height(options.min_height);
                  thisSlide.width(thisSlide.height() / ratio);
                }else{
                  resizeWidth(true);
                }
              }
            }else{  //Otherwise, resized as normal
              if (options.min_width >= browserwidth){  //If minimum width needs to be considered
                if (browserheight / ratio >= options.min_width || ratio > 1){  //If resizing would push below minimum width or image is a portrait
                  thisSlide.height(browserheight);
                  thisSlide.width(browserheight / ratio);
                } else if (ratio <= 1){    //Else the image is landscape
                  thisSlide.width(options.min_width);
                    thisSlide.height(thisSlide.width() * ratio);
                }
              }else{  //Otherwise, resize as normal
                thisSlide.height(browserheight);
                thisSlide.width(browserheight / ratio);
              }
            }
          };
          
          /**End Resize Functions**/
          
          
          //Horizontally Center
          if (options.horizontal_center){
            $(this).css('left', (browserwidth - $(this).width())/2);
          }
          
          //Vertically Center
          if (options.vertical_center){
            $(this).css('top', (browserheight - $(this).height())/2);
          }
          
        });
        
        //Basic image drag and right click protection
        if (options.image_protect){
          
          $('img', element).bind("contextmenu",function(){
            return false;
          });
          $('img', element).bind("mousedown",function(){
            return false;
          });
        
        }
        
        return false;
        
      });
    };
  
    
    //Next slide
    function nextslide() {
      
      if(inAnimation) return false;    //Abort if currently animating
        else inAnimation = true;    //Otherwise set animation marker
        
        var slides = options.slides;  //Pull in slides array
    
      
      var currentslide = element.find('.activeslide');    //Find active slide
      currentslide.removeClass('activeslide');        //Remove active class
      
        if ( currentslide.length == 0 ) currentslide = element.find('a:last');  //If end of set, note this is last slide
        var nextslide = currentslide.next().length ? currentslide.next() : element.find('a:first');
      var prevslide = nextslide.prev().length ? nextslide.prev() : element.find('a:last');
      
      //Update previous slide
      $('.prevslide').removeClass('prevslide');
      prevslide.addClass('prevslide');
      
      //Get the slide number of new slide
      currentSlide + 1 == slides.length ? currentSlide = 0 : currentSlide++;
      
      //If hybrid mode is on drop quality for transition
      if (options.performance == 1) element.removeClass('quality').addClass('speed');  
      
      /***/ //event, pass current loading slider, maybe some events later
      options.slide_imageLoading(slides[currentSlide]);
      /***/
      /**** Image Loading ****/
      
      //Load next image
      loadSlide = false;
      
      currentSlide == slides.length - 1 ? loadSlide = 0 : loadSlide = currentSlide + 1;  //Determine next slide
      imageLink = (options.slides[loadSlide].url) ? "href='" + options.slides[loadSlide].url + "'" : "";  //If link exists, build it
      $("<img/>").attr("src", options.slides[loadSlide].image).appendTo(element).wrap("<a " + imageLink + linkTarget + "></a>");  //Append new image
      
      //Update thumbnails (if enabled)
      if (options.thumbnail_navigation == 1){
      
        //Load previous thumbnail
        currentSlide - 1 < 0  ? prevThumb = slides.length - 1 : prevThumb = currentSlide - 1;
        $('#prevthumb').html($("<img/>").attr("src", options.slides[prevThumb].image));
      
        //Load next thumbnail
        nextThumb = loadSlide;
        $('#nextthumb').html($("<img/>").attr("src", options.slides[nextThumb].image));
        
      }
      
      currentslide.prev().remove(); //Remove Old Image
      /**** End Image Loading ****/
      
      /***/ //event, pass current loaded slider, maybe some events later
      options.slide_imageLoaded(slides[currentSlide]);
      /***/
      
      //Update slide number
      if (options.slide_counter){
          $('#slidecounter .slidenumber').html(currentSlide + 1);
      }
      
      //Update captions
        if (options.slide_captions){
          (options.slides[currentSlide].title) ? $('#slidecaption').html(options.slides[currentSlide].title) : $('#slidecaption').html('');
        }
        
        nextslide.hide().addClass('activeslide');  //Update active slide
        
        switch(options.transition){
          
          case 0:    //No transition
              nextslide.show(); inAnimation = false;
              break;
          case 1:    //Fade
              nextslide.fadeTo(options.transition_speed, 1, function(){ afterAnimation(); });
              break;
          case 2:    //Slide Top
              nextslide.animate({top : -$(window).height()}, 0 ).show().animate({ top:0 }, options.transition_speed, function(){ afterAnimation(); });
              break;
          case 3:    //Slide Right
            nextslide.animate({left : $(window).width()}, 0 ).show().animate({ left:0 }, options.transition_speed, function(){ afterAnimation(); });
            break;
          case 4:    //Slide Bottom
            nextslide.animate({top : $(window).height()}, 0 ).show().animate({ top:0 }, options.transition_speed, function(){ afterAnimation(); });
            break;
          case 5:    //Slide Left
            nextslide.animate({left : -$(window).width()}, 0 ).show().animate({ left:0 }, options.transition_speed, function(){ afterAnimation(); });
            break;
          case 6:    //Carousel Right
            nextslide.animate({left : $(window).width()}, 0 ).show().animate({ left:0 }, options.transition_speed, function(){ afterAnimation(); });
          currentslide.animate({ left: -$(window).width() }, options.transition_speed );
            break;
          case 7:    //Carousel Left
            nextslide.animate({left : -$(window).width()}, 0 ).show().animate({ left:0 }, options.transition_speed, function(){ afterAnimation(); });
          currentslide.animate({ left: $(window).width() }, options.transition_speed );
            break;
        };
      
      /***/ //event, pass current loaded slider
      options.slide_imageSlided(slides[currentSlide]);
      /***/
    }
    
    
    //Previous Slide
    function prevslide() {
    
      if(inAnimation) return false;    //Abort if currently animating
        else inAnimation = true;    //Otherwise set animation marker
  
      var slides = options.slides;  //Pull in slides array
  
      var currentslide = element.find('.activeslide');    //Find active slide
      currentslide.removeClass('activeslide');        //Remove active class
      
        if ( currentslide.length == 0 ) currentslide = $(element).find('a:first');  //If end of set, note this is first slide
        var nextslide =  currentslide.prev().length ? currentslide.prev() : $(element).find('a:last');
      var prevslide =  nextslide.next().length ? nextslide.next() : $(element).find('a:first');
      
      //Update previous slide
      $('.prevslide').removeClass('prevslide');
      prevslide.addClass('prevslide');
          
      //Get current slide number
      currentSlide == 0 ?  currentSlide = slides.length - 1 : currentSlide-- ;
      
      //If hybrid mode is on drop quality for transition
      if (options.performance == 1) element.removeClass('quality').addClass('speed');  
          
      /***/ //event, pass current loading slider, maybe some events later
      options.slide_imageLoading(slides[currentSlide]);
      /***/
      
      /**** Image Loading ****/
      
      //Load next image
      loadSlide = false;
      currentSlide - 1 < 0  ? loadSlide = slides.length - 1 : loadSlide = currentSlide - 1;  //Determine next slide
      imageLink = (options.slides[loadSlide].url) ? "href='" + options.slides[loadSlide].url + "'" : "";  //If link exists, build it
      $("<img/>").attr("src", options.slides[loadSlide].image).prependTo(element).wrap("<a " + imageLink + linkTarget + "></a>");  //Append new image
      
      //Update thumbnails (if enabled)
      if (options.thumbnail_navigation == 1){
      
        //Load previous thumbnail
        prevThumb = loadSlide;
        $('#prevthumb').html($("<img/>").attr("src", options.slides[prevThumb].image));
        
        //Load next thumbnail
        currentSlide == slides.length - 1 ? nextThumb = 0 : nextThumb = currentSlide + 1;
        $('#nextthumb').html($("<img/>").attr("src", options.slides[nextThumb].image));
      }
      
      currentslide.next().remove(); //Remove Old Image
      
      /**** End Image Loading ****/
      /***/ //event, pass current loaded slider, maybe some events later
      options.slide_imageLoaded(slides[currentSlide]);
      /***/
      
      
      //Update slide counter
      if (options.slide_counter){
          $('#slidecounter .slidenumber').html(currentSlide + 1);
      }
      
      //Update captions
        if (options.slide_captions){
          (options.slides[currentSlide].title) ? $('#slidecaption').html(options.slides[currentSlide].title) : $('#slidecaption').html('');
        }
      
        nextslide.hide().addClass('activeslide');  //Update active slide
        
        switch(options.transition){
            
          case 0:    //No transition
              nextslide.show(); inAnimation = false;
              break;
          case 1:    //Fade
              nextslide.fadeTo(options.transition_speed, 1, function(){ afterAnimation(); });
              break;
          case 2:    //Slide Top (reverse)
              nextslide.animate({top : $(window).height()}, 0 ).show().animate({ top:0 }, options.transition_speed, function(){ afterAnimation(); });
              break;
          case 3:    //Slide Right (reverse)
            nextslide.animate({left : -$(window).width()}, 0 ).show().animate({ left:0 }, options.transition_speed, function(){ afterAnimation(); });
            break;
          case 4:    //Slide Bottom (reverse)
            nextslide.animate({top : -$(window).height()}, 0 ).show().animate({ top:0 }, options.transition_speed, function(){ afterAnimation(); });
            break;
          case 5:    //Slide Left (reverse)
            nextslide.animate({left : $(window).width()}, 0 ).show().animate({ left:0 }, options.transition_speed, function(){ afterAnimation(); });
            break;
          case 6:    //Carousel Right (reverse)
            nextslide.animate({left : -$(window).width()}, 0 ).show().animate({ left:0 }, options.transition_speed, function(){ afterAnimation(); });
          currentslide.animate({ left: $(window).width() }, options.transition_speed );
            break;
          case 7:    //Carousel Left (reverse)
            nextslide.animate({left : $(window).width()}, 0 ).show().animate({ left:0 }, options.transition_speed, function(){ afterAnimation(); });
          currentslide.animate({ left: -$(window).width() }, options.transition_speed );
            break;  
        };
        /***/ //event, pass current loaded slider
      options.slide_imageSlided(slides[currentSlide]);
      /***/   
    }
    
    //After slide animation
    function afterAnimation() {
    
      inAnimation = false; 
      
      //If hybrid mode is on swap back to higher image quality
      if (options.performance == 1){
          element.removeClass('speed').addClass('quality');
      }
      
      resizenow();
      
    }
    
  };
    
})(jQuery);




