﻿var Submit = function (button, requestName) {
    this.button = button;
    this.onInit();
    var submit = this;
    button.bind('click', function () {
        submit.showAjaxPreloader();
        //hide ajax loading if something wrong after 20 sec
        setTimeout(function () {
            submit.hideAjaxPreloader();
        }, 20000);
    });
    Request.named(requestName).addRequestCompleted("hideAjaxLoading", function () {
        submit.hideAjaxPreloader();
    });
}

Submit.prototype = {

    button: null,

    getButtonText: function () {
        return this.button.find('span')[0];
    },

    getAjaxPreLoader: function () {
        return this.button.find('#ajax-loader');
    },

    getSubmitId: function () {
        return this.button.attr('id');
    },


    showAjaxPreloader: function () {
        var preloader = this.getAjaxPreLoader();
        var btnText = this.getButtonText();
        $(btnText).hide();
        $(preloader).show();
        $("#" + this.getSubmitId()).attr("disabled", "true");
    },

    hideAjaxPreloader: function () {
        var preloader = this.getAjaxPreLoader();
        var btnText = this.getButtonText();
        $(btnText).show();
        $(preloader).hide();
        $("#" + this.getSubmitId()).removeAttr("disabled");
    },

    onInit: function () {
        var buttonWidth = $(this.button).width();
        var buttonHeight = $(this.button).height();
        var preloader = this.getAjaxPreLoader();
        var preloaderWidth = 71;
        var margin = (buttonWidth - preloaderWidth) / 2;
        if (margin >= 5) { //negative margin break jquery in ie
            preloader.find('span').css("padding-left", margin - 5 + "px");
            preloader.find('span').css("padding-right", margin - 5 + "px");
        }
    }
}
