avalon-rails 1.4.6.0.20150915133100 → 1.4.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MGRiZWM0ZjY0MzZjMDRkNmFjYTA1ZDA0Yjc4Yjg4Nzc1MDYwNzIzMA==
5
- data.tar.gz: !binary |-
6
- MTIyNTQ3NmY1YmEzNDllNmM0ZWYyYWU4MzhhZDVhMjUyMGFhMTU5ZA==
2
+ SHA1:
3
+ metadata.gz: a883dc9ef6ec4c81e8664df873eab7a0844ef1d5
4
+ data.tar.gz: 68269cfe5619ebfb73db88d4aa1658b19c59561f
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- ZTAzYzllMGU3ZjE3ZDllNWMwNTcyZTcyMWI5ZTNkYTRkNDFiYzZkYmFjYTg1
10
- N2I2NzVhNDUxNTZiMjhiNzFmNTNkYTM1NDcyN2MwOGM2YmNlY2M2YmFhMDZj
11
- MGE5YWQ1ZWE2ZmQzYzY4ZDYxYTg4ZDg1ZTZiOGIyNTNmZGUwNzc=
12
- data.tar.gz: !binary |-
13
- ZDMzZjQyM2E0OTc2NzczODBmYjRlNGI1YzQ1ZjFmNDhiYzhiMTc2MTc4YjQw
14
- ZWI3ZTAyYzc1MGMwYTFjMDUxODZmOGZkNzg1NDVjN2VmYzhiZjY0NDc0MGJm
15
- YWRiNjc0YTc4N2MzNGIzODYyZDQ1NmRiNjhlMGFjYWI0Y2E5MjU=
6
+ metadata.gz: e006b0b1cbfe3d4e01c4f2fd30ec7bd9e7aa8800a79f13b963879a5065806b80f6fab44ed12b26f1acef7f7ff8f3b42d923123ff896558d0cca84b3cbc85118d
7
+ data.tar.gz: 65948021fa19d4140b5e65a7519109f39da8d54977535e669603cd1184a954ac9a2b91fb4122d4f3b8a2b946eb81e0f294acb2efb0d4c7b415c11a939898ea86
@@ -1,5 +1,5 @@
1
1
  module Avalon
2
2
  module Rails
3
- VERSION = "1.4.6.0.20150915133100"
3
+ VERSION = "1.4.7"
4
4
  end
5
5
  end
@@ -5,7 +5,7 @@
5
5
  http://weibo.com/jslouvre/
6
6
 
7
7
  Released under the MIT license
8
- avalon.js 1.46 built in 2015.9.11
8
+ avalon.js 1.4.7 built in 2015.10.13
9
9
  support IE6+ and other browsers
10
10
  ==================================================*/
