Parcourir la source

后台功能重写。

xian il y a 5 ans
Parent
commit
7d1e1f1c58
100 fichiers modifiés avec 18495 ajouts et 0 suppressions
  1. 13 0
      watero-wechat-web/src/main/webapp/common/lib/DD_belatedPNG_0.0.8a-min.js
  2. 57 0
      watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/WdatePicker.js
  3. 5 0
      watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/calendar.js
  4. 14 0
      watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/lang/en.js
  5. 14 0
      watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/lang/zh-cn.js
  6. 14 0
      watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/lang/zh-tw.js
  7. 9 0
      watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/skin/WdatePicker.css
  8. BIN
      watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/skin/datePicker.gif
  9. 250 0
      watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/skin/default/datepicker.css
  10. BIN
      watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/skin/default/img.gif
  11. 339 0
      watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/skin/twoer/datepicker-dev.css
  12. 1 0
      watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/skin/twoer/datepicker.css
  13. BIN
      watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/skin/twoer/img.gif
  14. BIN
      watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/skin/twoer/img.png
  15. BIN
      watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/skin/whyGreen/bg.jpg
  16. 256 0
      watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/skin/whyGreen/datepicker.css
  17. BIN
      watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/skin/whyGreen/img.gif
  18. 1334 0
      watero-wechat-web/src/main/webapp/common/lib/Validform/5.3.2/Validform.js
  19. 12 0
      watero-wechat-web/src/main/webapp/common/lib/Validform/5.3.2/Validform.min.js
  20. 1 0
      watero-wechat-web/src/main/webapp/common/lib/Validform/5.3.2/passwordStrength-min.js
  21. BIN
      watero-wechat-web/src/main/webapp/common/lib/expressInstall.swf
  22. 8 0
      watero-wechat-web/src/main/webapp/common/lib/html5shiv.js
  23. 256 0
      watero-wechat-web/src/main/webapp/common/lib/md5/md5.js
  24. 204 0
      watero-wechat-web/src/main/webapp/common/lib/mui/css/iconfont.css
  25. 5 0
      watero-wechat-web/src/main/webapp/common/lib/mui/css/mui.min.css
  26. 7 0
      watero-wechat-web/src/main/webapp/common/lib/mui/css/mui.picker.min.css
  27. 64 0
      watero-wechat-web/src/main/webapp/common/lib/mui/css/mui.poppicker.css
  28. BIN
      watero-wechat-web/src/main/webapp/common/lib/mui/fonts/iconfont.ttf
  29. BIN
      watero-wechat-web/src/main/webapp/common/lib/mui/fonts/mui.ttf
  30. 11553 0
      watero-wechat-web/src/main/webapp/common/lib/mui/js/city.data-3.js
  31. 9 0
      watero-wechat-web/src/main/webapp/common/lib/mui/js/mui.min.js
  32. 7 0
      watero-wechat-web/src/main/webapp/common/lib/mui/js/mui.picker.min.js
  33. 628 0
      watero-wechat-web/src/main/webapp/common/lib/mui/js/mui.view.js
  34. 74 0
      watero-wechat-web/src/main/webapp/common/lib/nprogress/0.2.0/nprogress.css
  35. 476 0
      watero-wechat-web/src/main/webapp/common/lib/nprogress/0.2.0/nprogress.js
  36. 1 0
      watero-wechat-web/src/main/webapp/common/lib/nprogress/0.2.0/nprogress.min.css
  37. 1 0
      watero-wechat-web/src/main/webapp/common/lib/nprogress/0.2.0/nprogress.min.js
  38. 6 0
      watero-wechat-web/src/main/webapp/common/lib/respond.min.js
  39. 1 0
      watero-wechat-web/src/main/webapp/common/lib/select2/select2.min.css
  40. 3 0
      watero-wechat-web/src/main/webapp/common/lib/select2/select2.min.js
  41. 3 0
      watero-wechat-web/src/main/webapp/common/lib/select2/zh-CN.js
  42. 490 0
      watero-wechat-web/src/main/webapp/common/lib/squid.js
  43. 4 0
      watero-wechat-web/src/main/webapp/common/lib/swfobject.js
  44. BIN
      watero-wechat-web/src/main/webapp/common/lib/zTree/img/zTreeStandard.png
  45. 103 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/API_cn.html
  46. 102 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/API_en.html
  47. 592 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/api.js
  48. 219 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/common.css
  49. 23 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/common_ie6.css
  50. BIN
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/img/apiMenu.gif
  51. BIN
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/img/apiMenu.png
  52. BIN
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/img/background.jpg
  53. BIN
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/img/chinese.png
  54. BIN
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/img/close.png
  55. BIN
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/img/contact-bg.png
  56. BIN
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/img/english.png
  57. BIN
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/img/header-bg.png
  58. BIN
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/img/lightbulb.png
  59. BIN
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/img/overlay_arrow.gif
  60. BIN
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/img/overlay_arrow.png
  61. BIN
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/img/overlay_bg.png
  62. BIN
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/img/overlay_close_IE6.gif
  63. BIN
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/img/zTreeStandard.gif
  64. BIN
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/img/zTreeStandard.png
  65. 18 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/jquery-1.6.2.min.js
  66. 70 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/jquery.ztree.core-3.5.js
  67. 49 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/zTreeStyleForApi.css
  68. 13 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/fn.zTree._z.html
  69. 28 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/fn.zTree.destroy.html
  70. 24 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/fn.zTree.getZTreeObj.html
  71. 74 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/fn.zTree.init.html
  72. 39 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.async.autoParam.html
  73. 29 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.async.contentType.html
  74. 45 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.async.dataFilter.html
  75. 29 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.async.dataType.html
  76. 30 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.async.enable.html
  77. 40 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.async.otherParam.html
  78. 30 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.async.type.html
  79. 50 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.async.url.html
  80. 35 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.beforeAsync.html
  81. 34 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.beforeCheck.html
  82. 49 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.beforeClick.html
  83. 34 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.beforeCollapse.html
  84. 36 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.beforeDblClick.html
  85. 39 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.beforeDrag.html
  86. 37 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.beforeDragOpen.html
  87. 48 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.beforeDrop.html
  88. 38 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.beforeEditName.html
  89. 34 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.beforeExpand.html
  90. 35 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.beforeMouseDown.html
  91. 35 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.beforeMouseUp.html
  92. 37 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.beforeRemove.html
  93. 46 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.beforeRename.html
  94. 35 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.beforeRightClick.html
  95. 42 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.onAsyncError.html
  96. 38 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.onAsyncSuccess.html
  97. 34 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.onCheck.html
  98. 49 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.onClick.html
  99. 34 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.onCollapse.html
  100. 0 0
      watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.onDblClick.html

Fichier diff supprimé car celui-ci est trop grand
+ 13 - 0
watero-wechat-web/src/main/webapp/common/lib/DD_belatedPNG_0.0.8a-min.js


Fichier diff supprimé car celui-ci est trop grand
+ 57 - 0
watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/WdatePicker.js


Fichier diff supprimé car celui-ci est trop grand
+ 5 - 0
watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/calendar.js


+ 14 - 0
watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/lang/en.js

@@ -0,0 +1,14 @@
+var $lang={
+errAlertMsg: "Invalid date or the date out of range,redo or not?",
+aWeekStr: ["wk", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
+aLongWeekStr:["wk","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],
+aMonStr: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+aLongMonStr: ["January","February","March","April","May","June","July","August","September","October","November","December"],
+clearStr: "Clear",
+todayStr: "Today",
+okStr: "OK",
+updateStr: "OK",
+timeStr: "Time",
+quickStr: "Quick Selection",
+err_1: 'MinDate Cannot be bigger than MaxDate!'
+}

+ 14 - 0
watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/lang/zh-cn.js

@@ -0,0 +1,14 @@
+var $lang={
+errAlertMsg: "\u4E0D\u5408\u6CD5\u7684\u65E5\u671F\u683C\u5F0F\u6216\u8005\u65E5\u671F\u8D85\u51FA\u9650\u5B9A\u8303\u56F4,\u9700\u8981\u64A4\u9500\u5417?",
+aWeekStr: ["\u5468","\u65E5","\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D"],
+aLongWeekStr:["\u5468","\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"],
+aMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00","\u5341\u4E8C"],
+aLongMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"],
+clearStr: "\u6E05\u7A7A",
+todayStr: "\u4ECA\u5929",
+okStr: "\u786E\u5B9A",
+updateStr: "\u786E\u5B9A",
+timeStr: "\u65F6\u95F4",
+quickStr: "\u5FEB\u901F\u9009\u62E9", 
+err_1: '\u6700\u5C0F\u65E5\u671F\u4E0D\u80FD\u5927\u4E8E\u6700\u5927\u65E5\u671F!'
+}

+ 14 - 0
watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/lang/zh-tw.js

@@ -0,0 +1,14 @@
+var $lang={
+errAlertMsg: "\u4E0D\u5408\u6CD5\u7684\u65E5\u671F\u683C\u5F0F\u6216\u8005\u65E5\u671F\u8D85\u51FA\u9650\u5B9A\u7BC4\u570D,\u9700\u8981\u64A4\u92B7\u55CE?",
+aWeekStr: ["\u5468","\u65E5","\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D"],
+aLongWeekStr:["\u5468","\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"],
+aMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00","\u5341\u4E8C"],
+aLongMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"],
+clearStr: "\u6E05\u7A7A",
+todayStr: "\u4ECA\u5929",
+okStr: "\u78BA\u5B9A",
+updateStr: "\u78BA\u5B9A",
+timeStr: "\u6642\u9593",
+quickStr: "\u5FEB\u901F\u9078\u64C7",
+err_1: '\u6700\u5C0F\u65E5\u671F\u4E0D\u80FD\u5927\u65BC\u6700\u5927\u65E5\u671F!'
+}

+ 9 - 0
watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/skin/WdatePicker.css

@@ -0,0 +1,9 @@
+.Wdate{
+	background:#fff url(datePicker.gif) no-repeat right;
+}
+.Wdate::-ms-clear{display:none;}
+
+.WdateFmtErr{
+	font-weight:bold;
+	color:red;
+}

BIN
watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/skin/datePicker.gif


+ 250 - 0
watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/skin/default/datepicker.css

@@ -0,0 +1,250 @@
+/* 
+ * My97 DatePicker 4.8
+ */
+
+.WdateDiv{
+	width:180px;
+	background-color:#FFFFFF;
+	border:#bbb 1px solid;
+	padding:2px;
+}
+
+.WdateDiv2{
+	width:360px;
+}
+.WdateDiv *{font-size:9pt;}
+
+.WdateDiv .NavImg a{
+	display:block;
+	cursor:pointer;
+	height:16px;
+	width:16px;
+}
+
+.WdateDiv .NavImgll a{
+	float:left;
+	background:transparent url(img.gif) no-repeat scroll 0 0;
+}
+.WdateDiv .NavImgl a{
+	float:left;
+	background:transparent url(img.gif) no-repeat scroll -16px 0;
+}
+.WdateDiv .NavImgr a{
+	float:right;
+	background:transparent url(img.gif) no-repeat scroll -32px 0;
+}
+.WdateDiv .NavImgrr a{
+	float:right;
+	background:transparent url(img.gif) no-repeat scroll -48px 0;
+}
+
+.WdateDiv #dpTitle{
+	height:24px;
+	margin-bottom:2px;
+	padding:1px;
+}
+
+.WdateDiv .yminput{
+	margin-top:2px;
+	text-align:center;
+	height:20px;
+	border:0px;
+	width:50px;
+	cursor:pointer;		
+}
+
+.WdateDiv .yminputfocus{
+	margin-top:2px;
+	text-align:center;
+	font-weight:bold;
+	height:20px;
+	color:blue;
+	border:#ccc 1px solid;
+	width:50px;
+}
+
+.WdateDiv .menuSel{
+	z-index:1;
+	position:absolute;
+	background-color:#FFFFFF;	
+	border:#ddd 1px solid;
+	display:none;
+}
+
+.WdateDiv .menu{
+	cursor:pointer;
+	background-color:#fff;
+}
+
+.WdateDiv .menuOn{
+	cursor:pointer;
+	background-color:#BEEBEE;
+}
+
+.WdateDiv .invalidMenu{
+	color:#aaa;
+}
+
+.WdateDiv .YMenu{
+	margin-top:20px;
+	
+}
+
+.WdateDiv .MMenu{
+	margin-top:20px;
+	*width:62px;
+}
+
+.WdateDiv .hhMenu{
+	margin-top:-90px; 
+	margin-left:26px;
+}
+
+.WdateDiv .mmMenu{
+	margin-top:-46px; 
+	margin-left:26px;
+}
+
+.WdateDiv .ssMenu{
+	margin-top:-24px; 
+	margin-left:26px;
+}
+
+ .WdateDiv .Wweek {
+ 	text-align:center;
+	background:#DAF3F5;
+	border-right:#ddd 1px solid;
+ }
+
+.WdateDiv .MTitle{
+	background-color:#222;
+	color:#fff
+}
+.WdateDiv .WdayTable2{
+	border-collapse:collapse;
+	border:#c5d9e8 1px solid;
+}
+.WdateDiv .WdayTable2 table{
+	border:0;
+}
+
+.WdateDiv .WdayTable{
+	line-height:20px;
+	border:#c5d9e8 1px solid;
+}
+.WdateDiv .WdayTable td{
+	text-align:center;
+}
+
+.WdateDiv .Wday{
+	cursor:pointer;
+}
+
+.WdateDiv .WdayOn{
+	cursor:pointer;
+	background-color:#222;
+	color:#fff
+}
+
+.WdateDiv .Wwday{
+	cursor:pointer;
+	color:#FF2F2F;
+}
+
+.WdateDiv .WwdayOn{
+	cursor:pointer;
+	color:#fff;
+	background-color:#222;
+}
+.WdateDiv .Wtoday{
+	cursor:pointer;
+	color:blue;
+}
+.WdateDiv .Wselday{
+	background-color:#222;
+	color:#fff
+}
+.WdateDiv .WspecialDay{
+	background-color:#66F4DF;
+}
+
+.WdateDiv .WotherDay{ 
+	cursor:pointer;
+	color:#428BCA;	
+}
+
+.WdateDiv .WotherDayOn{ 
+	cursor:pointer;
+	background-color:#222;
+	color:#fff	
+}
+
+.WdateDiv .WinvalidDay{
+	color:#aaa;
+}
+
+.WdateDiv #dpTime{
+	float:left;
+	margin-top:3px;
+	margin-right:30px;
+}
+
+.WdateDiv #dpTime #dpTimeStr{
+	margin-left:1px;
+}
+
+.WdateDiv #dpTime input{
+	width:18px;
+	height:20px;
+	text-align:center;
+	border:#ccc 1px solid;	
+}
+
+.WdateDiv #dpTime .tB{
+	border-right:0px;
+}
+
+.WdateDiv #dpTime .tE{
+	border-left:0;
+	border-right:0;
+}
+
+.WdateDiv #dpTime .tm{
+	width:7px;
+	border-left:0;
+	border-right:0;
+}
+
+.WdateDiv #dpTime #dpTimeUp{
+	height:10px;
+	width:13px;
+	border:0px;
+	background:url(img.gif) no-repeat -32px -16px;
+}
+
+.WdateDiv #dpTime #dpTimeDown{
+	height:10px;
+	width:13px;
+	border:0px;
+    background:url(img.gif) no-repeat -48px -16px;
+}
+
+ .WdateDiv #dpQS {
+ 	float:left;
+	margin-right:3px;
+	margin-top:3px;
+	background:url(img.gif) no-repeat 0px -16px;
+	width:20px;
+	height:20px;
+	cursor:pointer;
+ }
+.WdateDiv #dpControl {
+	text-align:right;	
+}
+.WdateDiv .dpButton{ 
+	height:20px;
+	width:45px;
+	border:#ccc 1px solid;
+	margin-top:2px;
+	margin-right:1px;
+}

BIN
watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/skin/default/img.gif


+ 339 - 0
watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/skin/twoer/datepicker-dev.css

@@ -0,0 +1,339 @@
+/* 
+ * My97 DatePicker 4.8 
+ * auther : zhangkun , hejianting(design)
+ * email : zhangkun_net@hotmail.com
+ * date : 2012-05-25
+ */ 
+.WdateDiv
+{
+	position:relative;
+	padding:5px;
+	width:180px;
+	*width:190px;
+	font-size:12px;
+	color:#333;
+	border:solid 1px #DEDEDE;
+	background-color:#F2F0F1;
+}
+
+.WdateDiv2
+{
+	width:360px;
+}
+
+.WdateDiv .NavImg a,.WdateDiv .yminput,.WdateDiv .yminputfocus,.WdateDiv #dpQS 
+{
+	background:url(img.gif) no-repeat;
+}
+
+.WdateDiv .NavImg a
+{
+	float:left;
+	width:16px;
+	height:16px;
+	cursor:pointer;
+}
+.WdateDiv .NavImgll a
+{
+	background-position:0px 5px;
+}
+.WdateDiv .NavImgl a
+{
+	background-position:0px -10px;
+}
+.WdateDiv .NavImgr a
+{
+	background-position:0px -25px;
+	float:right;
+}
+.WdateDiv .NavImgrr a
+{
+	background-position:0px -40px;
+	float:right;
+}
+
+.WdateDiv #dpTitle
+{
+	padding:3px 0px 0px 0px;
+	line-height:0px;
+	height:20px;
+	*height:23;
+}
+
+.WdateDiv .yminput,.WdateDiv .yminputfocus
+{
+	margin-left:3px;
+	width:50px;
+	height:20px;
+	line-height:16px;
+	border:solid 1px #F2F0F1;
+	cursor:pointer;
+	background-position:35px -68px;
+}
+
+.WdateDiv .yminputfocus
+{
+	background-color:#fff;
+	border:solid 1px #D8D8D8;
+}
+
+.WdateDiv .menuSel{
+	z-index:1;
+	position:absolute;
+	background-color:#FFFFFF;
+	border:#A3C6C8 1px solid;
+	display:none;
+}
+
+.WdateDiv .menu
+{
+	background:#fff;
+}
+.WdateDiv .menuOn
+{
+	color:#fff;
+	background:#64A3F3;
+}
+
+.WdateDiv .invalidMenu{
+	color:#aaa;
+}
+
+.WdateDiv .MMenu,.WdateDiv .YMenu
+{
+	padding:2px;
+	margin-top:20px;
+	margin-left:-1px;
+	width:68px;
+	border:solid 1px #D9D9D9;
+}
+.WdateDiv .MMenu table,.WdateDiv .YMenu table
+{
+	width:100%;
+}
+.WdateDiv .MMenu table td,.WdateDiv .YMenu table td
+{
+	padding:0px;
+	line-height:20px;
+	text-align:center;
+	font-size:12px;
+	cursor: pointer;
+}
+
+.WdateDiv .Wweek {
+ 	text-align:center;
+	background:#DAF3F5;
+	border-right:#BDEBEE 1px solid;
+ }
+
+.WdateDiv td
+{
+	padding:1px;
+	line-height:20px;
+	font-size:12px;
+	color:#999999;
+	background:#fff;
+	cursor:pointer;
+}
+.WdateDiv .MTitle td
+{
+	line-height:24px;
+	color:#7D7D7D;
+	background:#F2F0F1;
+	cursor: default;
+}
+
+.WdateDiv .WdayTable2
+{
+	border-collapse:collapse;
+	border:#808080 1px solid;
+}
+.WdateDiv .WdayTable2 table
+{
+	border:0;
+}
+
+.WdateDiv .WdayTable{
+	line-height:20px;	
+	color:#13777e;
+	background-color:#edfbfb;
+}
+.WdateDiv .WdayTable td{
+	text-align:center;
+}
+
+.WdateDiv .Wday
+{
+	color:#323232;
+}
+
+.WdateDiv .WdayOn
+{
+	color:#fff;
+	background-color:#65A2F3;	
+}
+
+.WdateDiv .Wwday
+{
+	color:#65A4F3;
+}
+
+.WdateDiv .WwdayOn
+{
+	color:#fff;
+	background-color:#65A2F3;	
+}
+.WdateDiv .Wtoday
+{
+	color:#FF6D10;
+	background:#E0EDFE;
+}
+.WdateDiv .Wselday
+{
+	color:#fff;
+	background-color:#65A2F3;	
+}
+.WdateDiv .WspecialDay{
+	background-color:#66F4DF;
+}
+
+.WdateDiv .WotherDay
+{ 
+	color:#D4D4D4;	
+}
+.WdateDiv .WotherDayOn
+{
+	color:#fff;
+	background-color:#65A2F3;	
+}
+
+.WdateDiv .WinvalidDay{
+	color:#aaa;
+}
+
+.WdateDiv #dpTime
+{
+	position:relative;
+	margin-top:5px;
+}
+
+.WdateDiv #dpTime #dpTimeStr
+{
+	display:inline-block;
+	width:28px;
+	*width:30px;
+	color:#7d7d7d;
+}
+
+.WdateDiv #dpTime input
+{
+	padding:0px;
+	margin:0px;
+	width:25px;
+	height:20px;
+	line-height:20px;
+	text-align:center;
+	color:#333;
+	border:#D9D9D9 1px solid;	
+}
+
+.WdateDiv #dpTime .tm
+{
+	width:7px;
+	border:none;
+	background:#F2F0F1;
+}
+
+.WdateDiv #dpTime #dpTimeUp
+{
+	display:none;
+}
+
+.WdateDiv #dpTime #dpTimeDown
+{
+	display:none;
+}
+
+.WdateDiv #dpQS 
+ {
+ 	float:left;
+	margin-right:3px;
+	margin-top:9px;
+	*margin-top:6px;
+	width:16px;
+	height:16px;
+	cursor:pointer;
+	background-position:0px -90px;
+ }
+.WdateDiv #dpControl 
+{
+	text-align:right;
+	margin-top:3px;
+}
+.WdateDiv .dpButton
+{ 
+	margin-left:2px;
+	line-height:18px;
+	*line-height:16px;
+	width:45px;
+	background-color:#C3C3C3;
+	*background-color:#64A3F3;
+	color:#fff;
+	border:none;
+	cursor: pointer;
+}
+.WdateDiv .dpButton:hover
+{ 
+	background-color:#64A3F3;
+}
+
+.WdateDiv .hhMenu,
+.WdateDiv .mmMenu,
+.WdateDiv .ssMenu
+{
+	position:absolute;
+	padding:3px;
+	font-size:12px;
+	color:#333;
+	border:solid 1px #DEDEDE;
+	background-color:#F2F0F1;
+}
+
+.WdateDiv #dpTime .menu,.WdateDiv #dpTime .menuOn
+{
+	width:18px;
+	height:18px;
+	line-height:18px;
+	text-align:center;
+	background:#fff;
+}
+.WdateDiv #dpTime .menuOn
+{
+	background:#65A2F3;
+}
+
+.WdateDiv #dpTime td
+{
+	background:#F2F0F1;
+}
+
+.WdateDiv .hhMenu
+{
+	top:-87px;
+	left:35px;
+	left:32px\9;
+}
+
+.WdateDiv .mmMenu
+{
+	top:-47px;
+	left:35px;
+	left:32px\9;
+}
+
+.WdateDiv .ssMenu
+{
+	top:-27px;
+	left:35px;
+	left:32px\9;
+}

Fichier diff supprimé car celui-ci est trop grand
+ 1 - 0
watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/skin/twoer/datepicker.css


BIN
watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/skin/twoer/img.gif


BIN
watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/skin/twoer/img.png


BIN
watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/skin/whyGreen/bg.jpg


+ 256 - 0
watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/skin/whyGreen/datepicker.css

@@ -0,0 +1,256 @@
+/* 
+ * My97 DatePicker 4.8 Skin:whyGreen
+ */ 
+.WdateDiv{
+	width:180px;
+	background-color:#fff;
+	border:#C5E1E4 1px solid;
+	padding:2px;
+}
+
+.WdateDiv2{
+	width:360px;
+}
+.WdateDiv *{font-size:9pt;}
+
+.WdateDiv .NavImg a{
+	cursor:pointer;
+	display:block;
+	width:16px;
+	height:16px;
+	margin-top:1px;
+}
+
+.WdateDiv .NavImgll a{
+	float:left;
+	background:url(img.gif) no-repeat;
+}
+.WdateDiv .NavImgl a{
+	float:left;
+	background:url(img.gif) no-repeat -16px 0px;
+}
+.WdateDiv .NavImgr a{
+	float:right;
+	background:url(img.gif) no-repeat -32px 0px;
+}
+.WdateDiv .NavImgrr a{
+	float:right;
+	background:url(img.gif) no-repeat -48px 0px;
+}
+
+.WdateDiv #dpTitle{
+	height:24px;
+	padding:1px;
+	border:#c5d9e8 1px solid;
+	background:url(bg.jpg);
+	margin-bottom:2px;
+}
+
+.WdateDiv .yminput{
+	margin-top:2px;
+	text-align:center;
+	border:0px;
+	height:20px;
+	width:50px;
+	color:#034c50;
+	background-color:transparent;
+	cursor:pointer;
+}
+
+.WdateDiv .yminputfocus{
+	margin-top:2px;
+	text-align:center;
+	border:#939393 1px solid;
+	font-weight:bold;
+	color:#034c50;	
+	height:20px;
+	width:50px;
+}
+
+.WdateDiv .menuSel{
+	z-index:1;
+	position:absolute;
+	background-color:#FFFFFF;
+	border:#A3C6C8 1px solid;
+	display:none;
+}
+
+.WdateDiv .menu{
+	cursor:pointer;
+	background-color:#fff;
+	color:#11777C;
+}
+
+.WdateDiv .menuOn{
+	cursor:pointer;
+	background-color:#BEEBEE;
+}
+
+.WdateDiv .invalidMenu{
+	color:#aaa;
+}
+
+.WdateDiv .YMenu{
+	margin-top:20px;
+}
+
+.WdateDiv .MMenu{
+	margin-top:20px;
+	*width:62px;
+}
+
+.WdateDiv .hhMenu{
+	margin-top:-90px; 
+	margin-left:26px;
+}
+
+.WdateDiv .mmMenu{
+	margin-top:-46px; 
+	margin-left:26px;
+}
+
+.WdateDiv .ssMenu{
+	margin-top:-24px; 
+	margin-left:26px;
+}
+
+ .WdateDiv .Wweek {
+ 	text-align:center;
+	background:#DAF3F5;
+	border-right:#BDEBEE 1px solid;
+ }
+
+.WdateDiv .MTitle{
+	color:#13777e;
+	background-color:#bdebee;
+}
+.WdateDiv .WdayTable2{
+	border-collapse:collapse;
+	border:#BEE9F0 1px solid;
+}
+.WdateDiv .WdayTable2 table{
+	border:0;
+}
+
+.WdateDiv .WdayTable{
+	line-height:20px;	
+	color:#13777e;
+	background-color:#edfbfb;
+	border:#BEE9F0 1px solid;
+}
+.WdateDiv .WdayTable td{
+	text-align:center;
+}
+
+.WdateDiv .Wday{
+	cursor:pointer;
+}
+
+.WdateDiv .WdayOn{
+	cursor:pointer;
+	background-color:#74d2d9 ;
+}
+
+.WdateDiv .Wwday{
+	cursor:pointer;
+	color:#ab1e1e;
+}
+
+.WdateDiv .WwdayOn{
+	cursor:pointer;
+	background-color:#74d2d9;
+}
+.WdateDiv .Wtoday{
+	cursor:pointer;
+	color:blue;
+}
+.WdateDiv .Wselday{
+	background-color:#A7E2E7;
+}
+.WdateDiv .WspecialDay{
+	background-color:#66F4DF;
+}
+
+.WdateDiv .WotherDay{ 
+	cursor:pointer;
+	color:#0099CC;	
+}
+
+.WdateDiv .WotherDayOn{ 
+	cursor:pointer;
+	background-color:#C0EBEF;	
+}
+
+.WdateDiv .WinvalidDay{
+	color:#aaa;
+}
+
+.WdateDiv #dpTime{
+	float:left;
+	margin-top:3px;
+	margin-right:30px;
+}
+
+.WdateDiv #dpTime #dpTimeStr{
+	margin-left:1px;
+	color:#497F7F;
+}
+
+.WdateDiv #dpTime input{
+	height:20px;
+	width:18px;
+	text-align:center;
+	color:#333;
+	border:#61CAD0 1px solid;	
+}
+
+.WdateDiv #dpTime .tB{
+	border-right:0px;
+}
+
+.WdateDiv #dpTime .tE{
+	border-left:0;
+	border-right:0;
+}
+
+.WdateDiv #dpTime .tm{
+	width:7px;
+	border-left:0;
+	border-right:0;
+}
+
+.WdateDiv #dpTime #dpTimeUp{
+	height:10px;
+	width:13px;
+	border:0px;
+	background:url(img.gif) no-repeat -32px -16px;
+}
+
+.WdateDiv #dpTime #dpTimeDown{
+	height:10px;
+	width:13px;
+	border:0px;
+	background:url(img.gif) no-repeat -48px -16px;
+}
+
+ .WdateDiv #dpQS {
+ 	float:left;
+	margin-right:3px;
+	margin-top:3px;
+	background:url(img.gif) no-repeat 0px -16px;
+	width:20px;
+	height:20px;
+	cursor:pointer;
+ }
+.WdateDiv #dpControl {
+	text-align:right;
+	margin-top:3px;
+}
+.WdateDiv .dpButton{ 
+	height:20px;
+	width:45px;
+	margin-top:2px;
+	border:#38B1B9 1px solid;
+	background-color:#CFEBEE;
+	color:#08575B;
+}

