(function($){
	$.fn.extend({
		placeholder : function(options) {
			if (!options) {
				options = {};
			}
			
			return this.each(function() {
				var input = $(this);
				var wrapper = input.wrap("<span style='position: relative;line-height: 100%;display: inline-block; zoom: 1' />").parent();
				var label = $("<label for='" + input.attr("id") + "'>" + input.attr("placeholder") + "</label>").css({
					opacity : 0.65,
					position : "absolute",
					left : parseInt(input.css("padding-left")) + 2,
					top : options.top ? options.top : (isNaN(parseInt(input.css("top"))) ? 0 : parseInt(input.css("top"))) + parseInt(input.css("margin-top")) + parseInt(input.css("padding-top"))+ parseInt(input.css("border-top-width")),
					"font-size" : input.css("font-size")
				});
				wrapper.append(label);

				if (input.val().length) {
					label.hide();
				}
				
				input.focus(function() {
					$(this).parent().find("label").animate({ opacity: .3 }, "fast");
				}).keydown(function() {
					var t = this;
					setTimeout(function() {
						$(t).parent().find("label").css("display", (t.value.length) ? "none" : "");
					}, 0);
				}).blur(function() {
					$(this).parent().find("label").animate({ opacity: .65 }, "fast");
				}).attr("placeholder", "");
			});
		}
	});
})(jQuery);
