/**
 * @author Elvin Fortes
 */
var login = function() {

	return {
		init : function() {

			Ext.QuickTips.init();
			var loginUrl = '../../paginas/login.php';
			// ////start login objects////////
			var nameLogin = new Ext.form.TextField({
				fieldLabel : 'Inlog Naam * ',
				maxLength : 30,
				maxLengthText : 'Maximale lengte is 30',
				name : 'emailLogin',
				width : 130,
				focusClass : 'Voer hier jouw e-mail adres in',
				allowBlank : false
			});

			var passwLogin = new Ext.form.TextField({
				fieldLabel : 'Passwoord *',
				id : 'passwLogin',
				maxLength : 16,
				width : 130,
				inputType : 'password',
				maxLengthText : 'Maximale lengte is 16',
				name : 'passwLogin',
				alphanumText : 'Alleen Nummers',
				allowBlank : false
			});
			
			var registerButton = new Ext.Button({
				text : 'Registreer hier',
				//iconCls : 'add',
				handler : function(){
					registerUser('');
				}
			});
			
			var forgetPasswButton = new Ext.Button({
				text : 'Wachtwoord vergeten',
				//iconCls : 'add',
				handler : function(){
					siteFunctions.fortGetPassw();
				}
			});			

			var loginPanel = new Ext.FormPanel({
				width : 320,
				region : 'east',
				split : true,
				items : [nameLogin, passwLogin],
				buttons : [{
					text : 'Login',
					//iconCls : 'add',
					pressed : false,
					waitTitle : 'Connecting',
					waitMsg : 'Sending data...',
					handler : function() {

						// .markInvalid();
						makeLoginAjaxRequest(loginUrl);
						// // located in application.js
					}
				}, registerButton, forgetPasswButton]
			});

			var loginFormPanel = new Ext.Panel({
				title : 'Login',
				frame : true,
				width : 320,
				split : true,
				// renderTo : 'loginForm',
				items : [loginPanel]
			});

			loginFormPanel.render('loginForm');
			//loginFormPanel.hide();
			//loginFormPanel.enable();
			//loginFormPanel.render('loginForm');
			// handles the login result - > failFields,failName and failPass
			// defined in
			// php
			function handleLoginResult(result) {
				var jsonResult = jsonDecode(result);

				if (jsonResult['result'] != true) {

					if (jsonResult['data'] == "failFields") {
						siteFunctions.popupWindowError('Error',jsonResult['message'],'');
						nameLogin.markInvalid();
						passwLogin.markInvalid();
						return;
					}

					if (jsonResult['data'] == "failName") {
						siteFunctions.popupWindowError('Error',jsonResult['message'],'');
						nameLogin.markInvalid();
						return;
					}

					if (jsonResult['data'] == "failPass") {
						siteFunctions.popupWindowError('Error',jsonResult['message'],'');
						passwLogin.markInvalid();
						return;
					}

				} else {
					loginFormPanel.hide();
					Cookie.set("name",nameLogin.getValue());//, {duration: 1});
					/*siteFunctions.popupWindowOK(
							'inloggen',
							Cookie.get('name')
									+ "<center>Je bent nu ingelogd. <br>Druk op oke om verder te gaan</center> ",
							reDirectLogin)*/
					reDirectLogin();
					// Ext.MessageBox.confirm("Login ","iets", testing222);
				}
			}

			function reDirectLogin() {
				window.location.href = "/index.php";
			}
			
			// makes connection to the login php file
			function makeLoginAjaxRequest(loginUrl) {
				var conn = new Ext.data.Connection();
				
				/*if(nameLogin.getValue() != 'cabo'  || nameLogin.getValue() != 'dandy'  || nameLogin.getValue() != 'vivi'  || nameLogin.getValue() != 'tom' ){
					alert("Momenteel zijn we met een update bezig. U kunt daarom niet inloggen. ")//Naar schatting kun je weer vanaf vrijdag 6 december weer inloggen. Sorry voor het ongemak.
					return;
				}*/
				
				conn.request({
					url: loginUrl,
					method: 'POST',
					params : {
						'myName' : nameLogin.getValue(),
						'myPass' : passwLogin.getValue()						
					}				
				});
				
				conn.on('requestcomplete', function(sender, param){
					response = siteFunctions.jsonDecode(param.responseText);
					handleLoginResult(param.responseText);
				})
			}

			// json decoder
			function jsonDecode(result) {
				var result = Json.evaluate(result);
				return result;
			}

		}
	};
}();
