/*! * Crafty v0.4.3 * http://craftyjs.com * * Copyright 2010, Louis Stowasser * Dual licensed under the MIT or GPL licenses. */ (function(h,g){var q=function(w){return new q.fn.init(w)},v=1,e=50,n=1,m={},c={},o={},r=[],s,i,a,f=0,k=1000/e,b=(new Date).getTime(),p=Array.prototype.slice,d=/\s*,\s*/,t=/\s+/;q.fn=q.prototype={init:function(A){if(typeof A==="string"){var y=0,E,F,D=false,C=false,G,w,x,B,z;if(A==="*"){for(E in c){this[+E]=c[E];y++}this.length=y;return this}if(A.indexOf(",")!==-1){C=true;G=d}else{if(A.indexOf(" ")!==-1){D=true;G=t}}for(E in c){if(!c.hasOwnProperty(E)){continue}F=c[E];if(D||C){w=A.split(G);B=0;z=w.length;x=0;for(;B0){this[y++]=+E}}else{if(F.__c[A]){this[y++]=+E}}}if(y>0&&!D&&!C){this.extend(m[A])}if(w&&D){for(B=0;B1){w=arguments.length;for(;xb){q.trigger("EnterFrame",{frame:n++});b+=k;f++}if(f){q.DrawManager.draw()}},getFPS:function(){return this.fps}},e:function(){var x=j(),w;c[x]=null;c[x]=w=q(x);if(arguments.length>0){w.addComponent.apply(w,arguments)}w.addComponent("obj");return w},c:function(x,w){m[x]=w},trigger:function(A,B){var z=o[A],y,x,w;for(y in z){if(!z.hasOwnProperty(y)){continue}for(x=0,w=z[y].length;xy._x&&v.yy._y){A[q]=x[w]}}for(v in A){s.push(A[v])}return s}else{return x}},remove:function(u,w){var t=0,s,v;if(arguments.length==1){w=u;u=p.key(w)}for(t=u.x1;t<=u.x2;t++){for(s=u.y1;s<=u.y2;s++){v=t+o+s;if(this.map[v]){var r=this.map[v],q=0,x=r.length;for(;qo.x&&p._yo.y},within:function(e,p,m,n){var o;if(typeof e==="object"){o=e}else{o={x:e,y:p,w:m,h:n}}return o.x<=this.x&&o.x+o.w>=this.x+this.w&&o.y<=this.y&&o.y+o.h>=this.y+this.h},contains:function(e,p,m,n){var o;if(typeof e==="object"){o=e}else{o={x:e,y:p,w:m,h:n}}return o.x>=this.x&&o.x+o.w<=this.x+this.w&&o.y>=this.y&&o.y+o.h<=this.y+this.h},pos:function(){return{_x:(this._x),_y:(this._y),_w:(this._w),_h:(this._h)}},mbr:function(){if(!this._mbr){return this.pos()}return{_x:(this._mbr._x),_y:(this._mbr._y),_w:(this._mbr._w),_h:(this._mbr._h)}},isAt:function(e,m){return this.x<=e&&this.x+this.w>=e&&this.y<=m&&this.y+this.h>=m},move:function(e,m){if(e.charAt(0)==="n"){this.y-=m}if(e.charAt(0)==="s"){this.y+=m}if(e==="e"||e.charAt(1)==="e"){this.x+=m}if(e==="w"||e.charAt(1)==="w"){this.x-=m}return this},shift:function(e,o,m,n){if(e){this.x+=e}if(o){this.y+=o}if(m){this.w+=m}if(n){this.h+=n}return this},_cascade:function(r){if(!r){return}var q=0,n=this._children,o=n.length,p;if(r.cos){for(;qthis._w||n>this._h||e<0||n<0){return this}}this._origin.x=e;this._origin.y=n;return this},rotate:function(m){this._origin.x=m.o.x-this._x;this._origin.y=m.o.y-this._y;this._attr("_rotation",m.theta)},_attr:function(m,n){var p=this.pos(),e=this.mbr()||p;if(m==="_rotation"){this._rotate(n)}else{if(m==="_z"){this._global=parseInt(n+h.zeroFill(this[0],5),10);this.trigger("reorder")}else{if(m=="_x"||m==="_y"||m==="_w"||m==="_h"){var o=this._mbr;if(o){o[m]-=this[m]-n}this[m]=n;this.trigger("Move",e)}}}this[m]=n;this.trigger("Change",e)}});h.c("Physics",{_gravity:0.4,_friction:0.2,_bounce:0.5,gravity:function(e){this._gravity=e}});h.c("Gravity",{_gravity:0.2,_gy:0,_falling:true,_anti:null,init:function(){if(!this.has("2D")){this.addComponent("2D")}},gravity:function(e){if(e){this._anti=e}this.bind("EnterFrame",this._enterframe);return this},_enterframe:function(){if(this._falling){this._gy+=this._gravity*2;this.y+=this._gy}else{this._gy=0}var p,o=false,r=this.pos(),n,m=0,e;r._y++;r.x=r._x;r.y=r._y;r.w=r._w;r.h=r._h;n=h.map.search(r);e=n.length;for(;m1){e=Array.prototype.slice.call(arguments,0)}this.points=e};h.polygon.prototype={containsPoint:function(e,r){var o=this.points,n,m,q=false;for(n=0,m=o.length-1;nr)!=(o[m][1]>r))&&(e<(o[m][0]-o[n][0])*(r-o[n][1])/(o[m][1]-o[n][1])+o[n][0])){q=!q}}return q},shift:function(e,p){var n=0,m=this.points.length,o;for(;nm._x&&s._ym._y){x[e]=p}}for(w in x){p=x[w];if(u&&"map" in p){var v=this._SAT(this.map,p.map);v.obj=p;v.type="SAT";if(v){n.push(v)}}else{n.push({obj:p,type:"MBR"})}}if(!n.length){return false}return n},onHit:function(n,o,e){var m=false;this.bind("EnterFrame",function(){var p=this.hit(n);if(p){m=true;o.call(this,p)}else{if(m){if(typeof e=="function"){e.call(this)}m=false}}});return this},_SAT:function(p,o){var B=p.points,A=o.points,y=0,u=B.length,x,w=A.length,D={x:0,y:0},e,v,s,t,r,C,m=null,q,z,n;for(;yt||t===-1){t=q}if(qr||r===-1){r=q}if(q0){return false}if(C>m||m===null){m=C}}for(y=0;yt||t===-1){t=q}if(qr||r===-1){r=q}if(q0){return false}if(C>m||m===null){m=C}}return{overlap:m}}});h.c("DOM",{_element:null,init:function(){this._element=g.createElement("div");h.stage.inner.appendChild(this._element);this._element.style.position="absolute";this._element.id="ent"+this[0];this.bind("Change",function(){if(!this._changed){this._changed=true;h.DrawManager.add(this)}});function e(){var m=0,o=this.__c,n="";for(m in o){n+=" "+m}n=n.substr(1);this._element.className=n}this.bind("NewComponent",e).bind("RemoveComponent",e);if(h.support.prefix==="ms"&&h.support.version<9){this._filters={};this.bind("Rotate",function(t){var n=t.matrix,s=this._element.style,p=n.M11.toFixed(8),o=n.M12.toFixed(8),r=n.M21.toFixed(8),q=n.M22.toFixed(8);this._filters.rotation="progid:DXImageTransform.Microsoft.Matrix(M11="+p+", M12="+o+", M21="+r+", M22="+q+", sizingMethod='auto expand')"})}this.bind("Remove",this.undraw)},DOM:function(e){if(e&&e.nodeType){this.undraw();this._element=e;this._element.style.position="absolute"}return this},draw:function(){var n=this._element.style,q=this.__coord||[0,0,0,0],p={x:q[0],y:q[1]},o=h.support.prefix,m=[];if(!this._visible){n.visibility="hidden"}else{n.visibility="visible"}if(h.support.css3dtransform){m.push("translate3d("+(~~this._x)+"px,"+(~~this._y)+"px,0)")}else{m.push("translate("+(~~this._x)+"px,"+(~~this._y)+"px,0)")}n.width=~~(this._w)+"px";n.height=~~(this._h)+"px";n.zIndex=this._z;n.opacity=this._alpha;n[o+"Opacity"]=this._alpha;if(o==="ms"&&h.support.version<9){if(h.support.version===8){this._filters.alpha="progid:DXImageTransform.Microsoft.Alpha(Opacity="+(this._alpha*100)+")"}else{this._filters.alpha="alpha(opacity="+(this._alpha*100)+")"}this.applyFilters()}if(this._mbr){var e=this._origin.x+"px "+this._origin.y+"px";n.transformOrigin=e;n[o+"TransformOrigin"]=e;if(h.support.css3dtransform){m.push("rotateZ("+this._rotation+"deg)")}else{m.push("rotate("+this._rotation+"deg)")}}n.transform=m.join(" ");n[o+"Transform"]=m.join(" ");this.trigger("Draw",{style:n,type:"DOM",co:p});return this},applyFilters:function(){this._element.style.filter="";for(var e in this._filters){if(!this._filters.hasOwnProperty(e)){continue}this._element.style.filter+=this._filters[e]+" "}},undraw:function(){h.stage.inner.removeChild(this._element);return this},css:function(p,o){var e,n=this._element,q,m=n.style;if(typeof p==="object"){for(e in p){if(!p.hasOwnProperty(e)){continue}q=p[e];if(typeof q==="number"){q+="px"}m[h.DOM.camelize(e)]=q}}else{if(o){if(typeof o==="number"){o+="px"}m[h.DOM.camelize(p)]=o}else{return h.DOM.getStyle(n,p)}}this.trigger("Change");return this}});try{g.execCommand("BackgroundImageCache",false,true)}catch(c){}h.extend({DOM:{window:{init:function(){this.width=d.innerWidth||(d.document.documentElement.clientWidth||d.document.body.clientWidth);this.height=d.innerHeight||(d.document.documentElement.clientHeight||d.document.body.clientHeight)},width:0,height:0},inner:function(p){var o=p.getBoundingClientRect(),e=o.left+d.pageXOffset,q=o.top+d.pageYOffset,n,m;n=parseInt(this.getStyle(p,"border-left-width")||0,10);m=parseInt(this.getStyle(p,"border-top-width")||0,10);if(!n||!m){n=parseInt(this.getStyle(p,"borderLeftWidth")||0,10);m=parseInt(this.getStyle(p,"borderTopWidth")||0,10)}e+=n;q+=m;return{x:e,y:q}},getStyle:function(m,n){var e;if(m.currentStyle){e=m.currentStyle[this.camelize(n)]}else{if(d.getComputedStyle){e=g.defaultView.getComputedStyle(m,null).getPropertyValue(this.csselize(n))}}return e},camelize:function(e){return e.replace(/-+(.)?/g,function(m,n){return n?n.toUpperCase():""})},csselize:function(e){return e.replace(/[A-Z]/g,function(m){return m?"-"+m.toLowerCase():""})},translate:function(e,m){return{x:e-h.stage.x+g.body.scrollLeft+g.documentElement.scrollLeft-h.viewport._x,y:m-h.stage.y+g.body.scrollTop+g.documentElement.scrollTop-h.viewport._y}}}});h.extend({randRange:function(m,e){return Math.round(Math.random()*(e-m)+m)},zeroFill:function(m,e){e-=m.toString().length;if(e>0){return new Array(e+(/\./.test(m)?2:1)).join("0")+m}return m.toString()},sprite:function(s,o,m,e,p,n){var u,A,v,t,z,r,q;if(typeof s==="string"){e=m;m=o;s=1;o=1}if(typeof o=="string"){e=m;m=o;o=s}if(!n&&p){n=p}p=parseInt(p||0,10);n=parseInt(n||0,10);q=h.assets[m];if(!q){q=new Image();q.src=m;h.assets[m]=q;q.onload=function(){for(var w in e){h(w).each(function(){this.ready=true;this.trigger("Change")})}}}for(u in e){if(!e.hasOwnProperty(u)){continue}A=e[u];v=A[0]*s+p;t=A[1]*o+n;z=A[2]*s||s;r=A[3]*o||o;h.c(u,{__image:m,__coord:[v,t,z,r],__tile:s,__tileh:o,__padding:[p,n],__trim:null,img:q,ready:false,init:function(){this.addComponent("Sprite");this.__trim=[0,0,0,0];this.__coord=[this.__coord[0],this.__coord[1],this.__coord[2],this.__coord[3]];if(this.img.complete&&this.img.width>0){this.ready=true;this.trigger("Change")}this.w=this.__coord[2];this.h=this.__coord[3];var w=function(y){var B=y.co,C=y.pos,x=y.ctx;if(y.type==="canvas"){x.drawImage(this.img,B.x,B.y,B.w,B.h,C._x,C._y,C._w,C._h)}else{if(y.type==="DOM"){this._element.style.background="url('"+this.__image+"') no-repeat -"+B.x+"px -"+B.y+"px"}}};this.bind("Draw",w).bind("RemoveComponent",function(x){if(x===u){this.unbind("Draw",w)}})},sprite:function(B,E,C,D){this.__coord=[B*this.__tile+this.__padding[0]+this.__trim[0],E*this.__tileh+this.__padding[1]+this.__trim[1],this.__trim[2]||C*this.__tile||this.__tile,this.__trim[3]||D*this.__tileh||this.__tileh];this.trigger("Change");return this},crop:function(B,F,D,E){var C=this._mbr||this.pos();this.__trim=[];this.__trim[0]=B;this.__trim[1]=F;this.__trim[2]=D;this.__trim[3]=E;this.__coord[0]+=B;this.__coord[1]+=F;this.__coord[2]=D;this.__coord[3]=E;this._w=D;this._h=E;this.trigger("Change",C);return this}})}return this},_events:{},addEvent:function(e,p,o,n){if(arguments.length===3){n=o;o=p;p=d.document}var m=function(r){var r=r||d.event;n.call(e,r)},q=e[0]||"";if(!this._events[q+p+o+n]){this._events[q+p+o+n]=m}else{return}if(p.attachEvent){p.attachEvent("on"+o,m)}else{p.addEventListener(o,m,false)}},removeEvent:function(e,p,o,n){if(arguments.length===3){n=o;o=p;p=d.document}var q=e[0]||"",m=this._events[q+p+o+n];if(m){if(p.detachEvent){p.detachEvent("on"+o,m)}else{p.removeEventListener(o,m,false)}delete this._events[q+p+o+n]}},background:function(e){h.stage.elem.style.background=e},viewport:{width:0,height:0,_x:0,_y:0,scroll:function(p,e){e=Math.floor(e);var q=(e-this[p]),n=h.canvas.context,o=h.stage.inner.style,m;this[p]=e;if(p=="_x"){if(n){n.translate(q,0)}}else{if(n){n.translate(0,q)}}if(n){h.DrawManager.drawAll()}o[p=="_x"?"left":"top"]=~~e+"px"},rect:function(){return{_x:-this._x,_y:-this._y,_w:this.width,_h:this.height}},init:function(e,n){h.DOM.window.init();this.width=(!e||h.mobile)?h.DOM.window.width:e;this.height=(!n||h.mobile)?h.DOM.window.height:n;var p=g.getElementById("cr-stage");h.stage={x:0,y:0,fullscreen:false,elem:(p?p:g.createElement("div")),inner:g.createElement("div")};if((!e&&!n)||h.mobile){g.body.style.overflow="hidden";h.stage.fullscreen=true}h.addEvent(this,d,"resize",function(){h.DOM.window.init();var s=h.DOM.window.width,t=h.DOM.window.height,u;if(h.stage.fullscreen){this.width=s;this.height=t;h.stage.elem.style.width=s+"px";h.stage.elem.style.height=t+"px";if(h._canvas){h._canvas.width=s+"px";h._canvas.height=t+"px";h.DrawManager.drawAll()}}u=h.DOM.inner(h.stage.elem);h.stage.x=u.x;h.stage.y=u.y});h.addEvent(this,d,"blur",function(){if(h.settings.get("autoPause")){h.pause()}});h.addEvent(this,d,"focus",function(){if(h._paused){h.pause()}});h.settings.register("stageSelectable",function(s){h.stage.elem.onselectstart=s?function(){return true}:function(){return false}});h.settings.modify("stageSelectable",false);h.settings.register("stageContextMenu",function(s){h.stage.elem.oncontextmenu=s?function(){return true}:function(){return false}});h.settings.modify("stageContextMenu",false);h.settings.register("autoPause",function(){});h.settings.modify("autoPause",false);if(!p){g.body.appendChild(h.stage.elem);h.stage.elem.id="cr-stage"}var o=h.stage.elem.style,r;h.stage.elem.appendChild(h.stage.inner);h.stage.inner.style.position="absolute";h.stage.inner.style.zIndex="1";o.width=this.width+"px";o.height=this.height+"px";o.overflow="hidden";if(h.mobile){o.position="absolute";o.left="0px";o.top="0px";var q=g.createElement("meta"),m=g.getElementsByTagName("HEAD")[0];q.setAttribute("name","viewport");q.setAttribute("content","width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no");m.appendChild(q);q=g.createElement("meta");q.setAttribute("name","apple-mobile-web-app-capable");q.setAttribute("content","yes");m.appendChild(q);setTimeout(function(){d.scrollTo(0,1)},0);h.addEvent(this,d,"touchmove",function(s){s.preventDefault()});h.stage.x=0;h.stage.y=0}else{o.position="relative";r=h.DOM.inner(h.stage.elem);h.stage.x=r.x;h.stage.y=r.y}if(h.support.setter){this.__defineSetter__("x",function(s){this.scroll("_x",s)});this.__defineSetter__("y",function(s){this.scroll("_y",s)});this.__defineGetter__("x",function(){return this._x});this.__defineGetter__("y",function(){return this._y})}else{if(h.support.defineProperty){Object.defineProperty(this,"x",{set:function(s){this.scroll("_x",s)},get:function(){return this._x}});Object.defineProperty(this,"y",{set:function(s){this.scroll("_y",s)},get:function(){return this._y}})}else{this.x=this._x;this.y=this._y;h.e("viewport")}}}},support:{},keys:{BACKSPACE:8,TAB:9,ENTER:13,PAUSE:19,CAPS:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT_ARROW:37,UP_ARROW:38,RIGHT_ARROW:39,DOWN_ARROW:40,INSERT:45,DELETE:46,"0":48,"1":49,"2":50,"3":51,"4":52,"5":53,"6":54,"7":55,"8":56,"9":57,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,NUMPAD_0:96,NUMPAD_1:97,NUMPAD_2:98,NUMPAD_3:99,NUMPAD_4:100,NUMPAD_5:101,NUMPAD_6:102,NUMPAD_7:103,NUMPAD_8:104,NUMPAD_9:105,MULTIPLY:106,ADD:107,SUBSTRACT:109,DECIMAL:110,DIVIDE:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,SHIFT:16,CTRL:17,ALT:18,PLUS:187,COMMA:188,MINUS:189,PERIOD:190}});(function b(){var o=h.support,n=navigator.userAgent.toLowerCase(),m=/(webkit)[ \/]([\w.]+)/.exec(n)||/(o)pera(?:.*version)?[ \/]([\w.]+)/.exec(n)||/(ms)ie ([\w.]+)/.exec(n)||/(moz)illa(?:.*? rv:([\w.]+))?/.exec(n)||[],e=/iPad|iPod|iPhone|Android|webOS/i.exec(n);if(e){h.mobile=e[0]}o.setter=("__defineSetter__" in this&&"__defineGetter__" in this);o.defineProperty=(function(){if(!"defineProperty" in Object){return false}try{Object.defineProperty({},"x",{})}catch(p){return false}return true})();o.audio=("Audio" in d);o.prefix=(m[1]||m[0]);if(o.prefix==="moz"){o.prefix="Moz"}if(m[2]){o.versionName=m[2];o.version=+(m[2].split("."))[0]}o.canvas=("getContext" in g.createElement("canvas"));o.css3dtransform=(typeof g.createElement("div").style[o.prefix+"Perspective"]!=="undefined")})();h.c("viewport",{init:function(){this.bind("EnterFrame",function(){if(h.viewport._x!==h.viewport.x){h.viewport.scroll("_x",h.viewport.x)}if(h.viewport._y!==h.viewport.y){h.viewport.scroll("_y",h.viewport.y)}})}});h.c("Canvas",{init:function(){if(!h.canvas.context){h.canvas.init()}h.DrawManager.total2D++;this.bind("Change",function(m){if(this._changed===false){this._changed=h.DrawManager.add(m||this,this)}else{if(m){this._changed=h.DrawManager.add(m,this)}}});this.bind("Remove",function(){h.DrawManager.total2D--;h.DrawManager.add(this,this)})},draw:function(u,r,p,s,m){if(!this.ready){return}if(arguments.length===4){m=s;s=p;p=r;r=u;u=h.canvas.context}var q={_x:(this._x+(r||0)),_y:(this._y+(p||0)),_w:(s||this._w),_h:(m||this._h)},e=u||h.canvas.context,n=this.__coord||[0,0,0,0],o={x:n[0]+(r||0),y:n[1]+(p||0),w:s||n[2],h:m||n[3]};if(this._mbr){e.save();e.translate(this._origin.x+this._x,this._origin.y+this._y);q._x=-this._origin.x;q._y=-this._origin.y;e.rotate((this._rotation%360)*(Math.PI/180))}if(this._alpha<1){var t=e.globalAlpha;e.globalAlpha=this._alpha}this.trigger("Draw",{type:"canvas",pos:q,co:o,ctx:e});if(this._mbr){e.restore()}if(t){e.globalAlpha=t}return this}});h.extend({canvas:{context:null,elem:null,init:function(){if(!h.support.canvas){h.trigger("NoCanvas");h.stop();return}var e;e=g.createElement("canvas");e.width=h.viewport.width;e.height=h.viewport.height;e.style.position="absolute";e.style.left="0px";e.style.top="0px";h.stage.elem.appendChild(e);h.canvas.context=e.getContext("2d");h.canvas._canvas=e}}});h.extend({down:null,over:null,mouseObjs:0,keydown:{},mouseDispatch:function(s){if(!h.mouseObjs){return}if(s.type==="touchstart"){s.type="mousedown"}else{if(s.type==="touchmove"){s.type="mousemove"}else{if(s.type==="touchend"){s.type="mouseup"}}}var t=-1,n,m,p=0,o,w=h.DOM.translate(s.clientX,s.clientY),z,v,A={};s.realX=z=w.x;s.realY=v=w.y;m=h.map.search({_x:z,_y:v,_w:1,_h:1},false);for(o=m.length;p=t||t===-1)){if(r._z===t&&r[0]=112&&m.key<=135)){if(m.preventDefault){m.preventDefault()}else{m.returnValue=false}return false}}});h.bind("Load",function(){h.addEvent(this,"keydown",h.keyboardDispatch);h.addEvent(this,"keyup",h.keyboardDispatch);h.addEvent(this,h.stage.elem,"mousedown",h.mouseDispatch);h.addEvent(this,h.stage.elem,"mouseup",h.mouseDispatch);h.addEvent(this,h.stage.elem,"mousemove",h.mouseDispatch);h.addEvent(this,h.stage.elem,"touchstart",h.mouseDispatch);h.addEvent(this,h.stage.elem,"touchmove",h.mouseDispatch);h.addEvent(this,h.stage.elem,"touchend",h.mouseDispatch)});h.c("Mouse",{init:function(){h.mouseObjs++;this.bind("Remove",function(){h.mouseObjs--})},areaMap:function(m){if(arguments.length>1){var e=Array.prototype.slice.call(arguments,0);m=new h.polygon(e)}m.shift(this._x,this._y);this.map=m;this.attach(this.map);return this}});h.c("Draggable",{_startX:0,_startY:0,_dragging:false,_ondrag:null,_ondown:null,_onup:null,init:function(){this.requires("Mouse");this._ondrag=function(m){var n=h.DOM.translate(m.clientX,m.clientY);this.x=n.x-this._startX;this.y=n.y-this._startY;this.trigger("Dragging",m)};this._ondown=function(m){this._startX=m.realX-this._x;this._startY=m.realY-this._y;this._dragging=true;h.addEvent(this,h.stage.elem,"mousemove",this._ondrag);h.addEvent(this,h.stage.elem,"mouseup",this._onup);this.trigger("StartDrag",m)};this._onup=function e(m){h.removeEvent(this,h.stage.elem,"mousemove",this._ondrag);h.removeEvent(this,h.stage.elem,"mouseup",this._onup);this._dragging=false;this.trigger("StopDrag",m)};this.enableDrag()},stopDrag:function(){h.removeEvent(this,h.stage.elem,"mousemove",this._ondrag);h.removeEvent(this,h.stage.elem,"mouseup",this._onup);this._dragging=false;this.trigger("StopDrag");return this},startDrag:function(){if(!this._dragging){this._dragging=true;h.addEvent(this,h.stage.elem,"mousemove",this._ondrag)}},enableDrag:function(){this.bind("MouseDown",this._ondown);h.addEvent(this,h.stage.elem,"mouseup",this._onup);return this},disableDrag:function(){this.unbind("MouseDown",this._ondown);this.stopDrag();return this}});h.c("Keyboard",{isDown:function(e){if(typeof e==="string"){e=h.keys[e]}return !!h.keydown[e]}});h.c("Multiway",{_speed:3,init:function(){this._keyDirection={};this._keys={};this._movement={x:0,y:0}},multiway:function(m,e){if(e){this._speed=m}else{e=m}this._keyDirection=e;this.speed(this._speed);this.bind("KeyDown",function(n){if(this._keys[n.key]){this._movement.x=Math.round((this._movement.x+this._keys[n.keyCode].x)*1000)/1000;this._movement.y=Math.round((this._movement.y+this._keys[n.keyCode].y)*1000)/1000;this.trigger("NewDirection",this._movement)}}).bind("KeyUp",function(n){if(this._keys[n.key]){this._movement.x=Math.round((this._movement.x-this._keys[n.keyCode].x)*1000)/1000;this._movement.y=Math.round((this._movement.y-this._keys[n.keyCode].y)*1000)/1000;this.trigger("NewDirection",this._movement)}}).bind("EnterFrame",function(){if(this.disableControls){return}if(this._movement.x!==0){this.x+=this._movement.x;this.trigger("Moved",{x:this.x-this._movement.x,y:this.y})}if(this._movement.y!==0){this.y+=this._movement.y;this.trigger("Moved",{x:this.x,y:this.y-this._movement.y})}});return this},speed:function(m){for(var e in this._keyDirection){var n=h.keys[e]||e;this._keys[n]={x:Math.round(Math.cos(this._keyDirection[e]*(Math.PI/180))*1000*m)/1000,y:Math.round(Math.sin(this._keyDirection[e]*(Math.PI/180))*1000*m)/1000}}return this}});h.c("Fourway",{init:function(){this.requires("Multiway")},fourway:function(e){this.multiway(e,{UP_ARROW:-90,DOWN_ARROW:90,RIGHT_ARROW:0,LEFT_ARROW:180,W:-90,S:90,D:0,A:180});return this}});h.c("Twoway",{_speed:3,_up:false,init:function(){this.requires("Keyboard")},twoway:function(m,e){if(m){this._speed=m}e=e||this._speed*2;this.bind("EnterFrame",function(){if(this.disableControls){return}if(this.isDown("RIGHT_ARROW")||this.isDown("D")){this.x+=this._speed}if(this.isDown("LEFT_ARROW")||this.isDown("A")){this.x-=this._speed}if(this._up){this.y-=e;this._falling=true}}).bind("keydown",function(){if(this.isDown("UP_ARROW")||this.isDown("W")){this._up=true}});return this}});h.c("SpriteAnimation",{_reels:null,_frame:null,_current:null,init:function(){this._reels={}},animate:function(e,o,t,p){var n,q,r,m;if(arguments.length<4&&typeof o==="number"){this._current=e;n=this._reels[e];m=o;this._frame={reel:n,frameTime:Math.ceil(m/n.length),frame:0,current:0,repeat:0};if(arguments.length===3&&typeof t==="number"){if(t===-1){this._frame.repeatInfinitly=true}else{this._frame.repeat=t}}var s=this._frame.reel[0];this.__coord[0]=s[0];this.__coord[1]=s[1];this.bind("EnterFrame",this.drawFrame);return this}if(typeof o==="number"){q=o;n=[];r=this.__tile;if(p>o){for(;q<=p;q++){n.push([q*r,t*r])}}else{for(;q>=p;q--){n.push([q*r,t*r])}}this._reels[e]=n}else{if(typeof o==="object"){this._reels[e]=o}}return this},drawFrame:function(n){var m=this._frame;if(this._frame.current++===m.frameTime){var o=m.reel[m.frame++];this.__coord[0]=o[0];this.__coord[1]=o[1];this._frame.current=0}if(m.frame===m.reel.length&&this._frame.current===m.frameTime){m.frame=0;if(this._frame.repeatInfinitly===true||this._frame.repeat>0){if(this._frame.repeat){this._frame.repeat--}this._frame.current=0;this._frame.frame=0}else{this.trigger("AnimationEnd",{reel:m.reel});this.stop();return}}this.trigger("Change")},stop:function(){this.unbind("EnterFrame",this.drawFrame);this.unbind("AnimationEnd");this._current=null;this._frame=null;return this},reset:function(){if(!this._frame){return this}var e=this._frame.reel[0];this.__coord[0]=e[0];this.__coord[1]=e[1];this.stop();return this},isPlaying:function(e){if(!e){return !!this._interval}return this._current===e}});h.c("Tween",{tween:function(e,m){this.each(function(){var s,n={},q={},p=h.frame(),o=p+m;for(s in e){n[s]=this["_"+s];q[s]=(e[s]-n[s])/m}this.bind("EnterFrame",function r(t){if(t.frame>=o){this.unbind("EnterFrame",r);return}for(var u in e){this[u]+=q[u]}})});return this}});h.c("Color",{_color:"",ready:true,init:function(){this.bind("Draw",function(m){if(m.type==="DOM"){m.style.background=this._color;m.style.lineHeight=0}else{if(m.type==="canvas"){if(this._color){m.ctx.fillStyle=this._color}m.ctx.fillRect(m.pos._x,m.pos._y,m.pos._w,m.pos._h)}}})},color:function(e){this._color=e;this.trigger("Change");return this}});h.c("Tint",{_color:null,_strength:1,init:function(){var e=function m(o){var n=o.ctx||h.canvas.context;n.fillStyle=this._color||"rgb(0,0,0)";n.fillRect(o.pos._x,o.pos._y,o.pos._w,o.pos._h)};this.bind("Draw",e).bind("RemoveComponent",function(n){if(n==="Tint"){this.unbind("Draw",e)}})},tint:function(e,m){this._strength=m;this._color=h.toRGB(e,this._strength);this.trigger("Change");return this}});h.c("Image",{_repeat:"repeat",ready:false,init:function(){var e=function(n){if(n.type==="canvas"){if(!this.ready||!this._pattern){return}var m=n.ctx;m.fillStyle=this._pattern;m.fillRect(this._x,this._y,this._w,this._h)}else{if(n.type==="DOM"){if(this.__image){n.style.background="url("+this.__image+") "+this._repeat}}}};this.bind("Draw",e).bind("RemoveComponent",function(m){if(m==="Image"){this.unbind("Draw",e)}})},image:function(m,n){this.__image=m;this._repeat=n||"no-repeat";this.img=h.assets[m];if(!this.img){this.img=new Image();h.assets[m]=this.img;this.img.src=m;var e=this;this.img.onload=function(){if(e.has("Canvas")){e._pattern=h.canvas.context.createPattern(e.img,e._repeat)}e.ready=true;if(e._repeat==="no-repeat"){e.w=e.img.width;e.h=e.img.height}e.trigger("Change")};return this}else{this.ready=true;if(this.has("Canvas")){this._pattern=h.canvas.context.createPattern(this.img,this._repeat)}if(this._repeat==="no-repeat"){this.w=this.img.width;this.h=this.img.height}}this.trigger("Change");return this}});h.extend({_scenes:[],_current:null,scene:function(e,m){if(arguments.length===1){h("2D").each(function(){if(!this.has("persist")){this.destroy()}});this._scenes[e].call(this);this._current=e;return}this._scenes[e]=m;return},rgbLookup:{},toRGB:function(m,o){var n=this.rgbLookup[m];if(n){return n}var m=(m.charAt(0)==="#")?m.substr(1):m,p=[],e;p[0]=parseInt(m.substr(0,2),16);p[1]=parseInt(m.substr(2,2),16);p[2]=parseInt(m.substr(4,2),16);e=o===undefined?"rgb("+p.join(",")+")":"rgba("+p.join(",")+","+o+")";n=e;return e}});h.DrawManager=(function(){var m=[],o=[];return{total2D:h("2D").length,onScreen:function(p){return h.viewport._x+p._x+p._w>0&&h.viewport._y+p._y+p._h>0&&h.viewport._x+p._xs._x&&u._ys._y){t={_x:~~Math.min(u._x,s._x),_y:~~Math.min(u._y,s._y),_w:Math.max(u._x,s._x)+Math.max(u._w,s._w),_h:Math.max(u._y,s._y)+Math.max(u._h,s._h)};t._w=t._w-t._x;t._h=t._h-t._y;t._w=(t._w==~~t._w)?t._w:t._w+1|0;t._h=(t._h==~~t._h)?t._h:t._h+1|0;v.push(t);r++;p=true}else{v.push(u)}r++}w=v.length?h.clone(v):w;if(p){r=0}}while(p);return w},add:function n(p,s){if(!s){o.push(p);return}var q,r=p._mbr||p,t=s._mbr||s;if(p===s){q=p.mbr()||p.pos()}else{q={_x:~~Math.min(r._x,t._x),_y:~~Math.min(r._y,t._y),_w:Math.max(r._w,t._w)+Math.max(r._x,t._x),_h:Math.max(r._h,t._h)+Math.max(r._y,t._y)};q._w=(q._w-q._x);q._h=(q._h-q._y)}if(q._w===0||q._h===0||!this.onScreen(q)){return false}q._x=~~q._x;q._y=~~q._y;q._w=(q._w===~~q._w)?q._w:q._w+1|0;q._h=(q._h===~~q._h)?q._h:q._h+1|0;m.push(q);return true},debug:function(){console.log(m,o)},drawAll:function(t){var t=t||h.viewport.rect(),u,s=0,r,p=h.canvas.context,v;u=h.map.search(t);r=u.length;p.clearRect(t._x,t._y,t._w,t._h);u.sort(function(w,q){return w._global-q._global});for(;ss[2]){s[2]=q[2]}if(q[3]>s[3]){s[3]=q[3]}r++}q=s;s={_x:q[0],_y:q[1],_w:q[2]-q[0],_h:q[3]-q[1]};return s},draw:function e(){if(!m.length&&!o.length){return}var z=0,s=m.length,t=o.length,F,p,u,C,J,v,D,B=[],I=h.canvas.context;for(;z0.6){this.drawAll();m.length=0;return}m=this.merge(m);for(;z100?100:q.sharpness<0?0:q.sharpness;q.sizeSmall=~~((q.size/200)*q.sharpness);var o=[this.startColour[0]+this.startColourRandom[0]*this.RANDM1TO1(),this.startColour[1]+this.startColourRandom[1]*this.RANDM1TO1(),this.startColour[2]+this.startColourRandom[2]*this.RANDM1TO1(),this.startColour[3]+this.startColourRandom[3]*this.RANDM1TO1()];var e=[this.endColour[0]+this.endColourRandom[0]*this.RANDM1TO1(),this.endColour[1]+this.endColourRandom[1]*this.RANDM1TO1(),this.endColour[2]+this.endColourRandom[2]*this.RANDM1TO1(),this.endColour[3]+this.endColourRandom[3]*this.RANDM1TO1()];q.colour=o;q.deltaColour[0]=(e[0]-o[0])/q.timeToLive;q.deltaColour[1]=(e[1]-o[1])/q.timeToLive;q.deltaColour[2]=(e[2]-o[2])/q.timeToLive;q.deltaColour[3]=(e[3]-o[3])/q.timeToLive},update:function(){if(this.active&&this.emissionRate>0){var o=1/this.emissionRate;this.emitCounter++;while(this.particleCounto){this.addParticle();this.emitCounter-=o}this.elapsedFrames++;if(this.duration!=-1&&this.duration0){t.direction=this.vectorHelpers.add(t.direction,this.gravity);t.position=this.vectorHelpers.add(t.position,t.direction);t.position=this.vectorHelpers.add(t.position,this.viewportDelta);if(this.jitter){t.position.x+=this.jitter*this.RANDM1TO1();t.position.y+=this.jitter*this.RANDM1TO1()}t.timeToLive--;var s=t.colour[0]+=t.deltaColour[0];var q=t.colour[1]+=t.deltaColour[1];var e=t.colour[2]+=t.deltaColour[2];var n=t.colour[3]+=t.deltaColour[3];m=[];m.push("rgba("+(s>255?255:s<0?0:~~s));m.push(q>255?255:q<0?0:~~q);m.push(e>255?255:e<0?0:~~e);m.push((n>1?1:n<0?0:n.toFixed(2))+")");t.drawColour=m.join(",");if(!this.fastMode){m[3]="0)";t.drawColourEnd=m.join(",")}this.particleIndex++}else{if(this.particleIndex!=this.particleCount-1){this.particles[this.particleIndex]=this.particles[this.particleCount-1]}this.particleCount--}var p={};p._x=~~t.position.x;p._y=~~t.position.y;p._w=t.size;p._h=t.size;this.register.push(p)}},stop:function(){this.active=false;this.elapsedFrames=0;this.emitCounter=0},render:function(e){for(var n=0,m=this.particleCount;n>1;if(p.position.x+t<0||p.position.y+t<0||p.position.x-t>h.viewport.width||p.position.y-t>h.viewport.height){continue}var s=~~p.position.x;var r=~~p.position.y;if(this.fastMode){e.fillStyle=p.drawColour}else{var q=e.createRadialGradient(s+o,r+o,p.sizeSmall,s+o,r+o,o);q.addColorStop(0,p.drawColour);q.addColorStop(0.9,p.drawColourEnd);e.fillStyle=q}e.fillRect(s,r,t,t)}},particle:function(e){this.position=e.create(0,0);this.direction=e.create(0,0);this.size=0;this.sizeSmall=0;this.timeToLive=0;this.colour=[];this.drawColour="";this.deltaColour=[];this.sharpness=0},vectorHelpers:{create:function(e,m){return{x:e,y:m}},multiply:function(e,m){e.x*=m;e.y*=m;return e},add:function(m,e){m.x+=e.x;m.y+=e.y;return m}}}});h.extend({audio:{_elems:{},_muted:false,MAX_CHANNELS:5,type:{mp3:"audio/mpeg;",ogg:'audio/ogg; codecs="vorbis"',wav:'audio/wav; codecs="1"',mp4:'audio/mp4; codecs="mp4a.40.2"'},add:function(o,n){if(!h.support.audio){return this}var r,v,t=new Audio(),p,u=0,q=[];if(arguments.length===1&&typeof o==="object"){for(v in o){if(!o.hasOwnProperty(v)){continue}if(typeof o[v]!=="string"){var m=o[v],u=0,s=m.length,e;for(;u