﻿//**************************************************************//
//
//  FUNCIONES PARA MANEJAR EVENTOS DE LOGIN
//
//**************************************************************//
$(document).ready(function() {
    checkAutentication();
});
var timerLogin;
var timerRegistro;
var timerAccount;
var canceloLogin;

function verificarLogin() {
    if (canceloLogin) {
        canceloLogin = false;
        return false;
    }

    if ($("#idLoggedUser").val() != "") {
        hideLogin();
        return true;
    }
    else {
        showLogin();
        return false;
    }
}
function logout() {
    $.get("/Controllers/login.aspx?method=endSession&" + Math.random(),
            function() {
                document.location.href = document.location.href;
                //                $("#loggedUser_Img").attr("src", "/imagenes/layout/user.gif");
                //                $("#loggedUser_Name").html("");
                //                $("#divUserLoggedOff").css("display", "block");
                //                $("#divUserLoggedOn").css("display", "none");
            });
}

function onEnterLogin(ev) {
    if (ev == 13) {
        return validateLogin();
    }
}
function limpiarLogin() {
    $("#login_user").val("Nombre de usuario");
    $("#login_user_error").html("");
    $("#login_pass").val("");
    $("#login_pass_error").html("");
    $("#login_error").html("");
    $("#login_remember").removeAttr("checked");
    $("#remember_email").val("Email del Registro");
    $("#remember_error").html("");
}
function hideLogin() {
    if ($("#idLoggedUser").val() == "") {
        canceloLogin = true;
    }
    document.getElementById('Login').style.display = 'none';
    document.getElementById('iframeMask').style.display = 'none';
    document.getElementById('divLogin').style.display = 'block';
    document.getElementById('divRemember').style.display = 'none';
    limpiarLogin();
}
function showLogin() {
    document.getElementById('divLogin').style.display = 'block';
    document.getElementById('divRemember').style.display = 'none';
    document.getElementById('Login').style.display = 'block';
    document.getElementById('iframeMask').style.display = 'block';
    scroll(0, 0);
}

//Chequea la autenticación
function checkAutentication() {
    clearTimeout(timerAccount);
    $.getJSON("/Controllers/login.aspx?method=checkSession&" + Math.random(),
            function(data) {
                if (data.idLoggedUser != "") {
                    if (data.userImg != "") {
                        $("#loggedUser_Img").attr("src", data.userImg);
                    }
                    else {
                        $("#loggedUser_Img").attr("src", "/imagenes/layout/user.gif");
                    }
                    $("#idLoggedUser").val(data.idLoggedUser);
                    $("#register_idUser").val(data.idUser);
                    $("#loggedUser_Name").html(data.userName);
                    $("#divUserLoggedOff").css("display", "none");
                    $("#divUserLoggedOn").css("display", "block");
                    if (data.loginType == "1") {
                        $("#lnkProfile").css("display", "block");
                    }
                    hideLogin();
                }
                else {
                    $("#idLoggedUser").val("");
                    $("#register_idUser").val("");
                    $("#loggedUser_Img").attr("src", "/imagenes/layout/user.gif");
                    $("#loggedUser_Name").html("");
                    $("#divUserLoggedOff").css("display", "block");
                    $("#divUserLoggedOn").css("display", "none");
                }
            });
}

function validateLogin() {
    var retorno = true;

    //Cheque que haya ingresado bien los datos    
    var user = $("#login_user").val();
    var pass = $("#login_pass").val();


    if (user.replace(/\s*/, '') == '' || user == 'Nombre de usuario') {
        $("#login_user_error").html("ingrese nombre de usuario");
        retorno &= false;
    }
    else {
        $("#login_user_error").html("");
    }

    if (pass.replace(/\s*/, '') == '') {
        $("#login_pass_error").html("ingrese contraseña");
        retorno &= false;
    }
    else {
        $("#login_pass_error").html("");
    }

    if (retorno) {
        checkLogin($("#login_user").val(), $("#login_pass").val());
    }

    return retorno;

}

function openSocialLogin(type) {
    document.getElementById("iframeSocialLogin").style.display = "block";
    document.getElementById("iframeSocialLogin").src = "/Social/login.aspx?rs=" + type;
    document.getElementById("iframeSocialLogin").style.display = "none";
}

