generator-beez
Version:
A beez project generator for Yeoman
62 lines • 53.6 kB
JavaScript
/**
* @name suns.js
* @author Kazuma MISHIMAGI <mishimagi_kazuma@cyberagent.co.jp>
* copyright (c) Cyberagent Inc.
* @overview Object extending utilities for node and browser (amd support)
*/
/**
* @name bucks.js
* @author Kazuma MISHIMAGI <mishimagi_kazuma@cyberagent.co.jp>
* copyright (c) Cyberagent Inc.
* @overview Async chain utility for node and the browser. (amd support)
*/
/**
* @name logcafe.js
* @author Kei Funagayama <funagayama_kei@cyberagent.co.jp>
* copyright (c) Cyberagent Inc.
* @overview browser logging.
*/
/**
* @license beez Copyright (c) Cyberagent Inc.
* Available via the MIT License.
*/
/* Zepto v1.0-1-ga3cab6c - polyfill zepto detect event ajax form fx - zeptojs.com/license */
/**
* @name index.js<beez-ua>
* @author Kei Funagayama <funagayama_kei@cyberagent.co.jp>
* copyright (c) Cyberagent Inc.
* @overview UserAgent decision for node and the browser. (amd support) fork zepto.js(http://zeptojs.com/)
* @license MIT
*/
/**
* @name base.js<beez-mvcr>
* @author Kei Funagayama <funagayama_kei@cyberagent.co.jp>
* copyright (c) Cyberagent Inc.
* @overview base class of managed object
*/
/* JSONPath 0.8.0 - XPath for JSON
*
* Copyright (c) 2007 Stefan Goessner (goessner.net)
* Licensed under the MIT (MIT-LICENSE.txt) licence.
*
* @license https://github.com/s3u/JSONPath
*/
/**
* @name base.js<beez-mvcr>
* @author Kazuma MISHIMAGI <mishimagi_kazuma@cyberagent.co.jp">
* copyright (c) Cyberagent Inc.
* @overview base class of managed object
*/
/** @license MIT License (c) 2012-2013 Cyberagent Inc. */
(function(e){var t=Array.prototype.forEach,r={},n=function n(e,n,i){if(void 0!==e&&null!==e)if(t&&e.forEach===t)e.forEach(n,i);else if(e.length===+e.length){for(var o=0,s=e.length;s>o;o++)if(n.call(i,e[o],o,e)===r)return}else for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)&&n.call(i,e[a],a,e)===r)return},i=function(e){return n(Array.prototype.slice.call(arguments,1),function(t){for(var r in t)e[r]=t[r]}),e},o=/__(super)+__/,s=function s(e,t,r){var n;if("object"!=typeof r)throw Error("typeof childCtorOrProto invalid. it should be Object (prototype object).");n=r&&Object.prototype.hasOwnProperty.call(r,"constructor")?r.constructor:Function("parent","return function "+e+"(){ parent.apply(this, arguments); };")(t),i(n,t);var s=function(){this.constructor=n};s.prototype=t.prototype,n.prototype=new s,r&&i(n.prototype,r);for(var a in t)if(o.test(a)){var u=a.replace("super","supersuper");n[u]=t[a]}return n.__super__=t.prototype,n.__superCtor__=t,n},a=function a(e,t,r){if(1>r.length)return t;var n=r.shift(),i=s(e,t,n);return a(e,i,r)},u=function u(e){var t="",r=Array.prototype.slice.apply(arguments);return"string"==typeof r[0]&&(t=r.shift(),t=t.replace(/\./g,"_")),e=r.shift(),a(t,e,r)},c=function c(){var e=this,t=Array.prototype.slice.apply(arguments),r=[];return"string"==typeof t[0]&&r.push(t.shift()),r.push(e),r=r.concat(t),u.apply(this,r)},h=function h(e,t,r){var n,s,a=typeof r;if("function"===a)s=r.prototype;else{if("object"!==a)throw Error("typeof childCtorOrProto invalid. it should be Function or Object.");s=r}n="function"===a?Function("parent, childCtor","return function "+e+"(){ parent.apply(this, arguments); childCtor.apply(this, arguments)};")(t,r):s&&Object.prototype.hasOwnProperty.call(s,"constructor")?s.constructor:Function("parent","return function "+e+"(){ parent.apply(this, arguments); };")(t),i(n,t);var u=function(){this.constructor=n};u.prototype=t.prototype,n.prototype=new u,s&&i(n.prototype,s);for(var c in t)if(o.test(c)){var h=c.replace("super","supersuper");n[h]=t[c]}return n.__super__=t.prototype,n.__superCtor__=t,n},l=function l(e,t,r){if(1>r.length)return t;var n=r.shift(),i=h(e,t,n);return l(e,i,r)},d=function d(e){var t="",r=Array.prototype.slice.apply(arguments);return"string"==typeof r[0]&&(t=r.shift(),t=t.replace(/\./g,"_")),e=r.shift(),l(t,e,r)},f={extend:u,extendThis:c,mixin:d};"function"==typeof define&&define.amd?define("beez-core/suns",["require","exports","module"],function(){return f}):"undefined"!=typeof module&&module.exports?module.exports=f:e.suns=f})(this),function(){define("beez-core/error",["require","exports","module","beez-core/suns"],function(e){var t=e("beez-core/suns"),r=t.extend("beez.Error",Error,{constructor:function r(e){Error.apply(this,arguments),Error.captureStackTrace(this,this.constructor),this.message=e}});return r.extend=t.extendThis,r})}(this),function(e){var t=function t(){},r=Array.isArray||function r(e){return"[object Array]"==""+e},n=function n(e){return 0===e.length},i=function i(e){e.stack?console.error(e.stack):e.message?console.error(e.message):console.error(e)},o=0,s=function s(){return"__bucks__"+o++},a=function a(e){this._tasks=[],this._taskcount=0,this._results=[],this.callback=t,this.failure=t,this._alive=!0,this.__id=s(),a.living[this.__id]=this,this.initialize(e)};a.VERSION="0.6.10",a.DEBUG=!1,a.running={},a.living={},a._isOnError=!1,a.onError=function(e){(function(t){a._onError=e,a._isOnError=t})(!0)},a.prototype={initialize:t,_normalizeTask:function(e){var t=e;if(3>e.length)t=function t(t,r,n){var i=e.call(null,t,r);n.call(null,null,i)};else if(3===e.length)t=e;else{if(4!==e.length)throw Error("args length invalid");t=function t(t,r,n,i){e.call(null,t,r,n,i)}}return t},_normalizeSuccess:function(e){var t=e;if(2>e.length)t=function(t,r){var n=e(t);r(null,n)};else{if(2!==e.length)throw Error("args length invalid");t=e}return t},_normalizeError:function(e){var t=e;if(2>e.length||e.length>3)throw Error(e.name+": args length invalid. should be: onError(err, next)");return t},add:function(e){if(!this._alive)throw Error("this bucks object already destroyed.");var t=this._normalizeTask(e);return this._tasks.push(t),this},then:function(e){var t=this._normalizeSuccess(e);return this.add(function(e,r,n){e?n(e):t(r,n)})},empty:function(){return this.then(function(){})},error:function(e){var t=this._normalizeError(e);return this.add(function(e,r,n){e?t(e,n):n(e,r)})},_iterator:function(e,t){if(!this._alive)throw Error("this bucks object already destroyed.");t?this._results.push(t):this._results.push(null);var r=this._tasks.shift();if(!r)return this.destroy(e);try{var n=this;r(e,t,function(e,t){return n._iterator(e,t),this},this._taskcount++)}catch(o){if(!this._results){if(a.DEBUG&&i(o),!a._isOnError)throw o;a._onError(o,this)}this._iterator(o,null)}return this},debug:function(){return this},parallel:function(e){if(!r(e))throw Error("tasks is not array.");if(n(e))return this.add(function(e,t,r){r(null,new u(0).resultObj)});for(var t=0,i=e.length;i>t;t++){var o=e[t];e[t]=this._normalizeTask(o)}return this.add(function(t,r,n){var i=new u(e.length);i.onFinish(function(e){for(var t,r=0,i=e.err.length;i>r;r++){var o=e.err[r];void 0!==o&&null!==o&&(t=o)}n(t,e)}),e.forEach(function(e,t){setTimeout(function(){(new a).add(e).end(function(e,r){e?i.successOne(t,e,null):i.successOne(t,null,r[0])})},0)})})},waterfall:function(e){if(!r(e))throw Error("tasks is not array.");if(n(e))return this.add(function(e,t,r){r(null,[])});for(var t=0,i=e.length;i>t;t++)e[t]=this._normalizeTask(e[t]),this.add(e[t]);return this},delay:function(e){return this.add(function(t,r,n){setTimeout(function(){n(t,r)},e)})},dispose:t,destroy:function(e){var r=this._results,n=this.callback,o=this.failure,s=this.dispose;this._tasks=null,this._taskcount=0,this._results=null,this.callback=t,this.failure=t,this.dispose=t,s.call(this),r.shift();try{if(n)n(e,r);else if(e)throw e}catch(u){if(o)try{o(u)}catch(c){if(!a._isOnError)throw c;a._onError(c,this)}else{if(a.DEBUG&&i(u),!a._isOnError)throw u;a._onError(u,this)}}finally{delete this._alive,delete a.running[this.__id],delete a.living[this.__id],delete this.__id}return this},end:function(e,t){if(e&&1>e.length)throw Error("callback args length invalid. should be `callback(err, ress)` or `callback(err)`.");if(this.callback=e,this.failure=t,!this._tasks||!this._tasks.length){var r=Error("task is empty. add(task) first. if theres no task to execute but end is desired, empty() may be useful");return this.destroy(r,null),e(r)}return a.running[this.__id]=this,this._iterator(),void 0}};var u=function u(e){this._results=[],this._errors=[],this._waiting=e};u.prototype={onFinish:function(e){this._onFinish=e},successOne:function(e,t,r){this._errors[e]=t,this._results[e]=r,this._waiting--,0>=this._waiting&&this._onFinish.call(null,this.resultObj)}},u.prototype.__defineGetter__("resultObj",function(){return{err:this._errors,res:this._results}}),"function"==typeof define&&define.amd?define("beez-core/bucks",["require","exports","module"],function(){return a}):"undefined"!=typeof module&&module.exports?module.exports=a:e.Bucks=a}(this),function(e){var t=function t(){},r=function r(e,t){this.initialize(e,t)};r.prototype={initialize:function(e,r){this.category=e,this.config=r,this.level=this.config.level,this.config.separator&&(this.separator=this.config.separator||" "),this.level===this.LEVELS.TRACE||(this.level===this.LEVELS.DEBUG?this.trace=t:this.level===this.LEVELS.INFO?this.trace=this.debug=t:this.level===this.LEVELS.WARN?this.trace=this.debug=this.info=t:this.level===this.LEVELS.ERROR&&(this.trace=this.debug=this.info=this.warn=t))},LEVELS:{OFF:"OFF",TRACE:"TRACE",DEBUG:"DEBUG",INFO:"INFO",WARN:"WARN",ERROR:"ERROR"},_exclude:function(){if(this.config.excludes&&this.config.excludes.length>0)for(var e=0;this.config.excludes.length>e;e++){var t=RegExp("^"+this.config.excludes[e]);if(this.category.match(t))return!0}return!1},trace:function(){!this._exclude()&&console.debug(this.output("trace",arguments))},debug:function(){!this._exclude()&&console.debug(this.output("debug",arguments))},info:function(){!this._exclude()&&console.info(this.output("info",arguments))},warn:function(){!this._exclude()&&console.warn(this.output("warn",arguments))},error:function(){!this._exclude()&&console.error(this.output("error",arguments))},output:function(e,t){for(var r=Array.prototype.slice.call(t),n=0;r.length>n;n++)if(void 0===r[n])r[n]='"undefined"';else if(null===r[n])r[n]='"null"';else if(r[n]instanceof Error||"Error"===r[n].constructor.name){var i=r[n];r[n]=i.stack?i.stack:i.message}else"object"==typeof r[n]&&(r[n]=r[n].constructor.name+":"+JSON.stringify(r[n]));var o,s,a,u="",c=Error().stack;if(c)o=c.split("\n"),o[3]&&(s=o[3],a=s.indexOf("("),a>=0?(u=s.substring(a),")"!==u.charAt(u.length-1)&&(u="("+u+")")):u="("+s.replace(/[ ]*at /,"")+")");else{try{throw Error()}catch(h){c=h.stack}o=c.split("\n"),o[2]&&(s=o[2],a=s.indexOf("@"),a>=0&&(u=s.substring(a+1),u=" ("+u+")"))}return"["+e+"]["+this.category+"] "+r.join(this.separator)+" "+u}};var n=function n(e){this.initialize(e)};n.prototype={initialize:function(e){this.config=e,this.loggers={}},setConfigure:function(e){return this.config=e,this},getLogger:function(e){return this.loggers[e]?this.loggers[e]:(this.loggers[e]=new r(e,this.config),this.loggers[e])}},n.VERSION="0.6.6","function"==typeof define&&define.amd?define("beez-core/logcafe",["require","exports","module"],function(){return n}):"undefined"!=typeof module&&module.exports?module.exports=n:e.LogCafe=n}(this),function(e){define("beez.core",["require","exports","module","beez-core/suns","beez-core/error","beez-core/bucks","beez-core/logcafe"],function(t,r,n){var i=e;if(i.beez)return i.beez;var o=t("beez-core/suns"),s=n.config()||{},a=t("beez-core/error"),u=t("beez-core/bucks");u.extend=o.extendThis;var c=t("beez-core/logcafe"),h=new c;h.setConfigure(s.logging||{level:"WARN",separator:" "});var l=function l(e){return h.getLogger(e)};l("beez.core.index");var d=function d(t,r,n){t&&(e.onerror=t),r&&u.onError(r),n&&(e.require.onError=n)},f={root:i,global:i,config:s,none:function(){},extend:o.extend,extendThis:o.extendThis,mixin:o.mixin,getLogger:l,onError:d,Error:a,Bucks:u};return i.beez=f,f})}(this),function(e){var t={VERSION:"0.4.9"};t.setup=function(t){if(!t&&e&&e.navigator&&e.navigator.userAgent&&(t=e.navigator.userAgent),!t)throw Error("useragent setup error. useragent not found.");this.webkit=t.match(/WebKit\/([\d.]+)/),this.android=t.match(/(Android)\s+([\d.]+)/),this.ipad=t.match(/(iPad).*OS\s([\d_]+)/),this.iphone=!this.ipad&&t.match(/(iPhone\sOS)\s([\d_]+)/),this.webos=t.match(/(webOS|hpwOS)[\s\/]([\d.]+)/),this.touchpad=this.webos&&t.match(/TouchPad/),this.kindle=t.match(/(Kindle)/),this.silk=t.match(/(Silk)/),this.blackberry=t.match(/(BlackBerry).*/),this.bb10=t.match(/(BB10).*Version\/([\d.]+)/),this.rimtabletos=t.match(/(RIM\sTablet\sOS)\s([\d.]+)/),this.playbook=t.match(/PlayBook/),this.chrome=t.match(/Chrome\/([\d.]+)/)||t.match(/CriOS\/([\d.]+)/),this.firefox=t.match(/Firefox\/([\d.]+)/),this.wii=t.match(/Nintendo (Wii);/),this.ds=t.match(/Nintendo (DS|3DS|DSi);/),this.ps3=t.match(/PLAYSTATION 3/),this.psp=t.match(/(PlayStation Portable)/),this.psvita=t.match(/(PlayStation Vita)/),this.safari=t.match(/(Version)\/(\\d+)\\.(\\d+)(?:\\.(\\d+))?.*Safari\//),this.iphone5=!("undefined"!=typeof module&&module.exports)&&this.iphone&&screen&&320===screen.width&&568===screen.height,this.browser={},this.os={},this.webkit&&(this.browser.webkit=!0,this.browser.version=this.webkit[1]),this.android&&(this.os.android=!0,this.os.version=this.android[2]),this.iphone&&(this.os.ios=this.os.iphone=!0,this.os.version=this.iphone[2].replace(/_/g,".")),this.ipad&&(this.os.ios=this.os.ipad=!0,this.os.version=this.ipad[2].replace(/_/g,".")),this.webos&&(this.os.webos=!0,this.os.version=this.webos[2]),this.touchpad&&(this.os.touchpad=!0),this.blackberry&&(this.os.blackberry=!0),this.bb10&&(this.os.bb10=!0,this.os.version=this.bb10[2]),this.rimtabletos&&(this.os.rimtabletos=!0,this.os.version=this.rimtabletos[2]),this.playbook&&(this.browser.playbook=!0),this.kindle&&(this.os.kindle=!0),this.silk&&(this.browser.silk=!0),!this.silk&&this.os.android&&t.match(/Kindle Fire/)&&(this.browser.silk=!0),this.chrome&&(this.browser.chrome=!0,this.browser.version=this.chrome[1]),this.firefox&&(this.browser.firefox=!0,this.browser.version=this.firefox[1]),(this.wii||this.ds)&&(this.os.nintendo=!0),this.os.tablet=!!(this.ipad||this.kindle||this.playbook||this.android&&!t.match(/Mobile/)||this.firefox&&t.match(/Tablet/)),this.os.phone=!(this.os.tablet||!(this.android||this.iphone||this.webos||this.blackberry||this.bb10||this.chrome&&t.match(/Android/)||this.chrome&&t.match(/CriOS\/([\d.]+)/)||this.firefox&&t.match(/Mobile/)))},"function"==typeof define&&define.amd?define("beez.ua",["require","exports","module"],function(){return t}):"undefined"!=typeof module&&module.exports?module.exports=t:(e.beez||(e.beez={}),e.beez.ua=t)}(this),function(){define("beez-utils/browser",["require","exports","module","beez.core","underscore","zepto","backbone","beez.ua"],function(e){var t=e("beez.core"),r=t.global||r;e("underscore");var n=e("zepto"),i=e("backbone"),o=t.Bucks.extend("beez.utils.BrowserAsync",{initialize:function(e){this.browser=e},dispose:function(){delete this.browser},hideAddress:function(e){return e=e||100,this.delay(e).then(function(){window.scroll(0,0)})}}),s={_prevOrientation:r.orientation,_initOrientation:r.orientation,initialize:function(){this.startHandleOrientation()},startHandleOrientation:function(){var e="onorientationchange"in window?"orientationchange":"resize",t=this;n(r).on(e,function(){var e=r.orientation;t._prevOrientation!==e&&(t.trigger("change:orientation",{prev:t._prevOrientation,current:e,init:t._initOrientation===e?!0:!1}),t._prevOrientation=e)})},getComputedStyle:function(e){return document.defaultView.getComputedStyle(e,"")},async:function(){return new o(this)},hideAddress:function(e){return new o(this).hideAddress(e)},getWindowSize:function(){return{width:window.innerWidth,height:window.innerHeight}},ua:{},getLanguage:function(){var e=navigator.language||navigator.browserLanguage||navigator.systemLanguage||navigator.userLanguage;return e?e.substr(0,2):void 0}},a=e("beez.ua");a.setup(),s.ua=a;var u=t.extend("beez.utils.Browser",function u(){},i.Events,s);return u})}(this),function(){define("beez-utils/uid",["require","exports","module"],function(){var e,t=function(){return e?e:e=this};return t.prototype.create=function(){var e=Math.floor(1e3*Math.random()),t=Date.now();return e+"_"+(""+t)},t})}(this),function(){define("beez-utils/timer",["require","exports","module","beez.core","underscore","beez-utils/uid"],function(e){var t=e("beez.core"),r=e("underscore");t.getLogger("timer");var n=e("beez-utils/uid"),i=new n,o="beez_utils_timer_id",s=function(){this.running=!1,this._callbacks={},this._timerId=0};return s.prototype={addTimeout:function(e,t,n){var s=i.create();e[o]=s;var a={timer_id:s,callback:e,interval:t,time:Date.now()+t,context:n,type:"timeout",canceller:function(){this.type="canceled"}};return r.bindAll.apply(this,[a].concat(r.methods(a))),this._callbacks[s]=a,this.start(),s},addInterval:function(e,t,n){var s=i.create();e[o]=s;var a={timer_id:s,callback:e,interval:t,time:Date.now()+t,context:n,type:"interval",canceller:function(){this.type="canceled"}};return r.bindAll.apply(this,[a].concat(r.methods(a))),this._callbacks[s]=a,this.start(),s},clearInterval:function(e){var t;t="function"==typeof e&&e[o]?e[o]:e;var r=this._callbacks[t];if(!r)throw Error("no callback to clear");r.canceller()},clearTimeout:function(e){var t;t="function"==typeof e&&e[o]?e[o]:e;var r=this._callbacks[t];r&&r.canceller()},_tick:function(){var e=Date.now(),t=this;r.each(this._callbacks,function(r){return e>r.time&&("canceled"!==r.type&&(r.context?r.callback.call(null,r.context):r.callback.call()),"interval"!==r.type&&delete t._callbacks[r.timer_id],r.time=e+r.interval),!0}),r.keys(this._callbacks).length||this.stop()},start:function(){if(!this.running){this.running=!0;var e=this,t=function t(){e.running&&(e._tick(),e._timerId=setTimeout(t,100))};t()}},stop:function(){this.running=!1,clearTimeout(this._timerId)}},s})}(this),function(e){define("beez.utils",["require","exports","module","beez.core","underscore","beez-utils/browser","beez-utils/timer"],function(t){var r=t("beez.core"),n=t("underscore"),i=r.getLogger("beez.utils");if(r.utils)return i.warn("beez.utils already defined."),r.utils;var o={initialize:function(){var n=t("beez-utils/browser"),i=t("beez-utils/timer");this.browser=new n,this.Timers=i,this.none=r.none,this.pixelRatio=e.devicePixelRatio||1},copyr:function s(e,t){for(var r in t){var i=e[r],o=t[r];n.isObject(i)&&!n.isArray(o)?s(e[r],t[r]):e[r]=t[r]}return e}},a=r.extend("beez.Utils",function(){return this.initialize()},o);return r.utils=new a,r.utils})}(this),function(){define("beez.i18n",["require","exports","module","beez.core","beez.utils","underscore","handlebars"],function(e){var t=e("beez.core");e("beez.utils");var r=t.getLogger("beez.i18n"),n=e("underscore");if(t.i18n)return r.warn("beez.i18n is already loaded."),t.i18n;var i={dummy:{hoge:!0},initialize:function(e){this.lang={base:"en",browser:void 0,use:void 0},this.message={},this.parseReg=RegExp(/\{#{1}[(0-9a-zA-Z)]*\}/),this.lang.use=this.lang.browser=t.utils.browser.getLanguage(),this.lang.use||(this.lang.use=this.lang.base),e=e||{},e.lang=e.lang||{},e.lang.base&&(this.lang.base=e.lang.base),e.lang.browser&&(this.lang.browser=e.lang.browser),e.lang.use&&(this.lang.use=e.lang.use),e.message&&(this.message=e.message)},getCurrentLang:function(){return this.lang.use||this.lang.base},parse:function(e,t){var r=e.split(this.parseReg);if(1===r.length&&""===r[0])return e;var i="";return n.each(r,function(e,r){i+=e+(t[r]||"")}),i},__:function(e){return this.getMessage(e)},getMessage:function(e){var t=this.getCurrentLang();if(this.message[t]||(t=this.lang.base),!this.message[t])return"";var r=this.message[t][e]||"";!r&&this.message[this.lang.base]&&(r=this.message[this.lang.base][e]||"");var n=Array.prototype.slice.call(arguments,1);return this.parse(r,n)},add:function(e){return t.utils.copyr(this.message,e)},addMessage:function(e,r){return this.message[e]=this.message[e]||{},t.utils.copyr(this.message[e],r)},remove:function(e,t){var r=this.message[e];r&&r[t]?this.message[e][t]=null:r?this.message[e]=null:this.message={}},dispose:function(){delete this.lang,delete this.message,delete this.parseReg}},o=t.extend("beez.i18n",function(){return this.initialize.apply(this,arguments)},i);o.extend=t.extendThis,t.I18n=o,t.createI18n=function(e,r){return t.i18n&&t.i18n.dispose(),e||(e=o),t.i18n=new e(r),t.i18n};var s=e("handlebars");return s.registerHelper("__",function(){if(t.i18n){var e=Array.prototype.slice.call(arguments,0,arguments.length-1);return t.i18n.getMessage.apply(t.i18n,e)}return""}),t.I18n})}(this),function(global){define("beez-mvcr/jsonpath",["require","exports","module","underscore"],function(require,exports,module){var _=require("underscore"),cache={},jsonPath=function jsonPath(obj,expr,arg,testManaged){var P={resultType:arg&&arg.resultType||"VALUE",flatten:arg&&arg.flatten||!1,wrap:arg&&arg.hasOwnProperty("wrap")?arg.wrap:!0,normalize:function(e){if(cache[e])return cache[e];var t=[],r=e.replace(/[\['](\??\(.*?\))[\]']/g,function(e,r){return"[#"+(t.push(r)-1)+"]"}).replace(/'?\.'?|\['?/g,";").replace(/;;;|;;/g,";..;").replace(/;$|'?\]|'$/g,"").replace(/#([0-9]+)/g,function(e,r){return t[r]});return cache[e]=r,r},asPath:function(e){for(var t=e.split(";"),r="$",n=1,i=t.length;i>n;n++)r+=/^[0-9*]+$/.test(t[n])?"["+t[n]+"]":"['"+t[n]+"']";return r},store:function(e,t){return e&&("PATH"===P.resultType?P.result[P.result.length]=P.asPath(e):_.isArray(t)&&P.flatten?(P.result||(P.result=[]),_.isArray(P.result)||(P.result=[P.result]),P.result=P.result.concat(t)):P.result?(_.isArray(P.result)||(P.result=[P.result]),_.isArray(t)&&P.flatten?P.result=P.result.concat(t):P.result[P.result.length]=t):P.result=t),!!e},trace:function(e,t,r){if(e){var n=e.split(";"),i=n.shift();if(n=n.join(";"),t&&t.hasOwnProperty(i))P.trace(n,t[i],r+";"+i);else if("*"===i)P.walk(i,n,t,r,function(e,t,r,n,i){P.trace(e+";"+r,n,i)});else if(".."===i)P.trace(n,t,r),P.walk(i,n,t,r,function(e,t,r,n,i){"object"==typeof n[e]&&P.trace("..;"+r,n[e],i+";"+e)});else if(/,/.test(i))for(var o=i.split(/'?,'?/),s=0,a=o.length;a>s;s++)P.trace(o[s]+";"+n,t,r);else/^\(.*?\)$/.test(i)?P.trace(P.evaluate(i,t,r.substr(r.lastIndexOf(";")+1))+";"+n,t,r):/^\?\(.*?\)$/.test(i)?P.walk(i,n,t,r,function(e,t,r,n,i){P.evaluate(t.replace(/^\?\((.*?)\)$/,"$1"),n[e],e)&&P.trace(e+";"+r,n,i)}):/^(-?[0-9]*):(-?[0-9]*):?([0-9]*)$/.test(i)&&P.slice(i,n,t,r)}else t&&(_.isArray(t)||testManaged(t))&&P.store(r,t)},walk:function(e,t,r,n,i){if(r instanceof Array)for(var o=0,s=r.length;s>o;o++)o in r&&i(o,e,t,r,n);else if("object"==typeof r&&testManaged(r))for(var a in r)r.hasOwnProperty(a)&&i(a,e,t,r,n)},slice:function(e,t,r,n){if(r instanceof Array){var i=r.length,o=0,s=i,a=1;e.replace(/^(-?[0-9]*):(-?[0-9]*):?(-?[0-9]*)$/g,function(e,t,r,n){o=parseInt(t||o,10),s=parseInt(r||s,10),a=parseInt(n||a,10)}),o=0>o?Math.max(0,o+i):Math.min(i,o),s=0>s?Math.max(0,s+i):Math.min(i,s);for(var u=o;s>u;u+=a)P.trace(u+";"+t,r,n)}},evaluate:function(x,_v,_vname){try{return $&&_v&&eval(x)}catch(e){throw new SyntaxError("jsonPath: "+e.message+": "+x.replace(/\^/g,"_a"))}}};P.result=P.wrap===!0?[]:void 0;var $=obj;return expr&&obj&&("VALUE"===P.resultType||"PATH"===P.resultType)?(P.trace(P.normalize(expr).replace(/^\$;/,""),obj,"$"),!_.isArray(P.result)&&P.wrap&&(P.result=[P.result]),P.result?P.result:!1):void 0};return jsonPath})}(this),function(){define("beez-mvcr/base",["require","exports","module","beez.core","underscore","beez-mvcr/jsonpath"],function(e){var t=e("beez.core"),r=e("underscore"),n=e("beez-mvcr/jsonpath"),i=t.extend("beez.manager.ManagerBase",function i(){},{constructor:function(e){this.objs={},this.objs[e]="$",this._idxProp=e||""},getIdx:function(e){return e[this._idxProp]},add:function(e,n){var i=this.get(e);if(!i)throw new t.Error("no parent exists. path: "+e);if(r.isArray(i))throw new t.Error("parent is Array. Specify one by using `[number]` selector. parent: "+i);if(r.isArray(n))r.each(n,function(t){t.prefix=e;var r=this.getIdx(t);i[r]||(i[r]=[]),i[r].push(t)},this);else{n.prefix=e;var o=this.getIdx(n);if(i[o])throw new t.Error("Obj: adding object to same parent with same index. Add obj as Array to add several objs into same index. idx: "+this.getIdx(n));i[o]=n}return this},remove:function(e){var t=this.get(e);return t?(r.isArray(t)||(t=[t]),r.each(t,function(e){this.deleteFromParent(e)},this),this):this},removeAll:function(e){var t=this.get(e);if(t){r.isArray(t)||(t=[t]);var n=[];r.each(t,function(e){var t=this.getChildrenAll(e);n=n.concat(t)},this);var i=n.concat(t);r.each(i,function(e){this.deleteFromParent(e)},this)}},isAddable:function(e){return!!this.getIdx(e)},get:function(e){if(void 0===e||"string"!=typeof e)return void 0;if(/^\/$/.test(e))return this.objs;var t=this;e="$"+e.replace(/\//g,".");var r=n(this.objs,e,{wrap:!1},function(e){return t.isAddable(e)});return r?r:void 0},getParent:function(e){return r.isArray(e)?this.get(e[0].prefix):this.get(e.prefix)},deleteFromParent:function(e){if(e){var t=this.getParent(e);r.isArray(e)?delete t[this.getIdx(e[0])]:delete t[this.getIdx(e)]}},getChildren:function(e){var t=[],n=this,i=function i(e){r.each(e,function(e){e&&(r.isArray(e)?i(e):n.getIdx(e)&&t.push(e))})};return i(e),t},getChildrenAll:function(e){var t=[],n=this,i=function i(e){r.each(e,function(e){if(e)if(r.isArray(e))o(e);else if(n.getIdx(e)){if(!e.prefix)return;s(e),t.push(e)}})},o=function o(e){i(e)},s=function s(e){i(r.values(e))};return s(e),t},pathOf:function(e){var n="";if(r.isArray(e)){if(r.isEmpty(e))throw new t.Error("pathOf: obj is empty array.");e=e[0]}if(n=e.prefix,!n)throw new t.Error("pathOf: object.prefix does not exist.");return n+(/^\/$/.test(n)?"":"/")+this.getIdx(e)},trace:function(){var e={},t=this.getChildrenAll(this.objs),n=this;return r.each(t,function(t){if(t){var i;i="/"===t.prefix?t.prefix+n.getIdx(t):t.prefix+"/"+n.getIdx(t),e[i]?(r.isArray(e[i])||(e[i]=[e[i]]),e[i].push(t)):e[i]=t}}),e},dispose:function(){delete this.objs,delete this._idxProp}}),o=t.extend("beez.mvcr.Base",function o(){},{constructor:function(){this.manager={}},getParent:function(){return this.manager.getParent(this)},deleteFromParent:function(){return this.manager.deleteFromParent(this)},getChildren:function(){return this.manager.getChildren(this)},getChildrenAll:function(){return this.manager.getChildrenAll(this)},alias:function(e){return this.manager.add(e,this)},dispose:function(){delete this.manager}});return{ManagerBase:i,Base:o}})}(this),function(){define("beez-mvcr/model",["require","exports","module","beez.core","underscore","backbone","zepto","beez-mvcr/base"],function(e){var t=e("beez.core"),r=e("underscore"),n=e("backbone");e("zepto");var i=e("beez-mvcr/base"),o=i.Base,s=i.ManagerBase,a=t.getLogger("beez.mvcr.model"),u=t.Bucks.extend("beez.mvcr.ModelManagerAsync",{initialize:function(e){this.manager=e,this.current=void 0,this.root=void 0},create:function(e,r,n,i){var o=this;return this.then(function(){var s=o.manager.create(e,r,n,i);return o.root=o.current=s,o.create=function(){throw new t.Error("create called more than once!")},s})},createCollection:function(e,r,n,i){var o=this;return this.then(function(){var s=o.manager.createCollection(e,r,n,i);return o.root=o.current=s,o.createCollection=function(){throw new t.Error("create called more than once!")},s})},child:function(e,n,i){var o=this;return this.then(function(){if(!o.root)throw new t.Error("No chain root exists. `create` first.");var s=o.manager.pathOf(o.current),a=o.manager.create(s,e,n,i);o.current=r.isArray(a)?a[0]:a})},parent:function(){var e=this;return this.then(function(){if(e.current=e.manager.getParent(e.current),!e.current)throw new t.Error("get parent failed")})},bro:function(e,t,r){return this.parent().child(e,t,r)},dispose:function(){a.debug("ModelManagerAsync dispose"),delete this.manager,delete this.current,this.root&&this.root.dispose&&this.root.dispose(),delete this.root}}),c=t.extend("beez.mvcr.ModelManager",s,{initialize:function(){this.constructor.__super__.initialize.call(this,"midx")},async:function(){return new u(this)},root:function(e){var r=new e,n=this.get("/@");if(n)throw new t.Error("root already exists!");if("@"!==r.midx)throw new t.Error('roots midx must be "@"');return this.add("/",r),r},create:function(e,n,i,o){if(!n||!r.isArray(n)&&"function"!=typeof n){var s="Model does not exist / does not be funciton. Specified prefix: "+e;throw new t.Error(s)}if(n instanceof f)throw new t.Error("Collection specified. Use #createCollection instead.");if(!e)throw new t.Error("No prefix specified. Creating:"+n.name);if(0>e.indexOf("/@"))throw new t.Error('prefix must started by "/@". Creating:'+n.name);if(!this.get(e))throw new t.Error("no parent exists. prefix: "+e+" , Please consider constructing in Controller and so on.");return r.isArray(n)?this._createArray(e,n,i,o):this._createObj(e,n,i,o)},deepRemove:function(e,t){var r=this.get(e);return r?(r.isCollection()?r.removeAll&&r.removeAll(t):r.dispose&&r.dispose(t),c.__super__.remove.apply(this,arguments),this):(a.debug("Path of unmanaged become subject to deletion, I was skipped. path:",e),this)},_createObj:function(e,r,n,i){var o=new r(n,i,this);if(!this.isAddable(o))throw new t.Error("index does not exists in the Model. :"+o);return this.add(e,o),o},_createArray:function(e,n,i,o){i&&!r.isArray(i)&&(i=[i]),o&&!r.isArray(o)&&(o=[o]);var s=this,a=[];return r.each(n,function(e,t){var r=i?i[t]:void 0,n=o?o[t]:void 0;a.push(new e(r,n,s))}),r.each(a,function(e){if(!this.isAddable(e))throw new t.Error("index does not exist in the Model. :"+e)},this),this.add(e,a),a},createCollection:function(e,r,n,i){if(!r||"function"!=typeof r){var o="Collection does not exist / does not be funciton. Specified prefix: "+e;throw new t.Error(o)}if(!e)throw new t.Error("No prefix specified. Creating:"+r.name);if(0>e.indexOf("/@"))throw new t.Error('prefix must started by "/@". Creating:'+r.name);var s=new r(n,i,this);return this.add(e,s),s},_newAll:function(e,n,i){if(!e)throw new t.Error("ctor does not exist.");r.isArray(e)||(e=[e]),n&&!r.isArray(n)&&(n=[n]),i&&!r.isArray(i)&&(i=[i]);var o=[];return r.each(e,function(e,t){var r=n?n[t]:void 0,s=i?i[t]:void 0;o.push(new e(r,s))}),o},dispose:function(e){a.debug("ModelManager dispose");var n=this.get(e);if(!n)return this;n&&!r.isArray(n)&&(n=[n]);var i=[];r.each(n,function(e){var t=this.getChildrenAll(e);i=i.concat(t)},this);var o=i.concat(n),s=r.reject(o,function(e){return e.isBinded()}),u=r.difference(o,s);return r.each(u,function(e){throw new t.Error("a disposing model have some bindings. models cid: "+e.cid)}),r.each(s,function(e){this.deleteFromParent(e)},this),r.each(s,function(e){e.dispose()}),this}}),h=t.Bucks.extend("beez.mvcr.ModelAsync",{initialize:function(e){this.model=e},fetch:function(e){var t=this.model;return this.then(function(n,i){e=e?r.clone(e):{},e.success=function(e,t){i(null,{model:e,res:t})},e.error=function(t,r){i(Error(JSON.stringify({model:t,res:r,options:e})))},t.fetch(e)})},save:function(e,t,n){var i;null==e||r.isObject(e)?(i=e,n=t):null!=e&&((i={})[e]=t);var o=this.model;return this.then(function(e,t){n=n?r.clone(n):{},n.success=function(e,r){t(null,{model:e,res:r})},n.error=function(e,r){t(Error(JSON.stringify({model:e,res:r,options:n})))},o.save(i,n)})},destroy:function(e){var t=this.model;return this.then(function(n,i){e=e?r.clone(e):{},e.success=function(e,t){i(null,{model:e,res:t})},e.error=function(t,r){i(Error(JSON.stringify({model:t,res:r,options:e})))},t.destroy(e)})},dispose:function(){a.debug("ModelAsync dispose"),delete this.model}}),l=t.extend("beez.mvcr.Model",o,n.Model.prototype,{constructor:function(e,r,n){r=r||{},r.urlRoot=r.urlRoot||t.config.url.api,this.manager=n;var i=arguments;arguments.length>=3&&(i=Array.prototype.slice.call(arguments,0,arguments.length-1)),l.__super__.constructor.apply(this,i)},midx:void 0,async:function(){return new h(this)},isCollection:function(){return!1},isModel:function(){return!0},isBinded:function(){if(this._events){var e,t,n,i,o;for(i=r.keys(this._events),e=0,t=i.length;t>e;e++)if(n=i[e],o=this._events[n],o&&o.length>0)return!0}return!1},dispose:function(){a.debug("Model dispose"),delete this.manager,delete this.cid,delete this.attributes,delete this.url,delete this.urlRoot,delete this.collection}});l.extend=t.extendThis;var d=t.Bucks.extend("beez.mvcr.CollectionAsync",{initialize:function(e){this.collection=e},create:function(e,t){var r=this;return this.then(function(){return r.collection.create(e,t)})},remove:function(e,t){var r=this;return this.then(function(){return r.collection.remove(e,t)})},_reset:function(){var e=this;return this.then(function(){return e.collection._reset()})},dispose:function(){a.debug("CollectionAsync dispose"),delete this.collection}}),f=t.extend(o,n.Collection.prototype,{constructor:function(e,r,n){this.model||(this.model=l),this.urlRoot=function(){return t.config.url.api}(),this.manager=n;var i=arguments;arguments.length>=3&&(i=Array.prototype.slice.call(arguments,0,arguments.length-1)),f.__super__.constructor.apply(this,i)},midx:void 0,async:function(){return new d(this)},isCollection:function(){return!0},isModel:function(){return!1},remove:function(e){return f.__super__.remove.apply(this,arguments),e=r.isArray(e)?e.slice():[e],r.each(e,function(e){e.dispose&&e.dispose()}),this},removeAll:function(e){return this.remove(this.models,e)},_reset:function(){this.length=0,r.each(this.models,function(e){e.dispose&&e.dispose()}),this.models=[],this._byId={}},isBinded:function(){if(this._events){var e,t,n,i,o;for(i=r.keys(this._events),e=0,t=i.length;t>e;e++)if(n=i[e],o=this._events[n],o&&o.length>0)return!0
}return!1},dispose:function(){a.debug("Collection dispose"),r.each(this.models,function(e){e.dispose&&e.dispose()}),delete this.urlRoot,delete this.manager,delete this.url,delete this.comparator,delete this.length,delete this.models,delete this._byId}});return f.extend=t.extendThis,{Model:l,Collection:f,ModelManager:c,ModelManagerAsync:u}})}(this),function(){define("beez-mvcr/modic",["require","exports","module","beez.core","underscore","backbone","beez-mvcr/model"],function(e){var t=e("beez.core");e("underscore"),e("backbone");var r=e("beez-mvcr/model"),n=r.Model.extend("beez.mvcr.Modic",{midx:void 0,lRoot:function(){throw new t.Error("not allowed to use this function.")},url:function(){throw new t.Error("not allowed to use this function.")},async:function(){throw new t.Error("not allowed to use this function.")},fetch:function(){throw new t.Error("not allowed to use this function.")},save:function(){throw new t.Error("not allowed to use this function.")}});return{Modic:n}})}(this),function(){define("beez-mvcr/view",["require","exports","module","beez.core","underscore","backbone","beez-mvcr/base"],function(e){var t=e("beez.core"),r=e("underscore"),n=e("backbone"),i=e("beez-mvcr/base"),o=i.Base,s=i.ManagerBase,a=t.getLogger("beez.mvcr.view"),u=t.Bucks.extend("beez.mvcr.ViewManagerAsync",{initialize:function(e){this.manager=e},root:function(e){var t=this;return this.then(function(){return t.manager.root(e)})},create:function(e,t,n){var i=this;return this.then(function(){var o=i.manager.create(e,t,n),s=r.isArray(o)?o[0]:o;return s})},child:function(e,t){var n=this;return this.then(function(i){var o=n.manager.pathOf(i),s=n.manager.create(o,e,t);return i=r.isArray(s)?s[0]:s})},parent:function(){var e=this;return this.then(function(r){var n=e.manager.getParent(r);if(n)throw new t.Error("get parent failed. current: "+r);return r=n})},bro:function(e,t){return this.parent().child(e,t)},dispose:function(){a.debug("ViewManagerAsync dispose"),delete this.manager,delete this.current,delete this.root}}),c=t.extend("beez.mvcr.ViewManager",s,{initialize:function(){this.constructor.__super__.initialize.call(this,"vidx"),this.sceneStack=[]},async:function(){return new u(this)},root:function(e){this.add("/",new function(){this.vidx="@"});var r=new e(this),n=this.getChildren(this.get("/@"));this.remove("/@");var i=this.get("/@");if(i)throw new t.Error("root already exists!");if("@"!==r.vidx)throw new t.Error('roots vidx must be "@"');this.add("/",r);for(var o=0;n.length>o;o++)this.add("/@",n[o]);return r},create:function(e,n,i){if(!n||!r.isArray(n)&&"function"!=typeof n)throw new t.Error("View does not exist / does not be funciton. Specified prefix: "+e);if(!e)throw new t.Error("No prefix specified. Creating:"+n.name);if(0>e.indexOf("/@"))throw new t.Error('prefix must started by "/@". Creating:'+n.name);if(!this.get(e))throw new t.Error("no parent exists. prefix: "+e+" , Please consider constructing view in Controller, or in #beforeOnce and so on.");return r.isArray(n)?this._createArray(e,n,i):this._createObj(e,n,i)},_createObj:function(e,r,n){var i=new r(this,n);if(!this.isAddable(i))throw new t.Error("index does not exists in the View. :"+i);return this.add(e,i),i},_createArray:function(e,n,i){var o=this;i&&!r.isArray(i)&&(i=[i]);var s=[];return r.each(n,function(e,t){var r=i?i[t]:void 0,n=new e(o,r);s.push(n)}),r.each(s,function(e){if(!this.isAddable(e))throw new t.Error("index does not exists in the View. :"+e)},this),this.add(e,s),s},dispose:function(e){a.debug("ViewManager dispose");var t=this.get(e);if(t){r.isArray(t)||(t=[t]);var n=[];r.each(t,function(e){var t=this.getChildrenAll(e);n=n.concat(t)},this);var i=n.concat(t);r.each(i,function(e){this.deleteFromParent(e)},this),r.each(i,function(e){e.remove(),e.dispose()})}}}),h=t.Bucks.extend("beez.mvcr.ViewAsync",{initialize:function(e){this._root=e},_render:function(e){return this.then(function(){return e}),e.state.isBeforeOnce||this.then(function(e,t){return e.visible?e.beforeOnce.length?(e.beforeOnce(function(){e.state.isBeforeOnce=!0,t(null,e)}),void 0):(e.beforeOnce(),e.state.isBeforeOnce=!0,t(null,e),void 0):(a.debug("view",e.vidx,"is not visible. skip `beforeOnce`."),t(null,e),void 0)}),this.then(function(e,t){return e.visible?e.before.length?(e.before(function(){t(null,e)}),void 0):(e.before(),t(null,e),void 0):(a.debug("view",e.vidx,"is not visible. skip `before`."),t(null,e),void 0)}),this.then(function(e,t){return e.visible?e.render.length?(e.render(function(){t(null,e)}),void 0):(e.render(),t(null,e),void 0):(a.debug("view",e.vidx,"is not visible. skip `render`."),t(null,e),void 0)}),this.then(function(e,t){return e.visible?e.after.length?(e.after(function(){t(null,e)}),void 0):(e.after(),t(null,e),void 0):(a.debug("view",e.vidx,"is not visible. skip `after`."),t(null,e),void 0)}),e.state.isAfterOnce||this.then(function(e,t){return e.visible?e.afterOnce.length?(e.afterOnce(function(){e.state.isAfterOnce=!0,t(null,e)}),void 0):(e.afterOnce(),e.state.isAfterOnce=!0,t(null,e),void 0):(a.debug("view",e.vidx,"is not visible. skip `afterOnce`."),t(null,e),void 0)}),this},_remove:function(e){return this.then(function(){return e.remove(),e})},show:function(e){if(!this._root)throw new t.Error("render root is not set. initialize renderer with root view parameter.");return this._show(this._root,e)},_show:function(e,t){if(void 0===t&&(t=!0),r.isArray(e)){if(r.isEmpty(e))return this;e.sort(function(e,t){return e.order<t.order?-1:e.order>t.order?1:0});var n=r.map(e,function(e){return function(r,n,i){if(r)throw r;(new h)._show(e,t).end(function(e){i(e,void 0)})}});this.waterfall(n)}else a.debug("showing",e.vidx),this._render(e,t);return t&&this.then(function(e,n){if(!e)return n(null,e);var i=e.getChildren();return r.isEmpty(i)?n(null,e):(new h)._show(i,t).end(n)}),this},hide:function(e){if(!this._root)throw new t.Error("render root is not set. initialize renderer with root view parameter.");return this._hide(this._root,e)},_hide:function(e,t){if(void 0===t&&(t=!0),r.isArray(e)){var n=r.map(e,function(e){return function(r,n,i){if(r)throw r;(new h)._hide(e,t).end(function(e){i(e,void 0)})}});this.waterfall(n)}else a.debug("hiding",e.vidx),this._remove(e);return t&&this.then(function(e,n){if(!e)return n(null,e);var i=e.getChildren();return r.isEmpty(i)?n(null,e):(new h)._hide(i,t).end(n)}),this},dispose:function(){a.debug("ViewAsync dispose"),delete this._root}}),l=t.extend("beez.mvcr.View",o,n.View.prototype,{constructor:function(){if(1>arguments.length)throw new t.Error("In order to create a View, requires one arguments.");this.manager=arguments[0],l.__super__.constructor.apply(this,Array.prototype.slice.call(arguments,1)),this.state={isBeforeOnce:!1,isAfterOnce:!1},this.visible=!0},vidx:void 0,el:void 0,order:0,beforeOnce:t.none,before:t.none,after:t.none,afterOnce:t.none,async:function(){return new h(this)},isRendered:function(){return!!this.el&&!!this.el.parentElement},setVisible:function(e){if("boolean"!=typeof e)throw t.Error("typeof visible invalid. should be boolean.");return this.visible=e,this},dispose:function(){a.debug("View dispose"),this.undelegateEvents(),this.remove(),delete this.cid,delete this.options,delete this.$el,delete this.model,delete this.collection,delete this.el,delete this.id,delete this.attributes,delete this.className,delete this.tagName,delete this.events}});return l.extend=t.extendThis,{View:l,ViewAsync:h,ViewManager:c,ViewManagerAsync:u}})}(this),function(){define("beez-mvcr/controller",["require","exports","module","beez.core","beez.mvcr","beez.i18n","underscore"],function(e){var t=e("beez.core");e("beez.mvcr"),e("beez.i18n");var r=t.getLogger("beez.mvcr.controller"),n=e("underscore"),i=t.Bucks.extend("beez.mvcr.ControllerManagerAsync",{initialize:function(e){this.manager=e},create:function(e,n){var i=this;return this.then(function(r,o){if(!n||"function"!=typeof n)throw new t.Error("Controller does not exist / does not be funciton. Specified name: "+e);if(i.manager.controllers[e])throw new t.Error("It is a singleton in the module. name:"+e);var s=new n;i.manager.controllers[e]=s,o(r,i.manager.controllers[e])}).then(function(e,t){e.loadCSS(function(){t(null,e)})}).then(function(e,t){e.loadI18n(function(n){n&&(r.error("i18n load error. ",n.message),r.debug(n.stack)),t(n,e)})})},dispose:function(){r.debug("ControllerManagerAsync dispose"),delete this.manager}}),o=t.extend("beez.mvcr.ControllerManager",function(){return this.initialize()},{initialize:function(){this.controllers={}},async:function(){return new i(this)},remove:function(e){var t=this.get(e);return t?(delete this.controllers[e],this):this},get:function(e){return this.controllers[e]},dispose:function(){r.debug("ControllerManager dispose"),delete this.controllers}}),s=t.extend("beez.mvcr.Controller",function(){this.initialize.apply(this,arguments)},{initialize:function(){},loadI18n:function(n){t.i18n||t.createI18n();var i=this;e(this.i18n,function(){for(var e=Array.prototype.slice.call(arguments),o=0;e.length>o;o++)t.i18n.add(e[o]),r.debug("i18n file loaded. path:",i.i18n[o]);n&&n(null)},function(e){n&&n(e)})},loadCSS:function(e){var r=this.css;if(!r||1>r.length)return e&&e();var i=n.map(r,function(e){return function(r,n,i){t.manager.css.async().load(e).end(function(e,t){i(r,t[0])},function(e){i(e)})}}),o=new t.Bucks;return o.parallel(i).end(function(t,r){e&&e(t,r)}),this},dispose:function(){r.debug("Controller dispose"),delete this.constructor.prototype.css,delete this.constructor.prototype.i18n}});return s.extend=t.extendThis,{Controller:s,ControllerManager:o,ControllerManagerAsync:i}})}(this),function(){define("beez-mvcr/router",["require","exports","module","beez.core","beez.mvcr","underscore","backbone"],function(e){var t=e("beez.core");e("beez.mvcr");var r=t.getLogger("beez.mvcr.router"),n=e("underscore"),i=e("backbone"),o={initialize:function(){this.router=void 0,this.started=!1},start:function(i,o){if(o=o||t.Router,this.started)throw new t.Error("Already been executed once. If you want to add a route, please refer to the function add().");var s=t.config.router||{},a=n.extend(s,i);if(r.debug("router.start",JSON.stringify(a)),!this.router){this.router=new o;for(var u=n.keys(a),c=0;u.length>c;c++){var h=u[c],l=a[h];r.debug("router.route",h,JSON.stringify(l)),this.router.route(l.route,l.name,function(n){function i(){if(!a.hasOwnProperty(n))throw new t.Error("route map key does not exist. name: "+n);var i=a[n],o=arguments;r.debug("router.proxy",i),e([i.require],function(e){r.debug("controller.exec",i.xpath);var n=t.manager.c.get(i.xpath);if(n){if(!n[i.name])throw Error('"'+i.name+'" to Controller I is undefined.');n[i.name].apply(n,o)}else t.manager.c.async().create(i.xpath,e).then(function(e){if(!e[i.name])throw Error('"'+i.name+'" to Controller I is undefined.');e[i.name].apply(e,o)}).end()})}return i}(h))}this.started=!0}return this},navigate:function(e,r){if(!this.started||!this.router)throw new t.Error('Initialization has not been performed even once. Please do a "start()".');return this.router.navigate(e,r)}},s=t.extend("beez.mvcr.RouterManager",function(){return this.initialize()},o),a=i.Router.extend("beez.mvcr.Router",{constructor:function(){this.initialize.apply(this,arguments)},initialize:function(){}});return{Router:a,RouterManager:s}})}(this),function(){define("beez-mvcr/cssmanager",["require","exports","module","beez.core","underscore","zepto"],function(e){var t=e("beez.core"),r=t.getLogger("beez.mvcr.cssmanager"),n=e("underscore"),i=e("zepto"),o=function o(e){var t=document.styleSheets,r=n.find(t,function(t){var r=t.href;return r&&-1!==r.indexOf(e)});return r&&r.rules&&r.rules.length>0},s=function s(e){var t=document.styleSheets,r=n.find(t,function(t){var r=t.href;return r&&-1!==r.indexOf(e)});return!!r},a=t.Bucks.extend("beez.mvcr.CSSManagerAsync",{initialize:function(e){this.manager=e,this._path="",this._intervalId=void 0,this._timeoutId=void 0,this.INTERVAL=t.config.manager&&t.config.manager.css&&t.config.manager.css.interval||50,this.TIMEOUT=t.config.manager&&t.config.manager.css&&t.config.manager.css.timeout||1e4},load:function(e){var o=this,a=this._path=e;if(e.match(/^(http|https):\/\/.+$/)||(a=this._path=this.manager.name2path(e)),!a)return this.empty();if(this.manager.isLoaded(a))return r.debug("path: "+a+" already exists"),a=void 0,this.empty();var u='<link rel="stylesheet" href="'+n.escape(a)+'" ></link>';return i("head").append(u),this.then(function(e,n){o._intervalId=setInterval(function(){s(a)&&(o.abort(),r.debug("load finished. path: "+a),n())},o.INTERVAL),o._timeoutId=setTimeout(function(){o.abort(),n(new t.Error("loading timed out. path:"+a))},o.TIMEOUT)})},remove:function(e){var t=this;return this.then(function(){return t.manager.remove(e)})},abort:function(){clearTimeout(this._timeoutId),clearInterval(this._intervalId),delete this._timeoutId,delete this._intervalId,delete this.INTERVAL,delete this.TIMEOUT},dispose:function(){r.debug("CSSManagerAsync dispose"),delete this.manager,delete this._path,this.abort()}}),u=t.extend("beez.mvcr.CSSManager",function(){return this.initialize()},{initialize:function(){this._basePath="",t.config.url&&t.config.url.base&&(this._basePath=t.config.url.base,this._basePath.replace(/\/$/,""))},name2path:function(e){var t="";return t=this._basePath?0===e.indexOf("/")?this._basePath+e:this._basePath+"/"+e:e},async:function(){return new a(this)},remove:function(e){var t=i("link[rel=stylesheet]");return t.each(function(){-1!==this.href.indexOf(e)&&(r.debug("remove finished. name:",e,", path: "+this.href),i(this).remove())}),this},isExists:o,isLoaded:s,dispose:function(){r.debug("CSSManager dispose"),delete this._basePath}});return{CSSManager:u,CSSManagerAsync:a}})}(this),function(){define("beez-mvcr/imagemanager",["require","exports","module","beez.core","beez.utils","underscore","zepto"],function(e){var t=e("beez.core");e("beez.utils");var r=e("underscore"),n=e("zepto"),i=t.getLogger("beez.mvcr.imagemanager"),o="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAMAAAAoyzS7AAAABlBMVEX///8AAABVwtN+AAAAAXRSTlMAQObYZgAAAA1JREFUeNoBAgD9/wAAAAIAAVMrnDAAAAAASUVORK5CYII=",s=0,a=function a(){return"__beez_manager_image_uid_"+s++},u=t.extend("beez.mvcr.ImagePool",function(e){return this.initialize(e)},{initialize:function(e){this.limit=e,this._total=0,this._num_used=0,this._using={},this._unused=[]},create:function(){var e;if(this._unused.length>0)e=this._unused.pop();else{if(this.limit>0&&this._total>=this.limit)throw new t.Error("image pool limit exceeds!");e=new Image,e.__beez_manager_image_uid=a(),this._total++}this._num_used++,this._using[e.__beez_manager_image_uid]=e;var r=this;return e.release=function(){this.src=o,r._using&&delete r._using[this.__beez_manager_image_uid],r._unused&&r._unused.push(this),r._num_used&&r._num_used--,delete this.release},e},living:function(){return this._num_used},peak:function(){return this._total},waiting:function(){return this._unused.length},dispose:function(){i.debug("ImangePool dispose");for(var e in this._using)this._using[e].release();for(delete this._using;this._unused.length>0;){var t=this._unused.pop();delete t.__beez_manager_image_uid}delete this._unused,delete this._num_used,delete this._total,delete this._limit}}),c=t.Bucks.extend("beez.mvcr.ImageManagerAsync",{initialize:function(e){this.imageManager=e},loadOne:function(e){var r=this.imageManager.create(),i=this;return this.add(function(o,s,a){var u=n(r),c=function c(){u.off(),a(null,r)},h=function h(){var e=r.src;u.off(),r.release(),a(new t.Error("error on load image. src:"+e))},l=function l(){var e=r.src;u.off(),r.release(),a(new t.Error("image loading aborted. src:"+e))};u.on("load",c),u.on("error",h),u.on("abort",l);var d=i.imageManager.imageUrl(e);r.src=d})},load:function(e){if(r.isString(e))e=[e];else if(!r.isArray(e))throw new t.Error("url can be String or Array of string.");var n=this,i=r.map(e,function(e){return function(t,r,i){new c(n.imageManager).loadOne(e).end(function(e,t){i(e,t[0])},function(e){i(e)})}});return this.parallel(i)},dispose:function(){delete this.imageManager}}),h=t.extend("beez.mvcr.ImageManager",function(e){return this.initialize(e)},{initialize:function(e){var t=e&&e.size?e.size:0;this.pool=new u(t)},imageUrl:function(e){return e.replace("${ratio}",10*t.utils.pixelRatio)},create:function(){return this.pool.create()},living:function(){return this.pool.living()},peak:function(){return this.pool.peak()},waiting:function(){return this.pool.waiting()},load:function(e){return new c(this).load(e)},loadOne:function(e){return new c(this).loadOne(e)},dispose:function(){i.debug("ImageManagerAsync dispose"),this.pool.dispose(),delete this.pool}});return{ImageManager:h,ImageManagerAsync:c}})}(this),function(){define("beez.mvcr",["require","exports","module","beez.core","handlebars","beez-mvcr/model","beez-mvcr/modic","beez-mvcr/view","beez-mvcr/controller","beez-mvcr/router","beez-mvcr/cssmanager","beez-mvcr/imagemanager","beez-mvcr/base","backbone","beez-mvcr/model","beez-mvcr/view","beez-mvcr/controller","beez-mvcr/router","beez-mvcr/cssmanager","beez-mvcr/imagemanager"],function(e){var t=e("beez.core"),r=t.getLogger("beez.mvcr");if(t.mvcr)return r.debug("beez.mvcr already defined."),t.mvcr;var n=e("handlebars");t.getTemplate=function(e){return n.templates[e]};var i={initialize:function(){var t=e("beez-mvcr/model"),r=e("beez-mvcr/modic"),n=e("beez-mvcr/view"),i=e("beez-mvcr/controller"),o=e("beez-mvcr/router"),s=e("beez-mvcr/cssmanager"),a=e("beez-mvcr/imagemanager"),u=e("beez-mvcr/base");this.Model=t.Model,this.ModelManager=t.ModelManager,this.ModelManagerAsync=t.ModelManagerAsync,this.Collection=t.Collection,this.Modic=r.Modic,this.View=n.View,this.ViewAsync=n.ViewAsync,this.ViewManager=n.ViewManager,this.ViewManagerAsync=n.ViewManagerAsync,this.Controller=i.Controller,this.ControllerManager=i.ControllerManager,this.ControllerManagerAsync=i.ControllerManagerAsync,this.Router=o.Router,this.RouterManager=o.RouterManager,this.CSSManager=s.CSSManager,this.CSSManagerAsync=s.CSSManagerAsync,this.ImageManager=a.ImageManager,this.ImageManagerAsync=a.ImageManagerAsync,this.ManagerBase=u.ManagerBase,this.Base=u.Base}},o=t.extend("beez.MVCR",function(){return this.initialize()},i),s=new o;t.mvcr=s,t.Model=s.Model,t.Collection=s.Collection,t.Modic=s.Modic,t.View=s.View,t.Controller=s.Controller,t.Router=s.Router;var a=e("backbone");t.history=a.history;var u=t.config.manager||{},c={initialize:function(){this.started=!1,this.model=void 0,this.m=void 0,this.view=void 0,this.v=void 0,this.controller=void 0,this.c=void 0,this.router=void 0,this.r=void 0,this.css=void 0,this.image=void 0},start:function(t){if(this.started)return this;if(t=t||{},this.started=!0,t.model)this.model=t.model;else{var r=e("beez-mvcr/model");this.model=new r.ModelManager("midx")}if(this.m=this.model,t.view)this.view=t.view;else{var n=e("beez-mvcr/view");this.view=new n.ViewManager("vidx")}if(this.v=this.view,t.controller)this.controller=t.controller;else{var i=e("beez-mvcr/controller");this.controller=new i.ControllerManager}if(this.c=this.controller,t.router)this.router=t.router;else{var o=e("beez-mvcr/router");this.router=new o.RouterManager}if(this.r=this.router,t.css)this.css=t.css;else{var s=e("beez-mvcr/cssmanager");this.css=new s.CSSManager}if(t.image)this.image=t.image;else{var a=e("beez-mvcr/imagemanager");this.image=new a.ImageManager(u.image)}return this}},h=t.extend("beez.Manager",function(){return this.initialize()},c),l=new h;return s.manager=l,t.manager=s.manager,t.mvcr})}(this);var VERSION="0.8.12";"undefined"!=typeof module&&module.exports?exports.VERSION=VERSION:(VERSION=VERSION,function(){define("beez",["require","exports","module","beez.core","beez.mvcr","beez.utils","underscore","zepto","backbone","handlebars"],function(e){var t=e("beez.core");e("beez.mvcr"),e("beez.utils");var r={_:e("underscore"),$:e("zepto"),Backbone:e("backbone"),Handlebars:e("handlebars")};return t.vendor=r,t.VERSION=VERSION,t})}(this));