/* 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.gfx.vml"]){dojo._hasResource["dojox.gfx.vml"]=true;dojo.provide("dojox.gfx.vml");dojo.require("dojox.gfx._base");dojo.require("dojox.gfx.shape");dojo.require("dojox.gfx.path");dojo.require("dojox.gfx.arc");(function(){var d=dojo,g=dojox.gfx,m=g.matrix,gs=g.shape,_1=g.vml;_1.xmlns="urn:schemas-microsoft-com:vml";_1.text_alignment={start:"left",middle:"center",end:"right"};_1._parseFloat=function(_2){return _2.match(/^\d+f$/i)?parseInt(_2)/65536:parseFloat(_2);};_1._bool={"t":1,"true":1};d.extend(g.Shape,{setFill:function(_3){if(!_3){this.fillStyle=null;this.rawNode.filled="f";return this;}var i,f,fo,a,s;if(typeof _3=="object"&&"type" in _3){switch(_3.type){case "linear":var _4=this._getRealMatrix();s=[];f=g.makeParameters(g.defaultLinearGradient,_3);a=f.colors;this.fillStyle=f;d.forEach(a,function(v,i,a){a[i].color=g.normalizeColor(v.color);});if(a[0].offset>0){s.push("0 "+a[0].color.toHex());}for(i=0;i0){a.push({offset:1,color:g.normalizeColor(f.colors[0].color)});}d.forEach(f.colors,function(v,i){a.push({offset:1-v.offset*c,color:g.normalizeColor(v.color)});});i=a.length-1;while(i>=0&&a[i].offset<0){--i;}if(i2){a.pop();}}i=a.length-1,s=[];if(a[i].offset>0){s.push("0 "+a[i].color.toHex());}for(;i>=0;--i){s.push(a[i].offset.toFixed(8)+" "+a[i].color.toHex());}fo=this.rawNode.fill;fo.colors.value=s.join(";");fo.method="sigma";fo.type="gradientradial";if(isNaN(w)||isNaN(h)||isNaN(l)||isNaN(t)){fo.focusposition="0.5 0.5";}else{fo.focusposition=((f.cx-l)/w).toFixed(8)+" "+((f.cy-t)/h).toFixed(8);}fo.focussize="0 0";fo.on=true;break;case "pattern":f=g.makeParameters(g.defaultPattern,_3);this.fillStyle=f;fo=this.rawNode.fill;fo.type="tile";fo.src=f.src;if(f.width&&f.height){fo.size.x=g.px2pt(f.width);fo.size.y=g.px2pt(f.height);}fo.alignShape="f";fo.position.x=0;fo.position.y=0;fo.origin.x=f.width?f.x/f.width:0;fo.origin.y=f.height?f.y/f.height:0;fo.on=true;break;}this.rawNode.fill.opacity=1;return this;}this.fillStyle=g.normalizeColor(_3);fo=this.rawNode.fill;if(!fo){fo=this.rawNode.ownerDocument.createElement("v:fill");}fo.method="any";fo.type="solid";fo.opacity=this.fillStyle.a;this.rawNode.fillcolor=this.fillStyle.toHex();this.rawNode.filled=true;return this;},setStroke:function(_7){if(!_7){this.strokeStyle=null;this.rawNode.stroked="f";return this;}if(typeof _7=="string"||d.isArray(_7)||_7 instanceof d.Color){_7={color:_7};}var s=this.strokeStyle=g.makeParameters(g.defaultStroke,_7);s.color=g.normalizeColor(s.color);var rn=this.rawNode;rn.stroked=true;rn.strokecolor=s.color.toCss();rn.strokeweight=s.width+"px";if(rn.stroke){rn.stroke.opacity=s.color.a;rn.stroke.endcap=this._translate(this._capMap,s.cap);if(typeof s.join=="number"){rn.stroke.joinstyle="miter";rn.stroke.miterlimit=s.join;}else{rn.stroke.joinstyle=s.join;}rn.stroke.dashstyle=s.style=="none"?"Solid":s.style;}return this;},_capMap:{butt:"flat"},_capMapReversed:{flat:"butt"},_translate:function(_8,_9){return (_9 in _8)?_8[_9]:_9;},_applyTransform:function(){if(this.fillStyle&&this.fillStyle.type=="linear"){this.setFill(this.fillStyle);}var _a=this._getRealMatrix();if(!_a){return this;}var _b=this.rawNode.skew;if(typeof _b=="undefined"){for(var i=0;i7){var _18=this.rawNode.ownerDocument.createElement("v:roundrect");_18.arcsize=r;_18.style.display="inline-block";this.rawNode=_18;}else{this.rawNode.arcsize=r;}if(_16){if(_17){_16.insertBefore(this.rawNode,_17);}else{_16.appendChild(this.rawNode);}}var _19=this.rawNode.style;_19.left=_15.x.toFixed();_19.top=_15.y.toFixed();_19.width=(typeof _15.width=="string"&&_15.width.indexOf("%")>=0)?_15.width:_15.width.toFixed();_19.height=(typeof _15.width=="string"&&_15.height.indexOf("%")>=0)?_15.height:_15.height.toFixed();return this.setTransform(this.matrix).setFill(this.fillStyle).setStroke(this.strokeStyle);}});g.Rect.nodeType="roundrect";dojo.declare("dojox.gfx.Ellipse",gs.Ellipse,{setShape:function(_1a){var _1b=this.shape=g.makeParameters(this.shape,_1a);this.bbox=null;var _1c=this.rawNode.style;_1c.left=(_1b.cx-_1b.rx).toFixed();_1c.top=(_1b.cy-_1b.ry).toFixed();_1c.width=(_1b.rx*2).toFixed();_1c.height=(_1b.ry*2).toFixed();return this.setTransform(this.matrix);}});g.Ellipse.nodeType="oval";dojo.declare("dojox.gfx.Circle",gs.Circle,{setShape:function(_1d){var _1e=this.shape=g.makeParameters(this.shape,_1d);this.bbox=null;var _1f=this.rawNode.style;_1f.left=(_1e.cx-_1e.r).toFixed();_1f.top=(_1e.cy-_1e.r).toFixed();_1f.width=(_1e.r*2).toFixed();_1f.height=(_1e.r*2).toFixed();return this;}});g.Circle.nodeType="oval";dojo.declare("dojox.gfx.Line",gs.Line,{constructor:function(_20){if(_20){_20.setAttribute("dojoGfxType","line");}},setShape:function(_21){var _22=this.shape=g.makeParameters(this.shape,_21);this.bbox=null;this.rawNode.path.v="m"+_22.x1.toFixed()+" "+_22.y1.toFixed()+"l"+_22.x2.toFixed()+" "+_22.y2.toFixed()+"e";return this.setTransform(this.matrix);}});g.Line.nodeType="shape";dojo.declare("dojox.gfx.Polyline",gs.Polyline,{constructor:function(_23){if(_23){_23.setAttribute("dojoGfxType","polyline");}},setShape:function(_24,_25){if(_24&&_24 instanceof Array){this.shape=g.makeParameters(this.shape,{points:_24});if(_25&&this.shape.points.length){this.shape.points.push(this.shape.points[0]);}}else{this.shape=g.makeParameters(this.shape,_24);}this.bbox=null;this._normalizePoints();var _26=[],p=this.shape.points;if(p.length>0){_26.push("m");_26.push(p[0].x.toFixed(),p[0].y.toFixed());if(p.length>1){_26.push("l");for(var i=1;i0&&_29.yy>0){s.filter="";s.width=Math.floor(_29.xx*_2b.width);s.height=Math.floor(_29.yy*_2b.height);s.left=Math.floor(_29.dx);s.top=Math.floor(_29.dy);}else{var ps=_2a.parentNode.style;s.left="0px";s.top="0px";s.width=ps.width;s.height=ps.height;_29=m.multiply(_29,{xx:_2b.width/parseInt(s.width),yy:_2b.height/parseInt(s.height)});var f=_2a.filters["DXImageTransform.Microsoft.Matrix"];if(f){f.M11=_29.xx;f.M12=_29.xy;f.M21=_29.yx;f.M22=_29.yy;f.Dx=_29.dx;f.Dy=_29.dy;}else{s.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+_29.xx+", M12="+_29.xy+", M21="+_29.yx+", M22="+_29.yy+", Dx="+_29.dx+", Dy="+_29.dy+")";}}return this;},_setDimensions:function(_2c,_2d){var r=this.rawNode,f=r.filters["DXImageTransform.Microsoft.Matrix"];if(f){var s=r.style;s.width=_2c;s.height=_2d;return this._applyTransform();}return this;}});g.Image.nodeType="rect";dojo.declare("dojox.gfx.Text",gs.Text,{constructor:function(_2e){if(_2e){_2e.setAttribute("dojoGfxType","text");}this.fontStyle=null;},_alignment:{start:"left",middle:"center",end:"right"},setShape:function(_2f){this.shape=g.makeParameters(this.shape,_2f);this.bbox=null;var r=this.rawNode,s=this.shape,x=s.x,y=s.y.toFixed(),_30;switch(s.align){case "middle":x-=5;break;case "end":x-=10;break;}_30="m"+x.toFixed()+","+y+"l"+(x+10).toFixed()+","+y+"e";var p=null,t=null,c=r.childNodes;for(var i=0;i2){p.push(" l");this._addArgs(p,n,2,l);}this.lastControl.type="";return p;},_moveToR:function(_49,_4a){return this._moveToA(this._adjustRelCrd(_4a,_49));},_lineToA:function(_4b){var p=[" l"],n=_4b instanceof Array?_4b:_4b.args;this._addArgs(p,n,0,n.length);this.lastControl.type="";return p;},_lineToR:function(_4c,_4d){return this._lineToA(this._adjustRelCrd(_4d,_4c));},_hLineToA:function(_4e,_4f){var p=[" l"],y=" "+_4f.y.toFixed(),n=_4e instanceof Array?_4e:_4e.args,l=n.length;for(var i=0;i7){rs.display="inline-block";}s._parent=p;s._nodes.push(c);p.style.width=_6e;p.style.height=_6f;cs.position="absolute";cs.width=_6e;cs.height=_6f;cs.clip="rect(0px "+_6e+" "+_6f+" 0px)";rs.position="absolute";rs.width=_6e;rs.height=_6f;r.coordsize=(_6e==="100%"?_6e:parseFloat(_6e))+" "+(_6f==="100%"?_6f:parseFloat(_6f));r.coordorigin="0 0";var b=s.bgNode=r.ownerDocument.createElement("v:rect"),bs=b.style;bs.left=bs.top=0;bs.width=rs.width;bs.height=rs.height;b.filled=b.stroked="f";r.appendChild(b);c.appendChild(r);p.appendChild(c);s.width=g.normalizedLength(_6e);s.height=g.normalizedLength(_6f);return s;};_1.Container={_init:function(){gs.Container._init.call(this);},add:function(_70){if(this!=_70.getParent()){this.rawNode.appendChild(_70.rawNode);if(!_70.getParent()){_70.setFill(_70.getFill());_70.setStroke(_70.getStroke());}gs.Container.add.apply(this,arguments);}return this;},remove:function(_71,_72){if(this==_71.getParent()){if(this.rawNode==_71.rawNode.parentNode){this.rawNode.removeChild(_71.rawNode);}gs.Container.remove.apply(this,arguments);}return this;},clear:function(){var r=this.rawNode;while(r.firstChild!=r.lastChild){if(r.firstChild!=this.bgNode){r.removeChild(r.firstChild);}if(r.lastChild!=this.bgNode){r.removeChild(r.lastChild);}}return gs.Container.clear.apply(this,arguments);},_moveChildToFront:gs.Container._moveChildToFront,_moveChildToBack:gs.Container._moveChildToBack};dojo.mixin(gs.Creator,{createGroup:function(){var _73=this.createObject(g.Group,null);var r=_73.rawNode.ownerDocument.createElement("v:rect");r.style.left=r.style.top=0;r.style.width=_73.rawNode.style.width;r.style.height=_73.rawNode.style.height;r.filled=r.stroked="f";_73.rawNode.appendChild(r);_73.bgNode=r;return _73;},createImage:function(_74){if(!this.rawNode){return null;}var _75=new g.Image(),doc=this.rawNode.ownerDocument,_76=doc.createElement("v:rect");_76.stroked="f";_76.style.width=this.rawNode.style.width;_76.style.height=this.rawNode.style.height;var img=doc.createElement("v:imagedata");_76.appendChild(img);_75.setRawNode(_76);this.rawNode.appendChild(_76);_75.setShape(_74);this.add(_75);return _75;},createRect:function(_77){if(!this.rawNode){return null;}var _78=new g.Rect,_79=this.rawNode.ownerDocument.createElement("v:roundrect");if(d.isIE>7){_79.style.display="inline-block";}_78.setRawNode(_79);this.rawNode.appendChild(_79);_78.setShape(_77);this.add(_78);return _78;},createObject:function(_7a,_7b){if(!this.rawNode){return null;}var _7c=new _7a(),_7d=this.rawNode.ownerDocument.createElement("v:"+_7a.nodeType);_7c.setRawNode(_7d);this.rawNode.appendChild(_7d);switch(_7a){case g.Group:case g.Line:case g.Polyline:case g.Image:case g.Text:case g.Path:case g.TextPath:this._overrideSize(_7d);}_7c.setShape(_7b);this.add(_7c);return _7c;},_overrideSize:function(_7e){var s=this.rawNode.style,w=s.width,h=s.height;_7e.style.width=w;_7e.style.height=h;_7e.coordsize=parseInt(w)+" "+parseInt(h);}});d.extend(g.Group,_1.Container);d.extend(g.Group,gs.Creator);d.extend(g.Surface,_1.Container);d.extend(g.Surface,gs.Creator);})();}