// xp_progressbar
// Copyright 2004 Brian Gosselin of ScriptAsylum.com
//
// v1.0 - Initial release
// v1.1 - Added ability to pause the scrolling action (requires you to assign
//        the bar to a unique arbitrary variable).
//      - Added ability to specify an action to perform after a x amount of
//      - bar scrolls. This requires two added arguments.
// v1.2 - Added ability to hide/show each bar (requires you to assign the bar
//        to a unique arbitrary variable).

// var xyz = createBar(
// total_width,
// total_height,
// background_color,
// border_width,
// border_color,
// block_color,
// scroll_speed,
// block_count,
// scroll_count,
// action_to_perform_after_scrolled_n_times
// )

var w3c = (document.getElementById) ? true : false;
var ie = (document.all) ? true : false;
var N = -1;

function createBar(w, h, bgc, brdW, brdC, blkC, speed, blocks, count, action) {
	if (ie || w3c) {
		var t = '<div id="_xpbar' + (++N) + '" style="visibility:visible; position:relative; overflow:hidden; width:' + w + 'px; height:' + h + 'px; background-color:' + bgc + '; border-color:' + brdC + '; border-width:' + brdW + 'px; border-style:solid; font-size:1px;">';
		t += '<span id="blocks' + N + '" style="left:-' + (h * 2 + 1) + 'px; position:absolute; font-size:1px">';
		for (i = 0; i < blocks; i++) {
			t += '<span style="background-color:' + blkC + '; left:-' + ((h * i) + i) + 'px; font-size:1px; position:absolute; width:' + h + 'px; height:' + h + 'px; '
			t += (ie) ? 'filter:alpha(opacity=' + (100 - i * (100 / blocks)) + ')' : '-Moz-opacity:' + ((100 - i * (100 / blocks)) / 100);
			t += '"></span>';
		}
		t += '</span></div>';
		document.write(t);
		var bA = (ie) ? document.all['blocks' + N] : document.getElementById('blocks' + N);
		bA.bar = (ie) ? document.all['_xpbar' + N] : document.getElementById('_xpbar' + N);
		bA.blocks = blocks;
		bA.N = N;
		bA.w = w;
		bA.h = h;
		bA.speed = speed;
		bA.ctr = 0;
		bA.count = count;
		bA.action = action;
		bA.togglePause = togglePause;
		bA.showBar = function() {
			this.bar.style.visibility = "visible";
		}
		bA.hideBar = function() {
			this.bar.style.visibility = "hidden";
		}
		bA.tid = setInterval('startBar(' + N + ')', speed);
		return bA;
	} 
}

function startBar(bn) {
	try {
		var t = (ie) ? document.all['blocks' + bn] : document.getElementById('blocks' + bn);
		if (parseInt(t.style.left) + t.h + 1 - (t.blocks * t.h + t.blocks) > t.w) {
			t.style.left = -(t.h * 2 + 1) + 'px';
			t.ctr++;
			if (t.ctr >= t.count) {
				eval(t.action);
				t.ctr = 0;
			}
		} else t.style.left = (parseInt(t.style.left) + t.h + 1) + 'px';
	} catch (ex) { }
}

function togglePause() {
	if (this.tid == 0) {
		this.tid = setInterval('startBar(' + this.N + ')', this.speed);
	} else {
		clearInterval(this.tid);
		this.tid = 0;
	} 
}

function togglePause() {
	if (this.tid == 0) {
		this.tid = setInterval('startBar(' + this.N + ')', this.speed);
	} else {
		clearInterval(this.tid);
		this.tid = 0;
	} 
}

