//////////////////////////////////////////////////////////
// Name: ssSigninHandlers.js							//
// Description: Enables instructors to signin			//
// Dependency:	ssModalBox.js							//
// Functions: 	authenticatePost						//
//				authenticateResponse					//
//////////////////////////////////////////////////////////

// When document is ready
$(document).ready(function()
{
	// Setup signin modalbox
	$("#SSSigninLink").ssModalBox({
		"container": "SSMBSignin", 
		"handle": "SSMBSigninHeader", 
		"close": "SSMBSigninClose" 
	});
	$("#SSSigninLink").click(function(e)
	{
		// Display forgot password form
		$('#SSForgotPasswordLink').click(function(e) 
		{ 	
			$('#SSForgotPasswordContainer').show();
			$('#SSSiginContainer').hide();
		});
		
		// Display signin form
		$('#SSSignInLink').click(function(e) 
		{ 	
			$('#SSForgotPasswordContainer').hide();
			$('#SSSiginContainer').show();
		});
		
		// Listen for signin form submission
	    $('#SSSigninForm').submit(function(e)
	    {
	        // Prevent page reload
	        e.preventDefault();
	        
	        // Remove previous error messages
	        $('.SSFormError').empty();
			$('#SSMBGeneralErrors').hide();
			$('.SSBoxError').removeClass();
	    
	        // Send AJAX request
	        authenticatePost();
	    });
		
		// Listen for modal box cancel
		$('#SSMBSigninCancel').click(function(e) 
		{ 	
			// Close modal box
			$('#SSMBSigninClose').trigger('click');
		});
		
		// Listen for modal box close
		$('#SSMBSigninClose').click(function(e) 
		{ 	
			// Remove previous error messages and form values
	        $('.SSFormError').empty();
			$('#SSMBGeneralErrors').hide();
			$('.SSBoxError').removeClass();
			$('#SSMBUsername').val('')
			$('#SSMBUserpass').val('');
			$('#SSMBPasswordConfirmation').hide();
			
			$('#SSForgotPasswordContainer').hide();
			$('#SSSiginContainer').show();

			// Remove event handlers
			$('#SSForgotPasswordLink').unbind("click");
			$('#SSSignInLink').unbind("click");
			$('#SSSigninForm').unbind("submit");
			$('#SSMBSigninCancel').unbind("click");
			$('#SSMBSigninClose').unbind("click");
			$('#SSForgotPasswordForm').unbind("submit");
			$('#SSMBForgotPasswordCancel').unbind("click");
		});
		
		// Listen for forgot password form submission
	    $('#SSForgotPasswordForm').submit(function(event)
	    {
	        // Prevent page reload
	        event.preventDefault();
	        
	        // Remove previous error messages
	        $('.SSFormError').empty();
	    
	        // Send AJAX request
	        forgotPasswordPost();
	    });
		
		// Listen for modal box cancel
		$('#SSMBForgotPasswordCancel').click(function(e) 
		{ 	
			// Close modal box
			$('#SSMBSigninClose').trigger('click');
		});

	});
	
});

// Send Authenticate Request
function authenticatePost()
{
    // AJAX call
	$.ajax({
        type: "POST",
        url: "index.php?state=signin",
        dataType: "json",
        data: $('#SSSigninForm').serialize(),
        success: authenticateResponse
    });
	
	// Show indicator
	$('#SSMBIndicator').show();
	$('#SSMBCheck').hide();
}

// Receive Authenticate Response
function authenticateResponse(json)
{
   	// Check if successful
    if(json.status == 'success') { window.location = json.url; }
    
    // Check if failure
    if(json.status == 'failure')
    {
        // Hide indicator
		$('#SSMBIndicator').hide();
		$('#SSMBCheck').show();
        
        // Display errors
        if(json.error.username) { $('#SSMBUsernameError').html(json.error.username); $('#SSMBUsername').addClass("SSBoxError"); }
        if(json.error.userpass) { $('#SSMBUserpassError').html(json.error.userpass); $('#SSMBUserpass').addClass("SSBoxError"); }
		if(json.error.invaliduser) { $('#SSMBGeneralErrors').show(); $('#SSMBInvalidUserError').html(json.error.invaliduser); }
    }
}

// Send Forgot Password Request
function forgotPasswordPost()
{
    // AJAX call
	$.ajax({
        type: "POST",
        url: "index.php?state=forgotpassword",
        dataType: "json",
        data: $('#SSForgotPasswordForm').serialize(),
        success: forgotPasswordResponse
    });
	
	// Show indicator
	$('#SSMBForgotPasswordIndicator').show();
	$('#SSMBForgotPasswordCheck').hide();
}

// Receive Forgot Password Response
function forgotPasswordResponse(json)
{
   	// Check if successful
    if(json.status == 'success') 
    { 
    	// Display signin window
    	$('#SSForgotPasswordContainer').hide();
		$('#SSSiginContainer').show();
		
		$('#SSMBPasswordConfirmation').show();
		$('#SSMBPasswordConfirmation').html('Your username and password has been sent to: '+json.email);
    	
    }
    
    // Check if failure
    if(json.status == 'failure')
    {
        // Hide indicator
		$('#SSMBForgotPasswordIndicator').hide();
		$('#SSMBForgotPasswordCheck').show();
        
        // Display errors
        if(json.error.email) { $('#SSMBEmailError').html(json.error.email); $('#SSMBEmail').addClass("SSBoxError"); }
    }
}
