//[Robertson][20/09/2007][OS ][Alteração na escrita para vigencia de retirada para o patrimônio]
function DateVigSaidaPatrimonio(calendar){
    if (calendar.dateClicked) {
      var y = calendar.date.getFullYear();
      var m = calendar.date.getMonth();
      var d = calendar.date.getDate();

      var date1 = new Date(y, m, d);
      var date2 = new Date();

      var y1 = date1.getFullYear();
      var m1 = date1.getMonth();
      var d1 = date1.getDay();

      var y2 = date2.getFullYear();
      var m2 = date2.getMonth();
      var d2 = date2.getDay();

      //se não for o dia atual e a data1 não for menor que a data 2
      if( !((y1 == y2) && (m1 == m2) && (d1 == d2)) && (date1 < date2) ) {

    //Alterada a mensagem. [JEAN][22/11/2007][6156-001]
    alert("A previsão de retorno não pode ser anterior a data atual.");
      calendar.params.inputField.value = "";
    }
   }
}

/**
* @author: Juvenal Marcos Batista
* @date: 19/09/2008
* @OS:  6108-002
* @Observação: Identação da função DateVigRetornoPatrimonio()
* @Inspecionado por: Edina de Souza Inacio
* @Data de Inspeção: 22/09/2008
*/

//[Robertson][24/09/2007][OS 6108-002][Alteração na escrita e filtro para vigencia de retorno para o patrimônio]
function DateVigRetornoPatrimonio(calendar){
  if (calendar.dateClicked){

    var data_atual   = new Date();
    var ano_atual    = data_atual.getFullYear();
    var mes_atual    = data_atual.getMonth();
    var dia_atual    = data_atual.getDate();

    var ano_calendar = calendar.date.getFullYear();
    var mes_calendar = calendar.date.getMonth();
    var dia_calendar = calendar.date.getDate();

    //Extrai o servidor do link utilizado. [JEAN][21/11/2007][6156-002]
    new Ajax.Request(getPageRoot()+'pages/advance/patrimonio/data_vigencia_retorno.php',{
      method: 'get',
      onSuccess:  function(t) {
        data_saida = t.responseText;

        if(data_saida == ""){
          alert("Nenhum bem foi selecionado.");
          calendar.params.inputField.value = "";
        }else{
          var ano_saida = data_saida.substr(6,4);
          var mes_saida = data_saida.substr(3,2);
          var dia_saida = data_saida.substr(0,2);

          var date1 = new Date(ano_saida, mes_saida, dia_saida);
          var date2 = new Date(ano_calendar, mes_calendar, dia_calendar);
          var date3 = new Date(ano_atual, mes_atual, dia_atual);

          //Alterada a condição para que a data selecionada possa ser a atual também. [JEAN][22/11/2007][6156-002]
          if((ano_calendar == ano_atual && (mes_calendar > mes_atual || dia_calendar > dia_atual)) || (ano_calendar > ano_atual)){
            alert("A data de retorno não pode ser posterior a data atual.");
            calendar.params.inputField.value = "";
          }
          /**
            * @author: Juvenal Marcos Batista
            * @date: 19/09/2008
            * @OS:  6108-002
            * @Observação: Alteração na condição pois ao selecionar a data anterior à data de saída, não mostrava mensagem correta.
            * @Inspecionado por: Edina de Souza Inacio
            * @Data de Inspeção: 19/09/2008
           **
            * Corrigida condição e retirado || (ano_calendar <= ano_atual) para não apresentar mensagem na data do dia
            * @author: Rose
            * @date: 24/11/2008
            * @OS: 6505 - 021
            * @Inspeção: Tuane em 25/11/2008
            */
          else if(ano_calendar <= ano_atual && mes_calendar < mes_atual || dia_calendar < dia_atual){
            alert("A data de retorno não pode ser anterior a data de saída.");
            calendar.params.inputField.value = "";
          }
        }
      }
    });
  }
}

//[Robertson][27/09/2007][OS][Deletar Importação Dinamicamente].
/*[ROSE][05/03/2008][5941 - 002]Criado parâmetro para tipo de exclusão
Se 1 excluirá importação, se 2 excluirá exportação*/
function DeleteImportInvent(codseq,cod_invent,type){
  if(codseq && cod_invent){
    Ext.MessageBox.confirm('Confirmação', 'Deseja excluir esta Importação?', function (btn){
      if (btn == "yes") {
        confirmaDelecao(codseq,cod_invent,type);
      }
    });
  }
}

