/*
 * IdeaValley Innovation
 * FlipSite
 * Maio 2006
 * Luiz Paulo dos Prazeres Júnior
 * 
 * Search Class
 */
 
var searchPath     = toolsPath+"flipSearch/";
var SearchClass = Class.create();

SearchClass.prototype = {

    /*
     *    REQUISIÇÃO AJAX PARA O FORM DE BUSCA
     *    REQUISIÇÃO AJAX PARA INCLUSÃO DO BOX PARA BUSCA
     */
    initialize: function () {

        this.origemView = "7"; // idOrigemView
        this.loading   = "";
        this.initSearch();

        this.fieldSearch2   = undefined;
        this.idEdicao1      = undefined;
        this.objForm        = undefined;
        this.objExe         = undefined;
        
        this.inProcess      = false;

    }, //Method initialize


    initSearch: function () {
        try{
            document.submitSearch.onsubmit             = function (){ Search.getSearch(); return false;             };
            document.submitSearch.fieldSearch.onclick  = function (){ document.submitSearch.fieldSearch.value = ""; }
            $("imgSearch").onclick                     = function (){ Search.getSearch(); return false;             };
        }catch(e){ }
    }, //Method initSearch


    reposition: function () {

        widthDiference   = ( ( formatoCaderno.split("x")[0] * 2) - this.divSearch.offsetWidth  )/2;
        heighthDiference = ( ( formatoCaderno.split("x")[1]    ) - this.divSearch.offsetHeight )/2;

        this.divSearch.style.left = ( findPosX($("displayPlayer")) + widthDiference   )+"px";
        this.divSearch.style.top  = ( findPosY($("displayPlayer")) + heighthDiference )+"px";

    }, //Method reposition


    getSearch: function (fieldSearch2, idEdicao1) {

        if(isUndefined(Search)) Search = this;

        if(Search.inProcess) return;

        if(!isUndefined(fieldSearch2)) Search.fieldSearch2 = fieldSearch2;
        if(!isUndefined(idEdicao1))    Search.idEdicao1    = idEdicao1;

        fieldSearch1 = (isUndefined(Search.fieldSearch2))       ? $F('fieldSearch')   : Search.fieldSearch2.value;
        try{
            if(Search.fieldSearch2.value)
                Search.fieldSearch2.value;
            fieldSearch1 = Search.fieldSearch2;
        }catch(e){
            fieldSearch1 = fieldSearch1;
        }

        fieldSearch2 = (isUndefined(Search.fieldSearch2))       ? $('fieldSearch')    : fieldSearch2;
        idEdicao1    = (isUndefined(Search.idEdicao1))          ? idEdicao            : Search.idEdicao1;

        if((fieldSearch1 == "") || (fieldSearch1 == "Digite o termo para busca")){ fieldSearch2.value = "Digite o termo para busca"; fieldSearch2.select(); return false; };

        if(fieldSearch1.length < 4){
            alert("A palavra-chave deve ter no mínimo 4 caracteres.");
            fieldSearch2.value = '';
            fieldSearch2.focus();
            return false;
        }else{    
            StateMachine.isSearch = true;

            if(isUndefined(Search.divSearch)){Search.inProcess = true; Search.initBoxSearch(); return true; };

            Search.openSearch();
            if(Search.loading == ""){ Search.loading = new Loading(Search.divSearch)};
            Search.loading.display();
            Search.zerarSearch();

            Search.fieldSearch2 = undefined;
            Search.idEdicao1    = undefined;
            
            flipAjax.request(searchPath+"searchDB.php", 'numRow=0&fieldSearch='+escape(fieldSearch1)+"&idEdicao="+idEdicao1, "post", Search.returnSearch);
        }
    }, //Method getSearch


    getAdvancedSearch: function (objForm) {

        //if(StateMachine.isSearch) return;

        if(isUndefined(objForm))  objForm        = this.objForm;
        else                      this.objForm    = objForm;
        if(isUndefined(this.divSearch)){ this.initBoxSearch(2); return true; };
        if(this.loading == ""){ this.loading = new Loading(this.divSearch)};

        this.loading.display();
        inputData = new Date(objForm.dataInicioAno.value, objForm.dataInicioMes.value-1, objForm.dataInicioDia.value, 00,00,00,00);
        data = new Date();
        var expiracao = (data.getTime()-(1000*60*60*24*7));
        dataExp = new Date(expiracao);
        mes = parseInt(dataExp.getMonth());
        mes = mes + 1;
        strDataExp = dataExp.getDate()+"/"+mes+"/"+dataExp.getFullYear();
        if(objForm.buscaPalavraChave.value == ""){
            alert("Digite a palavra-chave.");
            this.loading.display("none");
            objForm.buscaPalavraChave.focus();
            
            return false;
        }if(objForm.buscaPalavraChave.value.length < 4){
            alert("A palavra-chave deve ter no mínimo 4 caracteres.");
            this.loading.display("none");
            objForm.buscaPalavraChave.value = '';
            objForm.buscaPalavraChave.focus();
            return false;
        }if((inputData.getTime() < expiracao) && (objForm.dataInicioDia.value != "") && (objForm.dataInicioMes.value != "") && (objForm.dataInicioAno.value != "")){
            alert("A data inicial deve ser á partir de "+strDataExp+" .");
            this.loading.display("none");
            objForm.dataInicioDia.value = '';
            objForm.dataInicioMes.value = '';
            objForm.dataInicioAno.value = '';
            objForm.dataInicioDia.focus();
            
            return false;
        }else{
            StateMachine.isSearch = true;
            this.openSearch();
            flipAjax.request(searchPath+"searchDB.php",'numRow=0&palavrachave='+escape(objForm.buscaPalavraChave.value) + '&iniciodia='+objForm.dataInicioDia.value + '&iniciomes='+objForm.dataInicioMes.value + '&inicioano='+objForm.dataInicioAno.value + '&fimdia='+objForm.dataFimDia.value + '&fimmes='+objForm.dataFimMes.value + '&fimano='+objForm.dataFimAno.value + '&select='+objForm.selectBusca.value + "&idEdicao="+idEdicao, "post", this.returnSearch);
            this.zerarSearch();
        }

    }, //Method getAdvancedSearch


    initBoxSearch: function (objExe){
        if(!isUndefined(objExe)) this.objExe = objExe;
        if(arguments.length == 2){
            if(arguments[1] == "sucess"){
                //alert("Estou TEstando Busca");
                Search.StrDivSearch = arguments[0];
                newComponent(Search.StrDivSearch, 'before', $('flipConpoments'));
                Search.divSearch = $('displaySearch');
                Search.reposition();
                Search.initActions();
                Search.inProcess = false;
                if(isUndefined(Search.objExe)){
                    Search.getSearch();
                }else if(Search.objExe == 2){
                    Search.getAdvancedSearch();
                }
            }
               return true;
        }

        flipAjax.request(searchPath+"flipResultSearch.php", "themePath="+themePath, "post", this.initBoxSearch);
    }, // Method initBoxSearch


    initActions: function (){
        try{ menuWidth = $('displayMenu').offsetWidth; }catch(e){ menuWidth = 0; }
        DragObj.init($('searchTitle'), this.divSearch, menuWidth, null, findPosY($('displayPlayer')));
        
        $('searchClose').onclick = this.closeSearch;

    }, //Method initActions


    stopDrag: function () {
        exitDrag($('searchTitle'));
    },


    run: function (page, idEdicao, idCaderno, idMateria) {

        this.closeSearch();
        FlipAction.gotoMateria(page, idEdicao, idCaderno, idMateria, this.origemView);

    }, //Method run


    zerarSearch: function () {
        $("displayTotalSearch").innerHTML = "";
        $("resultsSearch").innerHTML      = "";

    }, //Method zerarSearch


    openSearch: function () {

        $("resultsSearch").className = "resultsSearch";
        this.divSearch.style.display = "block";
//        new Effect.FadeTo(this.divSearch.id, 1, 100, 10);

    }, //Method openSearch


    closeSearch: function () {
        StateMachine.isSearch = false;
        Element.hide($('displaySearch'));
//        new Effect.FadeTo(this.divSearch.id, 0, 500, 10, {complete: function () { Element.hide(this.divSearch); } });

    }, //Method closeSearch    


    advancedSearch: function() {    

        if($("buscaAvancada").style.display == "block"){
            $("buscaAvancada").style.display = "none";
            $("resultsSearch").className = "resultsSearch";
        }else{
            $("buscaAvancada").style.display = "block";
            $("resultsSearch").className = "resultsSearch2";
            $('buscaPalavraChave').focus();
        }
    },


    limitComment: function (key) {
        if((key >= "48") && (key <= "57") || (key == "0") || (key == "8") || (key == "37") || (key == "39") || (key == "9"))
            return true;
        else
            return false;
        
    }, //Method limitComment


    getAntProx: function (tipo, row, termo, inicioDia, inicioMes, inicioAno, fimDia, fimMes, fimAno, select, idEdicao) {
        // alert(tipo+", "+row+", "+termo+", "+inicioDia+", "+inicioMes+", "+inicioAno+", "+fimDia+", "+fimMes+", "+fimAno+", "+select+", "+idEdicao);
        row = parseInt(row);
        if(tipo == 1)
            row = row + 5;
        else
            row = row - 5;

        flipAjax.request(searchPath+"searchDB.php", 'numRow='+row + '&palavrachave='+escape(termo) + '&iniciodia='+inicioDia + '&iniciomes='+inicioMes + '&inicioano='+inicioAno + '&fimdia='+fimDia + '&fimmes='+fimMes + '&fimano='+fimAno + '&select='+select + "&idEdicao="+idEdicao, "post", this.returnSearch);
    },


    returnSearch: function (returnString, status) {

		returnString = unescape(returnString);
        if(status == "sucess"){
            
            var resultado = eval('(' + returnString + ')');
            
            var termo             = "<span id='termo'>\""+resultado.termo.toUpperCase()+"\"</span>";
            var count           = resultado.max; 
            var divString       = "";

            $("resultsSearch").className = "resultsSearch";
            
            divString             = "<div id='buscaAvancada'>";
            divString             += "<div id='buscaAvancadaTitle'> Busca <span>Avançada</span><h5 class='searchH5'>Filtre o resultado da busca</h5><hr></div>";
            divString             += "<form id='submitAdvancedSearch' name='submitAdvancedSearch' onsubmit=''>";
            divString             += "<div id='contentbuscaAvancada'>";
            divString             += "<div id='palavraChave'><span>Palavra-chave </span><input type='text' name='palavraChave' id='buscaPalavraChave' value='"+resultado.termo+"'> </div>";
            divString             += "<div id='dataInicio'><span>Data de Inicio </span><input type='text' id='dataInicioDia' class='dataDiaMes' maxlength='2' onkeypress='return Search.limitComment(event.keyCode);'><span> / </span><input type='text' id='dataInicioMes' class='dataDiaMes' maxlength='2' onkeypress='return Search.limitComment(event.keyCode);'><span> / </span><input type='text' id='dataInicioAno' class='dataAno' maxlength='4' onkeypress='return Search.limitComment(event.keyCode);'> </div>";
            divString             += "<div id='dataFim'><span>Data de Fim </span><input type='text' id='dataFimDia' class='dataDiaMes' maxlength='2' onkeypress='return Search.limitComment(event.keyCode);'><span> / </span><input type='text' id='dataFimMes' class='dataDiaMes' maxlength='2' onkeypress='return Search.limitComment(event.keyCode);'><span> / </span><input type='text' id='dataFimAno' class='dataAno' maxlength='4' onkeypress='return Search.limitComment(event.keyCode);'> </div>";
            divString             += "<div id='buscarEm'><span>Buscar em </span><select id='selectBusca'>";
            divString             += "<option value='0'>Selecionar...</option>";
            try{
                var i = 0;
                while(i < cadernos.length){
                    divString             += "<option value='"+cadernosValue[i]+"'>"+cadernos[i]+"</option>";
                    i++;
                } 
            }catch(e){}
            divString             += "</select></div></div>";
            divString             += "<input type='button' id='submitBuscaAvancada' onClick='Search.getAdvancedSearch(this.parentNode);'><hr class='hrBottom'>";
            divString             += "</form>";
            divString             += "</div>";
			
            if(resultado.materia.length == 1){
                divEncontrados  = "Foi encontrado "+count+" resultado.";
            }else if(resultado.materia.length > 1){

                divEncontrados  = "Foram encontrados "+count+" resultados.";
            }else{
                divEncontrados  = "Não foram encontrados resultados.";
                divString         += "<span class='tituloTermo'>Busca: "+termo+"</span>";
                divString         += "<h5 id='totalSearch'>"+divEncontrados+"</h5>";
                divString          += "<div id='botaoBuscaAvancada'><a href='#' onclick='Search.advancedSearch();'>busca avançada</a></div>";
                $("displayTotalSearch").innerHTML = divString;
                Search.loading.display("none");
                return false;
            }
            
            divString         += "<span class='tituloTermo'>BUSCA:"+termo+"</span>";
            divString         += "<h5 class='searchH5'>"+divEncontrados+"</h5>";
            divString          += "<div id='botaoBuscaAvancada'><a href='#' onclick='Search.advancedSearch();'>busca avançada</a></div>";
			$("displayTotalSearch").innerHTML = divString;

            divString = "";
            for(i = 0; i < resultado.materia.length; i++){
                materia              = resultado.materia[i];
                //alert(flipDate.dateFormater(materia.DT_PUBLICACAO))
                divString            += "<div class='itensSearch'>";
                    divString        += "<a href='#' onclick=\"Search.run("+ materia.NR_ORDEM+", "+ simpleQuote(materia.ID_EDICAO) +", "+ simpleQuote(materia.ID_CADERNO) +", "+ simpleQuote(materia.ID_MATERIA) +"); return false;\">";
                        divString    += "<img src='"+filePath+materia.ID_PUBLICACAO+"/"+materia.ID_EDICAO+"/PAGINAS/"+materia.NO_FILENAME+"' border='0' width='80' />";
                        divString    += "<p class='titleMateria'>"+ materia.NO_TITULO + "</p>";
                        divString    += "<p class='textMateria text'>"+ materia.TXT_MATERIA + "...</p>";

                        divString    += "<h5 class='searchH5'>"+flipDate.dateFormater(materia.DT_PUBLICACAO)+"<br>"+ materia.NO_CADERNO +" - Página: "+ materia.NR_PAGINA + "</h5>";
                    divString        += "</a>";
                divString            += "</div>";
            }
            
                divString         += "<div id='antProx'>"; 
            if(resultado.row > 0)
                divString         += "<div id='anterior' onClick='Search.getAntProx(\"0\", \""+resultado.row+"\", \""+resultado.termo+"\", \""+resultado.inicioDia+"\", \""+resultado.inicioMes+"\", \""+resultado.inicioAno+"\", \""+resultado.fimDia+"\", \""+resultado.fimMes+"\", \""+resultado.fimAno+"\", \""+resultado.select+"\", \""+resultado.idEdicao+"\");'>anterior</div>";
                
            var atual = parseInt(resultado.row);
            var max = parseInt(resultado.max);    

            if((resultado.row > 0) && (max > atual+5))            
                divString         += "<div id='tracos'>||</div>";    

            if(max > atual+5)
                divString         += "<div id='proximo' onClick='Search.getAntProx(\"1\", \""+resultado.row+"\", \""+resultado.termo+"\", \""+resultado.inicioDia+"\", \""+resultado.inicioMes+"\", \""+resultado.inicioAno+"\", \""+resultado.fimDia+"\", \""+resultado.fimMes+"\", \""+resultado.fimAno+"\", \""+resultado.select+"\", \""+resultado.idEdicao+"\");'>proximo</div>";
                divString         += "</div>";
            
            $("resultsSearch").scrollTop = 0;
            $("resultsSearch").innerHTML = divString;
            Search.loading.display("none"); 
        }
    
    }, //Method returnSearch


    end: function () { } //Method end
};

Search = new SearchClass();