
//LOGIN MANAGER
	var loginManager = new Class({
		initialize: function(options){
			console.log('New loginManager');
			this.setOptions({},options);
			this.options.logged_in=false; 
		},
		log_in: function() {
			if (!this.validateLoginForms('login')){return;} //return if forms are not properly filled out
			this.doAjaxServerLogin('login');
		},
		doAjaxServerLogin: function(action) {
			var remind_query="";
			if (action=="remind"){
				$('login_form').remind.value='yes'; //if user is trying to get pwd, set this flag
			}else{
				$('login_form').remind.value='no'; 
			}
			new Ajax('dp.php', {
				method: 'post',
				postBody: $('login_form'),
				onComplete: this.completeAjaxServerLogin.bind(this)
			}).request();
		},
		completeAjaxServerLogin: function(req) {
			console.log('completeAjaxServerLogin has been completed');
			var myObject = Json.evaluate(req);
			console.log(myObject);
			switch (myObject.RESULT_CODE){
				case "login_usr_handle_error":
					$('login_usr_handle_field').setHTML($('login_usr_handle').getValue('login_usr_handle')); //set the attempted user name in the error message
					showError("login_usr_handle_bad");
					break;
				case "login_usr_pwd_error":
					showError("login_usr_pwd_bad");
					break;
				case "pwd_reset_success":
					$('login_usr_handle_forgot').setHTML($('login_usr_handle').getValue('login_usr_handle'));
					$('login_email_trunc').setHTML(myObject.EMAIL_TRUNC); //truncated email address. insert		
					$('forgot_pwd_instructions').addClass('hidden');
					this.hideAllErrorMsgs();
					$('forgot_pwd_success').removeClass('hidden');
					break;
				case "success":
					hideError("login_usr_handle_bad");
					hideError("login_usr_pwd_bad");
					this.usr_login_id=myObject.usr_login_id;
					this.storeUsrInfoInCookie();
					this.showMemberPage();
			}
		},
		hideAllErrorMsgs: function() {
			$('login_usr_handle_error').addClass('hidden');
			$('login_usr_pwd_error').addClass('hidden');
			$('login_usr_handle_bad').addClass('hidden');
			$('login_usr_pwd_bad').addClass('hidden');
		},
		checkLoggedInCookie: function() {
			console.log('checkLoggedInCookie',Cookie.get("logged_in"));
			if (Cookie.get("logged_in")=="true"){
				this.showLoginNotification();
			}
		},
		showLoginNotification: function() {
			console.log('showLoginNotification');
			$('logged_in_usr_name').setHTML(Cookie.get("login_usr_handle")); 
			$('logged_in_msg_id').removeClass('hidden');
		},
		hideLoginNotification: function() {
			$('logged_in_msg_id').addClass('hidden');
		},
		storeUsrInfoInCookie: function() {
			if ($('login_form').login_remember.checked){
				var duration={duration: 30}; //store cookie for 30days
			}else{
				var duration={duration: false}; //expire with session
			}
			Cookie.set("logged_in",true,duration);
			Cookie.set("usr_login_id",this.usr_login_id,duration);
			Cookie.set("login_usr_handle", $('login_usr_handle').getValue(),duration);
			Cookie.set("login_usr_pwd", $('login_usr_pwd').getValue(),duration);
			console.log("cookies have been set:",Cookie.get("usr_login_id"),Cookie.get("logged_in"),Cookie.get("login_usr_handle"),Cookie.get("login_usr_pwd"), " to duration: ", duration);
			this.showLoginNotification();
		},
		validateLoginForms: function(action) {
			var errorsExist=0;
			errorsExist=test_field('empty','login_usr_handle'); //test_field is in lib/commonUtils.js - it will show the error field
			if (action=="login"){
				errorsExist+=test_field('empty','login_usr_pwd');
			}
			if (errorsExist>0){
				return(false);
			}else{
				return(true);
			}
		},
		logout: function(elId,indexNum) {
			console.log("logout");
			this.hideLoginNotification();
			//delete cookies
				Cookie.remove("login_usr_handle");
				Cookie.remove("login_usr_pwd");
				Cookie.remove("logged_in");
				
			//call server side script to delete session
				new Ajax('dp.php', {
					method: 'post',
					postBody: 'ev=login&logout=yes',
					onComplete: this.completeAjaxLogout.bind(this)
				}).request();
		},
		completeAjaxLogout: function(req) {
			console.log('completeAjaxLogout has been completed');
			var myObject = Json.evaluate(req);
			console.log(myObject.RESULT_CODE);
		},
		showMemberPage: function() {
			if (Cookie.get("logged_in")=="true"){
				console.log("showing member page");
				document.location="member.html";
			}else{
				document.location="signup.html";
			}
		},
		forgot_pwd: function(action) {
			console.log("forgot_pwd",action);
			if (action=="instructions"){
				this.hideAllErrorMsgs();
				$('forgot_pwd_instructions').removeClass('hidden');
			}else if (action=="remind"){
				if (!this.validateLoginForms('remind')){return;} //return if forms are not properly filled out
				this.doAjaxServerLogin('remind');
			}
		}
		
		
	});
	
	loginManager.implement(new Options);



