var IndexClass = new Class({
	options: 
	{
		script: 'inc/php/func/ajax_index.php'
	},
	
	initialize: function(options)
	{
		this.setOptions(options);
		
		this.setLang();
		
		this.lang = 'en';
		this.paises;
		
		this.getPaises();
		
		// bandeiras
		$('bt_portugues').addEvent('click', function(){this.changeLang('ptbr');}.bind(this));
		$('bt_ingles').addEvent('click', function(){this.changeLang('en');}.bind(this));
		$('bt_espanhol').addEvent('click', function(){this.changeLang('es');}.bind(this));
		
		$('langFrmCadMedBtnSalvar').addEvent('click', this.regMedico.bind(this));
		$('bt_lembrar_senha').addEvent('click', this.novaSenha.bind(this));
		$('btnContato').addEvent('click', this.enviaContato.bind(this));
		$('btnEvniarLogin').addEvent('click', this.login.bind(this));
		$('langFrmLoginCadastrese').addEvent('click', function(){
			$('caixa_login').style.display = 'none';
			$('cadastro').style.display = 'block';
		});
		
		$('langFrmCadMedBtnCancelar').addEvent('click', function(){
			$('cadastro').style.display = 'none';
			$('caixa_login').style.display = 'block';
		});
	},
	
	setLang: function()
	{
		for(prop in lang)
		{
			if(lang[prop].tipo == 'span')
				$(prop).innerHTML = lang[prop].texto;
			else if(lang[prop].tipo == 'button')
				$(prop).value = lang[prop].texto;
			else if(lang[prop].tipo == 'imagem')
				$(prop).src = lang[prop].src;
		}
	},
	
	// Adiciona dicionário à página
	changeLang: function(lang)
	{
		// Grava idioma na sessão
		new classEnviaRequisicao({
			url: this.options.script,
			funcaoRetorno: function(obj){}.bind(this),
			funcaoErro: function(){alert('erro')},
			variaveis: {oper:'lang', lang: lang}
		});
		
		if(lang != this.lang)
		{
			var script = new Element('script', {'type':'text/javascript'});
			script.src = 'inc/js/func/lang_' + lang + '.js';
			
			document.body.appendChild(script);
			setTimeout(this.setLang.bind(this),500);
			this.setPaises(lang);
		}
	},
	
	// Busca lista de países no banco
	getPaises: function(lang)
	{
		lang = lang != '' && lang != undefined ? lang : 'en';
		new classEnviaRequisicao({
			url: this.options.script,
			funcaoRetorno: function(obj)
			{
				if(obj.tipo_retorno == 'sucesso')
				{
					this.paises = obj;
					this.setPaises();
				}
			}.bind(this),
			funcaoErro: function(){alert('erro')},
			variaveis: {oper:'paises', lang: lang}
		});
	},
	
	// Adiciona lista de países no select
	setPaises: function(lang)
	{
		lang = lang != '' && lang != undefined ? lang : 'en';
		this.lang = lang;
		
		var tam = this.paises.portugues.length;
		var pais = $('frmCadMedPais');
		pais.length = 0;
		for(var i = 0; i < tam; i++)
		{
			if(this.lang == 'ptbr')
				pais[i] = new Option(this.paises.portugues[i].nome, this.paises.portugues[i].id, false, false);
			else
				pais[i] = new Option(this.paises.ingles[i].nome, this.paises.ingles[i].id, false, false);
		}
	},
	
	// Envia formulário contato
	enviaContato: function()
	{
		var nome = $('frmContatoNome').value;
		var email = $('frmContatoEmail').value;
		var email_empresa = $('frmContatoEmpresa').value;
		var nome_da_empresa = $('frmContatoEmpresa').options[$('frmContatoEmpresa').selectedIndex].text;
		var mensagem = $('frmContatoMensagem').value;
		var erro = '';
		
		// validação
		if(nome == '')
			erro = lang.langFrmContatoNomeVazio.texto;
		if(email == '')
			erro += lang.langFrmEmailVazio.texto;
		else
		{
			if (!this.validaEmail(email)) 
				erro += lang.langFrmEmaiInvalido.texto;
		}
		if(mensagem == '')
			erro += lang.langFrmContatoMensagemVazio.texto;
			
		if(erro == '')
		{
			new classEnviaRequisicao({
				url: this.options.script,
				funcaoRetorno: function(obj)
				{
					if(obj.tipo_retorno == 'sucesso')
						alert(lang[obj.mensagem].texto);
					else
						alert(lang[obj.mensagem].texto);
				}.bind(this),
				funcaoErro: function(){alert('erro')},
				variaveis: {oper:'enviaContato', nome: nome, email:email, mensagem:mensagem, nome_da_empresa:nome_da_empresa, email_empresa:email_empresa}
			});
		}
		else
			alert(lang.langFrmErro.texto + erro);
	},
	
	// Cadastra novo médico
	regMedico: function()
	{
		var nome = $('frmCadMedNome').value;
		var email = $('frmCadMedEmail').value;
		var pais = $('frmCadMedPais').value;
		var senha = $('frmCadMedSenha').value;
		var confirmacao = $('frmCadMedConfirmaSenha').value;
		var erro = '';
		
		// validação
		if(nome == '')
			erro = lang.langFrmCadMedNomeMensagemVazio.texto;
		if(email == '')
			erro += lang.langFrmEmailVazio.texto;
		else
		{
			if (!this.validaEmail(email)) 
				erro += lang.langFrmEmaiInvalido.texto;
		}
		if(senha == '')
			erro += lang.langFrmSenhaVazio.texto;
		if(confirmacao == '')
			erro += lang.langFrmCadMedConfirmaVazio.texto;
		if(senha != confirmacao)
			erro += lang.langFrmCadMedSenhaErro.texto;
		
		if(erro == '')
		{
			new classEnviaRequisicao({
				url: this.options.script,
				funcaoRetorno: function(obj)
				{
					if(obj)
					{
						alert(lang[obj.mensagem].texto);
						$('cadastro').style.display = 'none';
						$('caixa_login').style.display = 'block';
						
						$('frmCadMedNome').value = '';
						$('frmCadMedEmail').value = '';
						$('frmCadMedPais').value = '';
						$('frmCadMedSenha').value = '';
						$('frmCadMedConfirmaSenha').value = '';
					}
					else
						alert('erro');
				}.bind(this),
				funcaoErro: function(){alert('erro')},
				variaveis: {oper:'regMedico', nome: nome, email:email, pais:pais, senha:senha}
			});
		}
		else
			alert(lang.langFrmErro.texto + erro);
	},
	
	// Cria nova senha e envia por e-mail
	novaSenha: function()
	{
		var email = $('frmLoginEmail').value;
		
		if(email != '')
		{
			new classEnviaRequisicao({
				url: this.options.script,
				funcaoRetorno: function(obj)
				{
					if(obj)
						alert(lang[obj.mensagem].texto);
					else
						alert('erro');
				}.bind(this),
				funcaoErro: function(){alert('erro')},
				variaveis: {oper:'novaSenha', email:email, lang: this.lang}
			});
		}
		else
			alert(lang.langFrmEmailVazio.texto);
	},
	
	// Efetua login na área reservada
	login: function()
	{
		var email = $('frmLoginEmail').value;
		var senha = $('frmLoginSenha').value;
		var erro = '';
		
		if(email == '')
			erro = lang.langFrmEmailVazio.texto;
		else
		{
			if (!this.validaEmail(email)) 
				erro += lang.langFrmEmaiInvalido.texto;
		}
		if(senha == '')
			erro += lang.langFrmSenhaVazio.texto;
		
		if(erro == '')
		{
			new classEnviaRequisicao({
				url: this.options.script,
				funcaoRetorno: function(obj)
				{
					if(obj.tipo_retorno == 'sucesso')
						location.href = 'ferrararing/3pixel/area_reservada.php';
					else
						alert(lang[obj.mensagem].texto);
				}.bind(this),
				funcaoErro: function(){alert('erro')},
				variaveis: {oper:'login', email:email, senha: senha}
			});
		}
		else
			alert(erro);
	},
	
	validaEmail: function(email)
	{
		var padrao = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		if (!padrao.test(email))
			return false;
		else
			return true;
	}
});
IndexClass.implement(new Options, new Events);