/* JS
* Copyright 2009 noponies.
* http://www.noponies.com/dev/jquery-npfullbrowser/
* Version 0.1 Beta - Intial Release to the wild - comments, yes please!
*/
(function($){

	var img_prop;
	var imageArray = [];
	var defaults = {};
	var firstLoad = true;

	$.fn.extend({
		npFullBgImg: function(imgPath, options) {
			defaults = {
				 fadeInSpeed: 1000,
   				 center: false
			};
			var opts = $.extend(defaults, options);
			var targetContainer = $(this);
			//create image
			var img  = new Image();
			//add to array
 	 		imageArray.unshift(img);

	        $(img).load(function () {
			
	        	if(firstLoad == false)
					$(targetContainer).children().eq(0).fadeOut(defaults.fadeInSpeed).css('position','absolute');
				
	        	//this is a hack to stop a flash of the image sometimes
  				//$(img).fadeOut('fast');
				
				$(img).css({display:'none', left:0, top:0});

	            //add image to container
	            $(targetContainer).append(img);

	            //resize image
				resizeImg($(window).width(), $(window).height(), $(img).width(), $(img).height());
					
				$(targetContainer).fadeIn(defaults.fadeInSpeed)
				
				if(firstLoad == true)
 	 				firstLoad = false;
				
	            $(img).fadeIn(defaults.fadeInSpeed * 1.5, function () {

		            if(imageArray.length > 1) {
		            	imageArray.pop();
		            	$(targetContainer).children().eq(0).remove();
		            }

		          	if( typeof opts.callback == 'function' ){
						opts.callback.call(this, targetContainer, options);
					}
	            });
	        }).error(function () {
	            // got an error
	            //alert('image not loaded');
	        }).attr('src', imgPath);
	    	}
		});

	$(window).bind("resize", function(){
			resizeImg($(window).width(), $(window).height(), $(imageArray[0]).width(), $(imageArray[0]).height());
	});

  	function resizeImg(sw, sh, imgw, imgh){
		if ((sh / sw) > (imgh / imgw)) {
			img_prop = imgw/imgh;
			destHeight = sh;
			destWidth = sh * img_prop;
		} else {
			img_prop = imgh/imgw;
			destWidth = sw;
			destHeight = sw * img_prop;
		}

		$(imageArray[0]).attr({
			width: destWidth,
			height: destHeight
		});
			
		if(defaults.center) {
			var xVal = sw * .5 - $(imageArray[0]).width() * .5;
			var yVal = sh * .5 - $(imageArray[0]).height() * .5;
			$(imageArray[0]).css({left:xVal, top: yVal});
		}
	}


})(jQuery);
