[763] | 1 | // xp_progressbar |
---|
| 2 | // Copyright 2004 Brian Gosselin of ScriptAsylum.com |
---|
| 3 | // |
---|
| 4 | // v1.0 - Initial release |
---|
| 5 | // v1.1 - Added ability to pause the scrolling action (requires you to assign |
---|
| 6 | // the bar to a unique arbitrary variable). |
---|
| 7 | // - Added ability to specify an action to perform after a x amount of |
---|
| 8 | // - bar scrolls. This requires two added arguments. |
---|
| 9 | // v1.2 - Added ability to hide/show each bar (requires you to assign the bar |
---|
| 10 | // to a unique arbitrary variable). |
---|
| 11 | |
---|
| 12 | // var xyz = createBar( |
---|
| 13 | // total_width, |
---|
| 14 | // total_height, |
---|
| 15 | // background_color, |
---|
| 16 | // border_width, |
---|
| 17 | // border_color, |
---|
| 18 | // block_color, |
---|
| 19 | // scroll_speed, |
---|
| 20 | // block_count, |
---|
| 21 | // scroll_count, |
---|
| 22 | // action_to_perform_after_scrolled_n_times |
---|
| 23 | // ) |
---|
| 24 | |
---|
| 25 | var w3c=(document.getElementById)?true:false; |
---|
| 26 | var ie=(document.all)?true:false; |
---|
| 27 | var N=-1; |
---|
| 28 | var progressBar; |
---|
| 29 | |
---|
| 30 | function createBar(w,h,bgc,brdW,brdC,blkC,speed,blocks,count,action, top, left){ |
---|
| 31 | |
---|
| 32 | if(ie||w3c){ |
---|
| 33 | var t='<div id="_xpbar'+(++N)+'" style="visibility:hidden; position:relative; overflow:hidden; width:'+w+'px; height:'+h+'px; background-color:'+bgc+'; border-color:'+brdC+'; top:'+top+';left:'+left+';border-width:'+brdW+'px; border-style:solid; font-size:1px;">'; |
---|
| 34 | t+='<span id="blocks'+N+'" style="left:-'+(h*2+1)+'px; position:absolute; font-size:1px">'; |
---|
| 35 | for(i=0;i<blocks;i++){ |
---|
| 36 | t+='<span style="background-color:'+blkC+'; left:-'+((h*i)+i)+'px; font-size:1px; position:absolute; width:'+h+'px; height:'+h+'px; ' |
---|
| 37 | t+=(ie)?'filter:alpha(opacity='+(100-i*(100/blocks))+')':'-Moz-opacity:'+((100-i*(100/blocks))/100); |
---|
| 38 | t+='"></span>'; |
---|
| 39 | } |
---|
| 40 | |
---|
| 41 | t+='</span></div>'; |
---|
| 42 | document.write(t); |
---|
| 43 | var bA=(ie)?document.all['blocks'+N]:document.getElementById('blocks'+N); |
---|
| 44 | bA.bar=(ie)?document.all['_xpbar'+N]:document.getElementById('_xpbar'+N); |
---|
| 45 | bA.blocks=blocks; |
---|
| 46 | bA.N=N; |
---|
| 47 | bA.w=w; |
---|
| 48 | bA.h=h; |
---|
| 49 | bA.speed=speed; |
---|
| 50 | bA.ctr=0; |
---|
| 51 | bA.count=count; |
---|
| 52 | bA.action=action; |
---|
| 53 | bA.togglePause=togglePause; |
---|
| 54 | bA.showBar=function(){ |
---|
| 55 | this.bar.style.visibility="visible"; |
---|
| 56 | } |
---|
| 57 | bA.hideBar=function(){ |
---|
| 58 | this.bar.style.visibility="hidden"; |
---|
| 59 | } |
---|
| 60 | bA.tid=setInterval('startBar('+N+')',speed); |
---|
| 61 | this.progressBar = bA; |
---|
| 62 | return bA; |
---|
| 63 | } |
---|
| 64 | } |
---|
| 65 | |
---|
| 66 | function startBar(bn){ |
---|
| 67 | var t=(ie)?document.all['blocks'+bn]:document.getElementById('blocks'+bn); |
---|
| 68 | if(parseInt(t.style.left)+t.h+1-(t.blocks*t.h+t.blocks)>t.w) { |
---|
| 69 | t.style.left=-(t.h*2+1)+'px'; |
---|
| 70 | t.ctr++; |
---|
| 71 | if(t.ctr>=t.count) { |
---|
| 72 | eval(t.action); |
---|
| 73 | t.ctr=0; |
---|
| 74 | } |
---|
| 75 | } |
---|
| 76 | else |
---|
| 77 | t.style.left=(parseInt(t.style.left)+t.h+1)+'px'; |
---|
| 78 | } |
---|
| 79 | |
---|
| 80 | function togglePause() { |
---|
| 81 | if(this.tid==0) { |
---|
| 82 | this.tid=setInterval('startBar('+this.N+')',this.speed); |
---|
| 83 | } |
---|
| 84 | else { |
---|
| 85 | clearInterval(this.tid); |
---|
| 86 | this.tid=0; |
---|
| 87 | } |
---|
| 88 | } |
---|