
/*********************************************************************
 * Funciones para manipular Galletas (29/nov/2004)                   *
 *                                                                   *
 * Original escrito por Bill Dortch, hIdaho Design <BDORT@NETW.COM>, *
 * tomado de:                                                        *
 *                                                                   *
 *             http://www.cookiecentral.com/demomain.htm             *
 *                                                                   *
 * información acerca de las galletas, referirse a:                  *
 *                                                                   *
 *       http://www.netscape.com/newsref/std/cookie_spec.html        *
 *                                                                   *
 *********************************************************************/




/*********************************************************************
 * Auxilares
 */


/* Devuelve el valor decodificado de una galleta.
 */
function hg_getValor (str) 
{
  /* VARs */
  var fin = document.cookie.indexOf (";", str);
      
  if (fin == -1)
      fin = document.cookie.length;
  return unescape(document.cookie.substring(str, fin));
}


/*********************************************************************
 * Principales
 */



/* Devuelve el valor de la galleta de Nombre especificado, o null
 * si no existe.
 */
function hg_Dame (Nombre)
{
   /* VARs */
   var arg = Nombre + "=";
   var aLargo = arg.length;
   var cLargo = document.cookie.length;
   var i = 0;
   var j;

   while (i < cLargo) 
   {
       j = i + aLargo;
       if (document.cookie.substring(i, j) == arg)
          return hg_getValor (j);
       i = document.cookie.indexOf(" ", i) + 1;
       if (i == 0) break; 
   }
   return null;
}


/* Crea o actualiza una galleta. 
 *
 * Valor     Una cadena de caracteres válida.
 * [Expira]  De tipo fecha. Si se omite o es null, expira al
 *           final de la sesión.
 * [Ruta]    De tipo cadena. Indica la ruta para la cual la
 *           galleta es válida. Si se omite o es null, usa la
 *           del archivo que llama a la función.
 * [Dominio] Cadena que indica el dominio válido de la galleta.
 *           Si se omite o es null, utiliza el dominio del 
 *           archivo que llama a la función.
 * [Seguro]  De tipo booleano (true/false), especifica si la
 *           transmisión requiere de un canal seguro (HTTPS).
 *
 * Ejemplos: 
 *           hg_Nueva ("LaGalleta", "ElValor", null, "/");
 *           hg_Nueva (LaGalleta, ElValor, null, "/ruta", null, true);
 */
function hg_Nueva (Nombre, Valor)
{
   /* VARs */
   var argv = hg_Nueva.arguments;
   var argc = hg_Nueva.arguments.length;
   var Expira = (argc > 2) ? argv[2] : null;
   var Ruta = (argc > 3) ? argv[3] : null;
   var Dominio = (argc > 4) ? argv[4] : null;
   var Seguro = (argc > 5) ? argv[5] : false;

   document.cookie = Nombre + "=" + escape (Valor) +
	( (Expira == null) ? "" : ("; expires=" + Expira.toGMTString()) ) + 
	( (Ruta == null) ? "" : ("; path=" + Ruta) ) +
	( (Dominio == null) ? "" : ("; domain=" + Dominio) ) +
	( (Seguro == true) ? "; secure" : "");
}

/* Borra la galleta (establece la fecha de expiración a la fecha-hora actual).
 */
function hg_Borra (Nombre)
{
  /* VARs */
  var exp = new Date();
  var cValor = hg_Dame (Nombre);

  exp.setTime (exp.getTime() - 1);
  document.cookie = Nombre + "=" + cValor + "; expires=" + exp.toGMTString();
}
