//Requer que o include do jquery seja feito antes.
var COOKIE_NAME = '_infoinvestFavsCetip-dev1_';
var COOKIE_OPTIONS = {path: '/'};

function readCookie () {
	return $.cookie(COOKIE_NAME);
}

function existsCookie(url) {
	var cookieValues = readCookie(COOKIE_NAME);
	var linkName;
	var j = 0;

	if (cookieValues) {
		var list = $.evalJSON(cookieValues);
		for (var item in list) {
			if (j%2 == 0) {
				linkName = list[item];
			}
			if (list[item] == url) {
				return linkName;
			}
			j++;
		}
	}
	return 0;
}

function addLinkToDiv() {
	var divFav = $('#favs_list').text('');
	var j = 2;

	var cookieValues = readCookie(COOKIE_NAME);
	var list = $.evalJSON(cookieValues);

	if (isEmpty(list)) {
		divFav.html(getStr("FAV_TEXTO"));
		return 0;
	}

	var divLink;
	var divId;
	var deleteIcon;
	var urlLink;
	var linkName;
	var divLinkResetar = $('<div class="reset"><a href="javascript:void(0);">Reset</a></div>');

	divLinkResetar.click(function(){
		deleteAllCookies();
	});

	divFav.append(divLinkResetar);


	for (var item in list) {

		if (j%2 == 0) {
			linkName = list[item];
		} else {
			urlLink = list[item];
		}

		if (j % 2 != 0) {
			deleteIcon = $('<img class="remove" id="'+ j +'"/>')
				.attr('src', '/images/remove.png');

			tagUrlLink = $('<a href="' + urlLink + '"></a>').text(linkName);
			divLink = $('<div class="links" id="' + linkName.replace(/\s/gi,"_") + '"></div>')
				.append(deleteIcon)
				.append(tagUrlLink);

			divFav.append(divLink.clone());

			divFav.find('.remove').click(function() {
				var $this = $(this);
				deleteCookie($this.parent().attr('id').replace(/\_/gi, " "), $this.parent().find('a').attr('href'));
			})

			// Acende Estrela do Favoritos caso já esteja adicionado
			favEnableIcon(urlLink);

		}
		j++;
	}
}

function changeCookieName(oldName, newName) {
	var cookieValues = readCookie();
	var values = {}; //array com os valores do cookie.

	if (!cookieValues) {
		return 0;
	}

	var list = $.evalJSON(cookieValues);
	var i = 0;

	for (var item in list) {
		if (list[item] == oldName) {
			values[i] = newName;
		} else {
			values[i] = list[item];
		}
		i++;
	}

	$.cookie(COOKIE_NAME, $.toJSON(values), COOKIE_OPTIONS);

	if (readCookie()) {
		return 1;
	} else {
		return 0;
	}

}

// PTB

function chooseFavNamePtb(url,title) {
	var pageName;
	if (existsCookie(url)) {
		pageName = existsCookie(url);
		jConfirm('Esta página já foi adicionada aos favoritos. <br />Deseja alterar o nome de exibição?', 'Favoritos',
			function(r) {
				if (r) {
					jPrompt('Digite o nome que deseja para este favorito', title, 'Adicionar aos Favoritos',
						function(newPageName) {
							if (newPageName) {
								if (changeCookieName(pageName, newPageName)) {
									addLinkToDiv();
								}
							} else {
								jAlert('O nome do favorito não foi alterado.','Favoritos');
							}
						});

				} else {
					return;
				}
			}
		);
	} else {
		jPrompt('Digite o nome que deseja para este favorito', title, 'Adicionar aos Favoritos',
			function(r) {
				if(r) {
					if (saveCookie(r)) {
						addLinkToDiv();
					} else {
						jAlert('Não foi possível salvar o cookie.', 'Favoritos');
					}
				} else {
					return;
				}
			});
		}
	return pageName;

}

// Enu

