Ext.onReady(function(){

    	Ext.QuickTips.init();
    	setTimeout(function(){
        Ext.get('loading').remove();
        Ext.get('loading-mask').fadeOut({remove:true});
    	}, 250);
	
	var loginPanel = Ext.get("view");
	
	var loginBtn = Ext.get("submitBtn");
   	var registerwin;
   	var forgotwin;

	loginBtn.on({
		'click': { fn: login }
	      ,	'mouseover': { fn: function(){ loginBtn.addClass('qo-login-submit-over'); } }
	      ,	'mouseout': { fn: function(){ loginBtn.removeClass('qo-login-submit-over'); } }
	});
	
	var forgBtn = Ext.get("forgotBtn");

	forgBtn.on({
		'click': { fn: forgot }
              , 'mouseover': { fn: function(){ forgBtn.addClass('qo-forgot-submit-over'); } }
	      ,	'mouseout': { fn: function(){ forgBtn.removeClass('qo-forgot-submit-over'); } }
	});

	function forgot(){	

        	if(!forgotwin){
            		forgotwin = new Ext.Window({
				id          :'windowforgot',
                		layout      : 'fit',
                		title:'Enter Email Address To Retrieve Account Info',
                		width       : 350,
                		height      : 125,
                		closeAction :'hide',
                		plain       : true,
                		items:
					forgotpanel = new Ext.FormPanel({
                        			id:'formforgot',
						url:'process.php',
						frame:true,
        					defaultType:'textfield',
						monitorValid:true,
        					items:[
							new Ext.form.Hidden({ name: 'module', value: 'forgot' })
							, {
  	             					fieldLabel:'Email', 
                					name:'loginEmail', 
                    					vtype:'email',
                					allowBlank:false
						       }
            					],
        					buttons:[{ 
                					text:'Retrieve',
                					formBind: true,	 
                					handler:function(){ 
                    						forgotpanel.getForm().submit({ 
                        						method:'POST', 
                        						waitTitle:'Connecting', 
                        						waitMsg:'Sending data...',
                         						success:function(){ 
                        						Ext.Msg.alert('', 'Your login information has been sent. Check your email!', function(btn, text){
			        				});
                        				},
                        				failure:function(form, action){ 
                            					if(action.failureType == 'server'){ 
                                					obj = Ext.util.JSON.decode(action.response.responseText); 
                                					Ext.Msg.alert(' ','Email not found!'); 
                            					}else{ 
                                					Ext.Msg.alert('Warning!', 'Server Error : ' + action.response.responseText); 
                            					} 
                            					forgotpanel.getForm().reset(); 
                        				} 
                    				}); 
                			} 
            				}] 



					})
            		});
        	}
        	forgotwin.show(forgBtn);
	}


	var regBtn = Ext.get("registerBtn");

	regBtn.on({
		'click': { fn: register }
              ,	'mouseover': { fn: function(){ regBtn.addClass('qo-register-submit-over'); } }
	      ,	'mouseout': { fn: function(){ regBtn.removeClass('qo-register-submit-over'); } }
	});


	Ext.get("fldUser").focus('', 10);

	
	function register(){	

        	if(!registerwin){
            		registerwin = new Ext.Window({
                		layout      : 'fit',
                		title:'Little Moon Registration',
                		width       : 260,
                		height      : 540,
                		closeAction :'hide',
                		plain       : true,
                		buttons: [{
                    			text     : 'Submit',
                    			disabled : true
                			},{
                    			text     : 'Close',
                    			handler  : function(){
                        		registerwin.hide();
                    			}
                		}],
                		items:
					new Ext.Panel({
                        			id:'registercard',
    						layout:'card',
    						activeItem: 0, 
    						defaults: {border:false},
    						items: [{
                  					xtype:'iframepanel',
                  					id:'splashregister',
                					loadMask:{msg:'Loading...'},
                 	 				defaultSrc:'registration.html'
						}]
					})
            		});
        	}
        	registerwin.show(regBtn);
	}


	function hideLoginFields(){
		Ext.get("lblUser").setDisplayed('none');
		Ext.get("fldUser").setDisplayed('none');
		Ext.get("lblPassword").setDisplayed('none');
		Ext.get("fldPassword").setDisplayed('none');
	}
	
	
	function login(){		
		var emailField = Ext.get("fldUser");
		var email = emailField.dom.value;
		var pwdField = Ext.get("fldPassword");
		var pwd = pwdField.dom.value;

		
		if(validate(email) === false){
			Ext.MessageBox.alert('', 'Please enter a valid User ID.');
			return false;
		}
		
		if(validate(pwd) === false){
			Ext.MessageBox.alert('', 'Please enter a valid password.');
			return false;
		}
		
		loginPanel.mask('Please wait...', 'x-mask-loading');
		
		Ext.Ajax.request({
			url: 'process.php',
			params: {
				  module: 'login',
				  user: email,
				  pass: pwd 
			},
			success: function(o){
				loginPanel.unmask();

				if(typeof o == 'object'){
					var d = Ext.decode(o.responseText);
					
					if(typeof d == 'object'){
						if(d.success == true){
							loginPanel.mask('Redirecting...', 'x-mask-loading');
							window.location = '/desktop/';
						}else{
							if(d.errors && d.errors[0].msg){
							Ext.MessageBox.alert(' ', d.errors[0].msg);
							}else{
							Ext.MessageBox.alert(' ', 'Unknown Server Error - Contact Admin.');
							}						
						}
					}
				}
			}
			, failure: function(){
				loginPanel.unmask();
				Ext.MessageBox.alert(' ', 'Lost connection to server - Try Again.');
			}
		});
	}
	
    
    	function validate(field){
		if(field === ""){
			return false;
		}
		return true;
	}
});