...

View Full Version : Getting an element color to shift smoothly



bauhsoj
02-07-2007, 04:11 PM
I know how to alternate a color simply by setting an interval and switching colors. How would I get the color of an element to smoothly shift back and forth between two different colors, regardless of the colors?

For instance, if I have a <td> tag with a white background and want that to "throb" between white and red over and over.

vwphillips
02-07-2007, 04:18 PM
<script language="JavaScript" type="text/javascript">
<!--
// Color Gradient (11-June-2006)
// by Vic Phillips http://www.vicsjavascripts.org.uk

// Progessively Change Text or BackGround Color between two colors.

// Application Notes

// The script would normally be activated by a MouseOver event
// e.g.
// <span style="color:#000000;background-color:#FFFFFF"
// onmouseover="zxcCngColor(this,50,'#000000','#FFFFFF','#FFFFFF','#FFFFFF');"
// onmouseout="zxcCngColor(this);"
// > Some Text </span>

// where zxcCngColor(*Object*,*Steps/Speed*,'*Color1*','*Color2*','*BGColor1*','*BGColor1*',*Hold*);" :
// *Object* = the object or unique ID name of the element to change (object or sting)
// *Steps/Speed* = the number of steps to change from the initial to final color (digits)
// '*Color*' = an array defining the initial & finish text colors (array or null if not required)
// field 0 = the HEX value of the initial text color (string HEX value)
// field 1 = the HEX value of the finish text color (string HEX value)
// '*BGColor*' = an array defining the initial & finish background colors (array or omitt if not required)
// field 0 = the HEX value of the initial background color (string HEX value)
// field 1 = the HEX value of the finish background color (string HEX value)
// *Hold* = (optional) the delay before reversing the effect (one cycle) (digits)

//
// The mouseout call zxcCngColor(*Object*); will reverse the color Change

// All variable, function etc. names are prefixed with 'zxc' to minimise conflicts with other JavaScripts
// These characters are easily changed to characters of choice using global find and replace.

// The Functional Code is best as an External JavaScript

// Tested with IE6 and Mozilla FireFox

// Functional Code - No Need to Change

var zxcColCnt=0;

function zxcCngColor(zxcobj,zxcstps,zxccol,zxcbg,zxchld,zxcp){
if (typeof(zxcobj)=='string'){ zxcobj=document.getElementById(zxcobj); }
if (!zxcobj.cngcolor){
zxcobj.cngcolor= new zxcOOPCol(zxcobj,zxcstps,zxccol,zxcbg,zxchld,zxcp);
zxcobj.cngcolor.ud=-1
}
clearTimeout(zxcobj.cngcolor.to)
zxcobj.cngcolor.ud=-zxcobj.cngcolor.ud;
zxcobj.cngcolor.changeColor();
}

function zxcOOPCol(zxcobj,zxcstps,zxccol,zxcbg,zxchld,zxcp){
this.obj=zxcobj;
this.ref = 'zxccngcol'+zxcColCnt;
window[this.ref]=this;
this.to=null;
this.cnt=-1;
this.hold=zxchld;
this.p=zxcp;
if (zxccol){ this.colary=new Array(zxcstps); zxcGradientColors(zxccol[0],zxccol[1]||zxccol[0],this.colary); }
if (zxcbg){ this.bgary=new Array(zxcstps); zxcGradientColors(zxcbg[0],zxcbg[1]||zxcbg[0],this.bgary); }
zxcColCnt++;
}

zxcOOPCol.prototype.setTimeOut= function(zxcf,zxcd){
if (this.p){ this.p.to=this.to; }
this.to=setTimeout("window."+this.ref+"."+zxcf,zxcd);
}

zxcOOPCol.prototype.changeColor=function(){
this.cnt+=this.ud;
if ((this.ud>0&&this.cnt<this.colary.length)||(this.ud<0&&this.cnt>=0)){
if (this.bgary){ this.obj.style.backgroundColor=this.bgary[this.cnt]; }
if (this.colary){ this.obj.style.color=this.colary[this.cnt]; }
this.setTimeOut("changeColor();",100);
}
else {
if (this.hold&&this.ud>0){ this.ud=-this.ud; this.setTimeOut("changeColor();",this.hold); }
else if (this.p){ this.p.oop.rotate(); }
}
}


