jQuery(document).ready(function () { VisualToolsPromoBox.init(); });

var VisualToolsPromoBox = function () {

    var $WidgetContainer = null;

    var Init = function () {

        $WidgetContainer = $('.widget-promotion-box-container');
        if ($WidgetContainer.length == 1) {

            initControls();

        }
        
    };

    var InitAjax = function () {

        Init();

    };

    var initControls = function () {

        VisualToolsApp.initAjax('PromotionForm');

        $WidgetContainer.find('input.promotion-code-input').unbind('focus');
        $WidgetContainer.find('input.promotion-code-input').focus(function () {

            var form = $(this).closest('form');
            if (form.length == 1) {

                if ($(form).hasClass('no-focus') == true) {
                    $(form).removeClass('no-focus');
                }

            }

            if ($(this).hasClass('has-error') == true) {

                $(this).val('');
                $(this).removeClass('has-error');

            }

        });

        $WidgetContainer.find('input.promotion-code-input').unbind('blur');
        $WidgetContainer.find('input.promotion-code-input').blur(function () {

            var form = $(this).closest('form');
            if (form.length == 1) {

                if ($(this).val() == '') {

                    if ($(form).hasClass('no-focus') == false) {
                        $(form).removeClass('no-focus').addClass('no-focus');
                    }

                }
                
            }

        });

        $(document).on("OnBeforeSend", function (event, form) {

            if ($(form).attr('id') == 'PromotionForm') {
                $WidgetContainer.find('.col-promo-code-input .form-group .input-group').append('<div class="promo-code-loading"></div>');
            }

        });

        $(document).on("OnRequestSuccess", function (event, result, form) {

            if ($(form).attr('id') == 'PromotionForm') {
                PromotionForm_OnRequestSuccess(event, result, form);
            }

        });

        $(document).on("OnRequestComplete", function (event, form) {
            if ($(form).attr('id') == 'PromotionForm') {
                $WidgetContainer.find('.col-promo-code-input .form-group .input-group .promo-code-loading').remove();
            }

        });

    };


    /* Response - START */

    var PromotionForm_OnRequestSuccess = function (event, result, form) {

        var i_result = 0;
        var s_error = '';

        if (result != null) {

            i_result = parseInt(result);
            if (isNaN(i_result) == true) i_result = 0;

            if (i_result == 0) {
                window.location.href = VisualToolsUtility.getLanguagePrefix() + '/review-order';
            }
            else {

                s_error = $WidgetContainer.find('.col-promo-code-input .form-group .input-group input').data('val-invalid-code');

                $WidgetContainer.find('.col-promo-code-input .form-group .input-group input').removeClass('has-error').addClass('has-error');
                $WidgetContainer.find('.col-promo-code-input .form-group .input-group input').val(s_error);

            }
        }

    };

    /* Response - END */


    /* Utility - START */

    var getPromoCode = function () {

        var value = '';

        try {
            value = $WidgetContainer.find('input.promotion-box-input').val();
        }
        catch (ex) {
            value = '';
        }

        return (value);

    };

    /* Utility - END */


    return {

        init: function () { Init(); },

        initAjax: function () { InitAjax(); }

    };

}();