wcs 4 лет назад
Родитель
Сommit
1ade194673
80 измененных файлов с 430 добавлено и 14060 удалено
  1. BIN
      AGV召唤器使用说明书.doc
  2. 0 275
      README.md
  3. 3 0
      androidPrivacy.json
  4. 0 408
      bak.html
  5. 131 0
      css/feedback.css
  6. 0 84
      css/iconfont.css
  7. 0 155
      css/style.css
  8. 0 340
      details.html
  9. BIN
      images/1-1.png
  10. BIN
      images/1.png
  11. BIN
      images/10-1.png
  12. BIN
      images/10.png
  13. BIN
      images/11.png
  14. BIN
      images/12.png
  15. BIN
      images/13.png
  16. BIN
      images/14.png
  17. BIN
      images/15.png
  18. BIN
      images/16.png
  19. BIN
      images/17.png
  20. BIN
      images/18.png
  21. BIN
      images/19.png
  22. BIN
      images/2.png
  23. BIN
      images/20.png
  24. BIN
      images/21.png
  25. BIN
      images/22.png
  26. BIN
      images/23.png
  27. BIN
      images/24.png
  28. BIN
      images/25.png
  29. BIN
      images/26.png
  30. BIN
      images/27.png
  31. BIN
      images/28.png
  32. BIN
      images/29.png
  33. BIN
      images/3.png
  34. BIN
      images/4.png
  35. BIN
      images/5.png
  36. BIN
      images/6.png
  37. BIN
      images/7.png
  38. BIN
      images/8.png
  39. BIN
      images/9.png
  40. BIN
      images/battery-0.png
  41. BIN
      img/battery.png
  42. BIN
      img/btlist2_bg.png
  43. BIN
      img/btlist3_bg.png
  44. BIN
      img/btlist4_bg.png
  45. BIN
      img/btlist5_bg.png
  46. BIN
      img/btlist_bg.png
  47. BIN
      img/ds.png
  48. BIN
      img/ds2.png
  49. BIN
      img/sd.png
  50. BIN
      img/top_bg2.png
  51. 177 275
      index.html
  52. 0 283
      internet.html
  53. 0 1
      js/Sortable.min.js
  54. 0 3172
      js/app.min.js
  55. 0 8386
      js/mui.js
  56. 66 150
      manifest.json
  57. BIN
      releases/胜代06191318.apk
  58. 0 247
      remote.html
  59. 53 82
      settings.html
  60. 0 202
      tasklist.html
  61. BIN
      unpackage/release/apk/H5BB7CBC9_1012154648.apk
  62. BIN
      unpackage/res/icons/1024x1024.png
  63. BIN
      unpackage/res/icons/120x120.png
  64. BIN
      unpackage/res/icons/144x144.png
  65. BIN
      unpackage/res/icons/152x152.png
  66. BIN
      unpackage/res/icons/167x167.png
  67. BIN
      unpackage/res/icons/180x180.png
  68. BIN
      unpackage/res/icons/192x192.png
  69. BIN
      unpackage/res/icons/20x20.png
  70. BIN
      unpackage/res/icons/29x29.png
  71. BIN
      unpackage/res/icons/40x40.png
  72. BIN
      unpackage/res/icons/48x48.png
  73. BIN
      unpackage/res/icons/58x58.png
  74. BIN
      unpackage/res/icons/60x60.png
  75. BIN
      unpackage/res/icons/72x72.png
  76. BIN
      unpackage/res/icons/76x76.png
  77. BIN
      unpackage/res/icons/80x80.png
  78. BIN
      unpackage/res/icons/87x87.png
  79. BIN
      unpackage/res/icons/96x96.png
  80. BIN
      unpackage/res/icons/lo.png

BIN
AGV召唤器使用说明书.doc


+ 0 - 275
README.md

@@ -1,275 +0,0 @@
-# agv-summoner
-
-
-*本程序用DCloud HBuilder X 或DCloud HBuilder编译,官网[DCloud](https://www.dcloud.io "DCloud"),下载DCloud HBuilder X,导入项目,发行--原生App-云打包即可得到App文件*
-
-## 一、下载与安装
-Apk文件下载地址
-http://192.168.1.230:3000/wcs/agv-summoner/raw/master/releases/agv-summoner.apk
-
-
-下载方法与安装
-
-复制下载地址到二维码生成网站 http://www.liantu.com ,生成二维码,使用召唤器安装浏览器,扫一扫二维码,完成APP的下载安装。
-
-
-## 二、运行
-点击图1所示软件,打开召唤器控制软件<br>
-
-<img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/1.png" width = "30%" align="left"/>
-<br>
-(图1)
-
-<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
-
-## 三、界面及功能介绍
-
-
-*注意:本应用首页为服务器版页面,首页右滑为网络版页面,服务器版与网络版显示内容相同,故不再单独介绍。*
-
-(一)、首页(服务器版页面)、与网络版页面
-
-
-<img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/1-1.png" width = "30%" align="left"/><br>
-
-
-<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
-1、标题
-
-
-
-2、速度
-
-
-<img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/2.png" align="left"/>
-表示高速
-
-
-<img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/3.png" align="left"/>
-表示中速
-
-
-<img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/4.png" align="left"/>
-表示低速
-
-
-3、电量
-
-
-<img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/5.png" align="left"/>
-100% <br>
-
-
-<img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/6.png" align="left"/>
-80%<br>
-
-
- <img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/7.png" align=right/>
-60%<br>
-
-
-  <img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/8.png" align="left"/>
-40% <br>
-
-
- <img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/9.png" align="left"/>
-20%<br>
-
-
- <img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/battery-0.png" width="30"  align="left"/>
-0%<br>
-
-
-4、agv小车目标站点
-
-
-5、Agv小车顶升状态
-
-
-<img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/10.png" align="left"/>
-升起、升起中、手动升起、居中状态显示此图标<br>
-
-
-<img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/11.png" align="left"/>
-降落、降落中、手动降落状态显示此图标<br>
-
-
-<img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/10-1.png" align="left"/>
-初始化显示此图标<br><br>
-
-
-
-6、agv停止状态<br>
-
-
-<img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/12.png" align="left"/>
-已停止<br>
-
-
-<img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/13.png" align="left"/>
-未停止<br>
-
-
-7、agv运行状态
-
-
-<img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/14.png" align=right/>
-运行中<br>
-
-
-<img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/15.png" align=right/>
-未运行<br>
-
-
-8、agv注意状态
-
-
-<img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/16.png" align="left"/>
-情况提醒<br>
-
-
-<img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/17.png" align="left"/>
-没有提醒<br>
-
-
-9、详情
-
-
-<img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/18.png" align="left"/><br>
-
-
- 点击跳转到详情页面
-
-
-10、站点列表
-
-
-<img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/19.png" align="left"/>
-选中状态,浅蓝色<br>
-
-
-<img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/20.png" width="45" align="left"/>
-未选中状态 深蓝色<br>
-
-
-<img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/21.png" align="left"/><br><br><br><br>
-
-
-当选中第一个按钮时,按钮变为选中状态的同时,会添加一个白色正三角的符号,如图示中的按钮1,表示源站点(agv将要去搬运货物的站点,或者是需要移动到的目的站点),如选择错误,请点13取消,再次重新选择;
-当选中第二个按钮时,按钮变为选中状态的同时,会添加一个白色倒三角的符号,如图示中的按钮2,表示目标站点,agv将要去送货物的站点;
-当选中的按钮数量为2时,其他未选中的站点会添加一个禁用的状态,颜色还是未选中状态,但是不能被选中,除非点击13取消按钮,取消任务,或者点12搬运按钮,执行此任务
-
-
-11、移动按钮
-
-
-<img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/22.png" align="left" /><br><br><br>
-
-
-当未选中站点按钮时,此按钮未禁用状态,不可选中;
-
-
-<img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/23.png" align="left" /><br><br><br>
-
-
-当选择的站点按钮数量为1个时,此按钮激活,可被选中,点此按钮,agv运行到被选中的站点处
-
-
-12、搬运按钮
-
-
-<img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/24.png" align="left" /><br><br><br>
-
-
-此按钮默认隐藏,当选中的按钮数量为2个时,取消隐藏状态,变为激活状态,此时点击此按钮,agv将按照选中的站点任务运行;
-
-
-13、取消按钮
-
-
-<img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/25.png" align="left" /><br><br><br>
-
-
-默认为未激活状态
-
-
-<img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/26.png" align="left" /><br><br><br>
-
-
-当选中站点时,此按钮变为激活状态,此时点击,选中的站点将取消选中激活状态变为未选中。
-
-
-(二)、控制页
-
-
-<img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/27.png" width="40%" align="left" />
-<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
-
-
-14、控制顶升上升按钮
-15、控制顶升下降按钮
-16、控制agv前进运行按钮
-17、控制agv左转运行按钮
-18、控制agv右转运行按钮
-19、控制agv后退运行按钮
-20、控制agv左旋转运行按钮
-21、控制agv右旋转行按钮
-
-
-(三)、详情页
-
-
-<img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/28.png" align="left" />
-<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
-此页显示agv运行中的各项参数,无操作按钮。
-
-
-(四)、配置页
-
-
-<img src="http://192.168.1.230:3000/wcs/agv-summoner/raw/master/images/29.png" align="left" width="70%" />
-<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
-
-
-22、服务器模式时,此处填写服务器IP地址,如经常使用的(默认值)192.168.1.92网络模式时,此处用来填写agv WIFI模块的IP地址,如192.168.1.181
-
-
-23、服务器模式和网络模式都需要填写,此处用来填写agvid,默认为1
-
-
-24、服务器模式时,此处用来填写agv所在的地图的mapid,默认为	2019081410472902
-如记不清,可到可在网页操作页面查看,如下列地址中
-http://192.168.1.92:8888/show/2019081410472902
-http://192.168.1.92:8888/cfg?id=3&&mapId=2019081410472902
-http://192.168.1.92:8888/agv/task?agvId=1&&mapId=2019081410472902
-2019081410472902即为mapid
-网络模式时,此处不用填写,有数值也不会影响程序运行
-
-
-25、填写完成后,点击此按钮,系统就会保存,并跳转到首页
-
-
-26、取消按钮,点此按钮,系统不会保存内容,跳转到首页
-
-
-
-
-## 四、页面切换
-
-
-首页左滑,进入网络版首页
-
-
-网络版首页左滑,进入控制页;网络版首页右滑,进入首页
-
-
-控制页左滑,进入详情页;控制页右滑,进入网络版首页
-
-
-详情页左滑,进入首页;详情页右滑,进入控制页
-
-
-首页右滑,进入配置页
-
-
-配置页点确定或取消按钮,进入首页

+ 3 - 0
androidPrivacy.json

@@ -0,0 +1,3 @@
+{
+    "prompt": "template"
+}

+ 0 - 408
bak.html

@@ -1,408 +0,0 @@
-<!DOCTYPE html>
-<html>
-	<head>
-		<meta charset="utf-8">
-		<title>华力机电SIMANC</title>
-		<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
-		<meta name="apple-mobile-web-app-capable" content="yes">
-		<meta name="apple-mobile-web-app-status-bar-style" content="black">
-		<!--标准mui.css-->
-		<link rel="stylesheet" type="text/css" href="css/mui.min.css">
-		<!--App自定义的css-->
-		<link rel="stylesheet" type="text/css" href="css/app.css" />
-		<link rel="stylesheet" type="text/css" href="css/iconfont.css" />
-		<style>
-			.mui-btn-block{
-				margin-bottom: 0;}
-			.mui-content-padded{
-			  	margin: 2px;
-			  }
-			.mui-col{  
-				display: inline-block;  
-				padding: 2px;
-			}  
-			        /*滚动条样式*/
-			::-webkit-scrollbar {
-            width: 0;
-            background-color: #F5F5F5;
-			}
-			/*定义滚动条轨道 内阴影+圆角*/
-			::-webkit-scrollbar-track {
-				background-color: #2e3342;
-			}
-			/*定义滑块 内阴影+圆角*/
-			::-webkit-scrollbar-thumb {
-				background-color: #2e3342;
-			}
-			.mui-btn-royal{
-					background-color: rgba(141, 157, 199, 0.5);
-					border:1px solid rgba(141, 157, 199, 0.5)
-			}
-			.active {
-				background-color: #d4d4d4;
-				color:white;
-			}
-			.up{
-				background: #0087c5 url(img/top.svg) no-repeat 50% 10%;
-			}
-			.down{
-				background: #0087c5 url(img/bottom.svg) no-repeat 50% 10%;
-			}
-			.mui-plus .plus{
-				display: inline;
-			}
-			.plus{
-				display: none;
-			}
-			#topPopover {
-				position: fixed;
-				top: 16px;
-				right: 6px;
-			}
-			#topPopover .mui-popover-arrow {
-				left: auto;
-				right: 6px;
-			}
-			p {
-				text-indent: 22px;
-			}
-			span.mui-icon {
-				font-size: 14px;
-				color: #007aff;
-				margin-left: -15px;
-				padding-right: 10px;
-			}
-			.mui-popover {
-				color:#fff;
-				height: 260px;
-				width: 130px;
-				background-color: rgba(141, 157, 199, 0.9);
-			}
-			.mui-content {
-				padding: 10px;
-			}
-			 .mui-scroll-wrapper{
-				background-color:transparent;
-			}
-			.mui-popover .mui-table-view{
-				background-color: transparent;
-			}
-			.history tr{
-				background-color: #ffffff;
-				border-radius:5px 0 0 5px;
-			}
-			.history td:first-child{
-				border-radius:5px 0 0 5px;
-			}
-			.history td:last-child{
-				border-radius: 0 5px 5px 0;
-			}
-			
-			.grid-task >div{
-            display: grid;
-            grid-template-columns: 60px 1fr 1fr 100px;
-            grid-gap: 1px;
-        }
-        .grid-task >div>span{
-			color: #fff;
-			font-size: 15px;
-            background-color: rgba(141, 157, 199, 0.5);
-            padding:5px 5px 2px 10px;
-        }
-		.mui-bar{
-			height:35px
-		}
-		.mui-bar-nav{
-			top: 0;
-			box-shadow: 0 1px 6px #2e3342;
-		}
-		.mui-title {
-			line-height:35px
-		}
-		.mui-bar .mui-icon {
-			padding-top:5px
-		}
-		.mui-bar-nav~.mui-content{
-			padding-top: 30px;
-		}
-		.text-success{
-			color:#27c24c
-		}
-		.mui-bar .mui-btn-link {
-			line-height: 36px;
-		}
-		.mui-col-xs-3{
-			width: 22%;
-		}
-	</style>
-	</head>
-	<body style="background: url(img/bg.png) no-repeat 0px -0px;width:99%;">
-		<div id="title" style="height: 4%;text-align: center;padding-top: 10px;padding-bottom: 5px;background: url(img/title_bg.png) no-repeat 0 17px;background-size:100%;">
-			<a style="color: #FFFFFF;font-size: 20px;">华力西曼克</a>
-		</div>
-		<div id="top" style="height: 30%;text-align: center;padding-top: 1px;background: url(img/top_bg.png) no-repeat 0 0px;background-size:100%;">
-			<div class="mui-row">
-				<div class="mui-col mui-col-xs-12">
-					<div id="speed" style="height: 10%;width: 50%;padding-top: 10px;float: left;">
-						<img src="img/sd.png" style="margin-left: -80px;width: 13%;">
-					</div>
-					<div id="battery" style="height: 10%;width: 50%;padding-top: 10px;float: left;">
-						<img src="img/battery.png" style="margin-right: -80px;width: 23%;">
-					</div>
-				</div>
-				<div class="mui-col mui-col-xs-12">
-					<div id="jacking" style="width: 120px;height:90px;border-radius: 12px;border: 2px solid #298890;float: left;margin-left: 23px;">
-						<div style="margin-left: -60px;margin-top: 15px;">
-							<a style="color: #FFFFFF;font-size: 18px;">目标</a><br>
-						</div>
-						<div style="margin-left: -60px;margin-top: 10px;">
-							<a style="color: #FFFFFF;font-size: 18px;">站点</a><br>
-						</div>
-						<div style="margin-left: 40px;margin-top: -40px;">
-							<a style="color: #FFFFFF;font-size: 50px;">7</a><br>
-						</div>
-					</div>
-					<div id="jacking" style="width: 120px;height:90px;border-radius: 12px;border: 2px solid #298890;float: right;margin-right: 20px;">
-						<div style="margin-left: -60px;margin-top: 15px;">
-							<a style="color: #FFFFFF;font-size: 18px;">顶升</a><br>
-						</div>
-						<div style="margin-left: -60px;margin-top: 10px;">
-							<a style="color: #FFFFFF;font-size: 18px;">状态</a><br>
-						</div>
-						<div style="margin-left: 60px;margin-top: -55px;">
-							<img src="img/ds.png" width="60%">
-						</div>
-					</div>
-				</div>
-				<br>
-				<br>
-				<div style="width: 94%;height: 50px;margin-top: 100px;margin-left: 20px;">
-					<div style="width: 22%;height: 40px;line-height:40px;float: left;margin-left: 5px;background: url(img/btn3_bg.png);color: #FFFFFF;text-align: center;">停止</div>
-					<div style="width: 22%;height: 40px;line-height:40px;float: left;margin-left: 5px;background: url(img/btn2_bg.png);color: #FFFFFF;text-align: center;">运行</div>
-					<div style="width: 22%;height: 40px;line-height:40px;float: left;margin-left: 5px;background: url(img/btn1_bg.png);color: #FFFFFF;text-align: center;">注意</div>
-					<div style="width: 22%;height: 40px;line-height:40px;float: left;margin-left: 5px;background: url(img/btn4_bg.png);color: #FFFFFF;text-align: center;">详情</div>
-				</div>
-				<div style="width: 87%;height: 30px;margin-left: 25px;background-color: #0b6d78;border-radius: 3px;"></div>
-				<div class="mui-content-padded" style="background: url(img/btlist5_bg.png) no-repeat 10px 0;margin-top: 25px;width: 100%;height: auto;">
-					<div class="mui-row">
-						<div class="mui-col mui-col-xs-12" id="BtnList" style="padding-top:10px;overflow-y:auto;">
-							<div class="mui-col mui-col-xs-3">
-								<button type="button" value="1" id="1" name="Site" class="mui-btn mui-btn-royal mui-btn-block" style="float: left;">1</button>
-							</div>
-							<div class="mui-col mui-col-xs-3">
-								<button type="button" value="2" id="2" name="Site" class="mui-btn mui-btn-royal mui-btn-block" style="float: left;">2</button>
-							</div>
-							<div class="mui-col mui-col-xs-3">
-								<button type="button" value="3" id="3" name="Site" class="mui-btn mui-btn-royal mui-btn-block" style="float: left;">3</button>
-							</div>
-							<div class="mui-col mui-col-xs-3">
-								<button type="button" value="4" id="4" name="Site" class="mui-btn mui-btn-royal mui-btn-block" style="float: left;">4</button>
-							</div>
-							<div class="mui-col mui-col-xs-3">
-								<button type="button" value="5" id="5" name="Site" class="mui-btn mui-btn-royal mui-btn-block" style="float: left;">5</button>
-							</div>
-							<div class="mui-col mui-col-xs-3">
-								<button type="button" value="6" id="6" name="Site" class="mui-btn mui-btn-royal mui-btn-block" style="float: left;">6</button>
-							</div>
-							<div class="mui-col mui-col-xs-3">
-								<button type="button" value="7" id="7" name="Site" class="mui-btn mui-btn-royal mui-btn-block" style="float: left;">7</button>
-							</div>
-							<div class="mui-col mui-col-xs-3">
-								<button type="button" value="8" id="8" name="Site" class="mui-btn mui-btn-royal mui-btn-block" style="float: left;">8</button>
-							</div>
-						</div>
-						<div class="mui-col mui-col-xs-12" style="padding-top:10px;overflow-y:auto;">
-							<div class="mui-col mui-col-xs-3">
-								<button type="button" id="11814" class="mui-btn mui-btn-royal mui-btn-block" style="float: left;">11814</button>
-							</div>
-							<div class="mui-col mui-col-xs-3">
-								<button type="button" id="11841" class="mui-btn mui-btn-royal mui-btn-block" style="float: left;">11841</button>
-							</div>
-							<div class="mui-col mui-col-xs-3">
-								<button type="button" id="200" class="mui-btn mui-btn-royal mui-btn-block" style="float: left;">200</button>
-							</div>
-							<div class="mui-col mui-col-xs-3">
-								<button type="button" id="151" class="mui-btn mui-btn-royal mui-btn-block" style="float: left;">151</button>
-							</div>
-						</div>
-						<div class="mui-col mui-col-xs-12" style="text-align: center;padding-bottom: 13px;">
-							<div class="mui-col mui-col-xs-3" id="gomoving">
-								<button type="button" class="mui-btn mui-btn-royal mui-btn-block operation" id="moving" style="border:1px solid #4a5a6a;">移动</button>
-							</div>
-							<div class="mui-col mui-col-xs-3" id="gostart">
-								<button type="button" class="mui-btn mui-btn-royal mui-btn-block operation" id="start" style="border:1px solid #4a5a6a;">搬运</button>
-							</div>
-							<div class="mui-col mui-col-xs-3">
-								<button type="button" class="mui-btn mui-btn-royal mui-btn-block operation" id="cancel" style="border:1px solid #4a5a6a;">取消</button>
-							</div>
-							<!-- <div class="mui-col mui-col-xs-3">
-								<button type="button" class="mui-btn mui-btn-royal mui-btn-block operation" 
-								id="remote" style="border:1px solid #4a5a6a;">遥控</button>
-							</div>
-							<div class="mui-col mui-col-xs-3">
-								<button type="button" class="mui-btn mui-btn-royal mui-btn-block operation" 
-								id="details" style="border:1px solid #4a5a6a;">详情</button>
-							</div> -->
-						</div>
-					</div>
-				</div>
-				<div style="height: 15px;width: 101%;background: url(img/bottom_bg.png) no-repeat -25px 0;"></div>
-			</div>
-		</div>
-	</body>
-	<script src="js/jquery.min.js"></script>
-	<script src="js/mui.min.js"></script>
-	<script type="text/javascript">
-		var windowHeight = $(window).height()
-		$(function() {
-			$("#gostart").addClass("mui-hidden");
-			$("#moving").attr("disabled", true);
-			$("#start").attr("disabled", true);
-			$("button[name]").on("touchstart", onSelectStation);
-		});
-		$("#11814").click(function() {
-			var id = 1
-			var s = 1
-			var d = 4
-			var strone = {
-				"t": "AddTsk",
-				"id": id,
-				"s": s,
-				"d": d
-			}
-			var ss = JSON.stringify(strone)
-			$.post("http://192.168.0.118:8899", ss);
-		})
-		$("#11841").click(function() {
-			var id = 1
-			var s = 4
-			var d = 1
-			var strone = {
-				"t": "AddTsk",
-				"id": id,
-				"s": s,
-				"d": d
-			}
-			var ss = JSON.stringify(strone)
-			$.post("http://192.168.0.118:8899", ss);
-		})
-		$("#200").click(function() {
-			var id = 1
-			var s = 4
-			var d = 1
-			var strone = {
-				"t": "AddTsk",
-				"id": id,
-				"s": s,
-				"d": d
-			}
-			var ss = JSON.stringify(strone)
-			$.post("http://192.168.3.200:8899", ss);
-		})
-		$("#151").click(function() {
-			var id = 1
-			var s = 1
-			var d = 4
-			var strone = {
-				"t": "AddTsk",
-				"id": id,
-				"s": s,
-				"d": d
-			}
-			var ss = JSON.stringify(strone)
-			$.post("http://192.168.0.151:8899", ss);
-		})
-		$("#AAA").on("click", function() {
-			var id = 1
-			var s = 1
-			var d = 4
-			var strone = {
-				"t": "AddTsk",
-				"id": id,
-				"s": s,
-				"d": d
-			}
-			var ss = JSON.stringify(strone)
-			$.ajax({
-				type: 'post',
-				url: 'http://192.168.0.151:8899',
-				data: ss,
-				success: function(res) {
-					console.log(res);
-				},
-				error: function(res) {
-					console.log(res);
-				}
-			});
-		});
-
-		function onSelectStation(evt) {
-			var $this = $(this);
-			if ($("div[id='BtnList']").is(':active')) {
-				$this.removeClass('active');
-			} else {
-				$this.addClass('active');
-			}
-			if ($("div[id='BtnList']").find(".active").length == 1) {
-				$("#moving").attr("disabled", false);
-				$this.addClass('up');
-				$("#start").removeAttr("disabled");
-				$("#cancel").removeAttr("disabled");
-			} else if ($("div[id='BtnList']").find(".active").length == 2) {
-				$("#gomoving").addClass("mui-hidden");
-				$("#gostart").removeClass("mui-hidden");
-				$this.addClass('down');
-				$('#start').attr("disabled", false);
-				$("#handling").removeAttr("disabled");
-			}
-			if ($("div[id='BtnList']").find(".active").length >= 2) {
-				$("button[name='Site']").css("pointer-events", "none")
-			} else {
-				$("button[name='Site']").css("pointer-events", "auto")
-			}
-		};
-
-		function Reset(evt) {
-			if ($("div[id='BtnList']").find(".active")) {
-				$("#gostart").addClass("mui-hidden");
-				$("#gomoving").removeClass("mui-hidden");
-				$("button[name='Site']").removeClass('up');
-				$("button[name='Site']").removeClass('down');
-				$("button[name='Site']").removeClass('active');
-				$("button[name='Site']").css("pointer-events", "auto");
-				$('#start').attr("disabled", true);
-				$('#cancel').attr("disabled", true);
-				$('#moving').attr("disabled", true);
-			}
-		}
-		//移动
-		$("#moving").click(function() {
-			var bt_value = [];
-			$("div[id='BtnList']").find(".up").each(function(evt) {
-				bt_value.push($(this).val());
-			})
-			console.log("AAA", bt_value[0]);
-		});
-		//搬运
-		$("#start").click(function() {
-			var id = 1;
-			var bt_value = [];
-			$("div[id='BtnList']").find(".up").each(function(evt) {
-				bt_value.push($(this).val());
-			});
-			$("div[id='BtnList']").find(".down").each(function(evt) {
-				bt_value.push($(this).val());
-			});
-			var strone = {
-				"t": "AddTsk",
-				"id": id,
-				"s": bt_value[0],
-				"d": bt_value[1]
-			}
-			var ss = JSON.stringify(strone)
-			$.post("http://192.168.0.118:8899", ss);
-		});
-		//取消
-		$("#cancel").on("click", Reset);
-	</script>
-</html>

+ 131 - 0
css/feedback.css

@@ -0,0 +1,131 @@
+/*!
+ * ======================================================
+ * FeedBack Template For MUI (http://dev.dcloud.net.cn/mui)
+ * =======================================================
+ * @version:1.0.0
+ * @author:cuihongbao@dcloud.io
+ */
+
+.feedback body {
+	background-color: #EFEFF4;
+}
+.feedback input,
+.feedback textarea {
+	border: none !important;
+}
+.feedback textarea {
+	height: 100px;
+	margin-bottom: 0 !important;
+	padding-bottom: 0 !important;
+}
+.feedback .row {
+	width: 100%;
+	background-color: #fff;
+}
+.feedback p {
+	padding: 10px 15px 0;
+}
+/*.feedback button#submit { 
+	width: 90%;
+	height: 46px;
+	left: 50%;
+	-webkit-transform: translate(-50%);
+}*/
+
+input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{
+	font-size: 14px;
+}
+
+.feedback .hidden {
+	display: none;
+}
+.feedback .image-list {
+	width: 100%;
+	height: 85px;
+	background-size: cover;
+	padding: 10px 10px;
+	overflow: hidden;
+}
+.feedback .image-item {
+	width: 65px;
+	height: 65px;
+	/*background-image: url(../images/iconfont-tianjia.png);*/
+	background-size: 100% 100%;
+	display: inline-block;
+	position: relative;
+	border-radius: 5px;
+	margin-right: 10px;
+	margin-bottom: 10px;
+	border: solid 1px #e8e8e8;
+	vertical-align: top;
+}
+.feedback .image-item .file {
+	position: absolute;
+	left: 0px;
+	top: 0px;
+	width: 100%;
+	height: 100%;
+	opacity: 0;
+	cursor: pointer;
+	z-index: 0;
+}
+.feedback .image-item.space {
+	border: none;
+}
+.feedback .image-item .image-close {
+	position: absolute;
+	display: inline-block;
+	right: -6px;
+	top: -6px;
+	width: 20px;
+	height: 20px;
+	text-align: center;
+	line-height: 20px;
+	border-radius: 12px;
+	background-color: #FF5053;
+	color: #f3f3f3;
+	border: solid 1px #FF5053;
+	font-size: 9px;
+	font-weight: 200;
+	z-index: 1;
+}
+.feedback .image-item .image-up{
+	height: 65px;
+	width: 65px;
+	border-radius: 10px;
+	line-height: 65px;
+	border: 1px solid #ccc;
+	color: #ccc; 
+	display: inline-block;
+	text-align: center;
+}
+.feedback .image-item .image-up:after{
+	font-family: "微软雅黑";
+	content: '+';
+	font-size: 60px;
+}
+.feedback .image-item.space .image-close {
+	display: none;
+}
+.feedback .mui-inline{
+	vertical-align: bottom;
+	font-size: 14px;
+	color: #8f8f94;
+}
+.mui-icon-star{
+	color: #B5B5B5;
+	font-size: 22px;
+}
+.mui-icon-star-filled{
+	color: #FFB400;
+	font-size: 22px;
+} 
+.mui-popover {
+	height: 180px;
+}
+.stream{
+	display: none;
+}
+.mui-plus-stream .stream{
+	display: block;
+}

+ 0 - 84
css/iconfont.css

@@ -1,84 +0,0 @@
-@font-face {font-family: "iconfont";
-  src: url('iconfont.eot?t=1558488955052'); /* IE9 */
-  src: url('iconfont.eot?t=1558488955052#iefix') format('embedded-opentype'), /* IE6-IE8 */
-  url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAARwAAsAAAAAClgAAAQjAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCESgqFHIRBATYCJANECyQABCAFhG0HgUMbEAkRFaQrkH11YBt7nbjIaOFFJeX8iRC1WNIekrzPwQP15/tnkOT6Pe8qO6gQlE7tZRcbcCnhYz6A6/vN1SILFXWuKNceefSFpOXMy/yjAODh8/b+ttsUJzMc0C7qvEssy7Io02IAYRPG0FccHEv9bKC8z3t6l6paZAFNbAOLKgqiTWSCE/MtY5PhK8hU33E/BHBUpD5i9Owfx6KRwwQQc0puAlYUpjuGChYhWjm3IE4irLRZ3gF26p8XP02FBVIkQ44dnO2RprPpZVJqVbiK0ZKA5XBJYHQRKFAf0BCrmp6Psu36KM5id603EKUJ8lDFMNSkPualN3qhTUnRo3/womIsNofL4wsUKARRIYM9AA+goxBML44QMH0QEqYvQsH0Q2iY/ogIzABEFGYgIgYzCGHBDEbYMEMQDsxQhAszDOHBxBE+TAIRwCQRBTCp91AIQBEAVYESIA98BeasW0vQ1dK3ZItZMSwSngp4MfxH5z3pZHJOPplO6lnJvPJEOiP8VCKXiASJcdInlyUfz8QLIvEJvnKzaXdGKpsKxqRyztOniefPU8+eJZ88GZWJ5dOxRZlCzS2dNmbRqPJWkxzpJFJO+tyMq9xk3K3dLN7+84OfO2fu97T+ZNipU5nM/n2+hxhF2w//2v98b6T9/T80+5rEft/nSXrqzZ02NICw+JeAlDUOosuqDq7/A3etU6czmX37fbxrH/+vPSMGT5kySNDC1ClisHJP9btOmUK47PK5VTTushyKYj93eXDt7dyl1gi9m87yS5Ywa7s6+PHDQX1AI6eGHh8/HlAHFfT8JH24994ffqQb29vOb/n4A1eGq4Dw4lzVGEAdKgBQt/yVSfhtC3kCQD1xCVRfqYVvF6h+O/+xWV4CkK/sAq2z8orqqFlK64D65FoTlhxX12Sz7v/2qIrwGwIIWP318XEF7X+zXA3AS+dGHpXC45rTDcAisbHln2bZcIVe2kikSM+Xj09CgCJKTmiSUxwOCCH5Yt6d1lu2cRMEK7KMQIqpAIqlOlFT60OEqzlEWTqBox69LnaVMBdFFBuoy3oEQiHHQAqcB6WQu0RNfQsR5XwHUYVCgSMpSq7pYj5Es3s0zsAl5f/UFDoKi2Fnhr5x9d1nFtq0+IvNNzVKwjjteuWR7RAn+J8qBYTEdKAX9DDueyVn2nKBsAbcPYqk9klhocNkN3k0zsAlyf9JU+gocnPssu9/4+q7z6xjzoX+F5tvtk8SoXgD4qt73GjOS9nZ/1QpQJqDxHQgL5DknraVuPpeLRcI1Ts03V2E15JN3eHpvcMbaBotgHz9NWZCKqqmG6ZlO67nxzVuVrkCOux7FgSetNhra01VI4C6pfUcYkunc15ybzY2mtDC9zBF4WQFwWSxjiTrfkadxBg8d9cOLLl5YOwOTSY=') format('woff2'),
-  url('iconfont.woff?t=1558488955052') format('woff'),
-  url('iconfont.ttf?t=1558488955052') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
-  url('iconfont.svg?t=1558488955052#iconfont') format('svg'); /* iOS 4.1- */
-}
-
-.iconfont {
-  font-family: "iconfont" !important;
-  font-size: 16px;
-  font-style: normal;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-  color:#fff;
-}
-
-.iconbottom:before {
-  content: "\e647";
-}
-
-.iconleft-bottom:before {
-	
-  content: "\e649";
-	background: #0087c5;
-}
-
-.iconleft:before {
-  content: "\e64a";
-}
-
-.iconright-top:before {
-  content: "\e64b";
-}
-
-.iconright:before {
-  content: "\e64c";
-}
-
-.iconright-bottom:before {
-  content: "\e64d";
-}
-
-.icontop:before {
-  content: "\e64e";
-}
-
-.iconleft-top:before {
-  content: "\e64f";
-}
-
-.iconstop:before {
-  content: "\e650";
-}
-
-.iconleft1:before {
-  content: "\e651";
-}
-
-.iconright1:before {
-  content: "\e652";
-}
-
-.icontop1:before {
-  content: "\e653";
-}
-
-.iconbottom1:before {
-  content: "\e654";
-}
-
-.iconbtn-ico:before {
-  content: "\e655";
-}
-
-.iconbtn-bottom:before {
-  content: "\e656";
-}
-
-.iconbtn-top:before {
-  content: "\e657";
-}
-

+ 0 - 155
css/style.css

@@ -1,155 +0,0 @@
-			.mui-btn-block{
-				margin-bottom: 0;
-			}
-			.mui-content-padded{
-			  	margin: 2px;
-			  }
-			.mui-col{  
-				display: inline-block;  
-				padding: 2px;
-			}  
-			/*滚动条样式*/
-			::-webkit-scrollbar {
-            width: 0;
-            background-color: #F5F5F5;
-			}
-			/*定义滚动条轨道 内阴影+圆角*/
-			::-webkit-scrollbar-track {
-				background-color: #2e3342;
-			}
-			/*定义滑块 内阴影+圆角*/
-			::-webkit-scrollbar-thumb {
-				background-color: #2e3342;
-			}
-			.mui-btn-royal{
-					background-color: rgba(141, 157, 199, 0.5);
-					border:1px solid rgba(141, 157, 199, 0.5)
-			}
-			.active {
-				background-color: #d4d4d4;
-				color:white;
-			}
-			.up{
-				background: #0087c5 url(../img/top.svg) no-repeat 50% 10%;
-			}
-			.down{
-				background: #0087c5 url(../img/bottom.svg) no-repeat 50% 10%;
-			}
-			.mui-plus .plus{
-				display: inline;
-			}
-			.plus{
-				display: none;
-			}
-			#topPopover {
-				position: fixed;
-				top: 16px;
-				right: 6px;
-			}
-			#topPopover .mui-popover-arrow {
-				left: auto;
-				right: 6px;
-			}
-			p {
-				text-indent: 22px;
-			}
-			span.mui-icon {
-				font-size: 14px;
-				color: #007aff;
-				margin-left: -15px;
-				padding-right: 10px;
-			}
-			.mui-popover {
-				color:#fff;
-				height: 260px;
-				width: 130px;
-				background-color: rgba(141, 157, 199, 0.9);
-			}
-			.mui-content {
-				padding: 10px;
-			}
-			 .mui-scroll-wrapper{
-				background-color:transparent;
-			}
-			.mui-popover .mui-table-view{
-				background-color: transparent;
-			}
-			.history tr{
-				background-color: #ffffff;
-				border-radius:5px 0 0 5px;
-			}
-			.history td:first-child{
-				border-radius:5px 0 0 5px;
-			}
-			.history td:last-child{
-				border-radius: 0 5px 5px 0;
-			}
-			
-			.grid-task >div{
-            display: grid;
-            grid-template-columns: 60px 1fr 1fr 100px;
-            grid-gap: 1px;
-        }
-        .grid-task >div>span{
-			color: #fff;
-			font-size: 15px;
-            background-color: rgba(141, 157, 199, 0.5);
-            padding:5px 5px 2px 10px;
-        }
-		.mui-bar{
-			height:35px
-		}
-		.mui-bar-nav{
-			top: 0;
-			box-shadow: 0 1px 6px #2e3342;
-		}
-		.mui-title {
-			line-height:35px
-		}
-		.mui-bar .mui-icon {
-			padding-top:5px
-		}
-		.mui-bar-nav~.mui-content{
-			padding-top: 30px;
-		}
-		.text-success{
-			color:#27c24c
-		}
-		.mui-bar .mui-btn-link {
-			line-height: 36px;
-		}
-		.mui-col-xs-3{
-			width: 22%;
-		}
-		* { touch-action: none; }
-		
-		
-		.mui-content-padded{
-		  	padding: 10px 0 10px 0;
-		  }
-		.mui-col{  
-			padding-right: 4px; 
-			display: inline-block;  
-			padding: 2px 5px;
-		}  
-		.item{
-			margin: 5px 0;
-		}
-		.mui-row{
-			padding: 4px 0;
-		}
-		.mui-col-xs-3{
-			padding: 2px 2px;
-		}
-		.mui-col-xs-3 >input{
-			height: 20px;
-			margin-bottom: 0px;
-			border: 1px solid #298890;
-			background-color: rgba(255,255,255,0);
-		}
-		.mui-col-xs-2{
-			text-align: right;
-		}
-		.mui-icon-undo{
-			font-size: 40px;
-		}

+ 0 - 340
details.html

@@ -1,340 +0,0 @@
-<!DOCTYPE html>
-<html>
-
-	<head>
-		<meta charset="utf-8">
-		<title>SIMC 终端控制系统</title>
-		<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
-		<meta name="apple-mobile-web-app-capable" content="yes">
-		<meta name="apple-mobile-web-app-status-bar-style" content="black">
-		<!--标准mui.css-->
-		<link rel="stylesheet" href="css/mui.min.css">
-		<!--App自定义的css-->
-		<link rel="stylesheet" type="text/css" href="css/app.css" />
-		<link rel="stylesheet" type="text/css" href="css/iconfont.css" />
-		<style>
-			.mui-content-padded{
-			  	padding: 10px 0 10px 0;
-			  }
-			.mui-col{  
-				padding-right: 4px; 
-				display: inline-block;  
-				padding: 2px 5px;
-			}  
-			.item{
-				margin: 5px 0;
-			}
-			.mui-row{
-				padding: 4px 0;
-			}
-			.mui-col-xs-3{
-				padding: 2px 2px;
-			}
-			.mui-col-xs-3 >input{
-				height: 20px;
-				margin-bottom: 0px;
-				border: 1px solid #298890;
-				background-color: rgba(255,255,255,0);
-			}
-			.mui-col-xs-2{
-				text-align: right;
-			}
-			.mui-icon-undo{
-				font-size: 40px;
-			}
-			* { touch-action: none; }
-		</style>
-	</head>
-	<body style="background-image: url(img/bg.png);">
-		<div id="title" style="height: 4%;text-align: center;padding-top: 10px;padding-bottom: 5px;background: url(img/title_bg.png) no-repeat 0 17px;background-size:100%;">
-			<a style="color: #FFFFFF;font-size: 20px;">华力西曼克</a>
-		</div>
-		<div class="mui-content-padded" style="margin-top: 0px;">
-			<div class="mui-row" id="goods" style="margin-right: 0;height: 505px;">
-				<div class="mui-col mui-col-xs-12 item" style="color: #FFFFFF;font-size: 4px;">
-					<div class="mui-row" style="background-color: #0c414d;">
-						<div class="mui-col mui-col-xs-2" style="">
-							<span>运行状态</span>
-						</div>
-						<div class="mui-col mui-col-xs-3">
-							<input type="text" name="1" id="1" value="" />
-						</div>
-						<div class="mui-col mui-col-xs-1">
-							<span>A</span>
-						</div>
-						<div class="mui-col mui-col-xs-2">
-							<span>运&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp行</span>
-						</div>
-						<div class="mui-col mui-col-xs-3">
-							<input type="text" name="1" id="1" value="" />
-						</div>
-						<div class="mui-col mui-col-xs-1">
-							<span>A</span>
-						</div>
-					</div>
-					<div class="mui-row" style="background-color: #0c414d;">
-						<div class="mui-col mui-col-xs-2">
-							<span>运&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp行</span>
-						</div>
-						<div class="mui-col mui-col-xs-3" style="padding: 2px;">
-							<input type="text" name="1" id="1" value="" />
-						</div>
-						<div class="mui-col mui-col-xs-1">
-							<span>A</span>
-						</div>
-						<div class="mui-col mui-col-xs-2">
-							<span>运&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp行</span>
-						</div>
-						<div class="mui-col mui-col-xs-3">
-							<input type="text" name="1" id="1" value="" />
-						</div>
-						<div class="mui-col mui-col-xs-1">
-							<span>A</span>
-						</div>
-					</div>
-					<div class="mui-row" style="background-color: #0c414d;">
-						<div class="mui-col mui-col-xs-2">
-							<span>运&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp行</span>
-						</div>
-						<div class="mui-col mui-col-xs-3">
-							<input type="text" name="1" id="1" value="" />
-						</div>
-						<div class="mui-col mui-col-xs-1">
-							<span>A</span>
-						</div>
-						<div class="mui-col mui-col-xs-2">
-							<span>运&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp行</span>
-						</div>
-						<div class="mui-col mui-col-xs-3">
-							<input type="text" name="1" id="1" value="" />
-						</div>
-						<div class="mui-col mui-col-xs-1">
-							<span>A</span>
-						</div>
-					</div>
-					<div class="mui-row" style="background-color: #0c414d;">
-						<div class="mui-col mui-col-xs-2">
-							<span>运&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp行</span>
-						</div>
-						<div class="mui-col mui-col-xs-3">
-							<input type="text" name="1" id="1" value="" />
-						</div>
-						<div class="mui-col mui-col-xs-1">
-							<span>A</span>
-						</div>
-						<div class="mui-col mui-col-xs-2">
-							<span>运&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp行</span>
-						</div>
-						<div class="mui-col mui-col-xs-3">
-							<input type="text" name="1" id="1" value="" />
-						</div>
-						<div class="mui-col mui-col-xs-1">
-							<span>A</span>
-						</div>
-					</div>
-				</div>
-				<div class="mui-col mui-col-xs-12 item" style="color: #FFFFFF;font-size: 4px;">
-					<div class="mui-row" style="background-color: #0c414d;">
-						<div class="mui-col mui-col-xs-2" style="">
-							<span>运行状态</span>
-						</div>
-						<div class="mui-col mui-col-xs-3">
-							<input type="text" name="1" id="1" value="" />
-						</div>
-						<div class="mui-col mui-col-xs-1">
-							<span>A</span>
-						</div>
-						<div class="mui-col mui-col-xs-2">
-							<span>运&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp行</span>
-						</div>
-						<div class="mui-col mui-col-xs-3">
-							<input type="text" name="1" id="1" value="" />
-						</div>
-						<div class="mui-col mui-col-xs-1">
-							<span>A</span>
-						</div>
-					</div>
-					<div class="mui-row" style="background-color: #0c414d;">
-						<div class="mui-col mui-col-xs-2">
-							<span>运&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp行</span>
-						</div>
-						<div class="mui-col mui-col-xs-3" style="padding: 2px;">
-							<input type="text" name="1" id="1" value="" />
-						</div>
-						<div class="mui-col mui-col-xs-1">
-							<span>A</span>
-						</div>
-						<div class="mui-col mui-col-xs-2">
-							<span>运&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp行</span>
-						</div>
-						<div class="mui-col mui-col-xs-3">
-							<input type="text" name="1" id="1" value="" />
-						</div>
-						<div class="mui-col mui-col-xs-1">
-							<span>A</span>
-						</div>
-					</div>
-					<div class="mui-row" style="background-color: #0c414d;">
-						<div class="mui-col mui-col-xs-2">
-							<span>运&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp行</span>
-						</div>
-						<div class="mui-col mui-col-xs-3">
-							<input type="text" name="1" id="1" value="" />
-						</div>
-						<div class="mui-col mui-col-xs-1">
-							<span>A</span>
-						</div>
-						<div class="mui-col mui-col-xs-2">
-							<span>运&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp行</span>
-						</div>
-						<div class="mui-col mui-col-xs-3">
-							<input type="text" name="1" id="1" value="" />
-						</div>
-						<div class="mui-col mui-col-xs-1">
-							<span>A</span>
-						</div>
-					</div>
-					<div class="mui-row" style="background-color: #0c414d;">
-						<div class="mui-col mui-col-xs-2">
-							<span>运&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp行</span>
-						</div>
-						<div class="mui-col mui-col-xs-3">
-							<input type="text" name="1" id="1" value="" />
-						</div>
-						<div class="mui-col mui-col-xs-1">
-							<span>A</span>
-						</div>
-						<div class="mui-col mui-col-xs-2">
-							<span>运&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp行</span>
-						</div>
-						<div class="mui-col mui-col-xs-3">
-							<input type="text" name="1" id="1" value="" />
-						</div>
-						<div class="mui-col mui-col-xs-1">
-							<span>A</span>
-						</div>
-					</div>
-				</div>
-				<div class="mui-col mui-col-xs-12 item" style="color: #FFFFFF;font-size: 4px;">
-					<div class="mui-row" style="background-color: #0c414d;">
-						<div class="mui-col mui-col-xs-2" style="">
-							<span>运行状态</span>
-						</div>
-						<div class="mui-col mui-col-xs-3">
-							<input type="text" name="1" id="1" value="" />
-						</div>
-						<div class="mui-col mui-col-xs-1">
-							<span>A</span>
-						</div>
-						<div class="mui-col mui-col-xs-2">
-							<span>运&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp行</span>
-						</div>
-						<div class="mui-col mui-col-xs-3">
-							<input type="text" name="1" id="1" value="" />
-						</div>
-						<div class="mui-col mui-col-xs-1">
-							<span>A</span>
-						</div>
-					</div>
-					<div class="mui-row" style="background-color: #0c414d;">
-						<div class="mui-col mui-col-xs-2">
-							<span>运&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp行</span>
-						</div>
-						<div class="mui-col mui-col-xs-3" style="padding: 2px;">
-							<input type="text" name="1" id="1" value="" />
-						</div>
-						<div class="mui-col mui-col-xs-1">
-							<span>A</span>
-						</div>
-						<div class="mui-col mui-col-xs-2">
-							<span>运&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp行</span>
-						</div>
-						<div class="mui-col mui-col-xs-3">
-							<input type="text" name="1" id="1" value="" />
-						</div>
-						<div class="mui-col mui-col-xs-1">
-							<span>A</span>
-						</div>
-					</div>
-					<div class="mui-row" style="background-color: #0c414d;">
-						<div class="mui-col mui-col-xs-2">
-							<span>运&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp行</span>
-						</div>
-						<div class="mui-col mui-col-xs-3">
-							<input type="text" name="1" id="1" value="" />
-						</div>
-						<div class="mui-col mui-col-xs-1">
-							<span>A</span>
-						</div>
-						<div class="mui-col mui-col-xs-2">
-							<span>运&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp行</span>
-						</div>
-						<div class="mui-col mui-col-xs-3">
-							<input type="text" name="1" id="1" value="" />
-						</div>
-						<div class="mui-col mui-col-xs-1">
-							<span>A</span>
-						</div>
-					</div>
-					<div class="mui-row" style="background-color: #0c414d;">
-						<div class="mui-col mui-col-xs-2">
-							<span>运&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp行</span>
-						</div>
-						<div class="mui-col mui-col-xs-3">
-							<input type="text" name="1" id="1" value="" />
-						</div>
-						<div class="mui-col mui-col-xs-1">
-							<span>A</span>
-						</div>
-						<div class="mui-col mui-col-xs-2">
-							<span>运&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp行</span>
-						</div>
-						<div class="mui-col mui-col-xs-3">
-							<input type="text" name="1" id="1" value="" />
-						</div>
-						<div class="mui-col mui-col-xs-1">
-							<span>A</span>
-						</div>
-					</div>
-				</div>
-			</div>
-		</div>
-		<div id="stop" style="margin-top: 13px;height: 15px;background: url(img/bottom_bg.png) no-repeat -25px 0;"></div>
-	</body>
-	<script src="js/jquery.min.js"></script>
-	<script src="js/mui.min.js"></script>
-
-	<script>
-		$(function() {
-			$('input[type="text"]').attr('disabled', 'disabled');
-		});
-		$("#returns").click(function() {
-			window.location.href = "index.html";
-		})
-		var windowHeight = $(window).height(),
-		$body = $("body");
-		$("body").on("touchstart", function(e) {
-			e.preventDefault();
-			startX = e.originalEvent.changedTouches[0].pageX,
-			startY = e.originalEvent.changedTouches[0].pageY;
-		});
-		$("body").on("touchmove", function(e) {
-			e.preventDefault();
-			moveEndX = e.originalEvent.changedTouches[0].pageX,
-				moveEndY = e.originalEvent.changedTouches[0].pageY,
-				X = moveEndX - startX,
-				Y = moveEndY - startY;
-			if (Math.abs(X) > Math.abs(Y) && X > 0) {
-				window.location.href = "remote.html"; //right
-			} else if (Math.abs(X) > Math.abs(Y) && X < 0) {
-				window.location.href = "index.html"; //left
-			} else if (Math.abs(Y) > Math.abs(X) && Y > 0) {
-				return //bottom
-			} else if (Math.abs(Y) > Math.abs(X) && Y < 0) {
-				return //top
-			} else {
-				return
-			}
-		});
-	</script>
-</html>

BIN
images/1-1.png



BIN
images/10-1.png






























BIN
images/battery-0.png


BIN
img/battery.png


BIN
img/btlist2_bg.png


BIN
img/btlist3_bg.png


BIN
img/btlist4_bg.png


BIN
img/btlist5_bg.png


BIN
img/btlist_bg.png





BIN
img/top_bg2.png


+ 177 - 275
index.html

@@ -2,7 +2,7 @@
 <html>
 	<head>
 		<meta charset="utf-8">
-		<title>华力机电SIMANC</title>
+		<title>森之洋</title>
 		<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
 		<meta name="apple-mobile-web-app-capable" content="yes">
 		<meta name="apple-mobile-web-app-status-bar-style" content="black">
@@ -14,50 +14,61 @@
 			.mui-btn-block {
 				margin-bottom: 0;
 			}
+
 			.mui-content-padded {
 				margin: 2px;
 			}
+
 			.mui-col {
 				display: inline-block;
 				padding: 2px;
 			}
+
 			/*滚动条样式*/
 			::-webkit-scrollbar {
-            width: 10px;
-            background-color: #F5F5F5;
+				width: 10px;
+				background-color: #F5F5F5;
 			}
+
 			/*定义滚动条轨道 内阴影+圆角*/
 			::-webkit-scrollbar-track {
 				background-color: #103643;
 			}
+
 			/*定义滑块 内阴影+圆角*/
 			::-webkit-scrollbar-thumb {
 				background-color: #0b6d78;
 			}
+
 			.mui-btn-royal {
 				background-color: rgba(141, 157, 199, 0.5);
 				border: 1px solid rgba(141, 157, 199, 0.5)
 			}
+
 			.active {
 				background-color: #d4d4d4;
 				color: white;
 			}
+
 			.up {
 				background: #0087c5 url(img/top.svg) no-repeat 50% 10%;
 			}
+
 			.down {
 				background: #0087c5 url(img/bottom.svg) no-repeat 50% 10%;
 			}
+
 			.text-success {
 				color: #27c24c
 			}
+
 			.mui-col-xs-3 {
 				width: 23%;
 			}
+
 			.mui-col-xs-2 {
 				width: 23%;
 			}
-			
 		</style>
 	</head>
 	<body style="background: url(img/bg.png) no-repeat 0px 0px">
@@ -66,12 +77,16 @@
 				<div class="mui-row">
 					<div class="mui-col mui-col-xs-12">
 						<span id="agvstatus" style="position: fixed;">·</span>
-						<div id="title" style="text-align: center;padding-bottom: 2px;background: url(img/title_bg.png) no-repeat 0 7px;background-size:100%;">
-							<a style="color: #FFFFFF;font-size: 20px;">华力西曼克</a>
+						<div id="title"
+							style="text-align: center;padding-bottom: 2px;background: url(img/title_bg.png) no-repeat 0 7px;background-size:100%;">
+							<a style="color: #FFFFFF;font-size: 20px;">森之洋</a>
 						</div>
 					</div>
-					<div class="mui-col mui-col-xs-12" id="btt" style="min-height:480px;overflow-y:auto;max-height:480px">
-						<div class="mui-col mui-col-xs-12" style="height: 235px;text-align: center;background: url(img/top_bg2.png) no-repeat 0 0;background-size:100%;">
+					<div class="mui-col mui-col-xs-12" id="btt"
+						style="min-height:490px;overflow-y:auto;max-height:490px;">
+						<div class="mui-col mui-col-xs-12"
+							style="height: 235px;text-align: center;background: url(img/top_bg2.png) no-repeat 0 -10px;background-size:100%;">
+							<!-- <div class="mui-col mui-col-xs-12" style="height: 235px;text-align: center;background: url(img/top_bg2.png) no-repeat 0 0;background-size:100%;"> -->
 							<div class="mui-col mui-col-xs-12" style="padding-top: 10px;height: 30px;">
 								<div style=" width: 50%;float: left;">
 									<img id="speed" src="" style="margin-left: -80px;width: 13%;">
@@ -81,7 +96,8 @@
 								</div>
 							</div>
 							<div class="mui-col mui-col-xs-12" style="margin-top: -5px;">
-								<div id="tgts" style="width: 120px;height:90px;border-radius: 12px;border: 2px solid #298890;float: left;margin-left: 23px;">
+								<div id="tgts"
+									style="width: 120px;height:90px;border-radius: 12px;border: 2px solid #298890;float: left;margin-left: 23px;">
 									<div style="margin-left: -60px;margin-top: 15px;">
 										<a style="color: #FFFFFF;font-size: 18px;">目标</a><br>
 									</div>
@@ -92,7 +108,8 @@
 										<a id="tgtstation" style="color: #FFFFFF;font-size: 50px;"></a><br>
 									</div>
 								</div>
-								<div id="jack" style="width: 120px;height:90px;border-radius: 12px;border: 2px solid #298890;float: right;margin-right: 20px;">
+								<div id="jack"
+									style="width: 120px;height:90px;border-radius: 12px;border: 2px solid #298890;float: right;margin-right: 20px;">
 									<div style="margin-left: -60px;margin-top: 15px;">
 										<a style="color: #FFFFFF;font-size: 18px;">顶升</a><br>
 									</div>
@@ -104,46 +121,52 @@
 									</div>
 								</div>
 							</div>
-							<div class="mui-col mui-col-xs-12" style="height: 40px;padding-left: 15px;margin-top: -5px;">
-								<div id="stop" style="width: 30%;height: 40px;line-height:40px;float: left;margin-left: 5px;background: url(img/btn4_bg.png);color: #FFFFFF;text-align: center;">停止</div>
-								<div id="run" style="width: 30%;height: 40px;line-height:40px;float: left;margin-left: 5px;background: url(img/btn4_bg.png);color: #FFFFFF;text-align: center;">运行</div>
-								<div id="warning" style="width: 30%;height: 40px;line-height:40px;float: left;margin-left: 5px;background: url(img/btn4_bg.png);color: #FFFFFF;text-align: center;">注意</div>
+							<div class="mui-col mui-col-xs-12"
+								style="height: 40px;padding-left: 15px;margin-top: -5px;">
+								<div id="stop"
+									style="width: 30%;height: 40px;line-height:40px;float: left;margin-left: 5px;background: url(img/btn4_bg.png);color: #FFFFFF;text-align: center;">
+									停止</div>
+								<div id="run"
+									style="width: 30%;height: 40px;line-height:40px;float: left;margin-left: 5px;background: url(img/btn4_bg.png);color: #FFFFFF;text-align: center;">
+									运行</div>
+								<div id="warning"
+									style="width: 30%;height: 40px;line-height:40px;float: left;margin-left: 5px;background: url(img/btn4_bg.png);color: #FFFFFF;text-align: center;">
+									注意</div>
 							</div>
 							<div class="mui-col mui-col-xs-12">
-								<div id="info" style="width: 89%;height: 35px;margin-left: 19px;color:#fff;font-size:15px;line-height: 30px;background-color: #0b6d78;border-radius: 3px;text-align: center;padding-left: 5px;"></div>
+								<div id="info"
+									style="width: 89%;height: 30px;margin-left: 19px;color:#fff;font-size:15px;line-height: 30px;background-color: #0b6d78;border-radius: 3px;text-align: center;padding-left: 5px;">
+								</div>
 							</div>
 						</div>
+
 						<div class="mui-col mui-col-xs-12" style="margin-top: -5px;">
-							<div id="btlist" style="padding-left: 15px;height:190px">
-								<div class="mui-col mui-col-xs-2 client"><button type="button" class="mui-btn mui-btn-royal mui-btn-block" name="stbtn" id="1" value="1">c1</button></div>
-								<div class="mui-col mui-col-xs-2 client"><button type="button" class="mui-btn mui-btn-royal mui-btn-block" name="stbtn" id="2" value="2">c2</button></div>
-								<div class="mui-col mui-col-xs-2 client"><button type="button" class="mui-btn mui-btn-royal mui-btn-block" name="stbtn" id="3" value="3">c3</button></div>
-								<div class="mui-col mui-col-xs-2 client"><button type="button" class="mui-btn mui-btn-royal mui-btn-block" name="stbtn" id="4" value="4">c4</button></div>
-								<div class="mui-col mui-col-xs-2 client"><button type="button" class="mui-btn mui-btn-royal mui-btn-block" name="stbtn" id="5" value="5">c5</button></div>
-								<div class="mui-col mui-col-xs-2 client"><button type="button" class="mui-btn mui-btn-royal mui-btn-block" name="stbtn" id="6" value="6">c6</button></div>
-								<div class="mui-col mui-col-xs-2 client"><button type="button" class="mui-btn mui-btn-royal mui-btn-block" name="stbtn" id="7" value="7">c7</button></div>
-								<div class="mui-col mui-col-xs-2 client"><button type="button" class="mui-btn mui-btn-royal mui-btn-block" name="stbtn" id="8" value="8">c8</button></div>
+							<div class="mui-col mui-col-xs-12">
+								<div id="workstatus"
+									style="margin-top: -15px;width: 89%;height: 55px;line-height: 55px;margin-left: 19px;color:#fff;font-size:15px;background-color: #0b6d78;border-radius: 3px;text-align: center;padding-left: 5px;">
+									前序工作状态:<span id="status"></span>
+								</div>
+							</div>
+							<div id="btlist" style="padding-left: 15px;padding-right: 15px;height:175px">
+								<div class="mui-col mui-col-xs-12 client" style="padding-top:10px">
+									<button type="button" class="mui-btn mui-btn-primary mui-btn-block mui-hidden"
+										id="Call"></button>
+								</div>
+								<div id="Caches" class="mui-col mui-col-xs-12 client mui-hidden" style="padding-top:10px">
+									<button type="button" class="mui-btn mui-btn-primary mui-btn-block"
+										id="Cache">缓存工位</button>
+								</div>
+								<div class="mui-col mui-col-xs-12 client" style="padding-top:10px">
+									<button type="button" class="mui-btn mui-btn-success mui-btn-block mui-hidden"
+										id="Finish">完成</button>
+								</div>
 							</div>
 						</div>
 					</div>
-					<div class="mui-col mui-col-xs-12" style="text-align:center;margin-top: 10px;">
+					<div class="mui-col mui-col-xs-12" style="text-align:center;margin-top: 5px;">
 						<div class="mui-col mui-col-xs-2">
-							<a href="settings.html" style="color: #9fb3b4;"><span class="mui-icon mui-icon-settings"></span></a>
-						</div>
-						<div class="mui-col mui-col-xs-3" id="gomoving">
-							<button type="button" class="mui-btn mui-btn-royal mui-btn-block operation" id="moving" style="border:1px solid #4a5a6a;">移动</button>
-						</div>
-						<div class="mui-col mui-col-xs-3" id="gostart">
-							<button type="button" class="mui-btn mui-btn-royal mui-btn-block operation" id="start" style="border:1px solid #4a5a6a;">搬运</button>
-						</div>
-						<div class="mui-col mui-col-xs-3" id="gostart_client">
-							<button type="button" class="mui-btn mui-btn-royal mui-btn-block operation" id="start_client" style="border:1px solid #4a5a6a;">client</button>
-						</div>
-						<div class="mui-col mui-col-xs-3">
-							<button type="button" class="mui-btn mui-btn-royal mui-btn-block operation" id="cancel" style="border:1px solid #4a5a6a;">取消</button>
-						</div>
-						<div class="mui-col mui-col-xs-2" id="task_list">
-							<a href="tasklist.html" style="color: #9fb3b4;"><span class="mui-icon mui-icon-bars"></span></a>
+							<a href="settings.html" style="color: #9fb3b4;"><span
+									class="mui-icon mui-icon-settings"></span></a>
 						</div>
 					</div>
 				</div>
@@ -151,51 +174,19 @@
 		</div>
 	</body>
 	<script src="js/jquery.min.js"></script>
-	<script src="js/mui.min.js"></script>
-	<script src="js/lodash.js"></script>
 	<script src="js/msg.js"></script>
-	<script src="js/Sortable.min.js"></script>
-	<script src="js/mui.js"></script>
-	<script src="js/jquery.min.js"></script>
 	<script src="js/mui.min.js"></script>
 	<script type="text/javascript">
 		var $btlist = $('#btlist');
+		let ip, url, agvid, mapid, site, AcceptId, msgAcceptId;
 		$(function() {
-			//查询所选模式(service、client)
-			workmode = localStorage.getItem("workmode");
-			SetConfig()
-			//获取按钮
-			//获取状态
-			if(workmode == "service"){
-				createList();
-				startLog();
-				setInterval(function() {
-					if (ws.readyState === 3) {
-						startLog();
-					}
-				}, 1000);
-			}
-			//注册按钮点击事件click touchstart
-			$("button[name]").on("touchstart", onSelectStation);
-			//设置操作按钮
-			$("#gostart").addClass("mui-hidden");
-			$("#gostart_client").addClass("mui-hidden");
-			$("#moving").attr("disabled", true);
-			$("#start").attr("disabled", true);
-			$("#start_client").attr("disabled", true);
-			$('#cancel').attr("disabled", true);
-		})
-		//按钮点击事件
-		function SetConfig() {
 			//获取保存的ip、agvid、mapid等,如果没有数据,则设置为默认
 			if (localStorage.getItem("ip") == "" || localStorage.getItem("ip") == null) {
-				ip = "192.168.1.92:8888";
-				url = "http://192.168.1.92:8888"
-				posturl = "http://192.168.1.92:8899"
+				ip = "192.168.111.240:8888";
+				url = "http://192.168.111.240:8888"
 			} else {
 				ip = localStorage.getItem("ip") + ":8888";
 				url = "http://" + localStorage.getItem("ip") + ":8888";
-				posturl = "http://" + localStorage.getItem("ip") + ":8899";
 			}
 			if (localStorage.getItem("agvid") == "" || localStorage.getItem("agvid") == null) {
 				agvid = 1;
@@ -207,207 +198,103 @@
 			} else {
 				mapid = localStorage.getItem("mapid")
 			}
-				workmode = localStorage.getItem("workmode");
-			if (workmode == "client") {
-				$("#gostart").addClass("mui-hidden")
-				$("#gostart_client").removeClass("mui-hidden")
-			} else {
-				$("#gostart_client").addClass("mui-hidden")
-				$("#gostart").removeClass("mui-hidden")
-			}
-		}
-		function onSelectStation(evt) {
-			var $this = $(this);
-			if ($("div[id='btlist']").is(':active')) {
-				$this.removeClass('active');
-			} else {
-				$this.addClass('active');
-			}
-			if ($("div[id='btlist']").find(".active").length == 1) {
-				$("#moving").attr("disabled", false);
-				$this.addClass('up');
-				//$("#start").removeAttr("disabled");
-				$("#cancel").removeAttr("disabled");
-			} else if ($("div[id='btlist']").find(".active").length == 2) {
-				$("#gomoving").addClass("mui-hidden");
-				SetConfig();
-				$this.addClass('down');
-				$('#start').attr("disabled", false);
-				$("#start_client").attr("disabled", false);
-				$("#handling").removeAttr("disabled");
-				$("#cancel").removeAttr("disabled");
-			}
-			if ($("div[id='btlist']").find(".active").length >= 2) {
-				$("button[name='stbtn']").css("pointer-events", "none")
+			if (localStorage.getItem("site") == "" || localStorage.getItem("site") == null) {
+				site = ""
+				$("#Call").addClass("mui-hidden");
 			} else {
-				$("button[name='stbtn']").css("pointer-events", "auto")
-			}
-		};
-		//取消按钮操作
-		function Reset(evt) {
-			if ($("div[id='btlist']").find(".active")) {
-				$("#gostart").addClass("mui-hidden");
-				$("#gomoving").removeClass("mui-hidden");
-				$("button[name='stbtn']").removeClass('up');
-				$("button[name='stbtn']").removeClass('down');
-				$("button[name='stbtn']").removeClass('active');
-				$("button[name='stbtn']").css("pointer-events", "auto");
-				$('#start').attr("disabled", true);
-				$('#start_client').attr("disabled", true);
-				$('#cancel').attr("disabled", true);
-				$('#moving').attr("disabled", true);
-				if (localStorage.getItem("workmode") == "client") {
-					$("#gomoving").removeClass("mui-hidden");
-					$("#gostart").addClass("mui-hidden")
-					$("#gostart_client").addClass("mui-hidden")
+				site = localStorage.getItem("site");
+				$("#Call").removeClass("mui-hidden");
+				$("#Call").html(site);
+				if (site == "下料工位") {
+					// 缓存工位按钮
+					$("#Caches").removeClass("mui-hidden")
 				} else {
-					$("#gostart_client").addClass("mui-hidden")
-					$("#gostart").addClass("mui-hidden")
+					$("#Caches").addClass("mui-hidden")
 				}
 			}
-		}
-		//移动按钮
-		$("#moving").click(function() {
-			let to;
-			$("div[id='btlist']").find(".up").each(function(evt) {
-				to = parseInt(($(this).context).id);
-			});
-			if(workmode == "service"){
-				SendCmd(agvid, msgTypeToStation, {
-					"Stn": to
-				}, function(d) {
+			AcceptId = localStorage.getItem("AcceptId")
+			$("#Finish").attr("disabled", true);
+			startLog();
+			setInterval(function() {
+				if (ws.readyState === 3) {
+					startLog();
+				}
+			}, 1000);
+		})
+
+		//完成按钮
+		$("#Finish").click(function() {
+			DoneTermTask(agvid, AcceptId, function(d) {
+				if (d == "ok") {
 					mui.toast("任务发送成功...")
-					Reset()
-				})
-			}
-			if(workmode == "client"){
-				var bt_value = [];
-				$("div[id='btlist']").find(".up").each(function(evt) {
-					bt_value.push($(this).val());
-				});
-				id = Math.round(new Date().getTime()/1000).toString();
-				var s = parseInt(bt_value[0])
-				var d = parseInt(bt_value[0])
-				var strone = {
-					"t": "AddTsk",
-					"id": id,
-					"s": s,
-					"d": d
+				} else {
+					if (d == "") {
+						if (msgAcceptId === AcceptId) {
+							mui.toast("当前工位任务执行中...")
+						}
+						if (msgAcceptId == (AcceptId - 1)) {
+							mui.toast("前序工位任务执行中...")
+						}
+					}
+					mui.toast("请稍后重试...")
 				}
-				var ss = JSON.stringify(strone)
-				$.post(posturl, ss);
-				mui.toast("任务发送成功...")
-				Reset()
-			}
-		});
-		//搬运按钮
-		$("#start").click(function() {
-			var bt_value = [];
-			$("div[id='btlist']").find(".up").each(function(evt) {
-				bt_value.push($(this).val());
-			});
-			$("div[id='btlist']").find(".down").each(function(evt) {
-				bt_value.push($(this).val());
-			});
-			AddTransTask(agvid, bt_value[0], bt_value[1], function(d) {
-				if (d == "ok"){
+			})
+		})
+
+		//缓存工位
+		$("#Cache").click(function() {
+			let from, to;
+			from = 3;
+			to = 4;
+			AddTermTask(agvid, AcceptId, from, to, function(d) {
+				if (d == "ok") {
 					mui.toast("任务发送成功...")
 				} else {
-					mui.toast("任务发送失败...")
+					mui.toast("请稍后重试...")
 				}
-				Reset()
 			})
 		});
-		//客户端搬运按钮
-		$("#start_client").on("click", function() {
-			var bt_value = [];
-			$("div[id='btlist']").find(".up").each(function(evt) {
-				bt_value.push($(this).val());
-			});
-			$("div[id='btlist']").find(".down").each(function(evt) {
-				bt_value.push($(this).val());
-			});
-			id = Math.round(new Date().getTime()/1000).toString();
-			var s = parseInt(bt_value[0])
-			var d = parseInt(bt_value[1])
-			var strone = {
-				"t": "AddTsk",
-				"id": id,
-				"s": s,
-				"d": d
+
+		//上下箱工位、清扫工位、下料工位
+		$("#Call").click(function() {
+			let from, to;
+			if (site === "上下箱工位") {
+				from = 4;
+				to = 1;
+			}
+			if (site === "清扫工位") {
+				from = 1;
+				to = 2;
+			}
+			if (site === "下料工位") {
+				from = 2;
+				to = 3;
 			}
-			var ss = JSON.stringify(strone)
-			$.post(posturl, ss);
-			mui.toast("任务发送成功...")
-			Reset()
+			AddTermTask(agvid, AcceptId, from, to, function(d) {
+				if (d == "ok") {
+					mui.toast("任务发送成功...")
+				} else {
+
+					mui.toast("请稍后重试...")
+				}
+			})
 		});
-		function AddTransTask(agvid, from, to, callback) {
-			$.post(url + "/task", {
+
+		function DoneTermTask(agvid, AcceptId, callback) {
+			$.post(url + "/task/term/done", {
 				id: agvid,
+				acceptId: AcceptId
+			}, callback);
+		};
+
+		function AddTermTask(agvid, AcceptId, from, to, callback) {
+			$.post(url + "/task/term/send", {
+				id: agvid,
+				acceptId: AcceptId,
 				from: from,
 				to: to
 			}, callback);
 		};
-
-		function SendCmd(agvid, cmd, opt, func) {
-			let param = {
-				"t": cmd
-			};
-			opt = _.extend(param, opt);
-			//console.log("param", opt);
-			$.post(url + "/agv/SendString/" + agvid,
-				JSON.stringify(opt),
-				func
-			);
-		}
-		//取消按钮
-		$("#cancel").on("click", Reset);
-		//填充按钮列表
-		function createList() {
-			$.get(url + "/map/getStations/" + mapid, function(data) {
-				IDARR = localStorage.getItem(mapid+agvid+"ARR");
-				trs = "";
-				if(IDARR == "" ||IDARR == undefined){
-					ARRS = [];
-					for (i in data) {
-						if (data[i].Name != "" && data[i].Name != "rect") {
-							var ids = data[i].Id - (agvid * 100)
-							ARRS.push(parseInt(data[i].Id));
-								trs += '<div class="mui-col mui-col-xs-3" drag-id="'+ids+'">' +
-									'<button type="button" class="mui-btn mui-btn-royal mui-btn-block" name="stbtn" id="' + ids +
-									'" value="' + ids + '">' +
-									data[i].Name + '</button></div>'
-						}
-					}
-					ARR = ARRS.join(",");
-					localStorage.setItem(mapid + agvid + 'ARR', ARR);
-				} else {
-					arr = IDARR.split(",");// 在每个逗号(,)处进行分解。
-					var id_arr = arr.sort(function(a, b){return a - b});//按从小到大排序
-					for (x in id_arr) {
-						for (i in data) {
-							if((data[i].Name != "") && data[i].Name != "rect"){
-								var ids = data[i].Id - (agvid * 100)
-								if ((data[i].Id == id_arr[x])) {
-									trs += '<div class="mui-col mui-col-xs-3" drag-id="'+ids+'">' +
-										'<button type="button" class="mui-btn mui-btn-royal mui-btn-block" name="stbtn" id="' + ids +
-										'" value="' + ids + '">' +
-										data[i].Name + '</button></div>'
-								}
-							}
-						}
-					}
-				}
-				if (localStorage.getItem("workmode") == "client") {
-					$(".client").removeClass("mui-hidden")
-				} else {
-					$(".client").addClass("mui-hidden")
-					$btlist.append(trs);
-				}
-				//注册按钮点击事件click touchstart
-				$("button[name]").on("touchstart", onSelectStation);
-			})
-		}
 		//新建ws连接,获取agv的状态
 		let ws;
 		function startLog() {
@@ -415,6 +302,7 @@
 			ws.onmessage = function(e) {
 				let result;
 				let msg = JSON.parse(e.data);
+				// console.log("msg",msg)
 				switch (msg.type) {
 					case msgTypeStatus:
 						// 每秒一次状态
@@ -425,8 +313,23 @@
 						if (agvid == msg.id) {
 							let stMap = JSON.parse(msg.data);
 							$("#agvstatus").toggleClass("text-success");
-							$(".mui-btn").removeClass("text-success");
-							$("#" + stMap.Station + "").addClass("text-success");
+						}
+						// 当前工作站点id
+						msgAcceptId = stMap.AcceptId;
+						if (msgAcceptId == AcceptId) {
+							$("#Finish").removeClass("mui-hidden");
+							$("#Finish").attr("disabled", false);
+						} else {
+							$("#Finish").addClass("mui-hidden");
+							$("#Finish").attr("disabled", true);
+						}
+						if ((msgAcceptId == 1 && AcceptId == 2) || (msgAcceptId == 2 && AcceptId == 3) || (msgAcceptId ==
+								3 && AcceptId == 1)) {
+							$("#status").html("工作中", +msgAcceptId);
+							document.getElementById("workstatus").style.backgroundColor = "red"; // "#9C9C9C" ;// ;
+						} else {
+							$("#status").html("未工作");
+							document.getElementById("workstatus").style.backgroundColor = "green"; // "#9C9C9C" ;//
 						}
 						break;
 						//读取设置状态,可以获得电池伏数
@@ -436,7 +339,7 @@
 					default:
 						//console.log(msg.type, msg.data);
 				}
-			};
+			}
 		}
 		//根据获取到的agv状态,设置速度、电量、站点、顶升、提示信息、运行按钮等的颜色和文字显示
 		function showStatusValue(status) {
@@ -501,7 +404,7 @@
 					} else {
 						document.getElementById("run").style.backgroundImage = "url('img/btn4_bg.png')";
 					}
-					if (v == 3 || v == 4 ||(v == 5)) {
+					if (v == 3 || v == 4 || (v == 5)) {
 						if (v == 3) {
 							$("#info").text("停止");
 						}
@@ -509,7 +412,7 @@
 							$("#info").text("急停");
 						}
 						if (v == 5) {
-							$("#info").text("刹车");
+							$("#info").text("防撞停止");
 						}
 						document.getElementById("stop").style.backgroundImage = "url('img/btn3_bg.png')";
 					} else {
@@ -581,18 +484,17 @@
 				document.getElementById("run").style.backgroundImage = "url('img/btn4_bg.png')";
 				document.getElementById("stop").style.backgroundImage = "url('img/btn3_bg.png')";
 			}
-		};		
+		};
 		$(function() {
-			if(workmode == "service"){
-				GetTransTask(agvid, function (d) {
-					console.log("GetTransTask: ", d)
-				});
-			}
+			GetTermTask(agvid, function(d) {
+				console.log("GetTermTask: ", d)
+			})
 		})
-		function GetTransTask(agvid, callback) {
-		    $.post(url + "/task/get", {
-		        id: agvid,
-		    }, callback);
+
+		function GetTermTask(agvid, callback) {
+			$.post(url + "/task/term/get", {
+				id: agvid,
+			}, callback);
 		}
 	</script>
-</html>
+</html>

+ 0 - 283
internet.html

@@ -1,283 +0,0 @@
-<!DOCTYPE html>
-<html>
-	<head>
-		<meta charset="utf-8">
-		<title>华力机电SIMANC</title>
-		<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
-		<meta name="apple-mobile-web-app-capable" content="yes">
-		<meta name="apple-mobile-web-app-status-bar-style" content="black">
-		<!--标准mui.css-->
-		<link rel="stylesheet" type="text/css" href="css/mui.min.css">
-		<!--App自定义的css-->
-		<link rel="stylesheet" type="text/css" href="css/app.css" />
-		<link rel="stylesheet" type="text/css" href="css/style.css" />
-	</head>
-	<body style="background: url(img/bg.png) no-repeat 0px -0px;width:99%;">
-		<div id="title" style="height: 4%;text-align: center;padding-top: 10px;padding-bottom: 5px;background: url(img/title_bg.png) no-repeat 0 17px;background-size:100%;">
-			<a style="color: #FFFFFF;font-size: 20px;">华力西曼克</a>
-		</div>
-		<div id="top" style="height: 30%;text-align: center;padding-top: 1px;background: url(img/top_bg.png) no-repeat 0 0px;background-size:100%;">
-			<div class="mui-row">
-				<div class="mui-col mui-col-xs-12">
-					<div id="speed" style="height: 10%;width: 50%;padding-top: 10px;float: left;">
-						<img src="img/speed-high.png" style="margin-left: -80px;width: 13%;">
-					</div>
-					<div id="battery" style="height: 10%;width: 50%;padding-top: 10px;float: left;">
-						<img src="img/battery-100.png" style="margin-right: -80px;width: 23%;">
-					</div>
-				</div>
-				<div class="mui-col mui-col-xs-12">
-					<div id="jacking" style="width: 120px;height:90px;border-radius: 12px;border: 2px solid #298890;float: left;margin-left: 23px;">
-						<div style="margin-left: -60px;margin-top: 15px;">
-							<a style="color: #FFFFFF;font-size: 18px;">目标</a><br>
-						</div>
-						<div style="margin-left: -60px;margin-top: 10px;">
-							<a style="color: #FFFFFF;font-size: 18px;">站点</a><br>
-						</div>
-						<div style="margin-left: 40px;margin-top: -40px;">
-							<a style="color: #FFFFFF;font-size: 50px;">7</a><br>
-						</div>
-					</div>
-					<div id="jacking" style="width: 120px;height:90px;border-radius: 12px;border: 2px solid #298890;float: right;margin-right: 20px;">
-						<div style="margin-left: -60px;margin-top: 15px;">
-							<a style="color: #FFFFFF;font-size: 18px;">顶升</a><br>
-						</div>
-						<div style="margin-left: -60px;margin-top: 10px;">
-							<a style="color: #FFFFFF;font-size: 18px;">状态</a><br>
-						</div>
-						<div style="margin-left: 60px;margin-top: -55px;">
-							<img src="img/liftstatus.png" width="60%">
-						</div>
-					</div>
-				</div>
-				<br>
-				<br>
-				<div style="width: 94%;height: 50px;margin-top: 95px;margin-left: 20px;">
-					<div style="width: 22%;height: 40px;line-height:40px;float: left;margin-left: 5px;background: url(img/btn4_bg.png);color: #FFFFFF;text-align: center;">停止</div>
-					<div style="width: 22%;height: 40px;line-height:40px;float: left;margin-left: 5px;background: url(img/btn4_bg.png);color: #FFFFFF;text-align: center;">运行</div>
-					<div style="width: 22%;height: 40px;line-height:40px;float: left;margin-left: 5px;background: url(img/btn4_bg.png);color: #FFFFFF;text-align: center;">注意</div>
-					<div id="details" style="width: 22%;height: 40px;line-height:40px;float: left;margin-left: 5px;background: url(img/btn4_bg.png);color: #FFFFFF;text-align: center;">详情</div>
-				</div>
-				<div style="width: 87%;height: 30px;margin-left: 25px;background-color: #0b6d78;border-radius: 3px;"></div>
-				<div class="mui-content-padded" style="background: url(img/btlist5_bg.png) no-repeat 10px 0;margin-top: 15px;width: 100%;height: auto;">
-					<div class="mui-row">
-						<div class="mui-col mui-col-xs-12" id="BtnList" style="padding-top:10px;min-height:195px;overflow-y:auto;max-height:195px">
-							<div class="mui-col mui-col-xs-3">
-								<button type="button" value="1" id="1" name="Site" class="mui-btn mui-btn-royal mui-btn-block" style="float: left;">1</button>
-							</div>
-							<div class="mui-col mui-col-xs-3">
-								<button type="button" value="2" id="2" name="Site" class="mui-btn mui-btn-royal mui-btn-block" style="float: left;">2</button>
-							</div>
-							<div class="mui-col mui-col-xs-3">
-								<button type="button" value="3" id="3" name="Site" class="mui-btn mui-btn-royal mui-btn-block" style="float: left;">3</button>
-							</div>
-							<div class="mui-col mui-col-xs-3">
-								<button type="button" value="4" id="4" name="Site" class="mui-btn mui-btn-royal mui-btn-block" style="float: left;">4</button>
-							</div>
-							<div class="mui-col mui-col-xs-3">
-								<button type="button" value="5" id="5" name="Site" class="mui-btn mui-btn-royal mui-btn-block" style="float: left;">5</button>
-							</div>
-							<div class="mui-col mui-col-xs-3">
-								<button type="button" value="6" id="6" name="Site" class="mui-btn mui-btn-royal mui-btn-block" style="float: left;">6</button>
-							</div>
-							<div class="mui-col mui-col-xs-3">
-								<button type="button" value="7" id="7" name="Site" class="mui-btn mui-btn-royal mui-btn-block" style="float: left;">7</button>
-							</div>
-							<div class="mui-col mui-col-xs-3">
-								<button type="button" value="8" id="8" name="Site" class="mui-btn mui-btn-royal mui-btn-block" style="float: left;">8</button>
-							</div>
-							
-						</div>
-						<div class="mui-col mui-col-xs-12" style="text-align: center;padding-bottom: 13px;">
-							<div class="mui-col mui-col-xs-3" id="gomoving">
-								<button type="button" class="mui-btn mui-btn-royal mui-btn-block operation" id="moving" style="border:1px solid #4a5a6a;">移动</button>
-							</div>
-							<div class="mui-col mui-col-xs-3" id="gostart">
-								<button type="button" class="mui-btn mui-btn-royal mui-btn-block operation" id="start" style="border:1px solid #4a5a6a;">搬运</button>
-							</div>
-							<div class="mui-col mui-col-xs-3">
-								<button type="button" class="mui-btn mui-btn-royal mui-btn-block operation" id="cancel" style="border:1px solid #4a5a6a;">取消</button>
-							</div>
-						</div>
-					</div>
-				</div>
-				<div style="height: 15px;width: 101%;background: url(img/bottom_bg.png) no-repeat -25px 0;"></div>
-			</div>
-		</div>
-	</body>
-	<script src="js/jquery.min.js"></script>
-	<script src="js/mui.min.js"></script>
-	<script type="text/javascript">
-		var windowHeight = $(window).height(),
-			$body = $("body");
-		//  $body.css("height", windowHeight); //重要代码
-		$("body").on("touchstart", function(e) {
-			e.preventDefault();
-			startX = e.originalEvent.changedTouches[0].pageX,
-			startY = e.originalEvent.changedTouches[0].pageY;
-		});
-		$("body").on("touchmove", function(e) {
-			e.preventDefault();
-			moveEndX = e.originalEvent.changedTouches[0].pageX,
-			moveEndY = e.originalEvent.changedTouches[0].pageY,
-			X = moveEndX - startX,
-			Y = moveEndY - startY;
-	    if ( Math.abs(X) > Math.abs(Y) && X > 0 ) {
-	     window.location.href = "index.html"; //right
-	    }
-	    else if ( Math.abs(X) > Math.abs(Y) && X < 0 ) {
-	       window.location.href = "remote.html";  //left
-	    }
-	    else if ( Math.abs(Y) > Math.abs(X) && Y > 0) {
-	      return //bottom
-	    }
-	    else if ( Math.abs(Y) > Math.abs(X) && Y < 0 ) {
-	      return //top
-	    }
-	    else{
-	      return
-	    }
-		});
-		$(function() {
-			if (localStorage.getItem("ip") == "" || localStorage.getItem("ip") == null) {
-				ip = "http://192.168.0.118:8899";
-			}else{
-				ip = "http://" + localStorage.getItem("ip") + ":8899";
-			}
-			if (localStorage.getItem("agvid") == "" || localStorage.getItem("agvid") == null) {
-				agvid = 1;
-			}else{
-				agvid = parseInt(localStorage.getItem("agvid"))
-			}
-			if (localStorage.getItem("mapid") == "" || localStorage.getItem("mapid") == null) {
-				mapid = "1";
-			}else{
-				mapid = localStorage.getItem("mapid")
-			}
-			
-			$("#gostart").addClass("mui-hidden");
-			$("#moving").attr("disabled", true);
-			$("#start").attr("disabled", true);
-			$('#cancel').attr("disabled", true);
-			$("button[name]").on("touchstart", onSelectStation);
-		})
-		$("#11814").click(function() {
-			var s = 1
-			var d = 4
-			var strone = {
-				"t": "AddTsk",
-				"id": agvid,
-				"s": s,
-				"d": d
-			}
-			var ss = JSON.stringify(strone)
-			$.post(ip, ss);
-		})
-		$("#11841").click(function() {
-			var s = 4
-			var d = 1
-			var strone = {
-				"t": "AddTsk",
-				"id": agvid,
-				"s": s,
-				"d": d
-			}
-			var ss = JSON.stringify(strone)
-			$.post(ip, ss);
-		})
-		$("#200").click(function() {
-			var s = 4
-			var d = 1
-			var strone = {
-				"t": "AddTsk",
-				"id": agvid,
-				"s": s,
-				"d": d
-			}
-			var ss = JSON.stringify(strone)
-			$.post(ip, ss);
-		})
-		$("151").click(function() {
-			var s = 1
-			var d = 4
-			var strone = {
-				"t": "AddTsk",
-				"id": agvid,
-				"s": s,
-				"d": d
-			}
-			var ss = JSON.stringify(strone)
-			$.post(ip, ss);
-		})
-		function onSelectStation(evt) {
-			var $this = $(this);
-			if ($("div[id='BtnList']").is(':active')) {
-				$this.removeClass('active');
-			} else {
-				$this.addClass('active');
-			}
-			if ($("div[id='BtnList']").find(".active").length == 1) {
-				$("#moving").attr("disabled", false);
-				$this.addClass('up');
-				$("#start").removeAttr("disabled");
-				$("#cancel").removeAttr("disabled");
-			} else if ($("div[id='BtnList']").find(".active").length == 2) {
-				$("#gomoving").addClass("mui-hidden");
-				$("#gostart").removeClass("mui-hidden");
-				$this.addClass('down');
-				$('#start').attr("disabled", false);
-				$("#handling").removeAttr("disabled");
-			}
-			if ($("div[id='BtnList']").find(".active").length >= 2) {
-				$("button[name='Site']").css("pointer-events", "none")
-			} else {
-				$("button[name='Site']").css("pointer-events", "auto")
-			}
-		};
-		function Reset(evt) {
-			if ($("div[id='BtnList']").find(".active")) {
-				$("#gostart").addClass("mui-hidden");
-				$("#gomoving").removeClass("mui-hidden");
-				$("button[name='Site']").removeClass('up');
-				$("button[name='Site']").removeClass('down');
-				$("button[name='Site']").removeClass('active');
-				$("button[name='Site']").css("pointer-events", "auto");
-				$('#start').attr("disabled", true);
-				$('#cancel').attr("disabled", true);
-				$('#moving').attr("disabled", true);
-			}
-		}
-		//移动
-		$("#moving").click(function() {
-			var bt_value = [];
-			$("div[id='BtnList']").find(".up").each(function(evt) {
-				parseInt(bt_value.push($(this).val()));
-			})
-			Reset()
-		});
-		//搬运
-		$("#start").click(function() {
-			var bt_value = [];
-			$("div[id='BtnList']").find(".up").each(function(evt) {
-				bt_value.push($(this).val());
-			});
-			$("div[id='BtnList']").find(".down").each(function(evt) {
-				bt_value.push($(this).val());
-			});
-			var strone = {
-				"t": "AddTsk",
-				"id": agvid,
-				"s": parseInt(bt_value[0]),
-				"d": parseInt(bt_value[1])
-			}
-			var ss = JSON.stringify(strone)
-			$.post(ip, ss);
-			Reset()
-		});
-		//取消
-		$("#cancel").on("click", Reset);
-		$("#details").click(function() {
-			window.location.href = "details.html";
-		})
-	</script>
-</html>

Разница между файлами не показана из-за своего большого размера
+ 0 - 1
js/Sortable.min.js


+ 0 - 3172
js/app.min.js

@@ -1,3172 +0,0 @@
-if (function (a, b) {
-        "object" == typeof module && "object" == typeof module.exports ? module.exports = a.document ? b(a, !0) : function (a) {
-            if (!a.document)throw new Error("jQuery requires a window with a document");
-            return b(a)
-        } : b(a)
-    }("undefined" != typeof window ? window : this, function (a, b) {
-        function c(a) {
-            var b = "length" in a && a.length, c = _.type(a);
-            return "function" === c || _.isWindow(a) ? !1 : 1 === a.nodeType && b ? !0 : "array" === c || 0 === b || "number" == typeof b && b > 0 && b - 1 in a
-        }
-
-        function d(a, b, c) {
-            if (_.isFunction(b))return _.grep(a, function (a, d) {
-                return !!b.call(a, d, a) !== c
-            });
-            if (b.nodeType)return _.grep(a, function (a) {
-                return a === b !== c
-            });
-            if ("string" == typeof b) {
-                if (ha.test(b))return _.filter(b, a, c);
-                b = _.filter(b, a)
-            }
-            return _.grep(a, function (a) {
-                return U.call(b, a) >= 0 !== c
-            })
-        }
-
-        function e(a, b) {
-            for (; (a = a[b]) && 1 !== a.nodeType;);
-            return a
-        }
-
-        function f(a) {
-            var b = oa[a] = {};
-            return _.each(a.match(na) || [], function (a, c) {
-                b[c] = !0
-            }), b
-        }
-
-        function g() {
-            Z.removeEventListener("DOMContentLoaded", g, !1), a.removeEventListener("load", g, !1), _.ready()
-        }
-
-        function h() {
-            Object.defineProperty(this.cache = {}, 0, {
-                get: function () {
-                    return {}
-                }
-            }), this.expando = _.expando + h.uid++
-        }
-
-        function i(a, b, c) {
-            var d;
-            if (void 0 === c && 1 === a.nodeType)if (d = "data-" + b.replace(ua, "-$1").toLowerCase(), c = a.getAttribute(d), "string" == typeof c) {
-                try {
-                    c = "true" === c ? !0 : "false" === c ? !1 : "null" === c ? null : +c + "" === c ? +c : ta.test(c) ? _.parseJSON(c) : c
-                } catch (e) {
-                }
-                sa.set(a, b, c)
-            } else c = void 0;
-            return c
-        }
-
-        function j() {
-            return !0
-        }
-
-        function k() {
-            return !1
-        }
-
-        function l() {
-            try {
-                return Z.activeElement
-            } catch (a) {
-            }
-        }
-
-        function m(a, b) {
-            return _.nodeName(a, "table") && _.nodeName(11 !== b.nodeType ? b : b.firstChild, "tr") ? a.getElementsByTagName("tbody")[0] || a.appendChild(a.ownerDocument.createElement("tbody")) : a
-        }
-
-        function n(a) {
-            return a.type = (null !== a.getAttribute("type")) + "/" + a.type, a
-        }
-
-        function o(a) {
-            var b = Ka.exec(a.type);
-            return b ? a.type = b[1] : a.removeAttribute("type"), a
-        }
-
-        function p(a, b) {
-            for (var c = 0, d = a.length; d > c; c++)ra.set(a[c], "globalEval", !b || ra.get(b[c], "globalEval"))
-        }
-
-        function q(a, b) {
-            var c, d, e, f, g, h, i, j;
-            if (1 === b.nodeType) {
-                if (ra.hasData(a) && (f = ra.access(a), g = ra.set(b, f), j = f.events)) {
-                    delete g.handle, g.events = {};
-                    for (e in j)for (c = 0, d = j[e].length; d > c; c++)_.event.add(b, e, j[e][c])
-                }
-                sa.hasData(a) && (h = sa.access(a), i = _.extend({}, h), sa.set(b, i))
-            }
-        }
-
-        function r(a, b) {
-            var c = a.getElementsByTagName ? a.getElementsByTagName(b || "*") : a.querySelectorAll ? a.querySelectorAll(b || "*") : [];
-            return void 0 === b || b && _.nodeName(a, b) ? _.merge([a], c) : c
-        }
-
-        function s(a, b) {
-            var c = b.nodeName.toLowerCase();
-            "input" === c && ya.test(a.type) ? b.checked = a.checked : ("input" === c || "textarea" === c) && (b.defaultValue = a.defaultValue)
-        }
-
-        function t(b, c) {
-            var d, e = _(c.createElement(b)).appendTo(c.body), f = a.getDefaultComputedStyle && (d = a.getDefaultComputedStyle(e[0])) ? d.display : _.css(e[0], "display");
-            return e.detach(), f
-        }
-
-        function u(a) {
-            var b = Z, c = Oa[a];
-            return c || (c = t(a, b), "none" !== c && c || (Na = (Na || _("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement), b = Na[0].contentDocument, b.write(), b.close(), c = t(a, b), Na.detach()), Oa[a] = c), c
-        }
-
-        function v(a, b, c) {
-            var d, e, f, g, h = a.style;
-            return c = c || Ra(a), c && (g = c.getPropertyValue(b) || c[b]), c && ("" !== g || _.contains(a.ownerDocument, a) || (g = _.style(a, b)), Qa.test(g) && Pa.test(b) && (d = h.width, e = h.minWidth, f = h.maxWidth, h.minWidth = h.maxWidth = h.width = g, g = c.width, h.width = d, h.minWidth = e, h.maxWidth = f)), void 0 !== g ? g + "" : g
-        }
-
-        function w(a, b) {
-            return {
-                get: function () {
-                    return a() ? void delete this.get : (this.get = b).apply(this, arguments)
-                }
-            }
-        }
-
-        function x(a, b) {
-            if (b in a)return b;
-            for (var c = b[0].toUpperCase() + b.slice(1), d = b, e = Xa.length; e--;)if (b = Xa[e] + c, b in a)return b;
-            return d
-        }
-
-        function y(a, b, c) {
-            var d = Ta.exec(b);
-            return d ? Math.max(0, d[1] - (c || 0)) + (d[2] || "px") : b
-        }
-
-        function z(a, b, c, d, e) {
-            for (var f = c === (d ? "border" : "content") ? 4 : "width" === b ? 1 : 0, g = 0; 4 > f; f += 2)"margin" === c && (g += _.css(a, c + wa[f], !0, e)), d ? ("content" === c && (g -= _.css(a, "padding" + wa[f], !0, e)), "margin" !== c && (g -= _.css(a, "border" + wa[f] + "Width", !0, e))) : (g += _.css(a, "padding" + wa[f], !0, e), "padding" !== c && (g += _.css(a, "border" + wa[f] + "Width", !0, e)));
-            return g
-        }
-
-        function A(a, b, c) {
-            var d = !0, e = "width" === b ? a.offsetWidth : a.offsetHeight, f = Ra(a), g = "border-box" === _.css(a, "boxSizing", !1, f);
-            if (0 >= e || null == e) {
-                if (e = v(a, b, f), (0 > e || null == e) && (e = a.style[b]), Qa.test(e))return e;
-                d = g && (Y.boxSizingReliable() || e === a.style[b]), e = parseFloat(e) || 0
-            }
-            return e + z(a, b, c || (g ? "border" : "content"), d, f) + "px"
-        }
-
-        function B(a, b) {
-            for (var c, d, e, f = [], g = 0, h = a.length; h > g; g++)d = a[g], d.style && (f[g] = ra.get(d, "olddisplay"), c = d.style.display, b ? (f[g] || "none" !== c || (d.style.display = ""), "" === d.style.display && xa(d) && (f[g] = ra.access(d, "olddisplay", u(d.nodeName)))) : (e = xa(d), "none" === c && e || ra.set(d, "olddisplay", e ? c : _.css(d, "display"))));
-            for (g = 0; h > g; g++)d = a[g], d.style && (b && "none" !== d.style.display && "" !== d.style.display || (d.style.display = b ? f[g] || "" : "none"));
-            return a
-        }
-
-        function C(a, b, c, d, e) {
-            return new C.prototype.init(a, b, c, d, e)
-        }
-
-        function D() {
-            return setTimeout(function () {
-                Ya = void 0
-            }), Ya = _.now()
-        }
-
-        function E(a, b) {
-            var c, d = 0, e = {height: a};
-            for (b = b ? 1 : 0; 4 > d; d += 2 - b)c = wa[d], e["margin" + c] = e["padding" + c] = a;
-            return b && (e.opacity = e.width = a), e
-        }
-
-        function F(a, b, c) {
-            for (var d, e = (cb[b] || []).concat(cb["*"]), f = 0, g = e.length; g > f; f++)if (d = e[f].call(c, b, a))return d
-        }
-
-        function G(a, b, c) {
-            var d, e, f, g, h, i, j, k, l = this, m = {}, n = a.style, o = a.nodeType && xa(a), p = ra.get(a, "fxshow");
-            c.queue || (h = _._queueHooks(a, "fx"), null == h.unqueued && (h.unqueued = 0, i = h.empty.fire, h.empty.fire = function () {
-                h.unqueued || i()
-            }), h.unqueued++, l.always(function () {
-                l.always(function () {
-                    h.unqueued--, _.queue(a, "fx").length || h.empty.fire()
-                })
-            })), 1 === a.nodeType && ("height" in b || "width" in b) && (c.overflow = [n.overflow, n.overflowX, n.overflowY], j = _.css(a, "display"), k = "none" === j ? ra.get(a, "olddisplay") || u(a.nodeName) : j, "inline" === k && "none" === _.css(a, "float") && (n.display = "inline-block")), c.overflow && (n.overflow = "hidden", l.always(function () {
-                n.overflow = c.overflow[0], n.overflowX = c.overflow[1], n.overflowY = c.overflow[2]
-            }));
-            for (d in b)if (e = b[d], $a.exec(e)) {
-                if (delete b[d], f = f || "toggle" === e, e === (o ? "hide" : "show")) {
-                    if ("show" !== e || !p || void 0 === p[d])continue;
-                    o = !0
-                }
-                m[d] = p && p[d] || _.style(a, d)
-            } else j = void 0;
-            if (_.isEmptyObject(m))"inline" === ("none" === j ? u(a.nodeName) : j) && (n.display = j); else {
-                p ? "hidden" in p && (o = p.hidden) : p = ra.access(a, "fxshow", {}), f && (p.hidden = !o), o ? _(a).show() : l.done(function () {
-                    _(a).hide()
-                }), l.done(function () {
-                    var b;
-                    ra.remove(a, "fxshow");
-                    for (b in m)_.style(a, b, m[b])
-                });
-                for (d in m)g = F(o ? p[d] : 0, d, l), d in p || (p[d] = g.start, o && (g.end = g.start, g.start = "width" === d || "height" === d ? 1 : 0))
-            }
-        }
-
-        function H(a, b) {
-            var c, d, e, f, g;
-            for (c in a)if (d = _.camelCase(c), e = b[d], f = a[c], _.isArray(f) && (e = f[1], f = a[c] = f[0]), c !== d && (a[d] = f, delete a[c]), g = _.cssHooks[d], g && "expand" in g) {
-                f = g.expand(f), delete a[d];
-                for (c in f)c in a || (a[c] = f[c], b[c] = e)
-            } else b[d] = e
-        }
-
-        function I(a, b, c) {
-            var d, e, f = 0, g = bb.length, h = _.Deferred().always(function () {
-                delete i.elem
-            }), i = function () {
-                if (e)return !1;
-                for (var b = Ya || D(), c = Math.max(0, j.startTime + j.duration - b), d = c / j.duration || 0, f = 1 - d, g = 0, i = j.tweens.length; i > g; g++)j.tweens[g].run(f);
-                return h.notifyWith(a, [j, f, c]), 1 > f && i ? c : (h.resolveWith(a, [j]), !1)
-            }, j = h.promise({
-                elem: a,
-                props: _.extend({}, b),
-                opts: _.extend(!0, {specialEasing: {}}, c),
-                originalProperties: b,
-                originalOptions: c,
-                startTime: Ya || D(),
-                duration: c.duration,
-                tweens: [],
-                createTween: function (b, c) {
-                    var d = _.Tween(a, j.opts, b, c, j.opts.specialEasing[b] || j.opts.easing);
-                    return j.tweens.push(d), d
-                },
-                stop: function (b) {
-                    var c = 0, d = b ? j.tweens.length : 0;
-                    if (e)return this;
-                    for (e = !0; d > c; c++)j.tweens[c].run(1);
-                    return b ? h.resolveWith(a, [j, b]) : h.rejectWith(a, [j, b]), this
-                }
-            }), k = j.props;
-            for (H(k, j.opts.specialEasing); g > f; f++)if (d = bb[f].call(j, a, k, j.opts))return d;
-            return _.map(k, F, j), _.isFunction(j.opts.start) && j.opts.start.call(a, j), _.fx.timer(_.extend(i, {
-                elem: a,
-                anim: j,
-                queue: j.opts.queue
-            })), j.progress(j.opts.progress).done(j.opts.done, j.opts.complete).fail(j.opts.fail).always(j.opts.always)
-        }
-
-        function J(a) {
-            return function (b, c) {
-                "string" != typeof b && (c = b, b = "*");
-                var d, e = 0, f = b.toLowerCase().match(na) || [];
-                if (_.isFunction(c))for (; d = f[e++];)"+" === d[0] ? (d = d.slice(1) || "*", (a[d] = a[d] || []).unshift(c)) : (a[d] = a[d] || []).push(c)
-            }
-        }
-
-        function K(a, b, c, d) {
-            function e(h) {
-                var i;
-                return f[h] = !0, _.each(a[h] || [], function (a, h) {
-                    var j = h(b, c, d);
-                    return "string" != typeof j || g || f[j] ? g ? !(i = j) : void 0 : (b.dataTypes.unshift(j), e(j), !1)
-                }), i
-            }
-
-            var f = {}, g = a === tb;
-            return e(b.dataTypes[0]) || !f["*"] && e("*")
-        }
-
-        function L(a, b) {
-            var c, d, e = _.ajaxSettings.flatOptions || {};
-            for (c in b)void 0 !== b[c] && ((e[c] ? a : d || (d = {}))[c] = b[c]);
-            return d && _.extend(!0, a, d), a
-        }
-
-        function M(a, b, c) {
-            for (var d, e, f, g, h = a.contents, i = a.dataTypes; "*" === i[0];)i.shift(), void 0 === d && (d = a.mimeType || b.getResponseHeader("Content-Type"));
-            if (d)for (e in h)if (h[e] && h[e].test(d)) {
-                i.unshift(e);
-                break
-            }
-            if (i[0] in c)f = i[0]; else {
-                for (e in c) {
-                    if (!i[0] || a.converters[e + " " + i[0]]) {
-                        f = e;
-                        break
-                    }
-                    g || (g = e)
-                }
-                f = f || g
-            }
-            return f ? (f !== i[0] && i.unshift(f), c[f]) : void 0
-        }
-
-        function N(a, b, c, d) {
-            var e, f, g, h, i, j = {}, k = a.dataTypes.slice();
-            if (k[1])for (g in a.converters)j[g.toLowerCase()] = a.converters[g];
-            for (f = k.shift(); f;)if (a.responseFields[f] && (c[a.responseFields[f]] = b), !i && d && a.dataFilter && (b = a.dataFilter(b, a.dataType)), i = f, f = k.shift())if ("*" === f)f = i; else if ("*" !== i && i !== f) {
-                if (g = j[i + " " + f] || j["* " + f], !g)for (e in j)if (h = e.split(" "), h[1] === f && (g = j[i + " " + h[0]] || j["* " + h[0]])) {
-                    g === !0 ? g = j[e] : j[e] !== !0 && (f = h[0], k.unshift(h[1]));
-                    break
-                }
-                if (g !== !0)if (g && a["throws"])b = g(b); else try {
-                    b = g(b)
-                } catch (l) {
-                    return {state: "parsererror", error: g ? l : "No conversion from " + i + " to " + f}
-                }
-            }
-            return {state: "success", data: b}
-        }
-
-        function O(a, b, c, d) {
-            var e;
-            if (_.isArray(b))_.each(b, function (b, e) {
-                c || yb.test(a) ? d(a, e) : O(a + "[" + ("object" == typeof e ? b : "") + "]", e, c, d)
-            }); else if (c || "object" !== _.type(b))d(a, b); else for (e in b)O(a + "[" + e + "]", b[e], c, d)
-        }
-
-        function P(a) {
-            return _.isWindow(a) ? a : 9 === a.nodeType && a.defaultView
-        }
-
-        var Q = [], R = Q.slice, S = Q.concat, T = Q.push, U = Q.indexOf, V = {}, W = V.toString, X = V.hasOwnProperty, Y = {}, Z = a.document, $ = "2.1.4", _ = function (a, b) {
-            return new _.fn.init(a, b)
-        }, aa = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ba = /^-ms-/, ca = /-([\da-z])/gi, da = function (a, b) {
-            return b.toUpperCase()
-        };
-        _.fn = _.prototype = {
-            jquery: $, constructor: _, selector: "", length: 0, toArray: function () {
-                return R.call(this)
-            }, get: function (a) {
-                return null != a ? 0 > a ? this[a + this.length] : this[a] : R.call(this)
-            }, pushStack: function (a) {
-                var b = _.merge(this.constructor(), a);
-                return b.prevObject = this, b.context = this.context, b
-            }, each: function (a, b) {
-                return _.each(this, a, b)
-            }, map: function (a) {
-                return this.pushStack(_.map(this, function (b, c) {
-                    return a.call(b, c, b)
-                }))
-            }, slice: function () {
-                return this.pushStack(R.apply(this, arguments))
-            }, first: function () {
-                return this.eq(0)
-            }, last: function () {
-                return this.eq(-1)
-            }, eq: function (a) {
-                var b = this.length, c = +a + (0 > a ? b : 0);
-                return this.pushStack(c >= 0 && b > c ? [this[c]] : [])
-            }, end: function () {
-                return this.prevObject || this.constructor(null)
-            }, push: T, sort: Q.sort, splice: Q.splice
-        }, _.extend = _.fn.extend = function () {
-            var a, b, c, d, e, f, g = arguments[0] || {}, h = 1, i = arguments.length, j = !1;
-            for ("boolean" == typeof g && (j = g, g = arguments[h] || {}, h++), "object" == typeof g || _.isFunction(g) || (g = {}), h === i && (g = this, h--); i > h; h++)if (null != (a = arguments[h]))for (b in a)c = g[b], d = a[b], g !== d && (j && d && (_.isPlainObject(d) || (e = _.isArray(d))) ? (e ? (e = !1, f = c && _.isArray(c) ? c : []) : f = c && _.isPlainObject(c) ? c : {}, g[b] = _.extend(j, f, d)) : void 0 !== d && (g[b] = d));
-            return g
-        }, _.extend({
-            expando: "jQuery" + ($ + Math.random()).replace(/\D/g, ""), isReady: !0, error: function (a) {
-                throw new Error(a)
-            }, noop: function () {
-            }, isFunction: function (a) {
-                return "function" === _.type(a)
-            }, isArray: Array.isArray, isWindow: function (a) {
-                return null != a && a === a.window
-            }, isNumeric: function (a) {
-                return !_.isArray(a) && a - parseFloat(a) + 1 >= 0
-            }, isPlainObject: function (a) {
-                return "object" !== _.type(a) || a.nodeType || _.isWindow(a) ? !1 : a.constructor && !X.call(a.constructor.prototype, "isPrototypeOf") ? !1 : !0
-            }, isEmptyObject: function (a) {
-                var b;
-                for (b in a)return !1;
-                return !0
-            }, type: function (a) {
-                return null == a ? a + "" : "object" == typeof a || "function" == typeof a ? V[W.call(a)] || "object" : typeof a
-            }, globalEval: function (a) {
-                var b, c = eval;
-                a = _.trim(a), a && (1 === a.indexOf("use strict") ? (b = Z.createElement("script"), b.text = a, Z.head.appendChild(b).parentNode.removeChild(b)) : c(a))
-            }, camelCase: function (a) {
-                return a.replace(ba, "ms-").replace(ca, da)
-            }, nodeName: function (a, b) {
-                return a.nodeName && a.nodeName.toLowerCase() === b.toLowerCase()
-            }, each: function (a, b, d) {
-                var e, f = 0, g = a.length, h = c(a);
-                if (d) {
-                    if (h)for (; g > f && (e = b.apply(a[f], d), e !== !1); f++); else for (f in a)if (e = b.apply(a[f], d), e === !1)break
-                } else if (h)for (; g > f && (e = b.call(a[f], f, a[f]), e !== !1); f++); else for (f in a)if (e = b.call(a[f], f, a[f]), e === !1)break;
-                return a
-            }, trim: function (a) {
-                return null == a ? "" : (a + "").replace(aa, "")
-            }, makeArray: function (a, b) {
-                var d = b || [];
-                return null != a && (c(Object(a)) ? _.merge(d, "string" == typeof a ? [a] : a) : T.call(d, a)), d
-            }, inArray: function (a, b, c) {
-                return null == b ? -1 : U.call(b, a, c)
-            }, merge: function (a, b) {
-                for (var c = +b.length, d = 0, e = a.length; c > d; d++)a[e++] = b[d];
-                return a.length = e, a
-            }, grep: function (a, b, c) {
-                for (var d, e = [], f = 0, g = a.length, h = !c; g > f; f++)d = !b(a[f], f), d !== h && e.push(a[f]);
-                return e
-            }, map: function (a, b, d) {
-                var e, f = 0, g = a.length, h = c(a), i = [];
-                if (h)for (; g > f; f++)e = b(a[f], f, d), null != e && i.push(e); else for (f in a)e = b(a[f], f, d), null != e && i.push(e);
-                return S.apply([], i)
-            }, guid: 1, proxy: function (a, b) {
-                var c, d, e;
-                return "string" == typeof b && (c = a[b], b = a, a = c), _.isFunction(a) ? (d = R.call(arguments, 2), e = function () {
-                    return a.apply(b || this, d.concat(R.call(arguments)))
-                }, e.guid = a.guid = a.guid || _.guid++, e) : void 0
-            }, now: Date.now, support: Y
-        }), _.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function (a, b) {
-            V["[object " + b + "]"] = b.toLowerCase()
-        });
-        var ea = function (a) {
-            function b(a, b, c, d) {
-                var e, f, g, h, i, j, l, n, o, p;
-                if ((b ? b.ownerDocument || b : O) !== G && F(b), b = b || G, c = c || [], h = b.nodeType, "string" != typeof a || !a || 1 !== h && 9 !== h && 11 !== h)return c;
-                if (!d && I) {
-                    if (11 !== h && (e = sa.exec(a)))if (g = e[1]) {
-                        if (9 === h) {
-                            if (f = b.getElementById(g), !f || !f.parentNode)return c;
-                            if (f.id === g)return c.push(f), c
-                        } else if (b.ownerDocument && (f = b.ownerDocument.getElementById(g)) && M(b, f) && f.id === g)return c.push(f), c
-                    } else {
-                        if (e[2])return $.apply(c, b.getElementsByTagName(a)), c;
-                        if ((g = e[3]) && v.getElementsByClassName)return $.apply(c, b.getElementsByClassName(g)), c
-                    }
-                    if (v.qsa && (!J || !J.test(a))) {
-                        if (n = l = N, o = b, p = 1 !== h && a, 1 === h && "object" !== b.nodeName.toLowerCase()) {
-                            for (j = z(a), (l = b.getAttribute("id")) ? n = l.replace(ua, "\\$&") : b.setAttribute("id", n), n = "[id='" + n + "'] ", i = j.length; i--;)j[i] = n + m(j[i]);
-                            o = ta.test(a) && k(b.parentNode) || b, p = j.join(",")
-                        }
-                        if (p)try {
-                            return $.apply(c, o.querySelectorAll(p)), c
-                        } catch (q) {
-                        } finally {
-                            l || b.removeAttribute("id")
-                        }
-                    }
-                }
-                return B(a.replace(ia, "$1"), b, c, d)
-            }
-
-            function c() {
-                function a(c, d) {
-                    return b.push(c + " ") > w.cacheLength && delete a[b.shift()], a[c + " "] = d
-                }
-
-                var b = [];
-                return a
-            }
-
-            function d(a) {
-                return a[N] = !0, a
-            }
-
-            function e(a) {
-                var b = G.createElement("div");
-                try {
-                    return !!a(b)
-                } catch (c) {
-                    return !1
-                } finally {
-                    b.parentNode && b.parentNode.removeChild(b), b = null
-                }
-            }
-
-            function f(a, b) {
-                for (var c = a.split("|"), d = a.length; d--;)w.attrHandle[c[d]] = b
-            }
-
-            function g(a, b) {
-                var c = b && a, d = c && 1 === a.nodeType && 1 === b.nodeType && (~b.sourceIndex || V) - (~a.sourceIndex || V);
-                if (d)return d;
-                if (c)for (; c = c.nextSibling;)if (c === b)return -1;
-                return a ? 1 : -1
-            }
-
-            function h(a) {
-                return function (b) {
-                    var c = b.nodeName.toLowerCase();
-                    return "input" === c && b.type === a
-                }
-            }
-
-            function i(a) {
-                return function (b) {
-                    var c = b.nodeName.toLowerCase();
-                    return ("input" === c || "button" === c) && b.type === a
-                }
-            }
-
-            function j(a) {
-                return d(function (b) {
-                    return b = +b, d(function (c, d) {
-                        for (var e, f = a([], c.length, b), g = f.length; g--;)c[e = f[g]] && (c[e] = !(d[e] = c[e]))
-                    })
-                })
-            }
-
-            function k(a) {
-                return a && "undefined" != typeof a.getElementsByTagName && a
-            }
-
-            function l() {
-            }
-
-            function m(a) {
-                for (var b = 0, c = a.length, d = ""; c > b; b++)d += a[b].value;
-                return d
-            }
-
-            function n(a, b, c) {
-                var d = b.dir, e = c && "parentNode" === d, f = Q++;
-                return b.first ? function (b, c, f) {
-                    for (; b = b[d];)if (1 === b.nodeType || e)return a(b, c, f)
-                } : function (b, c, g) {
-                    var h, i, j = [P, f];
-                    if (g) {
-                        for (; b = b[d];)if ((1 === b.nodeType || e) && a(b, c, g))return !0
-                    } else for (; b = b[d];)if (1 === b.nodeType || e) {
-                        if (i = b[N] || (b[N] = {}), (h = i[d]) && h[0] === P && h[1] === f)return j[2] = h[2];
-                        if (i[d] = j, j[2] = a(b, c, g))return !0
-                    }
-                }
-            }
-
-            function o(a) {
-                return a.length > 1 ? function (b, c, d) {
-                    for (var e = a.length; e--;)if (!a[e](b, c, d))return !1;
-                    return !0
-                } : a[0]
-            }
-
-            function p(a, c, d) {
-                for (var e = 0, f = c.length; f > e; e++)b(a, c[e], d);
-                return d
-            }
-
-            function q(a, b, c, d, e) {
-                for (var f, g = [], h = 0, i = a.length, j = null != b; i > h; h++)(f = a[h]) && (!c || c(f, d, e)) && (g.push(f), j && b.push(h));
-                return g
-            }
-
-            function r(a, b, c, e, f, g) {
-                return e && !e[N] && (e = r(e)), f && !f[N] && (f = r(f, g)), d(function (d, g, h, i) {
-                    var j, k, l, m = [], n = [], o = g.length, r = d || p(b || "*", h.nodeType ? [h] : h, []), s = !a || !d && b ? r : q(r, m, a, h, i), t = c ? f || (d ? a : o || e) ? [] : g : s;
-                    if (c && c(s, t, h, i), e)for (j = q(t, n), e(j, [], h, i), k = j.length; k--;)(l = j[k]) && (t[n[k]] = !(s[n[k]] = l));
-                    if (d) {
-                        if (f || a) {
-                            if (f) {
-                                for (j = [], k = t.length; k--;)(l = t[k]) && j.push(s[k] = l);
-                                f(null, t = [], j, i)
-                            }
-                            for (k = t.length; k--;)(l = t[k]) && (j = f ? aa(d, l) : m[k]) > -1 && (d[j] = !(g[j] = l))
-                        }
-                    } else t = q(t === g ? t.splice(o, t.length) : t), f ? f(null, g, t, i) : $.apply(g, t)
-                })
-            }
-
-            function s(a) {
-                for (var b, c, d, e = a.length, f = w.relative[a[0].type], g = f || w.relative[" "], h = f ? 1 : 0, i = n(function (a) {
-                    return a === b
-                }, g, !0), j = n(function (a) {
-                    return aa(b, a) > -1
-                }, g, !0), k = [function (a, c, d) {
-                    var e = !f && (d || c !== C) || ((b = c).nodeType ? i(a, c, d) : j(a, c, d));
-                    return b = null, e
-                }]; e > h; h++)if (c = w.relative[a[h].type])k = [n(o(k), c)]; else {
-                    if (c = w.filter[a[h].type].apply(null, a[h].matches), c[N]) {
-                        for (d = ++h; e > d && !w.relative[a[d].type]; d++);
-                        return r(h > 1 && o(k), h > 1 && m(a.slice(0, h - 1).concat({value: " " === a[h - 2].type ? "*" : ""})).replace(ia, "$1"), c, d > h && s(a.slice(h, d)), e > d && s(a = a.slice(d)), e > d && m(a))
-                    }
-                    k.push(c)
-                }
-                return o(k)
-            }
-
-            function t(a, c) {
-                var e = c.length > 0, f = a.length > 0, g = function (d, g, h, i, j) {
-                    var k, l, m, n = 0, o = "0", p = d && [], r = [], s = C, t = d || f && w.find.TAG("*", j), u = P += null == s ? 1 : Math.random() || .1, v = t.length;
-                    for (j && (C = g !== G && g); o !== v && null != (k = t[o]); o++) {
-                        if (f && k) {
-                            for (l = 0; m = a[l++];)if (m(k, g, h)) {
-                                i.push(k);
-                                break
-                            }
-                            j && (P = u)
-                        }
-                        e && ((k = !m && k) && n--, d && p.push(k))
-                    }
-                    if (n += o, e && o !== n) {
-                        for (l = 0; m = c[l++];)m(p, r, g, h);
-                        if (d) {
-                            if (n > 0)for (; o--;)p[o] || r[o] || (r[o] = Y.call(i));
-                            r = q(r)
-                        }
-                        $.apply(i, r), j && !d && r.length > 0 && n + c.length > 1 && b.uniqueSort(i)
-                    }
-                    return j && (P = u, C = s), p
-                };
-                return e ? d(g) : g
-            }
-
-            var u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N = "sizzle" + 1 * new Date, O = a.document, P = 0, Q = 0, R = c(), S = c(), T = c(), U = function (a, b) {
-                return a === b && (E = !0), 0
-            }, V = 1 << 31, W = {}.hasOwnProperty, X = [], Y = X.pop, Z = X.push, $ = X.push, _ = X.slice, aa = function (a, b) {
-                for (var c = 0, d = a.length; d > c; c++)if (a[c] === b)return c;
-                return -1
-            }, ba = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", ca = "[\\x20\\t\\r\\n\\f]", da = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", ea = da.replace("w", "w#"), fa = "\\[" + ca + "*(" + da + ")(?:" + ca + "*([*^$|!~]?=)" + ca + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + ea + "))|)" + ca + "*\\]", ga = ":(" + da + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + fa + ")*)|.*)\\)|)", ha = new RegExp(ca + "+", "g"), ia = new RegExp("^" + ca + "+|((?:^|[^\\\\])(?:\\\\.)*)" + ca + "+$", "g"), ja = new RegExp("^" + ca + "*," + ca + "*"), ka = new RegExp("^" + ca + "*([>+~]|" + ca + ")" + ca + "*"), la = new RegExp("=" + ca + "*([^\\]'\"]*?)" + ca + "*\\]", "g"), ma = new RegExp(ga), na = new RegExp("^" + ea + "$"), oa = {
-                ID: new RegExp("^#(" + da + ")"),
-                CLASS: new RegExp("^\\.(" + da + ")"),
-                TAG: new RegExp("^(" + da.replace("w", "w*") + ")"),
-                ATTR: new RegExp("^" + fa),
-                PSEUDO: new RegExp("^" + ga),
-                CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + ca + "*(even|odd|(([+-]|)(\\d*)n|)" + ca + "*(?:([+-]|)" + ca + "*(\\d+)|))" + ca + "*\\)|)", "i"),
-                bool: new RegExp("^(?:" + ba + ")$", "i"),
-                needsContext: new RegExp("^" + ca + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + ca + "*((?:-\\d)?\\d*)" + ca + "*\\)|)(?=[^-]|$)", "i")
-            }, pa = /^(?:input|select|textarea|button)$/i, qa = /^h\d$/i, ra = /^[^{]+\{\s*\[native \w/, sa = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, ta = /[+~]/, ua = /'|\\/g, va = new RegExp("\\\\([\\da-f]{1,6}" + ca + "?|(" + ca + ")|.)", "ig"), wa = function (a, b, c) {
-                var d = "0x" + b - 65536;
-                return d !== d || c ? b : 0 > d ? String.fromCharCode(d + 65536) : String.fromCharCode(d >> 10 | 55296, 1023 & d | 56320)
-            }, xa = function () {
-                F()
-            };
-            try {
-                $.apply(X = _.call(O.childNodes), O.childNodes), X[O.childNodes.length].nodeType
-            } catch (ya) {
-                $ = {
-                    apply: X.length ? function (a, b) {
-                        Z.apply(a, _.call(b))
-                    } : function (a, b) {
-                        for (var c = a.length, d = 0; a[c++] = b[d++];);
-                        a.length = c - 1
-                    }
-                }
-            }
-            v = b.support = {}, y = b.isXML = function (a) {
-                var b = a && (a.ownerDocument || a).documentElement;
-                return b ? "HTML" !== b.nodeName : !1
-            }, F = b.setDocument = function (a) {
-                var b, c, d = a ? a.ownerDocument || a : O;
-                return d !== G && 9 === d.nodeType && d.documentElement ? (G = d, H = d.documentElement, c = d.defaultView, c && c !== c.top && (c.addEventListener ? c.addEventListener("unload", xa, !1) : c.attachEvent && c.attachEvent("onunload", xa)), I = !y(d), v.attributes = e(function (a) {
-                    return a.className = "i", !a.getAttribute("className")
-                }), v.getElementsByTagName = e(function (a) {
-                    return a.appendChild(d.createComment("")), !a.getElementsByTagName("*").length
-                }), v.getElementsByClassName = ra.test(d.getElementsByClassName), v.getById = e(function (a) {
-                    return H.appendChild(a).id = N, !d.getElementsByName || !d.getElementsByName(N).length
-                }), v.getById ? (w.find.ID = function (a, b) {
-                    if ("undefined" != typeof b.getElementById && I) {
-                        var c = b.getElementById(a);
-                        return c && c.parentNode ? [c] : []
-                    }
-                }, w.filter.ID = function (a) {
-                    var b = a.replace(va, wa);
-                    return function (a) {
-                        return a.getAttribute("id") === b
-                    }
-                }) : (delete w.find.ID, w.filter.ID = function (a) {
-                    var b = a.replace(va, wa);
-                    return function (a) {
-                        var c = "undefined" != typeof a.getAttributeNode && a.getAttributeNode("id");
-                        return c && c.value === b
-                    }
-                }), w.find.TAG = v.getElementsByTagName ? function (a, b) {
-                    return "undefined" != typeof b.getElementsByTagName ? b.getElementsByTagName(a) : v.qsa ? b.querySelectorAll(a) : void 0
-                } : function (a, b) {
-                    var c, d = [], e = 0, f = b.getElementsByTagName(a);
-                    if ("*" === a) {
-                        for (; c = f[e++];)1 === c.nodeType && d.push(c);
-                        return d
-                    }
-                    return f
-                }, w.find.CLASS = v.getElementsByClassName && function (a, b) {
-                        return I ? b.getElementsByClassName(a) : void 0
-                    }, K = [], J = [], (v.qsa = ra.test(d.querySelectorAll)) && (e(function (a) {
-                    H.appendChild(a).innerHTML = "<a id='" + N + "'></a><select id='" + N + "-\f]' msallowcapture=''><option selected=''></option></select>", a.querySelectorAll("[msallowcapture^='']").length && J.push("[*^$]=" + ca + "*(?:''|\"\")"), a.querySelectorAll("[selected]").length || J.push("\\[" + ca + "*(?:value|" + ba + ")"), a.querySelectorAll("[id~=" + N + "-]").length || J.push("~="), a.querySelectorAll(":checked").length || J.push(":checked"), a.querySelectorAll("a#" + N + "+*").length || J.push(".#.+[+~]")
-                }), e(function (a) {
-                    var b = d.createElement("input");
-                    b.setAttribute("type", "hidden"), a.appendChild(b).setAttribute("name", "D"), a.querySelectorAll("[name=d]").length && J.push("name" + ca + "*[*^$|!~]?="), a.querySelectorAll(":enabled").length || J.push(":enabled", ":disabled"), a.querySelectorAll("*,:x"), J.push(",.*:")
-                })), (v.matchesSelector = ra.test(L = H.matches || H.webkitMatchesSelector || H.mozMatchesSelector || H.oMatchesSelector || H.msMatchesSelector)) && e(function (a) {
-                    v.disconnectedMatch = L.call(a, "div"), L.call(a, "[s!='']:x"), K.push("!=", ga)
-                }), J = J.length && new RegExp(J.join("|")), K = K.length && new RegExp(K.join("|")), b = ra.test(H.compareDocumentPosition), M = b || ra.test(H.contains) ? function (a, b) {
-                    var c = 9 === a.nodeType ? a.documentElement : a, d = b && b.parentNode;
-                    return a === d || !(!d || 1 !== d.nodeType || !(c.contains ? c.contains(d) : a.compareDocumentPosition && 16 & a.compareDocumentPosition(d)))
-                } : function (a, b) {
-                    if (b)for (; b = b.parentNode;)if (b === a)return !0;
-                    return !1
-                }, U = b ? function (a, b) {
-                    if (a === b)return E = !0, 0;
-                    var c = !a.compareDocumentPosition - !b.compareDocumentPosition;
-                    return c ? c : (c = (a.ownerDocument || a) === (b.ownerDocument || b) ? a.compareDocumentPosition(b) : 1, 1 & c || !v.sortDetached && b.compareDocumentPosition(a) === c ? a === d || a.ownerDocument === O && M(O, a) ? -1 : b === d || b.ownerDocument === O && M(O, b) ? 1 : D ? aa(D, a) - aa(D, b) : 0 : 4 & c ? -1 : 1)
-                } : function (a, b) {
-                    if (a === b)return E = !0, 0;
-                    var c, e = 0, f = a.parentNode, h = b.parentNode, i = [a], j = [b];
-                    if (!f || !h)return a === d ? -1 : b === d ? 1 : f ? -1 : h ? 1 : D ? aa(D, a) - aa(D, b) : 0;
-                    if (f === h)return g(a, b);
-                    for (c = a; c = c.parentNode;)i.unshift(c);
-                    for (c = b; c = c.parentNode;)j.unshift(c);
-                    for (; i[e] === j[e];)e++;
-                    return e ? g(i[e], j[e]) : i[e] === O ? -1 : j[e] === O ? 1 : 0
-                }, d) : G
-            }, b.matches = function (a, c) {
-                return b(a, null, null, c)
-            }, b.matchesSelector = function (a, c) {
-                if ((a.ownerDocument || a) !== G && F(a), c = c.replace(la, "='$1']"), !(!v.matchesSelector || !I || K && K.test(c) || J && J.test(c)))try {
-                    var d = L.call(a, c);
-                    if (d || v.disconnectedMatch || a.document && 11 !== a.document.nodeType)return d
-                } catch (e) {
-                }
-                return b(c, G, null, [a]).length > 0
-            }, b.contains = function (a, b) {
-                return (a.ownerDocument || a) !== G && F(a), M(a, b)
-            }, b.attr = function (a, b) {
-                (a.ownerDocument || a) !== G && F(a);
-                var c = w.attrHandle[b.toLowerCase()], d = c && W.call(w.attrHandle, b.toLowerCase()) ? c(a, b, !I) : void 0;
-                return void 0 !== d ? d : v.attributes || !I ? a.getAttribute(b) : (d = a.getAttributeNode(b)) && d.specified ? d.value : null
-            }, b.error = function (a) {
-                throw new Error("Syntax error, unrecognized expression: " + a)
-            }, b.uniqueSort = function (a) {
-                var b, c = [], d = 0, e = 0;
-                if (E = !v.detectDuplicates, D = !v.sortStable && a.slice(0), a.sort(U), E) {
-                    for (; b = a[e++];)b === a[e] && (d = c.push(e));
-                    for (; d--;)a.splice(c[d], 1)
-                }
-                return D = null, a
-            }, x = b.getText = function (a) {
-                var b, c = "", d = 0, e = a.nodeType;
-                if (e) {
-                    if (1 === e || 9 === e || 11 === e) {
-                        if ("string" == typeof a.textContent)return a.textContent;
-                        for (a = a.firstChild; a; a = a.nextSibling)c += x(a)
-                    } else if (3 === e || 4 === e)return a.nodeValue
-                } else for (; b = a[d++];)c += x(b);
-                return c
-            }, w = b.selectors = {
-                cacheLength: 50,
-                createPseudo: d,
-                match: oa,
-                attrHandle: {},
-                find: {},
-                relative: {
-                    ">": {dir: "parentNode", first: !0},
-                    " ": {dir: "parentNode"},
-                    "+": {dir: "previousSibling", first: !0},
-                    "~": {dir: "previousSibling"}
-                },
-                preFilter: {
-                    ATTR: function (a) {
-                        return a[1] = a[1].replace(va, wa), a[3] = (a[3] || a[4] || a[5] || "").replace(va, wa), "~=" === a[2] && (a[3] = " " + a[3] + " "), a.slice(0, 4)
-                    }, CHILD: function (a) {
-                        return a[1] = a[1].toLowerCase(), "nth" === a[1].slice(0, 3) ? (a[3] || b.error(a[0]), a[4] = +(a[4] ? a[5] + (a[6] || 1) : 2 * ("even" === a[3] || "odd" === a[3])), a[5] = +(a[7] + a[8] || "odd" === a[3])) : a[3] && b.error(a[0]), a
-                    }, PSEUDO: function (a) {
-                        var b, c = !a[6] && a[2];
-                        return oa.CHILD.test(a[0]) ? null : (a[3] ? a[2] = a[4] || a[5] || "" : c && ma.test(c) && (b = z(c, !0)) && (b = c.indexOf(")", c.length - b) - c.length) && (a[0] = a[0].slice(0, b), a[2] = c.slice(0, b)), a.slice(0, 3))
-                    }
-                },
-                filter: {
-                    TAG: function (a) {
-                        var b = a.replace(va, wa).toLowerCase();
-                        return "*" === a ? function () {
-                            return !0
-                        } : function (a) {
-                            return a.nodeName && a.nodeName.toLowerCase() === b
-                        }
-                    }, CLASS: function (a) {
-                        var b = R[a + " "];
-                        return b || (b = new RegExp("(^|" + ca + ")" + a + "(" + ca + "|$)")) && R(a, function (a) {
-                                return b.test("string" == typeof a.className && a.className || "undefined" != typeof a.getAttribute && a.getAttribute("class") || "")
-                            })
-                    }, ATTR: function (a, c, d) {
-                        return function (e) {
-                            var f = b.attr(e, a);
-                            return null == f ? "!=" === c : c ? (f += "", "=" === c ? f === d : "!=" === c ? f !== d : "^=" === c ? d && 0 === f.indexOf(d) : "*=" === c ? d && f.indexOf(d) > -1 : "$=" === c ? d && f.slice(-d.length) === d : "~=" === c ? (" " + f.replace(ha, " ") + " ").indexOf(d) > -1 : "|=" === c ? f === d || f.slice(0, d.length + 1) === d + "-" : !1) : !0
-                        }
-                    }, CHILD: function (a, b, c, d, e) {
-                        var f = "nth" !== a.slice(0, 3), g = "last" !== a.slice(-4), h = "of-type" === b;
-                        return 1 === d && 0 === e ? function (a) {
-                            return !!a.parentNode
-                        } : function (b, c, i) {
-                            var j, k, l, m, n, o, p = f !== g ? "nextSibling" : "previousSibling", q = b.parentNode, r = h && b.nodeName.toLowerCase(), s = !i && !h;
-                            if (q) {
-                                if (f) {
-                                    for (; p;) {
-                                        for (l = b; l = l[p];)if (h ? l.nodeName.toLowerCase() === r : 1 === l.nodeType)return !1;
-                                        o = p = "only" === a && !o && "nextSibling"
-                                    }
-                                    return !0
-                                }
-                                if (o = [g ? q.firstChild : q.lastChild], g && s) {
-                                    for (k = q[N] || (q[N] = {}), j = k[a] || [], n = j[0] === P && j[1], m = j[0] === P && j[2], l = n && q.childNodes[n]; l = ++n && l && l[p] || (m = n = 0) || o.pop();)if (1 === l.nodeType && ++m && l === b) {
-                                        k[a] = [P, n, m];
-                                        break
-                                    }
-                                } else if (s && (j = (b[N] || (b[N] = {}))[a]) && j[0] === P)m = j[1]; else for (; (l = ++n && l && l[p] || (m = n = 0) || o.pop()) && ((h ? l.nodeName.toLowerCase() !== r : 1 !== l.nodeType) || !++m || (s && ((l[N] || (l[N] = {}))[a] = [P, m]), l !== b)););
-                                return m -= e, m === d || m % d === 0 && m / d >= 0
-                            }
-                        }
-                    }, PSEUDO: function (a, c) {
-                        var e, f = w.pseudos[a] || w.setFilters[a.toLowerCase()] || b.error("unsupported pseudo: " + a);
-                        return f[N] ? f(c) : f.length > 1 ? (e = [a, a, "", c], w.setFilters.hasOwnProperty(a.toLowerCase()) ? d(function (a, b) {
-                            for (var d, e = f(a, c), g = e.length; g--;)d = aa(a, e[g]), a[d] = !(b[d] = e[g])
-                        }) : function (a) {
-                            return f(a, 0, e)
-                        }) : f
-                    }
-                },
-                pseudos: {
-                    not: d(function (a) {
-                        var b = [], c = [], e = A(a.replace(ia, "$1"));
-                        return e[N] ? d(function (a, b, c, d) {
-                            for (var f, g = e(a, null, d, []), h = a.length; h--;)(f = g[h]) && (a[h] = !(b[h] = f))
-                        }) : function (a, d, f) {
-                            return b[0] = a, e(b, null, f, c), b[0] = null, !c.pop()
-                        }
-                    }), has: d(function (a) {
-                        return function (c) {
-                            return b(a, c).length > 0
-                        }
-                    }), contains: d(function (a) {
-                        return a = a.replace(va, wa), function (b) {
-                            return (b.textContent || b.innerText || x(b)).indexOf(a) > -1
-                        }
-                    }), lang: d(function (a) {
-                        return na.test(a || "") || b.error("unsupported lang: " + a), a = a.replace(va, wa).toLowerCase(), function (b) {
-                            var c;
-                            do if (c = I ? b.lang : b.getAttribute("xml:lang") || b.getAttribute("lang"))return c = c.toLowerCase(), c === a || 0 === c.indexOf(a + "-"); while ((b = b.parentNode) && 1 === b.nodeType);
-                            return !1
-                        }
-                    }), target: function (b) {
-                        var c = a.location && a.location.hash;
-                        return c && c.slice(1) === b.id
-                    }, root: function (a) {
-                        return a === H
-                    }, focus: function (a) {
-                        return a === G.activeElement && (!G.hasFocus || G.hasFocus()) && !!(a.type || a.href || ~a.tabIndex)
-                    }, enabled: function (a) {
-                        return a.disabled === !1
-                    }, disabled: function (a) {
-                        return a.disabled === !0
-                    }, checked: function (a) {
-                        var b = a.nodeName.toLowerCase();
-                        return "input" === b && !!a.checked || "option" === b && !!a.selected
-                    }, selected: function (a) {
-                        return a.parentNode && a.parentNode.selectedIndex, a.selected === !0
-                    }, empty: function (a) {
-                        for (a = a.firstChild; a; a = a.nextSibling)if (a.nodeType < 6)return !1;
-                        return !0
-                    }, parent: function (a) {
-                        return !w.pseudos.empty(a)
-                    }, header: function (a) {
-                        return qa.test(a.nodeName)
-                    }, input: function (a) {
-                        return pa.test(a.nodeName)
-                    }, button: function (a) {
-                        var b = a.nodeName.toLowerCase();
-                        return "input" === b && "button" === a.type || "button" === b
-                    }, text: function (a) {
-                        var b;
-                        return "input" === a.nodeName.toLowerCase() && "text" === a.type && (null == (b = a.getAttribute("type")) || "text" === b.toLowerCase())
-                    }, first: j(function () {
-                        return [0]
-                    }), last: j(function (a, b) {
-                        return [b - 1]
-                    }), eq: j(function (a, b, c) {
-                        return [0 > c ? c + b : c]
-                    }), even: j(function (a, b) {
-                        for (var c = 0; b > c; c += 2)a.push(c);
-                        return a
-                    }), odd: j(function (a, b) {
-                        for (var c = 1; b > c; c += 2)a.push(c);
-                        return a
-                    }), lt: j(function (a, b, c) {
-                        for (var d = 0 > c ? c + b : c; --d >= 0;)a.push(d);
-                        return a
-                    }), gt: j(function (a, b, c) {
-                        for (var d = 0 > c ? c + b : c; ++d < b;)a.push(d);
-                        return a
-                    })
-                }
-            }, w.pseudos.nth = w.pseudos.eq;
-            for (u in{radio: !0, checkbox: !0, file: !0, password: !0, image: !0})w.pseudos[u] = h(u);
-            for (u in{submit: !0, reset: !0})w.pseudos[u] = i(u);
-            return l.prototype = w.filters = w.pseudos, w.setFilters = new l, z = b.tokenize = function (a, c) {
-                var d, e, f, g, h, i, j, k = S[a + " "];
-                if (k)return c ? 0 : k.slice(0);
-                for (h = a, i = [], j = w.preFilter; h;) {
-                    (!d || (e = ja.exec(h))) && (e && (h = h.slice(e[0].length) || h), i.push(f = [])), d = !1, (e = ka.exec(h)) && (d = e.shift(), f.push({
-                        value: d,
-                        type: e[0].replace(ia, " ")
-                    }), h = h.slice(d.length));
-                    for (g in w.filter)!(e = oa[g].exec(h)) || j[g] && !(e = j[g](e)) || (d = e.shift(), f.push({
-                        value: d,
-                        type: g,
-                        matches: e
-                    }), h = h.slice(d.length));
-                    if (!d)break
-                }
-                return c ? h.length : h ? b.error(a) : S(a, i).slice(0)
-            }, A = b.compile = function (a, b) {
-                var c, d = [], e = [], f = T[a + " "];
-                if (!f) {
-                    for (b || (b = z(a)), c = b.length; c--;)f = s(b[c]), f[N] ? d.push(f) : e.push(f);
-                    f = T(a, t(e, d)), f.selector = a
-                }
-                return f
-            }, B = b.select = function (a, b, c, d) {
-                var e, f, g, h, i, j = "function" == typeof a && a, l = !d && z(a = j.selector || a);
-                if (c = c || [], 1 === l.length) {
-                    if (f = l[0] = l[0].slice(0), f.length > 2 && "ID" === (g = f[0]).type && v.getById && 9 === b.nodeType && I && w.relative[f[1].type]) {
-                        if (b = (w.find.ID(g.matches[0].replace(va, wa), b) || [])[0], !b)return c;
-                        j && (b = b.parentNode), a = a.slice(f.shift().value.length)
-                    }
-                    for (e = oa.needsContext.test(a) ? 0 : f.length; e-- && (g = f[e], !w.relative[h = g.type]);)if ((i = w.find[h]) && (d = i(g.matches[0].replace(va, wa), ta.test(f[0].type) && k(b.parentNode) || b))) {
-                        if (f.splice(e, 1), a = d.length && m(f), !a)return $.apply(c, d), c;
-                        break
-                    }
-                }
-                return (j || A(a, l))(d, b, !I, c, ta.test(a) && k(b.parentNode) || b), c
-            }, v.sortStable = N.split("").sort(U).join("") === N, v.detectDuplicates = !!E, F(), v.sortDetached = e(function (a) {
-                return 1 & a.compareDocumentPosition(G.createElement("div"))
-            }), e(function (a) {
-                return a.innerHTML = "<a href='#'></a>", "#" === a.firstChild.getAttribute("href")
-            }) || f("type|href|height|width", function (a, b, c) {
-                return c ? void 0 : a.getAttribute(b, "type" === b.toLowerCase() ? 1 : 2)
-            }), v.attributes && e(function (a) {
-                return a.innerHTML = "<input/>", a.firstChild.setAttribute("value", ""), "" === a.firstChild.getAttribute("value")
-            }) || f("value", function (a, b, c) {
-                return c || "input" !== a.nodeName.toLowerCase() ? void 0 : a.defaultValue
-            }), e(function (a) {
-                return null == a.getAttribute("disabled")
-            }) || f(ba, function (a, b, c) {
-                var d;
-                return c ? void 0 : a[b] === !0 ? b.toLowerCase() : (d = a.getAttributeNode(b)) && d.specified ? d.value : null
-            }), b
-        }(a);
-        _.find = ea, _.expr = ea.selectors, _.expr[":"] = _.expr.pseudos, _.unique = ea.uniqueSort, _.text = ea.getText, _.isXMLDoc = ea.isXML, _.contains = ea.contains;
-        var fa = _.expr.match.needsContext, ga = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, ha = /^.[^:#\[\.,]*$/;
-        _.filter = function (a, b, c) {
-            var d = b[0];
-            return c && (a = ":not(" + a + ")"), 1 === b.length && 1 === d.nodeType ? _.find.matchesSelector(d, a) ? [d] : [] : _.find.matches(a, _.grep(b, function (a) {
-                return 1 === a.nodeType
-            }))
-        }, _.fn.extend({
-            find: function (a) {
-                var b, c = this.length, d = [], e = this;
-                if ("string" != typeof a)return this.pushStack(_(a).filter(function () {
-                    for (b = 0; c > b; b++)if (_.contains(e[b], this))return !0
-                }));
-                for (b = 0; c > b; b++)_.find(a, e[b], d);
-                return d = this.pushStack(c > 1 ? _.unique(d) : d), d.selector = this.selector ? this.selector + " " + a : a, d
-            }, filter: function (a) {
-                return this.pushStack(d(this, a || [], !1))
-            }, not: function (a) {
-                return this.pushStack(d(this, a || [], !0))
-            }, is: function (a) {
-                return !!d(this, "string" == typeof a && fa.test(a) ? _(a) : a || [], !1).length
-            }
-        });
-        var ia, ja = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, ka = _.fn.init = function (a, b) {
-            var c, d;
-            if (!a)return this;
-            if ("string" == typeof a) {
-                if (c = "<" === a[0] && ">" === a[a.length - 1] && a.length >= 3 ? [null, a, null] : ja.exec(a), !c || !c[1] && b)return !b || b.jquery ? (b || ia).find(a) : this.constructor(b).find(a);
-                if (c[1]) {
-                    if (b = b instanceof _ ? b[0] : b, _.merge(this, _.parseHTML(c[1], b && b.nodeType ? b.ownerDocument || b : Z, !0)), ga.test(c[1]) && _.isPlainObject(b))for (c in b)_.isFunction(this[c]) ? this[c](b[c]) : this.attr(c, b[c]);
-                    return this
-                }
-                return d = Z.getElementById(c[2]), d && d.parentNode && (this.length = 1, this[0] = d), this.context = Z, this.selector = a, this
-            }
-            return a.nodeType ? (this.context = this[0] = a, this.length = 1, this) : _.isFunction(a) ? "undefined" != typeof ia.ready ? ia.ready(a) : a(_) : (void 0 !== a.selector && (this.selector = a.selector, this.context = a.context), _.makeArray(a, this))
-        };
-        ka.prototype = _.fn, ia = _(Z);
-        var la = /^(?:parents|prev(?:Until|All))/, ma = {children: !0, contents: !0, next: !0, prev: !0};
-        _.extend({
-            dir: function (a, b, c) {
-                for (var d = [], e = void 0 !== c; (a = a[b]) && 9 !== a.nodeType;)if (1 === a.nodeType) {
-                    if (e && _(a).is(c))break;
-                    d.push(a)
-                }
-                return d
-            }, sibling: function (a, b) {
-                for (var c = []; a; a = a.nextSibling)1 === a.nodeType && a !== b && c.push(a);
-                return c
-            }
-        }), _.fn.extend({
-            has: function (a) {
-                var b = _(a, this), c = b.length;
-                return this.filter(function () {
-                    for (var a = 0; c > a; a++)if (_.contains(this, b[a]))return !0
-                })
-            }, closest: function (a, b) {
-                for (var c, d = 0, e = this.length, f = [], g = fa.test(a) || "string" != typeof a ? _(a, b || this.context) : 0; e > d; d++)for (c = this[d]; c && c !== b; c = c.parentNode)if (c.nodeType < 11 && (g ? g.index(c) > -1 : 1 === c.nodeType && _.find.matchesSelector(c, a))) {
-                    f.push(c);
-                    break
-                }
-                return this.pushStack(f.length > 1 ? _.unique(f) : f)
-            }, index: function (a) {
-                return a ? "string" == typeof a ? U.call(_(a), this[0]) : U.call(this, a.jquery ? a[0] : a) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1
-            }, add: function (a, b) {
-                return this.pushStack(_.unique(_.merge(this.get(), _(a, b))))
-            }, addBack: function (a) {
-                return this.add(null == a ? this.prevObject : this.prevObject.filter(a))
-            }
-        }), _.each({
-            parent: function (a) {
-                var b = a.parentNode;
-                return b && 11 !== b.nodeType ? b : null
-            }, parents: function (a) {
-                return _.dir(a, "parentNode")
-            }, parentsUntil: function (a, b, c) {
-                return _.dir(a, "parentNode", c)
-            }, next: function (a) {
-                return e(a, "nextSibling")
-            }, prev: function (a) {
-                return e(a, "previousSibling")
-            }, nextAll: function (a) {
-                return _.dir(a, "nextSibling")
-            }, prevAll: function (a) {
-                return _.dir(a, "previousSibling")
-            }, nextUntil: function (a, b, c) {
-                return _.dir(a, "nextSibling", c)
-            }, prevUntil: function (a, b, c) {
-                return _.dir(a, "previousSibling", c)
-            }, siblings: function (a) {
-                return _.sibling((a.parentNode || {}).firstChild, a)
-            }, children: function (a) {
-                return _.sibling(a.firstChild)
-            }, contents: function (a) {
-                return a.contentDocument || _.merge([], a.childNodes)
-            }
-        }, function (a, b) {
-            _.fn[a] = function (c, d) {
-                var e = _.map(this, b, c);
-                return "Until" !== a.slice(-5) && (d = c), d && "string" == typeof d && (e = _.filter(d, e)), this.length > 1 && (ma[a] || _.unique(e), la.test(a) && e.reverse()), this.pushStack(e)
-            }
-        });
-        var na = /\S+/g, oa = {};
-        _.Callbacks = function (a) {
-            a = "string" == typeof a ? oa[a] || f(a) : _.extend({}, a);
-            var b, c, d, e, g, h, i = [], j = !a.once && [], k = function (f) {
-                for (b = a.memory && f, c = !0, h = e || 0, e = 0, g = i.length, d = !0; i && g > h; h++)if (i[h].apply(f[0], f[1]) === !1 && a.stopOnFalse) {
-                    b = !1;
-                    break
-                }
-                d = !1, i && (j ? j.length && k(j.shift()) : b ? i = [] : l.disable())
-            }, l = {
-                add: function () {
-                    if (i) {
-                        var c = i.length;
-                        !function f(b) {
-                            _.each(b, function (b, c) {
-                                var d = _.type(c);
-                                "function" === d ? a.unique && l.has(c) || i.push(c) : c && c.length && "string" !== d && f(c)
-                            })
-                        }(arguments), d ? g = i.length : b && (e = c, k(b))
-                    }
-                    return this
-                }, remove: function () {
-                    return i && _.each(arguments, function (a, b) {
-                        for (var c; (c = _.inArray(b, i, c)) > -1;)i.splice(c, 1), d && (g >= c && g--, h >= c && h--)
-                    }), this
-                }, has: function (a) {
-                    return a ? _.inArray(a, i) > -1 : !(!i || !i.length)
-                }, empty: function () {
-                    return i = [], g = 0, this
-                }, disable: function () {
-                    return i = j = b = void 0, this
-                }, disabled: function () {
-                    return !i
-                }, lock: function () {
-                    return j = void 0, b || l.disable(), this
-                }, locked: function () {
-                    return !j
-                }, fireWith: function (a, b) {
-                    return !i || c && !j || (b = b || [], b = [a, b.slice ? b.slice() : b], d ? j.push(b) : k(b)), this
-                }, fire: function () {
-                    return l.fireWith(this, arguments), this
-                }, fired: function () {
-                    return !!c
-                }
-            };
-            return l
-        }, _.extend({
-            Deferred: function (a) {
-                var b = [["resolve", "done", _.Callbacks("once memory"), "resolved"], ["reject", "fail", _.Callbacks("once memory"), "rejected"], ["notify", "progress", _.Callbacks("memory")]], c = "pending", d = {
-                    state: function () {
-                        return c
-                    }, always: function () {
-                        return e.done(arguments).fail(arguments), this
-                    }, then: function () {
-                        var a = arguments;
-                        return _.Deferred(function (c) {
-                            _.each(b, function (b, f) {
-                                var g = _.isFunction(a[b]) && a[b];
-                                e[f[1]](function () {
-                                    var a = g && g.apply(this, arguments);
-                                    a && _.isFunction(a.promise) ? a.promise().done(c.resolve).fail(c.reject).progress(c.notify) : c[f[0] + "With"](this === d ? c.promise() : this, g ? [a] : arguments)
-                                })
-                            }), a = null
-                        }).promise()
-                    }, promise: function (a) {
-                        return null != a ? _.extend(a, d) : d
-                    }
-                }, e = {};
-                return d.pipe = d.then, _.each(b, function (a, f) {
-                    var g = f[2], h = f[3];
-                    d[f[1]] = g.add, h && g.add(function () {
-                        c = h
-                    }, b[1 ^ a][2].disable, b[2][2].lock), e[f[0]] = function () {
-                        return e[f[0] + "With"](this === e ? d : this, arguments), this
-                    }, e[f[0] + "With"] = g.fireWith
-                }), d.promise(e), a && a.call(e, e), e
-            }, when: function (a) {
-                var b, c, d, e = 0, f = R.call(arguments), g = f.length, h = 1 !== g || a && _.isFunction(a.promise) ? g : 0, i = 1 === h ? a : _.Deferred(), j = function (a, c, d) {
-                    return function (e) {
-                        c[a] = this, d[a] = arguments.length > 1 ? R.call(arguments) : e, d === b ? i.notifyWith(c, d) : --h || i.resolveWith(c, d)
-                    }
-                };
-                if (g > 1)for (b = new Array(g), c = new Array(g), d = new Array(g); g > e; e++)f[e] && _.isFunction(f[e].promise) ? f[e].promise().done(j(e, d, f)).fail(i.reject).progress(j(e, c, b)) : --h;
-                return h || i.resolveWith(d, f), i.promise()
-            }
-        });
-        var pa;
-        _.fn.ready = function (a) {
-            return _.ready.promise().done(a), this
-        }, _.extend({
-            isReady: !1, readyWait: 1, holdReady: function (a) {
-                a ? _.readyWait++ : _.ready(!0)
-            }, ready: function (a) {
-                (a === !0 ? --_.readyWait : _.isReady) || (_.isReady = !0, a !== !0 && --_.readyWait > 0 || (pa.resolveWith(Z, [_]), _.fn.triggerHandler && (_(Z).triggerHandler("ready"), _(Z).off("ready"))))
-            }
-        }), _.ready.promise = function (b) {
-            return pa || (pa = _.Deferred(), "complete" === Z.readyState ? setTimeout(_.ready) : (Z.addEventListener("DOMContentLoaded", g, !1), a.addEventListener("load", g, !1))), pa.promise(b)
-        }, _.ready.promise();
-        var qa = _.access = function (a, b, c, d, e, f, g) {
-            var h = 0, i = a.length, j = null == c;
-            if ("object" === _.type(c)) {
-                e = !0;
-                for (h in c)_.access(a, b, h, c[h], !0, f, g)
-            } else if (void 0 !== d && (e = !0, _.isFunction(d) || (g = !0), j && (g ? (b.call(a, d), b = null) : (j = b, b = function (a, b, c) {
-                    return j.call(_(a), c)
-                })), b))for (; i > h; h++)b(a[h], c, g ? d : d.call(a[h], h, b(a[h], c)));
-            return e ? a : j ? b.call(a) : i ? b(a[0], c) : f
-        };
-        _.acceptData = function (a) {
-            return 1 === a.nodeType || 9 === a.nodeType || !+a.nodeType
-        }, h.uid = 1, h.accepts = _.acceptData, h.prototype = {
-            key: function (a) {
-                if (!h.accepts(a))return 0;
-                var b = {}, c = a[this.expando];
-                if (!c) {
-                    c = h.uid++;
-                    try {
-                        b[this.expando] = {value: c}, Object.defineProperties(a, b)
-                    } catch (d) {
-                        b[this.expando] = c, _.extend(a, b)
-                    }
-                }
-                return this.cache[c] || (this.cache[c] = {}), c
-            }, set: function (a, b, c) {
-                var d, e = this.key(a), f = this.cache[e];
-                if ("string" == typeof b)f[b] = c; else if (_.isEmptyObject(f))_.extend(this.cache[e], b); else for (d in b)f[d] = b[d];
-                return f
-            }, get: function (a, b) {
-                var c = this.cache[this.key(a)];
-                return void 0 === b ? c : c[b]
-            }, access: function (a, b, c) {
-                var d;
-                return void 0 === b || b && "string" == typeof b && void 0 === c ? (d = this.get(a, b), void 0 !== d ? d : this.get(a, _.camelCase(b))) : (this.set(a, b, c), void 0 !== c ? c : b)
-            }, remove: function (a, b) {
-                var c, d, e, f = this.key(a), g = this.cache[f];
-                if (void 0 === b)this.cache[f] = {}; else {
-                    _.isArray(b) ? d = b.concat(b.map(_.camelCase)) : (e = _.camelCase(b), b in g ? d = [b, e] : (d = e, d = d in g ? [d] : d.match(na) || [])), c = d.length;
-                    for (; c--;)delete g[d[c]]
-                }
-            }, hasData: function (a) {
-                return !_.isEmptyObject(this.cache[a[this.expando]] || {})
-            }, discard: function (a) {
-                a[this.expando] && delete this.cache[a[this.expando]]
-            }
-        };
-        var ra = new h, sa = new h, ta = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, ua = /([A-Z])/g;
-        _.extend({
-            hasData: function (a) {
-                return sa.hasData(a) || ra.hasData(a)
-            }, data: function (a, b, c) {
-                return sa.access(a, b, c)
-            }, removeData: function (a, b) {
-                sa.remove(a, b)
-            }, _data: function (a, b, c) {
-                return ra.access(a, b, c)
-            }, _removeData: function (a, b) {
-                ra.remove(a, b)
-            }
-        }), _.fn.extend({
-            data: function (a, b) {
-                var c, d, e, f = this[0], g = f && f.attributes;
-                if (void 0 === a) {
-                    if (this.length && (e = sa.get(f), 1 === f.nodeType && !ra.get(f, "hasDataAttrs"))) {
-                        for (c = g.length; c--;)g[c] && (d = g[c].name, 0 === d.indexOf("data-") && (d = _.camelCase(d.slice(5)), i(f, d, e[d])));
-                        ra.set(f, "hasDataAttrs", !0)
-                    }
-                    return e
-                }
-                return "object" == typeof a ? this.each(function () {
-                    sa.set(this, a)
-                }) : qa(this, function (b) {
-                    var c, d = _.camelCase(a);
-                    if (f && void 0 === b) {
-                        if (c = sa.get(f, a), void 0 !== c)return c;
-                        if (c = sa.get(f, d), void 0 !== c)return c;
-                        if (c = i(f, d, void 0), void 0 !== c)return c
-                    } else this.each(function () {
-                        var c = sa.get(this, d);
-                        sa.set(this, d, b), -1 !== a.indexOf("-") && void 0 !== c && sa.set(this, a, b)
-                    })
-                }, null, b, arguments.length > 1, null, !0)
-            }, removeData: function (a) {
-                return this.each(function () {
-                    sa.remove(this, a)
-                })
-            }
-        }), _.extend({
-            queue: function (a, b, c) {
-                var d;
-                return a ? (b = (b || "fx") + "queue", d = ra.get(a, b), c && (!d || _.isArray(c) ? d = ra.access(a, b, _.makeArray(c)) : d.push(c)), d || []) : void 0
-            }, dequeue: function (a, b) {
-                b = b || "fx";
-                var c = _.queue(a, b), d = c.length, e = c.shift(), f = _._queueHooks(a, b), g = function () {
-                    _.dequeue(a, b)
-                };
-                "inprogress" === e && (e = c.shift(), d--), e && ("fx" === b && c.unshift("inprogress"), delete f.stop, e.call(a, g, f)), !d && f && f.empty.fire()
-            }, _queueHooks: function (a, b) {
-                var c = b + "queueHooks";
-                return ra.get(a, c) || ra.access(a, c, {
-                        empty: _.Callbacks("once memory").add(function () {
-                            ra.remove(a, [b + "queue", c])
-                        })
-                    })
-            }
-        }), _.fn.extend({
-            queue: function (a, b) {
-                var c = 2;
-                return "string" != typeof a && (b = a, a = "fx", c--), arguments.length < c ? _.queue(this[0], a) : void 0 === b ? this : this.each(function () {
-                    var c = _.queue(this, a, b);
-                    _._queueHooks(this, a), "fx" === a && "inprogress" !== c[0] && _.dequeue(this, a)
-                })
-            }, dequeue: function (a) {
-                return this.each(function () {
-                    _.dequeue(this, a)
-                })
-            }, clearQueue: function (a) {
-                return this.queue(a || "fx", [])
-            }, promise: function (a, b) {
-                var c, d = 1, e = _.Deferred(), f = this, g = this.length, h = function () {
-                    --d || e.resolveWith(f, [f])
-                };
-                for ("string" != typeof a && (b = a, a = void 0), a = a || "fx"; g--;)c = ra.get(f[g], a + "queueHooks"), c && c.empty && (d++, c.empty.add(h));
-                return h(), e.promise(b)
-            }
-        });
-        var va = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, wa = ["Top", "Right", "Bottom", "Left"], xa = function (a, b) {
-            return a = b || a, "none" === _.css(a, "display") || !_.contains(a.ownerDocument, a)
-        }, ya = /^(?:checkbox|radio)$/i;
-        !function () {
-            var a = Z.createDocumentFragment(), b = a.appendChild(Z.createElement("div")), c = Z.createElement("input");
-            c.setAttribute("type", "radio"), c.setAttribute("checked", "checked"), c.setAttribute("name", "t"), b.appendChild(c), Y.checkClone = b.cloneNode(!0).cloneNode(!0).lastChild.checked, b.innerHTML = "<textarea>x</textarea>", Y.noCloneChecked = !!b.cloneNode(!0).lastChild.defaultValue
-        }();
-        var za = "undefined";
-        Y.focusinBubbles = "onfocusin" in a;
-        var Aa = /^key/, Ba = /^(?:mouse|pointer|contextmenu)|click/, Ca = /^(?:focusinfocus|focusoutblur)$/, Da = /^([^.]*)(?:\.(.+)|)$/;
-        _.event = {
-            global: {},
-            add: function (a, b, c, d, e) {
-                var f, g, h, i, j, k, l, m, n, o, p, q = ra.get(a);
-                if (q)for (c.handler && (f = c, c = f.handler, e = f.selector), c.guid || (c.guid = _.guid++), (i = q.events) || (i = q.events = {}), (g = q.handle) || (g = q.handle = function (b) {
-                    return typeof _ !== za && _.event.triggered !== b.type ? _.event.dispatch.apply(a, arguments) : void 0
-                }), b = (b || "").match(na) || [""], j = b.length; j--;)h = Da.exec(b[j]) || [], n = p = h[1], o = (h[2] || "").split(".").sort(), n && (l = _.event.special[n] || {}, n = (e ? l.delegateType : l.bindType) || n, l = _.event.special[n] || {}, k = _.extend({
-                    type: n,
-                    origType: p,
-                    data: d,
-                    handler: c,
-                    guid: c.guid,
-                    selector: e,
-                    needsContext: e && _.expr.match.needsContext.test(e),
-                    namespace: o.join(".")
-                }, f), (m = i[n]) || (m = i[n] = [], m.delegateCount = 0, l.setup && l.setup.call(a, d, o, g) !== !1 || a.addEventListener && a.addEventListener(n, g, !1)), l.add && (l.add.call(a, k), k.handler.guid || (k.handler.guid = c.guid)), e ? m.splice(m.delegateCount++, 0, k) : m.push(k), _.event.global[n] = !0)
-            },
-            remove: function (a, b, c, d, e) {
-                var f, g, h, i, j, k, l, m, n, o, p, q = ra.hasData(a) && ra.get(a);
-                if (q && (i = q.events)) {
-                    for (b = (b || "").match(na) || [""], j = b.length; j--;)if (h = Da.exec(b[j]) || [], n = p = h[1], o = (h[2] || "").split(".").sort(), n) {
-                        for (l = _.event.special[n] || {}, n = (d ? l.delegateType : l.bindType) || n, m = i[n] || [], h = h[2] && new RegExp("(^|\\.)" + o.join("\\.(?:.*\\.|)") + "(\\.|$)"), g = f = m.length; f--;)k = m[f], !e && p !== k.origType || c && c.guid !== k.guid || h && !h.test(k.namespace) || d && d !== k.selector && ("**" !== d || !k.selector) || (m.splice(f, 1), k.selector && m.delegateCount--, l.remove && l.remove.call(a, k));
-                        g && !m.length && (l.teardown && l.teardown.call(a, o, q.handle) !== !1 || _.removeEvent(a, n, q.handle), delete i[n])
-                    } else for (n in i)_.event.remove(a, n + b[j], c, d, !0);
-                    _.isEmptyObject(i) && (delete q.handle, ra.remove(a, "events"))
-                }
-            },
-            trigger: function (b, c, d, e) {
-                var f, g, h, i, j, k, l, m = [d || Z], n = X.call(b, "type") ? b.type : b, o = X.call(b, "namespace") ? b.namespace.split(".") : [];
-                if (g = h = d = d || Z, 3 !== d.nodeType && 8 !== d.nodeType && !Ca.test(n + _.event.triggered) && (n.indexOf(".") >= 0 && (o = n.split("."), n = o.shift(), o.sort()), j = n.indexOf(":") < 0 && "on" + n, b = b[_.expando] ? b : new _.Event(n, "object" == typeof b && b), b.isTrigger = e ? 2 : 3, b.namespace = o.join("."), b.namespace_re = b.namespace ? new RegExp("(^|\\.)" + o.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, b.result = void 0, b.target || (b.target = d), c = null == c ? [b] : _.makeArray(c, [b]), l = _.event.special[n] || {}, e || !l.trigger || l.trigger.apply(d, c) !== !1)) {
-                    if (!e && !l.noBubble && !_.isWindow(d)) {
-                        for (i = l.delegateType || n, Ca.test(i + n) || (g = g.parentNode); g; g = g.parentNode)m.push(g), h = g;
-                        h === (d.ownerDocument || Z) && m.push(h.defaultView || h.parentWindow || a)
-                    }
-                    for (f = 0; (g = m[f++]) && !b.isPropagationStopped();)b.type = f > 1 ? i : l.bindType || n, k = (ra.get(g, "events") || {})[b.type] && ra.get(g, "handle"), k && k.apply(g, c), k = j && g[j], k && k.apply && _.acceptData(g) && (b.result = k.apply(g, c), b.result === !1 && b.preventDefault());
-                    return b.type = n, e || b.isDefaultPrevented() || l._default && l._default.apply(m.pop(), c) !== !1 || !_.acceptData(d) || j && _.isFunction(d[n]) && !_.isWindow(d) && (h = d[j], h && (d[j] = null), _.event.triggered = n, d[n](), _.event.triggered = void 0, h && (d[j] = h)), b.result
-                }
-            },
-            dispatch: function (a) {
-                a = _.event.fix(a);
-                var b, c, d, e, f, g = [], h = R.call(arguments), i = (ra.get(this, "events") || {})[a.type] || [], j = _.event.special[a.type] || {};
-                if (h[0] = a, a.delegateTarget = this, !j.preDispatch || j.preDispatch.call(this, a) !== !1) {
-                    for (g = _.event.handlers.call(this, a, i), b = 0; (e = g[b++]) && !a.isPropagationStopped();)for (a.currentTarget = e.elem, c = 0; (f = e.handlers[c++]) && !a.isImmediatePropagationStopped();)(!a.namespace_re || a.namespace_re.test(f.namespace)) && (a.handleObj = f, a.data = f.data, d = ((_.event.special[f.origType] || {}).handle || f.handler).apply(e.elem, h), void 0 !== d && (a.result = d) === !1 && (a.preventDefault(), a.stopPropagation()));
-                    return j.postDispatch && j.postDispatch.call(this, a), a.result
-                }
-            },
-            handlers: function (a, b) {
-                var c, d, e, f, g = [], h = b.delegateCount, i = a.target;
-                if (h && i.nodeType && (!a.button || "click" !== a.type))for (; i !== this; i = i.parentNode || this)if (i.disabled !== !0 || "click" !== a.type) {
-                    for (d = [], c = 0; h > c; c++)f = b[c], e = f.selector + " ", void 0 === d[e] && (d[e] = f.needsContext ? _(e, this).index(i) >= 0 : _.find(e, this, null, [i]).length), d[e] && d.push(f);
-                    d.length && g.push({elem: i, handlers: d})
-                }
-                return h < b.length && g.push({elem: this, handlers: b.slice(h)}), g
-            },
-            props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
-            fixHooks: {},
-            keyHooks: {
-                props: "char charCode key keyCode".split(" "), filter: function (a, b) {
-                    return null == a.which && (a.which = null != b.charCode ? b.charCode : b.keyCode), a
-                }
-            },
-            mouseHooks: {
-                props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
-                filter: function (a, b) {
-                    var c, d, e, f = b.button;
-                    return null == a.pageX && null != b.clientX && (c = a.target.ownerDocument || Z, d = c.documentElement, e = c.body, a.pageX = b.clientX + (d && d.scrollLeft || e && e.scrollLeft || 0) - (d && d.clientLeft || e && e.clientLeft || 0), a.pageY = b.clientY + (d && d.scrollTop || e && e.scrollTop || 0) - (d && d.clientTop || e && e.clientTop || 0)), a.which || void 0 === f || (a.which = 1 & f ? 1 : 2 & f ? 3 : 4 & f ? 2 : 0), a
-                }
-            },
-            fix: function (a) {
-                if (a[_.expando])return a;
-                var b, c, d, e = a.type, f = a, g = this.fixHooks[e];
-                for (g || (this.fixHooks[e] = g = Ba.test(e) ? this.mouseHooks : Aa.test(e) ? this.keyHooks : {}), d = g.props ? this.props.concat(g.props) : this.props, a = new _.Event(f), b = d.length; b--;)c = d[b], a[c] = f[c];
-                return a.target || (a.target = Z), 3 === a.target.nodeType && (a.target = a.target.parentNode), g.filter ? g.filter(a, f) : a
-            },
-            special: {
-                load: {noBubble: !0}, focus: {
-                    trigger: function () {
-                        return this !== l() && this.focus ? (this.focus(), !1) : void 0
-                    }, delegateType: "focusin"
-                }, blur: {
-                    trigger: function () {
-                        return this === l() && this.blur ? (this.blur(), !1) : void 0
-                    }, delegateType: "focusout"
-                }, click: {
-                    trigger: function () {
-                        return "checkbox" === this.type && this.click && _.nodeName(this, "input") ? (this.click(), !1) : void 0
-                    }, _default: function (a) {
-                        return _.nodeName(a.target, "a")
-                    }
-                }, beforeunload: {
-                    postDispatch: function (a) {
-                        void 0 !== a.result && a.originalEvent && (a.originalEvent.returnValue = a.result)
-                    }
-                }
-            },
-            simulate: function (a, b, c, d) {
-                var e = _.extend(new _.Event, c, {type: a, isSimulated: !0, originalEvent: {}});
-                d ? _.event.trigger(e, null, b) : _.event.dispatch.call(b, e), e.isDefaultPrevented() && c.preventDefault()
-            }
-        }, _.removeEvent = function (a, b, c) {
-            a.removeEventListener && a.removeEventListener(b, c, !1)
-        }, _.Event = function (a, b) {
-            return this instanceof _.Event ? (a && a.type ? (this.originalEvent = a, this.type = a.type, this.isDefaultPrevented = a.defaultPrevented || void 0 === a.defaultPrevented && a.returnValue === !1 ? j : k) : this.type = a, b && _.extend(this, b), this.timeStamp = a && a.timeStamp || _.now(), void(this[_.expando] = !0)) : new _.Event(a, b)
-        }, _.Event.prototype = {
-            isDefaultPrevented: k,
-            isPropagationStopped: k,
-            isImmediatePropagationStopped: k,
-            preventDefault: function () {
-                var a = this.originalEvent;
-                this.isDefaultPrevented = j, a && a.preventDefault && a.preventDefault()
-            },
-            stopPropagation: function () {
-                var a = this.originalEvent;
-                this.isPropagationStopped = j, a && a.stopPropagation && a.stopPropagation()
-            },
-            stopImmediatePropagation: function () {
-                var a = this.originalEvent;
-                this.isImmediatePropagationStopped = j, a && a.stopImmediatePropagation && a.stopImmediatePropagation(), this.stopPropagation()
-            }
-        }, _.each({
-            mouseenter: "mouseover",
-            mouseleave: "mouseout",
-            pointerenter: "pointerover",
-            pointerleave: "pointerout"
-        }, function (a, b) {
-            _.event.special[a] = {
-                delegateType: b, bindType: b, handle: function (a) {
-                    var c, d = this, e = a.relatedTarget, f = a.handleObj;
-                    return (!e || e !== d && !_.contains(d, e)) && (a.type = f.origType, c = f.handler.apply(this, arguments), a.type = b), c
-                }
-            }
-        }), Y.focusinBubbles || _.each({focus: "focusin", blur: "focusout"}, function (a, b) {
-            var c = function (a) {
-                _.event.simulate(b, a.target, _.event.fix(a), !0)
-            };
-            _.event.special[b] = {
-                setup: function () {
-                    var d = this.ownerDocument || this, e = ra.access(d, b);
-                    e || d.addEventListener(a, c, !0), ra.access(d, b, (e || 0) + 1)
-                }, teardown: function () {
-                    var d = this.ownerDocument || this, e = ra.access(d, b) - 1;
-                    e ? ra.access(d, b, e) : (d.removeEventListener(a, c, !0), ra.remove(d, b))
-                }
-            }
-        }), _.fn.extend({
-            on: function (a, b, c, d, e) {
-                var f, g;
-                if ("object" == typeof a) {
-                    "string" != typeof b && (c = c || b, b = void 0);
-                    for (g in a)this.on(g, b, c, a[g], e);
-                    return this
-                }
-                if (null == c && null == d ? (d = b, c = b = void 0) : null == d && ("string" == typeof b ? (d = c, c = void 0) : (d = c, c = b, b = void 0)), d === !1)d = k; else if (!d)return this;
-                return 1 === e && (f = d, d = function (a) {
-                    return _().off(a), f.apply(this, arguments)
-                }, d.guid = f.guid || (f.guid = _.guid++)), this.each(function () {
-                    _.event.add(this, a, d, c, b)
-                })
-            }, one: function (a, b, c, d) {
-                return this.on(a, b, c, d, 1)
-            }, off: function (a, b, c) {
-                var d, e;
-                if (a && a.preventDefault && a.handleObj)return d = a.handleObj, _(a.delegateTarget).off(d.namespace ? d.origType + "." + d.namespace : d.origType, d.selector, d.handler), this;
-                if ("object" == typeof a) {
-                    for (e in a)this.off(e, b, a[e]);
-                    return this
-                }
-                return (b === !1 || "function" == typeof b) && (c = b, b = void 0), c === !1 && (c = k), this.each(function () {
-                    _.event.remove(this, a, c, b)
-                })
-            }, trigger: function (a, b) {
-                return this.each(function () {
-                    _.event.trigger(a, b, this)
-                })
-            }, triggerHandler: function (a, b) {
-                var c = this[0];
-                return c ? _.event.trigger(a, b, c, !0) : void 0
-            }
-        });
-        var Ea = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, Fa = /<([\w:]+)/, Ga = /<|&#?\w+;/, Ha = /<(?:script|style|link)/i, Ia = /checked\s*(?:[^=]|=\s*.checked.)/i, Ja = /^$|\/(?:java|ecma)script/i, Ka = /^true\/(.*)/, La = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g, Ma = {
-            option: [1, "<select multiple='multiple'>", "</select>"],
-            thead: [1, "<table>", "</table>"],
-            col: [2, "<table><colgroup>", "</colgroup></table>"],
-            tr: [2, "<table><tbody>", "</tbody></table>"],
-            td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
-            _default: [0, "", ""]
-        };
-        Ma.optgroup = Ma.option, Ma.tbody = Ma.tfoot = Ma.colgroup = Ma.caption = Ma.thead, Ma.th = Ma.td, _.extend({
-            clone: function (a, b, c) {
-                var d, e, f, g, h = a.cloneNode(!0), i = _.contains(a.ownerDocument, a);
-                if (!(Y.noCloneChecked || 1 !== a.nodeType && 11 !== a.nodeType || _.isXMLDoc(a)))for (g = r(h), f = r(a), d = 0, e = f.length; e > d; d++)s(f[d], g[d]);
-                if (b)if (c)for (f = f || r(a), g = g || r(h), d = 0, e = f.length; e > d; d++)q(f[d], g[d]); else q(a, h);
-                return g = r(h, "script"), g.length > 0 && p(g, !i && r(a, "script")), h
-            }, buildFragment: function (a, b, c, d) {
-                for (var e, f, g, h, i, j, k = b.createDocumentFragment(), l = [], m = 0, n = a.length; n > m; m++)if (e = a[m], e || 0 === e)if ("object" === _.type(e))_.merge(l, e.nodeType ? [e] : e); else if (Ga.test(e)) {
-                    for (f = f || k.appendChild(b.createElement("div")), g = (Fa.exec(e) || ["", ""])[1].toLowerCase(), h = Ma[g] || Ma._default, f.innerHTML = h[1] + e.replace(Ea, "<$1></$2>") + h[2], j = h[0]; j--;)f = f.lastChild;
-                    _.merge(l, f.childNodes), f = k.firstChild, f.textContent = ""
-                } else l.push(b.createTextNode(e));
-                for (k.textContent = "", m = 0; e = l[m++];)if ((!d || -1 === _.inArray(e, d)) && (i = _.contains(e.ownerDocument, e), f = r(k.appendChild(e), "script"), i && p(f), c))for (j = 0; e = f[j++];)Ja.test(e.type || "") && c.push(e);
-                return k
-            }, cleanData: function (a) {
-                for (var b, c, d, e, f = _.event.special, g = 0; void 0 !== (c = a[g]); g++) {
-                    if (_.acceptData(c) && (e = c[ra.expando], e && (b = ra.cache[e]))) {
-                        if (b.events)for (d in b.events)f[d] ? _.event.remove(c, d) : _.removeEvent(c, d, b.handle);
-                        ra.cache[e] && delete ra.cache[e]
-                    }
-                    delete sa.cache[c[sa.expando]]
-                }
-            }
-        }), _.fn.extend({
-            text: function (a) {
-                return qa(this, function (a) {
-                    return void 0 === a ? _.text(this) : this.empty().each(function () {
-                        (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) && (this.textContent = a)
-                    })
-                }, null, a, arguments.length)
-            }, append: function () {
-                return this.domManip(arguments, function (a) {
-                    if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
-                        var b = m(this, a);
-                        b.appendChild(a)
-                    }
-                })
-            }, prepend: function () {
-                return this.domManip(arguments, function (a) {
-                    if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
-                        var b = m(this, a);
-                        b.insertBefore(a, b.firstChild)
-                    }
-                })
-            }, before: function () {
-                return this.domManip(arguments, function (a) {
-                    this.parentNode && this.parentNode.insertBefore(a, this)
-                })
-            }, after: function () {
-                return this.domManip(arguments, function (a) {
-                    this.parentNode && this.parentNode.insertBefore(a, this.nextSibling)
-                })
-            }, remove: function (a, b) {
-                for (var c, d = a ? _.filter(a, this) : this, e = 0; null != (c = d[e]); e++)b || 1 !== c.nodeType || _.cleanData(r(c)), c.parentNode && (b && _.contains(c.ownerDocument, c) && p(r(c, "script")), c.parentNode.removeChild(c));
-                return this
-            }, empty: function () {
-                for (var a, b = 0; null != (a = this[b]); b++)1 === a.nodeType && (_.cleanData(r(a, !1)), a.textContent = "");
-                return this
-            }, clone: function (a, b) {
-                return a = null == a ? !1 : a, b = null == b ? a : b, this.map(function () {
-                    return _.clone(this, a, b)
-                })
-            }, html: function (a) {
-                return qa(this, function (a) {
-                    var b = this[0] || {}, c = 0, d = this.length;
-                    if (void 0 === a && 1 === b.nodeType)return b.innerHTML;
-                    if ("string" == typeof a && !Ha.test(a) && !Ma[(Fa.exec(a) || ["", ""])[1].toLowerCase()]) {
-                        a = a.replace(Ea, "<$1></$2>");
-                        try {
-                            for (; d > c; c++)b = this[c] || {}, 1 === b.nodeType && (_.cleanData(r(b, !1)), b.innerHTML = a);
-                            b = 0
-                        } catch (e) {
-                        }
-                    }
-                    b && this.empty().append(a)
-                }, null, a, arguments.length)
-            }, replaceWith: function () {
-                var a = arguments[0];
-                return this.domManip(arguments, function (b) {
-                    a = this.parentNode, _.cleanData(r(this)), a && a.replaceChild(b, this)
-                }), a && (a.length || a.nodeType) ? this : this.remove()
-            }, detach: function (a) {
-                return this.remove(a, !0)
-            }, domManip: function (a, b) {
-                a = S.apply([], a);
-                var c, d, e, f, g, h, i = 0, j = this.length, k = this, l = j - 1, m = a[0], p = _.isFunction(m);
-                if (p || j > 1 && "string" == typeof m && !Y.checkClone && Ia.test(m))return this.each(function (c) {
-                    var d = k.eq(c);
-                    p && (a[0] = m.call(this, c, d.html())), d.domManip(a, b)
-                });
-                if (j && (c = _.buildFragment(a, this[0].ownerDocument, !1, this), d = c.firstChild, 1 === c.childNodes.length && (c = d), d)) {
-                    for (e = _.map(r(c, "script"), n), f = e.length; j > i; i++)g = c, i !== l && (g = _.clone(g, !0, !0), f && _.merge(e, r(g, "script"))), b.call(this[i], g, i);
-                    if (f)for (h = e[e.length - 1].ownerDocument, _.map(e, o), i = 0; f > i; i++)g = e[i], Ja.test(g.type || "") && !ra.access(g, "globalEval") && _.contains(h, g) && (g.src ? _._evalUrl && _._evalUrl(g.src) : _.globalEval(g.textContent.replace(La, "")))
-                }
-                return this
-            }
-        }), _.each({
-            appendTo: "append",
-            prependTo: "prepend",
-            insertBefore: "before",
-            insertAfter: "after",
-            replaceAll: "replaceWith"
-        }, function (a, b) {
-            _.fn[a] = function (a) {
-                for (var c, d = [], e = _(a), f = e.length - 1, g = 0; f >= g; g++)c = g === f ? this : this.clone(!0), _(e[g])[b](c), T.apply(d, c.get());
-                return this.pushStack(d)
-            }
-        });
-        var Na, Oa = {}, Pa = /^margin/, Qa = new RegExp("^(" + va + ")(?!px)[a-z%]+$", "i"), Ra = function (b) {
-            return b.ownerDocument.defaultView.opener ? b.ownerDocument.defaultView.getComputedStyle(b, null) : a.getComputedStyle(b, null)
-        };
-        !function () {
-            function b() {
-                g.style.cssText = "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute", g.innerHTML = "", e.appendChild(f);
-                var b = a.getComputedStyle(g, null);
-                c = "1%" !== b.top, d = "4px" === b.width, e.removeChild(f)
-            }
-
-            var c, d, e = Z.documentElement, f = Z.createElement("div"), g = Z.createElement("div");
-            g.style && (g.style.backgroundClip = "content-box", g.cloneNode(!0).style.backgroundClip = "", Y.clearCloneStyle = "content-box" === g.style.backgroundClip, f.style.cssText = "border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute", f.appendChild(g), a.getComputedStyle && _.extend(Y, {
-                pixelPosition: function () {
-                    return b(), c
-                }, boxSizingReliable: function () {
-                    return null == d && b(), d
-                }, reliableMarginRight: function () {
-                    var b, c = g.appendChild(Z.createElement("div"));
-                    return c.style.cssText = g.style.cssText = "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0", c.style.marginRight = c.style.width = "0", g.style.width = "1px", e.appendChild(f), b = !parseFloat(a.getComputedStyle(c, null).marginRight), e.removeChild(f), g.removeChild(c), b
-                }
-            }))
-        }(), _.swap = function (a, b, c, d) {
-            var e, f, g = {};
-            for (f in b)g[f] = a.style[f], a.style[f] = b[f];
-            e = c.apply(a, d || []);
-            for (f in b)a.style[f] = g[f];
-            return e
-        };
-        var Sa = /^(none|table(?!-c[ea]).+)/, Ta = new RegExp("^(" + va + ")(.*)$", "i"), Ua = new RegExp("^([+-])=(" + va + ")", "i"), Va = {
-            position: "absolute",
-            visibility: "hidden",
-            display: "block"
-        }, Wa = {letterSpacing: "0", fontWeight: "400"}, Xa = ["Webkit", "O", "Moz", "ms"];
-        _.extend({
-            cssHooks: {
-                opacity: {
-                    get: function (a, b) {
-                        if (b) {
-                            var c = v(a, "opacity");
-                            return "" === c ? "1" : c
-                        }
-                    }
-                }
-            },
-            cssNumber: {
-                columnCount: !0,
-                fillOpacity: !0,
-                flexGrow: !0,
-                flexShrink: !0,
-                fontWeight: !0,
-                lineHeight: !0,
-                opacity: !0,
-                order: !0,
-                orphans: !0,
-                widows: !0,
-                zIndex: !0,
-                zoom: !0
-            },
-            cssProps: {"float": "cssFloat"},
-            style: function (a, b, c, d) {
-                if (a && 3 !== a.nodeType && 8 !== a.nodeType && a.style) {
-                    var e, f, g, h = _.camelCase(b), i = a.style;
-                    return b = _.cssProps[h] || (_.cssProps[h] = x(i, h)), g = _.cssHooks[b] || _.cssHooks[h], void 0 === c ? g && "get" in g && void 0 !== (e = g.get(a, !1, d)) ? e : i[b] : (f = typeof c, "string" === f && (e = Ua.exec(c)) && (c = (e[1] + 1) * e[2] + parseFloat(_.css(a, b)), f = "number"), null != c && c === c && ("number" !== f || _.cssNumber[h] || (c += "px"), Y.clearCloneStyle || "" !== c || 0 !== b.indexOf("background") || (i[b] = "inherit"), g && "set" in g && void 0 === (c = g.set(a, c, d)) || (i[b] = c)), void 0)
-                }
-            },
-            css: function (a, b, c, d) {
-                var e, f, g, h = _.camelCase(b);
-                return b = _.cssProps[h] || (_.cssProps[h] = x(a.style, h)), g = _.cssHooks[b] || _.cssHooks[h], g && "get" in g && (e = g.get(a, !0, c)), void 0 === e && (e = v(a, b, d)), "normal" === e && b in Wa && (e = Wa[b]), "" === c || c ? (f = parseFloat(e), c === !0 || _.isNumeric(f) ? f || 0 : e) : e
-            }
-        }), _.each(["height", "width"], function (a, b) {
-            _.cssHooks[b] = {
-                get: function (a, c, d) {
-                    return c ? Sa.test(_.css(a, "display")) && 0 === a.offsetWidth ? _.swap(a, Va, function () {
-                        return A(a, b, d)
-                    }) : A(a, b, d) : void 0
-                }, set: function (a, c, d) {
-                    var e = d && Ra(a);
-                    return y(a, c, d ? z(a, b, d, "border-box" === _.css(a, "boxSizing", !1, e), e) : 0)
-                }
-            }
-        }), _.cssHooks.marginRight = w(Y.reliableMarginRight, function (a, b) {
-            return b ? _.swap(a, {display: "inline-block"}, v, [a, "marginRight"]) : void 0
-        }), _.each({margin: "", padding: "", border: "Width"}, function (a, b) {
-            _.cssHooks[a + b] = {
-                expand: function (c) {
-                    for (var d = 0, e = {}, f = "string" == typeof c ? c.split(" ") : [c]; 4 > d; d++)e[a + wa[d] + b] = f[d] || f[d - 2] || f[0];
-                    return e
-                }
-            }, Pa.test(a) || (_.cssHooks[a + b].set = y)
-        }), _.fn.extend({
-            css: function (a, b) {
-                return qa(this, function (a, b, c) {
-                    var d, e, f = {}, g = 0;
-                    if (_.isArray(b)) {
-                        for (d = Ra(a), e = b.length; e > g; g++)f[b[g]] = _.css(a, b[g], !1, d);
-                        return f
-                    }
-                    return void 0 !== c ? _.style(a, b, c) : _.css(a, b)
-                }, a, b, arguments.length > 1)
-            }, show: function () {
-                return B(this, !0)
-            }, hide: function () {
-                return B(this)
-            }, toggle: function (a) {
-                return "boolean" == typeof a ? a ? this.show() : this.hide() : this.each(function () {
-                    xa(this) ? _(this).show() : _(this).hide()
-                })
-            }
-        }), _.Tween = C, C.prototype = {
-            constructor: C, init: function (a, b, c, d, e, f) {
-                this.elem = a, this.prop = c, this.easing = e || "swing", this.options = b, this.start = this.now = this.cur(), this.end = d, this.unit = f || (_.cssNumber[c] ? "" : "px")
-            }, cur: function () {
-                var a = C.propHooks[this.prop];
-                return a && a.get ? a.get(this) : C.propHooks._default.get(this)
-            }, run: function (a) {
-                var b, c = C.propHooks[this.prop];
-                return this.options.duration ? this.pos = b = _.easing[this.easing](a, this.options.duration * a, 0, 1, this.options.duration) : this.pos = b = a, this.now = (this.end - this.start) * b + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), c && c.set ? c.set(this) : C.propHooks._default.set(this), this
-            }
-        }, C.prototype.init.prototype = C.prototype, C.propHooks = {
-            _default: {
-                get: function (a) {
-                    var b;
-                    return null == a.elem[a.prop] || a.elem.style && null != a.elem.style[a.prop] ? (b = _.css(a.elem, a.prop, ""), b && "auto" !== b ? b : 0) : a.elem[a.prop]
-                }, set: function (a) {
-                    _.fx.step[a.prop] ? _.fx.step[a.prop](a) : a.elem.style && (null != a.elem.style[_.cssProps[a.prop]] || _.cssHooks[a.prop]) ? _.style(a.elem, a.prop, a.now + a.unit) : a.elem[a.prop] = a.now
-                }
-            }
-        }, C.propHooks.scrollTop = C.propHooks.scrollLeft = {
-            set: function (a) {
-                a.elem.nodeType && a.elem.parentNode && (a.elem[a.prop] = a.now)
-            }
-        }, _.easing = {
-            linear: function (a) {
-                return a
-            }, swing: function (a) {
-                return .5 - Math.cos(a * Math.PI) / 2
-            }
-        }, _.fx = C.prototype.init, _.fx.step = {};
-        var Ya, Za, $a = /^(?:toggle|show|hide)$/, _a = new RegExp("^(?:([+-])=|)(" + va + ")([a-z%]*)$", "i"), ab = /queueHooks$/, bb = [G], cb = {
-            "*": [function (a, b) {
-                var c = this.createTween(a, b), d = c.cur(), e = _a.exec(b), f = e && e[3] || (_.cssNumber[a] ? "" : "px"), g = (_.cssNumber[a] || "px" !== f && +d) && _a.exec(_.css(c.elem, a)), h = 1, i = 20;
-                if (g && g[3] !== f) {
-                    f = f || g[3], e = e || [], g = +d || 1;
-                    do h = h || ".5", g /= h, _.style(c.elem, a, g + f); while (h !== (h = c.cur() / d) && 1 !== h && --i)
-                }
-                return e && (g = c.start = +g || +d || 0, c.unit = f, c.end = e[1] ? g + (e[1] + 1) * e[2] : +e[2]), c
-            }]
-        };
-        _.Animation = _.extend(I, {
-            tweener: function (a, b) {
-                _.isFunction(a) ? (b = a, a = ["*"]) : a = a.split(" ");
-                for (var c, d = 0, e = a.length; e > d; d++)c = a[d], cb[c] = cb[c] || [], cb[c].unshift(b)
-            }, prefilter: function (a, b) {
-                b ? bb.unshift(a) : bb.push(a)
-            }
-        }), _.speed = function (a, b, c) {
-            var d = a && "object" == typeof a ? _.extend({}, a) : {
-                complete: c || !c && b || _.isFunction(a) && a,
-                duration: a,
-                easing: c && b || b && !_.isFunction(b) && b
-            };
-            return d.duration = _.fx.off ? 0 : "number" == typeof d.duration ? d.duration : d.duration in _.fx.speeds ? _.fx.speeds[d.duration] : _.fx.speeds._default, (null == d.queue || d.queue === !0) && (d.queue = "fx"), d.old = d.complete, d.complete = function () {
-                _.isFunction(d.old) && d.old.call(this), d.queue && _.dequeue(this, d.queue)
-            }, d
-        }, _.fn.extend({
-            fadeTo: function (a, b, c, d) {
-                return this.filter(xa).css("opacity", 0).show().end().animate({opacity: b}, a, c, d)
-            }, animate: function (a, b, c, d) {
-                var e = _.isEmptyObject(a), f = _.speed(b, c, d), g = function () {
-                    var b = I(this, _.extend({}, a), f);
-                    (e || ra.get(this, "finish")) && b.stop(!0)
-                };
-                return g.finish = g, e || f.queue === !1 ? this.each(g) : this.queue(f.queue, g)
-            }, stop: function (a, b, c) {
-                var d = function (a) {
-                    var b = a.stop;
-                    delete a.stop, b(c)
-                };
-                return "string" != typeof a && (c = b, b = a, a = void 0), b && a !== !1 && this.queue(a || "fx", []), this.each(function () {
-                    var b = !0, e = null != a && a + "queueHooks", f = _.timers, g = ra.get(this);
-                    if (e)g[e] && g[e].stop && d(g[e]); else for (e in g)g[e] && g[e].stop && ab.test(e) && d(g[e]);
-                    for (e = f.length; e--;)f[e].elem !== this || null != a && f[e].queue !== a || (f[e].anim.stop(c), b = !1, f.splice(e, 1));
-                    (b || !c) && _.dequeue(this, a)
-                })
-            }, finish: function (a) {
-                return a !== !1 && (a = a || "fx"), this.each(function () {
-                    var b, c = ra.get(this), d = c[a + "queue"], e = c[a + "queueHooks"], f = _.timers, g = d ? d.length : 0;
-                    for (c.finish = !0, _.queue(this, a, []),
-                         e && e.stop && e.stop.call(this, !0), b = f.length; b--;)f[b].elem === this && f[b].queue === a && (f[b].anim.stop(!0), f.splice(b, 1));
-                    for (b = 0; g > b; b++)d[b] && d[b].finish && d[b].finish.call(this);
-                    delete c.finish
-                })
-            }
-        }), _.each(["toggle", "show", "hide"], function (a, b) {
-            var c = _.fn[b];
-            _.fn[b] = function (a, d, e) {
-                return null == a || "boolean" == typeof a ? c.apply(this, arguments) : this.animate(E(b, !0), a, d, e)
-            }
-        }), _.each({
-            slideDown: E("show"),
-            slideUp: E("hide"),
-            slideToggle: E("toggle"),
-            fadeIn: {opacity: "show"},
-            fadeOut: {opacity: "hide"},
-            fadeToggle: {opacity: "toggle"}
-        }, function (a, b) {
-            _.fn[a] = function (a, c, d) {
-                return this.animate(b, a, c, d)
-            }
-        }), _.timers = [], _.fx.tick = function () {
-            var a, b = 0, c = _.timers;
-            for (Ya = _.now(); b < c.length; b++)a = c[b], a() || c[b] !== a || c.splice(b--, 1);
-            c.length || _.fx.stop(), Ya = void 0
-        }, _.fx.timer = function (a) {
-            _.timers.push(a), a() ? _.fx.start() : _.timers.pop()
-        }, _.fx.interval = 13, _.fx.start = function () {
-            Za || (Za = setInterval(_.fx.tick, _.fx.interval))
-        }, _.fx.stop = function () {
-            clearInterval(Za), Za = null
-        }, _.fx.speeds = {slow: 600, fast: 200, _default: 400}, _.fn.delay = function (a, b) {
-            return a = _.fx ? _.fx.speeds[a] || a : a, b = b || "fx", this.queue(b, function (b, c) {
-                var d = setTimeout(b, a);
-                c.stop = function () {
-                    clearTimeout(d)
-                }
-            })
-        }, function () {
-            var a = Z.createElement("input"), b = Z.createElement("select"), c = b.appendChild(Z.createElement("option"));
-            a.type = "checkbox", Y.checkOn = "" !== a.value, Y.optSelected = c.selected, b.disabled = !0, Y.optDisabled = !c.disabled, a = Z.createElement("input"), a.value = "t", a.type = "radio", Y.radioValue = "t" === a.value
-        }();
-        var db, eb, fb = _.expr.attrHandle;
-        _.fn.extend({
-            attr: function (a, b) {
-                return qa(this, _.attr, a, b, arguments.length > 1)
-            }, removeAttr: function (a) {
-                return this.each(function () {
-                    _.removeAttr(this, a)
-                })
-            }
-        }), _.extend({
-            attr: function (a, b, c) {
-                var d, e, f = a.nodeType;
-                if (a && 3 !== f && 8 !== f && 2 !== f)return typeof a.getAttribute === za ? _.prop(a, b, c) : (1 === f && _.isXMLDoc(a) || (b = b.toLowerCase(), d = _.attrHooks[b] || (_.expr.match.bool.test(b) ? eb : db)), void 0 === c ? d && "get" in d && null !== (e = d.get(a, b)) ? e : (e = _.find.attr(a, b), null == e ? void 0 : e) : null !== c ? d && "set" in d && void 0 !== (e = d.set(a, c, b)) ? e : (a.setAttribute(b, c + ""), c) : void _.removeAttr(a, b))
-            }, removeAttr: function (a, b) {
-                var c, d, e = 0, f = b && b.match(na);
-                if (f && 1 === a.nodeType)for (; c = f[e++];)d = _.propFix[c] || c, _.expr.match.bool.test(c) && (a[d] = !1), a.removeAttribute(c)
-            }, attrHooks: {
-                type: {
-                    set: function (a, b) {
-                        if (!Y.radioValue && "radio" === b && _.nodeName(a, "input")) {
-                            var c = a.value;
-                            return a.setAttribute("type", b), c && (a.value = c), b
-                        }
-                    }
-                }
-            }
-        }), eb = {
-            set: function (a, b, c) {
-                return b === !1 ? _.removeAttr(a, c) : a.setAttribute(c, c), c
-            }
-        }, _.each(_.expr.match.bool.source.match(/\w+/g), function (a, b) {
-            var c = fb[b] || _.find.attr;
-            fb[b] = function (a, b, d) {
-                var e, f;
-                return d || (f = fb[b], fb[b] = e, e = null != c(a, b, d) ? b.toLowerCase() : null, fb[b] = f), e
-            }
-        });
-        var gb = /^(?:input|select|textarea|button)$/i;
-        _.fn.extend({
-            prop: function (a, b) {
-                return qa(this, _.prop, a, b, arguments.length > 1)
-            }, removeProp: function (a) {
-                return this.each(function () {
-                    delete this[_.propFix[a] || a]
-                })
-            }
-        }), _.extend({
-            propFix: {"for": "htmlFor", "class": "className"}, prop: function (a, b, c) {
-                var d, e, f, g = a.nodeType;
-                if (a && 3 !== g && 8 !== g && 2 !== g)return f = 1 !== g || !_.isXMLDoc(a), f && (b = _.propFix[b] || b, e = _.propHooks[b]), void 0 !== c ? e && "set" in e && void 0 !== (d = e.set(a, c, b)) ? d : a[b] = c : e && "get" in e && null !== (d = e.get(a, b)) ? d : a[b]
-            }, propHooks: {
-                tabIndex: {
-                    get: function (a) {
-                        return a.hasAttribute("tabindex") || gb.test(a.nodeName) || a.href ? a.tabIndex : -1
-                    }
-                }
-            }
-        }), Y.optSelected || (_.propHooks.selected = {
-            get: function (a) {
-                var b = a.parentNode;
-                return b && b.parentNode && b.parentNode.selectedIndex, null
-            }
-        }), _.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function () {
-            _.propFix[this.toLowerCase()] = this
-        });
-        var hb = /[\t\r\n\f]/g;
-        _.fn.extend({
-            addClass: function (a) {
-                var b, c, d, e, f, g, h = "string" == typeof a && a, i = 0, j = this.length;
-                if (_.isFunction(a))return this.each(function (b) {
-                    _(this).addClass(a.call(this, b, this.className))
-                });
-                if (h)for (b = (a || "").match(na) || []; j > i; i++)if (c = this[i], d = 1 === c.nodeType && (c.className ? (" " + c.className + " ").replace(hb, " ") : " ")) {
-                    for (f = 0; e = b[f++];)d.indexOf(" " + e + " ") < 0 && (d += e + " ");
-                    g = _.trim(d), c.className !== g && (c.className = g)
-                }
-                return this
-            }, removeClass: function (a) {
-                var b, c, d, e, f, g, h = 0 === arguments.length || "string" == typeof a && a, i = 0, j = this.length;
-                if (_.isFunction(a))return this.each(function (b) {
-                    _(this).removeClass(a.call(this, b, this.className))
-                });
-                if (h)for (b = (a || "").match(na) || []; j > i; i++)if (c = this[i], d = 1 === c.nodeType && (c.className ? (" " + c.className + " ").replace(hb, " ") : "")) {
-                    for (f = 0; e = b[f++];)for (; d.indexOf(" " + e + " ") >= 0;)d = d.replace(" " + e + " ", " ");
-                    g = a ? _.trim(d) : "", c.className !== g && (c.className = g)
-                }
-                return this
-            }, toggleClass: function (a, b) {
-                var c = typeof a;
-                return "boolean" == typeof b && "string" === c ? b ? this.addClass(a) : this.removeClass(a) : _.isFunction(a) ? this.each(function (c) {
-                    _(this).toggleClass(a.call(this, c, this.className, b), b)
-                }) : this.each(function () {
-                    if ("string" === c)for (var b, d = 0, e = _(this), f = a.match(na) || []; b = f[d++];)e.hasClass(b) ? e.removeClass(b) : e.addClass(b); else(c === za || "boolean" === c) && (this.className && ra.set(this, "__className__", this.className), this.className = this.className || a === !1 ? "" : ra.get(this, "__className__") || "")
-                })
-            }, hasClass: function (a) {
-                for (var b = " " + a + " ", c = 0, d = this.length; d > c; c++)if (1 === this[c].nodeType && (" " + this[c].className + " ").replace(hb, " ").indexOf(b) >= 0)return !0;
-                return !1
-            }
-        });
-        var ib = /\r/g;
-        _.fn.extend({
-            val: function (a) {
-                var b, c, d, e = this[0];
-                {
-                    if (arguments.length)return d = _.isFunction(a), this.each(function (c) {
-                        var e;
-                        1 === this.nodeType && (e = d ? a.call(this, c, _(this).val()) : a, null == e ? e = "" : "number" == typeof e ? e += "" : _.isArray(e) && (e = _.map(e, function (a) {
-                            return null == a ? "" : a + ""
-                        })), b = _.valHooks[this.type] || _.valHooks[this.nodeName.toLowerCase()], b && "set" in b && void 0 !== b.set(this, e, "value") || (this.value = e))
-                    });
-                    if (e)return b = _.valHooks[e.type] || _.valHooks[e.nodeName.toLowerCase()], b && "get" in b && void 0 !== (c = b.get(e, "value")) ? c : (c = e.value, "string" == typeof c ? c.replace(ib, "") : null == c ? "" : c)
-                }
-            }
-        }), _.extend({
-            valHooks: {
-                option: {
-                    get: function (a) {
-                        var b = _.find.attr(a, "value");
-                        return null != b ? b : _.trim(_.text(a))
-                    }
-                }, select: {
-                    get: function (a) {
-                        for (var b, c, d = a.options, e = a.selectedIndex, f = "select-one" === a.type || 0 > e, g = f ? null : [], h = f ? e + 1 : d.length, i = 0 > e ? h : f ? e : 0; h > i; i++)if (c = d[i], !(!c.selected && i !== e || (Y.optDisabled ? c.disabled : null !== c.getAttribute("disabled")) || c.parentNode.disabled && _.nodeName(c.parentNode, "optgroup"))) {
-                            if (b = _(c).val(), f)return b;
-                            g.push(b)
-                        }
-                        return g
-                    }, set: function (a, b) {
-                        for (var c, d, e = a.options, f = _.makeArray(b), g = e.length; g--;)d = e[g], (d.selected = _.inArray(d.value, f) >= 0) && (c = !0);
-                        return c || (a.selectedIndex = -1), f
-                    }
-                }
-            }
-        }), _.each(["radio", "checkbox"], function () {
-            _.valHooks[this] = {
-                set: function (a, b) {
-                    return _.isArray(b) ? a.checked = _.inArray(_(a).val(), b) >= 0 : void 0
-                }
-            }, Y.checkOn || (_.valHooks[this].get = function (a) {
-                return null === a.getAttribute("value") ? "on" : a.value
-            })
-        }), _.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "), function (a, b) {
-            _.fn[b] = function (a, c) {
-                return arguments.length > 0 ? this.on(b, null, a, c) : this.trigger(b)
-            }
-        }), _.fn.extend({
-            hover: function (a, b) {
-                return this.mouseenter(a).mouseleave(b || a)
-            }, bind: function (a, b, c) {
-                return this.on(a, null, b, c)
-            }, unbind: function (a, b) {
-                return this.off(a, null, b)
-            }, delegate: function (a, b, c, d) {
-                return this.on(b, a, c, d)
-            }, undelegate: function (a, b, c) {
-                return 1 === arguments.length ? this.off(a, "**") : this.off(b, a || "**", c)
-            }
-        });
-        var jb = _.now(), kb = /\?/;
-        _.parseJSON = function (a) {
-            return JSON.parse(a + "")
-        }, _.parseXML = function (a) {
-            var b, c;
-            if (!a || "string" != typeof a)return null;
-            try {
-                c = new DOMParser, b = c.parseFromString(a, "text/xml")
-            } catch (d) {
-                b = void 0
-            }
-            return (!b || b.getElementsByTagName("parsererror").length) && _.error("Invalid XML: " + a), b
-        };
-        var lb = /#.*$/, mb = /([?&])_=[^&]*/, nb = /^(.*?):[ \t]*([^\r\n]*)$/gm, ob = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, pb = /^(?:GET|HEAD)$/, qb = /^\/\//, rb = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/, sb = {}, tb = {}, ub = "*/".concat("*"), vb = a.location.href, wb = rb.exec(vb.toLowerCase()) || [];
-        _.extend({
-            active: 0,
-            lastModified: {},
-            etag: {},
-            ajaxSettings: {
-                url: vb,
-                type: "GET",
-                isLocal: ob.test(wb[1]),
-                global: !0,
-                processData: !0,
-                async: !0,
-                contentType: "application/x-www-form-urlencoded; charset=UTF-8",
-                accepts: {
-                    "*": ub,
-                    text: "text/plain",
-                    html: "text/html",
-                    xml: "application/xml, text/xml",
-                    json: "application/json, text/javascript"
-                },
-                contents: {xml: /xml/, html: /html/, json: /json/},
-                responseFields: {xml: "responseXML", text: "responseText", json: "responseJSON"},
-                converters: {"* text": String, "text html": !0, "text json": _.parseJSON, "text xml": _.parseXML},
-                flatOptions: {url: !0, context: !0}
-            },
-            ajaxSetup: function (a, b) {
-                return b ? L(L(a, _.ajaxSettings), b) : L(_.ajaxSettings, a)
-            },
-            ajaxPrefilter: J(sb),
-            ajaxTransport: J(tb),
-            ajax: function (a, b) {
-                function c(a, b, c, g) {
-                    var i, k, r, s, u, w = b;
-                    2 !== t && (t = 2, h && clearTimeout(h), d = void 0, f = g || "", v.readyState = a > 0 ? 4 : 0, i = a >= 200 && 300 > a || 304 === a, c && (s = M(l, v, c)), s = N(l, s, v, i), i ? (l.ifModified && (u = v.getResponseHeader("Last-Modified"), u && (_.lastModified[e] = u), u = v.getResponseHeader("etag"), u && (_.etag[e] = u)), 204 === a || "HEAD" === l.type ? w = "nocontent" : 304 === a ? w = "notmodified" : (w = s.state, k = s.data, r = s.error, i = !r)) : (r = w, (a || !w) && (w = "error", 0 > a && (a = 0))), v.status = a, v.statusText = (b || w) + "", i ? o.resolveWith(m, [k, w, v]) : o.rejectWith(m, [v, w, r]), v.statusCode(q), q = void 0, j && n.trigger(i ? "ajaxSuccess" : "ajaxError", [v, l, i ? k : r]), p.fireWith(m, [v, w]), j && (n.trigger("ajaxComplete", [v, l]), --_.active || _.event.trigger("ajaxStop")))
-                }
-
-                "object" == typeof a && (b = a, a = void 0), b = b || {};
-                var d, e, f, g, h, i, j, k, l = _.ajaxSetup({}, b), m = l.context || l, n = l.context && (m.nodeType || m.jquery) ? _(m) : _.event, o = _.Deferred(), p = _.Callbacks("once memory"), q = l.statusCode || {}, r = {}, s = {}, t = 0, u = "canceled", v = {
-                    readyState: 0,
-                    getResponseHeader: function (a) {
-                        var b;
-                        if (2 === t) {
-                            if (!g)for (g = {}; b = nb.exec(f);)g[b[1].toLowerCase()] = b[2];
-                            b = g[a.toLowerCase()]
-                        }
-                        return null == b ? null : b
-                    },
-                    getAllResponseHeaders: function () {
-                        return 2 === t ? f : null
-                    },
-                    setRequestHeader: function (a, b) {
-                        var c = a.toLowerCase();
-                        return t || (a = s[c] = s[c] || a, r[a] = b), this
-                    },
-                    overrideMimeType: function (a) {
-                        return t || (l.mimeType = a), this
-                    },
-                    statusCode: function (a) {
-                        var b;
-                        if (a)if (2 > t)for (b in a)q[b] = [q[b], a[b]]; else v.always(a[v.status]);
-                        return this
-                    },
-                    abort: function (a) {
-                        var b = a || u;
-                        return d && d.abort(b), c(0, b), this
-                    }
-                };
-                if (o.promise(v).complete = p.add, v.success = v.done, v.error = v.fail, l.url = ((a || l.url || vb) + "").replace(lb, "").replace(qb, wb[1] + "//"), l.type = b.method || b.type || l.method || l.type, l.dataTypes = _.trim(l.dataType || "*").toLowerCase().match(na) || [""], null == l.crossDomain && (i = rb.exec(l.url.toLowerCase()), l.crossDomain = !(!i || i[1] === wb[1] && i[2] === wb[2] && (i[3] || ("http:" === i[1] ? "80" : "443")) === (wb[3] || ("http:" === wb[1] ? "80" : "443")))), l.data && l.processData && "string" != typeof l.data && (l.data = _.param(l.data, l.traditional)), K(sb, l, b, v), 2 === t)return v;
-                j = _.event && l.global, j && 0 === _.active++ && _.event.trigger("ajaxStart"), l.type = l.type.toUpperCase(), l.hasContent = !pb.test(l.type), e = l.url, l.hasContent || (l.data && (e = l.url += (kb.test(e) ? "&" : "?") + l.data, delete l.data), l.cache === !1 && (l.url = mb.test(e) ? e.replace(mb, "$1_=" + jb++) : e + (kb.test(e) ? "&" : "?") + "_=" + jb++)), l.ifModified && (_.lastModified[e] && v.setRequestHeader("If-Modified-Since", _.lastModified[e]), _.etag[e] && v.setRequestHeader("If-None-Match", _.etag[e])), (l.data && l.hasContent && l.contentType !== !1 || b.contentType) && v.setRequestHeader("Content-Type", l.contentType), v.setRequestHeader("Accept", l.dataTypes[0] && l.accepts[l.dataTypes[0]] ? l.accepts[l.dataTypes[0]] + ("*" !== l.dataTypes[0] ? ", " + ub + "; q=0.01" : "") : l.accepts["*"]);
-                for (k in l.headers)v.setRequestHeader(k, l.headers[k]);
-                if (l.beforeSend && (l.beforeSend.call(m, v, l) === !1 || 2 === t))return v.abort();
-                u = "abort";
-                for (k in{success: 1, error: 1, complete: 1})v[k](l[k]);
-                if (d = K(tb, l, b, v)) {
-                    v.readyState = 1, j && n.trigger("ajaxSend", [v, l]), l.async && l.timeout > 0 && (h = setTimeout(function () {
-                        v.abort("timeout")
-                    }, l.timeout));
-                    try {
-                        t = 1, d.send(r, c)
-                    } catch (w) {
-                        if (!(2 > t))throw w;
-                        c(-1, w)
-                    }
-                } else c(-1, "No Transport");
-                return v
-            },
-            getJSON: function (a, b, c) {
-                return _.get(a, b, c, "json")
-            },
-            getScript: function (a, b) {
-                return _.get(a, void 0, b, "script")
-            }
-        }), _.each(["get", "post"], function (a, b) {
-            _[b] = function (a, c, d, e) {
-                return _.isFunction(c) && (e = e || d, d = c, c = void 0), _.ajax({
-                    url: a,
-                    type: b,
-                    dataType: e,
-                    data: c,
-                    success: d
-                })
-            }
-        }), _._evalUrl = function (a) {
-            return _.ajax({url: a, type: "GET", dataType: "script", async: !1, global: !1, "throws": !0})
-        }, _.fn.extend({
-            wrapAll: function (a) {
-                var b;
-                return _.isFunction(a) ? this.each(function (b) {
-                    _(this).wrapAll(a.call(this, b))
-                }) : (this[0] && (b = _(a, this[0].ownerDocument).eq(0).clone(!0), this[0].parentNode && b.insertBefore(this[0]), b.map(function () {
-                    for (var a = this; a.firstElementChild;)a = a.firstElementChild;
-                    return a
-                }).append(this)), this)
-            }, wrapInner: function (a) {
-                return _.isFunction(a) ? this.each(function (b) {
-                    _(this).wrapInner(a.call(this, b))
-                }) : this.each(function () {
-                    var b = _(this), c = b.contents();
-                    c.length ? c.wrapAll(a) : b.append(a)
-                })
-            }, wrap: function (a) {
-                var b = _.isFunction(a);
-                return this.each(function (c) {
-                    _(this).wrapAll(b ? a.call(this, c) : a)
-                })
-            }, unwrap: function () {
-                return this.parent().each(function () {
-                    _.nodeName(this, "body") || _(this).replaceWith(this.childNodes)
-                }).end()
-            }
-        }), _.expr.filters.hidden = function (a) {
-            return a.offsetWidth <= 0 && a.offsetHeight <= 0
-        }, _.expr.filters.visible = function (a) {
-            return !_.expr.filters.hidden(a)
-        };
-        var xb = /%20/g, yb = /\[\]$/, zb = /\r?\n/g, Ab = /^(?:submit|button|image|reset|file)$/i, Bb = /^(?:input|select|textarea|keygen)/i;
-        _.param = function (a, b) {
-            var c, d = [], e = function (a, b) {
-                b = _.isFunction(b) ? b() : null == b ? "" : b, d[d.length] = encodeURIComponent(a) + "=" + encodeURIComponent(b)
-            };
-            if (void 0 === b && (b = _.ajaxSettings && _.ajaxSettings.traditional), _.isArray(a) || a.jquery && !_.isPlainObject(a))_.each(a, function () {
-                e(this.name, this.value)
-            }); else for (c in a)O(c, a[c], b, e);
-            return d.join("&").replace(xb, "+")
-        }, _.fn.extend({
-            serialize: function () {
-                return _.param(this.serializeArray())
-            }, serializeArray: function () {
-                return this.map(function () {
-                    var a = _.prop(this, "elements");
-                    return a ? _.makeArray(a) : this
-                }).filter(function () {
-                    var a = this.type;
-                    return this.name && !_(this).is(":disabled") && Bb.test(this.nodeName) && !Ab.test(a) && (this.checked || !ya.test(a))
-                }).map(function (a, b) {
-                    var c = _(this).val();
-                    return null == c ? null : _.isArray(c) ? _.map(c, function (a) {
-                        return {name: b.name, value: a.replace(zb, "\r\n")}
-                    }) : {name: b.name, value: c.replace(zb, "\r\n")}
-                }).get()
-            }
-        }), _.ajaxSettings.xhr = function () {
-            try {
-                return new XMLHttpRequest
-            } catch (a) {
-            }
-        };
-        var Cb = 0, Db = {}, Eb = {0: 200, 1223: 204}, Fb = _.ajaxSettings.xhr();
-        a.attachEvent && a.attachEvent("onunload", function () {
-            for (var a in Db)Db[a]()
-        }), Y.cors = !!Fb && "withCredentials" in Fb, Y.ajax = Fb = !!Fb, _.ajaxTransport(function (a) {
-            var b;
-            return Y.cors || Fb && !a.crossDomain ? {
-                send: function (c, d) {
-                    var e, f = a.xhr(), g = ++Cb;
-                    if (f.open(a.type, a.url, a.async, a.username, a.password), a.xhrFields)for (e in a.xhrFields)f[e] = a.xhrFields[e];
-                    a.mimeType && f.overrideMimeType && f.overrideMimeType(a.mimeType), a.crossDomain || c["X-Requested-With"] || (c["X-Requested-With"] = "XMLHttpRequest");
-                    for (e in c)f.setRequestHeader(e, c[e]);
-                    b = function (a) {
-                        return function () {
-                            b && (delete Db[g], b = f.onload = f.onerror = null, "abort" === a ? f.abort() : "error" === a ? d(f.status, f.statusText) : d(Eb[f.status] || f.status, f.statusText, "string" == typeof f.responseText ? {text: f.responseText} : void 0, f.getAllResponseHeaders()))
-                        }
-                    }, f.onload = b(), f.onerror = b("error"), b = Db[g] = b("abort");
-                    try {
-                        f.send(a.hasContent && a.data || null)
-                    } catch (h) {
-                        if (b)throw h
-                    }
-                }, abort: function () {
-                    b && b()
-                }
-            } : void 0
-        }), _.ajaxSetup({
-            accepts: {script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},
-            contents: {script: /(?:java|ecma)script/},
-            converters: {
-                "text script": function (a) {
-                    return _.globalEval(a), a
-                }
-            }
-        }), _.ajaxPrefilter("script", function (a) {
-            void 0 === a.cache && (a.cache = !1), a.crossDomain && (a.type = "GET")
-        }), _.ajaxTransport("script", function (a) {
-            if (a.crossDomain) {
-                var b, c;
-                return {
-                    send: function (d, e) {
-                        b = _("<script>").prop({
-                            async: !0,
-                            charset: a.scriptCharset,
-                            src: a.url
-                        }).on("load error", c = function (a) {
-                            b.remove(), c = null, a && e("error" === a.type ? 404 : 200, a.type)
-                        }), Z.head.appendChild(b[0])
-                    }, abort: function () {
-                        c && c()
-                    }
-                }
-            }
-        });
-        var Gb = [], Hb = /(=)\?(?=&|$)|\?\?/;
-        _.ajaxSetup({
-            jsonp: "callback", jsonpCallback: function () {
-                var a = Gb.pop() || _.expando + "_" + jb++;
-                return this[a] = !0, a
-            }
-        }), _.ajaxPrefilter("json jsonp", function (b, c, d) {
-            var e, f, g, h = b.jsonp !== !1 && (Hb.test(b.url) ? "url" : "string" == typeof b.data && !(b.contentType || "").indexOf("application/x-www-form-urlencoded") && Hb.test(b.data) && "data");
-            return h || "jsonp" === b.dataTypes[0] ? (e = b.jsonpCallback = _.isFunction(b.jsonpCallback) ? b.jsonpCallback() : b.jsonpCallback, h ? b[h] = b[h].replace(Hb, "$1" + e) : b.jsonp !== !1 && (b.url += (kb.test(b.url) ? "&" : "?") + b.jsonp + "=" + e), b.converters["script json"] = function () {
-                return g || _.error(e + " was not called"), g[0]
-            }, b.dataTypes[0] = "json", f = a[e], a[e] = function () {
-                g = arguments
-            }, d.always(function () {
-                a[e] = f, b[e] && (b.jsonpCallback = c.jsonpCallback, Gb.push(e)), g && _.isFunction(f) && f(g[0]), g = f = void 0
-            }), "script") : void 0
-        }), _.parseHTML = function (a, b, c) {
-            if (!a || "string" != typeof a)return null;
-            "boolean" == typeof b && (c = b, b = !1), b = b || Z;
-            var d = ga.exec(a), e = !c && [];
-            return d ? [b.createElement(d[1])] : (d = _.buildFragment([a], b, e), e && e.length && _(e).remove(), _.merge([], d.childNodes))
-        };
-        var Ib = _.fn.load;
-        _.fn.load = function (a, b, c) {
-            if ("string" != typeof a && Ib)return Ib.apply(this, arguments);
-            var d, e, f, g = this, h = a.indexOf(" ");
-            return h >= 0 && (d = _.trim(a.slice(h)), a = a.slice(0, h)), _.isFunction(b) ? (c = b, b = void 0) : b && "object" == typeof b && (e = "POST"), g.length > 0 && _.ajax({
-                url: a,
-                type: e,
-                dataType: "html",
-                data: b
-            }).done(function (a) {
-                f = arguments, g.html(d ? _("<div>").append(_.parseHTML(a)).find(d) : a)
-            }).complete(c && function (a, b) {
-                    g.each(c, f || [a.responseText, b, a])
-                }), this
-        }, _.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function (a, b) {
-            _.fn[b] = function (a) {
-                return this.on(b, a)
-            }
-        }), _.expr.filters.animated = function (a) {
-            return _.grep(_.timers, function (b) {
-                return a === b.elem
-            }).length
-        };
-        var Jb = a.document.documentElement;
-        _.offset = {
-            setOffset: function (a, b, c) {
-                var d, e, f, g, h, i, j, k = _.css(a, "position"), l = _(a), m = {};
-                "static" === k && (a.style.position = "relative"), h = l.offset(), f = _.css(a, "top"), i = _.css(a, "left"), j = ("absolute" === k || "fixed" === k) && (f + i).indexOf("auto") > -1, j ? (d = l.position(), g = d.top, e = d.left) : (g = parseFloat(f) || 0, e = parseFloat(i) || 0), _.isFunction(b) && (b = b.call(a, c, h)), null != b.top && (m.top = b.top - h.top + g), null != b.left && (m.left = b.left - h.left + e), "using" in b ? b.using.call(a, m) : l.css(m)
-            }
-        }, _.fn.extend({
-            offset: function (a) {
-                if (arguments.length)return void 0 === a ? this : this.each(function (b) {
-                    _.offset.setOffset(this, a, b)
-                });
-                var b, c, d = this[0], e = {top: 0, left: 0}, f = d && d.ownerDocument;
-                if (f)return b = f.documentElement, _.contains(b, d) ? (typeof d.getBoundingClientRect !== za && (e = d.getBoundingClientRect()), c = P(f), {
-                    top: e.top + c.pageYOffset - b.clientTop,
-                    left: e.left + c.pageXOffset - b.clientLeft
-                }) : e
-            }, position: function () {
-                if (this[0]) {
-                    var a, b, c = this[0], d = {top: 0, left: 0};
-                    return "fixed" === _.css(c, "position") ? b = c.getBoundingClientRect() : (a = this.offsetParent(), b = this.offset(), _.nodeName(a[0], "html") || (d = a.offset()), d.top += _.css(a[0], "borderTopWidth", !0), d.left += _.css(a[0], "borderLeftWidth", !0)), {
-                        top: b.top - d.top - _.css(c, "marginTop", !0),
-                        left: b.left - d.left - _.css(c, "marginLeft", !0)
-                    }
-                }
-            }, offsetParent: function () {
-                return this.map(function () {
-                    for (var a = this.offsetParent || Jb; a && !_.nodeName(a, "html") && "static" === _.css(a, "position");)a = a.offsetParent;
-                    return a || Jb
-                })
-            }
-        }), _.each({scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function (b, c) {
-            var d = "pageYOffset" === c;
-            _.fn[b] = function (e) {
-                return qa(this, function (b, e, f) {
-                    var g = P(b);
-                    return void 0 === f ? g ? g[c] : b[e] : void(g ? g.scrollTo(d ? a.pageXOffset : f, d ? f : a.pageYOffset) : b[e] = f)
-                }, b, e, arguments.length, null)
-            }
-        }), _.each(["top", "left"], function (a, b) {
-            _.cssHooks[b] = w(Y.pixelPosition, function (a, c) {
-                return c ? (c = v(a, b), Qa.test(c) ? _(a).position()[b] + "px" : c) : void 0
-            })
-        }), _.each({Height: "height", Width: "width"}, function (a, b) {
-            _.each({padding: "inner" + a, content: b, "": "outer" + a}, function (c, d) {
-                _.fn[d] = function (d, e) {
-                    var f = arguments.length && (c || "boolean" != typeof d), g = c || (d === !0 || e === !0 ? "margin" : "border");
-                    return qa(this, function (b, c, d) {
-                        var e;
-                        return _.isWindow(b) ? b.document.documentElement["client" + a] : 9 === b.nodeType ? (e = b.documentElement, Math.max(b.body["scroll" + a], e["scroll" + a], b.body["offset" + a], e["offset" + a], e["client" + a])) : void 0 === d ? _.css(b, c, g) : _.style(b, c, d, g)
-                    }, b, f ? d : void 0, f, null)
-                }
-            })
-        }), _.fn.size = function () {
-            return this.length
-        }, _.fn.andSelf = _.fn.addBack, "function" == typeof define && define.amd && define("jquery", [], function () {
-            return _
-        });
-        var Kb = a.jQuery, Lb = a.$;
-        return _.noConflict = function (b) {
-            return a.$ === _ && (a.$ = Lb), b && a.jQuery === _ && (a.jQuery = Kb), _
-        }, typeof b === za && (a.jQuery = a.$ = _), _
-    }), "undefined" == typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");
-+function (a) {
-    "use strict";
-    var b = a.fn.jquery.split(" ")[0].split(".");
-    if (b[0] < 2 && b[1] < 9 || 1 == b[0] && 9 == b[1] && b[2] < 1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")
-}(jQuery), +function (a) {
-    "use strict";
-    function b() {
-        var a = document.createElement("bootstrap"), b = {
-            WebkitTransition: "webkitTransitionEnd",
-            MozTransition: "transitionend",
-            OTransition: "oTransitionEnd otransitionend",
-            transition: "transitionend"
-        };
-        for (var c in b)if (void 0 !== a.style[c])return {end: b[c]};
-        return !1
-    }
-
-    a.fn.emulateTransitionEnd = function (b) {
-        var c = !1, d = this;
-        a(this).one("bsTransitionEnd", function () {
-            c = !0
-        });
-        var e = function () {
-            c || a(d).trigger(a.support.transition.end)
-        };
-        return setTimeout(e, b), this
-    }, a(function () {
-        a.support.transition = b(), a.support.transition && (a.event.special.bsTransitionEnd = {
-            bindType: a.support.transition.end,
-            delegateType: a.support.transition.end,
-            handle: function (b) {
-                return a(b.target).is(this) ? b.handleObj.handler.apply(this, arguments) : void 0
-            }
-        })
-    })
-}(jQuery), +function (a) {
-    "use strict";
-    function b(b) {
-        return this.each(function () {
-            var c = a(this), e = c.data("bs.alert");
-            e || c.data("bs.alert", e = new d(this)), "string" == typeof b && e[b].call(c)
-        })
-    }
-
-    var c = '[data-dismiss="alert"]', d = function (b) {
-        a(b).on("click", c, this.close)
-    };
-    d.VERSION = "3.3.5", d.TRANSITION_DURATION = 150, d.prototype.close = function (b) {
-        function c() {
-            g.detach().trigger("closed.bs.alert").remove()
-        }
-
-        var e = a(this), f = e.attr("data-target");
-        f || (f = e.attr("href"), f = f && f.replace(/.*(?=#[^\s]*$)/, ""));
-        var g = a(f);
-        b && b.preventDefault(), g.length || (g = e.closest(".alert")), g.trigger(b = a.Event("close.bs.alert")), b.isDefaultPrevented() || (g.removeClass("in"), a.support.transition && g.hasClass("fade") ? g.one("bsTransitionEnd", c).emulateTransitionEnd(d.TRANSITION_DURATION) : c())
-    };
-    var e = a.fn.alert;
-    a.fn.alert = b, a.fn.alert.Constructor = d, a.fn.alert.noConflict = function () {
-        return a.fn.alert = e, this
-    }, a(document).on("click.bs.alert.data-api", c, d.prototype.close)
-}(jQuery), +function (a) {
-    "use strict";
-    function b(b) {
-        return this.each(function () {
-            var d = a(this), e = d.data("bs.button"), f = "object" == typeof b && b;
-            e || d.data("bs.button", e = new c(this, f)), "toggle" == b ? e.toggle() : b && e.setState(b)
-        })
-    }
-
-    var c = function (b, d) {
-        this.$element = a(b), this.options = a.extend({}, c.DEFAULTS, d), this.isLoading = !1
-    };
-    c.VERSION = "3.3.5", c.DEFAULTS = {loadingText: "loading..."}, c.prototype.setState = function (b) {
-        var c = "disabled", d = this.$element, e = d.is("input") ? "val" : "html", f = d.data();
-        b += "Text", null == f.resetText && d.data("resetText", d[e]()), setTimeout(a.proxy(function () {
-            d[e](null == f[b] ? this.options[b] : f[b]), "loadingText" == b ? (this.isLoading = !0, d.addClass(c).attr(c, c)) : this.isLoading && (this.isLoading = !1, d.removeClass(c).removeAttr(c))
-        }, this), 0)
-    }, c.prototype.toggle = function () {
-        var a = !0, b = this.$element.closest('[data-toggle="buttons"]');
-        if (b.length) {
-            var c = this.$element.find("input");
-            "radio" == c.prop("type") ? (c.prop("checked") && (a = !1), b.find(".active").removeClass("active"), this.$element.addClass("active")) : "checkbox" == c.prop("type") && (c.prop("checked") !== this.$element.hasClass("active") && (a = !1), this.$element.toggleClass("active")), c.prop("checked", this.$element.hasClass("active")), a && c.trigger("change")
-        } else this.$element.attr("aria-pressed", !this.$element.hasClass("active")), this.$element.toggleClass("active")
-    };
-    var d = a.fn.button;
-    a.fn.button = b, a.fn.button.Constructor = c, a.fn.button.noConflict = function () {
-        return a.fn.button = d, this
-    }, a(document).on("click.bs.button.data-api", '[data-toggle^="button"]', function (c) {
-        var d = a(c.target);
-        d.hasClass("btn") || (d = d.closest(".btn")), b.call(d, "toggle"), a(c.target).is('input[type="radio"]') || a(c.target).is('input[type="checkbox"]') || c.preventDefault()
-    }).on("focus.bs.button.data-api blur.bs.button.data-api", '[data-toggle^="button"]', function (b) {
-        a(b.target).closest(".btn").toggleClass("focus", /^focus(in)?$/.test(b.type))
-    })
-}(jQuery), +function (a) {
-    "use strict";
-    function b(b) {
-        return this.each(function () {
-            var d = a(this), e = d.data("bs.carousel"), f = a.extend({}, c.DEFAULTS, d.data(), "object" == typeof b && b), g = "string" == typeof b ? b : f.slide;
-            e || d.data("bs.carousel", e = new c(this, f)), "number" == typeof b ? e.to(b) : g ? e[g]() : f.interval && e.pause().cycle()
-        })
-    }
-
-    var c = function (b, c) {
-        this.$element = a(b), this.$indicators = this.$element.find(".carousel-indicators"), this.options = c, this.paused = null, this.sliding = null, this.interval = null, this.$active = null, this.$items = null, this.options.keyboard && this.$element.on("keydown.bs.carousel", a.proxy(this.keydown, this)), "hover" == this.options.pause && !("ontouchstart" in document.documentElement) && this.$element.on("mouseenter.bs.carousel", a.proxy(this.pause, this)).on("mouseleave.bs.carousel", a.proxy(this.cycle, this))
-    };
-    c.VERSION = "3.3.5", c.TRANSITION_DURATION = 600, c.DEFAULTS = {
-        interval: 5e3,
-        pause: "hover",
-        wrap: !0,
-        keyboard: !0
-    }, c.prototype.keydown = function (a) {
-        if (!/input|textarea/i.test(a.target.tagName)) {
-            switch (a.which) {
-                case 37:
-                    this.prev();
-                    break;
-                case 39:
-                    this.next();
-                    break;
-                default:
-                    return
-            }
-            a.preventDefault()
-        }
-    }, c.prototype.cycle = function (b) {
-        return b || (this.paused = !1), this.interval && clearInterval(this.interval), this.options.interval && !this.paused && (this.interval = setInterval(a.proxy(this.next, this), this.options.interval)), this
-    }, c.prototype.getItemIndex = function (a) {
-        return this.$items = a.parent().children(".item"), this.$items.index(a || this.$active)
-    }, c.prototype.getItemForDirection = function (a, b) {
-        var c = this.getItemIndex(b), d = "prev" == a && 0 === c || "next" == a && c == this.$items.length - 1;
-        if (d && !this.options.wrap)return b;
-        var e = "prev" == a ? -1 : 1, f = (c + e) % this.$items.length;
-        return this.$items.eq(f)
-    }, c.prototype.to = function (a) {
-        var b = this, c = this.getItemIndex(this.$active = this.$element.find(".item.active"));
-        return a > this.$items.length - 1 || 0 > a ? void 0 : this.sliding ? this.$element.one("slid.bs.carousel", function () {
-            b.to(a)
-        }) : c == a ? this.pause().cycle() : this.slide(a > c ? "next" : "prev", this.$items.eq(a))
-    }, c.prototype.pause = function (b) {
-        return b || (this.paused = !0), this.$element.find(".next, .prev").length && a.support.transition && (this.$element.trigger(a.support.transition.end), this.cycle(!0)), this.interval = clearInterval(this.interval), this
-    }, c.prototype.next = function () {
-        return this.sliding ? void 0 : this.slide("next")
-    }, c.prototype.prev = function () {
-        return this.sliding ? void 0 : this.slide("prev")
-    }, c.prototype.slide = function (b, d) {
-        var e = this.$element.find(".item.active"), f = d || this.getItemForDirection(b, e), g = this.interval, h = "next" == b ? "left" : "right", i = this;
-        if (f.hasClass("active"))return this.sliding = !1;
-        var j = f[0], k = a.Event("slide.bs.carousel", {relatedTarget: j, direction: h});
-        if (this.$element.trigger(k), !k.isDefaultPrevented()) {
-            if (this.sliding = !0, g && this.pause(), this.$indicators.length) {
-                this.$indicators.find(".active").removeClass("active");
-                var l = a(this.$indicators.children()[this.getItemIndex(f)]);
-                l && l.addClass("active")
-            }
-            var m = a.Event("slid.bs.carousel", {relatedTarget: j, direction: h});
-            return a.support.transition && this.$element.hasClass("slide") ? (f.addClass(b), f[0].offsetWidth, e.addClass(h), f.addClass(h), e.one("bsTransitionEnd", function () {
-                f.removeClass([b, h].join(" ")).addClass("active"), e.removeClass(["active", h].join(" ")), i.sliding = !1, setTimeout(function () {
-                    i.$element.trigger(m)
-                }, 0)
-            }).emulateTransitionEnd(c.TRANSITION_DURATION)) : (e.removeClass("active"), f.addClass("active"), this.sliding = !1, this.$element.trigger(m)), g && this.cycle(), this
-        }
-    };
-    var d = a.fn.carousel;
-    a.fn.carousel = b, a.fn.carousel.Constructor = c, a.fn.carousel.noConflict = function () {
-        return a.fn.carousel = d, this
-    };
-    var e = function (c) {
-        var d, e = a(this), f = a(e.attr("data-target") || (d = e.attr("href")) && d.replace(/.*(?=#[^\s]+$)/, ""));
-        if (f.hasClass("carousel")) {
-            var g = a.extend({}, f.data(), e.data()), h = e.attr("data-slide-to");
-            h && (g.interval = !1), b.call(f, g), h && f.data("bs.carousel").to(h), c.preventDefault()
-        }
-    };
-    a(document).on("click.bs.carousel.data-api", "[data-slide]", e).on("click.bs.carousel.data-api", "[data-slide-to]", e), a(window).on("load", function () {
-        a('[data-ride="carousel"]').each(function () {
-            var c = a(this);
-            b.call(c, c.data())
-        })
-    })
-}(jQuery), +function (a) {
-    "use strict";
-    function b(b) {
-        var c, d = b.attr("data-target") || (c = b.attr("href")) && c.replace(/.*(?=#[^\s]+$)/, "");
-        return a(d)
-    }
-
-    function c(b) {
-        return this.each(function () {
-            var c = a(this), e = c.data("bs.collapse"), f = a.extend({}, d.DEFAULTS, c.data(), "object" == typeof b && b);
-            !e && f.toggle && /show|hide/.test(b) && (f.toggle = !1), e || c.data("bs.collapse", e = new d(this, f)), "string" == typeof b && e[b]()
-        })
-    }
-
-    var d = function (b, c) {
-        this.$element = a(b), this.options = a.extend({}, d.DEFAULTS, c), this.$trigger = a('[data-toggle="collapse"][href="#' + b.id + '"],[data-toggle="collapse"][data-target="#' + b.id + '"]'), this.transitioning = null, this.options.parent ? this.$parent = this.getParent() : this.addAriaAndCollapsedClass(this.$element, this.$trigger), this.options.toggle && this.toggle()
-    };
-    d.VERSION = "3.3.5", d.TRANSITION_DURATION = 350, d.DEFAULTS = {toggle: !0}, d.prototype.dimension = function () {
-        var a = this.$element.hasClass("width");
-        return a ? "width" : "height"
-    }, d.prototype.show = function () {
-        if (!this.transitioning && !this.$element.hasClass("in")) {
-            var b, e = this.$parent && this.$parent.children(".panel").children(".in, .collapsing");
-            if (!(e && e.length && (b = e.data("bs.collapse"), b && b.transitioning))) {
-                var f = a.Event("show.bs.collapse");
-                if (this.$element.trigger(f), !f.isDefaultPrevented()) {
-                    e && e.length && (c.call(e, "hide"), b || e.data("bs.collapse", null));
-                    var g = this.dimension();
-                    this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded", !0), this.$trigger.removeClass("collapsed").attr("aria-expanded", !0), this.transitioning = 1;
-                    var h = function () {
-                        this.$element.removeClass("collapsing").addClass("collapse in")[g](""), this.transitioning = 0, this.$element.trigger("shown.bs.collapse")
-                    };
-                    if (!a.support.transition)return h.call(this);
-                    var i = a.camelCase(["scroll", g].join("-"));
-                    this.$element.one("bsTransitionEnd", a.proxy(h, this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])
-                }
-            }
-        }
-    }, d.prototype.hide = function () {
-        if (!this.transitioning && this.$element.hasClass("in")) {
-            var b = a.Event("hide.bs.collapse");
-            if (this.$element.trigger(b), !b.isDefaultPrevented()) {
-                var c = this.dimension();
-                this.$element[c](this.$element[c]())[0].offsetHeight, this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded", !1), this.$trigger.addClass("collapsed").attr("aria-expanded", !1), this.transitioning = 1;
-                var e = function () {
-                    this.transitioning = 0, this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")
-                };
-                return a.support.transition ? void this.$element[c](0).one("bsTransitionEnd", a.proxy(e, this)).emulateTransitionEnd(d.TRANSITION_DURATION) : e.call(this)
-            }
-        }
-    }, d.prototype.toggle = function () {
-        this[this.$element.hasClass("in") ? "hide" : "show"]()
-    }, d.prototype.getParent = function () {
-        return a(this.options.parent).find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]').each(a.proxy(function (c, d) {
-            var e = a(d);
-            this.addAriaAndCollapsedClass(b(e), e)
-        }, this)).end()
-    }, d.prototype.addAriaAndCollapsedClass = function (a, b) {
-        var c = a.hasClass("in");
-        a.attr("aria-expanded", c), b.toggleClass("collapsed", !c).attr("aria-expanded", c)
-    };
-    var e = a.fn.collapse;
-    a.fn.collapse = c, a.fn.collapse.Constructor = d, a.fn.collapse.noConflict = function () {
-        return a.fn.collapse = e, this
-    }, a(document).on("click.bs.collapse.data-api", '[data-toggle="collapse"]', function (d) {
-        var e = a(this);
-        e.attr("data-target") || d.preventDefault();
-        var f = b(e), g = f.data("bs.collapse"), h = g ? "toggle" : e.data();
-        c.call(f, h)
-    })
-}(jQuery), +function (a) {
-    "use strict";
-    function b(b) {
-        var c = b.attr("data-target");
-        c || (c = b.attr("href"), c = c && /#[A-Za-z]/.test(c) && c.replace(/.*(?=#[^\s]*$)/, ""));
-        var d = c && a(c);
-        return d && d.length ? d : b.parent()
-    }
-
-    function c(c) {
-        c && 3 === c.which || (a(e).remove(), a(f).each(function () {
-            var d = a(this), e = b(d), f = {relatedTarget: this};
-            e.hasClass("open") && (c && "click" == c.type && /input|textarea/i.test(c.target.tagName) && a.contains(e[0], c.target) || (e.trigger(c = a.Event("hide.bs.dropdown", f)), c.isDefaultPrevented() || (d.attr("aria-expanded", "false"), e.removeClass("open").trigger("hidden.bs.dropdown", f))));
-        }))
-    }
-
-    function d(b) {
-        return this.each(function () {
-            var c = a(this), d = c.data("bs.dropdown");
-            d || c.data("bs.dropdown", d = new g(this)), "string" == typeof b && d[b].call(c)
-        })
-    }
-
-    var e = ".dropdown-backdrop", f = '[data-toggle="dropdown"]', g = function (b) {
-        a(b).on("click.bs.dropdown", this.toggle)
-    };
-    g.VERSION = "3.3.5", g.prototype.toggle = function (d) {
-        var e = a(this);
-        if (!e.is(".disabled, :disabled")) {
-            var f = b(e), g = f.hasClass("open");
-            if (c(), !g) {
-                "ontouchstart" in document.documentElement && !f.closest(".navbar-nav").length && a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click", c);
-                var h = {relatedTarget: this};
-                if (f.trigger(d = a.Event("show.bs.dropdown", h)), d.isDefaultPrevented())return;
-                e.trigger("focus").attr("aria-expanded", "true"), f.toggleClass("open").trigger("shown.bs.dropdown", h)
-            }
-            return !1
-        }
-    }, g.prototype.keydown = function (c) {
-        if (/(38|40|27|32)/.test(c.which) && !/input|textarea/i.test(c.target.tagName)) {
-            var d = a(this);
-            if (c.preventDefault(), c.stopPropagation(), !d.is(".disabled, :disabled")) {
-                var e = b(d), g = e.hasClass("open");
-                if (!g && 27 != c.which || g && 27 == c.which)return 27 == c.which && e.find(f).trigger("focus"), d.trigger("click");
-                var h = " li:not(.disabled):visible a", i = e.find(".dropdown-menu" + h);
-                if (i.length) {
-                    var j = i.index(c.target);
-                    38 == c.which && j > 0 && j--, 40 == c.which && j < i.length - 1 && j++, ~j || (j = 0), i.eq(j).trigger("focus")
-                }
-            }
-        }
-    };
-    var h = a.fn.dropdown;
-    a.fn.dropdown = d, a.fn.dropdown.Constructor = g, a.fn.dropdown.noConflict = function () {
-        return a.fn.dropdown = h, this
-    }, a(document).on("click.bs.dropdown.data-api", c).on("click.bs.dropdown.data-api", ".dropdown form", function (a) {
-        a.stopPropagation()
-    }).on("click.bs.dropdown.data-api", f, g.prototype.toggle).on("keydown.bs.dropdown.data-api", f, g.prototype.keydown).on("keydown.bs.dropdown.data-api", ".dropdown-menu", g.prototype.keydown)
-}(jQuery), +function (a) {
-    "use strict";
-    function b(b, d) {
-        return this.each(function () {
-            var e = a(this), f = e.data("bs.modal"), g = a.extend({}, c.DEFAULTS, e.data(), "object" == typeof b && b);
-            f || e.data("bs.modal", f = new c(this, g)), "string" == typeof b ? f[b](d) : g.show && f.show(d)
-        })
-    }
-
-    var c = function (b, c) {
-        this.options = c, this.$body = a(document.body), this.$element = a(b), this.$dialog = this.$element.find(".modal-dialog"), this.$backdrop = null, this.isShown = null, this.originalBodyPad = null, this.scrollbarWidth = 0, this.ignoreBackdropClick = !1, this.options.remote && this.$element.find(".modal-content").load(this.options.remote, a.proxy(function () {
-            this.$element.trigger("loaded.bs.modal")
-        }, this))
-    };
-    c.VERSION = "3.3.5", c.TRANSITION_DURATION = 300, c.BACKDROP_TRANSITION_DURATION = 150, c.DEFAULTS = {
-        backdrop: !0,
-        keyboard: !0,
-        show: !0
-    }, c.prototype.toggle = function (a) {
-        return this.isShown ? this.hide() : this.show(a)
-    }, c.prototype.show = function (b) {
-        var d = this, e = a.Event("show.bs.modal", {relatedTarget: b});
-        this.$element.trigger(e), this.isShown || e.isDefaultPrevented() || (this.isShown = !0, this.checkScrollbar(), this.setScrollbar(), this.$body.addClass("modal-open"), this.escape(), this.resize(), this.$element.on("click.dismiss.bs.modal", '[data-dismiss="modal"]', a.proxy(this.hide, this)), this.$dialog.on("mousedown.dismiss.bs.modal", function () {
-            d.$element.one("mouseup.dismiss.bs.modal", function (b) {
-                a(b.target).is(d.$element) && (d.ignoreBackdropClick = !0)
-            })
-        }), this.backdrop(function () {
-            var e = a.support.transition && d.$element.hasClass("fade");
-            d.$element.parent().length || d.$element.appendTo(d.$body), d.$element.show().scrollTop(0), d.adjustDialog(), e && d.$element[0].offsetWidth, d.$element.addClass("in"), d.enforceFocus();
-            var f = a.Event("shown.bs.modal", {relatedTarget: b});
-            e ? d.$dialog.one("bsTransitionEnd", function () {
-                d.$element.trigger("focus").trigger(f)
-            }).emulateTransitionEnd(c.TRANSITION_DURATION) : d.$element.trigger("focus").trigger(f)
-        }))
-    }, c.prototype.hide = function (b) {
-        b && b.preventDefault(), b = a.Event("hide.bs.modal"), this.$element.trigger(b), this.isShown && !b.isDefaultPrevented() && (this.isShown = !1, this.escape(), this.resize(), a(document).off("focusin.bs.modal"), this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"), this.$dialog.off("mousedown.dismiss.bs.modal"), a.support.transition && this.$element.hasClass("fade") ? this.$element.one("bsTransitionEnd", a.proxy(this.hideModal, this)).emulateTransitionEnd(c.TRANSITION_DURATION) : this.hideModal())
-    }, c.prototype.enforceFocus = function () {
-        a(document).off("focusin.bs.modal").on("focusin.bs.modal", a.proxy(function (a) {
-            this.$element[0] === a.target || this.$element.has(a.target).length || this.$element.trigger("focus")
-        }, this))
-    }, c.prototype.escape = function () {
-        this.isShown && this.options.keyboard ? this.$element.on("keydown.dismiss.bs.modal", a.proxy(function (a) {
-            27 == a.which && this.hide()
-        }, this)) : this.isShown || this.$element.off("keydown.dismiss.bs.modal")
-    }, c.prototype.resize = function () {
-        this.isShown ? a(window).on("resize.bs.modal", a.proxy(this.handleUpdate, this)) : a(window).off("resize.bs.modal")
-    }, c.prototype.hideModal = function () {
-        var a = this;
-        this.$element.hide(), this.backdrop(function () {
-            a.$body.removeClass("modal-open"), a.resetAdjustments(), a.resetScrollbar(), a.$element.trigger("hidden.bs.modal")
-        })
-    }, c.prototype.removeBackdrop = function () {
-        this.$backdrop && this.$backdrop.remove(), this.$backdrop = null
-    }, c.prototype.backdrop = function (b) {
-        var d = this, e = this.$element.hasClass("fade") ? "fade" : "";
-        if (this.isShown && this.options.backdrop) {
-            var f = a.support.transition && e;
-            if (this.$backdrop = a(document.createElement("div")).addClass("modal-backdrop " + e).appendTo(this.$body), this.$element.on("click.dismiss.bs.modal", a.proxy(function (a) {
-                    return this.ignoreBackdropClick ? void(this.ignoreBackdropClick = !1) : void(a.target === a.currentTarget && ("static" == this.options.backdrop ? this.$element[0].focus() : this.hide()))
-                }, this)), f && this.$backdrop[0].offsetWidth, this.$backdrop.addClass("in"), !b)return;
-            f ? this.$backdrop.one("bsTransitionEnd", b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION) : b()
-        } else if (!this.isShown && this.$backdrop) {
-            this.$backdrop.removeClass("in");
-            var g = function () {
-                d.removeBackdrop(), b && b()
-            };
-            a.support.transition && this.$element.hasClass("fade") ? this.$backdrop.one("bsTransitionEnd", g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION) : g()
-        } else b && b()
-    }, c.prototype.handleUpdate = function () {
-        this.adjustDialog()
-    }, c.prototype.adjustDialog = function () {
-        var a = this.$element[0].scrollHeight > document.documentElement.clientHeight;
-        this.$element.css({
-            paddingLeft: !this.bodyIsOverflowing && a ? this.scrollbarWidth : "",
-            paddingRight: this.bodyIsOverflowing && !a ? this.scrollbarWidth : ""
-        })
-    }, c.prototype.resetAdjustments = function () {
-        this.$element.css({paddingLeft: "", paddingRight: ""})
-    }, c.prototype.checkScrollbar = function () {
-        var a = window.innerWidth;
-        if (!a) {
-            var b = document.documentElement.getBoundingClientRect();
-            a = b.right - Math.abs(b.left)
-        }
-        this.bodyIsOverflowing = document.body.clientWidth < a, this.scrollbarWidth = this.measureScrollbar()
-    }, c.prototype.setScrollbar = function () {
-        var a = parseInt(this.$body.css("padding-right") || 0, 10);
-        this.originalBodyPad = document.body.style.paddingRight || "", this.bodyIsOverflowing && this.$body.css("padding-right", a + this.scrollbarWidth)
-    }, c.prototype.resetScrollbar = function () {
-        this.$body.css("padding-right", this.originalBodyPad)
-    }, c.prototype.measureScrollbar = function () {
-        var a = document.createElement("div");
-        a.className = "modal-scrollbar-measure", this.$body.append(a);
-        var b = a.offsetWidth - a.clientWidth;
-        return this.$body[0].removeChild(a), b
-    };
-    var d = a.fn.modal;
-    a.fn.modal = b, a.fn.modal.Constructor = c, a.fn.modal.noConflict = function () {
-        return a.fn.modal = d, this
-    }, a(document).on("click.bs.modal.data-api", '[data-toggle="modal"]', function (c) {
-        var d = a(this), e = d.attr("href"), f = a(d.attr("data-target") || e && e.replace(/.*(?=#[^\s]+$)/, "")), g = f.data("bs.modal") ? "toggle" : a.extend({remote: !/#/.test(e) && e}, f.data(), d.data());
-        d.is("a") && c.preventDefault(), f.one("show.bs.modal", function (a) {
-            a.isDefaultPrevented() || f.one("hidden.bs.modal", function () {
-                d.is(":visible") && d.trigger("focus")
-            })
-        }), b.call(f, g, this)
-    })
-}(jQuery), +function (a) {
-    "use strict";
-    function b(b) {
-        return this.each(function () {
-            var d = a(this), e = d.data("bs.tooltip"), f = "object" == typeof b && b;
-            (e || !/destroy|hide/.test(b)) && (e || d.data("bs.tooltip", e = new c(this, f)), "string" == typeof b && e[b]())
-        })
-    }
-
-    var c = function (a, b) {
-        this.type = null, this.options = null, this.enabled = null, this.timeout = null, this.hoverState = null, this.$element = null, this.inState = null, this.init("tooltip", a, b)
-    };
-    c.VERSION = "3.3.5", c.TRANSITION_DURATION = 150, c.DEFAULTS = {
-        animation: !0,
-        placement: "top",
-        selector: !1,
-        template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
-        trigger: "hover focus",
-        title: "",
-        delay: 0,
-        html: !1,
-        container: !1,
-        viewport: {selector: "body", padding: 0}
-    }, c.prototype.init = function (b, c, d) {
-        if (this.enabled = !0, this.type = b, this.$element = a(c), this.options = this.getOptions(d), this.$viewport = this.options.viewport && a(a.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : this.options.viewport.selector || this.options.viewport), this.inState = {
-                click: !1,
-                hover: !1,
-                focus: !1
-            }, this.$element[0] instanceof document.constructor && !this.options.selector)throw new Error("`selector` option must be specified when initializing " + this.type + " on the window.document object!");
-        for (var e = this.options.trigger.split(" "), f = e.length; f--;) {
-            var g = e[f];
-            if ("click" == g)this.$element.on("click." + this.type, this.options.selector, a.proxy(this.toggle, this)); else if ("manual" != g) {
-                var h = "hover" == g ? "mouseenter" : "focusin", i = "hover" == g ? "mouseleave" : "focusout";
-                this.$element.on(h + "." + this.type, this.options.selector, a.proxy(this.enter, this)), this.$element.on(i + "." + this.type, this.options.selector, a.proxy(this.leave, this))
-            }
-        }
-        this.options.selector ? this._options = a.extend({}, this.options, {
-            trigger: "manual",
-            selector: ""
-        }) : this.fixTitle()
-    }, c.prototype.getDefaults = function () {
-        return c.DEFAULTS
-    }, c.prototype.getOptions = function (b) {
-        return b = a.extend({}, this.getDefaults(), this.$element.data(), b), b.delay && "number" == typeof b.delay && (b.delay = {
-            show: b.delay,
-            hide: b.delay
-        }), b
-    }, c.prototype.getDelegateOptions = function () {
-        var b = {}, c = this.getDefaults();
-        return this._options && a.each(this._options, function (a, d) {
-            c[a] != d && (b[a] = d)
-        }), b
-    }, c.prototype.enter = function (b) {
-        var c = b instanceof this.constructor ? b : a(b.currentTarget).data("bs." + this.type);
-        return c || (c = new this.constructor(b.currentTarget, this.getDelegateOptions()), a(b.currentTarget).data("bs." + this.type, c)), b instanceof a.Event && (c.inState["focusin" == b.type ? "focus" : "hover"] = !0), c.tip().hasClass("in") || "in" == c.hoverState ? void(c.hoverState = "in") : (clearTimeout(c.timeout), c.hoverState = "in", c.options.delay && c.options.delay.show ? void(c.timeout = setTimeout(function () {
-            "in" == c.hoverState && c.show()
-        }, c.options.delay.show)) : c.show())
-    }, c.prototype.isInStateTrue = function () {
-        for (var a in this.inState)if (this.inState[a])return !0;
-        return !1
-    }, c.prototype.leave = function (b) {
-        var c = b instanceof this.constructor ? b : a(b.currentTarget).data("bs." + this.type);
-        return c || (c = new this.constructor(b.currentTarget, this.getDelegateOptions()), a(b.currentTarget).data("bs." + this.type, c)), b instanceof a.Event && (c.inState["focusout" == b.type ? "focus" : "hover"] = !1), c.isInStateTrue() ? void 0 : (clearTimeout(c.timeout), c.hoverState = "out", c.options.delay && c.options.delay.hide ? void(c.timeout = setTimeout(function () {
-            "out" == c.hoverState && c.hide()
-        }, c.options.delay.hide)) : c.hide())
-    }, c.prototype.show = function () {
-        var b = a.Event("show.bs." + this.type);
-        if (this.hasContent() && this.enabled) {
-            this.$element.trigger(b);
-            var d = a.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]);
-            if (b.isDefaultPrevented() || !d)return;
-            var e = this, f = this.tip(), g = this.getUID(this.type);
-            this.setContent(), f.attr("id", g), this.$element.attr("aria-describedby", g), this.options.animation && f.addClass("fade");
-            var h = "function" == typeof this.options.placement ? this.options.placement.call(this, f[0], this.$element[0]) : this.options.placement, i = /\s?auto?\s?/i, j = i.test(h);
-            j && (h = h.replace(i, "") || "top"), f.detach().css({
-                top: 0,
-                left: 0,
-                display: "block"
-            }).addClass(h).data("bs." + this.type, this), this.options.container ? f.appendTo(this.options.container) : f.insertAfter(this.$element), this.$element.trigger("inserted.bs." + this.type);
-            var k = this.getPosition(), l = f[0].offsetWidth, m = f[0].offsetHeight;
-            if (j) {
-                var n = h, o = this.getPosition(this.$viewport);
-                h = "bottom" == h && k.bottom + m > o.bottom ? "top" : "top" == h && k.top - m < o.top ? "bottom" : "right" == h && k.right + l > o.width ? "left" : "left" == h && k.left - l < o.left ? "right" : h, f.removeClass(n).addClass(h)
-            }
-            var p = this.getCalculatedOffset(h, k, l, m);
-            this.applyPlacement(p, h);
-            var q = function () {
-                var a = e.hoverState;
-                e.$element.trigger("shown.bs." + e.type), e.hoverState = null, "out" == a && e.leave(e)
-            };
-            a.support.transition && this.$tip.hasClass("fade") ? f.one("bsTransitionEnd", q).emulateTransitionEnd(c.TRANSITION_DURATION) : q()
-        }
-    }, c.prototype.applyPlacement = function (b, c) {
-        var d = this.tip(), e = d[0].offsetWidth, f = d[0].offsetHeight, g = parseInt(d.css("margin-top"), 10), h = parseInt(d.css("margin-left"), 10);
-        isNaN(g) && (g = 0), isNaN(h) && (h = 0), b.top += g, b.left += h, a.offset.setOffset(d[0], a.extend({
-            using: function (a) {
-                d.css({top: Math.round(a.top), left: Math.round(a.left)})
-            }
-        }, b), 0), d.addClass("in");
-        var i = d[0].offsetWidth, j = d[0].offsetHeight;
-        "top" == c && j != f && (b.top = b.top + f - j);
-        var k = this.getViewportAdjustedDelta(c, b, i, j);
-        k.left ? b.left += k.left : b.top += k.top;
-        var l = /top|bottom/.test(c), m = l ? 2 * k.left - e + i : 2 * k.top - f + j, n = l ? "offsetWidth" : "offsetHeight";
-        d.offset(b), this.replaceArrow(m, d[0][n], l)
-    }, c.prototype.replaceArrow = function (a, b, c) {
-        this.arrow().css(c ? "left" : "top", 50 * (1 - a / b) + "%").css(c ? "top" : "left", "")
-    }, c.prototype.setContent = function () {
-        var a = this.tip(), b = this.getTitle();
-        a.find(".tooltip-inner")[this.options.html ? "html" : "text"](b), a.removeClass("fade in top bottom left right")
-    }, c.prototype.hide = function (b) {
-        function d() {
-            "in" != e.hoverState && f.detach(), e.$element.removeAttr("aria-describedby").trigger("hidden.bs." + e.type), b && b()
-        }
-
-        var e = this, f = a(this.$tip), g = a.Event("hide.bs." + this.type);
-        return this.$element.trigger(g), g.isDefaultPrevented() ? void 0 : (f.removeClass("in"), a.support.transition && f.hasClass("fade") ? f.one("bsTransitionEnd", d).emulateTransitionEnd(c.TRANSITION_DURATION) : d(), this.hoverState = null, this)
-    }, c.prototype.fixTitle = function () {
-        var a = this.$element;
-        (a.attr("title") || "string" != typeof a.attr("data-original-title")) && a.attr("data-original-title", a.attr("title") || "").attr("title", "")
-    }, c.prototype.hasContent = function () {
-        return this.getTitle()
-    }, c.prototype.getPosition = function (b) {
-        b = b || this.$element;
-        var c = b[0], d = "BODY" == c.tagName, e = c.getBoundingClientRect();
-        null == e.width && (e = a.extend({}, e, {width: e.right - e.left, height: e.bottom - e.top}));
-        var f = d ? {
-            top: 0,
-            left: 0
-        } : b.offset(), g = {scroll: d ? document.documentElement.scrollTop || document.body.scrollTop : b.scrollTop()}, h = d ? {
-            width: a(window).width(),
-            height: a(window).height()
-        } : null;
-        return a.extend({}, e, g, h, f)
-    }, c.prototype.getCalculatedOffset = function (a, b, c, d) {
-        return "bottom" == a ? {
-            top: b.top + b.height,
-            left: b.left + b.width / 2 - c / 2
-        } : "top" == a ? {
-            top: b.top - d,
-            left: b.left + b.width / 2 - c / 2
-        } : "left" == a ? {top: b.top + b.height / 2 - d / 2, left: b.left - c} : {
-            top: b.top + b.height / 2 - d / 2,
-            left: b.left + b.width
-        }
-    }, c.prototype.getViewportAdjustedDelta = function (a, b, c, d) {
-        var e = {top: 0, left: 0};
-        if (!this.$viewport)return e;
-        var f = this.options.viewport && this.options.viewport.padding || 0, g = this.getPosition(this.$viewport);
-        if (/right|left/.test(a)) {
-            var h = b.top - f - g.scroll, i = b.top + f - g.scroll + d;
-            h < g.top ? e.top = g.top - h : i > g.top + g.height && (e.top = g.top + g.height - i)
-        } else {
-            var j = b.left - f, k = b.left + f + c;
-            j < g.left ? e.left = g.left - j : k > g.right && (e.left = g.left + g.width - k)
-        }
-        return e
-    }, c.prototype.getTitle = function () {
-        var a, b = this.$element, c = this.options;
-        return a = b.attr("data-original-title") || ("function" == typeof c.title ? c.title.call(b[0]) : c.title)
-    }, c.prototype.getUID = function (a) {
-        do a += ~~(1e6 * Math.random()); while (document.getElementById(a));
-        return a
-    }, c.prototype.tip = function () {
-        if (!this.$tip && (this.$tip = a(this.options.template), 1 != this.$tip.length))throw new Error(this.type + " `template` option must consist of exactly 1 top-level element!");
-        return this.$tip
-    }, c.prototype.arrow = function () {
-        return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")
-    }, c.prototype.enable = function () {
-        this.enabled = !0
-    }, c.prototype.disable = function () {
-        this.enabled = !1
-    }, c.prototype.toggleEnabled = function () {
-        this.enabled = !this.enabled
-    }, c.prototype.toggle = function (b) {
-        var c = this;
-        b && (c = a(b.currentTarget).data("bs." + this.type), c || (c = new this.constructor(b.currentTarget, this.getDelegateOptions()), a(b.currentTarget).data("bs." + this.type, c))), b ? (c.inState.click = !c.inState.click, c.isInStateTrue() ? c.enter(c) : c.leave(c)) : c.tip().hasClass("in") ? c.leave(c) : c.enter(c)
-    }, c.prototype.destroy = function () {
-        var a = this;
-        clearTimeout(this.timeout), this.hide(function () {
-            a.$element.off("." + a.type).removeData("bs." + a.type), a.$tip && a.$tip.detach(), a.$tip = null, a.$arrow = null, a.$viewport = null
-        })
-    };
-    var d = a.fn.tooltip;
-    a.fn.tooltip = b, a.fn.tooltip.Constructor = c, a.fn.tooltip.noConflict = function () {
-        return a.fn.tooltip = d, this
-    }
-}(jQuery), +function (a) {
-    "use strict";
-    function b(b) {
-        return this.each(function () {
-            var d = a(this), e = d.data("bs.popover"), f = "object" == typeof b && b;
-            (e || !/destroy|hide/.test(b)) && (e || d.data("bs.popover", e = new c(this, f)), "string" == typeof b && e[b]())
-        })
-    }
-
-    var c = function (a, b) {
-        this.init("popover", a, b)
-    };
-    if (!a.fn.tooltip)throw new Error("Popover requires tooltip.js");
-    c.VERSION = "3.3.5", c.DEFAULTS = a.extend({}, a.fn.tooltip.Constructor.DEFAULTS, {
-        placement: "right",
-        trigger: "click",
-        content: "",
-        template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
-    }), c.prototype = a.extend({}, a.fn.tooltip.Constructor.prototype), c.prototype.constructor = c, c.prototype.getDefaults = function () {
-        return c.DEFAULTS
-    }, c.prototype.setContent = function () {
-        var a = this.tip(), b = this.getTitle(), c = this.getContent();
-        a.find(".popover-title")[this.options.html ? "html" : "text"](b), a.find(".popover-content").children().detach().end()[this.options.html ? "string" == typeof c ? "html" : "append" : "text"](c), a.removeClass("fade top bottom left right in"), a.find(".popover-title").html() || a.find(".popover-title").hide()
-    }, c.prototype.hasContent = function () {
-        return this.getTitle() || this.getContent()
-    }, c.prototype.getContent = function () {
-        var a = this.$element, b = this.options;
-        return a.attr("data-content") || ("function" == typeof b.content ? b.content.call(a[0]) : b.content)
-    }, c.prototype.arrow = function () {
-        return this.$arrow = this.$arrow || this.tip().find(".arrow")
-    };
-    var d = a.fn.popover;
-    a.fn.popover = b, a.fn.popover.Constructor = c, a.fn.popover.noConflict = function () {
-        return a.fn.popover = d, this
-    }
-}(jQuery), +function (a) {
-    "use strict";
-    function b(c, d) {
-        this.$body = a(document.body), this.$scrollElement = a(a(c).is(document.body) ? window : c), this.options = a.extend({}, b.DEFAULTS, d), this.selector = (this.options.target || "") + " .nav li > a", this.offsets = [], this.targets = [], this.activeTarget = null, this.scrollHeight = 0, this.$scrollElement.on("scroll.bs.scrollspy", a.proxy(this.process, this)), this.refresh(), this.process()
-    }
-
-    function c(c) {
-        return this.each(function () {
-            var d = a(this), e = d.data("bs.scrollspy"), f = "object" == typeof c && c;
-            e || d.data("bs.scrollspy", e = new b(this, f)), "string" == typeof c && e[c]()
-        })
-    }
-
-    b.VERSION = "3.3.5", b.DEFAULTS = {offset: 10}, b.prototype.getScrollHeight = function () {
-        return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
-    }, b.prototype.refresh = function () {
-        var b = this, c = "offset", d = 0;
-        this.offsets = [], this.targets = [], this.scrollHeight = this.getScrollHeight(), a.isWindow(this.$scrollElement[0]) || (c = "position", d = this.$scrollElement.scrollTop()), this.$body.find(this.selector).map(function () {
-            var b = a(this), e = b.data("target") || b.attr("href"), f = /^#./.test(e) && a(e);
-            return f && f.length && f.is(":visible") && [[f[c]().top + d, e]] || null
-        }).sort(function (a, b) {
-            return a[0] - b[0]
-        }).each(function () {
-            b.offsets.push(this[0]), b.targets.push(this[1])
-        })
-    }, b.prototype.process = function () {
-        var a, b = this.$scrollElement.scrollTop() + this.options.offset, c = this.getScrollHeight(), d = this.options.offset + c - this.$scrollElement.height(), e = this.offsets, f = this.targets, g = this.activeTarget;
-        if (this.scrollHeight != c && this.refresh(), b >= d)return g != (a = f[f.length - 1]) && this.activate(a);
-        if (g && b < e[0])return this.activeTarget = null, this.clear();
-        for (a = e.length; a--;)g != f[a] && b >= e[a] && (void 0 === e[a + 1] || b < e[a + 1]) && this.activate(f[a])
-    }, b.prototype.activate = function (b) {
-        this.activeTarget = b, this.clear();
-        var c = this.selector + '[data-target="' + b + '"],' + this.selector + '[href="' + b + '"]', d = a(c).parents("li").addClass("active");
-        d.parent(".dropdown-menu").length && (d = d.closest("li.dropdown").addClass("active")), d.trigger("activate.bs.scrollspy")
-    }, b.prototype.clear = function () {
-        a(this.selector).parentsUntil(this.options.target, ".active").removeClass("active")
-    };
-    var d = a.fn.scrollspy;
-    a.fn.scrollspy = c, a.fn.scrollspy.Constructor = b, a.fn.scrollspy.noConflict = function () {
-        return a.fn.scrollspy = d, this
-    }, a(window).on("load.bs.scrollspy.data-api", function () {
-        a('[data-spy="scroll"]').each(function () {
-            var b = a(this);
-            c.call(b, b.data())
-        })
-    })
-}(jQuery), +function (a) {
-    "use strict";
-    function b(b) {
-        return this.each(function () {
-            var d = a(this), e = d.data("bs.tab");
-            e || d.data("bs.tab", e = new c(this)), "string" == typeof b && e[b]()
-        })
-    }
-
-    var c = function (b) {
-        this.element = a(b)
-    };
-    c.VERSION = "3.3.5", c.TRANSITION_DURATION = 150, c.prototype.show = function () {
-        var b = this.element, c = b.closest("ul:not(.dropdown-menu)"), d = b.data("target");
-        if (d || (d = b.attr("href"), d = d && d.replace(/.*(?=#[^\s]*$)/, "")), !b.parent("li").hasClass("active")) {
-            var e = c.find(".active:last a"), f = a.Event("hide.bs.tab", {relatedTarget: b[0]}), g = a.Event("show.bs.tab", {relatedTarget: e[0]});
-            if (e.trigger(f), b.trigger(g), !g.isDefaultPrevented() && !f.isDefaultPrevented()) {
-                var h = a(d);
-                this.activate(b.closest("li"), c), this.activate(h, h.parent(), function () {
-                    e.trigger({type: "hidden.bs.tab", relatedTarget: b[0]}), b.trigger({
-                        type: "shown.bs.tab",
-                        relatedTarget: e[0]
-                    })
-                })
-            }
-        }
-    }, c.prototype.activate = function (b, d, e) {
-        function f() {
-            g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded", !1), b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded", !0), h ? (b[0].offsetWidth, b.addClass("in")) : b.removeClass("fade"), b.parent(".dropdown-menu").length && b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded", !0), e && e()
-        }
-
-        var g = d.find("> .active"), h = e && a.support.transition && (g.length && g.hasClass("fade") || !!d.find("> .fade").length);
-        g.length && h ? g.one("bsTransitionEnd", f).emulateTransitionEnd(c.TRANSITION_DURATION) : f(), g.removeClass("in")
-    };
-    var d = a.fn.tab;
-    a.fn.tab = b, a.fn.tab.Constructor = c, a.fn.tab.noConflict = function () {
-        return a.fn.tab = d, this
-    };
-    var e = function (c) {
-        c.preventDefault(), b.call(a(this), "show")
-    };
-    a(document).on("click.bs.tab.data-api", '[data-toggle="tab"]', e).on("click.bs.tab.data-api", '[data-toggle="pill"]', e)
-}(jQuery), +function (a) {
-    "use strict";
-    function b(b) {
-        return this.each(function () {
-            var d = a(this), e = d.data("bs.affix"), f = "object" == typeof b && b;
-            e || d.data("bs.affix", e = new c(this, f)), "string" == typeof b && e[b]()
-        })
-    }
-
-    var c = function (b, d) {
-        this.options = a.extend({}, c.DEFAULTS, d), this.$target = a(this.options.target).on("scroll.bs.affix.data-api", a.proxy(this.checkPosition, this)).on("click.bs.affix.data-api", a.proxy(this.checkPositionWithEventLoop, this)), this.$element = a(b), this.affixed = null, this.unpin = null, this.pinnedOffset = null, this.checkPosition()
-    };
-    c.VERSION = "3.3.5", c.RESET = "affix affix-top affix-bottom", c.DEFAULTS = {
-        offset: 0,
-        target: window
-    }, c.prototype.getState = function (a, b, c, d) {
-        var e = this.$target.scrollTop(), f = this.$element.offset(), g = this.$target.height();
-        if (null != c && "top" == this.affixed)return c > e ? "top" : !1;
-        if ("bottom" == this.affixed)return null != c ? e + this.unpin <= f.top ? !1 : "bottom" : a - d >= e + g ? !1 : "bottom";
-        var h = null == this.affixed, i = h ? e : f.top, j = h ? g : b;
-        return null != c && c >= e ? "top" : null != d && i + j >= a - d ? "bottom" : !1
-    }, c.prototype.getPinnedOffset = function () {
-        if (this.pinnedOffset)return this.pinnedOffset;
-        this.$element.removeClass(c.RESET).addClass("affix");
-        var a = this.$target.scrollTop(), b = this.$element.offset();
-        return this.pinnedOffset = b.top - a
-    }, c.prototype.checkPositionWithEventLoop = function () {
-        setTimeout(a.proxy(this.checkPosition, this), 1)
-    }, c.prototype.checkPosition = function () {
-        if (this.$element.is(":visible")) {
-            var b = this.$element.height(), d = this.options.offset, e = d.top, f = d.bottom, g = Math.max(a(document).height(), a(document.body).height());
-            "object" != typeof d && (f = e = d), "function" == typeof e && (e = d.top(this.$element)), "function" == typeof f && (f = d.bottom(this.$element));
-            var h = this.getState(g, b, e, f);
-            if (this.affixed != h) {
-                null != this.unpin && this.$element.css("top", "");
-                var i = "affix" + (h ? "-" + h : ""), j = a.Event(i + ".bs.affix");
-                if (this.$element.trigger(j), j.isDefaultPrevented())return;
-                this.affixed = h, this.unpin = "bottom" == h ? this.getPinnedOffset() : null, this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix", "affixed") + ".bs.affix")
-            }
-            "bottom" == h && this.$element.offset({top: g - b - f})
-        }
-    };
-    var d = a.fn.affix;
-    a.fn.affix = b, a.fn.affix.Constructor = c, a.fn.affix.noConflict = function () {
-        return a.fn.affix = d, this
-    }, a(window).on("load", function () {
-        a('[data-spy="affix"]').each(function () {
-            var c = a(this), d = c.data();
-            d.offset = d.offset || {}, null != d.offsetBottom && (d.offset.bottom = d.offsetBottom), null != d.offsetTop && (d.offset.top = d.offsetTop), b.call(c, d)
-        })
-    })
-}(jQuery), +function (a) {
-    a(function () {
-        var b = !!navigator.userAgent.match(/MSIE/i) || !!navigator.userAgent.match(/Trident.*rv:11\./);
-        b && a("html").addClass("ie");
-        var c = window.navigator.userAgent || window.navigator.vendor || window.opera;
-        /iPhone|iPod|iPad|Silk|Android|BlackBerry|Opera Mini|IEMobile/.test(c) && a("html").addClass("smart")
-    })
-}(jQuery);
-var jp_config = {
-    easyPieChart: ["/lib/app/js/easypiechart.js"],
-    sparkline: ["../libs/jquery/jquery.sparkline/dist/jquery.sparkline.retina.js"],
-    plot: ["../libs/jquery/flot/jquery.flot.js", "../libs/jquery/flot/jquery.flot.pie.js", "../libs/jquery/flot/jquery.flot.resize.js", "../libs/jquery/flot.tooltip/js/jquery.flot.tooltip.min.js", "../libs/jquery/flot.orderbars/js/jquery.flot.orderBars.js", "../libs/jquery/flot-spline/js/jquery.flot.spline.min.js"],
-    moment: ["../libs/jquery/moment/moment.js"],
-    screenfull: ["../libs/jquery/screenfull/dist/screenfull.min.js"],
-    slimScroll: ["../libs/jquery/slimscroll/jquery.slimscroll.min.js"],
-    sortable: ["../libs/jquery/html5sortable/jquery.sortable.js"],
-    nestable: ["../libs/jquery/nestable/jquery.nestable.js", "../libs/jquery/nestable/jquery.nestable.css"],
-    filestyle: ["../libs/jquery/bootstrap-filestyle/src/bootstrap-filestyle.js"],
-    slider: ["../libs/jquery/bootstrap-slider/bootstrap-slider.js", "../libs/jquery/bootstrap-slider/bootstrap-slider.css"],
-    chosen: ["../libs/jquery/chosen/chosen.jquery.min.js", "../libs/jquery/chosen/bootstrap-chosen.css"],
-    TouchSpin: ["../libs/jquery/bootstrap-touchspin/dist/jquery.bootstrap-touchspin.min.js", "../libs/jquery/bootstrap-touchspin/dist/jquery.bootstrap-touchspin.min.css"],
-    wysiwyg: ["../libs/jquery/bootstrap-wysiwyg/bootstrap-wysiwyg.js", "../libs/jquery/bootstrap-wysiwyg/external/jquery.hotkeys.js"],
-    dataTable: ["../libs/jquery/datatables/media/js/jquery.dataTables.min.js", "../libs/jquery/plugins/integration/bootstrap/3/dataTables.bootstrap.js", "../libs/jquery/plugins/integration/bootstrap/3/dataTables.bootstrap.css"],
-    vectorMap: ["../libs/jquery/bower-jvectormap/jquery-jvectormap-1.2.2.min.js", "../libs/jquery/bower-jvectormap/jquery-jvectormap-world-mill-en.js", "../libs/jquery/bower-jvectormap/jquery-jvectormap-us-aea-en.js", "../libs/jquery/bower-jvectormap/jquery-jvectormap.css"],
-    footable: ["../libs/jquery/footable/dist/footable.all.min.js", "../libs/jquery/footable/css/footable.core.css"],
-    fullcalendar: ["../libs/jquery/moment/moment.js", "../libs/jquery/fullcalendar/dist/fullcalendar.min.js", "../libs/jquery/fullcalendar/dist/fullcalendar.css", "../libs/jquery/fullcalendar/dist/fullcalendar.theme.css"],
-    daterangepicker: ["../libs/jquery/moment/moment.js", "../libs/jquery/bootstrap-daterangepicker/daterangepicker.js", "../libs/jquery/bootstrap-daterangepicker/daterangepicker-bs3.css"],
-    tagsinput: ["../libs/jquery/bootstrap-tagsinput/dist/bootstrap-tagsinput.js", "../libs/jquery/bootstrap-tagsinput/dist/bootstrap-tagsinput.css"]
-};
-+function ($) {
-    $(function () {
-        $("[ui-jq]").each(function () {
-            var self = $(this), options = eval("[" + self.attr("ui-options") + "]");
-            $.isPlainObject(options[0]) && (options[0] = $.extend({}, options[0])), uiLoad.load(jp_config[self.attr("ui-jq")]).then(function () {
-                self[self.attr("ui-jq")].apply(self, options)
-            })
-        })
-    })
-}(jQuery);
-var uiLoad = uiLoad || {};
-!function (a, b, c) {
-    "use strict";
-    var d = [], e = !1, f = a.Deferred();
-    c.load = function (b) {
-        return b = a.isArray(b) ? b : b.split(/\s+/), e || (e = f.promise()), a.each(b, function (a, b) {
-            e = e.then(function () {
-                return b.indexOf(".css") >= 0 ? h(b) : g(b)
-            })
-        }), f.resolve(), e
-    };
-    var g = function (c) {
-        if (d[c])return d[c].promise();
-        var e = a.Deferred(), f = b.createElement("script");
-        return f.src = c, f.onload = function (a) {
-            e.resolve(a)
-        }, f.onerror = function (a) {
-            e.reject(a)
-        }, b.body.appendChild(f), d[c] = e, e.promise()
-    }, h = function (c) {
-        if (d[c])return d[c].promise();
-        var e = a.Deferred(), f = b.createElement("link");
-        return f.rel = "stylesheet", f.type = "text/css", f.href = c, f.onload = function (a) {
-            e.resolve(a)
-        }, f.onerror = function (a) {
-            e.reject(a)
-        }, b.head.appendChild(f), d[c] = e, e.promise()
-    }
-}(jQuery, document, uiLoad), +function (a) {
-    a(function () {
-        a(document).on("click", "[ui-nav] a", function (b) {
-            var c, d = a(b.target);
-            d.is("a") || (d = d.closest("a")), c = d.parent().siblings(".active"), c && c.toggleClass("active").find("> ul:visible").slideUp(200), d.parent().hasClass("active") && d.next().slideUp(200) || d.next().slideDown(200), d.parent().toggleClass("active"), d.next().is("ul") && b.preventDefault()
-        })
-    })
-}(jQuery), +function (a) {
-    a(function () {
-        a(document).on("click", "[ui-toggle-class]", function (b) {
-            b.preventDefault();
-            var c = a(b.target);
-            c.attr("ui-toggle-class") || (c = c.closest("[ui-toggle-class]"));
-            var d = c.attr("ui-toggle-class").split(","), e = c.attr("target") && c.attr("target").split(",") || Array(c), f = 0;
-            a.each(d, function (b, c) {
-                var g = e[e.length && f];
-                a(g).toggleClass(d[b]), f++
-            }), c.toggleClass("active")
-        })
-    })
-}(jQuery);

+ 0 - 8386
js/mui.js

@@ -1,8386 +0,0 @@
-/*!
- * =====================================================
- * Mui v3.7.2 (http://dev.dcloud.net.cn/mui)
- * =====================================================
- */
-/**
- * MUI核心JS
- * @type _L4.$|Function
- */
-var mui = (function(document, undefined) {
-	var readyRE = /complete|loaded|interactive/;
-	var idSelectorRE = /^#([\w-]+)$/;
-	var classSelectorRE = /^\.([\w-]+)$/;
-	var tagSelectorRE = /^[\w-]+$/;
-	var translateRE = /translate(?:3d)?\((.+?)\)/;
-	var translateMatrixRE = /matrix(3d)?\((.+?)\)/;
-
-	var $ = function(selector, context) {
-		context = context || document;
-		if (!selector)
-			return wrap();
-		if (typeof selector === 'object')
-			if ($.isArrayLike(selector)) {
-				return wrap($.slice.call(selector), null);
-			} else {
-				return wrap([selector], null);
-			}
-		if (typeof selector === 'function')
-			return $.ready(selector);
-		if (typeof selector === 'string') {
-			try {
-				selector = selector.trim();
-				if (idSelectorRE.test(selector)) {
-					var found = document.getElementById(RegExp.$1);
-					return wrap(found ? [found] : []);
-				}
-				return wrap($.qsa(selector, context), selector);
-			} catch (e) {}
-		}
-		return wrap();
-	};
-
-	var wrap = function(dom, selector) {
-		dom = dom || [];
-		Object.setPrototypeOf(dom, $.fn);
-		dom.selector = selector || '';
-		return dom;
-	};
-
-	$.uuid = 0;
-
-	$.data = {};
-	/**
-	 * extend(simple)
-	 * @param {type} target
-	 * @param {type} source
-	 * @param {type} deep
-	 * @returns {unresolved}
-	 */
-	$.extend = function() { //from jquery2
-		var options, name, src, copy, copyIsArray, clone,
-			target = arguments[0] || {},
-			i = 1,
-			length = arguments.length,
-			deep = false;
-
-		if (typeof target === "boolean") {
-			deep = target;
-
-			target = arguments[i] || {};
-			i++;
-		}
-
-		if (typeof target !== "object" && !$.isFunction(target)) {
-			target = {};
-		}
-
-		if (i === length) {
-			target = this;
-			i--;
-		}
-
-		for (; i < length; i++) {
-			if ((options = arguments[i]) != null) {
-				for (name in options) {
-					src = target[name];
-					copy = options[name];
-
-					if (target === copy) {
-						continue;
-					}
-
-					if (deep && copy && ($.isPlainObject(copy) || (copyIsArray = $.isArray(copy)))) {
-						if (copyIsArray) {
-							copyIsArray = false;
-							clone = src && $.isArray(src) ? src : [];
-
-						} else {
-							clone = src && $.isPlainObject(src) ? src : {};
-						}
-
-						target[name] = $.extend(deep, clone, copy);
-
-					} else if (copy !== undefined) {
-						target[name] = copy;
-					}
-				}
-			}
-		}
-
-		return target;
-	};
-	/**
-	 * mui noop(function)
-	 */
-	$.noop = function() {};
-	/**
-	 * mui slice(array)
-	 */
-	$.slice = [].slice;
-	/**
-	 * mui filter(array)
-	 */
-	$.filter = [].filter;
-
-	$.type = function(obj) {
-		return obj == null ? String(obj) : class2type[{}.toString.call(obj)] || "object";
-	};
-	/**
-	 * mui isArray
-	 */
-	$.isArray = Array.isArray ||
-		function(object) {
-			return object instanceof Array;
-		};
-	/**
-	 * mui isArrayLike 
-	 * @param {Object} obj
-	 */
-	$.isArrayLike = function(obj) {
-		var length = !!obj && "length" in obj && obj.length;
-		var type = $.type(obj);
-		if (type === "function" || $.isWindow(obj)) {
-			return false;
-		}
-		return type === "array" || length === 0 ||
-			typeof length === "number" && length > 0 && (length - 1) in obj;
-	};
-	/**
-	 * mui isWindow(需考虑obj为undefined的情况)
-	 */
-	$.isWindow = function(obj) {
-		return obj != null && obj === obj.window;
-	};
-	/**
-	 * mui isObject
-	 */
-	$.isObject = function(obj) {
-		return $.type(obj) === "object";
-	};
-	/**
-	 * mui isPlainObject
-	 */
-	$.isPlainObject = function(obj) {
-		return $.isObject(obj) && !$.isWindow(obj) && Object.getPrototypeOf(obj) === Object.prototype;
-	};
-	/**
-	 * mui isEmptyObject
-	 * @param {Object} o
-	 */
-	$.isEmptyObject = function(o) {
-		for (var p in o) {
-			if (p !== undefined) {
-				return false;
-			}
-		}
-		return true;
-	};
-	/**
-	 * mui isFunction
-	 */
-	$.isFunction = function(value) {
-		return $.type(value) === "function";
-	};
-	/**
-	 * mui querySelectorAll
-	 * @param {type} selector
-	 * @param {type} context
-	 * @returns {Array}
-	 */
-	$.qsa = function(selector, context) {
-		context = context || document;
-		return $.slice.call(classSelectorRE.test(selector) ? context.getElementsByClassName(RegExp.$1) : tagSelectorRE.test(selector) ? context.getElementsByTagName(selector) : context.querySelectorAll(selector));
-	};
-	/**
-	 * ready(DOMContentLoaded)
-	 * @param {type} callback
-	 * @returns {_L6.$}
-	 */
-	$.ready = function(callback) {
-		if (readyRE.test(document.readyState)) {
-			callback($);
-		} else {
-			document.addEventListener('DOMContentLoaded', function() {
-				callback($);
-			}, false);
-		}
-		return this;
-	};
-	/**
-	 * 将 fn 缓存一段时间后, 再被调用执行
-	 * 此方法为了避免在 ms 段时间内, 执行 fn 多次. 常用于 resize , scroll , mousemove 等连续性事件中;
-	 * 当 ms 设置为 -1, 表示立即执行 fn, 即和直接调用 fn 一样;
-	 * 调用返回函数的 stop 停止最后一次的 buffer 效果
-	 * @param {Object} fn
-	 * @param {Object} ms
-	 * @param {Object} context
-	 */
-	$.buffer = function(fn, ms, context) {
-		var timer;
-		var lastStart = 0;
-		var lastEnd = 0;
-		var ms = ms || 150;
-
-		function run() {
-			if (timer) {
-				timer.cancel();
-				timer = 0;
-			}
-			lastStart = $.now();
-			fn.apply(context || this, arguments);
-			lastEnd = $.now();
-		}
-
-		return $.extend(function() {
-			if (
-				(!lastStart) || // 从未运行过
-				(lastEnd >= lastStart && $.now() - lastEnd > ms) || // 上次运行成功后已经超过ms毫秒
-				(lastEnd < lastStart && $.now() - lastStart > ms * 8) // 上次运行或未完成,后8*ms毫秒
-			) {
-				run.apply(this, arguments);
-			} else {
-				if (timer) {
-					timer.cancel();
-				}
-				timer = $.later(run, ms, null, $.slice.call(arguments));
-			}
-		}, {
-			stop: function() {
-				if (timer) {
-					timer.cancel();
-					timer = 0;
-				}
-			}
-		});
-	};
-	/**
-	 * each
-	 * @param {type} elements
-	 * @param {type} callback
-	 * @returns {_L8.$}
-	 */
-	$.each = function(elements, callback, hasOwnProperty) {
-		if (!elements) {
-			return this;
-		}
-		if (typeof elements.length === 'number') {
-			[].every.call(elements, function(el, idx) {
-				return callback.call(el, idx, el) !== false;
-			});
-		} else {
-			for (var key in elements) {
-				if (hasOwnProperty) {
-					if (elements.hasOwnProperty(key)) {
-						if (callback.call(elements[key], key, elements[key]) === false) return elements;
-					}
-				} else {
-					if (callback.call(elements[key], key, elements[key]) === false) return elements;
-				}
-			}
-		}
-		return this;
-	};
-	$.focus = function(element) {
-		if ($.os.ios) {
-			setTimeout(function() {
-				element.focus();
-			}, 10);
-		} else {
-			element.focus();
-		}
-	};
-	/**
-	 * trigger event
-	 * @param {type} element
-	 * @param {type} eventType
-	 * @param {type} eventData
-	 * @returns {_L8.$}
-	 */
-	$.trigger = function(element, eventType, eventData) {
-		element.dispatchEvent(new CustomEvent(eventType, {
-			detail: eventData,
-			bubbles: true,
-			cancelable: true
-		}));
-		return this;
-	};
-	/**
-	 * getStyles
-	 * @param {type} element
-	 * @param {type} property
-	 * @returns {styles}
-	 */
-	$.getStyles = function(element, property) {
-		var styles = element.ownerDocument.defaultView.getComputedStyle(element, null);
-		if (property) {
-			return styles.getPropertyValue(property) || styles[property];
-		}
-		return styles;
-	};
-	/**
-	 * parseTranslate
-	 * @param {type} translateString
-	 * @param {type} position
-	 * @returns {Object}
-	 */
-	$.parseTranslate = function(translateString, position) {
-		var result = translateString.match(translateRE || '');
-		if (!result || !result[1]) {
-			result = ['', '0,0,0'];
-		}
-		result = result[1].split(",");
-		result = {
-			x: parseFloat(result[0]),
-			y: parseFloat(result[1]),
-			z: parseFloat(result[2])
-		};
-		if (position && result.hasOwnProperty(position)) {
-			return result[position];
-		}
-		return result;
-	};
-	/**
-	 * parseTranslateMatrix
-	 * @param {type} translateString
-	 * @param {type} position
-	 * @returns {Object}
-	 */
-	$.parseTranslateMatrix = function(translateString, position) {
-		var matrix = translateString.match(translateMatrixRE);
-		var is3D = matrix && matrix[1];
-		if (matrix) {
-			matrix = matrix[2].split(",");
-			if (is3D === "3d")
-				matrix = matrix.slice(12, 15);
-			else {
-				matrix.push(0);
-				matrix = matrix.slice(4, 7);
-			}
-		} else {
-			matrix = [0, 0, 0];
-		}
-		var result = {
-			x: parseFloat(matrix[0]),
-			y: parseFloat(matrix[1]),
-			z: parseFloat(matrix[2])
-		};
-		if (position && result.hasOwnProperty(position)) {
-			return result[position];
-		}
-		return result;
-	};
-	$.hooks = {};
-	$.addAction = function(type, hook) {
-		var hooks = $.hooks[type];
-		if (!hooks) {
-			hooks = [];
-		}
-		hook.index = hook.index || 1000;
-		hooks.push(hook);
-		hooks.sort(function(a, b) {
-			return a.index - b.index;
-		});
-		$.hooks[type] = hooks;
-		return $.hooks[type];
-	};
-	$.doAction = function(type, callback) {
-		if ($.isFunction(callback)) { //指定了callback
-			$.each($.hooks[type], callback);
-		} else { //未指定callback,直接执行
-			$.each($.hooks[type], function(index, hook) {
-				return !hook.handle();
-			});
-		}
-	};
-	/**
-	 * setTimeout封装
-	 * @param {Object} fn
-	 * @param {Object} when
-	 * @param {Object} context
-	 * @param {Object} data
-	 */
-	$.later = function(fn, when, context, data) {
-		when = when || 0;
-		var m = fn;
-		var d = data;
-		var f;
-		var r;
-
-		if (typeof fn === 'string') {
-			m = context[fn];
-		}
-
-		f = function() {
-			m.apply(context, $.isArray(d) ? d : [d]);
-		};
-
-		r = setTimeout(f, when);
-
-		return {
-			id: r,
-			cancel: function() {
-				clearTimeout(r);
-			}
-		};
-	};
-	$.now = Date.now || function() {
-		return +new Date();
-	};
-	var class2type = {};
-	$.each(['Boolean', 'Number', 'String', 'Function', 'Array', 'Date', 'RegExp', 'Object', 'Error'], function(i, name) {
-		class2type["[object " + name + "]"] = name.toLowerCase();
-	});
-	if (window.JSON) {
-		$.parseJSON = JSON.parse;
-	}
-	/**
-	 * $.fn
-	 */
-	$.fn = {
-		each: function(callback) {
-			[].every.call(this, function(el, idx) {
-				return callback.call(el, idx, el) !== false;
-			});
-			return this;
-		}
-	};
-
-	/**
-	 * 兼容 AMD 模块
-	 **/
-	if (typeof define === 'function' && define.amd) {
-		define('mui', [], function() {
-			return $;
-		});
-	}
-
-	return $;
-})(document);
-//window.mui = mui;
-//'$' in window || (window.$ = mui);
-/**
- * $.os
- * @param {type} $
- * @returns {undefined}
- */
-(function($, window) {
-	function detect(ua) {
-		this.os = {};
-		var funcs = [
-
-			function() { //wechat
-				var wechat = ua.match(/(MicroMessenger)\/([\d\.]+)/i);
-				if (wechat) { //wechat
-					this.os.wechat = {
-						version: wechat[2].replace(/_/g, '.')
-					};
-				}
-				return false;
-			},
-			function() { //android
-				var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/);
-				if (android) {
-					this.os.android = true;
-					this.os.version = android[2];
-
-					this.os.isBadAndroid = !(/Chrome\/\d/.test(window.navigator.appVersion));
-				}
-				return this.os.android === true;
-			},
-			function() { //ios
-				var iphone = ua.match(/(iPhone\sOS)\s([\d_]+)/);
-				if (iphone) { //iphone
-					this.os.ios = this.os.iphone = true;
-					this.os.version = iphone[2].replace(/_/g, '.');
-				} else {
-					var ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
-					if (ipad) { //ipad
-						this.os.ios = this.os.ipad = true;
-						this.os.version = ipad[2].replace(/_/g, '.');
-					}
-				}
-				return this.os.ios === true;
-			}
-		];
-		[].every.call(funcs, function(func) {
-			return !func.call($);
-		});
-	}
-	detect.call($, navigator.userAgent);
-})(mui, window);
-/**
- * $.os.plus
- * @param {type} $
- * @returns {undefined}
- */
-(function($, document) {
-	function detect(ua) {
-		this.os = this.os || {};
-		var plus = ua.match(/Html5Plus/i); //TODO 5\+Browser?
-		if (plus) {
-			this.os.plus = true;
-			$(function() {
-				document.body.classList.add('mui-plus');
-			});
-			if (ua.match(/StreamApp/i)) { //TODO 最好有流应用自己的标识
-				this.os.stream = true;
-				$(function() {
-					document.body.classList.add('mui-plus-stream');
-				});
-			}
-		}
-	}
-	detect.call($, navigator.userAgent);
-})(mui, document);
-/**
- * 仅提供简单的on,off(仅支持事件委托,不支持当前元素绑定,当前元素绑定请直接使用addEventListener,removeEventListener)
- * @param {Object} $
- */
-(function($) {
-	if ('ontouchstart' in window) {
-		$.isTouchable = true;
-		$.EVENT_START = 'touchstart';
-		$.EVENT_MOVE = 'touchmove';
-		$.EVENT_END = 'touchend';
-	} else {
-		$.isTouchable = false;
-		$.EVENT_START = 'mousedown';
-		$.EVENT_MOVE = 'mousemove';
-		$.EVENT_END = 'mouseup';
-	}
-	$.EVENT_CANCEL = 'touchcancel';
-	$.EVENT_CLICK = 'click';
-
-	var _mid = 1;
-	var delegates = {};
-	//需要wrap的函数
-	var eventMethods = {
-		preventDefault: 'isDefaultPrevented',
-		stopImmediatePropagation: 'isImmediatePropagationStopped',
-		stopPropagation: 'isPropagationStopped'
-	};
-	//默认true返回函数
-	var returnTrue = function() {
-		return true
-	};
-	//默认false返回函数
-	var returnFalse = function() {
-		return false
-	};
-	//wrap浏览器事件
-	var compatible = function(event, target) {
-		if (!event.detail) {
-			event.detail = {
-				currentTarget: target
-			};
-		} else {
-			event.detail.currentTarget = target;
-		}
-		$.each(eventMethods, function(name, predicate) {
-			var sourceMethod = event[name];
-			event[name] = function() {
-				this[predicate] = returnTrue;
-				return sourceMethod && sourceMethod.apply(event, arguments)
-			}
-			event[predicate] = returnFalse;
-		}, true);
-		return event;
-	};
-	//简单的wrap对象_mid
-	var mid = function(obj) {
-		return obj && (obj._mid || (obj._mid = _mid++));
-	};
-	//事件委托对象绑定的事件回调列表
-	var delegateFns = {};
-	//返回事件委托的wrap事件回调
-	var delegateFn = function(element, event, selector, callback) {
-		return function(e) {
-			//same event
-			var callbackObjs = delegates[element._mid][event];
-			var handlerQueue = [];
-			var target = e.target;
-			var selectorAlls = {};
-			for (; target && target !== document; target = target.parentNode) {
-				if (target === element) {
-					break;
-				}
-				if (~['click', 'tap', 'doubletap', 'longtap', 'hold'].indexOf(event) && (target.disabled || target.classList.contains('mui-disabled'))) {
-					break;
-				}
-				var matches = {};
-				$.each(callbackObjs, function(selector, callbacks) { //same selector
-					selectorAlls[selector] || (selectorAlls[selector] = $.qsa(selector, element));
-					if (selectorAlls[selector] && ~(selectorAlls[selector]).indexOf(target)) {
-						if (!matches[selector]) {
-							matches[selector] = callbacks;
-						}
-					}
-				}, true);
-				if (!$.isEmptyObject(matches)) {
-					handlerQueue.push({
-						element: target,
-						handlers: matches
-					});
-				}
-			}
-			selectorAlls = null;
-			e = compatible(e); //compatible event
-			$.each(handlerQueue, function(index, handler) {
-				target = handler.element;
-				var tagName = target.tagName;
-				if (event === 'tap' && (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && tagName !== 'SELECT')) {
-					e.preventDefault();
-					e.detail && e.detail.gesture && e.detail.gesture.preventDefault();
-				}
-				$.each(handler.handlers, function(index, handler) {
-					$.each(handler, function(index, callback) {
-						if (callback.call(target, e) === false) {
-							e.preventDefault();
-							e.stopPropagation();
-						}
-					}, true);
-				}, true)
-				if (e.isPropagationStopped()) {
-					return false;
-				}
-			}, true);
-		};
-	};
-	var findDelegateFn = function(element, event) {
-		var delegateCallbacks = delegateFns[mid(element)];
-		var result = [];
-		if (delegateCallbacks) {
-			result = [];
-			if (event) {
-				var filterFn = function(fn) {
-					return fn.type === event;
-				}
-				return delegateCallbacks.filter(filterFn);
-			} else {
-				result = delegateCallbacks;
-			}
-		}
-		return result;
-	};
-	var preventDefaultException = /^(INPUT|TEXTAREA|BUTTON|SELECT)$/;
-	/**
-	 * mui delegate events
-	 * @param {type} event
-	 * @param {type} selector
-	 * @param {type} callback
-	 * @returns {undefined}
-	 */
-	$.fn.on = function(event, selector, callback) { //仅支持简单的事件委托,主要是tap事件使用,类似mouse,focus之类暂不封装支持
-		return this.each(function() {
-			var element = this;
-			mid(element);
-			mid(callback);
-			var isAddEventListener = false;
-			var delegateEvents = delegates[element._mid] || (delegates[element._mid] = {});
-			var delegateCallbackObjs = delegateEvents[event] || ((delegateEvents[event] = {}));
-			if ($.isEmptyObject(delegateCallbackObjs)) {
-				isAddEventListener = true;
-			}
-			var delegateCallbacks = delegateCallbackObjs[selector] || (delegateCallbackObjs[selector] = []);
-			delegateCallbacks.push(callback);
-			if (isAddEventListener) {
-				var delegateFnArray = delegateFns[mid(element)];
-				if (!delegateFnArray) {
-					delegateFnArray = [];
-				}
-				var delegateCallback = delegateFn(element, event, selector, callback);
-				delegateFnArray.push(delegateCallback);
-				delegateCallback.i = delegateFnArray.length - 1;
-				delegateCallback.type = event;
-				delegateFns[mid(element)] = delegateFnArray;
-				element.addEventListener(event, delegateCallback);
-				if (event === 'tap') { //TODO 需要找个更好的解决方案
-					element.addEventListener('click', function(e) {
-						if (e.target) {
-							var tagName = e.target.tagName;
-							if (!preventDefaultException.test(tagName)) {
-								if (tagName === 'A') {
-									var href = e.target.href;
-									if (!(href && ~href.indexOf('tel:'))) {
-										e.preventDefault();
-									}
-								} else {
-									e.preventDefault();
-								}
-							}
-						}
-					});
-				}
-			}
-		});
-	};
-	$.fn.off = function(event, selector, callback) {
-		return this.each(function() {
-			var _mid = mid(this);
-			if (!event) { //mui(selector).off();
-				delegates[_mid] && delete delegates[_mid];
-			} else if (!selector) { //mui(selector).off(event);
-				delegates[_mid] && delete delegates[_mid][event];
-			} else if (!callback) { //mui(selector).off(event,selector);
-				delegates[_mid] && delegates[_mid][event] && delete delegates[_mid][event][selector];
-			} else { //mui(selector).off(event,selector,callback);
-				var delegateCallbacks = delegates[_mid] && delegates[_mid][event] && delegates[_mid][event][selector];
-				$.each(delegateCallbacks, function(index, delegateCallback) {
-					if (mid(delegateCallback) === mid(callback)) {
-						delegateCallbacks.splice(index, 1);
-						return false;
-					}
-				}, true);
-			}
-			if (delegates[_mid]) {
-				//如果off掉了所有当前element的指定的event事件,则remove掉当前element的delegate回调
-				if ((!delegates[_mid][event] || $.isEmptyObject(delegates[_mid][event]))) {
-					findDelegateFn(this, event).forEach(function(fn) {
-						this.removeEventListener(fn.type, fn);
-						delete delegateFns[_mid][fn.i];
-					}.bind(this));
-				}
-			} else {
-				//如果delegates[_mid]已不存在,删除所有
-				findDelegateFn(this).forEach(function(fn) {
-					this.removeEventListener(fn.type, fn);
-					delete delegateFns[_mid][fn.i];
-				}.bind(this));
-			}
-		});
-
-	};
-})(mui);
-/**
- * mui target(action>popover>modal>tab>toggle)
- */
-(function($, window, document) {
-	/**
-	 * targets
-	 */
-	$.targets = {};
-	/**
-	 * target handles
-	 */
-	$.targetHandles = [];
-	/**
-	 * register target
-	 * @param {type} target
-	 * @returns {$.targets}
-	 */
-	$.registerTarget = function(target) {
-
-		target.index = target.index || 1000;
-
-		$.targetHandles.push(target);
-
-		$.targetHandles.sort(function(a, b) {
-			return a.index - b.index;
-		});
-
-		return $.targetHandles;
-	};
-	window.addEventListener($.EVENT_START, function(event) {
-		var target = event.target;
-		var founds = {};
-		for (; target && target !== document; target = target.parentNode) {
-			var isFound = false;
-			$.each($.targetHandles, function(index, targetHandle) {
-				var name = targetHandle.name;
-				if (!isFound && !founds[name] && targetHandle.hasOwnProperty('handle')) {
-					$.targets[name] = targetHandle.handle(event, target);
-					if ($.targets[name]) {
-						founds[name] = true;
-						if (targetHandle.isContinue !== true) {
-							isFound = true;
-						}
-					}
-				} else {
-					if (!founds[name]) {
-						if (targetHandle.isReset !== false)
-							$.targets[name] = false;
-					}
-				}
-			});
-			if (isFound) {
-				break;
-			}
-		}
-	});
-	window.addEventListener('click', function(event) { //解决touch与click的target不一致的问题(比如链接边缘点击时,touch的target为html,而click的target为A)
-		var target = event.target;
-		var isFound = false;
-		for (; target && target !== document; target = target.parentNode) {
-			if (target.tagName === 'A') {
-				$.each($.targetHandles, function(index, targetHandle) {
-					var name = targetHandle.name;
-					if (targetHandle.hasOwnProperty('handle')) {
-						if (targetHandle.handle(event, target)) {
-							isFound = true;
-							event.preventDefault();
-							return false;
-						}
-					}
-				});
-				if (isFound) {
-					break;
-				}
-			}
-		}
-	});
-})(mui, window, document);
-/**
- * fixed trim
- * @param {type} undefined
- * @returns {undefined}
- */
-(function(undefined) {
-	if (String.prototype.trim === undefined) { // fix for iOS 3.2
-		String.prototype.trim = function() {
-			return this.replace(/^\s+|\s+$/g, '');
-		};
-	}
-	Object.setPrototypeOf = Object.setPrototypeOf || function(obj, proto) {
-		obj['__proto__'] = proto;
-		return obj;
-	};
-
-})();
-/**
- * fixed CustomEvent
- */
-(function() {
-	if (typeof window.CustomEvent === 'undefined') {
-		function CustomEvent(event, params) {
-			params = params || {
-				bubbles: false,
-				cancelable: false,
-				detail: undefined
-			};
-			var evt = document.createEvent('Events');
-			var bubbles = true;
-			for (var name in params) {
-				(name === 'bubbles') ? (bubbles = !!params[name]) : (evt[name] = params[name]);
-			}
-			evt.initEvent(event, bubbles, true);
-			return evt;
-		};
-		CustomEvent.prototype = window.Event.prototype;
-		window.CustomEvent = CustomEvent;
-	}
-})();
-/*
-	A shim for non ES5 supporting browsers.
-	Adds function bind to Function prototype, so that you can do partial application.
-	Works even with the nasty thing, where the first word is the opposite of extranet, the second one is the profession of Columbus, and the version number is 9, flipped 180 degrees.
-*/
-
-Function.prototype.bind = Function.prototype.bind || function(to) {
-	// Make an array of our arguments, starting from second argument
-	var partial = Array.prototype.splice.call(arguments, 1),
-		// We'll need the original function.
-		fn = this;
-	var bound = function() {
-			// Join the already applied arguments to the now called ones (after converting to an array again).
-			var args = partial.concat(Array.prototype.splice.call(arguments, 0));
-			// If not being called as a constructor
-			if (!(this instanceof bound)) {
-				// return the result of the function called bound to target and partially applied.
-				return fn.apply(to, args);
-			}
-			// If being called as a constructor, apply the function bound to self.
-			fn.apply(this, args);
-		}
-		// Attach the prototype of the function to our newly created function.
-	bound.prototype = fn.prototype;
-	return bound;
-};
-/**
- * mui fixed classList
- * @param {type} document
- * @returns {undefined}
- */
-(function(document) {
-    if (!("classList" in document.documentElement) && Object.defineProperty && typeof HTMLElement !== 'undefined') {
-
-        Object.defineProperty(HTMLElement.prototype, 'classList', {
-            get: function() {
-                var self = this;
-                function update(fn) {
-                    return function(value) {
-                        var classes = self.className.split(/\s+/),
-                                index = classes.indexOf(value);
-
-                        fn(classes, index, value);
-                        self.className = classes.join(" ");
-                    };
-                }
-
-                var ret = {
-                    add: update(function(classes, index, value) {
-                        ~index || classes.push(value);
-                    }),
-                    remove: update(function(classes, index) {
-                        ~index && classes.splice(index, 1);
-                    }),
-                    toggle: update(function(classes, index, value) {
-                        ~index ? classes.splice(index, 1) : classes.push(value);
-                    }),
-                    contains: function(value) {
-                        return !!~self.className.split(/\s+/).indexOf(value);
-                    },
-                    item: function(i) {
-                        return self.className.split(/\s+/)[i] || null;
-                    }
-                };
-
-                Object.defineProperty(ret, 'length', {
-                    get: function() {
-                        return self.className.split(/\s+/).length;
-                    }
-                });
-
-                return ret;
-            }
-        });
-    }
-})(document);
-
-/**
- * mui fixed requestAnimationFrame
- * @param {type} window
- * @returns {undefined}
- */
-(function(window) {
-	if (!window.requestAnimationFrame) {
-		var lastTime = 0;
-		window.requestAnimationFrame = window.webkitRequestAnimationFrame || function(callback, element) {
-			var currTime = new Date().getTime();
-			var timeToCall = Math.max(0, 16.7 - (currTime - lastTime));
-			var id = window.setTimeout(function() {
-				callback(currTime + timeToCall);
-			}, timeToCall);
-			lastTime = currTime + timeToCall;
-			return id;
-		};
-		window.cancelAnimationFrame = window.webkitCancelAnimationFrame || window.webkitCancelRequestAnimationFrame || function(id) {
-			clearTimeout(id);
-		};
-	};
-}(window));
-/**
- * fastclick(only for radio,checkbox)
- */
-(function($, window, name) {
-	if (!$.os.android && !$.os.ios) { //目前仅识别android和ios
-		return;
-	}
-	if (window.FastClick) {
-		return;
-	}
-
-	var handle = function(event, target) {
-		if (target.tagName === 'LABEL') {
-			if (target.parentNode) {
-				target = target.parentNode.querySelector('input');
-			}
-		}
-		if (target && (target.type === 'radio' || target.type === 'checkbox')) {
-			if (!target.disabled) { //disabled
-				return target;
-			}
-		}
-		return false;
-	};
-
-	$.registerTarget({
-		name: name,
-		index: 40,
-		handle: handle,
-		target: false
-	});
-	var dispatchEvent = function(event) {
-		var targetElement = $.targets.click;
-		if (targetElement) {
-			var clickEvent, touch;
-			// On some Android devices activeElement needs to be blurred otherwise the synthetic click will have no effect
-			if (document.activeElement && document.activeElement !== targetElement) {
-				document.activeElement.blur();
-			}
-			touch = event.detail.gesture.changedTouches[0];
-			// Synthesise a click event, with an extra attribute so it can be tracked
-			clickEvent = document.createEvent('MouseEvents');
-			clickEvent.initMouseEvent('click', true, true, window, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null);
-			clickEvent.forwardedTouchEvent = true;
-			targetElement.dispatchEvent(clickEvent);
-			event.detail && event.detail.gesture.preventDefault();
-		}
-	};
-	window.addEventListener('tap', dispatchEvent);
-	window.addEventListener('doubletap', dispatchEvent);
-	//捕获
-	window.addEventListener('click', function(event) {
-		if ($.targets.click) {
-			if (!event.forwardedTouchEvent) { //stop click
-				if (event.stopImmediatePropagation) {
-					event.stopImmediatePropagation();
-				} else {
-					// Part of the hack for browsers that don't support Event#stopImmediatePropagation
-					event.propagationStopped = true;
-				}
-				event.stopPropagation();
-				event.preventDefault();
-				return false;
-			}
-		}
-	}, true);
-
-})(mui, window, 'click');
-(function($, document) {
-	$(function() {
-		if (!$.os.ios) {
-			return;
-		}
-		var CLASS_FOCUSIN = 'mui-focusin';
-		var CLASS_BAR_TAB = 'mui-bar-tab';
-		var CLASS_BAR_FOOTER = 'mui-bar-footer';
-		var CLASS_BAR_FOOTER_SECONDARY = 'mui-bar-footer-secondary';
-		var CLASS_BAR_FOOTER_SECONDARY_TAB = 'mui-bar-footer-secondary-tab';
-		// var content = document.querySelector('.' + CLASS_CONTENT);
-		// if (content) {
-		// 	document.body.insertBefore(content, document.body.firstElementChild);
-		// }
-		document.addEventListener('focusin', function(e) {
-			if ($.os.plus) { //在父webview里边不fix
-				if (window.plus) {
-					if (plus.webview.currentWebview().children().length > 0) {
-						return;
-					}
-				}
-			}
-			var target = e.target;
-			//TODO 需考虑所有键盘弹起的情况
-			if (target.tagName && (target.tagName === 'TEXTAREA' || (target.tagName === 'INPUT' && (target.type === 'text' || target.type === 'search' || target.type === 'number')))) {
-				if (target.disabled || target.readOnly) {
-					return;
-				}
-				document.body.classList.add(CLASS_FOCUSIN);
-				var isFooter = false;
-				for (; target && target !== document; target = target.parentNode) {
-					var classList = target.classList;
-					if (classList && classList.contains(CLASS_BAR_TAB) || classList.contains(CLASS_BAR_FOOTER) || classList.contains(CLASS_BAR_FOOTER_SECONDARY) || classList.contains(CLASS_BAR_FOOTER_SECONDARY_TAB)) {
-						isFooter = true;
-						break;
-					}
-				}
-				if (isFooter) {
-					var scrollTop = document.body.scrollHeight;
-					var scrollLeft = document.body.scrollLeft;
-					setTimeout(function() {
-						window.scrollTo(scrollLeft, scrollTop);
-					}, 20);
-				}
-			}
-		});
-		document.addEventListener('focusout', function(e) {
-			var classList = document.body.classList;
-			if (classList.contains(CLASS_FOCUSIN)) {
-				classList.remove(CLASS_FOCUSIN);
-				setTimeout(function() {
-					window.scrollTo(document.body.scrollLeft, document.body.scrollTop);
-				}, 20);
-			}
-		});
-	});
-})(mui, document);
-/**
- * mui namespace(optimization)
- * @param {type} $
- * @returns {undefined}
- */
-(function($) {
-	$.namespace = 'mui';
-	$.classNamePrefix = $.namespace + '-';
-	$.classSelectorPrefix = '.' + $.classNamePrefix;
-	/**
-	 * 返回正确的className
-	 * @param {type} className
-	 * @returns {String}
-	 */
-	$.className = function(className) {
-		return $.classNamePrefix + className;
-	};
-	/**
-	 * 返回正确的classSelector
-	 * @param {type} classSelector
-	 * @returns {String}
-	 */
-	$.classSelector = function(classSelector) {
-		return classSelector.replace(/\./g, $.classSelectorPrefix);
-	};
-	/**
-         * 返回正确的eventName
-         * @param {type} event
-         * @param {type} module
-         * @returns {String}
-         */
-	$.eventName = function(event, module) {
-		return event + ($.namespace ? ('.' + $.namespace) : '') + ( module ? ('.' + module) : '');
-	};
-})(mui);
-
-/**
- * mui gestures
- * @param {type} $
- * @param {type} window
- * @returns {undefined}
- */
-(function($, window) {
-	$.gestures = {
-		session: {}
-	};
-	/**
-	 * Gesture preventDefault
-	 * @param {type} e
-	 * @returns {undefined}
-	 */
-	$.preventDefault = function(e) {
-		e.preventDefault();
-	};
-	/**
-	 * Gesture stopPropagation
-	 * @param {type} e
-	 * @returns {undefined}
-	 */
-	$.stopPropagation = function(e) {
-		e.stopPropagation();
-	};
-
-	/**
-	 * register gesture
-	 * @param {type} gesture
-	 * @returns {$.gestures}
-	 */
-	$.addGesture = function(gesture) {
-		return $.addAction('gestures', gesture);
-
-	};
-
-	var round = Math.round;
-	var abs = Math.abs;
-	var sqrt = Math.sqrt;
-	var atan = Math.atan;
-	var atan2 = Math.atan2;
-	/**
-	 * distance
-	 * @param {type} p1
-	 * @param {type} p2
-	 * @returns {Number}
-	 */
-	var getDistance = function(p1, p2, props) {
-		if(!props) {
-			props = ['x', 'y'];
-		}
-		var x = p2[props[0]] - p1[props[0]];
-		var y = p2[props[1]] - p1[props[1]];
-		return sqrt((x * x) + (y * y));
-	};
-	/**
-	 * scale
-	 * @param {Object} starts
-	 * @param {Object} moves
-	 */
-	var getScale = function(starts, moves) {
-		if(starts.length >= 2 && moves.length >= 2) {
-			var props = ['pageX', 'pageY'];
-			return getDistance(moves[1], moves[0], props) / getDistance(starts[1], starts[0], props);
-		}
-		return 1;
-	};
-	/**
-	 * angle
-	 * @param {type} p1
-	 * @param {type} p2
-	 * @returns {Number}
-	 */
-	var getAngle = function(p1, p2, props) {
-		if(!props) {
-			props = ['x', 'y'];
-		}
-		var x = p2[props[0]] - p1[props[0]];
-		var y = p2[props[1]] - p1[props[1]];
-		return atan2(y, x) * 180 / Math.PI;
-	};
-	/**
-	 * direction
-	 * @param {Object} x
-	 * @param {Object} y
-	 */
-	var getDirection = function(x, y) {
-		if(x === y) {
-			return '';
-		}
-		if(abs(x) >= abs(y)) {
-			return x > 0 ? 'left' : 'right';
-		}
-		return y > 0 ? 'up' : 'down';
-	};
-	/**
-	 * rotation
-	 * @param {Object} start
-	 * @param {Object} end
-	 */
-	var getRotation = function(start, end) {
-		var props = ['pageX', 'pageY'];
-		return getAngle(end[1], end[0], props) - getAngle(start[1], start[0], props);
-	};
-	/**
-	 * px per ms
-	 * @param {Object} deltaTime
-	 * @param {Object} x
-	 * @param {Object} y
-	 */
-	var getVelocity = function(deltaTime, x, y) {
-		return {
-			x: x / deltaTime || 0,
-			y: y / deltaTime || 0
-		};
-	};
-	/**
-	 * detect gestures
-	 * @param {type} event
-	 * @param {type} touch
-	 * @returns {undefined}
-	 */
-	var detect = function(event, touch) {
-		if($.gestures.stoped) {
-			return;
-		}
-		$.doAction('gestures', function(index, gesture) {
-			if(!$.gestures.stoped) {
-				if($.options.gestureConfig[gesture.name] !== false) {
-					gesture.handle(event, touch);
-				}
-			}
-		});
-	};
-	/**
-	 * 暂时无用
-	 * @param {Object} node
-	 * @param {Object} parent
-	 */
-	var hasParent = function(node, parent) {
-		while(node) {
-			if(node == parent) {
-				return true;
-			}
-			node = node.parentNode;
-		}
-		return false;
-	};
-
-	var uniqueArray = function(src, key, sort) {
-		var results = [];
-		var values = [];
-		var i = 0;
-
-		while(i < src.length) {
-			var val = key ? src[i][key] : src[i];
-			if(values.indexOf(val) < 0) {
-				results.push(src[i]);
-			}
-			values[i] = val;
-			i++;
-		}
-
-		if(sort) {
-			if(!key) {
-				results = results.sort();
-			} else {
-				results = results.sort(function sortUniqueArray(a, b) {
-					return a[key] > b[key];
-				});
-			}
-		}
-
-		return results;
-	};
-	var getMultiCenter = function(touches) {
-		var touchesLength = touches.length;
-		if(touchesLength === 1) {
-			return {
-				x: round(touches[0].pageX),
-				y: round(touches[0].pageY)
-			};
-		}
-
-		var x = 0;
-		var y = 0;
-		var i = 0;
-		while(i < touchesLength) {
-			x += touches[i].pageX;
-			y += touches[i].pageY;
-			i++;
-		}
-
-		return {
-			x: round(x / touchesLength),
-			y: round(y / touchesLength)
-		};
-	};
-	var multiTouch = function() {
-		return $.options.gestureConfig.pinch;
-	};
-	var copySimpleTouchData = function(touch) {
-		var touches = [];
-		var i = 0;
-		while(i < touch.touches.length) {
-			touches[i] = {
-				pageX: round(touch.touches[i].pageX),
-				pageY: round(touch.touches[i].pageY)
-			};
-			i++;
-		}
-		return {
-			timestamp: $.now(),
-			gesture: touch.gesture,
-			touches: touches,
-			center: getMultiCenter(touch.touches),
-			deltaX: touch.deltaX,
-			deltaY: touch.deltaY
-		};
-	};
-
-	var calDelta = function(touch) {
-		var session = $.gestures.session;
-		var center = touch.center;
-		var offset = session.offsetDelta || {};
-		var prevDelta = session.prevDelta || {};
-		var prevTouch = session.prevTouch || {};
-
-		if(touch.gesture.type === $.EVENT_START || touch.gesture.type === $.EVENT_END) {
-			prevDelta = session.prevDelta = {
-				x: prevTouch.deltaX || 0,
-				y: prevTouch.deltaY || 0
-			};
-
-			offset = session.offsetDelta = {
-				x: center.x,
-				y: center.y
-			};
-		}
-		touch.deltaX = prevDelta.x + (center.x - offset.x);
-		touch.deltaY = prevDelta.y + (center.y - offset.y);
-	};
-	var calTouchData = function(touch) {
-		var session = $.gestures.session;
-		var touches = touch.touches;
-		var touchesLength = touches.length;
-
-		if(!session.firstTouch) {
-			session.firstTouch = copySimpleTouchData(touch);
-		}
-
-		if(multiTouch() && touchesLength > 1 && !session.firstMultiTouch) {
-			session.firstMultiTouch = copySimpleTouchData(touch);
-		} else if(touchesLength === 1) {
-			session.firstMultiTouch = false;
-		}
-
-		var firstTouch = session.firstTouch;
-		var firstMultiTouch = session.firstMultiTouch;
-		var offsetCenter = firstMultiTouch ? firstMultiTouch.center : firstTouch.center;
-
-		var center = touch.center = getMultiCenter(touches);
-		touch.timestamp = $.now();
-		touch.deltaTime = touch.timestamp - firstTouch.timestamp;
-
-		touch.angle = getAngle(offsetCenter, center);
-		touch.distance = getDistance(offsetCenter, center);
-
-		calDelta(touch);
-
-		touch.offsetDirection = getDirection(touch.deltaX, touch.deltaY);
-
-		touch.scale = firstMultiTouch ? getScale(firstMultiTouch.touches, touches) : 1;
-		touch.rotation = firstMultiTouch ? getRotation(firstMultiTouch.touches, touches) : 0;
-
-		calIntervalTouchData(touch);
-
-	};
-	var CAL_INTERVAL = 25;
-	var calIntervalTouchData = function(touch) {
-		var session = $.gestures.session;
-		var last = session.lastInterval || touch;
-		var deltaTime = touch.timestamp - last.timestamp;
-		var velocity;
-		var velocityX;
-		var velocityY;
-		var direction;
-
-		if(touch.gesture.type != $.EVENT_CANCEL && (deltaTime > CAL_INTERVAL || last.velocity === undefined)) {
-			var deltaX = last.deltaX - touch.deltaX;
-			var deltaY = last.deltaY - touch.deltaY;
-
-			var v = getVelocity(deltaTime, deltaX, deltaY);
-			velocityX = v.x;
-			velocityY = v.y;
-			velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;
-			direction = getDirection(deltaX, deltaY) || last.direction;
-
-			session.lastInterval = touch;
-		} else {
-			velocity = last.velocity;
-			velocityX = last.velocityX;
-			velocityY = last.velocityY;
-			direction = last.direction;
-		}
-
-		touch.velocity = velocity;
-		touch.velocityX = velocityX;
-		touch.velocityY = velocityY;
-		touch.direction = direction;
-	};
-	var targetIds = {};
-	var convertTouches = function(touches) {
-		for(var i = 0; i < touches.length; i++) {
-			!touches['identifier'] && (touches['identifier'] = 0);
-		}
-		return touches;
-	};
-	var getTouches = function(event, touch) {
-		var allTouches = convertTouches($.slice.call(event.touches || [event]));
-
-		var type = event.type;
-
-		var targetTouches = [];
-		var changedTargetTouches = [];
-
-		//当touchstart或touchmove且touches长度为1,直接获得all和changed
-		if((type === $.EVENT_START || type === $.EVENT_MOVE) && allTouches.length === 1) {
-			targetIds[allTouches[0].identifier] = true;
-			targetTouches = allTouches;
-			changedTargetTouches = allTouches;
-			touch.target = event.target;
-		} else {
-			var i = 0;
-			var targetTouches = [];
-			var changedTargetTouches = [];
-			var changedTouches = convertTouches($.slice.call(event.changedTouches || [event]));
-
-			touch.target = event.target;
-			var sessionTarget = $.gestures.session.target || event.target;
-			targetTouches = allTouches.filter(function(touch) {
-				return hasParent(touch.target, sessionTarget);
-			});
-
-			if(type === $.EVENT_START) {
-				i = 0;
-				while(i < targetTouches.length) {
-					targetIds[targetTouches[i].identifier] = true;
-					i++;
-				}
-			}
-
-			i = 0;
-			while(i < changedTouches.length) {
-				if(targetIds[changedTouches[i].identifier]) {
-					changedTargetTouches.push(changedTouches[i]);
-				}
-				if(type === $.EVENT_END || type === $.EVENT_CANCEL) {
-					delete targetIds[changedTouches[i].identifier];
-				}
-				i++;
-			}
-
-			if(!changedTargetTouches.length) {
-				return false;
-			}
-		}
-		targetTouches = uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true);
-		var touchesLength = targetTouches.length;
-		var changedTouchesLength = changedTargetTouches.length;
-		if(type === $.EVENT_START && touchesLength - changedTouchesLength === 0) { //first
-			touch.isFirst = true;
-			$.gestures.touch = $.gestures.session = {
-				target: event.target
-			};
-		}
-		touch.isFinal = ((type === $.EVENT_END || type === $.EVENT_CANCEL) && (touchesLength - changedTouchesLength === 0));
-
-		touch.touches = targetTouches;
-		touch.changedTouches = changedTargetTouches;
-		return true;
-
-	};
-	var handleTouchEvent = function(event) {
-		var touch = {
-			gesture: event
-		};
-		var touches = getTouches(event, touch);
-		if(!touches) {
-			return;
-		}
-		calTouchData(touch);
-		detect(event, touch);
-		$.gestures.session.prevTouch = touch;
-		if(event.type === $.EVENT_END && !$.isTouchable) {
-			$.gestures.touch = $.gestures.session = {};
-		}
-	};
-	var supportsPassive = (function checkPassiveListener() {
-		var supportsPassive = false;
-		try {
-			var opts = Object.defineProperty({}, 'passive', {
-				get: function get() {
-					supportsPassive = true;
-				},
-			});
-			window.addEventListener('testPassiveListener', null, opts);
-		} catch(e) {
-			// No support
-		}
-		return supportsPassive;
-	}())
-	window.addEventListener($.EVENT_START, handleTouchEvent);
-	window.addEventListener($.EVENT_MOVE, handleTouchEvent, supportsPassive ? {
-		passive: false,
-		capture: false
-	} : false);
-	window.addEventListener($.EVENT_END, handleTouchEvent);
-	window.addEventListener($.EVENT_CANCEL, handleTouchEvent);
-	//fixed hashchange(android)
-	window.addEventListener($.EVENT_CLICK, function(e) {
-		//TODO 应该判断当前target是不是在targets.popover内部,而不是非要相等
-		if(($.os.android || $.os.ios) && (($.targets.popover && e.target === $.targets.popover) || ($.targets.tab) || $.targets.offcanvas || $.targets.modal)) {
-			e.preventDefault();
-		}
-	}, true);
-
-	//增加原生滚动识别
-	$.isScrolling = false;
-	var scrollingTimeout = null;
-	window.addEventListener('scroll', function() {
-		$.isScrolling = true;
-		scrollingTimeout && clearTimeout(scrollingTimeout);
-		scrollingTimeout = setTimeout(function() {
-			$.isScrolling = false;
-		}, 250);
-	});
-})(mui, window);
-/**
- * mui gesture flick[left|right|up|down]
- * @param {type} $
- * @param {type} name
- * @returns {undefined}
- */
-(function($, name) {
-	var flickStartTime = 0;
-	var handle = function(event, touch) {
-		var session = $.gestures.session;
-		var options = this.options;
-		var now = $.now();
-		switch (event.type) {
-			case $.EVENT_MOVE:
-				if (now - flickStartTime > 300) {
-					flickStartTime = now;
-					session.flickStart = touch.center;
-				}
-				break;
-			case $.EVENT_END:
-			case $.EVENT_CANCEL:
-				touch.flick = false;
-				if (session.flickStart && options.flickMaxTime > (now - flickStartTime) && touch.distance > options.flickMinDistince) {
-					touch.flick = true;
-					touch.flickTime = now - flickStartTime;
-					touch.flickDistanceX = touch.center.x - session.flickStart.x;
-					touch.flickDistanceY = touch.center.y - session.flickStart.y;
-					$.trigger(session.target, name, touch);
-					$.trigger(session.target, name + touch.direction, touch);
-				}
-				break;
-		}
-
-	};
-	/**
-	 * mui gesture flick
-	 */
-	$.addGesture({
-		name: name,
-		index: 5,
-		handle: handle,
-		options: {
-			flickMaxTime: 200,
-			flickMinDistince: 10
-		}
-	});
-})(mui, 'flick');
-/**
- * mui gesture swipe[left|right|up|down]
- * @param {type} $
- * @param {type} name
- * @returns {undefined}
- */
-(function($, name) {
-	var handle = function(event, touch) {
-		var session = $.gestures.session;
-		if (event.type === $.EVENT_END || event.type === $.EVENT_CANCEL) {
-			var options = this.options;
-			touch.swipe = false;
-			//TODO 后续根据velocity计算
-			if (touch.direction && options.swipeMaxTime > touch.deltaTime && touch.distance > options.swipeMinDistince) {
-				touch.swipe = true;
-				$.trigger(session.target, name, touch);
-				$.trigger(session.target, name + touch.direction, touch);
-			}
-		}
-	};
-	/**
-	 * mui gesture swipe
-	 */
-	$.addGesture({
-		name: name,
-		index: 10,
-		handle: handle,
-		options: {
-			swipeMaxTime: 300,
-			swipeMinDistince: 18
-		}
-	});
-})(mui, 'swipe');
-/**
- * mui gesture drag[start|left|right|up|down|end]
- * @param {type} $
- * @param {type} name
- * @returns {undefined}
- */
-(function($, name) {
-	var handle = function(event, touch) {
-		var session = $.gestures.session;
-		switch (event.type) {
-			case $.EVENT_START:
-				break;
-			case $.EVENT_MOVE:
-				if (!touch.direction || !session.target) {
-					return;
-				}
-				//修正direction,可在session期间自行锁定拖拽方向,方便开发scroll类不同方向拖拽插件嵌套
-				if (session.lockDirection && session.startDirection) {
-					if (session.startDirection && session.startDirection !== touch.direction) {
-						if (session.startDirection === 'up' || session.startDirection === 'down') {
-							touch.direction = touch.deltaY < 0 ? 'up' : 'down';
-						} else {
-							touch.direction = touch.deltaX < 0 ? 'left' : 'right';
-						}
-					}
-				}
-
-				if (!session.drag) {
-					session.drag = true;
-					$.trigger(session.target, name + 'start', touch);
-				}
-				$.trigger(session.target, name, touch);
-				$.trigger(session.target, name + touch.direction, touch);
-				break;
-			case $.EVENT_END:
-			case $.EVENT_CANCEL:
-				if (session.drag && touch.isFinal) {
-					$.trigger(session.target, name + 'end', touch);
-				}
-				break;
-		}
-	};
-	/**
-	 * mui gesture drag
-	 */
-	$.addGesture({
-		name: name,
-		index: 20,
-		handle: handle,
-		options: {
-			fingers: 1
-		}
-	});
-})(mui, 'drag');
-/**
- * mui gesture tap and doubleTap
- * @param {type} $
- * @param {type} name
- * @returns {undefined}
- */
-(function($, name) {
-	var lastTarget;
-	var lastTapTime;
-	var handle = function(event, touch) {
-		var session = $.gestures.session;
-		var options = this.options;
-		switch (event.type) {
-			case $.EVENT_END:
-				if (!touch.isFinal) {
-					return;
-				}
-				var target = session.target;
-				if (!target || (target.disabled || (target.classList && target.classList.contains('mui-disabled')))) {
-					return;
-				}
-				if (touch.distance < options.tapMaxDistance && touch.deltaTime < options.tapMaxTime) {
-					if ($.options.gestureConfig.doubletap && lastTarget && (lastTarget === target)) { //same target
-						if (lastTapTime && (touch.timestamp - lastTapTime) < options.tapMaxInterval) {
-							$.trigger(target, 'doubletap', touch);
-							lastTapTime = $.now();
-							lastTarget = target;
-							return;
-						}
-					}
-					$.trigger(target, name, touch);
-					lastTapTime = $.now();
-					lastTarget = target;
-				}
-				break;
-		}
-	};
-	/**
-	 * mui gesture tap
-	 */
-	$.addGesture({
-		name: name,
-		index: 30,
-		handle: handle,
-		options: {
-			fingers: 1,
-			tapMaxInterval: 300,
-			tapMaxDistance: 5,
-			tapMaxTime: 250
-		}
-	});
-})(mui, 'tap');
-/**
- * mui gesture longtap
- * @param {type} $
- * @param {type} name
- * @returns {undefined}
- */
-(function($, name) {
-	var timer;
-	var handle = function(event, touch) {
-		var session = $.gestures.session;
-		var options = this.options;
-		switch (event.type) {
-			case $.EVENT_START:
-				clearTimeout(timer);
-				timer = setTimeout(function() {
-					$.trigger(session.target, name, touch);
-				}, options.holdTimeout);
-				break;
-			case $.EVENT_MOVE:
-				if (touch.distance > options.holdThreshold) {
-					clearTimeout(timer);
-				}
-				break;
-			case $.EVENT_END:
-			case $.EVENT_CANCEL:
-				clearTimeout(timer);
-				break;
-		}
-	};
-	/**
-	 * mui gesture longtap
-	 */
-	$.addGesture({
-		name: name,
-		index: 10,
-		handle: handle,
-		options: {
-			fingers: 1,
-			holdTimeout: 500,
-			holdThreshold: 2
-		}
-	});
-})(mui, 'longtap');
-/**
- * mui gesture hold
- * @param {type} $
- * @param {type} name
- * @returns {undefined}
- */
-(function($, name) {
-	var timer;
-	var handle = function(event, touch) {
-		var session = $.gestures.session;
-		var options = this.options;
-		switch (event.type) {
-			case $.EVENT_START:
-				if ($.options.gestureConfig.hold) {
-					timer && clearTimeout(timer);
-					timer = setTimeout(function() {
-						touch.hold = true;
-						$.trigger(session.target, name, touch);
-					}, options.holdTimeout);
-				}
-				break;
-			case $.EVENT_MOVE:
-				break;
-			case $.EVENT_END:
-			case $.EVENT_CANCEL:
-				if (timer) {
-					clearTimeout(timer) && (timer = null);
-					$.trigger(session.target, 'release', touch);
-				}
-				break;
-		}
-	};
-	/**
-	 * mui gesture hold
-	 */
-	$.addGesture({
-		name: name,
-		index: 10,
-		handle: handle,
-		options: {
-			fingers: 1,
-			holdTimeout: 0
-		}
-	});
-})(mui, 'hold');
-/**
- * mui gesture pinch
- * @param {type} $
- * @param {type} name
- * @returns {undefined}
- */
-(function($, name) {
-	var handle = function(event, touch) {
-		var options = this.options;
-		var session = $.gestures.session;
-		switch (event.type) {
-			case $.EVENT_START:
-				break;
-			case $.EVENT_MOVE:
-				if ($.options.gestureConfig.pinch) {
-					if (touch.touches.length < 2) {
-						return;
-					}
-					if (!session.pinch) { //start
-						session.pinch = true;
-						$.trigger(session.target, name + 'start', touch);
-					}
-					$.trigger(session.target, name, touch);
-					var scale = touch.scale;
-					var rotation = touch.rotation;
-					var lastScale = typeof touch.lastScale === 'undefined' ? 1 : touch.lastScale;
-					var scaleDiff = 0.000000000001; //防止scale与lastScale相等,不触发事件的情况。
-					if (scale > lastScale) { //out
-						lastScale = scale - scaleDiff;
-						$.trigger(session.target, name + 'out', touch);
-					} //in
-					else if (scale < lastScale) {
-						lastScale = scale + scaleDiff;
-						$.trigger(session.target, name + 'in', touch);
-					}
-					if (Math.abs(rotation) > options.minRotationAngle) {
-						$.trigger(session.target, 'rotate', touch);
-					}
-				}
-				break;
-			case $.EVENT_END:
-			case $.EVENT_CANCEL:
-				if ($.options.gestureConfig.pinch && session.pinch && touch.touches.length === 2) {
-					session.pinch = false;
-					$.trigger(session.target, name + 'end', touch);
-				}
-				break;
-		}
-	};
-	/**
-	 * mui gesture pinch
-	 */
-	$.addGesture({
-		name: name,
-		index: 10,
-		handle: handle,
-		options: {
-			minRotationAngle: 0
-		}
-	});
-})(mui, 'pinch');
-/**
- * mui.init
- * @param {type} $
- * @returns {undefined}
- */
-(function($) {
-	$.global = $.options = {
-		gestureConfig: {
-			tap: true,
-			doubletap: false,
-			longtap: false,
-			hold: false,
-			flick: true,
-			swipe: true,
-			drag: true,
-			pinch: false
-		}
-	};
-	/**
-	 *
-	 * @param {type} options
-	 * @returns {undefined}
-	 */
-	$.initGlobal = function(options) {
-		$.options = $.extend(true, $.global, options);
-		return this;
-	};
-	var inits = {};
-
-	/**
-	 * 单页配置 初始化
-	 * @param {object} options
-	 */
-	$.init = function(options) {
-		$.options = $.extend(true, $.global, options || {});
-		$.ready(function() {
-			$.doAction('inits', function(index, init) {
-				var isInit = !!(!inits[init.name] || init.repeat);
-				if (isInit) {
-					init.handle.call($);
-					inits[init.name] = true;
-				}
-			});
-		});
-		return this;
-	};
-
-	/**
-	 * 增加初始化执行流程
-	 * @param {function} init
-	 */
-	$.addInit = function(init) {
-		return $.addAction('inits', init);
-	};
-	/**
-	 * 处理html5版本subpages 
-	 */
-	$.addInit({
-		name: 'iframe',
-		index: 100,
-		handle: function() {
-			var options = $.options;
-			var subpages = options.subpages || [];
-			if (!$.os.plus && subpages.length) {
-				//暂时只处理单个subpage。后续可以考虑支持多个subpage
-				createIframe(subpages[0]);
-			}
-		}
-	});
-	var createIframe = function(options) {
-		var wrapper = document.createElement('div');
-		wrapper.className = 'mui-iframe-wrapper';
-		var styles = options.styles || {};
-		if (typeof styles.top !== 'string') {
-			styles.top = '0px';
-		}
-		if (typeof styles.bottom !== 'string') {
-			styles.bottom = '0px';
-		}
-		wrapper.style.top = styles.top;
-		wrapper.style.bottom = styles.bottom;
-		var iframe = document.createElement('iframe');
-		iframe.src = options.url;
-		iframe.id = options.id || options.url;
-		iframe.name = iframe.id;
-		wrapper.appendChild(iframe);
-		document.body.appendChild(wrapper);
-		//目前仅处理微信
-		$.os.wechat && handleScroll(wrapper, iframe);
-	};
-
-	function handleScroll(wrapper, iframe) {
-		var key = 'MUI_SCROLL_POSITION_' + document.location.href + '_' + iframe.src;
-		var scrollTop = (parseFloat(localStorage.getItem(key)) || 0);
-		if (scrollTop) {
-			(function(y) {
-				iframe.onload = function() {
-					window.scrollTo(0, y);
-				};
-			})(scrollTop);
-		}
-		setInterval(function() {
-			var _scrollTop = window.scrollY;
-			if (scrollTop !== _scrollTop) {
-				localStorage.setItem(key, _scrollTop + '');
-				scrollTop = _scrollTop;
-			}
-		}, 100);
-	};
-	$(function() {
-		var classList = document.body.classList;
-		var os = [];
-		if ($.os.ios) {
-			os.push({
-				os: 'ios',
-				version: $.os.version
-			});
-			classList.add('mui-ios');
-		} else if ($.os.android) {
-			os.push({
-				os: 'android',
-				version: $.os.version
-			});
-			classList.add('mui-android');
-		}
-		if ($.os.wechat) {
-			os.push({
-				os: 'wechat',
-				version: $.os.wechat.version
-			});
-			classList.add('mui-wechat');
-		}
-		if (os.length) {
-			$.each(os, function(index, osObj) {
-				var version = '';
-				var classArray = [];
-				if (osObj.version) {
-					$.each(osObj.version.split('.'), function(i, v) {
-						version = version + (version ? '-' : '') + v;
-						classList.add($.className(osObj.os + '-' + version));
-					});
-				}
-			});
-		}
-	});
-})(mui);
-/**
- * mui.init 5+
- * @param {type} $
- * @returns {undefined}
- */
-(function($) {
-	var defaultOptions = {
-		swipeBack: false,
-		preloadPages: [], //5+ lazyLoad webview
-		preloadLimit: 10, //预加载窗口的数量限制(一旦超出,先进先出)
-		keyEventBind: {
-			backbutton: true,
-			menubutton: true
-		},
-		titleConfig: {
-			height: "44px",
-			backgroundColor: "#f7f7f7", //导航栏背景色
-			bottomBorderColor: "#cccccc", //底部边线颜色
-			title: { //标题配置
-				text: "", //标题文字
-				position: {
-					top: 0,
-					left: 0,
-					width: "100%",
-					height: "100%"
-				},
-				styles: {
-					color: "#000000",
-					align: "center",
-					family: "'Helvetica Neue',Helvetica,sans-serif",
-					size: "17px",
-					style: "normal",
-					weight: "normal",
-					fontSrc: ""
-				}
-			},
-			back: {
-				image: {
-					base64Data: '',
-					imgSrc: '',
-					sprite: {
-						top: '0px',
-						left: '0px',
-						width: '100%',
-						height: '100%'
-					},
-					position: {
-						top: "10px",
-						left: "10px",
-						width: "24px",
-						height: "24px"
-					}
-				}
-			}
-		}
-	};
-
-	//默认页面动画
-	var defaultShow = {
-		event:"titleUpdate",
-		autoShow: true,
-		duration: 300,
-		aniShow: 'slide-in-right',
-		extras:{}
-	};
-	//若执行了显示动画初始化操作,则要覆盖默认配置
-	if($.options.show) {
-		defaultShow = $.extend(true, defaultShow, $.options.show);
-	}
-
-	$.currentWebview = null;
-
-	$.extend(true, $.global, defaultOptions);
-	$.extend(true, $.options, defaultOptions);
-	/**
-	 * 等待动画配置
-	 * @param {type} options
-	 * @returns {Object}
-	 */
-	$.waitingOptions = function(options) {
-		return $.extend(true, {}, {
-			autoShow: true,
-			title: '',
-			modal: false
-		}, options);
-	};
-	/**
-	 * 窗口显示配置
-	 * @param {type} options
-	 * @returns {Object}
-	 */
-	$.showOptions = function(options) {
-		return $.extend(true, {}, defaultShow, options);
-	};
-	/**
-	 * 窗口默认配置
-	 * @param {type} options
-	 * @returns {Object}
-	 */
-	$.windowOptions = function(options) {
-		return $.extend({
-			scalable: false,
-			bounce: "" //vertical
-		}, options);
-	};
-	/**
-	 * plusReady
-	 * @param {type} callback
-	 * @returns {_L6.$}
-	 */
-	$.plusReady = function(callback) {
-		if(window.plus) {
-			setTimeout(function() { //解决callback与plusready事件的执行时机问题(典型案例:showWaiting,closeWaiting)
-				callback();
-			}, 0);
-		} else {
-			document.addEventListener("plusready", function() {
-				callback();
-			}, false);
-		}
-		return this;
-	};
-	/**
-	 * 5+ event(5+没提供之前我自己实现)
-	 * @param {type} webview
-	 * @param {type} eventType
-	 * @param {type} data
-	 * @returns {undefined}
-	 */
-	$.fire = function(webview, eventType, data) {
-		if(webview) {
-			if(typeof data === 'undefined') {
-				data = '';
-			} else if(typeof data === 'boolean' || typeof data === 'number') {
-				webview.evalJS("typeof mui!=='undefined'&&mui.receive('" + eventType + "'," + data + ")");
-				return;
-			} else if($.isPlainObject(data) || $.isArray(data)) {
-				data = JSON.stringify(data || {}).replace(/\'/g, "\\u0027").replace(/\\/g, "\\u005c");
-			}
-			webview.evalJS("typeof mui!=='undefined'&&mui.receive('" + eventType + "','" + data + "')");
-		}
-	};
-	/**
-	 * 5+ event(5+没提供之前我自己实现)
-	 * @param {type} eventType
-	 * @param {type} data
-	 * @returns {undefined}
-	 */
-	$.receive = function(eventType, data) {
-		if(eventType) {
-			try {
-				if(data && typeof data === 'string') {
-					data = JSON.parse(data);
-				}
-			} catch(e) {}
-			$.trigger(document, eventType, data);
-		}
-	};
-	var triggerPreload = function(webview) {
-		if(!webview.preloaded) { //保证仅触发一次
-			$.fire(webview, 'preload');
-			var list = webview.children();
-			for(var i = 0; i < list.length; i++) {
-				$.fire(list[i], 'preload');
-			}
-			webview.preloaded = true;
-		}
-	};
-	var trigger = function(webview, eventType, timeChecked) {
-		if(timeChecked) {
-			if(!webview[eventType + 'ed']) {
-				$.fire(webview, eventType);
-				var list = webview.children();
-				for(var i = 0; i < list.length; i++) {
-					$.fire(list[i], eventType);
-				}
-				webview[eventType + 'ed'] = true;
-			}
-		} else {
-			$.fire(webview, eventType);
-			var list = webview.children();
-			for(var i = 0; i < list.length; i++) {
-				$.fire(list[i], eventType);
-			}
-		}
-
-	};
-	/**
-	 * 打开新窗口
-	 * @param {string} url 要打开的页面地址
-	 * @param {string} id 指定页面ID
-	 * @param {object} options 可选:参数,等待,窗口,显示配置{params:{},waiting:{},styles:{},show:{}}
-	 */
-	$.openWindow = function(url, id, options) {
-		if(typeof url === 'object') {
-			options = url;
-			url = options.url;
-			id = options.id || url;
-		} else {
-			if(typeof id === 'object') {
-				options = id;
-				id = options.id || url;
-			} else {
-				id = id || url;
-			}
-		}
-		if(!$.os.plus) {
-			//TODO 先临时这么处理:手机上顶层跳,PC上parent跳
-			if($.os.ios || $.os.android) {
-				window.top.location.href = url;
-			} else {
-				window.parent.location.href = url;
-			}
-			return;
-		}
-		if(!window.plus) {
-			return;
-		}
-
-		options = options || {};
-		var params = options.params || {};
-		var webview = null,
-			webviewCache = null,
-			nShow, nWaiting;
-
-		if($.webviews[id]) {
-			webviewCache = $.webviews[id];
-			//webview真实存在,才能获取
-			if(plus.webview.getWebviewById(id)) {
-				webview = webviewCache.webview;
-			}
-		} else if(options.createNew !== true) {
-			webview = plus.webview.getWebviewById(id);
-		}
-
-		if(webview) { //已缓存
-			//每次show都需要传递动画参数;
-			//预加载的动画参数优先级:openWindow配置>preloadPages配置>mui默认配置;
-			nShow = webviewCache ? webviewCache.show : defaultShow;
-			nShow = options.show ? $.extend(nShow, options.show) : nShow;
-			nShow.autoShow && webview.show(nShow.aniShow, nShow.duration, function() {
-				triggerPreload(webview);
-				trigger(webview, 'pagebeforeshow', false);
-			});
-			if(webviewCache) {
-				webviewCache.afterShowMethodName && webview.evalJS(webviewCache.afterShowMethodName + '(\'' + JSON.stringify(params) + '\')');
-			}
-			return webview;
-		} else { //新窗口
-			if(!url) {
-				throw new Error('webview[' + id + '] does not exist');
-			}
-
-			//显示waiting
-			var waitingConfig = $.waitingOptions(options.waiting);
-			if(waitingConfig.autoShow) {
-				nWaiting = plus.nativeUI.showWaiting(waitingConfig.title, waitingConfig.options);
-			}
-
-			//创建页面
-			options = $.extend(options, {
-				id: id,
-				url: url
-			});
-
-			webview = $.createWindow(options);
-
-			//显示
-			nShow = $.showOptions(options.show);
-			if(nShow.autoShow) {
-				var showWebview = function() {
-					//关闭等待框
-					if(nWaiting) {
-						nWaiting.close();
-					}
-					//显示页面
-					webview.show(nShow.aniShow, nShow.duration, function() {},nShow.extras);
-					options.afterShowMethodName && webview.evalJS(options.afterShowMethodName + '(\'' + JSON.stringify(params) + '\')');
-				};
-				//titleUpdate触发时机早于loaded,更换为titleUpdate后,可以更早的显示webview
-				webview.addEventListener(nShow.event, showWebview, false);
-				//loaded事件发生后,触发预加载和pagebeforeshow事件
-				webview.addEventListener("loaded", function() {
-					triggerPreload(webview);
-					trigger(webview, 'pagebeforeshow', false);
-				}, false);
-			}
-		}
-		return webview;
-	};
-
-	$.openWindowWithTitle = function(options, titleConfig) {
-		options = options || {};
-		var url = options.url;
-		var id = options.id || url;
-
-		if(!$.os.plus) {
-			//TODO 先临时这么处理:手机上顶层跳,PC上parent跳
-			if($.os.ios || $.os.android) {
-				window.top.location.href = url;
-			} else {
-				window.parent.location.href = url;
-			}
-			return;
-		}
-		if(!window.plus) {
-			return;
-		}
-
-		var params = options.params || {};
-		var webview = null,
-			webviewCache = null,
-			nShow, nWaiting;
-
-		if($.webviews[id]) {
-			webviewCache = $.webviews[id];
-			//webview真实存在,才能获取
-			if(plus.webview.getWebviewById(id)) {
-				webview = webviewCache.webview;
-			}
-		} else if(options.createNew !== true) {
-			webview = plus.webview.getWebviewById(id);
-		}
-
-		if(webview) { //已缓存
-			//每次show都需要传递动画参数;
-			//预加载的动画参数优先级:openWindow配置>preloadPages配置>mui默认配置;
-			nShow = webviewCache ? webviewCache.show : defaultShow;
-			nShow = options.show ? $.extend(nShow, options.show) : nShow;
-			nShow.autoShow && webview.show(nShow.aniShow, nShow.duration, function() {
-				triggerPreload(webview);
-				trigger(webview, 'pagebeforeshow', false);
-			});
-			if(webviewCache) {
-				webviewCache.afterShowMethodName && webview.evalJS(webviewCache.afterShowMethodName + '(\'' + JSON.stringify(params) + '\')');
-			}
-			return webview;
-		} else { //新窗口
-			if(!url) {
-				throw new Error('webview[' + id + '] does not exist');
-			}
-
-			//显示waiting
-			var waitingConfig = $.waitingOptions(options.waiting);
-			if(waitingConfig.autoShow) {
-				nWaiting = plus.nativeUI.showWaiting(waitingConfig.title, waitingConfig.options);
-			}
-
-			//创建页面
-			options = $.extend(options, {
-				id: id,
-				url: url
-			});
-
-			webview = $.createWindow(options);
-
-			if(titleConfig) { //处理原生头
-				$.extend(true, $.options.titleConfig, titleConfig);
-				var tid = $.options.titleConfig.id ? $.options.titleConfig.id : id + "_title";
-				var view = new plus.nativeObj.View(tid, {
-					top: 0,
-					height: $.options.titleConfig.height,
-					width: "100%",
-					dock: "top",
-					position: "dock"
-				});
-				view.drawRect($.options.titleConfig.backgroundColor); //绘制背景色
-				var _b = parseInt($.options.titleConfig.height) - 1;
-				view.drawRect($.options.titleConfig.bottomBorderColor, {
-					top: _b + "px",
-					left: "0px"
-				}); //绘制底部边线
-
-				//绘制文字
-				if($.options.titleConfig.title.text){
-					var _title = $.options.titleConfig.title;
-					view.drawText(_title.text,_title.position , _title.styles);
-				}
-				
-				//返回图标绘制
-				var _back = $.options.titleConfig.back;
-				var backClick = null;
-				//优先字体
-
-				//其次是图片
-				var _backImage = _back.image;
-				if(_backImage.base64Data || _backImage.imgSrc) {
-					//TODO 此处需要处理百分比的情况
-					backClick = {
-						left:parseInt(_backImage.position.left),
-						right:parseInt(_backImage.position.left) + parseInt(_backImage.position.width)
-					};
-					var bitmap = new plus.nativeObj.Bitmap(id + "_back");
-					if(_backImage.base64Data) { //优先base64编码字符串
-						bitmap.loadBase64Data(_backImage.base64Data);
-					} else { //其次加载图片文件
-						bitmap.load(_backImage.imgSrc);
-					}
-					view.drawBitmap(bitmap,_backImage.sprite , _backImage.position);
-				}
-
-				//处理点击事件
-				view.setTouchEventRect({
-					top: "0px",
-					left: "0px",
-					width: "100%",
-					height: "100%"
-				});
-				view.interceptTouchEvent(true);
-				view.addEventListener("click", function(e) {
-					var x = e.clientX;
-					
-					//返回按钮点击
-					if(backClick&& x > backClick.left && x < backClick.right){
-						if( _back.click && $.isFunction(_back.click)){
-							_back.click();
-						}else{
-							webview.evalJS("window.mui&&mui.back();");
-						}
-					}
-				}, false);
-				webview.append(view);
-
-			}
-
-			//显示
-			nShow = $.showOptions(options.show);
-			if(nShow.autoShow) {
-				//titleUpdate触发时机早于loaded,更换为titleUpdate后,可以更早的显示webview
-				webview.addEventListener(nShow.event, function () {
-					//关闭等待框
-					if(nWaiting) {
-						nWaiting.close();
-					}
-					//显示页面
-					webview.show(nShow.aniShow, nShow.duration, function() {},nShow.extras);
-				}, false);
-			}
-		}
-		return webview;
-	};
-
-	/**
-	 * 根据配置信息创建一个webview
-	 * @param {type} options
-	 * @param {type} isCreate
-	 * @returns {webview}
-	 */
-	$.createWindow = function(options, isCreate) {
-		if(!window.plus) {
-			return;
-		}
-		var id = options.id || options.url;
-		var webview;
-		if(options.preload) {
-			if($.webviews[id] && $.webviews[id].webview.getURL()) { //已经cache
-				webview = $.webviews[id].webview;
-			} else { //新增预加载窗口
-				//判断是否携带createNew参数,默认为false
-				if(options.createNew !== true) {
-					webview = plus.webview.getWebviewById(id);
-				}
-
-				//之前没有,那就新创建	
-				if(!webview) {
-					webview = plus.webview.create(options.url, id, $.windowOptions(options.styles), $.extend({
-						preload: true
-					}, options.extras));
-					if(options.subpages) {
-						$.each(options.subpages, function(index, subpage) {
-							var subpageId = subpage.id || subpage.url;
-							if(subpageId) { //过滤空对象
-								var subWebview = plus.webview.getWebviewById(subpageId);
-								if(!subWebview) { //如果该webview不存在,则创建
-									subWebview = plus.webview.create(subpage.url, subpageId, $.windowOptions(subpage.styles), $.extend({
-										preload: true
-									}, subpage.extras));
-								}
-								webview.append(subWebview);
-							}
-						});
-					}
-				}
-			}
-
-			//TODO 理论上,子webview也应该计算到预加载队列中,但这样就麻烦了,要退必须退整体,否则可能出现问题;
-			$.webviews[id] = {
-				webview: webview, //目前仅preload的缓存webview
-				preload: true,
-				show: $.showOptions(options.show),
-				afterShowMethodName: options.afterShowMethodName //就不应该用evalJS。应该是通过事件消息通讯
-			};
-			//索引该预加载窗口
-			var preloads = $.data.preloads;
-			var index = preloads.indexOf(id);
-			if(~index) { //删除已存在的(变相调整插入位置)
-				preloads.splice(index, 1);
-			}
-			preloads.push(id);
-			if(preloads.length > $.options.preloadLimit) {
-				//先进先出
-				var first = $.data.preloads.shift();
-				var webviewCache = $.webviews[first];
-				if(webviewCache && webviewCache.webview) {
-					//需要将自己打开的所有页面,全部close;
-					//关闭该预加载webview	
-					$.closeAll(webviewCache.webview);
-				}
-				//删除缓存
-				delete $.webviews[first];
-			}
-		} else {
-			if(isCreate !== false) { //直接创建非预加载窗口
-				webview = plus.webview.create(options.url, id, $.windowOptions(options.styles), options.extras);
-				if(options.subpages) {
-					$.each(options.subpages, function(index, subpage) {
-						var subpageId = subpage.id || subpage.url;
-						var subWebview = plus.webview.getWebviewById(subpageId);
-						if(!subWebview) {
-							subWebview = plus.webview.create(subpage.url, subpageId, $.windowOptions(subpage.styles), subpage.extras);
-						}
-						webview.append(subWebview);
-					});
-				}
-			}
-		}
-		return webview;
-	};
-
-	/**
-	 * 预加载
-	 */
-	$.preload = function(options) {
-		//调用预加载函数,不管是否传递preload参数,强制变为true
-		if(!options.preload) {
-			options.preload = true;
-		}
-		return $.createWindow(options);
-	};
-
-	/**
-	 *关闭当前webview打开的所有webview;
-	 */
-	$.closeOpened = function(webview) {
-		var opened = webview.opened();
-		if(opened) {
-			for(var i = 0, len = opened.length; i < len; i++) {
-				var openedWebview = opened[i];
-				var open_open = openedWebview.opened();
-				if(open_open && open_open.length > 0) {
-					//关闭打开的webview
-					$.closeOpened(openedWebview);
-					//关闭自己
-					openedWebview.close("none");
-				} else {
-					//如果直接孩子节点,就不用关闭了,因为父关闭的时候,会自动关闭子;
-					if(openedWebview.parent() !== webview) {
-						openedWebview.close('none');
-					}
-				}
-			}
-		}
-	};
-	$.closeAll = function(webview, aniShow) {
-		$.closeOpened(webview);
-		if(aniShow) {
-			webview.close(aniShow);
-		} else {
-			webview.close();
-		}
-	};
-
-	/**
-	 * 批量创建webview
-	 * @param {type} options
-	 * @returns {undefined}
-	 */
-	$.createWindows = function(options) {
-		$.each(options, function(index, option) {
-			//初始化预加载窗口(创建)和非预加载窗口(仅配置,不创建)
-			$.createWindow(option, false);
-		});
-	};
-	/**
-	 * 创建当前页面的子webview
-	 * @param {type} options
-	 * @returns {webview}
-	 */
-	$.appendWebview = function(options) {
-		if(!window.plus) {
-			return;
-		}
-		var id = options.id || options.url;
-		var webview;
-		if(!$.webviews[id]) { //保证执行一遍
-			//TODO 这里也有隐患,比如某个webview不是作为subpage创建的,而是作为target webview的话;
-			if(!plus.webview.getWebviewById(id)) {
-				webview = plus.webview.create(options.url, id, options.styles, options.extras);
-			}
-			//之前的实现方案:子窗口loaded之后再append到父窗口中;
-			//问题:部分子窗口loaded事件发生较晚,此时执行父窗口的children方法会返回空,导致父子通讯失败;
-			//     比如父页面执行完preload事件后,需触发子页面的preload事件,此时未append的话,就无法触发;
-			//修改方式:不再监控loaded事件,直接append
-			//by chb@20150521
-			// webview.addEventListener('loaded', function() {
-			plus.webview.currentWebview().append(webview);
-			// });
-			$.webviews[id] = options;
-
-		}
-		return webview;
-	};
-
-	//全局webviews
-	$.webviews = {};
-	//预加载窗口索引
-	$.data.preloads = [];
-	//$.currentWebview
-	$.plusReady(function() {
-		$.currentWebview = plus.webview.currentWebview();
-	});
-	$.addInit({
-		name: '5+',
-		index: 100,
-		handle: function() {
-			var options = $.options;
-			var subpages = options.subpages || [];
-			if($.os.plus) {
-				$.plusReady(function() {
-					//TODO  这里需要判断一下,最好等子窗口加载完毕后,再调用主窗口的show方法;
-					//或者:在openwindow方法中,监听实现;
-					$.each(subpages, function(index, subpage) {
-						$.appendWebview(subpage);
-					});
-					//判断是否首页
-					if(plus.webview.currentWebview() === plus.webview.getWebviewById(plus.runtime.appid)) {
-						//首页需要自己激活预加载;
-						//timeout因为子页面loaded之后才append的,防止子页面尚未append、从而导致其preload未触发的问题;
-						setTimeout(function() {
-							triggerPreload(plus.webview.currentWebview());
-						}, 300);
-					}
-					//设置ios顶部状态栏颜色;
-					if($.os.ios && $.options.statusBarBackground) {
-						plus.navigator.setStatusBarBackground($.options.statusBarBackground);
-					}
-					if($.os.android && parseFloat($.os.version) < 4.4) {
-						//解决Android平台4.4版本以下,resume后,父窗体标题延迟渲染的问题;
-						if(plus.webview.currentWebview().parent() == null) {
-							document.addEventListener("resume", function() {
-								var body = document.body;
-								body.style.display = 'none';
-								setTimeout(function() {
-									body.style.display = '';
-								}, 10);
-							});
-						}
-					}
-				});
-			} else {
-				//已支持iframe嵌入
-				//				if (subpages.length > 0) {
-				//					var err = document.createElement('div');
-				//					err.className = 'mui-error';
-				//					//文字描述
-				//					var span = document.createElement('span');
-				//					span.innerHTML = '在该浏览器下,不支持创建子页面,具体参考';
-				//					err.appendChild(span);
-				//					var a = document.createElement('a');
-				//					a.innerHTML = '"mui框架适用场景"';
-				//					a.href = 'http://ask.dcloud.net.cn/article/113';
-				//					err.appendChild(a);
-				//					document.body.appendChild(err);
-				//					console.log('在该浏览器下,不支持创建子页面');
-				//				}
-
-			}
-
-		}
-	});
-	window.addEventListener('preload', function() {
-		//处理预加载部分
-		var webviews = $.options.preloadPages || [];
-		$.plusReady(function() {
-			$.each(webviews, function(index, webview) {
-				$.createWindow($.extend(webview, {
-					preload: true
-				}));
-			});
-
-		});
-	});
-	$.supportStatusbarOffset = function() {
-		return $.os.plus && $.os.ios && parseFloat($.os.version) >= 7;
-	};
-	$.ready(function() {
-		//标识当前环境支持statusbar
-		if($.supportStatusbarOffset()) {
-			document.body.classList.add('mui-statusbar');
-		}
-	});
-})(mui);
-
-/**
- * mui back
- * @param {type} $
- * @param {type} window
- * @returns {undefined}
- */
-(function($, window) {
-	/**
-	 * register back
-	 * @param {type} back
-	 * @returns {$.gestures}
-	 */
-	$.addBack = function(back) {
-		return $.addAction('backs', back);
-	};
-	/**
-	 * default
-	 */
-	$.addBack({
-		name: 'browser',
-		index: 100,
-		handle: function() {
-			if (window.history.length > 1) {
-				window.history.back();
-				return true;
-			}
-			return false;
-		}
-	});
-	/**
-	 * 后退
-	 */
-	$.back = function() {
-		if (typeof $.options.beforeback === 'function') {
-			if ($.options.beforeback() === false) {
-				return;
-			}
-		}
-		$.doAction('backs');
-	};
-	window.addEventListener('tap', function(e) {
-		var action = $.targets.action;
-		if (action && action.classList.contains('mui-action-back')) {
-			$.back();
-			$.targets.action = false;
-		}
-	});
-	window.addEventListener('swiperight', function(e) {
-		var detail = e.detail;
-		if ($.options.swipeBack === true && Math.abs(detail.angle) < 3) {
-			$.back();
-		}
-	});
-
-})(mui, window);
-/**
- * mui back 5+
- * @param {type} $
- * @param {type} window
- * @returns {undefined}
- */
-(function($, window) {
-	if ($.os.plus && $.os.android) {
-		$.addBack({
-			name: 'mui',
-			index: 5,
-			handle: function() {
-				//后续重新设计此处,将back放到各个空间内部实现
-				//popover
-				if ($.targets._popover && $.targets._popover.classList.contains('mui-active')) {
-					$($.targets._popover).popover('hide');
-					return true;
-				}
-				//offcanvas
-				var offCanvas = document.querySelector('.mui-off-canvas-wrap.mui-active');
-				if (offCanvas) {
-					$(offCanvas).offCanvas('close');
-					return true;
-				}
-				var previewImage = $.isFunction($.getPreviewImage) && $.getPreviewImage();
-				if (previewImage && previewImage.isShown()) {
-					previewImage.close();
-					return true;
-				}
-				//popup
-				return $.closePopup();
-			}
-		});
-	}
-	//首次按下back按键的时间
-	$.__back__first = null;
-	/**
-	 * 5+ back
-	 */
-	$.addBack({
-		name: '5+',
-		index: 10,
-		handle: function() {
-			if (!window.plus) {
-				return false;
-			}
-			var wobj = plus.webview.currentWebview();
-			var parent = wobj.parent();
-			if (parent) {
-				parent.evalJS('mui&&mui.back();');
-			} else {
-				wobj.canBack(function(e) {
-					//by chb 暂时注释,在碰到类似popover之类的锚点的时候,需多次点击才能返回;
-					if (e.canBack) { //webview history back
-						window.history.back();
-					} else { //webview close or hide
-						//fixed by fxy 此处不应该用opener判断,因为用户有可能自己close掉当前窗口的opener。这样的话。opener就为空了,导致不能执行close
-						if (wobj.id === plus.runtime.appid) { //首页
-							//首页不存在opener的情况下,后退实际上应该是退出应用;
-							//首次按键,提示‘再按一次退出应用’
-							if (!$.__back__first) {
-								$.__back__first = new Date().getTime();
-								mui.toast('再按一次退出应用');
-								setTimeout(function() {
-									$.__back__first = null;
-								}, 2000);
-							} else {
-								if (new Date().getTime() - $.__back__first < 2000) {
-									plus.runtime.quit();
-								}
-							}
-						} else { //其他页面,
-							if (wobj.preload) {
-								wobj.hide("auto");
-							} else {
-								//关闭页面时,需要将其打开的所有子页面全部关闭;
-								$.closeAll(wobj);
-							}
-						}
-					}
-				});
-			}
-			return true;
-		}
-	});
-
-
-	$.menu = function() {
-		var menu = document.querySelector('.mui-action-menu');
-		if (menu) {
-			$.trigger(menu, $.EVENT_START); //临时处理menu无touchstart的话,找不到当前targets的问题
-			$.trigger(menu, 'tap');
-		} else { //执行父窗口的menu
-			if (window.plus) {
-				var wobj = $.currentWebview;
-				var parent = wobj.parent();
-				if (parent) { //又得evalJS
-					parent.evalJS('mui&&mui.menu();');
-				}
-			}
-		}
-	};
-	var __back = function() {
-		$.back();
-	};
-	var __menu = function() {
-		$.menu();
-	};
-	//默认监听
-	$.plusReady(function() {
-		if ($.options.keyEventBind.backbutton) {
-			plus.key.addEventListener('backbutton', __back, false);
-		}
-		if ($.options.keyEventBind.menubutton) {
-			plus.key.addEventListener('menubutton', __menu, false);
-		}
-	});
-	//处理按键监听事件
-	$.addInit({
-		name: 'keyEventBind',
-		index: 1000,
-		handle: function() {
-			$.plusReady(function() {
-				//如果不为true,则移除默认监听
-				if (!$.options.keyEventBind.backbutton) {
-					plus.key.removeEventListener('backbutton', __back);
-				}
-				if (!$.options.keyEventBind.menubutton) {
-					plus.key.removeEventListener('menubutton', __menu);
-				}
-			});
-		}
-	});
-})(mui, window);
-/**
- * mui.init pulldownRefresh
- * @param {type} $
- * @returns {undefined}
- */
-(function($) {
-	$.addInit({
-		name: 'pullrefresh',
-		index: 1000,
-		handle: function() {
-			var options = $.options;
-			var pullRefreshOptions = options.pullRefresh || {};
-			var hasPulldown = pullRefreshOptions.down && pullRefreshOptions.down.hasOwnProperty('callback');
-			var hasPullup = pullRefreshOptions.up && pullRefreshOptions.up.hasOwnProperty('callback');
-			if(hasPulldown || hasPullup) {
-				var container = pullRefreshOptions.container;
-				if(container) {
-					var $container = $(container);
-					if($container.length === 1) {
-						if($.os.plus) { //5+环境
-							if(hasPulldown && pullRefreshOptions.down.style == "circle") { //原生转圈
-								$.plusReady(function() {
-									//这里改写$.fn.pullRefresh
-									$.fn.pullRefresh = $.fn.pullRefresh_native;
-									$container.pullRefresh(pullRefreshOptions);
-								});
-
-							} else if($.os.android) { //非原生转圈,但是Android环境
-								$.plusReady(function() {
-									//这里改写$.fn.pullRefresh
-									$.fn.pullRefresh = $.fn.pullRefresh_native
-									var webview = plus.webview.currentWebview();
-									if(window.__NWin_Enable__ === false) { //不支持多webview
-										$container.pullRefresh(pullRefreshOptions);
-									} else {
-										if(hasPullup) {
-											//当前页面初始化pullup
-											var upOptions = {};
-											upOptions.up = pullRefreshOptions.up;
-											upOptions.webviewId = webview.id || webview.getURL();
-											$container.pullRefresh(upOptions);
-										}
-										if(hasPulldown) {
-											var parent = webview.parent();
-											var id = webview.id || webview.getURL();
-											if(parent) {
-												if(!hasPullup) { //如果没有上拉加载,需要手动初始化一个默认的pullRefresh,以便当前页面容器可以调用endPulldownToRefresh等方法
-													$container.pullRefresh({
-														webviewId: id
-													});
-												}
-												var downOptions = {
-													webviewId: id//子页面id
-												};
-												downOptions.down = $.extend({}, pullRefreshOptions.down);
-												downOptions.down.callback = '_CALLBACK';
-												//改写父页面的$.fn.pullRefresh
-												parent.evalJS("mui.fn.pullRefresh=mui.fn.pullRefresh_native");
-												//父页面初始化pulldown
-												parent.evalJS("mui&&mui(document.querySelector('.mui-content')).pullRefresh('" + JSON.stringify(downOptions) + "')");
-											}
-										}
-									}
-								});
-							} else { //非原生转圈,iOS环境
-								$container.pullRefresh(pullRefreshOptions);
-							}
-						} else {
-							$container.pullRefresh(pullRefreshOptions);
-						}
-					}
-				}
-			}
-		}
-	});
-})(mui);
-/**
- * mui ajax
- * @param {type} $
- * @returns {undefined}
- */
-(function($, window, undefined) {
-
-	var jsonType = 'application/json';
-	var htmlType = 'text/html';
-	var rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;
-	var scriptTypeRE = /^(?:text|application)\/javascript/i;
-	var xmlTypeRE = /^(?:text|application)\/xml/i;
-	var blankRE = /^\s*$/;
-
-	$.ajaxSettings = {
-		type: 'GET',
-		beforeSend: $.noop,
-		success: $.noop,
-		error: $.noop,
-		complete: $.noop,
-		context: null,
-		xhr: function(protocol) {
-			return new window.XMLHttpRequest();
-		},
-		accepts: {
-			script: 'text/javascript, application/javascript, application/x-javascript',
-			json: jsonType,
-			xml: 'application/xml, text/xml',
-			html: htmlType,
-			text: 'text/plain'
-		},
-		timeout: 0,
-		processData: true,
-		cache: true
-	};
-	var ajaxBeforeSend = function(xhr, settings) {
-		var context = settings.context
-		if(settings.beforeSend.call(context, xhr, settings) === false) {
-			return false;
-		}
-	};
-	var ajaxSuccess = function(data, xhr, settings) {
-		settings.success.call(settings.context, data, 'success', xhr);
-		ajaxComplete('success', xhr, settings);
-	};
-	// type: "timeout", "error", "abort", "parsererror"
-	var ajaxError = function(error, type, xhr, settings) {
-		settings.error.call(settings.context, xhr, type, error);
-		ajaxComplete(type, xhr, settings);
-	};
-	// status: "success", "notmodified", "error", "timeout", "abort", "parsererror"
-	var ajaxComplete = function(status, xhr, settings) {
-		settings.complete.call(settings.context, xhr, status);
-	};
-
-	var serialize = function(params, obj, traditional, scope) {
-		var type, array = $.isArray(obj),
-			hash = $.isPlainObject(obj);
-		$.each(obj, function(key, value) {
-			type = $.type(value);
-			if(scope) {
-				key = traditional ? scope :
-					scope + '[' + (hash || type === 'object' || type === 'array' ? key : '') + ']';
-			}
-			// handle data in serializeArray() format
-			if(!scope && array) {
-				params.add(value.name, value.value);
-			}
-			// recurse into nested objects
-			else if(type === "array" || (!traditional && type === "object")) {
-				serialize(params, value, traditional, key);
-			} else {
-				params.add(key, value);
-			}
-		});
-	};
-	var serializeData = function(options) {
-		if(options.processData && options.data && typeof options.data !== "string") {
-			var contentType = options.contentType;
-			if(!contentType && options.headers) {
-				contentType = options.headers['Content-Type'];
-			}
-			if(contentType && ~contentType.indexOf(jsonType)) { //application/json
-				options.data = JSON.stringify(options.data);
-			} else {
-				options.data = $.param(options.data, options.traditional);
-			}
-		}
-		if(options.data && (!options.type || options.type.toUpperCase() === 'GET')) {
-			options.url = appendQuery(options.url, options.data);
-			options.data = undefined;
-		}
-	};
-	var appendQuery = function(url, query) {
-		if(query === '') {
-			return url;
-		}
-		return(url + '&' + query).replace(/[&?]{1,2}/, '?');
-	};
-	var mimeToDataType = function(mime) {
-		if(mime) {
-			mime = mime.split(';', 2)[0];
-		}
-		return mime && (mime === htmlType ? 'html' :
-			mime === jsonType ? 'json' :
-			scriptTypeRE.test(mime) ? 'script' :
-			xmlTypeRE.test(mime) && 'xml') || 'text';
-	};
-	var parseArguments = function(url, data, success, dataType) {
-		if($.isFunction(data)) {
-			dataType = success, success = data, data = undefined;
-		}
-		if(!$.isFunction(success)) {
-			dataType = success, success = undefined;
-		}
-		return {
-			url: url,
-			data: data,
-			success: success,
-			dataType: dataType
-		};
-	};
-	$.ajax = function(url, options) {
-		if(typeof url === "object") {
-			options = url;
-			url = undefined;
-		}
-		var settings = options || {};
-		settings.url = url || settings.url;
-		for(var key in $.ajaxSettings) {
-			if(settings[key] === undefined) {
-				settings[key] = $.ajaxSettings[key];
-			}
-		}
-		serializeData(settings);
-		var dataType = settings.dataType;
-
-		if(settings.cache === false || ((!options || options.cache !== true) && ('script' === dataType))) {
-			settings.url = appendQuery(settings.url, '_=' + $.now());
-		}
-		var mime = settings.accepts[dataType && dataType.toLowerCase()];
-		var headers = {};
-		var setHeader = function(name, value) {
-			headers[name.toLowerCase()] = [name, value];
-		};
-		var protocol = /^([\w-]+:)\/\//.test(settings.url) ? RegExp.$1 : window.location.protocol;
-		var xhr = settings.xhr(settings);
-		var nativeSetHeader = xhr.setRequestHeader;
-		var abortTimeout;
-
-		setHeader('X-Requested-With', 'XMLHttpRequest');
-		setHeader('Accept', mime || '*/*');
-		if(!!(mime = settings.mimeType || mime)) {
-			if(mime.indexOf(',') > -1) {
-				mime = mime.split(',', 2)[0];
-			}
-			xhr.overrideMimeType && xhr.overrideMimeType(mime);
-		}
-		if(settings.contentType || (settings.contentType !== false && settings.data && settings.type.toUpperCase() !== 'GET')) {
-			setHeader('Content-Type', settings.contentType || 'application/x-www-form-urlencoded');
-		}
-		if(settings.headers) {
-			for(var name in settings.headers)
-				setHeader(name, settings.headers[name]);
-		}
-		xhr.setRequestHeader = setHeader;
-
-		xhr.onreadystatechange = function() {
-			if(xhr.readyState === 4) {
-				xhr.onreadystatechange = $.noop;
-				clearTimeout(abortTimeout);
-				var result, error = false;
-				var isLocal = protocol === 'file:';
-				if((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304 || (xhr.status === 0 && isLocal && xhr.responseText)) {
-					dataType = dataType || mimeToDataType(settings.mimeType || xhr.getResponseHeader('content-type'));
-					result = xhr.responseText;
-					try {
-						// http://perfectionkills.com/global-eval-what-are-the-options/
-						if(dataType === 'script') {
-							(1, eval)(result);
-						} else if(dataType === 'xml') {
-							result = xhr.responseXML;
-						} else if(dataType === 'json') {
-							result = blankRE.test(result) ? null : $.parseJSON(result);
-						}
-					} catch(e) {
-						error = e;
-					}
-
-					if(error) {
-						ajaxError(error, 'parsererror', xhr, settings);
-					} else {
-						ajaxSuccess(result, xhr, settings);
-					}
-				} else {
-					var status = xhr.status ? 'error' : 'abort';
-					var statusText = xhr.statusText || null;
-					if(isLocal) {
-						status = 'error';
-						statusText = '404';
-					}
-					ajaxError(statusText, status, xhr, settings);
-				}
-			}
-		};
-		if(ajaxBeforeSend(xhr, settings) === false) {
-			xhr.abort();
-			ajaxError(null, 'abort', xhr, settings);
-			return xhr;
-		}
-
-		if(settings.xhrFields) {
-			for(var name in settings.xhrFields) {
-				xhr[name] = settings.xhrFields[name];
-			}
-		}
-
-		var async = 'async' in settings ? settings.async : true;
-
-		xhr.open(settings.type.toUpperCase(), settings.url, async, settings.username, settings.password);
-
-		for(var name in headers) {
-			if(headers.hasOwnProperty(name)) {
-				nativeSetHeader.apply(xhr, headers[name]);
-			}
-		}
-		if(settings.timeout > 0) {
-			abortTimeout = setTimeout(function() {
-				xhr.onreadystatechange = $.noop;
-				xhr.abort();
-				ajaxError(null, 'timeout', xhr, settings);
-			}, settings.timeout);
-		}
-		xhr.send(settings.data ? settings.data : null);
-		return xhr;
-	};
-
-	$.param = function(obj, traditional) {
-		var params = [];
-		params.add = function(k, v) {
-			this.push(encodeURIComponent(k) + '=' + encodeURIComponent(v));
-		};
-		serialize(params, obj, traditional);
-		return params.join('&').replace(/%20/g, '+');
-	};
-	$.get = function( /* url, data, success, dataType */ ) {
-		return $.ajax(parseArguments.apply(null, arguments));
-	};
-
-	$.post = function( /* url, data, success, dataType */ ) {
-		var options = parseArguments.apply(null, arguments);
-		options.type = 'POST';
-		return $.ajax(options);
-	};
-
-	$.getJSON = function( /* url, data, success */ ) {
-		var options = parseArguments.apply(null, arguments);
-		options.dataType = 'json';
-		return $.ajax(options);
-	};
-
-	$.fn.load = function(url, data, success) {
-		if(!this.length)
-			return this;
-		var self = this,
-			parts = url.split(/\s/),
-			selector,
-			options = parseArguments(url, data, success),
-			callback = options.success;
-		if(parts.length > 1)
-			options.url = parts[0], selector = parts[1];
-		options.success = function(response) {
-			if(selector) {
-				var div = document.createElement('div');
-				div.innerHTML = response.replace(rscript, "");
-				var selectorDiv = document.createElement('div');
-				var childs = div.querySelectorAll(selector);
-				if(childs && childs.length > 0) {
-					for(var i = 0, len = childs.length; i < len; i++) {
-						selectorDiv.appendChild(childs[i]);
-					}
-				}
-				self[0].innerHTML = selectorDiv.innerHTML;
-			} else {
-				self[0].innerHTML = response;
-			}
-			callback && callback.apply(self, arguments);
-		};
-		$.ajax(options);
-		return this;
-	};
-
-})(mui, window);
-/**
- * 5+ ajax
- */
-(function($) {
-	var originAnchor = document.createElement('a');
-	originAnchor.href = window.location.href;
-	$.plusReady(function() {
-		$.ajaxSettings = $.extend($.ajaxSettings, {
-			xhr: function(settings) {
-				if (settings.crossDomain) { //强制使用plus跨域
-					return new plus.net.XMLHttpRequest();
-				}
-				//仅在webview的url为远程文件,且ajax请求的资源不同源下使用plus.net.XMLHttpRequest
-				if (originAnchor.protocol !== 'file:') {
-					var urlAnchor = document.createElement('a');
-					urlAnchor.href = settings.url;
-					urlAnchor.href = urlAnchor.href;
-					settings.crossDomain = (originAnchor.protocol + '//' + originAnchor.host) !== (urlAnchor.protocol + '//' + urlAnchor.host);
-					if (settings.crossDomain) {
-						return new plus.net.XMLHttpRequest();
-					}
-				}
-				if ($.os.ios && window.webkit && window.webkit.messageHandlers) { //wkwebview下同样使用5+ xhr
-                    return new plus.net.XMLHttpRequest();
-                }
-				return new window.XMLHttpRequest();
-			}
-		});
-	});
-})(mui);
-/**
- * mui layout(offset[,position,width,height...])
- * @param {type} $
- * @param {type} window
- * @param {type} undefined
- * @returns {undefined}
- */
-(function($, window, undefined) {
-	$.offset = function(element) {
-		var box = {
-			top : 0,
-			left : 0
-		};
-		if ( typeof element.getBoundingClientRect !== undefined) {
-			box = element.getBoundingClientRect();
-		}
-		return {
-			top : box.top + window.pageYOffset - element.clientTop,
-			left : box.left + window.pageXOffset - element.clientLeft
-		};
-	};
-})(mui, window); 
-/**
- * mui animation
- */
-(function($, window) {
-	/**
-	 * scrollTo
-	 */
-	$.scrollTo = function(scrollTop, duration, callback) {
-		duration = duration || 1000;
-		var scroll = function(duration) {
-			if (duration <= 0) {
-				window.scrollTo(0, scrollTop);
-				callback && callback();
-				return;
-			}
-			var distaince = scrollTop - window.scrollY;
-			setTimeout(function() {
-				window.scrollTo(0, window.scrollY + distaince / duration * 10);
-				scroll(duration - 10);
-			}, 16.7);
-		};
-		scroll(duration);
-	};
-	$.animationFrame = function(cb) {
-		var args, isQueued, context;
-		return function() {
-			args = arguments;
-			context = this;
-			if (!isQueued) {
-				isQueued = true;
-				requestAnimationFrame(function() {
-					cb.apply(context, args);
-					isQueued = false;
-				});
-			}
-		};
-	};
-
-})(mui, window);
-(function($) {
-	var initializing = false,
-		fnTest = /xyz/.test(function() {
-			xyz;
-		}) ? /\b_super\b/ : /.*/;
-
-	var Class = function() {};
-	Class.extend = function(prop) {
-		var _super = this.prototype;
-		initializing = true;
-		var prototype = new this();
-		initializing = false;
-		for (var name in prop) {
-			prototype[name] = typeof prop[name] == "function" &&
-				typeof _super[name] == "function" && fnTest.test(prop[name]) ?
-				(function(name, fn) {
-					return function() {
-						var tmp = this._super;
-
-						this._super = _super[name];
-
-						var ret = fn.apply(this, arguments);
-						this._super = tmp;
-
-						return ret;
-					};
-				})(name, prop[name]) :
-				prop[name];
-		}
-		function Class() {
-			if (!initializing && this.init)
-				this.init.apply(this, arguments);
-		}
-		Class.prototype = prototype;
-		Class.prototype.constructor = Class;
-		Class.extend = arguments.callee;
-		return Class;
-	};
-	$.Class = Class;
-})(mui);
-(function($, document, undefined) {
-    var CLASS_PULL_TOP_POCKET = 'mui-pull-top-pocket';
-    var CLASS_PULL_BOTTOM_POCKET = 'mui-pull-bottom-pocket';
-    var CLASS_PULL = 'mui-pull';
-    var CLASS_PULL_LOADING = 'mui-pull-loading';
-    var CLASS_PULL_CAPTION = 'mui-pull-caption';
-    var CLASS_PULL_CAPTION_DOWN = 'mui-pull-caption-down';
-    var CLASS_PULL_CAPTION_REFRESH = 'mui-pull-caption-refresh';
-    var CLASS_PULL_CAPTION_NOMORE = 'mui-pull-caption-nomore';
-
-    var CLASS_ICON = 'mui-icon';
-    var CLASS_SPINNER = 'mui-spinner';
-    var CLASS_ICON_PULLDOWN = 'mui-icon-pulldown';
-
-    var CLASS_BLOCK = 'mui-block';
-    var CLASS_HIDDEN = 'mui-hidden';
-    var CLASS_VISIBILITY = 'mui-visibility';
-
-    var CLASS_LOADING_UP = CLASS_PULL_LOADING + ' ' + CLASS_ICON + ' ' + CLASS_ICON_PULLDOWN;
-    var CLASS_LOADING_DOWN = CLASS_PULL_LOADING + ' ' + CLASS_ICON + ' ' + CLASS_ICON_PULLDOWN;
-    var CLASS_LOADING = CLASS_PULL_LOADING + ' ' + CLASS_ICON + ' ' + CLASS_SPINNER;
-
-    var pocketHtml = ['<div class="' + CLASS_PULL + '">', '<div class="{icon}"></div>', '<div class="' + CLASS_PULL_CAPTION + '">{contentrefresh}</div>', '</div>'].join('');
-
-    var PullRefresh = {
-        init: function(element, options) {
-            this._super(element, $.extend(true, {
-                scrollY: true,
-                scrollX: false,
-                indicators: true,
-                deceleration: 0.003,
-                down: {
-                    height: 50,
-                    contentinit: '下拉可以刷新',
-                    contentdown: '下拉可以刷新',
-                    contentover: '释放立即刷新',
-                    contentrefresh: '正在刷新...'
-                },
-                up: {
-                    height: 50,
-                    auto: false,
-                    contentinit: '上拉显示更多',
-                    contentdown: '上拉显示更多',
-                    contentrefresh: '正在加载...',
-                    contentnomore: '没有更多数据了',
-                    duration: 300
-                }
-            }, options));
-        },
-        _init: function() {
-            this._super();
-            this._initPocket();
-        },
-        _initPulldownRefresh: function() {
-            this.pulldown = true;
-            if (this.topPocket) {
-                this.pullPocket = this.topPocket;
-                this.pullPocket.classList.add(CLASS_BLOCK);
-                this.pullPocket.classList.add(CLASS_VISIBILITY);
-                this.pullCaption = this.topCaption;
-                this.pullLoading = this.topLoading;
-            }
-        },
-        _initPullupRefresh: function() {
-            this.pulldown = false;
-            if (this.bottomPocket) {
-                this.pullPocket = this.bottomPocket;
-                this.pullPocket.classList.add(CLASS_BLOCK);
-                this.pullPocket.classList.add(CLASS_VISIBILITY);
-                this.pullCaption = this.bottomCaption;
-                this.pullLoading = this.bottomLoading;
-            }
-        },
-        _initPocket: function() {
-            var options = this.options;
-            if (options.down && options.down.hasOwnProperty('callback')) {
-                this.topPocket = this.scroller.querySelector('.' + CLASS_PULL_TOP_POCKET);
-                if (!this.topPocket) {
-                    this.topPocket = this._createPocket(CLASS_PULL_TOP_POCKET, options.down, CLASS_LOADING_DOWN);
-                    this.wrapper.insertBefore(this.topPocket, this.wrapper.firstChild);
-                }
-                this.topLoading = this.topPocket.querySelector('.' + CLASS_PULL_LOADING);
-                this.topCaption = this.topPocket.querySelector('.' + CLASS_PULL_CAPTION);
-            }
-            if (options.up && options.up.hasOwnProperty('callback')) {
-                this.bottomPocket = this.scroller.querySelector('.' + CLASS_PULL_BOTTOM_POCKET);
-                if (!this.bottomPocket) {
-                    this.bottomPocket = this._createPocket(CLASS_PULL_BOTTOM_POCKET, options.up, CLASS_LOADING);
-                    this.scroller.appendChild(this.bottomPocket);
-                }
-                this.bottomLoading = this.bottomPocket.querySelector('.' + CLASS_PULL_LOADING);
-                this.bottomCaption = this.bottomPocket.querySelector('.' + CLASS_PULL_CAPTION);
-                //TODO only for h5
-                this.wrapper.addEventListener('scrollbottom', this);
-            }
-        },
-        _createPocket: function(clazz, options, iconClass) {
-            var pocket = document.createElement('div');
-            pocket.className = clazz;
-            pocket.innerHTML = pocketHtml.replace('{contentrefresh}', options.contentinit).replace('{icon}', iconClass);
-            return pocket;
-        },
-        _resetPullDownLoading: function() {
-            var loading = this.pullLoading;
-            if (loading) {
-                this.pullCaption.innerHTML = this.options.down.contentdown;
-                loading.style.webkitTransition = "";
-                loading.style.webkitTransform = "";
-                loading.style.webkitAnimation = "";
-                loading.className = CLASS_LOADING_DOWN;
-            }
-        },
-        _setCaptionClass: function(isPulldown, caption, title) {
-            if (!isPulldown) {
-                switch (title) {
-                    case this.options.up.contentdown:
-                        caption.className = CLASS_PULL_CAPTION + ' ' + CLASS_PULL_CAPTION_DOWN;
-                        break;
-                    case this.options.up.contentrefresh:
-                        caption.className = CLASS_PULL_CAPTION + ' ' + CLASS_PULL_CAPTION_REFRESH
-                        break;
-                    case this.options.up.contentnomore:
-                        caption.className = CLASS_PULL_CAPTION + ' ' + CLASS_PULL_CAPTION_NOMORE;
-                        break;
-                }
-            }
-        },
-        _setCaption: function(title, reset) {
-            if (this.loading) {
-                return;
-            }
-            var options = this.options;
-            var pocket = this.pullPocket;
-            var caption = this.pullCaption;
-            var loading = this.pullLoading;
-            var isPulldown = this.pulldown;
-            var self = this;
-            if (pocket) {
-                if (reset) {
-                    setTimeout(function() {
-                        caption.innerHTML = self.lastTitle = title;
-                        if (isPulldown) {
-                            loading.className = CLASS_LOADING_DOWN;
-                        } else {
-                            self._setCaptionClass(false, caption, title);
-                            loading.className = CLASS_LOADING;
-                        }
-                        loading.style.webkitAnimation = "";
-                        loading.style.webkitTransition = "";
-                        loading.style.webkitTransform = "";
-                    }, 100);
-                } else {
-                    if (title !== this.lastTitle) {
-                        caption.innerHTML = title;
-                        if (isPulldown) {
-                            if (title === options.down.contentrefresh) {
-                                loading.className = CLASS_LOADING;
-                                loading.style.webkitAnimation = "spinner-spin 1s step-end infinite";
-                            } else if (title === options.down.contentover) {
-                                loading.className = CLASS_LOADING_UP;
-                                loading.style.webkitTransition = "-webkit-transform 0.3s ease-in";
-                                loading.style.webkitTransform = "rotate(180deg)";
-                            } else if (title === options.down.contentdown) {
-                                loading.className = CLASS_LOADING_DOWN;
-                                loading.style.webkitTransition = "-webkit-transform 0.3s ease-in";
-                                loading.style.webkitTransform = "rotate(0deg)";
-                            }
-                        } else {
-                            if (title === options.up.contentrefresh) {
-                                loading.className = CLASS_LOADING + ' ' + CLASS_VISIBILITY;
-                            } else {
-                                loading.className = CLASS_LOADING + ' ' + CLASS_HIDDEN;
-                            }
-                            self._setCaptionClass(false, caption, title);
-                        }
-                        this.lastTitle = title;
-                    }
-                }
-
-            }
-        }
-    };
-    $.PullRefresh = PullRefresh;
-})(mui, document);
-(function($, window, document, undefined) {
-	var CLASS_SCROLL = 'mui-scroll';
-	var CLASS_SCROLLBAR = 'mui-scrollbar';
-	var CLASS_INDICATOR = 'mui-scrollbar-indicator';
-	var CLASS_SCROLLBAR_VERTICAL = CLASS_SCROLLBAR + '-vertical';
-	var CLASS_SCROLLBAR_HORIZONTAL = CLASS_SCROLLBAR + '-horizontal';
-
-	var CLASS_ACTIVE = 'mui-active';
-
-	var ease = {
-		quadratic: {
-			style: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',
-			fn: function(k) {
-				return k * (2 - k);
-			}
-		},
-		circular: {
-			style: 'cubic-bezier(0.1, 0.57, 0.1, 1)',
-			fn: function(k) {
-				return Math.sqrt(1 - (--k * k));
-			}
-		},
-		outCirc: {
-			style: 'cubic-bezier(0.075, 0.82, 0.165, 1)'
-		},
-		outCubic: {
-			style: 'cubic-bezier(0.165, 0.84, 0.44, 1)'
-		}
-	}
-	var Scroll = $.Class.extend({
-		init: function(element, options) {
-			this.wrapper = this.element = element;
-			this.scroller = this.wrapper.children[0];
-			this.scrollerStyle = this.scroller && this.scroller.style;
-			this.stopped = false;
-
-			this.options = $.extend(true, {
-				scrollY: true, //是否竖向滚动
-				scrollX: false, //是否横向滚动
-				startX: 0, //初始化时滚动至x
-				startY: 0, //初始化时滚动至y
-
-				indicators: true, //是否显示滚动条
-				stopPropagation: false,
-				hardwareAccelerated: true,
-				fixedBadAndorid: false,
-				preventDefaultException: {
-					tagName: /^(INPUT|TEXTAREA|BUTTON|SELECT|VIDEO)$/
-				},
-				momentum: true,
-
-				snapX: 0.5, //横向切换距离(以当前容器宽度为基准)
-				snap: false, //图片轮播,拖拽式选项卡
-
-				bounce: true, //是否启用回弹
-				bounceTime: 500, //回弹动画时间
-				bounceEasing: ease.outCirc, //回弹动画曲线
-
-				scrollTime: 500,
-				scrollEasing: ease.outCubic, //轮播动画曲线
-
-				directionLockThreshold: 5,
-
-				parallaxElement: false, //视差元素
-				parallaxRatio: 0.5
-			}, options);
-
-			this.x = 0;
-			this.y = 0;
-			this.translateZ = this.options.hardwareAccelerated ? ' translateZ(0)' : '';
-
-			this._init();
-			if (this.scroller) {
-				this.refresh();
-				//				if (this.options.startX !== 0 || this.options.startY !== 0) { //需要判断吗?后续根据实际情况再看看
-				this.scrollTo(this.options.startX, this.options.startY);
-				//				}
-			}
-		},
-		_init: function() {
-			this._initParallax();
-			this._initIndicators();
-			this._initEvent();
-		},
-		_initParallax: function() {
-			if (this.options.parallaxElement) {
-				this.parallaxElement = document.querySelector(this.options.parallaxElement);
-				this.parallaxStyle = this.parallaxElement.style;
-				this.parallaxHeight = this.parallaxElement.offsetHeight;
-				this.parallaxImgStyle = this.parallaxElement.querySelector('img').style;
-			}
-		},
-		_initIndicators: function() {
-			var self = this;
-			self.indicators = [];
-			if (!this.options.indicators) {
-				return;
-			}
-			var indicators = [],
-				indicator;
-
-			// Vertical scrollbar
-			if (self.options.scrollY) {
-				indicator = {
-					el: this._createScrollBar(CLASS_SCROLLBAR_VERTICAL),
-					listenX: false
-				};
-
-				this.wrapper.appendChild(indicator.el);
-				indicators.push(indicator);
-			}
-
-			// Horizontal scrollbar
-			if (this.options.scrollX) {
-				indicator = {
-					el: this._createScrollBar(CLASS_SCROLLBAR_HORIZONTAL),
-					listenY: false
-				};
-
-				this.wrapper.appendChild(indicator.el);
-				indicators.push(indicator);
-			}
-
-			for (var i = indicators.length; i--;) {
-				this.indicators.push(new Indicator(this, indicators[i]));
-			}
-
-		},
-		_initSnap: function() {
-			this.currentPage = {};
-			this.pages = [];
-			var snaps = this.snaps;
-			var length = snaps.length;
-			var m = 0;
-			var n = -1;
-			var x = 0;
-			var leftX = 0;
-			var rightX = 0;
-			var snapX = 0;
-			for (var i = 0; i < length; i++) {
-				var snap = snaps[i];
-				var offsetLeft = snap.offsetLeft;
-				var offsetWidth = snap.offsetWidth;
-				if (i === 0 || offsetLeft <= snaps[i - 1].offsetLeft) {
-					m = 0;
-					n++;
-				}
-				if (!this.pages[m]) {
-					this.pages[m] = [];
-				}
-				x = this._getSnapX(offsetLeft);
-				snapX = Math.round((offsetWidth) * this.options.snapX);
-				leftX = x - snapX;
-				rightX = x - offsetWidth + snapX;
-				this.pages[m][n] = {
-					x: x,
-					leftX: leftX,
-					rightX: rightX,
-					pageX: m,
-					element: snap
-				}
-				if (snap.classList.contains(CLASS_ACTIVE)) {
-					this.currentPage = this.pages[m][0];
-				}
-				if (x >= this.maxScrollX) {
-					m++;
-				}
-			}
-			this.options.startX = this.currentPage.x || 0;
-		},
-		_getSnapX: function(offsetLeft) {
-			return Math.max(Math.min(0, -offsetLeft + (this.wrapperWidth / 2)), this.maxScrollX);
-		},
-		_gotoPage: function(index) {
-			this.currentPage = this.pages[Math.min(index, this.pages.length - 1)][0];
-			for (var i = 0, len = this.snaps.length; i < len; i++) {
-				if (i === index) {
-					this.snaps[i].classList.add(CLASS_ACTIVE);
-				} else {
-					this.snaps[i].classList.remove(CLASS_ACTIVE);
-				}
-			}
-			this.scrollTo(this.currentPage.x, 0, this.options.scrollTime);
-		},
-		_nearestSnap: function(x) {
-			if (!this.pages.length) {
-				return {
-					x: 0,
-					pageX: 0
-				};
-			}
-			var i = 0;
-			var length = this.pages.length;
-			if (x > 0) {
-				x = 0;
-			} else if (x < this.maxScrollX) {
-				x = this.maxScrollX;
-			}
-			for (; i < length; i++) {
-				var nearestX = this.direction === 'left' ? this.pages[i][0].leftX : this.pages[i][0].rightX;
-				if (x >= nearestX) {
-					return this.pages[i][0];
-				}
-			}
-			return {
-				x: 0,
-				pageX: 0
-			};
-		},
-		_initEvent: function(detach) {
-			var action = detach ? 'removeEventListener' : 'addEventListener';
-			window[action]('orientationchange', this);
-			window[action]('resize', this);
-
-			this.scroller[action]('webkitTransitionEnd', this);
-
-			this.wrapper[action]($.EVENT_START, this);
-			this.wrapper[action]($.EVENT_CANCEL, this);
-			this.wrapper[action]($.EVENT_END, this);
-			this.wrapper[action]('drag', this);
-			this.wrapper[action]('dragend', this);
-			this.wrapper[action]('flick', this);
-			this.wrapper[action]('scrollend', this);
-			if (this.options.scrollX) {
-				this.wrapper[action]('swiperight', this);
-			}
-			var segmentedControl = this.wrapper.querySelector('.mui-segmented-control');
-			if (segmentedControl) { //靠,这个bug排查了一下午,阻止hash跳转,一旦hash跳转会导致可拖拽选项卡的tab不见
-				mui(segmentedControl)[detach ? 'off' : 'on']('click', 'a', $.preventDefault);
-			}
-
-			this.wrapper[action]('scrollstart', this);
-			this.wrapper[action]('refresh', this);
-		},
-		_handleIndicatorScrollend: function() {
-			this.indicators.map(function(indicator) {
-				indicator.fade();
-			});
-		},
-		_handleIndicatorScrollstart: function() {
-			this.indicators.map(function(indicator) {
-				indicator.fade(1);
-			});
-		},
-		_handleIndicatorRefresh: function() {
-			this.indicators.map(function(indicator) {
-				indicator.refresh();
-			});
-		},
-		handleEvent: function(e) {
-			if (this.stopped) {
-				this.resetPosition();
-				return;
-			}
-
-			switch (e.type) {
-				case $.EVENT_START:
-					this._start(e);
-					break;
-				case 'drag':
-					this.options.stopPropagation && e.stopPropagation();
-					this._drag(e);
-					break;
-				case 'dragend':
-				case 'flick':
-					this.options.stopPropagation && e.stopPropagation();
-					this._flick(e);
-					break;
-				case $.EVENT_CANCEL:
-				case $.EVENT_END:
-					this._end(e);
-					break;
-				case 'webkitTransitionEnd':
-					this.transitionTimer && this.transitionTimer.cancel();
-					this._transitionEnd(e);
-					break;
-				case 'scrollstart':
-					this._handleIndicatorScrollstart(e);
-					break;
-				case 'scrollend':
-					this._handleIndicatorScrollend(e);
-					this._scrollend(e);
-					e.stopPropagation();
-					break;
-				case 'orientationchange':
-				case 'resize':
-					this._resize();
-					break;
-				case 'swiperight':
-					e.stopPropagation();
-					break;
-				case 'refresh':
-					this._handleIndicatorRefresh(e);
-					break;
-
-			}
-		},
-		_start: function(e) {
-			this.moved = this.needReset = false;
-			this._transitionTime();
-			if (this.isInTransition) {
-				this.needReset = true;
-				this.isInTransition = false;
-				var pos = $.parseTranslateMatrix($.getStyles(this.scroller, 'webkitTransform'));
-				this.setTranslate(Math.round(pos.x), Math.round(pos.y));
-				//				this.resetPosition(); //reset
-				$.trigger(this.scroller, 'scrollend', this);
-				//				e.stopPropagation();
-				e.preventDefault();
-			}
-			this.reLayout();
-			$.trigger(this.scroller, 'beforescrollstart', this);
-		},
-		_getDirectionByAngle: function(angle) {
-			if (angle < -80 && angle > -100) {
-				return 'up';
-			} else if (angle >= 80 && angle < 100) {
-				return 'down';
-			} else if (angle >= 170 || angle <= -170) {
-				return 'left';
-			} else if (angle >= -35 && angle <= 10) {
-				return 'right';
-			}
-			return null;
-		},
-		_drag: function(e) {
-			//			if (this.needReset) {
-			//				e.stopPropagation(); //disable parent drag(nested scroller)
-			//				return;
-			//			}
-			var detail = e.detail;
-			if (this.options.scrollY || detail.direction === 'up' || detail.direction === 'down') { //如果是竖向滚动或手势方向是上或下
-				//ios8 hack
-				if ($.os.ios && parseFloat($.os.version) >= 8) { //多webview时,离开当前webview会导致后续touch事件不触发
-					var clientY = detail.gesture.touches[0].clientY;
-					//下拉刷新 or 上拉加载
-					if ((clientY + 10) > window.innerHeight || clientY < 10) {
-						this.resetPosition(this.options.bounceTime);
-						return;
-					}
-				}
-			}
-			var isPreventDefault = isReturn = false;
-			var direction = this._getDirectionByAngle(detail.angle);
-			if (detail.direction === 'left' || detail.direction === 'right') {
-				if (this.options.scrollX) {
-					isPreventDefault = true;
-					if (!this.moved) { //识别角度(该角度导致轮播不灵敏)
-						//						if (direction !== 'left' && direction !== 'right') {
-						//							isReturn = true;
-						//						} else {
-						$.gestures.session.lockDirection = true; //锁定方向
-						$.gestures.session.startDirection = detail.direction;
-						//						}
-					}
-				} else if (this.options.scrollY && !this.moved) {
-					isReturn = true;
-				}
-			} else if (detail.direction === 'up' || detail.direction === 'down') {
-				if (this.options.scrollY) {
-					isPreventDefault = true;
-					//					if (!this.moved) { //识别角度,竖向滚动似乎没必要进行小角度验证
-					//						if (direction !== 'up' && direction !== 'down') {
-					//							isReturn = true;
-					//						}
-					//					}
-					if (!this.moved) {
-						$.gestures.session.lockDirection = true; //锁定方向
-						$.gestures.session.startDirection = detail.direction;
-					}
-				} else if (this.options.scrollX && !this.moved) {
-					isReturn = true;
-				}
-			} else {
-				isReturn = true;
-			}
-			if (this.moved || isPreventDefault) {
-				e.stopPropagation(); //阻止冒泡(scroll类嵌套)
-				detail.gesture && detail.gesture.preventDefault();
-			}
-			if (isReturn) { //禁止非法方向滚动
-				return;
-			}
-			if (!this.moved) {
-				$.trigger(this.scroller, 'scrollstart', this);
-			} else {
-				e.stopPropagation(); //move期间阻止冒泡(scroll嵌套)
-			}
-			var deltaX = 0;
-			var deltaY = 0;
-			if (!this.moved) { //start
-				deltaX = detail.deltaX;
-				deltaY = detail.deltaY;
-			} else { //move
-				deltaX = detail.deltaX - $.gestures.session.prevTouch.deltaX;
-				deltaY = detail.deltaY - $.gestures.session.prevTouch.deltaY;
-			}
-			var absDeltaX = Math.abs(detail.deltaX);
-			var absDeltaY = Math.abs(detail.deltaY);
-			if (absDeltaX > absDeltaY + this.options.directionLockThreshold) {
-				deltaY = 0;
-			} else if (absDeltaY >= absDeltaX + this.options.directionLockThreshold) {
-				deltaX = 0;
-			}
-
-			deltaX = this.hasHorizontalScroll ? deltaX : 0;
-			deltaY = this.hasVerticalScroll ? deltaY : 0;
-			var newX = this.x + deltaX;
-			var newY = this.y + deltaY;
-			// Slow down if outside of the boundaries
-			if (newX > 0 || newX < this.maxScrollX) {
-				newX = this.options.bounce ? this.x + deltaX / 3 : newX > 0 ? 0 : this.maxScrollX;
-			}
-			if (newY > 0 || newY < this.maxScrollY) {
-				newY = this.options.bounce ? this.y + deltaY / 3 : newY > 0 ? 0 : this.maxScrollY;
-			}
-
-			if (!this.requestAnimationFrame) {
-				this._updateTranslate();
-			}
-			this.direction = detail.deltaX > 0 ? 'right' : 'left';
-			this.moved = true;
-			this.x = newX;
-			this.y = newY;
-			$.trigger(this.scroller, 'scroll', this);
-		},
-		_flick: function(e) {
-			//			if (!this.moved || this.needReset) {
-			//				return;
-			//			}
-			if (!this.moved) {
-				return;
-			}
-			e.stopPropagation();
-			var detail = e.detail;
-			this._clearRequestAnimationFrame();
-			if (e.type === 'dragend' && detail.flick) { //dragend
-				return;
-			}
-
-			var newX = Math.round(this.x);
-			var newY = Math.round(this.y);
-
-			this.isInTransition = false;
-			// reset if we are outside of the boundaries
-			if (this.resetPosition(this.options.bounceTime)) {
-				return;
-			}
-
-			this.scrollTo(newX, newY); // ensures that the last position is rounded
-
-			if (e.type === 'dragend') { //dragend
-				$.trigger(this.scroller, 'scrollend', this);
-				return;
-			}
-			var time = 0;
-			var easing = '';
-			// start momentum animation if needed
-			if (this.options.momentum && detail.flickTime < 300) {
-				momentumX = this.hasHorizontalScroll ? this._momentum(this.x, detail.flickDistanceX, detail.flickTime, this.maxScrollX, this.options.bounce ? this.wrapperWidth : 0, this.options.deceleration) : {
-					destination: newX,
-					duration: 0
-				};
-				momentumY = this.hasVerticalScroll ? this._momentum(this.y, detail.flickDistanceY, detail.flickTime, this.maxScrollY, this.options.bounce ? this.wrapperHeight : 0, this.options.deceleration) : {
-					destination: newY,
-					duration: 0
-				};
-				newX = momentumX.destination;
-				newY = momentumY.destination;
-				time = Math.max(momentumX.duration, momentumY.duration);
-				this.isInTransition = true;
-			}
-
-			if (newX != this.x || newY != this.y) {
-				if (newX > 0 || newX < this.maxScrollX || newY > 0 || newY < this.maxScrollY) {
-					easing = ease.quadratic;
-				}
-				this.scrollTo(newX, newY, time, easing);
-				return;
-			}
-
-			$.trigger(this.scroller, 'scrollend', this);
-			//			e.stopPropagation();
-		},
-		_end: function(e) {
-			this.needReset = false;
-			if ((!this.moved && this.needReset) || e.type === $.EVENT_CANCEL) {
-				this.resetPosition();
-			}
-		},
-		_transitionEnd: function(e) {
-			if (e.target != this.scroller || !this.isInTransition) {
-				return;
-			}
-			this._transitionTime();
-			if (!this.resetPosition(this.options.bounceTime)) {
-				this.isInTransition = false;
-				$.trigger(this.scroller, 'scrollend', this);
-			}
-		},
-		_scrollend: function(e) {
-			if ((this.y === 0 && this.maxScrollY === 0) || (Math.abs(this.y) > 0 && this.y <= this.maxScrollY)) {
-				$.trigger(this.scroller, 'scrollbottom', this);
-			}
-		},
-		_resize: function() {
-			var that = this;
-			clearTimeout(that.resizeTimeout);
-			that.resizeTimeout = setTimeout(function() {
-				that.refresh();
-			}, that.options.resizePolling);
-		},
-		_transitionTime: function(time) {
-			time = time || 0;
-			this.scrollerStyle['webkitTransitionDuration'] = time + 'ms';
-			if (this.parallaxElement && this.options.scrollY) { //目前仅支持竖向视差效果
-				this.parallaxStyle['webkitTransitionDuration'] = time + 'ms';
-			}
-			if (this.options.fixedBadAndorid && !time && $.os.isBadAndroid) {
-				this.scrollerStyle['webkitTransitionDuration'] = '0.001s';
-				if (this.parallaxElement && this.options.scrollY) { //目前仅支持竖向视差效果
-					this.parallaxStyle['webkitTransitionDuration'] = '0.001s';
-				}
-			}
-			if (this.indicators) {
-				for (var i = this.indicators.length; i--;) {
-					this.indicators[i].transitionTime(time);
-				}
-			}
-			if (time) { //自定义timer,保证webkitTransitionEnd始终触发
-				this.transitionTimer && this.transitionTimer.cancel();
-				this.transitionTimer = $.later(function() {
-					$.trigger(this.scroller, 'webkitTransitionEnd');
-				}, time + 100, this);
-			}
-		},
-		_transitionTimingFunction: function(easing) {
-			this.scrollerStyle['webkitTransitionTimingFunction'] = easing;
-			if (this.parallaxElement && this.options.scrollY) { //目前仅支持竖向视差效果
-				this.parallaxStyle['webkitTransitionDuration'] = easing;
-			}
-			if (this.indicators) {
-				for (var i = this.indicators.length; i--;) {
-					this.indicators[i].transitionTimingFunction(easing);
-				}
-			}
-		},
-		_translate: function(x, y) {
-			this.x = x;
-			this.y = y;
-		},
-		_clearRequestAnimationFrame: function() {
-			if (this.requestAnimationFrame) {
-				cancelAnimationFrame(this.requestAnimationFrame);
-				this.requestAnimationFrame = null;
-			}
-		},
-		_updateTranslate: function() {
-			var self = this;
-			if (self.x !== self.lastX || self.y !== self.lastY) {
-				self.setTranslate(self.x, self.y);
-			}
-			self.requestAnimationFrame = requestAnimationFrame(function() {
-				self._updateTranslate();
-			});
-		},
-		_createScrollBar: function(clazz) {
-			var scrollbar = document.createElement('div');
-			var indicator = document.createElement('div');
-			scrollbar.className = CLASS_SCROLLBAR + ' ' + clazz;
-			indicator.className = CLASS_INDICATOR;
-			scrollbar.appendChild(indicator);
-			if (clazz === CLASS_SCROLLBAR_VERTICAL) {
-				this.scrollbarY = scrollbar;
-				this.scrollbarIndicatorY = indicator;
-			} else if (clazz === CLASS_SCROLLBAR_HORIZONTAL) {
-				this.scrollbarX = scrollbar;
-				this.scrollbarIndicatorX = indicator;
-			}
-			this.wrapper.appendChild(scrollbar);
-			return scrollbar;
-		},
-		_preventDefaultException: function(el, exceptions) {
-			for (var i in exceptions) {
-				if (exceptions[i].test(el[i])) {
-					return true;
-				}
-			}
-			return false;
-		},
-		_reLayout: function() {
-			if (!this.hasHorizontalScroll) {
-				this.maxScrollX = 0;
-				this.scrollerWidth = this.wrapperWidth;
-			}
-
-			if (!this.hasVerticalScroll) {
-				this.maxScrollY = 0;
-				this.scrollerHeight = this.wrapperHeight;
-			}
-
-			this.indicators.map(function(indicator) {
-				indicator.refresh();
-			});
-
-			//以防slider类嵌套使用
-			if (this.options.snap && typeof this.options.snap === 'string') {
-				var items = this.scroller.querySelectorAll(this.options.snap);
-				this.itemLength = 0;
-				this.snaps = [];
-				for (var i = 0, len = items.length; i < len; i++) {
-					var item = items[i];
-					if (item.parentNode === this.scroller) {
-						this.itemLength++;
-						this.snaps.push(item);
-					}
-				}
-				this._initSnap(); //需要每次都_initSnap么。其实init的时候执行一次,后续resize的时候执行一次就行了吧.先这么做吧,如果影响性能,再调整
-			}
-		},
-		_momentum: function(current, distance, time, lowerMargin, wrapperSize, deceleration) {
-			var speed = parseFloat(Math.abs(distance) / time),
-				destination,
-				duration;
-
-			deceleration = deceleration === undefined ? 0.0006 : deceleration;
-			destination = current + (speed * speed) / (2 * deceleration) * (distance < 0 ? -1 : 1);
-			duration = speed / deceleration;
-			if (destination < lowerMargin) {
-				destination = wrapperSize ? lowerMargin - (wrapperSize / 2.5 * (speed / 8)) : lowerMargin;
-				distance = Math.abs(destination - current);
-				duration = distance / speed;
-			} else if (destination > 0) {
-				destination = wrapperSize ? wrapperSize / 2.5 * (speed / 8) : 0;
-				distance = Math.abs(current) + destination;
-				duration = distance / speed;
-			}
-
-			return {
-				destination: Math.round(destination),
-				duration: duration
-			};
-		},
-		_getTranslateStr: function(x, y) {
-			if (this.options.hardwareAccelerated) {
-				return 'translate3d(' + x + 'px,' + y + 'px,0px) ' + this.translateZ;
-			}
-			return 'translate(' + x + 'px,' + y + 'px) ';
-		},
-		//API
-		setStopped: function(stopped) {
-			// this.stopped = !!stopped;
-
-			// fixed ios双webview模式下拉刷新
-			if(stopped) {
-				this.disablePullupToRefresh();
-				this.disablePulldownToRefresh();
-			} else {
-				this.enablePullupToRefresh();
-				this.enablePulldownToRefresh();
-			}
-		},
-		setTranslate: function(x, y) {
-			this.x = x;
-			this.y = y;
-			this.scrollerStyle['webkitTransform'] = this._getTranslateStr(x, y);
-			if (this.parallaxElement && this.options.scrollY) { //目前仅支持竖向视差效果
-				var parallaxY = y * this.options.parallaxRatio;
-				var scale = 1 + parallaxY / ((this.parallaxHeight - parallaxY) / 2);
-				if (scale > 1) {
-					this.parallaxImgStyle['opacity'] = 1 - parallaxY / 100 * this.options.parallaxRatio;
-					this.parallaxStyle['webkitTransform'] = this._getTranslateStr(0, -parallaxY) + ' scale(' + scale + ',' + scale + ')';
-				} else {
-					this.parallaxImgStyle['opacity'] = 1;
-					this.parallaxStyle['webkitTransform'] = this._getTranslateStr(0, -1) + ' scale(1,1)';
-				}
-			}
-			if (this.indicators) {
-				for (var i = this.indicators.length; i--;) {
-					this.indicators[i].updatePosition();
-				}
-			}
-			this.lastX = this.x;
-			this.lastY = this.y;
-			$.trigger(this.scroller, 'scroll', this);
-		},
-		reLayout: function() {
-			this.wrapper.offsetHeight;
-
-			var paddingLeft = parseFloat($.getStyles(this.wrapper, 'padding-left')) || 0;
-			var paddingRight = parseFloat($.getStyles(this.wrapper, 'padding-right')) || 0;
-			var paddingTop = parseFloat($.getStyles(this.wrapper, 'padding-top')) || 0;
-			var paddingBottom = parseFloat($.getStyles(this.wrapper, 'padding-bottom')) || 0;
-
-			var clientWidth = this.wrapper.clientWidth;
-			var clientHeight = this.wrapper.clientHeight;
-
-			this.scrollerWidth = this.scroller.offsetWidth;
-			this.scrollerHeight = this.scroller.offsetHeight;
-
-			this.wrapperWidth = clientWidth - paddingLeft - paddingRight;
-			this.wrapperHeight = clientHeight - paddingTop - paddingBottom;
-
-			this.maxScrollX = Math.min(this.wrapperWidth - this.scrollerWidth, 0);
-			this.maxScrollY = Math.min(this.wrapperHeight - this.scrollerHeight, 0);
-			this.hasHorizontalScroll = this.options.scrollX && this.maxScrollX < 0;
-			this.hasVerticalScroll = this.options.scrollY && this.maxScrollY < 0;
-			this._reLayout();
-		},
-		resetPosition: function(time) {
-			var x = this.x,
-				y = this.y;
-
-			time = time || 0;
-			if (!this.hasHorizontalScroll || this.x > 0) {
-				x = 0;
-			} else if (this.x < this.maxScrollX) {
-				x = this.maxScrollX;
-			}
-
-			if (!this.hasVerticalScroll || this.y > 0) {
-				y = 0;
-			} else if (this.y < this.maxScrollY) {
-				y = this.maxScrollY;
-			}
-
-			if (x == this.x && y == this.y) {
-				return false;
-			}
-			this.scrollTo(x, y, time, this.options.scrollEasing);
-
-			return true;
-		},
-		_reInit: function() {
-			var groups = this.wrapper.querySelectorAll('.' + CLASS_SCROLL);
-			for (var i = 0, len = groups.length; i < len; i++) {
-				if (groups[i].parentNode === this.wrapper) {
-					this.scroller = groups[i];
-					break;
-				}
-			}
-			this.scrollerStyle = this.scroller && this.scroller.style;
-		},
-		refresh: function() {
-			this._reInit();
-			this.reLayout();
-			$.trigger(this.scroller, 'refresh', this);
-			this.resetPosition();
-		},
-		scrollTo: function(x, y, time, easing) {
-			var easing = easing || ease.circular;
-			//			this.isInTransition = time > 0 && (this.lastX != x || this.lastY != y);
-			//暂不严格判断x,y,否则会导致部分版本上不正常触发轮播
-			this.isInTransition = time > 0;
-			if (this.isInTransition) {
-				this._clearRequestAnimationFrame();
-				this._transitionTimingFunction(easing.style);
-				this._transitionTime(time);
-				this.setTranslate(x, y);
-			} else {
-				this.setTranslate(x, y);
-			}
-
-		},
-		scrollToBottom: function(time, easing) {
-			time = time || this.options.scrollTime;
-			this.scrollTo(0, this.maxScrollY, time, easing);
-		},
-		gotoPage: function(index) {
-			this._gotoPage(index);
-		},
-		destroy: function() {
-			this._initEvent(true); //detach
-			delete $.data[this.wrapper.getAttribute('data-scroll')];
-			this.wrapper.setAttribute('data-scroll', '');
-		}
-	});
-	//Indicator
-	var Indicator = function(scroller, options) {
-		this.wrapper = typeof options.el == 'string' ? document.querySelector(options.el) : options.el;
-		this.wrapperStyle = this.wrapper.style;
-		this.indicator = this.wrapper.children[0];
-		this.indicatorStyle = this.indicator.style;
-		this.scroller = scroller;
-
-		this.options = $.extend({
-			listenX: true,
-			listenY: true,
-			fade: false,
-			speedRatioX: 0,
-			speedRatioY: 0
-		}, options);
-
-		this.sizeRatioX = 1;
-		this.sizeRatioY = 1;
-		this.maxPosX = 0;
-		this.maxPosY = 0;
-
-		if (this.options.fade) {
-			this.wrapperStyle['webkitTransform'] = this.scroller.translateZ;
-			this.wrapperStyle['webkitTransitionDuration'] = this.options.fixedBadAndorid && $.os.isBadAndroid ? '0.001s' : '0ms';
-			this.wrapperStyle.opacity = '0';
-		}
-	}
-	Indicator.prototype = {
-		handleEvent: function(e) {
-
-		},
-		transitionTime: function(time) {
-			time = time || 0;
-			this.indicatorStyle['webkitTransitionDuration'] = time + 'ms';
-			if (this.scroller.options.fixedBadAndorid && !time && $.os.isBadAndroid) {
-				this.indicatorStyle['webkitTransitionDuration'] = '0.001s';
-			}
-		},
-		transitionTimingFunction: function(easing) {
-			this.indicatorStyle['webkitTransitionTimingFunction'] = easing;
-		},
-		refresh: function() {
-			this.transitionTime();
-
-			if (this.options.listenX && !this.options.listenY) {
-				this.indicatorStyle.display = this.scroller.hasHorizontalScroll ? 'block' : 'none';
-			} else if (this.options.listenY && !this.options.listenX) {
-				this.indicatorStyle.display = this.scroller.hasVerticalScroll ? 'block' : 'none';
-			} else {
-				this.indicatorStyle.display = this.scroller.hasHorizontalScroll || this.scroller.hasVerticalScroll ? 'block' : 'none';
-			}
-
-			this.wrapper.offsetHeight; // force refresh
-
-			if (this.options.listenX) {
-				this.wrapperWidth = this.wrapper.clientWidth;
-				this.indicatorWidth = Math.max(Math.round(this.wrapperWidth * this.wrapperWidth / (this.scroller.scrollerWidth || this.wrapperWidth || 1)), 8);
-				this.indicatorStyle.width = this.indicatorWidth + 'px';
-
-				this.maxPosX = this.wrapperWidth - this.indicatorWidth;
-
-				this.minBoundaryX = 0;
-				this.maxBoundaryX = this.maxPosX;
-
-				this.sizeRatioX = this.options.speedRatioX || (this.scroller.maxScrollX && (this.maxPosX / this.scroller.maxScrollX));
-			}
-
-			if (this.options.listenY) {
-				this.wrapperHeight = this.wrapper.clientHeight;
-				this.indicatorHeight = Math.max(Math.round(this.wrapperHeight * this.wrapperHeight / (this.scroller.scrollerHeight || this.wrapperHeight || 1)), 8);
-				this.indicatorStyle.height = this.indicatorHeight + 'px';
-
-				this.maxPosY = this.wrapperHeight - this.indicatorHeight;
-
-				this.minBoundaryY = 0;
-				this.maxBoundaryY = this.maxPosY;
-
-				this.sizeRatioY = this.options.speedRatioY || (this.scroller.maxScrollY && (this.maxPosY / this.scroller.maxScrollY));
-			}
-
-			this.updatePosition();
-		},
-
-		updatePosition: function() {
-			var x = this.options.listenX && Math.round(this.sizeRatioX * this.scroller.x) || 0,
-				y = this.options.listenY && Math.round(this.sizeRatioY * this.scroller.y) || 0;
-
-			if (x < this.minBoundaryX) {
-				this.width = Math.max(this.indicatorWidth + x, 8);
-				this.indicatorStyle.width = this.width + 'px';
-				x = this.minBoundaryX;
-			} else if (x > this.maxBoundaryX) {
-				this.width = Math.max(this.indicatorWidth - (x - this.maxPosX), 8);
-				this.indicatorStyle.width = this.width + 'px';
-				x = this.maxPosX + this.indicatorWidth - this.width;
-			} else if (this.width != this.indicatorWidth) {
-				this.width = this.indicatorWidth;
-				this.indicatorStyle.width = this.width + 'px';
-			}
-
-			if (y < this.minBoundaryY) {
-				this.height = Math.max(this.indicatorHeight + y * 3, 8);
-				this.indicatorStyle.height = this.height + 'px';
-				y = this.minBoundaryY;
-			} else if (y > this.maxBoundaryY) {
-				this.height = Math.max(this.indicatorHeight - (y - this.maxPosY) * 3, 8);
-				this.indicatorStyle.height = this.height + 'px';
-				y = this.maxPosY + this.indicatorHeight - this.height;
-			} else if (this.height != this.indicatorHeight) {
-				this.height = this.indicatorHeight;
-				this.indicatorStyle.height = this.height + 'px';
-			}
-
-			this.x = x;
-			this.y = y;
-
-			this.indicatorStyle['webkitTransform'] = this.scroller._getTranslateStr(x, y);
-
-		},
-		fade: function(val, hold) {
-			if (hold && !this.visible) {
-				return;
-			}
-
-			clearTimeout(this.fadeTimeout);
-			this.fadeTimeout = null;
-
-			var time = val ? 250 : 500,
-				delay = val ? 0 : 300;
-
-			val = val ? '1' : '0';
-
-			this.wrapperStyle['webkitTransitionDuration'] = time + 'ms';
-
-			this.fadeTimeout = setTimeout((function(val) {
-				this.wrapperStyle.opacity = val;
-				this.visible = +val;
-			}).bind(this, val), delay);
-		}
-	};
-
-	$.Scroll = Scroll;
-
-	$.fn.scroll = function(options) {
-		var scrollApis = [];
-		this.each(function() {
-			var scrollApi = null;
-			var self = this;
-			var id = self.getAttribute('data-scroll');
-			if (!id) {
-				id = ++$.uuid;
-				var _options = $.extend({}, options);
-				if (self.classList.contains('mui-segmented-control')) {
-					_options = $.extend(_options, {
-						scrollY: false,
-						scrollX: true,
-						indicators: false,
-						snap: '.mui-control-item'
-					});
-				}
-				$.data[id] = scrollApi = new Scroll(self, _options);
-				self.setAttribute('data-scroll', id);
-			} else {
-				scrollApi = $.data[id];
-			}
-			scrollApis.push(scrollApi);
-		});
-		return scrollApis.length === 1 ? scrollApis[0] : scrollApis;
-	};
-})(mui, window, document);
-(function($, window, document, undefined) {
-
-    var CLASS_VISIBILITY = 'mui-visibility';
-    var CLASS_HIDDEN = 'mui-hidden';
-
-    var PullRefresh = $.Scroll.extend($.extend({
-        handleEvent: function(e) {
-            this._super(e);
-            if (e.type === 'scrollbottom') {
-                if (e.target === this.scroller) {
-                    this._scrollbottom();
-                }
-            }
-        },
-        _scrollbottom: function() {
-            if (!this.pulldown && !this.loading) {
-                this.pulldown = false;
-                this._initPullupRefresh();
-                this.pullupLoading();
-            }
-        },
-        _start: function(e) {
-            //仅下拉刷新在start阻止默认事件
-            if (e.touches && e.touches.length && e.touches[0].clientX > 30) {
-                e.target && !this._preventDefaultException(e.target, this.options.preventDefaultException) && e.preventDefault();
-            }
-            if (!this.loading) {
-                this.pulldown = this.pullPocket = this.pullCaption = this.pullLoading = false
-            }
-            this._super(e);
-        },
-        _drag: function(e) {
-            if (this.y >= 0 && this.disablePulldown && e.detail.direction === 'down') { //禁用下拉刷新
-                return;
-            }
-            this._super(e);
-            if (!this.pulldown && !this.loading && this.topPocket && e.detail.direction === 'down' && this.y >= 0) {
-                this._initPulldownRefresh();
-            }
-            if (this.pulldown) {
-                this._setCaption(this.y > this.options.down.height ? this.options.down.contentover : this.options.down.contentdown);
-            }
-        },
-
-        _reLayout: function() {
-            this.hasVerticalScroll = true;
-            this._super();
-        },
-        //API
-        resetPosition: function(time) {
-            if (this.pulldown && !this.disablePulldown) {
-                if (this.y >= this.options.down.height) {
-                    this.pulldownLoading(undefined, time || 0);
-                    return true;
-                } else {
-                    !this.loading && this.topPocket.classList.remove(CLASS_VISIBILITY);
-                }
-            }
-            return this._super(time);
-        },
-        pulldownLoading: function(y, time) {
-            typeof y === 'undefined' && (y = this.options.down.height); //默认高度
-            this.scrollTo(0, y, time, this.options.bounceEasing);
-            if (this.loading) {
-                return;
-            }
-            //			if (!this.pulldown) {
-            this._initPulldownRefresh();
-            //			}
-            this._setCaption(this.options.down.contentrefresh);
-            this.loading = true;
-            this.indicators.map(function(indicator) {
-                indicator.fade(0);
-            });
-            var callback = this.options.down.callback;
-            callback && callback.call(this);
-        },
-        endPulldownToRefresh: function() {
-            var self = this;
-            if (self.topPocket && self.loading && this.pulldown) {
-                self.scrollTo(0, 0, self.options.bounceTime, self.options.bounceEasing);
-                self.loading = false;
-                self._setCaption(self.options.down.contentdown, true);
-                setTimeout(function() {
-                    self.loading || self.topPocket.classList.remove(CLASS_VISIBILITY);
-                }, 350);
-            }
-        },
-        pullupLoading: function(callback, x, time) {
-            x = x || 0;
-            this.scrollTo(x, this.maxScrollY, time, this.options.bounceEasing);
-            if (this.loading) {
-                return;
-            }
-            this._initPullupRefresh();
-            this._setCaption(this.options.up.contentrefresh);
-            this.indicators.map(function(indicator) {
-                indicator.fade(0);
-            });
-            this.loading = true;
-            callback = callback || this.options.up.callback;
-            callback && callback.call(this);
-        },
-        endPullupToRefresh: function(finished) {
-            var self = this;
-            if (self.bottomPocket) { // && self.loading && !this.pulldown
-                self.loading = false;
-                if (finished) {
-                    this.finished = true;
-                    self._setCaption(self.options.up.contentnomore);
-                    //					self.bottomPocket.classList.remove(CLASS_VISIBILITY);
-                    //					self.bottomPocket.classList.add(CLASS_HIDDEN);
-                    self.wrapper.removeEventListener('scrollbottom', self);
-                } else {
-                    self._setCaption(self.options.up.contentdown);
-                    //					setTimeout(function() {
-                    self.loading || self.bottomPocket.classList.remove(CLASS_VISIBILITY);
-                    //					}, 300);
-                }
-            }
-        },
-        disablePullupToRefresh: function() {
-            this._initPullupRefresh();
-            this.bottomPocket.className = 'mui-pull-bottom-pocket' + ' ' + CLASS_HIDDEN;
-            this.wrapper.removeEventListener('scrollbottom', this);
-        },
-        disablePulldownToRefresh: function() {
-            this._initPulldownRefresh();
-            this.topPocket.className = 'mui-pull-top-pocket' + ' ' + CLASS_HIDDEN;
-            this.disablePulldown = true;
-        },
-        enablePulldownToRefresh: function() {
-            this._initPulldownRefresh();
-            this.topPocket.classList.remove(CLASS_HIDDEN);
-            this._setCaption(this.options.down.contentdown);
-            this.disablePulldown = false;
-        },
-        enablePullupToRefresh: function() {
-            this._initPullupRefresh();
-            this.bottomPocket.classList.remove(CLASS_HIDDEN);
-            this._setCaption(this.options.up.contentdown);
-            this.wrapper.addEventListener('scrollbottom', this);
-        },
-        refresh: function(isReset) {
-            if (isReset && this.finished) {
-                this.enablePullupToRefresh();
-                this.finished = false;
-            }
-            this._super();
-        },
-    }, $.PullRefresh));
-    $.fn.pullRefresh = function(options) {
-        if (this.length === 1) {
-            var self = this[0];
-            var pullRefreshApi = null;
-            var id = self.getAttribute('data-pullrefresh');
-            if (!id && typeof options === 'undefined') {
-                return false;
-            }
-            options = options || {};
-            if (!id) {
-                id = ++$.uuid;
-                $.data[id] = pullRefreshApi = new PullRefresh(self, options);
-                self.setAttribute('data-pullrefresh', id);
-            } else {
-                pullRefreshApi = $.data[id];
-            }
-            if (options.down && options.down.auto) { //如果设置了auto,则自动下拉一次
-                pullRefreshApi.pulldownLoading(options.down.autoY);
-            } else if (options.up && options.up.auto) { //如果设置了auto,则自动上拉一次
-                pullRefreshApi.pullupLoading();
-            }
-            //暂不提供这种调用方式吧			
-            //			if (typeof options === 'string') {
-            //				var methodValue = pullRefreshApi[options].apply(pullRefreshApi, $.slice.call(arguments, 1));
-            //				if (methodValue !== undefined) {
-            //					return methodValue;
-            //				}
-            //			}
-            return pullRefreshApi;
-        }
-    };
-})(mui, window, document);
-/**
- * snap 重构
- * @param {Object} $
- * @param {Object} window
- */
-(function($, window) {
-	var CLASS_SLIDER = 'mui-slider';
-	var CLASS_SLIDER_GROUP = 'mui-slider-group';
-	var CLASS_SLIDER_LOOP = 'mui-slider-loop';
-	var CLASS_SLIDER_INDICATOR = 'mui-slider-indicator';
-	var CLASS_ACTION_PREVIOUS = 'mui-action-previous';
-	var CLASS_ACTION_NEXT = 'mui-action-next';
-	var CLASS_SLIDER_ITEM = 'mui-slider-item';
-
-	var CLASS_ACTIVE = 'mui-active';
-
-	var SELECTOR_SLIDER_ITEM = '.' + CLASS_SLIDER_ITEM;
-	var SELECTOR_SLIDER_INDICATOR = '.' + CLASS_SLIDER_INDICATOR;
-	var SELECTOR_SLIDER_PROGRESS_BAR = '.mui-slider-progress-bar';
-
-	var Slider = $.Slider = $.Scroll.extend({
-		init: function(element, options) {
-			this._super(element, $.extend(true, {
-				fingers: 1,
-				interval: 0, //设置为0,则不定时轮播
-				scrollY: false,
-				scrollX: true,
-				indicators: false,
-				scrollTime: 1000,
-				startX: false,
-				slideTime: 0, //滑动动画时间
-				snap: SELECTOR_SLIDER_ITEM
-			}, options));
-			if (this.options.startX) {
-				//				$.trigger(this.wrapper, 'scrollend', this);
-			}
-		},
-		_init: function() {
-			this._reInit();
-			if (this.scroller) {
-				this.scrollerStyle = this.scroller.style;
-				this.progressBar = this.wrapper.querySelector(SELECTOR_SLIDER_PROGRESS_BAR);
-				if (this.progressBar) {
-					this.progressBarWidth = this.progressBar.offsetWidth;
-					this.progressBarStyle = this.progressBar.style;
-				}
-				//忘记这个代码是干什么的了?
-				//				this.x = this._getScroll();
-				//				if (this.options.startX === false) {
-				//					this.options.startX = this.x;
-				//				}
-				//根据active修正startX
-
-				this._super();
-				this._initTimer();
-			}
-		},
-		_triggerSlide: function() {
-			var self = this;
-			self.isInTransition = false;
-			var page = self.currentPage;
-			self.slideNumber = self._fixedSlideNumber();
-			if (self.loop) {
-				if (self.slideNumber === 0) {
-					self.setTranslate(self.pages[1][0].x, 0);
-				} else if (self.slideNumber === self.itemLength - 3) {
-					self.setTranslate(self.pages[self.itemLength - 2][0].x, 0);
-				}
-			}
-			if (self.lastSlideNumber != self.slideNumber) {
-				self.lastSlideNumber = self.slideNumber;
-				self.lastPage = self.currentPage;
-				$.trigger(self.wrapper, 'slide', {
-					slideNumber: self.slideNumber
-				});
-			}
-			self._initTimer();
-		},
-		_handleSlide: function(e) {
-			var self = this;
-			if (e.target !== self.wrapper) {
-				return;
-			}
-			var detail = e.detail;
-			detail.slideNumber = detail.slideNumber || 0;
-			var temps = self.scroller.querySelectorAll(SELECTOR_SLIDER_ITEM);
-			var items = [];
-			for (var i = 0, len = temps.length; i < len; i++) {
-				var item = temps[i];
-				if (item.parentNode === self.scroller) {
-					items.push(item);
-				}
-			}
-			var _slideNumber = detail.slideNumber;
-			if (self.loop) {
-				_slideNumber += 1;
-			}
-			if (!self.wrapper.classList.contains('mui-segmented-control')) {
-				for (var i = 0, len = items.length; i < len; i++) {
-					var item = items[i];
-					if (item.parentNode === self.scroller) {
-						if (i === _slideNumber) {
-							item.classList.add(CLASS_ACTIVE);
-						} else {
-							item.classList.remove(CLASS_ACTIVE);
-						}
-					}
-				}
-			}
-			var indicatorWrap = self.wrapper.querySelector('.mui-slider-indicator');
-			if (indicatorWrap) {
-				if (indicatorWrap.getAttribute('data-scroll')) { //scroll
-					$(indicatorWrap).scroll().gotoPage(detail.slideNumber);
-				}
-				var indicators = indicatorWrap.querySelectorAll('.mui-indicator');
-				if (indicators.length > 0) { //图片轮播
-					for (var i = 0, len = indicators.length; i < len; i++) {
-						indicators[i].classList[i === detail.slideNumber ? 'add' : 'remove'](CLASS_ACTIVE);
-					}
-				} else {
-					var number = indicatorWrap.querySelector('.mui-number span');
-					if (number) { //图文表格
-						number.innerText = (detail.slideNumber + 1);
-					} else { //segmented controls
-						var controlItems = indicatorWrap.querySelectorAll('.mui-control-item');
-						for (var i = 0, len = controlItems.length; i < len; i++) {
-							controlItems[i].classList[i === detail.slideNumber ? 'add' : 'remove'](CLASS_ACTIVE);
-						}
-					}
-				}
-			}
-			e.stopPropagation();
-		},
-		_handleTabShow: function(e) {
-			var self = this;
-			self.gotoItem((e.detail.tabNumber || 0), self.options.slideTime);
-		},
-		_handleIndicatorTap: function(event) {
-			var self = this;
-			var target = event.target;
-			if (target.classList.contains(CLASS_ACTION_PREVIOUS) || target.classList.contains(CLASS_ACTION_NEXT)) {
-				self[target.classList.contains(CLASS_ACTION_PREVIOUS) ? 'prevItem' : 'nextItem']();
-				event.stopPropagation();
-			}
-		},
-		_initEvent: function(detach) {
-			var self = this;
-			self._super(detach);
-			var action = detach ? 'removeEventListener' : 'addEventListener';
-			self.wrapper[action]('slide', this);
-			self.wrapper[action]($.eventName('shown', 'tab'), this);
-		},
-		handleEvent: function(e) {
-			this._super(e);
-			switch (e.type) {
-				case 'slide':
-					this._handleSlide(e);
-					break;
-				case $.eventName('shown', 'tab'):
-					if (~this.snaps.indexOf(e.target)) { //避免嵌套监听错误的tab show
-						this._handleTabShow(e);
-					}
-					break;
-			}
-		},
-		_scrollend: function(e) {
-			this._super(e);
-			this._triggerSlide(e);
-		},
-		_drag: function(e) {
-			this._super(e);
-			var direction = e.detail.direction;
-			if (direction === 'left' || direction === 'right') {
-				//拖拽期间取消定时
-				var slidershowTimer = this.wrapper.getAttribute('data-slidershowTimer');
-				slidershowTimer && window.clearTimeout(slidershowTimer);
-
-				e.stopPropagation();
-			}
-		},
-		_initTimer: function() {
-			var self = this;
-			var slider = self.wrapper;
-			var interval = self.options.interval;
-			var slidershowTimer = slider.getAttribute('data-slidershowTimer');
-			slidershowTimer && window.clearTimeout(slidershowTimer);
-			if (interval) {
-				slidershowTimer = window.setTimeout(function() {
-					if (!slider) {
-						return;
-					}
-					//仅slider显示状态进行自动轮播
-					if (!!(slider.offsetWidth || slider.offsetHeight)) {
-						self.nextItem(true);
-						//下一个
-					}
-					self._initTimer();
-				}, interval);
-				slider.setAttribute('data-slidershowTimer', slidershowTimer);
-			}
-		},
-
-		_fixedSlideNumber: function(page) {
-			page = page || this.currentPage;
-			var slideNumber = page.pageX;
-			if (this.loop) {
-				if (page.pageX === 0) {
-					slideNumber = this.itemLength - 3;
-				} else if (page.pageX === (this.itemLength - 1)) {
-					slideNumber = 0;
-				} else {
-					slideNumber = page.pageX - 1;
-				}
-			}
-			return slideNumber;
-		},
-		_reLayout: function() {
-			this.hasHorizontalScroll = true;
-			this.loop = this.scroller.classList.contains(CLASS_SLIDER_LOOP);
-			this._super();
-		},
-		_getScroll: function() {
-			var result = $.parseTranslateMatrix($.getStyles(this.scroller, 'webkitTransform'));
-			return result ? result.x : 0;
-		},
-		_transitionEnd: function(e) {
-			if (e.target !== this.scroller || !this.isInTransition) {
-				return;
-			}
-			this._transitionTime();
-			this.isInTransition = false;
-			$.trigger(this.wrapper, 'scrollend', this);
-		},
-		_flick: function(e) {
-			if (!this.moved) { //无moved
-				return;
-			}
-			var detail = e.detail;
-			var direction = detail.direction;
-			this._clearRequestAnimationFrame();
-			this.isInTransition = true;
-			//			if (direction === 'up' || direction === 'down') {
-			//				this.resetPosition(this.options.bounceTime);
-			//				return;
-			//			}
-			if (e.type === 'flick') {
-				if (detail.deltaTime < 200) { //flick,太容易触发,额外校验一下deltaTime
-					this.x = this._getPage((this.slideNumber + (direction === 'right' ? -1 : 1)), true).x;
-				}
-				this.resetPosition(this.options.bounceTime);
-			} else if (e.type === 'dragend' && !detail.flick) {
-				this.resetPosition(this.options.bounceTime);
-			}
-			e.stopPropagation();
-		},
-		_initSnap: function() {
-			this.scrollerWidth = this.itemLength * this.scrollerWidth;
-			this.maxScrollX = Math.min(this.wrapperWidth - this.scrollerWidth, 0);
-			this._super();
-			if (!this.currentPage.x) {
-				//当slider处于隐藏状态时,导致snap计算是错误的,临时先这么判断一下,后续要考虑解决所有scroll在隐藏状态下初始化属性不正确的问题
-				var currentPage = this.pages[this.loop ? 1 : 0];
-				currentPage = currentPage || this.pages[0];
-				if (!currentPage) {
-					return;
-				}
-				this.currentPage = currentPage[0];
-				this.slideNumber = 0;
-				this.lastSlideNumber = typeof this.lastSlideNumber === 'undefined' ? 0 : this.lastSlideNumber;
-			} else {
-				this.slideNumber = this._fixedSlideNumber();
-				this.lastSlideNumber = typeof this.lastSlideNumber === 'undefined' ? this.slideNumber : this.lastSlideNumber;
-			}
-			this.options.startX = this.currentPage.x || 0;
-		},
-		_getSnapX: function(offsetLeft) {
-			return Math.max(-offsetLeft, this.maxScrollX);
-		},
-		_getPage: function(slideNumber, isFlick) {
-			if (this.loop) {
-				if (slideNumber > (this.itemLength - (isFlick ? 2 : 3))) {
-					slideNumber = 1;
-					time = 0;
-				} else if (slideNumber < (isFlick ? -1 : 0)) {
-					slideNumber = this.itemLength - 2;
-					time = 0;
-				} else {
-					slideNumber += 1;
-				}
-			} else {
-				if (!isFlick) {
-					if (slideNumber > (this.itemLength - 1)) {
-						slideNumber = 0;
-						time = 0;
-					} else if (slideNumber < 0) {
-						slideNumber = this.itemLength - 1;
-						time = 0;
-					}
-				}
-				slideNumber = Math.min(Math.max(0, slideNumber), this.itemLength - 1);
-			}
-			return this.pages[slideNumber][0];
-		},
-		_gotoItem: function(slideNumber, time) {
-			this.currentPage = this._getPage(slideNumber, true); //此处传true。可保证程序切换时,动画与人手操作一致(第一张,最后一张的切换动画)
-			this.scrollTo(this.currentPage.x, 0, time, this.options.scrollEasing);
-			if (time === 0) {
-				$.trigger(this.wrapper, 'scrollend', this);
-			}
-		},
-		//API
-		setTranslate: function(x, y) {
-			this._super(x, y);
-			var progressBar = this.progressBar;
-			if (progressBar) {
-				this.progressBarStyle.webkitTransform = this._getTranslateStr((-x * (this.progressBarWidth / this.wrapperWidth)), 0);
-			}
-		},
-		resetPosition: function(time) {
-			time = time || 0;
-			if (this.x > 0) {
-				this.x = 0;
-			} else if (this.x < this.maxScrollX) {
-				this.x = this.maxScrollX;
-			}
-			this.currentPage = this._nearestSnap(this.x);
-			this.scrollTo(this.currentPage.x, 0, time, this.options.scrollEasing);
-			return true;
-		},
-		gotoItem: function(slideNumber, time) {
-			this._gotoItem(slideNumber, typeof time === 'undefined' ? this.options.scrollTime : time);
-		},
-		nextItem: function() {
-			this._gotoItem(this.slideNumber + 1, this.options.scrollTime);
-		},
-		prevItem: function() {
-			this._gotoItem(this.slideNumber - 1, this.options.scrollTime);
-		},
-		getSlideNumber: function() {
-			return this.slideNumber || 0;
-		},
-		_reInit: function() {
-			var groups = this.wrapper.querySelectorAll('.' + CLASS_SLIDER_GROUP);
-			for (var i = 0, len = groups.length; i < len; i++) {
-				if (groups[i].parentNode === this.wrapper) {
-					this.scroller = groups[i];
-					break;
-				}
-			}
-			this.scrollerStyle = this.scroller && this.scroller.style;
-			if (this.progressBar) {
-				this.progressBarWidth = this.progressBar.offsetWidth;
-				this.progressBarStyle = this.progressBar.style;
-			}
-		},
-		refresh: function(options) {
-			if (options) {
-				$.extend(this.options, options);
-				this._super();
-				this._initTimer();
-			} else {
-				this._super();
-			}
-		},
-		destroy: function() {
-			this._initEvent(true); //detach
-			delete $.data[this.wrapper.getAttribute('data-slider')];
-			this.wrapper.setAttribute('data-slider', '');
-		}
-	});
-	$.fn.slider = function(options) {
-		var slider = null;
-		this.each(function() {
-			var sliderElement = this;
-			if (!this.classList.contains(CLASS_SLIDER)) {
-				sliderElement = this.querySelector('.' + CLASS_SLIDER);
-			}
-			if (sliderElement && sliderElement.querySelector(SELECTOR_SLIDER_ITEM)) {
-				var id = sliderElement.getAttribute('data-slider');
-				if (!id) {
-					id = ++$.uuid;
-					$.data[id] = slider = new Slider(sliderElement, options);
-					sliderElement.setAttribute('data-slider', id);
-				} else {
-					slider = $.data[id];
-					if (slider && options) {
-						slider.refresh(options);
-					}
-				}
-			}
-		});
-		return slider;
-	};
-	$.ready(function() {
-		//		setTimeout(function() {
-		$('.mui-slider').slider();
-		$('.mui-scroll-wrapper.mui-slider-indicator.mui-segmented-control').scroll({
-			scrollY: false,
-			scrollX: true,
-			indicators: false,
-			snap: '.mui-control-item'
-		});
-		//		}, 500); //临时处理slider宽度计算不正确的问题(初步确认是scrollbar导致的)
-
-	});
-})(mui, window);
-/**
- * pullRefresh 5+
- * @param {type} $
- * @returns {undefined}
- */
-(function($, document) {
-    if (!($.os.plus)) { //仅在5+android支持多webview的使用
-        return;
-    }
-    $.plusReady(function() {
-        if (window.__NWin_Enable__ === false) { //不支持多webview,则不用5+下拉刷新
-            return;
-        }
-        var CLASS_PLUS_PULLREFRESH = 'mui-plus-pullrefresh';
-        var CLASS_VISIBILITY = 'mui-visibility';
-        var CLASS_HIDDEN = 'mui-hidden';
-        var CLASS_BLOCK = 'mui-block';
-
-        var CLASS_PULL_CAPTION = 'mui-pull-caption';
-        var CLASS_PULL_CAPTION_DOWN = 'mui-pull-caption-down';
-        var CLASS_PULL_CAPTION_REFRESH = 'mui-pull-caption-refresh';
-        var CLASS_PULL_CAPTION_NOMORE = 'mui-pull-caption-nomore';
-
-        var PlusPullRefresh = $.Class.extend({
-            init: function(element, options) {
-                this.element = element;
-                this.options = options;
-                this.wrapper = this.scroller = element;
-                this._init();
-                this._initPulldownRefreshEvent();
-            },
-            _init: function() {
-                var self = this;
-                //document.addEventListener('plusscrollbottom', this);
-                window.addEventListener('dragup', self);
-                document.addEventListener("plusscrollbottom", self);
-                self.scrollInterval = window.setInterval(function() {
-                    if (self.isScroll && !self.loading) {
-                        if (window.pageYOffset + window.innerHeight + 10 >= document.documentElement.scrollHeight) {
-                            self.isScroll = false; //放在这里是因为快速滚动的话,有可能检测时,还没到底,所以只要有滚动,没到底之前一直检测高度变化
-                            if (self.bottomPocket) {
-                                self.pullupLoading();
-                            }
-                        }
-                    }
-                }, 100);
-            },
-            _initPulldownRefreshEvent: function() {
-                var self = this;
-                $.plusReady(function() {
-                    if (self.options.down.style == "circle") {
-                        //单webview、原生转圈
-                        self.options.webview = plus.webview.currentWebview();
-                        self.options.webview.setPullToRefresh({
-                            support: true,
-                            color: self.options.down.color || '#2BD009',
-                            height: self.options.down.height || '50px',
-                            range: self.options.down.range || '100px',
-                            style: 'circle',
-                            offset: self.options.down.offset || '0px'
-                        }, function() {
-                            self.options.down.callback();
-                        });
-                    } else if (self.topPocket && self.options.webviewId) {
-                        var webview = plus.webview.getWebviewById(self.options.webviewId); //子窗口
-                        if (!webview) {
-                            return;
-                        }
-                        self.options.webview = webview;
-                        var downOptions = self.options.down;
-                        var height = downOptions.height;
-                        webview.addEventListener('close', function() {
-                            var attrWebviewId = self.options.webviewId && self.options.webviewId.replace(/\//g, "_"); //替换所有"/" 
-                            self.element.removeAttribute('data-pullrefresh-plus-' + attrWebviewId);
-                        });
-                        webview.addEventListener("dragBounce", function(e) {
-                            if (!self.pulldown) {
-                                self._initPulldownRefresh();
-                            } else {
-                                self.pullPocket.classList.add(CLASS_BLOCK);
-                            }
-                            switch (e.status) {
-                                case "beforeChangeOffset": //下拉可刷新状态
-                                    self._setCaption(downOptions.contentdown);
-                                    break;
-                                case "afterChangeOffset": //松开可刷新状态
-                                    self._setCaption(downOptions.contentover);
-                                    break;
-                                case "dragEndAfterChangeOffset": //正在刷新状态
-                                    //执行下拉刷新所在webview的回调函数
-                                    webview.evalJS("window.mui&&mui.options.pullRefresh.down.callback()");
-                                    self._setCaption(downOptions.contentrefresh);
-                                    break;
-                                default:
-                                    break;
-                            }
-                        }, false);
-
-                        webview.setBounce({
-                            position: {
-                                top: height * 2 + 'px'
-                            },
-                            changeoffset: {
-                                top: height + 'px'
-                            }
-                        });
-
-                    }
-                });
-            },
-            handleEvent: function(e) {
-                var self = this;
-                if (self.stopped) {
-                    return;
-                }
-                self.isScroll = false;
-                if (e.type === 'dragup' || e.type === 'plusscrollbottom') {
-                    self.isScroll = true;
-                    setTimeout(function() {
-                        self.isScroll = false;
-                    }, 1000);
-                }
-            }
-        }).extend($.extend({
-            setStopped: function(stopped) { //该方法是子页面调用的
-                this.stopped = !!stopped;
-                // TODO 此处需要设置当前webview的bounce为none,目前5+有BUG
-                if (this.stopped) {
-                    this.disablePullupToRefresh();
-                    this.disablePulldownToRefresh();
-                } else {
-                    this.enablePullupToRefresh();
-                    this.enablePulldownToRefresh();
-                }
-            },
-            beginPulldown: function() {
-                var self = this;
-                $.plusReady(function() {
-                    //这里延时的目的是为了保证下拉刷新组件初始化完成,后续应该做成有状态的
-                    setTimeout(function() {
-                        if (self.options.down.style == "circle") { //单webview下拉刷新
-                            plus.webview.currentWebview().beginPullToRefresh();
-                        } else { //双webview模式
-                            var webview = self.options.webview;
-                            if (webview) {
-                                webview.setBounce({
-                                    offset: {
-                                        top: self.options.down.height + "px"
-                                    }
-                                });
-                            }
-                        }
-                    }, 15);
-                }.bind(this));
-            },
-            pulldownLoading: function() { //该方法是子页面调用的,兼容老的历史API
-                this.beginPulldown();
-            },
-            _pulldownLoading: function() { //该方法是父页面调用的
-                var self = this;
-                $.plusReady(function() {
-                    var childWebview = plus.webview.getWebviewById(self.options.webviewId);
-                    childWebview && childWebview.setBounce({
-                        offset: {
-                            top: self.options.down.height + "px"
-                        }
-                    });
-                });
-            },
-            endPulldown: function() {
-                var _wv = plus.webview.currentWebview();
-                //双webview的下拉刷新,需要修改父窗口提示信息
-                if (_wv.parent() && this.options.down.style !== "circle") {
-                    _wv.parent().evalJS("mui&&mui(document.querySelector('.mui-content')).pullRefresh('" + JSON.stringify({
-                        webviewId: _wv.id
-                    }) + "')._endPulldownToRefresh()");
-                } else {
-                    _wv.endPullToRefresh();
-                }
-            },
-            endPulldownToRefresh: function() { //该方法是子页面调用的,兼容老的历史API
-                this.endPulldown();
-            },
-            _endPulldownToRefresh: function() { //该方法是父页面调用的
-                var self = this;
-                if (self.topPocket && self.options.webview) {
-                    self.options.webview.endPullToRefresh(); //下拉刷新所在webview回弹
-                    self.loading = false;
-                    self._setCaption(self.options.down.contentdown, true);
-                    setTimeout(function() {
-                        self.loading || self.topPocket.classList.remove(CLASS_BLOCK);
-                    }, 350);
-                }
-            },
-            beginPullup: function(callback) { //开始上拉加载
-                var self = this;
-                if (self.isLoading) return;
-                self.isLoading = true;
-                if (self.pulldown !== false) {
-                    self._initPullupRefresh();
-                } else {
-                    this.pullPocket.classList.add(CLASS_BLOCK);
-                }
-                setTimeout(function() {
-                    self.pullLoading.classList.add(CLASS_VISIBILITY);
-                    self.pullLoading.classList.remove(CLASS_HIDDEN);
-                    self.pullCaption.innerHTML = ''; //修正5+里边第一次加载时,文字显示的bug(还会显示出来个“多”,猜测应该是渲染问题导致的)
-                    self.pullCaption.className = CLASS_PULL_CAPTION + ' ' + CLASS_PULL_CAPTION_REFRESH;
-                    self.pullCaption.innerHTML = self.options.up.contentrefresh;
-                    callback = callback || self.options.up.callback;
-                    callback && callback.call(self);
-                }, 300);
-            },
-            pullupLoading: function(callback) { //兼容老的API
-                this.beginPullup(callback);
-            },
-            endPullup: function(finished) { //上拉加载结束
-                var self = this;
-                if (self.pullLoading) {
-                    self.pullLoading.classList.remove(CLASS_VISIBILITY);
-                    self.pullLoading.classList.add(CLASS_HIDDEN);
-                    self.isLoading = false;
-                    if (finished) {
-                        self.finished = true;
-                        self.pullCaption.className = CLASS_PULL_CAPTION + ' ' + CLASS_PULL_CAPTION_NOMORE;
-                        self.pullCaption.innerHTML = self.options.up.contentnomore;
-                        //取消5+的plusscrollbottom事件
-                        document.removeEventListener('plusscrollbottom', self);
-                        window.removeEventListener('dragup', self);
-                    } else { //初始化时隐藏,后续不再隐藏
-                        self.pullCaption.className = CLASS_PULL_CAPTION + ' ' + CLASS_PULL_CAPTION_DOWN;
-                        self.pullCaption.innerHTML = self.options.up.contentdown;
-                    }
-                }
-            },
-            endPullupToRefresh: function(finished) { //上拉加载结束,兼容老的API
-                this.endPullup(finished);
-            },
-            disablePulldownToRefresh: function() {
-                var webview = plus.webview.currentWebview();
-                if (this.options.down.style && this.options.down.style == 'circle') { // 单webview模式禁止原生下拉刷新
-                    this.options.webview.setPullToRefresh({
-                        support: false,
-                        style: 'circle'
-                    });
-                } else { // 双webview模式禁止下拉刷新
-                    webview.setStyle({
-                        bounce: 'none'
-                    });
-                    webview.setBounce({
-                        position: {
-                            top: 'none'
-                        }
-                    });
-                }
-            },
-            enablePulldownToRefresh: function() {
-                var self = this,
-                    webview = plus.webview.currentWebview(),
-                    height = this.options.down.height;
-                // 单webview模式禁止原生下拉刷新
-                if (this.options.down.style && this.options.down.style == 'circle') {
-                    webview.setPullToRefresh({
-                        support: true,
-                        height: height || '50px',
-                        range: self.options.down.range || '100px',
-                        style: 'circle',
-                        offset: self.options.down.offset || '0px'
-                    });
-                } else { // 重新初始化双webview模式下拉刷新
-                    webview.setStyle({
-                        bounce: 'vertical'
-                    });
-                    webview.setBounce({
-                        position: {
-                            top: height * 2 + 'px'
-                        },
-                        changeoffset: {
-                            top: height + 'px'
-                        }
-                    });
-                }
-            },
-            disablePullupToRefresh: function() {
-                this._initPullupRefresh();
-                this.bottomPocket.className = 'mui-pull-bottom-pocket' + ' ' + CLASS_HIDDEN;
-                window.removeEventListener('dragup', this);
-            },
-            enablePullupToRefresh: function() {
-                this._initPullupRefresh();
-                this.bottomPocket.classList.remove(CLASS_HIDDEN);
-                this.pullCaption.className = CLASS_PULL_CAPTION + ' ' + CLASS_PULL_CAPTION_DOWN;
-                this.pullCaption.innerHTML = this.options.up.contentdown;
-                document.addEventListener("plusscrollbottom", this);
-                window.addEventListener('dragup', this);
-            },
-            scrollTo: function(x, y, time) {
-                $.scrollTo(y, time);
-            },
-            scrollToBottom: function(time) {
-                $.scrollTo(document.documentElement.scrollHeight, time);
-            },
-            refresh: function(isReset) {
-                if (isReset && this.finished) {
-                    this.enablePullupToRefresh();
-                    this.finished = false;
-                }
-            }
-        }, $.PullRefresh));
-
-        //override h5 pullRefresh
-        $.fn.pullRefresh_native = function(options) {
-            var self;
-            if (this.length === 0) {
-                self = document.createElement('div');
-                self.className = 'mui-content';
-                document.body.appendChild(self);
-            } else {
-                self = this[0];
-            }
-            var args = options;
-            //一个父需要支持多个子下拉刷新
-            options = options || {}
-            if (typeof options === 'string') {
-                options = $.parseJSON(options);
-            };
-            !options.webviewId && (options.webviewId = (plus.webview.currentWebview().id || plus.webview.currentWebview().getURL()));
-            var pullRefreshApi = null;
-            var attrWebviewId = options.webviewId && options.webviewId.replace(/\//g, "_"); //替换所有"/"
-            var id = self.getAttribute('data-pullrefresh-plus-' + attrWebviewId);
-            if (!id && typeof args === 'undefined') {
-                return false;
-            }
-            if (!id) { //避免重复初始化5+ pullrefresh
-                id = ++$.uuid;
-                self.setAttribute('data-pullrefresh-plus-' + attrWebviewId, id);
-                document.body.classList.add(CLASS_PLUS_PULLREFRESH);
-                $.data[id] = pullRefreshApi = new PlusPullRefresh(self, options);
-            } else {
-                pullRefreshApi = $.data[id];
-            }
-            if (options.down && options.down.auto) { //如果设置了auto,则自动下拉一次
-                //pullRefreshApi._pulldownLoading(); //parent webview
-                pullRefreshApi.beginPulldown();
-            } else if (options.up && options.up.auto) { //如果设置了auto,则自动上拉一次
-                pullRefreshApi.beginPullup();
-            }
-            return pullRefreshApi;
-        };
-    });
-
-})(mui, document);
-/**
- * off-canvas
- * @param {type} $
- * @param {type} window
- * @param {type} document
- * @param {type} action
- * @returns {undefined}
- */
-(function($, window, document, name) {
-	var CLASS_OFF_CANVAS_LEFT = 'mui-off-canvas-left';
-	var CLASS_OFF_CANVAS_RIGHT = 'mui-off-canvas-right';
-	var CLASS_ACTION_BACKDROP = 'mui-off-canvas-backdrop';
-	var CLASS_OFF_CANVAS_WRAP = 'mui-off-canvas-wrap';
-
-	var CLASS_SLIDE_IN = 'mui-slide-in';
-	var CLASS_ACTIVE = 'mui-active';
-
-
-	var CLASS_TRANSITIONING = 'mui-transitioning';
-
-	var SELECTOR_INNER_WRAP = '.mui-inner-wrap';
-
-
-	var OffCanvas = $.Class.extend({
-		init: function(element, options) {
-			this.wrapper = this.element = element;
-			this.scroller = this.wrapper.querySelector(SELECTOR_INNER_WRAP);
-			this.classList = this.wrapper.classList;
-			if (this.scroller) {
-				this.options = $.extend(true, {
-					dragThresholdX: 10,
-					scale: 0.8,
-					opacity: 0.1,
-					preventDefaultException: {
-						tagName: /^(INPUT|TEXTAREA|BUTTON|SELECT|VIDEO)$/
-					},
-				}, options);
-				document.body.classList.add('mui-fullscreen'); //fullscreen
-				this.refresh();
-				this.initEvent();
-			}
-		},
-		_preventDefaultException: function(el, exceptions) {
-			for (var i in exceptions) {
-				if (exceptions[i].test(el[i])) {
-					return true;
-				}
-			}
-			return false;
-		},
-		refresh: function(offCanvas) {
-			//			offCanvas && !offCanvas.classList.contains(CLASS_ACTIVE) && this.classList.remove(CLASS_ACTIVE);
-			this.slideIn = this.classList.contains(CLASS_SLIDE_IN);
-			this.scalable = this.classList.contains('mui-scalable') && !this.slideIn;
-			this.scroller = this.wrapper.querySelector(SELECTOR_INNER_WRAP);
-			//			!offCanvas && this.scroller.classList.remove(CLASS_TRANSITIONING);
-			//			!offCanvas && this.scroller.setAttribute('style', '');
-			this.offCanvasLefts = this.wrapper.querySelectorAll('.' + CLASS_OFF_CANVAS_LEFT);
-			this.offCanvasRights = this.wrapper.querySelectorAll('.' + CLASS_OFF_CANVAS_RIGHT);
-			if (offCanvas) {
-				if (offCanvas.classList.contains(CLASS_OFF_CANVAS_LEFT)) {
-					this.offCanvasLeft = offCanvas;
-				} else if (offCanvas.classList.contains(CLASS_OFF_CANVAS_RIGHT)) {
-					this.offCanvasRight = offCanvas;
-				}
-			} else {
-				this.offCanvasRight = this.wrapper.querySelector('.' + CLASS_OFF_CANVAS_RIGHT);
-				this.offCanvasLeft = this.wrapper.querySelector('.' + CLASS_OFF_CANVAS_LEFT);
-			}
-			this.offCanvasRightWidth = this.offCanvasLeftWidth = 0;
-			this.offCanvasLeftSlideIn = this.offCanvasRightSlideIn = false;
-			if (this.offCanvasRight) {
-				this.offCanvasRightWidth = this.offCanvasRight.offsetWidth;
-				this.offCanvasRightSlideIn = this.slideIn && (this.offCanvasRight.parentNode === this.wrapper);
-				//				this.offCanvasRight.classList.remove(CLASS_TRANSITIONING);
-				//				this.offCanvasRight.classList.remove(CLASS_ACTIVE);
-				//				this.offCanvasRight.setAttribute('style', '');
-			}
-			if (this.offCanvasLeft) {
-				this.offCanvasLeftWidth = this.offCanvasLeft.offsetWidth;
-				this.offCanvasLeftSlideIn = this.slideIn && (this.offCanvasLeft.parentNode === this.wrapper);
-				//				this.offCanvasLeft.classList.remove(CLASS_TRANSITIONING);
-				//				this.offCanvasLeft.classList.remove(CLASS_ACTIVE);
-				//				this.offCanvasLeft.setAttribute('style', '');
-			}
-			this.backdrop = this.scroller.querySelector('.' + CLASS_ACTION_BACKDROP);
-
-			this.options.dragThresholdX = this.options.dragThresholdX || 10;
-
-			this.visible = false;
-			this.startX = null;
-			this.lastX = null;
-			this.offsetX = null;
-			this.lastTranslateX = null;
-		},
-		handleEvent: function(e) {
-			switch (e.type) {
-				case $.EVENT_START:
-					e.target && !this._preventDefaultException(e.target, this.options.preventDefaultException) && e.preventDefault();
-					break;
-				case 'webkitTransitionEnd': //有个bug需要处理,需要考虑假设没有触发webkitTransitionEnd的情况
-					if (e.target === this.scroller) {
-						this._dispatchEvent();
-					}
-					break;
-				case 'drag':
-					var detail = e.detail;
-					if (!this.startX) {
-						this.startX = detail.center.x;
-						this.lastX = this.startX;
-					} else {
-						this.lastX = detail.center.x;
-					}
-					if (!this.isDragging && Math.abs(this.lastX - this.startX) > this.options.dragThresholdX && (detail.direction === 'left' || (detail.direction === 'right'))) {
-						if (this.slideIn) {
-							this.scroller = this.wrapper.querySelector(SELECTOR_INNER_WRAP);
-							if (this.classList.contains(CLASS_ACTIVE)) {
-								if (this.offCanvasRight && this.offCanvasRight.classList.contains(CLASS_ACTIVE)) {
-									this.offCanvas = this.offCanvasRight;
-									this.offCanvasWidth = this.offCanvasRightWidth;
-								} else {
-									this.offCanvas = this.offCanvasLeft;
-									this.offCanvasWidth = this.offCanvasLeftWidth;
-								}
-							} else {
-								if (detail.direction === 'left' && this.offCanvasRight) {
-									this.offCanvas = this.offCanvasRight;
-									this.offCanvasWidth = this.offCanvasRightWidth;
-								} else if (detail.direction === 'right' && this.offCanvasLeft) {
-									this.offCanvas = this.offCanvasLeft;
-									this.offCanvasWidth = this.offCanvasLeftWidth;
-								} else {
-									this.scroller = null;
-								}
-							}
-						} else {
-							if (this.classList.contains(CLASS_ACTIVE)) {
-								if (detail.direction === 'left') {
-									this.offCanvas = this.offCanvasLeft;
-									this.offCanvasWidth = this.offCanvasLeftWidth;
-								} else {
-									this.offCanvas = this.offCanvasRight;
-									this.offCanvasWidth = this.offCanvasRightWidth;
-								}
-							} else {
-								if (detail.direction === 'right') {
-									this.offCanvas = this.offCanvasLeft;
-									this.offCanvasWidth = this.offCanvasLeftWidth;
-								} else {
-									this.offCanvas = this.offCanvasRight;
-									this.offCanvasWidth = this.offCanvasRightWidth;
-								}
-							}
-						}
-						if (this.offCanvas && this.scroller) {
-							this.startX = this.lastX;
-							this.isDragging = true;
-
-							$.gestures.session.lockDirection = true; //锁定方向
-							$.gestures.session.startDirection = detail.direction;
-
-							this.offCanvas.classList.remove(CLASS_TRANSITIONING);
-							this.scroller.classList.remove(CLASS_TRANSITIONING);
-							this.offsetX = this.getTranslateX();
-							this._initOffCanvasVisible();
-						}
-					}
-					if (this.isDragging) {
-						this.updateTranslate(this.offsetX + (this.lastX - this.startX));
-						detail.gesture.preventDefault();
-						e.stopPropagation();
-					}
-					break;
-				case 'dragend':
-					if (this.isDragging) {
-						var detail = e.detail;
-						var direction = detail.direction;
-						this.isDragging = false;
-						this.offCanvas.classList.add(CLASS_TRANSITIONING);
-						this.scroller.classList.add(CLASS_TRANSITIONING);
-						var ratio = 0;
-						var x = this.getTranslateX();
-						if (!this.slideIn) {
-							if (x >= 0) {
-								ratio = (this.offCanvasLeftWidth && (x / this.offCanvasLeftWidth)) || 0;
-							} else {
-								ratio = (this.offCanvasRightWidth && (x / this.offCanvasRightWidth)) || 0;
-							}
-							if (ratio === 0) {
-								this.openPercentage(0);
-								this._dispatchEvent(); //此处不触发webkitTransitionEnd,所以手动dispatch
-								return;
-							}
-							if (direction === 'right' && ratio >= 0 && (ratio >= 0.5 || detail.swipe)) { //右滑打开
-								this.openPercentage(100);
-							} else if (direction === 'right' && ratio < 0 && (ratio > -0.5 || detail.swipe)) { //右滑关闭
-								this.openPercentage(0);
-							} else if (direction === 'right' && ratio > 0 && ratio < 0.5) { //右滑还原关闭
-								this.openPercentage(0);
-							} else if (direction === 'right' && ratio < 0.5) { //右滑还原打开
-								this.openPercentage(-100);
-							} else if (direction === 'left' && ratio <= 0 && (ratio <= -0.5 || detail.swipe)) { //左滑打开
-								this.openPercentage(-100);
-							} else if (direction === 'left' && ratio > 0 && (ratio <= 0.5 || detail.swipe)) { //左滑关闭
-								this.openPercentage(0);
-							} else if (direction === 'left' && ratio < 0 && ratio >= -0.5) { //左滑还原关闭
-								this.openPercentage(0);
-							} else if (direction === 'left' && ratio > 0.5) { //左滑还原打开
-								this.openPercentage(100);
-							} else { //默认关闭
-								this.openPercentage(0);
-							}
-							if (ratio === 1 || ratio === -1) { //此处不触发webkitTransitionEnd,所以手动dispatch
-								this._dispatchEvent();
-							}
-						} else {
-							if (x >= 0) {
-								ratio = (this.offCanvasRightWidth && (x / this.offCanvasRightWidth)) || 0;
-							} else {
-								ratio = (this.offCanvasLeftWidth && (x / this.offCanvasLeftWidth)) || 0;
-							}
-							if (direction === 'right' && ratio <= 0 && (ratio >= -0.5 || detail.swipe)) { //右滑打开
-								this.openPercentage(100);
-							} else if (direction === 'right' && ratio > 0 && (ratio >= 0.5 || detail.swipe)) { //右滑关闭
-								this.openPercentage(0);
-							} else if (direction === 'right' && ratio <= -0.5) { //右滑还原关闭
-								this.openPercentage(0);
-							} else if (direction === 'right' && ratio > 0 && ratio <= 0.5) { //右滑还原打开
-								this.openPercentage(-100);
-							} else if (direction === 'left' && ratio >= 0 && (ratio <= 0.5 || detail.swipe)) { //左滑打开
-								this.openPercentage(-100);
-							} else if (direction === 'left' && ratio < 0 && (ratio <= -0.5 || detail.swipe)) { //左滑关闭
-								this.openPercentage(0);
-							} else if (direction === 'left' && ratio >= 0.5) { //左滑还原关闭
-								this.openPercentage(0);
-							} else if (direction === 'left' && ratio >= -0.5 && ratio < 0) { //左滑还原打开
-								this.openPercentage(100);
-							} else {
-								this.openPercentage(0);
-							}
-							if (ratio === 1 || ratio === -1 || ratio === 0) {
-								this._dispatchEvent();
-								return;
-							}
-
-						}
-					}
-					break;
-			}
-		},
-		_dispatchEvent: function() {
-			if (this.classList.contains(CLASS_ACTIVE)) {
-				$.trigger(this.wrapper, 'shown', this);
-			} else {
-				$.trigger(this.wrapper, 'hidden', this);
-			}
-		},
-		_initOffCanvasVisible: function() {
-			if (!this.visible) {
-				this.visible = true;
-				if (this.offCanvasLeft) {
-					this.offCanvasLeft.style.visibility = 'visible';
-				}
-				if (this.offCanvasRight) {
-					this.offCanvasRight.style.visibility = 'visible';
-				}
-			}
-		},
-		initEvent: function() {
-			var self = this;
-			if (self.backdrop) {
-				self.backdrop.addEventListener('tap', function(e) {
-					self.close();
-					e.detail.gesture.preventDefault();
-				});
-			}
-			if (this.classList.contains('mui-draggable')) {
-				this.wrapper.addEventListener($.EVENT_START, this); //临时处理
-				this.wrapper.addEventListener('drag', this);
-				this.wrapper.addEventListener('dragend', this);
-			}
-			this.wrapper.addEventListener('webkitTransitionEnd', this);
-		},
-		openPercentage: function(percentage) {
-			var p = percentage / 100;
-			if (!this.slideIn) {
-				if (this.offCanvasLeft && percentage >= 0) {
-					this.updateTranslate(this.offCanvasLeftWidth * p);
-					this.offCanvasLeft.classList[p !== 0 ? 'add' : 'remove'](CLASS_ACTIVE);
-				} else if (this.offCanvasRight && percentage <= 0) {
-					this.updateTranslate(this.offCanvasRightWidth * p);
-					this.offCanvasRight.classList[p !== 0 ? 'add' : 'remove'](CLASS_ACTIVE);
-				}
-				this.classList[p !== 0 ? 'add' : 'remove'](CLASS_ACTIVE);
-			} else {
-				if (this.offCanvasLeft && percentage >= 0) {
-					p = p === 0 ? -1 : 0;
-					this.updateTranslate(this.offCanvasLeftWidth * p);
-					this.offCanvasLeft.classList[percentage !== 0 ? 'add' : 'remove'](CLASS_ACTIVE);
-				} else if (this.offCanvasRight && percentage <= 0) {
-					p = p === 0 ? 1 : 0;
-					this.updateTranslate(this.offCanvasRightWidth * p);
-					this.offCanvasRight.classList[percentage !== 0 ? 'add' : 'remove'](CLASS_ACTIVE);
-				}
-				this.classList[percentage !== 0 ? 'add' : 'remove'](CLASS_ACTIVE);
-			}
-		},
-		updateTranslate: function(x) {
-			if (x !== this.lastTranslateX) {
-				if (!this.slideIn) {
-					if ((!this.offCanvasLeft && x > 0) || (!this.offCanvasRight && x < 0)) {
-						this.setTranslateX(0);
-						return;
-					}
-					if (this.leftShowing && x > this.offCanvasLeftWidth) {
-						this.setTranslateX(this.offCanvasLeftWidth);
-						return;
-					}
-					if (this.rightShowing && x < -this.offCanvasRightWidth) {
-						this.setTranslateX(-this.offCanvasRightWidth);
-						return;
-					}
-					this.setTranslateX(x);
-					if (x >= 0) {
-						this.leftShowing = true;
-						this.rightShowing = false;
-						if (x > 0) {
-							if (this.offCanvasLeft) {
-								$.each(this.offCanvasLefts, function(index, offCanvas) {
-									if (offCanvas === this.offCanvasLeft) {
-										this.offCanvasLeft.style.zIndex = 0;
-									} else {
-										offCanvas.style.zIndex = -1;
-									}
-								}.bind(this));
-							}
-							if (this.offCanvasRight) {
-								this.offCanvasRight.style.zIndex = -1;
-							}
-						}
-					} else {
-						this.rightShowing = true;
-						this.leftShowing = false;
-						if (this.offCanvasRight) {
-							$.each(this.offCanvasRights, function(index, offCanvas) {
-								if (offCanvas === this.offCanvasRight) {
-									offCanvas.style.zIndex = 0;
-								} else {
-									offCanvas.style.zIndex = -1;
-								}
-							}.bind(this));
-						}
-						if (this.offCanvasLeft) {
-							this.offCanvasLeft.style.zIndex = -1;
-						}
-					}
-				} else {
-					if (this.offCanvas.classList.contains(CLASS_OFF_CANVAS_RIGHT)) {
-						if (x < 0) {
-							this.setTranslateX(0);
-							return;
-						}
-						if (x > this.offCanvasRightWidth) {
-							this.setTranslateX(this.offCanvasRightWidth);
-							return;
-						}
-					} else {
-						if (x > 0) {
-							this.setTranslateX(0);
-							return;
-						}
-						if (x < -this.offCanvasLeftWidth) {
-							this.setTranslateX(-this.offCanvasLeftWidth);
-							return;
-						}
-					}
-					this.setTranslateX(x);
-				}
-				this.lastTranslateX = x;
-			}
-		},
-		setTranslateX: $.animationFrame(function(x) {
-			if (this.scroller) {
-				if (this.scalable && this.offCanvas.parentNode === this.wrapper) {
-					var percent = Math.abs(x) / this.offCanvasWidth;
-					var zoomOutScale = 1 - (1 - this.options.scale) * percent;
-					var zoomInScale = this.options.scale + (1 - this.options.scale) * percent;
-					var zoomOutOpacity = 1 - (1 - this.options.opacity) * percent;
-					var zoomInOpacity = this.options.opacity + (1 - this.options.opacity) * percent;
-					if (this.offCanvas.classList.contains(CLASS_OFF_CANVAS_LEFT)) {
-						this.offCanvas.style.webkitTransformOrigin = '-100%';
-						this.scroller.style.webkitTransformOrigin = 'left';
-					} else {
-						this.offCanvas.style.webkitTransformOrigin = '200%';
-						this.scroller.style.webkitTransformOrigin = 'right';
-					}
-					this.offCanvas.style.opacity = zoomInOpacity;
-					this.offCanvas.style.webkitTransform = 'translate3d(0,0,0) scale(' + zoomInScale + ')';
-					this.scroller.style.webkitTransform = 'translate3d(' + x + 'px,0,0) scale(' + zoomOutScale + ')';
-				} else {
-					if (this.slideIn) {
-						this.offCanvas.style.webkitTransform = 'translate3d(' + x + 'px,0,0)';
-					} else {
-						this.scroller.style.webkitTransform = 'translate3d(' + x + 'px,0,0)';
-					}
-				}
-			}
-		}),
-		getTranslateX: function() {
-			if (this.offCanvas) {
-				var scroller = this.slideIn ? this.offCanvas : this.scroller;
-				var result = $.parseTranslateMatrix($.getStyles(scroller, 'webkitTransform'));
-				return (result && result.x) || 0;
-			}
-			return 0;
-		},
-		isShown: function(direction) {
-			var shown = false;
-			if (!this.slideIn) {
-				var x = this.getTranslateX();
-				if (direction === 'right') {
-					shown = this.classList.contains(CLASS_ACTIVE) && x < 0;
-				} else if (direction === 'left') {
-					shown = this.classList.contains(CLASS_ACTIVE) && x > 0;
-				} else {
-					shown = this.classList.contains(CLASS_ACTIVE) && x !== 0;
-				}
-			} else {
-				if (direction === 'left') {
-					shown = this.classList.contains(CLASS_ACTIVE) && this.wrapper.querySelector('.' + CLASS_OFF_CANVAS_LEFT + '.' + CLASS_ACTIVE);
-				} else if (direction === 'right') {
-					shown = this.classList.contains(CLASS_ACTIVE) && this.wrapper.querySelector('.' + CLASS_OFF_CANVAS_RIGHT + '.' + CLASS_ACTIVE);
-				} else {
-					shown = this.classList.contains(CLASS_ACTIVE) && (this.wrapper.querySelector('.' + CLASS_OFF_CANVAS_LEFT + '.' + CLASS_ACTIVE) || this.wrapper.querySelector('.' + CLASS_OFF_CANVAS_RIGHT + '.' + CLASS_ACTIVE));
-				}
-			}
-			return shown;
-		},
-		close: function() {
-			this._initOffCanvasVisible();
-			this.offCanvas = this.wrapper.querySelector('.' + CLASS_OFF_CANVAS_RIGHT + '.' + CLASS_ACTIVE) || this.wrapper.querySelector('.' + CLASS_OFF_CANVAS_LEFT + '.' + CLASS_ACTIVE);
-			this.offCanvasWidth = this.offCanvas.offsetWidth;
-			if (this.scroller) {
-				this.offCanvas.offsetHeight;
-				this.offCanvas.classList.add(CLASS_TRANSITIONING);
-				this.scroller.classList.add(CLASS_TRANSITIONING);
-				this.openPercentage(0);
-			}
-		},
-		show: function(direction) {
-			this._initOffCanvasVisible();
-			if (this.isShown(direction)) {
-				return false;
-			}
-			if (!direction) {
-				direction = this.wrapper.querySelector('.' + CLASS_OFF_CANVAS_RIGHT) ? 'right' : 'left';
-			}
-			if (direction === 'right') {
-				this.offCanvas = this.offCanvasRight;
-				this.offCanvasWidth = this.offCanvasRightWidth;
-			} else {
-				this.offCanvas = this.offCanvasLeft;
-				this.offCanvasWidth = this.offCanvasLeftWidth;
-			}
-			if (this.scroller) {
-				this.offCanvas.offsetHeight;
-				this.offCanvas.classList.add(CLASS_TRANSITIONING);
-				this.scroller.classList.add(CLASS_TRANSITIONING);
-				this.openPercentage(direction === 'left' ? 100 : -100);
-			}
-			return true;
-		},
-		toggle: function(directionOrOffCanvas) {
-			var direction = directionOrOffCanvas;
-			if (directionOrOffCanvas && directionOrOffCanvas.classList) {
-				direction = directionOrOffCanvas.classList.contains(CLASS_OFF_CANVAS_LEFT) ? 'left' : 'right';
-				this.refresh(directionOrOffCanvas);
-			}
-			if (!this.show(direction)) {
-				this.close();
-			}
-		}
-	});
-
-	//hash to offcanvas
-	var findOffCanvasContainer = function(target) {
-		parentNode = target.parentNode;
-		if (parentNode) {
-			if (parentNode.classList.contains(CLASS_OFF_CANVAS_WRAP)) {
-				return parentNode;
-			} else {
-				parentNode = parentNode.parentNode;
-				if (parentNode.classList.contains(CLASS_OFF_CANVAS_WRAP)) {
-					return parentNode;
-				}
-			}
-		}
-	};
-	var handle = function(event, target) {
-		if (target.tagName === 'A' && target.hash) {
-			var offcanvas = document.getElementById(target.hash.replace('#', ''));
-			if (offcanvas) {
-				var container = findOffCanvasContainer(offcanvas);
-				if (container) {
-					$.targets._container = container;
-					return offcanvas;
-				}
-			}
-		}
-		return false;
-	};
-
-	$.registerTarget({
-		name: name,
-		index: 60,
-		handle: handle,
-		target: false,
-		isReset: false,
-		isContinue: true
-	});
-
-	window.addEventListener('tap', function(e) {
-		if (!$.targets.offcanvas) {
-			return;
-		}
-		//TODO 此处类型的代码后续考虑统一优化(target机制),现在的实现费力不讨好
-		var target = e.target;
-		for (; target && target !== document; target = target.parentNode) {
-			if (target.tagName === 'A' && target.hash && target.hash === ('#' + $.targets.offcanvas.id)) {
-				e.detail && e.detail.gesture && e.detail.gesture.preventDefault(); //fixed hashchange
-				$($.targets._container).offCanvas().toggle($.targets.offcanvas);
-				$.targets.offcanvas = $.targets._container = null;
-				break;
-			}
-		}
-	});
-
-	$.fn.offCanvas = function(options) {
-		var offCanvasApis = [];
-		this.each(function() {
-			var offCanvasApi = null;
-			var self = this;
-			//hack old version
-			if (!self.classList.contains(CLASS_OFF_CANVAS_WRAP)) {
-				self = findOffCanvasContainer(self);
-			}
-			var id = self.getAttribute('data-offCanvas');
-			if (!id) {
-				id = ++$.uuid;
-				$.data[id] = offCanvasApi = new OffCanvas(self, options);
-				self.setAttribute('data-offCanvas', id);
-			} else {
-				offCanvasApi = $.data[id];
-			}
-			if (options === 'show' || options === 'close' || options === 'toggle') {
-				offCanvasApi.toggle();
-			}
-			offCanvasApis.push(offCanvasApi);
-		});
-		return offCanvasApis.length === 1 ? offCanvasApis[0] : offCanvasApis;
-	};
-	$.ready(function() {
-		$('.mui-off-canvas-wrap').offCanvas();
-	});
-})(mui, window, document, 'offcanvas');
-/**
- * actions
- * @param {type} $
- * @param {type} name
- * @returns {undefined}
- */
-(function($, name) {
-	var CLASS_ACTION = 'mui-action';
-
-	var handle = function(event, target) {
-		var className = target.className || '';
-		if (typeof className !== 'string') { //svg className(SVGAnimatedString)
-			className = '';
-		}
-		if (className && ~className.indexOf(CLASS_ACTION)) {
-			if (target.classList.contains('mui-action-back')) {
-				event.preventDefault();
-			}
-			return target;
-		}
-		return false;
-	};
-
-	$.registerTarget({
-		name: name,
-		index: 50,
-		handle: handle,
-		target: false,
-		isContinue: true
-	});
-
-})(mui, 'action');
-/**
- * Modals
- * @param {type} $
- * @param {type} window
- * @param {type} document
- * @param {type} name
- * @returns {undefined}
- */
-(function($, window, document, name) {
-	var CLASS_MODAL = 'mui-modal';
-
-	var handle = function(event, target) {
-		if (target.tagName === 'A' && target.hash) {
-			var modal = document.getElementById(target.hash.replace('#', ''));
-			if (modal && modal.classList.contains(CLASS_MODAL)) {
-				return modal;
-			}
-		}
-		return false;
-	};
-
-	$.registerTarget({
-		name: name,
-		index: 50,
-		handle: handle,
-		target: false,
-		isReset: false,
-		isContinue: true
-	});
-
-	window.addEventListener('tap', function(event) {
-		if ($.targets.modal) {
-			event.detail.gesture.preventDefault(); //fixed hashchange
-			$.targets.modal.classList.toggle('mui-active');
-		}
-	});
-})(mui, window, document, 'modal');
-/**
- * Popovers
- * @param {type} $
- * @param {type} window
- * @param {type} document
- * @param {type} name
- * @param {type} undefined
- * @returns {undefined}
- */
-(function($, window, document, name) {
-
-	var CLASS_POPOVER = 'mui-popover';
-	var CLASS_POPOVER_ARROW = 'mui-popover-arrow';
-	var CLASS_ACTION_POPOVER = 'mui-popover-action';
-	var CLASS_BACKDROP = 'mui-backdrop';
-	var CLASS_BAR_POPOVER = 'mui-bar-popover';
-	var CLASS_BAR_BACKDROP = 'mui-bar-backdrop';
-	var CLASS_ACTION_BACKDROP = 'mui-backdrop-action';
-	var CLASS_ACTIVE = 'mui-active';
-	var CLASS_BOTTOM = 'mui-bottom';
-
-
-
-	var handle = function(event, target) {
-		if (target.tagName === 'A' && target.hash) {
-			$.targets._popover = document.getElementById(target.hash.replace('#', ''));
-			if ($.targets._popover && $.targets._popover.classList.contains(CLASS_POPOVER)) {
-				return target;
-			} else {
-				$.targets._popover = null;
-			}
-		}
-		return false;
-	};
-
-	$.registerTarget({
-		name: name,
-		index: 60,
-		handle: handle,
-		target: false,
-		isReset: false,
-		isContinue: true
-	});
-
-	var onPopoverShown = function(e) {
-		this.removeEventListener('webkitTransitionEnd', onPopoverShown);
-		this.addEventListener($.EVENT_MOVE, $.preventDefault);
-		$.trigger(this, 'shown', this);
-	}
-	var onPopoverHidden = function(e) {
-		setStyle(this, 'none');
-		this.removeEventListener('webkitTransitionEnd', onPopoverHidden);
-		this.removeEventListener($.EVENT_MOVE, $.preventDefault);
-		$.trigger(this, 'hidden', this);
-	};
-
-	var backdrop = (function() {
-		var element = document.createElement('div');
-		element.classList.add(CLASS_BACKDROP);
-		element.addEventListener($.EVENT_MOVE, $.preventDefault);
-		element.addEventListener('tap', function(e) {
-			var popover = $.targets._popover;
-			if (popover) {
-				popover.addEventListener('webkitTransitionEnd', onPopoverHidden);
-				popover.classList.remove(CLASS_ACTIVE);
-				removeBackdrop(popover);
-			}
-		});
-
-		return element;
-	}());
-	var removeBackdropTimer;
-	var removeBackdrop = function(popover) {
-		backdrop.setAttribute('style', 'opacity:0');
-		$.targets.popover = $.targets._popover = null; //reset
-		removeBackdropTimer = $.later(function() {
-			if (!popover.classList.contains(CLASS_ACTIVE) && backdrop.parentNode && backdrop.parentNode === document.body) {
-				document.body.removeChild(backdrop);
-			}
-		}, 350);
-	};
-	window.addEventListener('tap', function(e) {
-		if (!$.targets.popover) {
-			return;
-		}
-		var toggle = false;
-		var target = e.target;
-		for (; target && target !== document; target = target.parentNode) {
-			if (target === $.targets.popover) {
-				toggle = true;
-			}
-		}
-		if (toggle) {
-			e.detail.gesture.preventDefault(); //fixed hashchange
-			togglePopover($.targets._popover, $.targets.popover);
-		}
-
-	});
-
-	var togglePopover = function(popover, anchor, state) {
-		if ((state === 'show' && popover.classList.contains(CLASS_ACTIVE)) || (state === 'hide' && !popover.classList.contains(CLASS_ACTIVE))) {
-			return;
-		}
-		removeBackdropTimer && removeBackdropTimer.cancel(); //取消remove的timer
-		//remove一遍,以免来回快速切换,导致webkitTransitionEnd不触发,无法remove
-		popover.removeEventListener('webkitTransitionEnd', onPopoverShown);
-		popover.removeEventListener('webkitTransitionEnd', onPopoverHidden);
-		backdrop.classList.remove(CLASS_BAR_BACKDROP);
-		backdrop.classList.remove(CLASS_ACTION_BACKDROP);
-		var _popover = document.querySelector('.mui-popover.mui-active');
-		if (_popover) {
-			//			_popover.setAttribute('style', '');
-			_popover.addEventListener('webkitTransitionEnd', onPopoverHidden);
-			_popover.classList.remove(CLASS_ACTIVE);
-			//			_popover.removeEventListener('webkitTransitionEnd', onPopoverHidden);
-			//同一个弹出则直接返回,解决同一个popover的toggle
-			if (popover === _popover) {
-				removeBackdrop(_popover);
-				return;
-			}
-		}
-		var isActionSheet = false;
-		if (popover.classList.contains(CLASS_BAR_POPOVER) || popover.classList.contains(CLASS_ACTION_POPOVER)) { //navBar
-			if (popover.classList.contains(CLASS_ACTION_POPOVER)) { //action sheet popover
-				isActionSheet = true;
-				backdrop.classList.add(CLASS_ACTION_BACKDROP);
-			} else { //bar popover
-				backdrop.classList.add(CLASS_BAR_BACKDROP);
-				//				if (anchor) {
-				//					if (anchor.parentNode) {
-				//						var offsetWidth = anchor.offsetWidth;
-				//						var offsetLeft = anchor.offsetLeft;
-				//						var innerWidth = window.innerWidth;
-				//						popover.style.left = (Math.min(Math.max(offsetLeft, defaultPadding), innerWidth - offsetWidth - defaultPadding)) + "px";
-				//					} else {
-				//						//TODO anchor is position:{left,top,bottom,right}
-				//					}
-				//				}
-			}
-		}
-		setStyle(popover, 'block'); //actionsheet transform
-		popover.offsetHeight;
-		popover.classList.add(CLASS_ACTIVE);
-		backdrop.setAttribute('style', '');
-		document.body.appendChild(backdrop);
-		calPosition(popover, anchor, isActionSheet); //position
-		backdrop.classList.add(CLASS_ACTIVE);
-		popover.addEventListener('webkitTransitionEnd', onPopoverShown);
-	};
-	var setStyle = function(popover, display, top, left) {
-		var style = popover.style;
-		if (typeof display !== 'undefined')
-			style.display = display;
-		if (typeof top !== 'undefined')
-			style.top = top + 'px';
-		if (typeof left !== 'undefined')
-			style.left = left + 'px';
-	};
-	var calPosition = function(popover, anchor, isActionSheet) {
-		if (!popover || !anchor) {
-			return;
-		}
-
-		if (isActionSheet) { //actionsheet
-			setStyle(popover, 'block')
-			return;
-		}
-
-		var wWidth = window.innerWidth;
-		var wHeight = window.innerHeight;
-
-		var pWidth = popover.offsetWidth;
-		var pHeight = popover.offsetHeight;
-
-		var aWidth = anchor.offsetWidth;
-		var aHeight = anchor.offsetHeight;
-		var offset = $.offset(anchor);
-
-		var arrow = popover.querySelector('.' + CLASS_POPOVER_ARROW);
-		if (!arrow) {
-			arrow = document.createElement('div');
-			arrow.className = CLASS_POPOVER_ARROW;
-			popover.appendChild(arrow);
-		}
-		var arrowSize = arrow && arrow.offsetWidth / 2 || 0;
-
-
-
-		var pTop = 0;
-		var pLeft = 0;
-		var diff = 0;
-		var arrowLeft = 0;
-		var defaultPadding = popover.classList.contains(CLASS_ACTION_POPOVER) ? 0 : 5;
-
-		var position = 'top';
-		if ((pHeight + arrowSize) < (offset.top - window.pageYOffset)) { //top
-			pTop = offset.top - pHeight - arrowSize;
-		} else if ((pHeight + arrowSize) < (wHeight - (offset.top - window.pageYOffset) - aHeight)) { //bottom
-			position = 'bottom';
-			pTop = offset.top + aHeight + arrowSize;
-		} else { //middle
-			position = 'middle';
-			pTop = Math.max((wHeight - pHeight) / 2 + window.pageYOffset, 0);
-			pLeft = Math.max((wWidth - pWidth) / 2 + window.pageXOffset, 0);
-		}
-		if (position === 'top' || position === 'bottom') {
-			pLeft = aWidth / 2 + offset.left - pWidth / 2;
-			diff = pLeft;
-			if (pLeft < defaultPadding) pLeft = defaultPadding;
-			if (pLeft + pWidth > wWidth) pLeft = wWidth - pWidth - defaultPadding;
-
-			if (arrow) {
-				if (position === 'top') {
-					arrow.classList.add(CLASS_BOTTOM);
-				} else {
-					arrow.classList.remove(CLASS_BOTTOM);
-				}
-				diff = diff - pLeft;
-				arrowLeft = (pWidth / 2 - arrowSize / 2 + diff);
-				arrowLeft = Math.max(Math.min(arrowLeft, pWidth - arrowSize * 2 - 6), 6);
-				arrow.setAttribute('style', 'left:' + arrowLeft + 'px');
-			}
-		} else if (position === 'middle') {
-			arrow.setAttribute('style', 'display:none');
-		}
-		setStyle(popover, 'block', pTop, pLeft);
-	};
-
-	$.createMask = function(callback) {
-		var element = document.createElement('div');
-		element.classList.add(CLASS_BACKDROP);
-		element.addEventListener($.EVENT_MOVE, $.preventDefault);
-		element.addEventListener('tap', function() {
-			mask.close();
-		});
-		var mask = [element];
-		mask._show = false;
-		mask.show = function() {
-			mask._show = true;
-			element.setAttribute('style', 'opacity:1');
-			document.body.appendChild(element);
-			return mask;
-		};
-		mask._remove = function() {
-			if (mask._show) {
-				mask._show = false;
-				element.setAttribute('style', 'opacity:0');
-				$.later(function() {
-					var body = document.body;
-					element.parentNode === body && body.removeChild(element);
-				}, 350);
-			}
-			return mask;
-		};
-		mask.close = function() {
-			if (callback) {
-				if (callback() !== false) {
-					mask._remove();
-				}
-			} else {
-				mask._remove();
-			}
-		};
-		return mask;
-	};
-	$.fn.popover = function() {
-		var args = arguments;
-		this.each(function() {
-			$.targets._popover = this;
-			if (args[0] === 'show' || args[0] === 'hide' || args[0] === 'toggle') {
-				togglePopover(this, args[1], args[0]);
-			}
-		});
-	};
-
-})(mui, window, document, 'popover');
-/**
- * segmented-controllers
- * @param {type} $
- * @param {type} window
- * @param {type} document
- * @param {type} undefined
- * @returns {undefined}
- */
-(function($, window, document, name, undefined) {
-
-    var CLASS_CONTROL_ITEM = 'mui-control-item';
-    var CLASS_SEGMENTED_CONTROL = 'mui-segmented-control';
-    var CLASS_SEGMENTED_CONTROL_VERTICAL = 'mui-segmented-control-vertical';
-    var CLASS_CONTROL_CONTENT = 'mui-control-content';
-    var CLASS_TAB_BAR = 'mui-bar-tab';
-    var CLASS_TAB_ITEM = 'mui-tab-item';
-    var CLASS_SLIDER_ITEM = 'mui-slider-item';
-
-   var handle = function(event, target) {
-        if (target.classList && (target.classList.contains(CLASS_CONTROL_ITEM) || target.classList.contains(CLASS_TAB_ITEM))) {
-            if (target.parentNode && target.parentNode.classList && target.parentNode.classList.contains(CLASS_SEGMENTED_CONTROL_VERTICAL)) {
-                //vertical 如果preventDefault会导致无法滚动
-            } else {
-
-                    event.preventDefault();      
-                    // if(target.tagName == 'A') {
-                    //     // fixed 底部选项卡href 无法跳转 && stop hash change
-                    //     var curr_href = location.hostname + location.pathname,
-                    //         target_href = target.hostname + target.pathname;
-                   
-                    //     if (curr_href == target_href && target.hash !== "") {
-                    //         event.preventDefault();
-                    //         return target;
-                    //     }else{
-                    //             return false
-                    //     }
-                    // }
-            }
-            //          if (target.hash) {
-            return target;
-            //          }
-        }
-        return false;
-    };
-
-    $.registerTarget({
-        name: name,
-        index: 80,
-        handle: handle,
-        target: false
-    });
-
-    window.addEventListener('tap', function(e) {
-
-        var targetTab = $.targets.tab;
-        if (!targetTab) {
-            return;
-        }
-        var activeTab;
-        var activeBodies;
-        var targetBody;
-        var className = 'mui-active';
-        var classSelector = '.' + className;
-        var segmentedControl = targetTab.parentNode;
-
-        for (; segmentedControl && segmentedControl !== document; segmentedControl = segmentedControl.parentNode) {
-            if (segmentedControl.classList.contains(CLASS_SEGMENTED_CONTROL)) {
-                activeTab = segmentedControl.querySelector(classSelector + '.' + CLASS_CONTROL_ITEM);
-                break;
-            } else if (segmentedControl.classList.contains(CLASS_TAB_BAR)) {
-                activeTab = segmentedControl.querySelector(classSelector + '.' + CLASS_TAB_ITEM);
-            }
-        }
-
-        if (activeTab) {
-            activeTab.classList.remove(className);
-        }
-
-        var isLastActive = targetTab === activeTab;
-        if (targetTab) {
-            targetTab.classList.add(className);
-        }
-
-        if (!targetTab.hash) {
-            return;
-        }
-        targetBody = document.getElementById(targetTab.hash.replace('#', ''));
-
-        if (!targetBody) {
-            return;
-        }
-        if (!targetBody.classList.contains(CLASS_CONTROL_CONTENT)) { //tab bar popover
-            targetTab.classList[isLastActive ? 'remove' : 'add'](className);
-            return;
-        }
-        if (isLastActive) { //same
-            return;
-        }
-        var parentNode = targetBody.parentNode;
-        activeBodies = parentNode.querySelectorAll('.' + CLASS_CONTROL_CONTENT + classSelector);
-        for (var i = 0; i < activeBodies.length; i++) {
-            var activeBody = activeBodies[i];
-            activeBody.parentNode === parentNode && activeBody.classList.remove(className);
-        }
-
-        targetBody.classList.add(className);
-
-        var contents = [];
-        var _contents = parentNode.querySelectorAll('.' + CLASS_CONTROL_CONTENT);
-        for (var i = 0; i < _contents.length; i++) { //查找直属子节点
-            _contents[i].parentNode === parentNode && (contents.push(_contents[i]));
-        }
-        $.trigger(targetBody, $.eventName('shown', name), {
-            tabNumber: Array.prototype.indexOf.call(contents, targetBody)
-        });
-        e.detail && e.detail.gesture.preventDefault(); //fixed hashchange
-    });
-
-})(mui, window, document, 'tab');
-/**
- * Toggles switch
- * @param {type} $
- * @param {type} window
- * @param {type} name
- * @returns {undefined}
- */
-(function($, window, name) {
-
-	var CLASS_SWITCH = 'mui-switch';
-	var CLASS_SWITCH_HANDLE = 'mui-switch-handle';
-	var CLASS_ACTIVE = 'mui-active';
-	var CLASS_DRAGGING = 'mui-dragging';
-
-	var CLASS_DISABLED = 'mui-disabled';
-
-	var SELECTOR_SWITCH_HANDLE = '.' + CLASS_SWITCH_HANDLE;
-
-	var handle = function(event, target) {
-		if (target.classList && target.classList.contains(CLASS_SWITCH)) {
-			return target;
-		}
-		return false;
-	};
-
-	$.registerTarget({
-		name: name,
-		index: 100,
-		handle: handle,
-		target: false
-	});
-
-
-	var Toggle = function(element) {
-		this.element = element;
-		this.classList = this.element.classList;
-		this.handle = this.element.querySelector(SELECTOR_SWITCH_HANDLE);
-		this.init();
-		this.initEvent();
-	};
-	Toggle.prototype.init = function() {
-		this.toggleWidth = this.element.offsetWidth;
-		this.handleWidth = this.handle.offsetWidth;
-		this.handleX = this.toggleWidth - this.handleWidth - 3;
-	};
-	Toggle.prototype.initEvent = function() {
-		this.element.addEventListener($.EVENT_START, this);
-		this.element.addEventListener('drag', this);
-		this.element.addEventListener('swiperight', this);
-		this.element.addEventListener($.EVENT_END, this);
-		this.element.addEventListener($.EVENT_CANCEL, this);
-
-	};
-	Toggle.prototype.handleEvent = function(e) {
-		if (this.classList.contains(CLASS_DISABLED)) {
-			return;
-		}
-		switch (e.type) {
-			case $.EVENT_START:
-				this.start(e);
-				break;
-			case 'drag':
-				this.drag(e);
-				break;
-			case 'swiperight':
-				this.swiperight();
-				break;
-			case $.EVENT_END:
-			case $.EVENT_CANCEL:
-				this.end(e);
-				break;
-		}
-	};
-	Toggle.prototype.start = function(e) {
-		this.handle.style.webkitTransitionDuration = this.element.style.webkitTransitionDuration = '.2s';
-		this.classList.add(CLASS_DRAGGING);
-		if (this.toggleWidth === 0 || this.handleWidth === 0) { //当switch处于隐藏状态时,width为0,需要重新初始化
-			this.init();
-		}
-	};
-	Toggle.prototype.drag = function(e) {
-		var detail = e.detail;
-		if (!this.isDragging) {
-			if (detail.direction === 'left' || detail.direction === 'right') {
-				this.isDragging = true;
-				this.lastChanged = undefined;
-				this.initialState = this.classList.contains(CLASS_ACTIVE);
-			}
-		}
-		if (this.isDragging) {
-			this.setTranslateX(detail.deltaX);
-			e.stopPropagation();
-			detail.gesture.preventDefault();
-		}
-	};
-	Toggle.prototype.swiperight = function(e) {
-		if (this.isDragging) {
-			e.stopPropagation();
-		}
-	};
-	Toggle.prototype.end = function(e) {
-		this.classList.remove(CLASS_DRAGGING);
-		if (this.isDragging) {
-			this.isDragging = false;
-			e.stopPropagation();
-			$.trigger(this.element, 'toggle', {
-				isActive: this.classList.contains(CLASS_ACTIVE)
-			});
-		} else {
-			this.toggle();
-		}
-	};
-	Toggle.prototype.toggle = function(animate) {
-		var classList = this.classList;
-		if (animate === false) {
-			this.handle.style.webkitTransitionDuration = this.element.style.webkitTransitionDuration = '0s';
-		} else {
-			this.handle.style.webkitTransitionDuration = this.element.style.webkitTransitionDuration = '.2s';
-		}
-		if (classList.contains(CLASS_ACTIVE)) {
-			classList.remove(CLASS_ACTIVE);
-			this.handle.style.webkitTransform = 'translate(0,0)';
-		} else {
-			classList.add(CLASS_ACTIVE);
-			this.handle.style.webkitTransform = 'translate(' + this.handleX + 'px,0)';
-		}
-		$.trigger(this.element, 'toggle', {
-			isActive: this.classList.contains(CLASS_ACTIVE)
-		});
-	};
-	Toggle.prototype.setTranslateX = $.animationFrame(function(x) {
-		if (!this.isDragging) {
-			return;
-		}
-		var isChanged = false;
-		if ((this.initialState && -x > (this.handleX / 2)) || (!this.initialState && x > (this.handleX / 2))) {
-			isChanged = true;
-		}
-		if (this.lastChanged !== isChanged) {
-			if (isChanged) {
-				this.handle.style.webkitTransform = 'translate(' + (this.initialState ? 0 : this.handleX) + 'px,0)';
-				this.classList[this.initialState ? 'remove' : 'add'](CLASS_ACTIVE);
-			} else {
-				this.handle.style.webkitTransform = 'translate(' + (this.initialState ? this.handleX : 0) + 'px,0)';
-				this.classList[this.initialState ? 'add' : 'remove'](CLASS_ACTIVE);
-			}
-			this.lastChanged = isChanged;
-		}
-
-	});
-
-	$.fn['switch'] = function(options) {
-		var switchApis = [];
-		this.each(function() {
-			var switchApi = null;
-			var id = this.getAttribute('data-switch');
-			if (!id) {
-				id = ++$.uuid;
-				$.data[id] = new Toggle(this);
-				this.setAttribute('data-switch', id);
-			} else {
-				switchApi = $.data[id];
-			}
-			switchApis.push(switchApi);
-		});
-		return switchApis.length > 1 ? switchApis : switchApis[0];
-	};
-	$.ready(function() {
-		$('.' + CLASS_SWITCH)['switch']();
-	});
-})(mui, window, 'toggle');
-/**
- * Tableviews
- * @param {type} $
- * @param {type} window
- * @param {type} document
- * @returns {undefined}
- */
-(function($, window, document) {
-
-	var CLASS_ACTIVE = 'mui-active';
-	var CLASS_SELECTED = 'mui-selected';
-	var CLASS_GRID_VIEW = 'mui-grid-view';
-	var CLASS_RADIO_VIEW = 'mui-table-view-radio';
-	var CLASS_TABLE_VIEW_CELL = 'mui-table-view-cell';
-	var CLASS_COLLAPSE_CONTENT = 'mui-collapse-content';
-	var CLASS_DISABLED = 'mui-disabled';
-	var CLASS_TOGGLE = 'mui-switch';
-	var CLASS_BTN = 'mui-btn';
-
-	var CLASS_SLIDER_HANDLE = 'mui-slider-handle';
-	var CLASS_SLIDER_LEFT = 'mui-slider-left';
-	var CLASS_SLIDER_RIGHT = 'mui-slider-right';
-	var CLASS_TRANSITIONING = 'mui-transitioning';
-
-
-	var SELECTOR_SLIDER_HANDLE = '.' + CLASS_SLIDER_HANDLE;
-	var SELECTOR_SLIDER_LEFT = '.' + CLASS_SLIDER_LEFT;
-	var SELECTOR_SLIDER_RIGHT = '.' + CLASS_SLIDER_RIGHT;
-	var SELECTOR_SELECTED = '.' + CLASS_SELECTED;
-	var SELECTOR_BUTTON = '.' + CLASS_BTN;
-	var overFactor = 0.8;
-	var cell, a;
-
-	var isMoved = isOpened = openedActions = progress = false;
-	var sliderHandle = sliderActionLeft = sliderActionRight = buttonsLeft = buttonsRight = sliderDirection = sliderRequestAnimationFrame = false;
-	var timer = translateX = lastTranslateX = sliderActionLeftWidth = sliderActionRightWidth = 0;
-
-
-
-	var toggleActive = function(isActive) {
-		if (isActive) {
-			if (a) {
-				a.classList.add(CLASS_ACTIVE);
-			} else if (cell) {
-				cell.classList.add(CLASS_ACTIVE);
-			}
-		} else {
-			timer && timer.cancel();
-			if (a) {
-				a.classList.remove(CLASS_ACTIVE);
-			} else if (cell) {
-				cell.classList.remove(CLASS_ACTIVE);
-			}
-		}
-	};
-
-	var updateTranslate = function() {
-		if (translateX !== lastTranslateX) {
-			if (buttonsRight && buttonsRight.length > 0) {
-				progress = translateX / sliderActionRightWidth;
-				if (translateX < -sliderActionRightWidth) {
-					translateX = -sliderActionRightWidth - Math.pow(-translateX - sliderActionRightWidth, overFactor);
-				}
-				for (var i = 0, len = buttonsRight.length; i < len; i++) {
-					var buttonRight = buttonsRight[i];
-					if (typeof buttonRight._buttonOffset === 'undefined') {
-						buttonRight._buttonOffset = buttonRight.offsetLeft;
-					}
-					buttonOffset = buttonRight._buttonOffset;
-					setTranslate(buttonRight, (translateX - buttonOffset * (1 + Math.max(progress, -1))));
-				}
-			}
-			if (buttonsLeft && buttonsLeft.length > 0) {
-				progress = translateX / sliderActionLeftWidth;
-				if (translateX > sliderActionLeftWidth) {
-					translateX = sliderActionLeftWidth + Math.pow(translateX - sliderActionLeftWidth, overFactor);
-				}
-				for (var i = 0, len = buttonsLeft.length; i < len; i++) {
-					var buttonLeft = buttonsLeft[i];
-					if (typeof buttonLeft._buttonOffset === 'undefined') {
-						buttonLeft._buttonOffset = sliderActionLeftWidth - buttonLeft.offsetLeft - buttonLeft.offsetWidth;
-					}
-					buttonOffset = buttonLeft._buttonOffset;
-					if (buttonsLeft.length > 1) {
-						buttonLeft.style.zIndex = buttonsLeft.length - i;
-					}
-					setTranslate(buttonLeft, (translateX + buttonOffset * (1 - Math.min(progress, 1))));
-				}
-			}
-			setTranslate(sliderHandle, translateX);
-			lastTranslateX = translateX;
-		}
-		sliderRequestAnimationFrame = requestAnimationFrame(function() {
-			updateTranslate();
-		});
-	};
-	var setTranslate = function(element, x) {
-		if (element) {
-			element.style.webkitTransform = 'translate(' + x + 'px,0)';
-		}
-	};
-
-	window.addEventListener($.EVENT_START, function(event) {
-		if (cell) {
-			toggleActive(false);
-		}
-		cell = a = false;
-		isMoved = isOpened = openedActions = false;
-		var target = event.target;
-		var isDisabled = false;
-		for (; target && target !== document; target = target.parentNode) {
-			if (target.classList) {
-				var classList = target.classList;
-				if ((target.tagName === 'INPUT' && target.type !== 'radio' && target.type !== 'checkbox') || target.tagName === 'BUTTON' || classList.contains(CLASS_TOGGLE) || classList.contains(CLASS_BTN) || classList.contains(CLASS_DISABLED)) {
-					isDisabled = true;
-				}
-				if (classList.contains(CLASS_COLLAPSE_CONTENT)) { //collapse content
-					break;
-				}
-				if (classList.contains(CLASS_TABLE_VIEW_CELL)) {
-					cell = target;
-					//TODO swipe to delete close
-					var selected = cell.parentNode.querySelector(SELECTOR_SELECTED);
-					if (!cell.parentNode.classList.contains(CLASS_RADIO_VIEW) && selected && selected !== cell) {
-						$.swipeoutClose(selected);
-						cell = isDisabled = false;
-						return;
-					}
-					if (!cell.parentNode.classList.contains(CLASS_GRID_VIEW)) {
-						var link = cell.querySelector('a');
-						if (link && link.parentNode === cell) { //li>a
-							a = link;
-						}
-					}
-					var handle = cell.querySelector(SELECTOR_SLIDER_HANDLE);
-					if (handle) {
-						toggleEvents(cell);
-						event.stopPropagation();
-					}
-					if (!isDisabled) {
-						if (handle) {
-							if (timer) {
-								timer.cancel();
-							}
-							timer = $.later(function() {
-								toggleActive(true);
-							}, 100);
-						} else {
-							toggleActive(true);
-						}
-					}
-					break;
-				}
-			}
-		}
-	});
-	window.addEventListener($.EVENT_MOVE, function(event) {
-		toggleActive(false);
-	});
-
-	var handleEvent = {
-		handleEvent: function(event) {
-			switch (event.type) {
-				case 'drag':
-					this.drag(event);
-					break;
-				case 'dragend':
-					this.dragend(event);
-					break;
-				case 'flick':
-					this.flick(event);
-					break;
-				case 'swiperight':
-					this.swiperight(event);
-					break;
-				case 'swipeleft':
-					this.swipeleft(event);
-					break;
-			}
-		},
-		drag: function(event) {
-			if (!cell) {
-				return;
-			}
-			if (!isMoved) { //init
-				sliderHandle = sliderActionLeft = sliderActionRight = buttonsLeft = buttonsRight = sliderDirection = sliderRequestAnimationFrame = false;
-				sliderHandle = cell.querySelector(SELECTOR_SLIDER_HANDLE);
-				if (sliderHandle) {
-					sliderActionLeft = cell.querySelector(SELECTOR_SLIDER_LEFT);
-					sliderActionRight = cell.querySelector(SELECTOR_SLIDER_RIGHT);
-					if (sliderActionLeft) {
-						sliderActionLeftWidth = sliderActionLeft.offsetWidth;
-						buttonsLeft = sliderActionLeft.querySelectorAll(SELECTOR_BUTTON);
-					}
-					if (sliderActionRight) {
-						sliderActionRightWidth = sliderActionRight.offsetWidth;
-						buttonsRight = sliderActionRight.querySelectorAll(SELECTOR_BUTTON);
-					}
-					cell.classList.remove(CLASS_TRANSITIONING);
-					isOpened = cell.classList.contains(CLASS_SELECTED);
-					if (isOpened) {
-						openedActions = cell.querySelector(SELECTOR_SLIDER_LEFT + SELECTOR_SELECTED) ? 'left' : 'right';
-					}
-				}
-			}
-			var detail = event.detail;
-			var direction = detail.direction;
-			var angle = detail.angle;
-			if (direction === 'left' && (angle > 150 || angle < -150)) {
-				if (buttonsRight || (buttonsLeft && isOpened)) { //存在右侧按钮或存在左侧按钮且是已打开状态
-					isMoved = true;
-				}
-			} else if (direction === 'right' && (angle > -30 && angle < 30)) {
-				if (buttonsLeft || (buttonsRight && isOpened)) { //存在左侧按钮或存在右侧按钮且是已打开状态
-					isMoved = true;
-				}
-			}
-			if (isMoved) {
-				event.stopPropagation();
-				event.detail.gesture.preventDefault();
-				var translate = event.detail.deltaX;
-				if (isOpened) {
-					if (openedActions === 'right') {
-						translate = translate - sliderActionRightWidth;
-					} else {
-						translate = translate + sliderActionLeftWidth;
-					}
-				}
-				if ((translate > 0 && !buttonsLeft) || (translate < 0 && !buttonsRight)) {
-					if (!isOpened) {
-						return;
-					}
-					translate = 0;
-				}
-				if (translate < 0) {
-					sliderDirection = 'toLeft';
-				} else if (translate > 0) {
-					sliderDirection = 'toRight';
-				} else {
-					if (!sliderDirection) {
-						sliderDirection = 'toLeft';
-					}
-				}
-				if (!sliderRequestAnimationFrame) {
-					updateTranslate();
-				}
-				translateX = translate;
-			}
-		},
-		flick: function(event) {
-			if (isMoved) {
-				event.stopPropagation();
-			}
-		},
-		swipeleft: function(event) {
-			if (isMoved) {
-				event.stopPropagation();
-			}
-		},
-		swiperight: function(event) {
-			if (isMoved) {
-				event.stopPropagation();
-			}
-		},
-		dragend: function(event) {
-			if (!isMoved) {
-				return;
-			}
-			event.stopPropagation();
-			if (sliderRequestAnimationFrame) {
-				cancelAnimationFrame(sliderRequestAnimationFrame);
-				sliderRequestAnimationFrame = null;
-			}
-			var detail = event.detail;
-			isMoved = false;
-			var action = 'close';
-			var actionsWidth = sliderDirection === 'toLeft' ? sliderActionRightWidth : sliderActionLeftWidth;
-			var isToggle = detail.swipe || (Math.abs(translateX) > actionsWidth / 2);
-			if (isToggle) {
-				if (!isOpened) {
-					action = 'open';
-				} else if (detail.direction === 'left' && openedActions === 'right') {
-					action = 'open';
-				} else if (detail.direction === 'right' && openedActions === 'left') {
-					action = 'open';
-				}
-
-			}
-			cell.classList.add(CLASS_TRANSITIONING);
-			var buttons;
-			if (action === 'open') {
-				var newTranslate = sliderDirection === 'toLeft' ? -actionsWidth : actionsWidth;
-				setTranslate(sliderHandle, newTranslate);
-				buttons = sliderDirection === 'toLeft' ? buttonsRight : buttonsLeft;
-				if (typeof buttons !== 'undefined') {
-					var button = null;
-					for (var i = 0; i < buttons.length; i++) {
-						button = buttons[i];
-						setTranslate(button, newTranslate);
-					}
-					button.parentNode.classList.add(CLASS_SELECTED);
-					cell.classList.add(CLASS_SELECTED);
-					if (!isOpened) {
-						$.trigger(cell, sliderDirection === 'toLeft' ? 'slideleft' : 'slideright');
-					}
-				}
-			} else {
-				setTranslate(sliderHandle, 0);
-				sliderActionLeft && sliderActionLeft.classList.remove(CLASS_SELECTED);
-				sliderActionRight && sliderActionRight.classList.remove(CLASS_SELECTED);
-				cell.classList.remove(CLASS_SELECTED);
-			}
-			var buttonOffset;
-			if (buttonsLeft && buttonsLeft.length > 0 && buttonsLeft !== buttons) {
-				for (var i = 0, len = buttonsLeft.length; i < len; i++) {
-					var buttonLeft = buttonsLeft[i];
-					buttonOffset = buttonLeft._buttonOffset;
-					if (typeof buttonOffset === 'undefined') {
-						buttonLeft._buttonOffset = sliderActionLeftWidth - buttonLeft.offsetLeft - buttonLeft.offsetWidth;
-					}
-					setTranslate(buttonLeft, buttonOffset);
-				}
-			}
-			if (buttonsRight && buttonsRight.length > 0 && buttonsRight !== buttons) {
-				for (var i = 0, len = buttonsRight.length; i < len; i++) {
-					var buttonRight = buttonsRight[i];
-					buttonOffset = buttonRight._buttonOffset;
-					if (typeof buttonOffset === 'undefined') {
-						buttonRight._buttonOffset = buttonRight.offsetLeft;
-					}
-					setTranslate(buttonRight, -buttonOffset);
-				}
-			}
-		}
-	};
-
-	function toggleEvents(element, isRemove) {
-		var method = !!isRemove ? 'removeEventListener' : 'addEventListener';
-		element[method]('drag', handleEvent);
-		element[method]('dragend', handleEvent);
-		element[method]('swiperight', handleEvent);
-		element[method]('swipeleft', handleEvent);
-		element[method]('flick', handleEvent);
-	};
-	/**
-	 * 打开滑动菜单
-	 * @param {Object} el
-	 * @param {Object} direction
-	 */
-	$.swipeoutOpen = function(el, direction) {
-		if (!el) return;
-		var classList = el.classList;
-		if (classList.contains(CLASS_SELECTED)) return;
-		if (!direction) {
-			if (el.querySelector(SELECTOR_SLIDER_RIGHT)) {
-				direction = 'right';
-			} else {
-				direction = 'left';
-			}
-		}
-		var swipeoutAction = el.querySelector($.classSelector(".slider-" + direction));
-		if (!swipeoutAction) return;
-		swipeoutAction.classList.add(CLASS_SELECTED);
-		classList.add(CLASS_SELECTED);
-		classList.remove(CLASS_TRANSITIONING);
-		var buttons = swipeoutAction.querySelectorAll(SELECTOR_BUTTON);
-		var swipeoutWidth = swipeoutAction.offsetWidth;
-		var translate = (direction === 'right') ? -swipeoutWidth : swipeoutWidth;
-		var length = buttons.length;
-		var button;
-		for (var i = 0; i < length; i++) {
-			button = buttons[i];
-			if (direction === 'right') {
-				setTranslate(button, -button.offsetLeft);
-			} else {
-				setTranslate(button, (swipeoutWidth - button.offsetWidth - button.offsetLeft));
-			}
-		}
-		classList.add(CLASS_TRANSITIONING);
-		for (var i = 0; i < length; i++) {
-			setTranslate(buttons[i], translate);
-		}
-		setTranslate(el.querySelector(SELECTOR_SLIDER_HANDLE), translate);
-	};
-	/**
-	 * 关闭滑动菜单
-	 * @param {Object} el
-	 */
-	$.swipeoutClose = function(el) {
-		if (!el) return;
-		var classList = el.classList;
-		if (!classList.contains(CLASS_SELECTED)) return;
-		var direction = el.querySelector(SELECTOR_SLIDER_RIGHT + SELECTOR_SELECTED) ? 'right' : 'left';
-		var swipeoutAction = el.querySelector($.classSelector(".slider-" + direction));
-		if (!swipeoutAction) return;
-		swipeoutAction.classList.remove(CLASS_SELECTED);
-		classList.remove(CLASS_SELECTED);
-		classList.add(CLASS_TRANSITIONING);
-		var buttons = swipeoutAction.querySelectorAll(SELECTOR_BUTTON);
-		var swipeoutWidth = swipeoutAction.offsetWidth;
-		var length = buttons.length;
-		var button;
-		setTranslate(el.querySelector(SELECTOR_SLIDER_HANDLE), 0);
-		for (var i = 0; i < length; i++) {
-			button = buttons[i];
-			if (direction === 'right') {
-				setTranslate(button, (-button.offsetLeft));
-			} else {
-				setTranslate(button, (swipeoutWidth - button.offsetWidth - button.offsetLeft));
-			}
-		}
-	};
-
-	window.addEventListener($.EVENT_END, function(event) { //使用touchend来取消高亮,避免一次点击既不触发tap,doubletap,longtap的事件
-		if (!cell) {
-			return;
-		}
-		toggleActive(false);
-		sliderHandle && toggleEvents(cell, true);
-	});
-	window.addEventListener($.EVENT_CANCEL, function(event) { //使用touchcancel来取消高亮,避免一次点击既不触发tap,doubletap,longtap的事件
-		if (!cell) {
-			return;
-		}
-		toggleActive(false);
-		sliderHandle && toggleEvents(cell, true);
-	});
-	var radioOrCheckboxClick = function(event) {
-		var type = event.target && event.target.type || '';
-		if (type === 'radio' || type === 'checkbox') {
-			return;
-		}
-		var classList = cell.classList;
-		if (classList.contains('mui-radio')) {
-			var input = cell.querySelector('input[type=radio]');
-			if (input) {
-				//				input.click();
-				if (!input.disabled && !input.readOnly) {
-					input.checked = !input.checked;
-					$.trigger(input, 'change');
-				}
-			}
-		} else if (classList.contains('mui-checkbox')) {
-			var input = cell.querySelector('input[type=checkbox]');
-			if (input) {
-				//				input.click();
-				if (!input.disabled && !input.readOnly) {
-					input.checked = !input.checked;
-					$.trigger(input, 'change');
-				}
-			}
-		}
-	};
-	//fixed hashchange(android)
-	window.addEventListener($.EVENT_CLICK, function(e) {
-		if (cell && cell.classList.contains('mui-collapse')) {
-			e.preventDefault();
-		}
-	});
-	window.addEventListener('doubletap', function(event) {
-		if (cell) {
-			radioOrCheckboxClick(event);
-		}
-	});
-	var preventDefaultException = /^(INPUT|TEXTAREA|BUTTON|SELECT)$/;
-	window.addEventListener('tap', function(event) {
-		if (!cell) {
-			return;
-		}
-		var isExpand = false;
-		var classList = cell.classList;
-		var ul = cell.parentNode;
-		if (ul && ul.classList.contains(CLASS_RADIO_VIEW)) {
-			if (classList.contains(CLASS_SELECTED)) {
-				return;
-			}
-			var selected = ul.querySelector('li' + SELECTOR_SELECTED);
-			if (selected) {
-				selected.classList.remove(CLASS_SELECTED);
-			}
-			classList.add(CLASS_SELECTED);
-			$.trigger(cell, 'selected', {
-				el: cell
-			});
-			return;
-		}
-		if (classList.contains('mui-collapse') && !cell.parentNode.classList.contains('mui-unfold')) {
-			if (!preventDefaultException.test(event.target.tagName)) {
-				event.detail.gesture.preventDefault();
-			}
-
-			if (!classList.contains(CLASS_ACTIVE)) { //展开时,需要收缩其他同类
-				var collapse = cell.parentNode.querySelector('.mui-collapse.mui-active');
-				if (collapse) {
-					collapse.classList.remove(CLASS_ACTIVE);
-				}
-				isExpand = true;
-			}
-			classList.toggle(CLASS_ACTIVE);
-			if (isExpand) {
-				//触发展开事件
-				$.trigger(cell, 'expand');
-
-				//scroll
-				//暂不滚动
-				// var offsetTop = $.offset(cell).top;
-				// var scrollTop = document.body.scrollTop;
-				// var height = window.innerHeight;
-				// var offsetHeight = cell.offsetHeight;
-				// var cellHeight = (offsetTop - scrollTop + offsetHeight);
-				// if (offsetHeight > height) {
-				// 	$.scrollTo(offsetTop, 300);
-				// } else if (cellHeight > height) {
-				// 	$.scrollTo(cellHeight - height + scrollTop, 300);
-				// }
-			}
-		} else {
-			radioOrCheckboxClick(event);
-		}
-	});
-})(mui, window, document);
-(function($, window) {
-	/**
-	 * 警告消息框
-	 */
-	$.alert = function(message, title, btnValue, callback) {
-		if ($.os.plus) {
-			if (typeof message === 'undefined') {
-				return;
-			} else {
-				if (typeof title === 'function') {
-					callback = title;
-					title = null;
-					btnValue = '确定';
-				} else if (typeof btnValue === 'function') {
-					callback = btnValue;
-					btnValue = null;
-				}
-				$.plusReady(function() {
-					plus.nativeUI.alert(message, callback, title, btnValue);
-				});
-			}
-
-		} else {
-			//TODO H5版本
-			window.alert(message);
-		}
-	};
-
-})(mui, window);
-(function($, window) {
-	/**
-	 * 确认消息框
-	 */
-	$.confirm = function(message, title, btnArray, callback) {
-		if ($.os.plus) {
-			if (typeof message === 'undefined') {
-				return;
-			} else {
-				if (typeof title === 'function') {
-					callback = title;
-					title = null;
-					btnArray = null;
-				} else if (typeof btnArray === 'function') {
-					callback = btnArray;
-					btnArray = null;
-				}
-				$.plusReady(function() {
-					plus.nativeUI.confirm(message, callback, title, btnArray);
-				});
-			}
-
-		} else {
-			//H5版本,0为确认,1为取消
-			if (window.confirm(message)) {
-				callback({
-					index: 0
-				});
-			} else {
-				callback({
-					index: 1
-				});
-			}
-		}
-	};
-
-})(mui, window);
-(function($, window) {
-	/**
-	 * 输入对话框
-	 */
-	$.prompt = function(text, defaultText, title, btnArray, callback) {
-		if ($.os.plus) {
-			if (typeof message === 'undefined') {
-				return;
-			} else {
-
-				if (typeof defaultText === 'function') {
-					callback = defaultText;
-					defaultText = null;
-					title = null;
-					btnArray = null;
-				} else if (typeof title === 'function') {
-					callback = title;
-					title = null;
-					btnArray = null;
-				} else if (typeof btnArray === 'function') {
-					callback = btnArray;
-					btnArray = null;
-				}
-				$.plusReady(function() {
-					plus.nativeUI.prompt(text, callback, title, defaultText, btnArray);
-				});
-			}
-
-		} else {
-			//H5版本(确认index为0,取消index为1)
-			var result = window.prompt(text);
-			if (result) {
-				callback({
-					index: 0,
-					value: result
-				});
-			} else {
-				callback({
-					index: 1,
-					value: ''
-				});
-			}
-		}
-	};
-
-})(mui, window);
-(function($, window) {
-	var CLASS_ACTIVE = 'mui-active';
-	/**
-	 * 自动消失提示框
-	 */
-	$.toast = function(message,options) {
-		var durations = {
-		    'long': 3500,
-		    'short': 2000
-		};
-
-		//计算显示时间
-		 options = $.extend({
-	        duration: 'short'
-	    }, options || {});
-
-
-		if ($.os.plus && options.type !== 'div') {
-			//默认显示在底部;
-			$.plusReady(function() {
-				plus.nativeUI.toast(message, {
-					verticalAlign: 'bottom',
-					duration:options.duration
-				});
-			});
-		} else {
-			if (typeof options.duration === 'number') {
-		        duration = options.duration>0 ? options.duration:durations['short'];
-		    } else {
-		        duration = durations[options.duration];
-		    }
-		    if (!duration) {
-		        duration = durations['short'];
-		    }
-			var toast = document.createElement('div');
-			toast.classList.add('mui-toast-container');
-			toast.innerHTML = '<div class="' + 'mui-toast-message' + '">' + message + '</div>';
-			toast.addEventListener('webkitTransitionEnd', function() {
-				if (!toast.classList.contains(CLASS_ACTIVE)) {
-					toast.parentNode.removeChild(toast);
-					toast = null;
-				}
-			});
-			//点击则自动消失
-			toast.addEventListener('click', function() {
-		        toast.parentNode.removeChild(toast);
-		        toast = null;
-		    });
-			document.body.appendChild(toast);
-			toast.offsetHeight;
-			toast.classList.add(CLASS_ACTIVE);
-			setTimeout(function() {
-				toast && toast.classList.remove(CLASS_ACTIVE);
-			}, duration);
-			
-			return {
-		        isVisible: function() {return !!toast;}
-		    }
-		}   
-	};
-
-})(mui, window);
-/**
- * Popup(alert,confirm,prompt)  
- * @param {Object} $
- * @param {Object} window
- * @param {Object} document
- */
-(function($, window, document) {
-    var CLASS_POPUP = 'mui-popup';
-    var CLASS_POPUP_BACKDROP = 'mui-popup-backdrop';
-    var CLASS_POPUP_IN = 'mui-popup-in';
-    var CLASS_POPUP_OUT = 'mui-popup-out';
-    var CLASS_POPUP_INNER = 'mui-popup-inner';
-    var CLASS_POPUP_TITLE = 'mui-popup-title';
-    var CLASS_POPUP_TEXT = 'mui-popup-text';
-    var CLASS_POPUP_INPUT = 'mui-popup-input';
-    var CLASS_POPUP_BUTTONS = 'mui-popup-buttons';
-    var CLASS_POPUP_BUTTON = 'mui-popup-button';
-    var CLASS_POPUP_BUTTON_BOLD = 'mui-popup-button-bold';
-    var CLASS_POPUP_BACKDROP = 'mui-popup-backdrop';
-    var CLASS_ACTIVE = 'mui-active';
-
-    var popupStack = [];
-    var backdrop = (function() {
-        var element = document.createElement('div');
-        element.classList.add(CLASS_POPUP_BACKDROP);
-        element.addEventListener($.EVENT_MOVE, $.preventDefault);
-        element.addEventListener('webkitTransitionEnd', function() {
-            if (!this.classList.contains(CLASS_ACTIVE)) {
-                element.parentNode && element.parentNode.removeChild(element);
-            }
-        });
-        return element;
-    }());
-
-    var createInput = function(placeholder) {
-        return '<div class="' + CLASS_POPUP_INPUT + '"><input type="text" autofocus placeholder="' + (placeholder || '') + '"/></div>';
-    };
-    var createInner = function(message, title, extra) {
-        return '<div class="' + CLASS_POPUP_INNER + '"><div class="' + CLASS_POPUP_TITLE + '">' + title + '</div><div class="' + CLASS_POPUP_TEXT + '">' + message.replace(/\r\n/g, "<br/>").replace(/\n/g, "<br/>") + '</div>' + (extra || '') + '</div>';
-    };
-    var createButtons = function(btnArray) {
-        var length = btnArray.length;
-        var btns = [];
-        for (var i = 0; i < length; i++) {
-            btns.push('<span class="' + CLASS_POPUP_BUTTON + (i === length - 1 ? (' ' + CLASS_POPUP_BUTTON_BOLD) : '') + '">' + btnArray[i] + '</span>');
-        }
-        return '<div class="' + CLASS_POPUP_BUTTONS + '">' + btns.join('') + '</div>';
-    };
-
-    var createPopup = function(html, callback) {
-        var popupElement = document.createElement('div');
-        popupElement.className = CLASS_POPUP;
-        popupElement.innerHTML = html;
-        var removePopupElement = function() {
-            popupElement.parentNode && popupElement.parentNode.removeChild(popupElement);
-            popupElement = null;
-        };
-        popupElement.addEventListener($.EVENT_MOVE, $.preventDefault);
-        popupElement.addEventListener('webkitTransitionEnd', function(e) {
-            if (popupElement && e.target === popupElement && popupElement.classList.contains(CLASS_POPUP_OUT)) {
-                removePopupElement();
-            }
-        });
-        popupElement.style.display = 'block';
-        document.body.appendChild(popupElement);
-        popupElement.offsetHeight;
-        popupElement.classList.add(CLASS_POPUP_IN);
-
-        if (!backdrop.classList.contains(CLASS_ACTIVE)) {
-            backdrop.style.display = 'block';
-            document.body.appendChild(backdrop);
-            backdrop.offsetHeight;
-            backdrop.classList.add(CLASS_ACTIVE);
-        }
-        var btns = $.qsa('.' + CLASS_POPUP_BUTTON, popupElement);
-        var input = popupElement.querySelector('.' + CLASS_POPUP_INPUT + ' input');
-        var popup = {
-            element: popupElement,
-            close: function(index, animate) {
-                if (popupElement) {
-                    var result = callback && callback({
-                        index: index || 0,
-                        value: input && input.value || ''
-                    });
-                    if (result === false) { //返回false则不关闭当前popup
-                        return;
-                    }
-                    if (animate !== false) {
-                        popupElement.classList.remove(CLASS_POPUP_IN);
-                        popupElement.classList.add(CLASS_POPUP_OUT);
-                    } else {
-                        removePopupElement();
-                    }
-                    popupStack.pop();
-                    //如果还有其他popup,则不remove backdrop
-                    if (popupStack.length) {
-                        popupStack[popupStack.length - 1]['show'](animate);
-                    } else {
-                        backdrop.classList.remove(CLASS_ACTIVE);
-                    }
-                }
-            }
-        };
-        var handleEvent = function(e) {
-            popup.close(btns.indexOf(e.target));
-        };
-        $(popupElement).on('tap', '.' + CLASS_POPUP_BUTTON, handleEvent);
-        if (popupStack.length) {
-            popupStack[popupStack.length - 1]['hide']();
-        }
-        popupStack.push({
-            close: popup.close,
-            show: function(animate) {
-                popupElement.style.display = 'block';
-                popupElement.offsetHeight;
-                popupElement.classList.add(CLASS_POPUP_IN);
-            },
-            hide: function() {
-                popupElement.style.display = 'none';
-                popupElement.classList.remove(CLASS_POPUP_IN);
-            }
-        });
-        return popup;
-    };
-    var createAlert = function(message, title, btnValue, callback, type) {
-        if (typeof message === 'undefined') {
-            return;
-        } else {
-            if (typeof title === 'function') {
-                callback = title;
-                type = btnValue;
-                title = null;
-                btnValue = null;
-            } else if (typeof btnValue === 'function') {
-                type = callback;
-                callback = btnValue;
-                btnValue = null;
-            }
-        }
-        if (!$.os.plus || type === 'div') {
-            return createPopup(createInner(message, title || '提示') + createButtons([btnValue || '确定']), callback);
-        }
-        return plus.nativeUI.alert(message, callback, title || '提示', btnValue || '确定');
-    };
-    var createConfirm = function(message, title, btnArray, callback, type) {
-        if (typeof message === 'undefined') {
-            return;
-        } else {
-            if (typeof title === 'function') {
-                callback = title;
-                type = btnArray;
-                title = null;
-                btnArray = null;
-            } else if (typeof btnArray === 'function') {
-                type = callback;
-                callback = btnArray;
-                btnArray = null;
-            }
-        }
-        if (!$.os.plus || type === 'div') {
-            return createPopup(createInner(message, title || '提示') + createButtons(btnArray || ['取消', '确认']), callback);
-        }
-        return plus.nativeUI.confirm(message, callback, title, btnArray || ['取消', '确认']);
-    };
-    var createPrompt = function(message, placeholder, title, btnArray, callback, type) {
-        if (typeof message === 'undefined') {
-            return;
-        } else {
-            if (typeof placeholder === 'function') {
-                callback = placeholder;
-                type = title;
-                placeholder = null;
-                title = null;
-                btnArray = null;
-            } else if (typeof title === 'function') {
-                callback = title;
-                type = btnArray;
-                title = null;
-                btnArray = null;
-            } else if (typeof btnArray === 'function') {
-                type = callback;
-                callback = btnArray;
-                btnArray = null;
-            }
-        }
-        if (!$.os.plus || type === 'div') {
-            return createPopup(createInner(message, title || '提示', createInput(placeholder)) + createButtons(btnArray || ['取消', '确认']), callback);
-        }
-        return plus.nativeUI.prompt(message, callback, title || '提示', placeholder, btnArray || ['取消', '确认']);
-    };
-    var closePopup = function() {
-        if (popupStack.length) {
-            popupStack[popupStack.length - 1]['close']();
-            return true;
-        } else {
-            return false;
-        }
-    };
-    var closePopups = function() {
-        while (popupStack.length) {
-            popupStack[popupStack.length - 1]['close']();
-        }
-    };
-
-    $.closePopup = closePopup;
-    $.closePopups = closePopups;
-    $.alert = createAlert;
-    $.confirm = createConfirm;
-    $.prompt = createPrompt;
-})(mui, window, document);
-(function($, document) {
-	var CLASS_PROGRESSBAR = 'mui-progressbar';
-	var CLASS_PROGRESSBAR_IN = 'mui-progressbar-in';
-	var CLASS_PROGRESSBAR_OUT = 'mui-progressbar-out';
-	var CLASS_PROGRESSBAR_INFINITE = 'mui-progressbar-infinite';
-
-	var SELECTOR_PROGRESSBAR = '.mui-progressbar';
-
-	var _findProgressbar = function(container) {
-		container = $(container || 'body');
-		if (container.length === 0) return;
-		container = container[0];
-		if (container.classList.contains(CLASS_PROGRESSBAR)) {
-			return container;
-		}
-		var progressbars = container.querySelectorAll(SELECTOR_PROGRESSBAR);
-		if (progressbars) {
-			for (var i = 0, len = progressbars.length; i < len; i++) {
-				var progressbar = progressbars[i];
-				if (progressbar.parentNode === container) {
-					return progressbar;
-				}
-			}
-		}
-	};
-	/**
-	 * 创建并显示进度条 
-	 * @param {Object} container  可选,默认body,支持selector,DOM Node,mui wrapper
-	 * @param {Object} progress 可选,undefined表示循环,数字表示具体进度
-	 * @param {Object} color 可选,指定颜色样式(目前暂未提供实际样式,可暂时不暴露此参数)
-	 */
-	var showProgressbar = function(container, progress, color) {
-		if (typeof container === 'number') {
-			color = progress;
-			progress = container;
-			container = 'body';
-		}
-		container = $(container || 'body');
-		if (container.length === 0) return;
-		container = container[0];
-		var progressbar;
-		if (container.classList.contains(CLASS_PROGRESSBAR)) {
-			progressbar = container;
-		} else {
-			var progressbars = container.querySelectorAll(SELECTOR_PROGRESSBAR + ':not(.' + CLASS_PROGRESSBAR_OUT + ')');
-			if (progressbars) {
-				for (var i = 0, len = progressbars.length; i < len; i++) {
-					var _progressbar = progressbars[i];
-					if (_progressbar.parentNode === container) {
-						progressbar = _progressbar;
-						break;
-					}
-				}
-			}
-			if (!progressbar) {
-				progressbar = document.createElement('span');
-				progressbar.className = CLASS_PROGRESSBAR + ' ' + CLASS_PROGRESSBAR_IN + (typeof progress !== 'undefined' ? '' : (' ' + CLASS_PROGRESSBAR_INFINITE)) + (color ? (' ' + CLASS_PROGRESSBAR + '-' + color) : '');
-				if (typeof progress !== 'undefined') {
-					progressbar.innerHTML = '<span></span>';
-				}
-				container.appendChild(progressbar);
-			} else {
-				progressbar.classList.add(CLASS_PROGRESSBAR_IN);
-			}
-		}
-		if (progress) setProgressbar(container, progress);
-		return progressbar;
-	};
-	/**
-	 * 关闭进度条 
-	 * @param {Object} container 可选,默认body,支持selector,DOM Node,mui wrapper
-	 */
-	var hideProgressbar = function(container) {
-		var progressbar = _findProgressbar(container);
-		if (!progressbar) {
-			return;
-		}
-		var classList = progressbar.classList;
-		if (!classList.contains(CLASS_PROGRESSBAR_IN) || classList.contains(CLASS_PROGRESSBAR_OUT)) {
-			return;
-		}
-		classList.remove(CLASS_PROGRESSBAR_IN);
-		classList.add(CLASS_PROGRESSBAR_OUT);
-		progressbar.addEventListener('webkitAnimationEnd', function() {
-			progressbar.parentNode && progressbar.parentNode.removeChild(progressbar);
-			progressbar = null;
-		});
-		return;
-	};
-	/**
-	 * 设置指定进度条进度 
-	 * @param {Object} container  可选,默认body,支持selector,DOM Node,mui wrapper
-	 * @param {Object} progress 可选,默认0 取值范围[0-100]
-	 * @param {Object} speed 进度条动画时间
-	 */
-	var setProgressbar = function(container, progress, speed) {
-		if (typeof container === 'number') {
-			speed = progress;
-			progress = container;
-			container = false;
-		}
-		var progressbar = _findProgressbar(container);
-		if (!progressbar || progressbar.classList.contains(CLASS_PROGRESSBAR_INFINITE)) {
-			return;
-		}
-		if (progress) progress = Math.min(Math.max(progress, 0), 100);
-		progressbar.offsetHeight;
-		var span = progressbar.querySelector('span');
-		if (span) {
-			var style = span.style;
-			style.webkitTransform = 'translate3d(' + (-100 + progress) + '%,0,0)';
-			if (typeof speed !== 'undefined') {
-				style.webkitTransitionDuration = speed + 'ms';
-			} else {
-				style.webkitTransitionDuration = '';
-			}
-		}
-		return progressbar;
-	};
-	$.fn.progressbar = function(options) {
-		var progressbarApis = [];
-		options = options || {};
-		this.each(function() {
-			var self = this;
-			var progressbarApi = self.mui_plugin_progressbar;
-			if (!progressbarApi) {
-				self.mui_plugin_progressbar = progressbarApi = {
-					options: options,
-					setOptions: function(options) {
-						this.options = options;
-					},
-					show: function() {
-						return showProgressbar(self, this.options.progress, this.options.color);
-					},
-					setProgress: function(progress) {
-						return setProgressbar(self, progress);
-					},
-					hide: function() {
-						return hideProgressbar(self);
-					}
-				};
-			} else if (options) {
-				progressbarApi.setOptions(options);
-			}
-			progressbarApis.push(progressbarApi);
-		});
-		return progressbarApis.length === 1 ? progressbarApis[0] : progressbarApis;
-	};
-	//	$.setProgressbar = setProgressbar;
-	//	$.showProgressbar = showProgressbar;
-	//	$.hideProgressbar = hideProgressbar;
-})(mui, document);
-/**
- * Input(TODO resize)
- * @param {type} $
- * @param {type} window
- * @param {type} document
- * @returns {undefined}
- */
-(function($, window, document) {
-	var CLASS_ICON = 'mui-icon';
-	var CLASS_ICON_CLEAR = 'mui-icon-clear';
-	var CLASS_ICON_SPEECH = 'mui-icon-speech';
-	var CLASS_ICON_SEARCH = 'mui-icon-search';
-	var CLASS_ICON_PASSWORD = 'mui-icon-eye';
-	var CLASS_INPUT_ROW = 'mui-input-row';
-	var CLASS_PLACEHOLDER = 'mui-placeholder';
-	var CLASS_TOOLTIP = 'mui-tooltip';
-	var CLASS_HIDDEN = 'mui-hidden';
-	var CLASS_FOCUSIN = 'mui-focusin';
-	var SELECTOR_ICON_CLOSE = '.' + CLASS_ICON_CLEAR;
-	var SELECTOR_ICON_SPEECH = '.' + CLASS_ICON_SPEECH;
-	var SELECTOR_ICON_PASSWORD = '.' + CLASS_ICON_PASSWORD;
-	var SELECTOR_PLACEHOLDER = '.' + CLASS_PLACEHOLDER;
-	var SELECTOR_TOOLTIP = '.' + CLASS_TOOLTIP;
-
-	var findRow = function(target) {
-		for (; target && target !== document; target = target.parentNode) {
-			if (target.classList && target.classList.contains(CLASS_INPUT_ROW)) {
-				return target;
-			}
-		}
-		return null;
-	};
-	var Input = function(element, options) {
-		this.element = element;
-		this.options = options || {
-			actions: 'clear'
-		};
-		if (~this.options.actions.indexOf('slider')) { //slider
-			this.sliderActionClass = CLASS_TOOLTIP + ' ' + CLASS_HIDDEN;
-			this.sliderActionSelector = SELECTOR_TOOLTIP;
-		} else { //clear,speech,search
-			if (~this.options.actions.indexOf('clear')) {
-				this.clearActionClass = CLASS_ICON + ' ' + CLASS_ICON_CLEAR + ' ' + CLASS_HIDDEN;
-				this.clearActionSelector = SELECTOR_ICON_CLOSE;
-			}
-			if (~this.options.actions.indexOf('speech')) { //only for 5+
-				this.speechActionClass = CLASS_ICON + ' ' + CLASS_ICON_SPEECH;
-				this.speechActionSelector = SELECTOR_ICON_SPEECH;
-			}
-			if (~this.options.actions.indexOf('search')) {
-				this.searchActionClass = CLASS_PLACEHOLDER;
-				this.searchActionSelector = SELECTOR_PLACEHOLDER;
-			}
-			if (~this.options.actions.indexOf('password')) {
-				this.passwordActionClass = CLASS_ICON + ' ' + CLASS_ICON_PASSWORD;
-				this.passwordActionSelector = SELECTOR_ICON_PASSWORD;
-			}
-		}
-		this.init();
-	};
-	Input.prototype.init = function() {
-		this.initAction();
-		this.initElementEvent();
-	};
-	Input.prototype.initAction = function() {
-		var self = this;
-
-		var row = self.element.parentNode;
-		if (row) {
-			if (self.sliderActionClass) {
-				self.sliderAction = self.createAction(row, self.sliderActionClass, self.sliderActionSelector);
-			} else {
-				if (self.searchActionClass) {
-					self.searchAction = self.createAction(row, self.searchActionClass, self.searchActionSelector);
-					self.searchAction.addEventListener('tap', function(e) {
-						$.focus(self.element);
-						e.stopPropagation();
-					});
-				}
-				if (self.speechActionClass) {
-					self.speechAction = self.createAction(row, self.speechActionClass, self.speechActionSelector);
-					self.speechAction.addEventListener('click', $.stopPropagation);
-					self.speechAction.addEventListener('tap', function(event) {
-						self.speechActionClick(event);
-					});
-				}
-				if (self.clearActionClass) {
-					self.clearAction = self.createAction(row, self.clearActionClass, self.clearActionSelector);
-					self.clearAction.addEventListener('tap', function(event) {
-						self.clearActionClick(event);
-					});
-				}
-				if (self.passwordActionClass) {
-					self.passwordAction = self.createAction(row, self.passwordActionClass, self.passwordActionSelector);
-					self.passwordAction.addEventListener('tap', function(event) {
-						self.passwordActionClick(event);
-					});
-				}
-			}
-		}
-	};
-	Input.prototype.createAction = function(row, actionClass, actionSelector) {
-		var action = row.querySelector(actionSelector);
-		if (!action) {
-			var action = document.createElement('span');
-			action.className = actionClass;
-			if (actionClass === this.searchActionClass) {
-				action.innerHTML = '<span class="' + CLASS_ICON + ' ' + CLASS_ICON_SEARCH + '"></span><span>' + this.element.getAttribute('placeholder') + '</span>';
-				this.element.setAttribute('placeholder', '');
-				if (this.element.value.trim()) {
-					row.classList.add('mui-active');
-				}
-			}
-			row.insertBefore(action, this.element.nextSibling);
-		}
-		return action;
-	};
-	Input.prototype.initElementEvent = function() {
-		var element = this.element;
-
-		if (this.sliderActionClass) {
-			var tooltip = this.sliderAction;
-			var timer = null;
-			var showTip = function() { //每次重新计算是因为控件可能被隐藏,初始化时计算是不正确的
-				tooltip.classList.remove(CLASS_HIDDEN);
-				var offsetLeft = element.offsetLeft;
-				var width = element.offsetWidth - 28;
-				var tooltipWidth = tooltip.offsetWidth;
-				var distince = Math.abs(element.max - element.min);
-				var scaleWidth = (width / distince) * Math.abs(element.value - element.min);
-				tooltip.style.left = (14 + offsetLeft + scaleWidth - tooltipWidth / 2) + 'px';
-				tooltip.innerText = element.value;
-				if (timer) {
-					clearTimeout(timer);
-				}
-				timer = setTimeout(function() {
-					tooltip.classList.add(CLASS_HIDDEN);
-				}, 1000);
-			};
-			element.addEventListener('input', showTip);
-			element.addEventListener('tap', showTip);
-			element.addEventListener($.EVENT_MOVE, function(e) {
-				e.stopPropagation();
-			});
-		} else {
-			if (this.clearActionClass) {
-				var action = this.clearAction;
-				if (!action) {
-					return;
-				}
-				$.each(['keyup', 'change', 'input', 'focus', 'cut', 'paste'], function(index, type) {
-					(function(type) {
-						element.addEventListener(type, function() {
-							action.classList[element.value.trim() ? 'remove' : 'add'](CLASS_HIDDEN);
-						});
-					})(type);
-				});
-				element.addEventListener('blur', function() {
-					action.classList.add(CLASS_HIDDEN);
-				});
-			}
-			if (this.searchActionClass) {
-				element.addEventListener('focus', function() {
-					element.parentNode.classList.add('mui-active');
-				});
-				element.addEventListener('blur', function() {
-					if (!element.value.trim()) {
-						element.parentNode.classList.remove('mui-active');
-					}
-				});
-			}
-		}
-	};
-	Input.prototype.setPlaceholder = function(text) {
-		if (this.searchActionClass) {
-			var placeholder = this.element.parentNode.querySelector(SELECTOR_PLACEHOLDER);
-			placeholder && (placeholder.getElementsByTagName('span')[1].innerText = text);
-		} else {
-			this.element.setAttribute('placeholder', text);
-		}
-	};
-	Input.prototype.passwordActionClick = function(event) {
-		if (this.element.type === 'text') {
-			this.element.type = 'password';
-		} else {
-			this.element.type = 'text';
-		}
-		this.passwordAction.classList.toggle('mui-active');
-		event.preventDefault();
-	};
-	Input.prototype.clearActionClick = function(event) {
-		var self = this;
-		self.element.value = '';
-		$.focus(self.element);
-		self.clearAction.classList.add(CLASS_HIDDEN);
-		event.preventDefault();
-	};
-	Input.prototype.speechActionClick = function(event) {
-		if (window.plus) {
-			var self = this;
-			var oldValue = self.element.value;
-			self.element.value = '';
-			document.body.classList.add(CLASS_FOCUSIN);
-			plus.speech.startRecognize({
-				engine: 'iFly'
-			}, function(s) {
-				self.element.value += s;
-				$.focus(self.element);
-				plus.speech.stopRecognize();
-				$.trigger(self.element, 'recognized', {
-					value: self.element.value
-				});
-				if (oldValue !== self.element.value) {
-					$.trigger(self.element, 'change');
-					$.trigger(self.element, 'input');
-				}
-				// document.body.classList.remove(CLASS_FOCUSIN);
-			}, function(e) {
-				document.body.classList.remove(CLASS_FOCUSIN);
-			});
-		} else {
-			alert('only for 5+');
-		}
-		event.preventDefault();
-	};
-	$.fn.input = function(options) {
-		var inputApis = [];
-		this.each(function() {
-			var inputApi = null;
-			var actions = [];
-			var row = findRow(this.parentNode);
-			if (this.type === 'range' && row.classList.contains('mui-input-range')) {
-				actions.push('slider');
-			} else {
-				var classList = this.classList;
-				if (classList.contains('mui-input-clear')) {
-					actions.push('clear');
-				}
-				if (!($.os.android && $.os.stream) && classList.contains('mui-input-speech')) {
-					actions.push('speech');
-				}
-				if (classList.contains('mui-input-password')) {
-					actions.push('password');
-				}
-				if (this.type === 'search' && row.classList.contains('mui-search')) {
-					actions.push('search');
-				}
-			}
-			var id = this.getAttribute('data-input-' + actions[0]);
-			if (!id) {
-				id = ++$.uuid;
-				inputApi = $.data[id] = new Input(this, {
-					actions: actions.join(',')
-				});
-				for (var i = 0, len = actions.length; i < len; i++) {
-					this.setAttribute('data-input-' + actions[i], id);
-				}
-			} else {
-				inputApi = $.data[id];
-			}
-			inputApis.push(inputApi);
-		});
-		return inputApis.length === 1 ? inputApis[0] : inputApis;
-	};
-	$.ready(function() {
-		$('.mui-input-row input').input();
-	});
-})(mui, window, document);
-(function($, window) {
-    var CLASS_ACTIVE = 'mui-active';
-    var rgbaRegex = /^rgba\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3}),\s*(\d*(?:\.\d+)?)\)$/;
-    var getColor = function(colorStr) {
-        var matches = colorStr.match(rgbaRegex);
-        if (matches && matches.length === 5) {
-            return [
-                matches[1],
-                matches[2],
-                matches[3],
-                matches[4]
-            ];
-        }
-        return [];
-    };
-    var Transparent = function(element, options) {
-        this.element = element;
-        this.options = $.extend({
-            top: 0, //距离顶部高度(到达该高度即触发)
-            offset: 150, //滚动透明距离
-            duration: 16, //过渡时间
-            scrollby: window//监听滚动距离容器
-        }, options || {});
-
-        this.scrollByElem = this.options.scrollby || window;
-        if (!this.scrollByElem) {
-            throw new Error("监听滚动的元素不存在");
-        }
-        this.isNativeScroll = false;
-        if (this.scrollByElem === window) {
-            this.isNativeScroll = true;
-        } else if (!~this.scrollByElem.className.indexOf('mui-scroll-wrapper')) {
-            this.isNativeScroll = true;
-        }
-
-        this._style = this.element.style;
-        this._bgColor = this._style.backgroundColor;
-        var color = getColor(mui.getStyles(this.element, 'backgroundColor'));
-        if (color.length) {
-            this._R = color[0];
-            this._G = color[1];
-            this._B = color[2];
-            this._A = parseFloat(color[3]);
-            this.lastOpacity = this._A;
-            this._bufferFn = $.buffer(this.handleScroll, this.options.duration, this);
-            this.initEvent();
-        } else {
-            throw new Error("元素背景颜色必须为RGBA");
-        }
-    };
-
-    Transparent.prototype.initEvent = function() {
-        this.scrollByElem.addEventListener('scroll', this._bufferFn);
-        if (this.isNativeScroll) { //原生scroll
-            this.scrollByElem.addEventListener($.EVENT_MOVE, this._bufferFn);
-        }
-    }
-    Transparent.prototype.handleScroll = function(e) {
-        var y = window.scrollY;
-        if (!this.isNativeScroll && e && e.detail) {
-            y = -e.detail.y;
-        }
-        var opacity = (y - this.options.top) / this.options.offset + this._A;
-        opacity = Math.min(Math.max(this._A, opacity), 1);
-        this._style.backgroundColor = 'rgba(' + this._R + ',' + this._G + ',' + this._B + ',' + opacity + ')';
-        if (opacity > this._A) {
-            this.element.classList.add(CLASS_ACTIVE);
-        } else {
-            this.element.classList.remove(CLASS_ACTIVE);
-        }
-        if (this.lastOpacity !== opacity) {
-            $.trigger(this.element, 'alpha', {
-                alpha: opacity
-            });
-            this.lastOpacity = opacity;
-        }
-    };
-    Transparent.prototype.destory = function() {
-        this.scrollByElem.removeEventListener('scroll', this._bufferFn);
-        this.scrollByElem.removeEventListener($.EVENT_MOVE, this._bufferFn);
-        this.element.style.backgroundColor = this._bgColor;
-        this.element.mui_plugin_transparent = null;
-    };
-    $.fn.transparent = function(options) {
-        options = options || {};
-        var transparentApis = [];
-        this.each(function() {
-            var transparentApi = this.mui_plugin_transparent;
-            if (!transparentApi) {
-                var top = this.getAttribute('data-top');
-                var offset = this.getAttribute('data-offset');
-                var duration = this.getAttribute('data-duration');
-                var scrollby = this.getAttribute('data-scrollby');
-                if (top !== null && typeof options.top === 'undefined') {
-                    options.top = top;
-                }
-                if (offset !== null && typeof options.offset === 'undefined') {
-                    options.offset = offset;
-                }
-                if (duration !== null && typeof options.duration === 'undefined') {
-                    options.duration = duration;
-                }
-                if (scrollby !== null && typeof options.scrollby === 'undefined') {
-                    options.scrollby = document.querySelector(scrollby) || window;
-                }
-                transparentApi = this.mui_plugin_transparent = new Transparent(this, options);
-            }
-            transparentApis.push(transparentApi);
-        });
-        return transparentApis.length === 1 ? transparentApis[0] : transparentApis;
-    };
-    $.ready(function() {
-        $('.mui-bar-transparent').transparent();
-    });
-})(mui, window);
-/**
- * 数字输入框
- * varstion 1.0.1
- * by Houfeng
- * Houfeng@DCloud.io
- */
-
-(function($) {
-
-    var touchSupport = ('ontouchstart' in document);
-    var tapEventName = touchSupport ? 'tap' : 'click';
-    var changeEventName = 'change';
-    var holderClassName = 'mui-numbox';
-    var plusClassSelector = '.mui-btn-numbox-plus,.mui-numbox-btn-plus';
-    var minusClassSelector = '.mui-btn-numbox-minus,.mui-numbox-btn-minus';
-    var inputClassSelector = '.mui-input-numbox,.mui-numbox-input';
-
-    var Numbox = $.Numbox = $.Class.extend({
-        /**
-         * 构造函数
-         **/
-        init: function(holder, options) {
-            var self = this;
-            if (!holder) {
-                throw "构造 numbox 时缺少容器元素";
-            }
-            self.holder = holder;
-            options = options || {};
-            options.step = parseInt(options.step || 1);
-            self.options = options;
-            self.input = $.qsa(inputClassSelector, self.holder)[0];
-            self.plus = $.qsa(plusClassSelector, self.holder)[0];
-            self.minus = $.qsa(minusClassSelector, self.holder)[0];
-            self.checkValue();
-            self.initEvent();
-        },
-        /**
-         * 初始化事件绑定
-         **/
-        initEvent: function() {
-            var self = this;
-            self.plus.addEventListener(tapEventName, function(event) {
-                var val = parseInt(self.input.value) + self.options.step;
-                self.input.value = val.toString();
-                $.trigger(self.input, changeEventName, null);
-            });
-            self.minus.addEventListener(tapEventName, function(event) {
-                var val = parseInt(self.input.value) - self.options.step;
-                self.input.value = val.toString();
-                $.trigger(self.input, changeEventName, null);
-            });
-            self.input.addEventListener(changeEventName, function(event) {
-                self.checkValue();
-                var val = parseInt(self.input.value);
-                //触发顶层容器
-                $.trigger(self.holder, changeEventName, {
-                    value: val
-                });
-            });
-        },
-        /**
-         * 获取当前值
-         **/
-        getValue: function() {
-            var self = this;
-            return parseInt(self.input.value);
-        },
-        /**
-         * 验证当前值是法合法
-         **/
-        checkValue: function() {
-            var self = this;
-            var val = self.input.value;
-            if (val == null || val == '' || isNaN(val)) {
-                self.input.value = self.options.min || 0;
-                self.minus.disabled = self.options.min != null;
-            } else {
-                var val = parseInt(val);
-                if (self.options.max != null && !isNaN(self.options.max) && val >= parseInt(self.options.max)) {
-                    val = self.options.max;
-                    self.plus.disabled = true;
-                } else {
-                    self.plus.disabled = false;
-                }
-                if (self.options.min != null && !isNaN(self.options.min) && val <= parseInt(self.options.min)) {
-                    val = self.options.min;
-                    self.minus.disabled = true;
-                } else {
-                    self.minus.disabled = false;
-                }
-                self.input.value = val;
-            }
-        },
-        /**
-         * 更新选项
-         **/
-        setOption: function(name, value) {
-            var self = this;
-            self.options[name] = value;
-        },
-        /**
-         * 动态设置新值
-         **/
-        setValue: function(value) {
-            this.input.value = value;
-            this.checkValue();
-        }
-    });
-
-    $.fn.numbox = function(options) {
-        var instanceArray = [];
-        //遍历选择的元素
-        this.each(function(i, element) {
-            if (element.numbox) {
-                return;
-            }
-            if (options) {
-                element.numbox = new Numbox(element, options);
-            } else {
-                var optionsText = element.getAttribute('data-numbox-options');
-                var options = optionsText ? JSON.parse(optionsText) : {};
-                options.step = element.getAttribute('data-numbox-step') || options.step;
-                options.min = element.getAttribute('data-numbox-min') || options.min;
-                options.max = element.getAttribute('data-numbox-max') || options.max;
-                element.numbox = new Numbox(element, options);
-            }
-        });
-        return this[0] ? this[0].numbox : null;
-    }
-
-    //自动处理 class='mui-locker' 的 dom
-    $.ready(function() {
-        $('.' + holderClassName).numbox();
-    });
-
-}(mui));
-/**
- * Button
- * @param {type} $
- * @param {type} window
- * @param {type} document
- * @returns {undefined}
- */
-(function($, window, document) {
-    var CLASS_ICON = 'mui-icon';
-    var CLASS_DISABLED = 'mui-disabled';
-
-    var STATE_RESET = 'reset';
-    var STATE_LOADING = 'loading';
-
-    var defaultOptions = {
-        loadingText: 'Loading...', //文案
-        loadingIcon: 'mui-spinner' + ' ' + 'mui-spinner-white', //图标,可为空
-        loadingIconPosition: 'left' //图标所处位置,仅支持left|right
-    };
-
-    var Button = function(element, options) {
-        this.element = element;
-        this.options = $.extend({}, defaultOptions, options);
-        if (!this.options.loadingText) {
-            this.options.loadingText = defaultOptions.loadingText;
-        }
-        if (this.options.loadingIcon === null) {
-            this.options.loadingIcon = 'mui-spinner';
-            if ($.getStyles(this.element, 'color') === 'rgb(255, 255, 255)') {
-                this.options.loadingIcon += ' ' + 'mui-spinner-white';
-            }
-        }
-        this.isInput = this.element.tagName === 'INPUT';
-        this.resetHTML = this.isInput ? this.element.value : this.element.innerHTML;
-        this.state = '';
-    };
-    Button.prototype.loading = function() {
-        this.setState(STATE_LOADING);
-    };
-    Button.prototype.reset = function() {
-        this.setState(STATE_RESET);
-    };
-    Button.prototype.setState = function(state) {
-        if (this.state === state) {
-            return false;
-        }
-        this.state = state;
-        if (state === STATE_RESET) {
-            this.element.disabled = false;
-            this.element.classList.remove(CLASS_DISABLED);
-            this.setHtml(this.resetHTML);
-        } else if (state === STATE_LOADING) {
-            this.element.disabled = true;
-            this.element.classList.add(CLASS_DISABLED);
-            var html = this.isInput ? this.options.loadingText : ('<span>' + this.options.loadingText + '</span>');
-            if (this.options.loadingIcon && !this.isInput) {
-                if (this.options.loadingIconPosition === 'right') {
-                    html += '&nbsp;<span class="' + this.options.loadingIcon + '"></span>';
-                } else {
-                    html = '<span class="' + this.options.loadingIcon + '"></span>&nbsp;' + html;
-                }
-            }
-            this.setHtml(html);
-        }
-    };
-    Button.prototype.setHtml = function(html) {
-        if (this.isInput) {
-            this.element.value = html;
-        } else {
-            this.element.innerHTML = html;
-        }
-    }
-    $.fn.button = function(state) {
-        var buttonApis = [];
-        this.each(function() {
-            var buttonApi = this.mui_plugin_button;
-            if (!buttonApi) {
-                var loadingText = this.getAttribute('data-loading-text');
-                var loadingIcon = this.getAttribute('data-loading-icon');
-                var loadingIconPosition = this.getAttribute('data-loading-icon-position');
-                this.mui_plugin_button = buttonApi = new Button(this, {
-                    loadingText: loadingText,
-                    loadingIcon: loadingIcon,
-                    loadingIconPosition: loadingIconPosition
-                });
-            }
-            if (state === STATE_LOADING || state === STATE_RESET) {
-                buttonApi.setState(state);
-            }
-            buttonApis.push(buttonApi);
-        });
-        return buttonApis.length === 1 ? buttonApis[0] : buttonApis;
-    };
-})(mui, window, document);

+ 66 - 150
manifest.json

@@ -1,176 +1,119 @@
 {
-    "@platforms" : [ "android", "iPhone", "iPad" ],
-    "id" : "H500C32F5", /*应用的标识*/
-    "name" : "西曼克", /*应用名称,程序桌面图标名称*/
+    "id" : "H5BB7CBC9",
+    "name" : "西曼克",
     "version" : {
-        "name" : "1.0", /*应用版本名称*/
-        "code" : ""
+        "name" : "1.0",
+        "code" : 26
     },
-    "description" : "西曼克AGV手机控制终端。", /*应用描述信息*/
+    "description" : "西曼克AGV手机控制终端。",
     "icons" : {
         "72" : "icon.png"
     },
-    "launch_path" : "index.html", /*应用的入口页面,默认为根目录下的index.html;支持网络地址,必须以http://或https://开头*/
+    "launch_path" : "index.html",
     "developer" : {
-        "name" : "", /*开发者名称*/
-        "email" : "", /*开发者邮箱地址*/
-        "url" : "" /*开发者个人主页地址*/
+        "name" : "",
+        "email" : "",
+        "url" : ""
     },
     "permissions" : {
         "Accelerometer" : {
-            "description" : "访问加速度感应器"
+            "description" : "plus.accelerometer.*"
         },
         "Audio" : {
-            "description" : "访问麦克风"
+            "description" : "plus.audio.*"
         },
         "Cache" : {
-            "description" : "管理应用缓存"
+            "description" : "plus.cache.*"
         },
         "Camera" : {
-            "description" : "访问摄像头"
+            "description" : "plus.camera.*"
         },
         "Console" : {
-            "description" : "跟踪调试输出日志"
+            "description" : "plus.console.*"
         },
         "Device" : {
-            "description" : "访问设备信息"
+            "description" : "plus.device.*"
         },
         "Downloader" : {
-            "description" : "文件下载管理"
+            "description" : "plus.downloader.*"
         },
         "Events" : {
-            "description" : "应用扩展事件"
+            "description" : "Events"
         },
         "File" : {
-            "description" : "访问本地文件系统"
+            "description" : "plus.io.*"
         },
         "Gallery" : {
-            "description" : "访问系统相册"
-        },
-        "Geolocation" : {
-            "description" : "访问位置信息"
+            "description" : "plus.gallery.*"
         },
         "Invocation" : {
-            "description" : "使用Native.js能力"
+            "description" : "plus.android.*"
         },
         "Orientation" : {
-            "description" : "访问方向感应器"
+            "description" : "plus.orientation.*"
         },
         "Proximity" : {
-            "description" : "访问距离感应器"
+            "description" : "plus.proximity.*"
         },
         "Storage" : {
-            "description" : "管理应用本地数据"
+            "description" : "plus.storage.*"
         },
         "Uploader" : {
-            "description" : "管理文件上传任务"
+            "description" : "plus.uploader.*"
         },
         "Runtime" : {
-            "description" : "访问运行期环境"
+            "description" : "plus.runtime.*"
         },
         "XMLHttpRequest" : {
-            "description" : "跨域网络访问"
+            "description" : "plus.net.*"
         },
         "Zip" : {
-            "description" : "文件压缩与解压缩"
+            "description" : "plus.zip.*"
         },
         "Barcode" : {
-            "description" : "管理二维码扫描插件"
+            "description" : "plus.barcode.*"
         },
         "Webview" : {
-            "description" : "窗口管理"
+            "description" : "plus.webview.*"
         },
         "NativeUI" : {
-            "description" : "原生UI控件"
+            "description" : "plus.nativeUI.*"
         },
         "Navigator" : {
-            "description" : "浏览器信息"
+            "description" : "plus.navigator.*"
         },
         "NativeObj" : {
-            "description" : "原生对象"
+            "description" : "plus.nativeObj.*"
+        },
+        "Stream" : {
+            "description" : "plus.stream.*"
+        },
+        "Confusion" : {
+            "description" : "Resource confusion"
         }
     },
     "plus" : {
         "splashscreen" : {
-            "autoclose" : true, /*是否自动关闭程序启动界面,true表示应用加载应用入口页面后自动关闭;false则需调plus.navigator.closeSplashscreen()关闭*/
-            "waiting" : false /*是否在程序启动界面显示等待雪花,true表示显示,false表示不显示。*/
-        },
-        "popGesture" : "close", /*设置应用默认侧滑返回关闭Webview窗口,"none"为无侧滑返回功能,"hide"为侧滑隐藏Webview窗口。参考http://ask.dcloud.net.cn/article/102*/
-        "runmode" : "normal", /*应用的首次启动运行模式,可取liberate或normal,liberate模式在第一次启动时将解压应用资源(Android平台File API才可正常访问_www目录)*/
-        "signature" : "Sk9JTiBVUyBtYWlsdG86aHIyMDEzQGRjbG91ZC5pbw==", /*可选,保留给应用签名,暂不使用*/
+            "autoclose" : true,
+            "waiting" : false
+        },
+        "popGesture" : "close",
+        "runmode" : "normal",
+        "signature" : "Sk9JTiBVUyBtYWlsdG86aHIyMDEzQGRjbG91ZC5pbw==",
+        "screenOrientation" : [ "portrait-primary" ],
+        "adid" : "124656220705",
+        "channel" : "",
         "distribute" : {
-            "apple" : {
-                "appid" : "", /*iOS应用标识,苹果开发网站申请的appid,如io.dcloud.HelloH5*/
-                "mobileprovision" : "", /*iOS应用打包配置文件*/
-                "password" : "", /*iOS应用打包个人证书导入密码*/
-                "p12" : "", /*iOS应用打包个人证书,打包配置文件关联的个人证书*/
-                "devices" : "universal", /*iOS应用支持的设备类型,可取值iphone/ipad/universal*/
-                "frameworks" : [], /*调用Native.js调用原生Objective-c API需要引用的FrameWork,如需调用GameCenter,则添加"GameKit.framework"*/
-                "idfa" : false
-            },
-            "google" : {
-                "packagename" : "", /*Android应用包名,如io.dcloud.HelloH5*/
-                "keystore" : "", /*Android应用打包使用的密钥库文件*/
-                "password" : "", /*Android应用打包使用密钥库中证书的密码*/
-                "aliasname" : "", /*Android应用打包使用密钥库中证书的别名*/
-                "permissions" : [
-                    "<uses-feature android:name=\"android.hardware.camera\"/>",
-                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
-                    "<uses-permission android:name=\"android.permission.INTERNET\"/>",
-                    "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
-                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
-                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
-                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
-                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
-                    "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
-                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
-                ]
-            },
-            /*使用Native.js调用原生安卓API需要使用到的系统权限*/
-            "orientation" : [ "portrait-primary", "portrait-secondary" ], /*应用支持的方向,portrait-primary:竖屏正方向;portrait-secondary:竖屏反方向;landscape-primary:横屏正方向;landscape-secondary:横屏反方向*/
             "icons" : {
+                "android" : {
+                    "hdpi" : "unpackage/res/icons/72x72.png",
+                    "xhdpi" : "unpackage/res/icons/96x96.png",
+                    "xxhdpi" : "unpackage/res/icons/144x144.png",
+                    "xxxhdpi" : "unpackage/res/icons/192x192.png"
+                },
                 "ios" : {
-                    "prerendered" : true, /*应用图标是否已经高亮处理,在iOS6及以下设备上有效*/
-                    "auto" : "", /*应用图标,分辨率:512x512,用于自动生成各种尺寸程序图标*/
-                    "iphone" : {
-                        "normal" : "", /*iPhone3/3GS程序图标,分辨率:57x57*/
-                        "retina" : "", /*iPhone4程序图标,分辨率:114x114*/
-                        "retina7" : "", /*iPhone4S/5/6程序图标,分辨率:120x120*/
-                        "retina8" : "", /*iPhone6 Plus程序图标,分辨率:180x180*/
-                        "spotlight-normal" : "", /*iPhone3/3GS Spotlight搜索程序图标,分辨率:29x29*/
-                        "spotlight-retina" : "", /*iPhone4 Spotlight搜索程序图标,分辨率:58x58*/
-                        "spotlight-retina7" : "", /*iPhone4S/5/6 Spotlight搜索程序图标,分辨率:80x80*/
-                        "settings-normal" : "", /*iPhone4设置页面程序图标,分辨率:29x29*/
-                        "settings-retina" : "", /*iPhone4S/5/6设置页面程序图标,分辨率:58x58*/
-                        "settings-retina8" : "", /*iPhone6Plus设置页面程序图标,分辨率:87x87*/
-                        "app@2x" : "unpackage/res/icons/120x120.png",
-                        "app@3x" : "unpackage/res/icons/180x180.png",
-                        "notification@2x" : "unpackage/res/icons/40x40.png",
-                        "notification@3x" : "unpackage/res/icons/60x60.png",
-                        "settings@2x" : "unpackage/res/icons/58x58.png",
-                        "settings@3x" : "unpackage/res/icons/87x87.png",
-                        "spotlight@2x" : "unpackage/res/icons/80x80.png",
-                        "spotlight@3x" : "unpackage/res/icons/120x120.png"
-                    },
+                    "appstore" : "unpackage/res/icons/1024x1024.png",
                     "ipad" : {
-                        "normal" : "", /*iPad普通屏幕程序图标,分辨率:72x72*/
-                        "retina" : "", /*iPad高分屏程序图标,分辨率:144x144*/
-                        "normal7" : "", /*iPad iOS7程序图标,分辨率:76x76*/
-                        "retina7" : "", /*iPad iOS7高分屏程序图标,分辨率:152x152*/
-                        "spotlight-normal" : "", /*iPad Spotlight搜索程序图标,分辨率:50x50*/
-                        "spotlight-retina" : "", /*iPad高分屏Spotlight搜索程序图标,分辨率:100x100*/
-                        "spotlight-normal7" : "", /*iPad iOS7 Spotlight搜索程序图标,分辨率:40x40*/
-                        "spotlight-retina7" : "", /*iPad iOS7高分屏Spotlight搜索程序图标,分辨率:80x80*/
-                        "settings-normal" : "", /*iPad设置页面程序图标,分辨率:29x29*/
-                        "settings-retina" : "", /*iPad高分屏设置页面程序图标,分辨率:58x58*/
                         "app" : "unpackage/res/icons/76x76.png",
                         "app@2x" : "unpackage/res/icons/152x152.png",
                         "notification" : "unpackage/res/icons/20x20.png",
@@ -181,52 +124,25 @@
                         "spotlight" : "unpackage/res/icons/40x40.png",
                         "spotlight@2x" : "unpackage/res/icons/80x80.png"
                     },
-                    "appstore" : "unpackage/res/icons/1024x1024.png"
-                },
-                "android" : {
-                    "mdpi" : "unpackage/res/icons/48x48.png", /*普通屏程序图标,分辨率:48x48*/
-                    "ldpi" : "unpackage/res/icons/48x48.png", /*大屏程序图标,分辨率:48x48*/
-                    "hdpi" : "unpackage/res/icons/72x72.png", /*高分屏程序图标,分辨率:72x72*/
-                    "xhdpi" : "unpackage/res/icons/96x96.png", /*720P高分屏程序图标,分辨率:96x96*/
-                    "xxhdpi" : "unpackage/res/icons/144x144.png", /*1080P 高分屏程序图标,分辨率:144x144*/
-                    "xxxhdpi" : "unpackage/res/icons/192x192.png"
-                }
-            },
-            "splashscreen" : {
-                "ios" : {
                     "iphone" : {
-                        "default" : "", /*iPhone3启动图片选,分辨率:320x480*/
-                        "retina35" : "", /*3.5英寸设备(iPhone4)启动图片,分辨率:640x960*/
-                        "retina40" : "", /*4.0 英寸设备(iPhone5/iPhone5s)启动图片,分辨率:640x1136*/
-                        "retina47" : "", /*4.7 英寸设备(iPhone6)启动图片,分辨率:750x1334*/
-                        "retina55" : "", /*5.5 英寸设备(iPhone6 Plus)启动图片,分辨率:1242x2208*/
-                        "retina55l" : "" /*5.5 英寸设备(iPhone6 Plus)横屏启动图片,分辨率:2208x1242*/
-                    },
-                    "ipad" : {
-                        "portrait" : "", /*iPad竖屏启动图片,分辨率:768x1004*/
-                        "portrait-retina" : "", /*iPad高分屏竖屏图片,分辨率:1536x2008*/
-                        "landscape" : "", /*iPad横屏启动图片,分辨率:1024x748*/
-                        "landscape-retina" : "", /*iPad高分屏横屏启动图片,分辨率:2048x1496*/
-                        "portrait7" : "", /*iPad iOS7竖屏启动图片,分辨率:768x1024*/
-                        "portrait-retina7" : "", /*iPad iOS7高分屏竖屏图片,分辨率:1536x2048*/
-                        "landscape7" : "", /*iPad iOS7横屏启动图片,分辨率:1024x768*/
-                        "landscape-retina7" : "" /*iPad iOS7高分屏横屏启动图片,分辨率:2048x1536*/
+                        "app@2x" : "unpackage/res/icons/120x120.png",
+                        "app@3x" : "unpackage/res/icons/180x180.png",
+                        "notification@2x" : "unpackage/res/icons/40x40.png",
+                        "notification@3x" : "unpackage/res/icons/60x60.png",
+                        "settings@2x" : "unpackage/res/icons/58x58.png",
+                        "settings@3x" : "unpackage/res/icons/87x87.png",
+                        "spotlight@2x" : "unpackage/res/icons/80x80.png",
+                        "spotlight@3x" : "unpackage/res/icons/120x120.png"
                     }
-                },
-                "android" : {
-                    "mdpi" : "", /*普通屏启动图片,分辨率:240x282*/
-                    "ldpi" : "", /*大屏启动图片,分辨率:320x442*/
-                    "hdpi" : "", /*高分屏启动图片,分辨率:480x762*/
-                    "xhdpi" : "", /*720P高分屏启动图片,分辨率:720x1242*/
-                    "xxhdpi" : "" /*1080P高分屏启动图片,分辨率:1080x1882*/
                 }
             },
             "plugins" : {
-                "speech" : {},
                 "ad" : {}
+            },
+            "apple" : {
+                "idfa" : true
             }
-        },
-        "screenOrientation" : [ "portrait-primary" ]
+        }
     },
     "fullscreen" : true,
     "screenOrientation" : [ "portrait-primary" ]

BIN
releases/胜代06191318.apk


+ 0 - 247
remote.html

@@ -1,247 +0,0 @@
-<!DOCTYPE html>
-<html>
-
-	<head>
-		<meta charset="utf-8">
-		<title>SIMC 终端控制系统</title>
-		<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
-		<meta name="apple-mobile-web-app-capable" content="yes">
-		<meta name="apple-mobile-web-app-status-bar-style" content="black">
-		<!--标准mui.css-->
-		<link rel="stylesheet" href="css/mui.min.css">
-		<!--App自定义的css-->
-		<link rel="stylesheet" type="text/css" href="css/app.css" />
-		<link rel="stylesheet" type="text/css" href="css/iconfont.css" />
-		<style>
-			.mui-content-padded{
-			  	padding: 10px 0 10px 0;
-			  }
-			.mui-col{  
-				padding-right: 4px; 
-				display: inline-block;  
-				padding: 2px 5px;
-			}  
-			.mui-btn-royal{
-					background-color: rgba(141, 157, 199, 0.5);
-					border:1px solid rgba(141, 157, 199, 0.5)
-			}
-			.active {
-				background-color: #d4d4d4;
-				color:white;
-			}
-			.up{
-				background: #0087c5 url(img/top.svg) no-repeat 50% 10%;
-			}
-			.down{
-				background: #0087c5 url(img/bottom.svg) no-repeat 50% 10%;
-			}
-			.shan{
-				width: 0; 
-				height: 0; 
-				border:100px solid cornflowerblue;
-				border-right: 100px solid greenyellow; 
-				border-left:  100px solid greenyellow; 
-				border-radius: 50%;
-				transform: rotate(-90deg)
-			}
-			.contents{
-				width: 260px;height: 260px;position: relative;margin:80px 0 auto 30px;
-			   /* box-shadow: 0px 0px 110px #2e3342 inset,0px 0px 5px #2e3342; */
-			}
-			.quartercircle{
-				position:absolute;width: 130px;height: 130px;-webkit-border-radius: 130px 0 0 0;
-			}
-			.divLeft{
-				top: 25%;left: -10%; transform:rotate(-45deg);background-color: #546f7a ;
-			}
-			.divTop{
-				top: -10%;left: 25%; transform:rotate(45deg);background-color: #546f7a ;
-			}
-			.divRight{
-				top: 25%;left: 60%;transform:rotate(135deg);background-color: #546f7a ;
-			}
-			.divBottom{
-				top: 60%;left: 25%;transform:rotate(-135deg);background-color: #546f7a ;
-			}
-			.circle{
-			  width:40%;height:40%;position: absolute;z-index: 100;top:0%;left:0%;bottom:0;right: 0;margin:auto;border-radius: 100%;background-color: #546f7a;text-align: center;
-				  border: 2px solid #2e3342;
-				  color:#fff
-			}
-			.circle span{
-				display: block;width: 100%;height: 100%;line-height: 130px;font-size: 24px;
-				margin: -13px auto;
-				text-align: center;
-			}
-			.quartercircle a{
-				position: absolute;width: 100%;height: 100%;
-				background: #888888;
-				bottom: 0;
-				right: 0;
-				transform:rotate(-45deg);
-			}
-			.quartercircle a:hover{
-				background: #8BFF7C;
-				bottom: 0;
-				right: 0;
-			}
-			.divBottom:active{
-				background: #6641e2;
-			}
-			.divTop:active{
-				background: #6641e2;
-			}
-			.divLeft:active{
-				background: #6641e2;
-			}
-			.divRight:active{
-				background: #6641e2;
-			}
-			.circle:active{
-				background: #6641e2;
-			}
-			#ok:active{
-				background: #546f7a;
-			}
-			.div {
-				width: 100px;
-				height: 100px;
-				text-align: center;
-				margin-top:10px;
-				background:  url(img/stop.png) no-repeat 50% 10%;
-			}	
-			.circle {
-				border-radius: 50%;
-			}
-			* { touch-action: none; }
-		</style>
-	</head>
-	<body style="background-image: url(img/bg.png);">
-		<div id="title" style="height: 4%;text-align: center;padding-top: 10px;padding-bottom: 5px;background: url(img/title_bg.png) no-repeat 0 17px;background-size:100%;">
-			<a style="color: #FFFFFF;font-size: 20px;">华力西曼克</a>
-		</div>
-		<div class="mui-content-padded" style="margin-top: 0px;">
-			<div class="mui-row" id="goods" style="margin-right: 0;height: auto;">
-				<div class="mui-col mui-col-xs-12" style="height: 50px;">
-					<div class="mui-col mui-col-xs-4"></div>
-					<div class="mui-col mui-col-xs-4"></div>
-				</div>
-				<style>
-					.mui-icon-undo{
-					font-size: 50px;
-				}
-				</style>
-				<div class="mui-col mui-col-xs-12" style="position:relative;height:400px">
-					<div class="mui-col mui-col-xs-2" style=" position:absolute; left:0px; top:10px;">
-						<button type="button" class="mui-btn mui-btn-royal mui-btn-block" id="right">升</button>
-					</div>
-					<div class="mui-col mui-col-xs-2" style=" position:absolute; right:0px; top:10px;">
-						<button type="button" class="mui-btn mui-btn-royal mui-btn-block" id="right">降</button>
-					</div>
-					<div class="contents">
-						<div id="divLeft" class="quartercircle divLeft" style="border-right:2px solid #2e3342;border-bottom:2px solid #2e3342;">
-							<i class="iconfont iconfont iconbtn-ico" style="position:absolute; right:50px; bottom:50px;"></i>
-						</div>
-						<div id="divTop" class="quartercircle divTop" style="border-right:2px solid #2e3342;border-bottom:2px solid #2e3342;">
-							<i class="iconfont iconfont iconbtn-ico" style="position:absolute; right:50px; bottom:50px;"></i>
-						</div>
-						<div id="divRight" class="quartercircle divRight" style="border-right:2px solid #2e3342;border-bottom:2px solid #2e3342;">
-							<i class="iconfont iconfont iconbtn-ico" style="position:absolute; right:50px; bottom:50px;"></i>
-						</div>
-						<div id="divBottom" class="quartercircle divBottom" style="border-right:2px solid #2e3342;border-bottom:2px solid #2e3342;">
-							<i class="iconfont iconfont iconbtn-ico" style="position:absolute; right:50px; bottom:50px;"></i>
-						</div>
-						<div class="circle"><span>取消</span></div>
-					</div>
-					<div class="mui-col mui-col-xs-2" style=" position:absolute; left:0px; bottom:0;">
-						<button type="button" class="mui-btn mui-btn-royal mui-btn-block" id="left">左旋</button>
-					</div>
-					<div class="mui-col mui-col-xs-2" style=" position:absolute; right:0px; bottom:0;">
-						<button type="button" class="mui-btn mui-btn-royal mui-btn-block" id="left">右旋</button>
-					</div>
-				</div>
-			</div>
-		</div>
-		<div style="margin-top: 13px;height: 15px;background: url(img/bottom_bg.png) no-repeat -25px 0;"></div>
-	</body>
-	<script src="js/jquery.min.js"></script>
-	<script src="js/mui.min.js"></script>
-	<script>
-		var windowHeight = $(window).height(),
-		$body = $("body");
-		$("body").on("touchstart", function(e) {
-			e.preventDefault();
-			startX = e.originalEvent.changedTouches[0].pageX,
-			startY = e.originalEvent.changedTouches[0].pageY;
-		});
-		$("body").on("touchmove", function(e) {
-			e.preventDefault();
-			moveEndX = e.originalEvent.changedTouches[0].pageX,
-			moveEndY = e.originalEvent.changedTouches[0].pageY,
-			X = moveEndX - startX,
-			Y = moveEndY - startY;
-	    if ( Math.abs(X) > Math.abs(Y) && X > 0 ) {
-	     window.location.href = "internet.html"; //right
-	    }
-	    else if ( Math.abs(X) > Math.abs(Y) && X < 0 ) {
-	       window.location.href = "details.html";  //left
-	    }
-	    else if ( Math.abs(Y) > Math.abs(X) && Y > 0) {
-	      return //bottom
-	    }
-	    else if ( Math.abs(Y) > Math.abs(X) && Y < 0 ) {
-	      return //top
-	    }
-	    else{
-	      return
-	    }
-		});
-		
-		
-		$(function() {
-			var h = window.screen.availHeight - 135;
-			g = document.getElementById("goods");
-			g.style.height = h + "px";
-			var w = $("#stop").innerWidth();
-			$("#stop").css('height', w);
-		})
-		$("#returns").click(function() {
-			window.location.href = "index.html";
-		})
-		//console.log("ontouchstart" in window);
-
-		
-		//方向键左
-		$("#divLeft").click(function() {
-			console.log("divLeft")
-		})
-		//方向键上
-		$("#divTop").click(function() {
-			console.log("divTop")
-		})
-		//方向键右
-		$("#divRight").click(function() {
-			console.log("divRight")
-		})
-		//方向键下
-		$("#divBottom").click(function() {
-			console.log("divBottom")
-		})
-		//取消
-		$("#cancel").click(function() {
-			history.go(0)
-		})
-		//左旋
-		$("#left").click(function() {
-			console.log("left")
-		})
-		//右旋
-		$("#right").click(function() {
-			console.log("right")
-		})
-		//急停
-		$("#stop").click(function() {
-			console.log("stop")
-		})
-		</script>
-</html>

+ 53 - 82
settings.html

@@ -12,25 +12,30 @@
 		<!--App自定义的css-->
 		<link rel="stylesheet" type="text/css" href="css/app.css" />
 		<style>
-			.mui-content-padded{
-			  	padding: 2px 0;
+			.mui-content-padded {
+				padding: 2px 0;
 			}
-			.mui-row{
-				
+
+			.mui-row {
+
 				font-size: 20px;
 			}
-			.mui-col-xs-3{
+
+			.mui-col-xs-3 {
 				padding: 2px 2px;
 			}
+
 			.mui-content {
 				padding: 10px 10px 0 10px;
 				background-color: rgba(255, 255, 255, 0);
 			}
-			.mui-input-group{
+
+			.mui-input-group {
 				background-color: rgba(255, 255, 255, 0);
 				color: #FFFFFF;
 			}
-			.mui-content-padded a {				
+
+			.mui-content-padded a {
 				width: 50px;
 				height: 50px;
 				display: inline-block;
@@ -40,14 +45,16 @@
 				border-radius: 25px;
 				background-clip: padding-box;
 			}
+
 			.mui-content-padded a .mui-icon {
 				margin-top: 12px;
 			}
 		</style>
 	</head>
 	<body style="background-image: url(img/bg.png);">
-		<div id="title" style="height: 4%;text-align: center;padding-top: 10px;padding-bottom: 5px;background: url(img/title_bg.png) no-repeat 0 17px;background-size:100%;">
-			<a style="color: #FFFFFF;font-size: 20px;">华力西曼克</a>
+		<div id="title"
+			style="height: 4%;text-align: center;padding-top: 10px;padding-bottom: 5px;background: url(img/title_bg.png) no-repeat 0 17px;background-size:100%;">
+			<a style="color: #FFFFFF;font-size: 20px;">森之洋</a>
 		</div>
 		<div class="mui-content">
 			<div class="mui-content-padded" style="height:auto;min-height: 459px;">
@@ -64,20 +71,11 @@
 						<label>mapID</label>
 						<input type="text" id="mapid" placeholder="请填写mapID" value="">
 					</div>
-					<!----><div class="mui-input-row">
-						<div class="mui-input-row mui-radio">
-							<label>服务器模式</label>
-							<input type="radio" name="models" id="service" value="service" onclick="Models()"/>
-						</div>
-					</div>
 					<div class="mui-input-row">
-						<div class="mui-input-row mui-radio">
-							<label>客户端模式</label>
-							<input type="radio" name="models" id="client" value="client" onclick="Models()"/>
-						</div>
+						<label onclick="tips()">工位</label>
+						<input type="text" id="site" placeholder="请填写工位" value="">
 					</div>
 					<div class="mui-button-row">
-						<!-- <button id="update" type="button" class="mui-btn mui-btn-success">应用更新</button>&nbsp;&nbsp; -->
 						<button id="default" type="button" class="mui-btn mui-btn-default">默认值</button>&nbsp;&nbsp;
 						<button id="confirm" type="button" class="mui-btn mui-btn-primary">确认</button>&nbsp;&nbsp;
 						<button id="cancel" type="button" class="mui-btn mui-btn-danger">取消</button>
@@ -109,33 +107,31 @@
 			if (localStorage.getItem("mapid") != "" || localStorage.getItem("mapid") != null) {
 				$("#mapid").val(localStorage.getItem("mapid"));
 			}
-			if (localStorage.getItem("workmode") == "client") {
-				 $("#client").prop("checked",true);
-				 localStorage.setItem("workmode","client");
-			} else {
-				 $("#service").prop("checked",true);
-				 localStorage.setItem("workmode","service");
+			if (localStorage.getItem("site") != "" || localStorage.getItem("site") != null) {
+				$("#site").val(localStorage.getItem("site"));
 			}
 		})
-		function Models() {
-			var radios = document.getElementsByName("models");
-			var value = 0;
-			for(var i=0;i<radios.length;i++){
-				if(radios[i].checked == true){
-					value = radios[i].value;
-				}
-			}
-			localStorage.setItem("workmode",value);
-		}
+		 function tips() {
+			mui.toast("工位只能填写上下箱工位、清扫工位、下料工位")
+		 }
+		document.getElementById('site').onchange = function () {
+			var site = $("#site").val();
+			if(site !== "上下箱工位" &&site !== "清扫工位" &&site !== "下料工位"){
+				mui.toast("工位只能填写上下箱工位、清扫工位、下料工位");
+				$("#site").val("");
+			}
+		};
 		$("#default").click(function() {
 			if (localStorage.getItem("defaultip") == "" || localStorage.getItem("defaultip") == null) {
-				defaultip = "192.168.66.4";
+				defaultip = "192.168.111.240";
 			} else {
 				defaultip = localStorage.getItem("defaultip");
 			}
 			$("#ip").val(defaultip);
 			$("#agvid").val("1");
 			$("#mapid").val("2020032608412704");
+			$("#site").val("上下箱工位");
+
 		})
 		$("#cancel").click(function() {
 			window.location.href = "index.html";
@@ -143,7 +139,14 @@
 		$("#confirm").click(function() {
 			var ip = $("#ip").val();
 			var agvid = $("#agvid").val();
+
 			var mapid = $("#mapid").val();
+			var site = $("#site").val();
+			if(site !== "上下箱工位" &&site !== "清扫工位" &&site !== "下料工位"){
+				mui.toast("工位只能填写上下箱工位、清扫工位、下料工位");
+				$("#site").val("");
+				return
+			}
 			if (ip != "" && ip != null) {
 				localStorage.setItem("ip", ip);
 				localStorage.setItem("defaultip", ip);
@@ -154,53 +157,21 @@
 			if (mapid != "" && mapid != null) {
 				localStorage.setItem("mapid", mapid);
 			}
+			if (site != "" && site != null) {
+				localStorage.setItem("site", site);
+			}
+			if (site === "上下箱工位") {
+				AcceptId = 1;
+			}
+			if (site === "清扫工位") {
+				AcceptId = 2;
+			}
+			if (site === "下料工位") {
+				AcceptId = 3;
+			}
+			localStorage.setItem("AcceptId", AcceptId);
 			window.location.href = "index.html";
 		})
 		mui.init()
-		$("#update").click(function() {
-			dowload()
-		})
-		function dowload() {
-			var options = {
-				method: "GET"
-			};
-			dtask = plus.downloader.createDownload("http://192.168.1.230:3000/wcs/agv-summoner/raw/master/releases/agv-summoner.apk", options);
-			dtask.addEventListener("statechanged", function(task, status) {
-				switch (task.state) {
-					case 1: // 开始
-						mui.toast("开始下载...")
-						break;
-					case 2: // 已连接到服务器
-						mui.toast("连接到服务器...")
-						break;
-					case 3: // 已接收到数据
-						//alert(task.downloadedSize)    // 已下载文件大小
-						//alert(task.totalSize)    // 文件大小
-						break;
-					case 4: // 下载完成
-						mui.toast("下载完成!")
-						//console.log(task.totalSize)
-						plus.io.resolveLocalFileSystemURL(task.filename, function(entry) {
-							if (entry.isFile) {
-								plus.runtime.install(entry.toLocalURL(), {}, function() {
-									alert("安装成功")
-									entry.remove();//删除文件
-								}, function() {
-									alert("安装失败")
-								});
-							} else {
-								// 不存在
-								alert("文件不存在")
-							}
-							  //alert(entry.toLocalURL()+"")  // 显示下载的文件存储绝对地址
-							 //console.log(entry.toLocalURL())     //绝对地址                                      
-						}, function(e) {});
-						//alert(task.filename)  // 显示下载好的文件名称
-						//console.log("task.filename", task.filename)
-						break;
-				}
-			});
-			dtask.start();
-		}
 	</script>
 </html>

+ 0 - 202
tasklist.html

@@ -1,202 +0,0 @@
-<!DOCTYPE html>
-<html>
-	<head>
-		<meta charset="utf-8">
-		<title>华力机电SIMANC</title>
-		<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
-		<meta name="apple-mobile-web-app-capable" content="yes">
-		<meta name="apple-mobile-web-app-status-bar-style" content="black">
-		<!--标准mui.css-->
-		<link rel="stylesheet" type="text/css" href="css/mui.min.css">
-		<!--App自定义的css-->
-		<link rel="stylesheet" type="text/css" href="css/app.css" />
-		<style>
-			.mui-col {
-				display: inline-block;
-				padding: 2px;
-			}
-			/*滚动条样式*/
-			::-webkit-scrollbar {
-				width: 0;
-				background-color: #F5F5F5;
-			}
-			/*定义滚动条轨道 内阴影+圆角*/
-			::-webkit-scrollbar-track {
-				background-color: #2e3342;
-			}
-			/*定义滑块 内阴影+圆角*/
-			::-webkit-scrollbar-thumb {
-				background-color: #2e3342;
-			}
-			.mui-btn-royal {
-				background-color: rgba(141, 157, 199, 0.5);
-				border: 1px solid rgba(141, 157, 199, 0.5)
-			}
-			span.mui-icon {
-				font-size: 14px;
-				color: #007aff;
-				margin-left: -15px;
-				padding-right: 10px;
-			}
-			.mui-content {
-				padding: 2px;
-			}
-			.mui-content-padded {
-				margin: 2px;
-			}
-			.grid-task>div {
-				display: grid;
-				grid-template-columns: 60px 1fr 1fr 100px;
-				grid-gap: 1px;
-			}
-			.grid-task>div>span {
-				height: 30px;
-				line-height: 30px;
-				color: #fff;
-				font-size: 15px;
-				background-color: rgba(141, 157, 199, 0.5);
-				border: 1px solid rgba(14, 48, 61, 0.5);
-				padding: 0px 12px 2px 12px;
-			}		
-			.mui-content a {
-				color: #8F8F94;
-			}
-			.mui-content a.active {
-				color: #007aff;
-			}
-			.mui-content-padded a {
-				margin: 3px;
-				width: 50px;
-				height: 50px;
-				display: inline-block;
-				text-align: center;
-				background-color: #103543;
-				border: 1px solid #FFF;
-				border-radius: 25px;
-				background-clip: padding-box;
-			}
-			.mui-content-padded a .mui-icon {
-				margin-top: 8px;
-				margin-left: 5px;
-			}
-			.quxiao{
-				width:25px;
-				height:25px;
-				border:0px;
-				color:#FFF;
-				background-color: #dd524d;
-				margin-left: 18px;
-				margin-top:2px;
-				padding: 5px;
-			}
-		</style>
-	</head>
-	<body style="background: url(img/bg.png) no-repeat 0px 0px">
-		<div class="mui-content" style="background: #2e3342;background-color: rgba(255,255,255,0)">
-			<div class="mui-content-padded">
-				<div class="mui-row">
-					<div class="mui-col mui-col-xs-12">
-						<div id="title" style="text-align: center;padding-bottom: 5px;background: url(img/title_bg.png) no-repeat 0 7px;background-size:100%;">
-							<span style="color: #FFFFFF;font-size: 20px;">华力西曼克</a>
-						</div>
-					</div>
-					<div class="mui-col mui-col-xs-12">
-						<div class="row-row">
-							<div class="cell">
-								<div class="grid-task" style="color: #fff">
-									<div><span>编号</span><span>源站点</span><span>目的站点</span><span>任务状态</span></div>
-								</div>
-								<div class="grid-task" id="grid-task" style="min-height:455px;max-height:455px;overflow-y:auto;">
-								</div>
-							</div>
-						</div>
-					</div>
-					<div class="mui-col mui-col-xs-12" style="text-align:center;">
-						<a href="index.html">
-							<span class="mui-icon mui-icon-arrowleft" style="font-size: 30px;color: #9fb3b4;"></span>
-						</a>
-					</div>
-				</div>
-			</div>
-		</div>
-	</body>
-	<script src="js/jquery.min.js"></script>
-	<script src="js/mui.min.js"></script>
-	<script src="js/msg.js"></script>
-	<script type="text/javascript">
-		var $btlist = $('#btlist');
-		$(function() {
-			//获取保存的ip、agvid等
-			ip = localStorage.getItem("ip") + ":8888";
-			url = "http://" + localStorage.getItem("ip") + ":8888";
-			agvid = parseInt(localStorage.getItem("agvid"))
-			//获取状态
-			
-			workmode = localStorage.getItem("workmode");
-			if (workmode == "service") {
-				startLog();
-				setInterval(function() {
-					if (ws.readyState === 3) {
-						startLog();
-					}
-				}, 1000);
-				GetTransTask(agvid, function (d) {
-					showTaskGrid("#grid-task", d.data, agvid);
-				});
-			}
-		})
-		function GetTransTask(agvid, callback) {
-		    $.post(url + "/task/get", {
-		        id: agvid,
-		    }, callback);
-		}
-		
-		//新建ws连接,获取agv的状态
-		let ws;
-		function startLog() {
-			ws = new WebSocket("ws://" + ip + "/ws/msg/" + agvid);
-			ws.onmessage = function(e) {
-				let result;
-				let msg = JSON.parse(e.data);
-				switch (msg.type) {
-					case msgTypeStatus:
-						if (agvid == msg.id) {
-							GetTransTask(agvid, function (d) {
-								showTaskGrid("#grid-task", d.data, agvid);
-							});
-						}
-						break;
-					default:
-				}
-			};
-		}
-		function showTaskGrid(select, vList,agvid) {
-			let lines = "";
-			for (let i in vList) {
-				let task = vList[i];
-				 if(i === "0"){
-					lines += '<div><span>'+ i + '</span><span>'+ task.src + '</span><span>'+ task.dst + '</span><span>执行中</span></div>'
-				}else{
-					lines += '<div>'+
-						'<span>'+ i + '</span>'+
-						'<span>'+ task.src + '</span>'+
-						'<span>'+ task.dst + '</span>'+
-						'<span>'+
-							'等待<button class="quxiao"><lable onclick="deleteTask('+task.id+', '+agvid+')">&times;</lable></button></span>'+
-						'</div>'
-				}
-			}
-			$(select).html(lines);
-		}
-		function GetTransTask(agvid, callback) {
-		    $.post(url + "/task/get", {
-		        id: agvid,
-		    }, callback);
-		}
-		function deleteTask(taskid, agvid) {
-		    $.post(url + "/task/done", {"id": agvid, "taskid": taskid}, function (d) {
-				history.go(0)
-		    })
-		}
-	</script>
-</html>

BIN
unpackage/release/apk/H5BB7CBC9_1012154648.apk


BIN
unpackage/res/icons/1024x1024.png


BIN
unpackage/res/icons/120x120.png


BIN
unpackage/res/icons/144x144.png


BIN
unpackage/res/icons/152x152.png


BIN
unpackage/res/icons/167x167.png


BIN
unpackage/res/icons/180x180.png


BIN
unpackage/res/icons/192x192.png


BIN
unpackage/res/icons/20x20.png


BIN
unpackage/res/icons/29x29.png


BIN
unpackage/res/icons/40x40.png


BIN
unpackage/res/icons/48x48.png


BIN
unpackage/res/icons/58x58.png


BIN
unpackage/res/icons/60x60.png


BIN
unpackage/res/icons/72x72.png


BIN
unpackage/res/icons/76x76.png


BIN
unpackage/res/icons/80x80.png


BIN
unpackage/res/icons/87x87.png


BIN
unpackage/res/icons/96x96.png


BIN
unpackage/res/icons/lo.png


Некоторые файлы не были показаны из-за большого количества измененных файлов