Login = {
	controlUrl : "login_handler",
	mainHandlerUrl : "main_handler",
	loginAction : "",

	doLoginCheck : function() {
		new Ajax.Request(Login.mainHandlerUrl, { method: 'post', parameters: 'a=0', onComplete: Login.checkLogin });
	},
	
	checkLogin : function(r) {
		if (r.responseText == 'success') {
			Main.doStart();
		} else {
			Login.displayLogin();
		}
	},

	displayLogin : function(w) {
		Dialog.confirm("<br><div id=\"login_popup\"><\/div>",
                   {windowParameters: {width:350, height:235}, className: "popup_b", okLabel: "Proceed", buttonClass: "popup_button", ok: Login.doLogin });

		if (w) {
			Login.displayLoginMessage(w);
		} else {
			Login.displayLoginMessage('l');
			$('user_name').focus();
		}
	},
	
	displayLoginMessage : function(m) {
		Login.loginAction = m;

		if (m == 'r') { // register
			$('login_popup').innerHTML = "<table class=\"popup_table\">"+
						"<tr><td colspan=\"2\" class=\"popup_header\">Create New User<\/td><\/tr>"+
						"<tr><td class=\"popup_l\">Desired user name:<\/td><td style=\"padding:5px;text-align:left;\"><input type=\"text\" name=\"new_user_name\" id=\"new_user_name\" value=\"\" maxlength=\"10\"/><\/td><\/tr>"+
						"<tr><td class=\"popup_l\">Desired password:<\/td><td style=\"padding:5px;text-align:left;\"><input type=\"password\" name=\"new_user_password\" id=\"new_user_password\" value=\"\" maxlength=\"10\"/><\/td><\/tr>"+
						"<tr><td class=\"popup_l\">Email address:<\/td><td style=\"padding:5px;text-align:left;\"><input type=\"text\" name=\"new_email\" id=\"new_email\" value=\"\"/><\/td><\/tr>" +
						"<tr><td colspan=\"2\" class=\"popup_s\"><a href=\"javascript:void(0);\" onclick=\"Login.displayLoginMessage('l')\" style=\"color:#76baff;\">login<\/a> - <a href=\"javascript:void(0);\" onclick=\"Login.displayLoginMessage('f')\" style=\"color:#76baff;\">recover<\/a><\/td><\/tr><\/table>";
		}
		
		if (m == 'f') { // forgot pass
			$('login_popup').innerHTML = "<table class=\"popup_table\">"+
						"<tr><td colspan=\"2\" class=\"popup_header\">Recover user login and password<\/td><\/tr> "+
						"<tr><td class=\"popup_l\">Registration email:<\/td><td style=\"padding:5px;text-align:left;\">"+
						"<input type=\"text\" name=\"forgot_email\" id=\"forgot_email\" value=\"\"/><\/td><\/tr>"+
						"<tr><td colspan=\"2\" class=\"popup_s\"><a href=\"javascript:void(0);\" onclick=\"Login.displayLoginMessage('r')\" style=\"color:#76baff;\">register<\/a> - <a href=\"javascript:void(0);\" onclick=\"Login.displayLoginMessage('l')\" style=\"color:#76baff;\">login<\/a><\/td><\/tr><\/table>";
		}
		
		if (m == 'l') { // login 
			$('login_popup').innerHTML = "<table class=\"popup_table\">"+
						"<tr><td colspan=\"2\" class=\"popup_header\">Registered Users<\/td><\/tr> "+
						"<tr><td class=\"popup_l\">Login user name: <\/td><td style=\"padding:5px;text-align: left;\"><input type=\"text\" name=\"user_name\" id=\"user_name\" value=\"\" maxlength=\"10\"/><\/td><\/tr>"+
						"<tr><td class=\"popup_l\">Login password: <\/td><td style=\"padding:5px;text-align: left;\"><input type=\"password\" name=\"user_password\" id=\"user_password\" value=\"\" maxlength=\"10\"/><\/td><\/tr> "+
						"<tr><td colspan=\"2\" class=\"popup_s\"><a href=\"javascript:void(0);\" onclick=\"Login.displayLoginMessage('r')\" style=\"color:#76baff;\">register<\/a> - <a href=\"javascript:void(0);\" onclick=\"Login.displayLoginMessage('f')\" style=\"color:#76baff;\">recover<\/a><\/td><\/tr> "+
						"<tr><td colspan=\"2\" class=\"popup_header\" style=\"padding-top:5px;\">Guest Entry<\/td><\/tr> "+
						"<tr><td class=\"popup_l\">Enter guest name:<\/td><td style=\"padding:5px;text-align: left;\"><input type=\"text\" id=\"login_name\" name=\"login_name\" value=\"\" maxlength=\"10\"/><\/td><\/tr><\/table>";
		}
	},

	doLogin : function() {
		if (Login.loginAction == 'l') {
			// check guest vs registered
			var user_name = $('user_name').value;
			var user_pass = $('user_password').value;
			if ((user_name != '') && (user_pass != '')) {
				// do registered login.
				new Ajax.Request(Login.controlUrl, { method: 'post', parameters: 'a=30&n=' + user_name + '&p=' + user_pass, onComplete: Login.checkValidLogin });
			} else if ($('login_name').value != '') {
				// do guest login
				new Ajax.Request(Login.mainHandlerUrl, { method: 'post', parameters: 'a=1&n=' + $('login_name').value, onComplete: Main.doStart });
				return;
			}
		} else if (Login.loginAction == 'r') {
			// process registration
			var user_name = $('new_user_name').value;
			var user_pass = $('new_user_password').value;
			var user_mail = $('new_email').value;
			
			if ( (user_name == '') || (user_pass == '') || (user_mail == '') ) {
				alert('please enter entire info required for registration');
				Login.displayLogin('r');
			} else {
				// send register request.
				new Ajax.Request(Login.controlUrl, { method: 'post', parameters: 'a=31&n=' + user_name + '&p=' + user_pass + '&e=' + user_mail, onComplete: Login.checkRegistration });
			}
		} else if (Login.loginAction == 'f') {
			// send registered email
			var user_mail = $('forgot_email').value;
			
			if (user_mail == '') {
				alert('please enter email for login recovery');
				Login.displayLogin('f');
			} else {
				// send server request
				new Ajax.Request(Login.controlUrl, { method: 'post', parameters: 'a=32&e=' + user_mail, onComplete: Login.checkForget });
			}
		}
	},
	
	checkValidLogin : function(r) {
		if (r.responseText == 'success') {
			Login.doLoginCheck();
		} else {
			alert('invalid login');
			Login.displayLogin();
		}
	},
	
	checkRegistration : function(r) {
		if (r.responseText == 'success') {
			Login.doLoginCheck();
		} else {
			alert('registration info invalid. try again?');
			Login.displayLogin('r');
		}		
	},

	checkForget : function(r) {
		if (r.responseText == 'success') {
			alert('registration info sent.');
			Login.displayLogin('r');
		} else {
			alert('no such user');
			Login.displayLogin('f');
		}		
	}
}