if (!JS_BRAMUS) { var JS_BRAMUS = new Object(); } JS_BRAMUS.jsProgressBarHandler = Class.create(); JS_BRAMUS.jsProgressBarHandler.prototype = { imageWidth : 240, pbArray : new Object(), initialize : function() { this.initialPos = (this.imageWidth / 2) * (-1); this.pxPerPercent = (this.imageWidth / 2) / 100; $$('span.progressBar').each(function(progressBar) { this.buildProgressBar(progressBar); }.bind(this)); }, buildProgressBar : function(progressBar) { var percentage = parseInt(progressBar.innerHTML.replace("%","")); var id = progressBar.id; progressBar.update('0% 0%'); this.setPercentage(id, percentage); }, setPercentage : function(id, percentage) { var prevPercentage = (this.pbArray[id] || 0); if ((percentage.toString().substring(0,1) == "+") || (percentage.toString().substring(0,1) == "-")) { percentage = prevPercentage + parseInt(percentage); } if (percentage < 0) percentage = 0; if (percentage > 100) percentage = 100; if (percentage != prevPercentage) { if (prevPercentage < percentage) { prevPercentage++; } else { prevPercentage--; } } this.pbArray[id] = prevPercentage; $(id + "_percentImage").style.backgroundPosition = "" + (this.initialPos + (prevPercentage * this.pxPerPercent)) + "px 0px"; $(id + "_percentImage").alt = "" + prevPercentage + "%"; $(id + "_percentImage").title = "" + prevPercentage + "%"; $(id + "_percentText").update("" + prevPercentage + "%"); if (percentage != prevPercentage) { setTimeout("myJsProgressBarHandler.setPercentage('" + id + "','" + percentage + "')", 10); } }, getPercentage : function(id) { return this.pbArray[id]; } } function initProgressBarHandler() { myJsProgressBarHandler = new JS_BRAMUS.jsProgressBarHandler(); } Event.observe(window, 'load', initProgressBarHandler, false);