// 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) {
	createBar(w, h, bgc, brdW, brdC, blkC, speed, blocks, count, action, N);
}
function createBar(w, h, bgc, brdW, brdC, blkC, speed, blocks, count, action, NewN) {
	N = NewN;
	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() {
			bA.bar.style.visibility = "visible";
		}
		bA.hideBar = function() {
			bA.bar.style.visibility = "hidden";
		}
		bA.tid = setInterval('startBar(' + N + ')', speed);
		return bA;
	}
}

function startBar(bn) {
	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';
}

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;
	}
}

function muestraBarraProgreso() {
	var capa = document.getElementById('capaProcesando');

	h = 75;
	w = 375;
	LeftPosition = (785) ? (785 - w) / 2 : 0;
	TopPosition = (739) ? (739 - h) / 2 : 0;

	capa.style.visibility = 'visible';
	capa.style.top = TopPosition;
	capa.style.left = LeftPosition;

	bar1.showBar();
}

function muestraBarraProgresoCentrada(ancho, relative) {
	var capa = document.getElementById('capaProcesando');
	var tabla = document.getElementById('miTablaOculta');
	var arr = document.body.clientHeight / 3;
	var izq = (document.body.clientWidth - ancho) / 2;
	// capa.style.top=arr;
	// capa.style.left=izq;
	if (relative == 1) {
		tabla.style.top = arr;
		tabla.style.left = izq;
	} else {
		tabla.style.top = 100;
		tabla.style.left = izq;
	}
	capa.style.display = 'block';
	tabla.style.visibility = 'visible';
	bar1.showBar();
}

function muestraBarraProgresoCentradaAltura(ancho, altura) {
	var capa = document.getElementById('capaProcesando');
	var tabla = document.getElementById('miTablaOculta');
	var arr = document.body.clientHeight / 3;
	var izq = (document.body.clientWidth - ancho) / 2;
	tabla.style.top = arr + altura;
	tabla.style.left = izq;
	capa.style.display = 'block';
	tabla.style.visibility = 'visible';
	bar1.showBar();
}

/*
 * function mBPC(ancho,relative){ var capa = document.getElementById( 'divProcesando' ); var tabla = document.getElementById( 'divmiTablaOculta' ); var arr=document.body.clientHeight/3; var izq=(document.body.clientWidth-ancho)/2; capa.style.top=arr; capa.style.left=izq; if(relative==1){ tabla.style.top=arr; tabla.style.left=izq; }else{ tabla.style.top=0; tabla.style.left=0; } capa.style.display='block'; tabla.style.visibility='visible'; bar0.showBar(bar0); } function muestraProcesandoConHREF(direccion){ muestraBarraProgresoCentrada(300,0); document.location.href=direccion;
 *  } function muestraProcesando(){ mBPC(300,0);
 *  } function muestraProcesandoConHREF(direccion,indice){ muestraBarraProgresoCentrada(300,indice); document.location.href=direccion;
 *  } function muestraProcesando(indice){ muestraBarraProgresoCentrada(300,indice);
 *  }
 */
