/* **************************************************************
 * Cookie API - libreria javascript1.1 para el manejo de cookies
 * Por Iago Rubio Sanfiz (c) 2001
 * http://iagorubio.com/javascript/cookieAPI/
 ************************************************************** */

/** 
 *  Devuelve verdadero (true) si hay un cookie en el cliente, falso (false) si no.*
 *  @return booleano indicando si existe o no cookie (true|false)
 */
function ckCookieHayCookie() 
{
	if(document.cookie.indexOf('=') > 0) return true;
	else return false;
}
/**
 * Devuelve verdadero si existe el el cookie una variable con el nombre que se le pasa.
 * @param name cadena con el nombre de la variable.
 * @return booleano indicando si existe o no la variable (true|false)
 */
function ckCookieExisteVariable( name )
{
	var ckObj = document.cookie;
	var index = ckObj.indexOf( name + "=" );
	if (index == -1) return false;
	else return true;
}
/**
 * Devuelve una cadena con el valor correspondiente a la variable pasada o null.
 * @param name cadena con el nombre de la variable.
 * @return el valos asociedo a esa variable en el cookie.
 */
function ckCookieRecuperaValor( name )
{
	var ckObj = document.cookie;
	var index = ckObj.indexOf( name + "=" );
	if (index == -1) return null;
	else{
			index = ckObj.indexOf( "=", index ) + 1;
    		var finStr = ckObj.indexOf( ";", index );
    		if (finStr == -1) finStr = ckObj.length;
    		return unescape( ckObj.substring(index, finStr) );
	}
}
/**
 * Escribe un valor asociado a un nombre de variable, y ajusta su expiración.
 * @param variable nombre de la variable que desee escribirse.
 * @param valor cadena con el valor que quiere asociarse a la variable.
 * @param expira Entero con el número de dias para la expiración de la variable.
 * @return la funcion no devuleve valor alguno (void)
 * @warning En algunos navegadores, puede obviarse el parámetro "expira" y el cookie solo durará la sesión.
 */
function ckCookieEscribeVariable( variable, valor , expira )
{
	var strExpiracion;
	if(expira > 0){
	 	var exPires = new Date();

	 	var sgAumento = expira * 24 * 60 * 60 * 1000;
	 	exPires.setTime( exPires.getTime() + sgAumento );
	 	strExpiracion = "expires="+exPires.toGMTString();
	 }
	else{
	 	strExpiracion = "expires=Sun, 23-May-80 09:00:00 UTC;";
	 }
	document.cookie = escape(variable) + "=" + escape(valor) + ";" +  strExpiracion ;
}
/**
 * ckCookieEliminaVariable
 * Asigna y fecha atrasada a la expiración de la variable para eliminarla.
 * @param variable nombre de la variable
 * @return la funcion no devuleve valor alguno (void)
 */
function ckCookieEliminaVariable( variable )
{
	strExpiracion = "expires=Sun, 23-May-80 09:00:00 UTC;";
	document.cookie = variable + "=  ;" +  strExpiracion;
}
/**
 * Asigna un valor nulo y elimina una variable, la cookie permanece en memória drante la sesión.
 * @param name cadena con el nombre de la variable a anular.
 * @param expira caducidad de la variable
 */
function ckCookieAnulaVariable( name , expira )
{
	var exPires = new Date();
	var sgAumento = expira * 24 * 60 * 60 * 1000;
	exPires.setTime( exPires.getTime() + sgAumento );
	strExpiracion = "expires="+exPires.toGMTString();
	document.cookie = escape( name ) + "=null;" + strExpiracion;
}
/**
 * Devuelve el número de variables contenido en la cookie.
 */
function ckCookieNumeroVariables()
{
	var ckObj = document.cookie;
	var iItems = 0;
	for(i=0;i<=ckObj.length;i++){
		if(ckObj.charAt(i) == "=") iItems++;
	}
	return iItems;
}
/**
 * ckCookieBorraTodo
 * Elimina todas las parejas variable=valor del cookie.
 */
function ckCookieBorraTodo()
{
	var ckObj = document.cookie;
	var numVariables = ckCookieNumeroVariables();
	var iPos = -1; 
	var strVariable;

	for (i = 0;i<numVariables;i++){
		iPos = ckObj.indexOf("=");
		if(iPos != -1){
			strVariable = ckObj.substring(0,iPos);
			ckCookieEliminaVariable( strVariable );
			ckObj = document.cookie;
		}
	}
}
/**
 * Crea objeto ckCookieArray que contiene dos arrays con las variables y valores
 * ordenadas correlativamente.
 * <ul><li><b>this.variable[]</b> array con las variables.</li>
 * <li><b>this.valor[]</b> array con los valores.</li>
 * <li><b>this.items</b> variable numerica con el numero de variables en el objeto.</li></ul>
 * @return un objeto ckCookieArray
 * @note El valor correspondiente a variable[entero] está en valor[entero]
 */ 
function ckCookieArray()
{
	var ckObj = document.cookie;
	var tempStr;
	var iItems = ckCookieNumeroVariables();
	var iPos = -1;
	
	this.variable = new Array( iItems );
	this.valor = new Array( iItems );
	this.items = 0;
	
	for(i=0;i<iItems;i++){
		iPos = ckObj.indexOf("=");
		if(iPos != -1){
			this.variable[i] = unescape( ckObj.substring(0,iPos) );
			tempStr = ckObj.substring(++iPos,ckObj.length);
		}	
		iPos = tempStr.indexOf(";");
		if(iPos != -1){
			this.valor[i] = unescape( tempStr.substring(0,iPos) );		
			ckObj = tempStr.substring(++iPos,tempStr.length);
		}	
	else{
		 this.valor[i] = unescape( tempStr.substring(0,tempStr.length) );
		}
	}
	this.items = i;
	
	return this;
}