I have integrated this several times to do just what you are talking about:

Description: This is an event-based progress bar which you can add to
existing scripts that require graphical representation. Using 3 pre-exposed
methods, you control precisely when it loads and by how much each time:

incrCount(percent_value) - This increments the current percent value by
percent_value
decrCount(percent_value) - This decrements the current percent value by
percent_value
setCount(percent_value) - This sets the current percent value to whatever
percent_value you specify; 0 to 100.
Call the above methods as you would with any JavaScript method and in any
context.

Event-based Progress Bar- Developer's View

<html>

<body>

<script language="javascript" src="percent_bar.js">

/*
Event-based progress bar- By Brian Gosselin at
http://scriptasylum.com/bgaudiodr
Featured on DynamicDrive.com
For full source, visit http://www.dynamicdrive.com
*/

</script>

</body>

</html>

<!--Source for percent_bar.js-->

// Percent Bar - Version 1.0
// Author: Brian Gosselin of http://scriptasylum.com
// Script featured on http://www.dynamicdrive.com
// Note: Modified by Dynamicdrive so incr/decrCount() accepts any percentage

var loadedcolor='navy' ; // PROGRESS BAR COLOR
var unloadedcolor='lightgrey'; // BGCOLOR OF UNLOADED AREA
var barheight=15; // HEIGHT OF PROGRESS BAR IN PIXELS
var barwidth=350; // WIDTH OF THE BAR IN PIXELS
var bordercolor='black'; // COLOR OF THE BORDER

// THE FUNCTION BELOW CONTAINS THE ACTION(S) TAKEN ONCE BAR REACHES 100%.
// IF NO ACTION IS DESIRED, TAKE EVERYTHING OUT FROM BETWEEN THE CURLY
BRACES ({})
// BUT LEAVE THE FUNCTION NAME AND CURLY BRACES IN PLACE.
// PRESENTLY, IT IS SET TO DO NOTHING, BUT CAN BE CHANGED EASILY.
// TO CAUSE A REDIRECT, INSERT THE FOLLOWING LINE IN BETWEEN THE CURLY
BRACES:
// window.location="http://redirect_page.html";;
// JUST CHANGE THE ACTUAL URL IT "POINTS" TO.

var action=function()
{
//window.location="http://www.dynamicdrive.com
}

//*****************************************************//
//********** DO NOT EDIT BEYOND THIS POINT **********//
//*****************************************************//

var w3c=(document.getElementById)?true:false;
var ns4=(document.layers)?true:false;
var ie4=(document.all && !w3c)?true:false;
var ie5=(document.all && w3c)?true:false;
var ns6=(w3c && navigator.appName.indexOf("Netscape")>=0)?true:false;
var blocksize=(barwidth-2)/100;
barheight=Math.max(4,barheight);
var loaded=0;
var perouter=0;
var perdone=0;
var images=new Array();
var txt='';
if(ns4){
txt+='<table cellpadding=0 cellspacing=0 border=0><tr><td>';
txt+='<ilayer name="perouter" width="'+barwidth+'" height="'+barheight+'">';
txt+='<layer width="'+barwidth+'" height="'+barheight+'"
bgcolor="'+bordercolor+'" top="0" left="0"></layer>';
txt+='<layer width="'+(barwidth-2)+'" height="'+(barheight-2)+'"
bgcolor="'+unloadedcolor+'" top="1" left="1"></layer>';
txt+='<layer name="perdone" width="'+(barwidth-2)+'"
height="'+(barheight-2)+'" bgcolor="'+loadedcolor+'" top="1"
left="1"></layer>';
txt+='</ilayer>';
txt+='</td></tr></table>';
}else{
txt+='<div id="perouter" onmouseup="hidebar()" style="position:relative;
visibility:hidden; background-color:'+bordercolor+'; width:'+barwidth+'px;
height:'+barheight+'px;">';
txt+='<div style="position:absolute; top:1px; left:1px;
width:'+(barwidth-2)+'px; height:'+(barheight-2)+'px;
background-color:'+unloadedcolor+'; z-index:100; font-size:1px;"></div>';
txt+='<div id="perdone" style="position:absolute; top:1px; left:1px;
width:0px; height:'+(barheight-2)+'px; background-color:'+loadedcolor+';
z-index:100; font-size:1px;"></div>';
txt+='</div>';
}

document.write(txt);

function incrCount(prcnt){
loaded+=prcnt;
setCount(loaded);
}

function decrCount(prcnt){
loaded-=prcnt;
setCount(loaded);
}

function setCount(prcnt){
loaded=prcnt;
if(loaded<0)loaded=0;
if(loaded>=100){
loaded=100;
setTimeout('hidebar()', 400);
}
clipid(perdone, 0, blocksize*loaded, barheight-2, 0);
}

//THIS FUNCTION BY MIKE HALL OF BRAINJAR.COM
function findlayer(name,doc){
var i,layer;
for(i=0;i<doc.layers.length;i++){
layer=doc.layers[i];
if(layer.name==name)return layer;
if(layer.document.layers.length>0)
if((layer=findlayer(name,layer.document))!=null)
return layer;
}
return null;
}

function progressBarInit(){
perouter=(ns4)?findlayer('perouter',document):(ie4)?document.all['perouter']
:document.getElementById('perouter');
perdone=(ns4)?perouter.document.layers['perdone']:(ie4)?document.all['perdon
e']:document.getElementById('perdone');
clipid(perdone,0,0,barheight-2,0);
if(ns4)perouter.visibility="show";
else perouter.style.visibility="visible";
}

function hidebar(){
//(ns4)? perouter.visibility="hide" : perouter.style.visibility="hidden";
}

function clipid(id,t,r,b,l){
if(ns4){
id.clip.left=l;
id.clip.top=t;
id.clip.right=r;
id.clip.bottom=b;
}else id.style.width=r;
}

window.onload=progressBarInit;

window.onresize=function(){
if(ns4)setTimeout('history.go(0)' ,400);



----------------------------------------------------------------------------
----

Copyright C 1998-2004 Dynamic Drive. Read Terms Of Use here.

-----Original Message-----
From: Nicholas Froome [mailto:[EMAIL PROTECTED]
Sent: Tuesday, March 30, 2004 4:20 PM
To: [EMAIL PROTECTED]
Subject: Witango-Talk: Re: Multiple Uploads at One Time



>Functionally, it has performed beautifully. Usability-wise, I wishthere was
a way to show progress on uploads. I've had users abortbecause they didn't
'see' anything happening. If you discover asolution for this, let me know.

eBay puts up a new window which says things are happening in the background.
When done, this new window disappears and loads a new page into the main
window. Neat

________________________________________________________________________
TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf

________________________________________________________________________
TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf

Reply via email to