function zxcGradientColors(zxcc1,zxcc2,zxcary) {
zxclen=zxcary.length;
zxcc1=zxcc1.replace('#',''); zxcc2=zxcc2.replace('#','');
var zxcr=zxcHexToInt(zxcc1.substring(0,2));
var zxcg=zxcHexToInt(zxcc1.substring(2,4));
var zxcb=zxcHexToInt(zxcc1.substring(4,6));
var zxcr2=zxcHexToInt(zxcc2.substring(0,2));
var zxcg2=zxcHexToInt(zxcc2.substring(2,4));
var zxcb2=zxcHexToInt(zxcc2.substring(4,6));
var zxcrstep=Math.round((zxcr2-zxcr)/zxclen);
var zxcgstep=Math.round((zxcg2-zxcg)/zxclen);
var zxcbstep=Math.round((zxcb2-zxcb)/zxclen);
for (zxc0=0;zxc0<zxclen-1;zxc0++){
zxcary[zxc0]="#"+zxcIntToHex(zxcr)+zxcIntToHex(zxcg)+zxcIntToHex(zxcb);
zxcr+=zxcrstep; zxcg+=zxcgstep; zxcb+=zxcbstep;
}
zxcary[zxclen-1]='#'+zxcc2;
}

function zxcIntToHex(zxcn){
if (zxcn>255){ zxcn=255; }
var zxcresult=zxcn.toString(16);
if (zxcresult.length==1){ zxcresult="0"+zxcresult; }
return zxcresult;
}

function zxcHexToInt(zxchex){
return parseInt(zxchex,16);
}

//-->
</script>

tonyp12
02-07-2007, 04:41 PM
That was a big chunk of bloatware.

I probably could do it in 5 lines.

Let me think of something.

tonyp12
02-07-2007, 06:39 PM
Here is one that just do fade from color to white and back.

In this example 255, f, f = red-white-red.
And it's only 4 lines of code., beat that Vic Phillips
(and from any color to any color I can do in 8 lines)

Works only in IE, see furter down for a Multi browser version.
<html>
<head>
<script type="text/JavaScript">

function colorfade(f,d){
document.getElementById('mycolor').style.color = (255<<16) + (f<<8) + f
if (d==1){f +=16;if (f>255){d=0;f=255}}
else{f = f-16;if (f<0) {d=1;f=0}}
setTimeout('colorfade(' + f + ',' + d + ');', 50);
}

</script>
</head>
<body onLoad="colorfade(0,1)">
<div id="mycolor">TEXT</div>

</body>
</html>

tonyp12
02-07-2007, 08:56 PM
I think I out did myself as I figure out how to it with just two lines of code. :D
by turning (minus255 to 255) in to (0 to 255 to 0) and in reality going white-red-white

works only in IE, see furter down for a multi browser version

function colorfade(f){
document.getElementById('mycolor').style.color = (255<<16) + (255-Math.abs(f)<<8) + 255-Math.abs(f)
f +=16;if (f>255){f=-255};setTimeout('colorfade(' + f + ');', 20);
}

start it with: colorfade(0)

If you want smooter you can use f +=8, the speed is the last ,20); (under 20 is probably faster than screen refresh, so a no-no)
or use this for a more subtle fade: f +=4;if (f>128){f=-128};

chump2877
02-07-2007, 10:53 PM
I think I out did myself as I figure out how to it with just two lines of code. :D
by turning (minus255 to 255) in to (0 to 255 to 0) and in reality going white-red-white


function colorfade(f){
document.getElementById('mycolor').style.color = (255<<16) + (255-Math.abs(f)<<8) + 255-Math.abs(f)
f +=16;if (f>255){f=-255};setTimeout('colorfade(' + f + ');', 20);
}

start it with: colorfade(0)

That's cool, but it doesn;t work cross-browser (works in IE but not FF)...

"<<" is a JScript operator...

tonyp12
02-07-2007, 11:38 PM
FF's javascript interpreter can not handle << (bit-shifting) ???
That's an old habit from programming with 1mhz cpu's, always use bit-shifting if possible (much faster than mulitply)
replace (<<16) with (* 65536) and (<<8) with (* 256)

