//
//  Funções para manipulação de Cookies 
//
//  Escritas por Bill Dortch, hIdaho Design <bdortch@hidaho.com>
//
//  Traduzido por Marcos Cabral Resende (mcr@ism.com.br)
//  para o Guia internet.br - http://www.internetbr.com.br
//
//  Rio de Janeiro, 26 de maio de 1998
//
/////////////////////////////////////////////////////////////////////////
//
// Função usada internamente para retornar o valor decodificado do Cookie
//
function LeValorCookie (offset) {
  var endstr = document.cookie.indexOf (";", offset);
  if (endstr == -1)
    endstr = document.cookie.length;
  return unescape(document.cookie.substring(offset, endstr));
}
//
//  Função que retorna o valor do cookie especificado por "name".
//    name    - Objeto do tipo string contendo o nome do cookie.
//    retorna - Objeto do tipo string contendo o valor do cookie, 
//              ou null se o cookie não existe.
//
function LeCookie (name) {
  var arg = name + "=";
  var alen = arg.length;
  var clen = document.cookie.length;
  var i = 0;
  while (i < clen) {
    var j = i + alen;
    if (document.cookie.substring(i, j) == arg)
      return LeValorCookie (j);
    i = document.cookie.indexOf(" ", i) + 1;
    if (i == 0) break; 
  }
  return null;
}
//
//  Function que cria ou atualiza um cookie.
//    name      - Objeto do tipo string contendo o nome do cookie.
//    value     - Objeto do tipo string contendo o valor do cookie. 
//                Pode conter qualquer sequencia de caracteres válidos.
//    [expires] - Objeto do tipo data contendo a data de expiração do cookie.  
//                Se omitido ou igual a null, o cookie expirará ao final da sessão corrente.
//    [path]    - Objeto do tipo string contendo o diretório para o qual o cookie é válido.
//                Se omitido ou igual a null, usa o diretório do documento corrente.
//    [domain]  - Objeto do tipo string contendo o domínio para o qual o cookie é válido.
//                Se omitido ou igual a null, usa o domínio do documento corrente.
//    [secure]  - Valor lógico (true ou false) indicando se o cookie requer servidor
//                seguro para ser transmitido (HTTPS).  
//
//  Os dois primeiros parâmetros são válidos. Os outros, se fornecidos, precisam
//  ser passados na ordem listada acima.  Para omitir um campo opcional não utilizado,
//  use null para marcar a posição. 
//
function GravaCookie (name,value,expires,path,domain,secure) {
  document.cookie = name + "=" + escape (value) +
    ((expires) ? "; expires=" + expires.toGMTString() : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
}

//  Function to delete a cookie. (Sets expiration date to start of epoch)
//    name    - Objeto do tipo string contendo o nome do cookie.
//    path    - Objeto do tipo string contendo o diretório do cookie a ser apagado.
//              Este campo precisa ser o mesmo do utilizado para criar o cookie, ou
//              null/omitido se nenhum diretório foi especificado quando da criação do cookie.
//    domain  - Objeto do tipo string contendo o dominio do cookie a ser apagado.
//              Este campo precisa ser o mesmo do utilizado para criar o cookie, ou
//              null/omitido se nenhum dominio foi especificado quando da criação do cookie.
//
function ApagaCookie (name,path,domain) {
  if (LeCookie(name)) {
    document.cookie = name + "=" +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      "; expires=Thu, 01-Jan-70 00:00:01 GMT";
  }
}

