(function(){var k=window.document,g={},f={},e={},q={};g.version="0.0.1";g.display=e;g.geom=f;window.FlashForward=g;var r=0,l=window.console,t=function(a,b){a!==void 0&&(r=a);if(b!==!0||!l)l={log:function(){},debug:function(){},info:function(){},warn:function(){},error:function(){}}},s=function(a,b,c,d){var e=!1,i=new XMLHttpRequest;d==null&&(d=[]);i.onreadystatechange=function(){!e&&i.readyState===4&&(e=!0,d.unshift(i),c.apply(b,d))};i.open("GET",a,!0);i.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); i.send(null)},n=function(a){var b={},c;for(c in a)b[c]=a[c];return b},j=function(a,b){function c(){}c.prototype=b.prototype;a.superClass_=b.prototype;a.prototype=new c;a.prototype.constructor=a};g.Event=function(a){this.type=a;this.target=null};g.Event.ENTER_FRAME="enterFrame";g.EventDispatcher=function(){this.eventListers={}};g.EventDispatcher.prototype.addEventListener=function(a,b){var c=this.eventListers[a];c===null?this.eventListers[a]=[b]:c.indexOf(b)===-1&&c.push(b)};g.EventDispatcher.prototype.removeEventListner= function(a,b){var c=this.eventListers[a];if(c!=null){var d=c.indexOf(b);d!==-1&&c.splice(d,1)}};g.EventDispatcher.prototype.dispatchEvent=function(a){if(a.target===null)a.target=this;var b=this.eventListers[a.type];if(b!=null)for(var c=0,d=b.length;c10&&(this.context.stage.advance(),this.context.stage.processActionQueue(),this.context.stage.display())}catch(a){l.error(a)}this.frameAt=Date.now();if(0a.height)this.context.ratio=this.context.stage.rect.height()/ a.height;this.context.stage.updateSize()};g.Context=function(){this.version=this.interval=this.fps=this.baseurl=this.url=-1;this.ratio=20;this.dictionary={};this.stage=-1;this.renderer={}};g.Context.prototype.setUrl=function(a){this.url=a;this.baseurl=a.slice(0,a.lastIndexOf("/"))};g.Context.prototype.setRenderer=function(a){this.renderer=a};g.Context.prototype.loadMeta=function(a){this.fps=a.fps;this.interval=1E3/this.fps;this.version=a.version;this.stage=new e.Stage(null,this);this.stage.loadMeta(a); l.log(this)};g.Context.prototype.loadDictionary=function(a){var b=-1,c,d=[];for(b in a){c=a[b];switch(c.type){case "bitmap":this.addDisplayObject(c,new e.Bitmap);break;case "shape":this.addDisplayObject(c,new e.Shape);break;case "font":this.addDisplayObject(c,new e.Font);break;case "text":this.addDisplayObject(c,new e.Text);break;case "sprite":this.addDisplayObject(c,new e.Sprite);break;default:l.warn("unknown type "+c.type),s(this.baseurl+"/"+a[b].url,this,this.loadCallBack)}c.url&&-1===d.indexOf(c.url)&& (c.type==="bitmap"?this.initBitmap_(c):d.push(c.url))}for(b in d)s(this.baseurl+"/"+d[b],this,this.loadCallBack)};g.Context.prototype.loadStage=function(a){this.stage.setup("root",a,this);this.stage.first();this.stage.loadControls(a)};g.Context.prototype.isLoadComplete=function(){for(var a in this.dictionary)if(this.dictionary[a].isLoaded===!1)return l.log(a+" is not loaded ",this.dictionary[a]),!1;return!0};g.Context.prototype.addDisplayObject=function(a,b){b.type=a.type;b.url=this.baseurl+"/"+a.url; b.cid=a.cid;this.dictionary[a.cid]=b};g.Context.prototype.loadCallBack=function(a){a.getResponseHeader("Content-Type").indexOf("svg")!==-1?this.initSVG_(a.responseXML):this.initObject_(eval("("+a.responseText+")"))};g.Context.prototype.setupDisplayObject_=function(a,b){var c=this.dictionary[a];c==void 0&&l.error("undefined: "+a,b);c.setup(a,b,this)};g.Context.prototype.initBitmap_=function(a){this.setupDisplayObject_(a.cid,a)};g.Context.prototype.initSVG_=function(a){for(var b=0,c,d=a.getElementsByTagName("defs"), b=d.item(0).childNodes.length,a=0;a0?(e=d.split(":"),this.actionTarget.resolvePath(e[0]).setVars(e[1],c)):this.actionTarget.setVars(d,c);break;case 28:d=this.pop_();c="";if(d===void 0)return l.error("#"+this.target.id+".Action::set name is undefined"),!1;d.indexOf(":")>0?(e=d.split(":"),c=this.actionTarget.resolvePath(e[0]).getVars(e[1])): c=this.actionTarget.getVars(d);this.push_(c);break;case 158:this.actionTarget.callAction(this.pop_());break;case 10:case 71:c=Number(this.pop_());d=Number(this.pop_());this.target.context.version<=4&&(isNaN(c)&&(c=0),isNaN(d)&&(d=0));this.push_(d+c);break;case 11:c=Number(this.pop_());d=Number(this.pop_());this.target.context.version<=4&&(isNaN(c)&&(c=0),isNaN(d)&&(d=0));this.push_(d-c);break;case 12:c=Number(this.pop_());d=Number(this.pop_());this.target.context.version<=4&&(isNaN(c)&&(c=0),isNaN(d)&& (d=0));this.push_(d*c);break;case 13:c=Number(this.pop_());d=Number(this.pop_());this.target.context.version<=4&&(isNaN(c)&&(c=0),isNaN(d)&&(d=0));this.push_(d/c);break;case 14:case 19:c=this.pop_();d=this.pop_();this.push_(d==c);break;case 15:c=this.pop_();d=this.pop_();this.push_(d0)var a=this.variable.split(":"),b=this.parent.resolvePath(a[0]),a=b?b.getVars(a[1]):"";else a=this.parent.getVars(this.variable);if(a!==this.text)this.text=a,this.updateText=!0}};e.Text.prototype.display=function(){e.Display.prototype.display.call(this); this.updateText&&this.getRenderer().updateText(this)};e.DisplayContainer=function(){e.Display.call(this);this.currentFrame=0;this.renderFrame=-1;this.frameCount=0;this.playing=!0;this.vars={};this.clipLayer=[];this.actionQueue=[];this.displayList=[]};j(e.DisplayContainer,e.Display);e.DisplayContainer.prototype.clone=function(){var a=new e.DisplayContainer;a.cid=this.cid;a.context=this.context;a.controls=this.controls;return a};e.DisplayContainer.prototype.remove=function(a){this.clipLayer=[];this.displayList= [];this.actionQueue=[];e.Display.prototype.remove.call(this,a)};e.DisplayContainer.prototype.loadControls=function(a){this.controls=a;this.frameCount=a.length};e.DisplayContainer.prototype.added=function(){};e.DisplayContainer.prototype.advance=function(){var a,b=0,c=this.displayList;this.playing&&this.renderFrame!==this.currentFrame&&this.updateDisplay();b=c.length;for(a=0;a=this.frameCount)this.currentFrame=0};e.DisplayContainer.prototype.previousFrame=function(){--this.currentFrame;if(this.currentFrame<0)this.currentFrame=0};e.DisplayContainer.prototype.gotoFrame=function(a,b){var c=this.currentFrame;this.currentFrame=isFinite(a)?a>1?a-1:0:this._getIndexByLabel(a);if(this.controls.length0){e=this.clipLayer.length;for(c=0;c0)for(b=0;b0)for(d=0;d0)for(b=0;b0?!0:!1;c&&b.addMatrix(a.transform.matrix);d&&b.addCxform(a.transform.cxform);h.renderShape(a.content,b,a.context,e);c&&b.removeMatrix();d&&b.removeCxform()};h.Bitmap=n(h.Display);h.Bitmap.load=function(a,b){a.url=a.context.baseurl+"/"+b.url;a.rect=new f.Rect([0,0,b.width,b.height]);var c=new Image;c.src=a.url;a.content=c;var d=function(){a.content.width>0||a.content.height>0?a.isLoaded=!0:setTimeout(d,0)};setTimeout(d,0)};h.Font=n(h.Display);h.Font.load=function(a,b){var c= b.firstChild.getAttribute("font-family"),d=b.getAttribute("id"),e=k.getElementsByTagName("head"),f=k.createElement("style");f.innerHTML="@font-face{font-family:'"+c+"';src:url("+a.url+"#"+d+') format("svg");}';e.item(0).appendChild(f);a.isLoaded=!0};h.Text=n(h.Display);h.Text.first=function(a){var b={};a.style["word-wrap"]&&l.warn("word-wrap is no support on canvas");a.style.multiline&&l.warn("multiline is no support on canvas");a.style.border&&l.warn("border is not implement on canvas");a.style["left-mergin"]&& l.warn("left-mergin is not implement on canvas");a.style["right-mergin"]&&l.warn("right-mergin is not implement on canvas");a.style.indent&&l.warn("indent is not implement on canvas");a.style.leading&&l.warn("leading is not implement on canvas");b.italic=a.style.italic?!0:!1;b.bold=a.style.bold?!0:!1;b.font=a.style.font?"'"+a.style.font+"'":!1;b.align=u[a.style.align?a.style.align:"left"];b.color=h.parseColor(a.style.color,a.style.opacity);b.size=a.style.size?a.style.size:!1;a.textStyle=b;a.text= a.initialText};h.Text.updateText=function(){};h.Text.render=function(a){var b=a.context.stage.ctx,c=a.transform.matrix!==null?!0:!1,d=a.transform.cxform!==null?!0:!1;c&&b.addMatrix(a.transform.matrix);d&&b.addCxform(a.transform.cxform);b.renderEditText(a.text,a.rect,a.textStyle);c&&b.removeMatrix();d&&b.removeCxform()};h.DisplayContainer=n(h.Display);h.DisplayContainer.rendererChild=function(a,b){if(a.clipLayer.length>0)if(b.clipDepth>0)a.context.stage.ctx.save(b.clipId),a.isClip=!1;else if(b.clipId!= null&&a.isClip!==!0)a.context.stage.ctx.clip(b.clipId),a.isClip=!0;else if(b.clipId!=null&&b.clipDepth==0&&a.isClip===!0)a.context.stage.ctx.restore(),a.isClip=!1};h.DisplayContainer.removeChild=function(){};h.Sprite=n(h.DisplayContainer);h.Sprite.preRender=function(a){if(a.visible==="hidden")return!1;a.transform.matrix!==null&&a.context.stage.ctx.addMatrix(a.transform.matrix);a.transform.cxform!==null&&a.context.stage.ctx.addCxform(a.transform.cxform);return!0};h.Sprite.render=function(a){a.transform.matrix!== null&&a.context.stage.ctx.removeMatrix();a.transform.cxform!==null&&a.context.stage.ctx.removeCxform();a.isClip===!0&&a.context.stage.ctx.restore()};h.Stage=n(h.DisplayContainer);h.Stage.load=function(a){var b=k.createElement("div");b.setAttribute("style","background-color:"+a.bgcolor);a.dom=b};h.Stage.first=function(a){var b=k.createElement("canvas");b.id=a.id;b.width=a.rect.width()/a.context.ratio;b.height=a.rect.height()/a.context.ratio;a.dom.appendChild(b);a.isUpdateSize=!0;a.canvas=b;a.ctx=new m(b)}; h.Stage.preRender=function(a){if(a.isUpdateSize)a.canvas.width=a.rect.width()/a.context.ratio,a.canvas.height=a.rect.height()/a.context.ratio,a.isUpdateSize=!1;a.ctx.reset(a.context.ratio);return!0};h.Stage.updateSize=function(a){a.isUpdateSize=!0};h.parseSvg=function(a,b){switch(a.tagName){case "use":var c=a.getAttribute("xlink:href");return{type:4,use:c.replace("#",""),matrix:new f.Matrix(a.getAttribute("transform"))};case "path":var d={type:1,fill:!1,stroke:!1,data:[]};d.fill=h.parseColor(a.getAttribute("fill"), a.getAttribute("fill-opacity"));if(typeof d.fill==="string"&&(c=v.exec(d.fill))!==null&&b.hasOwnProperty(c[1]))d.grad=b[c[1]];d.stroke=h.parseColor(a.getAttribute("stroke"),a.getAttribute("stroke-opacity"));if(d.stroke!==!1)d.strokeWidth=a.getAttribute("stroke-width");d.data=h.parsePathData(a.getAttribute("d"));return d;case "g":for(var e=[],d=a.childNodes.length,i=0,g,i=0;i0)for(;this.state.length>0;)this.restore();this.ctx.clearRect(0,0,this.width,this.height);this.ctx.lineCap="round";this.ctx.lineJoin="round";this.width=this.canvas.width;this.height=this.canvas.height;this.scale=1/a;this.matrix=[new f.Matrix([this.scale,0,0,this.scale,0,0])];this.cxform=[]};m.prototype.addMatrix=function(a){this.matrix.push(a)};m.prototype.removeMatrix=function(){this.matrix.pop()};m.prototype.addCxform=function(a){this.cxform.push(a)}; m.prototype.removeCxform=function(){this.cxform.pop()};m.prototype.setup=function(){this._matrix=new f.Matrix;for(var a=this.matrix.length,b=0;b3)b.a=a[3];for(a=this.cxform.length;a>0;--a)b=this.cxform[a-1].transform(b.r,b.g,b.b,b.a);return b};m.prototype.M=function(a){a=this.transform(a[0],a[1]);this.ctx.moveTo(a.x,a.y)};m.prototype.L=function(a){a=this.transform(a[0],a[1]);this.ctx.lineTo(a.x,a.y)};m.prototype.Q=function(a){var b=this.transform(a[0],a[1]),a=this.transform(a[2],a[3]);this.ctx.quadraticCurveTo(b.x,b.y,a.x,a.y)};m.prototype.Z= function(){this.ctx.closePath()};m.prototype.fill=function(a){var b="";typeof a==="string"?b=a:a.length>2&&(b=this.colorTransform(a));this.ctx.fillStyle=b;this.ctx.fill()};m.prototype.stroke=function(a,b){var c="";typeof a==="string"?c=a:a.length>2&&(c=this.colorTransform(a));this.ctx.lineWidth=b*this.scale;this.ctx.strokeStyle=c;this.ctx.stroke()};m.prototype.drawImage=function(a,b){this.addMatrix(b);this.setup();var c=this.transform(0,0),d=a.width*this._matrix.get_xscale(),e=a.height*this._matrix.get_yscale(), f=this.ctx.globalAlpha,g=this._colorTransform([255,255,255,1]);if(g.a<1)this.ctx.globalAlpha=g.a;this.ctx.drawImage(a,c.x,c.y,d,e);this.removeMatrix();this.ctx.globalAlpha=f};m.prototype.renderStaticText=function(a){var b=this.transform(a.x,a.y),c=(a.fontSize*this.scale+0.5|0)+"px '"+a.fontName+"'";this.ctx.textAlign="left";this.ctx.fillStyle=this.colorTransform(a.fill);this.ctx.font=c;this.ctx.fillText(a.text,b.x,b.y)};m.prototype.renderEditText=function(a,b,c){var d,e=0,e={},f=[];switch(c.align){case 0:d= b.xmin;break;case 1:d=b.width()/2+b.xmin;break;case 2:d=b.xmax}e=b.ymin+c.size;this.setup();e=this.transform(d,e);c.italic&&f.push("italic");c.bold&&f.push("italic");c.size&&f.push((c.size*this.scale+0.5|0)+"px");c.font&&f.push(c.font);this.ctx.textAlign=c.align;this.ctx.fillStyle=this.colorTransform(c.color);this.ctx.font=f.join(" ");this.ctx.fillText(a,e.x,e.y)};m.prototype.save=function(a){this.ctx.save();this.state.push(a)};m.prototype.clip=function(){this.ctx.clip()};m.prototype.restore=function(){this.state.pop(); this.ctx.restore()};h.Ctx=m;q.canvas=h})();