FF can not handle a absolute decimal, but wants a string like this.
.style.color = "rgb(255," + (255-Math.abs(f)) + "," + (255-Math.abs(f)) + ")"

chump2877
02-08-2007, 12:34 AM
It's still not working in FF... Do you have a copy of FF to test in? If you write code that only works in IE, then you aren;t really a web developer, you;re a Microsoft developer...

It appears you are not assigning a valid hexadecimal value to the CSS color property.

tonyp12
02-08-2007, 01:16 AM
I downloaded Firefox

.style.color = "#f0f0f0"
or
.style.color = "rgb(255,255,255)"

is the correct way (with quotes)

tonyp12
02-08-2007, 01:22 AM
Here it is, a IE and FF compatible version (still only two lines :thumbsup: )
This must be some type of record for shortest function!


<html>
<head>
<script type="text/JavaScript">

function fade(id,f){
var d=","+(255-Math.abs(f));document.getElementById(id).style.background ="rgb(255"+d+d+")";
f=f>174?-180:f+6;setTimeout('fade("'+id+'",'+f+')',30);
}

</script>
</head>
<body onLoad="fade('myc',0);fade('myc2',-66)">

<div id="myc" style="width:28em; height:1.2em;"><b><center>The box behind this text should fade white to red forever</div><br>
The same <span id="myc2">but out of sync, and using span</span>

</body>
</html>

tonyp12
02-08-2007, 05:02 PM
Change first line to this for: Green
var d=255-Math.abs(f);document.getElementById(id).style.background ="rgb("+d+",255,"+d+")";

Blue:
var d=255-Math.abs(f)+",";document.getElementById(id).style.background ="rgb("+d+d+"255)";


Cyan to Red:
var d=","+(255-Math.abs(f));document.getElementById(id).style.background ="rgb("+Math.abs(f)+d+d+")";

chump2877
02-08-2007, 05:24 PM
Looks good, a few things I changed but nothing too important:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" dir="ltr">

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

</head>

<body onload="fade('myc',0);fade('myc2',-66);">

<div id="myc" style="width:28em; height:1.2em;"><b><center>The box behind this text should fade white to red forever</div>
<br>
The same <span id="myc2">but out of sync, and using span</span>

<script type="text/javascript">
<!--

function fade(id,f)
{
var d = (255-Math.abs(f));
document.getElementById(id).style.backgroundColor ="rgb("+d+",255,"+d+")";
f = (f > 174) ? -180 : f + 6;
setTimeout('fade("'+id+'",'+f+')',30);
}

-->
</script>

</body>

</html>

What do the numbers "0" and "-66" mean in the function argument? Wouldn't it be nice and more user-friendly if you allowed the programmer to alter the color inside the argument, instead of editing the function? I.E.,



<body onload="fade('myc','#ff000');fade('myc2','#ff000');">

tonyp12
02-08-2007, 06:21 PM
What do the numbers "0" and "-66"

My code is not to be user friendly but setting a record in shortest function.

As setTimeout is calling a function , you have to pass along varibles.
It passes along the f value, as it would not remember that in next loop.

The side-effect is that you can make f start at any number you want.

0 is normal, in the fade-math that would be white.

But you can use any number between -255 to +255
Doing so would couse it to start at a different sync.

I may make a version that can start at any color and fade to any color, but will be 8 lines of code (e.g not that cute)

jkd
02-08-2007, 06:51 PM
FF's javascript interpreter can not handle << (bit-shifting) ???
[/FONT]

Every Javascript and ECMAScript-compatible engine can handle bit-shifting just fine, btw. Even NS2.

chump2877
02-08-2007, 07:08 PM
My code is not to be user friendly but setting a record in shortest function.

:D In addition to usability, the code is also not flexible because it only allows you to fade about 3-4 different colors....you should be able to fade ANY color ideally...

But you are on the right track...

And by the way, I can write a function shorter than yours and it won;t be user-friendly either (or useful, even)...here it is (one line):


function blah(num) {num++;setTimeout('blah('+num+')',50);}

