245 lines
6.1 KiB
JavaScript
Executable File
245 lines
6.1 KiB
JavaScript
Executable File
/**
|
|
*
|
|
* Effects
|
|
*
|
|
* @Author Erik A. Ortiz <erik@colosa.com, aortiz.erik@gmail.com>
|
|
* @Date Feb 11th, 2009
|
|
*/
|
|
|
|
/**
|
|
* fade effect
|
|
*
|
|
* i.e. fade('myDivId')
|
|
* or fade('myDivId', true) -> this for fadeIn and fadeOut in the self time
|
|
*/
|
|
|
|
var TimeToFade = 1000.0;
|
|
|
|
function fade(eid, inOut){
|
|
|
|
inOut = ( typeof(inOut) != 'undefined' )? true: false;
|
|
|
|
var element = document.getElementById(eid);
|
|
if(element == null)
|
|
return;
|
|
|
|
if(element.FadeState == null)
|
|
{
|
|
if(element.style.opacity == null
|
|
|| element.style.opacity == ''
|
|
|| element.style.opacity == '1')
|
|
{
|
|
element.FadeState = 2;
|
|
}
|
|
else
|
|
{
|
|
element.FadeState = -2;
|
|
}
|
|
}
|
|
|
|
if(element.FadeState == 1 || element.FadeState == -1)
|
|
{
|
|
element.FadeState = element.FadeState == 1 ? -1 : 1;
|
|
element.FadeTimeLeft = TimeToFade - element.FadeTimeLeft;
|
|
}
|
|
else
|
|
{
|
|
element.FadeState = element.FadeState == 2 ? -1 : 1;
|
|
element.FadeTimeLeft = TimeToFade;
|
|
if(inOut){
|
|
setTimeout("animateFadeInOut(" + new Date().getTime() + ",'" + eid + "')", 33);
|
|
}
|
|
else
|
|
setTimeout("animateFade(" + new Date().getTime() + ",'" + eid + "')", 33);
|
|
}
|
|
}
|
|
|
|
|
|
function animateFade(lastTick, eid)
|
|
{
|
|
var curTick = new Date().getTime();
|
|
var elapsedTicks = curTick - lastTick;
|
|
|
|
var element = document.getElementById(eid);
|
|
|
|
if(element.FadeTimeLeft <= elapsedTicks)
|
|
{
|
|
element.style.opacity = element.FadeState == 1 ? '1' : '0';
|
|
element.style.filter = 'alpha(opacity = ' + (element.FadeState == 1 ? '100' : '0') + ')';
|
|
element.FadeState = element.FadeState == 1 ? 2 : -2;
|
|
|
|
return;
|
|
}
|
|
|
|
element.FadeTimeLeft -= elapsedTicks;
|
|
var newOpVal = element.FadeTimeLeft/TimeToFade;
|
|
if(element.FadeState == 1)
|
|
newOpVal = 1 - newOpVal;
|
|
|
|
element.style.opacity = newOpVal;
|
|
element.style.filter = 'alpha(opacity = ' + (newOpVal*100) + ')';
|
|
|
|
setTimeout("animateFade(" + curTick + ",'" + eid + "')", 33);
|
|
}
|
|
|
|
|
|
function animateFadeInOut(lastTick, eid)
|
|
{
|
|
var curTick = new Date().getTime();
|
|
var elapsedTicks = curTick - lastTick;
|
|
|
|
var element = document.getElementById(eid);
|
|
|
|
if(element.FadeTimeLeft <= elapsedTicks)
|
|
{
|
|
element.style.opacity = element.FadeState == 1 ? '1' : '0';
|
|
element.style.filter = 'alpha(opacity = ' + (element.FadeState == 1 ? '100' : '0') + ')';
|
|
element.FadeState = element.FadeState == 1 ? 2 : -2;
|
|
|
|
fade(eid);
|
|
return;
|
|
}
|
|
|
|
element.FadeTimeLeft -= elapsedTicks;
|
|
var newOpVal = element.FadeTimeLeft/TimeToFade;
|
|
if(element.FadeState == 1)
|
|
newOpVal = 1 - newOpVal;
|
|
|
|
element.style.opacity = newOpVal;
|
|
element.style.filter = 'alpha(opacity = ' + (newOpVal*100) + ')';
|
|
|
|
setTimeout("animateFadeInOut(" + curTick + ",'" + eid + "')", 33);
|
|
}
|
|
|
|
/**
|
|
* Effect
|
|
*
|
|
* To fade backgroud or text
|
|
*
|
|
* @author Erik A. Ortiz <erik@colosa.com, aortiz.erik@gmail.com>
|
|
*
|
|
*/
|
|
|
|
var Effect = function(element){
|
|
this.max=255;
|
|
this.min=100;
|
|
this.incrementor=1;
|
|
|
|
this.element=(typeof(element) != 'undefined')? element: "text"; //"text" o "background"
|
|
//----------------------------------------------
|
|
|
|
this.r=this.max;
|
|
this.g=this.max;
|
|
this.b=this.max;
|
|
|
|
this.target = '';
|
|
this.iTarget = '';
|
|
|
|
switch(this.element){
|
|
case "text":
|
|
this.target="color";
|
|
this.iTarget="this.max-";
|
|
break;
|
|
case "background":
|
|
this.iTarget="";
|
|
this.target="backgroundColor";
|
|
break;
|
|
}
|
|
|
|
this.setElement = function(e){
|
|
this.element = e;
|
|
|
|
switch(this.element){
|
|
case "text":
|
|
this.target="color";
|
|
this.iTarget="this.max-";
|
|
break;
|
|
case "background":
|
|
this.iTarget="";
|
|
this.target="backgroundColor";
|
|
break;
|
|
}
|
|
}
|
|
|
|
this.setMin = function(e){
|
|
this.min = e;
|
|
}
|
|
|
|
this.setMax = function(e){
|
|
this.max = e;
|
|
}
|
|
|
|
this.fadeIn = function (obj){
|
|
variation = -1;
|
|
increment=variation*this.incrementor;
|
|
eval('obj.style.'+this.target+'="RGB("+('+this.iTarget+'this.r)+","+('+this.iTarget+'this.g)+","+('+this.iTarget+'this.b)+")"');
|
|
this.r+=increment;
|
|
this.b+=increment;
|
|
this.g+=increment;
|
|
eso=obj;
|
|
elincrement=variation;
|
|
if(this.r>this.min && this.r<this.max){
|
|
seguir=window.setTimeout("oEffect.fadeIn(eso,elincrement)",10);
|
|
}
|
|
else{
|
|
this.r-=increment;
|
|
this.g-=increment;
|
|
this.b-=increment;
|
|
}
|
|
}
|
|
|
|
this.fadeOut = function (obj){
|
|
variation = 1;
|
|
increment=variation*this.incrementor;
|
|
eval('obj.style.'+this.target+'="RGB("+('+this.iTarget+'this.r)+","+('+this.iTarget+'this.g)+","+('+this.iTarget+'this.b)+")"');
|
|
this.r+=increment;
|
|
this.b+=increment;
|
|
this.g+=increment;
|
|
eso=obj;
|
|
elincrement=variation;
|
|
if(this.r>this.min && this.r<this.max){
|
|
seguir=window.setTimeout("oEffect.fadeOut(eso,elincrement)",10);
|
|
}
|
|
else{
|
|
this.r-=increment;
|
|
this.g-=increment;
|
|
this.b-=increment;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* FadeIn and fade Out to the same time
|
|
*/
|
|
this.fade = function (obj){
|
|
|
|
variation = -1;
|
|
|
|
increment=variation*this.incrementor;
|
|
eval('obj.style.'+this.target+'="RGB("+('+this.iTarget+'this.r)+","+('+this.iTarget+'this.g)+","+('+this.iTarget+'this.b)+")"');
|
|
this.r+=increment;
|
|
this.b+=increment;
|
|
this.g+=increment;
|
|
eso=obj;
|
|
elincrement=variation;
|
|
if(this.r>this.min && this.r<this.max){
|
|
seguir=window.setTimeout("oEffect.fade(eso,elincrement)",10);
|
|
}
|
|
else{
|
|
this.r-=increment;
|
|
this.g-=increment;
|
|
this.b-=increment;
|
|
|
|
if( typeof('cb') != 'undefined'){
|
|
setTimeout("oEffect.fadeOut(document.getElementById('"+obj.id+"'))",0);
|
|
} else {
|
|
setTimeout("oEffect.fadeOut(document.getElementById('"+obj.id+"'))",0);
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
//default object, always it should be declared.
|
|
var oEffect = new Effect();
|
|
|