/**
* @projectDescription MySabre Plus Brazil Site
* @author Roger Leite
* @email roger.leite@Sabre.com
* @date 20090326
* @alterDate 20100122
* @class CadastroCliente
* @version 1.3
*/

function CadastroCliente(){
	var This = this;
	var dialogModal = new AirAlertDialog();
 	var typeConditionLoad = new LoadEvents();
							
		this.builCombo = function(id, dataTable, tableNameValue, tableNameText){
			var dtRet,
				sizeOfDt,
				_id,
				_tableNameValue,
				_tableNameText;
				
				_id = id;
				_tableNameValue = tableNameValue;
				_tableNameText = tableNameText;
				sizeOfDt = dataTable.value.rows.length;
				dtRet = dataTable.value;
				
				//Clear comboBox
				$(_id).options.length = 0;
				
				for(var i = 0; i < sizeOfDt; i++){
					$(_id).options[$(_id).options.length] = new Option(dtRet.rows[i][_tableNameValue],dtRet.rows[i][_tableNameText]);
				};
		};
		
		this.formatDate = function(inputDate, e){
			var carCode = ( window.event ? event.keyCode : e.which );
				if(carCode != 8){
					var data = inputDate.value;
					if (data.length == 2){
						data = data + '/';
						$(inputDate.id).value = data;
						return true; 
					};
					if (data.length == 5){
						data = data + '/';		
						$(inputDate.id).value = data;
						return true;
					};
				};
		};
		
		var compareEmailPwd = function(){
			var pwd,
				email;
			
			if($('txtSenha').value != $('txtSenhaConfirmacao').value){
				$('txtSenhaConfirmacao').style.borderColor = "#FF0000";
				$("dialog").innerHTML = dialogModal.buildDialog("fail","cadastrocliente", "Erro na confirmação de senha!");
			}else{
				pwd = true;
			};
			
			if($('txtEmail').value != $('txtEmailConfirmacao').value){
				$('txtEmailConfirmacao').style.borderColor = "#FF0000";
				$("dialog").innerHTML = dialogModal.buildDialog("fail","cadastrocliente", "Erro na confirmação do E-mail!!");
			}else{
				email = true;
			};
			if(pwd == true && email == true){
				return true;
			}else{
				return false;
			};
		};
		
		this.buildCalendar = function(){
			var cal = new Calendar($('txtDataNascimento'));
			var startDate = Date.now();
			cal.setDate(startDate);
		};
		
		this.loadComboEstados = function(){
			var dtEstados,
				dtEstados = BookWebMethodsB2C.getEstados();//Substituir e remover o metodo existem pois esta duplicado DataEntryMethods usar este
				This.builCombo('selEstados',dtEstados,'Sigla', 'CodEstado');
				This.loadComboCidades();
		};

		this.loadComboCidades = function(){
			var dtCidades,
				dtCidades = DataEntryMethods.getCidade($('selEstados').value);
				This.builCombo('selCidades',dtCidades,'Nome', 'CodCidade');
		};
		
		this.loadControls = function(){
				This.loadComboEstados();
				This.dadosQueryString();
				//validationsForm();
		};
		
		this.loadForm = function(nome, sobreNome, email, ddd, telefone){
			var _nome,
				_sobreNome,
				_email,
				_ddd,
				_telefone;
				
				_nome = nome;
				_email = email;
				_ddd = ddd;
				_sobreNome = sobreNome;
				_telefone = telefone;
				$('selected_Result').action = 'cadastroCliente.aspx?nome=' + _nome + '&sobreNome=' + _sobreNome + '&mail=' + _email + '&ddd=' + _ddd + '&telefone=' + _telefone;
				$('selected_Result').submit();
				//window.location = 'cadastroCliente.aspx?nome=' + _nome + '&sobreNome=' + _sobreNome + '&mail=' + _email + '&ddd=' + _ddd + '&telefone=' + _telefone;
		};

		this.dadosQueryString = function(){
			var _urlRequest,
				 _nome,
				 _sobreNome,
				_email,
				_ddd,
				_telefone; 
				
				_nome = Request.queryString('nome');
				_sobreNome = Request.queryString('sobreNome');
				_email = Request.queryString('mail');
				_ddd = Request.queryString('ddd');
				_telefone = Request.queryString('telefone');

				$('txtNome').value = _nome;
				$('txtSobrenome').value = _sobreNome;
				$('txtEmail').value = _email;
				$('txtDDDResidencial').value = _ddd;
				$('txtTelefoneResidencial').value = _telefone;
		};

		this.loadDataEntryUserAndPassenger = function(){
			var _dbUser,
				_dbPassenger,
				_DBEnderecosPolicy,
				_comparePwdEmail,
				_DBTelefonesPolicy,
				_validantionsCPF,
				validations;
				
				typeConditionLoad.enableLoading("saveProfile");
				
				_validations = validationsForm();
				_validantionsCPF = validantionsCPF();
				_compareEmailPwd = compareEmailPwd();

				if (_validations != 0) {
					if (_validations > 1) {
						$("dialog").innerHTML = dialogModal.buildDialog("fail","cadastrocliente", "Existem" + " " + _validations + " " + "campos obrigatórios sem preencher");
						typeConditionLoad.disableLoading("saveProfile");
					}else {
						$("dialog").innerHTML = dialogModal.buildDialog("fail","cadastrocliente", "Existe apenas"+" "+ _validations +" " + "campo obrigatório sem preencher");
						typeConditionLoad.disableLoading("saveProfile");
					};
				}else {
					if(_compareEmailPwd && _validantionsCPF){
						_dbUser = buildDBUserToServer();
						_dbPassenger = buildDBPassengerToServer();
						_DBEnderecosPolicy = buildDBEnderecosPolicyToServer();
						_DBTelefonesPolicy = buildDBTelefonesPolicyToServer();
						
						typeConditionLoad.enableLoading("saveProfile");
						
						var ret = DataEntryMethods.DataEntryUserAndPassenger(_dbUser, _dbPassenger, null, null, null, _DBEnderecosPolicy, _DBTelefonesPolicy, null, null);
						// faz o login do usuario, apenas para colocar os dados na session
						//Log.login(_dbUser.email, _dbUser.senha);
						if(ret.error){
							$("dialog").innerHTML = dialogModal.buildDialog("fail","cadastrocliente", "Não foi possível fazer o cadastro:"+ ret.error.message);
							pageScroll();
						}else{
							LoginWebMethods.LoginClient(_dbUser.email, _dbUser.pwd, $('mspCodAux').value);
							$("dialog").innerHTML = dialogModal.buildDialog("success","cadastrocliente", "Cadastro Concluído com Sucesso");
							pageScroll();
						};
						typeConditionLoad.disableLoading("saveProfile");
					}else{
						typeConditionLoad.disableLoading("saveProfile");
					};
				};
		};
		
	    var pageScroll = function(){
    		window.scroll(0, 0);
    	};
		
	    var buildDBTelefonesPolicyToServer = function(){
	        var _codTelefonePolicy,
		        _codPassageiro,
		        _codEmpresa,
		        _codTipoEmail,
		        _ddd,
		        _telefone,
		        _codTipoTelefone;
				


				_codTelefonePolicy = "";
				_codPassageiro = "";
				_codEmpresa = BookWebMethodsB2C.GetCodEmpresaSession().value;
				_codTipoEmail = 1;				
				_ddd = $('txtDDDResidencial').value;
				_telefone = $('txtTelefoneResidencial').value;
				_codTipoTelefone = 1;
				
				
			var itemDBTelefonesPolicy = new StructType('DBTelefonesPolicy');
				
		        itemDBTelefonesPolicy.codTelefonePolicy = _codTelefonePolicy;
		        itemDBTelefonesPolicy.codPassageiro = _codPassageiro;
		        itemDBTelefonesPolicy.codEmpresa = _codEmpresa;
		        itemDBTelefonesPolicy.codTipoEmail = _codTipoEmail;
		        itemDBTelefonesPolicy.ddd = _ddd;
		        itemDBTelefonesPolicy.telefone = _telefone;
		        itemDBTelefonesPolicy.codTipoTelefone = _codTipoTelefone;
				
				return itemDBTelefonesPolicy;
			
	    };
		
		var buildDBEnderecosPolicyToServer = function(){
			var _codEmpresa,
				_codCidade,
				_codTipoEndereco,
				_endereco,
				_numero,
				_complemento,
				_bairro,
				_cep,
				_codUsuarioCadastro;
		
				_endereco = $('txtEndereco').value;
				_numero = $('txtEnderecoNumero').value;
				_complemento = $('txtEnderecoComplemento').value;
				_bairro = $('txtBairro').value;
				_cep = $('txtCep').value;
				_codCidade = $('selCidades').value;
				_codTipoEndereco = 2;
				
				var itemDBEnderecosPolicy = new StructType('DBEnderecosPolicy');
				
					itemDBEnderecosPolicy.codEmpresa = BookWebMethodsB2C.GetCodEmpresaSession().value;
					itemDBEnderecosPolicy.codCidade = _codCidade;
					itemDBEnderecosPolicy.codTipoEndereco = _codTipoEndereco;
					itemDBEnderecosPolicy.endereco = _endereco;
					itemDBEnderecosPolicy.numero = _numero;
					itemDBEnderecosPolicy.complemento = _complemento;
					itemDBEnderecosPolicy.bairro = _bairro;
					itemDBEnderecosPolicy.cep = _cep;
					itemDBEnderecosPolicy.codUsuarioCadastro = 0;

				return	itemDBEnderecosPolicy;
		};
		
		var buildDBUserToServer = function(){
			var nome, 
				sobrenome,
				email, 
				senha;
			
				nome = $('txtNome').value;
				sobrenome = $('txtSobrenome').value;
				email = $('txtEmail').value;
				senha = $('txtSenha').value;
				
				
				var itemDBUser = new StructType('DBUser');
				itemDBUser.agente_cliente = true;
				itemDBUser.assinaturaReserva = "";
				itemDBUser.ativo = true;
				itemDBUser.B2C = true;				
				itemDBUser.codEmpresa = BookWebMethodsB2C.GetCodEmpresaSession().value;
				itemDBUser.CodEmpresaAgenciaDefault = "";
				itemDBUser.CodEmpresaClienteDefault = "";
				itemDBUser.codGrupoEmissao = 0;
				itemDBUser.codGrupoUsuario = 20;
				itemDBUser.codSTAR = 0;
				itemDBUser.codTipoUsuario = 0;
				itemDBUser.codUsuario = 0;
				itemDBUser.codUsuarioCadastro = 0;
				itemDBUser.email = email;
				itemDBUser.emissaoInternacionalCartao = false;
				itemDBUser.emissaoInternacionalFaturado = false;
				itemDBUser.emissaoNacionalCartao = false;
				itemDBUser.emissaoNacionalFaturado = false;
				itemDBUser.nome = nome;
				itemDBUser.PasswordMySabre = "";
				itemDBUser.PCCMySabre = "";
				itemDBUser.pwd = senha;				
				itemDBUser.recebeETkt = false;
				itemDBUser.sobreNome = sobrenome;
				itemDBUser.terminalGDS = false;
				itemDBUser.UserIDMySabre = "";

				return itemDBUser;
		};
		
		var buildDBPassengerToServer = function(){
			var nome, 
				sobrenome, 
				email, 
				senha,
				sexo,
				cfp,
				auxCpfNumber,
				dataNascimento,
				ddd,
				telefone;
			
				nome = $('txtNome').value;
				sobrenome = $('txtSobrenome').value;
				email = $('txtEmail').value;
				senha = $('txtSenha').value;
				sexo = parseInt($('selSexo').value);
				
				
				auxCpfNumber = $("txtCpf").value;
				
				cpf = auxCpfNumber;
				
				dataNascimento = $('txtDataNascimento').value;
				ddd = $('txtDDDResidencial').value;
				telefone = $('txtTelefoneResidencial').value;
				
				var itemDBPassenger =  new StructType('DBPassenger');
				
		        itemDBPassenger.ADT_CHD_INF = 0;
		        itemDBPassenger.ativo = true;
		        itemDBPassenger.codCargo = 0;
		        itemDBPassenger.codCentroCustoDefault = 0;
		        itemDBPassenger.codDepartamento = 0;
		        itemDBPassenger.codEmpresa = BookWebMethodsB2C.GetCodEmpresaSession().value;
		        itemDBPassenger.codPassageiro = 0;
		        itemDBPassenger.codTipoTelefone = 1;
		        itemDBPassenger.codTitulo = (sexo == "Masculino" ? 3 : 1);
		        itemDBPassenger.codUsuario = 0;
		        itemDBPassenger.cpf = cpf;
		        itemDBPassenger.dataCadastro = Date.now();
		        itemDBPassenger.dataNascimento =  Date.parse(dataNascimento, "dd/MM/yyyy");
		        itemDBPassenger.ddd = ddd;
		        itemDBPassenger.email = email;
		        itemDBPassenger.firstName = nome;
		        itemDBPassenger.lastName = sobrenome;
		        itemDBPassenger.masculinoFeminino = sexo;
		        itemDBPassenger.matricula = '';
		        itemDBPassenger.passaporte;
		        itemDBPassenger.preferenciaAssento = 0;
		        itemDBPassenger.rg = '';
		        itemDBPassenger.telefone = telefone;
		        itemDBPassenger.tipoPassageiro = sexo;
		        itemDBPassenger.todosCentrosCusto = false;
		        itemDBPassenger.todosMotivosViagem = false;				
				
				return itemDBPassenger;
		};

		var validationsForm = function(){
			var _nome,
				_sobreNome,
				_dataNascimento,
				_cpf,
				_ctrCpf,
				_auxCpfNumber,
				_sexo,
				_cidade,
				_endereco,
				_numeroMoradia,
				_bairro,
				_cep,
				_email,
				_ddd,
				_telefone,
				_senha,
				_confSenha,
				_ctrl,
				_auxCtrl;
				
				
				_auxCpfNumber = $("txtCpf").value;
				_cpf = _auxCpfNumber[0];
				
				_ctrl = 0;
				_auxCtrl = 0;
				
				_nome = $('txtNome').value;
				_sobreNome = $('txtSobrenome').value;
				_dataNascimento = $('txtDataNascimento').value;
				
				//if(!validantionsCPF()){
				//	_cpf = "";
				//}else{
				//	_cpf = _auxCpfNumber[0];
				//};
				
				_sexo = $('selSexo').value;
				_cidade = $('selCidades').value;
				_endereco = $('txtEndereco').value;
				_numeroMoradia = $('txtEnderecoNumero').value;
				_bairro = $('txtBairro').value;
				_cep = $('txtCep').value;
				_email = $('txtEmail').value;
				_emailConfirmacao = $('txtEmailConfirmacao').value;
				_ddd = $('txtDDDResidencial').value;
				_telefone = $('txtTelefoneResidencial').value;
				_senha = $('txtSenha').value;
				_confSenha = $('txtSenhaConfirmacao').value;
				
				var arrayObj = [];
				
				arrayObj[0] = _nome;
				arrayObj[1] = _sobreNome;
				arrayObj[2] = _dataNascimento;
				arrayObj[3] = _cpf;
				arrayObj[4] = _sexo;
				arrayObj[5] = _cidade;
				arrayObj[6] = _endereco;
				arrayObj[7] = _numeroMoradia;
				arrayObj[8] = _bairro;
				arrayObj[9] = _cep;
				arrayObj[10] = _email;
				arrayObj[11] = _emailConfirmacao;
				arrayObj[12] = _ddd;
				arrayObj[13] = _telefone;
				arrayObj[14] = _senha;
				arrayObj[15] = _confSenha;
				
				enumObj = { 
					0 : $('txtNome'),
					1 : $('txtSobrenome'),
					2 : $('txtDataNascimento'),
					3 : $('txtCpf'),
					4 : $('selSexo'),
					5 : $('selCidades'),
					6 : $('txtEndereco'),
					7 : $('txtEnderecoNumero'),
					8 : $('txtBairro'),
					9 : $('txtCep'),
					10 : $('txtEmail'),
					11 : $('txtEmailConfirmacao'),	
					12 : $('txtDDDResidencial'),
					13 : $('txtTelefoneResidencial'),
					14 : $('txtSenha'),
					15 : $('txtSenhaConfirmacao')
				};
				
				for(var i=0; i < arrayObj.length; i++){
					if(!arrayObj[i]){
						enumObj[i].style.borderColor = "#FF0000";
						_auxCtrl = 1;
						_ctrl = _auxCtrl + _ctrl;
					}else{
						enumObj[i].style.borderColor = "#7F9DB9";
					};
				};
				return _ctrl;
		};
		
		var validantionsCPF = function(){
			var cpfNumber,
				auxCpfNumber,
				keyCPF,
				keyCheck,
				validations,
				validations1,
				digitos = [],
				digitos2 = [],
				auxDigitos = [],
				auxDigitos2 = [],
				a = 0,
				b = 0,
				c = 0,
				a1 = 0,
				b1 = 0,
				c1 = 0,
				result,
				result2;
					
				auxCpfNumber = $("txtCpf").value;
				
				auxCpfNumber = auxCpfNumber.split('-');

				cpfNumber = auxCpfNumber[0];
				keyCheck = auxCpfNumber[1];
								
				var count = 10;
				for(var i = 0; i <= 8; i++){
				    digitos.push(parseInt(cpfNumber.substr(i,1)));
				    auxDigitos[i] = digitos[i]*count;
				    count--;
					if(i <= 8){
		            	aux = auxDigitos[i];
				    	a = aux + a;
			        };
				};
				validations = a%11;
				c = validations;

				if(c <= 1){
				   result = 0;
				}else{
					result = 11 - c;
					if(result < 0){
						result = (-1)*(result);
					};
				};								
				
				cpfNumber = cpfNumber+result;
				
				var count2 = 11;
				for(var k = 0; k <= 9; k++){
					digitos2.push(parseInt(cpfNumber.substr(k,1)));
					auxDigitos2[k] = digitos2[k] * count2;
					count2--;
					if(k <= 9){
						aux2 = auxDigitos2[k];
						a1 = aux2 + a1;
					};
				};
				
				validations1 = a1%11;
				c1 = validations1;
				if(c1 <= 1){
					result2 = 0;
				}else{
					result2 = 11 - c1;
					if(result2 < 0){
						result2 = (-1) * (result2);
					};
				};
				result = result.toString();
				result2 = result2.toString();
				keyCPF = result + result2;
				
				if(keyCheck != keyCPF){
					$("dialog").innerHTML = dialogModal.buildDialog("fail","cadastrocliente", "CPF Inválido!");
					$("txtCpf").style.borderColor = "#FF0000";
					return false;
				}else{
					$("txtCpf").style.borderColor = "#7F9DB9";
					return true;
				};
		};
		this.cpfMask = function(inputCpf, e){
			var charCode = ( window.event ? event.keyCode : e.which );
				
				if(charCode != 12){
					var cpf = $("txtCpf").value;
					if (cpf.length == 9){					
						cpf = cpf + '-';
						$(inputCpf.id).value = cpf;
						return true;
					};
					/*
					if (data.length == 5){
						data = data + '/';							
						$(inputDate.id).value = data;
						return true;
					};*/
				};
		};
		this.onlyNumbers = function(e){
			try {
				var charCode = (window.event ? event.keyCode : e.which);
				
				if ((charCode == 9) || (charCode == 46) || (charCode == 44) || (charCode >= 96) || (charCode > 57) || (charCode < 48)) {
					if ((charCode == 8) || (charCode == 0)) {
						return true;
					};
					if ((charCode == 46) || (charCode == 44)) {
						return true;
					};
					return false;
				};
				return true;
			}
			catch (ex) {};
		};
		
	    this.constructor = new function(){
	
	    };
};

