function showFans(item_id, module, type)
{
	if(type == 1)
	{
		var ele = $('game_fans');
		var eleStr = "$('game_fans_list')";
		var listDiv = $('game_fans_list');
	}
	else
	{
		var ele = $('game_antifans');
		var eleStr = "$('game_antifans_list')";
		var listDiv = $('game_antifans_list');
	}
	
	effect('blind', ele, eleStr+'.startWaiting()');
	
	
	
	if(!ele.visible()) {
		listDiv.show();
		listDiv.update('loading');
		new Ajax.Request("/ajax/fav.php", {
						onSuccess : function(r)
						{
							listDiv.stopWaiting();
							listDiv.hide();
							listDiv.update(r.responseText);
							effect('appear', listDiv);
						},
						method: 'post',
						parameters: 'action=getFanList&module_id='+module+'&item_id='+item_id+'&type='+type
						});
	}
	else
		effect('appear', listDiv);
}

var FanList = Class.create();
FanList.prototype = {
	
	initialize: function(options) {
		this.request = false;
		this.options = options;
		this.duration = 0.3;
	},
	
	show: function(type, page) {
		if(!page)
			var page = 1;
		
		this.page = page;
		this.set(type);
		if(!this.request) {
			if(this.holder.visible()) {
				this.ele.update('loading');
				this._load();
			}
			else {
				new Effect.BlindDown(this.holder, {
					duration: this.duration,
					queue:{scope:'load_fans_'+this.type+'_'+this.options.itemId, position:'start', limit: 1},
					afterFinish: function() {
						this._load();
					}.bind(this)
				});
			}
		}
		return false;
	},
	
	_load: function() {
		this.request = true;
		this.ele.startWaiting();
		new Ajax.Request('/ajax/fav.php', {
			method: 'post',
			parameters: 'action=getFanList&module_id='+this.options.moduleId+'&item_id='+this.options.itemId+'&type='+this.type+'&page='+this.page,
			onSuccess : function(r) {
				this.request = false;
				this.ele.stopWaiting();
				this.ele.hide();
				this.ele.update(r.responseText);
				new Effect.Appear(this.ele, {
					duration: this.duration,
					queue:{scope:'load_fans_2_'+this.type+'_'+this.options.itemId, position:'start', limit: 1}
				});
			}.bind(this)
		});
	},
	
	hide: function(type) {
		this.set(type);
		new Effect.BlindUp(this.holder, {
			duration: this.duration,
			queue:{scope:'load_fans_'+this.type, position:'start', limit: 1},
			afterFinish: function() {
				this.ele.update('loading');
				this.request = false;
			}.bind(this)
		});
		
	},
	
	set: function(type) {
		this.type = type;
		
		if(type == 1) {
			this.holder = $('game_fans');
			this.ele = $('game_fans_list');
		} else {
			this.holder = $('game_antifans');
			this.ele = $('game_antifans_list');
		}
	}
}


function becomeFan(module, item, action)
{
	if(!isLoggedIn()) {
		askLogin();
		return false;
	}
	
	if(action == 'favup')
	{
		var reDoneError = 'You\'re alreay a fan of this item';
		var showEle = ['holder_favdown'];
		var hideEle = ['holder_favup', 'holder_ignore'];
	}
	else if(action == 'favdown')
	{
		var reDoneError = 'You have alreay added it in your ignore list';
		var showEle = ['holder_favup', 'holder_ignore'];
		var hideEle = ['holder_favdown'];
	}
	
	$(hideEle[0]).startWaiting();
	
	new Ajax.Request("/ajax/fav.php", {
					onSuccess : function(r)
					{
						$(hideEle[0]).stopWaiting();
						
						if(r.responseText == 'l')
							askLogin();
						else if(r.responseText == 'e')
							alert(E_INVALID_REQUEST);
						else if(r.responseText == 'v')
						{
							showEle.each(function (ele) {
								$(ele).show();
							});
							
							hideEle.each(function (ele) {
								$(ele).hide();
							});
							
							alert(reDoneError);
						}
						else
						{
							showEle.each(function (ele) {
								$(ele).show();
							});
							
							hideEle.each(function (ele) {
								$(ele).hide();
							});
							
							var countDiv = $('item_fans_count');
							countDiv.hide();
							effect('appear', countDiv, '', '', 1);
							countDiv.update(r.responseText);
						}
					},
					method: 'post',
					parameters: 'action='+action+'&module_id='+module+'&item_id='+item
					});
}

function becomeAntiFan(module, item, action)
{
	if(!isLoggedIn()) {
		askLogin();
		return false;
	}
	
	if(action == 'add') {
		var action = 'ignoreWithReturn';
		var reDoneError = 'You have alreay added this item in your ignore list';
		var doneMsg = 'Item has been added in your ignore list';
		var showEle = ['holder_remove_ignore'];
		var hideEle = ['holder_ignore', 'holder_favup'];
	}
	else if(action == 'remove') {
		var action = 'removeIgnoreWithReturn';
		var reDoneError = 'The item is already removed from your ignore list';
		var doneMsg = 'Item has been removed from your ignore list';
		var showEle = ['holder_ignore', 'holder_favup'];
		var hideEle = ['holder_remove_ignore'];
	}
	
	var ele = $(hideEle[0]);
	ele.startWaiting();
	new Ajax.Request("/ajax/fav.php", {
					onSuccess : function(r)
					{
						ele.stopWaiting();
						if(r.responseText == 'l')
							askLogin();
						else if(r.responseText == 'e')
							alert(E_INVALID_REQUEST);
						else if(r.responseText == 'v')
						{
							showEle.each(function (ele) {
								$(ele).show();
							});
							
							hideEle.each(function (ele) {
								$(ele).hide();
							});
							alert(reDoneError);
						}
						else
						{
							showEle.each(function (ele) {
								$(ele).show();
							});
							
							hideEle.each(function (ele) {
								$(ele).hide();
							});
							
							var countDiv = $('item_antifans_count');
							countDiv.hide();
							effect('appear', countDiv, '', '', 1);
							countDiv.update(r.responseText);
							//alert(doneMsg);
						}
					},
					method: 'post',
					parameters: 'action='+action+'&module_id='+module+'&item_id='+item
					});
}

function setFavDivs(isFan, is_AntiFan)
{
	var ele = $('holder_favup');
	var ele2 = $('holder_favdown');
	var ele3 = $('holder_ignore');
	var ele4 = $('holder_remove_ignore');
	
	if(isFan)
	{
		ele2.show();
		ele.hide();
		ele3.hide();
		ele4.hide();
	}
	else
	{	
		ele.show();
		ele2.hide();
	}
	
	if(is_AntiFan)
	{
		ele4.show();
		ele.hide();
		ele2.hide();
		ele3.hide();
	}
	else if(!isFan)
		ele3.show();
}