1 line
7.1 KiB
JavaScript
1 line
7.1 KiB
JavaScript
Type.registerNamespace("Sys.Extended.UI"),Sys.Extended.UI.DropShadowBehavior=function(t){Sys.Extended.UI.DropShadowBehavior.initializeBase(this,[t]),this._opacity=1,this._width=5,this._shadowDiv=null,this._trackPosition=null,this._trackPositionDelay=50,this._timer=null,this._tickHandler=null,this._roundedBehavior=null,this._shadowRoundedBehavior=null,this._rounded=!1,this._radius=5,this._lastX=null,this._lastY=null,this._lastW=null,this._lastH=null},Sys.Extended.UI.DropShadowBehavior.prototype={initialize:function(){Sys.Extended.UI.DropShadowBehavior.callBaseMethod(this,"initialize"),e=this.get_element(),"absolute"!=$common.getCurrentStyle(e,"position",e.style.position)&&(e.style.position="relative"),this._rounded&&this.setupRounded(),this._trackPosition&&this.startTimer(),this.setShadow()},dispose:function(){this.stopTimer(),this.disposeShadowDiv(),Sys.Extended.UI.DropShadowBehavior.callBaseMethod(this,"dispose")},buildShadowDiv:function(){if(e=this.get_element(),this.get_isInitialized()&&e&&this._width&&void 0==e.style.boxShadow&&void 0==e.style.MozBoxShadow&&void 0==e.style.WebkitBoxShadow){var t=document.createElement("DIV");t.style.backgroundColor="black",t.style.position="absolute",e.id&&(t.id=e.id+"_DropShadow"),this._shadowDiv=t,e.parentNode.appendChild(t),this._rounded?(this._shadowDiv.style.height=Math.max(0,e.offsetHeight-2*this._radius)+"px",this._shadowRoundedBehavior?this._shadowRoundedBehavior.set_radius(this._radius):this._shadowRoundedBehavior=$create(Sys.Extended.UI.RoundedCornersBehavior,{Radius:this._radius},null,null,this._shadowDiv)):this._shadowRoundedBehavior&&this._shadowRoundedBehavior.set_radius(0),1!=this._opacity&&this.setupOpacity(),this.setShadow(!1,!0),this.updateZIndex()}},disposeShadowDiv:function(){this._shadowDiv&&(this._shadowDiv.parentNode&&this._shadowDiv.parentNode.removeChild(this._shadowDiv),this._shadowDiv=null),this._shadowRoundedBehavior&&(this._shadowRoundedBehavior.dispose(),this._shadowRoundedBehavior=null)},onTimerTick:function(){this.setShadow()},startTimer:function(){this._timer||(this._tickHandler||(this._tickHandler=Function.createDelegate(this,this.onTimerTick)),this._timer=new Sys.Timer,this._timer.set_interval(this._trackPositionDelay),this._timer.add_tick(this._tickHandler),this._timer.set_enabled(!0))},stopTimer:function(){this._timer&&(this._timer.remove_tick(this._tickHandler),this._timer.set_enabled(!1),this._timer.dispose(),this._timer=null)},setShadow:function(t,i){if(e=this.get_element(),this.get_isInitialized()&&e&&(this._width||t))if(void 0==e.style.boxShadow&&void 0==e.style.MozBoxShadow&&void 0==e.style.WebkitBoxShadow){var s=this._shadowDiv;s||this.buildShadowDiv();var o={x:e.offsetLeft,y:e.offsetTop};if(t||this._lastX!=o.x||this._lastY!=o.y||!s){this._lastX=o.x,this._lastY=o.y;var d=this.get_width();o.x+=d,o.y+=d,$common.setLocation(this._shadowDiv,o)}var h=e.offsetHeight,d=e.offsetWidth;!t&&h==this._lastH&&d==this._lastW&&s||(this._lastW=d,this._lastH=h,this._rounded&&s&&!i?(this.disposeShadowDiv(),this.setShadow()):(this._shadowDiv.style.width=d+"px",this._shadowDiv.style.height=h+"px")),this._shadowDiv&&(this._shadowDiv.style.visibility=$common.getCurrentStyle(e,"visibility"))}else{var a;a=".25"==this._opacity?this._width+"px "+this._width+"px "+this._width+"px #D3D3D3":".5"==this._opacity?this._width+"px "+this._width+"px "+this._width+"px #778899":".75"==this._opacity?this._width+"px "+this._width+"px "+this._width+"px #808080":this._width+"px "+this._width+"px "+this._width+"px #000",void 0!=e.style.boxShadow?e.style.boxShadow=a:void 0!=e.style.MozBoxShadow?e.style.MozBoxShadow=a:void 0!=e.style.WebkitBoxShadow&&(e.style.WebkitBoxShadow=a)}},setupOpacity:function(){this.get_isInitialized()&&this._shadowDiv&&$common.setElementOpacity(this._shadowDiv,this._opacity)},setupRounded:function(){!this._roundedBehavior&&this._rounded&&(this._roundedBehavior=$create(Sys.Extended.UI.RoundedCornersBehavior,null,null,null,this.get_element())),this._roundedBehavior&&this._roundedBehavior.set_radius(this._rounded?this._radius:0)},updateZIndex:function(){if(this._shadowDiv){var t=this.get_element(),i=t.style.zIndex,e=this._shadowDiv.style.zIndex;e&&i&&i>e||(i=Math.max(2,i),e=i-1,t.style.zIndex=i,this._shadowDiv.style.zIndex=e)}},updateRoundedCorners:function(){this.get_isInitialized()&&(this.setupRounded(),this.disposeShadowDiv(),this.setShadow())},get_opacity:function(){return this._opacity},set_opacity:function(t){this._opacity!=t&&(this._opacity=t,this.setShadow(),this.setupOpacity(),this.raisePropertyChanged("opacity"))},get_Opacity:function(){return Sys.Extended.Deprecated("get_Opacity","get_opacity"),this.get_opacity()},set_Opacity:function(t){Sys.Extended.Deprecated("set_Opacity","set_opacity"),this.set_opacity(t)},get_rounded:function(){return this._rounded},set_rounded:function(t){t!=this._rounded&&(this._rounded=t,this.updateRoundedCorners(),this.raisePropertyChanged("rounded"))},get_Rounded:function(){return Sys.Extended.Deprecated("get_Rounded","get_rounded"),this.get_rounded()},set_Rounded:function(t){Sys.Extended.Deprecated("set_Rounded","set_rounded"),this.set_rounded(t)},get_radius:function(){return this._radius},set_radius:function(t){t!=this._radius&&(this._radius=t,this.updateRoundedCorners(),this.raisePropertyChanged("radius"))},get_Radius:function(){return Sys.Extended.Deprecated("get_Radius","get_radius"),this.get_radius()},set_Radius:function(t){Sys.Extended.Deprecated("set_Radius","set_radius"),this.set_radius(t)},get_width:function(){return this._width},set_width:function(t){t!=this._width&&(this._width=t,this._shadowDiv&&$common.setVisible(this._shadowDiv,t>0),this.setShadow(!0),this.raisePropertyChanged("width"))},get_Width:function(){return Sys.Extended.Deprecated("get_Width","get_width"),this.get_width()},set_Width:function(t){Sys.Extended.Deprecated("set_Width","set_width"),this.set_width(t)},get_trackPositionDelay:function(){return this._trackPositionDelay},set_trackPositionDelay:function(t){t!=this._trackPositionDelay&&(this._trackPositionDelay=t,e||(e=this.get_element()),void 0==e.style.boxShadow&&void 0==e.style.MozBoxShadow&&void 0==e.style.WebkitBoxShadow&&(this._trackPosition&&(this.stopTimer(),this.startTimer()),this.raisePropertyChanged("trackPositionDelay")))},get_TrackPositionDelay:function(){return Sys.Extended.Deprecated("get_TrackPositionDelay","get_trackPositionDelay"),this.get_trackPositionDelay()},set_TrackPositionDelay:function(t){Sys.Extended.Deprecated("set_TrackPositionDelay","set_trackPositionDelay"),this.set_trackPositionDelay(t)},get_trackPosition:function(){return this._trackPosition},set_trackPosition:function(t){t!=this._trackPosition&&(this._trackPosition=t,e||(e=this.get_element()),void 0==e.style.boxShadow&&void 0==e.style.MozBoxShadow&&void 0==e.style.WebkitBoxShadow&&(this.get_element()&&(t?this.startTimer():this.stopTimer()),this.raisePropertyChanged("trackPosition")))},get_TrackPosition:function(){return Sys.Extended.Deprecated("get_TrackPosition","get_trackPosition"),this.get_trackPosition()},set_TrackPosition:function(t){Sys.Extended.Deprecated("set_TrackPosition","set_trackPosition"),this.set_trackPosition(t)}},Sys.Extended.UI.DropShadowBehavior.registerClass("Sys.Extended.UI.DropShadowBehavior",Sys.Extended.UI.BehaviorBase); |