/* join.js */
var Join = function()
{
    return {

        isCharNumeric: function(key)
        {
            return ((key >= 48) && (key <= 57));
        },

        isKeyNumeric: function(event)
        {
            if (window.event)   // IE
            {
                key = event.keyCode;
            }
            else
            {
                key = event.which;
            }
            return ((key >= 48) && (key <= 57));
        },

        isKeyBackspace: function(event)
        {
            if (window.event)   // IE
            {
                return (event.keyCode == 8);
            }
            return (event.which == 8);
        },
        
        
        ensureNumeric: function(event)
        {
            return this.isKeyNumeric(event);
        },

        ensureNumericOrBackspace: function(event)
        {
            return this.isKeyNumeric(event) || this.isKeyBackspace(event);
        },

        checkNumeric: function(field)
        {
            var cleanedField = "";
            for (var i=0; i < field.value.length; i++)
            {
                if (!this.isCharNumeric(field.value.charCodeAt(i)))
                {
                    alert("'Other' amount must be a whole number of pounds");
                    field.value = cleanedField;
                    return false;
                }
                cleanedField = cleanedField + field.value[i];
            }
            return true;
        },


        copyToOtherQuantity: function()
        {
            document.getElementById("otherQuantity").value = document.getElementById("quantityInput").value;
        },

        checkOtherQuantity: function()
        {
            if (document.getElementById("otherQuantity").checked)
            {
                this.checkNumeric(document.getElementById("otherQuantity"));
                this.copyToOtherQuantity();
            }
            return true;
        },

        findSelectedItemCode: function()
        {
            var items = document.getElementsByName("itemcode");
            for (var i = 0; i < items.length; i++)
            {
                if (items[i].checked)
                {
                    return items[i];
                }
            }
            return null;
        },

        findSelectedAmount: function()
        {
            var amounts = document.getElementsByName("quantity");
            for (var i = 0; i < amounts.length; i++)
            {
                if (amounts[i].checked)
                {
                    return amounts[i];
                }
            }
            return null;
        },

        checkAmount: function()
        {
            this.checkOtherQuantity();
            var selectedItemCode = this.findSelectedItemCode(); 
            var minimum = document.getElementById(selectedItemCode.value + "Minimum").value;
            var selectedAmount = this.findSelectedAmount();
            if (parseInt(selectedAmount) < parseInt(minimum))
            {
                alert("The minimum donation for " + selectedItemCode.value + " is £" + minimum
                        + ", but you have input £" + selectedAmount.value
                        + ". Please select at least the minimum donation.")
                return false;
            }
            return true;
        },

        selectOtherQuantity: function()
        {
            document.getElementById("otherQuantity").checked = true;
        },

        showDiv: function(divId)
        {
            var element = document.getElementById(divId);
            element.style.display = "block";
        },

        hideDiv: function(divId)
        {
            var element = document.getElementById(divId);
            element.style.display = "none";
        },

        showChoice: function(choice)
        {
            var choices = ["UKmembership", "EUmembership", "WorldMembership", "UKchorister"];
            for (var i = 0; i < 4; i++)
            {
                if (choice == choices[i])
                {
                    this.showDiv(choices[i]);
                }
                else
                {
                    this.hideDiv(choices[i]);
                }
            }
            if (! document.getElementById("otherQuantity").checked)
            {
                document.getElementById(choice + "Default").checked = true;
            }
        }
    }

}();



