/**
 * Created on 15/12/2007
 * @author Thiago Victorino
 * @version 1.0
 * @copyright Copyright &copy; 2007 
 * @classDescription Essa classe vai ser responsável por manipular a tela de login
 */

function telaLogin(){

	/**
	 * Elementos padrões
	 */
	var doc = document;
	var _this = this;
	
	/**
	 * Construtor
	 */
	function construtor(){	
		testeConexao();
		setaEventos();
		inputUsuario.focus();
	}
	
	/**
	 * Atributos Privado
	 */
	var spanErro = doc.getElementById("usuarioErro");
	var inputUsuario = doc.getElementById("usuario");
	var inputSenha = doc.getElementById("senha");
	var btSubmit = doc.getElementById("botaosubmit");
	var tabelaLogin = doc.getElementById("telaLogin");
	var body = doc.body
	

	
	/**
	 * Seta todos os eventos da pagina
	 * @return {Void}
	 */
	var setaEventos = function(){
		inputUsuario.onkeyup = function(event){
			verInputs(event);
		}
		inputSenha.onkeyup = function(event){
			verInputs(event);
		}
		btSubmit.onclick = function(){
			if(verInputs()){
				_this.requisitarLogin();	
			}
			
		}
	}
	
	/**
	 * Verifica se todos os input estão preenchidos
	 * para que se possa habilitar o botão de enviar
	 * @return Retorna true se tiver preenchido e false saso esteja com algm campo em branco
	 */
	var verInputs = function(event){
		if(window.event){
			var evento = window.event.keyCode; 
		}else{
			var evento = event.keyCode;
		}
		/**
		 * se a tecla que foi clicada é um enter
		 */
		if(evento == 13){	
			if(inputUsuario.value=="" || inputSenha.value==""){
				return false;
			}else{
				_this.requisitarLogin();
			}
		}
		if(inputUsuario.value=="" || inputSenha.value==""){
			btSubmit.disabled = true;
			return false;
		}else{
			btSubmit.disabled = false;
			return true;
		}
	}
	
	/**
	 * Faz a requisição para o servidor
	 */
	this.requisitarLogin = function(){
		this.setModo("POST")
		this.setVarPost("usuario",inputUsuario.value);
		this.setVarPost("senha",inputSenha.value);
		body.style.cursor = "wait";
		btSubmit.value = "Entrando...";
		btSubmit.disabled = true;
		inputUsuario.disabled = true;
		inputSenha.disabled = true;
		this.onSucesso = function(){
			body.style.cursor = "default";
			_this.processarResposta();
		}
		this.enviar("login.php");
	}
	/**
	 * Faz o processamento da resposta que virá do servidor
	 */
	this.processarResposta = function(){
		try{
			var xml = this.getRespostaXML();
			var respostaLogin = xml.firstChild.nodeValue;
		}catch(erro){
			spanErro.innerHTML = "Erro ao requisitar os dados";
			btSubmit.value = "Entrar";
			inputUsuario.disabled = false;
			inputSenha.disabled = false;
			btSubmit.disabled = false;
			tremerLogin();
			alert("Erro - "+erro.description+"\nConteúdo-\n"+this.getRespostaText())
			return
		}
		if(respostaLogin == "ok") {
			window.location = "home.php";
		}
		else if(respostaLogin == "erro"){
			spanErro.innerHTML = "Login inválido!";
			inputUsuario.disabled = false;
			inputSenha.disabled = false;
			btSubmit.value = "Entrar";
			btSubmit.disabled = false;
			inputSenha.focus();
			inputSenha.select();
			tremerLogin();
		}
		else{
			// O usuário foi bloqueado. Mostrar mensagem de erro
			spanErro.innerHTML = "Usuário bloqueado!";
			btSubmit.value = "Entrar";
			inputUsuario.disabled = false;
			inputSenha.disabled = false;
			btSubmit.disabled = false;
			tremerLogin();

		}
	}
	/**
	 * Faz um "teste" de conexão
	 * para tentar ver a rapidez com que processou a página
	 */
	var testeConexao = function (){
		var data = new Date();
		var mile_depois = data.getTime();
		var diminui_seg = (mile_depois - mile_atual) / 1000;
		var k_por_seg   = 145 / diminui_seg; 
		var redondo     = Number(k_por_seg).toFixed(2);
		//velocidade em kb/s
		var veloc_con   = redondo * 8;
		if(veloc_con < 100){
			alert("Sua conexão com a internet parece estar muito baixa\nVocê terá problema para acessar nosso sistema")
		}
	};
	/**
	 * Faz tremer a tela qndo login inválido
	 * @param {Object} porcento Quantos porcentos irá se mexer
	 * @param {Object} bool se para esquerda(false) ou direta(true)
	 * 
	 * NOTE: todos os paramentros são opicionais
	 */
	var tremerLogin = function(porcento,bool){
		porcento == undefined?porcento = 8 : porcento = porcento;
		bool == undefined?bool = true : bool = bool;
		if(bool){
			tabelaLogin.style.left = (34 + porcento)+"%";
		}else{
			tabelaLogin.style.left = (34 - porcento)+"%";	
		}
		
		if(porcento!=0){
		 setTimeout(function(){tremerLogin(porcento-2 ,!bool)},50) 	
		}

	}
	
	construtor();
}
telaLogin.onCarregado = function(){
	/**
	 * Se o usuário estiver salvo em cache
	 * desabilitar o botão do submit
	 */
	if(document.getElementById('usuario').value != "" ){
		document.getElementById("botaosubmit").disabled = false;
	}
	/**
	 * Ajustes para o IE
	 */
	if(Browser.ie()){
				document.getElementById("tabelaLogin").style.marginLeft = "13%";
				if(Browser.versao() == 6){
					correctPNG();
					var msg = "Você está usando o navegador Internet Explorer 6.\n"
					msg += "\nEste navegador não é compatível com o sistema.\n"
					msg += "Para mais informações consulte o manual do usuário.\n"
					msg += "\n\nClique em OK para continuar"
					alert(msg)		
				}		
	}
}
telaLogin.prototype = new ajax();
var data = new Date();
var mile_atual = data.getTime();
window.onload = function(){
	telaLogin.onCarregado();
	new telaLogin();
}
