﻿
function _Default()
{
}

_Default.prototype =
{

    main: function() {

        body = document.getElementsByTagName("body")[0];
        this.addHandler(body, "keydown", this.disableEnter);

        setTimeout(this.createHandler(this.carregarAnimacao), 5000);

        this.addHandler(this.txtUsuario, "keyup", this.login);
        this.addHandler(this.txtInformeSenha, "keyup", this.login);

        this.addHandler(this.txtNome, "keyup", this.cadastrar);
        this.addHandler(this.txtSenha, "keyup", this.cadastrar);
        this.addHandler(this.txtConfirmarSenha, "keyup", this.cadastrar);
        this.addHandler(this.txtEMail, "keyup", this.cadastrar);
        this.addHandler(this.rbSexoMasculino, "keyup", this.cadastrar);
        this.addHandler(this.rbSexoFeminino, "keyup", this.cadastrar);
        this.addHandler(this.txtDataNasc, "keyup", this.cadastrar);
        this.addHandler(this.txtTelefone, "keyup", this.cadastrar);

        this.addHandler(this.btnEntrar, "click", this.realizarLogin);
        this.addHandler(this.btnCadastrar, "click", this.realizarCadastro);
        this.addHandler(this.lnkPorqueInformarCelular, "click", this.porqueInformarCelular);


    },
    
    alterarUF: function(changed) {
    
        if (changed == this.cmbUF) {
            this._desabilitar(this.txtLocalidade, false);
            var biLocalidade = $find("biLocalidade");
            biLocalidade.set_contextKey(this.cmbUF.value);
            biLocalidade.set_selectedValue("");
        }

    },

    _desabilitar: function(obj, desabilitar) {
        obj.value = "";
        obj.disabled = desabilitar;
        if (desabilitar) obj.style.backgroundColor = "#BBBBBB"
        else obj.style.backgroundColor = "";
    },

    porqueInformarCelular: function() {
        alert("O Toaí permite que você receba gratuitamente, através de mensagens de texto (SMS), informações sobre onde seus amigos estão.\n\n" +
              "E vc também pode, através de um simples SMS, avisar todos os seus amigos onde vc está.\n\n" +
              "Por isto, o número do seu telefone deve estar correto e será validado no final do cadastro.\n");
    },

    carregarAnimacao: function() {
        var divAnimacao = $get("divAnimacao");
        divAnimacao.innerHTML = AC_FL_RunContent('codebase', 'https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0', 'width', '725', 'height', '400', 'title', 'Animação Toaí', 'src', 'App_Themes/' + this.theme1.value + '/swf/toai', 'quality', 'high', 'pluginspage', 'https://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash', 'wmode', 'transparent', 'movie', 'App_Themes/' + this.theme1.value + '/swf/toai');
        divAnimacao.style.backgroundColor = "White";
    },

    disableEnter: function(_sender, _event) {
        if ((typeof (window) !== "undefined") &&
                (typeof (window.event) !== "undefined")) {
            if (window.event.which || window.event.keyCode) {
                if ((window.event.which == 13) || (window.event.keyCode == 13)) {
                    window.event.returnValue = false;
                    window.event.cancel = true;
                }
            }
        }
        else {
            if (_event.which || _event.keyCode) {
                if ((_event.which == 13) || (_event.keyCode == 13)) {
                    return false;
                }
            }
        }
    },

    login: function(_sender, _event) {
        if (_event.which || _event.keyCode) {
            if ((_event.which == 13) || (_event.keyCode == 13)) {
                this.realizarLogin();
            }
        }
    },

    realizarLogin: function() {

        if (this.txtUsuario.value.trim().length < 10) {
            alert("Informe o seu e-mail ou o número do seu telefone celular com DDD");
            this.txtUsuario.focus();
            return false;
        }

        if (this.txtInformeSenha.value.trim().length == 0) {
            alert("Informe a sua senha")
            this.txtInformeSenha.focus();
            return false;
        }

        var obterRetorno = function(result) {
            obterRetorno._this.btnEntrar.disabled = false;
            if (result.trim().length == 0)
                document.location = obterRetorno._this.urlBase.value + "Inicio.aspx";
            else {
                alert(result)
                obterRetorno._this.txtUsuario.focus();
                return false;
            }
        }
        obterRetorno._this = this;

        var obterFalha = function() {
            obterFalha._this.btnEntrar.disabled = false;
        }
        obterFalha._this = this;

        this.btnEntrar.disabled = true;
        Servicos.Usuario.RealizarLogin(this.txtUsuario.value, this.txtInformeSenha.value, obterRetorno, obterFalha);

        return false;

    },

    cadastrar: function(_sender, _event) {
        if (_event.which || _event.keyCode) {
            if ((_event.which == 13) || (_event.keyCode == 13)) {
                this.realizarCadastro();
            }
        }
    },

    realizarCadastro: function() {

        if (this.txtNome.value.trim().length == 0) {
            alert("Informe o seu nome completo");
            this.txtNome.focus();
            return false;
        }

        var nomes = this.txtNome.value.trim().split(" ");

        if (nomes.length == 1) {
            alert("Informe pelo menos o seu nome e último nome");
            this.txtNome.focus();
            return false;
        }

        if (this.txtNome.value.length > 30) {
            alert("O seu nome não pode ultrapassar 30 caracteres\nInforme apenas o primeiro e o último nome");
            this.txtNome.focus();
            return false;
        }

        if (nomes[0].length > 15) {
            alert("O seu primeiro nome não pode ultrapassar 15 caracteres");
            this.txtNome.focus();
            return false;
        }

        if (nomes[1].length > 15) {
            alert("O seu segundo nome não pode ultrapassar 15 caracteres");
            this.txtNome.focus();
            return false;
        }

        if (this.txtSenha.value.trim().length == 0) {
            alert("Informe uma senha")
            this.txtSenha.focus();
            return false;
        }

        if (this.txtConfirmarSenha.value.trim().length == 0) {
            alert("Confirme a sua senha")
            this.txtConfirmarSenha.focus();
            return false;
        }

        if (this.txtSenha.value.trim() != this.txtConfirmarSenha.value.trim()) {
            alert("A senha confirmada é diferente da senha informada")
            this.txtSenha.value = '';
            this.txtConfirmarSenha.value = '';
            this.txtSenha.focus();
            return false;
        }

        if ((this.txtEMail.value.indexOf("@") <= 0) || (this.txtEMail.value.indexOf(".") <= 2)) {
            alert("Informe um e-mail válido")
            this.txtEMail.focus();
            return false;
        }

        if (!(this.rbSexoMasculino.checked ^ this.rbSexoFeminino.checked)) {
            alert("Informe o campo sexo")
            this.rbSexoMasculino.focus();
            return false;
        }

        var sexo = this.rbSexoMasculino.checked ? "M" : "F";

        var dia = parseInt(this.txtDataNasc.value.substr(0, 2), 10);
        var mes = parseInt(this.txtDataNasc.value.substr(3, 2), 10);
        var ano = parseInt(this.txtDataNasc.value.substr(6, 4), 10);

        if (!(dia && mes && ano)) {
            alert("Informe a sua data de nascimento")
            this.txtDataNasc.focus();
            return false;
        }

        var dataNasc = new Date(ano, mes - 1, dia);

        if (!dataNasc) {
            alert("Informe a sua data de nascimento")
            this.txtDataNasc.focus();
            return false;
        }

        var dataAtual = new Date();
        var anoAtual = dataAtual.getFullYear();
        var mesAtual = dataAtual.getMonth();
        var diaAtual = dataAtual.getDate();

        var anoNasc = dataNasc.getFullYear();
        var mesNasc = dataNasc.getMonth();
        var diaNasc = dataNasc.getDate();

        var maior18 = false;
        var parabensAmanha = false;
        if (anoAtual - anoNasc > 18)
            maior18 = true;
        else if (anoAtual - anoNasc == 18) {
            if (mesNasc < mesAtual)
                maior18 = true;
            else if (mesNasc == mesAtual) {
                if (diaNasc <= diaAtual)
                    maior18 = true;
                else if (diaNasc - diaAtual == 1)
                    parabensAmanha = true;
            }
        }

        if (!maior18) {
            if (parabensAmanha) {
                alert("Amanhã você fará 18 anos e poderá cadastrar-se no Toaí! Parabéns para você!!")
                this.txtDataNasc.focus();
                return false;
            }
            else {
                alert("Você deve possuir mais de 18 anos para cadastrar-se no Toaí")
                this.txtDataNasc.focus();
                return false;
            }
        }

        if (this.txtTelefone.value.indexOf("_") >= 0) {
            alert("Você informou o seu telefone incorretamente");
            this.txtTelefone.focus();
            return false;
        }        

        var DDD = this.txtTelefone.value.substr(1, 2);
        var prefixo = this.txtTelefone.value.substr(5, 4);
        var MCDU = this.txtTelefone.value.substr(10, 4);

        if (!(parseInt(DDD, 10) && parseInt(prefixo, 10) && parseInt(MCDU, 10))) {
            alert("Informe o número do seu telefone corretamente");
            this.txtTelefone.focus();
            return;
        }

        var obterRetorno = function(result) {
            obterRetorno._this.btnCadastrar.disabled = false;
            if (result.trim().length > 0) {
                alert(result);
                return;
            }
            else {
                Servicos.Usuario.InserirTrilha("Usuário iniciou o cadastro informando os dados básicos na página Default");
                document.location = obterRetorno._this.urlBase.value + "Cadastrar.aspx";
            }
        }
        obterRetorno._this = this;

        var obterFalha = function() {
            obterFalha._this.btnCadastrar.disabled = false;
        }
        obterFalha._this = this;

        this.btnCadastrar.disabled = true;
        Servicos.Usuario.ValidarDadosPasso1(this.txtNome.value, this.txtSenha.value, this.txtEMail.value, sexo,
            this.txtDataNasc.value, DDD.toString() + prefixo.toString() + MCDU.toString(),
            this.ddlOperadora.value, obterRetorno, obterFalha);

        return false;

    }

}

