<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,6 +1,6 @@
 &#65279;/*!
  * jQuery blockUI plugin
- * Version 2.25 (29-AUG-2009)
+ * Version 2.26 (09-SEP-2009)
  * @requires jQuery v1.2.3 or later
  *
  * Examples at: http://malsup.com/jquery/block/
@@ -15,8 +15,8 @@
 ;(function($) {
 
 if (/1\.(0|1|2)\.(0|1|2)/.test($.fn.jquery) || /^1.1/.test($.fn.jquery)) {
-    alert('blockUI requires jQuery v1.2.3 or later!  You are using v' + $.fn.jquery);
-    return;
+	alert('blockUI requires jQuery v1.2.3 or later!  You are using v' + $.fn.jquery);
+	return;
 }
 
 $.fn._fadeIn = $.fn.fadeIn;
@@ -33,146 +33,146 @@ $.unblockUI = function(opts) { remove(window, opts); };
 
 // convenience method for quick growl-like notifications  (http://www.google.com/search?q=growl)
 $.growlUI = function(title, message, timeout, onClose) {
-    var $m = $('&lt;div class=&quot;growlUI&quot;&gt;&lt;/div&gt;');
-    if (title) $m.append('&lt;h1&gt;'+title+'&lt;/h1&gt;');
-    if (message) $m.append('&lt;h2&gt;'+message+'&lt;/h2&gt;');
-    if (timeout == undefined) timeout = 3000;
-    $.blockUI({
-        message: $m, fadeIn: 700, fadeOut: 1000, centerY: false,
-        timeout: timeout, showOverlay: false,
-        onUnblock: onClose, 
-        css: $.blockUI.defaults.growlCSS
-    });
+	var $m = $('&lt;div class=&quot;growlUI&quot;&gt;&lt;/div&gt;');
+	if (title) $m.append('&lt;h1&gt;'+title+'&lt;/h1&gt;');
+	if (message) $m.append('&lt;h2&gt;'+message+'&lt;/h2&gt;');
+	if (timeout == undefined) timeout = 3000;
+	$.blockUI({
+		message: $m, fadeIn: 700, fadeOut: 1000, centerY: false,
+		timeout: timeout, showOverlay: false,
+		onUnblock: onClose, 
+		css: $.blockUI.defaults.growlCSS
+	});
 };
 
 // plugin method for blocking element content
 $.fn.block = function(opts) {
-    return this.unblock({ fadeOut: 0 }).each(function() {
-        if ($.css(this,'position') == 'static')
-            this.style.position = 'relative';
-        if ($.browser.msie)
-            this.style.zoom = 1; // force 'hasLayout'
-        install(this, opts);
-    });
+	return this.unblock({ fadeOut: 0 }).each(function() {
+		if ($.css(this,'position') == 'static')
+			this.style.position = 'relative';
+		if ($.browser.msie)
+			this.style.zoom = 1; // force 'hasLayout'
+		install(this, opts);
+	});
 };
 
 // plugin method for unblocking element content
 $.fn.unblock = function(opts) {
-    return this.each(function() {
-        remove(this, opts);
-    });
+	return this.each(function() {
+		remove(this, opts);
+	});
 };
 
-$.blockUI.version = 2.25; // 2nd generation blocking at no extra cost!
+$.blockUI.version = 2.26; // 2nd generation blocking at no extra cost!
 
 // override these in your code to change the default behavior and style
 $.blockUI.defaults = {
-    // message displayed when blocking (use null for no message)
-    message:  '&lt;h1&gt;Please wait...&lt;/h1&gt;',
-
-    title: null,      // title string; only used when theme == true
-    draggable: true,  // only used when theme == true (requires jquery-ui.js to be loaded)
-    
-    theme: false, // set to true to use with jQuery UI themes
-    
-    // styles for the message when blocking; if you wish to disable
-    // these and use an external stylesheet then do this in your code:
-    // $.blockUI.defaults.css = {};
-    css: {
-        padding:        0,
-        margin:         0,
-        width:          '30%',
-        top:            '40%',
-        left:           '35%',
-        textAlign:      'center',
-        color:          '#000',
-        border:         '3px solid #aaa',
-        backgroundColor:'#fff',
-        cursor:         'wait'
-    },
-    
-    // minimal style set used when themes are used
-    themedCSS: {
-        width:          '30%',
-        top:            '40%',
-        left:           '35%'
-    },
-
-    // styles for the overlay
-    overlayCSS:  {
-        backgroundColor: '#000',
-        opacity:          0.6,
-        cursor:          'wait'
-    },
-
-    // styles applied when using $.growlUI
-    growlCSS: {
-        width:  '350px',
-        top:        '10px',
-        left:       '',
-        right:  '10px',
-        border: 'none',
-        padding:    '5px',
-        opacity:    0.6,
-        cursor:  null,
-        color:      '#fff',
-        backgroundColor: '#000',
-        '-webkit-border-radius': '10px',
-        '-moz-border-radius':     '10px'
-    },
-    
-    // IE issues: 'about:blank' fails on HTTPS and javascript:false is s-l-o-w
-    // (hat tip to Jorge H. N. de Vasconcelos)
-    iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank',
-
-    // force usage of iframe in non-IE browsers (handy for blocking applets)
-    forceIframe: false,
-
-    // z-index for the blocking overlay
-    baseZ: 1000,
-
-    // set these to true to have the message automatically centered
-    centerX: true, // &lt;-- only effects element blocking (page block controlled via css above)
-    centerY: true,
-
-    // allow body element to be stetched in ie6; this makes blocking look better
-    // on &quot;short&quot; pages.  disable if you wish to prevent changes to the body height
-    allowBodyStretch: true,
-
-    // enable if you want key and mouse events to be disabled for content that is blocked
-    bindEvents: true,
-
-    // be default blockUI will supress tab navigation from leaving blocking content
-    // (if bindEvents is true)
-    constrainTabKey: true,
-
-    // fadeIn time in millis; set to 0 to disable fadeIn on block
-    fadeIn:  200,
-
-    // fadeOut time in millis; set to 0 to disable fadeOut on unblock
-    fadeOut:  400,
-
-    // time in millis to wait before auto-unblocking; set to 0 to disable auto-unblock
-    timeout: 0,
-
-    // disable if you don't want to show the overlay
-    showOverlay: true,
-
-    // if true, focus will be placed in the first available input field when
-    // page blocking
-    focusInput: true,
-
-    // suppresses the use of overlay styles on FF/Linux (due to performance issues with opacity)
-    applyPlatformOpacityRules: true,
-
-    // callback method invoked when unblocking has completed; the callback is
-    // passed the element that has been unblocked (which is the window object for page
-    // blocks) and the options that were passed to the unblock call:
-    //     onUnblock(element, options)
-    onUnblock: null,
-
-    // don't ask; if you really must know: http://groups.google.com/group/jquery-en/browse_thread/thread/36640a8730503595/2f6a79a77a78e493#2f6a79a77a78e493
-    quirksmodeOffsetHack: 4
+	// message displayed when blocking (use null for no message)
+	message:  '&lt;h1&gt;Please wait...&lt;/h1&gt;',
+
+	title: null,	  // title string; only used when theme == true
+	draggable: true,  // only used when theme == true (requires jquery-ui.js to be loaded)
+	
+	theme: false, // set to true to use with jQuery UI themes
+	
+	// styles for the message when blocking; if you wish to disable
+	// these and use an external stylesheet then do this in your code:
+	// $.blockUI.defaults.css = {};
+	css: {
+		padding:	0,
+		margin:		0,
+		width:		'30%',
+		top:		'40%',
+		left:		'35%',
+		textAlign:	'center',
+		color:		'#000',
+		border:		'3px solid #aaa',
+		backgroundColor:'#fff',
+		cursor:		'wait'
+	},
+	
+	// minimal style set used when themes are used
+	themedCSS: {
+		width:	'30%',
+		top:	'40%',
+		left:	'35%'
+	},
+
+	// styles for the overlay
+	overlayCSS:  {
+		backgroundColor: '#000',
+		opacity:	  	 0.6,
+		cursor:		  	 'wait'
+	},
+
+	// styles applied when using $.growlUI
+	growlCSS: {
+		width:  	'350px',
+		top:		'10px',
+		left:   	'',
+		right:  	'10px',
+		border: 	'none',
+		padding:	'5px',
+		opacity:	0.6,
+		cursor: 	'default',
+		color:		'#fff',
+		backgroundColor: '#000',
+		'-webkit-border-radius': '10px',
+		'-moz-border-radius':	 '10px'
+	},
+	
+	// IE issues: 'about:blank' fails on HTTPS and javascript:false is s-l-o-w
+	// (hat tip to Jorge H. N. de Vasconcelos)
+	iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank',
+
+	// force usage of iframe in non-IE browsers (handy for blocking applets)
+	forceIframe: false,
+
+	// z-index for the blocking overlay
+	baseZ: 1000,
+
+	// set these to true to have the message automatically centered
+	centerX: true, // &lt;-- only effects element blocking (page block controlled via css above)
+	centerY: true,
+
+	// allow body element to be stetched in ie6; this makes blocking look better
+	// on &quot;short&quot; pages.  disable if you wish to prevent changes to the body height
+	allowBodyStretch: true,
+
+	// enable if you want key and mouse events to be disabled for content that is blocked
+	bindEvents: true,
+
+	// be default blockUI will supress tab navigation from leaving blocking content
+	// (if bindEvents is true)
+	constrainTabKey: true,
+
+	// fadeIn time in millis; set to 0 to disable fadeIn on block
+	fadeIn:  200,
+
+	// fadeOut time in millis; set to 0 to disable fadeOut on unblock
+	fadeOut:  400,
+
+	// time in millis to wait before auto-unblocking; set to 0 to disable auto-unblock
+	timeout: 0,
+
+	// disable if you don't want to show the overlay
+	showOverlay: true,
+
+	// if true, focus will be placed in the first available input field when
+	// page blocking
+	focusInput: true,
+
+	// suppresses the use of overlay styles on FF/Linux (due to performance issues with opacity)
+	applyPlatformOpacityRules: true,
+
+	// callback method invoked when unblocking has completed; the callback is
+	// passed the element that has been unblocked (which is the window object for page
+	// blocks) and the options that were passed to the unblock call:
+	//	 onUnblock(element, options)
+	onUnblock: null,
+
+	// don't ask; if you really must know: http://groups.google.com/group/jquery-en/browse_thread/thread/36640a8730503595/2f6a79a77a78e493#2f6a79a77a78e493
+	quirksmodeOffsetHack: 4
 };
 
 // private data and functions follow...
@@ -181,283 +181,283 @@ var pageBlock = null;
 var pageBlockEls = [];
 
 function install(el, opts) {
-    var full = (el == window);
-    var msg = opts &amp;&amp; opts.message !== undefined ? opts.message : undefined;
-    opts = $.extend({}, $.blockUI.defaults, opts || {});
-    opts.overlayCSS = $.extend({}, $.blockUI.defaults.overlayCSS, opts.overlayCSS || {});
-    var css = $.extend({}, $.blockUI.defaults.css, opts.css || {});
-    var themedCSS = $.extend({}, $.blockUI.defaults.themedCSS, opts.themedCSS || {});
-    msg = msg === undefined ? opts.message : msg;
-
-    // remove the current block (if there is one)
-    if (full &amp;&amp; pageBlock)
-        remove(window, {fadeOut:0});
-
-    // if an existing element is being used as the blocking content then we capture
-    // its current place in the DOM (and current display style) so we can restore
-    // it when we unblock
-    if (msg &amp;&amp; typeof msg != 'string' &amp;&amp; (msg.parentNode || msg.jquery)) {
-        var node = msg.jquery ? msg[0] : msg;
-        var data = {};
-        $(el).data('blockUI.history', data);
-        data.el = node;
-        data.parent = node.parentNode;
-        data.display = node.style.display;
-        data.position = node.style.position;
-        if (data.parent)
-            data.parent.removeChild(node);
-    }
-
-    var z = opts.baseZ;
-
-    // blockUI uses 3 layers for blocking, for simplicity they are all used on every platform;
-    // layer1 is the iframe layer which is used to supress bleed through of underlying content
-    // layer2 is the overlay layer which has opacity and a wait cursor (by default)
-    // layer3 is the message content that is displayed while blocking
-
-    var lyr1 = ($.browser.msie || opts.forceIframe) 
-        ? $('&lt;iframe class=&quot;blockUI&quot; style=&quot;z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0&quot; src=&quot;'+opts.iframeSrc+'&quot;&gt;&lt;/iframe&gt;')
-        : $('&lt;div class=&quot;blockUI&quot; style=&quot;display:none&quot;&gt;&lt;/div&gt;');
-    var lyr2 = $('&lt;div class=&quot;blockUI blockOverlay&quot; style=&quot;z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0&quot;&gt;&lt;/div&gt;');
-    
-    var lyr3;
-    if (opts.theme &amp;&amp; full) {
-        var s = '&lt;div class=&quot;blockUI blockMsg blockPage ui-dialog ui-widget ui-corner-all&quot; style=&quot;z-index:'+z+';display:none;position:fixed&quot;&gt;' +
-                    '&lt;div class=&quot;ui-widget-header ui-dialog-titlebar blockTitle&quot;&gt;'+(opts.title || '&amp;nbsp;')+'&lt;/div&gt;' +
-                    '&lt;div class=&quot;ui-widget-content ui-dialog-content&quot;&gt;&lt;/div&gt;' +
-                '&lt;/div&gt;';
-        lyr3 = $(s);
-    }
-    else {
-        lyr3 = full ? $('&lt;div class=&quot;blockUI blockMsg blockPage&quot; style=&quot;z-index:'+z+';display:none;position:fixed&quot;&gt;&lt;/div&gt;')
-                    : $('&lt;div class=&quot;blockUI blockMsg blockElement&quot; style=&quot;z-index:'+z+';display:none;position:absolute&quot;&gt;&lt;/div&gt;');
-    }                           
-
-    // if we have a message, style it
-    if (msg) {
-        if (opts.theme) {
-            lyr3.css(themedCSS);
-            lyr3.addClass('ui-widget-content');
-        }
-        else 
-            lyr3.css(css);
-    }
-
-    // style the overlay
-    if (!opts.applyPlatformOpacityRules || !($.browser.mozilla &amp;&amp; /Linux/.test(navigator.platform)))
-        lyr2.css(opts.overlayCSS);
-    lyr2.css('position', full ? 'fixed' : 'absolute');
-
-    // make iframe layer transparent in IE
-    if ($.browser.msie || opts.forceIframe)
-        lyr1.css('opacity',0.0);
-
-    $([lyr1[0],lyr2[0],lyr3[0]]).appendTo(full ? 'body' : el);
-    
-    if (opts.theme &amp;&amp; opts.draggable &amp;&amp; $.fn.draggable) {
-        lyr3.draggable({
-            handle: '.ui-dialog-titlebar',
-            cancel: 'li'
-        });
-    }
-
-    // ie7 must use absolute positioning in quirks mode and to account for activex issues (when scrolling)
-    var expr = setExpr &amp;&amp; (!$.boxModel || $('object,embed', full ? null : el).length &gt; 0);
-    if (ie6 || expr) {
-        // give body 100% height
-        if (full &amp;&amp; opts.allowBodyStretch &amp;&amp; $.boxModel)
-            $('html,body').css('height','100%');
-
-        // fix ie6 issue when blocked element has a border width
-        if ((ie6 || !$.boxModel) &amp;&amp; !full) {
-            var t = sz(el,'borderTopWidth'), l = sz(el,'borderLeftWidth');
-            var fixT = t ? '(0 - '+t+')' : 0;
-            var fixL = l ? '(0 - '+l+')' : 0;
-        }
-
-        // simulate fixed position
-        $.each([lyr1,lyr2,lyr3], function(i,o) {
-            var s = o[0].style;
-            s.position = 'absolute';
-            if (i &lt; 2) {
-                full ? s.setExpression('height','Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.boxModel?0:'+opts.quirksmodeOffsetHack+') + &quot;px&quot;')
-                     : s.setExpression('height','this.parentNode.offsetHeight + &quot;px&quot;');
-                full ? s.setExpression('width','jQuery.boxModel &amp;&amp; document.documentElement.clientWidth || document.body.clientWidth + &quot;px&quot;')
-                     : s.setExpression('width','this.parentNode.offsetWidth + &quot;px&quot;');
-                if (fixL) s.setExpression('left', fixL);
-                if (fixT) s.setExpression('top', fixT);
-            }
-            else if (opts.centerY) {
-                if (full) s.setExpression('top','(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + &quot;px&quot;');
-                s.marginTop = 0;
-            }
-            else if (!opts.centerY &amp;&amp; full) {
-                var top = (opts.css &amp;&amp; opts.css.top) ? parseInt(opts.css.top) : 0;
-                var expression = '((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + '+top+') + &quot;px&quot;';
-                s.setExpression('top',expression);
-            }
-        });
-    }
-
-    // show the message
-    if (msg) {
-        if (opts.theme)
-            lyr3.find('.ui-widget-content').append(msg);
-        else
-            lyr3.append(msg);
-        if (msg.jquery || msg.nodeType)
-            $(msg).show();
-    }
-
-    if (($.browser.msie || opts.forceIframe) &amp;&amp; opts.showOverlay)
-        lyr1.show(); // opacity is zero
-    if (opts.fadeIn) {
-        if (opts.showOverlay)
-            lyr2._fadeIn(opts.fadeIn);
-        if (msg)
-            lyr3.fadeIn(opts.fadeIn);
-    }
-    else {
-        if (opts.showOverlay)
-            lyr2.show();
-        if (msg)
-            lyr3.show();
-    }
-
-    // bind key and mouse events
-    bind(1, el, opts);
-
-    if (full) {
-        pageBlock = lyr3[0];
-        pageBlockEls = $(':input:enabled:visible',pageBlock);
-        if (opts.focusInput)
-            setTimeout(focus, 20);
-    }
-    else
-        center(lyr3[0], opts.centerX, opts.centerY);
-
-    if (opts.timeout) {
-        // auto-unblock
-        var to = setTimeout(function() {
-            full ? $.unblockUI(opts) : $(el).unblock(opts);
-        }, opts.timeout);
-        $(el).data('blockUI.timeout', to);
-    }
+	var full = (el == window);
+	var msg = opts &amp;&amp; opts.message !== undefined ? opts.message : undefined;
+	opts = $.extend({}, $.blockUI.defaults, opts || {});
+	opts.overlayCSS = $.extend({}, $.blockUI.defaults.overlayCSS, opts.overlayCSS || {});
+	var css = $.extend({}, $.blockUI.defaults.css, opts.css || {});
+	var themedCSS = $.extend({}, $.blockUI.defaults.themedCSS, opts.themedCSS || {});
+	msg = msg === undefined ? opts.message : msg;
+
+	// remove the current block (if there is one)
+	if (full &amp;&amp; pageBlock)
+		remove(window, {fadeOut:0});
+
+	// if an existing element is being used as the blocking content then we capture
+	// its current place in the DOM (and current display style) so we can restore
+	// it when we unblock
+	if (msg &amp;&amp; typeof msg != 'string' &amp;&amp; (msg.parentNode || msg.jquery)) {
+		var node = msg.jquery ? msg[0] : msg;
+		var data = {};
+		$(el).data('blockUI.history', data);
+		data.el = node;
+		data.parent = node.parentNode;
+		data.display = node.style.display;
+		data.position = node.style.position;
+		if (data.parent)
+			data.parent.removeChild(node);
+	}
+
+	var z = opts.baseZ;
+
+	// blockUI uses 3 layers for blocking, for simplicity they are all used on every platform;
+	// layer1 is the iframe layer which is used to supress bleed through of underlying content
+	// layer2 is the overlay layer which has opacity and a wait cursor (by default)
+	// layer3 is the message content that is displayed while blocking
+
+	var lyr1 = ($.browser.msie || opts.forceIframe) 
+		? $('&lt;iframe class=&quot;blockUI&quot; style=&quot;z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0&quot; src=&quot;'+opts.iframeSrc+'&quot;&gt;&lt;/iframe&gt;')
+		: $('&lt;div class=&quot;blockUI&quot; style=&quot;display:none&quot;&gt;&lt;/div&gt;');
+	var lyr2 = $('&lt;div class=&quot;blockUI blockOverlay&quot; style=&quot;z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0&quot;&gt;&lt;/div&gt;');
+	
+	var lyr3;
+	if (opts.theme &amp;&amp; full) {
+		var s = '&lt;div class=&quot;blockUI blockMsg blockPage ui-dialog ui-widget ui-corner-all&quot; style=&quot;z-index:'+z+';display:none;position:fixed&quot;&gt;' +
+					'&lt;div class=&quot;ui-widget-header ui-dialog-titlebar blockTitle&quot;&gt;'+(opts.title || '&amp;nbsp;')+'&lt;/div&gt;' +
+					'&lt;div class=&quot;ui-widget-content ui-dialog-content&quot;&gt;&lt;/div&gt;' +
+				'&lt;/div&gt;';
+		lyr3 = $(s);
+	}
+	else {
+		lyr3 = full ? $('&lt;div class=&quot;blockUI blockMsg blockPage&quot; style=&quot;z-index:'+z+';display:none;position:fixed&quot;&gt;&lt;/div&gt;')
+					: $('&lt;div class=&quot;blockUI blockMsg blockElement&quot; style=&quot;z-index:'+z+';display:none;position:absolute&quot;&gt;&lt;/div&gt;');
+	}						   
+
+	// if we have a message, style it
+	if (msg) {
+		if (opts.theme) {
+			lyr3.css(themedCSS);
+			lyr3.addClass('ui-widget-content');
+		}
+		else 
+			lyr3.css(css);
+	}
+
+	// style the overlay
+	if (!opts.applyPlatformOpacityRules || !($.browser.mozilla &amp;&amp; /Linux/.test(navigator.platform)))
+		lyr2.css(opts.overlayCSS);
+	lyr2.css('position', full ? 'fixed' : 'absolute');
+
+	// make iframe layer transparent in IE
+	if ($.browser.msie || opts.forceIframe)
+		lyr1.css('opacity',0.0);
+
+	$([lyr1[0],lyr2[0],lyr3[0]]).appendTo(full ? 'body' : el);
+	
+	if (opts.theme &amp;&amp; opts.draggable &amp;&amp; $.fn.draggable) {
+		lyr3.draggable({
+			handle: '.ui-dialog-titlebar',
+			cancel: 'li'
+		});
+	}
+
+	// ie7 must use absolute positioning in quirks mode and to account for activex issues (when scrolling)
+	var expr = setExpr &amp;&amp; (!$.boxModel || $('object,embed', full ? null : el).length &gt; 0);
+	if (ie6 || expr) {
+		// give body 100% height
+		if (full &amp;&amp; opts.allowBodyStretch &amp;&amp; $.boxModel)
+			$('html,body').css('height','100%');
+
+		// fix ie6 issue when blocked element has a border width
+		if ((ie6 || !$.boxModel) &amp;&amp; !full) {
+			var t = sz(el,'borderTopWidth'), l = sz(el,'borderLeftWidth');
+			var fixT = t ? '(0 - '+t+')' : 0;
+			var fixL = l ? '(0 - '+l+')' : 0;
+		}
+
+		// simulate fixed position
+		$.each([lyr1,lyr2,lyr3], function(i,o) {
+			var s = o[0].style;
+			s.position = 'absolute';
+			if (i &lt; 2) {
+				full ? s.setExpression('height','Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.boxModel?0:'+opts.quirksmodeOffsetHack+') + &quot;px&quot;')
+					 : s.setExpression('height','this.parentNode.offsetHeight + &quot;px&quot;');
+				full ? s.setExpression('width','jQuery.boxModel &amp;&amp; document.documentElement.clientWidth || document.body.clientWidth + &quot;px&quot;')
+					 : s.setExpression('width','this.parentNode.offsetWidth + &quot;px&quot;');
+				if (fixL) s.setExpression('left', fixL);
+				if (fixT) s.setExpression('top', fixT);
+			}
+			else if (opts.centerY) {
+				if (full) s.setExpression('top','(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + &quot;px&quot;');
+				s.marginTop = 0;
+			}
+			else if (!opts.centerY &amp;&amp; full) {
+				var top = (opts.css &amp;&amp; opts.css.top) ? parseInt(opts.css.top) : 0;
+				var expression = '((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + '+top+') + &quot;px&quot;';
+				s.setExpression('top',expression);
+			}
+		});
+	}
+
+	// show the message
+	if (msg) {
+		if (opts.theme)
+			lyr3.find('.ui-widget-content').append(msg);
+		else
+			lyr3.append(msg);
+		if (msg.jquery || msg.nodeType)
+			$(msg).show();
+	}
+
+	if (($.browser.msie || opts.forceIframe) &amp;&amp; opts.showOverlay)
+		lyr1.show(); // opacity is zero
+	if (opts.fadeIn) {
+		if (opts.showOverlay)
+			lyr2._fadeIn(opts.fadeIn);
+		if (msg)
+			lyr3.fadeIn(opts.fadeIn);
+	}
+	else {
+		if (opts.showOverlay)
+			lyr2.show();
+		if (msg)
+			lyr3.show();
+	}
+
+	// bind key and mouse events
+	bind(1, el, opts);
+
+	if (full) {
+		pageBlock = lyr3[0];
+		pageBlockEls = $(':input:enabled:visible',pageBlock);
+		if (opts.focusInput)
+			setTimeout(focus, 20);
+	}
+	else
+		center(lyr3[0], opts.centerX, opts.centerY);
+
+	if (opts.timeout) {
+		// auto-unblock
+		var to = setTimeout(function() {
+			full ? $.unblockUI(opts) : $(el).unblock(opts);
+		}, opts.timeout);
+		$(el).data('blockUI.timeout', to);
+	}
 };
 
 // remove the block
 function remove(el, opts) {
-    var full = (el == window);
-    var $el = $(el);
-    var data = $el.data('blockUI.history');
-    var to = $el.data('blockUI.timeout');
-    if (to) {
-        clearTimeout(to);
-        $el.removeData('blockUI.timeout');
-    }
-    opts = $.extend({}, $.blockUI.defaults, opts || {});
-    bind(0, el, opts); // unbind events
-    
-    var els;
-    if (full) // crazy selector to handle odd field errors in ie6/7
-        els = $('body').children().filter('.blockUI').add('body &gt; .blockUI');
-    else
-        els = $('.blockUI', el);
-
-    if (full)
-        pageBlock = pageBlockEls = null;
-
-    if (opts.fadeOut) {
-        els.fadeOut(opts.fadeOut);
-        setTimeout(function() { reset(els,data,opts,el); }, opts.fadeOut);
-    }
-    else
-        reset(els, data, opts, el);
+	var full = (el == window);
+	var $el = $(el);
+	var data = $el.data('blockUI.history');
+	var to = $el.data('blockUI.timeout');
+	if (to) {
+		clearTimeout(to);
+		$el.removeData('blockUI.timeout');
+	}
+	opts = $.extend({}, $.blockUI.defaults, opts || {});
+	bind(0, el, opts); // unbind events
+	
+	var els;
+	if (full) // crazy selector to handle odd field errors in ie6/7
+		els = $('body').children().filter('.blockUI').add('body &gt; .blockUI');
+	else
+		els = $('.blockUI', el);
+
+	if (full)
+		pageBlock = pageBlockEls = null;
+
+	if (opts.fadeOut) {
+		els.fadeOut(opts.fadeOut);
+		setTimeout(function() { reset(els,data,opts,el); }, opts.fadeOut);
+	}
+	else
+		reset(els, data, opts, el);
 };
 
 // move blocking element back into the DOM where it started
 function reset(els,data,opts,el) {
-    els.each(function(i,o) {
-        // remove via DOM calls so we don't lose event handlers
-        if (this.parentNode)
-            this.parentNode.removeChild(this);
-    });
-
-    if (data &amp;&amp; data.el) {
-        data.el.style.display = data.display;
-        data.el.style.position = data.position;
-        if (data.parent)
-            data.parent.appendChild(data.el);
-        $(data.el).removeData('blockUI.history');
-    }
-
-    if (typeof opts.onUnblock == 'function')
-        opts.onUnblock(el,opts);
+	els.each(function(i,o) {
+		// remove via DOM calls so we don't lose event handlers
+		if (this.parentNode)
+			this.parentNode.removeChild(this);
+	});
+
+	if (data &amp;&amp; data.el) {
+		data.el.style.display = data.display;
+		data.el.style.position = data.position;
+		if (data.parent)
+			data.parent.appendChild(data.el);
+		$(data.el).removeData('blockUI.history');
+	}
+
+	if (typeof opts.onUnblock == 'function')
+		opts.onUnblock(el,opts);
 };
 
 // bind/unbind the handler
 function bind(b, el, opts) {
-    var full = el == window, $el = $(el);
+	var full = el == window, $el = $(el);
 
-    // don't bother unbinding if there is nothing to unbind
-    if (!b &amp;&amp; (full &amp;&amp; !pageBlock || !full &amp;&amp; !$el.data('blockUI.isBlocked')))
-        return;
-    if (!full)
-        $el.data('blockUI.isBlocked', b);
+	// don't bother unbinding if there is nothing to unbind
+	if (!b &amp;&amp; (full &amp;&amp; !pageBlock || !full &amp;&amp; !$el.data('blockUI.isBlocked')))
+		return;
+	if (!full)
+		$el.data('blockUI.isBlocked', b);
 
-    // don't bind events when overlay is not in use or if bindEvents is false
-    if (!opts.bindEvents || (b &amp;&amp; !opts.showOverlay)) 
-        return;
+	// don't bind events when overlay is not in use or if bindEvents is false
+	if (!opts.bindEvents || (b &amp;&amp; !opts.showOverlay)) 
+		return;
 
-    // bind anchors and inputs for mouse and key events
-    var events = 'mousedown mouseup keydown keypress';
-    b ? $(document).bind(events, opts, handler) : $(document).unbind(events, handler);
+	// bind anchors and inputs for mouse and key events
+	var events = 'mousedown mouseup keydown keypress';
+	b ? $(document).bind(events, opts, handler) : $(document).unbind(events, handler);
 
 // former impl...
-//       var $e = $('a,:input');
-//       b ? $e.bind(events, opts, handler) : $e.unbind(events, handler);
+//	   var $e = $('a,:input');
+//	   b ? $e.bind(events, opts, handler) : $e.unbind(events, handler);
 };
 
 // event handler to suppress keyboard/mouse events when blocking
 function handler(e) {
-    // allow tab navigation (conditionally)
-    if (e.keyCode &amp;&amp; e.keyCode == 9) {
-        if (pageBlock &amp;&amp; e.data.constrainTabKey) {
-            var els = pageBlockEls;
-            var fwd = !e.shiftKey &amp;&amp; e.target == els[els.length-1];
-            var back = e.shiftKey &amp;&amp; e.target == els[0];
-            if (fwd || back) {
-                setTimeout(function(){focus(back)},10);
-                return false;
-            }
-        }
-    }
-    // allow events within the message content
-    if ($(e.target).parents('div.blockMsg').length &gt; 0)
-        return true;
-
-    // allow events for content that is not being blocked
-    return $(e.target).parents().children().filter('div.blockUI').length == 0;
+	// allow tab navigation (conditionally)
+	if (e.keyCode &amp;&amp; e.keyCode == 9) {
+		if (pageBlock &amp;&amp; e.data.constrainTabKey) {
+			var els = pageBlockEls;
+			var fwd = !e.shiftKey &amp;&amp; e.target == els[els.length-1];
+			var back = e.shiftKey &amp;&amp; e.target == els[0];
+			if (fwd || back) {
+				setTimeout(function(){focus(back)},10);
+				return false;
+			}
+		}
+	}
+	// allow events within the message content
+	if ($(e.target).parents('div.blockMsg').length &gt; 0)
+		return true;
+
+	// allow events for content that is not being blocked
+	return $(e.target).parents().children().filter('div.blockUI').length == 0;
 };
 
 function focus(back) {
-    if (!pageBlockEls)
-        return;
-    var e = pageBlockEls[back===true ? pageBlockEls.length-1 : 0];
-    if (e)
-        e.focus();
+	if (!pageBlockEls)
+		return;
+	var e = pageBlockEls[back===true ? pageBlockEls.length-1 : 0];
+	if (e)
+		e.focus();
 };
 
 function center(el, x, y) {
-    var p = el.parentNode, s = el.style;
-    var l = ((p.offsetWidth - el.offsetWidth)/2) - sz(p,'borderLeftWidth');
-    var t = ((p.offsetHeight - el.offsetHeight)/2) - sz(p,'borderTopWidth');
-    if (x) s.left = l &gt; 0 ? (l+'px') : '0';
-    if (y) s.top  = t &gt; 0 ? (t+'px') : '0';
+	var p = el.parentNode, s = el.style;
+	var l = ((p.offsetWidth - el.offsetWidth)/2) - sz(p,'borderLeftWidth');
+	var t = ((p.offsetHeight - el.offsetHeight)/2) - sz(p,'borderTopWidth');
+	if (x) s.left = l &gt; 0 ? (l+'px') : '0';
+	if (y) s.top  = t &gt; 0 ? (t+'px') : '0';
 };
 
 function sz(el, p) {
-    return parseInt($.css(el,p))||0;
+	return parseInt($.css(el,p))||0;
 };
 
 })(jQuery);</diff>
      <filename>jquery.blockUI.js</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>7a438b5fcdee56e8e57a6919004fa5690e8fe002</id>
    </parent>
  </parents>
  <author>
    <name>Mike</name>
    <email>admin@MacBookPro.local</email>
  </author>
  <url>http://github.com/malsup/blockui/commit/143e06a1921614b726bf95fb766508f914b92f00</url>
  <id>143e06a1921614b726bf95fb766508f914b92f00</id>
  <committed-date>2009-09-09T05:14:21-07:00</committed-date>
  <authored-date>2009-09-09T05:14:21-07:00</authored-date>
  <message>- fixed bug with cursor css in Growl impl
- converted spaces to tabs</message>
  <tree>3d16c076d143440fedde3ef1193f316cfb49659e</tree>
  <committer>
    <name>Mike</name>
    <email>admin@MacBookPro.local</email>
  </committer>
</commit>
