// Login / Logout handlers
//
console.log("Loading login.js...");

function initLogin() {
    console.log(' __ initLogin()'); 

    $('auth-login-text-username').ancestors()[0].update('<div id="auth-login-background-username" class="auth-login-background"><input type="text" name="auth-login_username" id="auth-login-text-username" class="auth-login-text" /></div>');
    $('auth-login-password-password').ancestors()[0].update('<div id="auth-login-background-password" class="auth-login-background"><input type="password" name="auth-login_password" id="auth-login-password-password" class="auth-login-password" /></div>');
    $('auth-login-submit-button').ancestors()[0].update('<input type="image" src="../../images/btn_login_submit.gif" id="auth-login-submit-button" class="submit-btn" />');
}

function handleLogin(res) {
    initLogin();
    updateActiveUsers();
    showActiveUsers();

    init_btn_rollover('submit');

    Event.observe('auth-login', 'submit', function(event) { 
	Event.stop(event);
	FwDispatch.form('auth-login','view-container',null,handleLoginResult);
    });
}

function dispatchLogin(callback,args) {
    console.log("dispatchLogin()");
    hideListen();
    
    if($('nav-login')) {
	FwDispatch.content($('nav-login').href,'view-container',null,handleLoginDispatch,callback,args);
    } else {
	sendLogin();
	callback(args);
    }
}

function dispatchLoginListen() {
    console.log(" ____________________-- dispatchLoginListen()");
    hideListen();
    if($('nav-login')) {
	FwDispatch.content($('nav-login').href,'view-container',null,handleLoginDispatch,showInfo,1);
    } else {
	sendLogin();
    }
}

function handleLoginDispatch(res) {
    initLogin();
    updateActiveUsers();
    showActiveUsers();

    init_btn_rollover("submit");

    Event.observe('auth-login', 'submit', function(event) { 
	Event.stop(event);
	FwDispatch.form('auth-login','dumpster',null,handleLoginDispatchResult,res['extra'],res['args']);
    });
}

function handleLoginDispatchResult(res) {
    updateActiveUsers();
    showActiveUsers();

    var confirmed = Try.these(
	function() { return res['data'].login_success; },
	function() { return 'false'; }
    );


    console.log(" #### handleLoginDispatchResult() -- got data [%s] #### ", confirmed);

    if(confirmed == 'true') {
	$('view-container').update("");
	sendLogin();
	FwDispatch.content('/main/nav','view-nav',null,handleMainNavigation);    
	console.log("handleLoginDispatchResult() -- dispatching [%s] args [%s]",res['extra'],res['args']);
	var n_args = Try.these(
            function() { return res['args']; },
            function() { return null; }
	);

	res['extra'](n_args);
    } else {
	$('view-container').update($('dumpster').innerHTML);
    }
}

function testCall(a) {
    console.log("TESTING 1... 2... 3... : [%s]",a);
}

function handleLogout(res) {    
    FwDispatch.content($('nav-logout').href,'view-container',null,handleLogoutResult);
    showActiveUsers();

    console.log("calling sendLogin()");
    sendLogin();
}

function handleLogoutResult(res) {    
    updateActiveUsers();
    showActiveUsers();

    if($('logout-hdr')) {
	$('logout-hdr').update('<img class="header-img" src="/images/hdr_logout.gif" alt="Logout">');
    }
    FwDispatch.content('/main/nav','view-nav',null,handleMainNavigation);
}

function handleLoginResult(res) { 
    //console.log(" ================================= handleLoginResult() -- [%s]",res['data'].confirmed);
    console.log("calling sendLogin()");
    sendLogin();

    FwDispatch.content('/main/nav','view-nav',null,handleMainNavigation);

    updateActiveUsers();
    showActiveUsers();
    //FwDispatch.content($('nav-profile').href,'view-container',null,handleProfile);
}

function handleResetPassword(res) {

    var emailAddress = $('auth-reset_password-text-email-address').value;

    $('auth-reset_password-text-email-address').ancestors()[0].update('<div id="auth-reset_password-background-email-address" class="auth-login-background"><input type="text" name="auth-reset_password_email_address" id="auth-reset_password-text-email-address" class="auth-reset_password-text" value="'+emailAddress+'" /></div>');
    $('auth-reset_password-submit-button').ancestors()[0].update('<input type="image" src="../../images/btn_login_submit.gif" id="auth-reset_password-submit-button" class="submit-btn" />');

    init_btn_rollover("submit");

    $$('.auth-reset_password-formtable-error').invoke('hide');

    var errors = Try.these(
      function() { return $H(res['data'].errors); },
      function() { return $H(); }
    ); 

    errorColor = "#ff0000";

    errors.each(
      function(h){
        $('reset-password-error-msg').update(h.value); 
      }
    )

    var frm = 'auth-reset_password';
    Event.observe(frm, 'submit', function(event) { 
	Event.stop(event);
	FwDispatch.form(frm,'view-container',null,handleResetPasswordStep2);
    });
}

function handleResetPasswordStep2(res) {

    if ($('auth-reset_password-text-email-address')){
      handleResetPassword(res); 
      return false;
    }

    console.log('reset password submitted');

}

