/*
  * *************************************************** *
  * @sumary: Funções utilizadas no produto de concursos *
  * @author: Ruhan Bidart                               *
  * @since: 23/10/2006                                  *
  * *************************************************** *
  */
  function markLetter()
  {
      // apanha as letras do alfabeto (links das letras de filtragem)
      if(letra == null) { return false; };
      var alfabeto = document.getElementById('alfabeto');
      var letrasLink = alfabeto.getElementsByTagName('a');     
      for(i in letrasLink)
      {     
          letra2 = letrasLink[i].innerHTML; 
          if(letra2 != undefined)
          {
              if(letra2.substr(1,1) == letra)
              {
                  // muda a classe para selecionado caso a letra tenha sido clicada
                  // anteriormente, isso é ditado pela variável de sessão 'letra'
                  if(isIE())
                      {letrasLink[i].setAttribute('className', 'selecao');}
                  else
                      {letrasLink[i].setAttribute('class', 'selecao'); }
                  break;    
              };    
          };
      };
  };
   
  function saveFavourites()
  {
      var inputs = document.getElementsByTagName('input');
      var ck = [];
      for (var i in inputs)
      {
          if( inputs[i].type == 'checkbox' )
          {
              if( inputs[i].checked == true)
                  ck.push(inputs[i].value);
          }
      }

      if (ck.length > 0)
      {
          if(! confirm('Deseja realmente salvar estes concursos como seus favoritos?'))
              return false;

          var form = document.forms['favoritos'];
          for (var i=0; i<ck.length; i++)
          {
              var input = document.createElement('input');
              input.setAttribute('name', 'id_concursos:list');
              input.setAttribute('type', 'hidden');
              input.value = ck[i];
              form.appendChild(input);
          }
          form.submit()

      } else {
          alert('Selecione ao menos um concurso para salva-lo como seu favorito.');
      }
  }
 
  function markFavourites()
  {
      listFavourites = Cookie.getCookie('concursos_favoritos');            
      inputs = document.getElementsByTagName('input');    
      if(listFavourites == 'null' || listFavourites == null){ return; };
      for (var i in inputs)
      {
          if( inputs[i].type == 'checkbox' )
          {
              if(isFavourite( inputs[i].value )){ inputs[i].checked = true; };  
          };
      };   
  };
 
  function isFavourite(value)
  {
      listFavourites = Cookie.getCookie('concursos_favoritos');
      // cria a lista com os favoritos
      listFavourites = listFavourites.split(',');
       
      for(var i in listFavourites)
      {      
          if(listFavourites[i] == value){ return true; };
      };
      
      return false;
  };

  // ======================================
  // Funções para trabalhar a url     
  // @author: Ruhan Bidart         
  // @since: 30/10/2006
  // ======================================  
  function getFromUrl(value)
  {
      var url = window.location.href;
      var key1 = url.indexOf(value);
      if(key1 != -1)
      {
          var key1 = key1 + value.length + 1;            
          var key2 = url.indexOf('&', key1) - 1;     
          if (key2 < 0){ key2 = url.length; };
    
          return url.substr( key1, key2 - key1 + 1);
      }
      else { return -1; };
  }; 
  
  function removeFromUrl(url, value)
  {
      var key1 = url.indexOf(value);
      var url2 = '';      
      var charBack = url[key1 - 1];       
      var marcInterrogacao = 0;
      
      // teste para não retirar a interrogacao da url
      if(charBack == '?') { marcInterrogacao = 0; }
      else if(charBack == '&') { marcInterrogacao = 1; } 
   
      // teste para resolver bug do IE
      if(isIE()){ marcInterrogacao++; };

      if(key1 != -1)
      {            
          var key2 = url.indexOf('&', key1);      
          if (key2 < 0){ key2 = url.length; };
          url2 = url.substr(0, key1 - marcInterrogacao);
          url2 += url.substr(key2 + 1, url.length); 
     
          return url2;
      }
      else { return url; };                
  };
  
  function toPlaceInSequence(Sender, field)
  {
      var url = window.location.href;
      var field2 = getFromUrl('field');
      var order = getFromUrl('order');

      if(field2 != -1){ url = removeFromUrl(url, 'field'); }
      
      if(order != -1)
      { 
          url = removeFromUrl(url, 'order'); 
          // caso esteja chamando a ordenacao da mesma coluna
          // faz a primeira validaçao do if para o FF e a segunda para o IE
//          if ( ( ( field2 == field ) && ( !isIE() ) ) || ( ( field2 == ( field / 2 ) ) && ( isIE() ) ) )
          if ( field2 == field )
          {
              if(order == 0){ order = 1; }
              else if(order == 1){ order = 0 }
              else { order = 1; } 
          }
          // caso esteja chamando a ordenacao de outra coluna
          else { order = 1 };
      }
      else { order = 1; };
      
      // tratando problemas entre os navegadores
      if (isIE())
      {
          // criando a url           
          if (url.indexOf('?') == -1){ url += '?&field=' + field; }
          else { url += '&field=' + field; }       
      }
      else
      {
          // criando a url           
          if (url.indexOf('?') == -1){ url += '?&field=' + field; }
          else { url += '&field=' + field; }
      };    
      url += '&order=' + order;
      // abrindo a url criada
      window.open(url, '_self');           
  };
  
  function showArrow()
  {
      var obj = document.getElementById('cabecalho');
      var field = getFromUrl('field');
      var order = getFromUrl('order');

      // caso exista os parametros 'order' e 'field', na url, colocará a seta
      // correta na coluna destinada             
      if(order && field)
      {
          if(!isNaN(field))
          {  
              if(isIE()){ field = (parseInt(field)); }
              else { field = (parseInt(field)* 2 + 1); }
          }    
          else { return; };
          
          if(!isNaN(order)){ order = (parseInt(order)); }
          else { return ;};
           
          try
          {                   
              if(order == 0){ obj.childNodes[field].innerHTML += '&nbsp;&#9660;' }  
              else if(order == 1){ obj.childNodes[field].innerHTML += '&nbsp;&#9650;' };  
          }
          catch(e)
          {
              throw('O parâmetro FIELD foi passado incorretamente. \nMensagem original: ' + e);
          };    
      };  
  };
  
  function isIE()
  { 
      if(navigator.appName == 'Microsoft Internet Explorer')
          return true;
      else
          return false;
  };
     
     
  /****** Funções de tratamento de cookies ******/
  var Cookie = {
      getCookie: function (cookie_name){
          if ( document.cookie.length > 0 )
          {
              // apanha o cookie através de cookie_name, caso não exista 
              // a variável nos cookies, retorna null
              cookie_start = document.cookie.indexOf( cookie_name + "=" )
              if ( cookie_start != -1 )
              { 
                  cookie_start = cookie_start + cookie_name.length + 1; 
                  // apanha a posição final do cookie, pego até o próximo ';'
                  // encontrado, de acordo com a formatação dos cookies padrão
                  cookie_end = document.cookie.indexOf( ";", cookie_start );
                  // caso não encontre ';', que indica separação entre dois cookies
                  // apanha o tamanho de todo documento de cookies, pois a string
                  // correspondente a cookie_name ocupa todo final do documento                  
                  if ( cookie_end == -1 ){ cookie_end = document.cookie.length };
                  // retorna o valor do cookie
                  return unescape( document.cookie.substring( cookie_start, cookie_end ) );
              };
          };
          return null
      },        
      setCookie: function ( cookie_name, cookie_value, expire_days){
          var cookie_expires = new Date();
          // seta a data de expiração do cookie no formato GMT
          cookie_expires.setDate( cookie_expires.getDate() + expire_days );
          // seta o cookie no arquivo de cookies, inserindo sua data de expiração e seu valor
          document.cookie = cookie_name + "=" + escape( cookie_value ) + ( (expire_days == null) ? "" : ";expires=" + cookie_expires);
      }
  };

  /****** hack para funcionar a abertura dos estados no IE ******/
  function correctShowEstados() {
      var oRegioes = document.getElementById('listaestados')
      for(var i=0; i<oRegioes.childNodes.length; i++) {
          oEstado = oRegioes.childNodes[i]
          with(oEstado) {
              var obj = getElementsByTagName('ul')
              if(obj.length > 0) { 
                  obj = obj[0]
                  obj.onmousemove = new Function("showEstados(this.parentNode, 1, 'block', true)")
                  obj.onmouseout = new Function("showEstados(this, 1, 'wait')")
              }
              firstChild.onmousemove = new Function("showEstados(this.parentNode," + i + ",'block')")  
              if(window.navigator.appVersion.search('MSIE 7') != -1) {
                  firstChild.onmousemove = new Function("showEstados(this.parentNode," + i + ",'block', true)")  
              }
              firstChild.onmouseout = new Function("showEstados(this.parentNode," + i + ",'wait')")  
          }
      }
  }

  var oActual = null
  var timeOut = new Array()
  function showEstados(oSender, pos, display, keep) {
      if(keep == true) { 
          if(timeOut) window.clearTimeout(timeOut.pop())
          oActual = null
          oSender.style.display = display 
          return
      } //else if(keep =='c') {oActual = null; }
      if(!oSender) oSender = oActual      
      var oEstados = oSender.parentNode.getElementsByTagName('ul')
      if(pos > 0) {
          if(oActual != oSender && oActual) {
              oActual.style.display = 'none'
              oActual = null
              window.clearTimeout(timeOut.pop())
          }
          var oEstado = oEstados[pos-1]
          if(display == 'wait') {
              oActual = pos ? oEstado : oSender
              timeOut.push(window.setTimeout("showEstados(null, 1, 'none')" , 1000))
          } else { 
              oEstado.style.display = display 
          }
      } else {  
          if(pos != 0) oSender.style.display = 'none'
      } 
  }



