﻿//Background loader
//Requires jQuery
//Author : Riccardo Arena

;(function($) {
    //Private Methods

    $.fn.background = function(settings) {
        settings = $.extend({}, $.fn.background.defaults, settings);
        $.fn.background.settings = settings;

        function _build() {

            var code = '<div id="background-images">';

            code += '<div id="curr-image"></div>';

            code += '</div>';
            $(code).appendTo('body');

            $.fn.background.next();

            $(window).resize($.fn.background._resize);

            $.fn.background._resize();
        }



        _build();
    };

    $.fn.background._resize = function() {
        var container = $("background-images");
        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 (!$.fn.background.settings.resizeProportionally) {
            imgW = winW;
            imgH = winH;
        } else {
            var initW = 1024, initH = 768;
            var ratio = initH / initW;

            imgW = winW;
            imgH = winW * ratio;

            var tmpH = imgH - winH;
            if (imgH < winH) {
                imgH = winH;
                imgW = imgH / ratio;
            }
        }

        //	Apply new size for images
        if (tmpH > 0) {
            //$("#next-image").css("top", (-tmpH / 2) + "px");
            $("#curr-image").css("top", (-tmpH / 2) + "px");
        }
        //$("#next-image img").width(imgW).height(imgH);
        $("#curr-image img").width(imgW).height(imgH);
    };
    //Public Methods
    $.fn.background.changeGallery = function(arr) {
        $.fn.background.settings.images = new Array();
        //$.fn.background.settings.images = cpyArray(arr);
        $.fn.background.settings.images = arr;
        $.fn.background.settings.images.pop();
    }

    $.fn.background.play = function() {
        $.fn.background.settings.timeOut = setTimeout('$.fn.background.next();', $.fn.background.settings.delay);
    }

    $.fn.background.pause = function() {
		//("stoppati");
        //clearTimeout($.fn.background.settings.timeOut);
    }

	$.fn.background.stop = function(){
		
	}

    $.fn.background.selectImage = function(vWhat) {
        $.fn.background.settings.counter = 0;
        $.fn.background.pause();
        $.fn.background.settings.timeOut = setTimeout('$.fn.background.next();', $.fn.background.settings.delay);
    }

    $.fn.background.loadImage = function(vWhat) {
        $.fn.background.settings.counter = vWhat;
        $.fn.background.next();
    }

    $.fn.background.showLoading = function() {

    }
    $.fn.background.removeLoading = function() {
    if (navigator.appName != "Microsoft Internet Explorer") {
            $.fn.background._resize();
            $("#curr-image").fadeIn('slow', function() {  });
        } else {
            $("#curr-image").css("opacity", "1");
            $.fn.background._resize();
        }

    }
	
	$.fn.background.howToPlay = function (how){
		$.fn.background.settings.continuePlay = how;
	}

    $.fn.background.next = function() {
        if(!$.fn.background.settings.continuePlay){
			$.fn.background.pause();
		}
        if (!$.fn.background.settings.images) return;

        if ($.fn.background.settings.counter <= $.fn.background.settings.images.length - 1) {
            var winW = $(window).width();
            var winH = $(window).height();
            if (navigator.appName != "Microsoft Internet Explorer") {
                $("#curr-image").fadeOut("slow", function() {
                    $("#curr-image").empty();
                    $("#curr-image").html('');
                    //$("#curr-image").image({ src: "lib/CRLoadImage.aspx?fn=../" + $.fn.background.settings.images[$.fn.background.settings.counter] + "&sh=" + winH + "&sm=crop", onload: $.fn.background.showLoading(), oncomplete: $.fn.background.removeLoading() });
                    $("#curr-image").image({ src: "lib/GetImage.aspx?filename=../" + $.fn.background.settings.images[$.fn.background.settings.counter] + "&longsize=" + winW, onload: $.fn.background.showLoading, oncomplete: $.fn.background.removeLoading });
                    $.fn.background.settings.counter++;
					if($.fn.background.settings.continuePlay){
						$.fn.background.play();
					}
                });
            } else {
                $("#curr-image").empty();
                $("#curr-image").html('');
                //$("#curr-image").image({ src: "lib/CRLoadImage.aspx?fn=../" + $.fn.background.settings.images[$.fn.background.settings.counter] + "&sh=" + winH + "&sm=crop", onload: $.fn.background.showLoading(), oncomplete: $.fn.background.removeLoading() });
                $("#curr-image").image({ src: "lib/GetImage.aspx?filename=../" + $.fn.background.settings.images[$.fn.background.settings.counter] + "&longsize="+winW, onload: $.fn.background.showLoading(), oncomplete: $.fn.background.removeLoading() });
                $.fn.background.settings.counter++;
            }

        } else {
            $.fn.background.settings.counter = 0;
            $.fn.background.next();
        }

        selectCurrImg();
    }

    $.fn.background.prev = function() {
		var winW = $(window).width();
        var winH = $(window).height();
        if (!$.fn.background.settings.images) return;

        if ($.fn.background.settings.counter >= 0) {
            $("#curr-image").empty();
            $("#curr-image").html('');
			$.fn.background.settings.counter-=1;
                    //$("#curr-image").image({ src: "lib/CRLoadImage.aspx?fn=../" + $.fn.background.settings.images[$.fn.background.settings.counter] + "&sh=" + winH + "&sm=crop", onload: $.fn.background.showLoading(), oncomplete: $.fn.background.removeLoading() });
            $("#curr-image").image({ src: "lib/GetImage.aspx?filename=../" + $.fn.background.settings.images[$.fn.background.settings.counter-1] + "&longsize=" + winW, onload: $.fn.background.showLoading, oncomplete: $.fn.background.removeLoading });
        } else {
            $.fn.background.settings.counter = $.fn.background.settings.images.length - 1;
            $.fn.background.prev();
        }

        selectCurrImg(1);
    }

    $.fn.background.defaults = {
        timeOut: null,
        resizeProportionally: true,
        resizeAnimate: false,
        images: [],
        imageWidth: 1024,
        imageHeight: 768,
        delay: 15000,
        slideShowSpeed: 'slow',
        slideShow: true,
        counter: 0,
		continuePlay:true
		};
    $.fn.background.settings = {};
})(jQuery);
