blob: 64e08f671d3687003457f1a368472f753901caac [file] [log] [blame]
/*
Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
Available via Academic Free License >= 2.1 OR the modified BSD license.
see: http://dojotoolkit.org/license for details
*/
if(!dojo._hasResource["dojox.fx.Shadow"]){
dojo._hasResource["dojox.fx.Shadow"]=true;
dojo.provide("dojox.fx.Shadow");
dojo.experimental("dojox.fx.Shadow");
dojo.require("dijit._Widget");
dojo.require("dojo.NodeList-fx");
dojo.declare("dojox.fx.Shadow",dijit._Widget,{shadowPng:dojo.moduleUrl("dojox.fx","resources/shadow"),shadowThickness:7,shadowOffset:3,opacity:0.75,animate:false,node:null,startup:function(){
this.inherited(arguments);
this.node.style.position="relative";
this.pieces={};
var x1=-1*this.shadowThickness;
var y0=this.shadowOffset;
var y1=this.shadowOffset+this.shadowThickness;
this._makePiece("tl","top",y0,"left",x1);
this._makePiece("l","top",y1,"left",x1,"scale");
this._makePiece("tr","top",y0,"left",0);
this._makePiece("r","top",y1,"left",0,"scale");
this._makePiece("bl","top",0,"left",x1);
this._makePiece("b","top",0,"left",0,"crop");
this._makePiece("br","top",0,"left",0);
this.nodeList=dojo.query(".shadowPiece",this.node);
this.setOpacity(this.opacity);
this.resize();
},_makePiece:function(_4,_5,_6,_7,_8,_9){
var _a;
var _b=this.shadowPng+_4.toUpperCase()+".png";
if(dojo.isIE<7){
_a=dojo.create("div");
_a.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+_b+"'"+(_9?", sizingMethod='"+_9+"'":"")+")";
}else{
_a=dojo.create("img",{src:_b});
}
_a.style.position="absolute";
_a.style[_5]=_6+"px";
_a.style[_7]=_8+"px";
_a.style.width=this.shadowThickness+"px";
_a.style.height=this.shadowThickness+"px";
dojo.addClass(_a,"shadowPiece");
this.pieces[_4]=_a;
this.node.appendChild(_a);
},setOpacity:function(n,_d){
if(dojo.isIE){
return;
}
if(!_d){
_d={};
}
if(this.animate){
var _e=[];
this.nodeList.forEach(function(_f){
_e.push(dojo._fade(dojo.mixin(_d,{node:_f,end:n})));
});
dojo.fx.combine(_e).play();
}else{
this.nodeList.style("opacity",n);
}
},setDisabled:function(_10){
if(_10){
if(this.disabled){
return;
}
if(this.animate){
this.nodeList.fadeOut().play();
}else{
this.nodeList.style("visibility","hidden");
}
this.disabled=true;
}else{
if(!this.disabled){
return;
}
if(this.animate){
this.nodeList.fadeIn().play();
}else{
this.nodeList.style("visibility","visible");
}
this.disabled=false;
}
},resize:function(_11){
var x;
var y;
if(_11){
x=_11.x;
y=_11.y;
}else{
var co=dojo._getBorderBox(this.node);
x=co.w;
y=co.h;
}
var _15=y-(this.shadowOffset+this.shadowThickness);
if(_15<0){
_15=0;
}
if(y<1){
y=1;
}
if(x<1){
x=1;
}
with(this.pieces){
l.style.height=_15+"px";
r.style.height=_15+"px";
b.style.width=x+"px";
bl.style.top=y+"px";
b.style.top=y+"px";
br.style.top=y+"px";
tr.style.left=x+"px";
r.style.left=x+"px";
br.style.left=x+"px";
}
}});
}