//>>built
define("dojox/gfx/utils",["dojo/_base/kernel","dojo/_base/lang","./_base","dojo/_base/html","dojo/_base/array","dojo/_base/window","dojo/_base/json","dojo/_base/Deferred","dojo/_base/sniff","require","dojo/_base/config"],function(_1,_2,g,_3,_4,_5,_6,_7,_8,_9,_a){var gu=g.utils={};_2.mixin(gu,{forEach:function(_b,f,o){o=o||_1.global;f.call(o,_b);if(_b instanceof g.Surface||_b instanceof g.Group){_4.forEach(_b.children,function(_c){gu.forEach(_c,f,o);});}},serialize:function(_d){var t={},v,_e=_d instanceof g.Surface;if(_e||_d instanceof g.Group){t.children=_4.map(_d.children,gu.serialize);if(_e){return t.children;}}else{t.shape=_d.getShape();}if(_d.getTransform){v=_d.getTransform();if(v){t.transform=v;}}if(_d.getStroke){v=_d.getStroke();if(v){t.stroke=v;}}if(_d.getFill){v=_d.getFill();if(v){t.fill=v;}}if(_d.getFont){v=_d.getFont();if(v){t.font=v;}}return t;},toJson:function(_f,_10){return _6.toJson(gu.serialize(_f),_10);},deserialize:function(_11,_12){if(_12 instanceof Array){return _4.map(_12,_2.hitch(null,gu.deserialize,_11));}var _13=("shape" in _12)?_11.createShape(_12.shape):_11.createGroup();if("transform" in _12){_13.setTransform(_12.transform);}if("stroke" in _12){_13.setStroke(_12.stroke);}if("fill" in _12){_13.setFill(_12.fill);}if("font" in _12){_13.setFont(_12.font);}if("children" in _12){_4.forEach(_12.children,_2.hitch(null,gu.deserialize,_13));}return _13;},fromJson:function(_14,_15){return gu.deserialize(_14,_6.fromJson(_15));},toSvg:function(_16){var _17=new _7();if(g.renderer==="svg"){try{var svg=gu._cleanSvg(gu._innerXML(_16.rawNode));_17.callback(svg);}catch(e){_17.errback(e);}}else{if(!gu._initSvgSerializerDeferred){gu._initSvgSerializer();}var _18=gu.toJson(_16);var _19=function(){try{var _1a=_16.getDimensions();var _1b=_1a.width;var _1c=_1a.height;var _1d=gu._gfxSvgProxy.document.createElement("div");gu._gfxSvgProxy.document.body.appendChild(_1d);_5.withDoc(gu._gfxSvgProxy.document,function(){_3.style(_1d,"width",_1b);_3.style(_1d,"height",_1c);},this);var ts=gu._gfxSvgProxy[dojox._scopeName].gfx.createSurface(_1d,_1b,_1c);var _1e=function(_1f){try{gu._gfxSvgProxy[dojox._scopeName].gfx.utils.fromJson(_1f,_18);var svg=gu._cleanSvg(_1d.innerHTML);_1f.clear();_1f.destroy();gu._gfxSvgProxy.document.body.removeChild(_1d);_17.callback(svg);}catch(e){_17.errback(e);}};ts.whenLoaded(null,_1e);}catch(ex){_17.errback(ex);}};if(gu._initSvgSerializerDeferred.fired>0){_19();}else{gu._initSvgSerializerDeferred.addCallback(_19);}}return _17;},_gfxSvgProxy:null,_initSvgSerializerDeferred:null,_svgSerializerInitialized:function(){gu._initSvgSerializerDeferred.callback(true);},_initSvgSerializer:function(){if(!gu._initSvgSerializerDeferred){gu._initSvgSerializerDeferred=new _7();var f=_5.doc.createElement("iframe");_3.style(f,{display:"none",position:"absolute",width:"1em",height:"1em",top:"-10000px"});var _20;if(_8("ie")){f.onreadystatechange=function(){if(f.contentWindow.document.readyState=="complete"){f.onreadystatechange=function(){};_20=setInterval(function(){if(f.contentWindow[_1.scopeMap["dojo"][1]._scopeName]&&f.contentWindow[_1.scopeMap["dojox"][1]._scopeName].gfx&&f.contentWindow[_1.scopeMap["dojox"][1]._scopeName].gfx.utils){clearInterval(_20);f.contentWindow.parent[_1.scopeMap["dojox"][1]._scopeName].gfx.utils._gfxSvgProxy=f.contentWindow;f.contentWindow.parent[_1.scopeMap["dojox"][1]._scopeName].gfx.utils._svgSerializerInitialized();}},50);}};}else{f.onload=function(){f.onload=function(){};_20=setInterval(function(){if(f.contentWindow[_1.scopeMap["dojo"][1]._scopeName]&&f.contentWindow[_1.scopeMap["dojox"][1]._scopeName].gfx&&f.contentWindow[_1.scopeMap["dojox"][1]._scopeName].gfx.utils){clearInterval(_20);f.contentWindow.parent[_1.scopeMap["dojox"][1]._scopeName].gfx.utils._gfxSvgProxy=f.contentWindow;f.contentWindow.parent[_1.scopeMap["dojox"][1]._scopeName].gfx.utils._svgSerializerInitialized();}},50);};}var uri=(_a["dojoxGfxSvgProxyFrameUrl"]||_9.toUrl("dojox/gfx/resources/gfxSvgProxyFrame.html"));f.setAttribute("src",uri.toString());_5.body().appendChild(f);}},_innerXML:function(_21){if(_21.innerXML){return _21.innerXML;}else{if(_21.xml){return _21.xml;}else{if(typeof XMLSerializer!="undefined"){return (new XMLSerializer()).serializeToString(_21);}}}return null;},_cleanSvg:function(svg){if(svg){if(svg.indexOf("xmlns=\"http://www.w3.org/2000/svg\"")==-1){svg=svg.substring(4,svg.length);svg="<svg xmlns=\"http://www.w3.org/2000/svg\""+svg;}if(svg.indexOf("xmlns:xlink=\"http://www.w3.org/1999/xlink\"")==-1){svg=svg.substring(4,svg.length);svg="<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\""+svg;}if(svg.indexOf("xlink:href")===-1){svg=svg.replace(/href\s*=/g,"xlink:href=");}svg=svg.replace(/<img\b([^>]*)>/gi,"<image $1 />");svg=svg.replace(/\bdojoGfx\w*\s*=\s*(['"])\w*\1/g,"");svg=svg.replace(/\b__gfxObject__\s*=\s*(['"])\w*\1/g,"");svg=svg.replace(/[=]([^"']+?)(\s|>)/g,"=\"$1\"$2");}return svg;}});return gu;});