;(function($){ // $ will refer to jQuery within this closure
	$.fn.fsbackground = function(options)
	{
		var opts = $.extend({}, jQuery.fn.fsbackground.defaults, options);
		$this = $(this);
		var img_url = $this.css('background-image').substr(4).slice(0,-1);
		while(img_url.indexOf("\"") > -1){img_url = img_url.substring(0,img_url.indexOf("\""))+img_url.substring(img_url.indexOf("\"")+1);}// clean up url for IE
		$this.css('background-image', 'none');// remove background from origional element
		var positioning = $.browser.msie ? 'absolute' : 'fixed';
		$this.prepend("<div id='"+opts.div_name+"' style='position: absolute; top:0; left:0; z-index:-1'><img id='fsbg_image'style='position: "+positioning+"'/></div>");
		var loader = new Image ();
		loader.onload = function(){ $.fn.fsbackground.imageLoaded(loader); };//jQuery.fn.fsbackground.imageLoaded;
		loader.src = img_url;
		// return original object to support chaining
		return $this;
	};
	
	$.fn.fsbackground.imageLoaded = function (loader)
	{
		var bg= $('#'+jQuery.fn.fsbackground.defaults.div_name+' img');
		bg.attr('src', $(loader).attr('src'))
		jQuery.fn.fsbackground.bg_w = bg.width();
		jQuery.fn.fsbackground.bg_h = bg.height();

		jQuery(window).bind("resize",$.fn.fsbackground.resize);
		jQuery.fn.fsbackground.resize();
	};
	
	$.fn.fsbackground.resize = function ()
	{
		var theImage 	= jQuery('#background img');
		var newWidth, newHeight, offsetX, offsetY = 0;
		var maxWidth 	= jQuery(window).width();
		var maxHeight 	= jQuery(window).height();
		var imgWidth 	= jQuery.fn.fsbackground.bg_w;
		var imgHeight 	= jQuery.fn.fsbackground.bg_h;

		var img_ratio 	= imgWidth / imgHeight;
		var max_ratio 	= maxWidth / maxHeight;

		if (img_ratio > max_ratio)
		{
			newHeight 	= maxHeight;
			newWidth 	= maxHeight/imgHeight*imgWidth;
			offsetX		= (maxWidth - newWidth)/2;
			offsetY		= 0;
		}
		else
		{
			newWidth 	= maxWidth;
			newHeight 	= maxWidth/imgWidth*imgHeight;
			offsetX		= 0;
			offsetY 	= (maxHeight - newHeight)/2;
		}

		theImage.css('top', offsetY+"px");
		theImage.css('left', offsetX+"px");
		theImage.css('width', newWidth+"px");
		theImage.css('height', newHeight+"px");
	};
	// expose defaults
	$.fn.fsbackground.defaults = {
		div_name: 'background'
	};
})(jQuery); // plugin code ends