function checkLogin(user, pass) {

    var pass_md5 = hex_md5(pass);
    $.post("/Controllers/login.aspx?method=checkLogin",
            { "userName": user, "password": pass_md5, "ip": trim($("#userIP").val()) },
            function(data) {
                var code = data.split('-')[0];

                switch (code) {
                    case '0': //Login Correcto
                        //Llamo al controlador para que coloque en la session
                        setSession(data.split('-')[1]);
                        break;
                    case '1':
                        $("#login_user_error").html("nombre de usuario no válido");
                        break;
                    case '2':
                        $("#login_pass_error").html("contraseña no válida");
                        break;
                    case '3':
                        $("#login_error").html("bloqueado por nombre de usuario no válido");
                        break;
                    case '4':
                        $("#login_error").html("bloqueado por contraseña no válida");
                        break;
                    case '5':
                        $("#login_user_error").html("su usuario ha sido bloqueado");
                        break;
                    case '6':
                        $("#login_user_error").html("usuario no validado, chequee su email");
                        break;
                    case '7':
                        $("#login_error").html("lo sentimos, su pedido no puede ser completado");
                        break;
                }
            });

}

function setSession(idUser) {
    $.post("/Controllers/login.aspx?method=generateSession",
            { "userName": $("#login_user").val(), "idLoggedUser": idUser, "cookie": setCookie() },
            function(data) {
                if (data.toString() != "") {
                    if (data.userImg != "") {
                        $("#loggedUser_Img").attr("src", data.userImg);
                    }
                    else {
                        $("#loggedUser_Img").attr("src", "/imagenes/layout/user.gif");
                    }
                    $("#idLoggedUser").val(data.idLoggedUser);
                    $("#register_idUser").val(data.idUser);
                    $("#loggedUser_Name").html(data.userName);
                    $("#divUserLoggedOff").css("display", "none");
                    $("#divUserLoggedOn").css("display", "block");
                    if (data.loginType == "1") {
                        $("#lnkProfile").css("display", "block");
                    }
                    hideLogin();
                }
                else {
                    $("#idLoggedUser").val("");
                    $("#register_idUser").val("");
                    $("#loggedUser_Img").attr("src", "/imagenes/layout/user.gif");
                    $("#loggedUser_Name").html("");
                    $("#divUserLoggedOff").css("display", "block");
                    $("#divUserLoggedOn").css("display", "none");
                }
            },
            "json");

}

function setCookie() {
    if ($("#login_remember") != null) {
        if ($("#login_remember").attr("checked")) {
            return "1";
        }
        else {
            return "0";
        }
    }
}

//**************************************************************//
//
//  FUNCIONES PARA MANEJAR REMEMBER PASSWORD
//
//**************************************************************//


function hideRemember() {
    clearTimeout(timerLogin);
    document.getElementById('Login').style.display = 'none';
    document.getElementById('divLogin').style.display = 'block';
    document.getElementById('iframeMask').style.display = 'none';
    document.getElementById('divRemember').style.display = 'none';
    limpiarLogin();
}
function showRemember() {
    document.getElementById('divLogin').style.display = 'none';
    document.getElementById('divRemember').style.display = 'block';
}
function onEnterRemember(ev) {
    if (ev == 13) {
        return sendRememberPass();
    }
}

function sendRememberPass() {
    if ($("#remember_email").val().replace(/\s*/, '') == '' || $("#remember_email").val() == 'Email del Registro') {
        $("#remember_error").html("ingrese el email con el que se registro");
        return false;
    }
    else if (!checkEmail($("#remember_email").val())) {
        $("#remember_error").html("Email no valido!");
        return false;
    }
    else {
        $.get("/Controllers/login.aspx?method=checkearUserMail&email=" + $("#remember_email").val(),
            function(data) {
                if (data > "0") {
                    $("#remember_error").html("checkee su correo en unos minutos");
                    $.post("/Controllers/login.aspx?method=sendRemember&" + Math.random(),
                        { "email": $("#remember_email").val() });
                    timerLogin = setTimeout("hideRemember()", 2000);
                }
                else {
                    $("#remember_error").html("el email no existe");
                }
            });

    }
}


//**************************************************************//
//
//  FUNCIONES PARA MANEJAR CREACION DE USUARIOS
//
//**************************************************************//


