Enjin_Profile_Widget_Friends = {
	pages: null,
	totals: null,
	items_per_page: null,
	user_id: null,
	
	init: function() {
		this.pages = {
			'following': 1,
			'followers': 1,
			'friends': 1
		};
				
		this.totals = Enjin_Profile_Widget_Friends_Data;
		this.items_per_page = this.totals.items_per_page;
		this.user_id = this.totals.user_id;
	},
		
		
	showPanel: function(name) {
		$('.profile-sidebar-block-friends .friendsmenu .tab').removeClass('selected');
		$('.profile-sidebar-block-friends .panel').hide();
		
		$('.profile-sidebar-block-friends .friendsmenu .tab-'+name).addClass('selected');
		$('.profile-sidebar-block-friends .panel-'+name).show();
	},
	
	goPage: function(user_id, panel, page, items) {
		var url = '/ajax.php?s=profile_info';
		var data = {
			cmd: 'widget-friends-get-page',
			user_id: user_id,
			items: items,
			panel: panel,
			page: page
		};
		
		this.pages[panel] = page;
		$.post(url, data, function(response) {
			$('.profile-sidebar-block-friends .panel-'+panel).html(response);
		});
	},
	
	remove: function(evt, el, user_id) {
		var self = this;
		var params = {
				message: "Confirm of removal",
				message1: "Do you want to remove this user?",
				button_continue: 'Yes',
				scope: this,
				callback: function() {
					self.removeReal(el, user_id);
				}
			};
		
		//prevent close due same click event
		if (!evt) var evt = window.event;
		evt.cancelBubble = true;
		if (evt.stopPropagation) evt.stopPropagation();		
		
		Enjin_Core.showPopup(params);			
	},	
	
	removeReal: function(el, user_id) {
		var self = this;
		var main = $(el).closest('.profile-sidebar-block-friends');
		var url = '/ajax.php?s=profile_info';		
		var data = {
			cmd: 'widget-friends-remove',
			user_id: user_id
		};
		
		$.post(url, data, function(response) {
			if (response.status) {
				Enjin_Core.alert(response.message);
			} else {
				var main_users = $(el).closest('.profile-sidebar-block-friends');
				var link = '<div class="add"><a href="javascript:void(0);" onclick="Enjin_Profile_Widget_Friends.follow(this, '+user_id+')"><!--  --></a></div>';
				$(el).closest('.user').remove();

				//add add link if exists user in followers since we can add it
				main_users.find('.panel-followers .user-'+user_id).prepend(link);
								
				self.goPage(self.user_id, 'following', 1, self.items_per_page);
				
				if (response.totals.friends > 0) {
					self.goPage(self.user_id, 'friends', 1, self.items_per_page);
				} else {										
					//hide tab friends
					main.find('.tab-friends').hide();
					main.find('.panel-friends').hide();
					
					//check if we currently are in tab friends
					if (main.find('.tab-friends').hasClass('selected')) {
						//move to following
						self.showPanel('following');
					}					
				}
				
				self.updateTotals(main, response.totals);	
				self.updateStyles(main_users);				
			}
		}, 'json');
	},
	
	follow: function(el, user_id) {
		var self = this;
		var main = $(el).closest('.profile-sidebar-block-friends');
		var url = '/ajax.php?s=profile_info';		
		var data = {
			cmd: 'widget-friends-follow',
			user_id: user_id
		};
		
		$.post(url, data, function(response) {
			if (response.status) {
				Enjin_Core.alert(response.message);
			} else {
				var nelement;
				var el_user = $(el).closest('.user');				
				var main_users = $(el).closest('.profile-sidebar-block-friends');
				var link = '<div class="x"><a href="javascript:void(0);" onclick="Enjin_Profile_Widget_Friends.remove(event, this, '+user_id+')"><!--  --></a></div>';
				
				$(el).parent().remove();
				/*
				if (self.pages.following == 1 
					&& response.totals.following != self.totals.following) {
					//add to following
					nelement = el_user.clone().prepend(link);
					main_users.find('.panel-following .users').prepend(nelement);
				}
				if (self.pages.friends == 1
					&& response.totals.friends != self.totals.friends) {
					//add to friends
					nelement = el_user.clone().prepend(link);
					main_users.find('.panel-friends .users').prepend(nelement);
				}*/
				
				
				self.goPage(self.user_id, 'following', 1, self.items_per_page);
				self.goPage(self.user_id, 'friends', 1, self.items_per_page);				
				
				if (response.totals.friends > 0) {
					//just in case
					main.find('.tab-friends').show();
				}
				
				self.updateTotals(main, response.totals);
				self.updateStyles(main_users);
				
				main_users.find('.user-'+user_id+' .add').remove();
			}
		}, 'json');
	},
	
	updateStyles: function(main) {
		var elements = ['.panel-following', '.panel-followers', '.panel-friends'];
		
		jQuery.each(elements, function(key, value) {
			var panel = main.find(value);
			//update style
			panel.find('.user').removeClass('user-last');
			panel.find('.user:last').addClass('user-last');
		});
	},
	
	updateTotals: function(main, totals) {		
		main = main.children('.friendsmenu');
		
		main.find('.tab-following .total').html(totals.following);
		main.find('.tab-followers .total').html(totals.followers);
		main.find('.tab-friends .total').html(totals.friends);
		
		if (totals.friends > 1) {
			//just in case
			main.find('.tab-friends');
		}	
		
		this.totals = totals;
	}
}

$(document).ready(function() {
	Enjin_Profile_Widget_Friends.init();
});