graphics-vml-min.js revision c76f20e944f13ab46599248085dce274728c2c94
YUI.add("graphics-vml",function(a){var c=a.Lang,j=c.isNumber,e=c.isArray,h=a.DOM,b=a.Selector,d=a.AttributeLite,f=a.Plugin.Host,o,l,n,k,m,i;function g(){}g.prototype={_currentX:0,_currentY:0,curveTo:function(s,r,z,w,v,u){var t,p,q,A;v=Math.round(v);u=Math.round(u);this._path+=" c "+Math.round(s)+", "+Math.round(r)+", "+Math.round(z)+", "+Math.round(w)+", "+v+", "+u;this._currentX=v;this._currentY=u;t=Math.max(v,Math.max(s,z));q=Math.max(u,Math.max(r,w));p=Math.min(v,Math.min(s,z));A=Math.min(u,Math.min(r,w));this._trackSize(t,q);this._trackSize(p,A);},quadraticCurveTo:function(u,t,w,v){var q=this._currentX,p=this._currentY,s=q+0.67*(u-q),r=p+0.67*(t-p),A=s+(w-q)*0.34,z=r+(v-p)*0.34;this.curveTo(s,r,A,z,w,v);},drawRect:function(p,s,q,r){this.moveTo(p,s);this.lineTo(p+q,s);this.lineTo(p+q,s+r);this.lineTo(p,s+r);this.lineTo(p,s);this._currentX=p;this._currentY=s;return this;},drawRoundRect:function(p,u,q,s,r,t){this.moveTo(p,u+t);this.lineTo(p,u+s-t);this.quadraticCurveTo(p,u+s,p+r,u+s);this.lineTo(p+q-r,u+s);this.quadraticCurveTo(p+q,u+s,p+q,u+s-t);this.lineTo(p+q,u+t);this.quadraticCurveTo(p+q,u,p+q-r,u);this.lineTo(p+r,u);this.quadraticCurveTo(p,u,p,u+t);return this;},drawWedge:function(r,v,t,s,q,p){var u=q*2;p=p||q;this._path+=this._getWedgePath({x:r,y:v,startAngle:t,arc:s,radius:q,yRadius:p});this._trackSize(u,u);this._currentX=r;this._currentY=v;return this;},_getWedgePath:function(s){var r=s.x,w=s.y,u=s.startAngle,t=s.arc,q=s.radius,p=s.yRadius||q,v;if(Math.abs(t)>360){t=360;}u*=-65535;t*=65536;v=" m "+r+" "+w+" ae "+r+" "+w+" "+q+" "+p+" "+u+" "+t;return v;},end:function(){this._draw();},lineTo:function(u,t,r){var q=arguments,s,p;if(typeof u==="string"||typeof u==="number"){q=[[u,t]];}p=q.length;if(!this._path){this._path="";}this._path+=" l ";for(s=0;s<p;++s){this._path+=" "+Math.round(q[s][0])+", "+Math.round(q[s][1]);this._trackSize.apply(this,q[s]);this._currentX=q[s][0];this._currentY=q[s][1];}return this;},moveTo:function(p,q){if(!this._path){this._path="";}this._path+=" m "+Math.round(p)+", "+Math.round(q);this._trackSize(p,q);this._currentX=p;this._currentY=q;},_trackSize:function(p,r){var s=this._width||0,q=this._height||0;if(p>s){this._width=p;}if(r>q){this._height=r;}}};a.VMLDrawing=g;o=function(p){var r=this,q=a.Plugin&&a.Plugin.Host;if(r._initPlugins&&q){q.call(r);}r.name=r.constructor.NAME;r._eventPrefix=r.constructor.EVENT_PREFIX||r.constructor.NAME;d.call(r);r.addAttrs(p);r.init.apply(this,arguments);if(r._initPlugins){r._initPlugins(p);}r.initialized=true;};o.NAME="vmlShape";o.prototype={init:function(){this.initializer.apply(this,arguments);},initializer:function(p){var q=this;q.createNode();q._graphic=p.graphic;},createNode:function(){var E,A=this.get("x"),v=this.get("y"),B=this.get("width"),G=this.get("height"),D,s,J,I,u,t,C,q,z,H,p,F,r;D=this.get("id");s=this._type;u="vml"+s+" yui3-vmlShape yui3-"+this.constructor.NAME;t=this._getStrokeProps();F=this._getFillProps();J="<"+s+' xmlns="urn:schemas-microsft.com:vml" id="'+D+'" class="'+u+'" style="behavior:url(#default#VML);display:inline-block;position:absolute;left:'+A+"px;top:"+v+"px;width:"+B+"px;height:"+G+'px;"';if(t){C=t.endcap;q=t.opacity;z=t.joinstyle;H=t.miterlimit;p=t.dashstyle;J+=' stroked="t" strokecolor="'+t.strokeColor+'" strokeWeight="'+t.strokeWeight+'px"';I='<stroke class="vmlstroke" xmlns="urn:schemas-microsft.com:vml" style="behavior:url(#default#VML);display:inline-block;"';I+=' opacity="'+q+'"';if(C){I+=' endcap="'+C+'"';}if(z){I+=' joinstyle="'+z+'"';}if(H){I+=' miterlimit="'+H+'"';}if(p){I+=' dashstyle="'+p+'"';}I+="></stroke>";this._strokeNode=document.createElement(I);J+=' stroked="t"';}else{J+=' stroked="f"';}if(F){if(F.node){r=F.node;this._fillNode=document.createElement(r);}else{if(F.color){J+=' fillcolor="'+F.color+'"';}}J+=' filled="'+F.filled+'"';}J+=">";J+="</"+s+">";E=document.createElement(J);if(this._strokeNode){E.appendChild(this._strokeNode);}if(this._fillNode){E.appendChild(this._fillNode);}this.node=E;},addClass:function(p){var q=this.node;h.addClass(q,p);},removeClass:function(p){var q=this.node;h.removeClass(q,p);},getXY:function(){var s=this._graphic,q=s.getXY(),p=this.get("x"),r=this.get("y");return[q[0]+p,q[1]+r];},setXY:function(q){var r=this._graphic,p=r.getXY();this.set("x",q[0]-p[0]);this.set("y",q[1]-p[1]);},contains:function(p){return p===a.one(this.node);},compareTo:function(p){var q=this.node;return q===p;},test:function(p){return b.test(this.node,p);},_getStrokeProps:function(){var w,y=this.get("stroke"),u,q,s="",p,r=0,t,x,v;if(y&&y.weight&&y.weight>0){w={};x=y.linecap||"flat";v=y.linejoin||"round";if(x!="round"&&x!="square"){x="flat";}u=y.opacity;q=y.dashstyle||"none";y.color=y.color||"#000000";y.weight=y.weight||1;y.opacity=j(u)?u:1;w.stroked=true;w.strokeColor=y.color;w.strokeWeight=y.weight;w.endcap=x;w.opacity=y.opacity;if(e(q)){s=[];t=q.length;for(r=0;r<t;++r){p=q[r];s[r]=p/y.weight;}}if(v=="round"||v=="bevel"){w.joinstyle=v;}else{v=parseInt(v,10);if(j(v)){w.miterlimit=Math.max(v,1);w.joinstyle="miter";}}w.dashstyle=s;}return w;},_strokeChangeHandler:function(v){var r=this.node,z=this.get("stroke"),w,q,t="",p,s=0,u,y,x;if(z&&z.weight&&z.weight>0){y=z.linecap||"flat";x=z.linejoin||"round";if(y!="round"&&y!="square"){y="flat";}w=z.opacity;q=z.dashstyle||"none";z.color=z.color||"#000000";z.weight=z.weight||1;z.opacity=j(w)?w:1;r.stroked=true;r.strokeColor=z.color;r.strokeWeight=z.weight+"px";if(!this._strokeNode){this._strokeNode=this._createGraphicNode("stroke");r.appendChild(this._strokeNode);}this._strokeNode.endcap=y;this._strokeNode.opacity=z.opacity;if(e(q)){t=[];u=q.length;for(s=0;s<u;++s){p=q[s];t[s]=p/z.weight;}}if(x=="round"||x=="bevel"){this._strokeNode.joinstyle=x;}else{x=parseInt(x,10);if(j(x)){this._strokeNode.miterlimit=Math.max(x,1);this._strokeNode.joinstyle="miter";}}this._strokeNode.dashstyle=t;}else{r.stroked=false;}},_getFillProps:function(){var v=this.get("fill"),p,s,u,q,r,t=false;if(v){s={};if(v.type=="radial"||v.type=="linear"){p=v.opacity;
p=j(p)?p:1;t=true;u=this._getGradientFill(v);r='<fill xmlns="urn:schemas-microsft.com:vml" style="behavior:url(#default#VML);display:inline-block;" opacity="'+p+'"';for(q in u){if(u.hasOwnProperty(q)){r+=" "+q+'="'+u[q]+'"';}}r+=" />";s.node=r;}else{if(v.color){s.color=v.color;p=v.opacity;t=true;if(j(p)){p=Math.max(Math.min(p,1),0);s.opacity=p;s.node='<fill xmlns="urn:schemas-microsft.com:vml" style="behavior:url(#default#VML);display:inline-block;" opacity="'+p+'" color="'+v.color+'"/>';}}}s.filled=t;}return s;},_fillChangeHandler:function(u){var r=this.node,t=this.get("fill"),p,q,s=false;if(t){if(t.type=="radial"||t.type=="linear"){s=true;this._setGradientFill(r,t);}else{if(t.color){p=t.opacity;s=true;if(j(p)){p=Math.max(Math.min(p,1),0);t.opacity=p;if(this._fillNode&&this._fillNode.getAttribute("type")=="solid"){this._fillNode.type="solid";this._fillNode.opacity=p;this._fillNode.color=t.color;}else{if(this._fillNode){r.removeChild(this._fillNode);this._fillNode=null;}q='<fill xmlns="urn:schemas-microsft.com:vml" class="vmlfill" opacity="'+p+'" color="'+t.color+'"/>';this._fillNode=document.createElement(q);r.appendChild(this._fillNode);}}else{if(this._fillNode){r.removeChild(this._fillNode);this._fillNode=null;}r.fillColor=t.color;}}}}r.filled=s;},_updateFillNode:function(p){if(!this._fillNode){this._fillNode=this._createGraphicNode("fill");p.appendChild(this._fillNode);}},_getGradientFill:function(J){var N={},B,z,y=J.type,C=this.get("width"),M=this.get("height"),D=j,H,A=J.stops,L=A.length,v,I,K=0,E,p="",t=J.cx,q=J.cy,u=J.fx,s=J.fy,F=J.r,x,G=J.rotation||0;if(y==="linear"){if(G>0&&G<=90){G=450-G;}else{if(G<=270){G=270-G;}else{if(G<=360){G=630-G;}else{G=270;}}}N.type="gradient";N.angle=G;}else{if(y==="radial"){B=C*(F*2);z=M*(F*2);u=F*2*(u-0.5);s=F*2*(s-0.5);u+=t;s+=q;N.focussize=(B/C)/10+"% "+(z/M)/10+"%";N.alignshape=false;N.type="gradientradial";N.focus="100%";N.focusposition=Math.round(u*100)+"% "+Math.round(s*100)+"%";}}for(;K<L;++K){H=A[K];I=H.color;v=H.opacity;v=D(v)?v:1;x=H.offset||K/(L-1);x*=(F*2);if(x<=1){x=Math.round(100*x)+"%";E=K>0?K+1:"";N["opacity"+E]=v+"";p+=", "+x+" "+I;}}x=A[1].offset||0;x*=100;if(parseInt(x,10)<100){p+=", 100% "+I;}N.colors=p.substr(2);return N;},_setGradientFill:function(G,K){this._updateFillNode(G);var B,z,y=K.type,C=this.get("width"),N=this.get("height"),D=j,I,A=K.stops,M=A.length,v,J,L=0,E,p="",t=K.cx,q=K.cy,u=K.fx,s=K.fy,F=K.r,x,H=K.rotation||0;if(y==="linear"){if(H>0&&H<=90){H=450-H;}else{if(H<=270){H=270-H;}else{if(H<=360){H=630-H;}else{H=270;}}}this._fillNode.type="gradient";this._fillNode.angle=H;}else{if(y==="radial"){B=C*(F*2);z=N*(F*2);u=F*2*(u-0.5);s=F*2*(s-0.5);u+=t;s+=q;this._fillNode.focussize=(B/C)/10+"% "+(z/N)/10+"%";this._fillNode.alignshape=false;this._fillNode.type="gradientradial";this._fillNode.focus="100%";this._fillNode.focusposition=Math.round(u*100)+"% "+Math.round(s*100)+"%";}}for(;L<M;++L){I=A[L];J=I.color;v=I.opacity;v=D(v)?v:1;x=I.offset||L/(M-1);x*=(F*2);if(x<=1){x=Math.round(100*x)+"%";E=L>0?L+1:"";this._fillNode["opacity"+E]=v+"";p+=", "+x+" "+J;}}x=A[1].offset||0;x*=100;if(parseInt(x,10)<100){p+=", 100% "+J;}this._fillNode.colors.value=p.substr(2);},_addTransform:function(q,p){if(!this._transformArgs){this._transformArgs={};}this._transformArgs[q]=Array.prototype.slice.call(p,0);this._updateTransform();},_updateTransform:function(){var E=this,H=E.node,B,J,A=E.get("x"),z=E.get("y"),D,t,s,M,L,G,F,q,u,C,v,I,r,K,p=E._transformArgs;if(p){B=E.get("width");J=E.get("height");K=H.coordSize;if(p.hasOwnProperty("translate")){t=0-(K.x/B*E._translateX);s=0-(K.y/J*E._translateY);H.coordOrigin=t+","+s;}if(p.hasOwnProperty("rotate")){D=E.get("transformOrigin");M=D[0];L=D[1];G=B*(M-0.5);F=J*(L-0.5);q=Math.abs(E._rotation);u=Math.PI/180;C=parseFloat(parseFloat(Math.sin(q*u)).toFixed(8));v=parseFloat(parseFloat(Math.cos(q*u)).toFixed(8));I=(G*v)-(F*C);r=(G*C)+(F*v);H.style.rotation=E._rotation;A=A+(G-I);z=z+(F-r);}}H.style.left=A+"px";H.style.top=z+"px";},translate:function(p,q){this._translateX=p;this._translateY=q;this._addTransform("translate",arguments);},skewX:function(p){},skewY:function(p){},_rotation:0,rotate:function(p){this._rotation=p;this._addTransform("rotate",arguments);},scale:function(p){},matrix:function(q,p,u,t,s,r){},isMouseEvent:function(p){if(p.indexOf("mouse")>-1||p.indexOf("click")>-1){return true;}return false;},before:function(q,p){if(this.isMouseEvent(q)){return a.before(q,p,"#"+this.get("id"));}return a.on.apply(this,arguments);},on:function(q,p){if(this.isMouseEvent(q)){return a.on(q,p,"#"+this.get("id"));}return a.on.apply(this,arguments);},after:function(q,p){if(this.isMouseEvent(q)){return a.after(q,p,"#"+this.get("id"));}return a.on.apply(this,arguments);},_draw:function(){var r=this.node,p=this.get("width"),q=this.get("height");if(!r){this.createNode();}else{this._fillChangeHandler();this._strokeChangeHandler();r.style.width=p+"px";r.style.height=q+"px";}this._updateTransform();},_updateHandler:function(q){var p=this.node;if(p){p.style.visible="hidden";}this._draw();if(p){p.style.visible="visible";}},_createGraphicNode:function(p){p=p||this._type;return document.createElement("<"+p+' xmlns="urn:schemas-microsft.com:vml" class="vml'+p+'"/>');},_getDefaultFill:function(){return{type:"solid",cx:0.5,cy:0.5,fx:0.5,fy:0.5,r:0.5};},_getDefaultStroke:function(){return{weight:1,dashstyle:"none",color:"#000",opacity:1};},set:function(){var p=this;d.prototype.set.apply(p,arguments);if(p.initialized){p._updateHandler();}},getBounds:function(){var r=this.get("width"),s=this.get("height"),u=this.get("stroke"),q=this.get("x"),v=this.get("y"),p=0,t={};if(u&&u.weight){p=u.weight;}t.left=q-p;t.top=v-p;t.right=q+r+p;t.bottom=v+s+p;return t;}};o.ATTRS={transformOrigin:{valueFn:function(){return[0.5,0.5];}},rotation:{setter:function(p){this.rotate(p);},getter:function(){return this._rotation;}},x:{value:0},y:{value:0},id:{valueFn:function(){return a.guid();},setter:function(q){var p=this.node;if(p){p.setAttribute("id",q);}return q;
}},width:{value:0},height:{value:0},visible:{value:true,setter:function(r){var q=this.node,p=r?"visible":"hidden";if(q){q.style.visibility=p;}return r;}},fill:{valueFn:"_getDefaultFill",setter:function(s){var q,r,p=this.get("fill")||this._getDefaultFill();if(s){if(s.hasOwnProperty("color")){s.type="solid";}for(q in s){if(s.hasOwnProperty(q)){p[q]=s[q];}}}r=p;if(r&&r.color){if(r.color===undefined||r.color=="none"){r.color=null;}}return r;}},stroke:{valueFn:"_getDefaultStroke",setter:function(s){var q,r,p=this.get("stroke")||this._getDefaultStroke();if(s){for(q in s){if(s.hasOwnProperty(q)){p[q]=s[q];}}}r=p;return r;}},autoSize:{value:false},pointerEvents:{value:"visiblePainted"},graphic:{readOnly:true,getter:function(){return this._graphic;}}};a.mix(o,a.AttributeLite,false,null,1);a.mix(o,a.EventTarget,false,null,1);a.mix(o,f,false,null,1);o.plug=f.plug;o.unplug=f.unplug;a.VMLShape=o;n=function(){n.superclass.constructor.apply(this,arguments);};n.NAME="vmlPath";a.extend(n,a.VMLShape,a.merge(a.VMLDrawing.prototype,{_type:"shape",_draw:function(){var v=this.get("fill"),u=this.get("stroke"),r=this.node,p=this.get("width"),q=this.get("height"),t=this.get("path"),s="";r.style.visible="hidden";this._fillChangeHandler();this._strokeChangeHandler();if(t){if(v&&v.color){s+=" x";}if(u){s+=" e";}}if(t){r.path=t+s;}if(p&&q){r.coordSize=p+", "+q;r.style.position="absolute";r.style.width=p+"px";r.style.height=q+"px";}this._path=t;r.style.visible="visible";this._updateTransform();},end:function(){this._draw();},clear:function(){this._path="";}}));n.ATTRS=a.merge(a.VMLShape.ATTRS,{width:{getter:function(){return this._width;},setter:function(p){this._width=p;return p;}},height:{getter:function(){return this._height;},setter:function(p){this._height=p;return p;}},path:{readOnly:true,getter:function(){return this._path;}}});a.VMLPath=n;k=function(){k.superclass.constructor.apply(this,arguments);};k.NAME="vmlRect";a.extend(k,a.VMLShape,{_type:"rect"});k.ATTRS=a.VMLShape.ATTRS;a.VMLRect=k;m=function(){m.superclass.constructor.apply(this,arguments);};m.NAME="vmlEllipse";a.extend(m,a.VMLShape,{_type:"oval"});m.ATTRS=a.merge(a.VMLShape.ATTRS,{xRadius:{lazyAdd:false,getter:function(){var p=this.get("width");p=Math.round((p/2)*100)/100;return p;},setter:function(q){var p=q*2;this.set("width",p);return q;}},yRadius:{lazyAdd:false,getter:function(){var p=this.get("height");p=Math.round((p/2)*100)/100;return p;},setter:function(q){var p=q*2;this.set("height",p);return q;}}});a.VMLEllipse=m;l=function(p){l.superclass.constructor.apply(this,arguments);};l.NAME="vmlCircle";a.extend(l,o,{_type:"oval"});l.ATTRS=a.merge(o.ATTRS,{radius:{lazyAdd:false,value:0},width:{readOnly:true,getter:function(){var p=this.get("radius"),q=p&&p>0?p*2:0;return q;}},height:{readOnly:true,getter:function(){var p=this.get("radius"),q=p&&p>0?p*2:0;return q;}}});a.VMLCircle=l;i=function(p){this.initializer.apply(this,arguments);};i.prototype={getXY:function(){var p=a.one(this.parentNode),q=p.getXY();return q;},initializer:function(q){q=q||{};var p=q.width||0,r=q.height||0;this.id=a.guid();this.node=this._createGraphic();this.node.setAttribute("id",this.id);this.setSize(p,r);this._initProps();},autoDraw:true,clear:function(){this._path="";this._removeChildren(this.node);},destroy:function(){this._removeChildren(this.node);this.node.parentNode.removeChild(this.node);},_removeChildren:function(p){if(p.hasChildNodes()){var q;while(p.firstChild){q=p.firstChild;this._removeChildren(q);p.removeChild(q);}}},toggleVisible:function(p){this._toggleVisible(this.node,p);},_toggleVisible:function(t,u){var s=a.one(t).get("children"),q=u?"visible":"hidden",r=0,p;if(s){p=s.length;for(;r<p;++r){this._toggleVisible(s[r],u);}}t.style.visibility=q;},setSize:function(p,q){p=Math.round(p);q=Math.round(q);this.node.style.width=p+"px";this.node.style.height=q+"px";this.node.coordSize=p+" "+q;this._canvasWidth=p;this._canvasHeight=q;},setPosition:function(p,q){p=Math.round(p);q=Math.round(q);this.node.style.left=p+"px";this.node.style.top=q+"px";},render:function(p,s){var q,r;p=a.one(p);q=parseInt(p.getComputedStyle("width"),10);r=parseInt(p.getComputedStyle("height"),10);p=p||a.config.doc.body;p.appendChild(this.node);this.setSize(q,r);this._initProps();this.parentNode=p._node;return this;},_trackSize:function(p,q){if(p>this._width){this._width=p;}if(q>this._height){this._height=q;}},_initProps:function(){this._fillColor=null;this._strokeColor=null;this._strokeOpacity=null;this._strokeWeight=0;this._fillProps=null;this._path="";this._width=0;this._height=0;this._x=0;this._y=0;this._fill=null;this._stroke=0;this._stroked=false;this._dashstyle=null;},_createGraphic:function(){var p=document.createElement('<group xmlns="urn:schemas-microsft.com:vml" style="behavior:url(#default#VML);display:block;zoom:1;" />');p.style.display="block";p.style.position="absolute";return p;},_createGraphicNode:function(p){return document.createElement("<"+p+' xmlns="urn:schemas-microsft.com:vml" style="behavior:url(#default#VML);display:inline-block;zoom:1;" />');},addShape:function(q){var r=q.node,p=this._frag||this.node;p.appendChild(r);if(!this._graphicsList){this._graphicsList=[];}if(!this._shapes){this._shapes={};}this._graphicsList.push(r);this._shapes[q.get("id")]=q;},getShapeById:function(p){return this._shapes[p];},getShape:function(p){p.graphic=this;var q=new this._shapeClass[p.type](p);this.addShape(q);return q;},_shapeClass:{circle:a.VMLCircle,rect:a.VMLRect,path:a.VMLPath,ellipse:a.VMLEllipse},addChild:function(p){this.node.appendChild(p);},batch:function(r){var p=this.node,q=document.createDocumentFragment();this._frag=q;this.autoDraw=false;r();this.updateSize();p.appendChild(q);this._frag=null;this.autoDraw=true;},updateSize:function(v){var u,s,r,q=this._shapes,p,t;this._left=0;this._right=0;this._top=0;this._bottom=0;for(s in q){if(q.hasOwnProperty(s)){r=this._shapes[s];u=r.getBounds();this._left=Math.min(this._left,u.left);this._top=Math.min(this._top,u.top);this._right=Math.max(this._right,u.right);
this._bottom=Math.max(this._bottom,u.bottom);}}p=this._width=this._right-this._left;t=this._height=this._bottom-this._top;this.setSize(this._width,this._height);},_left:0,_right:0,_top:0,_bottom:0};a.VMLGraphic=i;},"@VERSION@",{requires:["graphics"],skinnable:false});