BIN
watero-wechat-web/src/main/webapp/common/lib/My97DatePicker/4.8/skin/whyGreen/img.gif


Fichier diff supprimé car celui-ci est trop grand
+ 1334 - 0
watero-wechat-web/src/main/webapp/common/lib/Validform/5.3.2/Validform.js


Fichier diff supprimé car celui-ci est trop grand
+ 12 - 0
watero-wechat-web/src/main/webapp/common/lib/Validform/5.3.2/Validform.min.js


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 0
watero-wechat-web/src/main/webapp/common/lib/Validform/5.3.2/passwordStrength-min.js


BIN
watero-wechat-web/src/main/webapp/common/lib/expressInstall.swf


Fichier diff supprimé car celui-ci est trop grand
+ 8 - 0
watero-wechat-web/src/main/webapp/common/lib/html5shiv.js


+ 256 - 0
watero-wechat-web/src/main/webapp/common/lib/md5/md5.js

@@ -0,0 +1,256 @@
+/*
+ * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
+ * Digest Algorithm, as defined in RFC 1321.
+ * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
+ * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
+ * Distributed under the BSD License
+ * See http://pajhome.org.uk/crypt/md5 for more info.
+ */
+
+/*
+ * Configurable variables. You may need to tweak these to be compatible with
+ * the server-side, but the defaults work in most cases.
+ */
+var hexcase = 0;  /* hex output format. 0 - lowercase; 1 - uppercase        */
+var b64pad  = ""; /* base-64 pad character. "=" for strict RFC compliance   */
+var chrsz   = 8;  /* bits per input character. 8 - ASCII; 16 - Unicode      */
+
+/*
+ * These are the functions you'll usually want to call
+ * They take string arguments and return either hex or base-64 encoded strings
+ */
+function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
+function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}
+function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));}
+function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }
+function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }
+function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); }
+
+/*
+ * Perform a simple self-test to see if the VM is working
+ */
+function md5_vm_test()
+{
+  return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
+}
+
+/*
+ * Calculate the MD5 of an array of little-endian words, and a bit length
+ */
+function core_md5(x, len)
+{
+  /* append padding */
+  x[len >> 5] |= 0x80 << ((len) % 32);
+  x[(((len + 64) >>> 9) << 4) + 14] = len;
+
+  var a =  1732584193;
+  var b = -271733879;
+  var c = -1732584194;
+  var d =  271733878;
+
+  for(var i = 0; i < x.length; i += 16)
+  {
+    var olda = a;
+    var oldb = b;
+    var oldc = c;
+    var oldd = d;
+
+    a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
+    d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
+    c = md5_ff(c, d, a, b, x[i+ 2], 17,  606105819);
+    b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
+    a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
+    d = md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426);
+    c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
+    b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
+    a = md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);
+    d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
+    c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
+    b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
+    a = md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682);
+    d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
+    c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
+    b = md5_ff(b, c, d, a, x[i+15], 22,  1236535329);
+
+    a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
+    d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
+    c = md5_gg(c, d, a, b, x[i+11], 14,  643717713);
+    b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
+    a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
+    d = md5_gg(d, a, b, c, x[i+10], 9 ,  38016083);
+    c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
+    b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
+    a = md5_gg(a, b, c, d, x[i+ 9], 5 ,  568446438);
+    d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
+    c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
+    b = md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501);
+    a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
+    d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
+    c = md5_gg(c, d, a, b, x[i+ 7], 14,  1735328473);
+    b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
+
+    a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
+    d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
+    c = md5_hh(c, d, a, b, x[i+11], 16,  1839030562);
+    b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
+    a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
+    d = md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353);
+    c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
+    b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
+    a = md5_hh(a, b, c, d, x[i+13], 4 ,  681279174);
+    d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
+    c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
+    b = md5_hh(b, c, d, a, x[i+ 6], 23,  76029189);
+    a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
+    d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
+    c = md5_hh(c, d, a, b, x[i+15], 16,  530742520);
+    b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
+
+    a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
+    d = md5_ii(d, a, b, c, x[i+ 7], 10,  1126891415);
+    c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
+    b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
+    a = md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571);
+    d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
+    c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
+    b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
+    a = md5_ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);
+    d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
+    c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
+    b = md5_ii(b, c, d, a, x[i+13], 21,  1309151649);
+    a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
+    d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
+    c = md5_ii(c, d, a, b, x[i+ 2], 15,  718787259);
+    b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
+
+    a = safe_add(a, olda);
+    b = safe_add(b, oldb);
+    c = safe_add(c, oldc);
+    d = safe_add(d, oldd);
+  }
+  return Array(a, b, c, d);
+
+}
+
+/*
+ * These functions implement the four basic operations the algorithm uses.
+ */
+function md5_cmn(q, a, b, x, s, t)
+{
+  return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
+}
+function md5_ff(a, b, c, d, x, s, t)
+{
+  return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
+}
+function md5_gg(a, b, c, d, x, s, t)
+{
+  return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
+}
+function md5_hh(a, b, c, d, x, s, t)
+{
+  return md5_cmn(b ^ c ^ d, a, b, x, s, t);
+}
+function md5_ii(a, b, c, d, x, s, t)
+{
+  return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
+}
+
+/*
+ * Calculate the HMAC-MD5, of a key and some data
+ */
+function core_hmac_md5(key, data)
+{
+  var bkey = str2binl(key);
+  if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz);
+
+  var ipad = Array(16), opad = Array(16);
+  for(var i = 0; i < 16; i++)
+  {
+    ipad[i] = bkey[i] ^ 0x36363636;
+    opad[i] = bkey[i] ^ 0x5C5C5C5C;
+  }
+
+  var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
+  return core_md5(opad.concat(hash), 512 + 128);
+}
+
+/*
+ * Add integers, wrapping at 2^32. This uses 16-bit operations internally
+ * to work around bugs in some JS interpreters.
+ */
+function safe_add(x, y)
+{
+  var lsw = (x & 0xFFFF) + (y & 0xFFFF);
+  var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
+  return (msw << 16) | (lsw & 0xFFFF);
+}
+
+/*
+ * Bitwise rotate a 32-bit number to the left.
+ */
+function bit_rol(num, cnt)
+{
+  return (num << cnt) | (num >>> (32 - cnt));
+}
+
+/*
+ * Convert a string to an array of little-endian words
+ * If chrsz is ASCII, characters >255 have their hi-byte silently ignored.
+ */
+function str2binl(str)
+{
+  var bin = Array();
+  var mask = (1 << chrsz) - 1;
+  for(var i = 0; i < str.length * chrsz; i += chrsz)
+    bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);
+  return bin;
+}
+
+/*
+ * Convert an array of little-endian words to a string
+ */
+function binl2str(bin)
+{
+  var str = "";
+  var mask = (1 << chrsz) - 1;
+  for(var i = 0; i < bin.length * 32; i += chrsz)
+    str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);
+  return str;
+}
+
+/*
+ * Convert an array of little-endian words to a hex string.
+ */
+function binl2hex(binarray)
+{
+  var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
+  var str = "";
+  for(var i = 0; i < binarray.length * 4; i++)
+  {
+    str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
+           hex_tab.charAt((binarray[i>>2] >> ((i%4)*8  )) & 0xF);
+  }
+  return str;
+}
+
+/*
+ * Convert an array of little-endian words to a base-64 string
+ */
+function binl2b64(binarray)
+{
+  var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+  var str = "";
+  for(var i = 0; i < binarray.length * 4; i += 3)
+  {
+    var triplet = (((binarray[i   >> 2] >> 8 * ( i   %4)) & 0xFF) << 16)
+                | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )
+                |  ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);
+    for(var j = 0; j < 4; j++)
+    {
+      if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
+      else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
+    }
+  }
+  return str;
+}

+ 204 - 0
watero-wechat-web/src/main/webapp/common/lib/mui/css/iconfont.css

@@ -0,0 +1,204 @@
+@font-face {font-family: "iconfont";
+  src: url('../fonts/iconfont.ttf?t=1499155740689') format('truetype'); /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
+}
+
+.iconfont {
+	position: relative;
+  font-family:"iconfont" !important;
+  font-size:20px;
+  font-style:normal;
+  -webkit-font-smoothing: antialiased;
+  padding:0;
+}
+
+.icon-duigoukuang:before { content: "\e613"; }
+
+.icon-fenxiang:before { content: "\e614"; }
+
+.icon-guanbi:before { content: "\e615"; }
+
+.icon-baoyou:before { content: "\e616"; }
+
+.icon-dengpao:before { content: "\e7d5"; }
+
+.icon-pinleiyouhui:before { content: "\e6ff"; }
+
+.icon-erweima:before { content: "\e620"; }
+
+.icon-fuxuankuang:before { content: "\e69b"; }
+
+.icon-lvxin_null:before { content: "\e62c"; }
+
+.icon-lvxin_full:before { content: "\e630"; }
+
+.icon-youhuiquan:before { content: "\e619"; }
+
+.icon-yanjing:before { content: "\e649"; }
+
+.icon-shouquan:before { content: "\e617"; }
+
+.icon-type:before { content: "\e6c0"; }
+
+.icon-biyan:before { content: "\e618"; }
+
+.icon-order:before { content: "\e601"; }
+
+.icon-alldingdan:before { content: "\e602"; }
+
+.icon-daifahuo:before { content: "\e603"; }
+
+.icon-daifukuan:before { content: "\e604"; }
+
+.icon-jfshop:before { content: "\e607"; }
+
+.icon-kefu:before { content: "\e608"; }
+
+.icon-liwu:before { content: "\e609"; }
+
+.icon-ordercart:before { content: "\e60b"; }
+
+.icon-orderjiangli:before { content: "\e60c"; }
+
+.icon-orderyouhui:before { content: "\e60d"; }
+
+.icon-orderyue:before { content: "\e60e"; }
+
+.icon-renwu:before { content: "\e60f"; }
+
+.icon-shouhou:before { content: "\e610"; }
+
+.icon-xiaxian:before { content: "\e611"; }
+
+.icon-yifahuo:before { content: "\e612"; }
+
+.icon-lipin:before { content: "\e71d"; }
+
+.icon-dingdan:before { content: "\e663"; }
+
+.icon-dingdan1:before { content: "\e664"; }
+
+.icon-gouwuche:before { content: "\e665"; }
+
+.icon-home:before { content: "\e666"; }
+
+.icon-share:before { content: "\e667"; }
+
+.icon-home1:before { content: "\e668"; }
+
+.icon-vip1:before { content: "\e669"; }
+
+.icon-gouwuche1:before { content: "\e66a"; }
+
+.icon-vip:before { content: "\e66b"; }
+
+.icon-wheel:before { content: "\e66c"; }
+
+.icon-yanse:before { content: "\e66d"; }
+
+.icon-songhuo:before { content: "\e66e"; }
+
+.icon-chekbox:before { content: "\e66f"; }
+
+.icon-jiage:before { content: "\e670"; }
+
+.icon-youhui:before { content: "\e671"; }
+
+.icon-tea:before { content: "\e672"; }
+
+.icon-list:before { content: "\e673"; }
+
+.icon-list-card:before { content: "\e674"; }
+
+.icon-machine:before { content: "\e675"; }
+
+.icon-filter:before { content: "\e676"; }
+
+.icon-shiyong:before { content: "\e677"; }
+
+.icon-tongji:before { content: "\e678"; }
+
+.icon-jinpaivip:before { content: "\e679"; }
+
+.icon-mendian:before { content: "\e67a"; }
+
+.icon-xiaoshou:before { content: "\e67b"; }
+
+.icon-mendianvip:before { content: "\e67c"; }
+
+.icon-quanyizhanshi:before { content: "\e61d"; }
+
+.icon-lease:before { content: "\e67d"; }
+
+.icon-lease1:before { content: "\e67e"; }
+
+.icon-lease2:before { content: "\e67f"; }
+
+.icon-lease3:before { content: "\e680"; }
+
+.icon-lease5:before { content: "\e682"; }
+
+.icon-lease6:before { content: "\e683"; }
+
+.icon-lease7:before { content: "\e684"; }
+
+.icon-lease8:before { content: "\e685"; }
+
+.icon-lease9:before { content: "\e686"; }
+
+.icon-lease10:before { content: "\e687"; }
+
+.icon-lease11:before { content: "\e688"; }
+
+.icon-lease12:before { content: "\e689"; }
+
+.icon-gift:before { content: "\e681"; }
+
+.icon-gift1:before { content: "\e68a"; }
+
+.icon-gift-copy:before { content: "\e71e"; }
+
+.icon-daifahuo1:before { content: "\e68b"; }
+
+.icon-wodequanbao:before { content: "\e68c"; }
+
+.icon-shebeiliebiao:before { content: "\e68d"; }
+
+.icon-zulinxieyi:before { content: "\e68e"; }
+
+.icon-yifahuo1:before { content: "\e68f"; }
+
+.icon-dikouquan:before { content: "\e690"; }
+
+.icon-tiququan:before { content: "\e691"; }
+
+.icon-dingzhi:before { content: "\e692"; }
+
+.icon-tuikuan:before { content: "\e693"; }
+
+.icon-huanhuo:before { content: "\e694"; }
+
+.icon-tuihuo:before { content: "\e695"; }
+
+.icon-xiugaidingdan:before { content: "\e696"; }
+
+.icon-shenhedingdan:before { content: "\e697"; }
+
+.icon-chakandingdan:before { content: "\e698"; }
+
+.icon-lurudingdan:before { content: "\e699"; }
+
+.icon-bianjidingdan:before { content: "\e69a"; }
+
+.icon-shouye:before { content: "\e69c"; }
+
+.icon-tianjiadingdan:before { content: "\e69d"; }
+
+.icon-caiwushenhe:before { content: "\e69e"; }
+
+.icon-liebiao:before { content: "\e69f"; }
+
+.icon-fuwushouye:before { content: "\e6a0"; }
+
+.icon-guanbi1:before { content: "\e6a1"; }
+
+.icon-sousuo:before { content: "\e6a2"; }

Fichier diff supprimé car celui-ci est trop grand
+ 5 - 0
watero-wechat-web/src/main/webapp/common/lib/mui/css/mui.min.css


Fichier diff supprimé car celui-ci est trop grand
+ 7 - 0
watero-wechat-web/src/main/webapp/common/lib/mui/css/mui.picker.min.css


+ 64 - 0
watero-wechat-web/src/main/webapp/common/lib/mui/css/mui.poppicker.css

@@ -0,0 +1,64 @@
+.mui-poppicker {
+	position: fixed;
+	left: 0px;
+	width: 100%;
+	z-index: 999;
+	background-color: #eee;
+	border-top: solid 1px #ccc;
+	box-shadow: 0px -5px 7px 0px rgba(0, 0, 0, 0.1);
+	-webkit-transition: .3s;
+	bottom: 0px;
+	-webkit-transform: translateY(300px);
+}
+.mui-poppicker.mui-active {
+	-webkit-transform: translateY(0px);
+}
+.mui-android-5-1 .mui-poppicker {
+	bottom: -300px;
+	-webkit-transition-property: bottom;
+	-webkit-transform: none;
+}
+.mui-android-5-1 .mui-poppicker.mui-active {
+	bottom: 0px;
+	-webkit-transition-property: bottom;
+	-webkit-transform: none;
+}
+.mui-poppicker-header {
+	padding: 6px;
+	font-size: 14px;
+	color: #888;
+}
+.mui-poppicker-header .mui-btn {
+	font-size: 12px;
+	padding: 5px 10px;
+}
+.mui-poppicker-btn-cancel {
+	float: left;
+}
+.mui-poppicker-btn-ok {
+	float: right;
+}
+.mui-poppicker-clear {
+	clear: both;
+	height: 0px;
+	line-height: 0px;
+	font-size: 0px;
+	overflow: hidden;
+}
+.mui-poppicker-body {
+	position: relative;
+	width: 100%;
+	height: 200px;
+	border-top: solid 1px #ddd;
+	/*-webkit-perspective: 1200px;
+	perspective: 1200px;
+	-webkit-transform-style: preserve-3d;
+	transform-style: preserve-3d;*/
+}
+.mui-poppicker-body .mui-picker {
+	width: 100%;
+	height: 100%;
+	margin: 0px;
+	border: none;
+	float: left;
+}

BIN
watero-wechat-web/src/main/webapp/common/lib/mui/fonts/iconfont.ttf


BIN
watero-wechat-web/src/main/webapp/common/lib/mui/fonts/mui.ttf


Fichier diff supprimé car celui-ci est trop grand
+ 11553 - 0
watero-wechat-web/src/main/webapp/common/lib/mui/js/city.data-3.js


Fichier diff supprimé car celui-ci est trop grand
+ 9 - 0
watero-wechat-web/src/main/webapp/common/lib/mui/js/mui.min.js


Fichier diff supprimé car celui-ci est trop grand
+ 7 - 0
watero-wechat-web/src/main/webapp/common/lib/mui/js/mui.picker.min.js


+ 628 - 0
watero-wechat-web/src/main/webapp/common/lib/mui/js/mui.view.js

