egroupware/phpgwapi/js/dynapi/fx/fader.js

70 lines
1.7 KiB
JavaScript

/*
DynAPI Distribution
Fader Animation Extension
The DynAPI Distribution is distributed under the terms of the GNU LGPL license.
requires: DynLayer
*/
Fader = {}; // used by dynapi.library
p = DynLayer.prototype;
p._fadeMode = '';
p.fadeIn = function(inc,ms){
this._opacity=0;
this._fadeMode='in';
this.fadeTo(100,(inc||4),ms);
};
p.fadeOut = function(inc,ms){
this._opacity=100;
this._fadeMode='out';
this.fadeTo(0,inc||4,ms);
};
// Fades an object to "opacity" by "inc" increments in every "ms" millisenconds
p.fadeTo = function(opacity,inc,ms){
if(this._opacity==null) this._opacity=100;
inc=(inc)? Math.abs(inc):5;
this._fadeMs=(ms)? ms:50;
if (this._opacity>opacity) inc*=-1;
this._fadeInc=inc;
this._fadeToOpacity = opacity;
this._fadeTimeout=window.setTimeout(this+'._fade()',this._fadeMs);
};
p._fade = function(){
var ua=dynapi.ua;
var fm=this._fadeMode;
var inc = this._fadeInc;
var opac = this._opacity;
var fopac = this._fadeToOpacity;
opac+=inc;
if ((inc<0 && opac<=fopac)|| (inc>0 && opac>=fopac)) opac=fopac;
this._opacity=opac;
if(!ua.def) this.setVisible((opac>0)? true:false);
else if(ua.dom && this.css){
if(opac>1 && this.visible==false) this.setVisible(true);
if(ua.ie) this.css.filter='alpha(opacity=' + opac + ')';
else this.css.MozOpacity = parseInt(opac)/100;
}
if(opac!=fopac) this._fadeTimeout=window.setTimeout(this+'._fade()',this._fadeMs);
else {
this._fadeMode='';
window.clearTimeout(this._fadeTimeout);
this.invokeEvent('fade'+fm);
}
};
p.getOpacity = function(){
if (this._opacity ||(this._opacity == 0)) return this._opacity;
else return this._opacity=100;
};
p.setOpacity = function(n){
var ua=dynapi.ua;
if(n>100) n=100;
else if(n<0)n=0;
this._opacity = n;
this.fadeTo(n);
};