if(typeof (Control)=="undefined"){Control={};}Control.ProgressBar=Class.create();Object.extend(Control.ProgressBar.prototype,{container:false,containerWidth:0,progressContainer:false,percentageContainer:false,progress:0,executer:false,active:false,poller:false,initialize:function(_1,_2){this.container=$(_1);this.containerWidth=this.container.getDimensions().width-(parseInt(this.container.getStyle("border-right-width").replace(/px/,""))+parseInt(this.container.getStyle("border-left-width").replace(/px/,"")));this.progressContainer=$(document.createElement("div"));this.progressContainer.setStyle({width:this.containerWidth+"px",height:"100%",position:"absolute",top:"0px",right:"0px"});this.container.appendChild(this.progressContainer);this.options={afterChange:Prototype.emptyFunction,interval:0.25,step:1,classNames:{active:"progress_bar_active",inactive:"progress_bar_inactive"}};Object.extend(this.options,_2||{});this.container.addClassName(this.options.classNames.inactive);this.active=false;},setProgress:function(_3){this.progress=_3;this.draw();if(this.progress>=100){this.stop(false);}this.notify("afterChange",this.progress,this.active);},poll:function(_4,_5){this.active=true;this.poller=new PeriodicalExecuter(function(){new Ajax.Request(_4,{onSuccess:function(_6){this.setProgress(parseInt(_6.responseText));if(!this.active){this.poller.stop();}}.bind(this)});}.bind(this),_5||3);},start:function(){this.active=true;this.container.removeClassName(this.options.classNames.inactive);this.container.addClassName(this.options.classNames.active);this.executer=new PeriodicalExecuter(this.step.bind(this,this.options.step),this.options.interval);},stop:function(_7){this.active=false;if(this.executer){this.executer.stop();}this.container.removeClassName(this.options.classNames.active);this.container.addClassName(this.options.classNames.inactive);if(typeof (_7)=="undefined"||_7==true){this.reset();}},step:function(_8){this.active=true;this.setProgress(Math.min(100,this.progress+_8));},reset:function(){this.active=false;this.setProgress(0);},draw:function(){this.progressContainer.setStyle({width:(this.containerWidth-Math.floor((this.progress/100)*this.containerWidth))+"px"});},notify:function(_9){if(this.options[_9]){return [this.options[_9].apply(this.options[_9],$A(arguments).slice(1))];}}});if(typeof (Object.Event)!="undefined"){Object.Event.extend(Control.ProgressBar);}