@@ -0,0 +1,628 @@
+/**
+ * <div id="app" class="mui-views">
+	<div class="mui-view">
+		<div class="mui-navbar">
+		</div>
+		<div class="mui-pages">
+		</div>
+	</div>
+</div>
+ * @param {Object} $
+ * @param {Object} window
+ */
+(function($, window) {
+	var CLASS_LEFT = $.className('left');
+	var CLASS_CENTER = $.className('center');
+	var CLASS_RIGHT = $.className('right');
+	var CLASS_PAGE = $.className('page');
+	var CLASS_PAGE_LEFT = $.className('page-left');
+	var CLASS_PAGE_CENTER = $.className('page-center');
+	var CLASS_NAVBAR_LEFT = $.className('navbar-left');
+	var CLASS_NAVBAR_CENTER = $.className('navbar-center');
+	var CLASS_PAGE_SHADOW = $.className('page-shadow');
+
+	var CLASS_TRANSITIONING = $.className('transitioning');
+
+	var SELECTOR_LEFT = '.' + CLASS_LEFT;
+	var SELECTOR_CENTER = '.' + CLASS_CENTER;
+	var SELECTOR_RIGHT = '.' + CLASS_RIGHT;
+
+	var SELECTOR_ICON = $.classSelector('.icon');
+	var SELECTOR_NAVBAR = $.classSelector('.navbar');
+	var SELECTOR_NAVBAR_INNER = $.classSelector('.navbar-inner');
+	var SELECTOR_PAGES = $.classSelector('.pages');
+	var SELECTOR_BTN_NAV = $.classSelector('.btn-nav');
+	var SELECTOR_PAGE_LEFT = '.' + CLASS_PAGE_LEFT;
+	var SELECTOR_PAGE_CENTER = '.' + CLASS_PAGE_CENTER;
+	var SELECTOR_NAVBAR_LEFT = '.' + CLASS_NAVBAR_LEFT;
+	var SELECTOR_NAVBAR_CENTER = '.' + CLASS_NAVBAR_CENTER;
+
+	var View = $.Class.extend({
+		init: function(element, options) {
+			this.view = this.element = element;
+			this.options = $.extend({
+				animateNavbar: 'ios', //ios
+				swipeBackPageActiveArea: 30,
+				hardwareAccelerated: true
+			}, options);
+			this.navbars = this.view.querySelector(SELECTOR_NAVBAR);
+			this.pages = this.view.querySelector(SELECTOR_PAGES);
+
+			this.history = []; //history
+
+			this.maxScrollX = this.view.offsetWidth;
+			this.x = this.y = 0;
+			this.translateZ = this.options.hardwareAccelerated ? ' translateZ(0)' : '';
+			this.ratio = 0;
+			this.isBack = true;
+			this.moved = this.dragging = false;
+
+			this.activeNavbar = this.previousNavbar = null;
+			this.activePage = this.previousPage = null;
+
+			this._initPageEventMethod();
+
+			this._initDefaultPage();
+
+			this.navbars && this._initNavBar();
+
+			this.initEvent();
+		},
+		_initPageEventMethod: function() {
+			var self = this;
+			$.each(['onPageBeforeShow', 'onPageShow', 'onPageBeforeBack', 'onPageBack'], function(index, event) {
+				self[event + 'Callbacks'] = {};
+				self[event] = function(page, callback) {
+					var eventCallbacks = event + 'Callbacks';
+					if (!self[eventCallbacks].hasOwnProperty(page)) {
+						self[eventCallbacks][page] = [callback];
+					} else {
+						self[eventCallbacks][page].push(callback);
+					}
+				};
+			});
+		},
+		_initDefaultPage: function() {
+			var defaultPage = document.querySelector(this.options.defaultPage);
+			if (defaultPage) {
+				this._appendPage(defaultPage);
+			} else {
+				throw new Error('defaultPage[' + this.options.defaultPage + '] does not exist');
+			}
+		},
+		initEvent: function() {
+			this.view.addEventListener('click', this);
+			this.view.addEventListener('tap', this);
+			this.pages.addEventListener('drag', this);
+			this.pages.addEventListener('dragend', this);
+			this.pages.addEventListener('webkitTransitionEnd', this);
+		},
+		handleEvent: function(event) {
+			switch (event.type) {
+				case 'click':
+					this._click(event);
+					break;
+				case 'tap':
+					this._tap(event);
+					break;
+				case 'drag':
+					this._drag(event);
+					break;
+				case 'dragend':
+					this._dragend(event);
+					break;
+				case 'webkitTransitionEnd':
+					this._webkitTransitionEnd(event);
+					break;
+			}
+		},
+		shadow: function() {
+			var shadow = document.createElement('div');
+			shadow.className = CLASS_PAGE_SHADOW;
+			return shadow;
+		}(),
+		_removePage: function(page, navbar) {
+			navbar && this._removeNavbar(page, navbar);
+			document.body.appendChild(page);
+			this._cleanPageClass(page);
+		},
+		_prependPage: function(page) {
+			var navbar = page.querySelector(SELECTOR_NAVBAR_INNER);
+			navbar && this._prependNavbar(navbar);
+			page.classList.add(CLASS_PAGE_LEFT);
+			this.pages.insertBefore(page, this.pages.firstElementChild);
+		},
+		_appendPage: function(page) {
+			var navbar = page.querySelector(SELECTOR_NAVBAR_INNER);
+			navbar && this._appendNavbar(navbar);
+			page.classList.add(CLASS_PAGE_CENTER);
+			this.pages.appendChild(page);
+		},
+		_removeNavbar: function(page, navbar) {
+			page.insertBefore(navbar, page.firstElementChild);
+			this._cleanNavbarClass(navbar);
+		},
+		_prependNavbar: function(navbar) {
+			navbar.classList.add(CLASS_NAVBAR_LEFT);
+			this.navbars.insertBefore(navbar, this.navbars.firstElementChild);
+		},
+		_appendNavbar: function(navbar) {
+			navbar.classList.add(CLASS_NAVBAR_CENTER);
+			this.navbars.appendChild(navbar);
+		},
+		_cleanPageClass: function(page) {
+			page.classList.remove(CLASS_PAGE_CENTER);
+			page.classList.remove(CLASS_PAGE_LEFT);
+		},
+		_cleanNavbarClass: function(navbar) {
+			navbar.classList.remove(CLASS_NAVBAR_CENTER);
+			navbar.classList.remove(CLASS_NAVBAR_LEFT);
+		},
+		_tap: function(event) {
+			var target = event.target;
+			for (; target && target !== document; target = target.parentNode) {
+				if (target.tagName === 'A' && target.hash) {
+					var page = document.getElementById(target.hash.replace('#', ''));
+					if (page && page.classList.contains(CLASS_PAGE)) {
+						event.stopPropagation();
+						event.detail.gesture.preventDefault();
+						this.go(target.hash);
+						break;
+					}
+				}
+			}
+		},
+		_click: function(event) {
+			var target = event.target;
+			for (; target && target !== document; target = target.parentNode) {
+				if (target.tagName === 'A' && target.hash) {
+					var page = document.getElementById(target.hash.replace('#', ''));
+					if (page && page.classList.contains(CLASS_PAGE)) {
+						event.preventDefault();
+						break;
+					}
+				}
+			}
+		},
+		_cleanStyle: function(el) {
+			if (el) {
+				el.style.webkitTransform = '';
+				el.style.opacity = '';
+			}
+		},
+		_isAnimateNavbarIOS: function() {
+			return !$.os.android && this.options.animateNavbar === 'ios';
+		},
+		_webkitTransitionEnd: function(event) {
+			this.dragging = this.moved = false;
+			if (this.activePage !== event.target) {
+				return;
+			}
+
+			this.isInTransition = false;
+
+			this.shadow.parentNode === this.activePage && this.activePage.removeChild(this.shadow);
+			this.previousPageClassList.remove(CLASS_TRANSITIONING);
+			this.activePageClassList.remove(CLASS_TRANSITIONING);
+
+			var self = this;
+			if (this._isAnimateNavbarIOS() && this.previousNavElements && this.activeNavElements) {
+				var isBack = this.isBack;
+				$.each(this.previousNavElements, function(i, el) {
+					el.classList.remove(CLASS_TRANSITIONING);
+					isBack && self._cleanStyle(el);
+				});
+				$.each(this.activeNavElements, function(i, el) {
+					el.classList.remove(CLASS_TRANSITIONING);
+					self._cleanStyle(el);
+				});
+				if (this.previousNavBackIcon) {
+					this.previousNavBackIcon.classList.remove(CLASS_TRANSITIONING);
+					isBack && this._cleanStyle(this.previousNavBackIcon);
+				}
+				if (this.activeNavBackIcon) {
+					this.activeNavBackIcon.classList.remove(CLASS_TRANSITIONING);
+					this._cleanStyle(this.activeNavBackIcon);
+				}
+			} else {
+				this.previousNavbar && this.previousNavbar.classList.remove(CLASS_TRANSITIONING);
+				this.activeNavbar && this.activeNavbar.classList.remove(CLASS_TRANSITIONING);
+				this._cleanStyle(this.previousNavbar);
+				this._cleanStyle(this.activeNavbar);
+			}
+
+			this._cleanStyle(this.previousPage);
+			this._cleanStyle(this.activePage);
+
+			if (this.ratio <= 0.5) {
+				return;
+			}
+			if (this.isBack) {
+				this._removePage(this.activePage, this.activeNavbar);
+				this.previousPageClassList.remove(CLASS_PAGE_LEFT);
+				this.previousPageClassList.add(CLASS_PAGE_CENTER);
+				if (this.previousNavbar) {
+					this.previousNavbar.classList.remove(CLASS_NAVBAR_LEFT);
+					this.previousNavbar.classList.add(CLASS_NAVBAR_CENTER);
+				}
+				if (this.history.length > 0) {
+					this._prependPage(this.history.pop());
+				}
+				this.navbars && this._initNavBar();
+				this._trigger('pageBack', this.activePage);
+				this._trigger('pageShow', this.previousPage);
+			} else {
+				this.previousPageClassList.add(CLASS_PAGE_LEFT);
+				this.activePageClassList.add(CLASS_PAGE_CENTER);
+				this._trigger('pageShow', this.activePage);
+			}
+
+
+		},
+		_trigger: function(eventType, page) {
+			var eventCallbacks = 'on' + eventType.charAt(0).toUpperCase() + eventType.slice(1) + 'Callbacks';
+			if (this[eventCallbacks].hasOwnProperty(page.id)) {
+				var callbacks = this[eventCallbacks][page.id];
+				var event = new CustomEvent(eventType, {
+					detail: {
+						page: page
+					},
+					bubbles: true,
+					cancelable: true
+				});
+				for (var len = callbacks.length; len--;) {
+					callbacks[len].call(this, event);
+				}
+			}
+			$.trigger(this.view, eventType, {
+				page: page
+			});
+		},
+		_initPageTransform: function() {
+			this.previousPage = this.pages.querySelector(SELECTOR_PAGE_LEFT);
+			this.activePage = this.pages.querySelector(SELECTOR_PAGE_CENTER);
+			if (this.previousPage && this.activePage) {
+				this.activePage.appendChild(this.shadow);
+				this.previousPageClassList = this.previousPage.classList;
+				this.activePageClassList = this.activePage.classList;
+
+				this.previousPageStyle = this.previousPage.style;
+				this.activePageStyle = this.activePage.style;
+
+				this.previousPageClassList.remove(CLASS_TRANSITIONING);
+				this.activePageClassList.remove(CLASS_TRANSITIONING);
+
+				if (this.navbars) {
+					this.previousNavbar = this.navbars.querySelector(SELECTOR_NAVBAR_LEFT);
+					this.activeNavbar = this.navbars.querySelector(SELECTOR_NAVBAR_CENTER);
+					if (this._isAnimateNavbarIOS() && this.previousNavbar && this.activeNavbar) {
+						this.previousNavElements = this.previousNavbar.querySelectorAll(SELECTOR_LEFT + ',' + SELECTOR_CENTER + ',' + SELECTOR_RIGHT);
+						this.activeNavElements = this.activeNavbar.querySelectorAll(SELECTOR_LEFT + ',' + SELECTOR_CENTER + ',' + SELECTOR_RIGHT);
+						this.previousNavBackIcon = this.previousNavbar.querySelector(SELECTOR_LEFT + SELECTOR_BTN_NAV + ' ' + SELECTOR_ICON);
+						this.activeNavBackIcon = this.activeNavbar.querySelector(SELECTOR_LEFT + SELECTOR_BTN_NAV + ' ' + SELECTOR_ICON);
+					}
+				}
+				this.x = 0;
+				this.dragging = true;
+				return true;
+			}
+			return false;
+		},
+		_initNavBar: function() {
+			if (this._isAnimateNavbarIOS() && this.navbars) {
+				var inners = this.navbars.querySelectorAll(SELECTOR_NAVBAR_INNER);
+				var inner, left, right, center, leftWidth, rightWidth, centerWidth, noLeft, onRight, currLeft, diff, navbarWidth;
+				for (var i = 0, len = inners.length; i < len; i++) {
+					inner = inners[i];
+					left = inner.querySelector(SELECTOR_LEFT);
+					right = inner.querySelector(SELECTOR_RIGHT);
+					center = inner.querySelector(SELECTOR_CENTER);
+					noLeft = !left;
+					noRight = !right;
+					leftWidth = noLeft ? 0 : left.offsetWidth;
+					rightWidth = noRight ? 0 : right.offsetWidth;
+					centerWidth = center ? center.offsetWidth : 0;
+					navbarWidth = this.maxScrollX;
+					onLeft = inner.classList.contains('navbar-left');
+					if (noRight) {
+						currLeft = navbarWidth - centerWidth;
+					}
+					if (noLeft) {
+						currLeft = 0;
+					}
+					if (!noLeft && !noRight) {
+						currLeft = (navbarWidth - rightWidth - centerWidth + leftWidth) / 2;
+					}
+					var requiredLeft = (navbarWidth - centerWidth) / 2;
+					if (navbarWidth - leftWidth - rightWidth > centerWidth) {
+						if (requiredLeft < leftWidth) {
+							requiredLeft = leftWidth;
+						}
+						if (requiredLeft + centerWidth > navbarWidth - rightWidth) {
+							requiredLeft = navbarWidth - rightWidth - centerWidth;
+						}
+						diff = requiredLeft - currLeft;
+					} else {
+						diff = 0;
+					}
+
+					var centerLeft = diff;
+					if (center) {
+						center.style.marginLeft = -leftWidth + 'px';
+						center.mNavbarLeftOffset = -(currLeft + diff) + 30; //这个30是测出来的。后续要实际计算一下
+						center.mNavbarRightOffset = navbarWidth - currLeft - diff - centerWidth;
+					}
+
+					if (onLeft) center.style.webkitTransform = ('translate3d(' + center.mNavbarLeftOffset + 'px, 0, 0)');
+
+					if (!noLeft) {
+						left.mNavbarLeftOffset = -leftWidth;
+						left.mNavbarRightOffset = (navbarWidth - leftWidth) / 2;
+						if (onLeft) left.style.webkitTransform = ('translate3d(' + left[0].mNavbarLeftOffset + 'px, 0, 0)');
+					}
+
+					if (!noRight) {
+						right.mNavbarLeftOffset = -(navbarWidth - rightWidth) / 2;
+						right.mNavbarRightOffset = rightWidth;
+						if (onLeft) right.style.webkitTransform = ('translate3d(' + right[0].mNavbarLeftOffset + 'px, 0, 0)');
+					}
+
+				}
+			}
+		},
+		_drag: function(event) {
+			if (this.isInTransition) {
+				return;
+			}
+			var detail = event.detail;
+			if (!this.dragging) {
+				if (($.gestures.session.firstTouch.center.x - this.view.offsetLeft) < this.options.swipeBackPageActiveArea) {
+					this.isBack = true;
+					this._initPageTransform();
+				}
+			}
+			if (this.dragging) {
+				var deltaX = 0;
+				if (!this.moved) { //start
+					deltaX = detail.deltaX;
+					$.gestures.session.lockDirection = true; //锁定方向
+					$.gestures.session.startDirection = detail.direction;
+				} else { //move
+					deltaX = detail.deltaX - ($.gestures.session.prevTouch && $.gestures.session.prevTouch.deltaX || 0);
+				}
+				var newX = this.x + deltaX;
+				if (newX < 0 || newX > this.maxScrollX) {
+					newX = newX < 0 ? 0 : this.maxScrollX;
+				}
+
+				event.stopPropagation();
+				detail.gesture.preventDefault();
+
+				if (!this.requestAnimationFrame) {
+					this._updateTranslate();
+				}
+
+				this.moved = true;
+				this.x = newX;
+				this.y = 0;
+			}
+		},
+		_dragend: function(event) {
+			if (!this.moved) {
+				return;
+			}
+
+			event.stopPropagation();
+
+			var detail = event.detail;
+
+			this._clearRequestAnimationFrame();
+
+			this._prepareTransition();
+
+			this.ratio = this.x / this.maxScrollX;
+			if (this.ratio === 1 || this.ratio === 0) {
+				$.trigger(this.activePage, 'webkitTransitionEnd');
+				return;
+			}
+			if (this.ratio > 0.5) {
+				this.setTranslate(this.maxScrollX, 0);
+			} else {
+				this._cleanStyle(this.previousPage);
+				this._cleanStyle(this.activePage);
+			}
+		},
+		_prepareTransition: function() {
+			this.isInTransition = true;
+			this.previousPageClassList.add(CLASS_TRANSITIONING);
+			this.activePageClassList.add(CLASS_TRANSITIONING);
+			var self = this;
+			if (this.previousNavbar && this.activeNavbar) {
+				this.previousNavbar.classList.add(CLASS_TRANSITIONING);
+				this.activeNavbar.classList.add(CLASS_TRANSITIONING);
+				if (this._isAnimateNavbarIOS() && this.previousNavElements && this.activeNavElements) {
+					$.each(this.previousNavElements, function(i, el) {
+						el.classList.add(CLASS_TRANSITIONING);
+						self._cleanStyle(el);
+					});
+					$.each(this.activeNavElements, function(i, el) {
+						el.classList.add(CLASS_TRANSITIONING);
+						self._cleanStyle(el);
+					});
+					if (this.previousNavBackIcon) {
+						this._cleanStyle(this.previousNavBackIcon);
+						this.previousNavBackIcon.classList.add(CLASS_TRANSITIONING);
+					}
+					if (this.activeNavBackIcon) {
+						this._cleanStyle(this.activeNavBackIcon);
+						this.activeNavBackIcon.classList.add(CLASS_TRANSITIONING);
+					}
+				}
+			}
+		},
+		_clearRequestAnimationFrame: function() {
+			if (this.requestAnimationFrame) {
+				cancelAnimationFrame(this.requestAnimationFrame);
+				this.requestAnimationFrame = null;
+			}
+		},
+		_getTranslateStr: function(x, y) {
+			if (this.options.hardwareAccelerated) {
+				return 'translate3d(' + x + 'px,' + y + 'px,0px) ' + this.translateZ;
+			}
+			return 'translate(' + x + 'px,' + y + 'px) ';
+		},
+
+		_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();
+			});
+		},
+		_setNavbarTranslate: function(x, y) {
+			var percentage = x / this.maxScrollX;
+			//only for ios
+			if (this._isAnimateNavbarIOS()) {
+				if (this.previousNavElements && this.activeNavElements) {
+					this.animateNavbarByIOS(percentage);
+				}
+			} else { //pop-in
+				this.activeNavbar.style.opacity = 1 - percentage * 1.3;
+				this.previousNavbar.style.opacity = percentage * 1.3 - 0.3;
+			}
+		},
+		animateNavbarByIOS: function(percentage) {
+			var i, len, style, el;
+			for (i = 0, len = this.activeNavElements.length; i < len; i++) {
+				el = this.activeNavElements[i];
+				style = el.style;
+				style.opacity = (1 - percentage * (el.classList.contains(CLASS_LEFT) ? 3.5 : 1.3));
+				if (!el.classList.contains(CLASS_RIGHT)) {
+					var activeNavTranslate = percentage * el.mNavbarRightOffset;
+					el.style.webkitTransform = ('translate3d(' + activeNavTranslate + 'px,0,0)');
+					if (el.classList.contains(CLASS_LEFT) && this.activeNavBackIcon) {
+						this.activeNavBackIcon.style.webkitTransform = ('translate3d(' + -activeNavTranslate + 'px,0,0)');
+					}
+				}
+			}
+			for (i = 0, len = this.previousNavElements.length; i < len; i++) {
+				el = this.previousNavElements[i];
+				style = el.style;
+				style.opacity = percentage * 1.3 - 0.3;
+				if (!el.classList.contains(CLASS_RIGHT)) {
+					var previousNavTranslate = el.mNavbarLeftOffset * (1 - percentage);
+					el.style.webkitTransform = ('translate3d(' + previousNavTranslate + 'px,0,0)');
+					if (el.classList.contains(CLASS_LEFT) && this.previousNavBackIcon) {
+						this.previousNavBackIcon.style.webkitTransform = ('translate3d(' + -previousNavTranslate + 'px,0,0)');
+					}
+				}
+			}
+		},
+		setTranslate: function(x, y) {
+			this.x = x;
+			this.y = y;
+			this.previousPage.style.opacity = 0.9 + 0.1 * x / this.maxScrollX;
+			this.previousPage.style['webkitTransform'] = this._getTranslateStr((x / 6 - this.maxScrollX / 6), y);
+			this.activePage.style['webkitTransform'] = this._getTranslateStr(x, y);
+
+			this.navbars && this._setNavbarTranslate(x, y);
+			this.lastX = this.x;
+			this.lastY = this.y;
+		},
+		canBack: function() {
+			return this.pages.querySelector(SELECTOR_PAGE_LEFT);
+		},
+		back: function() {
+			if (this.isInTransition) {
+				return;
+			}
+			this.isBack = true;
+			this.ratio = 1;
+			if (this._initPageTransform()) {
+				this._trigger('pageBeforeBack', this.activePage);
+				this._trigger('pageBeforeShow', this.previousPage);
+				this._prepareTransition();
+				this.previousPage.offsetHeight;
+				this.activePage.offsetHeight;
+				this.setTranslate(this.maxScrollX, 0);
+			}
+		},
+		go: function(pageSelector) {
+			if (this.isInTransition) {
+				return;
+			}
+			var nextPage = document.querySelector(pageSelector);
+
+			if (nextPage) {
+				var previousPage = this.pages.querySelector(SELECTOR_PAGE_LEFT);
+				var activePage = this.pages.querySelector(SELECTOR_PAGE_CENTER);
+				var previousNavbar;
+				var activeNavbar;
+				if (this.navbars) {
+					previousNavbar = this.navbars.querySelector(SELECTOR_NAVBAR_LEFT);
+					activeNavbar = this.navbars.querySelector(SELECTOR_NAVBAR_CENTER);
+				}
+				if (activeNavbar) {
+					activeNavbar.classList.remove(CLASS_NAVBAR_CENTER);
+					activeNavbar.classList.add(CLASS_NAVBAR_LEFT);
+				}
+
+				if (previousPage) {
+					this._removePage(previousPage, previousNavbar);
+					this.history.push(previousPage); //add to history
+				}
+
+				if (activePage) {
+					activePage.classList.remove(CLASS_PAGE_CENTER);
+					activePage.style.webkitTransform = 'translate3d(0,0,0)';
+					activePage.classList.add(CLASS_PAGE_LEFT);
+				}
+
+
+				nextPage.style.webkitTransform = 'translate3d(100%,0,0)';
+				this._appendPage(nextPage);
+				nextPage.appendChild(this.shadow); //shadow
+				nextPage.offsetHeight; //force
+				this.isBack = false;
+				this.ratio = 1;
+
+				this._initPageTransform();
+
+				this.navbars && this._initNavBar();
+
+				this.navbars && this._setNavbarTranslate(this.maxScrollX, 0);
+				//force
+				this.previousPage.offsetHeight;
+				this.activePage.offsetHeight;
+
+				if (this.navbars) {
+					this.previousNavbar.offsetHeight;
+					this.activeNavbar.offsetHeight;
+				}
+
+				this._trigger('pageBeforeShow', this.activePage);
+				this._prepareTransition();
+				this.setTranslate(0, 0);
+			}
+		}
+
+	});
+
+
+	$.fn.view = function(options) {
+		var self = this[0];
+		var viewApi = null;
+		var id = self.getAttribute('data-view');
+		if (!id) {
+			id = ++$.uuid;
+			$.data[id] = viewApi = new View(self, options);
+			self.setAttribute('data-view', id);
+		} else {
+			viewApi = $.data[id];
+		}
+		return viewApi;
+	}
+})(mui, window);

+ 74 - 0
watero-wechat-web/src/main/webapp/common/lib/nprogress/0.2.0/nprogress.css

@@ -0,0 +1,74 @@
+/* Make clicks pass-through */
+#nprogress {
+  pointer-events: none;
+}
+
+#nprogress .bar {
+  background: #29d;
+
+  position: fixed;
+  z-index: 1031;
+  top: 0;
+  left: 0;
+
+  width: 100%;
+  height: 2px;
+}
+
+/* Fancy blur effect */
+#nprogress .peg {
+  display: block;
+  position: absolute;
+  right: 0px;
+  width: 100px;
+  height: 100%;
+  box-shadow: 0 0 10px #29d, 0 0 5px #29d;
+  opacity: 1.0;
+
+  -webkit-transform: rotate(3deg) translate(0px, -4px);
+      -ms-transform: rotate(3deg) translate(0px, -4px);
+          transform: rotate(3deg) translate(0px, -4px);
+}
+
+/* Remove these to get rid of the spinner */
+#nprogress .spinner {
+  display: block;
+  position: fixed;
+  z-index: 1031;
+  top: 15px;
+  right: 15px;
+}
+
+#nprogress .spinner-icon {
+  width: 18px;
+  height: 18px;
+  box-sizing: border-box;
+
+  border: solid 2px transparent;
+  border-top-color: #29d;
+  border-left-color: #29d;
+  border-radius: 50%;
+
+  -webkit-animation: nprogress-spinner 400ms linear infinite;
+          animation: nprogress-spinner 400ms linear infinite;
+}
+
+.nprogress-custom-parent {
+  overflow: hidden;
+  position: relative;
+}
+
+.nprogress-custom-parent #nprogress .spinner,
+.nprogress-custom-parent #nprogress .bar {
+  position: absolute;
+}
+
+@-webkit-keyframes nprogress-spinner {
+  0%   { -webkit-transform: rotate(0deg); }
+  100% { -webkit-transform: rotate(360deg); }
+}
+@keyframes nprogress-spinner {
+  0%   { transform: rotate(0deg); }
+  100% { transform: rotate(360deg); }
+}
+

+ 476 - 0
watero-wechat-web/src/main/webapp/common/lib/nprogress/0.2.0/nprogress.js

@@ -0,0 +1,476 @@
+/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress
+ * @license MIT */
+
+;(function(root, factory) {
+
+  if (typeof define === 'function' && define.amd) {
+    define(factory);
+  } else if (typeof exports === 'object') {
+    module.exports = factory();
+  } else {
+    root.NProgress = factory();
+  }
+
+})(this, function() {
+  var NProgress = {};
+
+  NProgress.version = '0.2.0';
+
+  var Settings = NProgress.settings = {
+    minimum: 0.08,
+    easing: 'ease',
+    positionUsing: '',
+    speed: 200,
+    trickle: true,
+    trickleRate: 0.02,
+    trickleSpeed: 800,
+    showSpinner: true,
+    barSelector: '[role="bar"]',
+    spinnerSelector: '[role="spinner"]',
+    parent: 'body',
+    template: '<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'
+  };
+
+  /**
+   * Updates configuration.
+   *
+   *     NProgress.configure({
+   *       minimum: 0.1
+   *     });
+   */
+  NProgress.configure = function(options) {
+    var key, value;
+    for (key in options) {
+      value = options[key];
+      if (value !== undefined && options.hasOwnProperty(key)) Settings[key] = value;
+    }
+
+    return this;
+  };
+
+  /**
+   * Last number.
+   */
+
+  NProgress.status = null;
+
+  /**
+   * Sets the progress bar status, where `n` is a number from `0.0` to `1.0`.
+   *
+   *     NProgress.set(0.4);
+   *     NProgress.set(1.0);
+   */
+
+  NProgress.set = function(n) {
+    var started = NProgress.isStarted();
+
+    n = clamp(n, Settings.minimum, 1);
+    NProgress.status = (n === 1 ? null : n);
+
+    var progress = NProgress.render(!started),
+        bar      = progress.querySelector(Settings.barSelector),
+        speed    = Settings.speed,
+        ease     = Settings.easing;
+
+    progress.offsetWidth; /* Repaint */
+
+    queue(function(next) {
+      // Set positionUsing if it hasn't already been set
+      if (Settings.positionUsing === '') Settings.positionUsing = NProgress.getPositioningCSS();
+
+      // Add transition
+      css(bar, barPositionCSS(n, speed, ease));
+
+      if (n === 1) {
+        // Fade out
+        css(progress, { 
+          transition: 'none', 
+          opacity: 1 
+        });
+        progress.offsetWidth; /* Repaint */
+
+        setTimeout(function() {
+          css(progress, { 
+            transition: 'all ' + speed + 'ms linear', 
+            opacity: 0 
+          });
+          setTimeout(function() {
+            NProgress.remove();
+            next();
+          }, speed);
+        }, speed);
+      } else {
+        setTimeout(next, speed);
+      }
+    });
+
+    return this;
+  };
+
+  NProgress.isStarted = function() {
+    return typeof NProgress.status === 'number';
+  };
+
+  /**
+   * Shows the progress bar.
+   * This is the same as setting the status to 0%, except that it doesn't go backwards.
+   *
+   *     NProgress.start();
+   *
+   */
+  NProgress.start = function() {
+    if (!NProgress.status) NProgress.set(0);
+
+    var work = function() {
+      setTimeout(function() {
+        if (!NProgress.status) return;
+        NProgress.trickle();
+        work();
+      }, Settings.trickleSpeed);
+    };
+
+    if (Settings.trickle) work();
+
+    return this;
+  };
+
+  /**
+   * Hides the progress bar.
+   * This is the *sort of* the same as setting the status to 100%, with the
+   * difference being `done()` makes some placebo effect of some realistic motion.
+   *
+   *     NProgress.done();
+   *
+   * If `true` is passed, it will show the progress bar even if its hidden.
+   *
+   *     NProgress.done(true);
+   */
+
+  NProgress.done = function(force) {
+    if (!force && !NProgress.status) return this;
+
+    return NProgress.inc(0.3 + 0.5 * Math.random()).set(1);
+  };
+
+  /**
+   * Increments by a random amount.
+   */
+
+  NProgress.inc = function(amount) {
+    var n = NProgress.status;
+
+    if (!n) {
+      return NProgress.start();
+    } else {
+      if (typeof amount !== 'number') {
+        amount = (1 - n) * clamp(Math.random() * n, 0.1, 0.95);
+      }
+
+      n = clamp(n + amount, 0, 0.994);
+      return NProgress.set(n);
+    }
+  };
+
+  NProgress.trickle = function() {
+    return NProgress.inc(Math.random() * Settings.trickleRate);
+  };
+
+  /**
+   * Waits for all supplied jQuery promises and
+   * increases the progress as the promises resolve.
+   *
+   * @param $promise jQUery Promise
+   */
+  (function() {
+    var initial = 0, current = 0;
+
+    NProgress.promise = function($promise) {
+      if (!$promise || $promise.state() === "resolved") {
+        return this;
+      }
+
+      if (current === 0) {
+        NProgress.start();
+      }
+
+      initial++;
+      current++;
+
+      $promise.always(function() {
+        current--;
+        if (current === 0) {
+            initial = 0;
+            NProgress.done();
+        } else {
+            NProgress.set((initial - current) / initial);
+        }
+      });
+
+      return this;
+    };
+
+  })();
+
+  /**
+   * (Internal) renders the progress bar markup based on the `template`
+   * setting.
+   */
+
+  NProgress.render = function(fromStart) {
+    if (NProgress.isRendered()) return document.getElementById('nprogress');
+
+    addClass(document.documentElement, 'nprogress-busy');
+    
+    var progress = document.createElement('div');
+    progress.id = 'nprogress';
+    progress.innerHTML = Settings.template;
+
+    var bar      = progress.querySelector(Settings.barSelector),
+        perc     = fromStart ? '-100' : toBarPerc(NProgress.status || 0),
+        parent   = document.querySelector(Settings.parent),
+        spinner;
+    
+    css(bar, {
+      transition: 'all 0 linear',
+      transform: 'translate3d(' + perc + '%,0,0)'
+    });
+
+    if (!Settings.showSpinner) {
+      spinner = progress.querySelector(Settings.spinnerSelector);
+      spinner && removeElement(spinner);
+    }
+
+    if (parent != document.body) {
+      addClass(parent, 'nprogress-custom-parent');
+    }
+
+    parent.appendChild(progress);
+    return progress;
+  };
+
+  /**
+   * Removes the element. Opposite of render().
+   */
+
+  NProgress.remove = function() {
+    removeClass(document.documentElement, 'nprogress-busy');
+    removeClass(document.querySelector(Settings.parent), 'nprogress-custom-parent');
+    var progress = document.getElementById('nprogress');
+    progress && removeElement(progress);
+  };
+
+  /**
+   * Checks if the progress bar is rendered.
+   */
+
+  NProgress.isRendered = function() {
+    return !!document.getElementById('nprogress');
+  };
+
+  /**
+   * Determine which positioning CSS rule to use.
+   */
+
+  NProgress.getPositioningCSS = function() {
+    // Sniff on document.body.style
+    var bodyStyle = document.body.style;
+
+    // Sniff prefixes
+    var vendorPrefix = ('WebkitTransform' in bodyStyle) ? 'Webkit' :
+                       ('MozTransform' in bodyStyle) ? 'Moz' :
+                       ('msTransform' in bodyStyle) ? 'ms' :
+                       ('OTransform' in bodyStyle) ? 'O' : '';
+
+    if (vendorPrefix + 'Perspective' in bodyStyle) {
+      // Modern browsers with 3D support, e.g. Webkit, IE10
+      return 'translate3d';
+    } else if (vendorPrefix + 'Transform' in bodyStyle) {
+      // Browsers without 3D support, e.g. IE9
+      return 'translate';
+    } else {
+      // Browsers without translate() support, e.g. IE7-8
+      return 'margin';
+    }
+  };
+
+  /**
+   * Helpers
+   */
+
+  function clamp(n, min, max) {
+    if (n < min) return min;
+    if (n > max) return max;
+    return n;
+  }
+
+  /**
+   * (Internal) converts a percentage (`0..1`) to a bar translateX
+   * percentage (`-100%..0%`).
+   */
+
+  function toBarPerc(n) {
+    return (-1 + n) * 100;
+  }
+
+
+  /**
+   * (Internal) returns the correct CSS for changing the bar's
+   * position given an n percentage, and speed and ease from Settings
+   */
+
+  function barPositionCSS(n, speed, ease) {
+    var barCSS;
+
+    if (Settings.positionUsing === 'translate3d') {
+      barCSS = { transform: 'translate3d('+toBarPerc(n)+'%,0,0)' };
+    } else if (Settings.positionUsing === 'translate') {
+      barCSS = { transform: 'translate('+toBarPerc(n)+'%,0)' };
+    } else {
+      barCSS = { 'margin-left': toBarPerc(n)+'%' };
+    }
+
+    barCSS.transition = 'all '+speed+'ms '+ease;
+
+    return barCSS;
+  }
+
+  /**
+   * (Internal) Queues a function to be executed.
+   */
+
+  var queue = (function() {
+    var pending = [];
+    
+    function next() {
+      var fn = pending.shift();
+      if (fn) {
+        fn(next);
+      }
+    }
+
+    return function(fn) {
+      pending.push(fn);
+      if (pending.length == 1) next();
+    };
+  })();
+
+  /**
+   * (Internal) Applies css properties to an element, similar to the jQuery 
+   * css method.
+   *
+   * While this helper does assist with vendor prefixed property names, it 
+   * does not perform any manipulation of values prior to setting styles.
+   */
+
+  var css = (function() {
+    var cssPrefixes = [ 'Webkit', 'O', 'Moz', 'ms' ],
+        cssProps    = {};
+
+    function camelCase(string) {
+      return string.replace(/^-ms-/, 'ms-').replace(/-([\da-z])/gi, function(match, letter) {
+        return letter.toUpperCase();
+      });
+    }
+
+    function getVendorProp(name) {
+      var style = document.body.style;
+      if (name in style) return name;
+
+      var i = cssPrefixes.length,
+          capName = name.charAt(0).toUpperCase() + name.slice(1),
+          vendorName;
+      while (i--) {
+        vendorName = cssPrefixes[i] + capName;
+        if (vendorName in style) return vendorName;
+      }
+
+      return name;
+    }
+
+    function getStyleProp(name) {
+      name = camelCase(name);
+      return cssProps[name] || (cssProps[name] = getVendorProp(name));
+    }
+
+    function applyCss(element, prop, value) {
+      prop = getStyleProp(prop);
+      element.style[prop] = value;
+    }
+
+    return function(element, properties) {
+      var args = arguments,
+          prop, 
+          value;
+
+      if (args.length == 2) {
+        for (prop in properties) {
+          value = properties[prop];
+          if (value !== undefined && properties.hasOwnProperty(prop)) applyCss(element, prop, value);
+        }
+      } else {
+        applyCss(element, args[1], args[2]);
+      }
+    }
+  })();
+
+  /**
+   * (Internal) Determines if an element or space separated list of class names contains a class name.
+   */
+
+  function hasClass(element, name) {
+    var list = typeof element == 'string' ? element : classList(element);
+    return list.indexOf(' ' + name + ' ') >= 0;
+  }
+
+  /**
+   * (Internal) Adds a class to an element.
+   */
+
+  function addClass(element, name) {
+    var oldList = classList(element),
+        newList = oldList + name;
+
+    if (hasClass(oldList, name)) return; 
+
+    // Trim the opening space.
+    element.className = newList.substring(1);
+  }
+
+  /**
+   * (Internal) Removes a class from an element.
+   */
+
+  function removeClass(element, name) {
+    var oldList = classList(element),
+        newList;
+
+    if (!hasClass(element, name)) return;
+
+    // Replace the class name.
+    newList = oldList.replace(' ' + name + ' ', ' ');
+
+    // Trim the opening and closing spaces.
+    element.className = newList.substring(1, newList.length - 1);
+  }
+
+  /**
+   * (Internal) Gets a space separated list of the class names on the element. 
+   * The list is wrapped with a single space on each end to facilitate finding 
+   * matches within the list.
+   */
+
+  function classList(element) {
+    return (' ' + (element.className || '') + ' ').replace(/\s+/gi, ' ');
+  }
+
+  /**
+   * (Internal) Removes an element from the DOM.
+   */
+
+  function removeElement(element) {
+    element && element.parentNode && element.parentNode.removeChild(element);
+  }
+
+  return NProgress;
+});
+

