﻿/// <reference path="../includes/jquery.intelisense.js" />
$(document).ready(inicio);

function inicio() {
    $("#instituto").val($.query(location.search).instituto);
    var objPagina = new Pagina();
    objPagina.carregaIdiomas();
    objPagina.carregaCursos();

    //Ocorre quando um dos formulários é submetido
    $("form").submit(function(e) {
        objPagina.executaBusca(e.target.id);
        return false; //Cancela o post
    });

    $("#linkVoltar").click(function() {
        $("#divFormularioBusca").show();
        $("#divBusca").hide();
    });
}




function Pagina() {
    
    //Executa a busca baseado no formulário submetido
    this.executaBusca = function(idForm) {
        //Callbacks
        var busca_CallBack = function(json) {
            var strTabela = "";
            if (json.d.length > 0) {
                strTabela += "<h3>Sua busca encontrou " + json.d.length + " currículo(s)</h3><br/><br/>"
                $(json.d).each(function() {
                    strTabela += "<label><strong>Nome:</strong></label> " + this.nome + " <br/>";
                    strTabela += "<label><strong>Cidade onde reside:</strong></label> " + this.endereco.cidade + " <br/>";
                    strTabela += "<label><strong>Área profissional:</strong></label> " + this.curso.nome + "<br/>";
                    strTabela += "<label><strong>Curriculo completo:</strong></label> <a href='CurriculoCompleto.aspx?id=" + this.id + "&instituto=" + $("#instituto").val() + "'>Clique aqui</a> <br/>";
                    strTabela += "<br/>"
                    strTabela += "<strong>Mini Currículo:</strong>";
                    strTabela += "<ul>";
                    strTabela += "<li>";
                    strTabela += this.resumoCurriculo;
                    strTabela += "</li>";
                    strTabela += "</ul>";
                    strTabela += "Para entrar em contato com esse profissional, ou agendar uma entrevista  <a href='mailto:" + this.email + "'>clique aqui</a>.";
                    strTabela += "<h2></h2>";
                });
            } else {
                strTabela += "Nenhum currículo foi encontrado";
            }
            exibeControlesBusca();
            $("#divBusca").html(strTabela);
        };

        var busca_CallBackError = function() {
            alertModal("Não foram encontrados registros", alertType.erro, exibeControlesFormulario);
        }

        //Fim dos callbacks


        var buscaPalavraChave = function() {
            var busca = {};
            busca.nome = null;
            busca.atribuicoes = null;
            busca.siglaInstituto = $("#instituto").val();
            if ($("#rdNome").attr("checked"))
                busca.nome = $("#txtPalavraChave").val();
            else if ($("#rdAtribuicoes").attr("checked"))
                busca.atribuicoes = $("#txtPalavraChave").val();

            if ($("#txtPalavraChave").val() == "") {
                alertModal("Informe a palavra-chave", alertType.erro);
                return false;
            }
            if (!($("#rdAtribuicoes").attr("checked")) && (!$("#rdNome").attr("checked"))) {
                alertModal("Selecione os campos (por nome ou atribuições)", alertType.erro);
                return false;
            }
            WebService("../ws/wsAluno.asmx/listaCurriculoPorPalavraChave", busca_CallBack, busca, busca_CallBackError, true);
        };

        var buscaPerfilProfissional = function() {
            var busca = {};
            busca.nomeFuncao = $("#selFuncao").val();
            if (busca.nomeFuncao == "")
                busca.nomeFuncao = null;
            busca.idCurso = $("#selFormacao").val();
            busca.idIdioma = $("#selIdioma").val();
            busca.nivelIdioma = $('#frmBuscaPorPerfil input:radio:checked').val();
            if (busca.nivelIdioma == undefined)
                busca.nivelIdioma = null;
            busca.pretensaoSalarial = $("#selPropSalarial").val();
            busca.siglaInstituto = $("#instituto").val();

            if ((busca.nomeFuncao == null) &&
                (busca.idCurso == "") &&
                (busca.idIdioma == "") &&
                (busca.nivelIdioma == null) &&
                (busca.pretensaoSalarial == "")) {
                alertModal("Informe ao menos uma opção para procurar por perfil", alertType.erro);
                return false;
            }
            WebService("../ws/wsAluno.asmx/listaCurriculoPorPerfilProfissional", busca_CallBack, busca, busca_CallBackError, true);
        };

        var buscaAreaFormacao = function() {
            var busca = {};
            busca.nomeFuncao = null;
            busca.idCurso = $("#selAreaFormacao").val()[0];
            busca.idIdioma = "";
            busca.nivelIdioma = null;
            busca.pretensaoSalarial = "";
            busca.siglaInstituto = $("#instituto").val();

            if (busca.idCurso == null) {
                alertModal("Selecione a função pretendida", alertType.erro);
                return false;
            }
            WebService("../ws/wsAluno.asmx/listaCurriculoPorPerfilProfissional", busca_CallBack, busca, busca_CallBackError, true);
        };

        var exibeControlesBusca = function() {
            $("#divFormularioBusca").hide();
            $("#divBusca").show();
        }

        var exibeControlesFormulario = function() {
            $("#divFormularioBusca").show();
            $("#divBusca").hide();
        }

        switch (idForm) {
            case "frmBuscaPalavraChave": buscaPalavraChave(); break;
            case "frmBuscaPorPerfil": buscaPerfilProfissional(); break;
            case "frmBuscaPorAreaFormacao": buscaAreaFormacao(); break;
        }
    };
    

    this.carregaIdiomas = function(calback) {
        var idiomas_CallBack = function(json) {
            if (json.d) {
                var selIdioma = "<option value='' selected='selected'>Indiferente</option>";
                for (var i = 0; i < json.d.length; i++) {
                    selIdioma += "<option value='" + json.d[i].id + "'>" + json.d[i].nome + "</option>";
                };
                $("#selIdioma").html(selIdioma);
            }
        };
        var idiomas_CallBackError = function(e) {
            var selIdioma = "<option value='' selected='selected'>Falha ao carregar os idiomas</option>";
            $("#selIdioma").html(selIdioma);
            carregado = true;
        };
        WebService("../ws/wsIdioma.asmx/lista", idiomas_CallBack, {}, idiomas_CallBackError);
        calback;
    };


    this.carregaCursos = function(calback) {
        var CallBack = function(json) {
            if (json.d) {
                var opcaoCurso = "<option value=''>Selecione</option><option value=''>- - - - - - - - - - - -</option>";
                var opcaoCursoLista = "";
                for (var i = 0; i < json.d.length; i++) {
                    opcaoCurso += "<option value='" + json.d[i].id + "'>" + json.d[i].nome + "</option>";
                    opcaoCursoLista += "<option value='" + json.d[i].id + "'>" + json.d[i].nome + "</option>"; ;
                };
                $("#selFormacao").html(opcaoCurso);
                $("#selAreaFormacao").html(opcaoCursoLista);
            }
        };
        var CallBackError = function(e) {
            var opcaoCurso = "<option value='' selected='selected'>Falha ao carregar os estados</option>";
            $("#selFormacao").html(opcaoCurso);
            $("#selAreaFormacao").html(opcaoCurso);
        };
        WebService("../ws/wsCurso.asmx/listaCursos", CallBack, {}, CallBackError);
        calback;
    };
   
}
