mirror of
https://github.com/EGroupware/egroupware.git
synced 2025-08-15 19:24:21 +02:00
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
146 lines
4.7 KiB
JavaScript
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;
|
|
}
|
|
|
|
};
|