jQuery.fn.loading = function(isLoading)
{
	var $elm = jQuery(this);
	if (isLoading)
	{
		var $loading = jQuery('<span class="loading"></span>').appendTo($elm).css('opacity', 0.3).bgiframe();
		var src = $loading.css('backgroundImage');
		$loading.css('backgroundImage', 'none');
		
		var matches = src.match(/^url\([\"|\']?(.*)[\"|\']?\)$/);
		src = (matches && matches.length === 2)? matches[1] : '#';
		var $loadingIndicator = jQuery('<img src="' + src + '" alt="loading..." class="loading-indicator" />').appendTo($elm);
		
		var loadingHeight = $loading.height();
		var loadingIndicatorHeight = $loadingIndicator.height();
		var top = $loadingIndicator.css('top');
		try { top = parseInt(top); } catch(ex) { top = null; }
		if (top === null || (top+loadingIndicatorHeight) > loadingHeight) { top = (loadingHeight - loadingIndicatorHeight) / 2; }
		var left = ($loading.width() - $loadingIndicator.width()) / 2;
		
		$loadingIndicator.css({ top: top+'px', left: left+'px' });
	}
	else
	{
		$elm.find('.loading,.loading-indicator').remove();
	}
};
