X-Git-Url: https://dev.renevier.net/?a=blobdiff_plain;f=public%2Fjs%2Futils.js;h=85fe57a6acac89af4619ecaef3d3912d95ebc18e;hb=c7c35fba8c1ded1e4d6e04a3c9e2082ad9ace60d;hp=d59a112736ce89d77e79b00c78b9de699c3f7e4c;hpb=429ae1e23517d82c022fc66df26b05c9da7f8b5e;p=syj.git diff --git a/public/js/utils.js b/public/js/utils.js index d59a112..85fe57a 100644 --- a/public/js/utils.js +++ b/public/js/utils.js @@ -30,6 +30,36 @@ var CloseBtn = Class.create({ } }); +var Toggler = Class.create({ + initialize: function(target, options) { + options = Object.extend({}, options); + target = $(target).hide(); + + var openIcn = options.openIcn || 'icons/bullet_arrow_right.png', + closeIcn = options.closeIcn || 'icons/bullet_arrow_down.png'; + + this.element = new Element("img", { src: openIcn }) + .setStyle({ border: 'none', // in firefox, in image inside an anchor has a border + verticalAlign: "middle"}); + + this.element.observe('click', function(evt) { + if (target.visible()) { + evt.target.src = openIcn; + target.hide(); + } else { + evt.target.src = closeIcn; + target.show(); + } + evt.stop(); + }); + + if (options.initialShow) { + target.show(); + this.element.src = closeIcn; + } + } +}); + var Deck = Class.create({ initialize: function(elt, options) { this.element = $(elt); @@ -182,11 +212,37 @@ Element.addMethods('form', { reqoptions.method = this.method; } + if (reqoptions.onFailure) { + reqoptions.onFailure = reqoptions.onFailure.wrap(function(proceed, transport, json) { + form.enable(); + proceed(transport, json); + }); + } else { + reqoptions.onFailure = function() { + form.enable(); + }; + } + + if (reqoptions.onSuccess) { + reqoptions.onSuccess = reqoptions.onSuccess.wrap(function(proceed, transport, json) { + form.enable(); + proceed(transport, json); + }); + } else { + reqoptions.onSuccess = function() { + form.enable(); + }; + } + new Ajax.TimedRequest(action, options.delay || 20, reqoptions); if (Object.isFunction(options.postsubmit)) { options.postsubmit(this); } + Form.getElements(form).each(function(elt) { + elt.blur(); + elt.disable(); + }); }); },