Ext.namespace('CC.f');
Ext.namespace('CC.f.mod');

CC.f.mod.login = function() {

	var loginWindow = null;
	var loginForm = null;

	return {	
		ajaxUrl: CC_baseURL + 'login/',


		init: function() {
			//autoLogin
			var params = getUrlVars();
			if(typeof params['sid'] != 'undefined') {
				var param = {
					url: '/get-login-info.php',
					params: { sid: params['sid'] },
					method: 'GET',
					success: function(result) {
						Ext.getCmp('loginFormUser').setValue(result.username);
						Ext.getCmp('loginFormPassword').setValue(result.password);
						CC.f.mod.login.doLogin();
					}
				};
				CC.help.ajax.doAjax(param);
				parent.location.hash = "";
			}

			this.displayLoginWindow();
		},


		displayLoginWindow: function() {
			if(this.loginWindow) {
				if(!this.loginWindow.isVisible()) this.loginWindow.show();
				return;
			}

			var config = CC.b.mod.login.config;
			var loginFormItems = [
				{
					xtype: 'textfield',
					id: 'loginFormUser',
					fieldLabel: config.loginFormUserTitle,
					allowBlank: false,
					anchor: '95%'
				},
				{
					xtype: 'textfield',
					id: 'loginFormPassword',
					fieldLabel: config.loginFormPasswordTitle,
					inputType: 'password',
					allowBlank: false,
					anchor: '95%'			
				}
			];

			this.loginForm = new Ext.FormPanel({
				labelAlign: 'top',
				bodyStyle: 'padding:5px',
				width: 240, 
				items: [{
					border:false,
					items: [{
						columnWidth:0.5,
						layout: 'form',
						border:false,
						items: loginFormItems
					}]
				}],
				buttons: [
					{
						text: config.loginFormButtonOkTitle,
						handler: function() {
							CC.f.mod.login.doLogin();
				  		}
					},
					{
						text: config.loginFormButtonCancelTitle,
						handler: function() {
							CC.f.mod.login.doCancelLogin();
						}
					}
				]
			});

			this.loginWindow = new Ext.Window({
				id: 'extLoginWindow',
				title: config.loginFormTitle,
				width: 200,
				height: 170,
				plain: true,
				closable: false,
				modal: true,
				layout: 'fit',
				items: this.loginForm
			});
			this.loginWindow.show();

			new Ext.KeyMap(this.loginWindow.body,
				[{
					key: Ext.EventObject.ENTER,
					fn: CC.f.mod.login.doLogin,
					scope: this
				}]
			);			
		},


		logout: function() {
			Ext.MessageBox.confirm('', CC.b.mod.login.config.logoutQuestion, 
				function(btn) {
					if(btn == 'yes') CC.f.mod.login.doLogout();
				}
			);
		},


		doLogout: function() {
			// Szerver oldali kil�ptet�s
			var param = {
				url: CC.f.mod.login.ajaxUrl + 'extLogout',
				success: function(result) {
					if(result.success) {
						Ext.MessageBox.show(result.messageBox);
						document.location.href = CC_baseURL + result.redirect_url;
					} else Ext.MessageBox.alert(CC.b.enter.config.msgError, 'Undefined error.');
				}
			};
			CC.help.ajax.doAjax(param);
		},


		validateLogin: function() {
			var ret = true;
			this.error_str = '';
			if(!Ext.getCmp('loginFormUser').isValid()) {
				ret = false;
				this.error_str = CC.b.mod.login.config.loginFormUserInvalidMessage;
			}
			if(!Ext.getCmp('loginFormPassword').isValid()) {
				ret = false;
				if(this.error_str != '') this.error_str += "<br />\n";
				this.error_str += CC.b.mod.login.config.loginFormPasswordInvalidMessage;
			}
			return ret;
		},


		doLogin: function() {
			var error_str;
			if(this.validateLogin(error_str)) {
				Ext.MessageBox.show({
					'title': CC.b.enter.config.ajaxWait,
					'progressText': CC.b.mod.login.config.loginFormChecking,
					'width': 300,
					'progress': true,
					'closable': false
				});
				var param = {
					url: this.ajaxUrl +'extLogin',
					params: {
						username: Ext.getCmp('loginFormUser').getValue(),
						password: Ext.getCmp('loginFormPassword').getValue()
					}, 
					success:  this.doLoginHandler
				};
				CC.help.ajax.doAjax(param);
			} else Ext.MessageBox.alert(CC.b.enter.config.msgWarning, this.error_str);
		},


		initLayout: function() {
			var param = {
				url: this.ajaxUrl +'extAlreadyLoggedIn',
				success: this.doLoginHandler
			};
			CC.help.ajax.doAjax(param);
		},


		doLoginHandler: function(result) {
			if(!result.success) {
				Ext.MessageBox.alert(CC.b.enter.config.msgWarning, result.message);
				return;
			}

			Ext.MessageBox.show(result.messageBox);
			if(typeof result.minstock != 'undefined') {
				var tempWindow = new Ext.Window({
					layout: 'fit',						
					height: 400,
					width: 800,
					modal: false,
					autoScroll: true,							
					title: 'MinStock',
					tbar:[
					    {
						    text: 'Print',
						    handler: function(){
					    		window.open (CC.f.mod.login.ajaxUrl +'Print',"print"); 
					    	}
					    }   
					],			      
					html: result.minstock
				});
				tempWindow.show();

			}

			try {
				CC.f.mod.login.loginWindow.hide();
			} catch(e) {}
			var error = false;

			// Layout feldolgoz�sa
			try {
				CC.b.mod.layout.config = result.layout;
			} catch(e) {
				Ext.MessageBox.alert(CC.b.enter.config.msgWarning, 'Could not store layout.<br />\n'+ e.message);
				error = true;
			}

			// Layout feldolgoz�sa
			try {
				Ext.onReady(CC.main.layout.init, CC.main.layout);
			} catch(e) {
				Ext.MessageBox.alert(CC.b.enter.config.msgWarning, 'Invalid layout.<br />\n'+ e.message);
				error = true;
			}
			
			// men� config elt�rol�sa
			try {
				CC.b.mod.menu.config = result.menu;
			} catch(e) {
				Ext.MessageBox.alert(CC.b.enter.config.msgWarning, 'Could not store menu.<br />\n'+ e.message);
				error = true;
			}

			// men� megjelen�t�se
			try {
				Ext.onReady(CC.f.mod.menu.init, CC.f.mod.menu);
			} catch(e) {
				Ext.MessageBox.alert(CC.b.enter.config.msgWarning, 'Could not display menu.<br />\n'+ e.message);
				error = true;
			}

			// nyit� oldal bet�lt�se
			CC.f.mod.menu.loadPage(CC.b.mod.layout.config.defaultPage.path, CC.b.mod.layout.config.defaultPage.module, CC.b.mod.layout.config.defaultPage.event);

			// MSG hide
			if(!error) Ext.MessageBox.hide();
			
			// TODO Sikertelen fel�let inicializ�l�s eset�n �jra login, de be kellene v�rnin a hiba�zenet gombkattint�s�t
		},


		doCancelLogin: function() {
			Ext.getCmp('loginFormUser').setValue('');
			Ext.getCmp('loginFormPassword').setValue('');
		}

	}

} ();