/******************************************************************************************************************
 * Arquivo criado em:		2003-01-11
 * Arquivo atualizado em:	2011-03-24
 * Autor:					Francisco L. de Matos
 * Descricao:				Funcoes de tratamento e recursos em geral de cookies
 ******************************************************************************************************************/

	// 01 - Checa o conteudo de um cookie - GetCookie
	/*
		Atributos:  1º texto (nome do cookie)
		Uso com: 	validacoes em geral
		Exemplo: 	valor_cookie = GetCookie('nome_cookie');
		Descricao: 	Esta funcao faz uma varredura em todos os coookies ativos para recuperar os valores do
					cookie indicado no parâmetro
	*/
	function GetCookie(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 GetCookieVal(j);
			}
			i = document.cookie.indexOf(' ', i) + 1;
			if (i == 0) {break;}
		}
		return null;
	}
	// 02 - Inicia um cookie - SetCookie
	/*
		Atributos:  1º texto (nome do cookie)
					2º valor (valor do cookie)
		Uso com: 	validacoes em geral
		Exemplo: 	SetCookie('nome_cookie','conteudo do cookie'[,data de expiracao[,diretorio do cookie][ dominio[,seguro]]]]);
		Descricao: 	Esta inicia um cookie mediante aos argumentos
	*/
	function SetCookie(){
		// 1. Variaveis iniciais
		var ck_nome = '', ck_valor = '', ck_expires = null, ck_path = null, ck_domain = null, ck_secure = false;
		var options, hoursToLive = -8760, defaultOptions = {
			expiresAt: null,
			path:      '/',
			domain:    null,
			secure:    false
		};
		// 2. Vamos receber os parametros
		for (i = 0; i < arguments.length; i++) {
			if (i == 0) {name    = arguments[i];}
			if (i == 1) {value   = arguments[i];}
			if (i == 2) {options = arguments[i];}
		}
		// 3. Vamos iniciar o objeto JSON com as opcoes do cookie (forcar JSON na variavel)
		if (typeof options !== 'object' || options === null){
			options = defaultOptions;
		}
		// 4. Montagem do cookie [nome, valor, data de expiracao, caminho onde o cookie eh valido, dominio, seguro]
		if (!is_ie6ou7() && typeof $a == 'function') {
			// 4.1.a vamos chamar um pluggin jQuery
			$a.cookies.set(name,value,options);
		} else {
			// 4.1.b extracao das variaveis JSON
			if (typeof options.expiresAt === 'object' && options.expiresAt instanceof Date){
				ck_expires = options.expiresAt;
			} else if (typeof options.hoursToLive === 'number' && options.hoursToLive !== 0 ){
				expireDate = new Date();
				expireDate.setTime( expireDate.getTime() + ( options.hoursToLive * 60 * 60 * 1000 ) );
				ck_expires = expireDate;
			}
			
			if (typeof options.path === 'string' && options.path !== ''){
				ck_path = options.path;
			}
			if (typeof options.domain === 'string' && options.domain !== ''){
				ck_domain = options.domain;
			}
			if (options.secure === true){
				ck_secure = options.secure;
			}
			// 4.2.b criacao do cookie
			document.cookie = ck_nome + '=' + escape(ck_valor) +
			((ck_expires == null) ? '' : ('; expires=' + ck_expires.toGMTString())) +
			((ck_path == null)    ? '' : ('; path=' + ck_path)) +
			((ck_domain == null)  ? '' : ("; domain=" + ck_domain)) +
			((ck_secure == true)  ? '; secure' : '');
		}
	}
	// 03 - Excluir/expirar um cookie - DeleteCookie
	/*
		Atributos:  1º texto (nome do cookie)
					2º valor (valor do cookie)
		Uso com: 	validacoes em geral
		Exemplo: 	DeleteCookie('nome_cookie');
		Descricao: 	Esta funcao expira um cookie
	*/
	function DeleteCookie(name) {
		var exp = new Date();
		exp.setTime (exp.getTime() - 1);
		var cval = GetCookie(name);
		document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
	}
	// 04 - Recuperar um parametro de um cookie - GetCookieVal
	/*
		Atributos:  1º texto (indice inicial de um cookie)
		Uso com: 	validacoes em geral
		Exemplo: 	valor_cookie = GetCookieVal(1);
		Descricao: 	Esta funcao capturar um atributo de um cookie mediante um indice inicial
					e termina em um ; (ponto-virgula)
	*/
	function GetCookieVal(offset) {
		var endstr = document.cookie.indexOf(';', offset);
		if (endstr == -1){
			endstr = document.cookie.length;
		}
		return unescape(document.cookie.substring(offset, endstr));
	}