chump2877
02-08-2007, 07:22 PM
In addition to being a smartass, I thought I'd also try to contribute something useful...I mucked around with your code and came up with this...but it doesn't always fade completely to white...maybe you can fix it:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" dir="ltr">

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

</head>

<body onload="fade('myc',255,'#ff0000');fade('myc2',-190,'#ff0000');">

<div id="myc" style="width:28em;height:1.2em"><b><center>The box behind this text should fade white to red forever</div>
<br>
The same <span id="myc2">but out of sync, and using span</span>

<script type="text/javascript">
<!--

function fade(id,f,hex)
{
var red = HexToR(hex) + Math.abs(f);
var green = HexToG(hex) + Math.abs(f);
var blue = HexToB(hex) + Math.abs(f);
document.getElementById(id).style.backgroundColor ="rgb("+red+","+green+","+blue+")";
f = (f > 248) ? -255 : f + 7;
setTimeout('fade("'+id+'",'+f+',"'+hex+'")',30);
}

function HexToR(h) {return parseInt((cutHex(h)).substring(0,2),16)}
function HexToG(h) {return parseInt((cutHex(h)).substring(2,4),16)}
function HexToB(h) {return parseInt((cutHex(h)).substring(4,6),16)}
function cutHex(h) {return (h.charAt(0)=="#") ? h.substring(1,7):h}

-->
</script>

</body>

</html>

tonyp12
02-08-2007, 07:42 PM
You can fade a lot of colors, if you figure out the math.
this one does black to purble:

var d=Math.abs(f);document.getElementById(id).style.background ="rgb("+d+",0,"+d+")";


I used to program the Amiga's Copper, so I know how to fade any color to any color.
But as the original poster wanted white to red, I simplified it.

It's the same with 64k Demo competitions , trying to make it as small as possible by using math formulas etc.
I don't even have a 'if' statment, that gives bonus points.

But I will make a version that Function(id,c,f) with just ~10 more chars (still no 'if')
there c =1-3, for you choice of white to -red, -green or - blue

chump2877
02-08-2007, 08:08 PM
But I will make a version that Function(id,c,f)
there c =1-3, for you choice of white to -red, -green or - blue

The code in my last post lets you choose any HTML color and fade it in and out...I could care less how long the code is (it's still relatively short though)...:p

tonyp12
02-08-2007, 08:30 PM
but it doesn't always fade completely to white...maybe you can fix it:


When you are playing around with random numbers for each r,g,b.
You would have to slide each number up to 255 and stop there while the others get a chance to get there too..
And slide down back to each individual start rgb.

The correct way would be to (255-start color)/smooth
And use that individual number to add to each individual r,g,b
but probably would have go back to a direction-var and and use + - accordingly (for the throbbing effect)

tonyp12
02-09-2007, 01:46 AM
Here it is, fade White to ANY color.

Syntax: fade ( 'id' , c , s , fc )

id= the id/class name of the div or span etc
c= color, use hex to get a grip of RGB ( 0xf00 = red but 0xf44 would be better.)
s= smoothnes (optional) 16 is default
fc= fadecount (optional), if you you want a different start on sync
valid value is between -smooth to +smooth (you have to also specify smoothnes even if 16 )




<html>
<head>
<script type="text/JavaScript">

function fade(id,c,s,fc){
var smooth= (s || 16), f = (fc || 0)
var r= (240-((c & 0xf00)>>4))/smooth
var g= (240-(c & 0x0f0))/smooth
var b= (240-((c & 0x00f)<<4))/smooth
fade_b(id,r,g,b,f,smooth)
}

function fade_b(id,r,g,b,f,s){
document.getElementById(id).style.backgroundColor ="rgb("+(255-r*Math.abs(f))+","+(255-g*Math.abs(f))+","+(255-b*Math.abs(f))+")";
f = (f>=s) ? -s+1: f+1
setTimeout('fade_b("'+id+'",'+r+','+g+','+b+','+f+','+s+');',30);
}


</script>
</head>
<body onLoad="fade('myc1',0x4f4); fade('myc2',0x44f,24); fade('myc3',0xf2f); fade('myc4',0xf33,16,6)">

<span id="myc1">The box behind me should fade to green</span><br><br>
<span id="myc2">I'm blue, but also higher smoothnes</span><br><br>
<span id="myc3">different color, I'm purple </span><br><br>
<span id="myc4">I'm red, but also not same sync</span><br><br>

</body>
</html>

chump2877
02-09-2007, 02:53 AM
I looked at your code and it looks good, but I accomplished the same effect several hours ago....run the code in my last post where I posted some code (the post where I said the throbbing effect didn;t always fade to white -- I edited that code and fixed it a while ago)...it does the same thing....;)....and my code allows you to input a HTML color, as opposed to yours, which I think is more intuitive for the average web designer...