function confirmaDelecao(codseq,cod_invent,type){
  new Ajax.Request(
    getPageRoot()+'pages/advance/patrimonio/delete_impot_invent.php?codseq='+codseq+'&cod_invent='+cod_invent+'&type='+type,      {
    method: 'get',
    onSuccess: function(t){
      window.location.reload();
      Ext.Msg.hide();
    } ,
    onLoading: function(t){
      Ext.Msg.wait('Excluindo arquivo de inventario...', 'Aguarde');
    },
    onFailure:function(t){
      Ext.Msg.hide();
      settiAlert('Erro no processamento');
    }
  } );
}
//[ROSE][12/05/2008][5943 - 006]Função para excluir a transferencia interna do bem
function deleteBensForaLugar(cd_transf){
  if(cd_transf){
    Ext.MessageBox.confirm('Confirmação', ' Confirma manutenção do bem no ambiente de origem?', function (btn){
      if (btn == "yes") {
        //extWaitMsg('Alterando registro...', false, 'Aguarde');

        /*[ROSE][03/06/2008][5943 - 006]Alterado para atualizar somente o status*/
        var updFields = [];
        var updValues = [];

        updFields.push("STATUS");
        updFields.push("CODIGO");

        updValues.push("C");
        updValues.push(cd_transf);

        xajax_updateData('VAD0550', updFields, updValues, 'CODIGO');
        /*[ROSE][27/06/2008][6389 - 006]Adicionado espera para que a tela seja refeita com
         as alterações do update
         **
         * Alterado tempo de espera para meio segundo para atualizar corretamente
         * @author: Rose
         * @date: 21/10/2008
         * @OS: 6389 - 006
         * @Inspeção: Tuane em 27/10/2008
         */
        setTimeout("window.location.reload()", 500);
      }
    });
  }
}
//[ROSE][13/05/2008][5943 - 006]Função para cancelar o inventário
function cancelaInventario(cd_inventario){
  if(cd_inventario){
    Ext.MessageBox.confirm('Confirmação', 'Confirma cancelamento do inventário?', function (btn){
      if (btn == "yes") {
        var updFields = [];
        var updValues = [];

        updFields.push("STATUS");
        updFields.push("CODSEQ");

        updValues.push('C');
        updValues.push(cd_inventario);

        xajax_updateData('VAD0531', updFields, updValues, 'CODSEQ');
        /*[ROSE][27/06/2008][6389 - 006]Adicionado espera para que a tela seja refeita com as alterações do update
         **
         * Alterado tempo de espera para meio segundo para atualizar corretamente
         * @author: Rose
         * @date: 21/10/2008
         * @OS: 5943 - 006
         * @Inspeção: Tuane em 23/10/2008
         */
        setTimeout("window.location.reload()", 500);
      }
    });
  }
}

