/**
 * This js file contains almost all the site ui methods. 
 * 
 * @author Basit (basit@imegah.com || http://Basit.me)
 */
var ui = {
	
	toggle_follow: function (username, follow)
	{		
		ui.toggle_follow_api(username, follow, function(response) {
			if (response.status_valid == 1)
			{
				if (follow)
					var $following = '<a href="#" class="stopFollowing" rel="'+username+'">- Following</a>';
				else
					var $following = '<a href="#" class="startFollowing" rel="'+username+'">iFollow</a>';
				
				$j('[rel="'+username+'"].startFollowing,[rel="'+username+'"].stopFollowing').replaceWith($following);
			}
		});
	},
	
	toggle_follow_api: function (username, follow, callback)
	{		
		if (follow)
			api.startFollowing(username, callback);
		else
			api.stopFollowing(username, callback);
	},
	
	toggle_follower_block: function (username, block, callback)
	{
		if (block)
			api.blockFollower(username, callback);
		else
			api.unblockFollower(username, callback);
	},
	
	paging: function($paging, $html_paging)
	{		
		$html_paging.find('ul').html(''); // empty ul
		$html_paging.find('.paginator-nav').html(''); // empty
		
		if ($paging.total_pages > 1)
		{
			jQuery.each($paging.pages, function ($page, $start_row) {
				if ( $start_row === false)
					$html_paging.find('ul').append('<li>'+$page+'</li>');
				else
					$html_paging.find('ul').append('<li><a href="?after='+$start_row+'">'+$page+'</a></li>');
			});
			
			if ($paging.previous === false)
				$html_paging.find('.paginator-nav').append('Previous');
			else
				$html_paging.find('.paginator-nav').append('<a href="?after='+$paging.previous+'">Previous</a>');
			
			$html_paging.find('.paginator-nav').append(' | '); // adding bar between them.
			
			if ($paging.next === false)
				$html_paging.find('.paginator-nav').append('Next');
			else
				$html_paging.find('.paginator-nav').append('<a href="?after='+$paging.next+'">Next</a>');
			
			$html_paging.show();
		}
		else
		{
			$html_paging.hide();
			$html_paging.find('ul').append('<li></li>');
			$html_paging.find('.paginator-nav').append('Previous | Next');
		}
				
		return true;
	},
	
	paging_build_array: function(currentIndex, itemsPerPage, totalResults)
	{
		var pages_add = 3;
		
		var paging = {
			total_rows: totalResults,
			showing_rows: itemsPerPage,
			started: ((currentIndex+1) < totalResults) ? (currentIndex+1) : totalResults,
			ended: totalResults,
			first: (currentIndex == 0) ? false : 0,
			previous: ((currentIndex - itemsPerPage) < 0) ? false : (currentIndex - itemsPerPage),
			next: ((currentIndex + itemsPerPage) > totalResults) ? false : (currentIndex + itemsPerPage),
			last: ((totalResults - itemsPerPage) <= 0) ? 0 : (totalResults - itemsPerPage),
			total_pages: ((totalResults / itemsPerPage) <= 0) ? 0 : Math.ceil(totalResults / itemsPerPage),
			pages: {}
		};
		
		if (paging.total_pages > 1)
		{
			var current_page = Math.ceil(currentIndex / itemsPerPage);
			
			var start_page = ((current_page - pages_add) <= 0) ? 1 : (current_page - pages_add);
			var end_page   = ((current_page + pages_add) > paging.total_pages) ? paging.total_pages : (current_page + pages_add);
			
			
			for (var i = start_page; i < end_page; i++) 
			{
				paging.pages[i] = (current_page == i) ? false : ((i-1) * (itemsPerPage+1)); 
			}
		}
		
		return paging;
	}
}