﻿
(function ($) {

    var captchaLibraryLoaded = false;

    var captchas = [];

    function captcha(container, siteKey, verifyCallback) {

        this.container = container;
        this.siteKey = siteKey;
        this.verifyCallback = verifyCallback;
        this.recaptcha = null;

    }

    //Constructor
    $.fn.generalRecaptcha = function (options) {

        var cap = new captcha($(this), options.siteKey,options.verifyCallback);
        captchas.push(cap);

        if (captchaLibraryLoaded) {
            renderCaptcha(cap)
        }

    };

    //Private

    function renderCaptcha(captcha){
        captcha.recaptcha = grecaptcha.render(captcha.container[0], {
            sitekey: captcha.siteKey,
            callback: captcha.verifyCallback
        })
    }

    //Add global function for callback after recaptcha library loads
    window.recaptchaCallBack = function () {

        captchaLibraryLoaded = true;

        $.each(captchas, function (c) {

            var captcha = captchas[c];

            if (captcha.recaptcha == null) {
                renderCaptcha(captcha);
            }

        });
    }

})(jQuery);