/*[ROSE][21/05/2008][6354 - 005]Processa a finalização do inventário com ajax para não ocorrer
problema com tempo de processamento
[ROSE][27/06/2008][6389 - 006]Alterado objeto de Ajax.Request para Ext.Ajax.request para funcionar
corretamente no Internet Explorer*/
var bens_replaqueamento; //Variável está fora das funções para ser utilizada em locais distintos
function FinalizarInventario(cdInventario) {

  /*
   * Retirado parâmetro do link porque sempre utilizava o mesmo e desta forma é possível
   * utilizar esta função pelo PHP
   * @author: Rose
   * @date: 07/07/2009
   * @OS: 6673 - 029
   * @Inspeção: Tuane em 07/07/2009
   */
  link = getPageRoot(true)+"/pages/advance/patrimonio/inventario.php";

  if(cdInventario){
    Ext.MessageBox.confirm('Confirmação', 'Confirma finalização do inventário?', function (btn){
      if (btn == "yes") {
         Ext.MessageBox.show({
            title: 'Aguarde',
            msg: 'Finalizando Inventário',
            width:300,
            progress:true,
            closable:false
        });

        Ext.Ajax.request({
          url: getPageRoot()+'pages/advance/patrimonio/inventario_finalizar.php',
          params:{codigo:cdInventario},
          success: function(response,opt){
            /*Quando finalizar este processo executa todas as requisições para transferencia interna
            separamente, uma de cada vez.*/
            var bens_response = Ext.util.JSON.decode(response.responseText);
            bens_replaqueamento = bens_response.replaq; //Armazena os bens para replaqueamento
            if (bens_response.transf.length > 0) {
              ProcessaTransf(bens_response.transf,0,link);
            } else  {
              settiAlert("Não existem bens para transferência interna.");
            }
          },
          failure:function(t,opt){
            Ext.Msg.hide();
            settiAlert('Erro no processamento. Atualize a página e tente novamente.');
          }
        });
      }
    });
  }
}
/*Processa a transferência interna. Foi criada uma função separada para esperar executar cada
requisição do Ajax e incluir uma barra de progresso para toda a finalização
[ROSE][27/06/2008][6389 - 006]Alterado objeto de Ajax.Request para Ext.Ajax.request para funcionar
corretamente no Internet Explorer
**
* Retirada verificaçào do bens_response porque não fazia diferença
* @author: Rose
* @date: 24/10/2008
* @OS: 6389 - 006
* @Inspeção: Tuane em 27/10/2008
*/
function ProcessaTransf(bens_response, cont, link){
  Ext.Ajax.request({
    url: getPageRoot()+'pages/advance/patrimonio/inventario_finalizar.php',
    params: {cdbem:bens_response[cont].CD_BEM, cdamb: bens_response[cont].AMBIENTE_DESTINO, posicao:cont},
    //method: 'GET',
    success: function(response,opt){
      totBens      = bens_response.length;
      respPosAtual = parseInt(response.responseText);

      if (respPosAtual == (totBens-1)) {
        /*[ROSE][07/07/2008][5942 - 003]Chama o processo do replaquemento depois que todas as transferências
        foram finalizadas. Retirado Ext.Msg.hide(); e window.location = link para o proceso continuar com a
        barra de prograsso normalmente.
        **
        * Verifica se tem bens para replaqueamento. Se não, fecha a mensagem e atualiza a página
        * @author: Rose
        * @date: 17/10/2008
        * @OS: 6505 - 010
        * @Inspeção: Tuane em 20/10/2008
        */
        if(bens_replaqueamento.length > 0){
          ProcessaReplaqueamento(bens_replaqueamento, 0, link);
        }else{
          Ext.Msg.hide();
          window.location = link;
        }
      } else {
        var i = respPosAtual/(totBens-1);
        Ext.MessageBox.updateProgress(i, Math.round(100*i)+'% transferido', 'Executando Transferência Interna dos Bens...');

        // chama o processo recursivamente...
        ProcessaTransf(bens_response,(cont+1), link);
      }
    },
    /*[ROSE][27/06/2008][6389 - 006]Adicionada mensagem de erro se o bem não for transferido.*/
    failure: function(response,opt){
      alert("O bem "+ bens_response[cont].CD_BEM +" não foi transferido.\nOcorreu o seguinte erro:\n"+response.responseText+"\nEnvie esta mensagem ao Administrador do Sistema.");
      ProcessaTransf(bens_response,(cont+1), link);
    }
  });
}
/*[ROSE][07/07/2008][5942 - 003]Processo para executar o Replaqueamento dos Bens individualmente, conforme
a Transferência Interna. O contador da barra de progresso começa novamente quando utilizar este processo.*/
function ProcessaReplaqueamento(bens_response, cont, link){
  Ext.Ajax.request({
    url: getPageRoot()+'pages/advance/patrimonio/inventario_finalizar.php',
    params: {plaqantiga:bens_response[cont].ANTIGA, novaplaq: bens_response[cont].NOVA, posicao:cont},
    success: function(response,opt){
      totBens      = bens_response.length;
      respPosAtual = parseInt(response.responseText);

      if (respPosAtual == (totBens-1)) {
        Ext.Msg.hide();
        window.location = link;
      } else {
        var i = respPosAtual/(totBens-1);
        Ext.MessageBox.updateProgress(i, Math.round(100*i)+'% replaqueado','Replaqueando bens...');

        // chama o processo recursivamente...
        ProcessaReplaqueamento(bens_response,(cont+1), link);
      }
    },
    failure: function(response,opt){
      alert("O bem "+ bens_response[cont].CD_BEM +" não foi replaqueado.\nOcorreu o seguinte erro:\n"+response.responseText+"\nEnvie para mensagem ao Administrador do Sistema.");
    }
  });
}
/**
   * Função para enviar o bem para manutenção utilizando o grid do Ext. É necessária esta função para passar o bem e o cod
   * da solicitação selecionado no grid corretamente
   * @author: Rose
   * @date: 05/08/2008
   * @OS: 5974 - 004
   * @Inspeção: Tuane em 11/08/2008
   */
function enviaBemManut(cd_bem,cd_solicita,url){
  if(cd_solicita){
    Ext.MessageBox.confirm('Confirmação', 'Confirma envio do bem para manutenção?', function (btn){
      if (btn == "yes") {
        setTimeout("window.location='"+url+"&cd_solicitacao="+cd_solicita+"&cd_bem="+cd_bem+"'", 100);
      }
    });
  }
}
/**
   * Função para cancelar a solicitação de somente um bem para envio para manutenção
   * @author: Rose
   * @date: 05/08/2008
   * @OS: 5974 - 004
   * @Inspeção: Tuane em 11/08/2008
   */
function cancelaSolicManutencao(cd_solicita){
  if(cd_solicita){
    Ext.MessageBox.confirm('Confirmação', 'Confirma cancelamento da solicitação da manutenção deste bem?', function (btn){
      if (btn == "yes") {
        var updFields = [];
        var updValues = [];

        updFields.push("STATUS");
        updFields.push("CODSEQ");

        updValues.push('C');
        updValues.push(cd_solicita);

        xajax_updateData('VAD0468', updFields, updValues, 'CODSEQ');
        /*[ROSE][27/06/2008][6389 - 006]Adicionado espera para que a tela seja refeita com as alterações do update*/
        setTimeout("window.location.reload()", 1000);
      }
    });
  }
}