function progressbar(pbarwidth, pbarid, pmadewidth, pmadeid, startposition) {
	this.pbarwidth = pbarwidth;
	this.pmadewidth = pmadewidth;
	this.height = pbarwidth;
	this.position = 0;
	this.barObj = document.getElementById(pbarid);
	this.progObj = document.getElementById(pmadeid);
	this.slowCrawling = false;
	this.targetWidth = 0;
	this.slowCrawWidth = 20;
	this.slowDelay = 500;
	
	this.barObj.style.width = pbarwidth + "px";
	
	this.startSlowCrawl = function() {
		window.setTimeout("PB.slowCrawl();", this.slowDelay);
	}
	
	this.setProgress = function(percent, speed, slow) {
		if(!speed) {
			speed = 0;
		}
		
		if(!slow) {
			this.startSlowCrawl();
		}
		
		this.targetWidth = Math.round((this.pmadewidth / 100) * percent);
		
		if(speed == 0) {
			this.setPosition(this.targetWidth);
		} else if(speed == 1) {
			this.crawlFast();
		}
	}
	
	this.setPosition = function(pixels) {
		this.progObj.style.width = pixels + "px";
		this.position = pixels;
		if(pixels > 20) {
			this.showPercent();
		}
	}
	
	this.crawlFast = function() {
		if(this.targetWidth - this.position > 0) {
			this.setPosition(this.position + 3);
			window.setTimeout("PB.crawlFast('" + this.targetWidth + "');", 10);
		}
	}
	
	this.slowCrawl = function() {
		if(this.position < this.targetWidth + this.slowCrawlMax && this.position < this.pmadewidth) {
			this.setPosition(this.position + 1);
			window.setTimeout("PB.slowCrawl();", this.slowDelay);
		}
	}
	
	this.showPercent = function() {
		var pcnt = Math.round((this.position / this.pmadewidth) * 100);
		if(pcnt > 100) { pcnt = 100; }
		this.progObj.innerHTML = pcnt + "%";
	}
	
	this.resetProgress = function() {
		this.setPosition(0);
		this.progObj.innerHTML = "&nbsp;";
	}
	
	this.setProgress(startposition);
}

var PB;