// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults

atualizador = null;
contador_do_atualizador = 1

function iniciar_atualizador(action, params) {
  
  if(params == null || params == undefined) params = "";
  //alert (params)
  if(--contador_do_atualizador == 0) {
    atualizador = new PeriodicalExecuter(function() {new Ajax.Request(action, {asynchronous:true, evalScripts:true, parameters: params})}, 10);
  }
  if(contador_do_atualizador < 0) {
    contador_do_atualizador = 0;
  }
}

function parar_atualizador() {
  if(atualizador != null) {
    atualizador.stop();
    atualizador = null;
  }
  contador_do_atualizador++;
}

function exibir_justificativa(id) {
  parar_atualizador();
  Try.these(
    function() { $(id).style.display = 'table-row'; },
    function() { $(id).style.display = 'block'; },
    function() { alert('nada funcionou');}
  )
}

function esconder_justificativa(id) {
  $(id).style.display = "";
}

function marcar_campo_com_erro(id) {
  $(id).addClassName("campo_com_erro");
}

function desmarcar_campo_com_erro(id) {
  $(id).removeClassName("campo_com_erro");
}

function formatar_hora(id){

  var posicao_cursor = recuperar_posicao_cursor(id);

  var digitos = [];
  $(id).value.scan(/\d/, function(digito){
        digitos.push(digito[0]);
      }
   );
  var resultado = "";
  for(var i = digitos.length-1; i >= 0; i--){
    if(digitos.length - i == 3) {
      resultado = ":" + resultado;
      posicao_cursor++;
    }
    resultado = digitos[i] + resultado;
  }
   
  $(id).value = resultado;
  definir_posicao_cursor(id, posicao_cursor);
}

function formatar_data(id){
  
  var posicao_cursor = recuperar_posicao_cursor(id);
  
  var digitos = [];
  var conta_barras_antigas = 0;
  var conta_barras_novas = 0;
  $(id).value.scan(/./, function(digito){
         if(digito == '/') {
           conta_barras_antigas++;
         }
         else if(/\d/.test(digito)){
           if(digitos.length == 2 || digitos.length == 5) {
             digitos.push('/');
             conta_barras_novas++;
           }
           digitos.push(digito[0]);
         }
      }
  );
  if(digitos.length == 3 || digitos.length == 6) digitos.pop();
  
  $(id).value = digitos.join('');
  if(conta_barras_antigas < conta_barras_novas) {//posicao_cursor+=1;
    if(digitos[posicao_cursor-1] == '/') posicao_cursor+=1;
    if(digitos[posicao_cursor-2] == '/') posicao_cursor+=1;
  }
  
  definir_posicao_cursor(id, posicao_cursor);
}

function formatar_preco(id){

  var posicao_cursor = recuperar_posicao_cursor(id);

  var digitos = [];
  $(id).value.scan(/\d/, function(digito){
        digitos.push(digito[0]);
      }
   );
  var resultado = "";
  for(var i = digitos.length-1; i >= 0; i--){
    if(digitos.length - i == 3) {
      resultado = "," + resultado;
      posicao_cursor++;
    }
    else if ((digitos.length -i) % 3 == 0){
      resultado = "." + resultado;
      posicao_cursor++;
    }
    resultado = digitos[i] + resultado;
  }
   
  $(id).value = resultado;
  definir_posicao_cursor(id, posicao_cursor);
}

function recuperar_posicao_cursor(id){
  var posicao_cursor = $(id).selectionEnd;
  if ($(id).createTextRange) {
    var i=$(id).value.length+1;
    caret = document.selection.createRange().duplicate();
    //caret.collapse(true);
    //caret.moveStart("character", -$(id).value.length);
    while (caret.parentElement()==$(id) && caret.move("character",1)==1) --i;
    posicao_cursor = --i;
    //posicao_cursor = caret.text.length;
  }
  return posicao_cursor;
}

function definir_posicao_cursor(id, posicao_cursor){
  if($(id).createTextRange) {
    caret.move("character", posicao_cursor); 
    caret.select();
  } 
  else if($(id).selectionStart) { 
    $(id).setSelectionRange(posicao_cursor, posicao_cursor); 
  } 
}

