(function($){
	$.fn.mask = function(label){
		this.unmask();
		if(this.css("position")=="static" && !this.is('body')){
			this.addClass("masked-relative");
		}
		this.addClass("masked");
		var div=$('<div class="loadmask"></div>');
		div.css({
			filter:'alpha(opacity=50)',
			mozOpacity:0.5,
			top : this.is('body') ? $(document).scrollTop() : this.scrollTop(),
			left : this.is('body') ? $(document).scrollLeft() : this.scrollLeft()
		});
		if(navigator.userAgent.toLowerCase().indexOf("msie") > -1){
			div.height(this.height()+parseInt(this.css("padding-top"))+parseInt(this.css("padding-bottom")));
			div.width(this.width()+parseInt(this.css("padding-left"))+parseInt(this.css("padding-right")));
		}
		if(navigator.userAgent.toLowerCase().indexOf("msie 6")>-1){
			this.find("select").addClass("masked-hidden");
		}
		this.append(div);
		if(typeof label=="string") {
			var msg=$('<div class="loadmask-msg" style="display:none;"></div>');
			msg.append('<div>'+label+'</div>');
			this.append(msg);
			msg.css("top",Math.round(this.height()/2-(msg.height()-parseInt(msg.css("padding-top"))-parseInt(msg.css("padding-bottom")))/2)+"px");
			msg.css("left",Math.round(this.width()/2-(msg.width()-parseInt(msg.css("padding-left"))-parseInt(msg.css("padding-right")))/2)+"px");
			msg.show();
		}
	};
	$.fn.unmask = function(label){
		this.find(".loadmask-msg,.loadmask").remove();
		this.removeClass("masked");
		this.removeClass("masked-relative");
		this.find("select").removeClass("masked-hidden");
	};
})(jQuery);