11
11
  (function(global, factory) {
@@ -51,9 +51,6 @@ function log() {
51
51
 
52
52
 
53
53
  var subscribers = "$" + expose
54
- var otherRequire = window.require
55
- var otherDefine = window.define
56
- var innerRequire
57
54
  var stopRepeatAssign = false
58
55
  var rword = /[^, ]+/g //切割字符串为一个个小块,以空格或豆号分开它们,结合replace实现字符串的forEach
59
56
  var rcomplexType = /^(?:object|array)$/
@@ -301,10 +298,11 @@ function _number(a, len) { //用于模拟slice, splice的效果
301
298
  a = Math.floor(a) || 0
302
299
  return a < 0 ? Math.max(len + a, 0) : Math.min(a, len);
303
300
  }
301
+
304
302
  avalon.mix({
305
303
  rword: rword,
306
304
  subscribers: subscribers,
307
- version: 1.46,
305
+ version: 1.47,
308
306
  ui: {},
309
307
  log: log,
310
308
  slice: W3C ? function (nodes, start, end) {
@@ -357,38 +355,35 @@ avalon.mix({
357
355
  },
358
356
  eventHooks: [],
359
357
  /*绑定事件*/
360
- bind: function(el, type, fn, phase) {
358
+ bind: function (el, type, fn, phase) {
361
359
  var hooks = avalon.eventHooks
362
360
  var hook = hooks[type]
363
361
  if (typeof hook === "object") {
364
- type = hook.type
365
- if (hook.deel) {
366
- fn = hook.deel(el, type, fn, phase)
367
- }
362
+ type = hook.type || type
363
+ phase = hook.phase || !!phase
364
+ fn = hook.fn ? hook.fn(el,fn): fn
368
365
  }
369
- var callback = W3C ? fn : function(e) {
366
+ var callback = W3C ? fn : function (e) {
370
367
  fn.call(el, fixEvent(e));
371
368
  }
372
369
  if (W3C) {
373
- el.addEventListener(type, callback, !!phase)
370
+ el.addEventListener(type, callback, phase)
374
371
  } else {
375
372
  el.attachEvent("on" + type, callback)
376
373
  }
377
374
  return callback
378
375
  },
379
376
  /*卸载事件*/
380
- unbind: function(el, type, fn, phase) {
377
+ unbind: function (el, type, fn, phase) {
381
378
  var hooks = avalon.eventHooks
382
379
  var hook = hooks[type]
383
380
  var callback = fn || noop
384
381
  if (typeof hook === "object") {
385
- type = hook.type
386
- if (hook.deel) {
387
- fn = hook.deel(el, type, fn, false)
388
- }
382
+ type = hook.type || type
383
+ phase = hook.phase || !!phase
389
384
  }
390
385
  if (W3C) {
391
- el.removeEventListener(type, callback, !!phase)
386
+ el.removeEventListener(type, callback, phase)
392
387
  } else {
393
388
  el.detachEvent("on" + type, callback)
394
389
  }
@@ -830,7 +825,7 @@ if (!("onmouseenter" in root)) {
830
825
  }, function (origType, fixType) {
831
826
  eventHooks[origType] = {
832
827
  type: fixType,
833
- deel: function (elem, _, fn) {
828
+ fn: function (elem, fn) {
834
829
  return function (e) {
835
830
  var t = e.relatedTarget
836
831
  if (!t || (t !== elem && !(elem.compareDocumentPosition(t) & 16))) {
@@ -858,7 +853,7 @@ avalon.each({
858
853
  if (!("oninput" in DOC.createElement("input"))) {
859
854
  eventHooks.input = {
860
855
  type: "propertychange",
861
- deel: function (elem, _, fn) {
856
+ fn: function (elem, fn) {
862
857
  return function (e) {
863
858
  if (e.propertyName === "value") {
864
859
  e.type = "input"
@@ -878,7 +873,7 @@ if (DOC.onmousewheel === void 0) {
878
873
  var fixWheelDelta = fixWheelType === "wheel" ? "deltaY" : "detail"
879
874
  eventHooks.mousewheel = {
880
875
  type: fixWheelType,
881
- deel: function (elem, _, fn) {
876
+ fn: function (elem, fn) {
882
877
  return function (e) {
883
878
  e.wheelDeltaY = e.wheelDelta = e[fixWheelDelta] > 0 ? -120 : 120
884
879
  e.wheelDeltaX = 0
@@ -923,11 +918,7 @@ function escapeRegExp(target) {
923
918
  }
924
919
 
925
920
  var plugins = {
926
- loader: function (builtin) {
927
- var flag = innerRequire && builtin
928
- window.require = flag ? innerRequire : otherRequire
929
- window.define = flag ? innerRequire.define : otherDefine
930
- },
921
+
931
922
  interpolate: function (array) {
932
923
  openTag = array[0]
933
924
  closeTag = array[1]
@@ -1909,7 +1900,7 @@ function injectDisposeQueue(data, list) {
1909
1900
  var elem = data.element
1910
1901
  if (!data.uuid) {
1911
1902
  if (elem.nodeType !== 1) {
1912
- data.uuid = data.type + (data.pos || 0) + "-" + getUid(elem.parentNode)
1903
+ data.uuid = data.type + getUid(elem.parentNode)+ "-"+ (++disposeCount)
1913
1904
  } else {
1914
1905
  data.uuid = data.name + "-" + getUid(elem)
1915
1906
  }
@@ -2567,7 +2558,8 @@ var rdisplayswap = /^(none|table(?!-c[ea]).+)/
2567
2558
  var node = this[0]
2568
2559
  if (arguments.length === 0) {
2569
2560
  if (node.setTimeout) { //取得窗口尺寸,IE9后可以用node.innerWidth /innerHeight代替
2570
- return node["inner" + name] || node.document.documentElement[clientProp]
2561
+ return node["inner" + name] || node.document.documentElement[clientProp] ||
2562
+ node.document.body[clientProp]//IE6下前两个分别为undefine,0
2571
2563
  }
2572
2564
  if (node.nodeType === 9) { //取得页面尺寸
2573
2565
  var doc = node.documentElement
@@ -3277,7 +3269,7 @@ function scanExpr(str) {
3277
3269
  }
3278
3270
  value = str.slice(start, stop)
3279
3271
  if (value) { //处理{{ }}插值表达式
3280
- tokens.push(getToken(value, start))
3272
+ tokens.push(getToken(value))
3281
3273
  }
3282
3274
  start = stop + closeTag.length
3283
3275
  } while (1)
@@ -3292,11 +3284,10 @@ function scanExpr(str) {
3292
3284
  return tokens
3293
3285
  }
3294
3286
 
3295
- function scanText(textNode, vmodels, index) {
3296
- var bindings = []
3297
- tokens = scanExpr(textNode.data)
3287
+ function scanText(textNode, vmodels) {
3288
+ var bindings = [], tokens = scanExpr(textNode.data)
3298
3289
  if (tokens.length) {
3299
- for (var i = 0; token = tokens[i++]; ) {
3290
+ for (var i = 0, token; token = tokens[i++]; ) {
3300
3291
  var node = DOC.createTextNode(token.value) //将文本转换为文本节点,并替换原来的文本节点
3301
3292
  if (token.expr) {
3302
3293
  token.value = token.value.replace(roneTime, function () {
@@ -3309,7 +3300,6 @@ function scanText(textNode, vmodels, index) {
3309
3300
  token.type = "html"
3310
3301
  return ""
3311
3302
  })// jshint ignore:line
3312
- token.pos = index * 1000 + i
3313
3303
  bindings.push(token) //收集带有插值表达式的文本
3314
3304
  }
3315
3305
  avalonFragment.appendChild(node)
@@ -3773,7 +3763,6 @@ var TimerID, ribbon = []
3773
3763
  }
3774
3764
 
3775
3765
  var watchValueInTimer = noop
3776
- var rmsinput = /text|password|hidden/
3777
3766
  new function() { // jshint ignore:line
3778
3767
  try { //#272 IE9-IE11, firefox
3779
3768
  var setters = {}
@@ -3781,7 +3770,7 @@ new function() { // jshint ignore:line
3781
3770
  var bproto = HTMLTextAreaElement.prototype
3782
3771
  function newSetter(value) { // jshint ignore:line
3783
3772
  setters[this.tagName].call(this, value)
3784
- if (rmsinput.test(this.type) && !this.msFocus && this.avalonSetter) {
3773
+ if (!this.msFocus && this.avalonSetter && this.oldValue !== value) {
3785
3774
  this.avalonSetter()
3786
3775
  }
3787
3776
  }
@@ -3804,7 +3793,7 @@ new function() { // jshint ignore:line
3804
3793
  }
3805
3794
  } // jshint ignore:line
3806
3795
  if (IEVersion) {
3807
- avalon.bind(DOC, "selectionchange", function(e) {
3796
+ avalon.bind(DOC, "selectionchange", function (e) {
3808
3797
  var el = DOC.activeElement
3809
3798
  if (el && typeof el.avalonSetter === "function") {
3810
3799
  el.avalonSetter()
@@ -3813,25 +3802,25 @@ if (IEVersion) {
3813
3802
  }
3814
3803
 
3815
3804
  //处理radio, checkbox, text, textarea, password
3816
- duplexBinding.INPUT = function(element, evaluator, data) {
3805
+ duplexBinding.INPUT = function (element, evaluator, data) {
3817
3806
  var $type = element.type,
3818
- bound = data.bound,
3819
- $elem = avalon(element),
3820
- composing = false
3807
+ bound = data.bound,
3808
+ $elem = avalon(element),
3809
+ composing = false
3821
3810
 
3822
- function callback(value) {
3823
- data.changed.call(this, value, data)
3824
- }
3811
+ function callback(value) {
3812
+ data.changed.call(this, value, data)
3813
+ }
3825
3814
 
3826
- function compositionStart() {
3827
- composing = true
3828
- }
3815
+ function compositionStart() {
3816
+ composing = true
3817
+ }
3829
3818
 
3830
- function compositionEnd() {
3831
- composing = false
3832
- }
3833
- //当value变化时改变model的值
3834
- var updateVModel = function() {
3819
+ function compositionEnd() {
3820
+ composing = false
3821
+ }
3822
+ //当value变化时改变model的值
3823
+ var updateVModel = function () {
3835
3824
  var val = element.value //防止递归调用形成死循环
3836
3825
  if (composing || val === element.oldValue) //处理中文输入法在minlengh下引发的BUG
3837
3826
  return
@@ -3842,27 +3831,27 @@ duplexBinding.INPUT = function(element, evaluator, data) {
3842
3831
  }
3843
3832
  }
3844
3833
  //当model变化时,它就会改变value的值
3845
- data.handler = function() {
3846
- var val = data.pipe(evaluator(), data, "set") +"" //fix #673
3834
+ data.handler = function () {
3835
+ var val = data.pipe(evaluator(), data, "set") //fix #673
3847
3836
  if (val !== element.oldValue) {
3848
- element.value = element.oldValue = val
3837
+ element.value = element.oldValue = val
3849
3838
  }
3850
3839
  }
3851
3840
  if (data.isChecked || $type === "radio") {
3852
3841
  var IE6 = IEVersion === 6
3853
- updateVModel = function() {
3842
+ updateVModel = function () {
3854
3843
  if ($elem.data("duplexObserve") !== false) {
3855
3844
  var lastValue = data.pipe(element.value, data, "get")
3856
3845
  evaluator(lastValue)
3857
3846
  callback.call(element, lastValue)
3858
3847
  }
3859
3848
  }
3860
- data.handler = function() {
3849
+ data.handler = function () {
3861
3850
  var val = evaluator()
3862
- var checked = data.isChecked ? !! val : val + "" === element.value
3851
+ var checked = data.isChecked ? !!val : val + "" === element.value
3863
3852
  element.oldValue = checked
3864
3853
  if (IE6) {
3865
- setTimeout(function() {
3854
+ setTimeout(function () {
3866
3855
  //IE8 checkbox, radio是使用defaultChecked控制选中状态,
3867
3856
  //并且要先设置defaultChecked后设置checked
3868
3857
  //并且必须设置延迟
@@ -3875,7 +3864,7 @@ duplexBinding.INPUT = function(element, evaluator, data) {
3875
3864
  }
3876
3865
  bound("click", updateVModel)
3877
3866
  } else if ($type === "checkbox") {
3878
- updateVModel = function() {
3867
+ updateVModel = function () {
3879
3868
  if ($elem.data("duplexObserve") !== false) {
3880
3869
  var method = element.checked ? "ensure" : "remove"
3881
3870
  var array = evaluator()
@@ -3889,7 +3878,7 @@ duplexBinding.INPUT = function(element, evaluator, data) {
3889
3878
  }
3890
3879
  }
3891
3880
 
3892
- data.handler = function() {
3881
+ data.handler = function () {
3893
3882
  var array = [].concat(evaluator()) //强制转换为数组
3894
3883
  var val = data.pipe(element.value, data, "get")
3895
3884
  element.checked = array.indexOf(val) > -1
@@ -3902,11 +3891,11 @@ duplexBinding.INPUT = function(element, evaluator, data) {
3902
3891
  }
3903
3892
 
3904
3893
  function delay(e) { // jshint ignore:line
3905
- setTimeout(function() {
3894
+ setTimeout(function () {
3906
3895
  updateVModel(e)
3907
3896
  })
3908
3897
  }
3909
- events.replace(rword, function(name) {
3898
+ events.replace(rword, function (name) {
3910
3899
  switch (name) {
3911
3900
  case "input":
3912
3901
  if (!IEVersion) { // W3C
@@ -3920,7 +3909,7 @@ duplexBinding.INPUT = function(element, evaluator, data) {
3920
3909
  if (IEVersion > 8) {
3921
3910
  bound("input", updateVModel) //IE9使用propertychange无法监听中文输入改动
3922
3911
  } else {
3923
- bound("propertychange", function(e) { //IE6-8下第一次修改时不会触发,需要使用keydown或selectionchange修正
3912
+ bound("propertychange", function (e) { //IE6-8下第一次修改时不会触发,需要使用keydown或selectionchange修正
3924
3913
  if (e.propertyName === "value") {
3925
3914
  updateVModel()
3926
3915
  }
@@ -3936,15 +3925,16 @@ duplexBinding.INPUT = function(element, evaluator, data) {
3936
3925
  break
3937
3926
  }
3938
3927
  })
3939
- bound("focus", function() {
3928
+ bound("focus", function () {
3940
3929
  element.msFocus = true
3941
3930
  })
3942
- bound("blur", function() {
3931
+ bound("blur", function () {
3943
3932
  element.msFocus = false
3944
3933
  })
3945
3934
 
3946
- if (rmsinput.test($type)) {
3947
- watchValueInTimer(function() {
3935
+ if (!/^(file|button|reset|submit|checkbox|radio)$/.test(element.type)) {
3936
+ element.avalonSetter = updateVModel //#765
3937
+ watchValueInTimer(function () {
3948
3938
  if (root.contains(element)) {
3949
3939
  if (!element.msFocus && element.oldValue !== element.value) {
3950
3940
  updateVModel()
@@ -3954,11 +3944,9 @@ duplexBinding.INPUT = function(element, evaluator, data) {
3954
3944
  }
3955
3945
  })
3956
3946
  }
3957
-
3958
- element.avalonSetter = updateVModel //#765
3947
+
3959
3948
  }
3960
3949
 
3961
- element.oldValue = element.value
3962
3950
  avalon.injectBinding(data)
3963
3951
  callback.call(element, element.value)
3964
3952
  }
@@ -4170,6 +4158,9 @@ bindingHandlers.repeat = function (data, vmodels) {
4170
4158
  }
4171
4159
  }
4172
4160
 
4161
+ data.handler = noop
4162
+ avalon.injectBinding(data)
4163
+
4173
4164
  var elem = data.element
4174
4165
  if (elem.nodeType === 1) {
4175
4166
  elem.removeAttribute(data.name)
@@ -4238,7 +4229,12 @@ bindingExecutors.repeat = function (method, pos, el) {
4238
4229
 
4239
4230
  if (data.xtype === "array") {
4240
4231
  if (old.length === neo.length) {
4241
- return
4232
+ if (old !== neo && old.length > 0) {
4233
+ bindingExecutors.repeat.call(this, 'clear', pos, el)
4234
+ }
4235
+ else {
4236
+ return
4237
+ }
4242
4238
  }
4243
4239
  method = "add"
4244
4240
  pos = 0
@@ -4750,9 +4746,9 @@ var filters = avalon.filters = {
4750
4746
  $filter: function(val) {
4751
4747
  for (var i = 1, n = arguments.length; i < n; i++) {
4752
4748
  var array = arguments[i]
4753
- var fn = avalon.filters[array.shift()]
4749
+ var fn = avalon.filters[array[0]]
4754
4750
  if (typeof fn === "function") {
4755
- var arr = [val].concat(array)
4751
+ var arr = [val].concat(array.slice(1))
4756
4752
  val = fn.apply(null, arr)
4757
4753
  }
4758
4754
  }
@@ -5049,6 +5045,16 @@ var modules = avalon.modules = {
5049
5045
  state: 4
5050
5046
  }
5051
5047
  }
5048
+
5049
+ var otherRequire = window.require
5050
+ var otherDefine = window.define
5051
+ var innerRequire
5052
+
5053
+ plugins.loader = function (builtin) {
5054
+ var flag = innerRequire && builtin
5055
+ window.require = flag ? innerRequire : otherRequire
5056
+ window.define = flag ? innerRequire.define : otherDefine
5057
+ }
5052
5058
  //Object(modules[id]).state拥有如下值
5053
5059
  // undefined 没有定义
5054
5060
  // 1(send) 已经发出请求
@@ -5722,9 +5728,10 @@ new function () {// jshint ignore:line
5722
5728
  var readyList = [], isReady
5723
5729
  var fireReady = function(fn) {
5724
5730
  isReady = true
5725
- if (innerRequire) {
5731
+ var require = avalon.require
5732
+ if (require && require.checkDeps) {
5726
5733
  modules["domReady!"].state = 4
5727
- innerRequire.checkDeps()
5734
+ require.checkDeps()
5728
5735
  }
5729
5736
  while(fn = readyList.shift()){
5730
5737
  fn(avalon)
@@ -1,3 +1,3 @@
1
- !function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("Avalon requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){function n(){e.console&&avalon.config.debug&&Function.apply.call(console.log,console,arguments)}function r(){}function i(e,t){"string"==typeof e&&(e=e.match(Pt)||[]);for(var n={},r=void 0!==t?t:1,a=0,i=e.length;i>a;a++)n[e[a]]=r;return n}function o(){if(e.VBArray){var t=document.documentMode;return t?t:e.XMLHttpRequest?7:6}return 0/0}function l(e){return Rt.test(zt.call(e))}function s(e,t){return e=Math.floor(e)||0,0>e?Math.max(t+e,0):Math.min(e,t)}function c(e){if(!e)return!1;var t=e.length;if(t===t>>>0){var n=zt.call(e).slice(8,-1);if(/(?:regexp|string|function|window|global)$/i.test(n))return!1;if("Array"===n)return!0;try{return{}.propertyIsEnumerable.call(e,"length")===!1?/^\s?function/.test(e.item||e.callee):!0}catch(r){return!e.window}}return!1}function u(e,t,n){var r="for(var "+e+"i=0,n = this.length; i < n; i++){"+t.replace("_","((i in this) && fn.call(scope,this[i],i,this))")+"}"+n;return Function("fn,scope",r)}function f(e,t){try{for(;t=t.parentNode;)if(t===e)return!0;return!1}catch(n){return!1}}function p(){return(new XMLSerializer).serializeToString(this)}function d(e,t){if(e&&e.childNodes)for(var n,r=e.childNodes,a=0;n=r[a++];)if(n.tagName){var i=_t.createElementNS(fn,n.tagName.toLowerCase());Ut.forEach.call(n.attributes,function(e){i.setAttribute(e.name,e.value)}),d(n,i),t.appendChild(i)}}function v(e){var t={};for(var n in e)t[n]=e[n];var r=t.target=e.srcElement;if(0===e.type.indexOf("key"))t.which=null!=e.charCode?e.charCode:e.keyCode;else if(dn.test(e.type)){var a=r.ownerDocument||_t,i="BackCompat"===a.compatMode?a.body:a.documentElement;t.pageX=e.clientX+(i.scrollLeft>>0)-(i.clientLeft>>0),t.pageY=e.clientY+(i.scrollTop>>0)-(i.clientTop>>0),t.wheelDeltaY=t.wheelDelta,t.wheelDeltaX=0}return t.timeStamp=new Date-0,t.originalEvent=e,t.preventDefault=function(){e.returnValue=!1},t.stopPropagation=function(){e.cancelBubble=!0},t}function h(e){for(var t in e)if(Vt.call(e,t)){var n=e[t];"function"==typeof h.plugins[t]?h.plugins[t](n):"object"==typeof h[t]?avalon.mix(h[t],n):h[t]=n}return this}function m(e){return(e+"").replace($n,"\\$&")}function g(e,t,n){if(Array.isArray(e)){var r=e.concat();e.length=0;var a=_(e);return a.pushArray(r),a}if(!e||e.nodeType>0||e.$id&&e.$events)return e;var i=Array.isArray(e.$skipArray)?e.$skipArray:[];i.$special=t||{};var o={};n=n||{};var l={},s={},c=[];_n.forEach(function(t){delete e[t]});var u=Object.keys(e);u.forEach(function(t,r){var a=e[t];if(n[t]=a,T(t,a,i)){l[t]=[];var o=avalon.type(a);"object"===o&&Kt(a.get)&&Object.keys(a).length<=2?(r=x(t,a),c.push(r)):r=Ft.test(o)?w(t,a,o,l[t],n):b(t,a),s[t]=r}}),o=Mn(o,Ln(s),e);for(var f=0;f<u.length;f++){var p=u[f];s[p]||(o[p]=e[p])}y(o,"$id",Zt()),y(o,"$model",n),y(o,"$events",l),Nn?y(o,"hasOwnProperty",function(e){return e in o.$model}):o.hasOwnProperty=function(e){return e in o.$model&&"hasOwnProperty"!==e};for(f in En)y(o,f,En[f].bind(o));return o.$reinitialize=function(){c.forEach(function(e){delete e._value,delete e.oldArgs,e.digest=function(){e.call(o)},Fn.begin({callback:function(t,n){var r=n._name;if(n!==e){var a=t.$events[r];M(a,e.digest)}}});try{e.get.call(o)}finally{Fn.end()}})},o.$reinitialize(),o}function y(e,t,n){Nn?Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!1,configurable:!0}):e[t]=n}function b(e,t){function n(e){var t=n._value;return arguments.length>0?(Dt||jn(e,t)||(n.updateValue(this,e),n.notify(this,e,t)),this):(Fn.collectDependency(this,n),t)}return k(n,e),n._value=t,n}function x(e,t){function n(t){var r=n._value,a="_value"in n;if(arguments.length>0){if(Dt)return this;if("function"==typeof n.set&&n.oldArgs!==t){n.oldArgs=t;var i=this.$events,o=i[e];i[e]=[],n.set.call(this,t),i[e]=o,t=n.get.call(this),t!==r&&(n.updateValue(this,t),n.notify(this,t,r))}return this}return t=n.get.call(this),n.updateValue(this,t),a&&r!==t&&n.notify(this,t,r),t}return n.set=t.set,n.get=t.get,k(n,e),n}function w(e,t,n,r,a){function i(t){var r=i._value,a=i._vmodel;if(arguments.length>0){if(Dt)return this;if("array"===n){var o=a,l=t,s=o.length,c=l.length;o.$lock=!0,s>c?o.splice(c,s-c):c>s&&o.push.apply(o,l.slice(s));for(var u=Math.min(s,c),f=0;u>f;f++)o.set(f,l[f]);delete o.$lock,o._fire("set")}else if("object"===n){var p=this.$events[e]||[],d=avalon.mix(!0,{},t);for(f in a)a.hasOwnProperty(f)&&Vt.call(d,f)&&(a[f]=d[f]);a=i._vmodel=g(t),a.$events[jt]=p,p.length&&p.forEach(function(e){e.type&&(e.rollback&&e.rollback(),nn[e.type](e,e.vmodels))})}return i.updateValue(this,a.$model),i.notify(this,this._value,r),this}return Fn.collectDependency(this,i),a}k(i,e),a[e]=Array.isArray(t)?t:a[e]||{};var o=i._vmodel=g(t,0,a[e]);return o.$events[jt]=r,i}function $(e,t){e.$model[this._name]=this._value=t}function C(e,t,n){var r=this._name,a=e.$events[r];a&&(S(a),En.$fire.call(e,r,t,n))}function k(e,t){e._name=t,e.updateValue=$,e.notify=C}function T(e,t,n){if(Kt(t)||t&&t.nodeType)return!1;if(-1!==n.indexOf(e))return!1;var r=n.$special;return e&&"$"===e.charAt(0)&&!r[e]?!1:!0}function E(e){for(var t=Object.keys(e.$model?e.$model:e),n=0;n<_n.length;n++){var r=t.indexOf(_n[n]);-1!==r&&t.splice(r,1)}return t}function A(e,t,n,r){var a=t[n];return 4!==arguments.length?a.call(e):void a.call(e,r)}function _(e){var t=[];t.$id=Zt(),t.$model=e,t.$events={},t.$events[jt]=[],t._=g({length:e.length}),t._.$watch("length",function(e,n){t.$fire("length",e,n)});for(var n in En)t[n]=En[n];return avalon.mix(t,Pn),t}function O(e,t,n,r,a,i,o){for(var l=this.length,s=2;--s;){switch(e){case"add":var c=this.$model.slice(t,t+n).map(function(e){return Ft.test(avalon.type(e))?e.$id?e:g(e,0,e):e});Dn.apply(this,[t,0].concat(c)),this._fire("add",t,n);break;case"del":var u=this._splice(t,n);this._fire("del",t,n)}a&&(e=a,t=i,n=o,s=2,a=0)}return this._fire("index",r),this.length!==l&&(this._.length=this.length),u}function N(e,t){for(var n={},r=0,a=t.length;a>r;r++){n[r]=e[r];var i=t[r];i in n?(e[r]=n[i],delete n[i]):e[r]=e[i]}}function M(e,t){t.oneTime||e&&avalon.Array.ensure(e,t)&&t.element&&(L(t,e),new Date-Vn>444&&H())}function S(e){if(e&&e.length){new Date-Vn>444&&"object"==typeof e[0]&&H();for(var t,n=qt.call(arguments,1),r=e.length;t=e[--r];){var a=t.element;if(a&&a.parentNode)try{var i=t.evaluator;if(t.$repeat)t.handler.apply(t,n);else if("$repeat"in t||!i)nn[t.type](t,t.vmodels);else if("on"!==t.type){var o=i.apply(0,t.args||[]);t.handler(o,a,t)}}catch(l){console.log(l)}}}}function j(e,t){return e.uuid||t||(e.uuid=++Rn),e.uuid}function L(e,t){var n=e.element;e.uuid||(e.uuid=1!==n.nodeType?e.type+(e.pos||0)+"-"+j(n.parentNode):e.name+"-"+j(n));var r=e.lists||(e.lists=[]);avalon.Array.ensure(r,t),t.$uuid=t.$uuid||Zt(),In[e.uuid]||(In[e.uuid]=1,In.push(e))}function H(e){if(!avalon.optimize){for(var t=In.length,n=t,r=[],a={},i={};e=In[--t];){var o=e.type;i[o]?i[o]++:(i[o]=1,r.push(o))}var l=!1;if(r.forEach(function(e){zn[e]!==i[e]&&(a[e]=1,l=!0)}),t=n,l)for(;e=In[--t];)if(null!==e.element){if(a[e.type]&&P(e.element)){In.splice(t,1),delete In[e.uuid];for(var s,c=e.lists,u=0;s=c[u++];)avalon.Array.remove(c,s),avalon.Array.remove(s,e);D(e)}}else In.splice(t,1);zn=i,Vn=new Date}}function D(e){delete In[e.uuid],e.element=null,e.rollback&&e.rollback();for(var t in e)e[t]=null}function P(e){try{{e.parentNode.nodeType}}catch(t){return!0}return e.ifRemove&&!Xt.contains(e.ifRemove)&&Nt===e.parentNode?(e.parentNode&&e.parentNode.removeChild(e),!0):e.msRetain?0:1===e.nodeType?!Xt.contains(e):!avalon.contains(Xt,e)}function F(e){var t=e.nodeName;return t.toLowerCase()===t&&e.scopeName&&""===e.outerText}function B(e){"url(#default#VML)"!==e.currentStyle.behavior&&(e.style.behavior="url(#default#VML)",e.style.display="inline-block",e.style.zoom=1)}function R(e){return e.replace(/([a-z\d])([A-Z]+)/g,"$1-$2").toLowerCase()}function I(e){return!e||e.indexOf("-")<0&&e.indexOf("_")<0?e:e.replace(/[-_][^-_]/g,function(e){return e.charAt(1).toUpperCase()})}function V(e){if(!("classList"in e)){e.classList={node:e};for(var t in Qn)e.classList[t.slice(1)]=Qn[t]}return e.classList}function z(e){try{if("object"==typeof e)return e;e="true"===e?!0:"false"===e?!1:"null"===e?null:+e+""===e?+e:Kn.test(e)?avalon.parseJSON(e):e}catch(t){}return e}function U(e){return e.window&&e.document?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}function q(e,t){if(e.offsetWidth<=0){if(vr.test(ar["@:get"](e,"display"))){var n={node:e};for(var r in dr)n[r]=e.style[r],e.style[r]=dr[r];t.push(n)}var a=e.parentNode;a&&1===a.nodeType&&q(a,t)}}function W(e){var t=e.tagName.toLowerCase();return"input"===t&&/checkbox|radio/.test(e.type)?"checked":t}function X(e,t,n,r){for(var a,i=[],o=" = "+n+".",l=e.length;a=e[--l];)t.hasOwnProperty(a)&&(i.push(a+o+a),r.vars.push(a),"duplex"===r.type&&(e.get=n+"."+a),e.splice(l,1));return i}function Y(e){for(var t=[],n={},r=0;r<e.length;r++){var a=e[r],i=a&&"string"==typeof a.$id?a.$id:a;n[i]||(n[i]=t.push(a))}return t}function G(e,t){return t=t.replace(Nr,"").replace(Mr,function(){return"],|"}).replace(Sr,function(e,t){return"["+yr(t)}).replace(jr,function(){return'"],["'}).replace(Lr,function(){return'",'})+"]","return this.filters.$filter("+e+", "+t+")"}function J(e,t,a){var i=a.type,o=a.filters||"",l=t.map(function(e){return String(e.$id).replace(Or,"$1")})+e+i+o,s=Er(e).concat(),c=[],u=[],f=[],p="";t=Y(t),a.vars=[];for(var d=0,v=t.length;v>d;d++)if(s.length){var h="vm"+At+"_"+d;u.push(h),f.push(t[d]),c.push.apply(c,X(s,t[d],h,a))}if(c.length||"duplex"!==i){"duplex"!==i&&(e.indexOf("||")>-1||e.indexOf("&&")>-1)&&a.vars.forEach(function(t){var n=new RegExp("\\b"+t+"(?:\\.\\w+|\\[\\w+\\])+","ig");e=e.replace(n,function(n,r){var a=n.charAt(t.length),i=e.slice(r+n.length),o=/^\s*\(/.test(i);if("."===a||"["===a||o){var l="var"+String(Math.random()).replace(/^0\./,"");if(o){var s=n.split(".");if(s.length>2){var u=s.pop();return c.push(l+" = "+s.join(".")),l+"."+u}return n}return c.push(l+" = "+n),l}return n})}),a.args=f,delete a.vars;var m=Ar.get(l);if(m)return void(a.evaluator=m);if(p=c.join(", "),p&&(p="var "+p),/\S/.test(o)){if(!/text|html/.test(a.type))throw Error("ms-"+a.type+"不支持过滤器");e="\nvar ret"+At+" = "+e+";\r\n",e+=G("ret"+At,o);try{m=Function.apply(r,u.concat("'use strict';\n"+p+e)),a.evaluator=Ar.put(l,function(){return m.apply(avalon,arguments)})}catch(g){n("debug: parse error,"+g.message)}return void(s=c=u=null)}if("duplex"===i){var y="'use strict';\nreturn function(vvv){\n "+p+";\n if(!arguments.length){\n return "+e+"\n }\n "+(_r.test(e)?e:s.get)+"= vvv;\n} ";try{m=Function.apply(r,u.concat(y)),a.evaluator=Ar.put(l,m)}catch(g){n("debug: parse error,"+g.message)}return void(s=c=u=null)}if("on"===i){-1===e.indexOf("(")?e+=".call(this, $event)":e=e.replace("(",".call(this,"),u.push("$event"),e="\nreturn "+e+";";var b=e.lastIndexOf("\nreturn"),x=e.slice(0,b),w=e.slice(b);e=x+"\n"+w}else e="\nreturn "+e+";";try{m=Function.apply(r,u.concat("'use strict';\n"+p+e)),a.evaluator=Ar.put(l,m)}catch(g){n("debug: parse error,"+g.message)}s=c=u=null}}function Z(e){var t=bn.test(e);if(t){var n=st(e);return 1===n.length?n[0].value:n.map(function(e){return e.expr?"("+e.value+")":yr(e.value)}).join(" + ")}return e}function Q(e,t,n,r){e=e||"",J(e,t,n),n.evaluator&&!r&&(n.handler=rn[n.handlerName||n.type],avalon.injectBinding(n))}function K(e,t,n){var r=setTimeout(function(){var a=e.innerHTML;clearTimeout(r),a===n?t():K(e,t,a)})}function et(e,t){var n=e.getAttribute("avalonctrl")||t.$id;e.setAttribute("avalonctrl",n),t.$events.expr=e.tagName+'[avalonctrl="'+n+'"]'}function tt(e,t){for(var n,r=0;n=e[r++];)n.vmodels=t,nn[n.type](n,t),n.evaluator&&n.element&&1===n.element.nodeType&&n.element.removeAttribute(n.name);e.length=0}function nt(e,t){return e.priority-t.priority}function rt(e,t,r){var a=!0;if(t.length){for(var i,o=Jr?Jr(e):e.attributes,l=[],s=[],c={},u={},f=0;i=o[f++];)if(i.specified&&(r=i.name.match(Br))){var p=r[1],d=r[2]||"",v=i.value,h=i.name;if(u[h])continue;if(u[h]=1,Ir[p]?(d=p,p="on"):Vr[p]&&("enabled"===p&&(n("warning!ms-enabled或ms-attr-enabled已经被废弃"),p="disabled",v="!("+v+")"),d=p,p="attr",h="ms-"+p+"-"+d,s.push([i.name,h,v])),c[h]=v,"function"==typeof nn[p]){var m=v.replace(Fr,""),g=v!==m,y={type:p,param:d,element:e,name:h,value:m,oneTime:g,uuid:h+"-"+j(e),priority:(Rr[p]||10*p.charCodeAt(0))+(Number(d.replace(/\D/g,""))||0)};if("html"===p||"text"===p){var b=lt(v);avalon.mix(y,b),y.filters=y.filters.replace(Zr,function(){return y.type="html",y.group=1,""})}else if("duplex"===p)var x=h;else"ms-if-loop"===h&&(y.priority+=100);l.push(y),"widget"===p&&(e.msData=e.msData||c)}}if(l.length){for(l.sort(nt),s.forEach(function(t){n("warning!请改用"+t[1]+"代替"+t[0]+"!"),e.removeAttribute(t[0]),e.setAttribute(t[1],t[2])}),x&&c["ms-attr-value"]&&!e.scopeName&&"text"===e.type&&n("warning!一个控件不能同时定义ms-attr-value与"+x),f=0;y=l[f];f++){if(p=y.type,zr.test(p))return tt(l.slice(0,f+1),t);a&&(a=!Ur.test(p))}tt(l,t)}}a&&!Hr[e.tagName]&&wn.test(e.innerHTML.replace(Kr,"<").replace(ea,">"))&&(Pr&&Pr(e),at(e,t))}function at(e,t){var n=avalon.slice(e.childNodes);it(n,t)}function it(e,t){for(var n,r=0;n=e[r++];)switch(n.nodeType){case 1:ot(n,t),n.msCallback&&(n.msCallback(),n.msCallback=void 0);break;case 3:bn.test(n.nodeValue)&&ct(n,t,r)}}function ot(e,t,r){var a=e.getAttribute("ms-skip");if(!e.getAttributeNode)return n("warning "+e.tagName+" no getAttributeNode method");var i=e.getAttributeNode("ms-important"),o=e.getAttributeNode("ms-controller");if("string"!=typeof a){if(r=i||o){var l=avalon.vmodels[r.value];if(!l)return;t=r===i?[l]:[l].concat(t);var s=r.name;e.removeAttribute(s),avalon(e).removeClass(s),et(e,l)}rt(e,t)}}function lt(e){if(e.indexOf("|")>0){var t=e.replace(ta,function(e){return Array(e.length+1).join("1")}),n=t.replace(Qr,"ᄢ㍄").indexOf("|");if(n>-1)return{filters:e.slice(n),value:e.slice(0,n),expr:!0}}return{value:e,filters:"",expr:!0}}function st(e){for(var t,n,r=[],a=0;;){if(n=e.indexOf(gn,a),-1===n)break;if(t=e.slice(a,n),t&&r.push({value:t,filters:"",expr:!1}),a=n+gn.length,n=e.indexOf(yn,a),-1===n)break;t=e.slice(a,n),t&&r.push(lt(t,a)),a=n+yn.length}return t=e.slice(a),t&&r.push({value:t,expr:!1,filters:""}),r}function ct(e,t,n){var r=[];if(tokens=st(e.data),tokens.length){for(var a=0;token=tokens[a++];){var i=_t.createTextNode(token.value);token.expr&&(token.value=token.value.replace(Fr,function(){return token.oneTime=!0,""}),token.type="text",token.element=i,token.filters=token.filters.replace(Zr,function(){return token.type="html",""}),token.pos=1e3*n+a,r.push(token)),Yt.appendChild(i)}e.parentNode.replaceChild(Yt,e),r.length&&tt(r,t)}}function ut(e,t,n){var r=e.templateCache&&e.templateCache[t];if(r){for(var a,i=_t.createDocumentFragment();a=r.firstChild;)i.appendChild(a);return i}return avalon.parseHTML(n)}function ft(e){return null==e?"":e}function pt(e,t,n){return t.param.replace(/\w+/g,function(r){var a=avalon.duplexHooks[r];a&&"function"==typeof a[n]&&(e=a[n](e,t))}),e}function dt(){for(var e=pa.length-1;e>=0;e--){var t=pa[e];t()===!1&&pa.splice(e,1)}pa.length||clearInterval(fa)}function vt(e,t,n,r){var a=e.template.cloneNode(!0),i=avalon.slice(a.childNodes);a.insertBefore(_t.createComment(e.signature),a.firstChild),t.appendChild(a);var o=[n].concat(e.vmodels),l={nodes:i,vmodels:o};r.push(l)}function ht(e){for(var t,n=[],r=e.element.parentNode.childNodes,a=0;t=r[a++];)if(t.nodeValue===e.signature)n.push(t);else if(t.nodeValue===e.signature+":end")break;return n}function mt(e,t,n){for(;;){var r=t.previousSibling;if(!r)break;if(r.parentNode.removeChild(r),n&&n.call(r),r===e)break}}function gt(){var e=g({$key:"",$outer:{},$host:{},$val:{get:function(){return this.$host[this.$key]},set:function(e){this.$host[this.$key]=e}}},{$val:1});return e.$id=Zt("$proxy$with"),e}function yt(e,t,n){e=e||ma.pop(),e?e.$reinitialize():e=gt();var r=n.$repeat;return e.$key=t,e.$host=r,e.$outer=n.$outer,r.$events?e.$events.$val=r.$events[t]:e.$events={},e}function bt(e){xt(e)}function xt(e){e.forEach(function(e){Ct(e,ga)}),e.length=0}function wt(e){var t={$host:[],$outer:{},$index:0,$first:!1,$last:!1,$remove:avalon.noop};t[e]={get:function(){var t=this.$events,n=t.$index;t.$index=t[e];try{return this.$host[this.$index]}finally{t.$index=n}},set:function(e){try{var t=this.$events,n=t.$index;t.$index=[],this.$host.set(this.$index,e)}finally{t.$index=n}}};var n={$last:1,$first:1,$index:1},r=g(t,n);return r.$id=Zt("$proxy$each"),r}function $t(e,t){for(var n,r=t.param||"el",a=0,i=ga.length;i>a;a++){var o=ga[a];o&&o.hasOwnProperty(r)&&(n=o,ga.splice(a,1))}n||(n=wt(r));var l=t.$repeat,s=l.length-1;return n.$index=e,n.$first=0===e,n.$last=e===s,n.$host=l,n.$outer=t.$outer,n.$remove=function(){return l.removeAt(n.$index)},n}function Ct(e,t){for(var n in e.$events){var r=e.$events[n];Array.isArray(r)&&(r.forEach(function(e){"object"==typeof e&&D(e)}),r.length=0)}e.$host=e.$outer={},t.unshift(e)>h.maxRepeatSize&&t.pop()}function kt(e,t){var n="_"+e;if(!kt[n]){var r=_t.createElement(e);Xt.appendChild(r),t=Wt?getComputedStyle(r,null).display:r.currentStyle.display,Xt.removeChild(r),kt[n]=t}return kt[n]}function Tt(e,t,n,r){e=(e+"").replace(/[^0-9+\-Ee.]/g,"");var a=isFinite(+e)?+e:0,i=isFinite(+t)?Math.abs(t):3,o=r||",",l=n||".",s="",c=function(e,t){var n=Math.pow(10,t);return""+(Math.round(e*n)/n).toFixed(t)};return s=(i?c(a,i):""+Math.round(a)).split("."),s[0].length>3&&(s[0]=s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g,o)),(s[1]||"").length<i&&(s[1]=s[1]||"",s[1]+=new Array(i-s[1].length+1).join("0")),s.join(l)}function Et(){try{Xt.doScroll("left"),Oa()}catch(e){setTimeout(Et)}}var At=new Date-0,_t=e.document,Ot=_t.getElementsByTagName("head")[0],Nt=Ot.insertBefore(document.createElement("avalon"),Ot.firstChild);Nt.innerHTML="X<style id='avalonStyle'>.avalonHide{ display: none!important }</style>",Nt.setAttribute("ms-skip","1"),Nt.className="avalonHide";var Mt,St=/\[native code\]/,jt="$"+At,Lt=e.require,Ht=e.define,Dt=!1,Pt=/[^, ]+/g,Ft=/^(?:object|array)$/,Bt=/^\[object SVG\w*Element\]$/,Rt=/^\[object (?:Window|DOMWindow|global)\]$/,It=Object.prototype,Vt=It.hasOwnProperty,zt=It.toString,Ut=Array.prototype,qt=Ut.slice,Wt=e.dispatchEvent,Xt=_t.documentElement,Yt=_t.createDocumentFragment(),Gt=_t.createElement("div"),Jt={};"Boolean Number String Function Array Date RegExp Object Error".replace(Pt,function(e){Jt["[object "+e+"]"]=e.toLowerCase()});var Zt=function(e){return e=e||"avalon",String(Math.random()+Math.random()).replace(/\d\.\d{4}/,e)},Qt=o();avalon=function(e){return new avalon.init(e)},avalon.profile=function(){e.console&&avalon.config.profile&&Function.apply.call(console.log,console,arguments)},avalon.nextTick=new function(){function t(){for(var e=a.length,t=0;e>t;t++)a[t]();a=a.slice(e)}var n=e.setImmediate,r=e.MutationObserver;if(n)return n.bind(e);var a=[];if(r){var i=document.createTextNode("avalon");return new r(t).observe(i,{characterData:!0}),function(e){a.push(e),i.data=Math.random()}}return e.VBArray?function(e){a.push(e);var n=_t.createElement("script");n.onreadystatechange=function(){t(),n.onreadystatechange=null,Ot.removeChild(n),n=null},Ot.appendChild(n)}:function(e){setTimeout(e,4)}},avalon.init=function(e){this[0]=this.element=e},avalon.fn=avalon.prototype=avalon.init.prototype,avalon.type=function(e){return null==e?String(e):"object"==typeof e||"function"==typeof e?Jt[zt.call(e)]||"object":typeof e};var Kt="object"==typeof alert?function(e){try{return/^\s*\bfunction\b/.test(e+"")}catch(t){return!1}}:function(e){return"[object Function]"===zt.call(e)};avalon.isFunction=Kt,avalon.isWindow=function(e){return e?e==e.document&&e.document!=e:!1},l(e)&&(avalon.isWindow=l);var en;for(en in avalon({}))break;var tn="0"!==en;avalon.isPlainObject=function(e,t){if(!e||"object"!==avalon.type(e)||e.nodeType||avalon.isWindow(e))return!1;try{if(e.constructor&&!Vt.call(e,"constructor")&&!Vt.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}if(tn)for(t in e)return Vt.call(e,t);for(t in e);return void 0===t||Vt.call(e,t)},St.test(Object.getPrototypeOf)&&(avalon.isPlainObject=function(e){return"[object Object]"===zt.call(e)&&Object.getPrototypeOf(e)===It}),avalon.mix=avalon.fn.mix=function(){var e,t,n,r,a,i,o=arguments[0]||{},l=1,s=arguments.length,c=!1;for("boolean"==typeof o&&(c=o,o=arguments[1]||{},l++),"object"==typeof o||Kt(o)||(o={}),l===s&&(o=this,l--);s>l;l++)if(null!=(e=arguments[l]))for(t in e){n=o[t];try{r=e[t]}catch(u){continue}o!==r&&(c&&r&&(avalon.isPlainObject(r)||(a=Array.isArray(r)))?(a?(a=!1,i=n&&Array.isArray(n)?n:[]):i=n&&avalon.isPlainObject(n)?n:{},o[t]=avalon.mix(c,i,r)):void 0!==r&&(o[t]=r))}return o},avalon.mix({rword:Pt,subscribers:jt,version:1.46,ui:{},log:n,slice:Wt?function(e,t,n){return qt.call(e,t,n)}:function(e,t,n){var r=[],a=e.length;if(void 0===n&&(n=a),"number"==typeof n&&isFinite(n)){t=s(t,a),n=s(n,a);for(var i=t;n>i;++i)r[i-t]=e[i]}return r},noop:r,error:function(e,t){throw(t||Error)(e)},oneObject:i,range:function(e,t,n){n||(n=1),null==t&&(t=e||0,e=0);for(var r=-1,a=Math.max(0,Math.ceil((t-e)/n)),i=new Array(a);++r<a;)i[r]=e,e+=n;return i},eventHooks:[],bind:function(e,t,n,r){var a=avalon.eventHooks,i=a[t];"object"==typeof i&&(t=i.type,i.deel&&(n=i.deel(e,t,n,r)));var o=Wt?n:function(t){n.call(e,v(t))};return Wt?e.addEventListener(t,o,!!r):e.attachEvent("on"+t,o),o},unbind:function(e,t,n,a){var i=avalon.eventHooks,o=i[t],l=n||r;"object"==typeof o&&(t=o.type,o.deel&&(n=o.deel(e,t,n,!1))),Wt?e.removeEventListener(t,l,!!a):e.detachEvent("on"+t,l)},css:function(e,t,n){e instanceof avalon&&(e=e[0]);var r,a=/[_-]/.test(t)?I(t):t;if(t=avalon.cssName(a)||a,void 0===n||"boolean"==typeof n){r=ar[a+":get"]||ar["@:get"],"background"===t&&(t="backgroundColor");var i=r(e,t);return n===!0?parseFloat(i)||0:i}if(""===n)e.style[t]="";else{if(null==n||n!==n)return;isFinite(n)&&!avalon.cssNumber[a]&&(n+="px"),r=ar[a+":set"]||ar["@:set"],r(e,t,n)}},each:function(e,t){if(e){var n=0;if(c(e))for(var r=e.length;r>n&&t(n,e[n])!==!1;n++);else for(n in e)if(e.hasOwnProperty(n)&&t(n,e[n])===!1)break}},getWidgetData:function(e,t){var n=avalon(e).data(),r={};for(var a in n)0===a.indexOf(t)&&(r[a.replace(t,"").replace(/\w/,function(e){return e.toLowerCase()})]=n[a]);return r},Array:{ensure:function(e,t){return-1===e.indexOf(t)?e.push(t):void 0},removeAt:function(e,t){return!!e.splice(t,1).length},remove:function(e,t){var n=e.indexOf(t);return~n?avalon.Array.removeAt(e,n):!1}}});var nn=avalon.bindingHandlers={},rn=avalon.bindingExecutors={},an=new function(){function e(e){this.size=0,this.limit=e,this.head=this.tail=void 0,this._keymap={}}var t=e.prototype;return t.put=function(e,t){var n={key:e,value:t};return this._keymap[e]=n,this.tail?(this.tail.newer=n,n.older=this.tail):this.head=n,this.tail=n,this.size===this.limit?this.shift():this.size++,t},t.shift=function(){var e=this.head;e&&(this.head=this.head.newer,this.head.older=e.newer=e.older=this._keymap[e.key]=void 0,delete this._keymap[e.key])},t.get=function(e){var t=this._keymap[e];if(void 0!==t)return t===this.tail?t.value:(t.newer&&(t===this.head&&(this.head=t.newer),t.newer.older=t.older),t.older&&(t.older.newer=t.newer),t.newer=void 0,t.older=this.tail,this.tail&&(this.tail.newer=t),this.tail=t,t.value)},e};if(!"司徒正美".trim){var on=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;String.prototype.trim=function(){return this.replace(on,"")}}var ln=!{toString:null}.propertyIsEnumerable("toString"),sn=function(){}.propertyIsEnumerable("prototype"),cn=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],un=cn.length;if(Object.keys||(Object.keys=function(e){var t=[],n=sn&&"function"==typeof e;if("string"==typeof e||e&&e.callee)for(var r=0;r<e.length;++r)t.push(String(r));else for(var a in e)n&&"prototype"===a||!Vt.call(e,a)||t.push(String(a));if(ln)for(var i=e.constructor,o=i&&i.prototype===e,l=0;un>l;l++){var s=cn[l];o&&"constructor"===s||!Vt.call(e,s)||t.push(s)}return t}),Array.isArray||(Array.isArray=function(e){return"[object Array]"===zt.call(e)}),r.bind||(Function.prototype.bind=function(e){if(arguments.length<2&&void 0===e)return this;var t=this,n=arguments;return function(){var r,a=[];for(r=1;r<n.length;r++)a.push(n[r]);for(r=0;r<arguments.length;r++)a.push(arguments[r]);return t.apply(e,a)}}),St.test([].map)||avalon.mix(Ut,{indexOf:function(e,t){var n=this.length,r=~~t;for(0>r&&(r+=n);n>r;r++)if(this[r]===e)return r;return-1},lastIndexOf:function(e,t){var n=this.length,r=null==t?n-1:t;for(0>r&&(r=Math.max(0,n+r));r>=0;r--)if(this[r]===e)return r;return-1},forEach:u("","_",""),filter:u("r=[],j=0,","if(_)r[j++]=this[i]","return r"),map:u("r=[],","r[i]=_","return r"),some:u("","if(_)return true","return false"),every:u("","if(!_)return false","return true")}),avalon.contains=f,_t.contains||(_t.contains=function(e){return f(_t,e)}),e.SVGElement){_t.createTextNode("x").contains||(Node.prototype.contains=function(e){return!!(16&this.compareDocumentPosition(e))});var fn="http://www.w3.org/2000/svg",pn=_t.createElementNS(fn,"svg");pn.innerHTML='<circle cx="50" cy="50" r="40" fill="red" />',Bt.test(pn.firstChild)||Object.defineProperties(SVGElement.prototype,{outerHTML:{enumerable:!0,configurable:!0,get:p,set:function(e){var t=this.tagName.toLowerCase(),n=this.parentNode,r=avalon.parseHTML(e);if("svg"===t)n.insertBefore(r,this);else{var a=_t.createDocumentFragment();d(r,a),n.insertBefore(a,this)}n.removeChild(this)}},innerHTML:{enumerable:!0,configurable:!0,get:function(){var e=this.outerHTML,t=new RegExp("<"+this.nodeName+'\\b(?:(["\'])[^"]*?(\\1)|[^>])*>',"i"),n=new RegExp("</"+this.nodeName+">$","i");return e.replace(t,"").replace(n,"")},set:function(e){if(avalon.clearHTML){avalon.clearHTML(this);var t=avalon.parseHTML(e);d(t,this)}}}})}!Xt.outerHTML&&e.HTMLElement&&HTMLElement.prototype.__defineGetter__("outerHTML",p);var dn=/^(?:mouse|contextmenu|drag)|click/,vn=avalon.eventHooks;if("onmouseenter"in Xt||avalon.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){vn[e]={type:t,deel:function(t,n,r){return function(n){var a=n.relatedTarget;return a&&(a===t||16&t.compareDocumentPosition(a))?void 0:(delete n.type,n.type=e,r.call(t,n))}}}}),avalon.each({AnimationEvent:"animationend",WebKitAnimationEvent:"webkitAnimationEnd"},function(t,n){e[t]&&!vn.animationend&&(vn.animationend={type:n})}),"oninput"in _t.createElement("input")||(vn.input={type:"propertychange",deel:function(e,t,n){return function(t){return"value"===t.propertyName?(t.type="input",n.call(e,t)):void 0}}}),void 0===_t.onmousewheel){var hn=void 0!==_t.onwheel?"wheel":"DOMMouseScroll",mn="wheel"===hn?"deltaY":"detail";vn.mousewheel={type:hn,deel:function(e,t,n){return function(t){t.wheelDeltaY=t.wheelDelta=t[mn]>0?-120:120,t.wheelDeltaX=0,Object.defineProperty&&Object.defineProperty(t,"type",{value:"mousewheel"}),n.call(e,t)}}}}var gn,yn,bn,xn,wn,$n=/[-.*+?^${}()|[\]\/\\]/g,Cn={loader:function(t){var n=Mt&&t;e.require=n?Mt:Lt,e.define=n?Mt.define:Ht},interpolate:function(e){if(gn=e[0],yn=e[1],gn===yn)throw new SyntaxError("openTag===closeTag");var t=gn+"test"+yn;if(Gt.innerHTML=t,Gt.innerHTML!==t&&Gt.innerHTML.indexOf("&lt;")>-1)throw new SyntaxError("此定界符不合法");h.openTag=gn,h.closeTag=yn,Gt.innerHTML="";var n=m(gn),r=m(yn);bn=new RegExp(n+"(.*?)"+r),xn=new RegExp(n+"(.*?)"+r,"g"),wn=new RegExp(n+".*?"+r+"|\\sms-")}};h.debug=!0,h.plugins=Cn,h.plugins.interpolate(["{{","}}"]),h.paths={},h.shim={},h.maxRepeatSize=100,avalon.config=h;var kn=/(\w+)\[(avalonctrl)="(\S+)"\]/,Tn=_t.querySelectorAll?function(e){return _t.querySelectorAll(e)}:function(e){for(var t,n=e.match(kn),r=_t.getElementsByTagName(n[1]),a=[],i=0;t=r[i++];)t.getAttribute(n[2])===n[3]&&a.push(t);return a},En={$watch:function(e,t){if("function"==typeof t){var n=this.$events[e];n?n.push(t):this.$events[e]=[t]}else this.$events=this.$watch.backup;return this},$unwatch:function(e,t){var n=arguments.length;if(0===n)this.$watch.backup=this.$events,this.$events={};else if(1===n)this.$events[e]=[];else for(var r=this.$events[e]||[],a=r.length;~--a<0;)if(r[a]===t)return r.splice(a,1);return this},$fire:function(e){var t,n,r,a;/^(\w+)!(\S+)$/.test(e)&&(t=RegExp.$1,e=RegExp.$2);var i=this.$events;if(i){var o=qt.call(arguments,1),l=[e].concat(o);if("all"===t)for(n in avalon.vmodels)r=avalon.vmodels[n],r!==this&&r.$fire.apply(r,l);else if("up"===t||"down"===t){var s=i.expr?Tn(i.expr):[];if(0===s.length)return;for(n in avalon.vmodels)if(r=avalon.vmodels[n],r!==this&&r.$events.expr){var c=Tn(r.$events.expr);if(0===c.length)continue;Ut.forEach.call(c,function(e){Ut.forEach.call(s,function(n){var a="down"===t?n.contains(e):e.contains(n);a&&(e._avalon=r)})})}var u=_t.getElementsByTagName("*"),f=[];for(Ut.forEach.call(u,function(e){e._avalon&&(f.push(e._avalon),e._avalon="",e.removeAttribute("_avalon"))}),"up"===t&&f.reverse(),n=0;(a=f[n++])&&a.$fire.apply(a,l)!==!1;);}else{var p=i[e]||[],d=i.$all||[];for(n=0;a=p[n++];)Kt(a)&&a.apply(this,o);for(n=0;a=d[n++];)Kt(a)&&a.apply(this,arguments)}}}},An=avalon.vmodels={};avalon.define=function(e,t){var a=e.$id||e;if(a||n("warning: vm必须指定$id"),An[a]&&n("warning: "+a+" 已经存在于avalon.vmodels中"),"object"==typeof e)var i=g(e);else{var o={$watch:r};t(o),i=g(o),Dt=!0,t(i),Dt=!1}return i.$id=a,An[a]=i};var _n=String("$id,$watch,$unwatch,$fire,$events,$model,$skipArray,$reinitialize").match(Pt),On=Object.defineProperty,Nn=!0;try{On({},"_",{value:"x"});var Mn=Object.defineProperties}catch(Sn){Nn=!1}var jn=Object.is||function(e,t){return 0===e&&0===t?1/e===1/t:e!==e?t!==t:e===t},Ln=Wt?function(e){var t={};for(var n in e)t[n]={get:e[n],set:e[n],enumerable:!0,configurable:!0};return t}:function(e){return e};if(!Nn&&("__defineGetter__"in avalon&&(On=function(e,t,n){return"value"in n&&(e[t]=n.value),"get"in n&&e.__defineGetter__(t,n.get),"set"in n&&e.__defineSetter__(t,n.set),e},Mn=function(e,t){for(var n in t)t.hasOwnProperty(n)&&On(e,n,t[n]);return e}),Qt)){var Hn={};e.execScript(["Function parseVB(code)"," ExecuteGlobal(code)","End Function"].join("\n"),"VBScript"),Mn=function(t,n,r){var a=[];a.push("\r\n Private [__data__], [__proxy__]"," Public Default Function [__const__](d"+At+", p"+At+")"," Set [__data__] = d"+At+": set [__proxy__] = p"+At," Set [__const__] = Me"," End Function");for(t in r)n.hasOwnProperty(t)||a.push(" Public ["+t+"]");_n.forEach(function(e){n.hasOwnProperty(e)||a.push(" Public ["+e+"]")}),a.push(" Public [hasOwnProperty]");for(t in n)a.push(" Public Property Let ["+t+"](val"+At+")",' Call [__proxy__](Me,[__data__], "'+t+'", val'+At+")"," End Property"," Public Property Set ["+t+"](val"+At+")",' Call [__proxy__](Me,[__data__], "'+t+'", val'+At+")"," End Property"," Public Property Get ["+t+"]"," On Error Resume Next"," Set["+t+'] = [__proxy__](Me,[__data__],"'+t+'")'," If Err.Number <> 0 Then"," ["+t+'] = [__proxy__](Me,[__data__],"'+t+'")'," End If"," On Error Goto 0"," End Property");a.push("End Class");var i=a.join("\r\n"),o=Hn[i];o||(o=Zt("VBClass"),e.parseVB("Class "+o+i),e.parseVB(["Function "+o+"Factory(a, b)"," Dim o"," Set o = (New "+o+")(a, b)"," Set "+o+"Factory = o","End Function"].join("\r\n")),Hn[i]=o);var l=e[o+"Factory"](n,A);return l}}var Dn=Ut.splice,Pn={_splice:Dn,_fire:function(e,t,n){S(this.$events[jt],e,t,n)},size:function(){return this._.length},pushArray:function(e){var t=e.length,n=this.length;return t&&(Ut.push.apply(this.$model,e),O.call(this,"add",n,t,Math.max(0,n-1))),t+n},push:function(){var e,t=[],n=arguments.length;for(e=0;n>e;e++)t[e]=arguments[e];return this.pushArray(t)},unshift:function(){var e=arguments.length,t=this.length;return e&&(Ut.unshift.apply(this.$model,arguments),O.call(this,"add",0,e,0)),e+t},shift:function(){if(this.length){var e=this.$model.shift();return O.call(this,"del",0,1,0),e}},pop:function(){var e=this.length;if(e){var t=this.$model.pop();return O.call(this,"del",e-1,1,Math.max(0,e-2)),t}},splice:function(e){var t,n=arguments.length,r=[],a=Dn.apply(this.$model,arguments);
2
- return a.length&&(r.push("del",e,a.length,0),t=!0),n>2&&(t?r.splice(3,1,0,"add",e,n-2):r.push("add",e,n-2,0),t=!0),t?O.apply(this,r):[]},contains:function(e){return-1!==this.indexOf(e)},remove:function(e){return this.removeAt(this.indexOf(e))},removeAt:function(e){return e>=0?(this.$model.splice(e,1),O.call(this,"del",e,1,0)):[]},clear:function(){return this.$model.length=this.length=this._.length=0,this._fire("clear",0),this},removeAll:function(e){if(Array.isArray(e))for(var t=this.length-1;t>=0;t--)-1!==e.indexOf(this[t])&&this.removeAt(t);else if("function"==typeof e)for(t=this.length-1;t>=0;t--){var n=this[t];e(n,t)&&this.removeAt(t)}else this.clear()},ensure:function(e){return this.contains(e)||this.push(e),this},set:function(e,t){if(e<this.length&&e>-1){var n=avalon.type(t);t&&t.$model&&(t=t.$model);var r=this[e];if("object"===n)for(var a in t)r.hasOwnProperty(a)&&(r[a]=t[a]);else"array"===n?r.clear().push.apply(r,t):r!==t&&(this[e]=t,this.$model[e]=t,this._fire("set",e,t))}return this}};"sort,reverse".replace(Pt,function(e){Pn[e]=function(){var t,n=this.$model,r=n.concat(),a=Math.random(),i=[];Ut[e].apply(n,arguments);for(var o=0,l=r.length;l>o;o++){var s=n[o],c=r[o];if(jn(s,c))i.push(o);else{var u=r.indexOf(s);i.push(u),r[u]=a,t=!0}}return t&&(N(this,i),this._fire("move",i),this._fire("index",0)),this}});var Fn=function(){var e,t=[];return{begin:function(n){t.push(e),e=n},end:function(){e=t.pop()},collectDependency:function(t,n){e&&e.callback(t,n)}}}(),Bn=/^(duplex|on)$/;avalon.injectBinding=function(e){var t=e.evaluator;if(t){Fn.begin({callback:function(t,n){M(t.$events[n._name],e)}});try{var r=Bn.test(e.type)?e:t.apply(0,e.args);void 0===r&&delete e.evaluator,e.handler(r,e.element,e)}catch(a){n("warning:exception throwed in [avalon.injectBinding] ",a),delete e.evaluator;var i=e.element;if(3===i.nodeType){var o=i.parentNode;h.commentInterpolate?o.replaceChild(_t.createComment(e.value),i):i.data=gn+(e.oneTime?"::":"")+e.value+yn}}finally{Fn.end()}}};var Rn=0,In=avalon.$$subscribers=[],Vn=new Date,zn={},Un={area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],col:[2,"<table><colgroup>","</colgroup></table>"],legend:[1,"<fieldset>","</fieldset>"],option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],tr:[2,"<table>","</table>"],td:[3,"<table><tr>","</tr></table>"],g:[1,'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">',"</svg>"],_default:Wt?[0,"",""]:[1,"X<div>","</div>"]};Un.th=Un.td,Un.optgroup=Un.option,Un.tbody=Un.tfoot=Un.colgroup=Un.caption=Un.thead,String("circle,defs,ellipse,image,line,path,polygon,polyline,rect,symbol,text,use").replace(Pt,function(e){Un[e]=Un.g});var qn=/<([\w:]+)/,Wn=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,Xn=Wt?/[^\d\D]/:/(<(?:script|link|style|meta|noscript))/gi,Yn=i(["","text/javascript","text/ecmascript","application/ecmascript","application/javascript"]),Gn=/<(?:tb|td|tf|th|tr|col|opt|leg|cap|area)/,Jn=_t.createElement("script"),Zn=/<|&#?\w+;/;avalon.parseHTML=function(e){var t=Yt.cloneNode(!1);if("string"!=typeof e)return t;if(!Zn.test(e))return t.appendChild(_t.createTextNode(e)),t;e=e.replace(Wn,"<$1></$2>").trim();var n,r,a=(qn.exec(e)||["",""])[1].toLowerCase(),i=Un[a]||Un._default,o=Gt;Wt||(e=e.replace(Xn,"<br class=msNoScope>$1")),o.innerHTML=i[1]+e+i[2];var l=o.getElementsByTagName("script");if(l.length)for(var s,c=0;s=l[c++];)Yn[s.type]&&(r=Jn.cloneNode(!1),Ut.forEach.call(s.attributes,function(e){e&&e.specified&&(r[e.name]=e.value,r.setAttribute(e.name,e.value))}),r.text=s.text,s.parentNode.replaceChild(r,s));if(!Wt){var u="X<div>"===i[1]?o.lastChild.firstChild:o.lastChild;if(u&&"TABLE"===u.tagName&&"tbody"!==a)for(l=u.childNodes,c=0;s=l[c++];)if("TBODY"===s.tagName&&!s.innerHTML){u.removeChild(s);break}l=o.getElementsByTagName("br");for(var f=l.length;s=l[--f];)"msNoScope"===s.className&&s.parentNode.removeChild(s);for(l=o.all,c=0;s=l[c++];)F(s)&&B(s)}for(c=i[0];c--;o=o.lastChild);for(;n=o.firstChild;)t.appendChild(n);return t},avalon.innerHTML=function(e,t){if(!Wt&&!Xn.test(t)&&!Gn.test(t))try{return void(e.innerHTML=t)}catch(n){}var r=this.parseHTML(t);this.clearHTML(e).appendChild(r)},avalon.clearHTML=function(e){for(e.textContent="";e.firstChild;)e.removeChild(e.firstChild);return e};var Qn={_toString:function(){var e=this.node,t=e.className,n="string"==typeof t?t:t.baseVal;return n.split(/\s+/).join(" ")},_contains:function(e){return(" "+this+" ").indexOf(" "+e+" ")>-1},_add:function(e){this.contains(e)||this._set(this+" "+e)},_remove:function(e){this._set((" "+this+" ").replace(" "+e+" "," "))},__set:function(e){e=e.trim();var t=this.node;Bt.test(t)?t.setAttribute("class",e):t.className=e}};"add,remove".replace(Pt,function(e){avalon.fn[e+"Class"]=function(t){var n=this[0];return t&&"string"==typeof t&&n&&1===n.nodeType&&t.replace(/\S+/g,function(t){V(n)[e](t)}),this}}),avalon.fn.mix({hasClass:function(e){var t=this[0]||{};return 1===t.nodeType&&V(t).contains(e)},toggleClass:function(e,t){for(var n,r=0,a=String(e).split(/\s+/),i="boolean"==typeof t;n=a[r++];){var o=i?t:!this.hasClass(n);this[o?"addClass":"removeClass"](n)}return this},attr:function(e,t){return 2===arguments.length?(this[0].setAttribute(e,t),this):this[0].getAttribute(e)},data:function(e,t){switch(e="data-"+R(e||""),arguments.length){case 2:return this.attr(e,t),this;case 1:var n=this.attr(e);return z(n);case 0:var r={};return Ut.forEach.call(this[0].attributes,function(t){t&&(e=t.name,e.indexOf("data-")||(e=I(e.slice(5)),r[e]=z(t.value)))}),r}},removeData:function(e){return e="data-"+R(e),this[0].removeAttribute(e),this},css:function(e,t){if(avalon.isPlainObject(e))for(var n in e)avalon.css(this,n,e[n]);else var r=avalon.css(this,e,t);return void 0!==r?r:this},position:function(){var e,t,n=this[0],r={top:0,left:0};if(n)return"fixed"===this.css("position")?t=n.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),"HTML"!==e[0].tagName&&(r=e.offset()),r.top+=avalon.css(e[0],"borderTopWidth",!0),r.left+=avalon.css(e[0],"borderLeftWidth",!0),r.top-=e.scrollTop(),r.left-=e.scrollLeft()),{top:t.top-r.top-avalon.css(n,"marginTop",!0),left:t.left-r.left-avalon.css(n,"marginLeft",!0)}},offsetParent:function(){for(var e=this[0].offsetParent;e&&"static"===avalon.css(e,"position");)e=e.offsetParent;return avalon(e||Xt)},bind:function(e,t,n){return this[0]?avalon.bind(this[0],e,t,n):void 0},unbind:function(e,t,n){return this[0]&&avalon.unbind(this[0],e,t,n),this},val:function(e){var t=this[0];if(t&&1===t.nodeType){var n=0===arguments.length,r=n?":get":":set",a=mr[W(t)+r];if(a)var i=a(t,e);else{if(n)return(t.value||"").replace(/\r/g,"");t.value=e}}return n?i:this}});var Kn=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,er=/^[\],:{}\s]*$/,tr=/(?:^|:|,)(?:\s*\[)+/g,nr=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,rr=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g;avalon.parseJSON=e.JSON?JSON.parse:function(e){if("string"==typeof e){if(e=e.trim(),e&&er.test(e.replace(nr,"@").replace(rr,"]").replace(tr,"")))return new Function("return "+e)();avalon.error("Invalid JSON: "+e)}return e},avalon.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){avalon.fn[e]=function(n){var r=this[0]||{},a=U(r),i="scrollTop"===e;return arguments.length?void(a?a.scrollTo(i?avalon(a).scrollLeft():n,i?n:avalon(a).scrollTop()):r[e]=n):a?t in a?a[t]:Xt[e]:r[e]}});var ar=avalon.cssHooks={},ir=["","-webkit-","-o-","-moz-","-ms-"],or={"float":Wt?"cssFloat":"styleFloat"};if(avalon.cssNumber=i("animationIterationCount,columnCount,order,flex,flexGrow,flexShrink,fillOpacity,fontWeight,lineHeight,opacity,orphans,widows,zIndex,zoom"),avalon.cssName=function(e,t,n){if(or[e])return or[e];t=t||Xt.style;for(var r=0,a=ir.length;a>r;r++)if(n=I(ir[r]+e),n in t)return or[e]=n;return null},ar["@:set"]=function(e,t,n){try{e.style[t]=n}catch(r){}},e.getComputedStyle)ar["@:get"]=function(e,t){if(!e||!e.style)throw new Error("getComputedStyle要求传入一个节点 "+e);var n,r=getComputedStyle(e,null);return r&&(n="filter"===t?r.getPropertyValue(t):r[t],""===n&&(n=e.style[t])),n},ar["opacity:get"]=function(e){var t=ar["@:get"](e,"opacity");return""===t?"1":t};else{var lr=/^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,sr=/^(top|right|bottom|left)$/,cr=/alpha\([^)]*\)/i,ur=!!e.XDomainRequest,fr="DXImageTransform.Microsoft.Alpha",pr={thin:ur?"1px":"2px",medium:ur?"3px":"4px",thick:ur?"5px":"6px"};ar["@:get"]=function(e,t){var n=e.currentStyle,r=n[t];if(lr.test(r)&&!sr.test(r)){var a=e.style,i=a.left,o=e.runtimeStyle.left;e.runtimeStyle.left=n.left,a.left="fontSize"===t?"1em":r||0,r=a.pixelLeft+"px",a.left=i,e.runtimeStyle.left=o}return"medium"===r&&(t=t.replace("Width","Style"),"none"===n[t]&&(r="0px")),""===r?"auto":pr[r]||r},ar["opacity:set"]=function(e,t,n){var r=e.style,a=isFinite(n)&&1>=n?"alpha(opacity="+100*n+")":"",i=r.filter||"";r.zoom=1,r.filter=(cr.test(i)?i.replace(cr,a):i+" "+a).trim(),r.filter||r.removeAttribute("filter")},ar["opacity:get"]=function(e){var t=e.filters.alpha||e.filters[fr],n=t&&t.enabled?t.opacity:100;return n/100+""}}"top,left".replace(Pt,function(e){ar[e+":get"]=function(t){var n=ar["@:get"](t,e);return/px$/.test(n)?n:avalon(t).position()[e]+"px"}});var dr={position:"absolute",visibility:"hidden",display:"block"},vr=/^(none|table(?!-c[ea]).+)/;"Width,Height".replace(Pt,function(e){var t=e.toLowerCase(),n="client"+e,r="scroll"+e,a="offset"+e;ar[t+":get"]=function(t,n,r){var i=-4;"number"==typeof r&&(i=r),n="Width"===e?["Left","Right"]:["Top","Bottom"];var o=t[a];return 2===i?o+avalon.css(t,"margin"+n[0],!0)+avalon.css(t,"margin"+n[1],!0):(0>i&&(o=o-avalon.css(t,"border"+n[0]+"Width",!0)-avalon.css(t,"border"+n[1]+"Width",!0)),-4===i&&(o=o-avalon.css(t,"padding"+n[0],!0)-avalon.css(t,"padding"+n[1],!0)),o)},ar[t+"&get"]=function(e){var n=[];q(e,n);for(var r,a=ar[t+":get"](e),i=0;r=n[i++];){e=r.node;for(var o in r)"string"==typeof r[o]&&(e.style[o]=r[o])}return a},avalon.fn[t]=function(i){var o=this[0];if(0===arguments.length){if(o.setTimeout)return o["inner"+e]||o.document.documentElement[n];if(9===o.nodeType){var l=o.documentElement;return Math.max(o.body[r],l[r],o.body[a],l[a],l[n])}return ar[t+"&get"](o)}return this.css(t,i)},avalon.fn["inner"+e]=function(){return ar[t+":get"](this[0],void 0,-2)},avalon.fn["outer"+e]=function(e){return ar[t+":get"](this[0],void 0,e===!0?2:0)}}),avalon.fn.offset=function(){var e=this[0],t={left:0,top:0};if(!e||!e.tagName||!e.ownerDocument)return t;var n=e.ownerDocument,r=n.body,a=n.documentElement,i=n.defaultView||n.parentWindow;if(!avalon.contains(a,e))return t;e.getBoundingClientRect&&(t=e.getBoundingClientRect());var o=a.clientTop||r.clientTop,l=a.clientLeft||r.clientLeft,s=Math.max(i.pageYOffset||0,a.scrollTop,r.scrollTop),c=Math.max(i.pageXOffset||0,a.scrollLeft,r.scrollLeft);return{top:t.top+s-o,left:t.left+c-l}};var hr=/^<option(?:\s+\w+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+))?)*\s+value[\s=]/i,mr={"option:get":Qt?function(e){return hr.test(e.outerHTML)?e.value:e.text.trim()}:function(e){return e.value},"select:get":function(e,t){for(var n,r=e.options,a=e.selectedIndex,i=mr["option:get"],o="select-one"===e.type||0>a,l=o?null:[],s=o?a+1:r.length,c=0>a?s:o?a:0;s>c;c++)if(n=r[c],(n.selected||c===a)&&!n.disabled){if(t=i(n),o)return t;l.push(t)}return l},"select:set":function(e,t,n){t=[].concat(t);for(var r,a=mr["option:get"],i=0;r=e.options[i++];)(r.selected=t.indexOf(a(r))>-1)&&(n=!0);n||(e.selectedIndex=-1)}},gr={"\b":"\\b"," ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},yr=e.JSON&&JSON.stringify||function(e){return'"'+e.replace(/[\\\"\x00-\x1f]/g,function(e){var t=gr[e];return"string"==typeof t?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"'},br=["break,case,catch,continue,debugger,default,delete,do,else,false","finally,for,function,if,in,instanceof,new,null,return,switch,this","throw,true,try,typeof,var,void,while,with","abstract,boolean,byte,char,class,const,double,enum,export,extends","final,float,goto,implements,import,int,interface,long,native","package,private,protected,public,short,static,super,synchronized","throws,transient,volatile","arguments,let,yield,undefined"].join(","),xr=/\/\*[\w\W]*?\*\/|\/\/[^\n]*\n|\/\/[^\n]*$|"(?:[^"\\]|\\[\w\W])*"|'(?:[^'\\]|\\[\w\W])*'|[\s\t\n]*\.[\s\t\n]*[$\w\.]+/g,wr=/[^\w$]+/g,$r=new RegExp(["\\b"+br.replace(/,/g,"\\b|\\b")+"\\b"].join("|"),"g"),Cr=/\b\d[^,]*/g,kr=/^,+|,+$/g,Tr=new an(512),Er=function(e){var t=","+e.trim(),n=Tr.get(t);if(n)return n;var r=e.replace(xr,"").replace(wr,",").replace($r,"").replace(Cr,"").replace(kr,"").split(/^$|,+/);return Tr.put(t,Y(r))},Ar=new an(128),_r=/\w\[.*\]|\w\.\w/,Or=/(\$proxy\$[a-z]+)\d+$/,Nr=/\)\s*$/,Mr=/\)\s*\|/g,Sr=/\|\s*([$\w]+)/g,jr=/"\s*\["/g,Lr=/"\s*\(/g;avalon.parseExprProxy=Q,avalon.scan=function(e,t){e=e||Xt;var n=t?[].concat(t):[];ot(e,n)};var Hr=i("area,base,basefont,br,col,command,embed,hr,img,input,link,meta,param,source,track,wbr,noscript,script,style,textarea".toUpperCase()),Dr=function(e,t,n){var r=e.getAttribute(t);if(r)for(var a,i=0;a=n[i++];)if(a.hasOwnProperty(r)&&"function"==typeof a[r])return a[r]},Pr=Qt&&e.MutationObserver?function(e){for(var t,n=e.firstChild;n;){var r=n.nextSibling;3===n.nodeType?t?(t.nodeValue+=n.nodeValue,e.removeChild(n)):t=n:t=null,n=r}}:0,Fr=/^\s*::/,Br=/ms-(\w+)-?(.*)/,Rr={"if":10,repeat:90,data:100,widget:110,each:1400,"with":1500,duplex:2e3,on:3e3},Ir=i("animationend,blur,change,input,click,dblclick,focus,keydown,keypress,keyup,mousedown,mouseenter,mouseleave,mousemove,mouseout,mouseover,mouseup,scan,scroll,submit"),Vr=i("value,title,alt,checked,selected,disabled,readonly,enabled"),zr=/^if|widget|repeat$/,Ur=/^each|with|html|include$/;if(!Wt)var qr=new an(512),Wr=/\s+(ms-[^=\s]+)(?:=("[^"]*"|'[^']*'|[^\s>]+))?/g,Xr=/^['"]/,Yr=/<\w+\b(?:(["'])[^"]*?(\1)|[^>])*>/i,Gr=/&amp;/g,Jr=function(e){var t=e.outerHTML;if("</"===t.slice(0,2)||!t.trim())return[];var n,r,a,i=t.match(Yr)[0],o=[],l=qr.get(i);if(l)return l;for(;r=Wr.exec(i);){a=r[2],a&&(a=(Xr.test(a)?a.slice(1,-1):a).replace(Gr,"&"));var s=r[1].toLowerCase();n=s.match(Br);var c={name:s,specified:!0,value:a||""};o.push(c)}return qr.put(i,o)};var Zr=/\|\s*html(?:\b|$)/,Qr=/\|\|/g,Kr=/&lt;/g,ea=/&gt;/g,ta=/(['"])(\\\1|.)+?\1/g,na=["autofocus,autoplay,async,allowTransparency,checked,controls","declare,disabled,defer,defaultChecked,defaultSelected","contentEditable,isMap,loop,multiple,noHref,noResize,noShade","open,readOnly,selected"].join(","),ra={};na.replace(Pt,function(e){ra[e.toLowerCase()]=e});var aa={"accept-charset":"acceptCharset","char":"ch",charoff:"chOff","class":"className","for":"htmlFor","http-equiv":"httpEquiv"},ia=["accessKey,bgColor,cellPadding,cellSpacing,codeBase,codeType,colSpan","dateTime,defaultValue,frameBorder,longDesc,maxLength,marginWidth,marginHeight","rowSpan,tabIndex,useMap,vSpace,valueType,vAlign"].join(",");ia.replace(Pt,function(e){aa[e.toLowerCase()]=e});var oa=/<noscript.*?>(?:[\s\S]+?)<\/noscript>/gim,la=/<noscript.*?>([\s\S]+?)<\/noscript>/im,sa=function(){return new(e.XMLHttpRequest||ActiveXObject)("Microsoft.XMLHTTP")},ca=avalon.templateCache={};nn.attr=function(e,t){var n=Z(e.value.trim());if("include"===e.type){var r=e.element;e.includeRendered=Dr(r,"data-include-rendered",t),e.includeLoaded=Dr(r,"data-include-loaded",t);var a=e.includeReplace=!!avalon(r).data("includeReplace");avalon(r).data("includeCache")&&(e.templateCache={}),e.startInclude=_t.createComment("ms-include"),e.endInclude=_t.createComment("ms-include-end"),a?(e.element=e.startInclude,r.parentNode.insertBefore(e.startInclude,r),r.parentNode.insertBefore(e.endInclude,r.nextSibling)):(r.insertBefore(e.startInclude,r.firstChild),r.appendChild(e.endInclude))}e.handlerName="attr",Q(n,t,e)},rn.attr=function(t,n,r){var a=r.type,i=r.param;if("css"===a)avalon(n).css(i,t);else if("attr"===a){var o=t===!1||null===t||void 0===t;!Wt&&aa[i]&&(i=aa[i]);var l=ra[i];if("boolean"==typeof n[l]&&(n[l]=!!t,t||(o=!0)),o)return n.removeAttribute(i);var s=Bt.test(n)?!1:_t.namespaces&&F(n)?!0:i in n.cloneNode(!1);s?n[i]=t+"":n.setAttribute(i,t)}else if("include"===a&&t){var c=r.vmodels,u=r.includeRendered,f=r.includeLoaded,p=r.includeReplace,d=p?n.parentNode:n,v=function(e){if(f){var n=f.apply(d,[e].concat(c));"string"==typeof n&&(e=n)}u&&K(d,function(){u.call(d)},0/0);var a=r.includeLastID;if(r.templateCache&&a&&a!==t){var i=r.templateCache[a];i||(i=r.templateCache[a]=_t.createElement("div"),Nt.appendChild(i))}for(r.includeLastID=t;;){var o=r.startInclude.nextSibling;if(!o||o===r.endInclude)break;d.removeChild(o),i&&i.appendChild(o)}var l=ut(r,t,e),s=avalon.slice(l.childNodes);d.insertBefore(l,r.endInclude),it(s,c)};if("src"===r.param)if("string"==typeof ca[t])avalon.nextTick(function(){v(ca[t])});else if(Array.isArray(ca[t]))ca[t].push(v);else{var h=sa();h.onreadystatechange=function(){if(4===h.readyState){var e=h.status;if(e>=200&&300>e||304===e||1223===e){for(var n,r=h.responseText,a=0;n=ca[t][a++];)n(r);ca[t]=r}}},ca[t]=[v],h.open("GET",t,!0),"withCredentials"in h&&(h.withCredentials=!0),h.setRequestHeader("X-Requested-With","XMLHttpRequest"),h.send(null)}else{var m=t&&1===t.nodeType?t:_t.getElementById(t);if(m){if("NOSCRIPT"===m.tagName&&!m.innerHTML&&!m.fixIE78){h=sa(),h.open("GET",location,!1),h.send(null);for(var g=_t.getElementsByTagName("noscript"),y=(h.responseText||"").match(oa)||[],b=y.length,x=0;b>x;x++){var w=g[x];w&&(w.style.display="none",w.fixIE78=(y[x].match(la)||["","&nbsp;"])[1])}}avalon.nextTick(function(){v(m.fixIE78||m.value||m.innerText||m.innerHTML)})}}}else if(Xt.hasAttribute||"string"!=typeof t||"src"!==a&&"href"!==a||(t=t.replace(/&amp;/g,"&")),n[a]=t,e.chrome&&"EMBED"===n.tagName){var $=n.parentNode,C=document.createComment("ms-src");$.replaceChild(C,n),$.replaceChild(n,C)}},"title,alt,src,value,css,include,href".replace(Pt,function(e){nn[e]=nn.attr}),nn["class"]=function(e,t){var n,r=e.param,a=e.value;if(e.handlerName="class",!r||isFinite(r)){e.param="";var i=a.replace(xn,function(e){return e.replace(/./g,"0")}).indexOf(":");if(-1===i){var o=a;n=!0}else o=a.slice(0,i),n=a.slice(i+1);o=bn.test(a)?Z(o):yr(o),e.expr="["+o+","+n+"]"}else e.expr="["+yr(r)+","+a+"]",e.oldStyle=r;var l=e.type;if("hover"===l||"active"===l){if(!e.hasBindEvent){var s=e.element,c=avalon(s),u="mouseenter",f="mouseleave";if("active"===l){s.tabIndex=s.tabIndex||-1,u="mousedown",f="mouseup";var p=c.bind("mouseleave",function(){e.toggleClass&&c.removeClass(e.newClass)})}}var d=c.bind(u,function(){e.toggleClass&&c.addClass(e.newClass)}),v=c.bind(f,function(){e.toggleClass&&c.removeClass(e.newClass)});e.rollback=function(){c.unbind("mouseleave",p),c.unbind(u,d),c.unbind(f,v)},e.hasBindEvent=!0}Q(e.expr,t,e)},rn["class"]=function(e,t,n){var r=avalon(t);n.newClass=e[0],n.toggleClass=!!e[1],n.oldClass&&n.newClass!==n.oldClass&&r.removeClass(n.oldClass),n.oldClass=n.newClass,"class"===n.type&&(n.oldStyle?r.toggleClass(n.oldStyle,!!e[1]):r.toggleClass(n.newClass,n.toggleClass))},"hover,active".replace(Pt,function(e){nn[e]=nn["class"]}),rn.data=function(e,t,n){var r="data-"+n.param;e&&"object"==typeof e?t[r]=e:t.setAttribute(r,String(e))};var ua=nn.duplex=function(e,t){var a,o=e.element;if(Q(e.value,t,e,1),e.changed=Dr(o,"data-duplex-changed",t)||r,e.evaluator&&e.args){var l=[],s=i("string,number,boolean,checked");"radio"===o.type&&""===e.param&&(e.param="checked"),o.msData&&(o.msData["ms-duplex"]=e.value),e.param.replace(/\w+/g,function(t){/^(checkbox|radio)$/.test(o.type)&&/^(radio|checked)$/.test(t)&&("radio"===t&&n("ms-duplex-radio已经更名为ms-duplex-checked"),t="checked",e.isChecked=!0),"bool"===t?(t="boolean",n("ms-duplex-bool已经更名为ms-duplex-boolean")):"text"===t&&(t="string",n("ms-duplex-text已经更名为ms-duplex-string")),s[t]&&(a=!0),avalon.Array.ensure(l,t)}),a||l.push("string"),e.param=l.join("-"),e.bound=function(t,n){o.addEventListener?o.addEventListener(t,n,!1):o.attachEvent("on"+t,n);var r=e.rollback;e.rollback=function(){o.avalonSetter=null,avalon.unbind(o,t,n),r&&r()}};for(var c in avalon.vmodels){var u=avalon.vmodels[c];u.$fire("avalon-ms-duplex-init",e)}var f=e.pipe||(e.pipe=pt);f(null,e,"init");var p=o.tagName;ua[p]&&ua[p](o,e.evaluator.apply(null,e.args),e)}};avalon.duplexHooks={checked:{get:function(e,t){return!t.element.oldValue}},string:{get:function(e){return e},set:ft},"boolean":{get:function(e){return"true"===e},set:ft},number:{get:function(e,t){var n=parseFloat(e);if(-e===-n)return n;var r=/strong|medium|weak/.exec(t.element.getAttribute("data-duplex-number"))||["medium"];switch(r[0]){case"strong":return 0;case"medium":return""===e?"":0;case"weak":return e}},set:ft}};var fa,pa=[];avalon.tick=function(e){1===pa.push(e)&&(fa=setInterval(dt,60))};var da=r,va=/text|password|hidden/;!new function(){function e(e){t[this.tagName].call(this,e),va.test(this.type)&&!this.msFocus&&this.avalonSetter&&this.avalonSetter()}try{var t={},n=HTMLInputElement.prototype,r=HTMLTextAreaElement.prototype,a=HTMLInputElement.prototype;Object.getOwnPropertyNames(a),t.INPUT=Object.getOwnPropertyDescriptor(n,"value").set,Object.defineProperty(n,"value",{set:e}),t.TEXTAREA=Object.getOwnPropertyDescriptor(r,"value").set,Object.defineProperty(r,"value",{set:e})}catch(i){da=avalon.tick}},Qt&&avalon.bind(_t,"selectionchange",function(){var e=_t.activeElement;e&&"function"==typeof e.avalonSetter&&e.avalonSetter()}),ua.INPUT=function(e,t,r){function a(e){r.changed.call(this,e,r)}function i(){f=!0}function o(){f=!1}function l(e){setTimeout(function(){p(e)})}var s=e.type,c=r.bound,u=avalon(e),f=!1,p=function(){var n=e.value;if(!f&&n!==e.oldValue){var i=r.pipe(n,r,"get");u.data("duplexObserve")!==!1&&(t(i),a.call(e,i))}};if(r.handler=function(){var n=r.pipe(t(),r,"set")+"";n!==e.oldValue&&(e.value=e.oldValue=n)},r.isChecked||"radio"===s){var d=6===Qt;p=function(){if(u.data("duplexObserve")!==!1){var n=r.pipe(e.value,r,"get");t(n),a.call(e,n)}},r.handler=function(){var n=t(),a=r.isChecked?!!n:n+""===e.value;e.oldValue=a,d?setTimeout(function(){e.defaultChecked=a,e.checked=a},31):e.checked=a},c("click",p)}else if("checkbox"===s)p=function(){if(u.data("duplexObserve")!==!1){var i=e.checked?"ensure":"remove",o=t();Array.isArray(o)||(n("ms-duplex应用于checkbox上要对应一个数组"),o=[o]);var l=r.pipe(e.value,r,"get");avalon.Array[i](o,l),a.call(e,o)}},r.handler=function(){var n=[].concat(t()),a=r.pipe(e.value,r,"get");e.checked=n.indexOf(a)>-1},c(Wt?"change":"click",p);else{var v=e.getAttribute("data-duplex-event")||"input";e.attributes["data-event"]&&n("data-event指令已经废弃,请改用data-duplex-event"),v.replace(Pt,function(e){switch(e){case"input":Qt?(Qt>8?c("input",p):c("propertychange",function(e){"value"===e.propertyName&&p()}),c("dragend",l)):(c("input",p),c("compositionstart",i),c("compositionend",o),c("DOMAutoComplete",p));break;default:c(e,p)}}),c("focus",function(){e.msFocus=!0}),c("blur",function(){e.msFocus=!1}),va.test(s)&&da(function(){if(Xt.contains(e))e.msFocus||e.oldValue===e.value||p();else if(!e.msRetain)return!1}),e.avalonSetter=p}e.oldValue=e.value,avalon.injectBinding(r),a.call(e,e.value)},ua.TEXTAREA=ua.INPUT,ua.SELECT=function(e,t,r){function a(){if(i.data("duplexObserve")!==!1){var n=i.val();n=Array.isArray(n)?n.map(function(e){return r.pipe(e,r,"get")}):r.pipe(n,r,"get"),n+""!==e.oldValue&&t(n),r.changed.call(e,n,r)}}var i=avalon(e);r.handler=function(){var r=t();r=r&&r.$model||r,Array.isArray(r)?e.multiple||n("ms-duplex在<select multiple=true>上要求对应一个数组"):e.multiple&&n("ms-duplex在<select multiple=false>不能对应一个数组"),r=Array.isArray(r)?r.map(String):r+"",r+""!==e.oldValue&&(i.val(r),e.oldValue=r+"")},r.bound("change",a),e.msCallback=function(){avalon.injectBinding(r),r.changed.call(e,t(),r)}},rn.html=function(e,t,n){var r=1!==t.nodeType,a=r?t.parentNode:t;if(a&&(e=null==e?"":e,n.oldText!==e)){if(n.oldText=e,3===t.nodeType){var i=Zt("html");a.insertBefore(_t.createComment(i),t),n.element=_t.createComment(i+":end"),a.replaceChild(n.element,t),t=n.element}if("object"!=typeof e)var o=avalon.parseHTML(String(e));else if(11===e.nodeType)o=e;else if(1===e.nodeType||e.item){var l=1===e.nodeType?e.childNodes:e.item;for(o=Yt.cloneNode(!0);l[0];)o.appendChild(l[0])}if(l=avalon.slice(o.childNodes),r){for(var s=t.nodeValue.slice(0,-4);;){var c=t.previousSibling;if(!c||8===c.nodeType&&c.nodeValue===s)break;a.removeChild(c)}a.insertBefore(o,t)}else avalon.clearHTML(t).appendChild(o);it(l,n.vmodels)}},nn["if"]=nn.data=nn.text=nn.html=function(e,t){Q(e.value,t,e)},rn["if"]=function(e,t,n){try{if(!t.parentNode)return}catch(r){return}if(e)8===t.nodeType&&(t.parentNode.replaceChild(n.template,t),t.ifRemove=null,t=n.element=n.template),t.getAttribute(n.name)&&(t.removeAttribute(n.name),rt(t,n.vmodels)),n.rollback=null;else if(1===t.nodeType){var a=n.element=_t.createComment("ms-if");t.parentNode.replaceChild(a,t),t.ifRemove=a,n.template=t,Nt.appendChild(t),n.rollback=function(){t.parentNode===Nt&&Nt.removeChild(t)}}};var ha=/\(([^)]*)\)/;nn.on=function(e,t){var n=e.value;e.type="on";var r=e.param.replace(/-\d+$/,"");if("function"==typeof nn.on[r+"Hook"]&&nn.on[r+"Hook"](e),n.indexOf("(")>0&&n.indexOf(")")>-1){var a=(n.match(ha)||["",""])[1].trim();(""===a||"$event"===a)&&(n=n.replace(ha,""))}Q(n,t,e)},rn.on=function(e,t,n){e=function(e){var t=n.evaluator||r;return t.apply(this,n.args.concat(e))};var a=n.param.replace(/-\d+$/,"");if("scan"===a)e.call(t,{type:a});else if("function"==typeof n.specialBind)n.specialBind(t,e);else var i=avalon.bind(t,a,e);n.rollback=function(){"function"==typeof n.specialUnbind?n.specialUnbind():avalon.unbind(t,a,i)}},nn.repeat=function(e,t){var n=e.type;Q(e.value,t,e,1),e.proxies=[];var r=!1;try{var a=e.$repeat=e.evaluator.apply(0,e.args||[]),i=avalon.type(a);"object"!==i&&"array"!==i?(r=!0,avalon.log("warning:"+e.value+"只能是对象或数组")):e.xtype=i}catch(o){r=!0}var l=e.value.split(".")||[];if(l.length>1){l.pop();for(var s,c=l[0],u=0;s=t[u++];)if(s&&s.hasOwnProperty(c)){var f=s[c].$events||{};f[jt]=f[jt]||[],f[jt].push(e);break}}var p=e.element;if(1===p.nodeType){p.removeAttribute(e.name),e.sortedCallback=Dr(p,"data-with-sorted",t),e.renderedCallback=Dr(p,"data-"+n+"-rendered",t);var d=Zt(n),v=_t.createComment(d),h=_t.createComment(d+":end");if(e.signature=d,e.template=Yt.cloneNode(!1),"repeat"===n){var m=p.parentNode;m.replaceChild(h,p),m.insertBefore(v,h),e.template.appendChild(p)}else{for(;p.firstChild;)e.template.appendChild(p.firstChild);p.appendChild(v),p.appendChild(h)}e.element=h,e.handler=rn.repeat,e.rollback=function(){var t=e.element;t&&e.handler("clear")}}if(!r){e.$outer={};var g="$key",y="$val";for(Array.isArray(a)&&(g="$first",y="$last"),u=0;s=t[u++];)if(s.hasOwnProperty(g)&&s.hasOwnProperty(y)){e.$outer=s;break}var b=a.$events,x=(b||{})[jt];M(x,e),"object"===i?e.handler("append"):a.length&&e.handler("add",0,a.length)}},rn.repeat=function(e,t,n){var a=this;if(!e&&a.xtype){var i=a.$repeat,o=a.evaluator.apply(0,a.args||[]);if("array"===a.xtype){if(i.length===o.length)return;e="add",t=0,a.$repeat=o,n=o.length}else{if(E(i).join(";;")===E(o).join(";;"))return;e="append",a.$repeat=o}}if(e){var l,s,c=a.element,u=ht(a),f=c.parentNode,p=a.proxies,d=Yt.cloneNode(!1);switch(e){case"add":for(var v=t+n,h=[],m=t;v>m;m++){var g=$t(m,a);p.splice(m,0,g),vt(a,d,g,h)}for(f.insertBefore(d,u[t]||c),m=0;s=h[m++];)it(s.nodes,s.vmodels),s.nodes=s.vmodels=null;break;case"del":mt(u[t],u[t+n]||c);var y=p.splice(t,n);bt(y,"each");break;case"clear":l=u[0],l&&(mt(l,c),"object"===a.xtype?f.insertBefore(l,c):bt(p,"each"));break;case"move":if(l=u[0]){var b,x=l.nodeValue,w=[],$=[];for(mt(l,c,function(){$.unshift(this),this.nodeValue===x&&(w.unshift($),$=[])}),N(w,t),N(p,t);$=w.shift();)for(;b=$.shift();)d.appendChild(b);f.insertBefore(d,c)}break;case"index":for(var C=p.length-1;n=p[t];t++)n.$index=t,n.$first=0===t,n.$last=t===C;return;case"set":g=p[t],g&&S(g.$events[a.param||"el"]);break;case"append":var k=a.$repeat,T=Array.isArray(p)||!p?{}:p;a.proxies=T;var A=[];h=[];for(var _ in T)k.hasOwnProperty(_)||(Ct(T[_],ma),delete T[_]);for(_ in k)k.hasOwnProperty(_)&&"hasOwnProperty"!==_&&A.push(_);if(a.sortedCallback){var O=a.sortedCallback.call(f,A);O&&Array.isArray(O)&&O.length&&(A=O)}for(m=0;_=A[m++];)"hasOwnProperty"!==_&&(T[_]=yt(T[_],_,a),vt(a,d,T[_],h));for(f.insertBefore(d,c),m=0;s=h[m++];)it(s.nodes,s.vmodels),s.nodes=s.vmodels=null}if(!a.$repeat||a.$repeat.hasOwnProperty("$lock"))return;"clear"===e&&(e="del");var M=a.renderedCallback||r,j=arguments;f.oldValue&&"SELECT"===f.tagName&&avalon(f).val(f.oldValue.split(",")),M.apply(f,j)}},"with,each".replace(Pt,function(e){nn[e]=nn.repeat});var ma=[],ga=[];rn.text=function(e,t){if(e=null==e?"":e,3===t.nodeType)try{t.data=e}catch(n){}else"textContent"in t?t.textContent=e:t.innerText=e},avalon.parseDisplay=kt,nn.visible=function(e,t){Q(e.value,t,e)},rn.visible=function(e,t,n){e?(t.style.display=n.display||"","none"===avalon(t).css("display")&&(t.style.display=n.display=kt(t.nodeName))):t.style.display="none"},nn.widget=function(t,a){var i=t.value.match(Pt),o=t.element,l=i[0],s=i[1];s&&"$"!==s||(s=Zt(l));var c=i[2]||l,u=avalon.ui[l];if("function"==typeof u){a=o.vmodels||a;for(var f,p=0;f=a[p++];)if(f.hasOwnProperty(c)&&"object"==typeof f[c]){var d=f[c];d=d.$model||d;break}if(d){var v=d[l+"Id"];"string"==typeof v&&(n("warning!不再支持"+l+"Id"),s=v)}var h=avalon.getWidgetData(o,l);t.value=[l,s,c].join(","),t[l+"Id"]=s,t.evaluator=r,o.msData["ms-widget-id"]=s;var m=t[l+"Options"]=avalon.mix({},u.defaults,d||{},h);o.removeAttribute("ms-widget");var g=u(o,t,a)||{};if(g.$id){avalon.vmodels[s]=g,et(o,g);try{g.$init(function(){avalon.scan(o,[g].concat(a)),"function"==typeof m.onInit&&m.onInit.call(o,g,m,a)})}catch(y){}t.rollback=function(){try{g.$remove(),g.widgetElement=null}catch(e){}o.msData={},delete avalon.vmodels[g.$id]},L(t,ya),e.chrome&&o.addEventListener("DOMNodeRemovedFromDocument",function(){setTimeout(H)})}else avalon.scan(o,a)}else a.length&&(o.vmodels=a)};var ya=[],ba=/<script[^>]*>([\S\s]*?)<\/script\s*>/gim,xa=/\s+(on[^=\s]+)(?:=("[^"]*"|'[^']*'|[^\s>]+))?/g,wa=/<\w+\b(?:(["'])[^"]*?(\1)|[^>])*>/gi,$a={a:/\b(href)\=("javascript[^"]*"|'javascript[^']*')/gi,img:/\b(src)\=("javascript[^"]*"|'javascript[^']*')/gi,form:/\b(action)\=("javascript[^"]*"|'javascript[^']*')/gi},Ca=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,ka=/([^\#-~| |!])/g,Ta=avalon.filters={uppercase:function(e){return e.toUpperCase()},lowercase:function(e){return e.toLowerCase()},truncate:function(e,t,n){return t=t||30,n="string"==typeof n?n:"...",e.length>t?e.slice(0,t-n.length)+n:String(e)},$filter:function(e){for(var t=1,n=arguments.length;n>t;t++){var r=arguments[t],a=avalon.filters[r.shift()];if("function"==typeof a){var i=[e].concat(r);e=a.apply(null,i)}}return e},camelize:I,sanitize:function(e){return e.replace(ba,"").replace(wa,function(e){var t=e.toLowerCase().match(/<(\w+)\s/);if(t){var n=$a[t[1]];n&&(e=e.replace(n,function(e,t,n){var r=n.charAt(0);return t+"="+r+"javascript:void(0)"+r}))}return e.replace(xa," ").replace(/\s+/g," ")})},escape:function(e){return String(e).replace(/&/g,"&amp;").replace(Ca,function(e){var t=e.charCodeAt(0),n=e.charCodeAt(1);return"&#"+(1024*(t-55296)+(n-56320)+65536)+";"}).replace(ka,function(e){return"&#"+e.charCodeAt(0)+";"}).replace(/</g,"&lt;").replace(/>/g,"&gt;")},currency:function(e,t,n){return(t||"¥")+Tt(e,isFinite(n)?n:2)},number:Tt};!new function(){function e(e){return parseInt(e,10)||0}function t(e,t,n){var r="";for(0>e&&(r="-",e=-e),e=""+e;e.length<t;)e="0"+e;return n&&(e=e.substr(e.length-t)),r+e}function n(e,n,r,a){return function(i){var o=i["get"+e]();return(r>0||o>-r)&&(o+=r),0===o&&-12===r&&(o=12),t(o,n,a)}}function r(e,t){return function(n,r){var a=n["get"+e](),i=(t?"SHORT"+e:e).toUpperCase();return r[i][a]}}function a(e){var n=-1*e.getTimezoneOffset(),r=n>=0?"+":"";return r+=t(Math[n>0?"floor":"ceil"](n/60),2)+t(Math.abs(n%60),2)}function i(e,t){return e.getHours()<12?t.AMPMS[0]:t.AMPMS[1]}var o={yyyy:n("FullYear",4),yy:n("FullYear",2,0,!0),y:n("FullYear",1),MMMM:r("Month"),MMM:r("Month",!0),MM:n("Month",2,1),M:n("Month",1,1),dd:n("Date",2),d:n("Date",1),HH:n("Hours",2),H:n("Hours",1),hh:n("Hours",2,-12),h:n("Hours",1,-12),mm:n("Minutes",2),m:n("Minutes",1),ss:n("Seconds",2),s:n("Seconds",1),sss:n("Milliseconds",3),EEEE:r("Day"),EEE:r("Day",!0),a:i,Z:a},l=/((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/,s=/^\/Date\((\d+)\)\/$/;
3
- Ta.date=function(t,n){var r,a,i=Ta.date.locate,c="",u=[];if(n=n||"mediumDate",n=i[n]||n,"string"==typeof t)if(/^\d+$/.test(t))t=e(t);else if(s.test(t))t=+RegExp.$1;else{var f=t.trim(),p=[0,0,0,0,0,0,0],d=new Date(0);f=f.replace(/^(\d+)\D(\d+)\D(\d+)/,function(t,n,r,a){var i=4===a.length?[a,n,r]:[n,r,a];return p[0]=e(i[0]),p[1]=e(i[1])-1,p[2]=e(i[2]),""});var v=d.setFullYear,h=d.setHours;f=f.replace(/[T\s](\d+):(\d+):?(\d+)?\.?(\d)?/,function(t,n,r,a,i){return p[3]=e(n),p[4]=e(r),p[5]=e(a),i&&(p[6]=Math.round(1e3*parseFloat("0."+i))),""});var m=0,g=0;f=f.replace(/Z|([+-])(\d\d):?(\d\d)/,function(t,n,r,a){return v=d.setUTCFullYear,h=d.setUTCHours,n&&(m=e(n+r),g=e(n+a)),""}),p[3]-=m,p[4]-=g,v.apply(d,p.slice(0,3)),h.apply(d,p.slice(3)),t=d}if("number"==typeof t&&(t=new Date(t)),"date"===avalon.type(t)){for(;n;)a=l.exec(n),a?(u=u.concat(a.slice(1)),n=u.pop()):(u.push(n),n=null);return u.forEach(function(e){r=o[e],c+=r?r(t,i):e.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),c}};var c={AMPMS:{0:"上午",1:"下午"},DAY:{0:"星期日",1:"星期一",2:"星期二",3:"星期三",4:"星期四",5:"星期五",6:"星期六"},MONTH:{0:"1月",1:"2月",2:"3月",3:"4月",4:"5月",5:"6月",6:"7月",7:"8月",8:"9月",9:"10月",10:"11月",11:"12月"},SHORTDAY:{0:"周日",1:"周一",2:"周二",3:"周三",4:"周四",5:"周五",6:"周六"},fullDate:"y年M月d日EEEE",longDate:"y年M月d日",medium:"yyyy-M-d H:mm:ss",mediumDate:"yyyy-M-d",mediumTime:"H:mm:ss","short":"yy-M-d ah:mm",shortDate:"yy-M-d",shortTime:"ah:mm"};c.SHORTMONTH=c.MONTH,Ta.date.locate=c};var Ea=avalon.modules={"domReady!":{exports:avalon,state:3},avalon:{exports:avalon,state:4}};Ea.exports=Ea.avalon,new function(){function t(e,t){var r="js";e=e.replace(/^(\w+)\!/,function(e,t){return r=t,""}),"ready"===r&&(n("debug: ready!已经被废弃,请使用domReady!"),r="domReady");var a="";e=e.replace(D,function(e){return a=e,""});var i="."+r,o=/js|css/.test(i)?i:"";e=e.replace(/\.[a-z0-9]+$/g,function(e){return e===i?(o=e,""):e});var l=avalon.mix({query:a,ext:o,res:r,name:e,toUrl:m},t);return l.toUrl(e),l}function i(e){var t=e.name,n=e.res,r=Ea[t],a=t&&e.urlNoQuery;if(r&&r.state>=1)return t;if(r=Ea[a],r&&r.state>=3)return Mt(r.deps||[],r.factory,a),a;if(t&&!r){r=Ea[a]={id:a,state:1};var i=function(a){H[n]=a,a.load(t,e,function(e){arguments.length&&void 0!==e&&(r.exports=e),r.state=4,s()})};H[n]?i(H[n]):Mt([n],i)}return t?a:n+"!"}function o(e,t){for(var n,r=0;n=e[r++];)if(4!==Ea[n].state&&(n===t||o(Ea[n].deps,t)))return!0}function l(e,t,r){var a=u(e.src);return e.onload=e.onreadystatechange=e.onerror=null,t||r&&Ea[a]&&!Ea[a].state?(setTimeout(function(){Ot.removeChild(e),e=null}),void n("debug: 加载 "+a+" 失败"+t+" "+!Ea[a].state)):!0}function s(){e:for(var e,t=T.length;e=T[--t];){var n=Ea[e],r=n.deps;if(r){for(var a,i=0;a=r[i];i++)if(4!==Object(Ea[a]).state)continue e;4!==n.state&&(T.splice(t,1),v(n.id,n.deps,n.factory),s())}}}function c(e,t,r){function a(){var a=E.pop();a&&a.require(t),r&&r(),l(i,!1,!c)&&(n("debug: 已成功加载 "+e),t&&T.push(t),s())}var i=_t.createElement("script");i.className=jt;var o,c="onload"in i,u=c?"onload":"onreadystatechange",f=0;i[u]=c?a:function(){L.test(i.readyState)&&(++f,1===f?o=setTimeout(a,500):(clearTimeout(o),a()))},i.onerror=function(){l(i,!0)},Ot.insertBefore(i,Ot.firstChild),i.src=e,n("debug: 正准备加载 "+e)}function u(e){return(e||"").replace(D,"")}function f(e){return/^(?:[a-z]+:)?\/\//i.test(String(e))}function p(e,t){return"1"[0]?e[t]:e.getAttribute(t,4)}function d(){var t;try{a.b.c()}catch(n){t=n.stack,!t&&e.opera&&(t=(String(n).match(/of linked script \S+/g)||[]).join(" "))}if(t)return t=t.split(/[@ ]/g).pop(),t="("===t[0]?t.slice(1,-1):t.replace(/\s/,""),u(t.replace(/(:\d+)?:\d+$/i,""));for(var r,i=Ot.getElementsByTagName("script"),o=i.length;r=i[--o];)if(r.className===jt&&"interactive"===r.readyState){var l=p(r,"src");return r.className=u(l)}}function v(t,r,a){var i=Object(Ea[t]);i.state=4;for(var o,l=0,s=[];o=r[l++];)if("exports"===o){var c=i.exports||(i.exports={});s.push(c)}else s.push(Ea[o].exports);try{var u=a.apply(e,s)}catch(f){n("执行["+t+"]模块的factory抛错: ",f)}return void 0!==u&&(i.exports=u),P.test(t)&&delete Ea[t],delete i.factory,u}function m(e){0===e.indexOf(this.res+"!")&&(e=e.slice(this.res.length+1));var t=e,n=0,r=this.baseUrl,a=this.parentUrl||r;w(e,h.paths,function(e,r){t=t.replace(r,e),n=1}),n||w(e,h.packages,function(e,n,r){t=t.replace(r.name,r.location)}),this.mapUrl&&w(this.mapUrl,h.map,function(e){w(t,e,function(e,n){t=t.replace(n,e),a=r})});var i=this.ext;i&&n&&t.slice(-i.length)===i&&(t=t.slice(0,-i.length)),f(t)||(a=this.built||/^\w/.test(t)?r:a,t=C(a,t));var o=t+i;return t=o+this.query,o=t.replace(D,function(e){return this.query=e,""}),w(e,h.urlArgs,function(e){t+=(-1===t.indexOf("?")?"?":"&")+e}),this.url=t,this.urlNoQuery=o}function g(e,t,n){var r=x(e,t,n);return r.sort($),r}function y(e){return new RegExp("^"+e+"(/|$)")}function b(t){return function(){var n;return t.init&&(n=t.init.apply(e,arguments)),n||t.exports&&k(t.exports)}}function x(e,t,n){var r=[];for(var a in e)if(Vt.call(e,a)){var i={name:a,val:e[a]};r.push(i),i.reg="*"===a&&t?/^/:y(a),n&&"*"!==a&&(i.reg=new RegExp("/"+a.replace(/^\//,"")+"(/|$)"))}return r}function w(e,t,n){t=t||[];for(var r,a=0;r=t[a++];)if(r.reg.test(e))return n(r.val,r.name,r),!1}function $(e,t){var n=e.name,r=t.name;return"*"===r?-1:"*"===n?1:r.length-n.length}function C(e,t){if("/"!==e.charAt(e.length-1)&&(e+="/"),"./"===t.slice(0,2))return e+t.slice(2);if(".."===t.slice(0,2)){for(e+=t;F.test(e);)e=e.replace(F,"");return e}return"/"===t.slice(0,1)?e+t.slice(1):e+t}function k(t){if(!t)return t;var n=e;return t.split(".").forEach(function(e){n=n[e]}),n}var T=[],E=[],A=/\.js$/i,_=[],O=!1;Mt=avalon.require=function(e,n,a,o){if(O){Array.isArray(e)||avalon.error("require方法的第一个参数应为数组 "+e);var l=[],c={},u=a||"callback"+setTimeout("1");o=o||{},o.baseUrl=h.baseUrl;var f=!!o.built;if(a&&(o.parentUrl=a.substr(0,a.lastIndexOf("/")),o.mapUrl=a.replace(A,"")),f){var p=t(o.defineName,o);u=p.urlNoQuery}else e.forEach(function(e){var n=t(e,o),r=i(n);r&&(c[r]||(l.push(r),c[r]="司徒正美"))});var d=Ea[u];d&&4===d.state||(Ea[u]={id:u,deps:f?e.concat():l,factory:n||r,state:3}),d||T.push(u),s()}else if(_.push(avalon.slice(arguments)),arguments.length<=2){O=!0;for(var v,m=_.splice(0,_.length);v=m.shift();)Mt.apply(null,v)}},Mt.define=function(e,t,n){"string"!=typeof e&&(n=t,t=e,e="anonymous"),Array.isArray(t)||(n=t,t=[]);var r={built:!O,defineName:e},a=[t,n,r];n.require=function(e){if(a.splice(2,0,e),Ea[e]){Ea[e].state=3;var t=!1;try{t=o(Ea[e].deps,e)}catch(r){}t&&avalon.error(e+"模块与之前的模块存在循环依赖,请不要直接用script标签引入"+e+"模块")}delete n.require,Mt.apply(null,a)};var i=r.built?"unknown":d();if(i){var l=Ea[i];l&&(l.state=2),n.require(i)}else E.push(n)},Mt.config=h,Mt.define.amd=Ea;var N=h["orig.paths"]={},M=h["orig.map"]={},S=h.packages=[],j=h["orig.args"]={};avalon.mix(Cn,{paths:function(e){avalon.mix(N,e),h.paths=g(N)},map:function(e){avalon.mix(M,e);var t=g(M,1,1);avalon.each(t,function(e,t){t.val=g(t.val)}),h.map=t},packages:function(e){e=e.concat(S);for(var t,n={},r=[],a=0;t=e[a++];){t="string"==typeof t?{name:t}:t;var i=t.name;if(!n[i]){var o=C(t.location||i,t.main||"main");o=o.replace(A,""),r.push(t),n[i]=t.location=o,t.reg=y(i)}}h.packages=r.sort()},urlArgs:function(e){"string"==typeof e&&(e={"*":e}),avalon.mix(j,e),h.urlArgs=g(j,1)},baseUrl:function(e){if(!f(e)){var t=Ot.getElementsByTagName("base")[0];t&&Ot.removeChild(t);var n=_t.createElement("a");n.href=e,e=p(n,"href"),t&&Ot.insertBefore(t,Ot.firstChild)}e.length>3&&(h.baseUrl=e)},shim:function(e){for(var t in e){var n=e[t];Array.isArray(n)&&(n=e[t]={deps:n}),n.exportsFn||!n.exports&&!n.init||(n.exportsFn=b(n))}h.shim=e}});var L=/complete|loaded/,H=Mt.plugins={ready:{load:r},js:{load:function(e,t,n){var r=t.url,a=t.urlNoQuery,i=h.shim[e.replace(A,"")];i?Mt(i.deps||[],function(){var e=avalon.slice(arguments);c(r,a,function(){n(i.exportsFn?i.exportsFn.apply(0,e):void 0)})}):c(r,a)}},css:{load:function(e,t,r){var a=t.url,i=_t.createElement("link");i.rel="stylesheet",i.href=a,Ot.insertBefore(i,Ot.firstChild),n("debug: 已成功加载 "+a),r()}},text:{load:function(e,t,r){var a=t.url,i=sa();i.onreadystatechange=function(){if(4===i.readyState){var e=i.status;e>399&&600>e?avalon.error(a+" 对应资源不存在或没有开启 CORS"):(n("debug: 已成功加载 "+a),r(i.responseText))}};var o="_="+(new Date-0),l=-1===a.indexOf("?")?a+"?"+o:a+"&"+o;i.open("GET",l,!0),"withCredentials"in i&&(i.withCredentials=!0),i.setRequestHeader("X-Requested-With","XMLHttpRequest"),i.send(),n("debug: 正准备加载 "+a)}}};Mt.checkDeps=s;var D=/(\?[^#]*)$/,P=/^callback\d+$/,F=/\/\w+\/\.\./,B=_t.scripts[_t.scripts.length-1],R=B.getAttribute("data-main");if(R){Cn.baseUrl(R);var I=h.baseUrl;h.baseUrl=I.slice(0,I.lastIndexOf("/")+1),c(I.replace(A,"")+".js")}else{var V=u(p(B,"src"));h.baseUrl=V.slice(0,V.lastIndexOf("/")+1)}};var Aa,_a=[],Oa=function(e){for(Aa=!0,Mt&&(Ea["domReady!"].state=4,Mt.checkDeps());e=_a.shift();)e(avalon)};if("complete"===_t.readyState)setTimeout(Oa);else if(Wt)_t.addEventListener("DOMContentLoaded",Oa);else{_t.attachEvent("onreadystatechange",function(){"complete"===_t.readyState&&Oa()});try{var Na=null===e.frameElement}catch(Sn){}Xt.doScroll&&Na&&e.external&&Et()}avalon.bind(e,"load",Oa),avalon.ready=function(e){Aa?e(avalon):_a.push(e)},avalon.config({loader:!0}),avalon.ready(function(){avalon.scan(_t.body)}),"function"==typeof define&&define.amd&&define("avalon",[],function(){return avalon});var Ma=e.avalon;return avalon.noConflict=function(t){return t&&e.avalon===avalon&&(e.avalon=Ma),avalon},void 0===t&&(e.avalon=avalon),avalon});
1
+ !function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("Avalon requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){function n(){e.console&&avalon.config.debug&&Function.apply.call(console.log,console,arguments)}function r(){}function i(e,t){"string"==typeof e&&(e=e.match(Lt)||[]);for(var n={},r=void 0!==t?t:1,a=0,i=e.length;i>a;a++)n[e[a]]=r;return n}function o(){if(e.VBArray){var t=document.documentMode;return t?t:e.XMLHttpRequest?7:6}return 0/0}function l(e){return Pt.test(Rt.call(e))}function s(e,t){return e=Math.floor(e)||0,0>e?Math.max(t+e,0):Math.min(e,t)}function c(e){if(!e)return!1;var t=e.length;if(t===t>>>0){var n=Rt.call(e).slice(8,-1);if(/(?:regexp|string|function|window|global)$/i.test(n))return!1;if("Array"===n)return!0;try{return{}.propertyIsEnumerable.call(e,"length")===!1?/^\s?function/.test(e.item||e.callee):!0}catch(r){return!e.window}}return!1}function u(e,t,n){var r="for(var "+e+"i=0,n = this.length; i < n; i++){"+t.replace("_","((i in this) && fn.call(scope,this[i],i,this))")+"}"+n;return Function("fn,scope",r)}function f(e,t){try{for(;t=t.parentNode;)if(t===e)return!0;return!1}catch(n){return!1}}function p(){return(new XMLSerializer).serializeToString(this)}function d(e,t){if(e&&e.childNodes)for(var n,r=e.childNodes,a=0;n=r[a++];)if(n.tagName){var i=_t.createElementNS(sn,n.tagName.toLowerCase());It.forEach.call(n.attributes,function(e){i.setAttribute(e.name,e.value)}),d(n,i),t.appendChild(i)}}function v(e){var t={};for(var n in e)t[n]=e[n];var r=t.target=e.srcElement;if(0===e.type.indexOf("key"))t.which=null!=e.charCode?e.charCode:e.keyCode;else if(un.test(e.type)){var a=r.ownerDocument||_t,i="BackCompat"===a.compatMode?a.body:a.documentElement;t.pageX=e.clientX+(i.scrollLeft>>0)-(i.clientLeft>>0),t.pageY=e.clientY+(i.scrollTop>>0)-(i.clientTop>>0),t.wheelDeltaY=t.wheelDelta,t.wheelDeltaX=0}return t.timeStamp=new Date-0,t.originalEvent=e,t.preventDefault=function(){e.returnValue=!1},t.stopPropagation=function(){e.cancelBubble=!0},t}function h(e){for(var t in e)if(Bt.call(e,t)){var n=e[t];"function"==typeof h.plugins[t]?h.plugins[t](n):"object"==typeof h[t]?avalon.mix(h[t],n):h[t]=n}return this}function m(e){return(e+"").replace(bn,"\\$&")}function g(e,t,n){if(Array.isArray(e)){var r=e.concat();e.length=0;var a=_(e);return a.pushArray(r),a}if(!e||e.nodeType>0||e.$id&&e.$events)return e;var i=Array.isArray(e.$skipArray)?e.$skipArray:[];i.$special=t||{};var o={};n=n||{};var l={},s={},c=[];kn.forEach(function(t){delete e[t]});var u=Object.keys(e);u.forEach(function(t,r){var a=e[t];if(n[t]=a,k(t,a,i)){l[t]=[];var o=avalon.type(a);"object"===o&&Jt(a.get)&&Object.keys(a).length<=2?(r=x(t,a),c.push(r)):r=Ht.test(o)?w(t,a,o,l[t],n):b(t,a),s[t]=r}}),o=_n(o,Mn(s),e);for(var f=0;f<u.length;f++){var p=u[f];s[p]||(o[p]=e[p])}y(o,"$id",Yt()),y(o,"$model",n),y(o,"$events",l),An?y(o,"hasOwnProperty",function(e){return e in o.$model}):o.hasOwnProperty=function(e){return e in o.$model&&"hasOwnProperty"!==e};for(f in Cn)y(o,f,Cn[f].bind(o));return o.$reinitialize=function(){c.forEach(function(e){delete e._value,delete e.oldArgs,e.digest=function(){e.call(o)},Hn.begin({callback:function(t,n){var r=n._name;if(n!==e){var a=t.$events[r];M(a,e.digest)}}});try{e.get.call(o)}finally{Hn.end()}})},o.$reinitialize(),o}function y(e,t,n){An?Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!1,configurable:!0}):e[t]=n}function b(e,t){function n(e){var t=n._value;return arguments.length>0?(jt||Nn(e,t)||(n.updateValue(this,e),n.notify(this,e,t)),this):(Hn.collectDependency(this,n),t)}return T(n,e),n._value=t,n}function x(e,t){function n(t){var r=n._value,a="_value"in n;if(arguments.length>0){if(jt)return this;if("function"==typeof n.set&&n.oldArgs!==t){n.oldArgs=t;var i=this.$events,o=i[e];i[e]=[],n.set.call(this,t),i[e]=o,t=n.get.call(this),t!==r&&(n.updateValue(this,t),n.notify(this,t,r))}return this}return t=n.get.call(this),n.updateValue(this,t),a&&r!==t&&n.notify(this,t,r),t}return n.set=t.set,n.get=t.get,T(n,e),n}function w(e,t,n,r,a){function i(t){var r=i._value,a=i._vmodel;if(arguments.length>0){if(jt)return this;if("array"===n){var o=a,l=t,s=o.length,c=l.length;o.$lock=!0,s>c?o.splice(c,s-c):c>s&&o.push.apply(o,l.slice(s));for(var u=Math.min(s,c),f=0;u>f;f++)o.set(f,l[f]);delete o.$lock,o._fire("set")}else if("object"===n){var p=this.$events[e]||[],d=avalon.mix(!0,{},t);for(f in a)a.hasOwnProperty(f)&&Bt.call(d,f)&&(a[f]=d[f]);a=i._vmodel=g(t),a.$events[St]=p,p.length&&p.forEach(function(e){e.type&&(e.rollback&&e.rollback(),Kt[e.type](e,e.vmodels))})}return i.updateValue(this,a.$model),i.notify(this,this._value,r),this}return Hn.collectDependency(this,i),a}T(i,e),a[e]=Array.isArray(t)?t:a[e]||{};var o=i._vmodel=g(t,0,a[e]);return o.$events[St]=r,i}function $(e,t){e.$model[this._name]=this._value=t}function C(e,t,n){var r=this._name,a=e.$events[r];a&&(S(a),Cn.$fire.call(e,r,t,n))}function T(e,t){e._name=t,e.updateValue=$,e.notify=C}function k(e,t,n){if(Jt(t)||t&&t.nodeType)return!1;if(-1!==n.indexOf(e))return!1;var r=n.$special;return e&&"$"===e.charAt(0)&&!r[e]?!1:!0}function E(e){for(var t=Object.keys(e.$model?e.$model:e),n=0;n<kn.length;n++){var r=t.indexOf(kn[n]);-1!==r&&t.splice(r,1)}return t}function A(e,t,n,r){var a=t[n];return 4!==arguments.length?a.call(e):void a.call(e,r)}function _(e){var t=[];t.$id=Yt(),t.$model=e,t.$events={},t.$events[St]=[],t._=g({length:e.length}),t._.$watch("length",function(e,n){t.$fire("length",e,n)});for(var n in Cn)t[n]=Cn[n];return avalon.mix(t,Ln),t}function O(e,t,n,r,a,i,o){for(var l=this.length,s=2;--s;){switch(e){case"add":var c=this.$model.slice(t,t+n).map(function(e){return Ht.test(avalon.type(e))?e.$id?e:g(e,0,e):e});jn.apply(this,[t,0].concat(c)),this._fire("add",t,n);break;case"del":var u=this._splice(t,n);this._fire("del",t,n)}a&&(e=a,t=i,n=o,s=2,a=0)}return this._fire("index",r),this.length!==l&&(this._.length=this.length),u}function N(e,t){for(var n={},r=0,a=t.length;a>r;r++){n[r]=e[r];var i=t[r];i in n?(e[r]=n[i],delete n[i]):e[r]=e[i]}}function M(e,t){t.oneTime||e&&avalon.Array.ensure(e,t)&&t.element&&(L(t,e),new Date-Bn>444&&H())}function S(e){if(e&&e.length){new Date-Bn>444&&"object"==typeof e[0]&&H();for(var t,n=Vt.call(arguments,1),r=e.length;t=e[--r];){var a=t.element;if(a&&a.parentNode)try{var i=t.evaluator;if(t.$repeat)t.handler.apply(t,n);else if("$repeat"in t||!i)Kt[t.type](t,t.vmodels);else if("on"!==t.type){var o=i.apply(0,t.args||[]);t.handler(o,a,t)}}catch(l){console.log(l)}}}}function j(e,t){return e.uuid||t||(e.uuid=++Pn),e.uuid}function L(e,t){var n=e.element;e.uuid||(e.uuid=1!==n.nodeType?e.type+j(n.parentNode)+"-"+ ++Pn:e.name+"-"+j(n));var r=e.lists||(e.lists=[]);avalon.Array.ensure(r,t),t.$uuid=t.$uuid||Yt(),Fn[e.uuid]||(Fn[e.uuid]=1,Fn.push(e))}function H(e){if(!avalon.optimize){for(var t=Fn.length,n=t,r=[],a={},i={};e=Fn[--t];){var o=e.type;i[o]?i[o]++:(i[o]=1,r.push(o))}var l=!1;if(r.forEach(function(e){Rn[e]!==i[e]&&(a[e]=1,l=!0)}),t=n,l)for(;e=Fn[--t];)if(null!==e.element){if(a[e.type]&&P(e.element)){Fn.splice(t,1),delete Fn[e.uuid];for(var s,c=e.lists,u=0;s=c[u++];)avalon.Array.remove(c,s),avalon.Array.remove(s,e);D(e)}}else Fn.splice(t,1);Rn=i,Bn=new Date}}function D(e){delete Fn[e.uuid],e.element=null,e.rollback&&e.rollback();for(var t in e)e[t]=null}function P(e){try{{e.parentNode.nodeType}}catch(t){return!0}return e.ifRemove&&!Ut.contains(e.ifRemove)&&Nt===e.parentNode?(e.parentNode&&e.parentNode.removeChild(e),!0):e.msRetain?0:1===e.nodeType?!Ut.contains(e):!avalon.contains(Ut,e)}function F(e){var t=e.nodeName;return t.toLowerCase()===t&&e.scopeName&&""===e.outerText}function B(e){"url(#default#VML)"!==e.currentStyle.behavior&&(e.style.behavior="url(#default#VML)",e.style.display="inline-block",e.style.zoom=1)}function R(e){return e.replace(/([a-z\d])([A-Z]+)/g,"$1-$2").toLowerCase()}function I(e){return!e||e.indexOf("-")<0&&e.indexOf("_")<0?e:e.replace(/[-_][^-_]/g,function(e){return e.charAt(1).toUpperCase()})}function V(e){if(!("classList"in e)){e.classList={node:e};for(var t in Gn)e.classList[t.slice(1)]=Gn[t]}return e.classList}function z(e){try{if("object"==typeof e)return e;e="true"===e?!0:"false"===e?!1:"null"===e?null:+e+""===e?+e:Jn.test(e)?avalon.parseJSON(e):e}catch(t){}return e}function U(e){return e.window&&e.document?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}function q(e,t){if(e.offsetWidth<=0){if(fr.test(tr["@:get"](e,"display"))){var n={node:e};for(var r in ur)n[r]=e.style[r],e.style[r]=ur[r];t.push(n)}var a=e.parentNode;a&&1===a.nodeType&&q(a,t)}}function W(e){var t=e.tagName.toLowerCase();return"input"===t&&/checkbox|radio/.test(e.type)?"checked":t}function X(e,t,n,r){for(var a,i=[],o=" = "+n+".",l=e.length;a=e[--l];)t.hasOwnProperty(a)&&(i.push(a+o+a),r.vars.push(a),"duplex"===r.type&&(e.get=n+"."+a),e.splice(l,1));return i}function Y(e){for(var t=[],n={},r=0;r<e.length;r++){var a=e[r],i=a&&"string"==typeof a.$id?a.$id:a;n[i]||(n[i]=t.push(a))}return t}function G(e,t){return t=t.replace(Ar,"").replace(_r,function(){return"],|"}).replace(Or,function(e,t){return"["+hr(t)}).replace(Nr,function(){return'"],["'}).replace(Mr,function(){return'",'})+"]","return this.filters.$filter("+e+", "+t+")"}function J(e,t,a){var i=a.type,o=a.filters||"",l=t.map(function(e){return String(e.$id).replace(Er,"$1")})+e+i+o,s=Cr(e).concat(),c=[],u=[],f=[],p="";t=Y(t),a.vars=[];for(var d=0,v=t.length;v>d;d++)if(s.length){var h="vm"+At+"_"+d;u.push(h),f.push(t[d]),c.push.apply(c,X(s,t[d],h,a))}if(c.length||"duplex"!==i){"duplex"!==i&&(e.indexOf("||")>-1||e.indexOf("&&")>-1)&&a.vars.forEach(function(t){var n=new RegExp("\\b"+t+"(?:\\.\\w+|\\[\\w+\\])+","ig");e=e.replace(n,function(n,r){var a=n.charAt(t.length),i=e.slice(r+n.length),o=/^\s*\(/.test(i);if("."===a||"["===a||o){var l="var"+String(Math.random()).replace(/^0\./,"");if(o){var s=n.split(".");if(s.length>2){var u=s.pop();return c.push(l+" = "+s.join(".")),l+"."+u}return n}return c.push(l+" = "+n),l}return n})}),a.args=f,delete a.vars;var m=Tr.get(l);if(m)return void(a.evaluator=m);if(p=c.join(", "),p&&(p="var "+p),/\S/.test(o)){if(!/text|html/.test(a.type))throw Error("ms-"+a.type+"不支持过滤器");e="\nvar ret"+At+" = "+e+";\r\n",e+=G("ret"+At,o);try{m=Function.apply(r,u.concat("'use strict';\n"+p+e)),a.evaluator=Tr.put(l,function(){return m.apply(avalon,arguments)})}catch(g){n("debug: parse error,"+g.message)}return void(s=c=u=null)}if("duplex"===i){var y="'use strict';\nreturn function(vvv){\n "+p+";\n if(!arguments.length){\n return "+e+"\n }\n "+(kr.test(e)?e:s.get)+"= vvv;\n} ";try{m=Function.apply(r,u.concat(y)),a.evaluator=Tr.put(l,m)}catch(g){n("debug: parse error,"+g.message)}return void(s=c=u=null)}if("on"===i){-1===e.indexOf("(")?e+=".call(this, $event)":e=e.replace("(",".call(this,"),u.push("$event"),e="\nreturn "+e+";";var b=e.lastIndexOf("\nreturn"),x=e.slice(0,b),w=e.slice(b);e=x+"\n"+w}else e="\nreturn "+e+";";try{m=Function.apply(r,u.concat("'use strict';\n"+p+e)),a.evaluator=Tr.put(l,m)}catch(g){n("debug: parse error,"+g.message)}s=c=u=null}}function Z(e){var t=mn.test(e);if(t){var n=st(e);return 1===n.length?n[0].value:n.map(function(e){return e.expr?"("+e.value+")":hr(e.value)}).join(" + ")}return e}function Q(e,t,n,r){e=e||"",J(e,t,n),n.evaluator&&!r&&(n.handler=en[n.handlerName||n.type],avalon.injectBinding(n))}function K(e,t,n){var r=setTimeout(function(){var a=e.innerHTML;clearTimeout(r),a===n?t():K(e,t,a)})}function et(e,t){var n=e.getAttribute("avalonctrl")||t.$id;e.setAttribute("avalonctrl",n),t.$events.expr=e.tagName+'[avalonctrl="'+n+'"]'}function tt(e,t){for(var n,r=0;n=e[r++];)n.vmodels=t,Kt[n.type](n,t),n.evaluator&&n.element&&1===n.element.nodeType&&n.element.removeAttribute(n.name);e.length=0}function nt(e,t){return e.priority-t.priority}function rt(e,t,r){var a=!0;if(t.length){for(var i,o=Xr?Xr(e):e.attributes,l=[],s=[],c={},u={},f=0;i=o[f++];)if(i.specified&&(r=i.name.match(Dr))){var p=r[1],d=r[2]||"",v=i.value,h=i.name;if(u[h])continue;if(u[h]=1,Fr[p]?(d=p,p="on"):Br[p]&&("enabled"===p&&(n("warning!ms-enabled或ms-attr-enabled已经被废弃"),p="disabled",v="!("+v+")"),d=p,p="attr",h="ms-"+p+"-"+d,s.push([i.name,h,v])),c[h]=v,"function"==typeof Kt[p]){var m=v.replace(Hr,""),g=v!==m,y={type:p,param:d,element:e,name:h,value:m,oneTime:g,uuid:h+"-"+j(e),priority:(Pr[p]||10*p.charCodeAt(0))+(Number(d.replace(/\D/g,""))||0)};if("html"===p||"text"===p){var b=lt(v);avalon.mix(y,b),y.filters=y.filters.replace(Yr,function(){return y.type="html",y.group=1,""})}else if("duplex"===p)var x=h;else"ms-if-loop"===h&&(y.priority+=100);l.push(y),"widget"===p&&(e.msData=e.msData||c)}}if(l.length){for(l.sort(nt),s.forEach(function(t){n("warning!请改用"+t[1]+"代替"+t[0]+"!"),e.removeAttribute(t[0]),e.setAttribute(t[1],t[2])}),x&&c["ms-attr-value"]&&!e.scopeName&&"text"===e.type&&n("warning!一个控件不能同时定义ms-attr-value与"+x),f=0;y=l[f];f++){if(p=y.type,Rr.test(p))return tt(l.slice(0,f+1),t);a&&(a=!Ir.test(p))}tt(l,t)}}a&&!Sr[e.tagName]&&yn.test(e.innerHTML.replace(Jr,"<").replace(Zr,">"))&&(Lr&&Lr(e),at(e,t))}function at(e,t){var n=avalon.slice(e.childNodes);it(n,t)}function it(e,t){for(var n,r=0;n=e[r++];)switch(n.nodeType){case 1:ot(n,t),n.msCallback&&(n.msCallback(),n.msCallback=void 0);break;case 3:mn.test(n.nodeValue)&&ct(n,t,r)}}function ot(e,t,r){var a=e.getAttribute("ms-skip");if(!e.getAttributeNode)return n("warning "+e.tagName+" no getAttributeNode method");var i=e.getAttributeNode("ms-important"),o=e.getAttributeNode("ms-controller");if("string"!=typeof a){if(r=i||o){var l=avalon.vmodels[r.value];if(!l)return;t=r===i?[l]:[l].concat(t);var s=r.name;e.removeAttribute(s),avalon(e).removeClass(s),et(e,l)}rt(e,t)}}function lt(e){if(e.indexOf("|")>0){var t=e.replace(Qr,function(e){return Array(e.length+1).join("1")}),n=t.replace(Gr,"ᄢ㍄").indexOf("|");if(n>-1)return{filters:e.slice(n),value:e.slice(0,n),expr:!0}}return{value:e,filters:"",expr:!0}}function st(e){for(var t,n,r=[],a=0;;){if(n=e.indexOf(vn,a),-1===n)break;if(t=e.slice(a,n),t&&r.push({value:t,filters:"",expr:!1}),a=n+vn.length,n=e.indexOf(hn,a),-1===n)break;t=e.slice(a,n),t&&r.push(lt(t)),a=n+hn.length}return t=e.slice(a),t&&r.push({value:t,expr:!1,filters:""}),r}function ct(e,t){var n=[],r=st(e.data);if(r.length){for(var a,i=0;a=r[i++];){var o=_t.createTextNode(a.value);a.expr&&(a.value=a.value.replace(Hr,function(){return a.oneTime=!0,""}),a.type="text",a.element=o,a.filters=a.filters.replace(Yr,function(){return a.type="html",""}),n.push(a)),qt.appendChild(o)}e.parentNode.replaceChild(qt,e),n.length&&tt(n,t)}}function ut(e,t,n){var r=e.templateCache&&e.templateCache[t];if(r){for(var a,i=_t.createDocumentFragment();a=r.firstChild;)i.appendChild(a);return i}return avalon.parseHTML(n)}function ft(e){return null==e?"":e}function pt(e,t,n){return t.param.replace(/\w+/g,function(r){var a=avalon.duplexHooks[r];a&&"function"==typeof a[n]&&(e=a[n](e,t))}),e}function dt(){for(var e=ca.length-1;e>=0;e--){var t=ca[e];t()===!1&&ca.splice(e,1)}ca.length||clearInterval(sa)}function vt(e,t,n,r){var a=e.template.cloneNode(!0),i=avalon.slice(a.childNodes);a.insertBefore(_t.createComment(e.signature),a.firstChild),t.appendChild(a);var o=[n].concat(e.vmodels),l={nodes:i,vmodels:o};r.push(l)}function ht(e){for(var t,n=[],r=e.element.parentNode.childNodes,a=0;t=r[a++];)if(t.nodeValue===e.signature)n.push(t);else if(t.nodeValue===e.signature+":end")break;return n}function mt(e,t,n){for(;;){var r=t.previousSibling;if(!r)break;if(r.parentNode.removeChild(r),n&&n.call(r),r===e)break}}function gt(){var e=g({$key:"",$outer:{},$host:{},$val:{get:function(){return this.$host[this.$key]},set:function(e){this.$host[this.$key]=e}}},{$val:1});return e.$id=Yt("$proxy$with"),e}function yt(e,t,n){e=e||pa.pop(),e?e.$reinitialize():e=gt();var r=n.$repeat;return e.$key=t,e.$host=r,e.$outer=n.$outer,r.$events?e.$events.$val=r.$events[t]:e.$events={},e}function bt(e){xt(e)}function xt(e){e.forEach(function(e){Ct(e,da)}),e.length=0}function wt(e){var t={$host:[],$outer:{},$index:0,$first:!1,$last:!1,$remove:avalon.noop};t[e]={get:function(){var t=this.$events,n=t.$index;t.$index=t[e];try{return this.$host[this.$index]}finally{t.$index=n}},set:function(e){try{var t=this.$events,n=t.$index;t.$index=[],this.$host.set(this.$index,e)}finally{t.$index=n}}};var n={$last:1,$first:1,$index:1},r=g(t,n);return r.$id=Yt("$proxy$each"),r}function $t(e,t){for(var n,r=t.param||"el",a=0,i=da.length;i>a;a++){var o=da[a];o&&o.hasOwnProperty(r)&&(n=o,da.splice(a,1))}n||(n=wt(r));var l=t.$repeat,s=l.length-1;return n.$index=e,n.$first=0===e,n.$last=e===s,n.$host=l,n.$outer=t.$outer,n.$remove=function(){return l.removeAt(n.$index)},n}function Ct(e,t){for(var n in e.$events){var r=e.$events[n];Array.isArray(r)&&(r.forEach(function(e){"object"==typeof e&&D(e)}),r.length=0)}e.$host=e.$outer={},t.unshift(e)>h.maxRepeatSize&&t.pop()}function Tt(e,t){var n="_"+e;if(!Tt[n]){var r=_t.createElement(e);Ut.appendChild(r),t=zt?getComputedStyle(r,null).display:r.currentStyle.display,Ut.removeChild(r),Tt[n]=t}return Tt[n]}function kt(e,t,n,r){e=(e+"").replace(/[^0-9+\-Ee.]/g,"");var a=isFinite(+e)?+e:0,i=isFinite(+t)?Math.abs(t):3,o=r||",",l=n||".",s="",c=function(e,t){var n=Math.pow(10,t);return""+(Math.round(e*n)/n).toFixed(t)};return s=(i?c(a,i):""+Math.round(a)).split("."),s[0].length>3&&(s[0]=s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g,o)),(s[1]||"").length<i&&(s[1]=s[1]||"",s[1]+=new Array(i-s[1].length+1).join("0")),s.join(l)}function Et(){try{Ut.doScroll("left"),_a()}catch(e){setTimeout(Et)}}var At=new Date-0,_t=e.document,Ot=_t.getElementsByTagName("head")[0],Nt=Ot.insertBefore(document.createElement("avalon"),Ot.firstChild);Nt.innerHTML="X<style id='avalonStyle'>.avalonHide{ display: none!important }</style>",Nt.setAttribute("ms-skip","1"),Nt.className="avalonHide";var Mt=/\[native code\]/,St="$"+At,jt=!1,Lt=/[^, ]+/g,Ht=/^(?:object|array)$/,Dt=/^\[object SVG\w*Element\]$/,Pt=/^\[object (?:Window|DOMWindow|global)\]$/,Ft=Object.prototype,Bt=Ft.hasOwnProperty,Rt=Ft.toString,It=Array.prototype,Vt=It.slice,zt=e.dispatchEvent,Ut=_t.documentElement,qt=_t.createDocumentFragment(),Wt=_t.createElement("div"),Xt={};"Boolean Number String Function Array Date RegExp Object Error".replace(Lt,function(e){Xt["[object "+e+"]"]=e.toLowerCase()});var Yt=function(e){return e=e||"avalon",String(Math.random()+Math.random()).replace(/\d\.\d{4}/,e)},Gt=o();avalon=function(e){return new avalon.init(e)},avalon.profile=function(){e.console&&avalon.config.profile&&Function.apply.call(console.log,console,arguments)},avalon.nextTick=new function(){function t(){for(var e=a.length,t=0;e>t;t++)a[t]();a=a.slice(e)}var n=e.setImmediate,r=e.MutationObserver;if(n)return n.bind(e);var a=[];if(r){var i=document.createTextNode("avalon");return new r(t).observe(i,{characterData:!0}),function(e){a.push(e),i.data=Math.random()}}return e.VBArray?function(e){a.push(e);var n=_t.createElement("script");n.onreadystatechange=function(){t(),n.onreadystatechange=null,Ot.removeChild(n),n=null},Ot.appendChild(n)}:function(e){setTimeout(e,4)}},avalon.init=function(e){this[0]=this.element=e},avalon.fn=avalon.prototype=avalon.init.prototype,avalon.type=function(e){return null==e?String(e):"object"==typeof e||"function"==typeof e?Xt[Rt.call(e)]||"object":typeof e};var Jt="object"==typeof alert?function(e){try{return/^\s*\bfunction\b/.test(e+"")}catch(t){return!1}}:function(e){return"[object Function]"===Rt.call(e)};avalon.isFunction=Jt,avalon.isWindow=function(e){return e?e==e.document&&e.document!=e:!1},l(e)&&(avalon.isWindow=l);var Zt;for(Zt in avalon({}))break;var Qt="0"!==Zt;avalon.isPlainObject=function(e,t){if(!e||"object"!==avalon.type(e)||e.nodeType||avalon.isWindow(e))return!1;try{if(e.constructor&&!Bt.call(e,"constructor")&&!Bt.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}if(Qt)for(t in e)return Bt.call(e,t);for(t in e);return void 0===t||Bt.call(e,t)},Mt.test(Object.getPrototypeOf)&&(avalon.isPlainObject=function(e){return"[object Object]"===Rt.call(e)&&Object.getPrototypeOf(e)===Ft}),avalon.mix=avalon.fn.mix=function(){var e,t,n,r,a,i,o=arguments[0]||{},l=1,s=arguments.length,c=!1;for("boolean"==typeof o&&(c=o,o=arguments[1]||{},l++),"object"==typeof o||Jt(o)||(o={}),l===s&&(o=this,l--);s>l;l++)if(null!=(e=arguments[l]))for(t in e){n=o[t];try{r=e[t]}catch(u){continue}o!==r&&(c&&r&&(avalon.isPlainObject(r)||(a=Array.isArray(r)))?(a?(a=!1,i=n&&Array.isArray(n)?n:[]):i=n&&avalon.isPlainObject(n)?n:{},o[t]=avalon.mix(c,i,r)):void 0!==r&&(o[t]=r))}return o},avalon.mix({rword:Lt,subscribers:St,version:1.47,ui:{},log:n,slice:zt?function(e,t,n){return Vt.call(e,t,n)}:function(e,t,n){var r=[],a=e.length;if(void 0===n&&(n=a),"number"==typeof n&&isFinite(n)){t=s(t,a),n=s(n,a);for(var i=t;n>i;++i)r[i-t]=e[i]}return r},noop:r,error:function(e,t){throw(t||Error)(e)},oneObject:i,range:function(e,t,n){n||(n=1),null==t&&(t=e||0,e=0);for(var r=-1,a=Math.max(0,Math.ceil((t-e)/n)),i=new Array(a);++r<a;)i[r]=e,e+=n;return i},eventHooks:[],bind:function(e,t,n,r){var a=avalon.eventHooks,i=a[t];"object"==typeof i&&(t=i.type||t,r=i.phase||!!r,n=i.fn?i.fn(e,n):n);var o=zt?n:function(t){n.call(e,v(t))};return zt?e.addEventListener(t,o,r):e.attachEvent("on"+t,o),o},unbind:function(e,t,n,a){var i=avalon.eventHooks,o=i[t],l=n||r;"object"==typeof o&&(t=o.type||t,a=o.phase||!!a),zt?e.removeEventListener(t,l,a):e.detachEvent("on"+t,l)},css:function(e,t,n){e instanceof avalon&&(e=e[0]);var r,a=/[_-]/.test(t)?I(t):t;if(t=avalon.cssName(a)||a,void 0===n||"boolean"==typeof n){r=tr[a+":get"]||tr["@:get"],"background"===t&&(t="backgroundColor");var i=r(e,t);return n===!0?parseFloat(i)||0:i}if(""===n)e.style[t]="";else{if(null==n||n!==n)return;isFinite(n)&&!avalon.cssNumber[a]&&(n+="px"),r=tr[a+":set"]||tr["@:set"],r(e,t,n)}},each:function(e,t){if(e){var n=0;if(c(e))for(var r=e.length;r>n&&t(n,e[n])!==!1;n++);else for(n in e)if(e.hasOwnProperty(n)&&t(n,e[n])===!1)break}},getWidgetData:function(e,t){var n=avalon(e).data(),r={};for(var a in n)0===a.indexOf(t)&&(r[a.replace(t,"").replace(/\w/,function(e){return e.toLowerCase()})]=n[a]);return r},Array:{ensure:function(e,t){return-1===e.indexOf(t)?e.push(t):void 0},removeAt:function(e,t){return!!e.splice(t,1).length},remove:function(e,t){var n=e.indexOf(t);return~n?avalon.Array.removeAt(e,n):!1}}});var Kt=avalon.bindingHandlers={},en=avalon.bindingExecutors={},tn=new function(){function e(e){this.size=0,this.limit=e,this.head=this.tail=void 0,this._keymap={}}var t=e.prototype;return t.put=function(e,t){var n={key:e,value:t};return this._keymap[e]=n,this.tail?(this.tail.newer=n,n.older=this.tail):this.head=n,this.tail=n,this.size===this.limit?this.shift():this.size++,t},t.shift=function(){var e=this.head;e&&(this.head=this.head.newer,this.head.older=e.newer=e.older=this._keymap[e.key]=void 0,delete this._keymap[e.key])},t.get=function(e){var t=this._keymap[e];if(void 0!==t)return t===this.tail?t.value:(t.newer&&(t===this.head&&(this.head=t.newer),t.newer.older=t.older),t.older&&(t.older.newer=t.newer),t.newer=void 0,t.older=this.tail,this.tail&&(this.tail.newer=t),this.tail=t,t.value)},e};if(!"司徒正美".trim){var nn=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;String.prototype.trim=function(){return this.replace(nn,"")}}var rn=!{toString:null}.propertyIsEnumerable("toString"),an=function(){}.propertyIsEnumerable("prototype"),on=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],ln=on.length;if(Object.keys||(Object.keys=function(e){var t=[],n=an&&"function"==typeof e;if("string"==typeof e||e&&e.callee)for(var r=0;r<e.length;++r)t.push(String(r));else for(var a in e)n&&"prototype"===a||!Bt.call(e,a)||t.push(String(a));if(rn)for(var i=e.constructor,o=i&&i.prototype===e,l=0;ln>l;l++){var s=on[l];o&&"constructor"===s||!Bt.call(e,s)||t.push(s)}return t}),Array.isArray||(Array.isArray=function(e){return"[object Array]"===Rt.call(e)}),r.bind||(Function.prototype.bind=function(e){if(arguments.length<2&&void 0===e)return this;var t=this,n=arguments;return function(){var r,a=[];for(r=1;r<n.length;r++)a.push(n[r]);for(r=0;r<arguments.length;r++)a.push(arguments[r]);return t.apply(e,a)}}),Mt.test([].map)||avalon.mix(It,{indexOf:function(e,t){var n=this.length,r=~~t;for(0>r&&(r+=n);n>r;r++)if(this[r]===e)return r;return-1},lastIndexOf:function(e,t){var n=this.length,r=null==t?n-1:t;for(0>r&&(r=Math.max(0,n+r));r>=0;r--)if(this[r]===e)return r;return-1},forEach:u("","_",""),filter:u("r=[],j=0,","if(_)r[j++]=this[i]","return r"),map:u("r=[],","r[i]=_","return r"),some:u("","if(_)return true","return false"),every:u("","if(!_)return false","return true")}),avalon.contains=f,_t.contains||(_t.contains=function(e){return f(_t,e)}),e.SVGElement){_t.createTextNode("x").contains||(Node.prototype.contains=function(e){return!!(16&this.compareDocumentPosition(e))});var sn="http://www.w3.org/2000/svg",cn=_t.createElementNS(sn,"svg");cn.innerHTML='<circle cx="50" cy="50" r="40" fill="red" />',Dt.test(cn.firstChild)||Object.defineProperties(SVGElement.prototype,{outerHTML:{enumerable:!0,configurable:!0,get:p,set:function(e){var t=this.tagName.toLowerCase(),n=this.parentNode,r=avalon.parseHTML(e);if("svg"===t)n.insertBefore(r,this);else{var a=_t.createDocumentFragment();d(r,a),n.insertBefore(a,this)}n.removeChild(this)}},innerHTML:{enumerable:!0,configurable:!0,get:function(){var e=this.outerHTML,t=new RegExp("<"+this.nodeName+'\\b(?:(["\'])[^"]*?(\\1)|[^>])*>',"i"),n=new RegExp("</"+this.nodeName+">$","i");return e.replace(t,"").replace(n,"")},set:function(e){if(avalon.clearHTML){avalon.clearHTML(this);var t=avalon.parseHTML(e);d(t,this)}}}})}!Ut.outerHTML&&e.HTMLElement&&HTMLElement.prototype.__defineGetter__("outerHTML",p);var un=/^(?:mouse|contextmenu|drag)|click/,fn=avalon.eventHooks;if("onmouseenter"in Ut||avalon.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){fn[e]={type:t,fn:function(t,n){return function(r){var a=r.relatedTarget;return a&&(a===t||16&t.compareDocumentPosition(a))?void 0:(delete r.type,r.type=e,n.call(t,r))}}}}),avalon.each({AnimationEvent:"animationend",WebKitAnimationEvent:"webkitAnimationEnd"},function(t,n){e[t]&&!fn.animationend&&(fn.animationend={type:n})}),"oninput"in _t.createElement("input")||(fn.input={type:"propertychange",fn:function(e,t){return function(n){return"value"===n.propertyName?(n.type="input",t.call(e,n)):void 0}}}),void 0===_t.onmousewheel){var pn=void 0!==_t.onwheel?"wheel":"DOMMouseScroll",dn="wheel"===pn?"deltaY":"detail";fn.mousewheel={type:pn,fn:function(e,t){return function(n){n.wheelDeltaY=n.wheelDelta=n[dn]>0?-120:120,n.wheelDeltaX=0,Object.defineProperty&&Object.defineProperty(n,"type",{value:"mousewheel"}),t.call(e,n)}}}}var vn,hn,mn,gn,yn,bn=/[-.*+?^${}()|[\]\/\\]/g,xn={interpolate:function(e){if(vn=e[0],hn=e[1],vn===hn)throw new SyntaxError("openTag===closeTag");var t=vn+"test"+hn;if(Wt.innerHTML=t,Wt.innerHTML!==t&&Wt.innerHTML.indexOf("&lt;")>-1)throw new SyntaxError("此定界符不合法");h.openTag=vn,h.closeTag=hn,Wt.innerHTML="";var n=m(vn),r=m(hn);mn=new RegExp(n+"(.*?)"+r),gn=new RegExp(n+"(.*?)"+r,"g"),yn=new RegExp(n+".*?"+r+"|\\sms-")}};h.debug=!0,h.plugins=xn,h.plugins.interpolate(["{{","}}"]),h.paths={},h.shim={},h.maxRepeatSize=100,avalon.config=h;var wn=/(\w+)\[(avalonctrl)="(\S+)"\]/,$n=_t.querySelectorAll?function(e){return _t.querySelectorAll(e)}:function(e){for(var t,n=e.match(wn),r=_t.getElementsByTagName(n[1]),a=[],i=0;t=r[i++];)t.getAttribute(n[2])===n[3]&&a.push(t);return a},Cn={$watch:function(e,t){if("function"==typeof t){var n=this.$events[e];n?n.push(t):this.$events[e]=[t]}else this.$events=this.$watch.backup;return this},$unwatch:function(e,t){var n=arguments.length;if(0===n)this.$watch.backup=this.$events,this.$events={};else if(1===n)this.$events[e]=[];else for(var r=this.$events[e]||[],a=r.length;~--a<0;)if(r[a]===t)return r.splice(a,1);return this},$fire:function(e){var t,n,r,a;/^(\w+)!(\S+)$/.test(e)&&(t=RegExp.$1,e=RegExp.$2);var i=this.$events;if(i){var o=Vt.call(arguments,1),l=[e].concat(o);if("all"===t)for(n in avalon.vmodels)r=avalon.vmodels[n],r!==this&&r.$fire.apply(r,l);else if("up"===t||"down"===t){var s=i.expr?$n(i.expr):[];if(0===s.length)return;for(n in avalon.vmodels)if(r=avalon.vmodels[n],r!==this&&r.$events.expr){var c=$n(r.$events.expr);if(0===c.length)continue;It.forEach.call(c,function(e){It.forEach.call(s,function(n){var a="down"===t?n.contains(e):e.contains(n);a&&(e._avalon=r)})})}var u=_t.getElementsByTagName("*"),f=[];for(It.forEach.call(u,function(e){e._avalon&&(f.push(e._avalon),e._avalon="",e.removeAttribute("_avalon"))}),"up"===t&&f.reverse(),n=0;(a=f[n++])&&a.$fire.apply(a,l)!==!1;);}else{var p=i[e]||[],d=i.$all||[];for(n=0;a=p[n++];)Jt(a)&&a.apply(this,o);for(n=0;a=d[n++];)Jt(a)&&a.apply(this,arguments)}}}},Tn=avalon.vmodels={};avalon.define=function(e,t){var a=e.$id||e;if(a||n("warning: vm必须指定$id"),Tn[a]&&n("warning: "+a+" 已经存在于avalon.vmodels中"),"object"==typeof e)var i=g(e);else{var o={$watch:r};t(o),i=g(o),jt=!0,t(i),jt=!1}return i.$id=a,Tn[a]=i};var kn=String("$id,$watch,$unwatch,$fire,$events,$model,$skipArray,$reinitialize").match(Lt),En=Object.defineProperty,An=!0;try{En({},"_",{value:"x"});var _n=Object.defineProperties}catch(On){An=!1}var Nn=Object.is||function(e,t){return 0===e&&0===t?1/e===1/t:e!==e?t!==t:e===t},Mn=zt?function(e){var t={};for(var n in e)t[n]={get:e[n],set:e[n],enumerable:!0,configurable:!0};return t}:function(e){return e};if(!An&&("__defineGetter__"in avalon&&(En=function(e,t,n){return"value"in n&&(e[t]=n.value),"get"in n&&e.__defineGetter__(t,n.get),"set"in n&&e.__defineSetter__(t,n.set),e},_n=function(e,t){for(var n in t)t.hasOwnProperty(n)&&En(e,n,t[n]);return e}),Gt)){var Sn={};e.execScript(["Function parseVB(code)"," ExecuteGlobal(code)","End Function"].join("\n"),"VBScript"),_n=function(t,n,r){var a=[];a.push("\r\n Private [__data__], [__proxy__]"," Public Default Function [__const__](d"+At+", p"+At+")"," Set [__data__] = d"+At+": set [__proxy__] = p"+At," Set [__const__] = Me"," End Function");for(t in r)n.hasOwnProperty(t)||a.push(" Public ["+t+"]");kn.forEach(function(e){n.hasOwnProperty(e)||a.push(" Public ["+e+"]")}),a.push(" Public [hasOwnProperty]");for(t in n)a.push(" Public Property Let ["+t+"](val"+At+")",' Call [__proxy__](Me,[__data__], "'+t+'", val'+At+")"," End Property"," Public Property Set ["+t+"](val"+At+")",' Call [__proxy__](Me,[__data__], "'+t+'", val'+At+")"," End Property"," Public Property Get ["+t+"]"," On Error Resume Next"," Set["+t+'] = [__proxy__](Me,[__data__],"'+t+'")'," If Err.Number <> 0 Then"," ["+t+'] = [__proxy__](Me,[__data__],"'+t+'")'," End If"," On Error Goto 0"," End Property");a.push("End Class");var i=a.join("\r\n"),o=Sn[i];o||(o=Yt("VBClass"),e.parseVB("Class "+o+i),e.parseVB(["Function "+o+"Factory(a, b)"," Dim o"," Set o = (New "+o+")(a, b)"," Set "+o+"Factory = o","End Function"].join("\r\n")),Sn[i]=o);var l=e[o+"Factory"](n,A);return l}}var jn=It.splice,Ln={_splice:jn,_fire:function(e,t,n){S(this.$events[St],e,t,n)},size:function(){return this._.length},pushArray:function(e){var t=e.length,n=this.length;return t&&(It.push.apply(this.$model,e),O.call(this,"add",n,t,Math.max(0,n-1))),t+n},push:function(){var e,t=[],n=arguments.length;for(e=0;n>e;e++)t[e]=arguments[e];return this.pushArray(t)},unshift:function(){var e=arguments.length,t=this.length;return e&&(It.unshift.apply(this.$model,arguments),O.call(this,"add",0,e,0)),e+t},shift:function(){if(this.length){var e=this.$model.shift();return O.call(this,"del",0,1,0),e}},pop:function(){var e=this.length;if(e){var t=this.$model.pop();return O.call(this,"del",e-1,1,Math.max(0,e-2)),t}},splice:function(e){var t,n=arguments.length,r=[],a=jn.apply(this.$model,arguments);return a.length&&(r.push("del",e,a.length,0),t=!0),n>2&&(t?r.splice(3,1,0,"add",e,n-2):r.push("add",e,n-2,0),t=!0),t?O.apply(this,r):[]},contains:function(e){return-1!==this.indexOf(e)
2
+ },remove:function(e){return this.removeAt(this.indexOf(e))},removeAt:function(e){return e>=0?(this.$model.splice(e,1),O.call(this,"del",e,1,0)):[]},clear:function(){return this.$model.length=this.length=this._.length=0,this._fire("clear",0),this},removeAll:function(e){if(Array.isArray(e))for(var t=this.length-1;t>=0;t--)-1!==e.indexOf(this[t])&&this.removeAt(t);else if("function"==typeof e)for(t=this.length-1;t>=0;t--){var n=this[t];e(n,t)&&this.removeAt(t)}else this.clear()},ensure:function(e){return this.contains(e)||this.push(e),this},set:function(e,t){if(e<this.length&&e>-1){var n=avalon.type(t);t&&t.$model&&(t=t.$model);var r=this[e];if("object"===n)for(var a in t)r.hasOwnProperty(a)&&(r[a]=t[a]);else"array"===n?r.clear().push.apply(r,t):r!==t&&(this[e]=t,this.$model[e]=t,this._fire("set",e,t))}return this}};"sort,reverse".replace(Lt,function(e){Ln[e]=function(){var t,n=this.$model,r=n.concat(),a=Math.random(),i=[];It[e].apply(n,arguments);for(var o=0,l=r.length;l>o;o++){var s=n[o],c=r[o];if(Nn(s,c))i.push(o);else{var u=r.indexOf(s);i.push(u),r[u]=a,t=!0}}return t&&(N(this,i),this._fire("move",i),this._fire("index",0)),this}});var Hn=function(){var e,t=[];return{begin:function(n){t.push(e),e=n},end:function(){e=t.pop()},collectDependency:function(t,n){e&&e.callback(t,n)}}}(),Dn=/^(duplex|on)$/;avalon.injectBinding=function(e){var t=e.evaluator;if(t){Hn.begin({callback:function(t,n){M(t.$events[n._name],e)}});try{var r=Dn.test(e.type)?e:t.apply(0,e.args);void 0===r&&delete e.evaluator,e.handler(r,e.element,e)}catch(a){n("warning:exception throwed in [avalon.injectBinding] ",a),delete e.evaluator;var i=e.element;if(3===i.nodeType){var o=i.parentNode;h.commentInterpolate?o.replaceChild(_t.createComment(e.value),i):i.data=vn+(e.oneTime?"::":"")+e.value+hn}}finally{Hn.end()}}};var Pn=0,Fn=avalon.$$subscribers=[],Bn=new Date,Rn={},In={area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],col:[2,"<table><colgroup>","</colgroup></table>"],legend:[1,"<fieldset>","</fieldset>"],option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],tr:[2,"<table>","</table>"],td:[3,"<table><tr>","</tr></table>"],g:[1,'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">',"</svg>"],_default:zt?[0,"",""]:[1,"X<div>","</div>"]};In.th=In.td,In.optgroup=In.option,In.tbody=In.tfoot=In.colgroup=In.caption=In.thead,String("circle,defs,ellipse,image,line,path,polygon,polyline,rect,symbol,text,use").replace(Lt,function(e){In[e]=In.g});var Vn=/<([\w:]+)/,zn=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,Un=zt?/[^\d\D]/:/(<(?:script|link|style|meta|noscript))/gi,qn=i(["","text/javascript","text/ecmascript","application/ecmascript","application/javascript"]),Wn=/<(?:tb|td|tf|th|tr|col|opt|leg|cap|area)/,Xn=_t.createElement("script"),Yn=/<|&#?\w+;/;avalon.parseHTML=function(e){var t=qt.cloneNode(!1);if("string"!=typeof e)return t;if(!Yn.test(e))return t.appendChild(_t.createTextNode(e)),t;e=e.replace(zn,"<$1></$2>").trim();var n,r,a=(Vn.exec(e)||["",""])[1].toLowerCase(),i=In[a]||In._default,o=Wt;zt||(e=e.replace(Un,"<br class=msNoScope>$1")),o.innerHTML=i[1]+e+i[2];var l=o.getElementsByTagName("script");if(l.length)for(var s,c=0;s=l[c++];)qn[s.type]&&(r=Xn.cloneNode(!1),It.forEach.call(s.attributes,function(e){e&&e.specified&&(r[e.name]=e.value,r.setAttribute(e.name,e.value))}),r.text=s.text,s.parentNode.replaceChild(r,s));if(!zt){var u="X<div>"===i[1]?o.lastChild.firstChild:o.lastChild;if(u&&"TABLE"===u.tagName&&"tbody"!==a)for(l=u.childNodes,c=0;s=l[c++];)if("TBODY"===s.tagName&&!s.innerHTML){u.removeChild(s);break}l=o.getElementsByTagName("br");for(var f=l.length;s=l[--f];)"msNoScope"===s.className&&s.parentNode.removeChild(s);for(l=o.all,c=0;s=l[c++];)F(s)&&B(s)}for(c=i[0];c--;o=o.lastChild);for(;n=o.firstChild;)t.appendChild(n);return t},avalon.innerHTML=function(e,t){if(!zt&&!Un.test(t)&&!Wn.test(t))try{return void(e.innerHTML=t)}catch(n){}var r=this.parseHTML(t);this.clearHTML(e).appendChild(r)},avalon.clearHTML=function(e){for(e.textContent="";e.firstChild;)e.removeChild(e.firstChild);return e};var Gn={_toString:function(){var e=this.node,t=e.className,n="string"==typeof t?t:t.baseVal;return n.split(/\s+/).join(" ")},_contains:function(e){return(" "+this+" ").indexOf(" "+e+" ")>-1},_add:function(e){this.contains(e)||this._set(this+" "+e)},_remove:function(e){this._set((" "+this+" ").replace(" "+e+" "," "))},__set:function(e){e=e.trim();var t=this.node;Dt.test(t)?t.setAttribute("class",e):t.className=e}};"add,remove".replace(Lt,function(e){avalon.fn[e+"Class"]=function(t){var n=this[0];return t&&"string"==typeof t&&n&&1===n.nodeType&&t.replace(/\S+/g,function(t){V(n)[e](t)}),this}}),avalon.fn.mix({hasClass:function(e){var t=this[0]||{};return 1===t.nodeType&&V(t).contains(e)},toggleClass:function(e,t){for(var n,r=0,a=String(e).split(/\s+/),i="boolean"==typeof t;n=a[r++];){var o=i?t:!this.hasClass(n);this[o?"addClass":"removeClass"](n)}return this},attr:function(e,t){return 2===arguments.length?(this[0].setAttribute(e,t),this):this[0].getAttribute(e)},data:function(e,t){switch(e="data-"+R(e||""),arguments.length){case 2:return this.attr(e,t),this;case 1:var n=this.attr(e);return z(n);case 0:var r={};return It.forEach.call(this[0].attributes,function(t){t&&(e=t.name,e.indexOf("data-")||(e=I(e.slice(5)),r[e]=z(t.value)))}),r}},removeData:function(e){return e="data-"+R(e),this[0].removeAttribute(e),this},css:function(e,t){if(avalon.isPlainObject(e))for(var n in e)avalon.css(this,n,e[n]);else var r=avalon.css(this,e,t);return void 0!==r?r:this},position:function(){var e,t,n=this[0],r={top:0,left:0};if(n)return"fixed"===this.css("position")?t=n.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),"HTML"!==e[0].tagName&&(r=e.offset()),r.top+=avalon.css(e[0],"borderTopWidth",!0),r.left+=avalon.css(e[0],"borderLeftWidth",!0),r.top-=e.scrollTop(),r.left-=e.scrollLeft()),{top:t.top-r.top-avalon.css(n,"marginTop",!0),left:t.left-r.left-avalon.css(n,"marginLeft",!0)}},offsetParent:function(){for(var e=this[0].offsetParent;e&&"static"===avalon.css(e,"position");)e=e.offsetParent;return avalon(e||Ut)},bind:function(e,t,n){return this[0]?avalon.bind(this[0],e,t,n):void 0},unbind:function(e,t,n){return this[0]&&avalon.unbind(this[0],e,t,n),this},val:function(e){var t=this[0];if(t&&1===t.nodeType){var n=0===arguments.length,r=n?":get":":set",a=dr[W(t)+r];if(a)var i=a(t,e);else{if(n)return(t.value||"").replace(/\r/g,"");t.value=e}}return n?i:this}});var Jn=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,Zn=/^[\],:{}\s]*$/,Qn=/(?:^|:|,)(?:\s*\[)+/g,Kn=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,er=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g;avalon.parseJSON=e.JSON?JSON.parse:function(e){if("string"==typeof e){if(e=e.trim(),e&&Zn.test(e.replace(Kn,"@").replace(er,"]").replace(Qn,"")))return new Function("return "+e)();avalon.error("Invalid JSON: "+e)}return e},avalon.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){avalon.fn[e]=function(n){var r=this[0]||{},a=U(r),i="scrollTop"===e;return arguments.length?void(a?a.scrollTo(i?avalon(a).scrollLeft():n,i?n:avalon(a).scrollTop()):r[e]=n):a?t in a?a[t]:Ut[e]:r[e]}});var tr=avalon.cssHooks={},nr=["","-webkit-","-o-","-moz-","-ms-"],rr={"float":zt?"cssFloat":"styleFloat"};if(avalon.cssNumber=i("animationIterationCount,columnCount,order,flex,flexGrow,flexShrink,fillOpacity,fontWeight,lineHeight,opacity,orphans,widows,zIndex,zoom"),avalon.cssName=function(e,t,n){if(rr[e])return rr[e];t=t||Ut.style;for(var r=0,a=nr.length;a>r;r++)if(n=I(nr[r]+e),n in t)return rr[e]=n;return null},tr["@:set"]=function(e,t,n){try{e.style[t]=n}catch(r){}},e.getComputedStyle)tr["@:get"]=function(e,t){if(!e||!e.style)throw new Error("getComputedStyle要求传入一个节点 "+e);var n,r=getComputedStyle(e,null);return r&&(n="filter"===t?r.getPropertyValue(t):r[t],""===n&&(n=e.style[t])),n},tr["opacity:get"]=function(e){var t=tr["@:get"](e,"opacity");return""===t?"1":t};else{var ar=/^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,ir=/^(top|right|bottom|left)$/,or=/alpha\([^)]*\)/i,lr=!!e.XDomainRequest,sr="DXImageTransform.Microsoft.Alpha",cr={thin:lr?"1px":"2px",medium:lr?"3px":"4px",thick:lr?"5px":"6px"};tr["@:get"]=function(e,t){var n=e.currentStyle,r=n[t];if(ar.test(r)&&!ir.test(r)){var a=e.style,i=a.left,o=e.runtimeStyle.left;e.runtimeStyle.left=n.left,a.left="fontSize"===t?"1em":r||0,r=a.pixelLeft+"px",a.left=i,e.runtimeStyle.left=o}return"medium"===r&&(t=t.replace("Width","Style"),"none"===n[t]&&(r="0px")),""===r?"auto":cr[r]||r},tr["opacity:set"]=function(e,t,n){var r=e.style,a=isFinite(n)&&1>=n?"alpha(opacity="+100*n+")":"",i=r.filter||"";r.zoom=1,r.filter=(or.test(i)?i.replace(or,a):i+" "+a).trim(),r.filter||r.removeAttribute("filter")},tr["opacity:get"]=function(e){var t=e.filters.alpha||e.filters[sr],n=t&&t.enabled?t.opacity:100;return n/100+""}}"top,left".replace(Lt,function(e){tr[e+":get"]=function(t){var n=tr["@:get"](t,e);return/px$/.test(n)?n:avalon(t).position()[e]+"px"}});var ur={position:"absolute",visibility:"hidden",display:"block"},fr=/^(none|table(?!-c[ea]).+)/;"Width,Height".replace(Lt,function(e){var t=e.toLowerCase(),n="client"+e,r="scroll"+e,a="offset"+e;tr[t+":get"]=function(t,n,r){var i=-4;"number"==typeof r&&(i=r),n="Width"===e?["Left","Right"]:["Top","Bottom"];var o=t[a];return 2===i?o+avalon.css(t,"margin"+n[0],!0)+avalon.css(t,"margin"+n[1],!0):(0>i&&(o=o-avalon.css(t,"border"+n[0]+"Width",!0)-avalon.css(t,"border"+n[1]+"Width",!0)),-4===i&&(o=o-avalon.css(t,"padding"+n[0],!0)-avalon.css(t,"padding"+n[1],!0)),o)},tr[t+"&get"]=function(e){var n=[];q(e,n);for(var r,a=tr[t+":get"](e),i=0;r=n[i++];){e=r.node;for(var o in r)"string"==typeof r[o]&&(e.style[o]=r[o])}return a},avalon.fn[t]=function(i){var o=this[0];if(0===arguments.length){if(o.setTimeout)return o["inner"+e]||o.document.documentElement[n]||o.document.body[n];if(9===o.nodeType){var l=o.documentElement;return Math.max(o.body[r],l[r],o.body[a],l[a],l[n])}return tr[t+"&get"](o)}return this.css(t,i)},avalon.fn["inner"+e]=function(){return tr[t+":get"](this[0],void 0,-2)},avalon.fn["outer"+e]=function(e){return tr[t+":get"](this[0],void 0,e===!0?2:0)}}),avalon.fn.offset=function(){var e=this[0],t={left:0,top:0};if(!e||!e.tagName||!e.ownerDocument)return t;var n=e.ownerDocument,r=n.body,a=n.documentElement,i=n.defaultView||n.parentWindow;if(!avalon.contains(a,e))return t;e.getBoundingClientRect&&(t=e.getBoundingClientRect());var o=a.clientTop||r.clientTop,l=a.clientLeft||r.clientLeft,s=Math.max(i.pageYOffset||0,a.scrollTop,r.scrollTop),c=Math.max(i.pageXOffset||0,a.scrollLeft,r.scrollLeft);return{top:t.top+s-o,left:t.left+c-l}};var pr=/^<option(?:\s+\w+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+))?)*\s+value[\s=]/i,dr={"option:get":Gt?function(e){return pr.test(e.outerHTML)?e.value:e.text.trim()}:function(e){return e.value},"select:get":function(e,t){for(var n,r=e.options,a=e.selectedIndex,i=dr["option:get"],o="select-one"===e.type||0>a,l=o?null:[],s=o?a+1:r.length,c=0>a?s:o?a:0;s>c;c++)if(n=r[c],(n.selected||c===a)&&!n.disabled){if(t=i(n),o)return t;l.push(t)}return l},"select:set":function(e,t,n){t=[].concat(t);for(var r,a=dr["option:get"],i=0;r=e.options[i++];)(r.selected=t.indexOf(a(r))>-1)&&(n=!0);n||(e.selectedIndex=-1)}},vr={"\b":"\\b"," ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},hr=e.JSON&&JSON.stringify||function(e){return'"'+e.replace(/[\\\"\x00-\x1f]/g,function(e){var t=vr[e];return"string"==typeof t?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"'},mr=["break,case,catch,continue,debugger,default,delete,do,else,false","finally,for,function,if,in,instanceof,new,null,return,switch,this","throw,true,try,typeof,var,void,while,with","abstract,boolean,byte,char,class,const,double,enum,export,extends","final,float,goto,implements,import,int,interface,long,native","package,private,protected,public,short,static,super,synchronized","throws,transient,volatile","arguments,let,yield,undefined"].join(","),gr=/\/\*[\w\W]*?\*\/|\/\/[^\n]*\n|\/\/[^\n]*$|"(?:[^"\\]|\\[\w\W])*"|'(?:[^'\\]|\\[\w\W])*'|[\s\t\n]*\.[\s\t\n]*[$\w\.]+/g,yr=/[^\w$]+/g,br=new RegExp(["\\b"+mr.replace(/,/g,"\\b|\\b")+"\\b"].join("|"),"g"),xr=/\b\d[^,]*/g,wr=/^,+|,+$/g,$r=new tn(512),Cr=function(e){var t=","+e.trim(),n=$r.get(t);if(n)return n;var r=e.replace(gr,"").replace(yr,",").replace(br,"").replace(xr,"").replace(wr,"").split(/^$|,+/);return $r.put(t,Y(r))},Tr=new tn(128),kr=/\w\[.*\]|\w\.\w/,Er=/(\$proxy\$[a-z]+)\d+$/,Ar=/\)\s*$/,_r=/\)\s*\|/g,Or=/\|\s*([$\w]+)/g,Nr=/"\s*\["/g,Mr=/"\s*\(/g;avalon.parseExprProxy=Q,avalon.scan=function(e,t){e=e||Ut;var n=t?[].concat(t):[];ot(e,n)};var Sr=i("area,base,basefont,br,col,command,embed,hr,img,input,link,meta,param,source,track,wbr,noscript,script,style,textarea".toUpperCase()),jr=function(e,t,n){var r=e.getAttribute(t);if(r)for(var a,i=0;a=n[i++];)if(a.hasOwnProperty(r)&&"function"==typeof a[r])return a[r]},Lr=Gt&&e.MutationObserver?function(e){for(var t,n=e.firstChild;n;){var r=n.nextSibling;3===n.nodeType?t?(t.nodeValue+=n.nodeValue,e.removeChild(n)):t=n:t=null,n=r}}:0,Hr=/^\s*::/,Dr=/ms-(\w+)-?(.*)/,Pr={"if":10,repeat:90,data:100,widget:110,each:1400,"with":1500,duplex:2e3,on:3e3},Fr=i("animationend,blur,change,input,click,dblclick,focus,keydown,keypress,keyup,mousedown,mouseenter,mouseleave,mousemove,mouseout,mouseover,mouseup,scan,scroll,submit"),Br=i("value,title,alt,checked,selected,disabled,readonly,enabled"),Rr=/^if|widget|repeat$/,Ir=/^each|with|html|include$/;if(!zt)var Vr=new tn(512),zr=/\s+(ms-[^=\s]+)(?:=("[^"]*"|'[^']*'|[^\s>]+))?/g,Ur=/^['"]/,qr=/<\w+\b(?:(["'])[^"]*?(\1)|[^>])*>/i,Wr=/&amp;/g,Xr=function(e){var t=e.outerHTML;if("</"===t.slice(0,2)||!t.trim())return[];var n,r,a,i=t.match(qr)[0],o=[],l=Vr.get(i);if(l)return l;for(;r=zr.exec(i);){a=r[2],a&&(a=(Ur.test(a)?a.slice(1,-1):a).replace(Wr,"&"));var s=r[1].toLowerCase();n=s.match(Dr);var c={name:s,specified:!0,value:a||""};o.push(c)}return Vr.put(i,o)};var Yr=/\|\s*html(?:\b|$)/,Gr=/\|\|/g,Jr=/&lt;/g,Zr=/&gt;/g,Qr=/(['"])(\\\1|.)+?\1/g,Kr=["autofocus,autoplay,async,allowTransparency,checked,controls","declare,disabled,defer,defaultChecked,defaultSelected","contentEditable,isMap,loop,multiple,noHref,noResize,noShade","open,readOnly,selected"].join(","),ea={};Kr.replace(Lt,function(e){ea[e.toLowerCase()]=e});var ta={"accept-charset":"acceptCharset","char":"ch",charoff:"chOff","class":"className","for":"htmlFor","http-equiv":"httpEquiv"},na=["accessKey,bgColor,cellPadding,cellSpacing,codeBase,codeType,colSpan","dateTime,defaultValue,frameBorder,longDesc,maxLength,marginWidth,marginHeight","rowSpan,tabIndex,useMap,vSpace,valueType,vAlign"].join(",");na.replace(Lt,function(e){ta[e.toLowerCase()]=e});var ra=/<noscript.*?>(?:[\s\S]+?)<\/noscript>/gim,aa=/<noscript.*?>([\s\S]+?)<\/noscript>/im,ia=function(){return new(e.XMLHttpRequest||ActiveXObject)("Microsoft.XMLHTTP")},oa=avalon.templateCache={};Kt.attr=function(e,t){var n=Z(e.value.trim());if("include"===e.type){var r=e.element;e.includeRendered=jr(r,"data-include-rendered",t),e.includeLoaded=jr(r,"data-include-loaded",t);var a=e.includeReplace=!!avalon(r).data("includeReplace");avalon(r).data("includeCache")&&(e.templateCache={}),e.startInclude=_t.createComment("ms-include"),e.endInclude=_t.createComment("ms-include-end"),a?(e.element=e.startInclude,r.parentNode.insertBefore(e.startInclude,r),r.parentNode.insertBefore(e.endInclude,r.nextSibling)):(r.insertBefore(e.startInclude,r.firstChild),r.appendChild(e.endInclude))}e.handlerName="attr",Q(n,t,e)},en.attr=function(t,n,r){var a=r.type,i=r.param;if("css"===a)avalon(n).css(i,t);else if("attr"===a){var o=t===!1||null===t||void 0===t;!zt&&ta[i]&&(i=ta[i]);var l=ea[i];if("boolean"==typeof n[l]&&(n[l]=!!t,t||(o=!0)),o)return n.removeAttribute(i);var s=Dt.test(n)?!1:_t.namespaces&&F(n)?!0:i in n.cloneNode(!1);s?n[i]=t+"":n.setAttribute(i,t)}else if("include"===a&&t){var c=r.vmodels,u=r.includeRendered,f=r.includeLoaded,p=r.includeReplace,d=p?n.parentNode:n,v=function(e){if(f){var n=f.apply(d,[e].concat(c));"string"==typeof n&&(e=n)}u&&K(d,function(){u.call(d)},0/0);var a=r.includeLastID;if(r.templateCache&&a&&a!==t){var i=r.templateCache[a];i||(i=r.templateCache[a]=_t.createElement("div"),Nt.appendChild(i))}for(r.includeLastID=t;;){var o=r.startInclude.nextSibling;if(!o||o===r.endInclude)break;d.removeChild(o),i&&i.appendChild(o)}var l=ut(r,t,e),s=avalon.slice(l.childNodes);d.insertBefore(l,r.endInclude),it(s,c)};if("src"===r.param)if("string"==typeof oa[t])avalon.nextTick(function(){v(oa[t])});else if(Array.isArray(oa[t]))oa[t].push(v);else{var h=ia();h.onreadystatechange=function(){if(4===h.readyState){var e=h.status;if(e>=200&&300>e||304===e||1223===e){for(var n,r=h.responseText,a=0;n=oa[t][a++];)n(r);oa[t]=r}}},oa[t]=[v],h.open("GET",t,!0),"withCredentials"in h&&(h.withCredentials=!0),h.setRequestHeader("X-Requested-With","XMLHttpRequest"),h.send(null)}else{var m=t&&1===t.nodeType?t:_t.getElementById(t);if(m){if("NOSCRIPT"===m.tagName&&!m.innerHTML&&!m.fixIE78){h=ia(),h.open("GET",location,!1),h.send(null);for(var g=_t.getElementsByTagName("noscript"),y=(h.responseText||"").match(ra)||[],b=y.length,x=0;b>x;x++){var w=g[x];w&&(w.style.display="none",w.fixIE78=(y[x].match(aa)||["","&nbsp;"])[1])}}avalon.nextTick(function(){v(m.fixIE78||m.value||m.innerText||m.innerHTML)})}}}else if(Ut.hasAttribute||"string"!=typeof t||"src"!==a&&"href"!==a||(t=t.replace(/&amp;/g,"&")),n[a]=t,e.chrome&&"EMBED"===n.tagName){var $=n.parentNode,C=document.createComment("ms-src");$.replaceChild(C,n),$.replaceChild(n,C)}},"title,alt,src,value,css,include,href".replace(Lt,function(e){Kt[e]=Kt.attr}),Kt["class"]=function(e,t){var n,r=e.param,a=e.value;if(e.handlerName="class",!r||isFinite(r)){e.param="";var i=a.replace(gn,function(e){return e.replace(/./g,"0")}).indexOf(":");if(-1===i){var o=a;n=!0}else o=a.slice(0,i),n=a.slice(i+1);o=mn.test(a)?Z(o):hr(o),e.expr="["+o+","+n+"]"}else e.expr="["+hr(r)+","+a+"]",e.oldStyle=r;var l=e.type;if("hover"===l||"active"===l){if(!e.hasBindEvent){var s=e.element,c=avalon(s),u="mouseenter",f="mouseleave";if("active"===l){s.tabIndex=s.tabIndex||-1,u="mousedown",f="mouseup";var p=c.bind("mouseleave",function(){e.toggleClass&&c.removeClass(e.newClass)})}}var d=c.bind(u,function(){e.toggleClass&&c.addClass(e.newClass)}),v=c.bind(f,function(){e.toggleClass&&c.removeClass(e.newClass)});e.rollback=function(){c.unbind("mouseleave",p),c.unbind(u,d),c.unbind(f,v)},e.hasBindEvent=!0}Q(e.expr,t,e)},en["class"]=function(e,t,n){var r=avalon(t);n.newClass=e[0],n.toggleClass=!!e[1],n.oldClass&&n.newClass!==n.oldClass&&r.removeClass(n.oldClass),n.oldClass=n.newClass,"class"===n.type&&(n.oldStyle?r.toggleClass(n.oldStyle,!!e[1]):r.toggleClass(n.newClass,n.toggleClass))},"hover,active".replace(Lt,function(e){Kt[e]=Kt["class"]}),en.data=function(e,t,n){var r="data-"+n.param;e&&"object"==typeof e?t[r]=e:t.setAttribute(r,String(e))};var la=Kt.duplex=function(e,t){var a,o=e.element;if(Q(e.value,t,e,1),e.changed=jr(o,"data-duplex-changed",t)||r,e.evaluator&&e.args){var l=[],s=i("string,number,boolean,checked");"radio"===o.type&&""===e.param&&(e.param="checked"),o.msData&&(o.msData["ms-duplex"]=e.value),e.param.replace(/\w+/g,function(t){/^(checkbox|radio)$/.test(o.type)&&/^(radio|checked)$/.test(t)&&("radio"===t&&n("ms-duplex-radio已经更名为ms-duplex-checked"),t="checked",e.isChecked=!0),"bool"===t?(t="boolean",n("ms-duplex-bool已经更名为ms-duplex-boolean")):"text"===t&&(t="string",n("ms-duplex-text已经更名为ms-duplex-string")),s[t]&&(a=!0),avalon.Array.ensure(l,t)}),a||l.push("string"),e.param=l.join("-"),e.bound=function(t,n){o.addEventListener?o.addEventListener(t,n,!1):o.attachEvent("on"+t,n);var r=e.rollback;e.rollback=function(){o.avalonSetter=null,avalon.unbind(o,t,n),r&&r()}};for(var c in avalon.vmodels){var u=avalon.vmodels[c];u.$fire("avalon-ms-duplex-init",e)}var f=e.pipe||(e.pipe=pt);f(null,e,"init");var p=o.tagName;la[p]&&la[p](o,e.evaluator.apply(null,e.args),e)}};avalon.duplexHooks={checked:{get:function(e,t){return!t.element.oldValue}},string:{get:function(e){return e},set:ft},"boolean":{get:function(e){return"true"===e},set:ft},number:{get:function(e,t){var n=parseFloat(e);if(-e===-n)return n;var r=/strong|medium|weak/.exec(t.element.getAttribute("data-duplex-number"))||["medium"];switch(r[0]){case"strong":return 0;case"medium":return""===e?"":0;case"weak":return e}},set:ft}};var sa,ca=[];avalon.tick=function(e){1===ca.push(e)&&(sa=setInterval(dt,60))};var ua=r;!new function(){function e(e){t[this.tagName].call(this,e),!this.msFocus&&this.avalonSetter&&this.oldValue!==e&&this.avalonSetter()}try{var t={},n=HTMLInputElement.prototype,r=HTMLTextAreaElement.prototype,a=HTMLInputElement.prototype;Object.getOwnPropertyNames(a),t.INPUT=Object.getOwnPropertyDescriptor(n,"value").set,Object.defineProperty(n,"value",{set:e}),t.TEXTAREA=Object.getOwnPropertyDescriptor(r,"value").set,Object.defineProperty(r,"value",{set:e})}catch(i){ua=avalon.tick}},Gt&&avalon.bind(_t,"selectionchange",function(){var e=_t.activeElement;e&&"function"==typeof e.avalonSetter&&e.avalonSetter()}),la.INPUT=function(e,t,r){function a(e){r.changed.call(this,e,r)}function i(){f=!0}function o(){f=!1}function l(e){setTimeout(function(){p(e)})}var s=e.type,c=r.bound,u=avalon(e),f=!1,p=function(){var n=e.value;if(!f&&n!==e.oldValue){var i=r.pipe(n,r,"get");u.data("duplexObserve")!==!1&&(t(i),a.call(e,i))}};if(r.handler=function(){var n=r.pipe(t(),r,"set");n!==e.oldValue&&(e.value=e.oldValue=n)},r.isChecked||"radio"===s){var d=6===Gt;p=function(){if(u.data("duplexObserve")!==!1){var n=r.pipe(e.value,r,"get");t(n),a.call(e,n)}},r.handler=function(){var n=t(),a=r.isChecked?!!n:n+""===e.value;e.oldValue=a,d?setTimeout(function(){e.defaultChecked=a,e.checked=a},31):e.checked=a},c("click",p)}else if("checkbox"===s)p=function(){if(u.data("duplexObserve")!==!1){var i=e.checked?"ensure":"remove",o=t();Array.isArray(o)||(n("ms-duplex应用于checkbox上要对应一个数组"),o=[o]);var l=r.pipe(e.value,r,"get");avalon.Array[i](o,l),a.call(e,o)}},r.handler=function(){var n=[].concat(t()),a=r.pipe(e.value,r,"get");e.checked=n.indexOf(a)>-1},c(zt?"change":"click",p);else{var v=e.getAttribute("data-duplex-event")||"input";e.attributes["data-event"]&&n("data-event指令已经废弃,请改用data-duplex-event"),v.replace(Lt,function(e){switch(e){case"input":Gt?(Gt>8?c("input",p):c("propertychange",function(e){"value"===e.propertyName&&p()}),c("dragend",l)):(c("input",p),c("compositionstart",i),c("compositionend",o),c("DOMAutoComplete",p));break;default:c(e,p)}}),c("focus",function(){e.msFocus=!0}),c("blur",function(){e.msFocus=!1}),/^(file|button|reset|submit|checkbox|radio)$/.test(e.type)||(e.avalonSetter=p,ua(function(){if(Ut.contains(e))e.msFocus||e.oldValue===e.value||p();else if(!e.msRetain)return!1}))}avalon.injectBinding(r),a.call(e,e.value)},la.TEXTAREA=la.INPUT,la.SELECT=function(e,t,r){function a(){if(i.data("duplexObserve")!==!1){var n=i.val();n=Array.isArray(n)?n.map(function(e){return r.pipe(e,r,"get")}):r.pipe(n,r,"get"),n+""!==e.oldValue&&t(n),r.changed.call(e,n,r)}}var i=avalon(e);r.handler=function(){var r=t();r=r&&r.$model||r,Array.isArray(r)?e.multiple||n("ms-duplex在<select multiple=true>上要求对应一个数组"):e.multiple&&n("ms-duplex在<select multiple=false>不能对应一个数组"),r=Array.isArray(r)?r.map(String):r+"",r+""!==e.oldValue&&(i.val(r),e.oldValue=r+"")},r.bound("change",a),e.msCallback=function(){avalon.injectBinding(r),r.changed.call(e,t(),r)}},en.html=function(e,t,n){var r=1!==t.nodeType,a=r?t.parentNode:t;if(a&&(e=null==e?"":e,n.oldText!==e)){if(n.oldText=e,3===t.nodeType){var i=Yt("html");a.insertBefore(_t.createComment(i),t),n.element=_t.createComment(i+":end"),a.replaceChild(n.element,t),t=n.element}if("object"!=typeof e)var o=avalon.parseHTML(String(e));else if(11===e.nodeType)o=e;else if(1===e.nodeType||e.item){var l=1===e.nodeType?e.childNodes:e.item;for(o=qt.cloneNode(!0);l[0];)o.appendChild(l[0])}if(l=avalon.slice(o.childNodes),r){for(var s=t.nodeValue.slice(0,-4);;){var c=t.previousSibling;if(!c||8===c.nodeType&&c.nodeValue===s)break;a.removeChild(c)}a.insertBefore(o,t)}else avalon.clearHTML(t).appendChild(o);it(l,n.vmodels)}},Kt["if"]=Kt.data=Kt.text=Kt.html=function(e,t){Q(e.value,t,e)},en["if"]=function(e,t,n){try{if(!t.parentNode)return}catch(r){return}if(e)8===t.nodeType&&(t.parentNode.replaceChild(n.template,t),t.ifRemove=null,t=n.element=n.template),t.getAttribute(n.name)&&(t.removeAttribute(n.name),rt(t,n.vmodels)),n.rollback=null;else if(1===t.nodeType){var a=n.element=_t.createComment("ms-if");t.parentNode.replaceChild(a,t),t.ifRemove=a,n.template=t,Nt.appendChild(t),n.rollback=function(){t.parentNode===Nt&&Nt.removeChild(t)}}};var fa=/\(([^)]*)\)/;Kt.on=function(e,t){var n=e.value;e.type="on";var r=e.param.replace(/-\d+$/,"");if("function"==typeof Kt.on[r+"Hook"]&&Kt.on[r+"Hook"](e),n.indexOf("(")>0&&n.indexOf(")")>-1){var a=(n.match(fa)||["",""])[1].trim();(""===a||"$event"===a)&&(n=n.replace(fa,""))}Q(n,t,e)},en.on=function(e,t,n){e=function(e){var t=n.evaluator||r;return t.apply(this,n.args.concat(e))};var a=n.param.replace(/-\d+$/,"");if("scan"===a)e.call(t,{type:a});else if("function"==typeof n.specialBind)n.specialBind(t,e);else var i=avalon.bind(t,a,e);n.rollback=function(){"function"==typeof n.specialUnbind?n.specialUnbind():avalon.unbind(t,a,i)}},Kt.repeat=function(e,t){var n=e.type;Q(e.value,t,e,1),e.proxies=[];var a=!1;try{var i=e.$repeat=e.evaluator.apply(0,e.args||[]),o=avalon.type(i);"object"!==o&&"array"!==o?(a=!0,avalon.log("warning:"+e.value+"只能是对象或数组")):e.xtype=o}catch(l){a=!0}var s=e.value.split(".")||[];if(s.length>1){s.pop();for(var c,u=s[0],f=0;c=t[f++];)if(c&&c.hasOwnProperty(u)){var p=c[u].$events||{};p[St]=p[St]||[],p[St].push(e);break}}e.handler=r,avalon.injectBinding(e);var d=e.element;if(1===d.nodeType){d.removeAttribute(e.name),e.sortedCallback=jr(d,"data-with-sorted",t),e.renderedCallback=jr(d,"data-"+n+"-rendered",t);var v=Yt(n),h=_t.createComment(v),m=_t.createComment(v+":end");if(e.signature=v,e.template=qt.cloneNode(!1),"repeat"===n){var g=d.parentNode;g.replaceChild(m,d),g.insertBefore(h,m),e.template.appendChild(d)}else{for(;d.firstChild;)e.template.appendChild(d.firstChild);d.appendChild(h),d.appendChild(m)}e.element=m,e.handler=en.repeat,e.rollback=function(){var t=e.element;t&&e.handler("clear")}}if(!a){e.$outer={};var y="$key",b="$val";for(Array.isArray(i)&&(y="$first",b="$last"),f=0;c=t[f++];)if(c.hasOwnProperty(y)&&c.hasOwnProperty(b)){e.$outer=c;break}var x=i.$events,w=(x||{})[St];M(w,e),"object"===o?e.handler("append"):i.length&&e.handler("add",0,i.length)}},en.repeat=function(e,t,n){var a=this;if(!e&&a.xtype){var i=a.$repeat,o=a.evaluator.apply(0,a.args||[]);if("array"===a.xtype){if(i.length===o.length){if(!(i!==o&&i.length>0))return;en.repeat.call(this,"clear",t,n)}e="add",t=0,a.$repeat=o,n=o.length}else{if(E(i).join(";;")===E(o).join(";;"))return;e="append",a.$repeat=o}}if(e){var l,s,c=a.element,u=ht(a),f=c.parentNode,p=a.proxies,d=qt.cloneNode(!1);switch(e){case"add":for(var v=t+n,h=[],m=t;v>m;m++){var g=$t(m,a);p.splice(m,0,g),vt(a,d,g,h)}for(f.insertBefore(d,u[t]||c),m=0;s=h[m++];)it(s.nodes,s.vmodels),s.nodes=s.vmodels=null;break;case"del":mt(u[t],u[t+n]||c);var y=p.splice(t,n);bt(y,"each");break;case"clear":l=u[0],l&&(mt(l,c),"object"===a.xtype?f.insertBefore(l,c):bt(p,"each"));break;case"move":if(l=u[0]){var b,x=l.nodeValue,w=[],$=[];for(mt(l,c,function(){$.unshift(this),this.nodeValue===x&&(w.unshift($),$=[])}),N(w,t),N(p,t);$=w.shift();)for(;b=$.shift();)d.appendChild(b);f.insertBefore(d,c)}break;case"index":for(var C=p.length-1;n=p[t];t++)n.$index=t,n.$first=0===t,n.$last=t===C;return;case"set":g=p[t],g&&S(g.$events[a.param||"el"]);break;case"append":var T=a.$repeat,k=Array.isArray(p)||!p?{}:p;a.proxies=k;var A=[];h=[];for(var _ in k)T.hasOwnProperty(_)||(Ct(k[_],pa),delete k[_]);for(_ in T)T.hasOwnProperty(_)&&"hasOwnProperty"!==_&&A.push(_);if(a.sortedCallback){var O=a.sortedCallback.call(f,A);O&&Array.isArray(O)&&O.length&&(A=O)}for(m=0;_=A[m++];)"hasOwnProperty"!==_&&(k[_]=yt(k[_],_,a),vt(a,d,k[_],h));for(f.insertBefore(d,c),m=0;s=h[m++];)it(s.nodes,s.vmodels),s.nodes=s.vmodels=null}if(!a.$repeat||a.$repeat.hasOwnProperty("$lock"))return;"clear"===e&&(e="del");var M=a.renderedCallback||r,j=arguments;f.oldValue&&"SELECT"===f.tagName&&avalon(f).val(f.oldValue.split(",")),M.apply(f,j)}},"with,each".replace(Lt,function(e){Kt[e]=Kt.repeat});var pa=[],da=[];en.text=function(e,t){if(e=null==e?"":e,3===t.nodeType)try{t.data=e}catch(n){}else"textContent"in t?t.textContent=e:t.innerText=e},avalon.parseDisplay=Tt,Kt.visible=function(e,t){Q(e.value,t,e)},en.visible=function(e,t,n){e?(t.style.display=n.display||"","none"===avalon(t).css("display")&&(t.style.display=n.display=Tt(t.nodeName))):t.style.display="none"},Kt.widget=function(t,a){var i=t.value.match(Lt),o=t.element,l=i[0],s=i[1];s&&"$"!==s||(s=Yt(l));var c=i[2]||l,u=avalon.ui[l];if("function"==typeof u){a=o.vmodels||a;for(var f,p=0;f=a[p++];)if(f.hasOwnProperty(c)&&"object"==typeof f[c]){var d=f[c];d=d.$model||d;break}if(d){var v=d[l+"Id"];"string"==typeof v&&(n("warning!不再支持"+l+"Id"),s=v)}var h=avalon.getWidgetData(o,l);t.value=[l,s,c].join(","),t[l+"Id"]=s,t.evaluator=r,o.msData["ms-widget-id"]=s;var m=t[l+"Options"]=avalon.mix({},u.defaults,d||{},h);o.removeAttribute("ms-widget");var g=u(o,t,a)||{};if(g.$id){avalon.vmodels[s]=g,et(o,g);try{g.$init(function(){avalon.scan(o,[g].concat(a)),"function"==typeof m.onInit&&m.onInit.call(o,g,m,a)})}catch(y){}t.rollback=function(){try{g.$remove(),g.widgetElement=null}catch(e){}o.msData={},delete avalon.vmodels[g.$id]},L(t,va),e.chrome&&o.addEventListener("DOMNodeRemovedFromDocument",function(){setTimeout(H)})}else avalon.scan(o,a)}else a.length&&(o.vmodels=a)};var va=[],ha=/<script[^>]*>([\S\s]*?)<\/script\s*>/gim,ma=/\s+(on[^=\s]+)(?:=("[^"]*"|'[^']*'|[^\s>]+))?/g,ga=/<\w+\b(?:(["'])[^"]*?(\1)|[^>])*>/gi,ya={a:/\b(href)\=("javascript[^"]*"|'javascript[^']*')/gi,img:/\b(src)\=("javascript[^"]*"|'javascript[^']*')/gi,form:/\b(action)\=("javascript[^"]*"|'javascript[^']*')/gi},ba=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,xa=/([^\#-~| |!])/g,wa=avalon.filters={uppercase:function(e){return e.toUpperCase()},lowercase:function(e){return e.toLowerCase()},truncate:function(e,t,n){return t=t||30,n="string"==typeof n?n:"...",e.length>t?e.slice(0,t-n.length)+n:String(e)},$filter:function(e){for(var t=1,n=arguments.length;n>t;t++){var r=arguments[t],a=avalon.filters[r[0]];if("function"==typeof a){var i=[e].concat(r.slice(1));e=a.apply(null,i)}}return e},camelize:I,sanitize:function(e){return e.replace(ha,"").replace(ga,function(e){var t=e.toLowerCase().match(/<(\w+)\s/);if(t){var n=ya[t[1]];n&&(e=e.replace(n,function(e,t,n){var r=n.charAt(0);return t+"="+r+"javascript:void(0)"+r}))}return e.replace(ma," ").replace(/\s+/g," ")})},escape:function(e){return String(e).replace(/&/g,"&amp;").replace(ba,function(e){var t=e.charCodeAt(0),n=e.charCodeAt(1);return"&#"+(1024*(t-55296)+(n-56320)+65536)+";"}).replace(xa,function(e){return"&#"+e.charCodeAt(0)+";"}).replace(/</g,"&lt;").replace(/>/g,"&gt;")},currency:function(e,t,n){return(t||"¥")+kt(e,isFinite(n)?n:2)},number:kt};!new function(){function e(e){return parseInt(e,10)||0}function t(e,t,n){var r="";for(0>e&&(r="-",e=-e),e=""+e;e.length<t;)e="0"+e;return n&&(e=e.substr(e.length-t)),r+e}function n(e,n,r,a){return function(i){var o=i["get"+e]();return(r>0||o>-r)&&(o+=r),0===o&&-12===r&&(o=12),t(o,n,a)}}function r(e,t){return function(n,r){var a=n["get"+e](),i=(t?"SHORT"+e:e).toUpperCase();return r[i][a]}}function a(e){var n=-1*e.getTimezoneOffset(),r=n>=0?"+":"";return r+=t(Math[n>0?"floor":"ceil"](n/60),2)+t(Math.abs(n%60),2)}function i(e,t){return e.getHours()<12?t.AMPMS[0]:t.AMPMS[1]}var o={yyyy:n("FullYear",4),yy:n("FullYear",2,0,!0),y:n("FullYear",1),MMMM:r("Month"),MMM:r("Month",!0),MM:n("Month",2,1),M:n("Month",1,1),dd:n("Date",2),d:n("Date",1),HH:n("Hours",2),H:n("Hours",1),hh:n("Hours",2,-12),h:n("Hours",1,-12),mm:n("Minutes",2),m:n("Minutes",1),ss:n("Seconds",2),s:n("Seconds",1),sss:n("Milliseconds",3),EEEE:r("Day"),EEE:r("Day",!0),a:i,Z:a},l=/((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/,s=/^\/Date\((\d+)\)\/$/;
3
+ wa.date=function(t,n){var r,a,i=wa.date.locate,c="",u=[];if(n=n||"mediumDate",n=i[n]||n,"string"==typeof t)if(/^\d+$/.test(t))t=e(t);else if(s.test(t))t=+RegExp.$1;else{var f=t.trim(),p=[0,0,0,0,0,0,0],d=new Date(0);f=f.replace(/^(\d+)\D(\d+)\D(\d+)/,function(t,n,r,a){var i=4===a.length?[a,n,r]:[n,r,a];return p[0]=e(i[0]),p[1]=e(i[1])-1,p[2]=e(i[2]),""});var v=d.setFullYear,h=d.setHours;f=f.replace(/[T\s](\d+):(\d+):?(\d+)?\.?(\d)?/,function(t,n,r,a,i){return p[3]=e(n),p[4]=e(r),p[5]=e(a),i&&(p[6]=Math.round(1e3*parseFloat("0."+i))),""});var m=0,g=0;f=f.replace(/Z|([+-])(\d\d):?(\d\d)/,function(t,n,r,a){return v=d.setUTCFullYear,h=d.setUTCHours,n&&(m=e(n+r),g=e(n+a)),""}),p[3]-=m,p[4]-=g,v.apply(d,p.slice(0,3)),h.apply(d,p.slice(3)),t=d}if("number"==typeof t&&(t=new Date(t)),"date"===avalon.type(t)){for(;n;)a=l.exec(n),a?(u=u.concat(a.slice(1)),n=u.pop()):(u.push(n),n=null);return u.forEach(function(e){r=o[e],c+=r?r(t,i):e.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),c}};var c={AMPMS:{0:"上午",1:"下午"},DAY:{0:"星期日",1:"星期一",2:"星期二",3:"星期三",4:"星期四",5:"星期五",6:"星期六"},MONTH:{0:"1月",1:"2月",2:"3月",3:"4月",4:"5月",5:"6月",6:"7月",7:"8月",8:"9月",9:"10月",10:"11月",11:"12月"},SHORTDAY:{0:"周日",1:"周一",2:"周二",3:"周三",4:"周四",5:"周五",6:"周六"},fullDate:"y年M月d日EEEE",longDate:"y年M月d日",medium:"yyyy-M-d H:mm:ss",mediumDate:"yyyy-M-d",mediumTime:"H:mm:ss","short":"yy-M-d ah:mm",shortDate:"yy-M-d",shortTime:"ah:mm"};c.SHORTMONTH=c.MONTH,wa.date.locate=c};var $a,Ca=avalon.modules={"domReady!":{exports:avalon,state:3},avalon:{exports:avalon,state:4}},Ta=e.require,ka=e.define;xn.loader=function(t){var n=$a&&t;e.require=n?$a:Ta,e.define=n?$a.define:ka},Ca.exports=Ca.avalon,new function(){function t(e,t){var r="js";e=e.replace(/^(\w+)\!/,function(e,t){return r=t,""}),"ready"===r&&(n("debug: ready!已经被废弃,请使用domReady!"),r="domReady");var a="";e=e.replace(D,function(e){return a=e,""});var i="."+r,o=/js|css/.test(i)?i:"";e=e.replace(/\.[a-z0-9]+$/g,function(e){return e===i?(o=e,""):e});var l=avalon.mix({query:a,ext:o,res:r,name:e,toUrl:m},t);return l.toUrl(e),l}function i(e){var t=e.name,n=e.res,r=Ca[t],a=t&&e.urlNoQuery;if(r&&r.state>=1)return t;if(r=Ca[a],r&&r.state>=3)return $a(r.deps||[],r.factory,a),a;if(t&&!r){r=Ca[a]={id:a,state:1};var i=function(a){H[n]=a,a.load(t,e,function(e){arguments.length&&void 0!==e&&(r.exports=e),r.state=4,s()})};H[n]?i(H[n]):$a([n],i)}return t?a:n+"!"}function o(e,t){for(var n,r=0;n=e[r++];)if(4!==Ca[n].state&&(n===t||o(Ca[n].deps,t)))return!0}function l(e,t,r){var a=u(e.src);return e.onload=e.onreadystatechange=e.onerror=null,t||r&&Ca[a]&&!Ca[a].state?(setTimeout(function(){Ot.removeChild(e),e=null}),void n("debug: 加载 "+a+" 失败"+t+" "+!Ca[a].state)):!0}function s(){e:for(var e,t=k.length;e=k[--t];){var n=Ca[e],r=n.deps;if(r){for(var a,i=0;a=r[i];i++)if(4!==Object(Ca[a]).state)continue e;4!==n.state&&(k.splice(t,1),v(n.id,n.deps,n.factory),s())}}}function c(e,t,r){function a(){var a=E.pop();a&&a.require(t),r&&r(),l(i,!1,!c)&&(n("debug: 已成功加载 "+e),t&&k.push(t),s())}var i=_t.createElement("script");i.className=St;var o,c="onload"in i,u=c?"onload":"onreadystatechange",f=0;i[u]=c?a:function(){L.test(i.readyState)&&(++f,1===f?o=setTimeout(a,500):(clearTimeout(o),a()))},i.onerror=function(){l(i,!0)},Ot.insertBefore(i,Ot.firstChild),i.src=e,n("debug: 正准备加载 "+e)}function u(e){return(e||"").replace(D,"")}function f(e){return/^(?:[a-z]+:)?\/\//i.test(String(e))}function p(e,t){return"1"[0]?e[t]:e.getAttribute(t,4)}function d(){var t;try{a.b.c()}catch(n){t=n.stack,!t&&e.opera&&(t=(String(n).match(/of linked script \S+/g)||[]).join(" "))}if(t)return t=t.split(/[@ ]/g).pop(),t="("===t[0]?t.slice(1,-1):t.replace(/\s/,""),u(t.replace(/(:\d+)?:\d+$/i,""));for(var r,i=Ot.getElementsByTagName("script"),o=i.length;r=i[--o];)if(r.className===St&&"interactive"===r.readyState){var l=p(r,"src");return r.className=u(l)}}function v(t,r,a){var i=Object(Ca[t]);i.state=4;for(var o,l=0,s=[];o=r[l++];)if("exports"===o){var c=i.exports||(i.exports={});s.push(c)}else s.push(Ca[o].exports);try{var u=a.apply(e,s)}catch(f){n("执行["+t+"]模块的factory抛错: ",f)}return void 0!==u&&(i.exports=u),P.test(t)&&delete Ca[t],delete i.factory,u}function m(e){0===e.indexOf(this.res+"!")&&(e=e.slice(this.res.length+1));var t=e,n=0,r=this.baseUrl,a=this.parentUrl||r;w(e,h.paths,function(e,r){t=t.replace(r,e),n=1}),n||w(e,h.packages,function(e,n,r){t=t.replace(r.name,r.location)}),this.mapUrl&&w(this.mapUrl,h.map,function(e){w(t,e,function(e,n){t=t.replace(n,e),a=r})});var i=this.ext;i&&n&&t.slice(-i.length)===i&&(t=t.slice(0,-i.length)),f(t)||(a=this.built||/^\w/.test(t)?r:a,t=C(a,t));var o=t+i;return t=o+this.query,o=t.replace(D,function(e){return this.query=e,""}),w(e,h.urlArgs,function(e){t+=(-1===t.indexOf("?")?"?":"&")+e}),this.url=t,this.urlNoQuery=o}function g(e,t,n){var r=x(e,t,n);return r.sort($),r}function y(e){return new RegExp("^"+e+"(/|$)")}function b(t){return function(){var n;return t.init&&(n=t.init.apply(e,arguments)),n||t.exports&&T(t.exports)}}function x(e,t,n){var r=[];for(var a in e)if(Bt.call(e,a)){var i={name:a,val:e[a]};r.push(i),i.reg="*"===a&&t?/^/:y(a),n&&"*"!==a&&(i.reg=new RegExp("/"+a.replace(/^\//,"")+"(/|$)"))}return r}function w(e,t,n){t=t||[];for(var r,a=0;r=t[a++];)if(r.reg.test(e))return n(r.val,r.name,r),!1}function $(e,t){var n=e.name,r=t.name;return"*"===r?-1:"*"===n?1:r.length-n.length}function C(e,t){if("/"!==e.charAt(e.length-1)&&(e+="/"),"./"===t.slice(0,2))return e+t.slice(2);if(".."===t.slice(0,2)){for(e+=t;F.test(e);)e=e.replace(F,"");return e}return"/"===t.slice(0,1)?e+t.slice(1):e+t}function T(t){if(!t)return t;var n=e;return t.split(".").forEach(function(e){n=n[e]}),n}var k=[],E=[],A=/\.js$/i,_=[],O=!1;$a=avalon.require=function(e,n,a,o){if(O){Array.isArray(e)||avalon.error("require方法的第一个参数应为数组 "+e);var l=[],c={},u=a||"callback"+setTimeout("1");o=o||{},o.baseUrl=h.baseUrl;var f=!!o.built;if(a&&(o.parentUrl=a.substr(0,a.lastIndexOf("/")),o.mapUrl=a.replace(A,"")),f){var p=t(o.defineName,o);u=p.urlNoQuery}else e.forEach(function(e){var n=t(e,o),r=i(n);r&&(c[r]||(l.push(r),c[r]="司徒正美"))});var d=Ca[u];d&&4===d.state||(Ca[u]={id:u,deps:f?e.concat():l,factory:n||r,state:3}),d||k.push(u),s()}else if(_.push(avalon.slice(arguments)),arguments.length<=2){O=!0;for(var v,m=_.splice(0,_.length);v=m.shift();)$a.apply(null,v)}},$a.define=function(e,t,n){"string"!=typeof e&&(n=t,t=e,e="anonymous"),Array.isArray(t)||(n=t,t=[]);var r={built:!O,defineName:e},a=[t,n,r];n.require=function(e){if(a.splice(2,0,e),Ca[e]){Ca[e].state=3;var t=!1;try{t=o(Ca[e].deps,e)}catch(r){}t&&avalon.error(e+"模块与之前的模块存在循环依赖,请不要直接用script标签引入"+e+"模块")}delete n.require,$a.apply(null,a)};var i=r.built?"unknown":d();if(i){var l=Ca[i];l&&(l.state=2),n.require(i)}else E.push(n)},$a.config=h,$a.define.amd=Ca;var N=h["orig.paths"]={},M=h["orig.map"]={},S=h.packages=[],j=h["orig.args"]={};avalon.mix(xn,{paths:function(e){avalon.mix(N,e),h.paths=g(N)},map:function(e){avalon.mix(M,e);var t=g(M,1,1);avalon.each(t,function(e,t){t.val=g(t.val)}),h.map=t},packages:function(e){e=e.concat(S);for(var t,n={},r=[],a=0;t=e[a++];){t="string"==typeof t?{name:t}:t;var i=t.name;if(!n[i]){var o=C(t.location||i,t.main||"main");o=o.replace(A,""),r.push(t),n[i]=t.location=o,t.reg=y(i)}}h.packages=r.sort()},urlArgs:function(e){"string"==typeof e&&(e={"*":e}),avalon.mix(j,e),h.urlArgs=g(j,1)},baseUrl:function(e){if(!f(e)){var t=Ot.getElementsByTagName("base")[0];t&&Ot.removeChild(t);var n=_t.createElement("a");n.href=e,e=p(n,"href"),t&&Ot.insertBefore(t,Ot.firstChild)}e.length>3&&(h.baseUrl=e)},shim:function(e){for(var t in e){var n=e[t];Array.isArray(n)&&(n=e[t]={deps:n}),n.exportsFn||!n.exports&&!n.init||(n.exportsFn=b(n))}h.shim=e}});var L=/complete|loaded/,H=$a.plugins={ready:{load:r},js:{load:function(e,t,n){var r=t.url,a=t.urlNoQuery,i=h.shim[e.replace(A,"")];i?$a(i.deps||[],function(){var e=avalon.slice(arguments);c(r,a,function(){n(i.exportsFn?i.exportsFn.apply(0,e):void 0)})}):c(r,a)}},css:{load:function(e,t,r){var a=t.url,i=_t.createElement("link");i.rel="stylesheet",i.href=a,Ot.insertBefore(i,Ot.firstChild),n("debug: 已成功加载 "+a),r()}},text:{load:function(e,t,r){var a=t.url,i=ia();i.onreadystatechange=function(){if(4===i.readyState){var e=i.status;e>399&&600>e?avalon.error(a+" 对应资源不存在或没有开启 CORS"):(n("debug: 已成功加载 "+a),r(i.responseText))}};var o="_="+(new Date-0),l=-1===a.indexOf("?")?a+"?"+o:a+"&"+o;i.open("GET",l,!0),"withCredentials"in i&&(i.withCredentials=!0),i.setRequestHeader("X-Requested-With","XMLHttpRequest"),i.send(),n("debug: 正准备加载 "+a)}}};$a.checkDeps=s;var D=/(\?[^#]*)$/,P=/^callback\d+$/,F=/\/\w+\/\.\./,B=_t.scripts[_t.scripts.length-1],R=B.getAttribute("data-main");if(R){xn.baseUrl(R);var I=h.baseUrl;h.baseUrl=I.slice(0,I.lastIndexOf("/")+1),c(I.replace(A,"")+".js")}else{var V=u(p(B,"src"));h.baseUrl=V.slice(0,V.lastIndexOf("/")+1)}};var Ea,Aa=[],_a=function(e){Ea=!0;var t=avalon.require;for(t&&t.checkDeps&&(Ca["domReady!"].state=4,t.checkDeps());e=Aa.shift();)e(avalon)};if("complete"===_t.readyState)setTimeout(_a);else if(zt)_t.addEventListener("DOMContentLoaded",_a);else{_t.attachEvent("onreadystatechange",function(){"complete"===_t.readyState&&_a()});try{var Oa=null===e.frameElement}catch(On){}Ut.doScroll&&Oa&&e.external&&Et()}avalon.bind(e,"load",_a),avalon.ready=function(e){Ea?e(avalon):Aa.push(e)},avalon.config({loader:!0}),avalon.ready(function(){avalon.scan(_t.body)}),"function"==typeof define&&define.amd&&define("avalon",[],function(){return avalon});var Na=e.avalon;return avalon.noConflict=function(t){return t&&e.avalon===avalon&&(e.avalon=Na),avalon},void 0===t&&(e.avalon=avalon),avalon});
@@ -5,7 +5,7 @@
5
5
  http://weibo.com/jslouvre/
6
6
 
7
7
  Released under the MIT license
8
- avalon.mobile.js 1.46 built in 2015.9.11
8
+ avalon.mobile.js 1.4.7 built in 2015.10.13
9
9
  support IE10+ and other browsers
10
10
  ==================================================*/
11
11
  (function(global, factory) {
@@ -60,9 +60,6 @@ function createMap() {
60
60
  }
61
61
 
62
62
  var subscribers = "$" + expose
63
- var otherRequire = window.require
64
- var otherDefine = window.define
65
- var innerRequire
66
63
  var stopRepeatAssign = false
67
64
  var rword = /[^, ]+/g //切割字符串为一个个小块,以空格或豆号分开它们,结合replace实现字符串的forEach
68
65
  var rcomplexType = /^(?:object|array)$/
@@ -173,12 +170,12 @@ avalon.nextTick = new function () {// jshint ignore:line
173
170
  /*********************************************************************
174
171
  * avalon的静态方法定义区 *
175
172
  **********************************************************************/
176
- avalon.init = function(el) {
173
+ avalon.init = function (el) {
177
174
  this[0] = this.element = el
178
175
  }
179
176
  avalon.fn = avalon.prototype = avalon.init.prototype
180
177
 
181
- avalon.type = function(obj) { //取得目标的类型
178
+ avalon.type = function (obj) { //取得目标的类型
182
179
  if (obj == null) {
183
180
  return String(obj)
184
181
  }
@@ -188,25 +185,25 @@ avalon.type = function(obj) { //取得目标的类型
188
185
  typeof obj
189
186
  }
190
187
 
191
- var isFunction = function(fn) {
188
+ var isFunction = function (fn) {
192
189
  return serialize.call(fn) === "[object Function]"
193
190
  }
194
191
 
195
192
  avalon.isFunction = isFunction
196
193
 
197
- avalon.isWindow = function(obj) {
194
+ avalon.isWindow = function (obj) {
198
195
  return rwindow.test(serialize.call(obj))
199
196
  }
200
197
 
201
198
  /*判定是否是一个朴素的javascript对象(Object),不是DOM对象,不是BOM对象,不是自定义类的实例*/
202
199
 
203
- avalon.isPlainObject = function(obj) {
200
+ avalon.isPlainObject = function (obj) {
204
201
  // 简单的 typeof obj === "object"检测,会致使用isPlainObject(window)在opera下通不过
205
202
  return serialize.call(obj) === "[object Object]" && Object.getPrototypeOf(obj) === oproto
206
203
  }
207
204
 
208
205
  //与jQuery.extend方法,可用于浅拷贝,深拷贝
209
- avalon.mix = avalon.fn.mix = function() {
206
+ avalon.mix = avalon.fn.mix = function () {
210
207
  var options, name, src, copy, copyIsArray, clone,
211
208
  target = arguments[0] || {},
212
209
  i = 1,
@@ -268,15 +265,15 @@ function _number(a, len) { //用于模拟slice, splice的效果
268
265
  avalon.mix({
269
266
  rword: rword,
270
267
  subscribers: subscribers,
271
- version: 1.46,
268
+ version: 1.47,
272
269
  ui: {},
273
270
  log: log,
274
- slice: function(nodes, start, end) {
271
+ slice: function (nodes, start, end) {
275
272
  return aslice.call(nodes, start, end)
276
273
  },
277
274
  noop: noop,
278
275
  /*如果不用Error对象封装一下,str在控制台下可能会乱码*/
279
- error: function(str, e) {
276
+ error: function (str, e) {
280
277
  throw new (e || Error)(str)// jshint ignore:line
281
278
  },
282
279
  /*将一个以空格或逗号隔开的字符串或数组,转换成一个键值都为1的对象*/
@@ -291,7 +288,7 @@ avalon.mix({
291
288
  => [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
292
289
  avalon.range(0)
293
290
  => []*/
294
- range: function(start, end, step) { // 用于生成整数数组
291
+ range: function (start, end, step) { // 用于生成整数数组
295
292
  step || (step = 1)
296
293
  if (end == null) {
297
294
  end = start || 0
@@ -308,34 +305,30 @@ avalon.mix({
308
305
  },
309
306
  eventHooks: {},
310
307
  /*绑定事件*/
311
- bind: function(el, type, fn, phase) {
308
+ bind: function (el, type, fn, phase) {
312
309
  var hooks = avalon.eventHooks
313
310
  var hook = hooks[type]
314
311
  if (typeof hook === "object") {
315
- type = hook.type
316
- if (hook.deel) {
317
- fn = hook.deel(el, type, fn, phase)
318
- }
312
+ type = hook.type || type
313
+ phase = hook.phase || !!phase
314
+ fn = hook.fn ? hook.fn(el, fn) : fn
319
315
  }
320
- if (!fn.unbind)
321
- el.addEventListener(type, fn, !!phase)
316
+ el.addEventListener(type, fn, phase)
322
317
  return fn
323
318
  },
324
319
  /*卸载事件*/
325
- unbind: function(el, type, fn, phase) {
320
+ unbind: function (el, type, fn, phase) {
326
321
  var hooks = avalon.eventHooks
327
322
  var hook = hooks[type]
328
323
  var callback = fn || noop
329
324
  if (typeof hook === "object") {
330
- type = hook.type
331
- if (hook.deel) {
332
- fn = hook.deel(el, type, fn, false)
333
- }
325
+ type = hook.type || type
326
+ phase = hook.phase || !!phase
334
327
  }
335
- el.removeEventListener(type, callback, !!phase)
328
+ el.removeEventListener(type, callback, phase)
336
329
  },
337
330
  /*读写删除元素节点的样式*/
338
- css: function(node, name, value) {
331
+ css: function (node, name, value) {
339
332
  if (node instanceof avalon) {
340
333
  node = node[0]
341
334
  }
@@ -362,7 +355,7 @@ avalon.mix({
362
355
  }
363
356
  },
364
357
  /*遍历数组与对象,回调的第一个参数为索引或键名,第二个或元素或键值*/
365
- each: function(obj, fn) {
358
+ each: function (obj, fn) {
366
359
  if (obj) { //排除null, undefined
367
360
  var i = 0
368
361
  if (isArrayLike(obj)) {
@@ -380,12 +373,12 @@ avalon.mix({
380
373
  }
381
374
  },
382
375
  //收集元素的data-{{prefix}}-*属性,并转换为对象
383
- getWidgetData: function(elem, prefix) {
376
+ getWidgetData: function (elem, prefix) {
384
377
  var raw = avalon(elem).data()
385
378
  var result = {}
386
379
  for (var i in raw) {
387
380
  if (i.indexOf(prefix) === 0) {
388
- result[i.replace(prefix, "").replace(/\w/, function(a) {
381
+ result[i.replace(prefix, "").replace(/\w/, function (a) {
389
382
  return a.toLowerCase()
390
383
  })] = raw[i]
391
384
  }
@@ -394,17 +387,17 @@ avalon.mix({
394
387
  },
395
388
  Array: {
396
389
  /*只有当前数组不存在此元素时只添加它*/
397
- ensure: function(target, item) {
390
+ ensure: function (target, item) {
398
391
  if (target.indexOf(item) === -1) {
399
392
  return target.push(item)
400
393
  }
401
394
  },
402
395
  /*移除数组中指定位置的元素,返回布尔表示成功与否*/
403
- removeAt: function(target, index) {
396
+ removeAt: function (target, index) {
404
397
  return !!target.splice(index, 1).length
405
398
  },
406
399
  /*移除数组中第一个匹配传参的那个元素,返回布尔表示成功与否*/
407
- remove: function(target, item) {
400
+ remove: function (target, item) {
408
401
  var index = target.indexOf(item)
409
402
  if (~index)
410
403
  return avalon.Array.removeAt(target, index)
@@ -636,7 +629,7 @@ if (DOC.onmousewheel === void 0) {
636
629
  chrome wheel deltaY 下100 上-100 */
637
630
  eventHooks.mousewheel = {
638
631
  type: "wheel",
639
- deel: function (elem, _, fn) {
632
+ fn: function (elem, fn) {
640
633
  return function (e) {
641
634
  e.wheelDeltaY = e.wheelDelta = e.deltaY > 0 ? -120 : 120
642
635
  e.wheelDeltaX = 0
@@ -676,11 +669,7 @@ function escapeRegExp(target) {
676
669
  }
677
670
 
678
671
  var plugins = {
679
- loader: function (builtin) {
680
- var flag = innerRequire && builtin
681
- window.require = flag ? innerRequire : otherRequire
682
- window.define = flag ? innerRequire.define : otherDefine
683
- },
672
+
684
673
  interpolate: function (array) {
685
674
  openTag = array[0]
686
675
  closeTag = array[1]
@@ -920,7 +909,7 @@ function modelFactory(source, $special, $model) {
920
909
  return name in this.$model
921
910
  })
922
911
  /* jshint ignore:end */
923
- for (var i in EventBus) {
912
+ for (i in EventBus) {
924
913
  hideProperty($vmodel, i, EventBus[i])
925
914
  }
926
915
 
@@ -1528,7 +1517,7 @@ function injectDisposeQueue(data, list) {
1528
1517
  var elem = data.element
1529
1518
  if (!data.uuid) {
1530
1519
  if (elem.nodeType !== 1) {
1531
- data.uuid = data.type + (data.pos || 0) + "-" + getUid(elem.parentNode)
1520
+ data.uuid = data.type + getUid(elem.parentNode)+ "-"+ (++disposeCount)
1532
1521
  } else {
1533
1522
  data.uuid = data.name + "-" + getUid(elem)
1534
1523
  }
@@ -2643,7 +2632,7 @@ function scanExpr(str) {
2643
2632
  }
2644
2633
  value = str.slice(start, stop)
2645
2634
  if (value) { //处理{{ }}插值表达式
2646
- tokens.push(getToken(value, start))
2635
+ tokens.push(getToken(value))
2647
2636
  }
2648
2637
  start = stop + closeTag.length
2649
2638
  } while (1)
@@ -2658,11 +2647,10 @@ function scanExpr(str) {
2658
2647
  return tokens
2659
2648
  }
2660
2649
 
2661
- function scanText(textNode, vmodels, index) {
2662
- var bindings = []
2663
- tokens = scanExpr(textNode.data)
2650
+ function scanText(textNode, vmodels) {
2651
+ var bindings = [], tokens = scanExpr(textNode.data)
2664
2652
  if (tokens.length) {
2665
- for (var i = 0; token = tokens[i++]; ) {
2653
+ for (var i = 0, token; token = tokens[i++]; ) {
2666
2654
  var node = DOC.createTextNode(token.value) //将文本转换为文本节点,并替换原来的文本节点
2667
2655
  if (token.expr) {
2668
2656
  token.value = token.value.replace(roneTime, function () {
@@ -2675,7 +2663,6 @@ function scanText(textNode, vmodels, index) {
2675
2663
  token.type = "html"
2676
2664
  return ""
2677
2665
  })// jshint ignore:line
2678
- token.pos = index * 1000 + i
2679
2666
  bindings.push(token) //收集带有插值表达式的文本
2680
2667
  }
2681
2668
  avalonFragment.appendChild(node)
@@ -3139,7 +3126,6 @@ var TimerID, ribbon = []
3139
3126
  }
3140
3127
 
3141
3128
  var watchValueInTimer = noop
3142
- var rmsinput = /text|password|hidden/
3143
3129
  new function() { // jshint ignore:line
3144
3130
  try { //#272 IE9-IE11, firefox
3145
3131
  var setters = {}
@@ -3147,7 +3133,7 @@ new function() { // jshint ignore:line
3147
3133
  var bproto = HTMLTextAreaElement.prototype
3148
3134
  function newSetter(value) { // jshint ignore:line
3149
3135
  setters[this.tagName].call(this, value)
3150
- if (rmsinput.test(this.type) && !this.msFocus && this.avalonSetter) {
3136
+ if (!this.msFocus && this.avalonSetter && this.oldValue !== value) {
3151
3137
  this.avalonSetter()
3152
3138
  }
3153
3139
  }
@@ -3201,7 +3187,7 @@ duplexBinding.INPUT = function(element, evaluator, data) {
3201
3187
  }
3202
3188
  //当model变化时,它就会改变value的值
3203
3189
  data.handler = function() {
3204
- var val = data.pipe(evaluator(), data, "set") + ""
3190
+ var val = data.pipe(evaluator(), data, "set")
3205
3191
  if (val !== element.oldValue) {
3206
3192
  element.value = element.oldValue = val
3207
3193
  }
@@ -3264,10 +3250,11 @@ duplexBinding.INPUT = function(element, evaluator, data) {
3264
3250
  bound("blur", function() {
3265
3251
  element.msFocus = false
3266
3252
  })
3267
- if (rmsinput.test($type)) {
3268
- watchValueInTimer(function() {
3253
+ if (!/^(file|button|reset|submit|checkbox|radio)$/.test(element.type)) {
3254
+ element.avalonSetter = updateVModel //#765
3255
+ watchValueInTimer(function () {
3269
3256
  if (root.contains(element)) {
3270
- if (!element.msFocus && element.oldValue !== element.value) {
3257
+ if (!element.msFocus && data.oldValue !== element.value) {
3271
3258
  updateVModel()
3272
3259
  }
3273
3260
  } else if (!element.msRetain) {
@@ -3275,11 +3262,9 @@ duplexBinding.INPUT = function(element, evaluator, data) {
3275
3262
  }
3276
3263
  })
3277
3264
  }
3278
-
3279
- element.avalonSetter = updateVModel
3280
3265
  }
3281
3266
 
3282
- element.oldValue = element.value
3267
+
3283
3268
  avalon.injectBinding(data)
3284
3269
  callback.call(element, element.value)
3285
3270
  }
@@ -3491,6 +3476,9 @@ bindingHandlers.repeat = function (data, vmodels) {
3491
3476
  }
3492
3477
  }
3493
3478
 
3479
+ data.handler = noop
3480
+ avalon.injectBinding(data)
3481
+
3494
3482
  var elem = data.element
3495
3483
  if (elem.nodeType === 1) {
3496
3484
  elem.removeAttribute(data.name)
@@ -3559,7 +3547,12 @@ bindingExecutors.repeat = function (method, pos, el) {
3559
3547
 
3560
3548
  if (data.xtype === "array") {
3561
3549
  if (old.length === neo.length) {
3562
- return
3550
+ if (old !== neo && old.length > 0) {
3551
+ bindingExecutors.repeat.call(this, 'clear', pos, el)
3552
+ }
3553
+ else {
3554
+ return
3555
+ }
3563
3556
  }
3564
3557
  method = "add"
3565
3558
  pos = 0
@@ -4067,9 +4060,9 @@ var filters = avalon.filters = {
4067
4060
  $filter: function(val) {
4068
4061
  for (var i = 1, n = arguments.length; i < n; i++) {
4069
4062
  var array = arguments[i]
4070
- var fn = avalon.filters[array.shift()]
4063
+ var fn = avalon.filters[array[0]]
4071
4064
  if (typeof fn === "function") {
4072
- var arr = [val].concat(array)
4065
+ var arr = [val].concat(array.slice(1))
4073
4066
  val = fn.apply(null, arr)
4074
4067
  }
4075
4068
  }
@@ -4366,6 +4359,15 @@ var modules = avalon.modules = {
4366
4359
  state: 4
4367
4360
  }
4368
4361
  }
4362
+ var otherRequire = window.require
4363
+ var otherDefine = window.define
4364
+ var innerRequire
4365
+
4366
+ plugins.loader = function (builtin) {
4367
+ var flag = innerRequire && builtin
4368
+ window.require = flag ? innerRequire : otherRequire
4369
+ window.define = flag ? innerRequire.define : otherDefine
4370
+ }
4369
4371
  //Object(modules[id]).state拥有如下值
4370
4372
  // undefined 没有定义
4371
4373
  // 1(send) 已经发出请求
@@ -5009,9 +5011,10 @@ new function () {// jshint ignore:line
5009
5011
  var readyList = [], isReady
5010
5012
  var fireReady = function (fn) {
5011
5013
  isReady = true
5012
- if (innerRequire) {
5014
+ var require = avalon.require
5015
+ if (require && require.checkDeps) {
5013
5016
  modules["domReady!"].state = 4
5014
- innerRequire.checkDeps()
5017
+ require.checkDeps()
5015
5018
  }
5016
5019
  while (fn = readyList.shift()) {
5017
5020
  fn(avalon)
@@ -5038,183 +5041,555 @@ avalon.config({
5038
5041
  avalon.ready(function () {
5039
5042
  avalon.scan(DOC.body)
5040
5043
  })
5041
- new function() {// jshint ignore:line
5042
- var touchProxy = {}
5043
- var IEtouch = navigator.pointerEnabled
5044
- var IEMStouch = navigator.msPointerEnabled
5045
- var ua = navigator.userAgent
5046
- var isAndroid = ua.indexOf("Android") > 0
5047
- var isGoingtoFixTouchEndEvent = isAndroid && ua.match(/Firefox|Opera/gi)
5048
- //合成做成触屏事件所需要的各种原生事件
5049
- var touchNames = ["touchstart", "touchmove", "touchend", "touchcancel"]
5050
- var touchTimeout = null
5051
- var longTapTimeout = null
5052
- var dragDistance = 30
5053
- var clickDuration = 750 //小于750ms是点击,长于它是长按或拖动
5054
- var me = bindingHandlers.on
5055
-
5056
- if (IEtouch) {
5057
- touchNames = ["pointerdown", "pointermove", "pointerup", "pointercancel"]
5058
- }
5059
- if (IEMStouch) {
5060
- touchNames = ["MSPointerDown", "MSPointerMove", "MSPointerUp", "MSPointerCancel"]
5061
- }
5062
- function isPrimaryTouch(event){
5063
- return (event.pointerType === 'touch' || event.pointerType === event.MSPOINTER_TYPE_TOUCH) && event.isPrimary
5064
- }
5065
-
5066
- function isPointerEventType(e, type){
5067
- return (e.type === 'pointer'+type || e.type.toLowerCase() === 'mspointer'+type)
5068
- }
5069
-
5070
- //判定滑动方向
5071
- function swipeDirection(x1, x2, y1, y2) {
5072
- return Math.abs(x1 - x2) >=
5073
- Math.abs(y1 - y2) ? (x1 - x2 > 0 ? "left" : "right") : (y1 - y2 > 0 ? "up" : "down")
5074
- }
5075
-
5076
- function fireEvent(el, name, detail) {
5077
- var event = document.createEvent("Events")
5078
- event.initEvent(name, true, true)
5079
- if (detail) {
5080
- event.detail = detail
5081
- }
5082
- el.dispatchEvent(event)
5083
- }
5084
-
5085
- function onMouse(event) {
5086
- var target = event.target,
5087
- element = touchProxy.element
5088
-
5089
- if (element && element !== target) {
5090
- var type = target.type || '',
5091
- targetTag = target.tagName.toLowerCase(),
5092
- elementTag = element.tagName.toLowerCase()
5093
- // 通过手机的“前往”提交表单时不可禁止默认行为;通过label focus input时也不可以阻止默认行为
5094
- if ((targetTag === 'input' && elementTag === "label") || type === 'submit') {
5095
- return false
5044
+ new function () { // jshint ignore:line
5045
+ var ua = navigator.userAgent.toLowerCase()
5046
+ //http://stackoverflow.com/questions/9038625/detect-if-device-is-ios
5047
+ function iOSversion() {
5048
+ //https://developer.apple.com/library/prerelease/mac/releasenotes/General/WhatsNewInSafari/Articles/Safari_9.html
5049
+ //http://mp.weixin.qq.com/s?__biz=MzA3MDQ4MzQzMg==&mid=256900619&idx=1&sn=b29f84cff0b8d7b9742e5d8b3cd8f218&scene=1&srcid=1009F9l4gh9nZ7rcQJEhmf7Q#rd
5050
+ if (/iPad|iPhone|iPod/i.test(ua) && !window.MSStream) {
5051
+ if ("backdropFilter" in document.documentElement.style) {
5052
+ return 9
5096
5053
  }
5097
- if (event.stopImmediatePropagation) {
5098
- event.stopImmediatePropagation()
5099
- } else {
5100
- event.propagationStopped = true
5101
- }
5102
- event.stopPropagation()
5103
- event.preventDefault()
5104
- }
5105
- }
5106
- function cancelLongTap() {
5107
- if (longTapTimeout) clearTimeout(longTapTimeout)
5108
- longTapTimeout = null
5109
- }
5110
- function touchstart(event) {
5111
- var _isPointerType = isPointerEventType(event, "down"),
5112
- firstTouch = _isPointerType ? event : event.touches[0],
5113
- element = "tagName" in firstTouch.target ? firstTouch.target: firstTouch.target.parentNode,
5114
- now = Date.now(),
5115
- delta = now - (touchProxy.last || now)
5116
-
5117
- if (_isPointerType && !isPrimaryTouch(event)) return
5118
- if (touchProxy.x1 || touchProxy.y1) {
5119
- touchProxy.x1 = undefined
5120
- touchProxy.y1 = undefined
5121
- }
5122
- if (delta > 0 && delta <= 250) {
5123
- touchProxy.isDoubleTap = true
5124
- }
5125
- touchProxy.x = firstTouch.pageX
5126
- touchProxy.y = firstTouch.pageY
5127
- touchProxy.mx = 0
5128
- touchProxy.my = 0
5129
- touchProxy.last = now
5130
- touchProxy.element = element
5131
-
5132
- longTapTimeout = setTimeout(function() {
5133
- longTapTimeout = null
5134
- fireEvent(element, "hold")
5135
- fireEvent(element, "longtap")
5136
- touchProxy = {}
5137
- }, clickDuration)
5138
- return true
5054
+ if (!!window.indexedDB) {
5055
+ return 8
5056
+ }
5057
+ if (!!window.SpeechSynthesisUtterance) {
5058
+ return 7
5059
+ }
5060
+ if (!!window.webkitAudioContext) {
5061
+ return 6
5062
+ }
5063
+ if (!!window.matchMedia) {
5064
+ return 5
5065
+ }
5066
+ if (!!window.history && 'pushState' in window.history) {
5067
+ return 4
5068
+ }
5069
+ return 3
5070
+ }
5071
+ return NaN
5139
5072
  }
5140
- function touchmove(event) {
5141
-
5142
- var _isPointerType = isPointerEventType(event, 'down'),
5143
- firstTouch = _isPointerType ? event : event.touches[0],
5144
- x = firstTouch.pageX,
5145
- y = firstTouch.pageY
5146
- if (_isPointerType && !isPrimaryTouch(event)) return
5147
- /*
5148
- android下某些浏览器触发了touchmove事件的话touchend事件不触发,禁用touchmove可以解决此bug
5149
- http://stackoverflow.com/questions/14486804/understanding-touch-events
5150
- */
5151
- if (isGoingtoFixTouchEndEvent && Math.abs(touchProxy.x - x) > 10) {
5152
- event.preventDefault()
5153
- }
5154
- cancelLongTap()
5155
-
5156
- touchProxy.x1 = x // touchend事件没有pageX、pageY始终为0,且没有clientX和clientY事件
5157
- touchProxy.y1 = y
5158
- touchProxy.mx += Math.abs(touchProxy.x - x)
5159
- touchProxy.my += Math.abs(touchProxy.y - y)
5160
- }
5161
- function touchend(event) {
5162
- var _isPointerType = isPointerEventType(event, 'down'),
5163
- element = touchProxy.element
5164
-
5165
- if (_isPointerType && !isPrimaryTouch(event)) return
5166
- if (!element) return // longtap|hold触发后touchProxy为{}
5167
-
5168
- cancelLongTap()
5169
- if ((touchProxy.x1 && Math.abs(touchProxy.x1 - touchProxy.x) > dragDistance) || (touchProxy.y1 && Math.abs(touchProxy.y1 - touchProxy.y) > dragDistance)) {
5170
- //如果用户滑动的距离有点大,就认为是swipe事件
5171
- var direction = swipeDirection(touchProxy.x, touchProxy.x1, touchProxy.y, touchProxy.y1)
5172
- var details = {
5173
- direction: direction
5174
- }
5175
- fireEvent(element, "swipe", details)
5176
- fireEvent(element, "swipe" + direction, details)
5177
- touchProxy = {}
5178
- } else {
5179
- if (touchProxy.mx < dragDistance && touchProxy.my < dragDistance) {
5180
- fireEvent(element, 'tap')
5181
- if (touchProxy.isDoubleTap) {
5182
- fireEvent(element, "doubletap")
5183
- touchProxy = {}
5184
- touchProxy.element = element
5185
- } else {
5186
- touchTimeout = setTimeout(function() {
5187
- clearTimeout(touchTimeout)
5188
- touchTimeout = null
5189
- if (touchProxy.element) fireEvent(touchProxy.element, "singletap")
5190
- touchProxy = {};
5191
- touchProxy.element = element
5192
- }, 250)
5073
+
5074
+ var deviceIsAndroid = ua.indexOf('android') > 0
5075
+ var deviceIsIOS = iOSversion()
5076
+ var gestureHooks = avalon.gestureHooks = {
5077
+ pointers: {},
5078
+ start: function (event, callback) {
5079
+
5080
+ //touches是当前屏幕上所有触摸点的列表;
5081
+ //targetTouches是当前对象上所有触摸点的列表;
5082
+ //changedTouches是涉及当前事件的触摸点的列表。
5083
+ for (var i = 0; i < event.changedTouches.length; i++) {
5084
+ var touch = event.changedTouches[i]
5085
+ var pointer = {
5086
+ startTouch: mixTouchAttr({}, touch),
5087
+ startTime: Date.now(),
5088
+ status: 'tapping',
5089
+ element: event.target
5090
+ }
5091
+ gestureHooks.pointers[touch.identifier] = pointer;
5092
+ callback(pointer, touch)
5093
+
5094
+ }
5095
+ },
5096
+ move: function (event, callback) {
5097
+ for (var i = 0; i < event.changedTouches.length; i++) {
5098
+ var touch = event.changedTouches[i]
5099
+ var pointer = gestureHooks.pointers[touch.identifier]
5100
+ if (!pointer) {
5101
+ return
5102
+ }
5103
+
5104
+ if (!("lastTouch" in pointer)) {
5105
+ pointer.lastTouch = pointer.startTouch
5106
+ pointer.lastTime = pointer.startTime
5107
+ pointer.deltaX = pointer.deltaY = pointer.duration = pointer.distance = 0
5193
5108
  }
5109
+
5110
+ var time = Date.now() - pointer.lastTime
5111
+
5112
+ if (time > 0) {
5113
+
5114
+ var RECORD_DURATION = 70
5115
+ if (time > RECORD_DURATION) {
5116
+ time = RECORD_DURATION
5117
+ }
5118
+ if (pointer.duration + time > RECORD_DURATION) {
5119
+ pointer.duration = RECORD_DURATION - time
5120
+ }
5121
+
5122
+
5123
+ pointer.duration += time;
5124
+ pointer.lastTouch = mixTouchAttr({}, touch)
5125
+
5126
+ pointer.lastTime = Date.now()
5127
+
5128
+ pointer.deltaX = touch.clientX - pointer.startTouch.clientX
5129
+ pointer.deltaY = touch.clientY - pointer.startTouch.clientY
5130
+ var x = pointer.deltaX * pointer.deltaX
5131
+ var y = pointer.deltaY * pointer.deltaY
5132
+ pointer.distance = Math.sqrt(x + y)
5133
+ pointer.isVertical = x < y
5134
+
5135
+ callback(pointer, touch)
5136
+ }
5137
+ }
5138
+ },
5139
+ end: function (event, callback) {
5140
+ for (var i = 0; i < event.changedTouches.length; i++) {
5141
+ var touch = event.changedTouches[i],
5142
+ id = touch.identifier,
5143
+ pointer = gestureHooks.pointers[id]
5144
+
5145
+ if (!pointer)
5146
+ continue
5147
+
5148
+ callback(pointer, touch)
5149
+
5150
+ delete gestureHooks.pointers[id]
5151
+ }
5152
+ },
5153
+ fire: function (elem, type, props) {
5154
+ if (elem) {
5155
+ var event = document.createEvent('Events')
5156
+ event.initEvent(type, true, true)
5157
+ avalon.mix(event, props)
5158
+ elem.dispatchEvent(event)
5159
+ }
5160
+ },
5161
+ add: function (name, gesture) {
5162
+ function move(event) {
5163
+ gesture.touchmove(event)
5164
+ }
5165
+
5166
+ function end(event) {
5167
+ gesture.touchend(event)
5168
+
5169
+ document.removeEventListener('touchmove', move)
5170
+
5171
+ document.removeEventListener('touchend', end)
5172
+
5173
+ document.removeEventListener('touchcancel', cancel)
5174
+
5175
+ }
5176
+
5177
+ function cancel(event) {
5178
+ gesture.touchcancel(event)
5179
+
5180
+ document.removeEventListener('touchmove', move)
5181
+
5182
+ document.removeEventListener('touchend', end)
5183
+
5184
+ document.removeEventListener('touchcancel', cancel)
5185
+
5186
+ }
5187
+
5188
+ gesture.events.forEach(function (eventName) {
5189
+ avalon.eventHooks[eventName] = {
5190
+ fn: function (el, fn) {
5191
+ if (!el['touch-' + name]) {
5192
+ el['touch-' + name] = '1'
5193
+ el.addEventListener('touchstart', function (event) {
5194
+ gesture.touchstart(event)
5195
+
5196
+ document.addEventListener('touchmove', move)
5197
+
5198
+ document.addEventListener('touchend', end)
5199
+
5200
+ document.addEventListener('touchcancel', cancel)
5201
+
5202
+ })
5203
+ }
5204
+ return fn
5205
+ }
5206
+ }
5207
+ })
5208
+ }
5209
+ }
5210
+
5211
+
5212
+
5213
+ var touchkeys = ['screenX', 'screenY', 'clientX', 'clientY', 'pageX', 'pageY']
5214
+
5215
+ // 复制 touch 对象上的有用属性到固定对象上
5216
+ function mixTouchAttr(target, source) {
5217
+ if (source) {
5218
+ touchkeys.forEach(function (key) {
5219
+ target[key] = source[key]
5220
+ })
5221
+ }
5222
+ return target
5223
+ }
5224
+
5225
+ var supportPointer = !!navigator.pointerEnabled || !!navigator.msPointerEnabled
5226
+
5227
+ if (supportPointer) { // 支持pointer的设备可用样式来取消click事件的300毫秒延迟
5228
+ root.style.msTouchAction = root.style.touchAction = 'none'
5229
+ }
5230
+ var tapGesture = {
5231
+ events: ['tap'],
5232
+ touchBoundary: 10,
5233
+ tapDelay: 200,
5234
+ needClick: function (target) {
5235
+ //判定是否使用原生的点击事件, 否则使用sendClick方法手动触发一个人工的点击事件
5236
+ switch (target.nodeName.toLowerCase()) {
5237
+ case 'button':
5238
+ case 'select':
5239
+ case 'textarea':
5240
+ if (target.disabled) {
5241
+ return true
5242
+ }
5243
+
5244
+ break;
5245
+ case 'input':
5246
+ // IOS6 pad 上选择文件,如果不是原生的click,弹出的选择界面尺寸错误
5247
+ if ((deviceIsIOS && target.type === 'file') || target.disabled) {
5248
+ return true
5249
+ }
5250
+
5251
+ break;
5252
+ case 'label':
5253
+ case 'iframe':
5254
+ case 'video':
5255
+ return true
5256
+ }
5257
+
5258
+ return false
5259
+ },
5260
+ needFocus: function (target) {
5261
+ switch (target.nodeName.toLowerCase()) {
5262
+ case 'textarea':
5263
+ case 'select': //实测android下select也需要
5264
+ return true;
5265
+ case 'input':
5266
+ switch (target.type) {
5267
+ case 'button':
5268
+ case 'checkbox':
5269
+ case 'file':
5270
+ case 'image':
5271
+ case 'radio':
5272
+ case 'submit':
5273
+ return false
5274
+ }
5275
+ //如果是只读或disabled状态,就无须获得焦点了
5276
+ return !target.disabled && !target.readOnly
5277
+ default:
5278
+ return false
5279
+ }
5280
+ },
5281
+ focus: function (targetElement) {
5282
+ var length;
5283
+ //在iOS7下, 对一些新表单元素(如date, datetime, time, month)调用focus方法会抛错,
5284
+ //幸好的是,我们可以改用setSelectionRange获取焦点, 将光标挪到文字的最后
5285
+ var type = targetElement.type
5286
+ if (deviceIsIOS && targetElement.setSelectionRange &&
5287
+ type.indexOf('date') !== 0 && type !== 'time' && type !== 'month') {
5288
+ length = targetElement.value.length
5289
+ targetElement.setSelectionRange(length, length)
5194
5290
  } else {
5195
- touchProxy = {}
5291
+ targetElement.focus()
5292
+ }
5293
+ },
5294
+ findControl: function (labelElement) {
5295
+ // 获取label元素所对应的表单元素
5296
+ // 可以能过control属性, getElementById, 或用querySelector直接找其内部第一表单元素实现
5297
+ if (labelElement.control !== undefined) {
5298
+ return labelElement.control
5299
+ }
5300
+
5301
+ if (labelElement.htmlFor) {
5302
+ return document.getElementById(labelElement.htmlFor)
5303
+ }
5304
+
5305
+ return labelElement.querySelector('button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea')
5306
+ },
5307
+ fixTarget: function (target) {
5308
+ if (target.nodeType === 3) {
5309
+ return target.parentNode
5310
+ }
5311
+ if (window.SVGElementInstance && (target instanceof SVGElementInstance)) {
5312
+ return target.correspondingUseElement;
5313
+ }
5314
+
5315
+ return target
5316
+ },
5317
+ updateScrollParent: function (targetElement) {
5318
+ //如果事件源元素位于某一个有滚动条的祖父元素中,那么保持其scrollParent与scrollTop值
5319
+ var scrollParent = targetElement.tapScrollParent
5320
+
5321
+ if (!scrollParent || !scrollParent.contains(targetElement)) {
5322
+ var parentElement = targetElement
5323
+ do {
5324
+ if (parentElement.scrollHeight > parentElement.offsetHeight) {
5325
+ scrollParent = parentElement
5326
+ targetElement.tapScrollParent = parentElement
5327
+ break
5328
+ }
5329
+
5330
+ parentElement = parentElement.parentElement
5331
+ } while (parentElement)
5332
+ }
5333
+
5334
+ if (scrollParent) {
5335
+ scrollParent.lastScrollTop = scrollParent.scrollTop
5336
+ }
5337
+ },
5338
+ touchHasMoved: function (event) {
5339
+ // 判定是否发生移动,其阀值是10px
5340
+ var touch = event.changedTouches[0],
5341
+ boundary = tapGesture.touchBoundary
5342
+ return Math.abs(touch.pageX - tapGesture.touchStartX) > boundary ||
5343
+ Math.abs(touch.pageY - tapGesture.touchStartY) > boundary
5344
+
5345
+ },
5346
+ findType: function (targetElement) {
5347
+ // 安卓chrome浏览器上,模拟的 click 事件不能让 select 打开,故使用 mousedown 事件
5348
+ return deviceIsAndroid && targetElement.tagName.toLowerCase() === 'select' ?
5349
+ 'mousedown' : 'click'
5350
+ },
5351
+ sendClick: function (targetElement, event) {
5352
+ // 在click之前触发tap事件
5353
+ gestureHooks.fire(targetElement, 'tap', {
5354
+ touchEvent: event
5355
+ })
5356
+ var clickEvent, touch
5357
+ //某些安卓设备必须先移除焦点,之后模拟的click事件才能让新元素获取焦点
5358
+ if (document.activeElement && document.activeElement !== targetElement) {
5359
+ document.activeElement.blur()
5360
+ }
5361
+
5362
+ touch = event.changedTouches[0]
5363
+ // 手动触发点击事件,此时必须使用document.createEvent('MouseEvents')来创建事件
5364
+ // 及使用initMouseEvent来初始化它
5365
+ clickEvent = document.createEvent('MouseEvents')
5366
+ clickEvent.initMouseEvent(tapGesture.findType(targetElement), true, true, window, 1, touch.screenX,
5367
+ touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null)
5368
+ clickEvent.touchEvent = event
5369
+ targetElement.dispatchEvent(clickEvent)
5370
+ },
5371
+ touchstart: function (event) {
5372
+ //忽略多点触摸
5373
+ if (event.targetTouches.length !== 1) {
5374
+ return true
5375
+ }
5376
+ //修正事件源对象
5377
+ var targetElement = tapGesture.fixTarget(event.target)
5378
+ var touch = event.targetTouches[0]
5379
+ if (deviceIsIOS) {
5380
+ // 判断是否是点击文字,进行选择等操作,如果是,不需要模拟click
5381
+ var selection = window.getSelection();
5382
+ if (selection.rangeCount && !selection.isCollapsed) {
5383
+ return true
5384
+ }
5385
+ var id = touch.identifier
5386
+ //当 alert 或 confirm 时,点击其他地方,会触发touch事件,identifier相同,此事件应该被忽略
5387
+ if (id && isFinite(tapGesture.lastTouchIdentifier) && tapGesture.lastTouchIdentifier === id) {
5388
+ event.preventDefault()
5389
+ return false
5390
+ }
5391
+
5392
+ tapGesture.lastTouchIdentifier = id
5393
+
5394
+ tapGesture.updateScrollParent(targetElement)
5395
+ }
5396
+ //收集触摸点的信息
5397
+ tapGesture.status = "tapping"
5398
+ tapGesture.startTime = Date.now()
5399
+ tapGesture.element = targetElement
5400
+ tapGesture.pageX = touch.pageX
5401
+ tapGesture.pageY = touch.pageY
5402
+ // 如果点击太快,阻止双击带来的放大收缩行为
5403
+ if ((tapGesture.startTime - tapGesture.lastTime) < tapGesture.tapDelay) {
5404
+ event.preventDefault()
5405
+ }
5406
+ },
5407
+ touchmove: function (event) {
5408
+ if (tapGesture.status !== "tapping") {
5409
+ return true
5196
5410
  }
5411
+ // 如果事件源元素发生改变,或者发生了移动,那么就取消触发点击事件
5412
+ if (tapGesture.element !== tapGesture.fixTarget(event.target) ||
5413
+ tapGesture.touchHasMoved(event)) {
5414
+ tapGesture.status = tapGesture.element = 0
5415
+ }
5416
+
5417
+ },
5418
+ touchend: function (event) {
5419
+ var targetElement = tapGesture.element
5420
+ var now = Date.now()
5421
+ //如果是touchstart与touchend相隔太久,可以认为是长按,那么就直接返回
5422
+ //或者是在touchstart, touchmove阶段,判定其不该触发点击事件,也直接返回
5423
+ if (!targetElement || now - tapGesture.startTime > tapGesture.tapDelay) {
5424
+ return true
5425
+ }
5426
+
5427
+
5428
+ tapGesture.lastTime = now
5429
+
5430
+ var startTime = tapGesture.startTime
5431
+ tapGesture.status = tapGesture.startTime = 0
5432
+
5433
+ targetTagName = targetElement.tagName.toLowerCase()
5434
+ if (targetTagName === 'label') {
5435
+ //尝试触发label上可能绑定的tap事件
5436
+ gestureHooks.fire(targetElement, 'tap', {
5437
+ touchEvent: event
5438
+ })
5439
+ var forElement = tapGesture.findControl(targetElement)
5440
+ if (forElement) {
5441
+ tapGesture.focus(targetElement)
5442
+ targetElement = forElement
5443
+ }
5444
+ } else if (tapGesture.needFocus(targetElement)) {
5445
+ // 如果元素从touchstart到touchend经历时间过长,那么不应该触发点击事
5446
+ // 或者此元素是iframe中的input元素,那么它也无法获点焦点
5447
+ if ((now - startTime) > 100 || (deviceIsIOS && window.top !== window && targetTagName === 'input')) {
5448
+ tapGesture.element = 0
5449
+ return false
5450
+ }
5451
+
5452
+ tapGesture.focus(targetElement)
5453
+ deviceIsAndroid && tapGesture.sendClick(targetElement, event)
5454
+
5455
+ return false
5456
+ }
5457
+
5458
+ if (deviceIsIOS) {
5459
+ //如果它的父容器的滚动条发生改变,那么应该识别为划动或拖动事件,不应该触发点击事件
5460
+ var scrollParent = targetElement.tapScrollParent;
5461
+ if (scrollParent && scrollParent.lastScrollTop !== scrollParent.scrollTop) {
5462
+ return true
5463
+ }
5464
+ }
5465
+ //如果这不是一个需要使用原生click的元素,则屏蔽原生事件,避免触发两次click
5466
+ if (!tapGesture.needClick(targetElement)) {
5467
+ event.preventDefault()
5468
+ // 触发一次模拟的click
5469
+ tapGesture.sendClick(targetElement, event)
5470
+ }
5471
+ },
5472
+ touchcancel: function () {
5473
+ tapGesture.startTime = tapGesture.element = 0
5197
5474
  }
5198
5475
  }
5199
- document.addEventListener('mousedown', onMouse, true)
5200
- document.addEventListener('click', onMouse, true)
5201
- document.addEventListener(touchNames[0], touchstart)
5202
- document.addEventListener(touchNames[1], touchmove)
5203
- document.addEventListener(touchNames[2], touchend)
5204
- if (touchNames[3]) {
5205
- document.addEventListener(touchNames[3], function(event) {
5206
- if (longTapTimeout) clearTimeout(longTapTimeout)
5207
- if (touchTimeout) clearTimeout(touchTimeout)
5208
- longTapTimeout = touchTimeout = null
5209
- touchProxy = {}
5210
- })
5476
+
5477
+ gestureHooks.add("tap", tapGesture)
5478
+
5479
+ var pressGesture = {
5480
+ events: ['longtap', 'doubletap'],
5481
+ cancelPress: function (pointer) {
5482
+ clearTimeout(pointer.pressingHandler)
5483
+ pointer.pressingHandler = null
5484
+ },
5485
+ touchstart: function (event) {
5486
+ gestureHooks.start(event, function (pointer, touch) {
5487
+ pointer.pressingHandler = setTimeout(function () {
5488
+ if (pointer.status === 'tapping') {
5489
+ gestureHooks.fire(event.target, 'longtap', {
5490
+ touch: touch,
5491
+ touchEvent: event
5492
+ })
5493
+ }
5494
+ pressGesture.cancelPress(pointer)
5495
+ }, 500)
5496
+ if (event.changedTouches.length !== 1) {
5497
+ pointer.status = 0
5498
+ }
5499
+ })
5500
+
5501
+ },
5502
+ touchmove: function (event) {
5503
+ gestureHooks.move(event, function (pointer) {
5504
+ if (pointer.distance > 10 && pointer.pressingHandler) {
5505
+ pressGesture.cancelPress(pointer)
5506
+ if (pointer.status === 'tapping') {
5507
+ pointer.status = 'panning'
5508
+ }
5509
+ }
5510
+ })
5511
+ },
5512
+ touchend: function (event) {
5513
+ gestureHooks.end(event, function (pointer, touch) {
5514
+ pressGesture.cancelPress(pointer)
5515
+ if (pointer.status === 'tapping') {
5516
+ pointer.lastTime = Date.now()
5517
+ if (pressGesture.lastTap && pointer.lastTime - pressGesture.lastTap.lastTime < 300) {
5518
+ gestureHooks.fire(pointer.element, 'doubletap', {
5519
+ touch: touch,
5520
+ touchEvent: event
5521
+ })
5522
+ }
5523
+
5524
+ pressGesture.lastTap = pointer
5525
+ }
5526
+ })
5527
+
5528
+ },
5529
+ touchcancel: function (event) {
5530
+ gestureHooks.end(event, function (pointer) {
5531
+ pressGesture.cancelPress(pointer)
5532
+ })
5533
+ }
5211
5534
  }
5212
- ["swipe", "swipeleft", "swiperight", "swipeup", "swipedown", "doubletap", "tap", "singletap", "dblclick", "longtap", "hold"].forEach(function(method) {
5213
- me[method + "Hook"] = me["clickHook"]
5214
- })
5535
+ gestureHooks.add('press', pressGesture)
5536
+
5537
+ var swipeGesture = {
5538
+ events: ['swipe', 'swipeleft', 'swiperight', 'swipeup', 'swipedown'],
5539
+ getAngle: function (x, y) {
5540
+ var r = Math.atan2(y, x) //radians
5541
+ var angle = Math.round(r * 180 / Math.PI) //degrees
5542
+ return angle < 0 ? 360 - Math.abs(angle) : angle
5543
+ },
5544
+ getDirection: function (x, y) {
5545
+ var angle = swipeGesture.getAngle(x, y)
5546
+ if ((angle <= 45) && (angle >= 0)) {
5547
+ return "left"
5548
+ } else if ((angle <= 360) && (angle >= 315)) {
5549
+ return "left"
5550
+ } else if ((angle >= 135) && (angle <= 225)) {
5551
+ return "right"
5552
+ } else if ((angle > 45) && (angle < 135)) {
5553
+ return "down"
5554
+ } else {
5555
+ return "up"
5556
+ }
5557
+ },
5558
+ touchstart: function (event) {
5559
+ gestureHooks.start(event, noop)
5560
+ },
5561
+ touchmove: function (event) {
5562
+ gestureHooks.move(event, noop)
5563
+ },
5564
+ touchend: function (event) {
5565
+ if (event.changedTouches.length !== 1) {
5566
+ return
5567
+ }
5568
+ gestureHooks.end(event, function (pointer, touch) {
5569
+ var isflick = (pointer.distance > 30 && pointer.distance / pointer.duration > 0.65)
5570
+ if (isflick) {
5571
+ var extra = {
5572
+ deltaX: pointer.deltaX,
5573
+ deltaY: pointer.deltaY,
5574
+ touch: touch,
5575
+ touchEvent: event,
5576
+ direction: swipeGesture.getDirection(pointer.deltaX, pointer.deltaY),
5577
+ isVertical: pointer.isVertical
5578
+ }
5579
+ var target = pointer.element
5580
+ gestureHooks.fire(target, 'swipe', extra)
5581
+ gestureHooks.fire(target, 'swipe' + extra.direction, extra)
5582
+ }
5583
+ })
5584
+ }
5585
+ }
5586
+
5587
+ swipeGesture.touchcancel = swipeGesture.touchend
5588
+ gestureHooks.add('swipe', swipeGesture)
5215
5589
 
5216
5590
  //各种摸屏事件的示意图 http://quojs.tapquo.com/ http://touch.code.baidu.com/
5217
- }// jshint ignore:line
5591
+ } // jshint ignore:line
5592
+
5218
5593
 
5219
5594
  // Register as a named AMD module, since avalon can be concatenated with other
5220
5595
  // files that may use define, but not via a proper concatenation script that