// Declaração das variáveis globais
var intPostagemAtiva = 0;

// Função utilizada para definir qual método browser será utilizado para a abertura de arquivos XML
function RequisicaoBrowser () {
    if (typeof XMLHttpRequest != 'undefined') {
        return new XMLHttpRequest;
    }
    
    var aryOtherTypes = ['Microsoft.XMLHTTP','Msxml2.XMLHTTP','Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0','Microsoft.XMLDOM'];
    
    for (intA=0; intA < aryOtherTypes.length; intA++) {
        try {
            return new ActiveXObject(aryOtherTypes[intA]);
        } catch(e) {
        }
    }    
}

// Função que faz o gerenciamos dos dados que devem ser mostrados conforme opção do menu
function CarregarDados (intOpcao,strParametros,objCorpoReferencia) {
    // Limpa as variáveis globais ao abrir cada página
    intPostagemAtiva = 0;

    var objBrowser   = new RequisicaoBrowser ();
    var objDadosTela = new MostrarDadosTela ();

    if (!objCorpoReferencia) {
        if (strParametros != "") {
            var objCorpo = document.getElementById("CorpoSecundario");    
        } else {        
            var objCorpo = document.getElementById("CorpoPrincipal");
        }
    } else {
        var objCorpo = objCorpoReferencia;
    }
    
    objDadosTela.MostrarStatusCarregando (objCorpo);   

    var strArquivo = objDadosTela.LocalizarArquivo (intOpcao);

    strArquivo = strArquivo + strParametros;

    objBrowser.open("POST", strArquivo, true);         
    objBrowser.onreadystatechange = function () {
        if (objBrowser.readyState == 4) {
            if (objBrowser.status == 200) {
                this.strResposta = objBrowser.responseText;                
                this.strResposta = this.strResposta.replace(/\+/g," ");
                this.strResposta = unescape(this.strResposta);
                objDadosTela.MostrarInformacoes (objCorpo,this.strResposta);
            }
        }        
    }                     
    objBrowser.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");        
    objBrowser.send(null);
}

// Função utilizada para verificar se o login está disponível
function VerificarDisponibilidade () {
    if (document.Cadastrese.Codigo.value == "") { 
        alert("Preencha o campo 'Login de acesso'");
        return;
    }
    
    document.getElementById("MensagemDisponibilidade").innerHTML = "Aguarde, executando ação ...";
    
    var objBrowser   = new RequisicaoBrowser ();
    
    objBrowser.open("POST", "site/pagRequest.php?Request=Disponibilidade", true);           
    objBrowser.onreadystatechange = function () {
        if (objBrowser.readyState == 4) {
            if (objBrowser.status == 200) {
                this.strResposta = objBrowser.responseText;
                this.strResposta = this.strResposta.replace(/\+/g," ");
                this.strResposta = unescape(this.strResposta);
                document.getElementById("MensagemDisponibilidade").innerHTML = this.strResposta;
            }
        }        
    }                     
    objBrowser.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");        
    objBrowser.send(LocalizarElementosFormulario(document.getElementById("Cadastrese").elements));
}

// Função utilizada para cadastrar usuário
function CadastrarUsuario (intAcao) {
    if (intAcao == 1) {
        if (document.Cadastrese.Codigo.value == "" || document.Cadastrese.Nome.value == "" ||
            document.Cadastrese.Senha.value == "" || document.Cadastrese.ConfirmaSenha.value == "" ||
            document.Cadastrese.Email.value == "") { 
            alert("Preencha os campos obrigatórios (*) !");
            return;
        }
        
        if (document.Cadastrese.Senha.value != document.Cadastrese.ConfirmaSenha.value) {
            alert("Campo 'Senha' e 'Confirmar senha' com valores diferentes !");
            return;
        }
    }
    else {
        if (document.Cadastrese.Codigo.value == "") { 
            alert("Preencha o campo 'Login de acesso'");
            return;
        }    
    }
    
    document.getElementById("MensagemCadastro").innerHTML = "Aguarde, executando ação ...";
    
    var objBrowser   = new RequisicaoBrowser ();
    
    if (intAcao == 1) {
        objBrowser.open("POST", "site/pagRequest.php?Request=Cadastro", true);           
    }
    else {
        objBrowser.open("POST", "site/pagRequest.php?Request=Descadastro", true);           
    }
    objBrowser.onreadystatechange = function () {
        if (objBrowser.readyState == 4) {
            if (objBrowser.status == 200) {
                this.strResposta = objBrowser.responseText;
                this.strResposta = this.strResposta.replace(/\+/g," ");
                this.strResposta = unescape(this.strResposta);
                document.getElementById("MensagemCadastro").innerHTML = this.strResposta;
            }
        }        
    }                     
    objBrowser.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");        
    objBrowser.send(LocalizarElementosFormulario(document.getElementById("Cadastrese").elements));
}