Fichier diff supprimé car celui-ci est trop grand
+ 1 - 0
watero-wechat-web/src/main/webapp/common/lib/nprogress/0.2.0/nprogress.min.css


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 0
watero-wechat-web/src/main/webapp/common/lib/nprogress/0.2.0/nprogress.min.js


Fichier diff supprimé car celui-ci est trop grand
+ 6 - 0
watero-wechat-web/src/main/webapp/common/lib/respond.min.js


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 0
watero-wechat-web/src/main/webapp/common/lib/select2/select2.min.css


Fichier diff supprimé car celui-ci est trop grand
+ 3 - 0
watero-wechat-web/src/main/webapp/common/lib/select2/select2.min.js


Fichier diff supprimé car celui-ci est trop grand
+ 3 - 0
watero-wechat-web/src/main/webapp/common/lib/select2/zh-CN.js


+ 490 - 0
watero-wechat-web/src/main/webapp/common/lib/squid.js

@@ -0,0 +1,490 @@
+/*!
+ * Squid 总结、积累、收集的一些基础方法
+ * http://www.cnblogs.com/typeof/
+ *
+ * 所有plugins、swing所做的扩展都是基于Squid对象
+ */
+(function(window) {
+    //定义squid
+    var Squid = function() {},
+        slice = Array.prototype.slice,
+        splice = Array.prototype.splice,
+        trim = String.prototype.trim;
+
+    //浅度拷贝
+    Squid.extend = function() {
+        var target = arguments[0],
+            i = 1,
+            length = arguments.length,
+            options,
+            prop;
+
+        if(typeof target !== 'object') {
+            target = {};
+        }
+
+        if(length === i) {
+            target = this;
+            --i;
+        }
+
+        for(; i < length; i++) {
+            if((options = arguments[i]) != null) {
+                for(prop in options) {
+                    target[prop] = options[prop];
+                }
+            }
+        }
+
+        return target;
+    };
+
+    //DOM 方法
+    Squid.extend({
+        getElementById: function(id) {
+            var elem = document.getElementById(id);
+            
+            if(elem && elem.parentNode) {
+                if(elem.id !== id) {
+                    elem = null;
+                    var elems = document.getElementsByTagName(id),
+                        i = 0,
+                        length = elems.length,
+                        cur;
+
+                    for(; i < length; i++) {
+                        cur = elems[i];
+                        if(cur.id === id) {
+                            elem = cur;
+                            break;
+                        }
+                    }
+                }
+                
+                return elem;
+            } 
+        },
+        getElementsByTagName: function(tagName, context) {
+            context = context || document;
+
+            var elems = context.getElementsByTagName(tagName),
+                r = [];
+            
+            try {
+                r = slice.call(elems, 0);
+            }catch(e) {
+                var i = 0,
+                    length = elems.length,
+                    elem;
+
+                for(; i < length; i++) {
+                    elem = elems[i];
+                    r.push(elem);
+                }
+            }
+
+            return r;
+        },
+        getElementsByClassName: function(className, context) {
+            //执行上下文,默认为document
+            context = context || document; 
+
+            var r = [];
+
+            if(context.getElementsByClassName) {
+                var elems = context.getElementsByClassName(className);				
+                r = slice.call(elems, 0);
+            }else{
+                var elems,
+                    elem,
+                    i = 0,
+                    length;
+
+                elems = context.getElementsByTagName('*');		
+                length = elems.length;
+                for(; i < length; i++) {
+                    elem = elems[i];
+                    if(elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(className) >= 0) {
+                        r.push(elem);	
+                    }
+                }
+            }
+
+            return r;    
+        },
+        children: function(elem) {
+
+        },
+        first: function(elem) {
+            return this.sibling(elem.firstChild)[0];	
+        },
+        next: function(elem) {
+            return this.nth(elem, 2, 'nextSibling');
+        },
+        siblings: function(elem) {
+            return this.sibling(elem.parentNode.firstChild, elem); 
+        },
+        nth: function(cur, r, dir) {
+            r = r || 1;
+            var i = 0;
+
+            for(; cur; cur = cur[dir]) {
+                if(cur.nodeType === 1 && ++i === r) {
+                    break; 
+                }
+            }
+
+            return cur;
+        },
+        sibling: function(n, elem) {
+            var r = [];
+
+            for(; n; n = n.nextSibling) {
+                if(n.nodeType === 1 && n !== elem) {
+                    r.push(n);	
+                }	
+            }
+
+            return r;
+        },
+        isVisible: function(elem) {
+            return !this.isHidden(elem); 
+        },
+        isHidden: function(elem) {
+            if(elem) {
+                var width = elem.offsetWidth,
+                    height = elem.offsetHeight;
+
+                return (width === 0 && height === 0) || elem.style.display === 'none'
+            } 
+        },
+        getOffset: function(elem) {
+            var body = document.body,
+                docElem = document.documentElement;
+
+            if('getBoundingClientRect' in document.documentElement) {
+                var box;
+
+                try {
+                    box = elem.getBoundingClientRect()
+                }catch(e) {}
+
+                if(!box || !elem.parentNode) {
+                    return box ? {top: box.top, left: box.left} : {top: 0, left: 0}
+                }
+
+                var win = window,
+                    clientTop = docElem.clientTop || body.clientTop || 0,
+                    clientLeft = docElem.clientLeft || body.clientLeft || 0,
+                    scrollTop = win.pageYOffset || docElem.scrollTop || body.scrollTop,
+                    scrollLeft = win.pageXOffset || docElem.scrollLeft || body.scrollLeft,
+                    top = box.top + scrollTop - clientTop,
+                    left = box.left + scrollLeft - clientLeft; 
+
+                return {top: top, left: left}
+            }else{
+                var offsetParent = elem.offsetParent,
+                    top = elem.offsetTop,
+                    left = elem.offsetLeft;
+
+                while((elem = elem.parentNode) && elem !== body && elem !== docElem) {
+                    if(elem === offsetParent) {
+                        top = elem.offsetTop
+                        left = elem.offsetLeft
+
+                        offsetParent = elem.offsetParent
+                    }
+                }
+
+                return {top: top, left: left}
+            }
+        },
+        position: function(elem) {
+            if(!elem) {
+                return null; 
+            }
+
+            var offsetParent = elem.offsetParent,
+                offset = this.getOffset(elem),
+                parentOffset = this.getOffset(offsetParent);
+
+            return {
+                top: offset.top - parentOffset.top,
+                left: offset.left - parentOffset.left
+            };
+        }
+    });
+    
+    //全局缓存对象
+    var cache = {};
+
+    Squid.extend({
+        guid: 1,
+        uuid: 0,
+        expando: 'squid' + (Math.random() + '').replace(/\D/g, ''),
+        data: function(elem, name) {
+            var internalKey = squid.expando,
+                id,
+                thisCache,
+                r;
+
+            id = elem[squid.expando];
+            if(!id) {
+                elem[squid.expando] = id = ++squid.uuid;
+            }
+            if(!cache[id]) {
+                cache[id] = {};
+            }
+
+            if(typeof name === 'object' || typeof name === 'function') {
+                cache[id][internalKey] = name;
+            }
+
+            thisCache = cache[id];
+
+            if(!thisCache[internalKey]) {
+                thisCache[internalKey] = {};
+            }
+            thisCache = thisCache[internalKey];
+
+            if(name === 'events' && !thisCache[name]) {
+                return thisCache[internalKey] && thisCache[internalKey].events;
+            }
+
+            if(typeof name === 'string') {
+                r = thisCache[name];
+            }else{
+                r = thisCache;
+            }
+
+            return r;			
+        },
+        removeData: function(elem, name) {
+            var internalKey = squid.expando,
+                id = elem[squid.expando],
+                internalCache;
+
+            if(!cache[id]) {
+                return;
+            }
+            try{
+                delete cache[id];
+            }catch(e) {
+                cache[id] = null;
+            }
+            if(elem.removeAttribute) {
+                elem.removeAttribute(squid.expando);
+            }else{
+                elem[squid.expando] = null;
+            }
+        }
+    });
+
+    //事件处理
+    Squid.event = {
+        add: function(elem, type, handler) {
+            var elemData,
+            events,
+            eventHandler,
+            handleObj,
+            handlers;
+
+            if(elem.nodeType === 3 || elem.nodeType === 8) {
+                return;
+            }
+            if(!handler) {
+                return;
+            }
+            if(!handler.guid) {
+                handler.guid = squid.guid++;
+            }
+
+            elemData = squid.data(elem);
+            if(!elemData) {
+                return;
+            }
+
+            events = elemData.events;
+            eventHandler = elemData.handle;
+            if(!events) {
+                elemData.events = events = {};
+            }
+
+            if(!eventHandler) {
+                elemData.handle = eventHandler = function(event) {
+                    return squid.event.handle.apply(eventHandler.elem, arguments); 
+                };
+                eventHandler.elem = elem;
+            }
+            
+            handleObj = {
+                handler: handler
+            };
+            handleObj.type = type;
+            if(!handleObj.guid) {
+                handleObj.guid = handler.guid;
+            }
+            handlers = events[type];
+            if(!handlers) {
+                handlers = events[type] = [];
+                if(elem.addEventListener) {
+                    elem.addEventListener(type, eventHandler, false);
+                }else if(elem.attachEvent){
+                    elem.attachEvent('on' + type, eventHandler);
+                }
+            }
+
+            handlers.push(handleObj);
+        },
+        remove: function(elem, type, handler) {
+            var elemData,
+                events,
+                eventType,
+                i = 0,
+                handleObj;
+                
+            if(elem.nodeType === 3 || elem.nodeType === 8) {
+                return;
+            }	
+            
+            elemData = squid.data(elem);
+            events = elemData.events;
+            if(!events) {
+                return;
+            }
+            eventType = events[type] || [];
+            if(!handler) {
+                for(; i < eventType.length; i++) {
+                    handleObj = eventType[i];
+                    squid.event.remove(elem, type, handleObj.handler);
+                    eventType.splice(i--, 1);
+                }
+            }
+        
+            if(eventType.length === 0) {
+                if(elem.removeEventListener) {
+                    elem.removeEventListener(type, elemData.handle, false);
+                }else if(elem.detachEvent) {
+                    elem.detachEvent('on' + type, elemData.handle);
+                }
+            }
+            
+            squid.removeData(elem);
+        },
+        handle: function(event) {
+            var i = 0,
+                length,
+                handlers,
+                handleObj,
+                args = Array.prototype.slice.call(arguments, 0);
+
+            event = squid.event.fix(event);
+            handlers = ((squid.data(this, 'events') || {})[event.type] || []).slice(0);
+
+            args[0] = event;
+
+            length = handlers.length;
+            for(; i < length; i++) {
+                handleObj = handlers[i];
+                event.handler = handleObj.handler;
+                event.handleObj = handleObj;
+
+                handleObj.handler.apply(this, args);
+            }
+        },
+        fix: function(event) {
+            if(!event.target) {
+                event.target = event.srcElement || document;
+            }
+
+            if(event.target.nodeType === 3) {
+                event.target = event.target.parentNode;
+            }
+            
+            if(!event.relateTarget && event.fromElement) {
+                event.relateTarget = event.fromElement === event.target ? event.toElement : event.fromElement;
+            }
+
+            if(!event.preventDefault) {
+                event.preventDefault = function() {
+                    event.returnValue = false;
+                };
+            }
+
+            if(!event.stopPropagation) {
+                event.stopPropagation = function() {
+                    event.cancelBubble = true;
+                };
+            }
+            
+            if(event.pageX == null) {
+                var eventDoc = event.target.ownerDocument || document,
+                    doc = eventDoc.documentElment,
+                    body = eventDoc.body;
+                
+                event.pageX = event.clientX + (doc && document.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
+                event.pageY = event.clientY + (doc && document.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);
+            }
+
+            return event;
+        }
+    };
+
+    //事件处理
+    Squid.extend({
+        on: function(elem, type, handler) {
+            return this.event.add(elem, type, handler);	
+        },
+        off: function(elem, type, handler) {
+            return this.event.remove(elem, type, handler);
+        },
+        //把函数放到特定上下文执行
+        proxy: function(fn, context) {
+            var slice = Array.prototype.slice,
+                args = slice.call(arguments, 2),
+            proxy = function() {
+                return fn.apply(context, args.concat(slice.call(arguments))); 
+            };
+
+            proxy.guid = fn.guid = fn.guid || proxy.guid || squid.guid++;
+
+            return proxy;
+        }
+    });
+
+    var fnThrottleId = 0;
+    //工具函数
+    Squid.extend({
+        trim: trim ? function(text) {
+            return trim.call(text);
+        } : function(text) {
+            return text.toString().replace(/^\s+/, '').replace(/\s+$/, '');
+        },
+        throttle: function(fn, delay, context) {
+            delay = delay || 100;
+            context  = context || null;  
+            
+            return function() {
+                var args = arguments;
+                
+                clearTimeout(fnThrottleId);
+                fnThrottleId = setTimeout(function() {
+                    fn.apply(context, args);
+                }, delay);
+            };
+        },
+        isEmpty: function(obj) {
+            for(var prop in obj) {
+                return false; 
+            }
+            
+            return true;
+        }
+    });
+
+    //基于Squid扩展的插件
+    Squid.plugin = function() {};
+    //解决浏览器对默认组件渲染不一样
+    Squid.swing = function() {};    
+    window.squid = Squid;
+})(window);

Fichier diff supprimé car celui-ci est trop grand
+ 4 - 0
watero-wechat-web/src/main/webapp/common/lib/swfobject.js


BIN
watero-wechat-web/src/main/webapp/common/lib/zTree/img/zTreeStandard.png


+ 103 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/API_cn.html

@@ -0,0 +1,103 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+		<title>API 文档 [zTree --  jQuery 树插件]</title>
+		<link rel="stylesheet" href="apiCss/common.css" type="text/css">
+		<link rel='stylesheet' href='apiCss/zTreeStyleForApi.css' type='text/css'>
+		<script type="text/javascript">
+			var ie = (function(){
+				var undef,
+				v = 3,
+				div = document.createElement('div'),
+				all = div.getElementsByTagName('i');
+				while (
+				div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
+				all[0]
+			);
+				return v > 4 ? v : undef;
+			}()), ie6 = (ie === 6),
+			path = window.location.pathname.replace(/.*\/([^\/\.]*)\..*/g,"$1"),
+			langLib = [];
+			ie = ie<9;
+			if(ie) {
+				document.write('<link rel="stylesheet" href="apiCss/common_ie6.css" type="text/css">');
+			}
+			var lang = "cn",
+			ajaxMsg = "如果你使用的是 Chrome 浏览器,那么请把 API 文档发布到 web 服务目录下访问。\n\n(Chrome 浏览器不支持本地 ajax 访问, 即:file://)";
+
+		</script>
+	</head>
+	<body>
+		<div id="header_wrap" class="header_wrap" style="padding-top: 30px;">
+			<div id="header" class="header round">
+				<div class="light-bulb" alt=""></div>
+				<div class="ieSuggest">浏览本网站建议您使用 Chrome、FireFox、Opera、IE9 等浏览器(只要不是 IE6 7 8 就行), 速度会更快,画面会更炫!</div>
+				<div class="google_plus"><g:plusone></g:plusone></div>
+				<div class="header-text">
+					<h1><em>zTree v3.5.17 API 文档</em></h1><p></p>
+					<p>all.js = core + excheck + exedit ( 不包括 exhide ); 发现错误请及时通知,谢谢。</p>
+				</div>
+				<ul class="shortcuts language" style="top:0;">
+					<li><a href="API_en.html" onclick="window.location.href='API_en.html'"><button class="ico en" title="英文版" type="button"></button><span class=""></span></a></li>
+				</ul>
+			</div>
+		</div>
+		<div id="content_wrap" class="content_wrap">
+			<div id="content" class="content">
+				<div class="nav_section">
+					<ul>
+						<li class="first">注释:</li>
+						<li><button class="ico16 z_core" onfocus="this.blur();"></button><span>core 核心包</span></li>
+						<li><button class="ico16 z_check" onfocus="this.blur();"></button><span>excheck 扩展</span></li>
+						<li><button class="ico16 z_edit" onfocus="this.blur();"></button><span>exedit 扩展</span></li>
+						<li><button class="ico16 z_hide" onfocus="this.blur();"></button><span>exhide 扩展</span></li>
+						<li class="noline">
+							<button class="ico16 z_search" onfocus="this.blur();" title="Enter 以及 左、右键可以快速定位查找结果"></button>
+							<input type="text" class="searchKey search empty" value=""><input type="text" class="searchResult search" value="">
+							<button class="ico16 searchPrev disabled" onfocus="this.blur();" title="Enter 以及 左、右键可以快速定位查找结果"></button><button class="ico16 searchNext disabled" onfocus="this.blur();" title="Enter 以及 左、右键可以快速定位查找结果"></button>
+						</li>
+					</ul>
+				</div>
+
+				<div id="contentBox" class="contentBox round clearfix">
+					<div id="apiContent" class="apiContent">
+						<div id="api_setting" class="api_setting left">
+							<ul class="api_content_title"><li>setting 配置详解</li></ul>
+							<ul id="settingTree" class="ztree"></ul>
+						</div>
+						<div id="api_function" class="api_function right">
+							<ul class="api_content_title"><li>zTree 方法详解</li></ul>
+							<ul id="functionTree" class="ztree"></ul>
+							<ul class="api_content_title"><li>treeNode 节点数据详解</li></ul>
+							<ul id="treenodeTree" class="ztree"></ul>
+						</div>
+					</div>
+				</div>
+				<div class="clear"></div>
+			</div>
+		</div>
+
+		<!-- overlayed -->
+		<div id="overlayDiv" class="baby_overlay">
+			<div id="overlayContent" class="content round clearfix">
+				<div class="overlaySearch">
+					<button class="ico16 z_search" onfocus="this.blur();" title="Enter 以及 左、右键可以快速定位查找结果"></button>
+					<input type="text" class="searchKey search empty" value=""><input type="text" class="searchResult search" value="">
+					<button class="ico16 searchPrev disabled" onfocus="this.blur();" title="Enter 以及 左、右键可以快速定位查找结果"></button><button class="ico16 searchNext disabled" onfocus="this.blur();" title="Enter 以及 左、右键可以快速定位查找结果"></button>
+				</div>
+				<a id="overlayDivCloseBtn" class="close"></a>
+				<div id="overlayDetailDiv" class="details"></div>
+			</div>
+			<div id="overlayDivArrow" class="baby_overlay_arrow"></div>
+		</div>
+		<script type="text/javascript" src="apiCss/jquery-1.6.2.min.js"></script>
+		<script type='text/javascript' src='apiCss/jquery.ztree.core-3.5.js'></script>
+		<script type='text/javascript' src='apiCss/api.js'></script>
+		<script type="text/javascript">
+			$(document).ready(function(){
+				apiContent._init();
+			});
+		</script>
+	</body>
+</html>

+ 102 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/API_en.html

@@ -0,0 +1,102 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+		<title>API Document [zTree -- jQuery tree plug-ins.]</title>
+		<link rel="stylesheet" href="apiCss/common.css" type="text/css">
+		<link rel='stylesheet' href='apiCss/zTreeStyleForApi.css' type='text/css'>
+		<script type="text/javascript">
+			var ie = (function(){
+				var undef,
+				v = 3,
+				div = document.createElement('div'),
+				all = div.getElementsByTagName('i');
+				while (
+				div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
+				all[0]
+			);
+				return v > 4 ? v : undef;
+			}()), ie6 = (ie === 6),
+			path = window.location.pathname.replace(/.*\/([^\/\.]*)\..*/g,"$1"),
+			langLib = [];
+			ie = ie<9;
+			if(ie) {
+				document.write('<link rel="stylesheet" href="apiCss/common_ie6.css" type="text/css">');
+			}
+			var lang = "en",
+			ajaxMsg = "If you use chrome browser, please copy the API files to local webserver. \n\n( because chrome browser can't allow AJAX access to 'file://' )";
+		</script>
+	</head>
+	<body>
+		<div id="header_wrap" class="header_wrap" style="padding-top: 30px;">
+			<div id="header" class="header round">
+				<div class="light-bulb" alt=""></div>
+				<div class="ieSuggest">If you use the Chrome / FireFox / Opera / IE9 browser will be even more dazzling effect!</div>
+				<div class="google_plus"><g:plusone></g:plusone></div>
+				<div class="header-text">
+					<h1><em>zTree v3.5.17 API Document</em></h1><p></p>
+					<p>all.js = core + excheck + exedit ( without exhide ); if you found some mistakes please contact me.</p>
+				</div>
+				<ul class="shortcuts language" style="top:0;">
+					<li><a href="API_cn.html" onclick="window.location.href='API_cn.html'"><button class="ico cn" title="Chinese" type="button"></button><span class=""></span></a></li>
+				</ul>
+			</div>
+		</div>
+		<div id="content_wrap" class="content_wrap">
+			<div id="content" class="content">
+				<div class="nav_section">
+					<ul>
+						<li class="first">Notes: </li>
+						<li><button class="ico16 z_core" onfocus="this.blur();"></button><span>core package</span></li>
+						<li><button class="ico16 z_check" onfocus="this.blur();"></button><span>excheck pack</span></li>
+						<li><button class="ico16 z_edit" onfocus="this.blur();"></button><span>exedit pack</span></li>
+						<li><button class="ico16 z_hide" onfocus="this.blur();"></button><span>exhide pack</span></li>
+						<li class="noline">
+							<button class="ico16 z_search" onfocus="this.blur();" title="'Enter', 'left' and 'right' key can locate the search results quickly."></button>
+							<input type="text" class="searchKey search empty" value=""><input type="text" class="searchResult search" value="">
+							<button class="ico16 searchPrev disabled" onfocus="this.blur();" title="'Enter', 'left' and 'right' key can locate the search results quickly."></button><button class="ico16 searchNext disabled" onfocus="this.blur();" title="'Enter', 'left' and 'right' key can locate the search results quickly."></button>
+						</li>
+					</ul>
+				</div>
+
+				<div id="contentBox" class="contentBox round clearfix">
+					<div id="apiContent" class="apiContent">
+						<div id="api_setting" class="api_setting left">
+							<ul class="api_content_title"><li>setting details</li></ul>
+							<ul id="settingTree" class="ztree"></ul>
+						</div>
+						<div id="api_function" class="api_function right">
+							<ul class="api_content_title"><li>zTree method details</li></ul>
+							<ul id="functionTree" class="ztree"></ul>
+							<ul class="api_content_title"><li>treeNode data details</li></ul>
+							<ul id="treenodeTree" class="ztree"></ul>
+						</div>
+					</div>
+				</div>
+				<div class="clear"></div>
+			</div>
+		</div>
+
+		<!-- overlayed -->
+		<div id="overlayDiv" class="baby_overlay">
+			<div id="overlayContent" class="content round clearfix">
+				<div class="overlaySearch">
+					<button class="ico16 z_search" onfocus="this.blur();" title="'Enter', 'left' and 'right' key can locate the search results quickly."></button>
+					<input type="text" class="searchKey search empty" value=""><input type="text" class="searchResult search" value="">
+					<button class="ico16 searchPrev disabled" onfocus="this.blur();" title="'Enter', 'left' and 'right' key can locate the search results quickly."></button><button class="ico16 searchNext disabled" onfocus="this.blur();" title="'Enter', 'left' and 'right' key can locate the search results quickly."></button>
+				</div>
+				<a id="overlayDivCloseBtn" class="close"></a>
+				<div id="overlayDetailDiv" class="details"></div>
+			</div>
+			<div id="overlayDivArrow" class="baby_overlay_arrow"></div>
+		</div>
+		<script type="text/javascript" src="apiCss/jquery-1.6.2.min.js"></script>
+		<script type='text/javascript' src='apiCss/jquery.ztree.core-3.5.js'></script>
+		<script type='text/javascript' src='apiCss/api.js'></script>
+		<script type="text/javascript">
+			$(document).ready(function(){
+				apiContent._init();
+			});
+		</script>
+	</body>
+</html>

+ 592 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/api.js

@@ -0,0 +1,592 @@
+var apiContent = {
+	zTree_Setting: null,
+	zTree_Node: null,
+	zTree_Function: null,
+	overlayDiv : null,
+	overlayContent : null,
+	overlayDetailDiv : null,
+	overlayCloseBtn: null,
+	overlayArrow: null,
+	contentBoxDiv : null,
+	settingDiv : null,
+	functionDiv : null,
+	overlaySearch: null,
+	searchKey: null,
+	searchResultInput: null,
+	searchPrevBtn: null,
+	searchNextBtn: null,
+	apiCache: {},
+	lastValue: "",
+	searchNodes: [],
+	searchNodesCur: 0,
+
+	_init: function() {
+		this.overlayDiv = $("#overlayDiv");
+		this.overlayContent = $("#overlayContent");
+		this.overlayDetailDiv = $("#overlayDetailDiv");
+		this.overlayCloseBtn = $("#overlayDivCloseBtn");
+		this.overlayArrow = $("#overlayDivArrow");
+		this.contentBoxDiv = $("#contentBox");
+		this.settingDiv = $("#api_setting");
+		this.functionDiv = $("#api_function");
+		this.searchKey = $(".searchKey");
+		this.overlaySearch = $(".overlaySearch");
+		this.searchResultInput = $(".searchResult");
+		this.searchPrevBtn = $(".searchPrev");
+		this.searchNextBtn = $(".searchNext");
+		var setting = {
+			view: {
+				fontCss: this.getFontCss,
+				showLine: false,
+				showIcon: this.showIcon,
+				showTitle: this.getTitle,
+				selectedMulti: false,
+				dblClickExpand: false
+			},
+			data: {
+				key: {
+					title: "tt"
+				},
+				simpleData: {
+					enable:true,
+					idKey: "id",
+					pIdKey: "pId",
+					rootPId: ""
+				}
+			},
+			callback: {
+				onNodeCreated: this.onNodeCreated,
+				beforeClick: this.beforeClick
+			}
+		};
+		var setting_nodes =[
+			{id:1, pId:0, t:"setting", name:"var setting = {", open:true},
+			{id:11, pId:1, t:"treeId", name:"treeId : \"\",", iconSkin:"core", showAPI:true},
+			{id:12, pId:1, t:"treeObj", name:"treeObj : null,", iconSkin:"core", showAPI:true},
+			{id:121, pId:1, name:""},
+
+			{id:20, pId:1, t:"async", name:"async : {", open:true},
+			{id:201, pId:20, t:"autoParam", name:"autoParam : [],", iconSkin:"core", showAPI:true},
+			{id:208, pId:20, t:"contentType", name:"contentType : \"application...\",", iconSkin:"core", showAPI:true},
+			{id:202, pId:20, t:"dataFilter", name:"dataFilter : null,", iconSkin:"core", showAPI:true},
+			{id:203, pId:20, t:"dataType", name:"dataType : \"text\",", iconSkin:"core", showAPI:true},
+			{id:204, pId:20, t:"enable", name:"enable : false,", iconSkin:"core", showAPI:true},
+			{id:205, pId:20, t:"otherParam", name:"otherParam : [],", iconSkin:"core", showAPI:true},
+			{id:206, pId:20, t:"type", name:"type : \"post\",", iconSkin:"core", showAPI:true},
+			{id:207, pId:20, t:"url", name:"url : \"\"", iconSkin:"core", showAPI:true},
+			{id:21, pId:1, name:"},"},
+			{id:22, pId:1, name:""},
+
+			{id:30, pId:1, t:"callback", name:"callback : {", open:true},
+			{id:3001, pId:30, t:"beforeAsync", name:"beforeAsync : null,", iconSkin:"core", showAPI:true},
+			{id:3002, pId:30, t:"beforeCheck", name:"beforeCheck : null,", iconSkin:"check", showAPI:true},
+			{id:3003, pId:30, t:"beforeClick", name:"beforeClick : null,", iconSkin:"core", showAPI:true},
+			{id:3004, pId:30, t:"beforeCollapse", name:"beforeCollapse : null,", iconSkin:"core", showAPI:true},
+			{id:3004, pId:30, t:"beforeDblClick", name:"beforeDblClick : null,", iconSkin:"core", showAPI:true},
+			{id:3005, pId:30, t:"beforeDrag", name:"beforeDrag : null,", iconSkin:"edit", showAPI:true},
+			{id:3006, pId:30, t:"beforeDragOpen", name:"beforeDragOpen : null,", iconSkin:"edit", showAPI:true},
+			{id:3007, pId:30, t:"beforeDrop", name:"beforeDrop : null,", iconSkin:"edit", showAPI:true},
+			{id:3029, pId:30, t:"beforeEditName", name:"beforeEditName : null,", iconSkin:"edit", showAPI:true},
+			{id:3008, pId:30, t:"beforeExpand", name:"beforeExpand : null,", iconSkin:"core", showAPI:true},
+			{id:3009, pId:30, t:"beforeMouseDown", name:"beforeMouseDown : null,", iconSkin:"core", showAPI:true},
+			{id:3010, pId:30, t:"beforeMouseUp", name:"beforeMouseUp : null,", iconSkin:"core", showAPI:true},
+			{id:3011, pId:30, t:"beforeRemove", name:"beforeRemove : null,", iconSkin:"edit", showAPI:true},
+			{id:3012, pId:30, t:"beforeRename", name:"beforeRename : null,", iconSkin:"edit", showAPI:true},
+			{id:3013, pId:30, t:"beforeRightClick", name:"beforeRightClick : null,", iconSkin:"core", showAPI:true},
+			{id:3014, pId:30, name:""},
+			{id:3015, pId:30, t:"onAsyncError", name:"onAsyncError : null,", iconSkin:"core", showAPI:true},
+			{id:3016, pId:30, t:"onAsyncSuccess", name:"onAsyncSuccess : null,", iconSkin:"core", showAPI:true},
+			{id:3017, pId:30, t:"onCheck", name:"onCheck : null,", iconSkin:"check", showAPI:true},
+			{id:3018, pId:30, t:"onClick", name:"onClick : null,", iconSkin:"core", showAPI:true},
+			{id:3019, pId:30, t:"onCollapse", name:"onCollapse : null,", iconSkin:"core", showAPI:true},
+			{id:3029, pId:30, t:"onDblClick", name:"onDblClick : null,", iconSkin:"core", showAPI:true},
+			{id:3020, pId:30, t:"onDrag", name:"onDrag : null,", iconSkin:"edit", showAPI:true},
+			{id:3030, pId:30, t:"onDragMove", name:"onDragMove : null,", iconSkin:"edit", showAPI:true},
+			{id:3021, pId:30, t:"onDrop", name:"onDrop : null,", iconSkin:"edit", showAPI:true},
+			{id:3022, pId:30, t:"onExpand", name:"onExpand : null,", iconSkin:"core", showAPI:true},
+			{id:3023, pId:30, t:"onMouseDown", name:"onMouseDown : null,", iconSkin:"core", showAPI:true},
+			{id:3024, pId:30, t:"onMouseUp", name:"onMouseUp : null,", iconSkin:"core", showAPI:true},
+			{id:3025, pId:30, t:"onNodeCreated", name:"onNodeCreated : null,", iconSkin:"core", showAPI:true},
+			{id:3026, pId:30, t:"onRemove", name:"onRemove : null,", iconSkin:"edit", showAPI:true},
+			{id:3027, pId:30, t:"onRename", name:"onRename : null,", iconSkin:"edit", showAPI:true},
+			{id:3028, pId:30, t:"onRightClick", name:"onRightClick : null", iconSkin:"core", showAPI:true},
+			{id:31, pId:1, name:"},"},
+			{id:32, pId:1, name:""},
+
+			{id:40, pId:1, t:"check", name:"check : {", open:true},
+			{id:405, pId:40, t:"autoCheckTrigger", name:"autoCheckTrigger : false,", iconSkin:"check", showAPI:true},
+			{id:401, pId:40, t:"chkboxType", name:"chkboxType : {\"Y\": \"ps\", \"N\": \"ps\"},", iconSkin:"check", showAPI:true},
+			{id:402, pId:40, t:"chkStyle", name:"chkStyle : \"checkbox\",", iconSkin:"check", showAPI:true},
+			{id:403, pId:40, t:"enable", name:"enable : false,", iconSkin:"check", showAPI:true},
+			{id:406, pId:40, t:"nocheckInherit", name:"nocheckInherit : false", iconSkin:"check", showAPI:true},
+			{id:407, pId:40, t:"chkDisabledInherit", name:"chkDisabledInherit : false", iconSkin:"check", showAPI:true},
+			{id:404, pId:40, t:"radioType", name:"radioType : \"level\"", iconSkin:"check", showAPI:true},
+			{id:41, pId:1, name:"},"},
+			{id:42, pId:1, name:""},
+
+			{id:50, pId:1, t:"data", name:"data : {", open:true},
+			{id:500, pId:50, t:"keep", name:"keep : {", open:true},
+			{id:5001, pId:500, t:"leaf", name:"leaf : false,", iconSkin:"core", showAPI:true},
+			{id:5002, pId:500, t:"parent", name:"parent : false", iconSkin:"core", showAPI:true},
+			{id:501, pId:50, name:"},"},
+
+			{id:510, pId:50, t:"key", name:"key : {", open:true},
+			{id:5101, pId:510, t:"checked", name:"checked : \"checked\",", iconSkin:"check", showAPI:true},
+			{id:5102, pId:510, t:"children", name:"children : \"children\",", iconSkin:"core", showAPI:true},
+			{id:5103, pId:510, t:"name", name:"name : \"name\",", iconSkin:"core", showAPI:true},
+			{id:5104, pId:510, t:"title", name:"title : \"\"", iconSkin:"core", showAPI:true},
+			{id:5105, pId:510, t:"url", name:"url : \"url\"", iconSkin:"core", showAPI:true},
+			{id:511, pId:50, name:"},"},
+
+			{id:520, pId:50, t:"simpleData", name:"simpleData : {", open:true},
+			{id:5201, pId:520, t:"enable", name:"enable : false,", iconSkin:"core", showAPI:true},
+			{id:5202, pId:520, t:"idKey", name:"idKey : \"id\",", iconSkin:"core", showAPI:true},
+			{id:5203, pId:520, t:"pIdKey", name:"pIdKey : \"pId\",", iconSkin:"core", showAPI:true},
+			{id:5204, pId:520, t:"rootPId", name:"rootPId : null", iconSkin:"core", showAPI:true},
+			{id:521, pId:50, name:"}"},
+			{id:51, pId:1, name:"},"},
+			{id:52, pId:1, name:""},
+
+			{id:60, pId:1, t:"edit", name:"edit : {", open:true},
+			{id:601, pId:60, t:"drag", name:"drag : {", open:true},
+			{id:60111, pId:601, t:"autoExpandTrigger", name:"autoExpandTrigger : true,", iconSkin:"edit", showAPI:true},
+			{id:60101, pId:601, t:"isCopy", name:"isCopy : true,", iconSkin:"edit", showAPI:true},
+			{id:60102, pId:601, t:"isMove", name:"isMove : true,", iconSkin:"edit", showAPI:true},
+			{id:60103, pId:601, t:"prev", name:"prev : true,", iconSkin:"edit", showAPI:true},
+			{id:60104, pId:601, t:"next", name:"next : true,", iconSkin:"edit", showAPI:true},
+			{id:60105, pId:601, t:"inner", name:"inner : true,", iconSkin:"edit", showAPI:true},
+			{id:60107, pId:601, t:"borderMax", name:"borderMax : 10,", iconSkin:"edit", showAPI:true},
+			{id:60108, pId:601, t:"borderMin", name:"borderMin : -5,", iconSkin:"edit", showAPI:true},
+			{id:60106, pId:601, t:"minMoveSize", name:"minMoveSize : 5,", iconSkin:"edit", showAPI:true},
+			{id:60109, pId:601, t:"maxShowNodeNum", name:"maxShowNodeNum : 5,", iconSkin:"edit", showAPI:true},
+			{id:60110, pId:601, t:"autoOpenTime", name:"autoOpenTime : 500", iconSkin:"edit", showAPI:true},
+			{id:602, pId:60, name:"},"},
+			{id:608, pId:60, t:"editNameSelectAll", name:"editNameSelectAll : false,", iconSkin:"edit", showAPI:true},
+			{id:603, pId:60, t:"enable", name:"enable : false,", iconSkin:"edit", showAPI:true},
+			{id:604, pId:60, t:"removeTitle", name:"removeTitle : \"remove\",", iconSkin:"edit", showAPI:true},
+			{id:605, pId:60, t:"renameTitle", name:"renameTitle : \"rename\",", iconSkin:"edit", showAPI:true},
+			{id:606, pId:60, t:"showRemoveBtn", name:"showRemoveBtn : true,", iconSkin:"edit", showAPI:true},
+			{id:607, pId:60, t:"showRenameBtn", name:"showRenameBtn : true", iconSkin:"edit", showAPI:true},
+			{id:61, pId:1, name:"},"},
+			{id:62, pId:1, name:""},
+
+			{id:70, pId:1, t:"view", name:"view : {", open:true},
+			{id:7001, pId:70, t:"addDiyDom", name:"addDiyDom : null,", iconSkin:"core", showAPI:true},
+			{id:7002, pId:70, t:"addHoverDom", name:"addHoverDom : null,", iconSkin:"edit", showAPI:true},
+			{id:7003, pId:70, t:"autoCancelSelected", name:"autoCancelSelected : true,", iconSkin:"core", showAPI:true},
+			{id:7004, pId:70, t:"dblClickExpand", name:"dblClickExpand : true,", iconSkin:"core", showAPI:true},
+			{id:7005, pId:70, t:"expandSpeed", name:"expandSpeed : \"fast\",", iconSkin:"core", showAPI:true},
+			{id:7006, pId:70, t:"fontCss", name:"fontCss : {},", iconSkin:"core", showAPI:true},
+			{id:7012, pId:70, t:"nameIsHTML", name:"nameIsHTML : false,", iconSkin:"core", showAPI:true},
+			{id:7007, pId:70, t:"removeHoverDom", name:"removeHoverDom : null,", iconSkin:"edit", showAPI:true},
+			{id:7008, pId:70, t:"selectedMulti", name:"selectedMulti : true,", iconSkin:"core", showAPI:true},
+			{id:7009, pId:70, t:"showIcon", name:"showIcon : true,", iconSkin:"core", showAPI:true},
+			{id:7010, pId:70, t:"showLine", name:"showLine : true,", iconSkin:"core", showAPI:true},
+			{id:7011, pId:70, t:"showTitle", name:"showTitle : true,", iconSkin:"core", showAPI:true},
+			{id:7012, pId:70, t:"txtSelectedEnable", name:"txtSelectedEnable : false", iconSkin:"core", showAPI:true},
+			{id:71, pId:1, name:"}"},
+
+			{id:2, pId:0, name:"}"}
+		];
+
+		var treenode_nodes =[
+			{id:1, pId:0, t:"treeNode", name:"treeNode : {", open:true},
+			{id:101, pId:1, t:"checked", name:"checked", iconSkin:"check", showAPI:true},
+			{id:102, pId:1, t:"children", name:"children", iconSkin:"core", showAPI:true},
+			{id:128, pId:1, t:"chkDisabled", name:"chkDisabled", iconSkin:"check", showAPI:true},
+			{id:127, pId:1, t:"click", name:"click", iconSkin:"core", showAPI:true},
+			{id:103, pId:1, t:"getCheckStatus", name:"getCheckStatus ()", iconSkin:"check", showAPI:true},
+			{id:104, pId:1, t:"getNextNode", name:"getNextNode ()", iconSkin:"core", showAPI:true},
+			{id:105, pId:1, t:"getParentNode", name:"getParentNode ()", iconSkin:"core", showAPI:true},
+			{id:106, pId:1, t:"getPreNode", name:"getPreNode ()", iconSkin:"core", showAPI:true},
+			{id:129, pId:1, t:"halfCheck", name:"halfCheck", iconSkin:"check", showAPI:true},
+			{id:107, pId:1, t:"icon", name:"icon", iconSkin:"core", showAPI:true},
+			{id:108, pId:1, t:"iconClose", name:"iconClose", iconSkin:"core", showAPI:true},
+			{id:109, pId:1, t:"iconOpen", name:"iconOpen", iconSkin:"core", showAPI:true},
+			{id:110, pId:1, t:"iconSkin", name:"iconSkin", iconSkin:"core", showAPI:true},
+			{id:131, pId:1, t:"isHidden", name:"isHidden", iconSkin:"hide", showAPI:true},
+			{id:111, pId:1, t:"isParent", name:"isParent", iconSkin:"core", showAPI:true},
+			{id:132, pId:1, t:"name", name:"name", iconSkin:"core", showAPI:true},
+			{id:112, pId:1, t:"nocheck", name:"nocheck", iconSkin:"check", showAPI:true},
+			{id:113, pId:1, t:"open", name:"open", iconSkin:"core", showAPI:true},
+			{id:133, pId:1, t:"target", name:"target", iconSkin:"core", showAPI:true},
+			{id:134, pId:1, t:"url", name:"url", iconSkin:"core", showAPI:true},
+			{id:114, pId:1, t:"diy", name:"*DIY*", iconSkin:"core", showAPI:true},
+			{id:115, pId:1, name:""},
+			{id:116, pId:1, t:"check_Child_State", name:"[check_Child_State]", iconSkin:"check", showAPI:true},
+			{id:117, pId:1, t:"check_Focus", name:"[check_Focus]", iconSkin:"check", showAPI:true},
+			{id:118, pId:1, t:"checkedOld", name:"[checkedOld]", iconSkin:"check", showAPI:true},
+			{id:119, pId:1, t:"editNameFlag", name:"[editNameFlag]", iconSkin:"edit", showAPI:true},
+			{id:120, pId:1, t:"isAjaxing", name:"[isAjaxing]", iconSkin:"core", showAPI:true},
+			{id:121, pId:1, t:"isFirstNode", name:"[isFirstNode]", iconSkin:"core", showAPI:true},
+			{id:122, pId:1, t:"isHover", name:"[isHover]", iconSkin:"edit", showAPI:true},
+			{id:123, pId:1, t:"isLastNode", name:"[isLastNode]", iconSkin:"core", showAPI:true},
+			{id:124, pId:1, t:"level", name:"[level]", iconSkin:"core", showAPI:true},
+			{id:125, pId:1, t:"parentTId", name:"[parentTId]", iconSkin:"core", showAPI:true},
+			{id:126, pId:1, t:"tId", name:"[tId]", iconSkin:"core", showAPI:true},
+			{id:130, pId:1, t:"zAsync", name:"[zAsync]", iconSkin:"core", showAPI:true},
+			{id:2, pId:0, name:"}"}
+		];
+
+		var function_nodes =[
+			{id:1, pId:0, t:"$.fn.zTree", name:"$.fn.zTree : {", open:true},
+			{id:11, pId:1, t:"init", name:"init (obj, zSetting, zNodes)", iconSkin:"core", showAPI:true},
+			{id:12, pId:1, t:"getZTreeObj", name:"getZTreeObj (treeId)", iconSkin:"core", showAPI:true},
+			{id:14, pId:1, t:"destroy", name:"destroy (treeId)", iconSkin:"core", showAPI:true},
+			{id:13, pId:1, t:"_z", name:"_z : {tools, view, event, data}", iconSkin:"core", showAPI:true},
+			{id:2, pId:0, name:"}"},
+			{id:3, pId:0, name:""},
+			{id:4, pId:0, t:"zTreeObj", name:"zTreeObj : {", open:true},
+			{id:401, pId:4, t:"setting", name:"setting", iconSkin:"core", showAPI:true},
+			{id:402, pId:4, t:"addNodes", name:"addNodes (parentNode, newNodes, isSilent)", iconSkin:"core", showAPI:true},
+			{id:403, pId:4, t:"cancelEditName", name:"cancelEditName (newName)", iconSkin:"edit", showAPI:true},
+			{id:404, pId:4, t:"cancelSelectedNode", name:"cancelSelectedNode (node)", iconSkin:"core", showAPI:true},
+			{id:405, pId:4, t:"checkAllNodes", name:"checkAllNodes (checked)", iconSkin:"check", showAPI:true},
+			{id:406, pId:4, t:"checkNode", name:"checkNode (node, checked, checkTypeFlag, callbackFlag)", iconSkin:"check", showAPI:true},
+			{id:407, pId:4, t:"copyNode", name:"copyNode (targetNode, node, moveType, isSilent)", iconSkin:"edit", showAPI:true},
+			{id:436, pId:4, t:"destroy", name:"destroy ()", iconSkin:"core", showAPI:true},
+			{id:408, pId:4, t:"editName", name:"editName (node)", iconSkin:"edit", showAPI:true},
+			{id:409, pId:4, t:"expandAll", name:"expandAll (expandFlag)", iconSkin:"core", showAPI:true},
+			{id:410, pId:4, t:"expandNode", name:"expandNode (node, expandFlag, sonSign, focus, callbackFlag)", iconSkin:"core", showAPI:true},
+			{id:411, pId:4, t:"getChangeCheckedNodes", name:"getChangeCheckedNodes ()", iconSkin:"check", showAPI:true},
+			{id:412, pId:4, t:"getCheckedNodes", name:"getCheckedNodes (checked)", iconSkin:"check", showAPI:true},
+			{id:413, pId:4, t:"getNodeByParam", name:"getNodeByParam (key, value, parentNode)", iconSkin:"core", showAPI:true},
+			{id:414, pId:4, t:"getNodeByTId", name:"getNodeByTId (tId)", iconSkin:"core", showAPI:true},
+			{id:415, pId:4, t:"getNodeIndex", name:"getNodeIndex (node)", iconSkin:"core", showAPI:true},
+			{id:416, pId:4, t:"getNodes", name:"getNodes ()", iconSkin:"core", showAPI:true},
+			{id:431, pId:4, t:"getNodesByFilter", name:"getNodesByFilter (filter, isSingle, parentNode, invokeParam)", iconSkin:"core", showAPI:true},
+			{id:417, pId:4, t:"getNodesByParam", name:"getNodesByParam (key, value, parentNode)", iconSkin:"core", showAPI:true},
+			{id:418, pId:4, t:"getNodesByParamFuzzy", name:"getNodesByParamFuzzy (key, value, parentNode)", iconSkin:"core", showAPI:true},
+			{id:419, pId:4, t:"getSelectedNodes", name:"getSelectedNodes ()", iconSkin:"core", showAPI:true},
+			{id:432, pId:4, t:"hideNode", name:"hideNode (node)", iconSkin:"hide", showAPI:true},
+			{id:433, pId:4, t:"hideNodes", name:"hideNodes (nodes)", iconSkin:"hide", showAPI:true},
+			{id:420, pId:4, t:"moveNode", name:"moveNode (targetNode, node, moveType, isSilent)", iconSkin:"edit", showAPI:true},
+			{id:421, pId:4, t:"reAsyncChildNodes", name:"reAsyncChildNodes (parentNode, reloadType, isSilent)", iconSkin:"core", showAPI:true},
+			{id:422, pId:4, t:"refresh", name:"refresh ()", iconSkin:"core", showAPI:true},
+			{id:423, pId:4, t:"removeChildNodes", name:"removeChildNodes (parentNode)", iconSkin:"core", showAPI:true},
+			{id:424, pId:4, t:"removeNode", name:"removeNode (node, callbackFlag)", iconSkin:"core", showAPI:true},
+			{id:425, pId:4, t:"selectNode", name:"selectNode (node, addFlag)", iconSkin:"core", showAPI:true},
+			{id:430, pId:4, t:"setChkDisabled", name:"setChkDisabled (node, disabled, inheritParent, inheritChildren)", iconSkin:"check", showAPI:true},
+			{id:426, pId:4, t:"setEditable", name:"setEditable (editable)", iconSkin:"edit", showAPI:true},
+			{id:434, pId:4, t:"showNode", name:"showNode (node)", iconSkin:"hide", showAPI:true},
+			{id:435, pId:4, t:"showNodes", name:"showNodes (nodes)", iconSkin:"hide", showAPI:true},
+			{id:427, pId:4, t:"transformToArray", name:"transformToArray (nodes)", iconSkin:"core", showAPI:true},
+			{id:428, pId:4, t:"transformTozTreeNodes", name:"transformTozTreeNodes (simpleNodes)", iconSkin:"core", showAPI:true},
+			{id:429, pId:4, t:"updateNode", name:"updateNode (node, checkTypeFlag)", iconSkin:"core", showAPI:true},
+			{id:5, pId:0, name:"}"}
+		];
+
+		apiContent.zTree_Setting = $.fn.zTree.init($("#settingTree"), $.fn.zTree._z.tools.clone(setting), setting_nodes);
+		apiContent.zTree_Node = $.fn.zTree.init($("#treenodeTree"), $.fn.zTree._z.tools.clone(setting), treenode_nodes);
+		apiContent.zTree_Function = $.fn.zTree.init($("#functionTree"), $.fn.zTree._z.tools.clone(setting), function_nodes);
+		this.bindEvent();
+
+	},
+	bindEvent: function() {
+		$(document).bind("keydown", this.listenKeyDown)
+		this.overlayCloseBtn.bind("click", apiContent.overlayClose);
+		this.searchResultInput.bind("click", function(e) {
+			$(this).prev().get(0).focus();
+			this.blur();
+		}).bind("focus", function(e) {
+			this.blur();
+		});
+		this.searchKey.bind("focus", this.focusKey)
+			.bind("blur", this.blurKey)
+			.bind("propertychange", this.searchNode)
+			.bind("input", this.searchNode);
+		this.searchPrevBtn.bind("click", this.searchPrev);
+		this.searchNextBtn.bind("click", this.searchNext);
+	},
+	setSameKey: function(value) {
+		apiContent.searchKey.attr("value", value);
+	},
+	focusKey: function(e) {
+		if (apiContent.searchKey.hasClass("empty")) {
+			apiContent.searchKey.removeClass("empty");
+		}
+	},
+	blurKey: function(e) {
+		apiContent.setSameKey(e.target.value);
+		if (e.target.value === "") {
+			apiContent.searchKey.addClass("empty");
+		}
+	},
+	listenKeyDown: function(e) {
+		if (e.keyCode=="13" && apiContent.overlayDiv.is(":hidden")) {
+			apiContent.openAPI();
+		} else if (e.keyCode=="37") {
+			apiContent.searchPrev();
+		} else if (e.keyCode=="13" || e.keyCode=="39") {
+			apiContent.searchNext();
+		}
+	},
+	openAPI: function() {
+		if (apiContent.searchNodes.length > 0) {
+			var setting_zTree = $.fn.zTree.getZTreeObj("settingTree"),
+			treenode_zTree = $.fn.zTree.getZTreeObj("treenodeTree"),
+			function_zTree = $.fn.zTree.getZTreeObj("functionTree");
+			if (apiContent.searchNodesCur < 0 || apiContent.searchNodesCur > apiContent.searchNodes.length -1) {
+				apiContent.searchNodesCur = 0;
+			}
+			var node = apiContent.searchNodes[apiContent.searchNodesCur];
+
+			if (node.tId.indexOf("setting") > -1) {
+				setting_zTree.selectNode(node);
+			} else if (node.tId.indexOf("treenode") > -1) {
+				treenode_zTree.selectNode(node);
+			} else {
+				function_zTree.selectNode(node);
+			}
+			apiContent.beforeClick(node.tId.substring(0, node.tId.indexOf("_")), node, true);
+			apiContent.searchCur();
+		}
+	},
+	searchNode: function(e) {
+		var setting_zTree = $.fn.zTree.getZTreeObj("settingTree"),
+		treenode_zTree = $.fn.zTree.getZTreeObj("treenodeTree"),
+		function_zTree = $.fn.zTree.getZTreeObj("functionTree");
+		if (apiContent.curKey == e.target.value) return;
+		apiContent.curKey = e.target.value;
+		var value = $.trim(apiContent.curKey);
+		apiContent.setSameKey(apiContent.curKey);
+		if (apiContent.searchKey.hasClass("empty")) {
+			value = "";
+			apiContent.searchResultInput.removeClass("noResult").attr("value","");
+		}
+		if (apiContent.lastValue === value) return;
+
+		apiContent.updateNodes(false);
+		apiContent.lastValue = value;
+		if (value === "" || value.length < 2) {
+			apiContent.searchNodes = [];
+			apiContent.searchNodesCur = -1;
+			apiContent.searchCur(true);
+			return;
+		}
+
+		var settingNodeList = setting_zTree.getNodesByFilter(apiContent.searchFilter);
+		var functionNodeList = function_zTree.getNodesByFilter(apiContent.searchFilter);
+		var treenodeNodeList = treenode_zTree.getNodesByFilter(apiContent.searchFilter);
+		apiContent.searchNodes = settingNodeList.concat(functionNodeList).concat(treenodeNodeList);
+		apiContent.searchNodesCur = -1;
+		apiContent.searchCur();
+		apiContent.updateNodes(true);
+	},
+	searchFilter: function(node) {
+		var value = $.trim(apiContent.searchKey.get(0).value).toLowerCase();
+		return (node.showAPI && node.name.toLowerCase().indexOf(value) > -1);
+	},
+	searchPrev: function(e) {
+		if (apiContent.searchPrevBtn.hasClass("disabled")) return;
+		apiContent.searchNodesCur--;
+		if (apiContent.searchNodesCur < 0 || apiContent.searchNodesCur > apiContent.searchNodes.length -1) {
+			apiContent.searchNodesCur = apiContent.searchNodes.length -1;
+		}
+		apiContent.openAPI();
+	},
+	searchNext: function(e) {
+		if (apiContent.searchNextBtn.hasClass("disabled")) return;
+		apiContent.searchNodesCur++;
+		apiContent.openAPI();
+	},
+	searchCur: function(init) {
+		var result = apiContent.searchNodes;
+		if (init) {
+			apiContent.searchResultInput.removeClass("noResult").attr("value","");
+		} else if (result.length == 0) {
+			apiContent.searchResultInput.addClass("noResult").attr("value","  [ 0 / 0 ]  ");
+		} else {
+			apiContent.searchResultInput.removeClass("noResult").attr("value"," [ " + (apiContent.searchNodesCur > -1 ? apiContent.searchNodesCur+1 : "?")+ " / " + result.length + " ] ");
+		}
+		if (result.length > 0) {
+			apiContent.searchPrevBtn.removeClass("disabled");
+			apiContent.searchNextBtn.removeClass("disabled");
+		} else {
+			apiContent.searchPrevBtn.addClass("disabled");
+			apiContent.searchNextBtn.addClass("disabled");
+		}
+	},
+	updateNodes: function(highlight) {
+		var setting_zTree = $.fn.zTree.getZTreeObj("settingTree"),
+		treenode_zTree = $.fn.zTree.getZTreeObj("treenodeTree"),
+		function_zTree = $.fn.zTree.getZTreeObj("functionTree"),
+		node = null;
+		for( var i=0, l=apiContent.searchNodes.length; i<l; i++) {
+			node = apiContent.searchNodes[i];
+			if (node.level > 0) {
+				node.highlight = highlight;
+				if (node.tId.indexOf("setting") > -1) {
+					setting_zTree.updateNode(node);
+				} else if (node.tId.indexOf("treenode") > -1) {
+					treenode_zTree.updateNode(node);
+				} else {
+					function_zTree.updateNode(node);
+				}
+			}
+		}
+	},
+	getFontCss: function(treeId, treeNode) {
+		return (!!treeNode.highlight) ? {color:"#A60000", "font-weight":"bold"} : {color:"#333", "font-weight":"normal"};
+	},
+	getTitle: function(treeId, node) {
+		var t = [], n = node;
+		while (n && !!n.t) {
+			t.push(n.t);
+			n = n.getParentNode();
+		}
+		t = t.reverse();
+		node.tt = t.join('.');
+		return true;
+	},
+	showIcon: function(treeId, node) {
+		return (!!node.iconSkin);
+	},
+	onNodeCreated: function (e, treeId, node) {
+		var a = $("#" + node.tId + "_a");
+		if (node.showAPI) {
+			a.attr("rel", "#overlayDiv");
+		} else {
+			a.css({cursor: "default"});
+		}
+	},
+	beforeClick: function (treeId, node, noClear) {
+		if (!node.showAPI) return false;
+		var o = $("#" + node.tId + "_a");
+		if (!!apiContent.apiCache[node.tId]) {
+			apiContent.tmpDiv.html(apiContent.apiCache[node.tId]);
+			apiContent.overlayShow(o, (apiContent.lastNode === node));
+		} else {
+			apiContent.overlayAjax(treeId, node);
+		}
+		apiContent.lastNode = node;
+		if (node.tId.indexOf("settingTree")>-1) {
+			apiContent.settingDiv.removeClass("right").addClass("left");
+			apiContent.functionDiv.removeClass("left").addClass("right");
+		} else {
+			apiContent.settingDiv.removeClass("left").addClass("right");
+			apiContent.functionDiv.removeClass("right").addClass("left");
+		}
+
+		if (!noClear) {
+			apiContent.clearSelectedNode();
+		}
+		return true;
+	},
+	clearSelectedNode: function() {
+		apiContent.zTree_Setting.cancelSelectedNode();
+		apiContent.zTree_Node.cancelSelectedNode();
+		apiContent.zTree_Function.cancelSelectedNode();
+	},
+	overlayAutoClose: function(e) {
+		var eId = e.target.id, eRel = e.target.getAttribute("rel"), eClass = e.target.className;
+		if (eId === "overlayDiv" || eId === "overlayDivArrow" || eClass.indexOf("searchPrev") > -1 || eClass.indexOf("searchNext") > -1 || !!eRel) return;
+		if (!$(e.target).parents("[rel]").length && !$(e.target).parents("#overlayDiv").length) {
+			apiContent.overlayClose();
+		}
+	},
+	overlayClose: function() {
+		var o = apiContent.overlayDiv;
+		o.stop();
+		apiContent.clearSelectedNode();
+		if (ie) {
+			o.hide();
+		} else {
+			setTimeout(function() {o.fadeTo("fast", 0, function(){o.hide();})}, 200);
+		}
+		$(document).unbind("click", apiContent.overlayAutoClose);
+	},
+	overlayShow: function(target, isSameNode) {
+		var w = $(window), o = apiContent.overlayDiv, a = apiContent.overlayArrow,
+		oc = apiContent.overlayContent, c = apiContent.contentBoxDiv,
+		t = target.offset().top - 30,
+		cMaxLeft = c.offset().left + c.outerWidth({margin:true}) - o.outerWidth({margin:true}) - 10,
+		l = Math.min(cMaxLeft, target.offset().left + target.width() + 40),
+		arrowT = target.offset().top + 16,
+		wMinTop = 100, footerHeight = 50, onlyFade = false,
+		wHeight = w.height(), wScrollTop=w.scrollTop(), wMaxTop = wHeight + wScrollTop - footerHeight;
+		if (!apiContent.overlayMaxTop) {
+			apiContent.overlayMaxTop = apiContent.contentBoxDiv.offset().top + apiContent.contentBoxDiv.height();
+		}
+		o.stop();
+		if (o.css("display") !== "block") {
+			o.css({top: t, left: l});
+			a.css({top:arrowT - t});
+			$(document).bind("click", apiContent.overlayAutoClose);
+		}
+		if (ie) {
+			onlyFade = true;
+			o.show();
+		} else {
+			o.fadeTo("fast", 1);
+		}
+
+		var h = apiContent.tmpDiv.outerHeight({margin:true}) + apiContent.overlaySearch.outerHeight();
+		if ((t + h) > wMaxTop) {
+			t = wMaxTop - h;
+		}
+		if ((t + h) > apiContent.overlayMaxTop) {
+			t = apiContent.overlayMaxTop - h;
+		}
+		t = Math.max(t, wScrollTop, wMinTop);
+		if ((t + h) > ($("body").height()-footerHeight-20)) {
+			o.css("padding-bottom", footerHeight + "px");
+		} else {
+			o.css("padding-bottom", "0");
+		}
+		apiContent.overlayDetailDiv.empty();
+		apiContent.overlayDetailDiv.append(apiContent.tmpDiv.children());
+		if (!onlyFade) {
+			onlyFade = (isSameNode && t === parseInt(o.css("top").replace("px", "")));
+		}
+
+		a.removeClass("reverse");
+		if ( (arrowT - t) > (h-55) ) {
+			a.addClass("reverse");
+			arrowT -= 55;
+		}
+
+		if (onlyFade) {
+			o.css({top: t, left: l});
+			oc.css({height: h});
+			a.css({top:arrowT - t});
+		} else {
+			o.animate({top: t, left: l}, {duration: "normal",easing: "swing", complete:null});
+			oc.animate({height: h}, {duration: "fast",easing: "swing", complete:null});
+			a.animate({top:arrowT - t}, {duration: "normal",easing: "linear", complete:null});
+		}
+	},
+	overlayAjax: function(treeId, node) {
+		var o = $("#" + node.tId + "_a");
+		if (node.isAjax) return;
+		node.isAjax = true;
+		$.ajax({
+			type: "get",
+			url: "" + lang + "/" + node.tt.replace("$.", "") + ".html",
+			data: null,
+			dataType: "text",
+			success: function(msg) {
+				if (!apiContent.tmpDiv) {
+					var tmpDiv = $(document.createElement("div"));
+					tmpDiv.addClass("baby_overlay_tmp");
+					$("body").append(tmpDiv)
+					apiContent.tmpDiv = $(document.createElement("div"));
+					apiContent.tmpDiv.addClass("details");
+					tmpDiv.append(apiContent.tmpDiv);
+
+				} else {
+					apiContent.tmpDiv.empty();
+				}
+				apiContent.tmpDiv.html(msg);
+				apiContent.overlayShow(o, false);
+				apiContent.apiCache[node.tId] = msg;
+				node.isAjax = false;
+			},
+			error: function(XMLHttpRequest, textStatus, errorThrown) {
+				alert(ajaxMsg)
+				if (apiContent.tmpDiv) apiContent.tmpDiv.empty();
+				node.isAjax = false;
+			}
+		});
+	}
+}

+ 219 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/common.css

@@ -0,0 +1,219 @@
+/* Resets */
+html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td {
+	margin: 0;padding: 0;border: 0;outline: 0;font-weight: inherit;font-style: inherit;font-size: 100%;font-family: inherit;vertical-align: baseline;}
+:focus {outline: 0;}
+body {color: #2f332a;font: 15px/21px Arial, Helvetica, simsun, sans-serif;background: #528036 url(img/background.jpg) no-repeat fixed 0 0;}
+p {padding-bottom: 20px;}
+ol, ul {list-style: none;}
+table {border-collapse: separate;border-spacing: 0;}
+caption, th, td {text-align: left;font-weight: normal;}
+strong {font-weight: bold;}
+em {font-style: italic;}
+hr {display: none;}
+.font1 {color: white;background-color: #528036;}
+.right {float: right;}
+.left {float: left;}
+.hide {display: none;}
+.round {-moz-border-radius: 15px;-webkit-border-radius: 15px;-khtml-border-radius: 15px;border-radius: 15px;}
+.clear {clear: both;}
+.clearfix {display: block;}
+.clearfix:after {content: ".";display: block;clear: both;visibility: hidden;line-height: 0;height: 0;}
+html[xmlns] .clearfix {display: block;}
+* html .clearfix {height: 1%;}
+
+/* Link Styles */
+a {color: #528036;}
+a:link, a:visited {text-decoration: none;}
+a:hover {color: #000;text-decoration: none;}
+a:active {text-decoration: none;}
+
+/* Headings */
+h1, h2, h3, h4, h5, h6 {color: #2f332a;font-weight: bold;font-family: Helvetica, Arial, simsun, sans-serif;padding-bottom: 5px;}
+h1 {font-size: 36px;line-height: 44px;}
+h2 {font-size: 20px;line-height: 20px;}
+h3 {font-size: 14px;line-height: 14px;}
+h4 {font-size: 14px;font-weight: normal;line-height: 25px;}
+
+/* Wraps */
+.header_wrap {position: relative;min-width: 940px;padding: 100px 30px 0 30px;}
+.content_wrap {position: relative;min-width: 940px;padding: 0 30px 50px 30px;}
+.footer_wrap {bottom: 0;height: 47px;width: 100%;background-color: #1b1b1b;border-top: 1px solid #749e58;}
+
+/* Header */
+.header {position: relative;width: 940px;margin: 0 auto;height: 160px;border: 1px solid white;background: transparent url(img/header-bg.png) repeat-x 0 -50px;}
+.header-text {padding: 40px 25px 15px 120px;font-size: 18px;line-height: 24px;color: #747d67;font-family: Helvetica, sans-serif;}
+.header-text img {padding-bottom: 5px;}
+.shortcuts {white-space: nowrap;text-align: right;position: absolute;top: -45px;right: 5px;}
+.shortcuts.language {top: -85px;right:0px;}
+.shortcuts li {display: inline;font-size: 18px;line-height: 28px;font-family: Helvetica, Arial, simsun, sans-serif;padding-bottom: 5px;margin-left: 30px;cursor: pointer;}
+.shortcuts li button {cursor: pointer;}
+.shortcuts li span {border-bottom: 1px dotted white;}
+.shortcuts li span.selected {padding: 2px;background-color: #528036;}
+.shortcuts li a {color: #fff;}
+.ieSuggest {display:none;font-size: 12px;color: silver;position: absolute;left: 10px;top: 2px;}
+.google_plus {position: absolute;right: 10px; top:10px;}
+.light-bulb {position: absolute;left: -20px;bottom: -35px;width:116px;height:180px;background-image:url(img/lightbulb.png);background-repeat: no-repeat;}
+
+/* Content */
+.content {position: relative;width: 940px;margin: 0 auto;}
+.nav_section {position: relative;height: 20px;font-family: "Myriad Pro", "Trebuchet MS", sans-serif;font-size: 15px;color: #253;padding: 20px 0;}
+.nav_section ul {position: absolute;right: 10px;}
+.nav_section ul li {display: inline;line-height: 20px;margin: 0 5px 0 20px;border-bottom: 1px dotted white;}
+.nav_section ul li.noline {border-bottom: 0;}
+.nav_section ul li a {color: #fff;}
+.nav_section ul li a.selected {padding: 2px;background-color: #528036;}
+.nav_section ul li.first {border: none;}
+.content .title {margin: 50px 30px 20px 70px;}
+.content li {margin-bottom: 5px;}
+.contentBox {position: relative;overflow: hidden;border: 1px solid white;min-height: 200px;line-height: 25px;background: transparent url(img/contact-bg.png) repeat-x 0 0;}
+
+.zTreeInfo {display:none;width: 940px;position: absolute;}
+.zTreeInfo p {padding-bottom: 50px;}
+.zTreeInfo-left {float: left;width: 280px;height:300px;padding: 0 50px 60px 75px;background:url(img/zTreeIntroduction.jpg) no-repeat 30px 30px;}
+.zTreeInfo-right {position: relative;float: right;width: 475px;padding: 0 50px 60px 0;}
+.zTreeInfo-right li {font-size: 12px;list-style-type: disc;}
+
+.license {display:none;width: 940px;position: absolute;}
+
+.donateInfo {display:block;width: 940px;position: absolute;}
+
+.links {display:none;width: 940px;position: absolute;}
+.links .content {float: left;width: 160px;height:200px;padding: 0 10px 10px 2px;text-align: center;}
+.links .content.first {margin-left: 30px;}
+
+.contact {display:none;width: 940px;position: absolute;}
+.contact .myhome { position: absolute; top:10px; left:620px; width:300px; height:266px; background: transparent url(img/myhome.gif) scroll no-repeat 0 0;}
+
+.siteTag {position: absolute;left: -16px;top: 109px;z-index: 10;width: 65px;height: 46px;padding:0;margin:0 10px 0 0;
+		 vertical-align:middle;border:0 none;background: transparent url(img/siteTag.png) scroll no-repeat 0 0;}
+.siteTag.tag_zTreeInfo {background-position: 0 0}
+.siteTag.tag_license {background-position: 0 -46px}
+.siteTag.tag_donate {background-position: 0 -92px}
+.siteTag.tag_contact {background-position: 0 -138px}
+
+.apiContent {width: 940px;}
+.apiContent .right {float: right;padding-right: 100px;}
+.apiContent .left {float: left;padding-right: 20px;border-right: 1px dotted silver;}
+.api_setting {position: relative;margin:20px 0 20px 20px;}
+.api_function {position: relative;margin:20px 0 20px 30px;padding-right: 10px;}
+.api_content_title {text-align: center;font-weight: bold;}
+
+.demoContent {width: 940px;}
+.demoContent .right {float: right;padding: 20px;width: 600px;}
+.demoContent .left {float: left;padding: 20px;}
+.demoContent iframe {width:600px;min-height: 530px;}
+
+.faqContent {width: 940px;}
+.faqContent .right {float: right;padding: 20px;width: 600px;}
+.faqContent .left {float: left;padding: 20px;}
+.faqContent iframe {width:600px;min-height: 300px;}
+
+.baby_overlay_tmp {position: absolute;top:0; left:-5000px;display:block;visibility: hidden;width:640px;font-size:11px;}
+.baby_overlay_tmp .details {padding: 20px;}
+.baby_overlay {display:none;position:absolute;z-index:99;left:0; top:0;width:640px;color:#fff;font-size:11px;}
+.baby_overlay .content {width:100%; height:100px;overflow: hidden;background: transparent url(img/overlay_bg.png) scroll repeat 0 0;}
+.baby_overlay .details {padding:0 20px 20px 20px;}
+.baby_overlay .close {background-image:url(img/close.png);position:absolute; right:5px; top:5px;cursor:pointer;height:36px;width:36px;}
+.baby_overlay_arrow {background-image:url(img/overlay_arrow.png);background-position:0 0;position:absolute;height:40px;width:40px;left: -40px;}
+.baby_overlay_arrow.reverse {background-position:0 -40px;}
+
+/* Footer */
+.footer {position: relative;min-width: 1000px;font: 14px/24px arial, helvetica, sans-serif;}
+.footer ul {position:absolute;left: 0px;border:1px solid #393939;background:#262626;padding:12px 0px;line-height: 18px;display: none;list-style: none;}
+.footer ul li a {display:block;padding: 2px 15px;color: #9c9c9c;text-indent: 0;}
+.footer ul li a:hover {text-decoration:none;color: #fff;}
+.footer-logo {position:absolute;margin: 10px 0 0 30px;width:122px; height:24px;top:0; left:0;background: transparent url(img/footer-logo.png) no-repeat 0 0;}
+.footer_mii {position: absolute;right: 558px;top: 8px;z-index: 10;padding: 4px 0;}
+.footer_mii a {font-size:10px;color:#649140}
+.footer_mii a:hover {color:#B6D76F}
+.footer_siteMap {position: absolute;right: 358px;top: 8px;width: 155px;z-index: 10;padding: 4px 0;}
+.footer_siteMap .footer_siteMap_header {width:155px;text-indent: -9999px;background: transparent url(img/footer_siteMap.gif) no-repeat 0 0;}
+.footer_siteMap ul {top:-202px;width:180px;}
+.footer_siteMap:hover ul {left: 0}
+.footer_contact {position: absolute;right: 193px;top: 8px;width: 155px;z-index: 10;padding: 4px 0;}
+.footer_contact .footer_contact_header {width:155px;text-indent: -9999px;background: transparent url(img/footer_contact.gif) no-repeat 0px 0px;}
+.footer_contact ul {top:-113px;width:153px;}
+.footer_contact:hover ul {left: 0}
+.footer_download {position: absolute;right: 60px;top: 8px;width: 123px;z-index: 10;padding: 4px 0;}
+.footer_download .footer_download_header {width:123px;text-indent: -9999px;background: transparent url(img/footer_download.png) no-repeat 0px 0px;}
+.footer_download ul {top:-113px;width:140px;}
+.footer_download:hover ul {left: 0}
+
+/* button icon */
+button {vertical-align:middle;border:0 none;background: transparent no-repeat 0 0 scroll;}
+
+.shortcuts button.ico {width:24px; height:24px;padding:0; margin:0 10px 0 0;background-image:url(img/menuIcon.png)}
+.shortcuts button.home {background-position: 0 0}
+.shortcuts button.demo {background-position: 0 -24px}
+.shortcuts button.api {background-position: 0 -48px}
+.shortcuts button.faq {background-position: 0 -72px}
+.shortcuts button.donate {background-position: 0 -144px}
+.shortcuts button.download {background-position: 0 -96px}
+.shortcuts button.face {background-position: 0 -120px}
+.shortcuts button.cn {width:48px; height:24px;padding:0; margin:0 10px 0 0;background-image:url(img/chinese.png)}
+.shortcuts button.en {width:48px; height:24px;padding:0; margin:0 10px 0 0;background-image:url(img/english.png)}
+
+.content button.ico {width:24px; height:24px;padding:0; margin:0 10px 0 0;}
+
+.content button.ico16 {width:16px; height:16px;padding:0; margin:0 5px 0 0;background-image:url("img/apiMenu.png");}
+button.z_core {margin-top: -4px;background-position:0 0;}
+button.z_check {margin-top: -4px;background-position:0 -16px;}
+button.z_edit {margin-top: -4px;background-position:0 -32px;}
+button.z_hide {margin-top: -4px;background-position:0 -64px;}
+button.z_search {margin-top: -4px;background-position:0 -48px;}
+button.searchPrev {margin-top: -4px;background-position:-16px 0;cursor:pointer}
+button.searchNext {margin-top: -4px;background-position:-16px -16px;cursor:pointer}
+button.searchPrev.disabled {margin-top: -4px;background-position:-16px -32px;cursor:auto}
+button.searchNext.disabled {margin-top: -4px;background-position:-16px -48px;cursor:auto}
+input.search {margin:0;padding:2px 0; border:0;}
+input.searchKey {width:150px;}
+input.searchResult {margin-left:-3px;width:65px;text-align:right;background-color:white;color:#707070}
+input.searchResult.noResult {background-color:#ff6666;color:black}
+.baby_overlay div.overlaySearch {text-align:right;padding-right:50px;padding-top:12px;}
+
+/* api overlay*/
+.apiDetail .topLine {border-top: 1px dashed #376B29;margin-top: 5px;padding-top: 5px;}
+.apiDetail .highlight_red {color:#A60000;}
+.apiDetail .highlight_green {color:#A7F43D;}
+.apiDetail h1, .apiDetail h2, .apiDetail h3, .apiDetail h4, .apiDetail h5, .apiDetail h6 {color: white;padding: 0;}
+.apiDetail h2 {color: #A7F43D;margin: 5px auto;padding: 5px;font-size: 20px;}
+.apiDetail h2 span {font-size: 14px;float: right;font-weight: normal;margin: 2px 20px 0 0;vertical-align: bottom;}
+.apiDetail h2 span.path {float: left;margin: 2px 0 0 0;vertical-align: bottom;}
+.apiDetail h3 {margin: 5px auto;padding: 5px;font-size: 14px;font-weight: normal;}
+.apiDetail h3 span.h3_info {margin-left: 20px;font-size: 12px;}
+.apiDetail h4 {margin: 0 auto;padding: 0 5px;font-size: 12px;font-weight: normal;line-height: 16px;}
+.apiDetail .desc h4 {color: black;}
+.apiDetail h4 b{width: 150px;display:inline-block;}
+.apiDetail h4 span{width: 230px;display:inline-block;}
+
+.apiDetail pre, .apiDetail .desc {background: #E8FCD6;color: black;margin: 10px;padding: 10px;display: block;}
+.apiDetail pre {word-wrap: break-word;}
+.apiDetail p{margin-left: 5px;padding: 0;}
+.apiDetail .longdesc {margin-top: 5px;}
+.apiDetail .longdesc p{font-size: 12px;line-height:1.5;margin:3px 0;}
+.apiDetail .longdesc b{font-size: 14px;}
+.apiDetail table {border-collapse:collapse;}
+.apiDetail table td {border:1px solid silver;text-align: center;vertical-align: middle;}
+.apiDetail table thead td {font-weight: bold}
+
+.apiDetail button {width:16px; height:16px; vertical-align:middle; border:0 none; cursor: pointer;
+	background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
+	background-image:url("zTreeStyle/img/zTreeStandard.png");}
+
+.apiDetail button.chk {width:13px; height:13px; margin:0 3px 2px 0; cursor: auto}
+.apiDetail button.chk.checkbox_false_full {background-position:0 0}
+.apiDetail button.chk.checkbox_false_full_focus {background-position:0 -14px}
+.apiDetail button.chk.checkbox_false_part {background-position:0 -28px}
+.apiDetail button.chk.checkbox_false_part_focus {background-position:0 -42px}
+.apiDetail button.chk.checkbox_true_full {background-position:-14px 0}
+.apiDetail button.chk.checkbox_true_full_focus {background-position:-14px -14px}
+.apiDetail button.chk.checkbox_true_part {background-position:-14px -28px}
+.apiDetail button.chk.checkbox_true_part_focus {background-position:-14px -42px}
+.apiDetail button.chk.radio_false_full {background-position:-28px 0}
+.apiDetail button.chk.radio_false_full_focus {background-position:-28px -14px}
+.apiDetail button.chk.radio_false_part {background-position:-28px -28px}
+.apiDetail button.chk.radio_false_part_focus {background-position:-28px -42px}
+.apiDetail button.chk.radio_true_full {background-position:-42px 0}
+.apiDetail button.chk.radio_true_full_focus {background-position:-42px -14px}
+.apiDetail button.chk.radio_true_part {background-position:-42px -28px}
+.apiDetail button.chk.radio_true_part_focus {background-position:-42px -42px}

+ 23 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/common_ie6.css

@@ -0,0 +1,23 @@
+* html{
+/*	background-image:url(about:blank);*/
+	background-attachment:fixed;
+}
+html pre {word-wrap: break-word}
+.header {background-image: none;background-color: #F0F6E4;}
+
+.ieSuggest {display:block;}
+.shortcuts button.cn {filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='apiCss/img/chinese.png');background-image: none;}
+.shortcuts button.en {filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='apiCss/img/english.png');background-image: none;}
+
+.light-bulb {filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='apiCss/img/lightbulb.png');background-image: none;}
+.contentBox {background-image: none;background-color: #F0F6E4;}
+.zTreeInfo {background-image: none;background-color: #F0F6E4;}
+
+.content button.ico16 {*background-image:url("img/apiMenu.gif")}
+.siteTag {background-image: none;}
+.apiContent .right {float: right;padding-right: 50px;}
+
+div.baby_overlay {background-color: #3C6E31;background-image:none;color:#fff;}
+div.baby_overlay .close {filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='apiCss/img/overlay_close_IE6.gif');background-image: none;}
+.baby_overlay_arrow {background-image:url(img/overlay_arrow.gif);}
+.apiDetail button {background-image:url("img/zTreeStandard.gif")}

BIN
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/img/apiMenu.gif


BIN
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/img/apiMenu.png


BIN
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/img/background.jpg


BIN
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/img/chinese.png


BIN
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/img/close.png


BIN
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/img/contact-bg.png


BIN
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/img/english.png


BIN
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/img/header-bg.png


BIN
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/img/lightbulb.png


BIN
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/img/overlay_arrow.gif


BIN
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/img/overlay_arrow.png


BIN
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/img/overlay_bg.png


BIN
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/img/overlay_close_IE6.gif


BIN
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/img/zTreeStandard.gif


BIN
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/img/zTreeStandard.png


Fichier diff supprimé car celui-ci est trop grand
+ 18 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/jquery-1.6.2.min.js


Fichier diff supprimé car celui-ci est trop grand
+ 70 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/jquery.ztree.core-3.5.js


+ 49 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/apiCss/zTreeStyleForApi.css

@@ -0,0 +1,49 @@
+/*-------------------------------------
+zTree Style
+
+version:	3.0
+author:		Hunter.z
+email:		hunter.z@263.net
+website:	http://code.google.com/p/jquerytree/
+
+-------------------------------------*/
+
+.ztree * {padding:0; margin:0; font-size:12px; font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif}
+.ztree {margin:0; padding:5px; color:#333}
+.ztree li{padding:0; margin:0; list-style:none; line-height:14px; text-align:left; white-space:nowrap}
+.ztree li ul{ margin:0; padding:0 0 0 18px}
+.ztree li ul.line{ background:url(./img/line_conn.gif) 0 0 repeat-y;}
+
+.ztree li a {padding:1px 3px 0 0; margin:0; cursor:pointer; color:#333; height:17px; text-decoration:none; vertical-align:top; display: inline-block}
+.ztree li a:hover {text-decoration:none}
+.ztree li a.curSelectedNode {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid;}
+.ztree li a.curSelectedNode_Edit {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8; filter:alpha(opacity=80)}
+.ztree li a.tmpTargetNode_inner {padding-top:0px; background-color:#316AC5; color:white; height:16px; border:1px #316AC5 solid; opacity:0.8; filter:alpha(opacity=80)}
+.ztree li a.tmpTargetNode_prev {}
+.ztree li a.tmpTargetNode_next {}
+.ztree li a input.rename {height:14px; width:80px; padding:0; margin:0;
+	font-size:12px; border:1px #7EC4CC solid; *border:0px}
+.ztree li span {line-height:16px; margin-right: 2px}
+.ztree li span.button {line-height:0; margin:0;width:16px; height:16px; display: inline-block; vertical-align:middle;
+	border:0 none; cursor: pointer;
+	background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
+	background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")}
+
+.ztree li span.button.switch {width:1px; height:18px; visibility: hidden}
+
+.zTreeDragUL {margin:0; padding:0; position:absolute; background-color:#cfcfcf; border:1px #00B83F dotted; opacity:0.8; filter:alpha(opacity=80)}
+.zTreeMask {z-index:10000; background-color:#cfcfcf; opacity:0.0; filter:alpha(opacity=0); position:absolute}
+
+/* level 等级样式*/
+/*.ztree li button.level0 {
+	display:none;
+}
+.ztree li ul.level0 {
+	padding:0;
+	background:none;
+}*/
+
+.ztree li span.button.core_ico_docu{margin-right:2px; background-position:-126px 0; vertical-align:top; *vertical-align:middle}
+.ztree li span.button.check_ico_docu{margin-right:2px; background-position:-126px -16px; vertical-align:top; *vertical-align:middle}
+.ztree li span.button.edit_ico_docu{margin-right:2px; background-position:-126px -32px; vertical-align:top; *vertical-align:middle}
+.ztree li span.button.hide_ico_docu{margin-right:2px; background-position:-160px 0; vertical-align:top; *vertical-align:middle}

+ 13 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/fn.zTree._z.html

@@ -0,0 +1,13 @@
+<div class="apiDetail">
+<div>
+	<h2><span>JSON</span><span class="path">$.fn.zTree.</span>_z</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>zTree v3.x 内部的全部方法都可以通过 $.fn.zTree._z 进行调用,开放出来是为了更便于大家开发制作自己的 zTree 插件。 </p>
+			<p class="highlight_red">如无特殊需求请勿使用此对象,以及修改此对象内部的各个函数。</p>
+		</div>
+	</div>
+</div>
+</div>

+ 28 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/fn.zTree.destroy.html

@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+	<h2><span>Function(treeId)</span><span class="path">$.fn.zTree.</span>destroy</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>从 zTree v3.4 开始提供销毁 zTree 的方法。 </p>
+			<p>1、用此方法可以销毁指定 treeId 的 zTree,也可以销毁当前页面全部的 zTree。</p>
+			<p class="highlight_red">2、销毁指定 treeId 的 zTree 也可以使用 zTreeObj.destroy() 方法。</p>
+			<p class="highlight_red">3、重新使用已经被销毁的树,必须要使用 init 方法进行初始化。</p>
+		</div>
+	</div>
+	<h3>Function 参数说明</h3>
+	<div class="desc">
+	<h4><b>treeId</b><span>String</span></h4>
+	<p>zTree 的 DOM 容器的 id</p>
+	<p class="highlight_red">省略 treeId,表示销毁当前页面全部的 zTree</p>
+	<h4 class="topLine"><b>返回值</b><span>无</span></h4>
+	<p>目前无任何返回值</p>
+	</div>
+	<h3>function 举例</h3>
+	<h4>1. 销毁 id 为 "treeDemo" 的 zTree</h4>
+	<pre xmlns=""><code>$.fn.zTree.destroy("treeDemo");</code></pre>
+	<h4>2. 销毁全部 的 zTree</h4>
+	<pre xmlns=""><code>$.fn.zTree.destroy();</code></pre>
+</div>
+</div>

+ 24 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/fn.zTree.getZTreeObj.html

@@ -0,0 +1,24 @@
+<div class="apiDetail">
+<div>
+	<h2><span>Function(treeId)</span><span class="path">$.fn.zTree.</span>getZTreeObj</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>zTree v3.x 专门提供的根据 treeId 获取 zTree 对象的方法。 </p>
+			<p class="highlight_red">必须在初始化 zTree 以后才可以使用此方法。</p>
+			<p>有了这个方法,用户不再需要自己设定全局变量来保存 zTree 初始化后得到的对象了,而且在所有回调函数中全都会返回 treeId 属性,用户可以随时使用此方法获取需要进行操作的 zTree 对象</p>
+		</div>
+	</div>
+	<h3>Function 参数说明</h3>
+	<div class="desc">
+	<h4><b>treeId</b><span>String</span></h4>
+	<p>zTree 的 DOM 容器的 id</p>
+	<h4 class="topLine"><b>返回值</b><span>JSON</span></h4>
+	<p>zTree 对象,提供操作 zTree 的各种方法,对于通过 js 操作 zTree 来说必须通过此对象</p>
+	</div>
+	<h3>function 举例</h3>
+	<h4>1. 获取 id 为 tree 的 zTree 对象</h4>
+	<pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");</code></pre>
+</div>
+</div>

+ 74 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/fn.zTree.init.html

@@ -0,0 +1,74 @@
+<div class="apiDetail">
+<div>
+	<h2><span>Function(obj, zSetting, zNodes)</span><span class="path">$.fn.zTree.</span>init</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>zTree 初始化方法,创建 zTree 必须使用此方法</p>
+			<p>1、页面需要进行 W3C 申明,例如:&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"&nbsp;&nbsp; &nbsp;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;。</p>
+			<p>2、需要首先加载 jquery-1.4.2.js 或其他更高版本的 jQuery 。</p>
+			<p>3、需要加载 jquery-ztree.core-3.0.js,如果需要用到 编辑功能 或 checkbox / radio 还需要分别加载 jquery-ztree.exedit-3.0.js 和 jquery-ztree.excheck-3.0.js 。</p>
+			<p>4、需要加载 zTreeStyle.css 以及 zTreeStyle 目录下的 img 文件。</p>
+			<p>5、如果需要使用自定义图标请参考相应的Demo。</p>
+			<p>6、请注意设置 zTree 的容器样式 class="ztree",其中 "ztree" 这个 className,可以根据需要随意修改,别忘了修改 css 中对应名字就是了,对于容器如果需要增加其他特殊样式,可根据自己的需要进行修改。</p>
+		</div>
+	</div>
+	<h3>Function 参数说明</h3>
+	<div class="desc">
+	<h4><b>obj</b><span>jQuery Object</span></h4>
+	<p>用于展现 zTree 的 DOM 容器</p>
+	<h4 class="topLine"><b>zSetting</b><span>JSON</span></h4>
+	<p>zTree 的配置数据,具体请参考 “setting 配置详解”中的各个属性详细说明</p>
+	<h4 class="topLine"><b>zNodes</b><span>Array(JSON) / JSON</span></h4>
+	<p>zTree 的节点数据,具体请参考 “treeNode 节点数据详解”中的各个属性详细说明</p>
+	<p class="highlight_red">1、v3.x 支持单独添加一个节点,即如果只新增一个节点,不用必须包在数组中</p>
+	<p class="highlight_red">2、如果需要异步加载根节点,可以设置为 null 或 [ ]</p>
+	<p class="highlight_red">3、使用简单数据模式,请参考 setting.data.simpleData 内的属性说明</p>
+	<h4 class="topLine"><b>返回值</b><span>JSON</span></h4>
+	<p>zTree 对象,提供操作 zTree 的各种方法,对于通过 js 操作 zTree 来说必须通过此对象</p>
+	<p class="highlight_red">如果不需要自行设定全局变量保存,可以利用 $.fn.zTree.getZTreeObj 方法随时获取</p>
+	</div>
+	<h3>setting & function 举例</h3>
+	<h4>1. 简单创建 zTree 演示</h4>
+	<pre xmlns=""><code>&lt;!DOCTYPE html&gt;
+&lt;HTML&gt;
+ &lt;HEAD&gt;
+  &lt;TITLE&gt; ZTREE DEMO &lt;/TITLE&gt;
+  &lt;meta http-equiv="content-type" content="text/html; charset=UTF-8"&gt;
+  &lt;link rel="stylesheet" href="zTreeStyle/zTreeStyle.css" type="text/css"&gt;
+  &lt;script type="text/javascript" src="jquery-1.4.2.js"&gt;&lt;/script&gt;
+  &lt;script type="text/javascript" src="jquery.ztree.core-3.5.js"&gt;&lt;/script&gt;
+&lt;!--
+  &lt;script type="text/javascript" src="jquery.ztree.excheck-3.5.js"&gt;&lt;/script&gt;
+  &lt;script type="text/javascript" src="jquery.ztree.exedit-3.5.js"&gt;&lt;/script&gt;
+--&gt;
+  &lt;SCRIPT type="text/javascript" &gt;
+	var zTreeObj,
+	setting = {
+		view: {
+			selectedMulti: false
+		}
+	},
+	zTreeNodes = [
+		{"name":"网站导航", open:true, children: [
+			{ "name":"google", "url":"http://g.cn", "target":"_blank"},
+			{ "name":"baidu", "url":"http://baidu.com", "target":"_blank"},
+			{ "name":"sina", "url":"http://www.sina.com.cn", "target":"_blank"}
+			]
+		}
+	];
+
+	$(document).ready(function(){
+		zTreeObj = $.fn.zTree.init($("#tree"), setting, zTreeNodes);
+
+	});
+  &lt;/SCRIPT&gt;
+ &lt;/HEAD&gt;
+
+&lt;BODY&gt;
+&lt;ul id="tree" class="ztree" style="width:230px; overflow:auto;"&gt;&lt;/ul&gt;
+ &lt;/BODY&gt;
+&lt;/HTML&gt;</code></pre>
+</div>
+</div>

+ 39 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.async.autoParam.html

@@ -0,0 +1,39 @@
+<div class="apiDetail">
+<div>
+	<h2><span>Array(String)</span><span class="path">setting.async.</span>autoParam</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>异步加载时需要自动提交父节点属性的参数。<span class="highlight_red">[setting.async.enable = true 时生效]</span></p>
+			<p>默认值:[ ]</p>
+		</div>
+	</div>
+	<h3>Array(String) 格式说明</h3>
+	<div class="desc">
+	<p>1、将需要作为参数提交的属性名称,制作成 Array 即可,例如:["id", "name"]</p>
+	<p>2、可以设置提交时的参数名称,例如 server 只接受 zId : ["id=zId"]</p>
+	</div>
+	<h3>setting 举例</h3>
+	<h4>1. 设置 id 属性为自动提交的参数</h4>
+	<pre xmlns=""><code>var setting = {
+	async: {
+		enable: true,
+		url: "http://host/getNode.php",
+		autoParam: ["id"]
+	}
+};
+假设 异步加载 父节点(node = {id:1, name:"test"}) 的子节点时,将提交参数 id=1
+......</code></pre>
+	<h4>2. 设置 id 属性作为 zId 成为自动提交的参数</h4>
+	<pre xmlns=""><code>var setting = {
+	async: {
+		enable: true,
+		url: "http://host/getNode.php",
+		autoParam: ["id=zId"]
+	}
+};
+假设 对父节点 node = {id:1, name:"test"},进行异步加载时,将提交参数 zId=1
+......</code></pre>
+</div>
+</div>

+ 29 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.async.contentType.html

@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+	<h2><span>String</span><span class="path">setting.async.</span>contentType</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>Ajax 提交参数的数据类型。<span class="highlight_red">[setting.async.enable = true 时生效]</span></p>
+			<p>默认值:"application/x-www-form-urlencoded"</p>
+		</div>
+	</div>
+	<h3>String 格式说明</h3>
+	<div class="desc">
+	<p> contentType = "application/x-www-form-urlencoded" 可以满足绝大部分请求,按照标准的 Form 格式提交参数</p>
+	<p> contentType = "application/json" 可以满足 .Net 的编程需要,按照 JSON 格式提交参数</p>
+	</div>
+	<h3>setting 举例</h3>
+	<h4>1. 设置 Ajax 提交参数的数据类型为 JSON 格式</h4>
+	<pre xmlns=""><code>var setting = {
+	async: {
+		enable: true,
+		contentType: "application/json",
+		url: "http://host/getNode.php",
+		autoParam: ["id", "name"]
+	}
+};
+......</code></pre>
+</div>
+</div>

+ 45 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.async.dataFilter.html

@@ -0,0 +1,45 @@
+<div class="apiDetail">
+<div>
+	<h2><span>Function(treeId, parentNode, responseData)</span><span class="path">setting.async.</span>dataFilter</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>用于对 Ajax 返回数据进行预处理的函数。<span class="highlight_red">[setting.async.enable = true 时生效]</span></p>
+			<p>默认值:null</p>
+		</div>
+	</div>
+	<h3>Function 参数说明</h3>
+	<div class="desc">
+	<h4><b>treeId</b><span>String</span></h4>
+	<p>对应 zTree 的 <b class="highlight_red">treeId</b>,便于用户操控</p>
+	<h4 class="topLine"><b>parentNode</b><span>JSON</span></h4>
+	<p>进行异步加载的父节点 JSON 数据对象</p>
+	<p class="highlight_red">对根进行异步加载时,parentNode = null</p>
+	<h4 class="topLine"><b>responseData</b><span>Array(JSON) / JSON / String</span></h4>
+	<p>异步加载获取到的数据转换后的 Array(JSON) / JSON / String 数据对象</p>
+	<p class="highlight_red">v3.4开始 支持 XML 数据格式的 String</p>
+	<h4 class="topLine"><b>返回值</b><span>Array(JSON) / JSON</span></h4>
+	<p>返回值是 zTree 支持的JSON 数据结构即可。</p>
+	<p class="highlight_red">v3.x 支持单个 JSON 节点数据进行加载</p>
+	</div>
+	<h3>setting & function 举例</h3>
+	<h4>1. 修改异步获取到的节点name属性</h4>
+	<pre xmlns=""><code>function ajaxDataFilter(treeId, parentNode, responseData) {
+    if (responseData) {
+      for(var i =0; i < responseData.length; i++) {
+        responseData[i].name += "_filter";
+      }
+    }
+    return responseData;
+};
+var setting = {
+	async: {
+		enable: true,
+		url: "http://host/getNode.php",
+		dataFilter: ajaxDataFilter
+	}
+};
+......</code></pre>
+</div>
+</div>

+ 29 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.async.dataType.html

@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+	<h2><span>String</span><span class="path">setting.async.</span>dataType</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>Ajax 获取的数据类型。<span class="highlight_red">[setting.async.enable = true 时生效]</span></p>
+			<p>默认值:"text"</p>
+		</div>
+	</div>
+	<h3>String 格式说明</h3>
+	<div class="desc">
+	<p> dataType = "text" 可以满足绝大部分请求</p>
+	<p class="highlight_red">其余 dataType 类型请参考 jQuery ajax 中的 dataType 参数</p>
+	</div>
+	<h3>setting 举例</h3>
+	<h4>1. 设置 Ajax 获取的数据类型为 纯文本</h4>
+	<pre xmlns=""><code>var setting = {
+	async: {
+		enable: true,
+		dataType: "text",
+		url: "http://host/getNode.php",
+		autoParam: ["id", "name"]
+	}
+};
+......</code></pre>
+</div>
+</div>

+ 30 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.async.enable.html

@@ -0,0 +1,30 @@
+<div class="apiDetail">
+<div>
+	<h2><span>Boolean</span><span class="path">setting.async.</span>enable</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>设置 zTree 是否开启异步加载模式</p>
+			<p>默认值:false</p>
+		</div>
+	</div>
+	<h3>Boolean 格式说明</h3>
+	<div class="desc">
+	<p> true 表示 开启 异步加载模式</p>
+	<p> false 表示 关闭 异步加载模式</p>
+	<p class="highlight_red">如果设置为 true,请务必设置 setting.async 内的其它参数。</p>
+	<p class="highlight_red">如果需要根节点也异步加载,初始化时 treeNodes 参数设置为 null 即可。</p>
+	</div>
+	<h3>setting 举例</h3>
+	<h4>1. 需要开启异步加载模式</h4>
+	<pre xmlns=""><code>var setting = {
+	async: {
+		enable: true,
+		url: "http://host/getNode.php",
+		autoParam: ["id", "name"]
+	}
+};
+......</code></pre>
+</div>
+</div>

+ 40 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.async.otherParam.html

@@ -0,0 +1,40 @@
+<div class="apiDetail">
+<div>
+	<h2><span>Array(String) / JSON</span><span class="path">setting.async.</span>otherParam</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>Ajax 请求提交的静态参数键值对。<span class="highlight_red">[setting.async.enable = true 时生效]</span></p>
+			<p>默认值:[ ]</p>
+		</div>
+	</div>
+	<h3>Array(String) 格式说明</h3>
+	<div class="desc">
+	<p>可以为空[ ],如果有 key,则必须存在 value。 例如:[key, value]</p>
+	</div>
+	<h3>JSON 格式说明</h3>
+	<div class="desc">
+	<p>直接用 JSON 格式制作键值对,例如:{ key1:value1, key2:value2 }</p>
+	</div>
+	<h3>setting 举例</h3>
+	<h4>1. 设置 Array(String) 格式的参数</h4>
+	<pre xmlns=""><code>var setting = {
+	async: {
+		enable: true,
+		url: "http://host/getNode.php",
+		otherParam: ["id", "1", "name", "test"]
+	}
+};
+进行异步加载时,将提交参数 id=1&name=test</code></pre>
+	<h4>2. 设置 JSON 格式的参数</h4>
+	<pre xmlns=""><code>var setting = {
+	async: {
+		enable: true,
+		url: "http://host/getNode.php",
+		otherParam: { "id":"1", "name":"test"}
+	}
+};
+进行异步加载时,将提交参数 id=1&name=test</code></pre>
+</div>
+</div>

+ 30 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.async.type.html

@@ -0,0 +1,30 @@
+<div class="apiDetail">
+<div>
+	<h2><span>String</span><span class="path">setting.async.</span>type</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>Ajax 的 http 请求模式。<span class="highlight_red">[setting.async.enable = true 时生效]</span></p>
+			<p>默认值:"post"</p>
+		</div>
+	</div>
+	<h3>String 格式说明</h3>
+	<div class="desc">
+	<p> type = "post" 表示异步加载采用 post 方法请求</p>
+	<p> type = "get" 表示异步加载采用 get 方法请求</p>
+	<p class="highlight_red">对应于 jQuery ajax 中的 type 参数</p>
+	</div>
+	<h3>setting 举例</h3>
+	<h4>1. 设置使用 get 方式请求数据</h4>
+	<pre xmlns=""><code>var setting = {
+	async: {
+		enable: true,
+		type: "get",
+		url: "http://host/getNode.php",
+		autoParam: ["id", "name"]
+	}
+};
+......</code></pre>
+</div>
+</div>

+ 50 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.async.url.html

@@ -0,0 +1,50 @@
+<div class="apiDetail">
+<div>
+	<h2><span>String / Function(treeId, treeNode)</span><span class="path">setting.async.</span>url</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>Ajax 获取数据的 URL 地址。<span class="highlight_red">[setting.async.enable = true 时生效]</span></p>
+			<p>默认值:""</p>
+		</div>
+	</div>
+	<h3>String 格式说明</h3>
+	<div class="desc">
+	<p>设置固定的异步加载 url 字符串,请注意地址的路径,确保页面能正常加载</p>
+	<p class="highlight_red">url 内也可以带参数,这些参数就只能是通过 get 方式提交了,并且请注意进行转码</p>
+	</div>
+	<h3>Function 参数说明</h3>
+	<div class="desc">
+	<h4><b>treeId</b><span>String</span></h4>
+	<p>对应 zTree 的 <b class="highlight_red">treeId</b>,便于用户操控</p>
+	<h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+	<p>需要异步加载子节点的的父节点 JSON 数据对象</p>
+	<p class="highlight_red">针对根进行异步加载时,treeNode = null</p>
+	<h4 class="topLine"><b>返回值</b><span>String</span></h4>
+	<p>返回值同 String 格式的数据</p>
+	</div>
+	<h3>setting & function 举例</h3>
+	<h4>1. 设置异步获取节点的 URL 为 nodes.php</h4>
+	<pre xmlns=""><code>var setting = {
+	async: {
+		enable: true,
+		url: "nodes.php",
+		autoParam: ["id", "name"]
+	}
+};
+......</code></pre>
+	<h4>2. 设置异步获取节点的 URL 为 function 动态获取</h4>
+	<pre xmlns=""><code>function getAsyncUrl(treeId, treeNode) {
+    return treeNode.isParent ? "nodes1.php" : "nodes2.php";
+};
+var setting = {
+	async: {
+		enable: true,
+		url: getAsyncUrl,
+		autoParam: ["id", "name"]
+	}
+};
+......</code></pre>
+</div>
+</div>

+ 35 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.beforeAsync.html

@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+	<h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeAsync</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>用于捕获异步加载之前的事件回调函数,zTree 根据返回值确定是否允许进行异步加载</p>
+			<p>默认值:null</p>
+		</div>
+	</div>
+	<h3>Function 参数说明</h3>
+	<div class="desc">
+	<h4><b>treeId</b><span>String</span></h4>
+	<p>对应 zTree 的 <b class="highlight_red">treeId</b>,便于用户操控</p>
+	<h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+	<p>进行异步加载的父节点 JSON 数据对象</p>
+	<p class="highlight_red">针对根进行异步加载时,treeNode = null</p>
+	<h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+	<p>返回值是 true / false</p>
+	<p class="highlight_red">如果返回 false,zTree 将不进行异步加载,也无法触发 onAsyncSuccess / onAsyncError 事件回调函数</p>
+	</div>
+	<h3>setting & function 举例</h3>
+	<h4>1. 禁止 id 为 1 的父节点进行异步加载操作</h4>
+	<pre xmlns=""><code>function zTreeBeforeAsync(treeId, treeNode) {
+    return (treeNode.id !== 1);
+};
+var setting = {
+	callback: {
+		beforeAsync: zTreeBeforeAsync
+	}
+};
+......</code></pre>
+</div>
+</div>

+ 34 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.beforeCheck.html

@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+	<h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeCheck</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>用于捕获 勾选 或 取消勾选 之前的事件回调函数,并且根据返回值确定是否允许 勾选 或 取消勾选 </p>
+			<p>默认值:null</p>
+		</div>
+	</div>
+	<h3>Function 参数说明</h3>
+	<div class="desc">
+	<h4><b>treeId</b><span>String</span></h4>
+	<p>对应 zTree 的 <b class="highlight_red">treeId</b>,便于用户操控</p>
+	<h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+	<p>进行 勾选 或 取消勾选 的节点 JSON 数据对象</p>
+	<h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+	<p>返回值是 true / false</p>
+	<p class="highlight_red">如果返回 false,将不会改变勾选状态,并且无法触发 onCheck 事件回调函数</p>
+	</div>
+	<h3>setting & function 举例</h3>
+	<h4>1. 禁止所有勾选操作,保持初始化的勾选状态</h4>
+	<pre xmlns=""><code>function zTreeBeforeCheck(treeId, treeNode) {
+    return false;
+};
+var setting = {
+	callback: {
+		beforeCheck: zTreeBeforeCheck
+	}
+};
+......</code></pre>
+</div>
+</div>

+ 49 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.beforeClick.html

@@ -0,0 +1,49 @@
+<div class="apiDetail">
+<div>
+	<h2><span>Function(treeId, treeNode, clickFlag)</span><span class="path">setting.callback.</span>beforeClick</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>用于捕获单击节点之前的事件回调函数,并且根据返回值确定是否允许单击操作</p>
+			<p>默认值:null</p>
+		</div>
+	</div>
+	<h3>Function 参数说明</h3>
+	<div class="desc">
+	<h4><b>treeId</b><span>String</span></h4>
+	<p>对应 zTree 的 <b class="highlight_red">treeId</b>,便于用户操控</p>
+	<h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+	<p>被单击的节点 JSON 数据对象</p>
+	<h4 class="topLine"><b>clickFlag</b><span>Number</span></h4>
+	<p>节点被点击后的选中操作类型,详细看下表</p>
+	<table width="100%" border="0" cellspacing="1" cellpadding="0">
+		<thead><tr><td>clickFlag</td><td title="是否允许多点选中">selectedMulti</td><td title="是否按下 Ctrl 或 Cmd 键">autoCancelSelected<br/>&&<br/>event.ctrlKey / metaKey</td><td title="节点当前选择状态">isSelected</td><td>选中操作</td></tr></thead>
+		<tbody>
+			<tr><td>1</td><td>true</td><td>false</td><td>false</td><td>普通选中</td></tr>
+			<tr><td>1</td><td>true</td><td>false</td><td>true</td><td>普通选中</td></tr>
+			<tr><td>2</td><td>true</td><td>true</td><td>false</td><td>追加选中</td></tr>
+			<tr><td>0</td><td>true</td><td>true</td><td>true</td><td>取消选中</td></tr>
+			<tr><td>1</td><td>false</td><td>false</td><td>false</td><td>普通选中</td></tr>
+			<tr><td>1</td><td>false</td><td>false</td><td>true</td><td>普通选中</td></tr>
+			<tr><td>1</td><td>false</td><td>true</td><td>false</td><td>普通选中</td></tr>
+			<tr><td>0</td><td>false</td><td>true</td><td>true</td><td>取消选中</td></tr>
+		</tbody>
+	</table>
+	<h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+	<p>返回值是 true / false</p>
+	<p class="highlight_red">如果返回 false,zTree 将不会选中节点,也无法触发 onClick 事件回调函数</p>
+	</div>
+	<h3>setting & function 举例</h3>
+	<h4>1. 禁止节点被选中</h4>
+	<pre xmlns=""><code>function zTreeBeforeClick(treeId, treeNode, clickFlag) {
+    return (treeNode.id !== 1);
+};
+var setting = {
+	callback: {
+		beforeClick: zTreeBeforeClick
+	}
+};
+......</code></pre>
+</div>
+</div>

+ 34 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.beforeCollapse.html

@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+	<h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeCollapse</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>用于捕获父节点折叠之前的事件回调函数,并且根据返回值确定是否允许折叠操作</p>
+			<p>默认值:null</p>
+		</div>
+	</div>
+	<h3>Function 参数说明</h3>
+	<div class="desc">
+	<h4><b>treeId</b><span>String</span></h4>
+	<p>对应 zTree 的 <b class="highlight_red">treeId</b>,便于用户操控</p>
+	<h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+	<p>要折叠的父节点 JSON 数据对象</p>
+	<h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+	<p>返回值是 true / false</p>
+	<p class="highlight_red">如果返回 false,zTree 将不会折叠节点,也无法触发 onCollapse 事件回调函数</p>
+	</div>
+	<h3>setting & function 举例</h3>
+	<h4>1. 禁止所有已展开的父节点折叠</h4>
+	<pre xmlns=""><code>function zTreeBeforeCollapse(treeId, treeNode) {
+    return false;
+};
+var setting = {
+	callback: {
+		beforeCollapse: zTreeBeforeCollapse
+	}
+};
+......</code></pre>
+</div>
+</div>

+ 36 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.beforeDblClick.html

@@ -0,0 +1,36 @@
+<div class="apiDetail">
+<div>
+	<h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeDblClick</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>用于捕获 zTree 上鼠标双击之前的事件回调函数,并且根据返回值确定触发 onDblClick 事件回调函数</p>
+			<p>默认值:null</p>
+		</div>
+	</div>
+	<h3>Function 参数说明</h3>
+	<div class="desc">
+	<h4><b>treeId</b><span>String</span></h4>
+	<p>对应 zTree 的 <b class="highlight_red">treeId</b>,便于用户操控</p>
+	<h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+	<p>鼠标双击时所在节点的 JSON 数据对象</p>
+	<p class="highlight_red">如果不在节点上,则返回 null</p>
+	<h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+	<p>返回值是 true / false</p>
+	<p class="highlight_red">如果返回 false,将仅仅无法触发 onDblClick 事件回调函数,对其他操作无任何影响</p>
+	<p class="highlight_red">此事件回调函数对双击节点展开功能无任何影响,如果需要设置请参考 setting.view.dblClickExpand 属性</p>
+	</div>
+	<h3>setting & function 举例</h3>
+	<h4>1. 禁止 onDblClick 事件</h4>
+	<pre xmlns=""><code>function zTreeBeforeDblClick(treeId, treeNode) {
+    return false;
+};
+var setting = {
+	callback: {
+		beforeDblClick: zTreeBeforeDblClick
+	}
+};
+......</code></pre>
+</div>
+</div>

+ 39 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.beforeDrag.html

@@ -0,0 +1,39 @@
+<div class="apiDetail">
+<div>
+	<h2><span>Function(treeId, treeNodes)</span><span class="path">setting.callback.</span>beforeDrag</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>用于捕获节点被拖拽之前的事件回调函数,并且根据返回值确定是否允许开启拖拽操作</p>
+			<p>默认值:null</p>
+		</div>
+	</div>
+	<h3>Function 参数说明</h3>
+	<div class="desc">
+	<h4><b>treeId</b><span>String</span></h4>
+	<p>被拖拽的节点 treeNodes 所在 zTree 的 <b class="highlight_red">treeId</b>,便于用户操控</p>
+	<h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+	<p>要被拖拽的节点 JSON 数据集合</p>
+	<p class="highlight_red">v3.x 允许多个同级节点同时被拖拽,因此将此参数修改为 Array(JSON)</p>
+	<p class="highlight_red">如果拖拽时多个被选择的节点不是同级关系,则只能拖拽鼠标当前所在位置的节点</p>
+	<h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+	<p>返回值是 true / false</p>
+	<p class="highlight_red">如果返回 false,zTree 将终止拖拽,也无法触发 onDrag / beforeDrop / onDrop 事件回调函数</p>
+	</div>
+	<h3>setting & function 举例</h3>
+	<h4>1. 禁止全部拖拽操作</h4>
+	<pre xmlns=""><code>function zTreeBeforeDrag(treeId, treeNodes) {
+    return false;
+};
+var setting = {
+	edit: {
+		enable: true
+	},
+	callback: {
+		beforeDrag: zTreeBeforeDrag
+	}
+};
+......</code></pre>
+</div>
+</div>

+ 37 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.beforeDragOpen.html

@@ -0,0 +1,37 @@
+<div class="apiDetail">
+<div>
+	<h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeDragOpen</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>用于捕获拖拽节点移动到折叠状态的父节点后,即将自动展开该父节点之前的事件回调函数,并且根据返回值确定是否允许自动展开操作</p>
+			<p>默认值:null</p>
+		</div>
+	</div>
+	<h3>Function 参数说明</h3>
+	<div class="desc">
+	<h4><b>treeId</b><span>String</span></h4>
+	<p>需要被展开的父节点 treeNode 所在 zTree 的 <b class="highlight_red">treeId</b>,便于用户操控</p>
+	<h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+	<p>要被自动展开的父节点 JSON 数据对象</p>
+	<h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+	<p>返回值是 true / false</p>
+	<p class="highlight_red">如果返回 false,zTree 将无法进行自动展开操作</p>
+	</div>
+	<h3>setting & function 举例</h3>
+	<h4>1. 禁止全部拖拽时的自动展开操作</h4>
+	<pre xmlns=""><code>function zTreeBeforeDragOpen(treeId, treeNode) {
+    return false;
+};
+var setting = {
+	edit: {
+		enable: true
+	},
+	callback: {
+		beforeDragOpen: zTreeBeforeDragOpen
+	}
+};
+......</code></pre>
+</div>
+</div>

+ 48 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.beforeDrop.html

@@ -0,0 +1,48 @@
+<div class="apiDetail">
+<div>
+	<h2><span>Function(treeId, treeNodes, targetNode, moveType, isCopy)</span><span class="path">setting.callback.</span>beforeDrop</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>用于捕获节点拖拽操作结束之前的事件回调函数,并且根据返回值确定是否允许此拖拽操作</p>
+			<p>默认值:null</p>
+			<p class="highlight_red">如未拖拽到有效位置,则不触发此回调函数,直接将节点恢复原位置</p>
+		</div>
+	</div>
+	<h3>Function 参数说明</h3>
+	<div class="desc">
+	<h4><b>treeId</b><span>String</span></h4>
+	<p>目标节点 targetNode 所在 zTree 的 <b class="highlight_red">treeId</b>,便于用户操控</p>
+	<h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+	<p>被拖拽的节点 JSON 数据集合</p>
+	<p class="highlight_red">无论拖拽操作为 复制 还是 移动,treeNodes 都是当前被拖拽节点的数据集合。</p>
+	<h4 class="topLine"><b>targetNode</b><span>JSON</span></h4>
+	<p>treeNodes 被拖拽放开的目标节点 JSON 数据对象。</p>
+	<p class="highlight_red">如果拖拽成为根节点,则 targetNode = null</p>
+	<h4 class="topLine"><b>moveType</b><span>String</span></h4>
+	<p>指定移动到目标节点的相对位置</p>
+	<p class="highlight_red">"inner":成为子节点,"prev":成为同级前一个节点,"next":成为同级后一个节点</p>
+	<h4 class="topLine"><b>isCopy</b><span>Boolean</span></h4>
+	<p>拖拽节点操作是 复制 或 移动</p>
+	<p class="highlight_red">true:复制;false:移动</p>
+	<h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+	<p>返回值是 true / false</p>
+	<p class="highlight_red">如果返回 false,zTree 将恢复被拖拽的节点,也无法触发 onDrop 事件回调函数</p>
+	</div>
+	<h3>setting & function 举例</h3>
+	<h4>1. 禁止将节点拖拽成为根节点</h4>
+	<pre xmlns=""><code>function zTreeBeforeDrop(treeId, treeNodes, targetNode, moveType) {
+    return !(targetNode == null || (moveType != "inner" && !targetNode.parentTId));
+};
+var setting = {
+	edit: {
+		enable: true
+	},
+	callback: {
+		beforeDrop: zTreeBeforeDrop
+	}
+};
+......</code></pre>
+</div>
+</div>

+ 38 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.beforeEditName.html

@@ -0,0 +1,38 @@
+<div class="apiDetail">
+<div>
+	<h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeEditName</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>用于捕获节点编辑按钮的 click 事件,并且根据返回值确定是否允许进入名称编辑状态</p>
+			<p class="highlight_red">此事件回调函数最主要是用于捕获编辑按钮的点击事件,然后触发自定义的编辑界面操作。</p>
+			<p>默认值:null</p>
+		</div>
+	</div>
+	<h3>Function 参数说明</h3>
+	<div class="desc">
+	<h4><b>treeId</b><span>String</span></h4>
+	<p>对应 zTree 的 <b class="highlight_red">treeId</b>,便于用户操控</p>
+	<h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+	<p>将要进入编辑名称状态的节点 JSON 数据对象</p>
+	<h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+	<p>返回值是 true / false</p>
+	<p class="highlight_red">如果返回 false,节点将无法进入 zTree 默认的编辑名称状态</p>
+	</div>
+	<h3>setting & function 举例</h3>
+	<h4>1. 禁止修改父节点的名称</h4>
+	<pre xmlns=""><code>function zTreeBeforeEditName(treeId, treeNode) {
+	return !treeNode.isParent;
+}
+var setting = {
+	edit: {
+		enable: true
+	},
+	callback: {
+		beforeEditName: zTreeBeforeEditName
+	}
+};
+......</code></pre>
+</div>
+</div>

+ 34 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.beforeExpand.html

@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+	<h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeExpand</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>用于捕获父节点展开之前的事件回调函数,并且根据返回值确定是否允许展开操作</p>
+			<p>默认值:null</p>
+		</div>
+	</div>
+	<h3>Function 参数说明</h3>
+	<div class="desc">
+	<h4><b>treeId</b><span>String</span></h4>
+	<p>对应 zTree 的 <b class="highlight_red">treeId</b>,便于用户操控</p>
+	<h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+	<p>要展开的父节点 JSON 数据对象</p>
+	<h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+	<p>返回值是 true / false</p>
+	<p class="highlight_red">如果返回 false,zTree 将不会展开节点,也无法触发 onExpand 事件回调函数</p>
+	</div>
+	<h3>setting & function 举例</h3>
+	<h4>1. 禁止所有已折叠的父节点展开</h4>
+	<pre xmlns=""><code>function zTreeBeforeExpand(treeId, treeNode) {
+    return false;
+};
+var setting = {
+	callback: {
+		beforeExpand: zTreeBeforeExpand
+	}
+};
+......</code></pre>
+</div>
+</div>

+ 35 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.beforeMouseDown.html

@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+	<h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeMouseDown</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>用于捕获 zTree 上鼠标按键按下之前的事件回调函数,并且根据返回值确定触发 onMouseDown 事件回调函数</p>
+			<p>默认值:null</p>
+		</div>
+	</div>
+	<h3>Function 参数说明</h3>
+	<div class="desc">
+	<h4><b>treeId</b><span>String</span></h4>
+	<p>对应 zTree 的 <b class="highlight_red">treeId</b>,便于用户操控</p>
+	<h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+	<p>鼠标按键按下时所在节点的 JSON 数据对象</p>
+	<p class="highlight_red">如果不在节点上,则返回 null</p>
+	<h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+	<p>返回值是 true / false</p>
+	<p class="highlight_red">如果返回 false,将仅仅无法触发 onMouseDown 事件回调函数,对其他操作无任何影响</p>
+	</div>
+	<h3>setting & function 举例</h3>
+	<h4>1. 禁止 onMouseDown 事件</h4>
+	<pre xmlns=""><code>function zTreeBeforeMouseDown(treeId, treeNode) {
+    return false;
+};
+var setting = {
+	callback: {
+		beforeMouseDown: zTreeBeforeMouseDown
+	}
+};
+......</code></pre>
+</div>
+</div>

+ 35 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.beforeMouseUp.html

@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+	<h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeMouseUp</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>用于捕获 zTree 上鼠标按键松开之前的事件回调函数,并且根据返回值确定触发 onMouseUp 事件回调函数</p>
+			<p>默认值:null</p>
+		</div>
+	</div>
+	<h3>Function 参数说明</h3>
+	<div class="desc">
+	<h4><b>treeId</b><span>String</span></h4>
+	<p>对应 zTree 的 <b class="highlight_red">treeId</b>,便于用户操控</p>
+	<h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+	<p>鼠标按键松开时所在节点的 JSON 数据对象</p>
+	<p class="highlight_red">如果不在节点上,则返回 null</p>
+	<h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+	<p>返回值是 true / false</p>
+	<p class="highlight_red">如果返回 false,将仅仅无法触发 onMouseUp 事件回调函数,对其他操作无任何影响</p>
+	</div>
+	<h3>setting & function 举例</h3>
+	<h4>1. 禁止 onMouseUp 事件</h4>
+	<pre xmlns=""><code>function zTreeBeforeMouseUp(treeId, treeNode) {
+    return false;
+};
+var setting = {
+	callback: {
+		beforeMouseUp: zTreeBeforeMouseUp
+	}
+};
+......</code></pre>
+</div>
+</div>

+ 37 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.beforeRemove.html

@@ -0,0 +1,37 @@
+<div class="apiDetail">
+<div>
+	<h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeRemove</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>用于捕获节点被删除之前的事件回调函数,并且根据返回值确定是否允许删除操作</p>
+			<p>默认值:null</p>
+		</div>
+	</div>
+	<h3>Function 参数说明</h3>
+	<div class="desc">
+	<h4><b>treeId</b><span>String</span></h4>
+	<p>对应 zTree 的 <b class="highlight_red">treeId</b>,便于用户操控</p>
+	<h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+	<p>将要删除的节点 JSON 数据对象</p>
+	<h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+	<p>返回值是 true / false</p>
+	<p class="highlight_red">如果返回 false,zTree 将不删除节点,也无法触发 onRemove 事件回调函数</p>
+	</div>
+	<h3>setting & function 举例</h3>
+	<h4>1. 禁止全部删除操作</h4>
+	<pre xmlns=""><code>function zTreeBeforeRemove(treeId, treeNode) {
+	return false;
+}
+var setting = {
+	edit: {
+		enable: true
+	},
+	callback: {
+		beforeRemove: zTreeBeforeRemove
+	}
+};
+......</code></pre>
+</div>
+</div>

+ 46 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.beforeRename.html

@@ -0,0 +1,46 @@
+<div class="apiDetail">
+<div>
+	<h2><span>Function(treeId, treeNode, newName, isCancel)</span><span class="path">setting.callback.</span>beforeRename</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>用于捕获节点编辑名称结束(Input 失去焦点 或 按下 Enter 键)之后,更新节点名称数据之前的事件回调函数,并且根据返回值确定是否允许更改名称的操作</p>
+			<p class="highlight_red">节点进入编辑名称状态后,按 ESC 键可以放弃当前修改,恢复原名称,取消编辑名称状态</p>
+			<p class="highlight_red">从 v3.5.13 开始,取消编辑状态也会触发此回调,根据 isCancel 参数判断</p>
+			<p>默认值:null</p>
+		</div>
+	</div>
+	<h3>Function 参数说明</h3>
+	<div class="desc">
+	<h4><b>treeId</b><span>String</span></h4>
+	<p>对应 zTree 的 <b class="highlight_red">treeId</b>,便于用户操控</p>
+	<h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+	<p>将要更改名称的节点 JSON 数据对象</p>
+	<h4 class="topLine"><b>newName</b><span>String</span></h4>
+	<p>修改后的新名称</p>
+	<h4 class="topLine"><b>isCancel</b><span>Boolean</span></h4>
+	<p>是否取消操作 (v3.5.13+)</p>
+	<p class="highlight_red">isCancel = true 表示取消编辑操作(按下 ESC 或 使用 cancelEditName 方法)</p>
+	<p class="highlight_red">isCancel = false 表示确认修改操作</p>
+	<h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+	<p>返回值是 true / false</p>
+	<p class="highlight_red">如果返回 false,zTree 将保持名称编辑状态,无法触发 onRename 事件回调函数,并且会导致屏蔽其它事件,直到修改名称使得 beforeRename 返回 true</p>
+	<p class="highlight_red">如果返回 false,不会让 input 输入框获取焦点,避免由于警告信息而导致反复触发 beforeRename。 请在关闭提示警告信息后,利用 editName 方法让 input 重新获取焦点。</p>
+	</div>
+	<h3>setting & function 举例</h3>
+	<h4>1. 禁止修改的名称的长度小于 5</h4>
+	<pre xmlns=""><code>function zTreeBeforeRename(treeId, treeNode, newName, isCancel) {
+	return newName.length > 5;
+}
+var setting = {
+	edit: {
+		enable: true
+	},
+	callback: {
+		beforeRename: zTreeBeforeRename
+	}
+};
+......</code></pre>
+</div>
+</div>

+ 35 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.beforeRightClick.html

@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+	<h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeRightClick</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>用于捕获 zTree 上鼠标右键点击之前的事件回调函数,并且根据返回值确定触发 onRightClick 事件回调函数</p>
+			<p>默认值:null</p>
+		</div>
+	</div>
+	<h3>Function 参数说明</h3>
+	<div class="desc">
+	<h4><b>treeId</b><span>String</span></h4>
+	<p>对应 zTree 的 <b class="highlight_red">treeId</b>,便于用户操控</p>
+	<h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+	<p>鼠标右键点击时所在节点的 JSON 数据对象</p>
+	<p class="highlight_red">如果不在节点上,则返回 null</p>
+	<h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+	<p>返回值是 true / false</p>
+	<p class="highlight_red">如果返回 false,将仅仅无法触发 onRightClick 事件回调函数,对其他操作无任何影响</p>
+	</div>
+	<h3>setting & function 举例</h3>
+	<h4>1. 禁止 onRightClick 事件</h4>
+	<pre xmlns=""><code>function zTreeBeforeRightClick(treeId, treeNode) {
+    return false;
+};
+var setting = {
+	callback: {
+		beforeRightClick: zTreeBeforeRightClick
+	}
+};
+......</code></pre>
+</div>
+</div>

+ 42 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.onAsyncError.html

@@ -0,0 +1,42 @@
+<div class="apiDetail">
+<div>
+	<h2><span class="path">setting.callback.</span>onAsyncError</h2>
+	<h2><span>Function(event, treeId, treeNode, XMLHttpRequest, textStatus, errorThrown)</span>&nbsp;</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>用于捕获异步加载出现异常错误的事件回调函数</p>
+			<p class="highlight_red">如果设置了 setting.callback.beforeAsync 方法,且返回 false,将无法触发 onAsyncSuccess / onAsyncError 事件回调函数。</p>
+			<p>默认值:null</p>
+		</div>
+	</div>
+	<h3>Function 参数说明</h3>
+	<div class="desc">
+	<h4><b>event</b><span>js event 对象</span></h4>
+	<p>标准的 js event 对象</p>
+	<h4 class="topLine"><b>treeId</b><span>String</span></h4>
+	<p>对应 zTree 的 <b class="highlight_red">treeId</b>,便于用户操控</p>
+	<h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+	<p>进行异步加载的父节点 JSON 数据对象</p>
+	<p class="highlight_red">针对根进行异步加载时,treeNode = null</p>
+	<h4 class="topLine"><b>XMLHttpRequest</b><span>String</span></h4>
+	<p>标准 XMLHttpRequest 对象,请参考 JQuery API 文档。</p>
+	<h4 class="topLine"><b>textStatus</b><span>String</span></h4>
+	<p>请求状态:success,error,请参考 JQuery API 文档。</p>
+	<h4 class="topLine"><b>errorThrown</b><span>String</span></h4>
+	<p>errorThrown 只有当异常发生时才会被传递,请参考 JQuery API 文档。</p>
+	</div>
+	<h3>setting & function 举例</h3>
+	<h4>1. 异步加载出现异常后,弹出错误信息</h4>
+	<pre xmlns=""><code>function zTreeOnAsyncError(event, treeId, treeNode, XMLHttpRequest, textStatus, errorThrown) {
+    alert(XMLHttpRequest);
+};
+var setting = {
+	callback: {
+		onAsyncError: zTreeOnAsyncError
+	}
+};
+......</code></pre>
+</div>
+</div>

+ 38 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.onAsyncSuccess.html

@@ -0,0 +1,38 @@
+<div class="apiDetail">
+<div>
+	<h2><span>Function(event, treeId, treeNode, msg)</span><span class="path">setting.callback.</span>onAsyncSuccess</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>用于捕获异步加载正常结束的事件回调函数</p>
+			<p class="highlight_red">如果设置了 setting.callback.beforeAsync 方法,且返回 false,将无法触发 onAsyncSuccess / onAsyncError 事件回调函数。</p>
+			<p>默认值:null</p>
+		</div>
+	</div>
+	<h3>Function 参数说明</h3>
+	<div class="desc">
+	<h4><b>event</b><span>js event 对象</span></h4>
+	<p>标准的 js event 对象</p>
+	<h4 class="topLine"><b>treeId</b><span>String</span></h4>
+	<p>对应 zTree 的 <b class="highlight_red">treeId</b>,便于用户操控</p>
+	<h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+	<p>进行异步加载的父节点 JSON 数据对象</p>
+	<p class="highlight_red">针对根进行异步加载时,treeNode = null</p>
+	<h4 class="topLine"><b>msg</b><span>String / Object</span></h4>
+	<p>异步获取的节点数据字符串,主要便于用户调试使用。</p>
+	<p class="highlight_red">实际数据类型会受 setting.async.dataType 的设置影响,请参考 JQuery API 文档。</p>
+	</div>
+	<h3>setting & function 举例</h3>
+	<h4>1. 异步加载成功后,弹出提示信息</h4>
+	<pre xmlns=""><code>function zTreeOnAsyncSuccess(event, treeId, treeNode, msg) {
+    alert(msg);
+};
+var setting = {
+	callback: {
+		onAsyncSuccess: zTreeOnAsyncSuccess
+	}
+};
+......</code></pre>
+</div>
+</div>

+ 34 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.onCheck.html

@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+	<h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onCheck</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>用于捕获 checkbox / radio 被勾选 或 取消勾选的事件回调函数</p>
+			<p class="highlight_red">如果设置了 setting.callback.beforeCheck 方法,且返回 false,将无法触发 onCheck 事件回调函数。</p>
+			<p>默认值:null</p>
+		</div>
+	</div>
+	<h3>Function 参数说明</h3>
+	<div class="desc">
+	<h4><b>event</b><span>js event 对象</span></h4>
+	<p>标准的 js event 对象</p>
+	<h4 class="topLine"><b>treeId</b><span>String</span></h4>
+	<p>对应 zTree 的 <b class="highlight_red">treeId</b>,便于用户操控</p>
+	<h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+	<p>被勾选 或 取消勾选的节点 JSON 数据对象</p>
+	</div>
+	<h3>setting & function 举例</h3>
+	<h4>1. 每次点击 checkbox 或 radio 后, 弹出该节点的 tId、name 以及当前勾选状态的信息</h4>
+	<pre xmlns=""><code>function zTreeOnCheck(event, treeId, treeNode) {
+    alert(treeNode.tId + ", " + treeNode.name + "," + treeNode.checked);
+};
+var setting = {
+	callback: {
+		onCheck: zTreeOnCheck
+	}
+};
+......</code></pre>
+</div>
+</div>

+ 49 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.onClick.html

@@ -0,0 +1,49 @@
+<div class="apiDetail">
+<div>
+	<h2><span>Function(event, treeId, treeNode, clickFlag)</span><span class="path">setting.callback.</span>onClick</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>用于捕获节点被点击的事件回调函数</p>
+			<p class="highlight_red">如果设置了 setting.callback.beforeClick 方法,且返回 false,将无法触发 onClick 事件回调函数。</p>
+			<p>默认值:null</p>
+		</div>
+	</div>
+	<h3>Function 参数说明</h3>
+	<div class="desc">
+	<h4><b>event</b><span>js event 对象</span></h4>
+	<p>标准的 js event 对象</p>
+	<h4 class="topLine"><b>treeId</b><span>String</span></h4>
+	<p>对应 zTree 的 <b class="highlight_red">treeId</b>,便于用户操控</p>
+	<h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+	<p>被点击的节点 JSON 数据对象</p>
+	<h4 class="topLine"><b>clickFlag</b><span>Number</span></h4>
+	<p>节点被点击后的选中操作类型,详细看下表</p>
+	<table width="100%" border="0" cellspacing="1" cellpadding="0">
+		<thead><tr><td>clickFlag</td><td title="是否允许多点选中">selectedMulti</td><td title="是否按下 Ctrl 或 Cmd 键">autoCancelSelected<br/>&&<br/>event.ctrlKey / metaKey</td><td title="节点当前选择状态">isSelected</td><td>选中操作</td></tr></thead>
+		<tbody>
+			<tr><td>1</td><td>true</td><td>false</td><td>false</td><td>普通选中</td></tr>
+			<tr><td>1</td><td>true</td><td>false</td><td>true</td><td>普通选中</td></tr>
+			<tr><td>2</td><td>true</td><td>true</td><td>false</td><td>追加选中</td></tr>
+			<tr><td>0</td><td>true</td><td>true</td><td>true</td><td>取消选中</td></tr>
+			<tr><td>1</td><td>false</td><td>false</td><td>false</td><td>普通选中</td></tr>
+			<tr><td>1</td><td>false</td><td>false</td><td>true</td><td>普通选中</td></tr>
+			<tr><td>1</td><td>false</td><td>true</td><td>false</td><td>普通选中</td></tr>
+			<tr><td>0</td><td>false</td><td>true</td><td>true</td><td>取消选中</td></tr>
+		</tbody>
+	</table>
+	</div>
+	<h3>setting & function 举例</h3>
+	<h4>1. 每次点击节点后, 弹出该节点的 tId、name 的信息</h4>
+	<pre xmlns=""><code>function zTreeOnClick(event, treeId, treeNode) {
+    alert(treeNode.tId + ", " + treeNode.name);
+};
+var setting = {
+	callback: {
+		onClick: zTreeOnClick
+	}
+};
+......</code></pre>
+</div>
+</div>

+ 34 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.onCollapse.html

@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+	<h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onCollapse</h2>
+	<h3>概述<span class="h3_info">[ 依赖 <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+	<div class="desc">
+		<p></p>
+		<div class="longdesc">
+			<p>用于捕获节点被折叠的事件回调函数</p>
+			<p class="highlight_red">如果设置了 setting.callback.beforeCollapse 方法,且返回 false,将无法触发 onCollapse 事件回调函数。</p>
+			<p>默认值:null</p>
+		</div>
+	</div>
+	<h3>Function 参数说明</h3>
+	<div class="desc">
+	<h4><b>event</b><span>js event 对象</span></h4>
+	<p>标准的 js event 对象</p>
+	<h4 class="topLine"><b>treeId</b><span>String</span></h4>
+	<p>对应 zTree 的 <b class="highlight_red">treeId</b>,便于用户操控</p>
+	<h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+	<p>被折叠的节点 JSON 数据对象</p>
+	</div>
+	<h3>setting & function 举例</h3>
+	<h4>1. 每次折叠节点后, 弹出该节点的 tId、name 的信息</h4>
+	<pre xmlns=""><code>function zTreeOnCollapse(event, treeId, treeNode) {
+    alert(treeNode.tId + ", " + treeNode.name);
+};
+var setting = {
+	callback: {
+		onCollapse: zTreeOnCollapse
+	}
+};
+......</code></pre>
+</div>
+</div>

+ 0 - 0
watero-wechat-web/src/main/webapp/common/lib/zTree/v3/api/cn/setting.callback.onDblClick.html


Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff