/*
	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 isiPad = navigator.userAgent.match(/iPad/i) != null;
						if(isiPad) {
								winW = $(document).width();
								winH = $(document).height();
								//alert(winW + " - " + winH);
						}
						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 = '<div id="' + settings.imageContainer + '" class="bgstretcher"><ul>';
						for(i = 0; i < settings.images.length; i++){
								code += '<li><img src="' + settings.images[i] + '" alt="" /></li>';
						}
						code += '</ul></div>';
						$(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:             7000,
				slideShowSpeed:             'normal',
				slideShow:                  true
		};
		$.fn.bgStretcher.settings = {};
})(jQuery);
