Ext.namespace('cc.re.members');


/**
* Shows the login window
*/
cc.re.members.show_login = function()
{
	cc.re.members.login_win.show();
}


/**
* Submits the user login
*/
cc.re.members.login = function()
{
	var sf = Jsui.getForm('members_login_form');
	sf.configure({
		method: 'POST',
		url: 'admin/modules/members/site_provider.php?act=do_login'
	});
	
	fields = sf.getValues();
	
	// Validate the values
	if (fields.email == '' || fields.password == '')
	{
		Jsui.messagebox('Login Error',
			'You must enter both your email and your password to log in.'
		);
		return false;
	}
	
	sf.submit({
		success: function(form, action)
		{
			Jsui.messagebox(
				'Login Successful',
				'You have sucessfully logged in.  Taking you to the member home page...'
			);
			cc.re.members.login_win.hide();
			
			setTimeout(function(){
				if (cc.site.opt.MEMBERS_PAGE_AFTER_LOGIN != '')
				{
					document.location = cc.site.opt.MEMBERS_PAGE_AFTER_LOGIN;
				}
				else
				{
					document.location.reload();
				}
			}, 2000);
			
		},
		failure: function(response, opt, data)
		{
			if (data && data.error)
			{
				Jsui.messagebox('Error!', '' + data.error);
			}
			else
			{
				Jsui.messagebox('Connection error!', 'An error was encountered while communicating with the server.');
			}
		}
	});
	return true;
}


/**
* Logs the user out
*/
cc.re.members.logout = function()
{
	Jsui.confirm('Logout?', 'Are you sure you want to log out?', function(btn) {
		if (btn == 'yes')
		{
			Ext.Ajax.request({
				url: 'admin/modules/members/site_provider.php?act=do_logout',
				'method': 'GET',
				success: function(response, options) {
					Jsui.messagebox('Logout', 'Logout successful!');
					
					if (cc.site.opt.MEMBERS_PAGE_AFTER_LOGOUT != '')
					{
						document.location = cc.site.opt.MEMBERS_PAGE_AFTER_LOGOUT;
					}
					else
					{
						document.location.reload();
					}
				},
				failure: function(response, options) {
					Jsui.messagebox('Connection error!', 'An error was encountered while communicating with the server.');
				}
			});
		}
	});
}


/**
* Shows the recover window
*/
cc.re.members.show_recover = function()
{
	cc.re.members.login_win.hide();
	cc.re.members.pw_recover_win.show();
}

/**
* Submits the recover password form
*/
cc.re.members.recover = function()
{
	var sf = Jsui.getForm('members_recover_form');
	sf.configure({
		method: 'POST',
		url: 'admin/modules/members/site_provider.php?act=recover'
	});
	
	fields = sf.getValues();
	// Validate the values
	if (fields.email == '')
	{
		Jsui.messagebox('Missing Email', 'You must enter your email address to receive your password!');
		return false;
	}
	
	sf.submit({
		success: function(form, action)
		{
			Jsui.messagebox(
				'Password Sent',
				'Your password has been sent to your email.  If you have not received your password in a few minutes, check your spam folder.'
			);
			cc.re.members.pw_recover_win.hide();
		},
		failure: function(form, action)
		{
			if (action.result && action.result.error)
			{
				Jsui.messagebox('Error!', '' + action.result.error);
			}
			else
			{
				Jsui.messagebox('Connection error!', 'An error was encountered while communicating with the server.');
			}
		}
	});
	return true;
}


/**
* Shows the register window
*/
cc.re.members.show_register = function()
{
	cc.re.members.register_win.show();
}


