/* Background Stretcher jQuery Plugin © 2009 ajaxBlender.com For any questions please visit www.ajaxblender.com or email us at support@ajaxblender.com Version: 1.2 */ ;(function($){ /* Variables */ var container = null; var allImgs = '', allLIs = '', containerStr = ''; var element = this; var _bgStretcherPause = false; var _bgStretcherTm = null; $.fn.bgStretcher = function(settings){ settings = $.extend({}, $.fn.bgStretcher.defaults, settings); $.fn.bgStretcher.settings = settings; function _build(){ if(!settings.images.length){ return; } _genHtml(); containerStr = '#' + settings.imageContainer; container = $(containerStr); allImgs = '#' + settings.imageContainer + ' IMG'; allLIs = '#' + settings.imageContainer + ' LI'; $(allLIs).hide(); $(allLIs + ':first').show().addClass('bgs-current'); if(!container.length){ return; } $(window).resize(_resize); if(settings.slideShow && $(allImgs).length > 1){ _bgStretcherTm = setTimeout('$.fn.bgStretcher.slideShow()', settings.nextSlideDelay); } _resize(); }; function _resize(){ var winW = $(window).width(); var winH = $(window).height(); var imgW = 0, imgH = 0; // Update container's height container.width(winW); container.height(winH); // Non-proportional resize if(!settings.resizeProportionally){ imgW = winW; imgH = winH; } else { var initW = settings.imageWidth, initH = settings.imageHeight; var ratio = initH / initW; imgW = winW; imgH = winW * ratio; if(imgH < winH){ imgH = winH; imgW = imgH / ratio; } } // Apply new size for images if(!settings.resizeAnimate){ $(allImgs).width(imgW).height(imgH); } else { $(allImgs).animate({width: imgW, height: imgH}, 'normal'); } }; function _genHtml(){ var code = '
'; $(code).appendTo('body'); }; /* Start bgStretcher */ _build(); }; $.fn.bgStretcher.play = function(){ _bgStretcherPause = false; $.fn.bgStretcher._clearTimeout(); $.fn.bgStretcher.slideShow(); }; $.fn.bgStretcher._clearTimeout = function(){ if(_bgStretcherTm != null){ clearTimeout(_bgStretcherTm); _bgStretcherTm = null; } } $.fn.bgStretcher.pause = function(){ _bgStretcherPause = true; $.fn.bgStretcher._clearTimeout(); }; $.fn.bgStretcher.slideShow = function(){ var current = $(containerStr + ' LI.bgs-current'); var next = current.next(); if(!next.length){ next = $(containerStr + ' LI:first'); } $(containerStr + ' LI').removeClass('bgs-current'); next.addClass('bgs-current'); next.fadeIn( $.fn.bgStretcher.settings.slideShowSpeed ); current.fadeOut( $.fn.bgStretcher.settings.slideShowSpeed ); if(!_bgStretcherPause){ _bgStretcherTm = setTimeout('$.fn.bgStretcher.slideShow()', $.fn.bgStretcher.settings.nextSlideDelay); } }; /* Default Settings */ $.fn.bgStretcher.defaults = { imageContainer: 'bgstretcher', resizeProportionally: true, resizeAnimate: false, images: [], imageWidth: 1024, imageHeight: 768, nextSlideDelay: 3000, slideShowSpeed: 'normal', slideShow: true }; $.fn.bgStretcher.settings = {}; })(jQuery);