//========================================================================
// This javascript configures a form to submit via AJAX.
// It awaits an XML document response.
// XML Document Map:
//    <request>  :   the root element
//    <result>   :   string value "Success" or "Fail"
//    <redir>    :   string value, a URL
//    <cookie>   :   contains cookie values
//    <name>     :   cookie name
//    <expiration> : time in days that the cookie should be good for
//========================================================================

function AjaxLogin(form, returnStatus){
	var $form = $(form);
	var $url  = form.action;

	var AjaxLoginResult = jQuery.ajax({
		url: $url,
		async: false,
		dataType: "xml",
		type: "POST",
		data: $form.serialize(),
		success: function(data, textStatus, jqXHR){

			var xmlDoc = $.parseXML(jqXHR.responseText);
			var $xml   = $(xmlDoc);
			var result = $xml.find("result").text();
			var redir  = $xml.find("redir").text();
			var msg    = $xml.find("msg").text();

			if (result=="Success"){
				$(".loginToggle-Off").trigger("login");
				$(".loginToggle-On").trigger("login");

				var userCookie = {
					name: $xml.find("username").attr("name"),
					value: $xml.find("username").attr("value"),
					expiration:  $xml.find("expiration").text()
				}

				var passCookie = {
					name: $xml.find("password").attr("name"),
					value: $xml.find("password").attr("value"),
					expiration:  $xml.find("expiration").text()
				}

				if(passCookie.value != ""){
					Cookie.create(userCookie.name, userCookie.value, userCookie.expiration);
					Cookie.create(passCookie.name, passCookie.value, passCookie.expiration);
				}

				if(redir != ""){
					location = redir;
				} else {
					returnStatus = msg;
				}
			} else {
				returnStatus = msg;
			}

		},
		error: function(jqXHR, textStatus, errorThrown){
			returnStatus = "System error! Please try again.  If this continues, please contact the site administrator.";
		}
	});

	return AjaxLoginResult.responseText;
}

$(function(){
	$("#navLoginForm").submit(function(e){
		e.preventDefault();

		var returnStatus;

		$("#badNavLogin").hide();

		var Result = AjaxLogin(this, returnStatus); // responseText XML

		var xmlDoc = $($.parseXML(Result));

		if(xmlDoc.find("result").text()=="Success"){
			// get rid of the form
			$(this).remove();

			// get rid of the login link
			$("#ShowLoginForm").remove();

			// make the account navigation appear (it's hidden until the user
			$("#navAccount").show();
		} else {
			var errString = xmlDoc.find("msg").text();

			if(errString.indexOf("password") > 0){
				$("#navLoginPassword").tooltip({
					caption: errString,
					cardinal: "w",
					fit: "loose"
				});
			} else if(errString.indexOf("exists") > 0 || errString.indexOf("disabled") > 0){
				$("#navLoginUsername").tooltip({
					caption: errString,
					cardinal: "w",
					fit: "loose"
				});
			}
		}
	});
});
