/**
 * The login controler
 * @param {$scope} $scope The $scope angular service
 * @param {$sce} $sce The $sce angular service
 * @param {$http} $http The $http angular service
 * @param {Identity} The Identity service

 */
mainApp.controller('loginCtrl', ['$scope','$sce','Identity', function ($scope,$sce, Identity)
{
	// Check for login and define default states
	if(!Identity.isAlreadyLogin()){
		$('#loginModal').modal({backdrop: 'static', keyboard: false});
	}

	// Manager logout event
	$scope.$on('logoutEvent', function(){
		$('#loginModal').modal({backdrop: 'static', keyboard: false});
	});


	
	// Hide loading button and message alert
    $('#loadingLoginButton').hide();
    $('#failedToLoginAlert').hide();

	
	// Defined function for login
    $scope.loginAction=function(){
		
		// Begin login state for template
        $('#loginButton').hide();
        $('#loadingLoginButton').show();
        $('#failedToLoginAlert').hide();

		// Get data from templates
        var username=$("#loginFormUsername").val();
        var password=$("#loginFormPassword").val();
        var projectname=$("#loginFormProjectname").val();

		// Function to call to handle result
		var responseCallback=function(response){

            if(response.status!==0){
				// Set reason of fail
                $scope.failReason=response.failReason;

				// Display the error
                $('#failedToLoginAlert').show();
            }
            else {
				// Else the user is online !
				$('#loginModal').modal('hide');				
            }

            // Reset button state
            $('#loginButton').show();
            $('#loadingLoginButton').hide();	
		}
		
		// Try to login
        Identity.login(username, password, projectname, responseCallback);
    };
	
}]);