$(function() {
	jQuery.fn.loadprocess = function(settings) {
		jQuery.fn.loadprocess.count = 1;
		jQuery.fn.loadprocess.defaults = jQuery.fn.loadprocess.sets = {
			load_start: null,
			load_end: null
		};

		jQuery.fn.loadprocess.sets = jQuery.extend(jQuery.fn.loadprocess.defaults, settings);
		jQuery.fn.loadprocess.loading = function() {
			jQuery.fn.loadprocess.count++;

			if(jQuery.fn.loadprocess.sets.load_start) jQuery.fn.loadprocess.sets.load_start();
		};
		jQuery.fn.loadprocess.loadend = function() {
			jQuery.fn.loadprocess.count--;

			if(jQuery.fn.loadprocess.count == 0 && jQuery.fn.loadprocess.sets.load_end) jQuery.fn.loadprocess.sets.load_end();
		}
		$().ajaxStart(jQuery.fn.loadprocess.loading);
		$().bind('loadprocess_loading', jQuery.fn.loadprocess.loading)
		$().ajaxComplete(jQuery.fn.loadprocess.loadend);
		$().bind('ready', jQuery.fn.loadprocess.loadend);
		$().bind('loadprocess_loadend', jQuery.fn.loadprocess.loadend)
	};

	jQuery.fn.extend({
		load_origin: jQuery.fn.load,
		load: function(url, params, callback) {
			$().trigger('loadprocess_loading');
			return $(this).load_origin(url, params, function(responseText, status, res) {
				$().trigger('loadprocess_loadend');
				callback(responseText, status, res);
			});
		}
	});
});