(function($) {
    // Global Namespace
    var jqez = {};

    // Define the plugin
    $.fn.ezBgResize = function(options) {
		
        // Set global to obj passed
        jqez = options;
		
        // If img option is string convert to array.
        // This is in preparation for accepting an slideshow of images.
        if (!$.isArray(jqez.img)) {
            var tmp_img = jqez.img;
            jqez.img = [tmp_img]
        }
		
        $("<img/>").attr("src", jqez.img).bind('load',function() {
            jqez.width = this.width;
            jqez.height = this.height;                        
			
            // Create a unique div container   
            if( $("div#jq_ez_bg").size() > 0 ){
                
//                $("div#jq_ez_bg").fadeOut(jqez.speed, function(){
                    $("div#jq_ez_bg").remove();
                    
                     $("body").append( $('<div/>',{id:'jq_ez_bg'}));

                    // Add the image to it.
                    $("#jq_ez_bg").html('<img src="' + jqez.img[0] + '" width="' + jqez.width + '" height="' + jqez.height + '" border="0">');

                    // First position object
                    $("#jq_ez_bg").css("visibility","hidden");
                     

                    // animation
                    //$("#jq_ez_bg").animate({opacity:"-=1"}, jqez.speed);
                    //$("#jq_ez_bg").fadeIn(jqez.speed);


                    // Overflow set to hidden so scroll bars don't mess up image size.
                    $("body").css({"overflow":"hidden"});

                    resizeImage();
//                });            
                
            }else{
                
                 $("body").append( $('<div/>',{id:'jq_ez_bg'}));

                // Add the image to it.
                $("#jq_ez_bg").html('<img src="' + jqez.img[0] + '" width="' + jqez.width + '" height="' + jqez.height + '" border="0">');

                // First position object
                $("#jq_ez_bg").css("visibility","hidden");    

                // Overflow set to hidden so scroll bars don't mess up image size.
                $("body").css({"overflow":"hidden"});

                resizeImage();
                
            }
            
            
        }).//added these lines to the script

        each(function(){

        if(this.complete || (jQuery.browser.msie && parseInt(jQuery.browser.version) == 6))

        $(this).trigger("load");

        });
    };

    $(window).bind("resize", function() {
        resizeImage();
    });
    
  
	
    // Actual resize function
    function resizeImage() {
	
        $("#jq_ez_bg").css({
            "position":"fixed",
            "top":"0px",
            "left":"0px",
            "z-index":"-1",
            "overflow":"hidden",
            "width":$(window).width() + "px",
            "height":$(window).height() + "px",
            "opacity" : jqez.opacity
        });
		
        // Image relative to its container
        $("#jq_ez_bg").children('img').css("position", "relative");

        // Resize the img object to the proper ratio of the window.
        var iw = $("#jq_ez_bg").children('img').width();
        var ih = $("#jq_ez_bg").children('img').height();
        
        if ($(window).width() > $(window).height()) {
            //console.log(iw, ih);
            if (iw > ih) {
                var fRatio = iw/ih;
                $("#jq_ez_bg").children('img').css("width",$(window).width() + "px");
                $("#jq_ez_bg").children('img').css("height",Math.round($(window).width() * (1/fRatio)));

                var newIh = Math.round($(window).width() * (1/fRatio));

                if(newIh < $(window).height()) {
                    var fRatio = ih/iw;
                    $("#jq_ez_bg").children('img').css("height",$(window).height());
                    $("#jq_ez_bg").children('img').css("width",Math.round($(window).height() * (1/fRatio)));
                }
            } else {
                var fRatio = ih/iw;
                $("#jq_ez_bg").children('img').css("height",$(window).height());
                $("#jq_ez_bg").children('img').css("width",Math.round($(window).height() * (1/fRatio)));
            }
        } else {
            var fRatio = ih/iw;
            $("#jq_ez_bg").children('img').css("height",$(window).height());
            $("#jq_ez_bg").children('img').css("width",Math.round($(window).height() * (1/fRatio)));
        }
		
        // Center the image
        if (typeof(jqez.center) == 'undefined' || jqez.center) {
            if ($("#jq_ez_bg").children('img').width() > $(window).width()) {
                var this_left = ($("#jq_ez_bg").children('img').width() - $(window).width()) / 2;
                $("#jq_ez_bg").children('img').css({
                    "top"  : 0,
                    "left" : -this_left
                });
            }
            if ($("#jq_ez_bg").children('img').height() > $(window).height()) {
                var this_height = ($("#jq_ez_bg").children('img').height() - $(window).height()) / 2;
                $("#jq_ez_bg").children('img').css({
                    "left" : 0,
                    "top" : -this_height
                });
            }
        }

        $("#jq_ez_bg").css({"visibility" : "visible",opacity:0});                
        $("#jq_ez_bg").animate({opacity:"+=1"}, jqez.speed);
        
        
        // Allow scrolling again
        $("body").css({
            "overflow":"auto"
        });
		
        
    }
})(jQuery);
