//FUNCIONES PARA OMNITURE
//--------------------------------------------------------------------------

/**
 * Codifica el String proporcionado a el encoding UTF-8
 * s: String a ser codificado
 */
function encodeUTF8(s)
{  
	//Codificar el String a formato UTF-8
	return unescape(encodeURIComponent(s));
}

/**
 * Verifica si el String proporcionado es una cadena valida en el encoding UTF-8
 * s: String a ser verificado
 * return: true si el String es una cadena UTF-8 valida, false de lo contrario
 */
function validateUTF8(s)
{  
	try 
	{
		//Decodificar el String
		decodeUTF8(s);
		return true;
	}
	catch (error) 
	{
		//Si se produjo error decodificando el String entonces éste no es valido
		return false;
	}
}


/**
 * Decodifica el String proporcionado (que se supone se encuenta en UTF-8)
 * s: String a ser decodificado
 * return: String decodificado
 */
function decodeUTF8(s)
{  
	return decodeURIComponent(escape(s));
}


/**
 * Devuelve un String cuya cantidad de bytes en el encoding UTF-8 no 
 * excede el maximo numero de bytes permitidos por Omniture.
 * s: String que se desea enviar a Omniture
 * return: String cuya cantidad de bytes en el encoding UTF-8 no 
 *         excede el maximo numero de bytes permitidos por Omniture.
 */
function omnitureEncode(str) 
{
	var MAX_LENGTH = 100;
	//Codificar el String a UTF8
	str = encodeUTF8(str);
	
	//Si el String codificado a UTF 8 mide mas de 100 caracteres
	if (str.length > MAX_LENGTH) {
		//Solo tomar los 100 caracteres
		str = str.substring(0, MAX_LENGTH);
	}
	
	//Validar si el String es valido en UTF-8
	var valido = validateUTF8(str);
	//Iterar hasta que el String sea una cadena UTF8 valida
	while (valido == false) 
	{
		//Quitar el ultimo caracter del String
		str = str.substring(0, str.length - 1);
		//Validar si el String es valido en UTF-8
		valido = validateUTF8(str);
		
	}
	//Decodificar el String 
	return decodeUTF8(str);
	//return convertirCadena(str);
}

