
if (!window['$hnj'] || !$hnj.registry.included('/scripts/libraries/jquery/plugins/jquery.tools/jquery.tools.min.js')) { 
/*
 
 jQuery Tools 1.2.5 Overlay - Overlay base. Extend it.
 
 NO COPYRIGHTS OR LICENSES. DO WHAT YOU LIKE.
 
 http://flowplayer.org/tools/overlay/
 
 Since: March 2008
 Date:    Wed Sep 22 06:02:10 2010 +0000 
*/
(function(a){function t(d,b){var c=this,j=d.add(c),o=a(window),k,f,m,g=a.tools.expose&&(b.mask||b.expose),n=Math.random().toString().slice(10);if(g){if(typeof g=="string")g={color:g};g.closeOnClick=g.closeOnEsc=false}var p=b.target||d.attr("rel");f=p?a(p):d;if(!f.length)throw"Could not find Overlay: "+p;d&&d.index(f)==-1&&d.click(function(e){c.load(e);return e.preventDefault()});a.extend(c,{load:function(e){if(c.isOpened())return c;var h=q[b.effect];if(!h)throw'Overlay: cannot find effect : "'+b.effect+
'"';b.oneInstance&&a.each(s,function(){this.close(e)});e=e||a.Event();e.type="onBeforeLoad";j.trigger(e);if(e.isDefaultPrevented())return c;m=true;g&&a(f).expose(g);var i=b.top,r=b.left,u=f.outerWidth({margin:true}),v=f.outerHeight({margin:true});if(typeof i=="string")i=i=="center"?Math.max((o.height()-v)/2,0):parseInt(i,10)/100*o.height();if(r=="center")r=Math.max((o.width()-u)/2,0);h[0].call(c,{top:i,left:r},function(){if(m){e.type="onLoad";j.trigger(e)}});g&&b.closeOnClick&&a.mask.getMask().one("click",
c.close);b.closeOnClick&&a(document).bind("click."+n,function(l){a(l.target).parents(f).length||c.close(l)});b.closeOnEsc&&a(document).bind("keydown."+n,function(l){l.keyCode==27&&c.close(l)});return c},close:function(e){if(!c.isOpened())return c;e=e||a.Event();e.type="onBeforeClose";j.trigger(e);if(!e.isDefaultPrevented()){m=false;q[b.effect][1].call(c,function(){e.type="onClose";j.trigger(e)});a(document).unbind("click."+n).unbind("keydown."+n);g&&a.mask.close();return c}},getOverlay:function(){return f},
getTrigger:function(){return d},getClosers:function(){return k},isOpened:function(){return m},getConf:function(){return b}});a.each("onBeforeLoad,onStart,onLoad,onBeforeClose,onClose".split(","),function(e,h){a.isFunction(b[h])&&a(c).bind(h,b[h]);c[h]=function(i){i&&a(c).bind(h,i);return c}});k=f.find(b.close||".close");if(!k.length&&!b.close){k=a('<a class="close"></a>');f.prepend(k)}k.click(function(e){c.close(e)});b.load&&c.load()}a.tools=a.tools||{version:"1.2.5"};a.tools.overlay={addEffect:function(d,
b,c){q[d]=[b,c]},conf:{close:null,closeOnClick:true,closeOnEsc:true,closeSpeed:"fast",effect:"default",fixed:!a.browser.msie||a.browser.version>6,left:"center",load:false,mask:null,oneInstance:true,speed:"normal",target:null,top:"10%"}};var s=[],q={};a.tools.overlay.addEffect("default",function(d,b){var c=this.getConf(),j=a(window);if(!c.fixed){d.top+=j.scrollTop();d.left+=j.scrollLeft()}d.position=c.fixed?"fixed":"absolute";this.getOverlay().css(d).fadeIn(c.speed,b)},function(d){this.getOverlay().fadeOut(this.getConf().closeSpeed,
d)});a.fn.overlay=function(d){var b=this.data("overlay");if(b)return b;if(a.isFunction(d))d={onBeforeLoad:d};d=a.extend(true,{},a.tools.overlay.conf,d);this.each(function(){b=new t(a(this),d);s.push(b);a(this).data("overlay",b)});return d.api?b:this}})(jQuery);

// Background masking
// Adapted from jQuery Tools 1.2.5 "Expose"
// Transformed from a singleton into class that supports many instances
(function($) {
	/* one of the greatest headaches in the tool. finally made it */
	function viewport() {
		// the horror case
		if ($.browser.msie) {
			// if there are no scrollbars then use window.height
			var d = $(document).height(), w = $(window).height();
			return [
				window.innerWidth || 							// ie7+
				document.documentElement.clientWidth || 	// ie6  
				document.body.clientWidth, 					// ie6 quirks mode
				d - w < 20 ? w : d
			];
		} 
		// other well behaving browsers
		return [$(document).width(), $(document).height()]; 
	}

	// Manages all mask instances
	var maskManager = function() {
		var items = [];
		var fitAll = function() {
			$.each(items, function(index, item) { item.hide(); });
			var size = viewport();
			$.each(items, function(index, item) {
				item.css({width: size[0], height: size[1]});
				item.show();
			});
		};
		$(window).bind('resize.maskManager', function() { fitAll(); });
		return {
			register: function(jq) {
				items.push(jq);
			},
			unregister: function(jq) {
				var newItems = [];
				for (var i = 0; i < items.length; i++) {
					if (items[i] !== jq) {
						newItems.push(items[i]);
					}
				}
				items = newItems;
			}
		};
	}();
	
	// Masks over an element
	// Currently just supports $(document)
	$.fn.mask = function(config) {
		if (this.context !== document) throw 'Masking over element other than $(document) is not currently supported by $.fn.mask';

		config = $.extend(
			{
				loadSpeed: 'slow',
				closeSpeed: 'fast',
				zIndex: 9998,
				opacity: 0.7,
				startOpacity: 0,
				color: '#777',
				onClick: function(e) { },
				onBeforeLoad: function(e) { },
				onLoad: function(e) { },
				onBeforeClose: function(e) { },
				onClose: function(e) { }
			},
			config);
		
		var mask;
		var fire = function(eventType) {
			var event = $.Event(eventType);
			event.mask = mask;
			mask.trigger(event);
			return !event.isDefaultPrevented();
		}

		var size = viewport();
		mask = $('<div />')
			.css({ 
				position:'absolute', 
				top: 0, 
				left: 0,
				width: size[0],
				height: size[1],
				display: 'none',
				opacity: config.startOpacity,
				zIndex: config.zIndex
			});
		if (config.color) {
			mask.css("backgroundColor", config.color);
		}

		// events
		mask.bind('click', config.onClick);
		mask.bind('beforeLoad', config.onBeforeLoad);
		mask.bind('maskLoad', config.onLoad);
		mask.bind('beforeClose', config.onBeforeClose);
		mask.bind('close', config.onClose);
		
		// onBeforeLoad
		if (!fire('beforeLoad')) { return this; }
		
		$("body").append(mask);

		// register with mask manager
		maskManager.register(mask);
			
		// reveal mask
		mask.css({display: 'block'})
			.fadeTo(
				config.loadSpeed, 
				config.opacity, 
				function() { fire('maskLoad'); });

		return {
			close: function() {
				// onBeforeClose
				if (!fire('beforeClose')) { return this; }
				
				// unregister with mask manager
				maskManager.unregister(mask);
					
				mask.fadeOut(
					config.closeSpeed, 
					function() { fire('close'); });
			}
		};
	};
})($hnj);

// Various types of overlays
; (function($) {
	// constants
	var padding = 12;
	var gutter = 24;
	var overlayWrapperClass = 'hni_OverlayWrapper';
	var overlayCloseClass = 'hni_OverlayClose';
	var overlayWindowWrapperClass = 'hni_OverlayWindowWrapper';
	var modalDialogWrapperClass = 'hni_OverlayModalDialogWrapper';
	var overlayApiKeyName = 'hni-overlay';
	var overlayWindowApiKeyName = 'hni-overlayWindow';
	var modalDialogApiKeyName = 'hni-modalDialog';
	var baseZIndex = 102000;
	var runningZIndex = baseZIndex;
	
	// Manages all overlay panel instances
	var overlayPanelManager = function() {
		var items = [];
		var foremost = function() {
			if (items.length == 0) {
				return null;
			}
			return items[items.length - 1];
		};

		$(document).bind("keydown.overlayPanelManager", function(e) {			
			if (e.which == 27) {
				var item = foremost();
				if (item) {
					item.onEscPress(e);
				}
			}
		});

		return {
			register: function(id, onEscPress) {
				items.push({
					id: id,
					onEscPress: onEscPress
				});
			},
			unregister: function(id) {
				var newItems = [];
				for (var i = 0; i < items.length; i++) {
					if (items[i].id !== id) {
						newItems.push(items[i]);
					}
				}
				items = newItems;
			}
		};
	}();

	// Common class delegated to by all the overlay classes,
	// which in turn delegates to jquery.tools overlay
	var overlayPanel = function (jq, config) {
		config = $.extend(
			{
				width: 800,
				fixHeightToContent: false,
				cssClasses: '',
				innerHTML: null, // late-bound HTML attached *directly* to the DOM
				apiKeyName: null,
				onMaskClick: function(e) { },
				onEscPress: function(e) { },
				onBeforeLoad: function(e) { },
				onLoad: function(e) { },
				onBeforeClose: function(e) { },
				onCompletedBeforeClose: function(e) { },
				onClose: function(e) { }
			},
			config);
		if (!jq || jq.size() == 0 || jq[0] === document) {
			jq = $('<div/>');
		}

		var wrapperZIndex = runningZIndex = runningZIndex + 2;
		var sizeAndPositionCall = null, mask = null, api = null;
		var readyList = [];
		var loaded = false;

		var size = function () {
			if (config.fixHeightToContent) {
				return;
			}
			var wrapperHeight = $(window).height() - (gutter * 2);
			if (wrapperHeight < 100) {
				wrapperHeight = 100;
			}
			if (wrapper.height() != wrapperHeight) {
				wrapper.height(wrapperHeight);
				content.height(wrapperHeight - (padding * 2));
			}
		};
		var sizeHeightToContent = function () {
			// Set CSS height to auto so we can get let browser size it
			// and we can get height dynamically
			content.css("height", "auto");
			// Setting height based on the dynamic height calculation of the wrapper
			// seems more reliable in IE than settings based on dynamic height
			// calculation of the content div
			content.height(wrapper.height() - (padding * 2)); // fix the height at the initial content's height
		}
		var topInset = function() {
			var windowHeight = $(window).height();
			var wrapperHeight = wrapper.height();
			var wrapperPlusGutterHeight = wrapperHeight + (gutter * 2);
			if (windowHeight >= wrapperPlusGutterHeight) {
				var value = gutter;
				if (config.fixHeightToContent) {
					value = Math.floor((windowHeight - wrapperHeight) / 2);
				}
				return value;
			}
			return null;
		};
		var top = function() {
			var yinset = topInset();
			if (yinset == null) {
				return null;
			}
			return $(window).scrollTop() + yinset;
		};
		var position = function (animate) {
			var windowWidth = $(window).width();
			var wrapperWidth = wrapper.width();
			var wrapperLeft = (windowWidth - wrapperWidth) / 2;
			if (wrapperLeft < gutter) {
				wrapperLeft = gutter;
			}
			if (animate) {
				wrapper.animate({ left: wrapperLeft }, 250);
			}
			else {
				wrapper.css('left', wrapperLeft + 'px');
			}

			var wrapperTop = top();
			if (wrapperTop != null) {
				if (animate) {
					wrapper.animate({ top: wrapperTop }, 250);
				}
				else {
					wrapper.css('top', wrapperTop + 'px');
				}
			}
		};
		var sizeAndPosition = function () {
			size();
			position(true);
		};
		var queueSizeAndPosition = function () {
			if (sizeAndPositionCall == null) {
				sizeAndPositionCall = new $.delay(sizeAndPosition, 250);
			}
			else {
				sizeAndPositionCall.restart();
			}
		};
		var fire = function(eventType, e) {
			var event = $.Event(eventType);
			event.overlay = api;
			wrapper.trigger(event);
			if (event.isDefaultPrevented()) {
				e.preventDefault();
			}
			if (event.isPropagationStopped()) {
				e.stopPropagation();
			}
			if (event.isImmediatePropagationStopped()) {
				e.stopImmediatePropagation();
			}
		}
		
		var content = $('<div style="position:relative;overflow:auto;" />');
		var wrapper = $('<div class="' + config.cssClasses + '" style="display:none;z-index:' + wrapperZIndex + ';width:' + config.width + 'px;border-width:0;" />')
			.append($('<a />').addClass(overlayCloseClass))
			.append(
				 $('<div style="padding:' + padding + 'px;" />')
					.append(content)
			);
			
		api = {
			jQueryObject: wrapper,
			element: wrapper[0],
			ready: function(fn) {
				if (!loaded) {
					readyList.push(fn);
					return;
				}
				fn.call(wrapper[0]);
			},
			close: function() {
				wrapper.data("overlay").close();
			}
		};
		if (config.fixHeightToContent) {
			api.resetHeightToContent = function() {
				sizeHeightToContent();
				position(false);
			};
		}
		wrapper.data(overlayApiKeyName, api);
		if (config.apiKeyName) {
			wrapper.data(config.apiKeyName, api);
		}

		$('body').append(wrapper);
		content.append(jq);
		if (config.innerHTML) {
			jq.html(config.innerHTML);
		}

		jq.show();
		size();
		$(window).bind('resize.overlayPanel' + wrapperZIndex, queueSizeAndPosition);
		$(window).bind('scroll.overlayPanel' + wrapperZIndex, queueSizeAndPosition);
		
		wrapper.bind('maskClick', config.onMaskClick);
		wrapper.bind('escPress', config.onEscPress);
		wrapper.bind('beforeLoad', config.onBeforeLoad);
		wrapper.bind('overlayLoad', config.onLoad);
		wrapper.bind('beforeClose', config.onBeforeClose);
		wrapper.bind('close', config.onClose);

		wrapper.overlay({
			top: topInset() || gutter,
			fixed: false,
			load: true,
			close: 'a.' + overlayCloseClass,
			closeOnClick: false,
			closeOnEsc: false,
			oneInstance: false,
			onBeforeLoad: function(e) {
				fire('beforeLoad', e);
				if (e.isDefaultPrevented()) { return this; }
				mask = $(document).mask({
					zIndex: wrapperZIndex - 1,
					onClick: function(e) { fire('maskClick', e); }
				});
				overlayPanelManager.register(wrapperZIndex, function(e) {
					fire('escPress', e);
				});
			},
			onLoad: function (e) {
				if (config.fixHeightToContent) {
					sizeHeightToContent();
				}
				fire('overlayLoad', e);

				loaded = true;
				for (var i = 0; i < readyList.length; i++) {
					readyList[i].call(wrapper[0]);
				}
				readyList = null;
			},
			onBeforeClose: function (e) {
				fire('beforeClose', e);
				if (e.isDefaultPrevented()) { return this; }

				config.onCompletedBeforeClose(e);
				if (e.isDefaultPrevented()) { return this; }

				overlayPanelManager.unregister(wrapperZIndex);

				$(window).unbind('resize.overlayPanel' + wrapperZIndex);
				$(window).unbind('scroll.overlayPanel' + wrapperZIndex);
				if (sizeAndPositionCall != null) {
					sizeAndPositionCall.cancel();
					sizeAndPositionCall = null;
				}

				$('a.close', wrapper).hide();
			},
			onClose: function (e) {
				wrapper.remove();
				mask.close();
				fire('close', e);
			}
		});

		return api;
	};	

	$.fn.overlayWindow = function (config) {
		config = $.extend(
			{
				fixHeightToContent: false,
				closeOnClick: true,
				closeOnEsc: true,
				innerHTML: null,
				onCloseWarning: function() { return null; },
				onBeforeLoad: function(e) { },
				onLoad: function(e) { },
				onBeforeClose: function(e) { },
				onClose: function(e) { }
			},
			config);

		var closeWarningCallbacks = [ config.onCloseWarning ];

		var showingCloseWarning = false;
		var overlay = new overlayPanel(this, {
			fixHeightToContent: config.fixHeightToContent,
			innerHTML: config.innerHTML,
			apiKeyName: overlayWindowApiKeyName,
			onMaskClick: function(e) {
				if (config.closeOnClick) {
					e.overlay.close();
				}
			},
			onEscPress: function(e) {
				if (config.closeOnEsc) {
					e.overlay.close();
				}
			},
			cssClasses: overlayWrapperClass + ' ' + overlayWindowWrapperClass,
			onBeforeLoad: config.onBeforeLoad,
			onLoad: config.onLoad,
			onBeforeClose: config.onBeforeClose,
			onCompletedBeforeClose: function(e) {
				if (!showingCloseWarning) {
					var closeWarningText = null;
					for (var i = 0; i < closeWarningCallbacks.length; i++) {
						if (closeWarningText = closeWarningCallbacks[i]()) {
							break;
						}
					}
					if (closeWarningText) {
						$hnj.html(String(closeWarningText)).exitWarning({
							onContinue: function (e) {
								showingCloseWarning = true;
								overlay.close();
								showingCloseWarning = false;
							}
						});
						e.preventDefault();
					}
				}
			},
			onClose: config.onClose
		});
		overlay.addCloseWarningCallback = function(onCloseWarning) {
			closeWarningCallbacks.push(onCloseWarning);
		};
		overlay.setCloseOnClick = function(closeOnClick) {
			config.closeOnClick = closeOnClick;
		};
		overlay.setCloseOnEsc = function(closeOnEsc) {
			config.closeOnEsc = closeOnEsc;
		};
		return overlay;
	};

	$.fn.modalDialog = function(config) {
		config = $.extend(
			{
				buttons: [ "OK" ],
				defaultButton: "OK",
				onButtonClick: function(e) { },
				buttonOnEsc: null,
				innerHTML: null,
				onBeforeLoad: function(e) { },
				onLoad: function(e) { },
				onBeforeClose: function(e) { },
				onClose: function(e) { }
			},
			config);
		if (typeof(config.buttons) == "string") {
			config.buttons = [ config.buttons ];
		}

		var overlay;
		var makeButton = function(buttonText, isFirstButton) {
			return $('<a class="hni_DialogButton' + (isFirstButton ? ' hni_DialogFirstButton' : '') + '" href="#" />')
				.append(buttonText)
				.click(function(e) {
					fireButtonClick(buttonText);
					return false;
				});
		};
		var fireButtonClick = function(buttonText) {
			var event = $.Event('buttonClick');
			event.buttonText = buttonText;
			event.overlay = overlay;
			content.trigger(event);
		};

		var content = $('<div />')
			.append(this);
		var buttonElements = {};
		if (config.buttons.length) {
			var buttonDiv = $('<div class="hni_DialogButtons" />');
			content.append(buttonDiv);

			for (var i = 0; i < config.buttons.length; i++) {
				var buttonElement = makeButton(config.buttons[i], i == 0);
				buttonDiv.append(buttonElement);
				buttonElements[config.buttons[i]] = buttonElement;
			}
		}

		content.bind('buttonClick', config.onButtonClick);

		overlay = new overlayPanel(content, {
			width: 400,
			fixHeightToContent: true,
			cssClasses: overlayWrapperClass + ' ' + modalDialogWrapperClass,
			innerHTML: config.innerHTML,
			apiKeyName: modalDialogApiKeyName,
			onEscPress: function(e) {
				if (config.buttonOnEsc) {
					fireButtonClick(config.buttonOnEsc);
				}
			},
			onBeforeLoad: config.onBeforeLoad,
			onLoad: function(e) {
				if (config.buttons.length && config.defaultButton) {
					var button = buttonElements[config.defaultButton];
					if (button) {
						button.focus();
					}
				}
				config.onLoad(e);
			},
			onBeforeClose: config.onBeforeClose,
			onClose: config.onClose
		});

		return overlay;
	};

	$.fn.alert = function(config) {
		config = $.extend(
			{
				innerHTML: null,
				onBeforeLoad: function(e) { },
				onLoad: function(e) { },
				onBeforeClose: function(e) { },
				onClose: function(e) { }
			},
			config);

		return this.modalDialog({
			buttons: "OK",
			defaultButton: "OK",
			buttonOnEsc: "OK",
			innerHTML: config.innerHTML,
			onButtonClick: function(e) {
				switch (e.buttonText)
				{
					case 'OK':
						e.overlay.close();
						break;
				}
			},
			onBeforeLoad: config.onBeforeLoad,
			onLoad: config.onLoad,
			onBeforeClose: config.onBeforeClose,
			onClose: config.onClose
		});
	};

	$.fn.exitWarning = function(config) {
		config = $.extend(
			{
				innerHTML: null,
				onContinue: function(e) { },
				onBeforeLoad: function(e) { },
				onLoad: function(e) { },
				onBeforeClose: function(e) { },
				onClose: function(e) { }
			},
			config);

		return this.modalDialog({
			buttons: ['Continue', 'Cancel'],
			defaultButton: 'Continue',
			innerHTML: config.innerHTML,
			onButtonClick: function (e) {
				e.overlay.close();
				switch (e.buttonText) {
					case 'Continue':
						config.onContinue($.Event('continue'));
						break;
				}
			}
		});
	};

	$.fn.confirm = function(config) {
		config = $.extend(
			{
				innerHTML: null,
				onYes: function(e) { },
				onNo: function(e) { },
				onBeforeLoad: function(e) { },
				onLoad: function(e) { },
				onBeforeClose: function(e) { },
				onClose: function(e) { }
			},
			config);

		return this.modalDialog({
			buttons: [ "Yes", "No" ],
			defaultButton: "Yes",
			buttonOnEsc: "No",
			innerHTML: config.innerHTML,
			onButtonClick: function(e) {
				e.overlay.close();
				switch (e.buttonText)
				{
					case 'Yes':
						config.onYes($.Event('yes'));
						break;
					case 'No':
						config.onNo($.Event('no'));
						break;
				}
			},
			onBeforeLoad: config.onBeforeLoad,
			onLoad: config.onLoad,
			onBeforeClose: config.onBeforeClose,
			onClose: config.onClose
		});
	};

	$.fn.disclaimer = function(config) {
		config = $.extend(
			{
				innerHTML: null,
				onAccept: function(e) { },
				onDecline: function(e) { },
				onBeforeLoad: function(e) { },
				onLoad: function(e) { },
				onBeforeClose: function(e) { },
				onClose: function(e) { }
			},
			config);

		var dontShowCheckboxID = 'hni_DisclaimerDontShowCheckbox';
		var dontShowCheckbox = $('<input id="' + dontShowCheckboxID + '" type="checkbox" />');
		var content = $('<div />')
			.append(this)
			.append(
				$('<div />')
					.addClass('hni_DisclaimerDontShow')
					.append(dontShowCheckbox)
					.append('<label for="' + dontShowCheckboxID + '">Don\'t show this again</label>')
			);
		
		content.bind('accept', config.onAccept);
		content.bind('decline', config.onDecline);

		return content.modalDialog({
			buttons: [ "Accept", "Decline" ],
			defaultButton: "Decline",
			innerHTML: config.innerHTML,
			onButtonClick: function(e) {
				e.overlay.close();
				switch (e.buttonText)
				{
					case 'Accept':
						var event = $.Event('accept');
						event.dontShowAgainChecked = dontShowCheckbox.is(':checked');
						content.trigger(event);
						break;
					case 'Decline':
						content.trigger('decline');
						break;
				}
			},
			onBeforeLoad: config.onBeforeLoad,
			onLoad: config.onLoad,
			onBeforeClose: config.onBeforeClose,
			onClose: config.onClose
		});
	};

	$.fn.prompt = function(config) {
		config = $.extend(
			{
				innerHTML: null,
				onAnswer: function(e) { },
				onCancel: function(e) { },
				onBeforeLoad: function(e) { },
				onLoad: function(e) { },
				onBeforeClose: function(e) { },
				onClose: function(e) { }
			},
			config);
		
		var overlay;
		var makeAnswerEvent = function() {
			var event = $.Event('answer');
			event.answer = textBox.val();
			return event;
		};

		var textBox = $('<input type="text" style="width:100%" />')
			.keypress(function(e) {
				if (e.which == 13) {
					overlay.close();
					config.onAnswer(makeAnswerEvent());
				}
			});
		var content = $('<div />')
			.append(
				$('<div />').append(this)
			)
			.append(
				$('<div />').append(textBox)
			);

		overlay = content.modalDialog({
			buttons: [ "OK", "Cancel" ],
			defaultButton: "OK",
			buttonOnEsc: "Cancel",
			innerHTML: config.innerHTML,
			onButtonClick: function(e) {
				e.overlay.close();
				switch (e.buttonText)
				{
					case 'OK':
						config.onAnswer(makeAnswerEvent());
						break;
					case 'Cancel':
						config.onCancel($.Event('cancel'));
						break;
				}
			},
			onBeforeLoad: config.onBeforeLoad,
			onLoad: function(e) {
				textBox.focus();
				config.onLoad(e);
			},
			onBeforeClose: config.onBeforeClose,
			onClose: config.onClose
		});

		return overlay;
	};

	$.fn.parentOverlay = function() {
		return $(this).closest('div.' + overlayWrapperClass);
	};

	$.fn.parentOverlayWindow = function() {
		return $(this).closest('div.' + overlayWindowWrapperClass);
	};

	$.fn.parentModalDialog = function() {
		return $(this).closest('div.' + modalDialogWrapperClass);
	};

	$.fn.extend(function() {
		var baseReady = $.fn.ready;

		var findOverlay = function(jq) {
			if (jq.is('div.' + overlayWrapperClass)) {
				return jq;
			}
			var parentOverlay = jq.parentOverlay();
			if (parentOverlay.size()) {
				return parentOverlay;
			}
			return null;
		};

		return {
			ready: function(fn) {
				if (!fn) return;
				var jq = $(this);
				if (jq.size() && jq !== document) {
					var overlay = findOverlay(jq);
					if (overlay) {
						overlay.data(overlayApiKeyName).ready(fn);
						return;
					}
				}
				baseReady.call(this, fn);
			}
		};
	}());

})($hnj);

}
if (window['$hnj']) { $hnj.registry.register('/scripts/libraries/jquery/plugins/jquery.tools/jquery.tools.min.js', false); };


