jQuery.fn.initConfirmer=function(E){if(!E){E=[]}E=jQuery.extend({initialText:"PLEASE SET .initialText='Button Label'",confirmText:"Confirm: "+E.initialText,timeout:3000,onconfirm:null,ontimeout:null,onactivate:null,classInitial:"",classActivated:"",debuggering:false},E);var D=null;function A(F){if(D){D.prepend("Confirmer debug: "+F+"<br/>")}}if(E.debuggering){this.after("<div id='ConfirmerDebugDiv'>Confirmer debugging area</div>");D=jQuery("#ConfirmerDebugDiv");D.css("border","1px dashed #000");A("debugging activated.")}function B(I,H){var G=this;G.target=I;G.opts=H;G.timerID=null;var F={initial:0,waiting:1};G.state=F.initial;G.target.html(G.opts.initialText);G.setClasses=function(J){if(J){if(G.opts.classActivated){G.target.addClass(G.opts.classActivated)}if(G.opts.classInitial){G.target.removeClass(G.opts.classInitial)}}else{if(G.opts.classInitial){G.target.addClass(G.opts.classInitial)}if(G.opts.classActivated){G.target.removeClass(G.opts.classActivated)}}};G.setClasses(false);G.doTimeout=function(){G.timerID=null;if(G.state!=F.waiting){return }G.setClasses(false);G.state=F.initial;A("Timeout triggered.");G.target.html(G.opts.initialText);if(G.opts.ontimeout){G.opts.ontimeout(G.target)}};G.target.click(function(){switch(G.state){case (F.waiting):if(null!==G.timerID){clearTimeout(G.timerID)}G.state=F.initial;G.setClasses(false);A("Confirmed");G.target.html(G.opts.initialText);if(G.opts.onconfirm){G.opts.onconfirm(G.target)}break;case (F.initial):G.setClasses(true);if(G.opts.onactivate){G.opts.onactivate(G.target)}G.state=F.waiting;A("Waiting "+G.opts.timeout+"ms on confirmation...");G.target.html(G.opts.confirmText);G.timerID=setTimeout(function(){G.doTimeout()},G.opts.timeout);break;default:break}})}var C=new B(this,E);return this}