/*
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('
');
});
function addSlide(slideImage, slideVideo) {
if (slideVideo) {
return $(' Your browser does not support the video tag. ');
//return $(' ');
} else {
return $(' ');
}
}
$.supersized = function (options) {
/* Variables
----------------------------*/
var el = '#supersized',
base = this;
// 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._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 + ' ';
if (thisSlide == base.options.start_slide - 1) {
// Slide links
if (base.options.slide_links) markers = markers + '' + markerContent + ' ';
// 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 + ' ';
};
} else {
// Slide links
if (base.options.slide_links) markers = markers + '' + markerContent + ' ';
// 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 + ' ';
};
}
thisSlide++;
}
if (base.options.slide_links) $(vars.slide_list).html(markers);
if (base.options.thumb_links && vars.thumb_tray.length) {
$(vars.thumb_tray).append('');
}
$(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($(" ").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($(" ").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
}
// If links should open in new window
var linkTarget = base.options.new_window ? ' target="_blank"' : '';
// 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 imageLink = (base.options.slides[loadPrev].url) ? "href='" + base.options.slides[loadPrev].url + "'" : "";
var imgPrev = addSlide(base.options.slides[loadPrev].image, base.options.slides[loadPrev].video);
var slidePrev = base.el + ' li:eq(' + loadPrev + ')';
imgPrev.appendTo(slidePrev).wrap(' ').parent().parent().addClass('image-loading prevslide');
imgPrev.load(function () {
$(this).data('origWidth', $(this).width()).data('origHeight', $(this).height());
base.resizeNow(); // Resize background image
}); // End Load
}
} else {
// Slideshow turned off if there is only one slide
base.options.slideshow = 0;
$("#prevslide").hide();
}
// Set current image
imageLink = (api.getField('url')) ? "href='" + api.getField('url') + "'" : "";
var img = addSlide(api.getField('image'), api.getField('video'));
var slideCurrent = base.el + ' li:eq(' + vars.current_slide + ')';
if (api.getField('video')) {
img.appendTo(slideCurrent).parent().addClass('image-loading activeslide');
if ((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPad/i))) {
base._origDim(img);
base.resizeNow(); // Resize background image
base.launch();
if (typeof theme != 'undefined' && typeof theme._init == "function") theme._init(); // Load Theme
img[0].addEventListener('playing', function () {
if (!(vars.is_paused)) {
api.playToggle();
}
}, false);
} else {
function x() {
console.log(img[0].readyState);
if (img[0].readyState >= 2) {
base._origDim($(this));
base.resizeNow(); // Resize background image
base.launch();
if (typeof theme != 'undefined' && typeof theme._init == "function") theme._init(); // Load Theme
img[0].addEventListener('playing', function () {
if (!(vars.is_paused)) {
api.playToggle();
}
}, false);
} else {
setTimeout(function () { x() }, 30);
}
}
x();
}
} else {
img.appendTo(slideCurrent).wrap(' ').parent().parent().addClass('image-loading activeslide');
img.load(function () {
base._origDim($(this));
base.resizeNow(); // Resize background image
base.launch();
if (typeof theme != 'undefined' && typeof theme._init == "function") theme._init(); // Load Theme
});
}
var url = window.location.pathname;
var urlarray = url.split("/");
if (urlarray[1] == "video" || urlarray[1] == "worldnewsfull") {
img.prop('autoplay', true);
}
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
imageLink = (base.options.slides[loadNext].url) ? "href='" + base.options.slides[loadNext].url + "'" : "";
var imgNext = addSlide(base.options.slides[loadNext].image, base.options.slides[loadNext].video);
var slideNext = base.el + ' li:eq(' + loadNext + ')';
imgNext.appendTo(slideNext).wrap(' ').parent().parent().addClass('image-loading');
imgNext.load(function () {
$(this).data('origWidth', $(this).width()).data('origHeight', $(this).height());
base.resizeNow(); // Resize background image
}); // End Load
}
/*-----End load initial images-----*/
if ((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPad/i))) {
} else {
// Hide elements to be faded in
base.$el.css('visibility', 'hidden');
$('.load-item').hide();
}
};
/* 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');
if (base.options.slides.length > 1) {
$('.load-item').show();
} else {
$('.load-item').hide();
}
// Keyboard Navigation
if (base.options.keyboard_nav) {
$(document.documentElement).keyup(function (event) {
if (vars.in_animation) return false; // Abort if currently animating
if ($(document.activeElement).is("input, textarea")) return false; // Abort if active element is an input or a textarea.
// 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 () {
//alert($(vars.slide_list + '> li').index(this) + 1)
index = $(vars.slide_list + '> li').index(this) ;
targetSlide = index + 1;
var x = window.location.pathname
window.location.href = window.location.protocol + "//" + window.location.hostname + '/fullscreen/' + targetSlide + '/';
// 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;
window.location.href = window.location.protocol + "//" + window.location.hostname + '/fullscreen/' + targetSlide + '/';
//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) {
if ($(this).width() > browserwidth) {
$(this).css('right', (-1 * (browserwidth - $(this).width()) / 2));
} else {
$(this).css('right', ((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 () {
var nextImageUrl = $("#NextImageURL").val();
if (nextImageUrl.length > 0) {
document.location.href = nextImageUrl;
}
return false;
// alert(0);
//alert(nextImageUrl);
if ($('#supersized li video').length > 0) {
if ($('#supersized li video').length == 1) {
$('#supersized li video').get(0).pause();
document.getElementsByTagName('video')[0].addEventListener('playing', function () {
if (!(vars.is_paused)) {
api.playToggle();
}
}, false);
} else if ($('#supersized li video').length > 1) {
var x = document.getElementsByTagName('video');
for (counterii = 0; counterii < x.length; counterii++) {
x[counterii].pause();
x[counterii].addEventListener('playing', function () {
if (!(vars.is_paused)) {
api.playToggle();
}
}, false);
}
}
var url = window.location.pathname;
var urlarray = url.split("/");
if (urlarray[1] != "video") {
$("#supersized li video").unbind("click");
$('#supersized li video').click(function () {
if (!(vars.is_paused)) {
api.playToggle();
}
});
}
}
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
// 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()) {
// If links should open in new window
var linkTarget = base.options.new_window ? ' target="_blank"' : '';
imageLink = (base.options.slides[loadSlide].url) ? "href='" + base.options.slides[loadSlide].url + "'" : ""; // If link exists, build it
var img = addSlide(base.options.slides[loadSlide].image, base.options.slides[loadSlide].video);
img.appendTo(targetList).wrap(' ').parent().parent().addClass('image-loading').css('visibility', 'hidden');
img.load(function () {
base._origDim($(this));
base.resizeNow();
}); // End Load
};
// 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($(" ").attr("src", base.options.slides[prevThumb].image));
// Load next thumbnail
nextThumb = loadSlide;
$(vars.next_thumb).html($(" ").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.css({ opacity: 0, 'visibility': 'visible' }).animate({ opacity: 1, avoidTransforms: false }, base.options.transition_speed, function () { base.afterAnimation(); });
break;
case 2: case 'slideTop': // Slide Top
nextslide.css({ top: -base.$el.height(), 'visibility': 'visible' }).animate({ top: 0, avoidTransforms: false }, base.options.transition_speed, function () { base.afterAnimation(); });
break;
case 3: case 'slideRight': // Slide Right
nextslide.css({ left: base.$el.width(), 'visibility': 'visible' }).animate({ left: 0, avoidTransforms: false }, base.options.transition_speed, function () { base.afterAnimation(); });
break;
case 4: case 'slideBottom': // Slide Bottom
nextslide.css({ top: base.$el.height(), 'visibility': 'visible' }).animate({ top: 0, avoidTransforms: false }, base.options.transition_speed, function () { base.afterAnimation(); });
break;
case 5: case 'slideLeft': // Slide Left
nextslide.css({ left: -base.$el.width(), 'visibility': 'visible' }).animate({ left: 0, avoidTransforms: false }, base.options.transition_speed, function () { base.afterAnimation(); });
break;
case 6: case 'carouselRight': // Carousel Right
nextslide.css({ left: base.$el.width(), '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.css({ left: -base.$el.width(), '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 () {
var prevImageUrl = $("#PreviousImageURL").val();
//alert(nextImageUrl);
if (prevImageUrl.length > 0) {
document.location.href = prevImageUrl;
}
return false;
if ($('#supersized li video').length > 0) {
if ($('#supersized li video').length == 1) {
$('#supersized li video').get(0).pause();
document.getElementsByTagName('video')[0].addEventListener('playing', function () {
if (!(vars.is_paused)) {
api.playToggle();
}
}, false);
} else if ($('#supersized li video').length > 1) {
var x = document.getElementsByTagName('video');
for (counterii = 0; counterii < x.length; counterii++) {
x[counterii].pause();
x[counterii].addEventListener('playing', function () {
if (!(vars.is_paused)) {
api.playToggle();
}
}, false);
}
}
var url = window.location.pathname;
var urlarray = url.split("/");
if (urlarray[1] != "video") {
$("#supersized li video").unbind("click");
$('#supersized li video').click(function () {
if (!(vars.is_paused)) {
api.playToggle();
}
});
}
}
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
// 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()) {
// If links should open in new window
var linkTarget = base.options.new_window ? ' target="_blank"' : '';
imageLink = (base.options.slides[loadSlide].url) ? "href='" + base.options.slides[loadSlide].url + "'" : ""; // If link exists, build it
var img = addSlide(base.options.slides[loadSlide].image, base.options.slides[loadSlide].video);
img.appendTo(targetList).wrap(' ').parent().parent().addClass('image-loading').css('visibility', 'hidden');
img.load(function () {
base._origDim($(this));
base.resizeNow();
}); // End Load
};
// 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($(" ").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($(" ").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.css({ opacity: 0, 'visibility': 'visible' }).animate({ opacity: 1, avoidTransforms: false }, base.options.transition_speed, function () { base.afterAnimation(); });
break;
case 2: case 'slideTop': // Slide Top (reverse)
nextslide.css({ top: base.$el.height(), 'visibility': 'visible' }).animate({ top: 0, avoidTransforms: false }, base.options.transition_speed, function () { base.afterAnimation(); });
break;
case 3: case 'slideRight': // Slide Right (reverse)
nextslide.css({ left: -base.$el.width(), 'visibility': 'visible' }).animate({ left: 0, avoidTransforms: false }, base.options.transition_speed, function () { base.afterAnimation(); });
break;
case 4: case 'slideBottom': // Slide Bottom (reverse)
nextslide.css({ top: -base.$el.height(), 'visibility': 'visible' }).animate({ top: 0, avoidTransforms: false }, base.options.transition_speed, function () { base.afterAnimation(); });
break;
case 5: case 'slideLeft': // Slide Left (reverse)
nextslide.css({ left: base.$el.width(), 'visibility': 'visible' }).animate({ left: 0, avoidTransforms: false }, base.options.transition_speed, function () { base.afterAnimation(); });
break;
case 6: case 'carouselRight': // Carousel Right (reverse)
nextslide.css({ left: -base.$el.width(), 'visibility': 'visible' }).animate({ left: 0, avoidTransforms: false }, base.options.transition_speed, function () { base.afterAnimation(); });
liveslide.css({ left: 0 }).animate({ left: base.$el.width(), avoidTransforms: false }, base.options.transition_speed);
break;
case 7: case 'carouselLeft': // Carousel Left (reverse)
nextslide.css({ left: base.$el.width(), 'visibility': 'visible' }).animate({ left: 0, avoidTransforms: false }, base.options.transition_speed, function () { base.afterAnimation(); });
liveslide.css({ left: 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
// 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) {
// If links should open in new window
var linkTarget = base.options.new_window ? ' target="_blank"' : '';
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()) {
// If links should open in new window
var linkTarget = base.options.new_window ? ' target="_blank"' : '';
imageLink = (base.options.slides[loadSlide].url) ? "href='" + base.options.slides[loadSlide].url + "'" : ""; // If link exists, build it
var img = addSlide(base.options.slides[loadSlide].image, base.options.slides[loadSlide].video);
img.appendTo(targetList).wrap(' ').parent().parent().addClass('image-loading').css('visibility', 'hidden');
img.load(function () {
base._origDim($(this));
base.resizeNow();
}); // End Load
};
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()) {
// If links should open in new window
var linkTarget = base.options.new_window ? ' target="_blank"' : '';
imageLink = (base.options.slides[loadSlide].url) ? "href='" + base.options.slides[loadSlide].url + "'" : ""; // If link exists, build it
var img = addSlide(base.options.slides[loadSlide].image, base.options.slides[loadSlide].video);
img.appendTo(targetList).wrap(' ').parent().parent().addClass('image-loading').css('visibility', 'hidden');
img.load(function () {
base._origDim($(this));
base.resizeNow();
}); // End Load
};
base.prevSlide();
}
};
/* Get Original Dimensions
----------------------------*/
base._origDim = function (targetSlide) {
targetSlide.data('origWidth', targetSlide.width()).data('origHeight', targetSlide.height());
};
/* After Slide Animation
----------------------------*/
base.afterAnimation = function () {
// 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
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);