Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Supersized - Fullscreen Slideshow jQuery Plugin
- Version : 3.2.7
- Site : www.buildinternet.com/project/supersized
- Author : Sam Dunn
- Company : One Mighty Roar (www.onemightyroar.com)
- License : MIT License / GPL License
- */
- (function($){
- /* Place Supersized Elements
- ----------------------------*/
- $(document).ready(function() {
- $('body').append('<div id="supersized-loader"></div><ul id="supersized"></ul>');
- });
- $.supersized = function(options){
- /* Variables
- ----------------------------*/
- var el = '#supersized',
- base = this,
- uniqueCounter = 0;
- // Access to jQuery and DOM versions of element
- base.$el = $(el);
- base.el = el;
- vars = $.supersized.vars;
- // Add a reverse reference to the DOM object
- base.$el.data("supersized", base);
- api = base.$el.data('supersized');
- base.init = function(){
- // Combine options and vars
- $.supersized.vars = $.extend($.supersized.vars, $.supersized.themeVars);
- $.supersized.vars.options = $.extend({},$.supersized.defaultOptions, $.supersized.themeOptions, options);
- base.options = $.supersized.vars.options;
- base._build();
- };
- /* Build Elements
- ----------------------------*/
- base._slideCreator = function (options){
- // If links should open in new window
- var linkTarget = base.options.new_window ? ' target="_blank"' : '';
- var slideData = options.slideData,
- targetList = options.targetList,
- loadedCallback = options.loadedCallback;
- targetList.attr("data-slidetype",slideData.type);
- switch(slideData.type){
- case 'VIMEO':
- if(!$f) alert("You must include froogaloops.js to use vimeo slides");
- var d = new Date();
- var uid = "vimeo-"+ d.getTime() + '_' + uniqueCounter++;
- var html = '<iframe src="http://player.vimeo.com/video/'+slideData.video_id+'?api=1&player_id=' + uid + '"';
- html += ' id="'+uid+'"';
- html += ' width="100%" height="100%" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>';
- targetList.html(html);
- var iframe=targetList.find('iframe')[0];
- $f(iframe).addEvent('ready', function() {
- console.log("ready called");
- base.resizeNow(); // Resize background image
- if(loadedCallback) loadedCallback($(this));
- });
- break;
- case 'YOUTUBE':
- var d = new Date();
- var html = '<iframe width="100%" height="100%" src="http://www.youtube.com/embed/' + slideData.video_id + '?wmode=transparent" frameborder="0" allowfullscreen></iframe>';
- targetList.html(html);
- if(loadedCallback) loadedCallback();
- break;
- case 'IMAGE':
- default:
- var slideLink = (slideData.url) ? "href='" + slideData.url + "'" : "";
- var img = $('<img src="'+slideData.image+'"/>');
- img.appendTo(targetList).wrap('<a ' + slideLink + linkTarget + '></a>');
- img.load(function(){
- base._origDim($(this));
- base.resizeNow(); // Resize background image
- if(loadedCallback) loadedCallback($(this)); //
- }); // End IMAGE
- break;
- }
- }
- base._build = function(){
- // Add in slide markers
- var thisSlide = 0,
- slideSet = '',
- markers = '',
- markerContent,
- thumbMarkers = '',
- thumbImage;
- while(thisSlide <= base.options.slides.length-1){
- //Determine slide link content
- switch(base.options.slide_links){
- case 'num':
- markerContent = thisSlide;
- break;
- case 'name':
- markerContent = base.options.slides[thisSlide].title;
- break;
- case 'blank':
- markerContent = '';
- break;
- }
- slideSet = slideSet+'<li class="slide-'+thisSlide+'"></li>';
- if(thisSlide == base.options.start_slide-1){
- // Slide links
- if (base.options.slide_links)markers = markers+'<li class="slide-link-'+thisSlide+' current-slide"><a>'+markerContent+'</a></li>';
- // Slide Thumbnail Links
- if (base.options.thumb_links){
- base.options.slides[thisSlide].thumb ? thumbImage = base.options.slides[thisSlide].thumb : thumbImage = base.options.slides[thisSlide].image;
- thumbMarkers = thumbMarkers+'<li class="thumb'+thisSlide+' current-thumb"><img src="'+thumbImage+'"/></li>';
- };
- }else{
- // Slide links
- if (base.options.slide_links) markers = markers+'<li class="slide-link-'+thisSlide+'" ><a>'+markerContent+'</a></li>';
- // Slide Thumbnail Links
- if (base.options.thumb_links){
- base.options.slides[thisSlide].thumb ? thumbImage = base.options.slides[thisSlide].thumb : thumbImage = base.options.slides[thisSlide].image;
- thumbMarkers = thumbMarkers+'<li class="thumb'+thisSlide+'"><img src="'+thumbImage+'"/></li>';
- };
- }
- thisSlide++;
- }
- if (base.options.slide_links) $(vars.slide_list).html(markers);
- if (base.options.thumb_links && vars.thumb_tray.length){
- $(vars.thumb_tray).append('<ul id="'+vars.thumb_list.replace('#','')+'">'+thumbMarkers+'</ul>');
- }
- $(base.el).append(slideSet);
- // Add in thumbnails
- if (base.options.thumbnail_navigation){
- // Load previous thumbnail
- vars.current_slide - 1 < 0 ? prevThumb = base.options.slides.length - 1 : prevThumb = vars.current_slide - 1;
- $(vars.prev_thumb).show().html($("<img/>").attr("src", base.options.slides[prevThumb].image));
- // Load next thumbnail
- vars.current_slide == base.options.slides.length - 1 ? nextThumb = 0 : nextThumb = vars.current_slide + 1;
- $(vars.next_thumb).show().html($("<img/>").attr("src", base.options.slides[nextThumb].image));
- }
- base._start(); // Get things started
- };
- /* Initialize
- ----------------------------*/
- base._start = function(){
- // Determine if starting slide random
- if (base.options.start_slide){
- vars.current_slide = base.options.start_slide - 1;
- }else{
- vars.current_slide = Math.floor(Math.random()*base.options.slides.length); // Generate random slide number
- }
- // Set slideshow quality (Supported only in FF and IE, no Webkit)
- if (base.options.performance == 3){
- base.$el.addClass('speed'); // Faster transitions
- } else if ((base.options.performance == 1) || (base.options.performance == 2)){
- base.$el.addClass('quality'); // Higher image quality
- }
- // Shuffle slide order if needed
- if (base.options.random){
- arr = base.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)
- base.options.slides = arr;
- }
- /*-----Load initial set of images-----*/
- if (base.options.slides.length > 1){
- if(base.options.slides.length > 2){
- // Set previous image
- vars.current_slide - 1 < 0 ? loadPrev = base.options.slides.length - 1 : loadPrev = vars.current_slide - 1; // If slide is 1, load last slide as previous
- var prevTargetList = $(base.el+' li:eq('+loadPrev+')').addClass('image-loading prevslide');
- base._slideCreator({
- slideData:base.options.slides[loadPrev],
- targetList : prevTargetList,
- loadedCallback : null
- });
- }
- } else {
- // Slideshow turned off if there is only one slide
- base.options.slideshow = 0;
- }
- // Hide elements to be faded in
- base.$el.css('visibility','hidden');
- $('.load-item').hide();
- // Set current image
- var currentTargetList = $(base.el+' li:eq('+vars.current_slide+')').addClass('image-loading activeslide');
- base._slideCreator({
- slideData:base.options.slides[vars.current_slide],
- targetList : currentTargetList,
- loadedCallback :function(imgElm){
- base.launch();
- if( typeof theme != 'undefined' && typeof theme._init == "function" ) theme._init(); // Load Theme
- }
- });
- if (base.options.slides.length > 1){
- // Set next image
- vars.current_slide == base.options.slides.length - 1 ? loadNext = 0 : loadNext = vars.current_slide + 1; // If slide is last, load first slide as next
- var nextTargetList = $(base.el+' li:eq('+loadNext+')').addClass('image-loading');
- base._slideCreator({
- slideData:base.options.slides[loadNext],
- targetList : nextTargetList,
- loadedCallback :null
- });
- }
- /*-----End load initial images-----*/
- };
- /* Launch Supersized
- ----------------------------*/
- base.launch = function(){
- base.$el.css('visibility','visible');
- $('#supersized-loader').remove(); //Hide loading animation
- // Call theme function for before slide transition
- if( typeof theme != 'undefined' && typeof theme.beforeAnimation == "function" ) theme.beforeAnimation('next');
- $('.load-item').show();
- // Keyboard Navigation
- if (base.options.keyboard_nav){
- $(document.documentElement).keyup(function (event) {
- if(vars.in_animation) return false; // Abort if currently animating
- // Left Arrow or Down Arrow
- if ((event.keyCode == 37) || (event.keyCode == 40)) {
- clearInterval(vars.slideshow_interval); // Stop slideshow, prevent buildup
- base.prevSlide();
- // Right Arrow or Up Arrow
- } else if ((event.keyCode == 39) || (event.keyCode == 38)) {
- clearInterval(vars.slideshow_interval); // Stop slideshow, prevent buildup
- base.nextSlide();
- // Spacebar
- } else if (event.keyCode == 32 && !vars.hover_pause) {
- clearInterval(vars.slideshow_interval); // Stop slideshow, prevent buildup
- base.playToggle();
- }
- });
- }
- // Pause when hover on image
- if (base.options.slideshow && base.options.pause_hover){
- $(base.el).hover(function() {
- if(vars.in_animation) return false; // Abort if currently animating
- vars.hover_pause = true; // Mark slideshow paused from hover
- if(!vars.is_paused){
- vars.hover_pause = 'resume'; // It needs to resume afterwards
- base.playToggle();
- }
- }, function() {
- if(vars.hover_pause == 'resume'){
- base.playToggle();
- vars.hover_pause = false;
- }
- });
- }
- if (base.options.slide_links){
- // Slide marker clicked
- $(vars.slide_list+'> li').click(function(){
- index = $(vars.slide_list+'> li').index(this);
- targetSlide = index + 1;
- base.goTo(targetSlide);
- return false;
- });
- }
- // Thumb marker clicked
- if (base.options.thumb_links){
- $(vars.thumb_list+'> li').click(function(){
- index = $(vars.thumb_list+'> li').index(this);
- targetSlide = index + 1;
- api.goTo(targetSlide);
- return false;
- });
- }
- // Start slideshow if enabled
- if (base.options.slideshow && base.options.slides.length > 1){
- // Start slideshow if autoplay enabled
- if (base.options.autoplay && base.options.slides.length > 1){
- vars.slideshow_interval = setInterval(base.nextSlide, base.options.slide_interval); // Initiate slide interval
- }else{
- vars.is_paused = true; // Mark as paused
- }
- //Prevent navigation items from being dragged
- $('.load-item img').bind("contextmenu mousedown",function(){
- return false;
- });
- }
- // Adjust image when browser is resized
- $(window).resize(function(){
- base.resizeNow();
- });
- };
- /* Resize Images
- ----------------------------*/
- base.resizeNow = function(){
- return base.$el.each(function() {
- // Resize each image seperately
- $('img', base.el).each(function(){
- thisSlide = $(this);
- var ratio = (thisSlide.data('origHeight')/thisSlide.data('origWidth')).toFixed(2); // Define image ratio
- // Gather browser size
- var browserwidth = base.$el.width(),
- browserheight = base.$el.height(),
- offset;
- /*-----Resize Image-----*/
- if (base.options.fit_always){ // Fit always is enabled
- if ((browserheight/browserwidth) > ratio){
- resizeWidth();
- } else {
- resizeHeight();
- }
- }else{ // Normal Resize
- if ((browserheight <= base.options.min_height) && (browserwidth <= base.options.min_width)){ // If window smaller than minimum width and height
- if ((browserheight/browserwidth) > ratio){
- base.options.fit_landscape && ratio < 1 ? resizeWidth(true) : resizeHeight(true); // If landscapes are set to fit
- } else {
- base.options.fit_portrait && ratio >= 1 ? resizeHeight(true) : resizeWidth(true); // If portraits are set to fit
- }
- } else if (browserwidth <= base.options.min_width){ // If window only smaller than minimum width
- if ((browserheight/browserwidth) > ratio){
- base.options.fit_landscape && ratio < 1 ? resizeWidth(true) : resizeHeight(); // If landscapes are set to fit
- } else {
- base.options.fit_portrait && ratio >= 1 ? resizeHeight() : resizeWidth(true); // If portraits are set to fit
- }
- } else if (browserheight <= base.options.min_height){ // If window only smaller than minimum height
- if ((browserheight/browserwidth) > ratio){
- base.options.fit_landscape && ratio < 1 ? resizeWidth() : resizeHeight(true); // If landscapes are set to fit
- } else {
- base.options.fit_portrait && ratio >= 1 ? resizeHeight(true) : resizeWidth(); // If portraits are set to fit
- }
- } else { // If larger than minimums
- if ((browserheight/browserwidth) > ratio){
- base.options.fit_landscape && ratio < 1 ? resizeWidth() : resizeHeight(); // If landscapes are set to fit
- } else {
- base.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() < base.options.min_width ){
- if (thisSlide.width() * ratio >= base.options.min_height){
- thisSlide.width(base.options.min_width);
- thisSlide.height(thisSlide.width() * ratio);
- }else{
- resizeHeight();
- }
- }
- }else{
- if (base.options.min_height >= browserheight && !base.options.fit_landscape){ // If minimum height needs to be considered
- if (browserwidth * ratio >= base.options.min_height || (browserwidth * ratio >= base.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(base.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 >= base.options.min_width){
- thisSlide.height(base.options.min_height);
- thisSlide.width(thisSlide.height() / ratio);
- }else{
- resizeWidth(true);
- }
- }
- }else{ // Otherwise, resized as normal
- if (base.options.min_width >= browserwidth){ // If minimum width needs to be considered
- if (browserheight / ratio >= base.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(base.options.min_width);
- thisSlide.height(thisSlide.width() * ratio);
- }
- }else{ // Otherwise, resize as normal
- thisSlide.height(browserheight);
- thisSlide.width(browserheight / ratio);
- }
- }
- };
- /*-----End Resize Functions-----*/
- if (thisSlide.parents('li').hasClass('image-loading')){
- $('.image-loading').removeClass('image-loading');
- }
- // Horizontally Center
- if (base.options.horizontal_center){
- $(this).css('left', (browserwidth - $(this).width())/2);
- }
- // Vertically Center
- if (base.options.vertical_center){
- $(this).css('top', (browserheight - $(this).height())/2);
- }
- });
- // Basic image drag and right click protection
- if (base.options.image_protect){
- $('img', base.el).bind("contextmenu mousedown",function(){
- return false;
- });
- }
- return false;
- });
- };
- /* Next Slide
- ----------------------------*/
- base.nextSlide = function(){
- if(vars.in_animation || !api.options.slideshow) return false; // Abort if currently animating
- else vars.in_animation = true; // Otherwise set animation marker
- clearInterval(vars.slideshow_interval); // Stop slideshow
- var slides = base.options.slides, // Pull in slides array
- liveslide = base.$el.find('.activeslide'); // Find active slide
- $('.prevslide').removeClass('prevslide');
- liveslide.removeClass('activeslide').addClass('prevslide'); // Remove active class & update previous slide
- //save current_slide to last slide
- vars.last_slide = vars.current_slide;
- // Get the slide number of new slide
- vars.current_slide + 1 == base.options.slides.length ? vars.current_slide = 0 : vars.current_slide++;
- var nextslide = $(base.el+' li:eq('+vars.current_slide+')'),
- prevslide = base.$el.find('.prevslide');
- // If hybrid mode is on drop quality for transition
- if (base.options.performance == 1) base.$el.removeClass('quality').addClass('speed');
- /*-----Load Image-----*/
- loadSlide = false;
- vars.current_slide == base.options.slides.length - 1 ? loadSlide = 0 : loadSlide = vars.current_slide + 1; // Determine next slide
- var targetList = $(base.el+' li:eq('+loadSlide+')');
- if (!targetList.html()){
- targetList.addClass('image-loading').css('visibility','hidden');
- base._slideCreator({
- slideData:base.options.slides[loadSlide],
- targetList : targetList,
- loadedCallback :null
- });
- };
- // Update thumbnails (if enabled)
- if (base.options.thumbnail_navigation == 1){
- // Load previous thumbnail
- vars.current_slide - 1 < 0 ? prevThumb = base.options.slides.length - 1 : prevThumb = vars.current_slide - 1;
- $(vars.prev_thumb).html($("<img/>").attr("src", base.options.slides[prevThumb].image));
- // Load next thumbnail
- nextThumb = loadSlide;
- $(vars.next_thumb).html($("<img/>").attr("src", base.options.slides[nextThumb].image));
- }
- /*-----End Load Image-----*/
- // Call theme function for before slide transition
- if( typeof theme != 'undefined' && typeof theme.beforeAnimation == "function" ) theme.beforeAnimation('next');
- //Update slide markers
- if (base.options.slide_links){
- $('.current-slide').removeClass('current-slide');
- $(vars.slide_list +'> li' ).eq(vars.current_slide).addClass('current-slide');
- }
- nextslide.css('visibility','hidden').addClass('activeslide'); // Update active slide
- switch(base.options.transition){
- case 0: case 'none': // No transition
- nextslide.css('visibility','visible'); vars.in_animation = false; base.afterAnimation();
- break;
- case 1: case 'fade': // Fade
- nextslide.animate({opacity : 0},0).css('visibility','visible').animate({opacity : 1, avoidTransforms : false}, base.options.transition_speed, function(){ base.afterAnimation(); });
- break;
- case 2: case 'slideTop': // Slide Top
- nextslide.animate({top : -base.$el.height()}, 0 ).css('visibility','visible').animate({ top:0, avoidTransforms : false }, base.options.transition_speed, function(){ base.afterAnimation(); });
- break;
- case 3: case 'slideRight': // Slide Right
- nextslide.animate({left : base.$el.width()}, 0 ).css('visibility','visible').animate({ left:0, avoidTransforms : false }, base.options.transition_speed, function(){ base.afterAnimation(); });
- break;
- case 4: case 'slideBottom': // Slide Bottom
- nextslide.animate({top : base.$el.height()}, 0 ).css('visibility','visible').animate({ top:0, avoidTransforms : false }, base.options.transition_speed, function(){ base.afterAnimation(); });
- break;
- case 5: case 'slideLeft': // Slide Left
- nextslide.animate({left : -base.$el.width()}, 0 ).css('visibility','visible').animate({ left:0, avoidTransforms : false }, base.options.transition_speed, function(){ base.afterAnimation(); });
- break;
- case 6: case 'carouselRight': // Carousel Right
- nextslide.animate({left : base.$el.width()}, 0 ).css('visibility','visible').animate({ left:0, avoidTransforms : false }, base.options.transition_speed, function(){ base.afterAnimation(); });
- liveslide.animate({ left: -base.$el.width(), avoidTransforms : false }, base.options.transition_speed );
- break;
- case 7: case 'carouselLeft': // Carousel Left
- nextslide.animate({left : -base.$el.width()}, 0 ).css('visibility','visible').animate({ left:0, avoidTransforms : false }, base.options.transition_speed, function(){ base.afterAnimation(); });
- liveslide.animate({ left: base.$el.width(), avoidTransforms : false }, base.options.transition_speed );
- break;
- }
- return false;
- };
- /* Previous Slide
- ----------------------------*/
- base.prevSlide = function(){
- if(vars.in_animation || !api.options.slideshow) return false; // Abort if currently animating
- else vars.in_animation = true; // Otherwise set animation marker
- clearInterval(vars.slideshow_interval); // Stop slideshow
- var slides = base.options.slides, // Pull in slides array
- liveslide = base.$el.find('.activeslide'); // Find active slide
- $('.prevslide').removeClass('prevslide');
- liveslide.removeClass('activeslide').addClass('prevslide'); // Remove active class & update previous slide
- //save current_slide to last slide
- vars.last_slide = vars.current_slide;
- // Get current slide number
- vars.current_slide == 0 ? vars.current_slide = base.options.slides.length - 1 : vars.current_slide-- ;
- var nextslide = $(base.el+' li:eq('+vars.current_slide+')'),
- prevslide = base.$el.find('.prevslide');
- // If hybrid mode is on drop quality for transition
- if (base.options.performance == 1) base.$el.removeClass('quality').addClass('speed');
- /*-----Load Image-----*/
- loadSlide = vars.current_slide;
- var targetList = $(base.el+' li:eq('+loadSlide+')');
- if (!targetList.html()){
- targetList.addClass('image-loading').css('visibility','hidden');
- base._slideCreator({
- slideData:base.options.slides[loadSlide],
- targetList : targetList,
- loadedCallback :null
- });
- };
- // Update thumbnails (if enabled)
- if (base.options.thumbnail_navigation == 1){
- // Load previous thumbnail
- //prevThumb = loadSlide;
- loadSlide == 0 ? prevThumb = base.options.slides.length - 1 : prevThumb = loadSlide - 1;
- $(vars.prev_thumb).html($("<img/>").attr("src", base.options.slides[prevThumb].image));
- // Load next thumbnail
- vars.current_slide == base.options.slides.length - 1 ? nextThumb = 0 : nextThumb = vars.current_slide + 1;
- $(vars.next_thumb).html($("<img/>").attr("src", base.options.slides[nextThumb].image));
- }
- /*-----End Load Image-----*/
- // Call theme function for before slide transition
- if( typeof theme != 'undefined' && typeof theme.beforeAnimation == "function" ) theme.beforeAnimation('prev');
- //Update slide markers
- if (base.options.slide_links){
- $('.current-slide').removeClass('current-slide');
- $(vars.slide_list +'> li' ).eq(vars.current_slide).addClass('current-slide');
- }
- nextslide.css('visibility','hidden').addClass('activeslide'); // Update active slide
- switch(base.options.transition){
- case 0: case 'none': // No transition
- nextslide.css('visibility','visible'); vars.in_animation = false; base.afterAnimation();
- break;
- case 1: case 'fade': // Fade
- nextslide.animate({opacity : 0},0).css('visibility','visible').animate({opacity : 1, avoidTransforms : false}, base.options.transition_speed, function(){ base.afterAnimation(); });
- break;
- case 2: case 'slideTop': // Slide Top (reverse)
- nextslide.animate({top : base.$el.height()}, 0 ).css('visibility','visible').animate({ top:0, avoidTransforms : false }, base.options.transition_speed, function(){ base.afterAnimation(); });
- break;
- case 3: case 'slideRight': // Slide Right (reverse)
- nextslide.animate({left : -base.$el.width()}, 0 ).css('visibility','visible').animate({ left:0, avoidTransforms : false }, base.options.transition_speed, function(){ base.afterAnimation(); });
- break;
- case 4: case 'slideBottom': // Slide Bottom (reverse)
- nextslide.animate({top : -base.$el.height()}, 0 ).css('visibility','visible').animate({ top:0, avoidTransforms : false }, base.options.transition_speed, function(){ base.afterAnimation(); });
- break;
- case 5: case 'slideLeft': // Slide Left (reverse)
- nextslide.animate({left : base.$el.width()}, 0 ).css('visibility','visible').animate({ left:0, avoidTransforms : false }, base.options.transition_speed, function(){ base.afterAnimation(); });
- break;
- case 6: case 'carouselRight': // Carousel Right (reverse)
- nextslide.animate({left : -base.$el.width()}, 0 ).css('visibility','visible').animate({ left:0, avoidTransforms : false }, base.options.transition_speed, function(){ base.afterAnimation(); });
- liveslide.animate({left : 0}, 0 ).animate({ left: base.$el.width(), avoidTransforms : false}, base.options.transition_speed );
- break;
- case 7: case 'carouselLeft': // Carousel Left (reverse)
- nextslide.animate({left : base.$el.width()}, 0 ).css('visibility','visible').animate({ left:0, avoidTransforms : false }, base.options.transition_speed, function(){ base.afterAnimation(); });
- liveslide.animate({left : 0}, 0 ).animate({ left: -base.$el.width(), avoidTransforms : false }, base.options.transition_speed );
- break;
- }
- return false;
- };
- /* Play/Pause Toggle
- ----------------------------*/
- base.playToggle = function(){
- if (vars.in_animation || !api.options.slideshow) return false; // Abort if currently animating
- if (vars.is_paused){
- vars.is_paused = false;
- // Call theme function for play
- if( typeof theme != 'undefined' && typeof theme.playToggle == "function" ) theme.playToggle('play');
- // Resume slideshow
- vars.slideshow_interval = setInterval(base.nextSlide, base.options.slide_interval);
- }else{
- vars.is_paused = true;
- // Call theme function for pause
- if( typeof theme != 'undefined' && typeof theme.playToggle == "function" ) theme.playToggle('pause');
- // Stop slideshow
- clearInterval(vars.slideshow_interval);
- }
- return false;
- };
- /* Go to specific slide
- ----------------------------*/
- base.goTo = function(targetSlide){
- if (vars.in_animation || !api.options.slideshow) return false; // Abort if currently animating
- var totalSlides = base.options.slides.length;
- // If target outside range
- if(targetSlide < 0){
- targetSlide = totalSlides;
- }else if(targetSlide > totalSlides){
- targetSlide = 1;
- }
- targetSlide = totalSlides - targetSlide + 1;
- clearInterval(vars.slideshow_interval); // Stop slideshow, prevent buildup
- //save current_slide to last slide
- vars.last_slide = vars.current_slide;
- base._cleanOldSlide();
- // Call theme function for goTo trigger
- if (typeof theme != 'undefined' && typeof theme.goTo == "function" ) theme.goTo();
- if (vars.current_slide == totalSlides - targetSlide){
- if(!(vars.is_paused)){
- vars.slideshow_interval = setInterval(base.nextSlide, base.options.slide_interval);
- }
- return false;
- }
- // If ahead of current position
- if(totalSlides - targetSlide > vars.current_slide ){
- // Adjust for new next slide
- vars.current_slide = totalSlides-targetSlide-1;
- vars.update_images = 'next';
- base._placeSlide(vars.update_images);
- //Otherwise it's before current position
- }else if(totalSlides - targetSlide < vars.current_slide){
- // Adjust for new prev slide
- vars.current_slide = totalSlides-targetSlide+1;
- vars.update_images = 'prev';
- base._placeSlide(vars.update_images);
- }
- // set active markers
- if (base.options.slide_links){
- $(vars.slide_list +'> .current-slide').removeClass('current-slide');
- $(vars.slide_list +'> li').eq((totalSlides-targetSlide)).addClass('current-slide');
- }
- if (base.options.thumb_links){
- $(vars.thumb_list +'> .current-thumb').removeClass('current-thumb');
- $(vars.thumb_list +'> li').eq((totalSlides-targetSlide)).addClass('current-thumb');
- }
- };
- /* Place Slide
- ----------------------------*/
- base._placeSlide = function(place){
- loadSlide = false;
- if (place == 'next'){
- vars.current_slide == base.options.slides.length - 1 ? loadSlide = 0 : loadSlide = vars.current_slide + 1; // Determine next slide
- var targetList = $(base.el+' li:eq('+loadSlide+')');
- if (!targetList.html()){
- targetList.addClass('image-loading').css('visibility','hidden');
- base._slideCreator({
- slideData:base.options.slides[loadSlide],
- targetList : targetList,
- loadedCallback :null
- });
- };
- base.nextSlide();
- }else if (place == 'prev'){
- vars.current_slide - 1 < 0 ? loadSlide = base.options.slides.length - 1 : loadSlide = vars.current_slide - 1; // Determine next slide
- var targetList = $(base.el+' li:eq('+loadSlide+')');
- if (!targetList.html()){
- targetList.addClass('image-loading').css('visibility','hidden');
- base._slideCreator({
- slideData:base.options.slides[loadSlide],
- targetList : targetList,
- loadedCallback :null
- });
- };
- base.prevSlide();
- }
- };
- /* stop any video playing in the slide about to animate off */
- base._cleanOldSlide = function (){
- //neg 1 is the default value when there is no last slide
- if(vars.last_slide == -1) return;
- var listItem = $(base.el+' li:eq('+vars.last_slide+')');
- switch(listItem.attr("data-slidetype")){
- case 'VIMEO':
- try{
- var iframe = listItem.find("iframe")[0];
- $f(iframe).api("unload");
- }catch(e){
- //the vimeo video is probably not yet loaded
- }
- break;
- }
- };
- /* Get Original Dimensions
- ----------------------------*/
- base._origDim = function(targetSlide){
- targetSlide.data('origWidth', targetSlide.width()).data('origHeight', targetSlide.height());
- };
- /* After Slide Animation
- ----------------------------*/
- base.afterAnimation = function(){
- base._cleanOldSlide();
- // If hybrid mode is on swap back to higher image quality
- if (base.options.performance == 1){
- base.$el.removeClass('speed').addClass('quality');
- }
- // Update previous slide
- if (vars.update_images){
- vars.current_slide - 1 < 0 ? setPrev = base.options.slides.length - 1 : setPrev = vars.current_slide-1;
- vars.update_images = false;
- $('.prevslide').removeClass('prevslide');
- $(base.el+' li:eq('+setPrev+')').addClass('prevslide');
- }
- vars.in_animation = false;
- // Resume slideshow
- if (!vars.is_paused && base.options.slideshow){
- vars.slideshow_interval = setInterval(base.nextSlide, base.options.slide_interval);
- if (base.options.stop_loop && vars.current_slide == base.options.slides.length - 1 ) base.playToggle();
- }
- // Call theme function for after slide transition
- if (typeof theme != 'undefined' && typeof theme.afterAnimation == "function" ) theme.afterAnimation();
- return false;
- };
- base.getField = function(field){
- return base.options.slides[vars.current_slide][field];
- };
- // Make it go!
- base.init();
- };
- /* Global Variables
- ----------------------------*/
- $.supersized.vars = {
- // Elements
- thumb_tray : '#thumb-tray', // Thumbnail tray
- thumb_list : '#thumb-list', // Thumbnail list
- slide_list : '#slide-list', // Slide link list
- // Internal variables
- current_slide : 0, // Current slide number
- last_slide : -1, // Current slide number
- in_animation : false, // Prevents animations from stacking
- is_paused : false, // Tracks paused on/off
- hover_pause : false, // If slideshow is paused from hover
- slideshow_interval : false, // Stores slideshow timer
- update_images : false, // Trigger to update images after slide jump
- options : {} // Stores assembled options list
- };
- /* Default Options
- ----------------------------*/
- $.supersized.defaultOptions = {
- // Functionality
- slideshow : 1, // Slideshow on/off
- autoplay : 1, // Slideshow starts playing automatically
- start_slide : 1, // Start slide (0 is random)
- stop_loop : 0, // Stops slideshow on last slide
- 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 : 750, // 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
- // Size & Position
- fit_always : 0, // Image will never exceed browser width or height (Ignores min. dimensions)
- fit_landscape : 0, // Landscape images will not exceed browser width
- fit_portrait : 1, // Portrait images will not exceed browser height
- min_width : 0, // Min width allowed (in pixels)
- min_height : 0, // Min height allowed (in pixels)
- horizontal_center : 1, // Horizontally center background
- vertical_center : 1, // Vertically center background
- // Components
- slide_links : 1, // Individual links for each slide (Options: false, 'num', 'name', 'blank')
- thumb_links : 1, // Individual thumb links for each slide
- thumbnail_navigation : 0 // Thumbnail navigation
- };
- $.fn.supersized = function(options){
- return this.each(function(){
- (new $.supersized(options));
- });
- };
- })(jQuery);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement