﻿var Login = new function() {

    var sMode = 'None';


    this.SetMode = function(sNewMode) {

        sMode = sNewMode;


        var aElements = f.GetObject('divLogin').getElementsByTagName('*');

        for (var i = 0; i < aElements.length; i++) {
            if (aElements[i].className.indexOf('nl') != -1 || aElements[i].className.indexOf('bl') != -1 || aElements[i].className.indexOf('pr') != -1) {
                var bMatchNormalLogin = sMode == 'NormalLogin' && aElements[i].className.indexOf('nl') != -1;
                var bMatchBookingLogin = sMode == 'BookingLogin' && aElements[i].className.indexOf('bl') != -1;
                var bMatchPasswordRetrieve = sMode == 'PasswordRetrieve' && aElements[i].className.indexOf('pr') != -1;

                if (bMatchNormalLogin || bMatchBookingLogin || bMatchPasswordRetrieve) {
                    f.Show(aElements[i]);
                } else {
                    f.Hide(aElements[i]);
                }
            }
        }

    }


    // Login
    this.Validate = function() {

        var oValidator = new Validator();

        if (sMode == 'NormalLogin') {

            oValidator.AddValidation('txtLeadGuestEmail', Constants.LoginValidationEmailAddress, 'NotEmpty IsEmail');
            oValidator.AddValidation('txtLeadGuestPassword', Constants.LoginValidationPassword, 'NotEmpty');
        } else if (sMode == 'BookingLogin') {

            oValidator.AddValidation('txtBookingReference', Constants.LoginValidationBookingReference, 'NotEmpty');
            oValidator.AddValidation('txtSurname', Constants.LoginValidationLastName, 'NotEmpty');
        }


        if (oValidator.Validate()) {
            f.SetValue('hidSetModeTo', sMode);

            f.GetObject('btnLogin').disabled = true;
            Postback('Login', sMode);
        }

    }


    // Retrieve Password
    this.PasswordRetrieve = function() {

        var oValidator = new Validator();

        oValidator.AddValidation('txtLeadGuestEmail', Constants.LoginValidationEmailAddress, 'NotEmpty IsEmail');

        if (oValidator.Validate()) {
            this.oPasswordRetrieve.Go(f.GetValue('txtLeadGuestEmail'));
        }
    }


    this.oPasswordRetrieve = new WebService();
    this.oPasswordRetrieve.Go = function(EmailAddress) {
        var aParams = new Array(['EmailAddress', EmailAddress]);
        this.RunWebService('/webservices/support.asmx', 'http://intuitivesystems', 'PasswordRetrieve', aParams, this, false);
    }
    this.oPasswordRetrieve.Done = function(oXML) {
        var oReturn = this.GetTagValue(oXML, 'PasswordRetrieveResult');

        if (oReturn != 'Failed') {
            f.SetHTML('pLogin', Constants.LoginPleaseLogInWhenAble);
            Login.SetMode('NormalLogin');
        } else {
            FormHandler.ShowWarning(Constants.LoginCouldNotFindEmailAddress);
        }
    }

}
