1
0
mirror of https://github.com/EGroupware/egroupware.git synced 2025-08-15 19:24:21 +02:00
Files
addressbook
admin
api
js
Resumable
dhtmlxMenu
codebase
sources
ext
dhtmlxmenu_effects.js
dhtmlxmenu_ext.js
dhtmlxcommon.js
dhtmlxmenu.js
readme.txt
dhtmlxtree
egw_action
etemplate
framework
jquery
jsapi
labjs
egw_json.js
es6-promise.min.js
login.js
setup
src
templates
asyncservices.php
asyncwrapper.php
categories.php
config.php
images.php
lang.php
thumbnail.php
user.php
calendar
doc
etemplate
filemanager
files
home
importexport
infolog
mail
notifications
phpgwapi
pixelegg
preferences
resources
setup
timesheet
.htaccess
Gruntfile.js
about.php
composer.json
composer.lock
groupdav.htaccess
groupdav.php
header.inc.php.template
index.php
json.php
login.php
logout.php
package.json
redirect.php
remote.php
share.php
status.php
svn-helper.php
updateGruntfile.php
webdav.php
egroupware/api/js/dhtmlxMenu/sources/ext/dhtmlxmenu_effects.js
2016-04-07 10:38:05 +00:00

146 lines
4.7 KiB
JavaScript

//v.3.6 build 131108
/*
Copyright DHTMLX LTD. http://www.dhtmlx.com
You allowed to use this component or parts of it under GPL terms
To use it on other terms or get Professional edition of the component please contact us at sales@dhtmlx.com
*/
/* effects: opacity, slide */
dhtmlXMenuObject.prototype.enableEffect = function(name, maxOpacity, effectSpeed) {
this._menuEffect = (name=="opacity"||name=="slide"||name=="slide+"?name:false);
for (var a in this.idPull) {
if (a.search(/polygon/) === 0) {
this._pOpacityApply(a,(_isIE?100:1));
this.idPull[a].style.height = "";
}
}
// opacity max value
this._pOpMax = (typeof(maxOpacity)=="undefined"?100:maxOpacity)/(_isIE?1:100);
// opacity css styles
this._pOpStyleName = (_isIE?"filter":"opacity");
this._pOpStyleValue = (_isIE?"progid:DXImageTransform.Microsoft.Alpha(Opacity=#)":"#");
// count of steps to open full polygon
this._pSlSteps = (_isIE?10:20);
// timeout to open polygon
this._pSlTMTimeMax = effectSpeed||50;
}
// extended show
dhtmlXMenuObject.prototype._showPolygonEffect = function(pId) {
this._pShowHide(pId, true);
};
// extended hide
dhtmlXMenuObject.prototype._hidePolygonEffect = function(pId) {
this._pShowHide(pId, false);
};
// apply opacity css
dhtmlXMenuObject.prototype._pOpacityApply = function(pId, val) {
this.idPull[pId].style[this._pOpStyleName] = String(this._pOpStyleValue).replace("#", val||this.idPull[pId]._op);
};
dhtmlXMenuObject.prototype._pShowHide = function(pId, mode) {
if (!this.idPull) return;
// check if mode in progress
if (this.idPull[pId]._tmShow != null) {
if ((this.idPull[pId]._step_h > 0 && mode == true) || (this.idPull[pId]._step_h < 0 && mode == false)) return;
window.clearTimeout(this.idPull[pId]._tmShow);
this.idPull[pId]._tmShow = null;
this.idPull[pId]._max_h = null;
}
if (mode == false && (this.idPull[pId].style.visibility == "hidden" || this.idPull[pId].style.display == "none")) return;
if (mode == true && this.idPull[pId].style.display == "none") {
this.idPull[pId].style.visibility = "hidden";
this.idPull[pId].style.display = "";
}
// init values or show-hide revert
if (this.idPull[pId]._max_h == null) {
this.idPull[pId]._max_h = parseInt(this.idPull[pId].offsetHeight);
this.idPull[pId]._h = (mode==true?0:this.idPull[pId]._max_h);
this.idPull[pId]._step_h = Math.round(this.idPull[pId]._max_h/this._pSlSteps)*(mode==true?1:-1);
if (this.idPull[pId]._step_h == 0) return;
this.idPull[pId]._step_tm = Math.round(this._pSlTMTimeMax/this._pSlSteps);
if (this._menuEffect == "slide+" || this._menuEffect == "opacity") {
this.idPull[pId].op_tm = this.idPull[pId]._step_tm;
this.idPull[pId].op_step = (this._pOpMax/this._pSlSteps)*(mode==true?1:-1);
if (_isIE) this.idPull[pId].op_step = Math.round(this.idPull[pId].op_step);
this.idPull[pId]._op = (mode==true?0:this._pOpMax);
this._pOpacityApply(pId);
} else {
this.idPull[pId]._op = (_isIE?100:1);
this._pOpacityApply(pId);
}
// show first time
if (this._menuEffect.search(/slide/) === 0) this.idPull[pId].style.height = "0px";
this.idPull[pId].style.visibility = "visible";
}
// run cycle
this._pEffectSet(pId, this.idPull[pId]._h+this.idPull[pId]._step_h);
}
dhtmlXMenuObject.prototype._pEffectSet = function(pId, t) {
if (!this.idPull) return;
if (this.idPull[pId]._tmShow) window.clearTimeout(this.idPull[pId]._tmShow);
// check and apply next step
this.idPull[pId]._h = Math.max(0,Math.min(t,this.idPull[pId]._max_h));
if (this._menuEffect.search(/slide/) === 0) this.idPull[pId].style.height = this.idPull[pId]._h+"px";
t += this.idPull[pId]._step_h;
if (this._menuEffect == "slide+" || this._menuEffect == "opacity") {
this.idPull[pId]._op = Math.max(0,Math.min(this._pOpMax,this.idPull[pId]._op+this.idPull[pId].op_step));
this._pOpacityApply(pId);
}
if ((this.idPull[pId]._step_h > 0 && t <= this.idPull[pId]._max_h) || (this.idPull[pId]._step_h < 0 && t >= 0)) {
// continue
var k = this;
this.idPull[pId]._tmShow = window.setTimeout(function(){k._pEffectSet(pId,t);}, this.idPull[pId]._step_tm);
} else {
// clear height
if (this._menuEffect.search(/slide/) === 0) this.idPull[pId].style.height = "";
// hide completed
if (this.idPull[pId]._step_h < 0) this.idPull[pId].style.visibility = "hidden";
if (this._menuEffect == "slide+" || this._menuEffect == "opacity") {
this.idPull[pId]._op = (this.idPull[pId]._step_h<0?(_isIE?100:1):this._pOpMax);
this._pOpacityApply(pId);
}
// clear values
this.idPull[pId]._tmShow = null;
this.idPull[pId]._h = null;
this.idPull[pId]._max_h = null;
///this.idPull[pId]._step_h = null;
this.idPull[pId]._step_tm = null;
}
};