function chooseFavNameEnu(url,title) {
	var pageName;
	if (existsCookie(url)) {
		pageName = existsCookie(url);
		jConfirmEnu('This page has been added to your favorites. Would you like to change your user name?', 'Favorites',
			function(r) {
				if (r) {
					jPromptEnu('Type the user name that you wish to appear in this favorite', title, 'Favorites',
						function(newPageName) {
							if (newPageName) {
								if (changeCookieName(pageName, newPageName)) {
									addLinkToDiv();
								}
							} else {
								jAlertEnu('Your user name hasn’t been changed.');
							}
						});
				} else {
					return;
				}
			}
		);
	} else {
		jPromptEnu('Type the user name that you wish to appear in this favorite', title, 'Favorites',
			function(r) {
				if(r) {
					if (saveCookie(r)) {
						addLinkToDiv();
					} else {
						jAlertEnu('The cookie cannot be saved.');
					}
				} else {
					return;
				}
			});
		}
	//$("#popup_container").corner("6px");
	return pageName;
}

function saveCookie (pageName) {
	//le o cookie atual.
	//adiciona ao cookie
	//seta tudo denovo
	var cookieValues = readCookie();
	var values = {}; //array com os valores do cookie.

	if (cookieValues) {
		var list = $.evalJSON(cookieValues);
		var i = 0;

		for (var item in list) {

			if (existsCookie(document.location.toString())) {
				return 0;
			} else if (list[item] == pageName) {
				//se já existir o nome escolhido para o favorito, nao salva o cookie.
				return 0;
			}

			values[i] = list[item];
			i++;
		}
		values[i+1] = pageName;
		values[i+2] = document.location.toString();

	} else {
		values[0] = pageName;
		values[1] = document.location.toString();
	}

	$.cookie(COOKIE_NAME, $.toJSON(values), COOKIE_OPTIONS);

	if (readCookie()) {
		return 1;
	} else {
		return 0;
	}
}

function deleteCookie(name, url) {
	//remover dos cookies
	//le o cookie
	//adiciona em um array vazio se nao for igual ao nome/url passados
	var cookieValues = readCookie();

	var values = {}; //array com os valores do cookie.

	if (!cookieValues) {
		return 0;
	}

	var list = $.evalJSON(cookieValues);
	var i = 0;

	for (var item in list) {
		if ((list[item] != name) && (list[item] != url)){
			values[i] = list[item];
			i++;
		}
	}

	//Remove da lista de favoritos
	var div = $('div#' + name.replace(/\s/gi,"_"));
	div.remove();

	// Apaga estrela de favoritos
	favDisableIcon(url);

	//caso não tenha nenhum favorito, deleta o cookie
	if ($('#favs_list').find('.links').size() == 0) {
		$('#favs_list').html(getStr("FAV_TEXTO"));
		$.cookie(COOKIE_NAME, $.toJSON(values), COOKIE_OPTIONS);

		return (readCookie() ? 0 : 1);
	} else {
		$.cookie(COOKIE_NAME, $.toJSON(values), COOKIE_OPTIONS);
		return (readCookie() ? 1 : 0);
	}
}

function deleteAllCookies() {
	//remover todos cookies
	var cookieValues = readCookie();

	if (!cookieValues) {
		return 0;
	}

	// Remove todas as entradas da lista de Favoritos
	$('#favs_list').find('div').remove();

	// Apaga estrela de favoritos
	favDisableIcon();

	// Seta textos iniciais
	$('#favs_list').html(getStr("FAV_TEXTO"));
	$.cookie(COOKIE_NAME, $.toJSON({}), COOKIE_OPTIONS);


	return (readCookie() ? 0 : 1);

}

function addFavorites () {
	saveCookie();
}

function isEmpty(obj) {
    for(var prop in obj) {
        if(obj.hasOwnProperty(prop))
            return false;
    }
    return true;
}

function favEnableIcon(urlLink){
	var $favEstrela = $('.add_fav');
	if(urlLink == document.location.toString() && ($favEstrela.size() > 1)){
		$favEstrela.addClass('add_fav_on');
	}
}

function favDisableIcon(urlLink){
	var $favEstrela = $('.add_fav');
	if((!urlLink || urlLink == document.location.toString()) && ($favEstrela.size() > 1)){
		$favEstrela.removeClass('add_fav_on');
	}
}

