(function($){

	$.fn.dropShadow = function(opts) {
		var BASE_URL = "http://tools.vezea.net/shadow";
		var DEGREE = 2;
		var OPACITY = 0.6;

		//
		// Reject versions of IE.
		//
		if ($.browser.msie && $.browser.version < 8) return;
		if ($.browser.msie) return;

		var options = $.extend({
			degree: DEGREE,
			opacity: OPACITY
		}, opts || {});

		this.each(function(){
			var $this = $(this);
			var $parent = $this.parent();

			//
			// Drop shadow URL.
			//
			var url = BASE_URL + "?" + [
				"zIndex=" + options.degree,
				"opacity=" + options.opacity,
				"width=" + $this.outerWidth() + "px",
				"height=" + $this.outerHeight() + "px"
			].join("&");

			//
			// Ensure parent is positioned.
			//
			$parent.css({
				position: $parent.css("position") == "absolute" ? "absolute" : "relative"
			});

			//
			// Add drop-shadow image.
			//
			$this.before($("<img/>").attr("src",url).css({
				position: "absolute",
				//left: $this.position().left - options.degree + "px",
				//top:  $this.position().top  - options.degree + "px"
				left: $this.offset().left - $parent.offset().left - options.degree + "px",
				top:  $this.offset().top  - $parent.offset().top  - options.degree + "px"
			}));

			//
			// Ensure this element is positioned (above shadow).
			//
			$this.css({
				position: $this.css("position") == "absolute" ? "absolute" : "relative",
				zIndex: 2
			});

		});

		return this;
	};

})(jQuery);
