| dojo.provide("dojo.widget.Rounded"); |
| dojo.widget.tags.addParseTreeHandler("dojo:rounded"); |
| dojo.require("dojo.widget.*"); |
| dojo.require("dojo.widget.ContentPane"); |
| dojo.require("dojo.html.style"); |
| dojo.require("dojo.html.display"); |
| dojo.require("dojo.gfx.color"); |
| dojo.deprecated("dojo.widget.Rounded will be removed in version 0.5; you can now apply rounded corners to any block element using dojo.lfx.rounded.","0.5"); |
| dojo.widget.defineWidget("dojo.widget.Rounded",dojo.widget.ContentPane,{isSafari:dojo.render.html.safari,boxMargin:"50px",radius:14,domNode:"",corners:"TR,TL,BR,BL",antiAlias:true,fillInTemplate:function(_1,_2){ |
| dojo.widget.Rounded.superclass.fillInTemplate.call(this,_1,_2); |
| dojo.html.insertCssFile(this.templateCssPath); |
| if(this.domNode.style.height<=0){ |
| var _3=(this.radius*1)+this.domNode.clientHeight; |
| this.domNode.style.height=_3+"px"; |
| } |
| if(this.domNode.style.width<=0){ |
| var _4=(this.radius*1)+this.domNode.clientWidth; |
| this.domNode.style.width=_4+"px"; |
| } |
| var _5=["TR","TL","BR","BL"]; |
| var _6=this.corners.split(","); |
| this.settings={antiAlias:this.antiAlias}; |
| var _7=function(_8){ |
| var _9=_8.toLowerCase(); |
| if(dojo.lang.inArray(_6,_8)){ |
| this.settings[_9]={radius:this.radius,enabled:true}; |
| }else{ |
| this.settings[_9]={radius:0}; |
| } |
| }; |
| dojo.lang.forEach(_5,_7,this); |
| this.domNode.style.margin=this.boxMargin; |
| this.curvyCorners(this.settings); |
| this.applyCorners(); |
| },curvyCorners:function(_a){ |
| this.box=this.domNode; |
| this.topContainer=null; |
| this.bottomContainer=null; |
| this.masterCorners=[]; |
| var _b=dojo.html.getStyle(this.box,"height"); |
| if(_b==""){ |
| _b="0px"; |
| } |
| var _c=dojo.html.getStyle(this.box,"width"); |
| var _d=dojo.html.getStyle(this.box,"borderTopWidth"); |
| if(_d==""){ |
| _d="0px"; |
| } |
| var _e=dojo.html.getStyle(this.box,"borderTopColor"); |
| if(_d>0){ |
| this.antiAlias=true; |
| } |
| var _f=dojo.html.getStyle(this.box,"backgroundColor"); |
| var _10=dojo.html.getStyle(this.box,"backgroundImage"); |
| var _11=dojo.html.getStyle(this.box,"position"); |
| this.boxHeight=parseInt(((_b!=""&&_b!="auto"&&_b.indexOf("%")==-1)?_b.substring(0,_b.indexOf("px")):this.box.scrollHeight)); |
| this.boxWidth=parseInt(((_c!=""&&_c!="auto"&&_c.indexOf("%")==-1)?_c.substring(0,_c.indexOf("px")):this.box.scrollWidth)); |
| this.borderWidth=parseInt(((_d!=""&&_d.indexOf("px")!==-1)?_d.slice(0,_d.indexOf("px")):0)); |
| var _12=new dojo.gfx.color.Color(_f); |
| this.boxColour=((_f!=""&&_f!="transparent")?((_f.substr(0,3)=="rgb")?this.rgb2Hex(_f):_f):"#ffffff"); |
| this.borderColour=((_e!=""&&_e!="transparent"&&this.borderWidth>0)?((_e.substr(0,3)=="rgb")?this.rgb2Hex(_e):_e):this.boxColour); |
| this.borderString=this.borderWidth+"px"+" solid "+this.borderColour; |
| this.backgroundImage=((_10!="none")?_10:""); |
| if(_11!="absolute"){ |
| this.box.style.position="relative"; |
| } |
| this.applyCorners=function(){ |
| for(var t=0;t<2;t++){ |
| switch(t){ |
| case 0: |
| if(this.settings.tl.enabled||this.settings.tr.enabled){ |
| var _14=document.createElement("DIV"); |
| with(_14.style){ |
| width="100%"; |
| fontSize="1px"; |
| overflow="hidden"; |
| position="absolute"; |
| paddingLeft=this.borderWidth+"px"; |
| paddingRight=this.borderWidth+"px"; |
| var _15=Math.max(this.settings.tl?this.settings.tl.radius:0,this.settings.tr?this.settings.tr.radius:0); |
| height=_15+"px"; |
| top=0-_15+"px"; |
| left=0-this.borderWidth+"px"; |
| } |
| this.topContainer=this.box.appendChild(_14); |
| } |
| break; |
| case 1: |
| if(this.settings.bl.enabled||this.settings.br.enabled){ |
| var _14=document.createElement("DIV"); |
| with(_14.style){ |
| width="100%"; |
| fontSize="1px"; |
| overflow="hidden"; |
| position="absolute"; |
| paddingLeft=this.borderWidth+"px"; |
| paddingRight=this.borderWidth+"px"; |
| var _16=Math.max(this.settings.bl?this.settings.bl.radius:0,this.settings.br?this.settings.br.radius:0); |
| height=_16+"px"; |
| bottom=0-_16+"px"; |
| left=0-this.borderWidth+"px"; |
| } |
| this.bottomContainer=this.box.appendChild(_14); |
| } |
| break; |
| } |
| } |
| if(this.topContainer){ |
| this.box.style.borderTopWidth="0px"; |
| } |
| if(this.bottomContainer){ |
| this.box.style.borderBottomWidth="0px"; |
| } |
| var _17=["tr","tl","br","bl"]; |
| for(var i in _17){ |
| var cc=_17[i]; |
| if(!this.settings[cc]){ |
| if(((cc=="tr"||cc=="tl")&&this.topContainer!=null)||((cc=="br"||cc=="bl")&&this.bottomContainer!=null)){ |
| var _1a=document.createElement("DIV"); |
| _1a.style.position="relative"; |
| _1a.style.fontSize="1px"; |
| _1a.style.overflow="hidden"; |
| if(this.backgroundImage==""){ |
| _1a.style.backgroundColor=this.boxColour; |
| }else{ |
| _1a.style.backgroundImage=this.backgroundImage; |
| } |
| switch(cc){ |
| case "tl": |
| with(_1a.style){ |
| height=_15-this.borderWidth+"px"; |
| marginRight=this.settings.tr.radius-(this.borderWidth*2)+"px"; |
| borderLeft=this.borderString; |
| borderTop=this.borderString; |
| left=-this.borderWidth+"px"; |
| } |
| break; |
| case "tr": |
| with(_1a.style){ |
| height=_15-this.borderWidth+"px"; |
| marginLeft=this.settings.tl.radius-(this.borderWidth*2)+"px"; |
| borderRight=this.borderString; |
| borderTop=this.borderString; |
| backgroundPosition="-"+this.boxWidth+"px 0px"; |
| left=this.borderWidth+"px"; |
| } |
| break; |
| case "bl": |
| with(_1a.style){ |
| height=_16-this.borderWidth+"px"; |
| marginRight=this.settings.br.radius-(this.borderWidth*2)+"px"; |
| borderLeft=this.borderString; |
| borderBottom=this.borderString; |
| left=-this.borderWidth+"px"; |
| } |
| break; |
| case "br": |
| with(_1a.style){ |
| height=_16-this.borderWidth+"px"; |
| marginLeft=this.settings.bl.radius-(this.borderWidth*2)+"px"; |
| borderRight=this.borderString; |
| borderBottom=this.borderString; |
| left=this.borderWidth+"px"; |
| } |
| break; |
| } |
| } |
| }else{ |
| if(this.masterCorners[this.settings[cc].radius]){ |
| var _1a=this.masterCorners[this.settings[cc].radius].cloneNode(true); |
| }else{ |
| var _1a=document.createElement("DIV"); |
| with(_1a.style){ |
| height=this.settings[cc].radius+"px"; |
| width=this.settings[cc].radius+"px"; |
| position="absolute"; |
| fontSize="1px"; |
| overflow="hidden"; |
| } |
| var _1b=parseInt(this.settings[cc].radius-this.borderWidth); |
| for(var _1c=0,j=this.settings[cc].radius;_1c<j;_1c++){ |
| if((_1c+1)>=_1b){ |
| var y1=-1; |
| }else{ |
| var y1=(Math.floor(Math.sqrt(Math.pow(_1b,2)-Math.pow((_1c+1),2)))-1); |
| } |
| if(_1b!=j){ |
| if((_1c)>=_1b){ |
| var y2=-1; |
| }else{ |
| var y2=Math.ceil(Math.sqrt(Math.pow(_1b,2)-Math.pow(_1c,2))); |
| } |
| if((_1c+1)>=j){ |
| var y3=-1; |
| }else{ |
| var y3=(Math.floor(Math.sqrt(Math.pow(j,2)-Math.pow((_1c+1),2)))-1); |
| } |
| } |
| if((_1c)>=j){ |
| var y4=-1; |
| }else{ |
| var y4=Math.ceil(Math.sqrt(Math.pow(j,2)-Math.pow(_1c,2))); |
| } |
| if(y1>-1){ |
| this.drawPixel(_1c,0,this.boxColour,100,(y1+1),_1a,-1,this.settings[cc].radius); |
| } |
| if(_1b!=j){ |
| if(this.antiAlias){ |
| for(var _22=(y1+1);_22<y2;_22++){ |
| if(this.backgroundImage!=""){ |
| var _23=(this.pixelFraction(_1c,_22,_1b)*100); |
| if(_23<30){ |
| this.drawPixel(_1c,_22,this.borderColour,100,1,_1a,0,this.settings[cc].radius); |
| }else{ |
| this.drawPixel(_1c,_22,this.borderColour,100,1,_1a,-1,this.settings[cc].radius); |
| } |
| }else{ |
| var _24=dojo.gfx.color.blend(this.boxColour,this.borderColour,this.pixelFraction(_1c,_22,_1b)); |
| this.drawPixel(_1c,_22,_24,100,1,_1a,0,this.settings[cc].radius); |
| } |
| } |
| } |
| if(y3>=y2){ |
| if(y1==-1){ |
| y1=0; |
| } |
| this.drawPixel(_1c,y2,this.borderColour,100,(y3-y2+1),_1a,0,this.settings[cc].radius); |
| } |
| var _25=this.borderColour; |
| }else{ |
| var _25=this.boxColour; |
| var y3=y1; |
| } |
| if(this.antiAlias){ |
| for(var _22=(y3+1);_22<y4;_22++){ |
| this.drawPixel(_1c,_22,_25,(this.pixelFraction(_1c,_22,j)*100),1,_1a,((this.borderWidth>0)?0:-1),this.settings[cc].radius); |
| } |
| } |
| } |
| this.masterCorners[this.settings[cc].radius]=_1a.cloneNode(true); |
| } |
| if(cc!="br"){ |
| for(var t=0,k=_1a.childNodes.length;t<k;t++){ |
| var _27=_1a.childNodes[t]; |
| var _28=parseInt(_27.style.top.substring(0,_27.style.top.indexOf("px"))); |
| var _29=parseInt(_27.style.left.substring(0,_27.style.left.indexOf("px"))); |
| var _2a=parseInt(_27.style.height.substring(0,_27.style.height.indexOf("px"))); |
| if(cc=="tl"||cc=="bl"){ |
| _27.style.left=this.settings[cc].radius-_29-1+"px"; |
| } |
| if(cc=="tr"||cc=="tl"){ |
| _27.style.top=this.settings[cc].radius-_2a-_28+"px"; |
| } |
| var _2b; |
| switch(cc){ |
| case "tr": |
| _2b=(-1*(Math.abs((this.boxWidth-this.settings[cc].radius+this.borderWidth)+_29)-(Math.abs(this.settings[cc].radius-_2a-_28-this.borderWidth)))); |
| _27.style.backgroundPosition=_2b+"px"; |
| break; |
| case "tl": |
| _2b=(-1*(Math.abs((this.settings[cc].radius-_29-1)-this.borderWidth)-(Math.abs(this.settings[cc].radius-_2a-_28-this.borderWidth)))); |
| _27.style.backgroundPosition=_2b+"px"; |
| break; |
| case "bl": |
| _2b=(-1*(Math.abs((this.settings[cc].radius-_29-1)-this.borderWidth)-(Math.abs((this.boxHeight+this.settings[cc].radius+_28)-this.borderWidth)))); |
| _27.style.backgroundPosition=_2b+"px"; |
| break; |
| } |
| } |
| } |
| } |
| if(_1a){ |
| switch(cc){ |
| case "tl": |
| if(_1a.style.position=="absolute"){ |
| _1a.style.top="0px"; |
| } |
| if(_1a.style.position=="absolute"){ |
| _1a.style.left="0px"; |
| } |
| if(this.topContainer){ |
| this.topContainer.appendChild(_1a); |
| } |
| break; |
| case "tr": |
| if(_1a.style.position=="absolute"){ |
| _1a.style.top="0px"; |
| } |
| if(_1a.style.position=="absolute"){ |
| _1a.style.right="0px"; |
| } |
| if(this.topContainer){ |
| this.topContainer.appendChild(_1a); |
| } |
| break; |
| case "bl": |
| if(_1a.style.position=="absolute"){ |
| _1a.style.bottom="0px"; |
| } |
| if(_1a.style.position=="absolute"){ |
| _1a.style.left="0px"; |
| } |
| if(this.bottomContainer){ |
| this.bottomContainer.appendChild(_1a); |
| } |
| break; |
| case "br": |
| if(_1a.style.position=="absolute"){ |
| _1a.style.bottom="0px"; |
| } |
| if(_1a.style.position=="absolute"){ |
| _1a.style.right="0px"; |
| } |
| if(this.bottomContainer){ |
| this.bottomContainer.appendChild(_1a); |
| } |
| break; |
| } |
| } |
| } |
| var _2c=[]; |
| _2c["t"]=this.settings.tl.enabled&&this.settings.tr.enabled?Math.abs(this.settings.tl.radius-this.settings.tr.radius):0; |
| _2c["b"]=this.settings.bl.enabled&&this.settings.br.enabled?Math.abs(this.settings.bl.radius-this.settings.br.radius):0; |
| for(var z in _2c){ |
| if(_2c[z]){ |
| var _2e=((this.settings[z+"l"].radius<this.settings[z+"r"].radius)?z+"l":z+"r"); |
| var _2f=document.createElement("DIV"); |
| with(_2f.style){ |
| height=_2c[z]+"px"; |
| width=this.settings[_2e].radius+"px"; |
| position="absolute"; |
| fontSize="1px"; |
| overflow="hidden"; |
| backgroundColor=this.boxColour; |
| } |
| switch(_2e){ |
| case "tl": |
| with(_2f.style){ |
| bottom="0px"; |
| left="0px"; |
| borderLeft=this.borderString; |
| } |
| this.topContainer.appendChild(_2f); |
| break; |
| case "tr": |
| with(_2f.style){ |
| bottom="0px"; |
| right="0px"; |
| borderRight=this.borderString; |
| } |
| this.topContainer.appendChild(_2f); |
| break; |
| case "bl": |
| with(_2f.style){ |
| top="0px"; |
| left="0px"; |
| borderLeft=this.borderString; |
| } |
| this.bottomContainer.appendChild(_2f); |
| break; |
| case "br": |
| with(_2f.style){ |
| top="0px"; |
| right="0px"; |
| borderRight=this.borderString; |
| } |
| this.bottomContainer.appendChild(_2f); |
| break; |
| } |
| } |
| var _30=document.createElement("DIV"); |
| with(_30.style){ |
| position="relative"; |
| fontSize="1px"; |
| overflow="hidden"; |
| backgroundColor=this.boxColour; |
| } |
| switch(z){ |
| case "t": |
| if(this.topContainer){ |
| with(_30.style){ |
| height=_15-this.borderWidth+"px"; |
| marginLeft=this.settings.tl.radius-this.borderWidth+"px"; |
| marginRight=this.settings.tr.radius-this.borderWidth+"px"; |
| borderTop=this.borderString; |
| } |
| this.topContainer.appendChild(_30); |
| } |
| break; |
| case "b": |
| if(this.bottomContainer){ |
| with(_30.style){ |
| height=_16-this.borderWidth+"px"; |
| marginLeft=this.settings.bl.radius-this.borderWidth+"px"; |
| marginRight=this.settings.br.radius-this.borderWidth+"px"; |
| borderBottom=this.borderString; |
| } |
| this.bottomContainer.appendChild(_30); |
| } |
| break; |
| } |
| } |
| }; |
| this.drawPixel=function(_31,_32,_33,_34,_35,_36,_37,_38){ |
| var _39=document.createElement("DIV"); |
| _39.style.height=_35+"px"; |
| _39.style.width="1px"; |
| _39.style.position="absolute"; |
| _39.style.fontSize="1px"; |
| _39.style.overflow="hidden"; |
| if(_37==-1&&this.backgroundImage!=""){ |
| _39.style.backgroundImage=this.backgroundImage; |
| _39.style.backgroundPosition="-"+(this.boxWidth-(_38-_31)+this.borderWidth)+"px -"+((this.boxHeight+_38+_32)-this.borderWidth)+"px"; |
| }else{ |
| _39.style.backgroundColor=_33; |
| } |
| if(_34!=100){ |
| dojo.html.setOpacity(_39,_34); |
| } |
| _39.style.top=_32+"px"; |
| _39.style.left=_31+"px"; |
| _36.appendChild(_39); |
| }; |
| },pixelFraction:function(x,y,r){ |
| var _3d=0; |
| var _3e=[]; |
| var _3f=[]; |
| var _40=0; |
| var _41=""; |
| var _42=Math.sqrt((Math.pow(r,2)-Math.pow(x,2))); |
| if((_42>=y)&&(_42<(y+1))){ |
| _41="Left"; |
| _3e[_40]=0; |
| _3f[_40]=_42-y; |
| _40=_40+1; |
| } |
| var _42=Math.sqrt((Math.pow(r,2)-Math.pow(y+1,2))); |
| if((_42>=x)&&(_42<(x+1))){ |
| _41=_41+"Top"; |
| _3e[_40]=_42-x; |
| _3f[_40]=1; |
| _40=_40+1; |
| } |
| var _42=Math.sqrt((Math.pow(r,2)-Math.pow(x+1,2))); |
| if((_42>=y)&&(_42<(y+1))){ |
| _41=_41+"Right"; |
| _3e[_40]=1; |
| _3f[_40]=_42-y; |
| _40=_40+1; |
| } |
| var _42=Math.sqrt((Math.pow(r,2)-Math.pow(y,2))); |
| if((_42>=x)&&(_42<(x+1))){ |
| _41=_41+"Bottom"; |
| _3e[_40]=_42-x; |
| _3f[_40]=0; |
| } |
| switch(_41){ |
| case "LeftRight": |
| _3d=Math.min(_3f[0],_3f[1])+((Math.max(_3f[0],_3f[1])-Math.min(_3f[0],_3f[1]))/2); |
| break; |
| case "TopRight": |
| _3d=1-(((1-_3e[0])*(1-_3f[1]))/2); |
| break; |
| case "TopBottom": |
| _3d=Math.min(_3e[0],_3e[1])+((Math.max(_3e[0],_3e[1])-Math.min(_3e[0],_3e[1]))/2); |
| break; |
| case "LeftBottom": |
| _3d=(_3f[0]*_3e[1])/2; |
| break; |
| default: |
| _3d=1; |
| } |
| return _3d; |
| },rgb2Hex:function(_43){ |
| try{ |
| var _44=this.rgb2Array(_43); |
| var red=parseInt(_44[0]); |
| var _46=parseInt(_44[1]); |
| var _47=parseInt(_44[2]); |
| var _48="#"+this.intToHex(red)+this.intToHex(_46)+this.intToHex(_47); |
| } |
| catch(e){ |
| alert("There was an error converting the RGB value to Hexadecimal in function rgb2Hex"); |
| } |
| return _48; |
| },intToHex:function(_49){ |
| var _4a=_49/16; |
| var rem=_49%16; |
| var _4a=_4a-(rem/16); |
| var _4c=this.makeHex(_4a); |
| var _4d=this.makeHex(rem); |
| return _4c+""+_4d; |
| },makeHex:function(x){ |
| if((x>=0)&&(x<=9)){ |
| return x; |
| }else{ |
| switch(x){ |
| case 10: |
| return "A"; |
| case 11: |
| return "B"; |
| case 12: |
| return "C"; |
| case 13: |
| return "D"; |
| case 14: |
| return "E"; |
| case 15: |
| return "F"; |
| } |
| } |
| },rgb2Array:function(_4f){ |
| var _50=_4f.substring(4,_4f.indexOf(")")); |
| var _51=_50.split(", "); |
| return _51; |
| }}); |