
$(document).ready(function() {

	if (navigator.userAgent.indexOf("MSIE 7") == -1) {

		addToPulldown($("#register"));
        addToPulldown($("#log-in"));
		addToPulldown($("#recover-password"));

		$("<ul id='tabs'></ul>").appendTo("#main");
		
		//can't get noscript content cross-browser - nicest solution
		if ($("meta[name=authenticated]").attr("content") == "true") {
			$("#tabs").append("<li class='close'><span><span></span></span></li>");
			$("#tabs :last-child :last-child :last-child").append("<a href='/log-out'>Log Out</a>");
		} else {
			$("#tabs").append("<li class='pull-down'><span><span></span></span></li>");
			$("#tabs :last-child :last-child :last-child").append("<a class='arrow' href='#login'>Log in</a> / <a class='register' href='#register'>Register</a>");
		}

		$("a[href=#login]").live("click", function(event) {
			event.preventDefault();
			$(this).attr("href", "#login-hide");
			$("a[href=#register-hide]").attr("href", "#register");
			openPulldown($("#log-in"));
			$("ul#tabs li.pull-down span span a.arrow").addClass("arrow_down").removeClass("arrow");
		});
		$("a[href=#login-hide]").live("click", function(event) {
			event.preventDefault();
			$(this).attr("href", "#login");
			$("a[href=#register-hide]").attr("href", "#register");
			closePulldown();
			$("ul#tabs li.pull-down span span a.arrow_down").addClass("arrow").removeClass("arrow_down");
		});
		$("a[href=#register]").live("click", function(event) {
			event.preventDefault();
			$(this).attr("href", "#register-hide");
			$("a[href=#login-hide]").attr("href", "#login");
			openPulldown($("#register"));
			$("ul#tabs li.pull-down span span a.arrow").addClass("arrow_down").removeClass("arrow");
		});
		$("a[href=#register-hide]").live("click", function(event) {
			event.preventDefault();
			$(this).attr("href", "#register");
			$("a[href=#login-hide]").attr("href", "#login");
			closePulldown();
			$("ul#tabs li.pull-down span span a.arrow_down").addClass("arrow").removeClass("arrow_down");
		});

        //$("#log-in a[href=#register], #recover-password a[href=#register]").click(function(event) {

		$("#log-in a[href=#register]").click(function(event) {
			event.preventDefault();

			switchPulldownFocus("normal", $("#register"));

			return false;
		});

		
		if ($(".navigation a[href=#register]").length > 0) {
			$(".navigation a[href=#register]").click(function(event) {
				event.preventDefault();
				switchPulldownFocus("normal", $("#register"));
				return false;
			});
		}
		

		
		$("#log-in a[href=#recover-password]").click(function(event) {
			event.preventDefault();

			switchPulldownFocus("normal", $("#recover-password"));

			return false;
		});
		
	}

	$("#log-in form").submit(function(event) {

		var errorFound = false;

		function loginError(errorMessage, field)
		{
			var error = $("<p class='error'>" + errorMessage + "</p>");
			error.hide();
			$("#log-in .required").removeClass("missing");
			if ($("#log-in .error").length > 0) {
				$("#log-in .error").fadeOut(function() {
					$("#log-in .error").remove();
					$("#log-in h2 + p").after(error);
					error.fadeIn();
					if (!field) return;
					$(field).parents(".required").addClass("missing");
					field.focus();
				});
			} else {
				$("#log-in h2 + p").after(error);
				error.fadeIn();
				if (!field) return;
				$(field).parents(".required").addClass("missing");
				field.focus();
			}
		}

		$("#log-in .required input, #log-in .required select").each(function() {
			if (errorFound) return;
			if ($(this).val()) return;
			errorFound = true;
			var fieldName = $(this).parents(".required").find("label").text();
			fieldName = fieldName.substring(0, fieldName.length-2);
			loginError("Please enter your username and password.", this);
			event.preventDefault();
			return false;
		});

		return true;
	});

	$("#register form").submit(function(event) {

		var errorFound = false;

		function registerError(errorMessage, field)
		{
			var error = $("<p class='error'>" + errorMessage + "</p>");
			error.hide();
			$("#register .required").removeClass("missing");
			if ($("#register .error").length > 0) {
				$("#register .error").fadeOut(function() {
					$("#register .error").remove();
					$("#register h2 + p").after(error);
					error.fadeIn();
					if (!field) return;
					$(field).parents(".required").addClass("missing");
					field.focus();
				});
			} else {
				$("#register h2 + p").after(error);
				error.fadeIn();
				if (!field) return;
				$(field).parents(".required").addClass("missing");
				field.focus();
			}
		}

		$("#register .required input, #register .required select").each(function() {
			if (errorFound) return;
			if ($(this).val()) return;
			errorFound = true;
			var fieldName = $(this).parents(".required").find("label").text();
			fieldName = fieldName.substring(0, fieldName.length-2);
			registerError("There was a problem with your registration.  Please ensure you have filled in the " + fieldName + " field correctly.", this);
			event.preventDefault();
			return false;
		});

		var passwords = $("#register input[type=password]");
		if (passwords[0].value != passwords[1].value) {
			registerError("There was a problem with your registration.  Please make sure the passwords you have entered match.");
			event.preventDefault();
			return false;
		}

		if (!$("#register-privacy")[0].checked) {
			registerError("Please read the privacy policy before continuing.");
			event.preventDefault();
			return false;
		}

		return true;
	});

	
	$("#recover-password form").submit(function(event) {

		var errorFound = false;
        
		function recoverError(errorMessage, field)
		{
			var error = $("<p class='error'>" + errorMessage + "</p>");
			error.hide();
			$("#recover-password .required").removeClass("missing");
			if ($("#recover-password .error").length > 0) {
				$("#recover-password .error").fadeOut(function() {
					$("#recover-password .error").remove();
					$("#recover-password h2 + p").after(error);
					error.fadeIn();
					if (!field) return;
					$(field).parents(".required").addClass("missing");
					field.focus();
				});
			} else {
				$("#recover-password h2 + p").after(error);
				error.fadeIn();
				if (!field) return;
				$(field).parents(".required").addClass("missing");
				field.focus();
			}
		}
        
        
		$("#recover-password .required input, #recover-password .required select").each(function() {
			if (errorFound) return;
			if ($(this).val()) return;
			errorFound = true;
			var fieldName = $(this).parents(".required").find("label").text();
			fieldName = fieldName.substring(0, fieldName.length-2);
			recoverError("Please enter your email address.", this);
            event.preventDefault();
		});
        
        
		return true;
	});
});
