
//----------------------------------------------------------------------------------------------------------------------

function OutboxScreen() {
	// Get the refresh button element and assign an 'onclick' event to it.
	var self = this;
	
	var refreshButton = document.getElementById( "refresh_outbox_button" );
	refreshButton.onclick = function() {
		 self.onRefreshClicked();
	};

	var prevButton = document.getElementById( "prev_outbox_button" );
	prevButton.onclick = function() {
		 self.onPrevClicked();
	};

	var nextButton = document.getElementById( "next_outbox_button" );
	nextButton.onclick = function() {
		 self.onNextClicked();
	};
}

//----------------------------------------------------------------------------------------------------------------------

OutboxScreen.prototype.onActivated = function() {

	// Simply refresh the table
	this.onRefreshClicked();
}

//----------------------------------------------------------------------------------------------------------------------

OutboxScreen.prototype.onRefreshClicked = function() {
	// Add event listeners.
	var self = this;
	fbService.onSuccess = function( response ) { self.onFatBookieOutboxResponse( response ) }
	fbService.onError = function( status ) { self.onFBServiceError( status ) }

	// Start the request.
	fbService.getMessages("outbox", OUTBOX_CURRENT_PAGE);
}

//----------------------------------------------------------------------------------------------------------------------

OutboxScreen.prototype.onPrevClicked = function() {
	
	if(OUTBOX_CURRENT_PAGE > 1)
		OUTBOX_CURRENT_PAGE--;
	else
		OUTBOX_CURRENT_PAGE = 1;

	this.onRefreshClicked();
}

//----------------------------------------------------------------------------------------------------------------------

OutboxScreen.prototype.onNextClicked = function() {
	
	OUTBOX_CURRENT_PAGE++;

	this.onRefreshClicked();
}

//----------------------------------------------------------------------------------------------------------------------

OutboxScreen.prototype.onMessageClick = function(id) {

	messageScreen.msg_id = id;
	messageScreen.show = "outbox";

	//activate the message screen
	widgetMenu.activate( Menu.VIEW_MESSAGE_SCREEN );
}

//----------------------------------------------------------------------------------------------------------------------

OutboxScreen.prototype.onFatBookieOutboxResponse = function( response ) {
	
	if(response.retcode != undefined) {
		if(parseInt(response.retcode) == 1)
			this.onFBServiceError(response.body);
		else
		{
			if(response.periods != undefined) {
				//adjust page overflow
				if( OUTBOX_CURRENT_PAGE > parseInt(response.max_pages) )
					OUTBOX_CURRENT_PAGE = parseInt(response.max_pages);

				var outboxTable = document.getElementById( "outbox_list_table" );
				var html = "";

				// Fill in the table.
				for ( var i = 0; i < response.periods.length; i++ ) {
					var v_period = response.periods[i];
					
					html += Helper.createPeriodRow(v_period.period_name);

					if(v_period.period_messages != undefined) {
						for ( var j = 0; j < v_period.period_messages.length; j++ ) {
							var v_message = v_period.period_messages[j];
							
							var v_date = new Date( (v_message.date).replace(/\-/g,"/") );
							
							html += Helper.createOutboxRow(	v_message.id, 
															v_message.party, 
															v_message.party_name, 
															v_message.subject,
															v_date.toLocaleDateString(),
															v_message.is_read,
															v_message.flag
															);
						}
					}
				}
				
				outboxTable.innerHTML = html;
			}
			else
			{
				var outboxTable = document.getElementById( "outbox_list_table" );
				var html = "<tr><th>&nbsp;</th></tr>";

				outboxTable.innerHTML = html;
			}
		}
	}
	else
		alert( StringTable.Code.fatalAPIError );
}

//----------------------------------------------------------------------------------------------------------------------

OutboxScreen.prototype.onFBServiceError = function( status ) {
	// Alert the user that something has gone wrong.
	if(status == "Invalid session")
	{
		alert( StringTable.Code.outboxScreenInvalidSessionError );

		// Load the login screen to allow user to get a new session
		widgetMenu.activate( Menu.LOGIN_SCREEN );
	}
	else
		alert( StringTable.Code.outboxScreenDataError + " (" + status + ")" );
}

//----------------------------------------------------------------------------------------------------------------------
