﻿function PreventDefaultAction(e) {
    
    if (typeof(e) != 'undefined') {
        alert(e);
        e.preventDefault();
        alert(e);
    }
}

function OpenModal(targetModalID, e) {
    
    var jQueryTargetModalID;

    //PreventDefaultAction(e);    
    
    jQueryTargetModalID = '#' + targetModalID;
    
    $(jQueryTargetModalID).modal({ persist: true });
}

function GetMatchingFormElements(baseTargetID)
{
   return $('body').filter(
        function()
        {
            var id = $(this).attr('id');
        
            return id.match("([A-Za-z0-9_\-]+)?" + baseTargetID);
        }
    );
}

function MutuallyExclusiveCheckbox(sender, baseTargetID)
{
    var checkboxes;
    
    // if it's unchecked, we don't care
    if (!sender.checked)
    {
        return;
    }
    
    checkboxes = GetMatchingFormElements(baseTargetID);
    
    // uncheck all the matching checkboxes
    for (var i = 0; i < checkboxes.length; i++)
    {
        if (sender != checkboxes[i])
        {
            checkboxes[i].checked = false;
        }
    }
}

function AddFriendAsMailRecipient(targetID, sender, e)
{
    var recipientsText, recipients;
    var targetJQueryID;
    var newRecipient;
	var unique;
	
	PreventDefaultAction(e);
    
    targetJQueryID = '#' + targetID;
    
    recipientsText = jQuery.trim($(targetJQueryID).val());
    
    newRecipient = sender.html();
    
    // firstly ensure the name isn't already in the list
    recipients = recipientsText.split(',');
	
	unique = true;
    
    for (var i = 0; i < recipients.length; i++)
    {	
        if (jQuery.trim(recipients[i]) == newRecipient)
        {
            unique = false;
        }
    }
    
	if (unique)
	{	
	    if (recipientsText.length > 0 && recipientsText[recipientsText.length - 1] != ',')
	    {
	        recipientsText += ', ';
	    }
		
	    recipientsText += newRecipient;
		
		$(targetJQueryID).val(recipientsText);
	}
}

function ResponseMessageModal(targetModalID, source, e)
{
    OpenModal(targetModalID, e);
}

function AddFriendConfirmationModal(targetModalID, source, e) {

    OpenModal(targetModalID, e);
}

function PasswordStrengthMeter_AddWatch(targetFieldID, meterPanelID)
{
    var jQueryTargetFieldID = '#' + targetFieldID;
    var jQueryMeterPanelID = '#' + meterPanelID;

    $(jQueryTargetFieldID).keyup(
        function(e)
        {
            var strengthCounter = 0, passwordStrength;
            var fieldValue;
            var reSpecialChars, reDigits;
            var strengthDescription;
            
            if (e.keyCode == 16 || e.keyCode == 46 || e.keyCode == 8) // shift || delete || backspace
            {
                return;
            }
            
            fieldValue = $(jQueryTargetFieldID).val();
            
            reSpecialChars = new RegExp(/[^A-Za-z0-9]+/);
            reDigits = new RegExp(/[0-9]+/);
            
            strengthDescription = new Array();
            strengthDescription[0] = "Weakest";
            strengthDescription[1] = "Weak";
            strengthDescription[2] = "Mediocre";
            strengthDescription[3] = "Strong";
            strengthDescription[4] = "Strongest";
            
            alert("fieldValue: " + fieldValue);
            
            // min length
            if (fieldValue.length > 6)
            {
                strengthCounter++;
            }
            
            // lowercase and uppercase
            if (fieldValue.length > 0 && fieldValue != fieldValue.toLowerCase())
            {                    
                strengthCounter++;
            }
            
            // special chars
            if (fieldValue.match(reSpecialChars))
            {
                strengthCounter++;
            }
            
            // digits
            if (fieldValue.match(reDigits))
            {
                strengthCounter++;
            }
            
            passwordStrength = Math.round((strengthCounter / (strengthDescription.length - 1)) * 100);
            
            $(jQueryMeterPanelID).css("width", passwordStrength + "%").html(strengthDescription[strengthCounter]);
        }
    );   
}

function SelectMessageBoxMessages(cb, messageCbClass)
{
    if ($(cb).is(':checked'))
    {
        $('#lblSelectAllMessages').html('Deselect All');
    }
    else
    {
        $('#lblSelectAllMessages').html('Select All');
    };
    
    $('.' + messageCbClass).attr('checked', $(cb).is(':checked'));
}

// on load actions
$(document).ready(
    function()
    {
		/*
	    $(".mail .compose .contacts ul li a").click(
	        function() 
	        {
		        var input = $(".mail .compose .form li input:first");
		        var array = (input.val() != "") ? input.val().split(", ") : new Array();

		        array.push($(this).text());

		        input.val(array.join(", "));

		        return false;
	        }
	    );
		*/
		
    }
);