(function($){
	$.fn.showLoading = function(options) {
		var defaults = {
			callback: function(){},
			autoFocus: true,
			loadingStr: ""
		};
		var options = $.extend(defaults, options);
		return this.each(function() {
			var loading = $(this).find(".loadingPlaceholder");
			if ( loading.length == 0 ){
				$(this).prepend("<div class='loadingPlaceholder'>" + options.loadingStr + "</div>");
				loading = $(this).find(".loadingPlaceholder");
			}
			
			$(this).children().hide();
			loading.slideDown(function(){
			    options.callback();
				if (options.autoFocus) window.scrollTo( 0, loading.offset().top );
			});
			
		});
		
	};
	$.fn.hideLoading = function(options) {
		var defaults = {
			callback: function(){}
		};
		var options = $.extend(defaults, options);
		
		return this.each(function() {
			var loading = $(this).find(".loadingPlaceholder");
			if ( loading.length > 0 ){
				loading.slideUp(function(){
			        $(this).children().show();
			        options.callback();
				});
			}
			
		});
	};
})(jQuery);

