	var generateErrorMessage = function(text) {
		content = '<div class="ui-state-error ui-corner-all"><p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: .3em;"></span>'+text+'  (Click this message to remove it)</p></div>'
		$("#error-text")
			.removeClass("invisible")
			.append(content);
	};

	var generateInfoMessage = function(text) {
		content = '<div class="ui-state-highlight ui-corner-all"><p><span class="ui-icon ui-icon-info" style="float: left; margin-right: .3em;"></span>'+text+'  (Click this message to remove it)</p></div>'
		$("#info-text")
			.removeClass("invisible")
			.append(content);
	};


$(function(){
	// Every error or info text message should have a onclick handler to remove it.
	$('#error-text > div, #info-text > div')
		.live('click', function() {
			if (jQuery(this).siblings().length == 0) {
				jQuery(this).filter(":parent").toggleClass("invisible");
			}
			$(this).remove();
		});

    $("#navlist li:has(ul)").hover(function(){
        $(this).addClass("hover");
        $('ul:first',this).css('visibility', 'visible');
    }, function(){
        $(this).removeClass("hover");
        $('ul:first',this).css('visibility', 'hidden');    
    });
    
    $("#navlist li:has(ul)").find("a:first").append(" &raquo; ");

	contactForm = $('#contact-form');
	if (contactForm) {
		contactForm.submit(function(event) {
			event.preventDefault();
			$.post('/admin/json/contact', $('#contact-form').serialize()
			)
			.success(function(data) {
				$('#contact-form input.text').val('');
				$('#contact-form textarea').val('');
				generateInfoMessage(data);
			})
			.error(function(event) {
				generateErrorMessage(event.responseText);
		    });
		});
	}
	loginForm = $('#login-form');
	if (loginForm) {
		loginForm.dialog({
			autoOpen: false,
			modal: true,
			buttons: {
				"Login": function() {
					$.post('/admin/json/login',
						   { user: jQuery('#login-form-data #user').val(),
						     hash: Sha256.hash(
						         jQuery('#login-form-data #salt').val() + 		     
							         Sha256.hash(jQuery('#login-form-data #pass').val())) }
					)
					.success(function(data) {
						window.location.replace('http://' + window.location.host + '/admin?info-message='+data);
					})
					.error(function(event){
						generateErrorMessage(event.responseText);
					})
					.complete(function(){
						$('#login-form input').val('');
						$('#login-form').dialog('close');
					});
				},
				Cancel: function() {
					$('#login-form input').val('');
					$(this).dialog('close');
				}
			}
		});
	}
	$('a#login-link')
		.click(function(event) {
			event.preventDefault();
			if (typeof Sha256 == "undefined") {
				$.getScript('/js/SHA256.js');
			}
			// Get the challenge code and set the private input element to it.
			$.get('/admin/json/login', function(data) {
				if (data == 'exists') {
					window.location.replace('http://' + window.location.host + '/admin');
				} else {
					$('#login-form-data #salt').val(data);
				}
			});

			$('#login-form').dialog('open');
		});
})

