(function($) {
	/**
	 * $ is an alias to jQuery object
	 *
	 */
	$.fn.loadingshow = function(callersettings) {

		var settings = $.extend({
			// Configuration related to overlay
			opacity_color: 		'#000000',
			opacity:			0.5,		// 
			content:     'loading',
			closeimage: baseurl + '/images/close.jpg',
			loadingimage: baseurl + '/images/ajax-loader.gif',
			onloadhandler: function(){},
			id:'loadingoverlay',
			scroll:false
		},callersettings || {});
			
		
		var wrapped_set = this;
		var ie6 = $.browser.msie && $.browser.version.substr(0,1) < 7;
		

	  function init() {
	  	var height = wrapped_set.outerHeight();
			var width = wrapped_set.outerWidth();
			
			//build html
			var loadingimg = $("<img>").attr("src",settings.loadingimage);
			
			
		  wrapped_set.append('<div id=\''+settings.id+'\'></div>');
		  
			$("#"+settings.id).css({'display':'block','background-color' : settings.opacity_color, 'opacity' : settings.opacity});

			load();
	  }
	  
	  function show() {
	  	if (ie6)
	  		$(wrapped_set).find('embed, select, object').css({ 'visibility' : 'hidden' });
			
			var height = wrapped_set.outerHeight();
			var width = wrapped_set.outerWidth();
			
			$("#"+settings.id).css("display", 'block').css("width", width+'px').css("height", height+'px');
			$("#"+settings.id).empty().append('<div id="'+settings.id+'_content">'+ settings.content + '<br><img src="'+settings.loadingimage+'"></div>');
			
			position();
			
			if(settings.scroll)
			{
				$(window).scroll(function() {
						position();
				});
			}
		}
		
		function position() {
			var height = wrapped_set.outerHeight();
			var width = wrapped_set.outerWidth();
			var pos = wrapped_set.offset();  
  
			$("#"+settings.id).css({'top' : pos.top,'left':pos.left, 'height' : height,'width' : width});
			var myheight = $("#"+settings.id+"_content").outerHeight();
			var mywidth = $("#"+settings.id+"_content").outerWidth();
			//alert(myheight);
			$("#"+settings.id+"_content").css({'top' : Math.round((height - myheight)/2),'left' : Math.round((width - mywidth)/2)});
		}
		
		function load(){
			settings.onloadhandler();
		}
		
		init();
		show();
	};	
	
	$.fn.loadinghide = function(callersettings) {

		var settings = $.extend({
			// Configuration related to overlay
			onclosehandler: function(){},
			id:'loadingoverlay',
			scroll:false
		},callersettings || {});
			
		
	  function loadinghide() {

 						
			settings.onclosehandler();
			$("#" + settings.id).remove();
			
			if (ie6)
				$(wrapped_set).find('embed, select, object').css({ 'visibility' : 'visible' });
			if(settings.scroll)
				$(window).unbind('resize').unbind('scroll');

	 }
	
	};
		
})(jQuery); // Call and execute the function immediately passing the jQuery object


