function FavController() {}
FavController.prototype = {
	init: function(link) {
		this.link = link;
		this.data = this.link.onclick();
		
		this.parseInlineData();
		this.addEventListeners();
	},
	parseInlineData: function() {
		this.collectPostString();
		this.ajaxUrl = this.data.url;
	},
	collectPostString: function() {		
		var postString = "";
		for (var i in this.data) {
			if (i != "url") {
				postString += (i + "=" + this.data[i] + "&");	
			}
		}
		this.postString = postString;
	},
	addEventListeners: function() {
		as.e.click(this.link,this.onLinkClick,this);
	},
	onLinkClick: function(e) {
		e.preventDefault();
		if (window["USER_LOGGED_IN"]) {
			as.ajax(this.ajaxUrl,as.bind(this.updateStatus,this),"POST",this.postString,null,[{name:"Content-Type",value:"application/x-www-form-urlencoded; charset=UTF-8"}]);
		}
		else {
			ShowLogin(e);
		}
	},
	updateStatus: function(data) {
		try {
			data = eval('(' + data + ')');
			if (data.type == "add") {
				this.data.type = "del";
				this.link.innerHTML = "убрать из избранного";
				this.link.className += " fav-remove";
			}
			else {
				this.data.type = "add";
				this.link.innerHTML = "добавить в избранное";					
				this.link.className = this.link.className.replace(/\bfav-remove\b/,"");
			}
			this.collectPostString();
			this.additionalActions(data);
		}
		catch(e) {}
	},
	additionalActions: function(data) {
		var parentLI = as.parent(this.link,"li");
		if (data.type == "add") {
			parentLI.className += " free";
		}
		else {
			parentLI.className = parentLI.className.replace(/\bfree\b/,"");	
		}
	}
}

as.ready(function() {
	as.w("a.fav").each(function() {
		if (this.onclick) {
			new FavController().init(this);	
		}
	});
});

