(
/*
 * BlockUI Extend - Block UI enhancement
 * jQuery Plugin - comptibility : 1.2.6 + jQuery.BlockUI 2.09
 *
 * Copyright (c) 2008 Nicolas VINCENT (adaka.fr)
 * $Date: 2008-10-09 08:53:00 +0100 (Thu, 09 October 2008) $
 * Version: devStart
 *
 *-
 *
 * Just enhance the blockUI plugin and load it
 */
	function($)
	{
		if (typeof $.blockUI != 'undefined')
		{
			// Add option
			var settings =
			{
				ajax_content:
				{
					ajax_options:			{},
					updateSource:			'*:first',
					updateTarget:			'div.blockUI.blockMsg'
				}
				,
				loaded_callback:			function(){},// Simple callback
				overlay_clickToUnblock:		false,// Shouldn't be use for a modal style
				centerWindow:				false
			}
			;
			
			$.blockUI.defaults = $.extend(true,{},$.blockUI.defaults, settings || {});
			
			// Enhance the install
			var blockUI_original;
			blockUI_original	=	$.blockUI;
			$.blockUI			=	function (options)
			{
				// Call to the original blockUI function
				blockUI_original(options);
				
				var $message_block	=	$('div.blockUI.blockMsg');
				
				options = $.extend(true,{}, $.blockUI.defaults, options || {});
				
				// Click the overlay to unblock
				if (options.overlay_clickToUnblock)
				{
					$('div.blockUI.blockOverlay')
						.bind
						(
							'click'
							,
							function()
							{
								$.unblockUI();
								return true;
							}
						)
					;
				}
				
				// Center the windows blocked message
				$.blockUI.center	=	function()
				{
					$message_block
						.css
						(
							{
								height:	'auto',
								width:	'auto'
							}
						)// Resize to get the correct position
						.show()// DeBuG - be sure that the container is visible
						.center({client:true})
					;
				}
				if (typeof $.fn.center != 'undefined'&&options.centerWindow)// Need the center plugin
				{
					$.blockUI.center()
				}
				
				// Content ajax
				if (typeof options.ajax_content != 'undefined'&&typeof options.ajax_content.ajax_options != 'undefined'&&typeof options.ajax_content.ajax_options.url != 'undefined')
				{
					// If success function isn't defined put one by default
					if (typeof options.ajax_content.ajax_options.success === 'undefined')
					{
						options.ajax_content.ajax_options.success	=
							function(data,textStatus)
							{
								$(options.ajax_content.updateTarget).empty().append($(data).find(options.ajax_content.updateSource));
								
								if (options.centerWindow)
									$.blockUI.center();
							}
						;
					}
					$.ajax(options.ajax_content.ajax_options);
				}
				
				// Callback
				if (typeof options.loaded_callback === 'function')
				{
					options.loaded_callback();
				}
			}
			;
			for (var cle in blockUI_original)
			{
				$.blockUI[cle]	=	blockUI_original[cle];
			}
		}
	}
)(jQuery);
