(function($){

	$.fn.showLoading = function(o){
		var defaults = {
			style	: "default"
		};
		
		var options = $.extend({}, defaults, o || {});
		
		return this.each(function(){
			var el = $(this);
			var $load = el.find('> div.ui-loading-layer');
			if (!$load.size()){
				if (options.style == "progressbar"){
					$load = $('<div class="ui-loading-layer"><div class="ui-loading-progress"></div></div>')
				} else {
					$load = $('<div class="ui-loading-layer"><div class="ui-loading-mask"></div><div class="ui-loading-body"></div></div>');
					if (!/^(relative|absolute)$/.test(el.css('position')))
						el.css('position', 'relative');
					if (!/^(relative|absolute)$/.test(el.parent().css('position')))
						el.parent().css('position', 'relative');
					$load.width(el.width()+parseInt(el.css('padding-left'))+parseInt(el.css('padding-right')))
						.height(el.height()+parseInt(el.css('padding-top'))+parseInt(el.css('padding-bottom')))
						.css({'top' : '0px', 'left' : '0px', 'position' : 'absolute', 'z-index' : 97});
					$load.find('.ui-loading-mask').css({'width' : '100%', 'height' : '100%', 'position' : 'absolute', 'z-index' : 98});
					$load.find('.ui-loading-body').css({'z-index' : 99}).each(function(){
						if ($(this).css('left') == '50%'){
							$(this).css('left', ($load.width() - $(this).width()) / 2 + 'px');
						}
					});
				}
				$load.prependTo(el);
			}
			$load.show();
		});
	}
	
	$.fn.hideLoading = function(o){
		var defaults = {
			timeout 	: 0
		};
		
		var options = $.extend({}, defaults, o || {});
		
		return this.each(function(){
			var el = $(this);
			if (el.find('> div.ui-loading-layer').size()){
				el.find('> div.ui-loading-layer').hide();
			} else {
				if (options.timeout && typeof $.timer == 'function') 
					$.timer(options.timeout, function(timer){
						el.find('> div.ui-loading-layer').hide().trigger('stop');
						timer.stop();
				}); else el.find('> div.ui-loading-layer').hide().trigger('stop');
			}
		});
	}
	
})(jQuery)