// Função utilizada para verificar logar no site
function LoginSite () {
    if (document.FormLoginSite.Codigo.value == "") { 
        alert("Preencha o campo 'Usuário'");
        return;
    }
    
    if (document.FormLoginSite.Senha.value == "") { 
        alert("Preencha o campo 'Senha'");
        return;
    }  

    document.getElementById("DadosLogin").innerHTML = "Aguarde, executando ação ...";
    
    var objBrowser   = new RequisicaoBrowser ();
    
    objBrowser.open("POST", "site/pagRequest.php?Request=Login", true);           
    objBrowser.onreadystatechange = function () {
        if (objBrowser.readyState == 4) {
            if (objBrowser.status == 200) {
                this.strResposta = objBrowser.responseText;
                this.strResposta = this.strResposta.replace(/\+/g," ");
                this.strResposta = unescape(this.strResposta);
                
                this.objObjectBrowser = new ActiveXObject("Microsoft.XMLDOM");
                this.objObjectBrowser.async = false;
                this.objObjectBrowser.loadXML(this.strResposta);
                this.objTagsXml = this.objObjectBrowser.documentElement;
                
                if (!this.objTagsXml) {
                    document.getElementById("DadosLogin").innerHTML = this.strResposta;
                    deleteCookie("CodigoUsuarioCEJ");
                    deleteCookie("SenhaUsuarioCEJ");
                }

                for (intDadosXML=0; intDadosXML < this.objTagsXml.childNodes.length; intDadosXML++) {                    
                    if (this.objTagsXml.childNodes[intDadosXML].getAttribute("object") == "Codigo") {
                        var now = new Date();
                        fixDate(now);
                        now.setTime(now.getTime() + 365 * 24 * 60 * 60 * 1000);
                        setCookie("CodigoUsuarioCEJ", this.objTagsXml.childNodes[intDadosXML].getAttribute("value"), now); 
                    }
                    if (this.objTagsXml.childNodes[intDadosXML].getAttribute("object") == "Senha") {
                        var now = new Date();
                        fixDate(now);
                        now.setTime(now.getTime() + 365 * 24 * 60 * 60 * 1000);
                        setCookie("SenhaUsuarioCEJ", this.objTagsXml.childNodes[intDadosXML].getAttribute("value"), now); 
                    }                                        
                    else if (this.objTagsXml.childNodes[intDadosXML].getAttribute("object") == "Nome") {
                        document.getElementById("DadosLogin").innerHTML = this.objTagsXml.childNodes[intDadosXML].getAttribute("value");
                    }
                }
            }
        }        
    }                     
    objBrowser.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");        
    objBrowser.send(LocalizarElementosFormulario(document.getElementById("FormLoginSite").elements));
}

// Função utilizado para verificar se o usuário já está logado, se sim carrega as configurações do usuário
function VerificarUsuarioLogado () {
    if (getCookie("CodigoUsuarioCEJ") && getCookie("SenhaUsuarioCEJ")) {
        document.FormLoginSite.Codigo.value = getCookie("CodigoUsuarioCEJ");
        document.FormLoginSite.Senha.value = getCookie("SenhaUsuarioCEJ");        
        LoginSite();
    }
}

// Função utilizada para visualizar as postagens
function VisualizarPostagemForum () {
    document.getElementById("DadosForum").innerHTML = "Aguarde, localizando contribuições ...";
    
    var objBrowser   = new RequisicaoBrowser ();
    
    objBrowser.open("POST", "site/pagRequest.php?Request=VisualizaPostagemForum", true);           

    objBrowser.onreadystatechange = function () {
        if (objBrowser.readyState == 4) {
            if (objBrowser.status == 200) {
                this.strResposta = objBrowser.responseText;
                this.strResposta = this.strResposta.replace(/\+/g," ");
                this.strResposta = unescape(this.strResposta);
                document.getElementById("DadosForum").innerHTML = this.strResposta;
            }
        }        
    }                     
    objBrowser.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");        
    objBrowser.send(null);
}

