// create namespace
Ext.namespace('cs_login');

cs_login.app = function() {	
	// private vars
	return {
		// public methods
		init: function() {
			Ext.QuickTips.init();
			Ext.form.Field.prototype.msgTarget = 'side';			
			cs_login.app.createLoginForm();
			cs_login.app.createRegisterForm();
			cs_login.app.createForgotForm();
		},
		createLoginForm : function() {
			doSubmit = function() {
				var formPanel = Ext.getCmp('login_form');
				if (formPanel.getForm().isValid()) {
					Ext.getCmp('btn_login').setDisabled(true);
					formPanel.getForm().submit({waitMsg: 'Checking details...'});
				} else {
					Ext.Msg.alert('Invalid Action', 'Please complete the highlighted fields.');
				}		
			}
			new Ext.form.FormPanel({
				renderTo    : 'form_login',
				bodyStyle   : 'padding:10px',
				buttonAlign : 'left',
				labelWidth  : 110,
				border      : false,
				id			: 'login_form',
				onSubmit	: Ext.emptyFn,
				submit		: function() {
					Ext.getCmp('login_form').getForm().getEl().dom.action = '/community/login.cfm';
					Ext.getCmp('login_form').getForm().getEl().dom.method = 'POST';
					Ext.getCmp('login_form').getForm().getEl().dom.submit();
				},
				items       : [
					{
						xtype : 'hidden',
						name  : 'logon',
						id    : 'logon',
						value : 1
					},
					{
						fieldLabel : 'Username',
						id		   : 'username',
						name	   : 'username',
						xtype      : 'textfield',
						allowBlank : false,
						width	   : 180
					},
					{
						fieldLabel : 'Password',
						id		   : 'password',
						name	   : 'password',
						xtype      : 'textfield',
						allowBlank : false,
						width	   : 180,
						autoCreate : {tag: "input", type: "password", maxlength: "16"}
					}
				],
				buttons       : [
					{
						text    : 'Login',
						style   : 'margin-left:120px;',
						type    : 'submit',
						id	    : 'btn_login',
						handler : doSubmit
					}
				],
				keys : [{
					key : Ext.EventObject.ENTER,
					fn  : doSubmit
				}]
			});				
		},
		createRegisterForm : function() {
		
			Ext.apply(Ext.form.VTypes, {
		  
			password: function(val, field) {
				if (field.initialPassField) {
					var pwd = Ext.getCmp(field.initialPassField);
					return (val == pwd.getValue());
				}
					return true;
				},
				passwordText: 'Passwords do not match'
			});							  
											  
			leaDS = new WM_objects.basicStore({
				url	   : '../../rpc/json/index2.cfm?method=leas.view',
				fields : ['leaid', 'lea'],
				id	   : 'leaid'
			});
			
			doSubmit = function() {
				var formPanel = Ext.getCmp('register_form');
				if (formPanel.getForm().isValid()) {
					Ext.getCmp('btn_register').setDisabled(true);
					formPanel.getForm().submit({waitMsg: 'Saving...'});
				} else {
					Ext.Msg.alert('Invalid Action', 'Please complete the highlighted fields.');
				}	
			}
		
			new Ext.form.FormPanel({
				renderTo    : 'form_register',
				bodyStyle   : 'padding:10px',
				buttonAlign : 'left',
				labelWidth  : 110,
				border      : false,
				id			: 'register_form',
				onSubmit	: Ext.emptyFn,
				submit		: function() {
					Ext.getCmp('register_form').getForm().getEl().dom.action = '/community/login.cfm';
					Ext.getCmp('register_form').getForm().getEl().dom.method = 'POST';
					Ext.getCmp('register_form').getForm().getEl().dom.submit();
				},
				items : [
					{
						xtype : 'hidden',
						name  : 'register',
						id    : 'register',
						value : 1
					},
					{
						xtype : 'hidden',
						name  : 'uid',
						id    : 'uid',
						value : -1	 
					},
					{
						xtype 	   	  : 'textfield',
						fieldLabel 	  : 'Username',
						name	  	  : 'username_new',
						id		      : 'username_new',
						allowBlank 	  : false,
						emptyText     : 'Enter username...',
						blankText  	  : 'Enter username',
						minLength     : 4,
						minLengthText : 'Enter username - minimum 4 characters (A-Z,0-9)',
						maxLength	  : 16,
						maxLengthText : 'Enter username - maximum 16 characters (A-Z,0-9)',
						vtype		  : 'alphanum',
						width	      : 180
					},
					{
						fieldLabel	  : 'Password',
						name		  : 'password_new',
						id            : 'password_new',
						xtype		  : 'textfield',
						width         : 180,
						allowBlank    : false,
						autoCreate    : {tag: "input", type: "text", maxlength: "16"},
						minLength	  : 4,
						minLengthText : 'Enter password - minimum 4 characters (A-Z,0-9)',
						maxLength	  : 16,
						maxLengthText : 'Enter password - maximum 16 characters (A-Z,0-9)',
						vtype         : 'alphanum',
						inputType     : 'password',
						blankText  	  : 'Enter password'
					},
					{
						fieldLabel		 : 'Confirm password',
						name			 : 'password2',
						id				 : 'password2',
						xtype		  	 : 'textfield',
						width			 : 180,
						allowBlank		 : false,
						autoCreate		 : {tag: "input", type: "text", maxlength: "16"},
						minLength		 : 4,
						minLengthText	 : 'Confirm password - minimum 4 characters (A-Z,0-9)',
						maxLength		 : 16,
						maxLengthText	 : 'Confirm password - maximum 16 characters (A-Z,0-9)',
						inputType		 : 'password',
						initialPassField : 'password',
						blankText  	     : 'Confirm password'
					},
					{
						fieldLabel : 'Firstname',
						xtype	   : 'textfield',
						name	   : 'firstname',
						id		   : 'firstname',
						width	   : 180,
						allowBlank : false,
						blankText  : 'Enter first name',
						emptyText  : 'Enter first name...'
					},
					{
						fieldLabel : 'Surname',
						xtype	   : 'textfield',
						name	   : 'surname',
						id		   : 'surname',
						width	   : 180,
						allowBlank : false,
						blankText  : 'Enter surname',
						emptyText  : 'Enter surname...'
					},
					{
						fieldLabel : 'Email',
						xtype	   : 'textfield',
						name	   : 'email',
						id		   : 'email',
						width	   : 180,
						vtype	   : 'email',
						allowBlank : false,
						emptyText  : 'Enter a valid email address...',
						blankText  : 'Enter a valid email address'
					},
					{
						fieldLabel	   : 'Region',
						xtype		   : 'combo',
						hiddenName	   : 'pleaid',
						id			   : 'leaid',
						name		   : 'leaid',
						store		   : leaDS,
						mode		   : 'local',
						triggerAction  : 'all',
						forceSelection : true,
						valueField	   : 'leaid',
						displayField   : 'lea',
						typeAhead	   : true,
						width		   : 180,
						allowBlank	   : false,
						emptyText	   : 'Select a region...',
						blankText	   : 'Select a region',
						editable	   : false,
						tooltipText    : "<br />Please choose the relevant region for this image.",
						tooltipTitle   : 'Select a region',
						listeners: {
							render: setFormFieldTooltip
						}
					},{
						fieldLabel : 'Show email',
						xtype	   : 'checkbox',
						name	   : 'showemail',
						id		   : 'showemail'
					},
					{
						fieldLabel   : 'Receive newsletter',
						xtype	     : 'checkbox',
						name	     : 'receivenewsletter',
						id		     : 'receivenewsletter',
						allowBlank   : false,
						checked		 : true
					}
				],
				buttons: [
					{
						text	 : 'Register',
						minWidth : 100,
						id		 : 'btn_register',
						style	 :'margin-left:120px',
						handler  : doSubmit
					}
				],
				keys : [{
					key : Ext.EventObject.ENTER,
					fn  : doSubmit
				}]
			});				
		},
		createForgotForm : function() {
			doSubmit = function() {
				var formPanel = Ext.getCmp('forgot_form');
				if (formPanel.getForm().isValid()) {
					Ext.getCmp('btn_reminder').setDisabled(true);
					formPanel.getForm().submit({waitMsg: 'Saving...'});
				} else {
					Ext.Msg.alert('Invalid Action', 'Please complete the highlighted fields.');
				}	
			}
			new Ext.form.FormPanel({
				renderTo    : 'form_forgot',
				bodyStyle   : 'padding:10px',
				buttonAlign : 'left',
				labelWidth  : 110,
				border      : false,
				id			: 'forgot_form',
				onSubmit	: Ext.emptyFn,
				submit		: function() {
					Ext.getCmp('forgot_form').getForm().getEl().dom.action = '';
					Ext.getCmp('forgot_form').getForm().getEl().dom.method = 'POST';
					Ext.getCmp('forgot_form').getForm().getEl().dom.submit();
				},
				items       : [
					{
						xtype : 'hidden',
						name  : 'reminder',
						id    : 'reminder',
						value : 1
					},
					{
						fieldLabel : 'Username',
						name	   : 'username_lookup',
						id		   : 'username_lookup',
						xtype      : 'textfield',
						width	   : 180,
						allowBlank : false
					}
				],
				buttons       : [
					{
						text    : 'Send password reminder',
						style   : 'margin-left:120px;',
						id		: 'btn_reminder',
						handler : doSubmit
					}
				],
				keys : [{
					key : Ext.EventObject.ENTER,
					fn  : doSubmit
				}]
			});				
		}
	}
}();