var Button = { Button: function(options) { if(typeof options.cooldown == 'number') { this.data_cooldown = options.cooldown; } this.data_remaining = 0; if(typeof options.click == 'function') { this.data_handler = options.click; } var el = $('
') .attr('id', typeof(options.id) != 'undefined' ? options.id : "BTN_" + Engine.getGuid()) .addClass('button') .text(typeof(options.text) != 'undefined' ? options.text : "button") .click(function() { if(!$(this).hasClass('disabled')) { Button.cooldown($(this)); $(this).data("handler")($(this)); } }) .data("handler", typeof options.click == 'function' ? options.click : function() { Engine.log("click"); }) .data("remaining", 0) .data("cooldown", typeof options.cooldown == 'number' ? options.cooldown : 0); el.append($("
").addClass('cooldown')); if(options.cost) { var ttPos = options.ttPos ? options.ttPos : "bottom right"; var costTooltip = $('
').addClass('tooltip ' + ttPos); for(var k in options.cost) { $("
").addClass('row_key').text(_(k)).appendTo(costTooltip); $("
").addClass('row_val').text(options.cost[k]).appendTo(costTooltip); } if(costTooltip.children().length > 0) { costTooltip.appendTo(el); } } if(options.width) { el.css('width', options.width); } return el; }, setDisabled: function(btn, disabled) { if(btn) { if(!disabled && !btn.data('onCooldown')) { btn.removeClass('disabled'); } else if(disabled) { btn.addClass('disabled'); } btn.data('disabled', disabled); } }, isDisabled: function(btn) { if(btn) { return btn.data('disabled') === true; } return false; }, cooldown: function(btn) { var cd = btn.data("cooldown"); if(cd > 0) { milliseconds = cd * 1000; if (Engine.options.doubleTime){ milliseconds /= 2; } $('div.cooldown', btn).stop(true, true).width("100%").animate({width: '0%'}, milliseconds, 'linear', function() { var b = $(this).closest('.button'); b.data('onCooldown', false); if(!b.data('disabled')) { b.removeClass('disabled'); } }); btn.addClass('disabled'); btn.data('onCooldown', true); } }, clearCooldown: function(btn) { $('div.cooldown', btn).stop(true, true); btn.data('onCooldown', false); if(!btn.data('disabled')) { btn.removeClass('disabled'); } } };