function limpiarRegistro() {
    $("#register_user").val("");
    $("#register_user_error").html("");
    $("#register_pass_1").val("");
    $("#register_pass_1_error").html("");
    $("#register_pass_2").val("");
    $("#register_pass_2_error").html("");
    $("#register_email").val("");
    $("#register_email_error").html("");
    $("#register_name").val("");
    $("#register_name_error").html("");
    $("#register_lastname").val("");
    $("#register_lastname_error").html("");
    $("#register_terms").removeAttr("checked");
    $("#register_error").html("");
    $("#register_news").removeAttr("checked");
    $("#register_bulletin").removeAttr("checked");
    $(".FileBrowseRegistro").attr("value", "");
}


function hideRegistro() {
    clearTimeout(timerRegistro);
    document.getElementById('Registrarse').style.display = 'none';
    document.getElementById('iframeMask').style.display = 'none';
    limpiarRegistro();
}
function showRegistro() {
    document.getElementById('Registrarse').style.display = 'block';
    document.getElementById('iframeMask').style.display = 'block';
}


// Seteo eventos de la página
$(document).ready(function() {

    //validaciones on line
    $("#register_user").change(checkearUserName);
    $("#register_pass_1").change(checkearPassword);
    $("#register_pass_2").change(checkearPassword2);
    $("#register_email").change(checkearEmail);

});


function checkearUserName() {
    if ($("#register_idUser").val() == '') {
        $.get("/Controllers/login.aspx?method=checkearUserName&userName=" + $("#register_user").val(),
                function(data) {
                    if (data > "0") {
                        $("#register_user_error").html("el nombre de usuario ya existe"); //user unavailable
                    }
                    else {
                        $("#register_user_error").html("");
                    }
                });
    }
}

function checkearEmail() {
    if ($("#register_idUser").val() == '') {
        $.get("/Controllers/login.aspx?method=checkearUserMail&email=" + $("#register_email").val(),
                function(data) {
                    if (data > "0") {
                        $("#register_email_error").html("el email ya existe"); //email unavailable
                    }
                    else {
                        $("#register_email_error").html("");
                    }
                });
    }
}

function checkearPassword() {
    var retval = true;
    if ($("#register_idUser").val() == '' || $("#register_pass_1").val() != '') {
        if ($("#register_pass_1").val().length < 5) {
            $("#register_pass_1_error").html("ingrese al menos 5 caracteres"); //largo password
            retval = false;
        }
        else {
            $("#register_pass_1_error").html("");
        }

        retval &= checkearPassword2();
    }
    return retval;
}

function checkearPassword2() {
    var retval = true;

    if ($("#register_idUser").val() == '' || $("#register_pass_1").val() != '') {
        if ($("#register_pass_2").val() == '') {
            $("#register_pass_2_error").html("repita la contraseña");
            retval = false;
        }
        else if ($("#register_pass_1").val() != $("#register_pass_2").val()) {
            $("#register_pass_2_error").html("las contraseñas no coinciden"); //passwords no coinciden
            retval = false;
        }
        else {
            $("#register_pass_2_error").html("");
        }
    }
    return retval;
}

function checkUserName() {
    var regular = new RegExp("[a-z]|[0-9]", "i");
    var letters;

    letters = $("#register_user").val();

    letter = letters.split('');
    for (var i = 0; i <= letter.length; i++) {
        if (!regular.test(letter[i])) {
            return false;
        }
    }
    return true;
}

//Valida la calidad de los datos
function validateRegister() {
    var valid = true;

    //Valido Nombre de Usuario
    if ($("#register_user").val().replace(/\s*/, '') == '') {
        $("#register_user_error").html("ingrese nombre de usuario");
        valid &= false;
    }
    else if (!checkUserName()) {
        $("#register_user_error").html("nombre de usuario no válido"); //caracteres incorrectos
        valid &= false;
    }
    else {
        $("#register_user_error").html("");
        valid &= true;
    }

    //chequeo passwords
    valid &= checkearPassword();
    valid &= checkearPassword2();

    //Valido E-Mail del Usuario
    if ($("#register_email").val().replace(/\s*/, '') == '') {
        $("#register_email_error").html("ingrese email");
        valid &= false;
    }
    else if (!checkEmail($("#register_email").val())) {
        $("#register_email_error").html("email no válido"); //mail incorrecto
        valid &= false;
    }
    else {
        $("#register_email_error").html("");
        valid &= true;
    }

    //valido nombre
    if ($("#register_name").val().replace(/\s*/, '') == '') {
        $("#register_name_error").html("ingrese nombre");
        valid &= false;
    }
    else {
        $("#register_name_error").html("");
    }

    //valido apellido
    if ($("#register_lastname").val().replace(/\s*/, '') == '') {
        $("#register_lastname_error").html("ingrese apellido");
        valid &= false;
    }
    else {
        $("#register_lastname_error").html("");
    }

    //valido terminos y condiciones
    if ($("#register_idUser").val() == '' && !$("#register_terms").attr("checked")) {
        $("#register_error").html("debe aceptar los términos y condiciones");
        valid &= false;
    }
    else {
        $("#register_error").html("");
    }

    if (valid) {
        if ($("#register_idUser").val() == '') {
            createAccount();
        }
        else {
            editAccount();
        }
    }
    return false;
}

