(function ($) {

	// Loading animation effect for jquery.tools overlay plugin.
	$.tools.overlay.addEffect('casino',
		function (pos, onLoad) {
			var conf = this.getConf(),
				w = $(window);

			if (!conf.fixed) {
				pos.top += w.scrollTop();
				pos.left += w.scrollLeft();
			}

			pos.position = conf.fixed ? 'fixed' : 'absolute';
			this.getOverlay().css(pos).fadeIn(conf.speed, onLoad);
		},

		function (onClose) {
			var closeSpeed = this.getConf().closeSpeed;

			if (closeSpeed > 0) {
				this.getOverlay().fadeOut(closeSpeed, onClose);
			} else {
				this.getOverlay().hide(0, onClose);
			}
		}
	);

	$.fn.inlineFormLabels = function () {
		//Inline Form Labels. From: http://www.zurb.com/playground/inline-form-labels
		return this.each(function () {
			var $this = $(this);
			$this.find('label.inlined:not([for])').click(function () {
				// Add click event handler for labels without associated input elements.
				$(this).addClass('focus');
				$(this).next('input.labeled').focus();
			});
			$this.find('label.inlined + input.labeled').focus(function () {
				$(this).prev('label.inlined').addClass('focus');
			}).keypress(function () {
				$(this).prev('label.inlined').addClass('hastext').removeClass('focus');
			}).blur(function () {
				if ($(this).val() === '') {
					$(this).prev('label.inlined').removeClass('hastext').removeClass('focus');
				}
			}).each(function () {
				if ($(this).val().length > 0) {
					$(this).prev('label.inlined').addClass('hastext').removeClass('focus');
				}
			});
		});
	};

	$.fn.initOverlayCloseButtons = function () {
		// Set click event for the close button inside the overlay.
		return this.each(function () {
			var $productOverlay = $(this);
			$productOverlay.find('.close').one('click', function (e) {
				var api = $productOverlay.data('overlay');

				if (api) {
					api.close();
				}

				e.preventDefault();
			});
		});
	};

	$.fn.initPrintButtons = function () {
		/// <summary>
		/// Make a elements with class 'print' call window.print().
		/// </summary>
		return this.each(function () {
			$(this).find('a.print').unbind('click').bind('click', function (e) {
				window.print();
				return false;
			});
		});
	};

	$.fn.addOverlayCorners = function () {
		if (jQuery.browser.msie && parseInt(jQuery.browser.version) <= 7) {
			return;
		}
		return this.each(function () {
			$(this).append('<div class="lt corner"/><div class="rt corner"/><div class="rb corner"/><div class="lb corner"/>');
		});
	};

	$.fn.extend({
		message: function () {
			return this.each(function () {
				var $this = $(this);
				if (!$this.children('.messageArea').length) {
					$this.wrapInner('<div class="messageArea"><div class="edge"><div class="tc"><div class="rc"><div class="lc"></div></div><div class="bc"></div></div><div class="tl"></div><div class="tr"></div><div class="bl"></div><div class="br"></div></div>');
				}
			});
		}
	})

	$.fn.extend({
		blurb: function () {
			return this.each(function () {
				var $this = $(this);
				if (!$this.hasClass('_blurbed')) {
					$this.wrap('<div class="blurbArea"><div class="edge"><div class="tc"><div class="rc"><div class="lc"></div></div><div class="bc"></div></div><div class="tl"></div><div class="tr"></div><div class="bl"></div><div class="br"></div></div>')
					.addClass('_blurbed');
				}
			});
		}
	})

	$.fn.extend({
		blurblight: function () {
			return this.each(function () {
				var $this = $(this);
				if (!$this.hasClass('_blurblighted')) {
					$this.wrap('<div class="blurbLightArea"><div class="edge"><div class="tc"><div class="rc"><div class="lc"></div></div><div class="bc"></div></div><div class="tl"></div><div class="tr"></div><div class="bl"></div><div class="br"></div></div>')
					.addClass('_blurblighted');
				}
			});
		}
	})

	$.fn.extend({
		contentmessage: function () {
			return this.each(function () {
				var $this = $(this);
				if (!$this.hasClass('_contentmessaged')) {
					$this.wrap('<div class="contentmessageArea"><div class="edge"><div class="tc"><div class="rc"><div class="lc"></div></div><div class="bc"></div></div><div class="tl"></div><div class="tr"></div><div class="bl"></div><div class="br"></div></div>')
					.addClass('_contentmessaged');
				}
			});
		}
	})

	$.fn.extend({
		error: function () {
			return this.each(function () {
				var $this = $(this);
				if (!$this.hasClass('_errormessaged')) {
					$this.wrap('<div class="errormessageArea"><div class="edge"><div class="tc"><div class="rc"><div class="lc"></div></div><div class="bc"></div></div><div class="tl"></div><div class="tr"></div><div class="bl"></div><div class="br"></div></div>')
					.addClass('_errormessaged');
				}
			});
		}
	})

	$.fn.extend({
		overlayArea: function () {
			return this.each(function () {
				$(this).wrap('<div class="overlayArea"><div class="edge"><div class="tc"><div class="rc"><div class="lc"></div></div><div class="bc"></div></div><div class="tl"></div><div class="tr"></div><div class="bl"></div><div class="br"></div></div>');
			});
		}
	})

})(jQuery);