// Função utilizada para visualizar as contribuições por postagem
function VisualizarContribuicoesForum (intPostagem) {
    intPostagemAtiva = intPostagem; 

    document.getElementById("DadosContribuicoes").innerHTML = "Aguarde, localizando contribuições ...";
    
    var objBrowser   = new RequisicaoBrowser ();
    
    objBrowser.open("POST", "site/pagRequest.php?Request=VisualizaContribuicaoForum", true);           

    objBrowser.onreadystatechange = function () {
        if (objBrowser.readyState == 4) {
            if (objBrowser.status == 200) {
                this.strResposta = objBrowser.responseText;
                this.strResposta = this.strResposta.replace(/\+/g," ");
                this.strResposta = unescape(this.strResposta);
                document.getElementById("DadosContribuicoes").innerHTML = this.strResposta;
            }
        }        
    }                     
    objBrowser.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");        
    objBrowser.send("Postagem=" + intPostagem);
}

// Função utilizada para chamar a tela de novas postagens
function NovaPostagem () {
    window.open("site/pagForumPostagem.php","","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,top=200,left=300,width=400,height=300");
}

// Função utilizada para cadastrar uma nova postagem
function CadastrarPostagem () {

    if (document.Postagem.Descricao.value == "") { 
        alert("Preencha os campos obrigatórios (*) !");
        return;
    }
        
    document.getElementById("MensagemCadastro").innerHTML = "Aguarde, executando ação ...";
    
    var objBrowser   = new RequisicaoBrowser ();    
   
    objBrowser.open("POST", "pagRequest.php?Request=CadastrarPostagem", true);           
    objBrowser.onreadystatechange = function () {
        if (objBrowser.readyState == 4) {
            if (objBrowser.status == 200) {
                this.strResposta = objBrowser.responseText;
                this.strResposta = this.strResposta.replace(/\+/g," ");
                this.strResposta = unescape(this.strResposta);
                
                if (!this.strResposta) {
                    window.close();
                    window.opener.VisualizarPostagemForum ();
                }
                else {
                    document.getElementById("MensagemCadastro").innerHTML = this.strResposta;
                }
            }
        }        
    }                     
    objBrowser.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");        
    objBrowser.send(LocalizarElementosFormulario(document.getElementById("Postagem").elements));
}

// Função utilizada para chamar a tela de novas contribuições
function NovaContribuicao () {
    if (!intPostagemAtiva) {
        alert('Selecione uma postagem para contribuir !');
    }
    else {
        window.open("site/pagForumContribuicao.php?Postagem=" + intPostagemAtiva,"","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,top=200,left=300,width=400,height=300");
    }
}

// Função utilizada para cadastrar uma nova contribuição
function CadastrarContribuicao () {

    if (document.Contribuicao.Descricao.value == "") { 
        alert("Preencha os campos obrigatórios (*) !");
        return;
    }

    var strUrl = location.href;
    strUrl = strUrl.replace(/.*\?(.*?)/,"$1");
    strVariaveis = strUrl.split ("&");
    
    for (i = 0; i < strVariaveis.length; i++) {
        tmp = strVariaveis[i].split("=");
        eval ('var '+tmp[0]+'="'+tmp[1]+'"');
    }

    document.getElementById("MensagemCadastro").innerHTML = "Aguarde, executando ação ...";
    
    var objBrowser   = new RequisicaoBrowser ();    
   
    objBrowser.open("POST", "pagRequest.php?Request=CadastrarContribuicao", true);           
    objBrowser.onreadystatechange = function () {
        if (objBrowser.readyState == 4) {
            if (objBrowser.status == 200) {
                this.strResposta = objBrowser.responseText;
                this.strResposta = this.strResposta.replace(/\+/g," ");
                this.strResposta = unescape(this.strResposta);
                
                if (!this.strResposta) {
                    window.close();
                    window.opener.VisualizarContribuicoesForum (Postagem);
                }
                else {
                    document.getElementById("MensagemCadastro").innerHTML = this.strResposta;
                }
            }
        }        
    }                     
    objBrowser.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");        
    objBrowser.send(LocalizarElementosFormulario(document.getElementById("Contribuicao").elements) + "&Postagem=" + Postagem);
}

