﻿//
// create closure
//
(function ($) {
    jQuery.fn.register = function (options) {
        var defaults = {
            overlay: null
        };
        var opts = $.extend(defaults, options);

        return this.each(function () {
            // current object
            var _this = this;
            var $this = $(this);

            var _form = $this;

            var _email = $('#register_email', _this);
            var _verificationCode = $('#register_verificationCode', _this);
            var _captcha = $('IMG.captcha', _this);

            var _errorMsg = $('#errorMsg', _this);

            var _button = $('INPUT[type=button]', _this);

            var _missEmailLink = $('#missingLink a', _this);

            var _notSignedUpLink = $('#signInLink a', _this);

            _button.bind("click", function (e) {
                // Validate the form
                _errorMsg.html("");
                var isValid = true;
                var missingLinkTriggered = false;

                _form.find(':input').each(function (i, item) {
                    if ($('#registerContainer').hasClass('resendTop') && item.name == 'agreeResident') {
                        // Don't validate
                        missingLinkTriggered = true;
                    } else {
                        isValid = (!$(item).valid()) ? false : isValid;
                    }
                });

                if (isValid) {
                    if (missingLinkTriggered == true) {
                        $('#signInLink').hide();
                    }
                    $this.trigger("processing");

                    var m = {};
                    m.Email = _email.val();
                    m.VerificationCode = _verificationCode.val();

                    // Call the webservice
                    cms.webservice.IMember.Register(m, function (r) {
                        if (r.length > 0) {
                            // Check if this is a redirect url
                            if (r.substr(0, 1) === "/" || r.substr(0, 4) === "http") {
                                document.location.href = r;
                            }
                            else {
                                _errorMsg.html(r);
                                _captcha.attr("src", _captcha.attr("src").split("?")[0] + "?" + (new Date().getTime()));
                                _verificationCode.val("");
                                $this.trigger("error");
                            }
                        }
                        else {
                            $this.trigger("completed");
                        }
                    });
                }
            });

            _missEmailLink.bind("click", function (e) {
                e.preventDefault();
                _this.ShowResendEmailForm();
            });
            _notSignedUpLink.bind("click", function (e) {
                e.preventDefault();
                $('#registerContainer').removeClass('resendTop');
                $('#registerContainer').addClass('signupTop');
                $('#register').removeClass('resendBottom');
                $('#register').addClass('signUpBottom');
                $('#missingLink').show();
                $('#signInLink').hide();
                $('li.agreeResident').show();
                $('#register label').removeClass('resend');
                $('#register label').addClass('signup');
                $('#signupSubTitle').show();
                $('#resendSubTitle').hide();
                $('#registerButton').removeClass('btn_resend');
                $('#registerButton').addClass('btn_signup');
                $('label.error').remove();
                $('#register_verificationCode').removeClass('error');
                $('#register_email').removeClass('error');
                $('#agreeTcs').removeClass('error');
            });

            this.ShowResendEmailForm = function () {
                $('#registerContainer').addClass('resendTop');
                $('#registerContainer').removeClass('signupTop');
                $('#register').addClass('resendBottom');
                $('#register').removeClass('signUpBottom');
                $('#signInLink').show();
                $('li.agreeResident').hide();
                $('#register label').addClass('resend');
                $('#register label').removeClass('signup');
                $('#signupSubTitle').hide();
                $('#resendSubTitle').show();
                $('#registerButton').addClass('btn_resend');
                $('#registerButton').removeClass('btn_signup');
                $('label.error').remove();
                $('#register_verificationCode').removeClass('error');
                $('#register_email').removeClass('error');
                $('#agreeTcs').removeClass('error');
                var _captcha = $('IMG.captcha', _this);
                _captcha.attr("src", _captcha.attr("src").split("?")[0] + "?" + (new Date().getTime()));
            }

        });
    };
    //
    // end of closure
    //
})(jQuery);


