var Favorites = {
	 addEvent: function(elm, evType, fn, useCapture) {
		 if (elm.addEventListener) {
			 elm.addEventListener(evType, fn, useCapture);
			 return true;
		 } else if (elm.attachEvent) {
			 var r = elm.attachEvent('on' + evType, fn);
			 return r;
		 } else {
			 elm['on' + evType] = fn;
		 }
	 },

	setRecommendation: function(entry, value) {
		if (value == undefined || value == '') value = 3;
		var url = ratingURL + '?entry_id=' + entry + ';value=' + value;
		var myAjax = new Ajax.Updater( 'recommended' , url, {
			onLoading: function(request) { Favorites.recommendation_loading(entry) },
			onComplete: function(request) { Favorites.recommendation_added(entry) },
			asynchronous: true,
			method: 'get'} );
	},
	
	recommendation_loading: function(entry) {
		var prog = 'progress_recommend_' + entry;
		try {
			new Effect.Appear(prog);
		} catch (e) {}
	},
	
	recommendation_added: function(entry) {
		var prog = 'progress_recommend_' + entry;
		try {
			new Effect.Fade(prog);
		} catch (e) {}
		
		txt = recommendedText;
		var div_rectext = 'ratetext_' + entry;
		var div_recvotes = 'ratevotes_' + entry;

		if (!document.getElementById(div_recvotes)) {
			txt += ' (1)';
		} else {
			var votes = document.getElementById(div_recvotes).innerHTML;
			votes = parseInt(votes) + 1;
			document.getElementById(div_recvotes).innerHTML = votes;		
			new Effect.Highlight(div_recvotes);
		}
		
		document.getElementById(div_rectext).innerHTML = txt;
		new Effect.Highlight(div_rectext);
	
	},
	
	createCookie: function(name,value,days) {
        if (days)
        {
                var date = new Date();
                date.setTime(date.getTime()+(days*24*60*60*1000));
                var expires = "; expires="+date.toGMTString();
        }
        else var expires = "";
        document.cookie = name+"="+value+expires+"; path=/";
	},

	readCookie: function(name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for(var i=0;i < ca.length;i++)
        {
                var c = ca[i];
                while (c.charAt(0)==' ') c = c.substring(1,c.length);
                if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
        }
        return null;
	},

	eraseCookie: function(name) {
        Favorites.createCookie(name,"",-1);
	},
	
	setInstructionPref: function() {
		var name = 'cprefscookie';
		var current_style = document.getElementById('instructions').style.display;
		var new_style;
		
		(current_style != "none") ? new_style = 'none' : new_style = '';
		Favorites.formatInstructions(new_style);
		if (Favorites.readCookie(name)) Favorites.eraseCookie(name);
		Favorites.createCookie(name, new_style, 14);
	},
	
	formatInstructions: function(style) {
		if (style == "none") {
			document.getElementById('toggle').innerHTML = 'Show';
		} else {
			document.getElementById('toggle').innerHTML = 'Hide';
		}
		document.getElementById('instructions').style.display = style;	
	}
};
