Enjin_Profile_Friends = function() {
	this.init();
}

Enjin_Profile_Friends.__instance = null;
Enjin_Profile_Friends.gi = function() {
	if (Enjin_Profile_Friends.__instance == null) {
		Enjin_Profile_Friends.__instance = new Enjin_Profile_Friends();
	}
	
	return Enjin_Profile_Friends.__instance;
}

Enjin_Profile_Friends.prototype = {
	
	init: function() {
	},
	
	renderFriendsTable: function()
	{                                       
	    var columnDefs = [{fnRender: function(oObj)     
	                                 { 
	                                    var state = oObj.aData[5];
	                                    var user_id = oObj.aData[0];
	                                    
	                                    // we only add a request button if the relationship if not already friends
	                                    // and has not been blocked by either party
	                                    if ( state != 'friend' && state.substr(0,7) != 'blocked' )
	                                    {
	                                        var label = ( state == 'request' ? 'Pending...' : 'Add as Friend' );
    	                                    return '<div class="element_smallbutton"><div class="l"><!-- --></div><div class="r"><!-- --></div><input type="button" value="' + label + '" onclick="document.location.href=\'' + Enjin_Profile_Friends.addRequestUrl + '/user/' + user_id + '\';"></div>';
    	                                }    
	                                    return ''; 
	                                 },
	                       aTargets: [5]        
	                      },
	                      {fnRender: function(oObj)     
	                                 {      
	                                    if ( parseInt(oObj.aData[4],10) != 0 )
	                                    {
	                                        return '<div class="online">&nbsp;</div>';
	                                    }
	                                    else
	                                    {
	                                        return '<div class="offline">&nbsp;</div>';
	                                    }
	                                 },
	                       aTargets: [4]        
	                      } 
	                     ];
	                        
	    var columns = [ {sTitle:'', bVisible: false },      // friend id
	                    {sTitle:'', sClass:'avatar'},       // avatar
	                    {sTitle:'', sClass:'username'},     // username
	                    {sTitle:'', sClass:'flag'},         // location flag
	                    {sTitle:'', sClass:'online-cell'},  // online status [@todo: integrate with online system]
	                    {sTitle:'', sClass:'button'}        // status for add/pending button [friend / request / '']
	                  ];
        var config = {
						aaData: this.friends,
						aoColumns: columns,
						aoColumnDefs: columnDefs,
						bAutoWidth: false,
						iDisplayLength: 15,
						sPaginationType: "next_previous_counter",
						bLengthChange: false,        								
						bInfo:false,
                        bSort: false,
                        bStateSave: false,
                        sDom: 'tp'  
					 };
        							
        var oTable = $('.friends-table').dataTable( config );        							
        $('.friends .title .search-box input').keyup( function(event) { var f = $(event.currentTarget).val(); var t = isNaN(parseInt(f,10)) ? 2 : 0; oTable.fnFilter(f,t,false,false); if ( t == 2 ) { oTable.fnFilter('',0,false,false); }  } );
        $('.friends .title .search-box input').click( function(event) { if ( $(this).attr('data-init') == "1" ) { $(this).val('').attr('data-init',0); } } );
        
	},
	
	launchPopup: function(evt, message, message1, baseurl) {
		var params = {
				message: message,
				message1: message1,
				button_continue: 'Yes',
				scope: this,
				callback: function() {
					window.location = baseurl;
				}
			};
		
		//prevent close due same click event
		if (!evt) var evt = window.event;
		evt.cancelBubble = true;
		if (evt.stopPropagation) evt.stopPropagation();		
		
		Enjin_Core.showPopup(params);			
	},
	
	removeFollowing: function(evt, baseurl) {
		this.launchPopup(evt, 'Confirm Remove', 'Do you want to remove this user?', baseurl);
	},
	
	blockUser: function(evt, baseurl) {
		this.launchPopup(evt, 'Confirm block', 'Do you want to block this user?', baseurl);	
	},
	
	unblockUser: function(evt, baseurl) {
		this.launchPopup(evt, 'Unblock User', 'Do you want to unblock this user?', baseurl);		
	}	
}

Enjin_Profile_Friends.friendsWidgetNext = function(event)
{
    var widget = $(event.currentTarget).closest('.widget-body');
    
    // if button is disabled don't do anything
    if ( widget.find('.element_smallbutton.next.disabled').length ) { return; };

    var currentPage = parseInt( widget.find('.page.open').removeClass('open').addClass('hidden').attr('data-page'), 10 );

    currentPage++;
    var newPage = widget.find('div[data-page=' + currentPage + ']')
    newPage.removeClass('hidden').addClass('open');

    currentPage++;
    if ( !widget.find('div[data-page=' + currentPage + ']').length )
    {    
        widget.find('.element_smallbutton.next').addClass('disabled');
    }    
    widget.find('.element_smallbutton.previous').removeClass('disabled');
}
                                    
Enjin_Profile_Friends.friendsWidgetPrev = function(event)
{
    var widget = $(event.currentTarget).closest('.widget-body');
    
    // if button is disabled don't do anything
    if ( widget.find('.element_smallbutton.previous.disabled').length ) { return; };
    
    var currentPage = parseInt( widget.find('.page.open').removeClass('open').addClass('hidden').attr('data-page'), 10 );

    currentPage--;
    var newPage = widget.find('div[data-page=' + currentPage + ']')
    newPage.removeClass('hidden').addClass('open');

    currentPage--;
    if ( !widget.find('div[data-page=' + currentPage + ']').length )
    {    
        widget.find('.element_smallbutton.previous').addClass('disabled');
    }   
    widget.find('.element_smallbutton.next').removeClass('disabled');
}


$(document).ready(function() {	
	Enjin_Profile_Friends.gi();
});