function auto_tab(id_origem, tamanho, id_destino) {
  if ($F(id_origem).length == tamanho){
    $(id_origem).blur(); 
    try{ 
      $(id_destino).focus();  
    }
    catch(e){}
  }
}

function atendimento_login_keyup() {
  limpar_atendimento_form();
  desabilita_campos_form_pedido();
  $("identificacao").innerHTML = "";
  $("lista_atendimentos").innerText = "";
  $("acompanhamento").hide();
  $("atendimento_servico_tipo").readonly = ""
  if($("atendimento_unidade_id") != null)
      $("atendimento_unidade_id").remove();
}

function desabilita_campos_form_pedido(preservar_campos) {
  Form.getElements("atendimento_form").each(
      function(element) {
          element.disabled = true;
					if(!preservar_campos)
	          element.clear();
      }
  );
  $("tabela_de_servicos") && $("tabela_de_servicos").remove();
}

function habilita_campos_form_pedido() {
  Form.getElements("atendimento_form").each(
      function(element) {
          element.disabled = false;
      }
  );
}

function iniciar_agendamento() {
	$("carregando_atendimento").show();
	desabilita_campos_form_pedido(true);
	$("resultado").innerHTML = ''
}

function limpar_atendimento_form(){
  Form.getElements("atendimento_form").each(
    function(element) {
      if(element.id != null && element.id != "")
        desmarcar_campo_com_erro(element.id);
      if(element.id != "atendimento_unidade_id") 
        element.clear();
    }
  );
  $("preco").innerHTML = "&nbsp;";
  $("resultado").innerHTML = "";
  $("erro").innerHTML = "";
	$("carregando_atendimento").hide();
  desbloquear_servico();
  if($("atendimento_id") != null)
    $("atendimento_id").remove();
}

function mostrar_carregando(id){
  return function(){
    $(id).show()
  }
}

function esconder_carregando(id){
  return function(){
    $(id).hide()
  }
}

function bloquear_servico(){
  $("atendimento_servico_tipo").disabled = true;
}

function desbloquear_servico(){
  if($("atendimento_id") != null)
    $("atendimento_servico_tipo").disabled = false;
}

function destacar_linha(linha){
  $(linha).addClassName("linha_destacada");
  
}

function remover_destaque_linha(linha){
  $(linha).removeClassName("linha_destacada");
}

function iniciar_spinner_atendimento_pendente_fornecedor(atendimento_id){
  $('spinner_atendimento_pendente_fornecedor_'+atendimento_id).show();
  $('acoes_atendimento_pendente_fornecedor_'+atendimento_id).hide();
}

function parar_spinner_atendimento_pendente_fornecedor(atendimento_id){
  $('spinner_atendimento_pendente_fornecedor_'+atendimento_id).hide();
  $('acoes_atendimento_pendente_fornecedor_'+atendimento_id).show();
}

function iniciar_spinner_envio_lembrete(atendimento_id){
  $('spinner_envio_lembrete_'+atendimento_id).show();
  $('acoes_envio_lembrete_'+atendimento_id).hide();
}

function parar_spinner_envio_lembrete(atendimento_id){
  $('spinner_envio_lembrete_'+atendimento_id).hide();
  $('acoes_envio_lembrete_'+atendimento_id).show();
}

function iniciar_spinner_excluir_atendimento(atendimento_id){
  $('spinner_excluir_atendimento_'+atendimento_id).show();
  $('acoes_excluir_atendimento_'+atendimento_id).hide();
}

function parar_spinner_excluir_atendimento(atendimento_id){
  $('spinner_excluir_atendimento_'+atendimento_id).hide();
  $('acoes_excluir_atendimento_'+atendimento_id).show();
}

function checar_cookies(){
  if (navigator.cookieEnabled == false) {
    alert ("Por favor, ative os cookies no seu browser")
  }
}
function confirmar_cancelamento_antes_do_prazo(id, controlador){
  if (confirm('ATENÇÃO: Este serviço será cobrado mesmo se for cancelado.\nFaltam menos de 24 horas para a sua execução.\nDeseja cancelar o serviço mesmo assim?')) { 
    if (controlador)
        new Ajax.Request('/'+controlador+'/excluir_atendimento/'+id, {asynchronous:true, evalScripts:true});       
  }
  else {
    parar_spinner_excluir_atendimento(id);
  }
}  