Now the real question is, how do you change the code so that it can fade ANY color to ANY other color....our current code only allows for a white background on the page...:)

tonyp12
02-09-2007, 03:00 AM
Should not be much modification needed to my code for that.

If you remove all the 240 and 255 you would fade Black to Color

So if the 240/255 responds to the start color, you there man.

Note that I changed it to '-s+1', just so the full color is not represented twice.
Small things like that makes it perfect.

I try to take care of any calculations outside the loop,
the (3) mulitiplications should be no problem for todays fast cpus.

I could always pre-calculate the result and set it up in an array, but that is so '7MHz Amiga 500'

Every problem have a math solution (like the movie Pi)

tonyp12
02-09-2007, 04:35 AM
What can you do with different start sync?

Replace the body to this and check it out.


<body onLoad="fade('m0',0xf0f,16,16);fade('m1',0xe1f,16,14);fade('m2',0xd2f,16,12);fade('m3',0xc3f,16,10);fade('m4 ',0xb4f,16,8);fade('m5',0xa5f,16,6);
fade('m6',0x96f,16,4);fade('m7',0x87f,16,2);fade('m8',0x78f,16,0)">
<h1>
<script type="text/JavaScript">
for (var i=0; i<9; i++){
document.write("<span id='m" +i+ "'> Look at me, I'm a Amiga 500 demo</span><br>")
}
</script>
</h1>
</body>

chump2877
02-09-2007, 04:47 AM
Every problem have a math solution (like the movie Pi)

Great movie, by the way...and disturbing ;)

I'll check out your code tomorrow...I have to get some shut-eye now...

chump2877
02-09-2007, 02:24 PM
The code in your last post is cool, but I think it would give me a headache after awhile (watching it run, not the code itself) ...;)

Any luck with this:


Now the real question is, how do you change the code so that it can fade ANY color to ANY other color....our current code only allows for a white background on the page...:)

That seems like the final frontier as far as this thread is concerned...

tonyp12
02-11-2007, 08:00 AM
Here is it, Any Color to Any Color fade.
What are the R and R1?
So many ( ) due to that '&' and '>>' are the last in math priority, but I need to do them first.

As I input the short version of RGB with 3 digit hex (4096 colors)

If I simple expanded F in to F0, I would only get 240 and would not have access to full white.
I could not simple add 15 to all number as I then would not have access to complete black

So I need to turn 0-240 in to 0-255 (about *1.06)
With some bit shifting I turn 0 in to 00, 4 in to 44 and F in toFF

R1 is the difference between the reds in start/end color Divided by smooth.

I later use this number to subtract from start color.
The good thing is that subtraction with two negs turns in to +
So I don't have to worry about that start color is higher or lower.

The 'throbbing' looks weird with some colors, but I have tested with alert (the math values) and they are all correct.

See below for updated code

chump2877
02-11-2007, 12:25 PM
You forgot to test this code in firefox again...;)...the code breaks in firefox...

There are no syntax errors, so I'm guessing it's one of two things:

1) FF doesn't like the 3 digit hex notation? that you are using (i.e., 0xf00), or
2) FF doesn't like the bit shifting operator (I know someone said earlier that any JS engine can handle bit shifting, but I'm not so sure -- the last time you replaced bit shifting with regular multiplication, things started to work)

Finally, I still think that the color notation you are using in your onload function argument is counter-intuitive for most people...having a regular HTML color (hex value) in the function would make it much easier for the average Joe to choose the colors that he/she wanted to pulsate....if that requires converting the HTML color value to 3 digit hex or RGB or whatever, and if that makes the code slightly longer, so be it....you have to keep usability in mind, and not just the sheer brevity of your code sometimes...

