    /*
	    LIBRARY:		RegisterValidate
	    CREATED:		2008-05-12
	    AUTHOR:			BP
	    PURPOSE:		Attaches client-side validation for registration form
	    DEPENDENCIES:	mm_main, yahoo-dom-event, yahoo animation
    */

    /*
    NAME:
	    registervalidate

    DESCRIPTION:
	    Provides functionality to open pop-up windows and set up
	    linkages to allow objects to open popup windows when clicked

    USAGE:
	    Place the XHTML shown in the example on the page and make a call to the object

		    YAHOO.Muscle.registervalidate.init();

	    The XHTML must be marked up with the following class definitions
		    Add 'regValidator' class to an object, along with a known window sizing class (if required)

    NOTES:
	    For submit button on register page, will only work with the registration validation screen.
	    Also checks the state of the shipping address accordion and updates the input values to contain the
	    billing address details if this is closed (for cleaner submitting)

    EXAMPLES :

	    <input type="image" src="/Images/Navigation/button_save.gif" value="Register" name="btmSubmit" id="btnSubmit" class="regValidator" />

    ********/

    var submitError = new Array('Please complete all fields marked *','The password and password confirmation do not match','The password is too short.');


    YAHOO.Muscle.registervalidate = {
        init: function() {
            this.attachHandleControl($('RegisterForm'));

            var pcChecks = Dom.getElementsByClassName("postCodeChecker");

            if (pcChecks.length > 0) {
                for (var i = 0; i < pcChecks.length; i++) {
                    this.attachKeyEventControl(pcChecks[i]);
                }
            }
        },
        attachHandleControl: function(handle) {
            Evt.addListener(handle, "submit", this.submitHandler);
        },
        submitHandler: function(e) {
            var errorOccurred = false;
            var eventFrom = Evt.getTarget(e);
            var requirePostCode = true;

            if (Dom.hasClass(eventFrom, 'fullReg')) {
                $('RegisterForm').action = '/account/register.html'

                // Check to see if the form requires the postcode - if the parent p does not have a class 'frmMan'
                if (!Dom.hasClass(Dom.getAncestorByTagName("BillingPostcode", "p"), "frmMan")) {
                    requirePostCode = false;
                }

                if (document.RegisterForm.loginname.value == "" || document.RegisterForm.password.value == "" || document.RegisterForm.AccountConfPass.value == "" || document.RegisterForm.Sport.selectedIndex <= 0 || document.RegisterForm.Goal.selectedIndex <= 0 || document.RegisterForm.BillingFirstName.value == "" || document.RegisterForm.BillingLastName.value == "" || (document.RegisterForm.BillingPostcode.value == "" && requirePostCode) || document.RegisterForm.BillingAddress1.value == "" || document.RegisterForm.BillingAddress3.value == "" || document.RegisterForm.BillingPhone.value == "") {
                    alert(submitError[0]);
                    errorOccurred = true;
                } else if (document.RegisterForm.password.value != document.RegisterForm.AccountConfPass.value) {
                    alert(submitError[1]);
                    errorOccurred = true;
                } else if (document.RegisterForm.password.value.length < 6) {
                    alert(submitError[2]);
                    errorOccurred = true;
                }

                if (!errorOccurred) {
                    if (!$('ShippingCheck').checked) {
                        document.RegisterForm.ShippingTitle.selectedIndex = document.RegisterForm.BillingTitle.selectedIndex;
                        document.RegisterForm.ShippingFirstName.value = document.RegisterForm.BillingFirstName.value;
                        document.RegisterForm.ShippingLastName.value = document.RegisterForm.BillingLastName.value;
                        document.RegisterForm.ShippingAddress1.value = document.RegisterForm.BillingAddress1.value;
                        document.RegisterForm.ShippingAddress2.value = document.RegisterForm.BillingAddress2.value;
                        document.RegisterForm.ShippingAddress3.value = document.RegisterForm.BillingAddress3.value;
                        document.RegisterForm.ShippingAddress4.value = document.RegisterForm.BillingAddress4.value;
                        document.RegisterForm.ShippingCountry.selectedIndex = document.RegisterForm.BillingCountry.selectedIndex;
                        document.RegisterForm.ShippingPostcode.value = document.RegisterForm.BillingPostcode.value;
                        document.RegisterForm.ShippingPhone.value = document.RegisterForm.BillingPhone.value;
                    } else {
                        if (document.RegisterForm.ShippingFirstName.value == "" || document.RegisterForm.ShippingLastName.value == "" || (document.RegisterForm.ShippingPostcode.value == "" && requirePostCode) || document.RegisterForm.ShippingAddress1.value == "" || document.RegisterForm.ShippingAddress3.value == "" || document.RegisterForm.ShippingPhone.value == "") {
                            alert(submitError[0]);
                            errorOccurred = true;
                        }
                    }
                }

                if (errorOccurred) {
                    Evt.preventDefault(e)

                }
            }

            if (Dom.hasClass(eventFrom, 'catReg')) {
                // Catalogue Request
                $('RegisterForm').action = '/toolsanddownloads/requestacatalogue.html'

                if (document.RegisterForm.loginname.value == "" || document.RegisterForm.Sport.selectedIndex <= 0 || document.RegisterForm.Goal.selectedIndex <= 0 || document.RegisterForm.BillingFirstName.value == "" || document.RegisterForm.BillingLastName.value == "" || document.RegisterForm.BillingPostcode.value == "" || document.RegisterForm.BillingAddress1.value == "" || document.RegisterForm.BillingAddress3.value == "") {
                    alert(submitError[0]);

                    Evt.preventDefault(e);
                }
            }
        },

        attachKeyEventControl: function(handle) {
            Evt.addListener(handle, "keyup", this.pressHandler);
        },
        pressHandler: function(e) {
            var targetValue = '';
            var targetPicker = '';
            var eventFrom = Evt.getTarget(e);
            var entryValue = eventFrom.value.toLowerCase();

            if (Dom.hasClass(eventFrom, 'billAddress')) {
                targetPicker = 'BillingCountry';
            }
            if (Dom.hasClass(eventFrom, 'shipAddress')) {
                targetPicker = 'ShippingCountry';
            }

            if (entryValue.substring(0, 2) == 'je') {
                targetValue = '71'
            }
            if (entryValue.substring(0, 2) == 'gy') {
                targetValue = '56';
            }
            if ((entryValue.substring(0, 3) == 'b.f') || (entryValue.substring(0, 3) == 'bfp')) {
                targetValue = '1';
            }

            if (targetValue != '') {
                for (var n = 0; n < $(targetPicker).options.length; n++) {
                    if ($(targetPicker).options[n].value == targetValue) {
                        $(targetPicker).options[n].selected = true;
                    }
                }
                $(targetPicker).disabled = true;
            }
            else {
                $(targetPicker).disabled = false;
            }
        }
    };

    Evt.onDOMReady( function (e) {
	    // Set up registration
	    YAHOO.Muscle.registervalidate.init();
    });


