//------------------------------------------------------------
// Some utility Ajax methods for retrieving user-related info for client
// side operations. Requires Mochikit.
//------------------------------------------------------------

function getUserName (user_id, cb) {
	
	if (!user_id) return null;
	
	// Just using the get_genome method which also returns the username 
	var req = doJSONRequest('/vortexuser_get_genome', {user_id: user_id});
	req.addBoth(function (resp) {
		if (resp.user_name) {
			cb(resp.user_name);
		}
	});
}

//------------------------------------------------------------
// Presentation components for login panel on static site.
//------------------------------------------------------------

var login_button= new Image();
var processing_button= new Image();

function ShowUsername (cb) {

	// Preload the buttons
	login_button.src = '/@@/images/login-button.jpg';
	processing_button.src = '/@@/images/login-processing.jpg';

	// Get the user ID from the cookie, if it exists.
	var cookies = document.cookie.split(';');
	var user_id = getUserIdFromCookie();
	
	// If no cookie set, just show the login links.
	if (!user_id) {
		showLoggedInPanel(false);
		return;
	}
	
	// Get the username and do something with it.
	if (!cb) cb = function (username) {
		// Show it
		if (username) {
			byId('username').innerHTML = username;
			showLoggedInPanel(true);
		}
		else {
			showLoggedInPanel(false);
		}
	};
	var username = getUserName(user_id, cb);
};

function getUserIdFromCookie (whole) {
	// Get the user ID from the cookie, if it exists.
	var cookies = document.cookie.split(';');
	var user_id = null;
	
	try {
		if (cookies.length > 0) {
			for (i=0; i<cookies.length; i++) {
				parts = cookies[i].split('=');
				if (parts.length > 0) {
					if (parts[0].indexOf('VortexLogin') >= 0) {
						if (whole) {
							return parts[1];
						}
						else {
							details = parts[1].split('-');
							if (details.length > 0) {
								return details[0];
							}
						}
					}
				}
			}
		}
	}
	catch (e) {}
	
	return null;
}

function showLoggedInPanel(status) {
	byId('logged_in_panel').style.display = status ? '' : 'none';					
	byId('signup_panel').style.display = status ? 'none' : '';					
}

var button_values = {};

function showButtonWaiting(button_id, status) {
	if (status) {
		var button = byId(button_id);
		button_values[button_id] = button.src;
		button.src = processing_button.src;
	}
	else {					
		byId(button_id).src = button_values[button_id];
	}
}

function login (username, password, rememberme) {

	// Show the button waiting state.
	showButtonWaiting('login_button', true);

	var user_email = byId('user_email').value;
	var password = byId('password').value;

	// [3/5/07] Disabling remember me for now.
	//var remember_me = byId('remember_me').checked ? 'true' : 'false';
	var remember_me = 'false';
	
	var req = doJSONRequest('/vortexuser_login', {user_email: user_email,
		password: password,
		remember_me: remember_me});
	req.addCallback(function (resp) {
		// If we successfully logged in, redirect to the /dna page.
		if (res && res.user_name) {
			window.location.href = '/dna';
		}
		else {
			// Reset the login button and display the message.
			showButtonWaiting('login_button', false);
			var messages = byId('messages');
			messages.style.display = '';
			messages.innerHTML = res.message;
		}
	});
	req.addErrback(function (resp) {
		// Just stop waiting.
		showButtonWaiting('login_button', false);
	});
}

function fixEvent (event) {
	if(!event){
		if(window["event"]){
			event = window.event;
		}
	}
	return event;
}

function byId(name) {
	return document.getElementById(name);
}

function loginOnEnter(event) {
	event = fixEvent(event);
    if (event.keyCode == 13) {
    	// don't submit on textareas, very bad!
		login();
        return false;
    }
    return true;
}
