/*!
 * reCaptcha2 add-on
 * This add-ons shows and validates a Google reCAPTCHA v2
 *
 * @link        http://formvalidation.io/addons/reCaptcha2/
 * @license     http://formvalidation.io/license/
 * @author      https://twitter.com/formvalidation
 * @copyright   (c) 2013 - 2015 Nguyen Huu Phuoc
 * @version     v0.3.0, built on 2015-03-25 5:48:49 PM
 */
!function(a){FormValidation.AddOn.reCaptcha2={html5Attributes:{element:"element",language:"language",message:"message",sitekey:"siteKey",theme:"theme",timeout:"timeout"},CAPTCHA_FIELD:"g-recaptcha-response",CAPTCHA_TIMEOUT:120,init:function(b,c){var d=this,e="undefined"==typeof window.reCaptchaLoaded?function(){}:window.reCaptchaLoaded;window.reCaptchaLoaded=function(){e(),grecaptcha.render(c.element,{sitekey:c.siteKey,theme:c.theme||"light",callback:function(){b.updateStatus(d.CAPTCHA_FIELD,b.STATUS_VALID),setTimeout(function(){b.updateStatus(d.CAPTCHA_FIELD,b.STATUS_INVALID)},1e3*(c.timeout||d.CAPTCHA_TIMEOUT))}}),setTimeout(function(){d._addCaptcha(b,c)},3e3)};var f="//www.google.com/recaptcha/api.js?onload=reCaptchaLoaded&render=explicit"+(c.language?"&hl="+c.language:"");if(0===a("body").find('script[src="'+f+'"]').length){var g=document.createElement("script");g.type="text/javascript",g.async=!0,g.defer=!0,g.src=f,document.getElementsByTagName("body")[0].appendChild(g)}},_addCaptcha:function(a,b){var c=this;a.getForm().formValidation("addField",c.CAPTCHA_FIELD,{excluded:!1,validators:{callback:{message:b.message,callback:function(a){return""!==a}}}})}}}(jQuery);
// Sign In view model
var signInVM = new function () {
    var self = this;
    var form = $('#SignInForm');
    var signingIn = false;

    // Properties
    self.email = ko.observable('', { persistKey: 'SignIn_Email' });
    self.captchaType = ko.observable(0, { persistKey: 'CaptchaType' });

    // Methods
    self.validate = function () {
        form.formValidation('validate');
        return form.data('formValidation').isValid();
    };

    self.signIn = function () {
        if (!signingIn) {
            if (self.captchaType() == 1 || self.validate()) {
                $('#SignInModal').modal('hide');

                signingIn = true;

                var captchaResponse = grecaptcha.getResponse();
                if (self.captchaType() == 1)
                    captchaResponse = $('#adcopy_challenge').val() + '|' + $('#adcopy_response').val();

                callAPI('security', 'SignIn', { email: self.email, captchaResponse: captchaResponse }, 'Sign In', 'Signing in',
                    function (response) {
                        if (response.result) {
                            window.location.href = "faucet";
                        }
                        else {
                            showMessageModal('Sign in', response.resultHtml, response.result);
                        }
                    }, null,
                    function () {
                        grecaptcha.reset();
                        signingIn = false;
                    });
            };
        }
    };
};

$(document).ready(function () {
    // Apply bindings
    ko.applyBindings(signInVM, $('#SignInModal')[0]);

    // Set up form validation
    $('#SignInForm').formValidation({ framework: 'bootstrap4' });    

    // Check for any automatic actions
    var match = window.location.pathname.match(/.*\/([a-zA-Z]+)/);
    if (match != null) {
        var action = match[1];
        if (action != null)
            switch (action.toLowerCase()) {
                case 'signin':
                    if ($.querystring['email']) signInVM.email($.querystring['email']);
                    $('#SignInModal').modal('show');
                    break;
                case 'contactus':
                    $('#ContactModal').modal({ show: true, remote: 'contact.htm' });
                    break;
                case 'termsofservice':
                    $('#TermsModal').modal({ show: true, remote: 'terms.htm' });
                    break;
                case 'privacypolicy':
                    $('#PrivacyModal').modal({ show: true, remote: 'privacy.htm' });
                    break;
            }
    }
});

$(document).on('shown.bs.modal', function (e) {
    if (e.target.id == 'SignInModal' && signInVM.email() && signInVM.email().length > 0) {
        $('#SignInPasswordInput', e.target).focus().select();
    }
});