//guardado
function createAccount() {

    //Borro contenido de error
    $("#register_error").html("registrando al usuario...");

    $.post("/Controllers/login.aspx?method=createAccount",
            {
                "userName": $("#register_user").val(),
                "password": $("#register_pass_1").val(),
                "email": $("#register_email").val(),
                "name": $("#register_name").val(),
                "lastName": $("#register_lastname").val(),
                "suscribeNews": $("#register_news").attr("checked"),
                "suscribeBulletin": $("#register_bulletin").attr("checked")
            },
            function(data) {
                if (data > 0) {
                    sendMailValidation(data);
                    $("#register_idUser").val(data);
                    document.getElementById("formRegisterPhoto").submit();
                    return true;
                }
                else if (data == -1) {
                    //UserName existente
                    $("#register_user_error").html("el nombre de usuario ya existe");
                    return false;
                }
                else if (data == -2) {
                    //Debería volver a chequear el UserName y E-mail.
                    $("#register_email_error").html("el email ya existe");
                    return false;
                }
                else {
                    //error al crear la cuenta
                    $("#register_error").html("ocurrio un error, vuelva a intentarlo");
                    return false;
                }


            });
}

function editAccount() {

    //Borro contenido de error
    $("#register_error").html("guardando los datos del usuario...");

    $.post("/Controllers/login.aspx?method=editAccount",
            {
                "idUser": $("#register_idUser").val(),
                "userName": $("#register_user").val(),
                "password": $("#register_pass_1").val(),
                "email": $("#register_email").val(),
                "name": $("#register_name").val(),
                "lastName": $("#register_lastname").val(),
                "suscribeNews": $("#register_news").attr("checked"),
                "suscribeBulletin": $("#register_bulletin").attr("checked")
            },
            function(data) {
                if (data >= 0) {
                    if (data > 0) { sendMailValidation(data); }
                    else { timerRegistro = setTimeout("hideRegistro()", 5000); }
                    document.getElementById("formRegisterPhoto").submit();
                    timerAccount = setTimeout("checkAutentication()", 5000);
                    return true;
                }
                else if (data == -1) {
                    //UserName existente
                    $("#register_user_error").html("el nombre de usuario ya existe");
                    return false;
                }
                else if (data == -2) {
                    //Debería volver a chequear el UserName y E-mail.
                    $("#register_email_error").html("el email ya existe");
                    return false;
                }
                else {
                    //error al crear la cuenta
                    $("#register_error").html("ocurrio un error, vuelva a intentarlo");
                    return false;
                }


            });
}
//Envío mail de validación de los datos ingresados
function sendMailValidation(new_user_id) {
    $.post("/Controllers/login.aspx?method=sendMailValidation",
            { "userName": $("#register_user").val(), "email": $("#register_email").val(), "idUser": new_user_id },
            function(data) {
                switch (data) {
                    //Ok. Redirecciono a la pantalla de Información sobre que su cuenta ha sido creada.      
                    default:
                        $("#register_error").html("registro exitoso, checkee su email en unos minutos");
                        timerRegistro = setTimeout("hideRegistro()", 5000);
                        return true;
                        break;
                }
            });
}

function showProfile() {
    $.getJSON("/Controllers/login.aspx?method=getProfile&" + Math.random(),
    //$.getJSON("/mi_cuenta.aspx",
            function(data) {
                if (data.toString() != "") {
                    if (data.idUser != "") {
                        $("#register_user").attr("disabled", "disabled");
                        $("#register_title").css("display", "none");
                        $("#register_divSocial").css("display", "none");
                        $("#register_showTerms").css("display", "none");
                        $("#register_idUser").val(data.idUser);
                        $("#register_user").val(data.userName);
                        $("#register_email").val(data.email);
                        $("#register_name").val(data.name);
                        $("#register_lastname").val(data.lastname);
                        showRegistro();
                    }
                    else {
                        limpiarRegistro();
                        hideRegistro();
                    }
                }
                else {
                    limpiarRegistro();
                    hideRegistro();
                }
            });
}

