/*
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');
                    });
                    // Call Out #1 slideshow
                    //					$($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: true
    };
    $.fn.bgStretcher.settings = {};
})(jQuery);
