
var STAR_ON = "images/star-on.png";
var STAR_OFF = "images/star-off.png";

//Set expiration date of the cookie
function getExp(d)
{
	var exp = new Date();
	exp.setTime (exp.getTime() + d);
	return "; expires=" + exp.toGMTString();
}

//Detect if client has cookies allowed
function cookiesActivated()
{
	var c = document.cookie;
	document.cookie = "_a_=y" + getExp(1000);
	if (document.cookie.indexOf("_a_=y") == -1)
		return false;
	document.cookie = "_a_=y" + getExp(-1);
	return true;
}

//Show favorites
function showFavs()
{
	if (!cookiesActivated())
		return;

  	// preload star-on
	var img = new Image();
	img.src = STAR_ON;
	img.src = STAR_OFF;

	// display things with a "fav" class
	var i, s = document.styleSheets;
	if (!s)
		return;
	var l1 = s.length;
	for (i = 0; i < l1; i++)
	{
		var r = s[i].cssRules;
		if (!r)
		{
			r = s[i].rules;
			if (!r)
				return;
		}

		var l2 = r.length;
		for (var j = 0; j < l2; j++)
		{
			if (r[j].selectorText == ".fav")
			{
				r[j].style["visibility"] = "visible";
				return;
			}
		}
	}
}

showFavs();

if (document.all && !document.getElementById)
{
	document.getElementById = function(id)
	{
		return document.all[id];
	}
}

//Read the cookie from disc
function getCookie(key)
{
	var ck = document.cookie;
	if (typeof(ck) == "undefined")
		return "";
		
	var i = ck.indexOf(key + "=");
	var j = ck.indexOf(";", i);
	var st;
	if (i < 0)
		return "";
	if (j < 0)
		return ck.substring(i + 6);
	else
		return ck.substring(i + 6, j);
}

//Write the cookie on disc
function setCookie(key, v)
{
	if (v.length == 0)
		document.cookie = key + "=" + getExp(-1000) + ";path=/";
	else
		document.cookie = key + "=" + v + getExp(356*24*60*60*1000) + ";path=/";
}

//Delete Element ID in the cookie
function ToggleImageOff(idElem)
{
	var ckStars = getCookie("stars");
	idElem+="|";
	ckStars=ckStars.replace(idElem,"");
	setCookie("stars",ckStars);
}

//Write Element ID in the cookie
function ToggleImageOn(idElem)
{
	var ckStars = getCookie("stars");
    ckStars += idElem + "|";
	setCookie("stars", ckStars);
}

//Toggle Image ON or OFF
function ToggleImage(objImage)
{   
	var idElem = objImage.id.substring("s_".length);
	if (objImage.src.indexOf('star-on') >= 0)
	{
		objImage.src = STAR_OFF;
		ToggleImageOff(idElem);
	}
	else
	{
		objImage.src = STAR_ON;
		ToggleImageOn(idElem);
	}
}

//Capture Click and Double Click events
function CaptureEvent() 
{ 
    ToggleImage(this); 
}

//Capture click/dblclick events on star images
function hookEventHandlers()
{
	if (!cookiesActivated()) return;

	var intCont;
	var docImg = document.images;
	for (intCont = 0; intCont < docImg.length; intCont++)
	{
		var strClass = " " + docImg[intCont].className + " ";
		if (strClass.indexOf(" fav ") >= 0 || strClass.indexOf(" fav_vis ") >= 0)
		{
			docImg[intCont].onclick = CaptureEvent;
			docImg[intCont].ondblclick = CaptureEvent;
		}
	}
}

// Show images marked with "*"
function showFavsAlt()
{
    //No stylesheets
	//if (document.styleSheets) return;

    //Search for all images with tag="*"
	var intCont;
	var items = document.getElementsByTagName("Click to add/remove this article to your list of 'My Favorites'");
	var intNumItems = items.length;
	for (intCont = 0; intCont < intNumItems; intCont++)
	{
		var strClass = " " + items[i].className + " ";
		var intPos = strClass.indexOf(" fav ");
		if (intPos > -1)
			items[intCont].className = strClass.replace("fav", "fav_vis");
	}
}

//Read ids stored in cookies and show images
function retrieveStarsAux(img_src)
{
    //Read the cookie
	var ckStars = getCookie("stars");
	var real_id = 0;
	var intCont = 0;
	var stars_array;

	stars_array = ckStars.split("|");
    
	for (intCont=0;  intCont < stars_array.length; intCont++)
	{
		var idElement = stars_array[intCont];
		var imgElement = document.getElementById("s_" + idElement);
		if (imgElement) imgElement.src = img_src;
	}
}

//Read all ON elements in the cookie
function retrieveStars() 
{ 
    retrieveStarsAux(STAR_ON); 
}

//Remove all the Elements of the cookie
function removeAll()
{
	retrieveStarsAux(STAR_OFF);
	setCookie("stars", "");
}