tonyp12
02-11-2007, 06:29 PM
FF does NOT accept number with decimals, it simple ignores the whole instruction.
I would say that's a bug, the decimals should just be ingored or rounded up/down like IE do.
I fixed it by Math.round()

About how I input hex rgb: 0xfa8 = '#fa8' = '#ffaa88"

I also updated with option for '#fa8'
The 6 digit version I have not included as I don't see people using that of a precise number.
My code would been shorter if I always forced them to use a 6 digit version,
but I think 3 digit versions are esier to work with.



<html>
<head>
<script type="text/JavaScript">
<!-- SYNTAX: fade("id-name", 0xfff, 0xfff, smoothnes(optional), sync (optional)) "#fff" is OK to -->

function fade(id,c0,c1,s,fc){
var smooth= (s || 16), f = (fc || 0)
if (!parseInt(c0)){c0= parseInt("0x" + c0.substring(1,4))}
if (!parseInt(c1)){c1= parseInt("0x" + c1.substring(1,4))}

var r= ((c0 & 0xf00)>>4) + ((c0 & 0xf00)>>8)
var g= (c0 & 0x0f0) + ((c0 & 0x0f0)>>4)
var b= ((c0 & 0x00f)<<4) + (c0 & 0x00f)

var r1= (r-(((c1 & 0xf00)>>4) + ((c1 & 0xf00)>>8)))/smooth
var g1= (g-((c1 & 0x0f0) + ((c1 & 0x0f0)>>4)))/smooth
var b1= (b-(((c1 & 0x00f)<<4) + (c1 & 0x00f)))/smooth

fade_b(id,r,r1,g,g1,b,b1,smooth,f)
}

function fade_b(id,r,r1,g,g1,b,b1,s,f)
{
document.getElementById(id).style.backgroundColor ="rgb("+Math.round(r-r1*Math.abs(f))+","+Math.round(g-g1*Math.abs(f))+","+Math.round(b-b1*Math.abs(f))+")";
f = (f>=s) ? -s+1 : f+1
setTimeout('fade_b("'+id+'",'+r+','+r1+','+g+','+g1+','+b+','+b1+','+s+','+f+');',30);
}


</script>
</head>
<body onLoad="fade('m0','#f22','#ff0',32);">
<h1>
<span id="m0"> I should fade red-yellow-red forever</span><br>


</body>
</html>

chump2877
02-11-2007, 07:10 PM
Looks like you got it...nice job! :thumbsup:

I may tuck this script away for a rainy day :)

Bobafart
02-11-2007, 08:21 PM
just use a framework that does it for you

a very easy one to use is www.dojotoolkit.org

tonyp12
02-18-2007, 11:36 PM
Here is a version that draws a box with a vertical smoothnes.

IE allows width:100%, but FF wants px so I set it to 640.

It uses a 1px transparent gif, if you want download it's here:spacer.gif (http://www.golivetutor.com/download/spacer.gif)


<html>
<head>
<script type="text/JavaScript">
</script>
</head>

<body>

<div style="position:absolute; z-index:0">
<script type="text/JavaScript">

var c0=0x10f; // start color
var c1=0xf0f; // end color
var lines=720; // how many lines

var r= ((c0 & 0xf00)>>4) + ((c0 & 0xf00)>>8);
var g= (c0 & 0x0f0) + ((c0 & 0x0f0)>>4);
var b= ((c0 & 0x00f)<<4) + (c0 & 0x00f);

var r1= (r-(((c1 & 0xf00)>>4) + ((c1 & 0xf00)>>8)))/lines;
var g1= (g-((c1 & 0x0f0) + ((c1 & 0x0f0)>>4)))/lines;
var b1= (b-(((c1 & 0x00f)<<4) + (c1 & 0x00f)))/lines;

for (var i=0; i<lines; i++){
document.write("<img src='http://www.golivetutor.com/download/spacer.gif' style= 'width:640px;height:1px; background-color:rgb(" +Math.round(r-r1*i) + "," +

Math.round(g-g1*i) +","+ Math.round(b-b1*i)+")'></img><br>");
}
</script>
</div>
</body>
</html>



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum