﻿/*
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('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 = '<div id="' + settings.imageContainer + '" class="bgstretcher"><ul>';
			for (i = 0; i < settings.images.length; i++) {
				code += '<li id="' + i + '"><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();
		slideShow();

	};

	$.fn.bgStretcher._clearTimeout = function () {
		if (_bgStretcherTm != null) {
			clearTimeout(_bgStretcherTm);
			_bgStretcherTm = null;
		}
	}

	$.fn.bgStretcher.pause = function () {
		_bgStretcherPause = true;
		$.fn.bgStretcher._clearTimeout();
	};

	//	loadSlide = function(i){
	//		var $slides = $(containerStr).find('li');
	//		if($slides.length){
	//			$slides.each(function(j){
	//				$(this).removeClass('bgs-current');
	//				if (i+1==j)
	//					$(this).addClass('bgs-current');
	//			});
	//		}
	//		$.fn.bgStretcher._clearTimeout();
	//		slideShow();
	//	};

	slideShow = function (slideNum) { 
       
		    var current = $(containerStr + ' LI.bgs-current');
		    var next;
            if ( slideNum != null ) {
                next = $(containerStr + ' LI#' + (slideNum));
                _bgStretcherPause = true;
                $.fn.bgStretcher.settings.nextSlideDelay = 0;
                $.fn.bgStretcher.settings.slideShowSpeed = 0;
            } else if (_bgStretcherPause != true) {
                $.fn.bgStretcher.settings.nextSlideDelay = 9000;
                next = current.next();
            } else {
                next = null;
            }

            if ( _bgStretcherPause != true )
            {
		        if (!next.length) {
			        next = $(containerStr + ' LI:first');
		        }
            }

            if ( next != null )
            {
		        $(containerStr + ' LI').removeClass('bgs-current');
		        next.addClass('bgs-current');

		        next.fadeIn($.fn.bgStretcher.settings.slideShowSpeed);
		        current.fadeOut($.fn.bgStretcher.settings.slideShowSpeed);
            }
		    
            if (_bgStretcherPause != true) {
			    _bgStretcherTm = setTimeout('slideShow()', $.fn.bgStretcher.settings.nextSlideDelay);
		    }

            if ( slideNum != null ) {
		        setSlideNoAndFirst(slideNum + 'a', true);
	        } else if ( $.fn.bgStretcher.settings.slideShowSpeed != 0) { 
		        setSlideNoAndFirst($(current).attr('id') + 'a', false);
            }
    };

	setSlideNoAndFirst = function (currentId, fromClick) {
		var $slides = $(containerStr).find('li');
		var $slideNo = $('.slideNo');
		var $First = $('.First .callOut');
		if ($First.length && $slideNo.length) {
            var currentImageIndex = $('.On').html() - 1;
			$slides.each(function (i) {
				if ($(this).hasClass('bgs-current')) {
					$($slideNo).each(function (j) {
						$(this).removeClass('On');
						if (i == j)
							$(this).addClass('On');
					});
					$($First).each(function (k) {
                        if (this.id == currentId)
                        {  
                            var nextImageId = parseInt(currentId, 10)+1;
                            if (nextImageId == 4 && fromClick == false)
                                    nextImageId = 0;
                            var href = $('.First A');
                            if ( fromClick == true ) {
                                var currentImage = $('.First #' + currentImageIndex + 'a');
                                currentImage.fadeOut($.fn.bgStretcher.settings.slideShowSpeed);
                                $(this).fadeIn($.fn.bgStretcher.settings.slideShowSpeed);
                                nextImageId--;
                            } else {
                                var nextImage = $('.First #' + nextImageId + 'a');
                                nextImage.fadeIn($.fn.bgStretcher.settings.slideShowSpeed);
                                $(this).fadeOut($.fn.bgStretcher.settings.slideShowSpeed);
                            }
                            if ( nextImageId == 0 )
                                href.attr('href','/world-of.html');
                            else if ( nextImageId == 1 )
                                href.attr('href','/collection/index.html');
                            else if ( nextImageId == 2 )
                                href.attr('href','/store/productslist.aspx?categoryid=300&PageNo=0');
                            else if ( nextImageId == 3 )
                                href.attr('href','/store/productslist.aspx?categoryid=700&PageNo=0');
                        }
					});
				}
			});
		}
	};

	/*  Default Settings  */
	$.fn.bgStretcher.defaults = {
		imageContainer: 'bgstretcher',
		resizeProportionally: true,
		resizeAnimate: false,
		images: [],
		imageWidth: 1024,
		imageHeight: 768,
		nextSlideDelay: 3000,
		slideShowSpeed: 'normal',
		slideShow: false
	};
	$.fn.bgStretcher.settings = {};
})(jQuery);
