﻿$(document).ready(function()
{
	findABuddyModal();
});

// Modal for allowing users to share their calendar
// by email or buy facebook
function findABuddyModal()
{
	// Find A Buddy Modal
	$('#find-buddy-modal').dialog({
        autoOpen: false,
        close: function(event, ui)
        {
	    	$('#find-buddy-modal .validation .error p').hide();
	    	$('#email-buddy-form div.submit a').remove();
	    	$('#submit-buddy-form-btn').show();
	    	$('#email-buddy-form label.error').remove();
	    	$('#email-buddy-form input.error').removeClass('error');
        },
		modal: true,
        dialogClass: 'buddy-modal-popup'
    });
    
    // Facebook Buddy Modal
    $('#facebook-buddy-modal').dialog({
    	autoOpen: false,
    	close: function()
    	{
    		$('#invitations-have-sent').hide();
    		$('#send-facebook-invites-btn').show();
    	},
    	dialogClass: 'facebook-buddy-modal',
    	height: 512,
    	modal: true,
    	width: 404
    });
    
    // Invite a Buddy Thank You Modal
    $('#close-buddy-thank-you-modal').click(function(e)
    {
        e.preventDefault();
        
        $('#find-a-buddy-thank-you').dialog('close');
    });
    
    $('#find-a-buddy-thank-you').dialog({
        autoOpen: false,
        modal: true,
        dialogClass: 'modal-popup png-fix'
    });
	
	// Listening to click event on invite a friend buddy
	$('#invite-friend-btn').click(function(e)
	{
		e.preventDefault();
		
		// Reset buddy modal back to welcome page
		$('#find-buddy-modal .email-form').hide();
		$('#find-buddy-modal .welcome').show();
		
		// Open the find a buddy modal
		$('#find-buddy-modal').dialog('open');
	});
	
	$('#facebook-search-input').keyup(function()
	{
		if($(this).val() != '')
		{
			$('#clear-facebook-search').show();
		}
		else
		{
			$('#clear-facebook-search').hide();
		}
	});
	
	$('#clear-facebook-search').click(function(){
		$('#facebook-search-input').val('');
		$('#facebook-search-form').trigger('submit');
	});
	
	$('#facebook-search-form').submit(function()
	{
		var searchTerm = $('#facebook-search-input').val();
		
		SearchCurrentUsersFriends(searchTerm);
		
		return false;
	});
	
	$('#send-facebook-invites-btn').click(function(e)
	{
		e.preventDefault();
		
		SetInvitedFriends();
	});
	
	$('#send-invite-btn').click(function(e)
	{
		e.preventDefault();
		
		// Hide welcome screen and show email form
		$('#find-buddy-modal .welcome').hide();
		$('#find-buddy-modal .email-form').show();
	});
    
    // Attaching valifation to find buddy form
    $('#email-buddy-form').validate({
    	rules: {
    		yourNameInput: { required: true },
    		yourEmailInput: {
    			required: true,
    			email: true
    		},
    		yourFriendNameInput1: { required: true },
    		yourFriendEmailInput1: {
    			required: true,
    			email: true
    		}
    	},
    	messages : {
    		yourNameInput: { required: false },
    		yourEmailInput: {
    			required: false,
    			email: false
    		},
    		yourFriendNameInput1: { required: false },
    		yourFriendEmailInput1: {
    			required: false,
    			email: false
    		}
    	},
    	submitHandler: function(form)
    	{
    		$('#email-buddy-form').data('allowSend', true);
    	}
    });
    
    // Preventing form from refreshing the page
    $('#email-buddy-form').submit(function()
    {
    	if($('#email-buddy-form').data('allowSend') == true)
    	{
    		// Creating email object
    		emailObj = {};
    		
    		emailObj.yourName = $('#email-buddy-form input[name="yourNameInput"]').val();
    		emailObj.yourEmail = $('#email-buddy-form input[name="yourEmailInput"]').val();
    		emailObj.friendsNames = $('#email-buddy-form input[name="yourFriendNameInput1"]').val();
    		emailObj.friendsEmails = $('#email-buddy-form input[name="yourFriendEmailInput1"]').val();
    		emailObj.yourMessage = '';
    		
    		// Start validation on other buddy fields before sending off
    		var friendName2 = $.trim($('#yourFriendNameInput2').val());
    		var friendEmail2 = $.trim($('#yourFriendEmailInput2').val());
    		var friendName3 = $.trim($('#yourFriendNameInput3').val());
    		var friendEmail3 = $.trim($('#yourFriendEmailInput3').val());
    		var friendName4 = $.trim($('#yourFriendNameInput4').val());
    		var friendEmail4 = $.trim($('#yourFriendEmailInput4').val());
    		var allowSend = false;
    		
    		// Create regular expression for testing emails
    		var emailReg = "^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$";
			var regex = new RegExp(emailReg);
    		
    		if(friendName2 != '')
    		{
    			if(!regex.test(friendEmail2))
    			{
    				$('#yourFriendEmailInput2').addClass('error').blur(function()
    				{
    					if(regex.test($(this).val()))
    					{
    						$(this).removeClass('error');
    						
    						emailObj.friendsNames += friendName2 + ',';
    						emailObj.friendsEmails += friendEmail2 + ',';
    					}
    				});
    				
    				return false;
    			}
    		}
    		
    		if(friendName3 != '')
    		{
    			if(!regex.test(friendEmail3))
    			{
    				$('#yourFriendEmailInput3').addClass('error').blur(function()
    				{
    					if(regex.test($(this).val()))
    					{
    						$(this).removeClass('error');
    						
    						emailObj.friendsNames += friendName3 + ',';
    						emailObj.friendsEmails += friendEmail3 + ',';
    					}
    				});
    				
    				return false;
    			}
    		}
    		
    		if(friendName4 != '')
    		{
    			if(!regex.test(friendEmail4))
    			{
    				$('#yourFriendEmailInput4').addClass('error').blur(function()
    				{
    					if(regex.test($(this).val()))
    					{
    						$(this).removeClass('error');
    						
    						emailObj.friendsNames += friendName4 + ',';
    						emailObj.friendsEmails += friendEmail4 + ',';
    					}
    				});
    				
    				return false;
    			}
    		}
    		
    		// Building email object to send off
    	    var email = new Array(emailObj.yourEmail, emailObj.yourName, emailObj.friendsEmails, emailObj.friendsNames, emailObj.yourMessage);
    	    email = $.toJSON(email);
    	    
    	    // Send email to backend for inviting friends
    	    $.ajax({
	                url: '/my-challenge/invite-a-friend/',
	                type: 'POST',
	                data: email,
	                dataType: 'JSON',
	                contentType: "application/json; charset=utf-8",
	                beforeSend: function()
	                {
	                	$('#email-buddy-form').data('allowSend', false);
	                },
	                success: function(data)
	                {
	                	var returnObject = $.evalJSON(data);
	                	
	            	    // Double checking to make sure everything went through
	            	    if(returnObject.Result['ReturnCode'] == 0)
	            	    {
	            	    	// Clear out object and form
	            	    	$('#email-buddy-form input').val('');
	            	    	emailObj.yourName = '';
	    					emailObj.yourEmail = '';
	    					emailObj.yourMessage = '';
	    					emailObj.friendsNames = '';
	    					emailObj.friendsEmails = '';
	    					
	    					// Hide send button and replace with my challenge link
				    		$('#find-buddy-modal').dialog('close');
				    		
				    		// Show thank you modal
				    		$('#find-a-buddy-thank-you').dialog('open');
	            	    }
	            	    else
	            	    {
	            	    	$('#find-buddy-modal .validation .error p').show();
	            	    }
	                }
	        	});
    	}
    	
    	return false;
    });
}