
//----------------------------------------------------------------------------------------------------------------------

function LoginScreen() {

	// Get the login button element and assign an 'onclick' event to it.
	var self = this;
	var loginButton = document.getElementById( "login_button" );
	loginButton.onclick = function() {
		 self.onLoginClicked();
	};
	
	// Get all the UI elements that we can interact with.
	this.tbUsername = document.getElementById( "login_username" );
	this.tbPassword = document.getElementById( "login_password" );
	this.cbRememberMe = document.getElementById( "login_remember_me" );
	
	// Click handling via styles for touch screens.
	this.cbRememberMe.onclick = function() {
		Helper.handleCustomControlClick( self.cbRememberMe );
	};	
}

//----------------------------------------------------------------------------------------------------------------------

LoginScreen.prototype.onActivated = function() {

	// Check if any credentials were stored - if they were, load them
	// up and prefill the screen.
	var rememberMe = widget.preferenceForKey( LoginScreen.KEY_REMEMBER_ME );	
	
	if ( rememberMe == "true" ) {
		
		// Load up the rest; username and password.
		var username = widget.preferenceForKey( LoginScreen.KEY_USERNAME );
		var password = widget.preferenceForKey( LoginScreen.KEY_PASSWORD );

		// Assign to UI controls. Also check if username and passwords are not null;
		// the reason for this is that the user can also check the Remember Me checkbox
		// on the settings page.
		if ( username != null ) {
			this.tbUsername.value = username;	
		}
		if ( password != null ) {
			this.tbPassword.value = password;
		}		
		this.cbRememberMe.checked = true;
		
		// We need to update our custom checkbox to reflect the checked state manually.
		Helper.handleCustomControlClick( this.cbRememberMe );		
	} else {
		this.tbUsername.value = "";	
		this.tbPassword.value = "";
		this.cbRememberMe.checked = false;		
		
		// We need to update our custom checkbox to reflect the checked state manually.
		Helper.handleCustomControlClick( this.cbRememberMe );
	}
}

//----------------------------------------------------------------------------------------------------------------------

LoginScreen.prototype.loginIfPossible = function(){
	var username = this.tbUsername.value;
	var password = this.tbPassword.value;
	var rememberMe = this.cbRememberMe.checked;

	// If username and password are provided then login automatically.
	if ( rememberMe && username && username.length && password && password.length ) {
		this.onLoginClicked();
	}	
}

//----------------------------------------------------------------------------------------------------------------------

LoginScreen.prototype.onLoginClicked = function() {

	var username = this.tbUsername.value;
	var password = this.tbPassword.value;
	var rememberMe = this.cbRememberMe.checked;
			
	// Save the data to the storage if the user checked "Remember Me".
	widget.setPreferenceForKey( rememberMe.toString(), LoginScreen.KEY_REMEMBER_ME );

	// If "Remember Me" is unchecked, the username and password are cleared because
	// default values for username and password values are null.
	widget.setPreferenceForKey( rememberMe ? username : null, LoginScreen.KEY_USERNAME );
	
	// Store password in clear
	widget.setPreferenceForKey( rememberMe ? password : null, LoginScreen.KEY_PASSWORD );
	
	// Add event listeners
	var self = this;
	fbService.onSuccess = function( response ) { self.onFBServiceResponse( response ) }
	fbService.onError = function( status ) { self.onFBServiceError( status ) }

	// Call login service method.
	fbService.login( username, password );
}

//----------------------------------------------------------------------------------------------------------------------

LoginScreen.prototype.onFBServiceResponse = function( response ) {
	
	if(response.retcode != undefined) {
		if(parseInt(response.retcode) == 1)
			this.onFBServiceError(response.body);
		else
		{
			LOGIN_SESSION_ID = response.body; //save session ID for further calls
			LOGIN_USER = response.user; //save user for further calls

			// Load startup page
			Helper.activateHomeScreen();
		}
	}
	else
		alert( StringTable.Code.fatalAPIError );
}

//----------------------------------------------------------------------------------------------------------------------

LoginScreen.prototype.onFBServiceError = function( status ) {

	// Alert the user that something has gone wrong.
	alert( StringTable.Code.loginScreenDataError + " (" + status + ")" );
}

//----------------------------------------------------------------------------------------------------------------------

LoginScreen.KEY_USERNAME = "com.fatbookie.widget.username";
LoginScreen.KEY_PASSWORD = "com.fatbookie.widget.password";
LoginScreen.KEY_REMEMBER_ME = "com.fatbookie.widget.remember_me";

//----------------------------------------------------------------------------------------------------------------------

