(function () {
    var loadScript = function (url, callback) {

        var script = document.createElement("script");
        script.type = "text/javascript";

// If the browser is Internet Explorer.
        if (script.readyState) {
            script.onreadystatechange = function () {
                if (script.readyState == "loaded" || script.readyState == "complete") {
                    script.onreadystatechange = null;
                    callback();
                }
            };
// For any other browser.
        } else {
            script.onload = function () {
                callback();
            };
        }

        script.src = url;
        document.getElementsByTagName("head")[0].appendChild(script);

    };

    /* ----------------------------------------------------------------------------------- */
    var myAppJavaScript = function ($) {

        var app_url = 'https://loy.shopapps.site';

        if (BoldApps.Loyalties.shop.metafields.active == 0 || BoldApps.Loyalties.shop.metafields.callout_active == 0) {
            $('.bold-loyalties-callout-nav, .bold-loyalties-callout').html('');
            return false;
        }

// determine if callout should show
        var showCallout = getCookie('bold-loyalties-show-callout');

        if (BoldApps.Loyalties.customer) {

            $('.bold-loyalties-callout-nav, .bold-loyalties-callout').html('Loading...');

            var data = {
                ci: BoldApps.Loyalties.customer.id,
                uuid: BoldApps.Loyalties.customer.metafields.uuid,
                d: BoldApps.Loyalties.shop.domain,
                pd: BoldApps.Loyalties.shop.permanent_domain,
            };

            $.ajax({
                url: app_url + "/front_end/callout_text",
                type: "GET",
                dataType: "json",
                data: data
            }).then(function (data) {
                if (BoldApps.Loyalties.shop.metafields.callout_type === 'full_width') {
                    data.text += ' <a class="bold-loyalties-close" href="#">Close</a>';
                }
                data.text = data.text.replace('[available_points]', parseInt(data.available_points).toLocaleString());
                $('.bold-loyalties-callout-nav, .bold-loyalties-callout').html(data.text);
            }, function () {
                $('.bold-loyalties-callout-nav, .bold-loyalties-callout').html('');
            });
        }

        if (showCallout !== 'false') {
            $('.bold-loyalties-callout').show();
            $('.bold-loyalties-callout-tab').show();
        }

        if (BoldApps.Loyalties.CalloutSettings.fade_out_after && BoldApps.Loyalties.CalloutSettings.fade_out_after != 0) {
            setTimeout(function () {
                $('.bold-loyalties-callout-tab').fadeOut();
                $('.bold-loyalties-callout').fadeOut();
                setCookie("bold-loyalties-show-callout", false, 24);
            }, BoldApps.Loyalties.CalloutSettings.fade_out_after);
        }


        $('.bold-loyalties-callout').on('click', '.bold-loyalties-close', function () {
            $(this).parent().remove();
            setCookie("bold-loyalties-show-callout", false, 24);
        });

        function setCookie(c_name, value, exhours) {
            var exdate = new Date();
            exdate.setHours(exdate.getHours() + exhours);
            var c_value = escape(value) + ((exhours == null) ? "" : "; expires=" + exdate.toUTCString());
            document.cookie = c_name + "=" + c_value + "; path=/";
        }

        function getCookie(c_name) {
            var c_value = document.cookie;
            var c_start = c_value.indexOf(" " + c_name + "=");
            if (c_start == -1) {
                c_start = c_value.indexOf(c_name + "=");
            }
            if (c_start == -1) {
                c_value = null;
            }
            else {
                c_start = c_value.indexOf("=", c_start) + 1;
                var c_end = c_value.indexOf(";", c_start);
                if (c_end == -1) {
                    c_end = c_value.length;
                }
                c_value = unescape(c_value.substring(c_start, c_end));
            }
            return c_value;
        }

    };


    if ((typeof jQuery === 'undefined') || (parseInt(jQuery.fn.jquery) === 1 && parseFloat(jQuery.fn.jquery.replace(/^1\./, "")) < 9.1)) {
        loadScript('//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js', function () {
            jQuery191 = jQuery.noConflict(true);
            myAppJavaScript(jQuery191);
        });
    } else {
        myAppJavaScript(jQuery);
    }

})();
