jQuery.blocker = {
	arEvent : ["focus", "click", "dblclick", "mousedown", "mouseup", "mousemove", "mouseover", "mouseout", "mouseenter", "mouseleave", "change", "select", "submit", "keydown", "keypress", "keyup"],
	block :  function(field) {
		var a = $(field);
		if(!field.blocker)this.init(field);
		for(i in this.arEvent){a.bind(this.arEvent[i], this.disable);}
		field.blocker.css('display', 'block');	
	},
	unblock : function(field){
		//alert(a);
		var a = $(field);
		if(!field.blocker)this.init(field);
		for(i in this.arEvent){a.unbind(this.arEvent[i], this.disable);}
		field.blocker.css('display', 'none');
	},
	disable : function(evt){$(this).trigger('blur');evt.preventDefault();return false;},
	init : function(field){
		var a = $(field);
		var off=a.offset();
		field.blocker = $('<div/>').css({left:off.left+'px',top:off.top+'px',width:a[0].offsetWidth+'px',height:a[0].offsetHeight+'px',position:'absolute',opacity:0.7}).addClass('disabled').appendTo(a.parent()).removeAttr('disabled');
		$(window).resize(function(){var off=a.offset();field.blocker.css({left:off.left+'px',top:off.top+'px'})});
	}	
}
jQuery.fn.disable = function() {
	return this.each(function(idx, o) {
		jQuery.blocker.block(this);
	});
	return this;
};
jQuery.fn.enable = function() {
	return this.each(function(idx, o) {
		jQuery.blocker.unblock(this);
	});
	return this;
};