/* enchant.js v0.8.3 http://enchantjs.com Copyright (c) UEI Corporation Released Under the MIT license. */ (function(t,e){"function"!=typeof Object.defineProperty&&(Object.defineProperty=function(t,e,n){return"value"in n&&(t[e]=n.value),"get"in n&&t.__defineGetter__(e,n.get),"set"in n&&t.__defineSetter__(e,n.set),t}),"function"!=typeof Object.defineProperties&&(Object.defineProperties=function(t,e){for(var n in e)e.hasOwnProperty(n)&&Object.defineProperty(t,n,e[n]);return t}),"function"!=typeof Object.create&&(Object.create=function(t,e){function n(){}n.prototype=t;var i=new n;return null!=e&&Object.defineProperties(i,e),i}),"function"!=typeof Object.getPrototypeOf&&(Object.getPrototypeOf=function(t){return t.__proto__}),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(e){var n=this,i=Array.prototype.slice.call(arguments,1),s=function(){},r=function(){var r=i.concat(Array.prototype.slice.call(arguments));return n.apply(this instanceof s?this:e||t,r)};return s.prototype=n.prototype,r.prototype=new s,r}),t.getTime=function(){var e;return t.performance&&t.performance.now?(e=Date.now(),function(){return e+t.performance.now()}):t.performance&&t.performance.webkitNow?(e=Date.now(),function(){return e+t.performance.webkitNow()}):Date.now}(),t.requestAnimationFrame=t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||t.msRequestAnimationFrame||function(){var e=t.getTime(),n=1e3/60;return function(i){var s=setTimeout(function(){e=t.getTime(),i(e)},Math.max(0,e+n-t.getTime()));return s}}();var n=function(e){if(null!=e&&(e instanceof Array||(e=Array.prototype.slice.call(arguments)),e=e.filter(function(t){return[t].join()})),function i(n,s){var r,a,o=[];for(var h in n)n.hasOwnProperty(h)&&("function"==typeof n[h]?t[h]=n[h]:"object"==typeof n[h]&&null!==n[h]&&Object.getPrototypeOf(n[h])===Object.prototype&&(null==e?o.push(h):(r=e.indexOf(s+h),-1!==r&&(o.push(h),e.splice(r,1)))));for(r=0,a=o.length;a>r;r++)i(n[o[r]],s+o[r]+".")}(n,""),n.Class.getInheritanceTree(t.Game).length<=n.Class.getInheritanceTree(t.Core).length&&(t.Game=t.Core),null!=e&&e.length)throw Error("Cannot load module: "+e.join(", "))};t.enchant=n,t.addEventListener("message",function(t){try{var e=JSON.parse(t.data);if("event"===e.type)n.Core.instance.dispatchEvent(new n.Event(e.value));else if("debug"===e.type)switch(e.value){case"start":n.Core.instance.start();break;case"pause":n.Core.instance.pause();break;case"resume":n.Core.instance.resume();break;case"tick":n.Core.instance._tick();break;default:}}catch(i){}},!1),n.Class=function(t,e){return n.Class.create(t,e)},n.Class.create=function(t,i){if(null==t&&i)throw Error("superclass is undefined (enchant.Class.create)");if(null==t)throw Error("definition is undefined (enchant.Class.create)");if(0===arguments.length)return n.Class.create(Object,i);if(1===arguments.length&&"function"!=typeof arguments[0])return n.Class.create(Object,arguments[0]);for(var s in i)i.hasOwnProperty(s)&&("object"==typeof i[s]&&null!==i[s]&&Object.getPrototypeOf(i[s])===Object.prototype?"enumerable"in i[s]||(i[s].enumerable=!0):i[s]={value:i[s],enumerable:!0,writable:!0});var r=function(){return this instanceof r?(r.prototype.initialize.apply(this,arguments),e):new r};r.prototype=Object.create(t.prototype,i),r.prototype.constructor=r,null==r.prototype.initialize&&(r.prototype.initialize=function(){t.apply(this,arguments)});for(var a=this.getInheritanceTree(t),o=0,h=a.length;h>o;o++)if("function"==typeof a[o]._inherited){a[o]._inherited(r);break}return r},n.Class.getInheritanceTree=function(t){for(var e=[],n=t,i=n.prototype;n!==Object;)e.push(n),i=Object.getPrototypeOf(i),n=i.constructor;return e},n.ENV={VERSION:"0.8.3",BROWSER:function(t){return/Eagle/.test(t)?"eagle":/Opera/.test(t)?"opera":/MSIE|Trident/.test(t)?"ie":/Chrome/.test(t)?"chrome":/(?:Macintosh|Windows).*AppleWebKit/.test(t)?"safari":/(?:iPhone|iPad|iPod).*AppleWebKit/.test(t)?"mobilesafari":/Firefox/.test(t)?"firefox":/Android/.test(t)?"android":""}(navigator.userAgent),VENDOR_PREFIX:function(){var t=navigator.userAgent;return-1!==t.indexOf("Opera")?"O":/MSIE|Trident/.test(t)?"ms":-1!==t.indexOf("WebKit")?"webkit":"Gecko"===navigator.product?"Moz":""}(),TOUCH_ENABLED:function(){var t=document.createElement("div");return t.setAttribute("ontouchstart","return"),"function"==typeof t.ontouchstart}(),RETINA_DISPLAY:function(){if(-1!==navigator.userAgent.indexOf("iPhone")&&2===t.devicePixelRatio){var e=document.querySelector('meta[name="viewport"]');return null==e&&(e=document.createElement("meta"),document.head.appendChild(e)),e.setAttribute("content","width=640"),!0}return!1}(),USE_FLASH_SOUND:function(){var t=navigator.userAgent,e=navigator.vendor||"";return 0===location.href.indexOf("http")&&-1===t.indexOf("Mobile")&&-1!==e.indexOf("Apple")}(),USE_DEFAULT_EVENT_TAGS:["input","textarea","select","area"],CANVAS_DRAWING_METHODS:["putImageData","drawImage","drawFocusRing","fill","stroke","clearRect","fillRect","strokeRect","fillText","strokeText"],KEY_BIND_TABLE:{37:"left",38:"up",39:"right",40:"down"},PREVENT_DEFAULT_KEY_CODES:[37,38,39,40],SOUND_ENABLED_ON_MOBILE_SAFARI:!0,USE_TOUCH_TO_START_SCENE:!0,USE_WEBAUDIO:function(){return"file:"!==location.protocol}(),USE_ANIMATION:!0,COLOR_DETECTION_LEVEL:2},n.Event=n.Class.create({initialize:function(t){this.type=t,this.target=null,this.x=0,this.y=0,this.localX=0,this.localY=0},_initPosition:function(t,e){var i=n.Core.instance;this.x=this.localX=(t-i._pageX)/i.scale,this.y=this.localY=(e-i._pageY)/i.scale}}),n.Event.LOAD="load",n.Event.ERROR="error",n.Event.CORE_RESIZE="coreresize",n.Event.PROGRESS="progress",n.Event.ENTER_FRAME="enterframe",n.Event.EXIT_FRAME="exitframe",n.Event.ENTER="enter",n.Event.EXIT="exit",n.Event.CHILD_ADDED="childadded",n.Event.ADDED="added",n.Event.ADDED_TO_SCENE="addedtoscene",n.Event.CHILD_REMOVED="childremoved",n.Event.REMOVED="removed",n.Event.REMOVED_FROM_SCENE="removedfromscene",n.Event.TOUCH_START="touchstart",n.Event.TOUCH_MOVE="touchmove",n.Event.TOUCH_END="touchend",n.Event.RENDER="render",n.Event.INPUT_START="inputstart",n.Event.INPUT_CHANGE="inputchange",n.Event.INPUT_END="inputend",n.Event.INPUT_STATE_CHANGED="inputstatechanged",n.Event.LEFT_BUTTON_DOWN="leftbuttondown",n.Event.LEFT_BUTTON_UP="leftbuttonup",n.Event.RIGHT_BUTTON_DOWN="rightbuttondown",n.Event.RIGHT_BUTTON_UP="rightbuttonup",n.Event.UP_BUTTON_DOWN="upbuttondown",n.Event.UP_BUTTON_UP="upbuttonup",n.Event.DOWN_BUTTON_DOWN="downbuttondown",n.Event.DOWN_BUTTON_UP="downbuttonup",n.Event.A_BUTTON_DOWN="abuttondown",n.Event.A_BUTTON_UP="abuttonup",n.Event.B_BUTTON_DOWN="bbuttondown",n.Event.B_BUTTON_UP="bbuttonup",n.Event.ADDED_TO_TIMELINE="addedtotimeline",n.Event.REMOVED_FROM_TIMELINE="removedfromtimeline",n.Event.ACTION_START="actionstart",n.Event.ACTION_END="actionend",n.Event.ACTION_TICK="actiontick",n.Event.ACTION_ADDED="actionadded",n.Event.ACTION_REMOVED="actionremoved",n.Event.ANIMATION_END="animationend",n.EventTarget=n.Class.create({initialize:function(){this._listeners={}},addEventListener:function(t,e){var n=this._listeners[t];null==n?this._listeners[t]=[e]:-1===n.indexOf(e)&&n.unshift(e)},on:function(){this.addEventListener.apply(this,arguments)},removeEventListener:function(t,e){var n=this._listeners[t];if(null!=n){var i=n.indexOf(e);-1!==i&&n.splice(i,1)}},clearEventListener:function(t){null!=t?delete this._listeners[t]:this._listeners={}},dispatchEvent:function(t){t.target=this,t.localX=t.x-this._offsetX,t.localY=t.y-this._offsetY,null!=this["on"+t.type]&&this["on"+t.type](t);var e=this._listeners[t.type];if(null!=e){e=e.slice();for(var n=0,i=e.length;i>n;n++)e[n].call(this,t)}}}),function(){var e;n.Core=n.Class.create(n.EventTarget,{initialize:function(i,s){if(null===t.document.body)throw Error("document.body is null. Please excute 'new Core()' in window.onload.");n.EventTarget.call(this);var r=!0;e&&(r=!1,e.stop()),e=n.Core.instance=this,this._calledTime=0,this._mousedownID=0,this._surfaceID=0,this._soundID=0,this._scenes=[],i=i||320,s=s||320;var a,o,h,c=document.getElementById("enchant-stage");if(c){var u=t.getComputedStyle(c);for(o=parseInt(u.width,10),h=parseInt(u.height,10),a=o&&h?Math.min(o/i,h/s):1;c.firstChild;)c.removeChild(c.firstChild);c.style.position="relative";var d=c.getBoundingClientRect();this._pageX=Math.round(t.scrollX||t.pageXOffset+d.left),this._pageY=Math.round(t.scrollY||t.pageYOffset+d.top)}else c=document.createElement("div"),c.id="enchant-stage",c.style.position="absolute",document.body.firstChild?document.body.insertBefore(c,document.body.firstChild):document.body.appendChild(c),a=Math.min(t.innerWidth/i,t.innerHeight/s),this._pageX=c.getBoundingClientRect().left,this._pageY=c.getBoundingClientRect().top;c.style.fontSize="12px",c.style.webkitTextSizeAdjust="none",c.style.webkitTapHighlightColor="rgba(0, 0, 0, 0)",this._element=c,this.addEventListener("coreresize",this._oncoreresize),this._width=i,this._height=s,this.scale=a,this.fps=30,this.frame=0,this.ready=!1,this.running=!1,this.assets={},this._assets=[],function l(t){t.assets&&n.Core.instance.preload(t.assets);for(var e in t)t.hasOwnProperty(e)&&"object"==typeof t[e]&&null!==t[e]&&Object.getPrototypeOf(t[e])===Object.prototype&&l(t[e])}(n),this.currentScene=null,this.rootScene=new n.Scene,this.pushScene(this.rootScene),this.loadingScene=new n.LoadingScene,this._activated=!1,this._offsetX=0,this._offsetY=0,this.input={},this.keyboardInputManager=new n.KeyboardInputManager(t.document,this.input),this.keyboardInputManager.addBroadcastTarget(this),this._keybind=this.keyboardInputManager._binds,n.ENV.KEY_BIND_TABLE||(n.ENV.KEY_BIND_TABLE={});for(var f in n.ENV.KEY_BIND_TABLE)this.keybind(f,n.ENV.KEY_BIND_TABLE[f]);r&&(c=n.Core.instance._element,document.addEventListener("keydown",function(t){e.dispatchEvent(new n.Event("keydown")),-1!==n.ENV.PREVENT_DEFAULT_KEY_CODES.indexOf(t.keyCode)&&(t.preventDefault(),t.stopPropagation())},!0),n.ENV.TOUCH_ENABLED&&(c.addEventListener("touchstart",function(t){var i=t.target.tagName.toLowerCase();-1===n.ENV.USE_DEFAULT_EVENT_TAGS.indexOf(i)&&(t.preventDefault(),e.running||t.stopPropagation())},!0),c.addEventListener("touchmove",function(t){var i=t.target.tagName.toLowerCase();-1===n.ENV.USE_DEFAULT_EVENT_TAGS.indexOf(i)&&(t.preventDefault(),e.running||t.stopPropagation())},!0),c.addEventListener("touchend",function(t){var i=t.target.tagName.toLowerCase();-1===n.ENV.USE_DEFAULT_EVENT_TAGS.indexOf(i)&&(t.preventDefault(),e.running||t.stopPropagation())},!0)),c.addEventListener("mousedown",function(t){var i=t.target.tagName.toLowerCase();-1===n.ENV.USE_DEFAULT_EVENT_TAGS.indexOf(i)&&(t.preventDefault(),e._mousedownID++,e.running||t.stopPropagation())},!0),c.addEventListener("mousemove",function(t){var i=t.target.tagName.toLowerCase();-1===n.ENV.USE_DEFAULT_EVENT_TAGS.indexOf(i)&&(t.preventDefault(),e.running||t.stopPropagation())},!0),c.addEventListener("mouseup",function(t){var i=t.target.tagName.toLowerCase();-1===n.ENV.USE_DEFAULT_EVENT_TAGS.indexOf(i)&&(t.preventDefault(),e.running||t.stopPropagation())},!0),e._touchEventTarget={},n.ENV.TOUCH_ENABLED&&(c.addEventListener("touchstart",function(t){for(var e,i,s=n.Core.instance,r=new n.Event(n.Event.TOUCH_START),a=t.changedTouches,o=0,h=a.length;h>o;o++)e=a[o],r._initPosition(e.pageX,e.pageY),i=s.currentScene._determineEventTarget(r),s._touchEventTarget[e.identifier]=i,i.dispatchEvent(r)},!1),c.addEventListener("touchmove",function(t){for(var e,i,s=n.Core.instance,r=new n.Event(n.Event.TOUCH_MOVE),a=t.changedTouches,o=0,h=a.length;h>o;o++)e=a[o],i=s._touchEventTarget[e.identifier],i&&(r._initPosition(e.pageX,e.pageY),i.dispatchEvent(r))},!1),c.addEventListener("touchend",function(t){for(var e,i,s=n.Core.instance,r=new n.Event(n.Event.TOUCH_END),a=t.changedTouches,o=0,h=a.length;h>o;o++)e=a[o],i=s._touchEventTarget[e.identifier],i&&(r._initPosition(e.pageX,e.pageY),i.dispatchEvent(r),delete s._touchEventTarget[e.identifier])},!1)),c.addEventListener("mousedown",function(t){var e=n.Core.instance,i=new n.Event(n.Event.TOUCH_START);i._initPosition(t.pageX,t.pageY);var s=e.currentScene._determineEventTarget(i);e._touchEventTarget[e._mousedownID]=s,s.dispatchEvent(i)},!1),c.addEventListener("mousemove",function(t){var e=n.Core.instance,i=new n.Event(n.Event.TOUCH_MOVE);i._initPosition(t.pageX,t.pageY);var s=e._touchEventTarget[e._mousedownID];s&&s.dispatchEvent(i)},!1),c.addEventListener("mouseup",function(t){var e=n.Core.instance,i=new n.Event(n.Event.TOUCH_END);i._initPosition(t.pageX,t.pageY);var s=e._touchEventTarget[e._mousedownID];s&&s.dispatchEvent(i),delete e._touchEventTarget[e._mousedownID]},!1))},width:{get:function(){return this._width},set:function(t){this._width=t,this._dispatchCoreResizeEvent()}},height:{get:function(){return this._height},set:function(t){this._height=t,this._dispatchCoreResizeEvent()}},scale:{get:function(){return this._scale},set:function(t){this._scale=t,this._dispatchCoreResizeEvent()}},_dispatchCoreResizeEvent:function(){var t=new n.Event("coreresize");t.width=this._width,t.height=this._height,t.scale=this._scale,this.dispatchEvent(t)},_oncoreresize:function(t){this._element.style.width=Math.floor(this._width*this._scale)+"px",this._element.style.height=Math.floor(this._height*this._scale)+"px";for(var e,n=0,i=this._scenes.length;i>n;n++)e=this._scenes[n],e.dispatchEvent(t)},preload:function(t){var e;if(!(t instanceof Array))if("object"==typeof t){e=[];for(var n in t)t.hasOwnProperty(n)&&e.push([t[n],n]);t=e}else t=Array.prototype.slice.call(arguments);return Array.prototype.push.apply(this._assets,t),this},load:function(t,i,s,r){var a;if("string"==typeof arguments[1])a=i,s=s||function(){},r=r||function(){};else{a=t;var o=s;s=arguments[1]||function(){},r=o||function(){}}var h=n.Core.findExt(t);return n.Deferred.next(function(){var i=new n.Deferred,o=function(t){i.call(t),s.call(this,t)},c=function(t){i.fail(t),r.call(this,t)};if(n.Core._loadFuncs[h])n.Core.instance.assets[a]=n.Core._loadFuncs[h](t,h,o,c);else{var u=new XMLHttpRequest;u.open("GET",t,!0),u.onreadystatechange=function(){if(4===u.readyState){if(200!==u.status&&0!==u.status){var i=new n.Event("error");i.message=u.status+": "+"Cannot load an asset: "+t,c.call(n.Core.instance,i)}var s=u.getResponseHeader("Content-Type")||"";s.match(/^image/)?e.assets[a]=n.Surface.load(t,o,c):s.match(/^audio/)?e.assets[a]=n.Sound.load(t,s,o,c):(e.assets[a]=u.responseText,o.call(n.Core.instance,new n.Event("load")))}},u.send(null)}return i})},start:function(i){var s=function(){this.frame=0,this.removeEventListener("load",s)};if(this.addEventListener("load",s),this.currentTime=t.getTime(),this.running=!0,this.ready=!0,!this._activated&&(this._activated=!0,"mobilesafari"===n.ENV.BROWSER&&n.ENV.USE_WEBAUDIO&&n.ENV.USE_TOUCH_TO_START_SCENE)){var r=new n.Deferred,a=this._createTouchToStartScene();return a.addEventListener(n.Event.TOUCH_START,function o(){this.removeEventListener(n.Event.TOUCH_START,o);var t=new n.WebAudioSound;t.buffer=n.WebAudioSound.audioContext.createBuffer(1,1,48e3),t.play(),e.removeScene(a),e.start(r)},!1),e.pushScene(a),r}this._requestNextFrame(0);var h=this._requestPreload().next(function(){n.Core.instance.loadingScene.dispatchEvent(new n.Event(n.Event.LOAD))});return i&&h.next(function(t){i.call(t)}).error(function(t){i.fail(t)}),h},_requestPreload:function(){var t={},i=0,s=0,r=function(){var t=new n.Event("progress");t.loaded=++i,t.total=s,e.loadingScene.dispatchEvent(t)};return this._assets.reverse().forEach(function(e){var n,i;e instanceof Array?(n=e[0],i=e[1]):n=i=e,t[i]||(t[i]=this.load(n,i,r),s++)},this),this.pushScene(this.loadingScene),n.Deferred.parallel(t)},_createTouchToStartScene:function(){var t=new n.Label("Touch to Start"),i=Math.round(e.width/10),s=new n.Scene;return t.color="#fff",t.font=i-1+"px bold Helvetica,Arial,sans-serif",t.textAlign="center",t.width=e.width,t.height=t._boundHeight,t.y=(e.height-t.height)/2,s.backgroundColor="#000",s.addChild(t),s},debug:function(){return this._debug=!0,this.start()},actualFps:{get:function(){return this._actualFps||this.fps}},_requestNextFrame:function(e){this.ready&&(this.fps>=60||16>=e?(this._calledTime=t.getTime(),t.requestAnimationFrame(this._callTick)):setTimeout(function(){var e=n.Core.instance;e._calledTime=t.getTime(),t.requestAnimationFrame(e._callTick)},Math.max(0,e)))},_callTick:function(t){n.Core.instance._tick(t)},_tick:function(){var e=new n.Event("enterframe"),i=t.getTime(),s=e.elapsed=i-this.currentTime;this.currentTime=i,this._actualFps=s>0?1e3/s:0;for(var r=this.currentScene.childNodes.slice(),a=Array.prototype.push;r.length;){var o=r.pop();o.age++,o.dispatchEvent(e),o.childNodes&&a.apply(r,o.childNodes)}this.currentScene.age++,this.currentScene.dispatchEvent(e),this.dispatchEvent(e),this.dispatchEvent(new n.Event("exitframe")),this.frame++,i=t.getTime(),this._requestNextFrame(1e3/this.fps-(i-this._calledTime))},getTime:function(){return t.getTime()},stop:function(){this.ready=!1,this.running=!1},pause:function(){this.ready=!1},resume:function(){this.ready||(this.currentTime=t.getTime(),this.ready=!0,this.running=!0,this._requestNextFrame(0))},pushScene:function(t){return this._element.appendChild(t._element),this.currentScene&&this.currentScene.dispatchEvent(new n.Event("exit")),this.currentScene=t,this.currentScene.dispatchEvent(new n.Event("enter")),this._scenes.push(t)},popScene:function(){return this.currentScene===this.rootScene?this.currentScene:(this._element.removeChild(this.currentScene._element),this.currentScene.dispatchEvent(new n.Event("exit")),this.currentScene=this._scenes[this._scenes.length-2],this.currentScene.dispatchEvent(new n.Event("enter")),this._scenes.pop())},replaceScene:function(t){return this.popScene(),this.pushScene(t)},removeScene:function(t){if(this.currentScene===t)return this.popScene();var e=this._scenes.indexOf(t);return-1!==e?(this._scenes.splice(e,1),this._element.removeChild(t._element),t):null},_buttonListener:function(t){this.currentScene.dispatchEvent(t)},keybind:function(t,e){return this.keyboardInputManager.keybind(t,e),this.addEventListener(e+"buttondown",this._buttonListener),this.addEventListener(e+"buttonup",this._buttonListener),this},keyunbind:function(t){var e=this._keybind[t];return this.keyboardInputManager.keyunbind(t),this.removeEventListener(e+"buttondown",this._buttonListener),this.removeEventListener(e+"buttonup",this._buttonListener),this},changeButtonState:function(t,e){this.keyboardInputManager.changeState(t,e)},getElapsedTime:function(){return this.frame/this.fps}}),n.Core._loadFuncs={},n.Core._loadFuncs.jpg=n.Core._loadFuncs.jpeg=n.Core._loadFuncs.gif=n.Core._loadFuncs.png=n.Core._loadFuncs.bmp=function(t,e,i,s){return n.Surface.load(t,i,s)},n.Core._loadFuncs.mp3=n.Core._loadFuncs.aac=n.Core._loadFuncs.m4a=n.Core._loadFuncs.wav=n.Core._loadFuncs.ogg=function(t,e,i,s){return n.Sound.load(t,"audio/"+e,i,s)},n.Core.findExt=function(t){var e=t.match(/\.\w+$/);return e&&e.length>0?e[0].slice(1).toLowerCase():0===t.indexOf("data:")?t.split(/[\/;]/)[1].toLowerCase():null},n.Core.instance=null}(),n.Game=n.Core,n.InputManager=n.Class.create(n.EventTarget,{initialize:function(t,e){n.EventTarget.call(this),this.broadcastTarget=[],this.valueStore=t,this.source=e||this,this._binds={},this._stateHandler=function(t){var e=t.source.identifier,n=this._binds[e];this.changeState(n,t.data)}.bind(this)},bind:function(t,e){t.addEventListener(n.Event.INPUT_STATE_CHANGED,this._stateHandler),this._binds[t.identifier]=e},unbind:function(t){t.removeEventListener(n.Event.INPUT_STATE_CHANGED,this._stateHandler),delete this._binds[t.identifier]},addBroadcastTarget:function(t){var e=this.broadcastTarget.indexOf(t);-1===e&&this.broadcastTarget.push(t)},removeBroadcastTarget:function(t){var e=this.broadcastTarget.indexOf(t);-1!==e&&this.broadcastTarget.splice(e,1)},broadcastEvent:function(t){for(var e=this.broadcastTarget,n=0,i=e.length;i>n;n++)e[n].dispatchEvent(t)},changeState:function(){}}),n.InputSource=n.Class.create(n.EventTarget,{initialize:function(t){n.EventTarget.call(this),this.identifier=t},notifyStateChange:function(t){var e=new n.Event(n.Event.INPUT_STATE_CHANGED);e.data=t,e.source=this,this.dispatchEvent(e)}}),n.BinaryInputManager=n.Class.create(n.InputManager,{initialize:function(t,e,i,s){n.InputManager.call(this,t,s),this.activeInputsNum=0,this.activeEventNameSuffix=e,this.inactiveEventNameSuffix=i},bind:function(t,e){n.InputManager.prototype.bind.call(this,t,e),this.valueStore[e]=!1},unbind:function(t){var e=this._binds[t.identifier];n.InputManager.prototype.unbind.call(this,t),delete this.valueStore[e]},changeState:function(t,e){e?this._down(t):this._up(t)},_down:function(t){var e;this.valueStore[t]||(this.valueStore[t]=!0,e=new n.Event(this.activeInputsNum++?"inputchange":"inputstart"),e.source=this.source,this.broadcastEvent(e));var i=new n.Event(t+this.activeEventNameSuffix);i.source=this.source,this.broadcastEvent(i)},_up:function(t){var e;this.valueStore[t]&&(this.valueStore[t]=!1,e=new n.Event(--this.activeInputsNum?"inputchange":"inputend"),e.source=this.source,this.broadcastEvent(e));var i=new n.Event(t+this.inactiveEventNameSuffix);i.source=this.source,this.broadcastEvent(i)}}),n.BinaryInputSource=n.Class.create(n.InputSource,{initialize:function(t){n.InputSource.call(this,t)}}),n.KeyboardInputManager=n.Class.create(n.BinaryInputManager,{initialize:function(t,e){n.BinaryInputManager.call(this,e,"buttondown","buttonup"),this._attachDOMEvent(t,"keydown",!0),this._attachDOMEvent(t,"keyup",!1)},keybind:function(t,e){this.bind(n.KeyboardInputSource.getByKeyCode(""+t),e)},keyunbind:function(t){this.unbind(n.KeyboardInputSource.getByKeyCode(""+t))},_attachDOMEvent:function(t,e,i){t.addEventListener(e,function(t){var e=n.Core.instance;if(e&&e.running){var s=t.keyCode,r=n.KeyboardInputSource._instances[s];r&&r.notifyStateChange(i)}},!0)}}),n.KeyboardInputSource=n.Class.create(n.BinaryInputSource,{initialize:function(t){n.BinaryInputSource.call(this,t)}}),n.KeyboardInputSource._instances={},n.KeyboardInputSource.getByKeyCode=function(t){return this._instances[t]||(this._instances[t]=new n.KeyboardInputSource(t)),this._instances[t]},n.Node=n.Class.create(n.EventTarget,{initialize:function(){n.EventTarget.call(this),this._dirty=!1,this._matrix=[1,0,0,1,0,0],this._x=0,this._y=0,this._offsetX=0,this._offsetY=0,this.age=0,this.parentNode=null,this.scene=null,this.addEventListener("touchstart",function(t){this.parentNode&&this.parentNode.dispatchEvent(t)}),this.addEventListener("touchmove",function(t){this.parentNode&&this.parentNode.dispatchEvent(t)}),this.addEventListener("touchend",function(t){this.parentNode&&this.parentNode.dispatchEvent(t)}),n.ENV.USE_ANIMATION&&(this.tl=new n.Timeline(this))},moveTo:function(t,e){this.x=t,this.y=e},moveBy:function(t,e){this.x+=t,this.y+=e},x:{get:function(){return this._x},set:function(t){this._x!==t&&(this._x=t,this._dirty=!0)}},y:{get:function(){return this._y},set:function(t){this._y!==t&&(this._y=t,this._dirty=!0)}},_updateCoordinate:function(){var t=this,e=[t],i=t.parentNode;for(this.scene;i&&t._dirty;)e.unshift(i),t=t.parentNode,i=t.parentNode;var s,r,a,o=n.Matrix.instance,h=o.stack,c=[];h.push(e[0]._matrix);for(var u=1,d=e.length;d>u;u++){t=e[u],s=[],o.makeTransformMatrix(t,c),o.multiply(h[h.length-1],c,s),t._matrix=s,h.push(s),r="number"==typeof t._originX?t._originX:t._width/2||0,a="number"==typeof t._originY?t._originY:t._height/2||0;var l=[r,a];o.multiplyVec(s,l,l),t._offsetX=l[0]-r,t._offsetY=l[1]-a,t._dirty=!1}o.reset()},remove:function(){if(this.parentNode&&this.parentNode.removeChild(this),this.childNodes)for(var t=this.childNodes.slice(),e=t.length-1;e>=0;e--)t[e].remove();this.clearEventListener()}});var i=function(t,e){for(var n,i=[],s=0,r=t.collection.length;r>s;s++)n=t.collection[s],e._intersectOne(n)&&i.push(n);return i},s=function(t,e){for(var n,i,s=[],r=0,a=t.collection.length;a>r;r++){n=t.collection[r];for(var o=0,h=e.collection.length;h>o;o++)i=e.collection[o],n._intersectOne(i)&&s.push([n,i])}return s},r=function(t,e){for(var n,i=[],s=0,r=t.collection.length;r>s;s++)n=t.collection[s],e._intersectStrictOne(n)&&i.push(n);return i},a=function(t,e){for(var n,i,s=[],r=0,a=t.collection.length;a>r;r++){n=t.collection[r];for(var o=0,h=e.collection.length;h>o;o++)i=e.collection[o],n._intersectStrictOne(i)&&s.push([n,i])}return s},o=function(t){return t instanceof n.Entity?i(this,t):"function"==typeof t&&t.collection?s(this,t):!1},h=function(t){return t instanceof n.Entity?r(this,t):"function"==typeof t&&t.collection?a(this,t):!1},c=n.Node.prototype.clearEventListener;n.Entity=n.Class.create(n.Node,{initialize:function(){var t=n.Core.instance;n.Node.call(this),this._rotation=0,this._scaleX=1,this._scaleY=1,this._touchEnabled=!0,this._clipping=!1,this._originX=null,this._originY=null,this._width=0,this._height=0,this._backgroundColor=null,this._debugColor="#0000ff",this._opacity=1,this._visible=!0,this._buttonMode=null,this._style={},this.__styleStatus={},this._isContainedInCollection=!1,this.compositeOperation=null,this.buttonMode=null,this.buttonPressed=!1,this.addEventListener("touchstart",function(){this.buttonMode&&(this.buttonPressed=!0,this.dispatchEvent(new n.Event(this.buttonMode+"buttondown")),t.changeButtonState(this.buttonMode,!0))}),this.addEventListener("touchend",function(){this.buttonMode&&(this.buttonPressed=!1,this.dispatchEvent(new n.Event(this.buttonMode+"buttonup")),t.changeButtonState(this.buttonMode,!1))}),this.enableCollection()},width:{get:function(){return this._width},set:function(t){this._width!==t&&(this._width=t,this._dirty=!0)}},height:{get:function(){return this._height},set:function(t){this._height!==t&&(this._height=t,this._dirty=!0)}},backgroundColor:{get:function(){return this._backgroundColor},set:function(t){this._backgroundColor=t}},debugColor:{get:function(){return this._debugColor},set:function(t){this._debugColor=t}},opacity:{get:function(){return this._opacity},set:function(t){this._opacity=parseFloat(t)}},visible:{get:function(){return this._visible},set:function(t){this._visible=t}},touchEnabled:{get:function(){return this._touchEnabled},set:function(t){this._touchEnabled=t,this._style.pointerEvents=t?"all":"none"}},intersect:function(t){return t instanceof n.Entity?this._intersectOne(t):"function"==typeof t&&t.collection?i(t,this):!1},_intersectOne:function(t){return this._dirty&&this._updateCoordinate(),t._dirty&&t._updateCoordinate(),this._offsetX>2,re=U+B+F+Y>>2,ae=V+z+W+j>>2,oe=H+q+G+K>>2;if(Q[0]*(oe-U)-Q[1]*(ae-R)>0&&Z[0]*(oe-B)-Z[1]*(ae-P)>0&&J[0]*(oe-Y)-J[1]*(ae-X)>0&&$[0]*(oe-F)-$[1]*(ae-k)>0)return!0;if(te[0]*(re-H)-te[1]*(se-V)>0&&ee[0]*(re-q)-ee[1]*(se-z)>0&&ne[0]*(re-K)-ne[1]*(se-j)>0&&ie[0]*(re-G)-ie[1]*(se-W)>0)return!0;for(i=[b,S,A,O],s=[D,M,L,I],r=[Q,Z,J,$],a=[te,ee,ne,ie],e=0;4>e;e++)for(o=i[e],d=o[0],l=o[1],c=r[e],v=c[0],g=c[1],n=0;4>n;n++)if(h=s[n],f=h[0],_=h[1],u=a[n],m=u[0],E=u[1],C=v*E-g*m,0!==C&&(p=f-d,y=_-l,T=(p*g-y*v)/C,w=(p*E-y*m)/C,T>0&&1>T&&w>0&&1>w))return!0;return!1},within:function(t,e){this._dirty&&this._updateCoordinate(),t._dirty&&t._updateCoordinate(),null==e&&(e=(this.width+this.height+t.width+t.height)/4);var n;return e*e>(n=this._offsetX-t._offsetX+(this.width-t.width)/2)*n+(n=this._offsetY-t._offsetY+(this.height-t.height)/2)*n},scale:function(t,e){this._scaleX*=t,this._scaleY*=null!=e?e:t,this._dirty=!0},rotate:function(t){this.rotation+=t},scaleX:{get:function(){return this._scaleX},set:function(t){this._scaleX!==t&&(this._scaleX=t,this._dirty=!0)}},scaleY:{get:function(){return this._scaleY},set:function(t){this._scaleY!==t&&(this._scaleY=t,this._dirty=!0)}},rotation:{get:function(){return this._rotation},set:function(t){this._rotation!==t&&(this._rotation=t,this._dirty=!0)}},originX:{get:function(){return this._originX},set:function(t){this._originX!==t&&(this._originX=t,this._dirty=!0)}},originY:{get:function(){return this._originY},set:function(t){this._originY!==t&&(this._originY=t,this._dirty=!0)}},enableCollection:function(){this.addEventListener("addedtoscene",this._addSelfToCollection),this.addEventListener("removedfromscene",this._removeSelfFromCollection),this.scene&&this._addSelfToCollection()},disableCollection:function(){this.removeEventListener("addedtoscene",this._addSelfToCollection),this.removeEventListener("removedfromscene",this._removeSelfFromCollection),this.scene&&this._removeSelfFromCollection()},clearEventListener:function(){c.apply(this,arguments),this.scene&&this._removeSelfFromCollection()},_addSelfToCollection:function(){if(!this._isContainedInCollection){var t=this.getConstructor();t._collectionTarget.forEach(function(t){t.collection.push(this)},this),this._isContainedInCollection=!0}},_removeSelfFromCollection:function(){if(this._isContainedInCollection){var t=this.getConstructor();t._collectionTarget.forEach(function(t){var e=t.collection.indexOf(this);-1!==e&&t.collection.splice(e,1)},this),this._isContainedInCollection=!1}},getBoundingRect:function(){var t=this.width||0,e=this.height||0,n=this._matrix,i=n[0]*t,s=n[1]*t,r=n[2]*e,a=n[3]*e,o=n[4],h=n[5],c=[o,i+o,r+o,i+r+o].sort(function(t,e){return t-e}),u=[h,s+h,a+h,s+a+h].sort(function(t,e){return t-e});return{left:c[0],top:u[0],width:c[3]-c[0],height:u[3]-u[0]}},getOrientedBoundingRect:function(){var t=this.width||0,e=this.height||0,n=this._matrix,i=n[0]*t,s=n[1]*t,r=n[2]*e,a=n[3]*e,o=n[4],h=n[5];return{leftTop:[o,h],rightTop:[i+o,s+h],leftBottom:[r+o,a+h],rightBottom:[i+r+o,s+a+h]}},getConstructor:function(){return Object.getPrototypeOf(this).constructor}});var u=function(t){if(!t._collective){var e=n.Class.getInheritanceTree(t),i=e.indexOf(n.Entity);t._collectionTarget=-1!==i?e.splice(0,i+1):[],t.intersect=o,t.intersectStrict=h,t.collection=[],t._collective=!0}};u(n.Entity),n.Entity._inherited=function(t){u(t)},n.Sprite=n.Class.create(n.Entity,{initialize:function(t,e){n.Entity.call(this),this.width=t,this.height=e,this._image=null,this._debugColor="#ff0000",this._frameLeft=0,this._frameTop=0,this._frame=0,this._frameSequence=null},image:{get:function(){return this._image},set:function(t){if(t===e)throw Error("Assigned value on Sprite.image is undefined. Please double-check image path, and check if the image you want to use is preload before use.");t!==this._image&&(this._image=t,this._computeFramePosition())}},frame:{get:function(){return this._frame},set:function(t){null==this._frameSequence&&this._frame===t||this._deepCompareToPreviousFrame(t)||(t instanceof Array?this._frameSequence=t:(this._frameSequence=null,this._frame=t,this._computeFramePosition()))}},_frameSequence:{get:function(){return this.__frameSequence},set:function(t){t&&!this.__frameSequence?this.addEventListener(n.Event.ENTER_FRAME,this._rotateFrameSequence):!t&&this.__frameSequence&&this.removeEventListener(n.Event.ENTER_FRAME,this._rotateFrameSequence),t?(this.__frameSequence=t.slice(),this._originalFrameSequence=t.slice(),this._rotateFrameSequence()):(this.__frameSequence=null,this._originalFrameSequence=null)}},_deepCompareToPreviousFrame:function(t){if(t===this._originalFrameSequence)return!0;if(null==t||null==this._originalFrameSequence)return!1;if(!(t instanceof Array))return!1;if(t.length!==this._originalFrameSequence.length)return!1;for(var e=0;t.length>e;++e)if(t[e]!==this._originalFrameSequence[e])return!1; return!0},_computeFramePosition:function(){var t,e=this._image;null!=e&&(t=0|e.width/this._width,this._frameLeft=(0|this._frame%t)*this._width,this._frameTop=(0|this._frame/t)*this._height%e.height)},_rotateFrameSequence:function(){var t=this._frameSequence;if(t&&0!==t.length){var e=t.shift();null===e?(this._frameSequence=null,this.dispatchEvent(new n.Event(n.Event.ANIMATION_END))):(this._frame=e,this._computeFramePosition(),t.push(e))}},width:{get:function(){return this._width},set:function(t){this._width=t,this._computeFramePosition(),this._dirty=!0}},height:{get:function(){return this._height},set:function(t){this._height=t,this._computeFramePosition(),this._dirty=!0}},cvsRender:function(t){var e,i,s,r,a,o,h,c=this._image,u=this._width,d=this._height;c&&0!==u&&0!==d&&(e=c.width,i=c.height,u>e||d>i?(t.fillStyle=n.Surface._getPattern(c),t.fillRect(0,0,u,d)):(s=c._element,r=this._frameLeft,a=Math.min(this._frameTop,i-d),o=Math.max(.01,Math.min(e-r,u)),h=Math.max(.01,Math.min(i-a,d)),t.drawImage(s,r,a,o,h,0,0,u,d)))},domRender:function(){return"ms"===n.ENV.VENDOR_PREFIX?function(){this._image&&(this._image._css?(this._style["background-image"]=this._image._css,this._style["background-position"]=-this._frameLeft+"px "+-this._frameTop+"px"):this._image._element)}:function(){this._image&&(this._image._css?(this._style["background-image"]=this._image._css,this._style["background-position"]=-this._frameLeft+"px "+-this._frameTop+"px"):this._image._element)}}()}),n.Label=n.Class.create(n.Entity,{initialize:function(t){n.Entity.call(this),this.text=t||"",this.width=300,this.font="14px serif",this.textAlign="left",this._debugColor="#ff0000"},width:{get:function(){return this._width},set:function(t){this._width=t,this._dirty=!0,this.updateBoundArea()}},text:{get:function(){return this._text},set:function(t){if(t=""+t,this._text!==t){this._text=t,t=t.replace(/
/gi,"
"),this._splitText=t.split("
"),this.updateBoundArea();for(var e=0,n=this._splitText.length;n>e;e++){t=this._splitText[e];var i=this.getMetrics(t);this._splitText[e]={},this._splitText[e].text=t,this._splitText[e].height=i.height,this._splitText[e].width=i.width}}}},textAlign:{get:function(){return this._style["text-align"]},set:function(t){this._style["text-align"]=t,this.updateBoundArea()}},font:{get:function(){return this._style.font},set:function(t){this._style.font=t,this.updateBoundArea()}},color:{get:function(){return this._style.color},set:function(t){this._style.color=t}},cvsRender:function(t){var e,n,i,s,r,a,o,h,c,u=0,d=this.width;if(this._splitText){t.textBaseline="top",t.font=this.font,t.fillStyle=this.color||"#000000",n=t.measureText(" ").width,i=d/n;for(var l=0,f=this._splitText.length;f>l;l++){for(s=this._splitText[l],r=s.text,a=0;r.length>a+i||t.measureText(r.slice(a,a+i)).width>d;){for(o="",h=i,c=0;h>0;)d>t.measureText(o).width?(c+=h,o=r.slice(a,a+c)):(c-=h,o=r.slice(a,a+c)),h=0|h/2;t.fillText(o,0,u),u+=s.height-1,a+=c}o=r.slice(a,a+r.length),e="right"===this.textAlign?d-t.measureText(o).width:"center"===this.textAlign?(d-t.measureText(o).width)/2:0,t.fillText(o,e,u),u+=s.height-1}}},domRender:function(t){t.innerHTML!==this._text&&(t.innerHTML=this._text)},detectRender:function(t){t.fillRect(this._boundOffset,0,this._boundWidth,this._boundHeight)},updateBoundArea:function(){var t=this.getMetrics();this._boundWidth=t.width,this._boundHeight=t.height,this._boundOffset="right"===this.textAlign?this.width-this._boundWidth:"center"===this.textAlign?(this.width-this._boundWidth)/2:0},getMetrics:function(t){var e,n={};if(document.body){e=document.createElement("div");for(var i in this._style)"width"!==i&&"height"!==i&&(e.style[i]=this._style[i]);t=t||this._text,e.innerHTML=t.replace(/ /g," "),e.style.whiteSpace="noWrap",e.style.lineHeight=1,document.body.appendChild(e);var s=getComputedStyle(e);n.height=parseInt(s.height,10)+1,e.style.position="absolute",n.width=parseInt(s.width,10)+1,document.body.removeChild(e)}else n.width=this.width,n.height=this.height;return n}}),n.Map=n.Class.create(n.Entity,{initialize:function(t,e){var i=n.Core.instance;n.Entity.call(this);var s=new n.Surface(i.width,i.height);this._surface=s;var r=s._element;r.style.position="absolute",n.ENV.RETINA_DISPLAY&&2===i.scale?(r.width=2*i.width,r.height=2*i.height,this._style.webkitTransformOrigin="0 0",this._style.webkitTransform="scale(0.5)"):(r.width=i.width,r.height=i.height),this._context=r.getContext("2d"),this._tileWidth=t||0,this._tileHeight=e||0,this._image=null,this._data=[[[]]],this._dirty=!1,this._tight=!1,this.touchEnabled=!1,this.collisionData=null,this._listeners.render=null,this.addEventListener("render",function(){this._dirty&&(this._previousOffsetX=this._previousOffsetY=null)})},loadData:function(t){this._data=Array.prototype.slice.apply(arguments),this._dirty=!0,this._tight=!1;for(var e=0,n=this._data.length;n>e;e++){var i=0;t=this._data[e];for(var s=0,r=t.length;r>s;s++)for(var a=0,o=t[s].length;o>a;a++)t[s][a]>=0&&i++;if(i/(t.length*t[0].length)>.2){this._tight=!0;break}}},checkTile:function(t,e){if(0>t||t>=this.width||0>e||e>=this.height)return!1;var n=this._image.width,i=this._image.height,s=this._tileWidth||n,r=this._tileHeight||i;t=0|t/s,e=0|e/r;var a=this._data[0];return a[e][t]},hitTest:function(t,e){if(0>t||t>=this.width||0>e||e>=this.height)return!1;var n=this._image.width,i=this._image.height,s=this._tileWidth||n,r=this._tileHeight||i;if(t=0|t/s,e=0|e/r,null!=this.collisionData)return this.collisionData[e]&&!!this.collisionData[e][t];for(var a=0,o=this._data.length;o>a;a++){var h,c=this._data[a];if(null!=c[e]&&null!=(h=c[e][t])&&h>=0&&(0|n/s)*(0|i/r)>h)return!0}return!1},image:{get:function(){return this._image},set:function(t){var e=n.Core.instance;if(this._image=t,n.ENV.RETINA_DISPLAY&&2===e.scale){for(var i=new n.Surface(2*t.width,2*t.height),s=this._tileWidth||t.width,r=this._tileHeight||t.height,a=0|t.width/s,o=0|t.height/r,h=0;o>h;h++)for(var c=0;a>c;c++)i.draw(t,c*s,h*r,s,r,2*c*s,2*h*r,2*s,2*r);this._doubledImage=i}this._dirty=!0}},tileWidth:{get:function(){return this._tileWidth},set:function(t){this._tileWidth!==t&&(this._tileWidth=t,this._dirty=!0)}},tileHeight:{get:function(){return this._tileHeight},set:function(t){this._tileHeight!==t&&(this._tileHeight=t,this._dirty=!0)}},width:{get:function(){return this._tileWidth*this._data[0][0].length}},height:{get:function(){return this._tileHeight*this._data[0].length}},redraw:function(t,e,n,i){if(null!=this._image){var s,r,a,o,h;this._doubledImage?(s=this._doubledImage,r=2*this._tileWidth,a=2*this._tileHeight,o=2*-this._offsetX,h=2*-this._offsetY,t*=2,e*=2,n*=2,i*=2):(s=this._image,r=this._tileWidth,a=this._tileHeight,o=-this._offsetX,h=-this._offsetY);var c=0|s.width/r,u=0|s.height/a,d=Math.max(0|(t+o)/r,0),l=Math.max(0|(e+h)/a,0),f=Math.ceil((t+o+n)/r),_=Math.ceil((e+h+i)/a),v=s._element,g=this._context;g.canvas,g.clearRect(t,e,n,i);for(var m=0,E=this._data.length;E>m;m++){var p=this._data[m],y=Math.min(f,p[0].length),C=Math.min(_,p.length);for(e=l;C>e;e++)for(t=d;y>t;t++){var T=p[e][t];if(T>=0&&c*u>T){var w=T%c*r,N=(0|T/c)*a;g.drawImage(v,w,N,r,a,t*r-o,e*a-h,r,a)}}}}},updateBuffer:function(){if(this._visible===e||this._visible){var t=n.Core.instance;if(this._dirty||null==this._previousOffsetX)this.redraw(0,0,t.width,t.height);else if(this._offsetX!==this._previousOffsetX||this._offsetY!==this._previousOffsetY)if(this._tight){var i=-this._offsetX,s=-this._offsetY,r=-this._previousOffsetX,a=-this._previousOffsetY,o=i-r+t.width,h=r-i+t.width,c=s-a+t.height,u=a-s+t.height;if(o>this._tileWidth&&h>this._tileWidth&&c>this._tileHeight&&u>this._tileHeight){var d,l,f,_,v,g;h>o?(d=0,f=r-i,v=o):(d=i-r,f=0,v=h),u>c?(l=0,_=a-s,g=c):(l=s-a,_=0,g=u),null==t._buffer&&(t._buffer=document.createElement("canvas"),t._buffer.width=this._context.canvas.width,t._buffer.height=this._context.canvas.height);var m=t._buffer.getContext("2d");this._doubledImage?(m.clearRect(0,0,2*v,2*g),m.drawImage(this._context.canvas,2*d,2*l,2*v,2*g,0,0,2*v,2*g),m=this._context,m.clearRect(2*f,2*_,2*v,2*g),m.drawImage(t._buffer,0,0,2*v,2*g,2*f,2*_,2*v,2*g)):(m.clearRect(0,0,v,g),m.drawImage(this._context.canvas,d,l,v,g,0,0,v,g),m=this._context,m.clearRect(f,_,v,g),m.drawImage(t._buffer,0,0,v,g,f,_,v,g)),0===f?this.redraw(v,0,t.width-v,t.height):this.redraw(0,0,t.width-v,t.height),0===_?this.redraw(0,g,t.width,t.height-g):this.redraw(0,0,t.width,t.height-g)}else this.redraw(0,0,t.width,t.height)}else this.redraw(0,0,t.width,t.height);this._previousOffsetX=this._offsetX,this._previousOffsetY=this._offsetY}},cvsRender:function(t){if(0!==this.width&&0!==this.height){var e=n.Core.instance;this.updateBuffer(),t.save(),t.setTransform(1,0,0,1,0,0);var i=this._context.canvas;t.drawImage(i,0,0,e.width,e.height),t.restore()}},domRender:function(){this._image&&(this.updateBuffer(),this._style["background-image"]=this._surface._css,this._style[n.ENV.VENDOR_PREFIX+"Transform"]="matrix(1, 0, 0, 1, 0, 0)")}}),n.Group=n.Class.create(n.Node,{initialize:function(){this.childNodes=[],n.Node.call(this),this._rotation=0,this._scaleX=1,this._scaleY=1,this._originX=null,this._originY=null,this.__dirty=!1,[n.Event.ADDED_TO_SCENE,n.Event.REMOVED_FROM_SCENE].forEach(function(t){this.addEventListener(t,function(t){this.childNodes.forEach(function(e){e.scene=this.scene,e.dispatchEvent(t)},this)})},this)},addChild:function(t){t.parentNode&&t.parentNode.removeChild(t),this.childNodes.push(t),t.parentNode=this;var e=new n.Event("childadded");if(e.node=t,e.next=null,this.dispatchEvent(e),t.dispatchEvent(new n.Event("added")),this.scene){t.scene=this.scene;var i=new n.Event("addedtoscene");t.dispatchEvent(i)}},insertBefore:function(t,e){t.parentNode&&t.parentNode.removeChild(t);var i=this.childNodes.indexOf(e);if(-1!==i){this.childNodes.splice(i,0,t),t.parentNode=this;var s=new n.Event("childadded");if(s.node=t,s.next=e,this.dispatchEvent(s),t.dispatchEvent(new n.Event("added")),this.scene){t.scene=this.scene;var r=new n.Event("addedtoscene");t.dispatchEvent(r)}}else this.addChild(t)},removeChild:function(t){var e;if(-1!==(e=this.childNodes.indexOf(t))){this.childNodes.splice(e,1),t.parentNode=null;var i=new n.Event("childremoved");if(i.node=t,this.dispatchEvent(i),t.dispatchEvent(new n.Event("removed")),this.scene){t.scene=null;var s=new n.Event("removedfromscene");t.dispatchEvent(s)}}},firstChild:{get:function(){return this.childNodes[0]}},lastChild:{get:function(){return this.childNodes[this.childNodes.length-1]}},rotation:{get:function(){return this._rotation},set:function(t){this._rotation!==t&&(this._rotation=t,this._dirty=!0)}},scaleX:{get:function(){return this._scaleX},set:function(t){this._scaleX!==t&&(this._scaleX=t,this._dirty=!0)}},scaleY:{get:function(){return this._scaleY},set:function(t){this._scaleY!==t&&(this._scaleY=t,this._dirty=!0)}},originX:{get:function(){return this._originX},set:function(t){this._originX!==t&&(this._originX=t,this._dirty=!0)}},originY:{get:function(){return this._originY},set:function(t){this._originY!==t&&(this._originY=t,this._dirty=!0)}},_dirty:{get:function(){return this.__dirty},set:function(t){if(t=!!t,this.__dirty=t,t)for(var e=0,n=this.childNodes.length;n>e;e++)this.childNodes[e]._dirty=!0}}}),n.Matrix=n.Class.create({initialize:function(){this.reset()},reset:function(){this.stack=[],this.stack.push([1,0,0,1,0,0])},makeTransformMatrix:function(t,e){var n=t._x,i=t._y,s=t.width||0,r=t.height||0,a=t._rotation||0,o="number"==typeof t._scaleX?t._scaleX:1,h="number"==typeof t._scaleY?t._scaleY:1,c=a*Math.PI/180,u=Math.cos(c),d=Math.sin(c),l="number"==typeof t._originX?t._originX:s/2,f="number"==typeof t._originY?t._originY:r/2,_=o*u,v=o*d,g=h*d,m=h*u;e[0]=_,e[1]=v,e[2]=-g,e[3]=m,e[4]=-_*l+g*f+n+l,e[5]=-v*l-m*f+i+f},multiply:function(t,e,n){var i=t[0],s=t[2],r=t[4],a=t[1],o=t[3],h=t[5],c=e[0],u=e[2],d=e[4],l=e[1],f=e[3],_=e[5];n[0]=i*c+s*l,n[1]=a*c+o*l,n[2]=i*u+s*f,n[3]=a*u+o*f,n[4]=i*d+s*_+r,n[5]=a*d+o*_+h},multiplyVec:function(t,e,n){var i=e[0],s=e[1],r=t[0],a=t[2],o=t[4],h=t[1],c=t[3],u=t[5];n[0]=r*i+a*s+o,n[1]=h*i+c*s+u}}),n.Matrix.instance=new n.Matrix,n.DetectColorManager=n.Class.create({initialize:function(t,e){this.reference=[],this.colorResolution=t||16,this.max=e||1,this.capacity=Math.pow(this.colorResolution,3);for(var n=1,i=this.capacity;i>n;n++)this.reference[n]=null},attachDetectColor:function(t){var e=this.reference.indexOf(null);return-1===e&&(e=1),this.reference[e]=t,this._getColor(e)},detachDetectColor:function(t){var e=this.reference.indexOf(t);-1!==e&&(this.reference[e]=null)},_getColor:function(t){var e=this.colorResolution,n=e/this.max;return[parseInt(t/e/e%e,10)/n,parseInt(t/e%e,10)/n,parseInt(t%e,10)/n,1]},_decodeDetectColor:function(t,e){e=e||0;var n=this.colorResolution;return~~(t[e]*n*n*n/256)+~~(t[e+1]*n*n/256)+~~(t[e+2]*n/256)},getSpriteByColor:function(t){return this.reference[this._decodeDetectColor(t)]},getSpriteByColors:function(t){var e,n,i,s,r=0,a={};for(e=0,n=t.length;n>e;e+=4)i=this._decodeDetectColor(t,e),a[i]=(a[i]||0)+1;for(i in a)a[i]>r&&(r=a[i],s=i);return this.reference[s]}}),n.DomManager=n.Class.create({initialize:function(t,e){var i=n.Core.instance;this.layer=null,this.targetNode=t,"string"==typeof e?this.element=document.createElement(e):e instanceof HTMLElement&&(this.element=e),this.style=this.element.style,this.style.position="absolute",this.style[n.ENV.VENDOR_PREFIX+"TransformOrigin"]="0px 0px",i._debug&&(this.style.border="1px solid blue",this.style.margin="-1px");var s=this;this._setDomTarget=function(){s.layer._touchEventTarget=s.targetNode},this._attachEvent()},getDomElement:function(){return this.element},getDomElementAsNext:function(){return this.element},getNextManager:function(t){var e=this.targetNode.parentNode.childNodes.indexOf(t.targetNode);return e!==this.targetNode.parentNode.childNodes.length-1?this.targetNode.parentNode.childNodes[e+1]._domManager:null},addManager:function(t,e){var n;e&&(n=e.getDomElementAsNext());var i=t.getDomElement();i instanceof Array?i.forEach(function(t){n?this.element.insertBefore(t,n):this.element.appendChild(t)},this):n?this.element.insertBefore(i,n):this.element.appendChild(i),this.setLayer(this.layer)},removeManager:function(t){t instanceof n.DomlessManager?t._domRef.forEach(function(t){this.element.removeChild(t)},this):this.element.removeChild(t.element),this.setLayer(this.layer)},setLayer:function(t){this.layer=t;var e,n=this.targetNode;if(n.childNodes)for(var i=0,s=n.childNodes.length;s>i;i++)e=n.childNodes[i]._domManager,e&&e.setLayer(t)},render:function(t){var e=this.targetNode,i=n.Matrix.instance,s=i.stack,r=[];i.makeTransformMatrix(e,r),i.multiply(s[s.length-1],r,r),i.multiply(t,r,t),e._matrix=t;var a="number"==typeof e._originX?e._originX:e.width/2||0,o="number"==typeof e._originY?e._originY:e.height/2||0,h=[a,o];i.multiplyVec(r,h,h),e._offsetX=h[0]-a,e._offsetY=h[1]-o,!e.parentNode||e.parentNode instanceof n.Group||(e._offsetX+=e.parentNode._offsetX,e._offsetY+=e.parentNode._offsetY),e._dirty&&(this.style[n.ENV.VENDOR_PREFIX+"Transform"]="matrix("+r[0].toFixed(10)+","+r[1].toFixed(10)+","+r[2].toFixed(10)+","+r[3].toFixed(10)+","+r[4].toFixed(10)+","+r[5].toFixed(10)+")"),this.domRender()},domRender:function(){var t=this.targetNode;t._style||(t._style={}),t.__styleStatus||(t.__styleStatus={}),null!==t.width&&(t._style.width=t.width+"px"),null!==t.height&&(t._style.height=t.height+"px"),t._style.opacity=t._opacity,t._style["background-color"]=t._backgroundColor,t._visible!==e&&(t._style.display=t._visible?"block":"none"),"function"==typeof t.domRender&&t.domRender(this.element);var n;for(var i in t._style)n=t._style[i],t.__styleStatus[i]!==n&&null!=n&&(this.style.setProperty(i,""+n),t.__styleStatus[i]=n)},_attachEvent:function(){n.ENV.TOUCH_ENABLED&&this.element.addEventListener("touchstart",this._setDomTarget,!0),this.element.addEventListener("mousedown",this._setDomTarget,!0)},_detachEvent:function(){n.ENV.TOUCH_ENABLED&&this.element.removeEventListener("touchstart",this._setDomTarget,!0),this.element.removeEventListener("mousedown",this._setDomTarget,!0)},remove:function(){this._detachEvent(),this.element=this.style=this.targetNode=null}}),n.DomlessManager=n.Class.create({initialize:function(t){this._domRef=[],this.targetNode=t},_register:function(t,e){var n=this._domRef.indexOf(e);t instanceof Array?-1===n?Array.prototype.push.apply(this._domRef,t):Array.prototype.splice.apply(this._domRef,[n,0].concat(t)):-1===n?this._domRef.push(t):this._domRef.splice(n,0,t)},getNextManager:function(t){var e=this.targetNode.parentNode.childNodes.indexOf(t.targetNode);return e!==this.targetNode.parentNode.childNodes.length-1?this.targetNode.parentNode.childNodes[e+1]._domManager:null},getDomElement:function(){var t=[];return this.targetNode.childNodes.forEach(function(e){t=t.concat(e._domManager.getDomElement())}),t},getDomElementAsNext:function(){if(this._domRef.length)return this._domRef[0];var t=this.getNextManager(this);return t?t.element:null},addManager:function(t,e){var i=this.targetNode.parentNode;i&&(null===e&&(e=this.getNextManager(this)),i instanceof n.Scene?i._layers.Dom._domManager.addManager(t,e):i._domManager.addManager(t,e));var s=e?e.getDomElementAsNext():null;this._register(t.getDomElement(),s),this.setLayer(this.layer)},removeManager:function(t){var e,n=this._domRef.indexOf(t.element);-1!==n&&(e=this._domRef[n],e.parentNode.removeChild(e),this._domRef.splice(n,1)),this.setLayer(this.layer)},setLayer:function(t){this.layer=t;var e,n=this.targetNode;if(n.childNodes)for(var i=0,s=n.childNodes.length;s>i;i++)e=n.childNodes[i]._domManager,e&&e.setLayer(t)},render:function(t){var e=n.Matrix.instance,i=e.stack,s=this.targetNode,r=[];e.makeTransformMatrix(s,r),e.multiply(i[i.length-1],r,r),e.multiply(t,r,t),s._matrix=t;var a="number"==typeof s._originX?s._originX:s.width/2||0,o="number"==typeof s._originY?s._originY:s.height/2||0,h=[a,o];e.multiplyVec(r,h,h),s._offsetX=h[0]-a,s._offsetY=h[1]-o,i.push(r)},remove:function(){this._domRef=[],this.targetNode=null}}),n.DomLayer=n.Class.create(n.Group,{initialize:function(){var t=n.Core.instance;n.Group.call(this),this._touchEventTarget=null,this._element=document.createElement("div"),this._element.style.position="absolute",this._domManager=new n.DomManager(this,this._element),this._domManager.layer=this,this.width=t.width,this.height=t.height;var e=[n.Event.TOUCH_START,n.Event.TOUCH_MOVE,n.Event.TOUCH_END];e.forEach(function(t){this.addEventListener(t,function(t){this._scene&&this._scene.dispatchEvent(t)})},this);var i=function(t){var e=t.node,r=t.next,a=t.target,o=r?r._domManager:null;n.DomLayer._attachDomManager(e,i,s),a._domManager.addManager(e._domManager,o);var h=new n.Event(n.Event.RENDER);e._dirty=!0,a._domManager.layer._rendering(e,h)},s=function(t){var e=t.node,r=t.target;r._domManager.removeManager(e._domManager),n.DomLayer._detachDomManager(e,i,s)};this.addEventListener("childremoved",s),this.addEventListener("childadded",i)},width:{get:function(){return this._width},set:function(t){this._width=t,this._element.style.width=t+"px"}},height:{get:function(){return this._height},set:function(t){this._height=t,this._element.style.height=t+"px"}},addChild:function(t){this.childNodes.push(t),t.parentNode=this;var e=new n.Event("childadded");if(e.node=t,e.next=null,this.dispatchEvent(e),t.dispatchEvent(new n.Event("added")),this.scene){t.scene=this.scene;var i=new n.Event("addedtoscene");t.dispatchEvent(i)}},insertBefore:function(t,e){var i=this.childNodes.indexOf(e);if(-1!==i){this.childNodes.splice(i,0,t),t.parentNode=this;var s=new n.Event("childadded");if(s.node=t,s.next=e,this.dispatchEvent(s),t.dispatchEvent(new n.Event("added")),this.scene){t.scene=this.scene;var r=new n.Event("addedtoscene");t.dispatchEvent(r)}}else this.addChild(t)},_startRendering:function(){this.addEventListener("exitframe",this._onexitframe),this._onexitframe()},_stopRendering:function(){this.removeEventListener("exitframe",this._onexitframe),this._onexitframe()},_onexitframe:function(){this._rendering(this,new n.Event(n.Event.RENDER))},_rendering:function(t,e,i){var s;if(i||(i=[1,0,0,1,0,0]),t.dispatchEvent(e),t._domManager.render(i),t.childNodes)for(var r=0,a=t.childNodes.length;a>r;r++)s=t.childNodes[r],this._rendering(s,e,i.slice());t._domManager instanceof n.DomlessManager&&n.Matrix.instance.stack.pop(),t._dirty=!1},_determineEventTarget:function(){var t=this._touchEventTarget;return this._touchEventTarget=null,t===this?null:t}}),n.DomLayer._attachDomManager=function(t,e,i){var s;if(t._domManager||(t.addEventListener("childadded",e),t.addEventListener("childremoved",i),t._domManager=t instanceof n.Group?new n.DomlessManager(t):t._element?new n.DomManager(t,t._element):new n.DomManager(t,"div")),t.childNodes)for(var r=0,a=t.childNodes.length;a>r;r++)s=t.childNodes[r],n.DomLayer._attachDomManager(s,e,i),t._domManager.addManager(s._domManager,null)},n.DomLayer._detachDomManager=function(t,e,i){var s;if(t.removeEventListener("childadded",e),t.removeEventListener("childremoved",i),t.childNodes)for(var r=0,a=t.childNodes.length;a>r;r++)s=t.childNodes[r],t._domManager.removeManager(s._domManager,null),n.DomLayer._detachDomManager(s,e,i);t._domManager.remove(),delete t._domManager},n.CanvasLayer=n.Class.create(n.Group,{initialize:function(){var t=n.Core.instance;n.Group.call(this),this._cvsCache={matrix:[1,0,0,1,0,0],detectColor:"#000000"},this._cvsCache.layer=this,this._element=document.createElement("canvas"),this._element.style.position="absolute",this._element.style.left=this._element.style.top="0px",this._detect=document.createElement("canvas"),this._detect.style.position="absolute",this._lastDetected=0,this.context=this._element.getContext("2d"),this._dctx=this._detect.getContext("2d"),this._setImageSmoothingEnable(),this._colorManager=new n.DetectColorManager(16,256),this.width=t.width,this.height=t.height;var e=[n.Event.TOUCH_START,n.Event.TOUCH_MOVE,n.Event.TOUCH_END];e.forEach(function(t){this.addEventListener(t,function(t){this._scene&&this._scene.dispatchEvent(t)})},this);var i=function(t){var e,r=t.node,a=t.target;e=a instanceof n.CanvasLayer?a._scene._layers.Canvas:a.scene._layers.Canvas,n.CanvasLayer._attachCache(r,e,i,s);var o=new n.Event(n.Event.RENDER);a._dirty&&a._updateCoordinate(),r._dirty=!0,n.Matrix.instance.stack.push(a._matrix),n.CanvasRenderer.instance.render(e.context,r,o),n.Matrix.instance.stack.pop(a._matrix)},s=function(t){var e,r=t.node,a=t.target;e=a instanceof n.CanvasLayer?a._scene._layers.Canvas:a.scene._layers.Canvas,n.CanvasLayer._detachCache(r,e,i,s)};this.addEventListener("childremoved",s),this.addEventListener("childadded",i)},width:{get:function(){return this._width},set:function(t){this._width=t,this._element.width=this._detect.width=t,this._setImageSmoothingEnable()}},height:{get:function(){return this._height},set:function(t){this._height=t,this._element.height=this._detect.height=t,this._setImageSmoothingEnable()}},addChild:function(t){this.childNodes.push(t),t.parentNode=this;var e=new n.Event("childadded");e.node=t,e.next=null,this.dispatchEvent(e),t.dispatchEvent(new n.Event("added"))},insertBefore:function(t,e){var i=this.childNodes.indexOf(e);if(-1!==i){this.childNodes.splice(i,0,t),t.parentNode=this;var s=new n.Event("childadded");s.node=t,s.next=e,this.dispatchEvent(s),t.dispatchEvent(new n.Event("added"))}else this.addChild(t)},_startRendering:function(){this.addEventListener("exitframe",this._onexitframe),this._onexitframe()},_stopRendering:function(){this.removeEventListener("exitframe",this._onexitframe),this._onexitframe()},_onexitframe:function(){var t=n.Core.instance,e=this.context;e.clearRect(0,0,t.width,t.height);var i=new n.Event(n.Event.RENDER);n.CanvasRenderer.instance.render(e,this,i)},_determineEventTarget:function(t){return this._getEntityByPosition(t.x,t.y)},_getEntityByPosition:function(t,e){var i=n.Core.instance,s=this._dctx;this._lastDetecteda;a++)r=t.childNodes[a],n.CanvasLayer._attachCache(r,e,i,s)},n.CanvasLayer._detachCache=function(t,e,i,s){var r;if(t._cvsCache&&(e._colorManager.detachDetectColor(t),t.removeEventListener("childadded",i),t.removeEventListener("childremoved",s),delete t._cvsCache),t.childNodes)for(var a=0,o=t.childNodes.length;o>a;a++)r=t.childNodes[a],n.CanvasLayer._detachCache(r,e,i,s)},n.CanvasRenderer=n.Class.create({render:function(t,i,s){var r,a,o;if(t.save(),i.dispatchEvent(s),this.transform(t,i),(i._visible===e||i._visible)&&(r=i.width,a=i.height,i.compositeOperation&&(t.globalCompositeOperation=i.compositeOperation),t.globalAlpha="number"==typeof i._opacity?i._opacity:1,i._backgroundColor&&(t.fillStyle=i._backgroundColor,t.fillRect(0,0,r,a)),i.cvsRender&&i.cvsRender(t),n.Core.instance._debug&&i._debugColor&&(t.strokeStyle=i._debugColor,t.strokeRect(0,0,r,a)),i._clipping&&(t.beginPath(),t.rect(0,0,r,a),t.clip()),i.childNodes))for(var h=0,c=i.childNodes.length;c>h;h++)o=i.childNodes[h],this.render(t,o,s);t.restore(),n.Matrix.instance.stack.pop()},detectRender:function(t,i){var s,r,a;if(i._visible===e||i._visible){if(s=i.width,r=i.height,t.save(),this.transform(t,i),t.fillStyle=i._cvsCache.detectColor,i._touchEnabled&&(i.detectRender?i.detectRender(t):t.fillRect(0,0,s,r)),i._clipping&&(t.beginPath(),t.rect(0,0,s,r),t.clip()),i.childNodes)for(var o=0,h=i.childNodes.length;h>o;o++)a=i.childNodes[o],this.detectRender(t,a);t.restore(),n.Matrix.instance.stack.pop()}},transform:function(t,e){var i,s,r,a,o=n.Matrix.instance,h=o.stack;e._dirty?(o.makeTransformMatrix(e,e._cvsCache.matrix),i=[],o.multiply(h[h.length-1],e._cvsCache.matrix,i),e._matrix=i,s="number"==typeof e._originX?e._originX:e._width/2||0,r="number"==typeof e._originY?e._originY:e._height/2||0,a=[s,r],o.multiplyVec(i,a,a),e._offsetX=a[0]-s,e._offsetY=a[1]-r,e._dirty=!1):i=e._matrix,h.push(i),t.setTransform.apply(t,i)}}),n.CanvasRenderer.instance=new n.CanvasRenderer,n.Scene=n.Class.create(n.Group,{initialize:function(){var t=n.Core.instance;n.Group.call(this),this.scene=this,this._backgroundColor=null,this._element=document.createElement("div"),this._element.style.position="absolute",this._element.style.overflow="hidden",this._element.style[n.ENV.VENDOR_PREFIX+"TransformOrigin"]="0 0",this._layers={},this._layerPriority=[],this.addEventListener(n.Event.CHILD_ADDED,this._onchildadded),this.addEventListener(n.Event.CHILD_REMOVED,this._onchildremoved),this.addEventListener(n.Event.ENTER,this._onenter),this.addEventListener(n.Event.EXIT,this._onexit);var e=this;this._dispatchExitframe=function(){var t;for(var i in e._layers)t=e._layers[i],t.dispatchEvent(new n.Event(n.Event.EXIT_FRAME))},this.addEventListener(n.Event.CORE_RESIZE,this._oncoreresize),this._oncoreresize(t)},x:{get:function(){return this._x},set:function(t){this._x=t;for(var e in this._layers)this._layers[e].x=t}},y:{get:function(){return this._y},set:function(t){this._y=t;for(var e in this._layers)this._layers[e].y=t}},width:{get:function(){return this._width},set:function(t){this._width=t;for(var e in this._layers)this._layers[e].width=t}},height:{get:function(){return this._height},set:function(t){this._height=t;for(var e in this._layers)this._layers[e].height=t}},rotation:{get:function(){return this._rotation},set:function(t){this._rotation=t;for(var e in this._layers)this._layers[e].rotation=t}},scaleX:{get:function(){return this._scaleX},set:function(t){this._scaleX=t;for(var e in this._layers)this._layers[e].scaleX=t}},scaleY:{get:function(){return this._scaleY},set:function(t){this._scaleY=t;for(var e in this._layers)this._layers[e].scaleY=t}},backgroundColor:{get:function(){return this._backgroundColor},set:function(t){this._backgroundColor=this._element.style.backgroundColor=t}},remove:function(){for(this.clearEventListener();this.childNodes.length>0;)this.childNodes[0].remove();return n.Core.instance.removeScene(this)},_oncoreresize:function(t){this._element.style.width=t.width+"px",this.width=t.width,this._element.style.height=t.height+"px",this.height=t.height,this._element.style[n.ENV.VENDOR_PREFIX+"Transform"]="scale("+t.scale+")";for(var e in this._layers)this._layers[e].dispatchEvent(t)},addLayer:function(t,e){var i=n.Core.instance;if(!this._layers[t]){var s=new n[t+"Layer"];i.currentScene===this&&s._startRendering(),this._layers[t]=s;var r=s._element;if("number"==typeof e){var a=this._element.childNodes[e];a?this._element.insertBefore(r,a):this._element.appendChild(r),this._layerPriority.splice(e,0,t)}else this._element.appendChild(r),this._layerPriority.push(t);s._scene=this}},_determineEventTarget:function(t){for(var e,n,i=this._layerPriority.length-1;i>=0&&(e=this._layers[this._layerPriority[i]],!(n=e._determineEventTarget(t)));i--);return n||(n=this),n},_onchildadded:function(t){var e,n,i=t.node,s=t.next;i._element?(e="Dom",n=1):(e="Canvas",n=0),this._layers[e]||this.addLayer(e,n),i._layer=this._layers[e],this._layers[e].insertBefore(i,s),i.parentNode=this},_onchildremoved:function(t){var e=t.node;e._layer.removeChild(e),e._layer=null},_onenter:function(){for(var t in this._layers)this._layers[t]._startRendering();n.Core.instance.addEventListener("exitframe",this._dispatchExitframe)},_onexit:function(){for(var t in this._layers)this._layers[t]._stopRendering();n.Core.instance.removeEventListener("exitframe",this._dispatchExitframe)}}),n.LoadingScene=n.Class.create(n.Scene,{initialize:function(){n.Scene.call(this),this.backgroundColor="#000";var t=0|.4*this.width,e=0|.05*this.width,i=0|.03*t,s=new n.Sprite(t,e);s.disableCollection(),s.x=(this.width-t)/2,s.y=(this.height-e)/2;var r=new n.Surface(t,e);r.context.fillStyle="#fff",r.context.fillRect(0,0,t,e),r.context.fillStyle="#000",r.context.fillRect(i,i,t-2*i,e-2*i),s.image=r;var a=0,o=0;this.addEventListener("progress",function(t){a=1*(t.loaded/t.total)}),s.addEventListener("enterframe",function(){o*=.9,o+=.1*a,r.context.fillStyle="#fff",r.context.fillRect(i,0,(t-2*i)*o,e)}),this.addChild(s),this.addEventListener("load",function(t){var e=n.Core.instance;e.removeScene(e.loadingScene),e.dispatchEvent(t)})}}),n.CanvasScene=n.Class.create(n.Scene,{initialize:function(){n.Scene.call(this),this.addLayer("Canvas")},_determineEventTarget:function(t){var e=this._layers.Canvas._determineEventTarget(t);return e||(e=this),e},_onchildadded:function(t){var e=t.node,n=t.next;e._layer=this._layers.Canvas,this._layers.Canvas.insertBefore(e,n)},_onenter:function(){this._layers.Canvas._startRendering(),n.Core.instance.addEventListener("exitframe",this._dispatchExitframe)},_onexit:function(){this._layers.Canvas._stopRendering(),n.Core.instance.removeEventListener("exitframe",this._dispatchExitframe)}}),n.DOMScene=n.Class.create(n.Scene,{initialize:function(){n.Scene.call(this),this.addLayer("Dom")},_determineEventTarget:function(t){var e=this._layers.Dom._determineEventTarget(t);return e||(e=this),e},_onchildadded:function(t){var e=t.node,n=t.next;e._layer=this._layers.Dom,this._layers.Dom.insertBefore(e,n)},_onenter:function(){this._layers.Dom._startRendering(),n.Core.instance.addEventListener("exitframe",this._dispatchExitframe)},_onexit:function(){this._layers.Dom._stopRendering(),n.Core.instance.removeEventListener("exitframe",this._dispatchExitframe)}}),n.Surface=n.Class.create(n.EventTarget,{initialize:function(t,e){n.EventTarget.call(this);var i=n.Core.instance; this.width=Math.ceil(t),this.height=Math.ceil(e),this.context=null;var s="enchant-surface"+i._surfaceID++;document.getCSSCanvasContext?(this.context=document.getCSSCanvasContext("2d",s,t,e),this._element=this.context.canvas,this._css="-webkit-canvas("+s+")",this.context):document.mozSetImageElement?(this._element=document.createElement("canvas"),this._element.width=t,this._element.height=e,this._css="-moz-element(#"+s+")",this.context=this._element.getContext("2d"),document.mozSetImageElement(s,this._element)):(this._element=document.createElement("canvas"),this._element.width=t,this._element.height=e,this._element.style.position="absolute",this.context=this._element.getContext("2d"),n.ENV.CANVAS_DRAWING_METHODS.forEach(function(t){var e=this.context[t];this.context[t]=function(){e.apply(this,arguments),this._dirty=!0}},this))},getPixel:function(t,e){return this.context.getImageData(t,e,1,1).data},setPixel:function(t,e,n,i,s,r){var a=this.context.createImageData(1,1);a.data[0]=n,a.data[1]=i,a.data[2]=s,a.data[3]=r,this.context.putImageData(a,t,e)},clear:function(){this.context.clearRect(0,0,this.width,this.height)},draw:function(t){if(t=t._element,1===arguments.length)this.context.drawImage(t,0,0);else{var e=arguments;e[0]=t,this.context.drawImage.apply(this.context,e)}},clone:function(){var t=new n.Surface(this.width,this.height);return t.draw(this),t},toDataURL:function(){var t=this._element.src;return t?"data:"===t.slice(0,5)?t:this.clone().toDataURL():this._element.toDataURL()}}),n.Surface.load=function(t,e,i){var s=new Image,r=Object.create(n.Surface.prototype,{context:{value:null},_css:{value:"url("+t+")"},_element:{value:s}});return n.EventTarget.call(r),i=i||function(){},r.addEventListener("load",e),r.addEventListener("error",i),s.onerror=function(){var t=new n.Event(n.Event.ERROR);t.message="Cannot load an asset: "+s.src,n.Core.instance.dispatchEvent(t),r.dispatchEvent(t)},s.onload=function(){r.width=s.width,r.height=s.height,r.dispatchEvent(new n.Event("load"))},s.src=t,r},n.Surface._staticCanvas2DContext=document.createElement("canvas").getContext("2d"),n.Surface._getPattern=function(t,e){return(!t._pattern||e)&&(t._pattern=this._staticCanvas2DContext.createPattern(t._element,"repeat")),t._pattern},t.Deferred?n.Deferred=t.Deferred:(n.Deferred=n.Class.create({initialize:function(){this._succ=this._fail=this._next=this._id=null,this._tail=this},next:function(t){var e=new n.Deferred;return e._succ=t,this._add(e)},error:function(t){var e=new n.Deferred;return e._fail=t,this._add(e)},_add:function(t){return this._tail._next=t,this._tail=t,this},call:function(t){for(var e,i=this;i&&!i._succ;)i=i._next;if(i instanceof n.Deferred){try{e=i._succ(t)}catch(s){return i.fail(s)}e instanceof n.Deferred?n.Deferred._insert(i,e):i._next instanceof n.Deferred&&i._next.call(e)}},fail:function(t){for(var e,i,s=this;s&&!s._fail;)s=s._next;if(!(s instanceof n.Deferred))throw t instanceof Error?t:(i=Error("failed in Deferred"),i.arg=t,i);e=s._fail(t),s.call(e)}}),n.Deferred._insert=function(t,e){t._next instanceof n.Deferred&&(e._tail._next=t._next),t._next=e},n.Deferred.next=function(t){var e=(new n.Deferred).next(t);return e._id=setTimeout(function(){e.call()},0),e},n.Deferred.parallel=function(t){var e=new n.Deferred;e._id=setTimeout(function(){e.call()},0);var i=0,s=t instanceof Array?[]:{},r=new n.Deferred;for(var a in t)t.hasOwnProperty(a)&&(i++,function(t,e){t.next(function(t){i--,s[e]=t,0>=i&&r.call(s)}).error(function(t){r.fail(t)}),"number"==typeof t._id&&clearTimeout(t._id),t._id=setTimeout(function(){t.call()},0)}(t[a],a));return i||(r._id=setTimeout(function(){r.call(s)},0)),e.next(function(){return r})}),n.DOMSound=n.Class.create(n.EventTarget,{initialize:function(){throw n.EventTarget.call(this),this.duration=0,Error("Illegal Constructor")},play:function(){this._element&&this._element.play()},pause:function(){this._element&&this._element.pause()},stop:function(){this.pause(),this.currentTime=0},clone:function(){var t;if(this._element instanceof Audio)t=Object.create(n.DOMSound.prototype,{_element:{value:this._element.cloneNode(!1)},duration:{value:this.duration}});else{if(n.ENV.USE_FLASH_SOUND)return this;t=Object.create(n.DOMSound.prototype)}return n.EventTarget.call(t),t},currentTime:{get:function(){return this._element?this._element.currentTime:0},set:function(t){this._element&&(this._element.currentTime=t)}},volume:{get:function(){return this._element?this._element.volume:1},set:function(t){this._element&&(this._element.volume=t)}}}),n.DOMSound.load=function(e,i,s,r){if(null==i){var a=n.Core.findExt(e);i=a?"audio/"+a:""}i=i.replace("mp3","mpeg").replace("m4a","mp4"),s=s||function(){},r=r||function(){};var o=Object.create(n.DOMSound.prototype);n.EventTarget.call(o),o.addEventListener("load",s),o.addEventListener("error",r);var h=new Audio;if(!n.ENV.SOUND_ENABLED_ON_MOBILE_SAFARI&&"webkit"===n.ENV.VENDOR_PREFIX&&n.ENV.TOUCH_ENABLED)t.setTimeout(function(){o.dispatchEvent(new n.Event("load"))},0);else if(!n.ENV.USE_FLASH_SOUND&&h.canPlayType(i))h.addEventListener("canplaythrough",function c(){o.duration=h.duration,o.dispatchEvent(new n.Event("load")),h.removeEventListener("canplaythrough",c)},!1),h.src=e,h.load(),h.autoplay=!1,h.onerror=function(){var t=new n.Event(n.Event.ERROR);t.message="Cannot load an asset: "+h.src,n.Core.instance.dispatchEvent(t),o.dispatchEvent(t)},o._element=h;else if("audio/mpeg"===i){var u=document.createElement("embed"),d="enchant-audio"+n.Core.instance._soundID++;u.width=u.height=1,u.name=d,u.src="sound.swf?id="+d+"&src="+e,u.allowscriptaccess="always",u.style.position="absolute",u.style.left="-1px",o.addEventListener("load",function(){Object.defineProperties(u,{currentTime:{get:function(){return u.getCurrentTime()},set:function(t){u.setCurrentTime(t)}},volume:{get:function(){return u.getVolume()},set:function(t){u.setVolume(t)}}}),o._element=u,o.duration=u.getDuration()}),n.Core.instance._element.appendChild(u),n.DOMSound[d]=o}else t.setTimeout(function(){o.dispatchEvent(new n.Event("load"))},0);return o},t.AudioContext=t.AudioContext||t.webkitAudioContext||t.mozAudioContext||t.msAudioContext||t.oAudioContext,n.WebAudioSound=n.Class.create(n.EventTarget,{initialize:function(){if(!t.AudioContext)throw Error("This browser does not support WebAudio API.");n.EventTarget.call(this),n.WebAudioSound.audioContext||(n.WebAudioSound.audioContext=new t.AudioContext,n.WebAudioSound.destination=n.WebAudioSound.audioContext.destination),this.context=n.WebAudioSound.audioContext,this.src=this.context.createBufferSource(),this.buffer=null,this._volume=1,this._currentTime=0,this._state=0,this.connectTarget=n.WebAudioSound.destination},play:function(t){1!==this._state||t||this.src.disconnect(),2!==this._state&&(this._currentTime=0);var e=this._currentTime,n=this.context;this.src=n.createBufferSource(),this._gain=null!=n.createGain?n.createGain():n.createGainNode(),this.src.buffer=this.buffer,this._gain.gain.value=this._volume,this.src.connect(this._gain),this._gain.connect(this.connectTarget),null!=this.src.start?this.src.start(0,e,this.buffer.duration-e-1.192e-7):this.src.noteGrainOn(0,e,this.buffer.duration-e-1.192e-7),this._startTime=n.currentTime-this._currentTime,this._state=1},pause:function(){var t=this.currentTime;t!==this.duration&&(null!=this.src.stop?this.src.stop(0):this.src.noteOff(0),this._currentTime=t,this._state=2)},stop:function(){null!=this.src.stop?this.src.stop(0):this.src.noteOff(0),this._state=0},clone:function(){var t=new n.WebAudioSound;return t.buffer=this.buffer,t},duration:{get:function(){return this.buffer?this.buffer.duration:0}},volume:{get:function(){return this._volume},set:function(t){t=Math.max(0,Math.min(1,t)),this._volume=t,this.src&&(this._gain.gain.value=t)}},currentTime:{get:function(){return Math.max(0,Math.min(this.duration,this.src.context.currentTime-this._startTime))},set:function(t){this._currentTime=t,2!==this._state&&this.play(!1)}}}),n.WebAudioSound.load=function(t,e,i,s){function r(){var e=new n.Event(n.Event.ERROR);e.message="Cannot load an asset: "+t,n.Core.instance.dispatchEvent(e),o.dispatchEvent(e)}var a=(new Audio).canPlayType(e),o=new n.WebAudioSound;i=i||function(){},s=s||function(){},o.addEventListener(n.Event.LOAD,i),o.addEventListener(n.Event.ERROR,s);var h,c;return"maybe"===a||"probably"===a?(h=n.WebAudioSound.audioContext,c=new XMLHttpRequest,c.open("GET",t,!0),c.responseType="arraybuffer",c.onload=function(){h.decodeAudioData(c.response,function(t){o.buffer=t,o.dispatchEvent(new n.Event(n.Event.LOAD))},r)},c.onerror=r,c.send(null)):setTimeout(r,50),o},n.Sound=t.AudioContext&&n.ENV.USE_WEBAUDIO?n.WebAudioSound:n.DOMSound,n.Easing={LINEAR:function(t,e,n,i){return n*t/i+e},SWING:function(t,e,n,i){return n*(.5-Math.cos(t/i*Math.PI)/2)+e},QUAD_EASEIN:function(t,e,n,i){return n*(t/=i)*t+e},QUAD_EASEOUT:function(t,e,n,i){return-n*(t/=i)*(t-2)+e},QUAD_EASEINOUT:function(t,e,n,i){return 1>(t/=i/2)?n/2*t*t+e:-n/2*(--t*(t-2)-1)+e},CUBIC_EASEIN:function(t,e,n,i){return n*(t/=i)*t*t+e},CUBIC_EASEOUT:function(t,e,n,i){return n*((t=t/i-1)*t*t+1)+e},CUBIC_EASEINOUT:function(t,e,n,i){return 1>(t/=i/2)?n/2*t*t*t+e:n/2*((t-=2)*t*t+2)+e},QUART_EASEIN:function(t,e,n,i){return n*(t/=i)*t*t*t+e},QUART_EASEOUT:function(t,e,n,i){return-n*((t=t/i-1)*t*t*t-1)+e},QUART_EASEINOUT:function(t,e,n,i){return 1>(t/=i/2)?n/2*t*t*t*t+e:-n/2*((t-=2)*t*t*t-2)+e},QUINT_EASEIN:function(t,e,n,i){return n*(t/=i)*t*t*t*t+e},QUINT_EASEOUT:function(t,e,n,i){return n*((t=t/i-1)*t*t*t*t+1)+e},QUINT_EASEINOUT:function(t,e,n,i){return 1>(t/=i/2)?n/2*t*t*t*t*t+e:n/2*((t-=2)*t*t*t*t+2)+e},SIN_EASEIN:function(t,e,n,i){return-n*Math.cos(t/i*(Math.PI/2))+n+e},SIN_EASEOUT:function(t,e,n,i){return n*Math.sin(t/i*(Math.PI/2))+e},SIN_EASEINOUT:function(t,e,n,i){return-n/2*(Math.cos(Math.PI*t/i)-1)+e},CIRC_EASEIN:function(t,e,n,i){return-n*(Math.sqrt(1-(t/=i)*t)-1)+e},CIRC_EASEOUT:function(t,e,n,i){return n*Math.sqrt(1-(t=t/i-1)*t)+e},CIRC_EASEINOUT:function(t,e,n,i){return 1>(t/=i/2)?-n/2*(Math.sqrt(1-t*t)-1)+e:n/2*(Math.sqrt(1-(t-=2)*t)+1)+e},ELASTIC_EASEIN:function(t,e,n,i,s,r){if(0===t)return e;if(1===(t/=i))return e+n;r||(r=.3*i);var a;return!s||Math.abs(n)>s?(s=n,a=r/4):a=r/(2*Math.PI)*Math.asin(n/s),-(s*Math.pow(2,10*(t-=1))*Math.sin((t*i-a)*2*Math.PI/r))+e},ELASTIC_EASEOUT:function(t,e,n,i,s,r){if(0===t)return e;if(1===(t/=i))return e+n;r||(r=.3*i);var a;return!s||Math.abs(n)>s?(s=n,a=r/4):a=r/(2*Math.PI)*Math.asin(n/s),s*Math.pow(2,-10*t)*Math.sin((t*i-a)*2*Math.PI/r)+n+e},ELASTIC_EASEINOUT:function(t,e,n,i,s,r){if(0===t)return e;if(2===(t/=i/2))return e+n;r||(r=i*.3*1.5);var a;return!s||Math.abs(n)>s?(s=n,a=r/4):a=r/(2*Math.PI)*Math.asin(n/s),1>t?-.5*s*Math.pow(2,10*(t-=1))*Math.sin((t*i-a)*2*Math.PI/r)+e:.5*s*Math.pow(2,-10*(t-=1))*Math.sin((t*i-a)*2*Math.PI/r)+n+e},BOUNCE_EASEOUT:function(t,e,n,i){return 1/2.75>(t/=i)?n*7.5625*t*t+e:2/2.75>t?n*(7.5625*(t-=1.5/2.75)*t+.75)+e:2.5/2.75>t?n*(7.5625*(t-=2.25/2.75)*t+.9375)+e:n*(7.5625*(t-=2.625/2.75)*t+.984375)+e},BOUNCE_EASEIN:function(t,e,i,s){return i-n.Easing.BOUNCE_EASEOUT(s-t,0,i,s)+e},BOUNCE_EASEINOUT:function(t,e,i,s){return s/2>t?.5*n.Easing.BOUNCE_EASEIN(2*t,0,i,s)+e:.5*n.Easing.BOUNCE_EASEOUT(2*t-s,0,i,s)+.5*i+e},BACK_EASEIN:function(t,n,i,s,r){return r===e&&(r=1.70158),i*(t/=s)*t*((r+1)*t-r)+n},BACK_EASEOUT:function(t,n,i,s,r){return r===e&&(r=1.70158),i*((t=t/s-1)*t*((r+1)*t+r)+1)+n},BACK_EASEINOUT:function(t,n,i,s,r){return r===e&&(r=1.70158),1>(t/=s/2)?i/2*t*t*(((r*=1.525)+1)*t-r)+n:i/2*((t-=2)*t*(((r*=1.525)+1)*t+r)+2)+n},EXPO_EASEIN:function(t,e,n,i){return 0===t?e:n*Math.pow(2,10*(t/i-1))+e},EXPO_EASEOUT:function(t,e,n,i){return t===i?e+n:n*(-Math.pow(2,-10*t/i)+1)+e},EXPO_EASEINOUT:function(t,e,n,i){return 0===t?e:t===i?e+n:1>(t/=i/2)?n/2*Math.pow(2,10*(t-1))+e:n/2*(-Math.pow(2,-10*--t)+2)+e}},n.ActionEventTarget=n.Class.create(n.EventTarget,{initialize:function(){n.EventTarget.apply(this,arguments)},dispatchEvent:function(t){var e=this.node?this.node:this;t.target=e,t.localX=t.x-e._offsetX,t.localY=t.y-e._offsetY,null!=this["on"+t.type]&&this["on"+t.type].call(e,t);var n=this._listeners[t.type];if(null!=n){n=n.slice();for(var i=0,s=n.length;s>i;i++)n[i].call(e,t)}}}),n.Timeline=n.Class.create(n.EventTarget,{initialize:function(t){n.EventTarget.call(this),this.node=t,this.queue=[],this.paused=!1,this.looped=!1,this.isFrameBased=!0,this._parallel=null,this._activated=!1,this.addEventListener(n.Event.ENTER_FRAME,this._onenterframe);var e=this;this._nodeEventListener=function(t){e.dispatchEvent(t)}},_deactivateTimeline:function(){this._activated&&(this._activated=!1,this.node.removeEventListener("enterframe",this._nodeEventListener))},_activateTimeline:function(){this._activated||this.paused||(this.node.addEventListener("enterframe",this._nodeEventListener),this._activated=!0)},_onenterframe:function(t){this.paused||this.tick(this.isFrameBased?1:t.elapsed)},setFrameBased:function(){this.isFrameBased=!0},setTimeBased:function(){this.isFrameBased=!1},next:function(t){var i,s=this.queue.shift();if(s&&(i=new n.Event("actionend"),i.timeline=this,s.dispatchEvent(i),i=new n.Event("removedfromtimeline"),i.timeline=this,s.dispatchEvent(i),this.looped&&this.add(s)),0===this.queue.length)return this._deactivateTimeline(),e;if(t>0||this.queue[0]&&0===this.queue[0].time){var r=new n.Event("actiontick");r.elapsed=t,r.timeline=this,this.queue[0].dispatchEvent(r)}},tick:function(t){if(this.queue.length>0){var e=this.queue[0];if(0===e.frame){var i;i=new n.Event("actionstart"),i.timeline=this,e.dispatchEvent(i)}var s=new n.Event("actiontick");s.timeline=this,s.elapsed=t,e.dispatchEvent(s)}},add:function(t){this._activateTimeline(),this._parallel?(this._parallel.actions.push(t),this._parallel=null):this.queue.push(t),t.frame=0;var e=new n.Event("addedtotimeline");return e.timeline=this,t.dispatchEvent(e),e=new n.Event("actionadded"),e.action=t,this.dispatchEvent(e),this},action:function(t){return this.add(new n.Action(t))},tween:function(t){return this.add(new n.Tween(t))},clear:function(){var t=new n.Event("removedfromtimeline");t.timeline=this;for(var e=0,i=this.queue.length;i>e;e++)this.queue[e].dispatchEvent(t);return this.queue=[],this._deactivateTimeline(),this},skip:function(t){var e=new n.Event("enterframe");for(this.isFrameBased?e.elapsed=1:(e.elapsed=t,t=1);t--;)this.dispatchEvent(e);return this},pause:function(){return this.paused||(this.paused=!0,this._deactivateTimeline()),this},resume:function(){return this.paused&&(this.paused=!1,this._activateTimeline()),this},loop:function(){return this.looped=!0,this},unloop:function(){return this.looped=!1,this},delay:function(t){return this.action({time:t})},wait:function(){return this},then:function(t){return this.action({onactiontick:function(){t.call(this)},time:0})},exec:function(t){return this.then(t)},cue:function(t){var e=0;for(var n in t)t.hasOwnProperty(n)&&(this.delay(n-e),this.then(t[n]),e=n);return this},repeat:function(t,e){return this.action({onactiontick:function(){t.call(this)},time:e})},and:function(){var t=this.queue.pop();if(t instanceof n.ParallelAction)this._parallel=t,this.queue.push(t);else{var e=new n.ParallelAction;e.actions.push(t),this.queue.push(e),this._parallel=e}return this},or:function(){return this},doAll:function(){return this},waitAll:function(){return this},waitUntil:function(t){return this.action({onactiontick:function(e){t.call(this)&&e.timeline.next()}})},fadeTo:function(t,e,n){return this.tween({opacity:t,time:e,easing:n})},fadeIn:function(t,e){return this.fadeTo(1,t,e)},fadeOut:function(t,e){return this.fadeTo(0,t,e)},moveTo:function(t,e,n,i){return this.tween({x:t,y:e,time:n,easing:i})},moveX:function(t,e,n){return this.tween({x:t,time:e,easing:n})},moveY:function(t,e,n){return this.tween({y:t,time:e,easing:n})},moveBy:function(t,e,n,i){return this.tween({x:function(){return this.x+t},y:function(){return this.y+e},time:n,easing:i})},hide:function(){return this.then(function(){this.opacity=0})},show:function(){return this.then(function(){this.opacity=1})},removeFromScene:function(){return this.then(function(){this.parentNode.removeChild(this)})},scaleTo:function(t,e,n){var i,s;return"number"==typeof n?(i=arguments[0],s=arguments[1],e=arguments[2],n=arguments[3]):i=s=t,this.tween({scaleX:i,scaleY:s,time:e,easing:n})},scaleBy:function(t,e,n){var i,s;return"number"==typeof n?(i=arguments[0],s=arguments[1],e=arguments[2],n=arguments[3]):i=s=t,this.tween({scaleX:function(){return this.scaleX*i},scaleY:function(){return this.scaleY*s},time:e,easing:n})},rotateTo:function(t,e,n){return this.tween({rotation:t,time:e,easing:n})},rotateBy:function(t,e,n){return this.tween({rotation:function(){return this.rotation+t},time:e,easing:n})}}),n.Action=n.Class.create(n.ActionEventTarget,{initialize:function(t){n.ActionEventTarget.call(this),this.time=null,this.frame=0;for(var e in t)t.hasOwnProperty(e)&&null!=t[e]&&(this[e]=t[e]);var i=this;this.timeline=null,this.node=null,this.addEventListener(n.Event.ADDED_TO_TIMELINE,function(t){i.timeline=t.timeline,i.node=t.timeline.node,i.frame=0}),this.addEventListener(n.Event.REMOVED_FROM_TIMELINE,function(){i.timeline=null,i.node=null,i.frame=0}),this.addEventListener(n.Event.ACTION_TICK,function(t){var e=i.time-(i.frame+t.elapsed);null!=i.time&&0>=e?(i.frame=i.time,t.timeline.next(-e)):i.frame+=t.elapsed})}}),n.ParallelAction=n.Class.create(n.Action,{initialize:function(t){n.Action.call(this,t),this.actions=[],this.endedActions=[];var e=this;this.addEventListener(n.Event.ACTION_START,function(t){for(var n=0,i=e.actions.length;i>n;n++)e.actions[n].dispatchEvent(t)}),this.addEventListener(n.Event.ACTION_TICK,function(t){var i,s,r={next:function(){var t=e.actions[i];e.actions.splice(i--,1),s=e.actions.length,e.endedActions.push(t);var r=new n.Event("actionend");r.timeline=this,t.dispatchEvent(r),r=new n.Event("removedfromtimeline"),r.timeline=this,t.dispatchEvent(r)}},a=new n.Event("actiontick");for(a.timeline=r,a.elapsed=t.elapsed,i=0,s=e.actions.length;s>i;i++)e.actions[i].dispatchEvent(a);0===e.actions.length&&t.timeline.next()}),this.addEventListener(n.Event.ADDED_TO_TIMELINE,function(t){for(var n=0,i=e.actions.length;i>n;n++)e.actions[n].dispatchEvent(t)}),this.addEventListener(n.Event.REMOVED_FROM_TIMELINE,function(){e.actions=e.endedActions,e.endedActions=[]})}}),n.Tween=n.Class.create(n.Action,{initialize:function(t){var i={},s={};n.Action.call(this,t),null==this.easing&&(this.easing=n.Easing.LINEAR);var r=this;this.addEventListener(n.Event.ACTION_START,function(){var e=["frame","time","callback","onactiontick","onactionstart","onactionend"];for(var n in t)if(t.hasOwnProperty(n)){var a;a="function"==typeof t[n]?t[n].call(r.node):t[n],-1===e.indexOf(n)&&(i[n]=r.node[n],s[n]=a)}}),this.addEventListener(n.Event.ACTION_TICK,function(t){var n=0===r.time?1:r.easing(Math.min(r.time,r.frame+t.elapsed),0,1,r.time)-r.easing(r.frame,0,1,r.time);for(var a in s)if(s.hasOwnProperty(a)){if(this[a]===e)continue;r.node[a]+=(s[a]-i[a])*n,1e-7>Math.abs(r.node[a])&&(r.node[a]=0)}})}})})(window);