/**
* Sends the user registration
*/
cc.re.members.submit_registration = function()
{
	var sf = new Ext.form.BasicForm('member_register_form', {
		method: 'POST',
		url: 'admin/modules/members/site_provider.php?act=register'
	});
	
	fields = sf.getValues();
	
	// Validate the values
	var errors = '';
	var error_count = 0;
	if (fields.name == '')
	{
		errors += "You must enter a name.<br/>";
		error_count++;
	}
	if (fields.email == '')
	{
		errors += "You must enter a valid email address.<br/>";
		error_count++;
	}
	if (fields.password == '')
	{
		errors += "You must choose a password.<br/>";
		error_count++;
	}
	if (fields.password_confirm != fields.password)
	{
		errors += "The password and password confirmation must be the same.<br/>";
		error_count++;
	}
	
	if (error_count > 0)
	{
		Jsui.messagebox('Incomplete Data',
			'The following error' + (error_count > 1 ? 's were' : 'was') + ' found in your registration:<br/><br/>' + errors + '<br/>Please correct these errors and click `Register` again!'
		);
		return false;
	}
	
	sf.submit({
		success: function(form, action)
		{
			Jsui.messagebox(
				'Registration Successful',
				'Thank you for registering!<br/>Your member account has been sucessfully created.  You can now log in using your email and the password you have chosen.'
			);
			cc.re.members.register_win.hide();
		},
		failure: function(form, action)
		{
			if (action.result.error)
			{
				Jsui.messagebox('Error!', '' + action.result.error);
			}
			else
			{
				Jsui.messagebox('Connection error!', 'An error was encountered while communicating with the server.');
			}
		}
	});
	return true;
}



/**
* Cancels the user registration with confirm
*/
cc.re.members.cancel_registration = function()
{
	Ext.MessageBox.confirm('Cancel', 'Cancel registration?  Any information entered will be lost.', function (btn) {
		if (btn == 'yes')
		{
			cc.re.members.register_win.hide();
		}
	});
}



/**
* Init
*/
Ext.onReady(function(){
	/**
	* The login window
	*/
	cc.re.members.login_win = new Jsui.Window({
		title: 'Member Login',
		width: 280,
		autoHeight: true,
		
		bodyStyle: 'padding: 25px;',
		closable: true,
		closeAction: 'hide',
		constrain: true,
		draggable: true,
		hideModel: 'display',
		layout: 'fit',
		modal: true,
		resizable: false,
		
		html: "\
			<form id='members_login_form'>\
				<div class='label'>Email:</div>\
				<div class='field'><input type='text' name='email' /></div>\
				<div class='label'>Password:</div>\
				<div class='field'><input type='password' name='password' /></div>\
				<!--<div class='label'>Keep me logged in: <input type='checkbox' name='remember' value='yes' /></div>-->\
			</form>\
		"
	});
	
	var btn = new Jsui.Button({
		text: 'Login',
		appendTo: cc.re.members.login_win.el.child('div.jsui-window-footer-container'),
		handler: function(e, t, o) {
			cc.re.members.login();
		}
	});
	
	cc.re.members.login_win.el.child('div.jsui-window-footer-container').insertHtml('afterBegin', '<a href="#" onclick="cc.re.members.show_recover(); return false;" />Forgot Password?</a>', true);
	
	
	/**
	* The pw recovery window
	*/
	cc.re.members.pw_recover_win = new Jsui.Window({
		title: 'Password Recovery',
		width: 280,
		autoHeight: true,
		
		bodyStyle: 'padding: 25px;',
		closable: true,
		closeAction: 'hide',
		constrain: true,
		draggable: true,
		hideModel: 'display',
		layout: 'fit',
		modal: true,
		resizable: false,
		
		html: "\
			<form id='members_recover_form'>\
				<table>\
					<tr>\
						<td colspan='2'><div style='color: white; text-align: center;'>Enter your email and click Recover Password.  Your password will be sent to your email address.</div></td>\
					</tr>\
					<tr>\
						<td>\
							<div class='label'>Email:</div>\
							<div class='field'><input type='text' name='email' /></div>\
						</td>\
					</tr>\
				</table>\
			</form>\
		"
	});
	
	var btn2 = new Jsui.Button({
		text: 'Recover Password',
		appendTo: cc.re.members.pw_recover_win.el.child('div.jsui-window-footer-container'),
		size: 'medlarge',
		handler: function(e, t, o) {
			cc.re.members.recover();
		}
	});
	
	/**
	* The register window
	*/
	cc.re.members.register_win = new Jsui.Window({
		title: 'Member Registration',
		width: 400,
		autoHeight: true,
		
		bodyStyle: 'padding: 25px;',
		closable: true,
		closeAction: 'hide',
		constrain: true,
		draggable: true,
		hideModel: 'display',
		layout: 'fit',
		maximizable: false,
		modal: true,
		resizable: false,
		autoScroll: true
	});
});