// As funções abaixo são utilizadas para gerenciar ações dos cookies
function setCookie (name, value, expires, path, domain, secure) {
    var curCookie = name + "=" + escape(value) +
    ((expires) ? "; expires=" + expires.toGMTString() : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
    
    document.cookie = curCookie;
}

function getCookie (name) {
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    
    if (begin == -1) {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    } else
        begin += 2;
        
    var end = document.cookie.indexOf(";", begin);
    
    if (end == -1)
        end = dc.length;
    
    return unescape(dc.substring(begin + prefix.length, end));
}

function deleteCookie(name, path, domain) {
    if (getCookie(name)) {
       document.cookie = name + "=" + 
       ((path) ? "; path=" + path : "") +
       ((domain) ? "; domain=" + domain : "") +
       "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
}
function fixDate(date) {
   var base = new Date(0);
   var skew = base.getTime();
   if (skew > 0) date.setTime(date.getTime() - skew);
} 

// Função utilizada para montar a string de campos para enviar para o servidor
function LocalizarElementosFormulario (objElementosForm) {
    var strElementosEnviar = "";        
    
    this.ConcatenarElementos = function (strName, strValue) { 
        if (strElementosEnviar.length > 0) { 
            strElementosEnviar += "&";
        }
        strElementosEnviar += encodeURIComponent(strName) + "=" + encodeURIComponent(strValue);
    }        
   
    for (intElementosForm=0; intElementosForm < objElementosForm.length; intElementosForm++) {
        if (!objElementosForm[intElementosForm].disabled) {
            switch(objElementosForm[intElementosForm].type) {
                case 'text': case 'password': case 'hidden': case 'textarea': 
                    this.ConcatenarElementos(objElementosForm[intElementosForm].name,objElementosForm[intElementosForm].value);
                    break;
            }
        }
    }
    return strElementosEnviar;
}

// Função que mostra os dados na tela
function MostrarDadosTela () {
    this.LimparTela = function (objTela) {
        objTela.innerHTML = "";
    }
    
    this.MostrarStatusCarregando = function (objCorpo) {   
        this.LimparTela (objCorpo);
        
        this.objNovoElemento = document.createElement("div");
        this.objNovoElemento.className = "CarregarDados";
        this.objNovoElemento.innerHTML = "Carregando, aguarde...";
        
        objCorpo.appendChild(this.objNovoElemento);
    }
    
    this.MostrarInformacoes = function (objCorpo,objResposta) {
        objCorpo.innerHTML = objResposta;
    }
    
    this.LocalizarArquivo = function (intOpcao) {
        switch (intOpcao) {
            case 0 :
                return "site/pagHome.php";
                break;
            case 1 :
                return "site/pagQuemSomos.php";
                break;
            case 2 :
                return "site/pagHistoria.php"
                break;
            case 3 :
                return "site/pagConcepcoesFudamentamTrabalho.php"
                break;
            case 4 :
                return "site/pagPlanoPoliticoPedagogico.php"
                break;
            case 5 :
                return "site/pagEnsinoInfantil.php"
                break;
            case 6 :
                return "site/pagEnsinoFundamental.php"
                break;
            case 7 :
                return "site/pagEnsinoMedio.php"
                break;
            case 8 :
                return "site/pagForum.php"
                break;
            case 9 :
                return "site/pagAgenda.php"
                break;
            case 10 :
                return "site/pagEventos.php"
                break;
            case 11 :
                return "site/pagNoticias.php"
                break;
            case 12 :
                return "site/pagCadastrese.php"
                break;                
            case 13 :
                return "site/pagFaleConosco.php"
                break; 
            case 14:
                return "site/pagNoticiasAnual.php"
                break;
            case 15:
                return "site/pagMatricula.php"
                break;  
            case 16:
                return "site/pagHorarios.php"
                break; 
            case 17:
                return "site/pagAtividadesExtraClasse.php"
                break;        
            case 18:
                return "../portal/pagHomePortal.php"
                break;
            case 19:
                return "../portal/pagBoletim.php"
                break;
            case 20:
                return "site/pagEstrutura.php"
                break;
            case 21:
                return "../portal/pagBoleto.php"
                break;
        }
    }
}

// Função utilizada na formatação do layout da janela de notícias
function VisualizarNoticia (intNoticia) {
    window.open("site/pagVisualizaNoticias.php?Noticia=" + intNoticia,"","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,top=200,left=300,width=600,height=500");
}

// Função utilizada na formatação do layout da janela de agenda
function VisualizarAgenda (intAgenda) {
    window.open("site/pagVisualizaAgenda.php?Agenda=" + intAgenda,"","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,top=200,left=300,width=400,height=300");
}

// Função utilizada na formatação do layout da janela de eventos
function VisualizarEvento (intEvento) {
    window.open("site/pagVisualizaEvento.php?Evento=" + intEvento,"","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,top=200,left=300,width=600,height=526");
}

// Função que faz a definição das datas
function DefinirDatas () {
    hoje = new Date()
    dia  = hoje.getDate()
    dias = hoje.getDay()
    mes  = hoje.getMonth()
    ano  = hoje.getYear()
    
    if (dia < 10)
        dia = "0" + dia
    if (ano < 2000)
        ano = "2" + ano -100
        
    NomeMes     = new CriaArray(12)
    NomeMes[0]  = "Janeiro"
    NomeMes[1]  = "Fevereiro"
    NomeMes[2]  = "Mar&ccedil;o"
    NomeMes[3]  = "Abril"
    NomeMes[4]  = "Maio"
    NomeMes[5]  = "Junho"
    NomeMes[6]  = "Julho"
    NomeMes[7]  = "Agosto"
    NomeMes[8]  = "Setembro"
    NomeMes[9]  = "Outubro"
    NomeMes[10] = "Novembro"
    NomeMes[11] = "Dezembro"
}

// Função utilizada para criar um array dinâmico
function CriaArray (n) {
    this.length = n 
}

// Função utilizada para escrever a data na página
function MostrarData () {
    DefinirDatas();
    document.write (dia + " de " + NomeMes[mes] + " de " + ano);
}

// Função utilizada para abrir links
function AbrirLink (strTipo,strLink) {
    if (strTipo == "Email") {
        window.open("mailto:" + strLink);
    }
    else {
        window.open(strLink);
    }
}

// Função utilizada para mostar mensagens na barra de status
function MostrarStatus (strTipo,strMensagem) {
    if (strTipo == "Email") {
        window.status = "Enviar mensagem para " + strMensagem;
    }
    else if (strTipo == "Pagina") {
        window.status = "Ir para o endereço " + strMensagem;
    }
    else if (strTipo == "Download") {
        window.status = "Dowload do arquivo referente a(s) " + strMensagem ;
    }
}

// Função utilizada para apagar as mensagens monstradas ba barra de status
function ApagarStatus () {
    window.status = "Concluído";
}

// Função utilizada para chamar a tela de novas postagens
function AcessarPortal () {
    window.open("portal/pagLogin.php","","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,top=50,left=50,width=787,height=527");
}

// Função utilizada para verificar logar no site
function LoginPortal () {
    if (document.FormLoginPortal.Matricula.value == "") { 
        alert("Preencha o campo 'Matrícula'");
        return;
    }
    
    if (document.FormLoginPortal.Senha.value == "") { 
        alert("Preencha o campo 'Senha'");
        return;
    }  

    var objBrowser = new RequisicaoBrowser ();

    objBrowser.open("POST", "../site/pagRequest.php?Request=LoginPortal", true);           
    objBrowser.onreadystatechange = function () {
        if (objBrowser.readyState == 4) {
            if (objBrowser.status == 200) {
                this.strResposta = objBrowser.responseText;
                this.strResposta = this.strResposta.replace(/\+/g," ");
                this.strResposta = unescape(this.strResposta);
                
                if (this.strResposta) {
                    document.getElementById("MensagensLoginPortal").innerHTML = this.strResposta;
                } else {
                    CarregarDados (18,'?Matricula=' + document.FormLoginPortal.Matricula.value,document.body);
                }
            }
        }        
    }                     
    objBrowser.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");        
    objBrowser.send(LocalizarElementosFormulario(document.getElementById("FormLoginPortal").elements));
}