$(function () {
	
	P.module('login', function () {	
		var $navItem = $('#go_login'),
			$login = $('#login'),
			isSelected = false,
			hasFocus = false,
			hideDelay;
			
		function show () {
			cancelHide();
			$login.stop().removeClass('hidden').css({
				opacity: 0,
				left: $navItem.offset().left - $login.width() + $navItem.width() + 'px',
				top: $navItem.offset().top + 'px'
			}).fadeTo(200, 1);
			isSelected = true;
			return false;
		}
		
		function hide () {
			if (hasFocus) return;
			$login.fadeTo(200, 0, function () {
				$login.addClass('hidden').css('left', '-9999px');
			});
			isSelected = false;
		}
		
		function delayedHide () {
			hideDelay = window.setTimeout(hide, 1500);
		}
		
		function cancelHide () {
			window.clearTimeout(hideDelay);
		}
		
		function toggle () {
			if (isSelected) {
				return hide();
			} else {
				return show();
			}
		}
		
		return {
			show: show,
			hide: hide,
			toggle: toggle,
			init: function () {
				$navItem.click(toggle);
				$login.mouseleave(delayedHide).click(function (e) {
					e.stopPropagation();
				});
				$login.mouseover(cancelHide).find('input')
					.blur(function () {
						hasFocus = false;
					})
					.focus(function () {
						hasFocus = true;
					});
				$('body').click(function () {
					hasFocus = false;
					hide();
				});
				return true;
			}()
		};		
	});
	
});