
jQuery.fn.initConfirmer=function(opts){if(!opts){opts=[];}
var self=this;self.opts=jQuery.extend({initialText:"PLEASE SET .initialText='Button Label'",confirmText:"Confirm: "+opts.initialText,timeout:3000,onconfirm:null,ontimeout:null,debuggering:false},opts);self.dbgdiv=null;function dbg(msg){if(self.dbgdiv)self.dbgdiv.prepend("Confirmer debug: "+msg+"<br/>");};if(self.opts.debuggering){self.after("<div id='ConfirmerDebugDiv'>Confirmer debugging area</div>");self.dbgdiv=jQuery('#ConfirmerDebugDiv');self.dbgdiv.css('border','1px dashed #000');dbg("debugging activated.");}
function ConfirmHolder(target,opts){var me=this;me.target=target;me.opts=opts;var states={initial:0,waiting:1};me.state=states.initial;me.target.html(me.opts.initialText);me.doTimeout=function(){if(me.state!=states.waiting){return;}
me.state=states.initial;dbg("Timeout triggered.");me.target.html(me.opts.initialText);if(me.opts.ontimeout){me.opts.ontimeout();}};me.target.click(function(){switch(me.state){case(states.waiting):me.state=states.initial;dbg("Confirmed");me.target.html(me.opts.initialText);if(me.opts.onconfirm)me.opts.onconfirm();break;case(states.initial):me.state=states.waiting;dbg("Waiting on confirmation...");me.target.html(me.opts.confirmText);var id=jQuery.fn.initConfirmer.currentID++;jQuery.fn.initConfirmer.ids[id]=me;setTimeout("jQuery.fn.initConfirmer.bogusTimeoutHandler("+id+")",me.opts.timeout);break;default:break;};});};var holder=new ConfirmHolder(this,self.opts);return self;};jQuery.fn.initConfirmer.ids=[];jQuery.fn.initConfirmer.currentID=0;jQuery.fn.initConfirmer.bogusTimeoutHandler=function(objid){var obj=jQuery.fn.initConfirmer.ids[objid];delete jQuery.fn.initConfirmer.ids[objid];obj.doTimeout();};
