(function() {

	var api = this;

	/* overlay */
	
	var blocked = false;

	var resetOverlay = function() {
		unblockOverlay();
	}

	function repositionOverlay() {
		var overlay = $('.overlay');
		var content = $('.overlay > .container');
		content.css('left', ((overlay.width() - content.width()) / 2) + 'px');
		content.css('top', ((overlay.height() - content.height()) / 2) + 'px');
	}

	api.content = function(text) {
		if (text) {
			resetOverlay();
			$('.overlay > .container > .content').html(text);
			return api;
		} else {
			return $('.overlay > .container > .content').html();
		}
	}

	var blockOverlay = api.block = function() {
		blocked = true;
		$('.overlay > .background').unbind('click');
		$('.overlay > .container > .close').css('display', 'none');
		return api;
	}

	var unblockOverlay = api.unblock = function() {
		blocked = false;
		$('.overlay > .background').click(hideOverlay);
		$('.overlay > .container > .close').css('display', 'block');
		return api;
	}

	var showOverlay = api.show = function(delay) {
		$('.overlay').fadeIn(delay ? delay : 500);
		repositionOverlay();
		return false;
	}

	var hideOverlay = api.hide = function(delay) {
		$('.overlay').fadeOut(delay ? delay : 500);
		return false;
	}

	/* image size overflow control */

	var removeImageOverflow = function() {
		var oneThirdImages = $('.oneThird img, .oneThird embed, .oneThird object, .half img, .half embed, .half object');

		$.each(oneThirdImages, function(ii, image) {
			image = $(image);
			var parent = image.parent();
			if (image.width() > parent.innerWidth()) {
				var ratio = parent.innerWidth() / image.width();
				image.width(parent.innerWidth());
				image.height(image.height() * ratio);
			}
		});
	}

	/* form helper */

	var inputTipSetup = function() {
		var inputs = $('input, textarea');
		$.each(inputs, function(ii, input) {
			input = $(input);

			if (input.attr('title') == '') {
				return;
			}

			if (input.val() == input.attr('title')) {
				input.val('');
			}

			input.focus(function(){
				if (input.val() == input.attr('title')) {
					input.val('');
					input.css('color', 'black');
				}
			});

			input.blur(function(){
				if (input.val() == '') {
					input.val(input.attr('title'));
					input.css('color', input.css('border-top-color'));
				}
			});

			if (input.val() == ''){
				input.blur();
			}

		});

		var forms = $('form');
		$.each(forms, function(ii, form) {
			form  = $(form);
			form.submit(function() {
				var elements = form.find('input, textarea');
				$.each(elements, function(ee, element) {
					element = $(element);
					if (element.val() == element.attr('title')) {
						element.val('');
					}
				});
			});
		});
	}

	/* init */

	init = function() {
		$('.overlay > .background').click(hideOverlay);
		$('.overlay > .container > .close').click(hideOverlay);
		$(window).resize(repositionOverlay);
		removeImageOverflow();
		inputTipSetup();
	}

	$(document).ready(init);

}).call(window.overlay = {});