function hidePassword() {
    document.getElementById('Password').style.display = 'none';
    document.getElementById('iframeMask').style.display = 'none';
    document.getElementById('divPassword').style.display = 'block';
    $("#password_pass").val('');
    document.getElementById('password_error').innerHTML = '';
}

function showPassword() {
    $("#password_pass").val('');
    document.getElementById('divPassword').style.display = 'block';
    document.getElementById('Password').style.display = 'block';
    document.getElementById('iframeMask').style.display = 'block';
    document.getElementById('password_error').innerHTML = '';
    document.getElementById('password_pass').focus();
}

function validateProfile() {
    var error = document.getElementById('password_error');
    
    var nombre = document.getElementById('txtNombre');
    var apellido = document.getElementById('txtApellido');
    var email = document.getElementById('txtEmail');
    var contrasenia = document.getElementById('txtContrasenia');
    var repContrasenia = document.getElementById('txtRepContrasenia');
    
    var re = /^[a-zA-Z0-9\._]+@[a-zA-Z0-9_]+(\.[a-zA-Z]+)+$/;
    
    if (nombre.value == '')
    {
        nombre.focus();
        error.innerHTML = 'Ingrese su nombre';
        error.style.display = '';
    }
    else if (apellido.value == '')
    {
        apellido.focus();
        error.innerHTML = 'Ingrese su apellido';
        error.style.display = '';
    }
    else if ((contrasenia.value.length > 0) && (contrasenia.value.length < 5))
    {
        contrasenia.focus();
        error.innerHTML = 'La contraseña debe tener al menos 5 caracteres';
        error.style.display = '';
    }
    else if (repContrasenia.value != contrasenia.value)
    {
        repContrasenia.focus();
        error.innerHTML = 'Las contraseñas no coinciden';
        error.style.display = '';
    }
    else if (email.value == '')
    {
        email.focus();
        error.innerHTML = 'Ingrese su email';
        error.style.display = '';
    }
    else if (!re.test(email.value))
    {
        email.focus();
        error.innerHTML = 'Ingrese un email válido';
        error.style.display = '';
    }
    else
    {
        error.innerHTML = '';
        error.style.display = 'none';
        showPassword();
    }
}

function validatePassword() {
    //Borro contenido de error
    $("#password_error").html("Actualizando perfil...");

    $.post("/Controllers/login.aspx?method=editAccount1",
            {
                "idUser": "",
                "password_MD5": hex_md5($("#password_pass").val()),
                "newPassword": $("#txtContrasenia").val(),
                "email": $("#txtEmail").val(),
                "name": $("#txtNombre").val(),
                "lastName": $("#txtApellido").val(),
                "documentType": $("#cmbTipoDocumento").val(),
                "documentNumber": $("#txtNroDocumento").val(),
                "gender": ($("input[name=sexo]:radio:checked").length > 0) ? (($("#sexoM:checked").length > 0) ? "M" : "F") : "",
                "birthDate": (($("#cmbDia").val() != "dia") && ($("#cmbMes").val() != "mes") && ($("#cmbAnio").val() != "anio")) ? ($("#cmbDia").val() + "/" + $("#cmbMes").val() + "/" + $("#cmbAnio").val()) : "",
                "maritalStatus": $("#txtEstadoCivil").val(),
                "futbolTeam": $("#txtHinchaDe").val(),
                "postCode": $("#txtCodigoPostal").val(),
                "address": $("#txtDireccion").val(),
                "country": $("#cmbPais").val(),
                "province": $("#txtProvincia").val(),
                "telephone": $("#txtTelefono").val(),
                "suscribeNews": $("#register_news").attr("checked"),
                "suscribeBulletin": $("#register_bulletin").attr("checked")
            },
            function(data) {
                if (data >= 0) {
                    if($("#fileField_Foto").val() == "") {
                        hidePassword();
                        showMsg('Los datos han sido guardados con éxito');
                    }
                    else {
                        $("#password_error").html("Actualizando avatar...");
                        setTimeout("hidePassword();document.getElementById('formRedSatelital').submit();", 2000);
                    }
                }
                else if (data == -1) {
                    $("#password_error").html("Contraseña no válida");
                }
                else if (data == -2) {
                    $("#password_error").html("El email ya existe");
                }
                else {
                    $("#password_error").html("Ha ocurrido un error");
                }
            });
}

