// 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)+'" class="hide" style="background-color:white;padding:5px;z-index:50000; text-align:center;"><div id="_xpbar'+N+'" style="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;margin-bottom:5px;">';
		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><strong>Please Wait ... Your Search is in Progress</strong></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);
		bA.togglePause();
		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;
	}
}


// Create and display the progress dialog.
function ProgressCreate(bar_object) {
	// Move layer to center of window to show
	if (document.all || document.getElementById) {	// Internet Explorer or Firefox
		bar_object.bar.className = 'show';
		bar_object.bar.style.position = "absolute";
		bar_object.bar.style.left = (document.body.clientWidth/2) - (bar_object.bar.offsetWidth/2);
		bar_object.bar.style.top = document.body.scrollTop+(document.body.clientHeight/5) - (bar_object.bar.offsetHeight/2);
		if (!ie) center(bar_object.bar);

		// hide content
		var hidder_id = document.getElementById('hidder');
		hidder_id.style.visibility = "visible";
		hidder_id.style.width="100%";
		hidder_id.style.height="100%";
		hidder_id.style.height=document.body.offsetHeight;

	} else if (document.layers) {	// Netscape
		document.bar_object.bar.visibility = true;
		document.bar_object.bar.left = (window.innerWidth/2) - 200;
		document.bar_object.bar.top = pageYOffset+(window.innerHeight/2) - 40;
	}
	bar_object.togglePause();

}

function center(object)
 {
 	object.style.left="50%";
 	object.style.top="50%";
  object.style.marginLeft = "-" + parseInt(object.offsetWidth / 2) + "px";
  object.style.marginTop = "-" + parseInt(object.offsetHeight / 2) + "px";
 }
