/* ------------------------------------------------- TOP LEVEL GLOBALS ---------------------------------------------------------*/

var allFuncs 		= new Object();
var logineffect;
var bHasRedirect	= false;

/* ------------------------------------------------- TOP LEVEL FUNCTIONS ---------------------------------------------------------*/

// Page loads here
addEvent(window, 'load', loadMe);

function loadMe() {
	logineffect = new fx.Height('login',{duration:400});
	main_loop();
}

/*
  * Summary:	The Events that need to happen on every change to the page
  */
function main_loop() {
	disable_actions("form");
	disable_actions("a");
}

/*
  * Summary:	Disable all clickable elements and then attach their className as an event if the className starts with "func"
  * Return: 		Boolean indicating success or failure
  */
function disable_actions(tag) {
    var nodes = document.getElementsByTagName(tag);
	
    for (i=0; i<nodes.length; i++){
        var node = nodes[i];
        action = getAction(node.className);
        if(action != "") {
			if(tag == "a") node.onclick = allFuncs[action];
			else node.onsubmit = allFuncs[action];
        }
    }
 }
 
 function displayMessage(sMessage) {
	parts = sMessage.split('|');
	target = parts[0];
	message = parts[1];
	if($(target).nextSibling && $(target).nextSibling.className == "errors") {
		Element.remove($(target).nextSibling);
	}
	new Insertion.After(target, '<div class="errors"><p>'+message+'</p></div>');
 }
 
 /* ------------------------------------------------- AJAX FUNCTIONS ---------------------------------------------------------*/
 
/*
Summary:	After an ajax request has been completed, this function decides what to do
  */
function ajax_response(originalRequest) {
	if(!bHasRedirect) {
		$("login").innerHTML = originalRequest.responseText;
		logineffect.toggle();
		main_loop();
	}
	else {
		bHasRedirect = false;
		if(originalRequest.responseText.indexOf('|') != -1) {
			displayMessage(originalRequest.responseText);
		}
		else {
			logineffect.toggle();
			path = originalRequest.responseText;
			setTimeout('ajax_request(path, "")', 400);
		}
	}
}
 
/*
  * Summary:	Process an Ajax request
  */
function ajax_request(url, data) {
	var myAjax = new Ajax.Request(
		url,
		{method: 'post', parameters: data, onComplete: ajax_response}
	);
}
 
/* ------------------------------------------------- ACCOUNT OBJECT ACTIONS ---------------------------------------------------------*/

allFuncs["NewAccount"] = function() {
	logineffect.toggle();
	setTimeout('ajax_request("\/manage\/accountload.php?account=accountnew", "")', 400);
	return false;
}

allFuncs["Login"] = function() {
	logineffect.toggle();
	setTimeout('ajax_request("\/manage\/accountload.php?account=login", "")', 400);
	return false;
}

allFuncs["PasswordForgot"] = function() {
	logineffect.toggle();
	setTimeout('ajax_request("\/manage\/accountload.php?account=passwordforgot", "")', 400);
	return false;
}

allFuncs["ForgotPassword"] = function() {
	bHasRedirect = true;
	email = $F("email");
	data = "&email="+email;
	setTimeout('ajax_request("\/manage\/accountprocess.php?action=forgot&ajax=true", data)', 400);
	return false;
}
 