/*! Superslides - v0.6.3-wip - 2013-12-17 * https://github.com/nicinabox/superslides * Copyright (c) 2013 Nic Aitch; Licensed MIT */ (function (window, $) { var Superslides, plugin = 'superslides'; Superslides = function (el, options) { this.options = $.extend({ play: false , animation_speed: 600 , animation_easing: 'swing' , animation: 'slide' , inherit_width_from: window , inherit_height_from: window , pagination: true , hashchange: false , scrollable: true , elements: { preserve: '.preserve' , nav: '.slides-navigation' , container: '.slides-container' , pagination: '.slides-pagination' } }, options); var that = this , $control = $('
', { "class": 'slides-control' }) , multiplier = 1; this.$el = $(el); this.$container = this.$el.find(this.options.elements.container); // Private Methods var initialize = function () { multiplier = that._findMultiplier(); that.$el.on('click', that.options.elements.nav + " a", function (e) { e.preventDefault(); that.stop(); if ($(this).hasClass('next')) { that.animate('next', function () { that.start(); }); } else { that.animate('prev', function () { that.start(); }); } }); $(document).on('keyup', function (e) { if (e.keyCode === 37) { that.animate('prev'); } if (e.keyCode === 39) { that.animate('next'); } }); $(window).on('resize', function () { setTimeout(function () { var $children = that.$container.children(); that.width = that._findWidth(); that.height = that._findHeight(); $children.css({ width: that.width , left: that.width }); that.css.containers(); that.css.images(); }, 10); }); if (that.options.hashchange) { $(window).on('hashchange', function () { var hash = that._parseHash() , index; index = that._upcomingSlide(hash); if (index >= 0 && index !== that.current) { that.animate(index); } }); } that.pagination._events(); that.start(); return that; }; var css = { containers: function () { if (that.init) { that.$el.css({ height: that.height }); that.$control.css({ width: that.width * multiplier , left: -that.width }); that.$container.css({}); } else { $('body').css({ margin: 0 }); that.$el.css({ position: 'relative' , overflow: 'hidden' , width: '100%' , height: that.height }); that.$control.css({ position: 'relative' , transform: 'translate3d(0)' , height: '100%' , width: that.width * multiplier , left: -that.width }); that.$container.css({ display: 'none' , margin: '0' , padding: '0' , listStyle: 'none' , position: 'relative' , height: '100%' }); } if (that.size() === 1) { that.$el.find(that.options.elements.nav).hide(); } } , images: function () { var $images = that.$container.find('img').not(that.options.elements.preserve) $images.removeAttr('width').removeAttr('height').css({ "-webkit-backface-visibility": 'hidden' , "-ms-interpolation-mode": 'bicubic' , "position": 'absolute' , "left": '0' , "top": '0' , "z-index": '-1' , "max-width": 'none' }); $images.each(function () { var image_aspect_ratio = that.image._aspectRatio(this) , image = this; if (!$.data(this, 'processed')) { var img = new Image(); img.onload = function () { that.image._scale(image, image_aspect_ratio); that.image._center(image, image_aspect_ratio); $.data(image, 'processed', true); }; img.src = this.src; } else { that.image._scale(image, image_aspect_ratio); that.image._center(image, image_aspect_ratio); } }); } , children: function () { var $children = that.$container.children(); if ($children.is('img')) { $children.each(function () { if ($(this).is('img')) { $(this).wrap('
'); // move id attribute var id = $(this).attr('id'); $(this).removeAttr('id'); $(this).parent().attr('id', id); } }); $children = that.$container.children(); } if (!that.init) { $children.css({ display: 'none' , left: that.width * 2 }); } $children.css({ position: 'absolute' , overflow: 'hidden' , height: '100%' , width: that.width , top: 0 , zIndex: 0 }); } } var fx = { slide: function (orientation, complete) { var $children = that.$container.children() , $target = $children.eq(orientation.upcoming_slide); $target.css({ left: orientation.upcoming_position , display: 'block' }); that.$control.animate({ left: orientation.offset }, that.options.animation_speed, that.options.animation_easing, function () { if (that.size() > 1) { that.$control.css({ left: -that.width }); $children.eq(orientation.upcoming_slide).css({ left: that.width , zIndex: 2 }); if (orientation.outgoing_slide >= 0) { $children.eq(orientation.outgoing_slide).css({ left: that.width , display: 'none' , zIndex: 0 }); } } complete(); }); } , fade: function (orientation, complete) { var that = this , $children = that.$container.children() , $outgoing = $children.eq(orientation.outgoing_slide) , $target = $children.eq(orientation.upcoming_slide); $target.css({ left: this.width , opacity: 0 , display: 'block' }).animate({ opacity: 1 }, that.options.animation_speed, that.options.animation_easing); if (orientation.outgoing_slide >= 0) { $outgoing.animate({ opacity: 0 }, that.options.animation_speed, that.options.animation_easing, function () { if (that.size() > 1) { $children.eq(orientation.upcoming_slide).css({ zIndex: 2 }); if (orientation.outgoing_slide >= 0) { $children.eq(orientation.outgoing_slide).css({ opacity: 1 , display: 'none' , zIndex: 0 }); } } complete(); }); } else { $target.css({ zIndex: 2 }); complete(); } } }; fx = $.extend(fx, $.fn.superslides.fx); var image = { _centerY: function (image) { var $img = $(image); $img.css({ top: (that.height - $img.height()) / 2 }); } , _centerX: function (image) { var $img = $(image); $img.css({ left: (that.width - $img.width()) / 2 }); } , _center: function (image) { that.image._centerX(image); that.image._centerY(image); } , _aspectRatio: function (image) { if (!image.naturalHeight && !image.naturalWidth) { var img = new Image(); img.src = image.src; image.naturalHeight = img.height; image.naturalWidth = img.width; } return image.naturalHeight / image.naturalWidth; } , _scale: function (image, image_aspect_ratio) { image_aspect_ratio = image_aspect_ratio || that.image._aspectRatio(image); var container_aspect_ratio = that.height / that.width , $img = $(image); if (container_aspect_ratio > image_aspect_ratio) { $img.css({ height: that.height , width: that.height / image_aspect_ratio }); } else { $img.css({ height: that.width * image_aspect_ratio , width: that.width }); } } }; var pagination = { _setCurrent: function (i) { if (!that.$pagination) { return; } var $pagination_children = that.$pagination.children(); $pagination_children.removeClass('current'); $pagination_children.eq(i).addClass('current'); } , _addItem: function (i) { var slide_number = i + 1 , href = slide_number , $slide = that.$container.children().eq(i) , slide_id = $slide.attr('id'); if (slide_id) { href = slide_id; } var $item = $("", { 'href': "#" + href , 'text': href }); $item.appendTo(that.$pagination); } , _setup: function () { if (!that.options.pagination || that.size() === 1) { return; } var $pagination = $("