Browse Source

first commit

YinBin 1 year ago
commit
debcbf7cfb
65 changed files with 8729 additions and 0 deletions
  1. 1 0
      .gitignore
  2. 43 0
      .project
  3. 1 0
      README.md
  4. 144 0
      app/about.html
  5. 243 0
      app/book-list.html
  6. 225 0
      app/book.html
  7. 101 0
      app/feedback.html
  8. 292 0
      app/guide.html
  9. 247 0
      app/search.html
  10. 4919 0
      css/mui.css
  11. 7 0
      css/mui.min.css
  12. 65 0
      entrance.html
  13. BIN
      fonts/iconfont.ttf
  14. BIN
      fonts/mui.ttf
  15. BIN
      images/common/A+.png
  16. BIN
      images/common/A-.png
  17. BIN
      images/common/A-shen.png
  18. BIN
      images/common/pull_fresh.png
  19. BIN
      images/common/zhuanhuan.png
  20. BIN
      images/index/guoxue.png
  21. BIN
      images/index/lizhi.png
  22. BIN
      images/index/qiyeguanli.png
  23. BIN
      images/index/tierenjingshen.png
  24. BIN
      images/person/header-login.png
  25. BIN
      images/person/header.jpg
  26. BIN
      images/source/144.png
  27. BIN
      images/source/144wuzi.png
  28. BIN
      images/source/guide1.png
  29. BIN
      images/source/guide2.png
  30. BIN
      images/source/guide3.png
  31. 304 0
      js/app.js
  32. 17 0
      js/db/dicBook.js
  33. 19 0
      js/db/dicCategory.js
  34. 35 0
      js/db/hzc.initDb.js
  35. 226 0
      js/db/service.js
  36. 62 0
      js/hzc.rpc.js
  37. 1 0
      js/jquery.min.js
  38. 5 0
      js/mui.min.js
  39. 98 0
      js/routes.js
  40. 45 0
      js/update.js
  41. 204 0
      login.html
  42. 485 0
      main.html
  43. 169 0
      manifest.json
  44. 166 0
      reg.html
  45. 156 0
      tab-webview-main.html
  46. 158 0
      tab-webview-subpage-first.html
  47. 143 0
      tab-webview-subpage-second.html
  48. 146 0
      tab-webview-subpage-third.html
  49. 2 0
      unpackage/.gitignore
  50. BIN
      unpackage/source/1080-1882.png
  51. BIN
      unpackage/source/1080-1882.psd
  52. BIN
      unpackage/source/144.psd
  53. BIN
      unpackage/source/240-282.png
  54. BIN
      unpackage/source/240-282.psd
  55. BIN
      unpackage/source/320-442.png
  56. BIN
      unpackage/source/320-442.psd
  57. BIN
      unpackage/source/480-762.png
  58. BIN
      unpackage/source/480-762.psd
  59. BIN
      unpackage/source/720-1242.png
  60. BIN
      unpackage/source/720-1242.psd
  61. BIN
      unpackage/source/guide.psd
  62. BIN
      unpackage/source/guide1.png
  63. BIN
      unpackage/source/guide2.png
  64. BIN
      unpackage/source/guide3.png
  65. BIN
      unpackage/source/tubiao.psd

+ 1 - 0
.gitignore

@@ -0,0 +1 @@
+/test.html

+ 43 - 0
.project

@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>BookStore</name>
+	<comment>Create By HBuilder</comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>com.pandora.projects.ui.MKeyBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.aptana.ide.core.unifiedBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>com.pandora.projects.ui.MKeyNature</nature>
+		<nature>com.aptana.projects.webnature</nature>
+	</natures>
+	<filteredResources>
+		<filter>
+			<id>1440548856219</id>
+			<name></name>
+			<type>10</type>
+			<matcher>
+				<id>org.eclipse.ui.ide.orFilterMatcher</id>
+				<arguments>
+					<matcher>
+						<id>org.eclipse.ui.ide.multiFilter</id>
+						<arguments>1.0-projectRelativePath-matches-false-false-bin</arguments>
+					</matcher>
+					<matcher>
+						<id>org.eclipse.ui.ide.multiFilter</id>
+						<arguments>1.0-projectRelativePath-matches-false-false-setting</arguments>
+					</matcher>
+				</arguments>
+			</matcher>
+		</filter>
+	</filteredResources>
+</projectDescription>

+ 1 - 0
README.md

@@ -0,0 +1 @@
+# laotang-zsy-shuba-app

+ 144 - 0
app/about.html

@@ -0,0 +1,144 @@
+<!DOCTYPE html>
+<html>
+
+	<head>
+		<meta charset="utf-8">
+		<title>关于</title>
+		<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
+		<meta name="apple-mobile-web-app-capable" content="yes">
+		<meta name="apple-mobile-web-app-status-bar-style" content="black">
+
+		<link rel="stylesheet" href="../css/mui.min.css">
+		<style>
+			html {
+				background-color: #efeff4;
+			}
+			.title {
+				margin: 20px 15px 10px;
+				color: #6d6d72;
+				font-size: 15px;
+			}
+			.mui-placeholder {
+				text-align: left !important;
+				padding-left: 5% !important;
+			}
+		</style>
+	</head>
+
+	<body>
+		<header class="mui-bar mui-bar-nav">
+			<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
+			<h1 class="mui-center mui-title">关于</h1>
+		</header>
+		<div class="mui-content">
+			<div class="mui-scroll-wrapper">
+				<div class="mui-scroll">
+					<ul class="mui-table-view" style="margin-top: 60px;">
+						<li class="mui-table-view-cell">
+							<a id="tel" class="mui-navigate-right">
+									客服电话
+								</a>
+						</li>
+						<li class="mui-table-view-cell">
+							<a id="feedback-btn" data-href="feedback.html" class="mui-navigate-right">
+									问题反馈
+								</a>
+						</li>
+					</ul>
+					<ul class="mui-table-view" style="margin-top: 20px;">
+						<li class="mui-table-view-cell">
+							<a id="update" class="mui-navigate-right">检查更新</a>
+						</li>
+					</ul>
+					<ul class="mui-table-view" style="margin-top: 25px;">
+						<li class="mui-table-view-cell">
+							<a onclick="logout()" data-href="logout" style="text-align: center;color: #FF3B30;">
+								退出登录
+							</a>
+						</li>
+					</ul>
+				</div>
+			</div>
+		</div>
+	</body>
+
+	<!--
+    	作者:HZC
+    	时间:2015-08-26
+    	描述:关于
+    -->
+	<script src="../js/mui.min.js" type="text/javascript" charset="utf-8"></script>
+	<script src="../js/update.js" type="text/javascript" charset="utf-8"></script>
+
+	<script type="text/javascript">
+		mui.init();
+		mui.plusReady(function() {
+			var self = plus.webview.currentWebview();
+			callPhone();
+			checkUpdate();
+			feedback();
+		});
+		 //客服电话
+		function callPhone() {
+			document.getElementById("tel").addEventListener('tap', function() {
+				plus.device.dial("114");
+			});
+		}
+
+		function feedback() {
+				document.getElementById("feedback-btn").addEventListener('tap', function() {
+					mui.openWindow({
+						id: 'feedback-id',
+						url: this.getAttribute('data-href'),
+						show: {
+							duration: 200
+						}
+					})
+				})
+			}
+			//检查更新
+
+		function checkUpdate() {
+			document.getElementById("update").addEventListener('tap', function() {
+				//				var server = "http://www.dcloud.io/check/update"; //获取升级描述文件服务器地址
+				//				mui.getJSON(server, {
+				//					"appid": plus.runtime.appid,
+				//					"version": plus.runtime.version,
+				//					"imei": plus.device.imei
+				//				}, function(data) {
+				//					//				if (data.status) {
+				//					//					plus.ui.confirm(data.note, function(i) {
+				//					//						if (0 == i) {
+				//					//							plus.runtime.openURL(data.url);
+				//					//						}
+				//					//					}, data.title, ["立即更新", "取  消"]);
+				//					//				} else {
+				//					mui.toast('已是最新版本~')
+				//						//				}
+				//				});
+				update();
+			});
+		}
+		/**
+			 * 退出
+			 */
+
+		function logout() {
+			var btnArray = ['是', '否'];
+			mui.confirm('确定要退出登录吗?', '', btnArray, function(e) {
+				if (e.index == 0) {
+					setLoginStatus('false');
+					mui.openWindow({
+						id: 'login-id',
+						url: 'login.html',
+						show: {
+							duration: 200
+						}
+					});
+					plus.webview.getWebviewById('tab-webview-main-id').close()
+				}
+			});
+		}
+	</script>
+
+</html>

+ 243 - 0
app/book-list.html

@@ -0,0 +1,243 @@
+<!DOCTYPE html>
+<html>
+
+	<head>
+		<meta charset="utf-8">
+		<title>图书列表</title>
+		<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
+		<meta name="apple-mobile-web-app-capable" content="yes">
+		<meta name="apple-mobile-web-app-status-bar-style" content="black">
+
+		<!--标准mui.css-->
+		<link rel="stylesheet" href="../css/mui.min.css">
+		<style>
+			.title {
+				margin: 20px 15px 10px;
+				color: #6d6d72;
+				font-size: 15px;
+			}
+			body {
+				background-color: #efeff4;
+			}
+			.my-height {
+				top: -20px;
+				position: relative;
+				right: -45px;
+				height: 1px;
+				color: brown;
+			}
+			@-webkit-keyframes btnRotate {
+				0% {
+					-webkit-transform: rotateZ(0deg);
+				}
+				100% {
+					-webkit-transform: rotateZ(360deg);
+				}
+			}
+			.donghua {
+				-webkit-animation: btnRotate 1.5s linear infinite;
+			}
+			.mui-table-view-cell>a:not(.mui-btn){
+				white-space: normal !important;
+			}
+		</style>
+	</head>
+
+	<body>
+		<header class="mui-bar mui-bar-nav">
+			<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
+			<h1 id="title-id" class="mui-title"></h1>
+		</header>
+		<div class="mui-content">
+			<ul class="mui-table-view mui-table-view-chevron" id="books-id">
+				<li class="mui-table-view-cell mui-media">
+					<div style="text-align: center;margin-right: -60px;">加载中...</div>
+				</li>
+			</ul>
+		</div>
+	</body>
+
+	<script id="book-temp-id" type="text/html">
+		<li class="mui-table-view-cell mui-media">
+			<a data-id='{id}' data-name='{name}' data-html-dist='{html_dist}' data-html-name='{html_name}' data-img-path='{img_path}' data-category-id='{dic_category_id}' data-json='{json}' data-desc='{desc}' data-is-download='{isDownload}' download-start='false'>
+				<img id="img-{id}" class="mui-media-object mui-pull-left">
+				<div class="mui-media-body">
+					{name}
+					<p class='mui-ellipsis'>{desc}</p>
+				</div>
+				<div id='download-progress-{id}' class="mui-pull-right my-height" style="display: none;">0%</div>
+				<div id='download-{id}' class="mui-icon mui-icon-pulldown mui-pull-right my-height" style="display: {display};"></div>
+			</a>
+		</li>
+	</script>
+	<!--
+    	作者:HZC
+    	时间:2015-08-26
+    	描述:图书列表
+    -->
+	<script type="text/javascript" src="../js/jquery.min.js" type="text/javascript" charset="UTF-8"></script>
+	<script type="text/javascript" src="http://182.92.109.194:8080/rpc/helper.js" type="text/javascript" charset="UTF-8"></script>
+	<script src="../js/mui.min.js" type="text/javascript" charset="utf-8"></script>
+	<script src="../js/routes.js" type="text/javascript" charset="utf-8"></script>
+	<script src="../js/app.js" type="text/javascript" charset="utf-8"></script>
+	<script src="../js/db/service.js" type="text/javascript" charset="utf-8"></script>
+	<script src="../js/hzc.rpc.js" type="text/javascript" charset="utf-8"></script>
+
+	<script type="text/javascript">
+		mui.init();
+		mui.plusReady(function() {
+			var self = plus.webview.currentWebview();
+			var title = self.title;
+			window.categoryId = self.categoryId;
+			updateTitle(title);
+			initDom();
+			openBook();
+		});
+		/**
+		 * 初始化dom
+		 */
+		function initDom() {
+				listPdf(window.categoryId, function(data) {
+					if (data.length > 0) {
+						var htmlStr = '';
+						for (var i = 0; i < data.length; i++) {
+							var book = data[i];
+							var myBooks = getBookIdsFromStorage();
+							if (myBooks && myBooks.toString().indexOf(book.id) > -1) {
+								book.display = 'none';
+								book.isDownload = '1';
+							} else {
+								book.isDownload = '0';
+							}
+							var tempHtml = $id('book-temp-id').innerHTML;
+							htmlStr += render(tempHtml, book);
+							$id('books-id').innerHTML = htmlStr;
+							book.imgPath = Routes.urls.book.bookUrl + book.img_path;
+							setImg('img-' + book.id, book.imgPath);
+						}
+					} else {
+						$id('books-id').innerHTML = '<li class="mui-table-view-cell mui-media"><div style="text-align: center;margin-right: -60px;">没有相关图书</div></li>';
+					}
+				});
+			}
+			/**
+			 * 更新标题
+			 * @param {Object} title
+			 */
+
+		function updateTitle(title) {
+				document.getElementById("title-id").innerHTML = title;
+			}
+			/**
+			 * 打开书
+			 */
+
+		function openBook() {
+			mui('#books-id').on('tap', 'a', function() {
+				var bookSelf = this;
+				//是否已经下载
+				var isDownload = bookSelf.getAttribute('data-is-download');
+				//书id
+				var bookId = bookSelf.getAttribute('data-id');
+				//html的名字
+				var htmlName = bookSelf.getAttribute('data-html-name');
+				var htmlDist = bookSelf.getAttribute('data-html-dist');
+				//服务器中书的下载地址
+				var loadUrl = Routes.urls.book.downloadBook + htmlDist + '/' + htmlName;
+				//				console.log(loadUrl)
+				//没有下载,则提示下载,并开始下载,下载成功更新数据库中的下载状态
+				if (isDownload == '0') {
+					if (bookSelf.getAttribute('download-start') == 'true') {
+						mui.toast('正在下载');
+						return;
+					}
+					window.__downloading = true;
+					mui.toast('开始下载');
+//					setDownloadImage('img-' + bookId);
+//					$id('img-' + bookId).classList.add('donghua');
+					$id('download-' + bookId).style.display = 'none';
+					$id('download-progress-'+bookId).style.display = 'block';
+					bookSelf.setAttribute('download-start', 'true');
+					//开始下载图书
+					downloadSource(loadUrl, function() {
+						var bookName = bookSelf.getAttribute('data-name');
+						var dicCategoryId = bookSelf.getAttribute('data-category-id');
+						var imgPath = bookSelf.getAttribute('data-img-path');
+						var jsonList = bookSelf.getAttribute('data-json');
+						var desc = bookSelf.getAttribute('data-desc');
+						var newBook = {};
+						newBook.id = bookId;
+						//id,name,img_path,pdf_path,html_dist,html_name,dic_category_id,json,desc,status(0:无效,1:有效),is_download(0:没有下载,1:已经下载)
+						newBook.name = bookName;
+						newBook.imgPath = imgPath;
+						newBook.desc = desc;
+						newBook.status = 1;
+						newBook.htmlName = htmlName;
+						newBook.jsonList = jsonList;
+						var jl = jsonList.split(',');
+						var jll = jl.length;
+						var progress = 1;
+						for (var i = 0; i < jll; i++) {
+							if (i == 0) continue;
+							var suburl = jl[i];
+							suburl = Routes.urls.book.getBooks + htmlDist + '/' + suburl;
+							downloadSource(suburl, function() {
+								progress += 1;
+								var jindu = (progress / jll) * 100;
+								$id('download-progress-'+bookId).innerHTML = parseInt(jindu)+'%';
+//								console.log(jindu + '---------------------------------------------------')
+								if (progress == jll) {
+									saveBook(newBook, function() {
+										window.__downloading = false;
+										mui.toast(bookName + ',下载成功');
+//										setImg('img-' + bookId, imgPath);
+//										$id('img-' + bookId).classList.remove('donghua');
+										bookSelf.setAttribute('data-is-download', '1');
+										console.log('数据库更新成功');
+										saveBookIds();
+										$id('download-progress-'+bookId).style.display = 'none';
+									});
+								}
+							}, function() {
+								window.__downloading = false;
+								mui.toast('下载失败');
+							});
+						}
+					}, function() {
+						mui.toast('下载失败');
+						$id('download-' + bookId).style.display = 'block';
+						bookSelf.setAttribute('download-start', 'false');
+					});
+				} else {
+					var bookPath = DOWNLOADPATH + htmlName;
+					var absoluteBookPath = convertToAbsoluteURL(bookPath);
+					//已下载
+					mui.openWindow({
+						id: 'book-id',
+						url: 'book.html',
+						extras: {
+							href: absoluteBookPath
+						},
+						show: {
+							duration: 200
+						}
+					});
+				}
+			});
+		}
+		var oldBack = mui.back;
+		mui.back = function() {
+			//plus.webview.getWebviewById('tab-webview-main-id').evalJS("mui.plusReady(function(){plus.screen.lockOrientation('portrait');})")
+			//plus.webview.getWebviewById('tab-webview-main-id').reload();
+			if (window.__downloading) {
+				var current = plus.webview.currentWebview();
+				current.hide('auto');
+			} else {
+				//plus.webview.getWebviewById('tab-webview-subpage-first.html').reload();
+				plus.webview.currentWebview().opener().evalJS("document.getElementById('books-id').innerHTML = '';window.start = 0;window.loadBooks(1);");
+				oldBack();
+			}
+		}
+	</script>
+
+</html>

+ 225 - 0
app/book.html

@@ -0,0 +1,225 @@
+<!DOCTYPE html>
+<html>
+
+	<head>
+		<meta charset="utf-8">
+		<title>书</title>
+		<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
+		<meta name="apple-mobile-web-app-capable" content="yes">
+		<meta name="apple-mobile-web-app-status-bar-style" content="black">
+
+		<!--标准mui.css-->
+		<link rel="stylesheet" href="../css/mui.min.css">
+		<style>
+			.my-font {
+				font-size: 28px;
+			}
+			.my-A {
+				height: 80%;
+			}
+		</style>
+	</head>
+
+	<body>
+		<header id="header" class="mui-bar mui-bar-nav" style="padding-top: 10px;">
+			<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left" style="padding-top: 0px;margin-right: 5px;"></a>
+			<!--<a id="zoom-jian" class="my-font">A-</a>-->
+			<img id="zoom-jia" src="../images/common/A+.png" class="my-A" />
+			<!--<a id="zoom-jia" class="my-font" style="margin-left: 15px;">A+</a>-->
+			<img id="zoom-jian" src="../images/common/A-.png" class="my-A" />
+			<!--<a id="zhuanhan" class="mui-icon mui-icon-loop" style="padding-top: 0px !important;font-weight: 800;"></a>-->
+			<img id="zhuanhan" src="../images/common/zhuanhuan.png" class="my-A" />
+			<a onclick="hideBar()" class="mui-pull-right" style="padding-top: 0px;margin-right: 20px;">隐藏</a>
+		</header>
+		<div id="content" class="mui-content" style="margin: 0px;padding: 0px;width: 300px !important;overflow: hidden;">
+		</div>
+	</body>
+
+	<!--
+    	作者:HZC
+    	时间:2015-08-26
+    	描述:图书
+    -->
+	<script src="../js/mui.min.js"></script>
+
+	<script type="text/javascript">
+		/**
+		 * 隐藏标题栏
+		 */
+		function hideBar() {
+				document.getElementById("header").style.display = 'none';
+				var pdfW = plus.webview.getWebviewById('pdf-id');
+				pdfW.setStyle({
+					top: '0px',
+					bottom: 0,
+					bounce: 'vertical'
+				})
+				pdfW.hide();
+				pdfW.show();
+			}
+			(function() {
+				function initBookScal() {
+					var screenHeight = plus.screen.resolutionHeight;
+					var screenWidth = plus.screen.resolutionWidth;
+					var heightRate = screenHeight / 350;
+					var widthRate = screenWidth / 350;
+					return {
+						heightRate: heightRate,
+						widthRate: widthRate
+					};
+				}
+				mui.plusReady(function() {
+					//plus.screen.lockOrientation("landscape");
+					var self = plus.webview.currentWebview();
+					var _href = self.href;
+					window.screenRate = initBookScal();
+					window.scalKey = self.href.substr(_href.lastIndexOf('/') + 1);
+					mui.init({
+						swipeBack: false,
+						statusBarBackground: '#f7f7f7',
+						gestureConfig: {
+							tap: true, //默认为true
+							doubletap: true, //默认为false
+							longtap: false, //默认为false
+							swipe: false, //默认为true
+							drag: false, //默认为true
+							hold: false, //默认为false,不监听
+							release: false //默认为false,不监听
+						},
+						subpages: [{
+							id: 'pdf-id',
+							url: _href,
+							styles: {
+								top: '45px',
+								bottom: 0,
+								bounce: 'vertical'
+							}
+						}]
+					});
+					/**
+					 * 显示标题栏
+					 */
+					function showBar() {
+						document.getElementById("header").style.display = 'block';
+						var pdfW = plus.webview.getWebviewById('pdf-id');
+						pdfW.setStyle({
+							top: '45px',
+							bottom: 0,
+							bounce: 'vertical'
+						})
+						pdfW.hide();
+						pdfW.show();
+					}
+					setTimeout(function() {
+						var pdfWin = plus.webview.getWebviewById("pdf-id");
+
+						function saveScroll(sk) {
+							//var scroll_top = window.pdf2htmlEX.defaultViewer.container.scrollTop;
+							var scroll_top = window.document.getElementById('page-container').scrollTop;
+							window.localStorage.setItem(sk, scroll_top);
+						}
+						pdfWin.evalJS(saveScroll.toString());
+						var oldBack = mui.back;
+						mui.back = function() {
+							//plus.screen.lockOrientation("portrait");
+							pdfWin.evalJS("window.saveScroll('" + window.scalKey + "')");
+							plus.webview.currentWebview().opener().evalJS("mui.plusReady(function(){plus.screen.lockOrientation('portrait');})")
+							oldBack();
+						};
+						pdfWin.evalJS(scrol.toString() + ";window.scrol('" + window.scalKey + "');")
+
+						function scrol(sk) {
+							var t = window.localStorage.getItem(sk);
+							//if (t) window.pdf2htmlEX.defaultViewer.container.scrollTop = parseFloat(t);
+							if (t) window.document.getElementById('page-container').scrollTop = parseFloat(t);
+						}
+
+						function zoom(s) {
+							var meta = document.getElementsByTagName('meta')[1];
+							meta.setAttribute('name', 'viewport');
+							var c = 'width=device-width,initial-scale=' + s + ',minimum-scale=0.1,maximum-scale=10,user-scalable=yes';
+							meta.setAttribute('content', c)
+								//console.log(document.getElementsByTagName('head')[0].innerHTML)
+								//console.log(document.innerHTML)
+						}
+						pdfWin.evalJS(zoom.toString());
+						//var ss = window.localStorage.getItem(window.scalKey + 'scal');
+						//window.zoom = ss ? parseFloat(ss) : window.screenRate.widthRate;
+						window.zoomSize = window.zoomSize ? window.zoomSize : window.screenRate.widthRate;
+						//window.zoom = window.screenRate.widthRate;
+						pdfWin.evalJS("window.zoom(" + window.zoomSize + ")");
+						document.getElementById("zoom-jia").addEventListener('tap', function() {
+							window.zoomSize += 0.1;
+							//							console.log(window.zoomSize);
+							changeScale(window.zoomSize);
+						});
+						document.getElementById("zoom-jian").addEventListener('tap', function() {
+							window.zoomSize -= 0.1;
+							//							console.log(window.zoomSize)
+							changeScale(window.zoomSize)
+						})
+						var orRes = true;
+						document.getElementById("zhuanhan").addEventListener('tap', function() {
+							plus.orientation.clearWatch(window.orien);
+							if (orRes) {
+								plus.screen.lockOrientation("landscape");
+								window.zoomSize = window.screenRate.heightRate;
+								pdfWin.evalJS("window.zoom(" + window.zoomSize + ")");
+								orRes = false;
+							} else {
+								plus.screen.lockOrientation("portrait");
+								window.zoomSize = window.screenRate.widthRate;
+								pdfWin.evalJS("window.zoom(" + window.zoomSize + ")");
+								orRes = true;
+							}
+						});
+
+						function changeScale(scale) {
+							var s = scale;
+							//window.localStorage.setItem(window.scalKe//y + 'scal', s);
+							pdfWin.evalJS("window.zoom(" + s + ")");
+						}
+						setTimeout(function() {
+							window.orisize = 0;
+							window.orien = plus.orientation.watchOrientation(function(o) {
+								console.log(o.alpha)
+//								console.log(window.orisize)
+								var al = o.alpha;
+								var cha = (al - window.orisize);
+								cha < 0 && (cha = (-cha))
+								if (cha < 50) {
+									return;
+								}
+								window.orisize = al;
+								if (0 <= o.alpha && o.alpha <= 90) { //竖屏
+									plus.screen.lockOrientation("portrait");
+									window.zoomSize = window.screenRate.widthRate;
+									pdfWin.evalJS("window.zoom(" + window.zoomSize + ")");
+									orRes = true;
+								} else if (90 < o.alpha && o.alpha <= 180) { //横屏
+									plus.screen.lockOrientation("landscape");
+									window.zoomSize = window.screenRate.heightRate;
+									pdfWin.evalJS("window.zoom(" + window.zoomSize + ")");
+									orRes = false;
+								} else if (180 < o.alpha && o.alpha <= 260) { //竖屏
+									plus.screen.lockOrientation("portrait");
+									window.zoomSize = window.screenRate.widthRate;
+									pdfWin.evalJS("window.zoom(" + window.zoomSize + ")");
+									orRes = true;
+								} else if (260 < o.alpha && o.alpha <= 360) { //横屏
+									plus.screen.lockOrientation("landscape");
+									window.zoomSize = window.screenRate.heightRate;
+									pdfWin.evalJS("window.zoom(" + window.zoomSize + ")");
+									orRes = false;
+								}
+								//console.log("Orientation\nAlpha:" + o.alpha + "\nBeta:" + o.beta + "\nGamma:" + o.gamma);
+							}, function(e) {
+								console.log("Orientation error: " + e.message);
+							});
+						}, 3000);
+					}, 2000);
+				});
+			})();
+	</script>
+
+</html>

+ 101 - 0
app/feedback.html

@@ -0,0 +1,101 @@
+<!DOCTYPE html>
+<html>
+
+	<head>
+		<meta charset="utf-8">
+		<title>反馈</title>
+		<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
+		<meta name="apple-mobile-web-app-capable" content="yes">
+		<meta name="apple-mobile-web-app-status-bar-style" content="black">
+
+		<link rel="stylesheet" href="../css/mui.min.css">
+		<style>
+			html {
+				background-color: #efeff4;
+			}
+			.title {
+				margin: 20px 15px 10px;
+				color: #6d6d72;
+				font-size: 15px;
+			}
+			.mui-placeholder {
+				text-align: left !important;
+				padding-left: 5% !important;
+			}
+		</style>
+	</head>
+
+	<body>
+		<header class="mui-bar mui-bar-nav">
+			<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
+			<h1 class="mui-center mui-title">问题反馈</h1>
+		</header>
+		<div class="mui-content">
+
+			<div class="mui-page-content">
+				<p>问题和意见</p>
+				<div class="row mui-input-row">
+					<textarea id='question' class="mui-input-clear question" placeholder="请详细描述你的问题和意见..."></textarea>
+				</div>
+				<p>QQ/邮箱</p>
+				<div class="mui-input-row">
+					<input id='contact' type="text" class="mui-input-clear contact" placeholder="(选填,方便我们联系你 )" />
+				</div>
+				<ul class="mui-table-view" style="margin-top: 25px;">
+					<li class="mui-table-view-cell">
+						<a id="submit" style="text-align: center;color: green;">
+							提交
+						</a>
+					</li>
+				</ul>
+			</div>
+		</div>
+	</body>
+
+	<!--
+    	作者:HZC
+    	时间:2015-08-26
+    	描述:反馈
+    -->
+	<script src="../js/mui.min.js"></script>
+
+	<script type="text/javascript">
+		mui.init();
+		mui.plusReady(function() {
+			tijiao()
+		});
+		/**
+			 * 提交反馈信息
+			 */
+			function tijiao() {
+				document.getElementById("submit").addEventListener('tap', function() {
+					var question = document.getElementById("question").value.replace(/(^\s*)|(\s*$)/g,'');
+					if(question == '') {
+						mui.toast('请填写问题和意见');
+						return;
+					}
+					var contact = document.getElementById("contact").value;
+					mui.ajax('http://oltop.cn:8000/api/feedback', {
+						data: {
+							post: {
+								question: question,
+								contact: contact
+							}
+						},
+						dataType: 'json', //服务器返回json格式数据
+						type: 'POST', //HTTP请求类型
+						timeout: 10000, //超时时间设置为10秒;
+						success: function(data) {
+							mui.toast('反馈信息已提交');
+							document.getElementById("question").value = '';
+							document.getElementById('contact').value = '';
+						},
+						error: function(xht, type, errorThrown) {
+							mui.toast('系统错误,请稍候再试');
+						}
+					});
+				});
+			}
+	</script>
+
+</html>

+ 292 - 0
app/guide.html

@@ -0,0 +1,292 @@
+<!DOCTYPE html>
+<html>
+
+	<head>
+		<meta charset="utf-8">
+		<title>开场动画</title>
+		<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
+		<meta name="apple-mobile-web-app-capable" content="yes">
+		<meta name="apple-mobile-web-app-status-bar-style" content="black">
+
+		<link rel="stylesheet" href="../css/mui.min.css">
+		<style>
+			#close {
+				position: absolute;
+				width: 160px;
+				left: 50%;
+				margin-left: -80px;
+				bottom: 15%;
+				padding: 10px;
+				color: #fff;
+				border-color: #fff;
+			}
+			.item-logo {
+				width: 100%;
+				height: 100%;
+				position: relative;
+			}
+			.item-logo a {
+				width: 200px;
+				height: 200px;
+				display: block;
+				border: 1px solid #FFFFFF;
+				border-color: rgba(255, 255, 255, 0.5);
+				text-align: center;
+				line-height: 200px;
+				border-radius: 50%;
+				font-size: 40px;
+				color: #fff;
+				position: absolute;
+				top: 15%;
+				left: 50%;
+				margin-left: -100px;
+			}
+			.animate {
+				position: absolute;
+				left: 0;
+				bottom: 15%;
+				width: 100%;
+				color: #fff;
+				display: -moz-box;
+			}
+			.animate h2 {
+				text-align: center;
+				margin-bottom: 20px;
+			}
+			.animate li {
+				width: 50%;
+				height: 30px;
+				line-height: 30px;
+				list-style: none;
+				font-size: 16px;
+				text-align: right;
+			}
+			.animate li:nth-child(3) {
+				text-align: left;
+				float: right;
+			}
+			.animated {
+				-webkit-animation-duration: 1s;
+				-webkit-animation-play-state: paused;
+				-webkit-animation-fill-mode: both;
+			}
+			.guide-show .bounceInDown {
+				-webkit-animation-name: bounceInDown;
+				-webkit-animation-play-state: running;
+				-webkit-animation-delay: 1s;
+				display: block;
+			}
+			.guide-show .bounceInLeft {
+				-webkit-animation-name: bounceInLeft;
+				display: block;
+				-webkit-animation-play-state: running;
+			}
+			.guide-show .bounceInRight {
+				-webkit-animation-name: bounceInRight;
+				display: block;
+				-webkit-animation-play-state: running;
+				-webkit-animation-delay: 0.5s;
+			}
+			@-webkit-keyframes bounceInDown {
+				0%, 60%, 75%, 90%, 100% {
+					-webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+					animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+				}
+				0% {
+					opacity: 0;
+					-webkit-transform: translate3d(0, -3000px, 0);
+					transform: translate3d(0, -3000px, 0);
+				}
+				60% {
+					opacity: 1;
+					-webkit-transform: translate3d(0, 25px, 0);
+					transform: translate3d(0, 25px, 0);
+				}
+				75% {
+					-webkit-transform: translate3d(0, -5px, 0);
+					transform: translate3d(0, -5px, 0);
+				}
+				90% {
+					-webkit-transform: translate3d(0, 3px, 0);
+					transform: translate3d(0, 3px, 0);
+				}
+				100% {
+					-webkit-transform: none;
+					transform: none;
+				}
+			}
+			@-webkit-keyframes bounceInLeft {
+				0%, 60%, 75%, 90%, 100% {
+					-webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+					animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+				}
+				0% {
+					opacity: 0;
+					-webkit-transform: translate3d(-3000px, 0, 0);
+					transform: translate3d(-3000px, 0, 0);
+				}
+				60% {
+					opacity: 1;
+					-webkit-transform: translate3d(25px, 0, 0);
+					transform: translate3d(25px, 0, 0);
+				}
+				75% {
+					-webkit-transform: translate3d(-10px, 0, 0);
+					transform: translate3d(-10px, 0, 0);
+				}
+				90% {
+					-webkit-transform: translate3d(5px, 0, 0);
+					transform: translate3d(5px, 0, 0);
+				}
+				100% {
+					-webkit-transform: none;
+					transform: none;
+				}
+			}
+			@-webkit-keyframes bounceInRight {
+				0%, 60%, 75%, 90%, 100% {
+					-webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+					animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+				}
+				0% {
+					opacity: 0;
+					-webkit-transform: translate3d(3000px, 0, 0);
+					transform: translate3d(3000px, 0, 0);
+				}
+				60% {
+					opacity: 1;
+					-webkit-transform: translate3d(-25px, 0, 0);
+					transform: translate3d(-25px, 0, 0);
+				}
+				75% {
+					-webkit-transform: translate3d(10px, 0, 0);
+					transform: translate3d(10px, 0, 0);
+				}
+				90% {
+					-webkit-transform: translate3d(-5px, 0, 0);
+					transform: translate3d(-5px, 0, 0);
+				}
+				100% {
+					-webkit-transform: none;
+					transform: none;
+				}
+			}
+		</style>
+	</head>
+
+	<body>
+		<div id="slider" class="mui-slider mui-fullscreen" style="background-color: black;">
+			<div class="mui-slider-group">
+				<!-- 第一张 -->
+				<div class="mui-slider-item">
+					<div class="item-logo" style="background-image: url(../images/source/guide1.png);
+						background-repeat: no-repeat;background-size: 100% 100%;">
+						<a href="#">
+							<img src="../images/person/header-login.png" style="width:150px;margin-top: 10%;" />
+						</a>
+						<div class="animate guide-show">
+							<h2 class="animated bounceInDown">小巧高能</h2>
+							<li class="animated bounceInLeft">简单方便</li>
+							<li class="animated bounceInRight">上千种书籍</li>
+						</div>
+					</div>
+				</div>
+				<!-- 第二张 -->
+				<div class="mui-slider-item">
+					<div class="item-logo" style="background-image: url(../images/source/guide2.png);
+						background-repeat: no-repeat;background-size: 100% 100%;">
+						<a href="#">
+							<img src="../images/person/header-login.png" style="width:150px;margin-top: 10%;" />
+						</a>
+						<div id="tips-2" class="animate mui-hidden">
+							<h2 class="animated bounceInDown">原创文章</h2>
+							<li class="animated bounceInLeft">彰显个人魅力</li>
+							<li class="animated bounceInRight">表达现实生活</li>
+						</div>
+					</div>
+				</div>
+				<!-- 第三张 -->
+				<!--<div class="mui-slider-item">
+					<div class="item-logo" style="background-image: url(../images/source/guide3.png);
+						background-repeat: no-repeat;background-size: 100% 100%;">
+						<a href="#">
+							<img src="../images/person/header-login.png" style="width:150px;margin-top: 10%;" />
+						</a>
+						<div id="tips-3" class="animate mui-hidden">
+							<h2 class="animated bounceInDown">流畅体验</h2>
+							<li class="animated bounceInLeft">整个世界都美好了</li>
+							<li class="animated bounceInRight">收藏你的挚爱</li>
+						</div>
+					</div>
+				</div>-->
+				<!-- 第四张 -->
+				<div class="mui-slider-item">
+					<div class="item-logo" style="background-image: url(../images/source/guide3.png);
+						background-repeat: no-repeat;background-size: 100% 100%;">
+						<a href="#">
+							<img src="../images/person/header-login.png" style="width:150px;margin-top: 10%;" />
+						</a>
+						<div class="animate">
+							<button id='close' class="mui-btn mui-btn-warning mui-btn-outlined">立即体验</button>
+						</div>
+					</div>
+				</div>
+			</div>
+			<div class="mui-slider-indicator">
+				<div class="mui-indicator mui-active"></div>
+				<div class="mui-indicator"></div>
+				<!--<div class="mui-indicator"></div>-->
+				<div class="mui-indicator"></div>
+			</div>
+		</div>
+
+		<!--
+        	作者:HZC
+        	时间:2015-08-26
+        	描述:起始页
+        -->
+		<script src="../js/mui.min.js" type="text/javascript" charset="utf-8"></script>
+		<script src="../js/app.js" type="text/javascript" charset="utf-8"></script>
+		<script src="../js/db/dicBook.js" type="text/javascript" charset="utf-8"></script>
+		<script src="../js/db/dicCategory.js" type="text/javascript" charset="utf-8"></script>
+		<script src="../js/db/hzc.initDb.js" type="text/javascript" charset="utf-8"></script>
+		<script type="text/javascript">
+			mui.back = function() {};
+			mui.plusReady(function() {
+				plus.navigator.setFullscreen(true);
+				setAppVersion();
+				if (mui.os.ios) {
+					plus.navigator.setFullscreen(true);
+				}
+				plus.navigator.closeSplashscreen();
+				mui.back = function() {}
+			});
+			 //立即体验按钮点击事件
+			document.getElementById("close").addEventListener('tap', function(event) {
+				//				plus.storage.setItem("lauchFlag", "true");
+				//				plus.webview.currentWebview().close();
+				plus.navigator.setFullscreen(false);
+				mui.openWindow({
+					id: 'login-id',
+					url: '../login.html',
+					show: {
+						duration: 200
+					}
+				});
+			}, false);
+			 //图片切换时,触发动画
+			document.querySelector('.mui-slider').addEventListener('slide', function(event) {
+				//注意slideNumber是从0开始的;
+				var index = event.detail.slideNumber + 1;
+				if (index == 2 /*|| index == 3*/) {
+					var item = document.getElementById("tips-" + index);
+					if (item.classList.contains("mui-hidden")) {
+						item.classList.remove("mui-hidden");
+						item.classList.add("guide-show");
+					}
+				}
+			});
+		</script>
+	</body>
+
+</html>

+ 247 - 0
app/search.html

@@ -0,0 +1,247 @@
+<!DOCTYPE html>
+<html>
+
+	<head>
+		<meta charset="utf-8">
+		<title>搜索图书</title>
+		<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
+		<meta name="apple-mobile-web-app-capable" content="yes">
+		<meta name="apple-mobile-web-app-status-bar-style" content="black">
+
+		<link rel="stylesheet" href="../css/mui.min.css">
+		<style>
+			.title {
+				margin: 20px 15px 10px;
+				color: #6d6d72;
+				font-size: 15px;
+			}
+			.mui-placeholder {
+				text-align: left !important;
+				padding-left: 5% !important;
+			}
+			.my-height {
+				top: -20px;
+				position: relative;
+				right: -45px;
+				height: 1px;
+				color: brown;
+			}
+			@-webkit-keyframes btnRotate {
+				0% {
+					-webkit-transform: rotateZ(0deg);
+				}
+				100% {
+					-webkit-transform: rotateZ(360deg);
+				}
+			}
+			.donghua {
+				-webkit-animation: btnRotate 1.5s linear infinite;
+			}
+		</style>
+	</head>
+
+	<body>
+		<header class="mui-bar mui-bar-nav">
+			<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
+			<button id="search-btn-id" style="color: #CF2D29;font-size: 15px;" type="button" class="mui-btn mui-btn-link mui-pull-right">
+				搜索
+			</button>
+			<div class="mui-input-row mui-search mui-pull-right" style="width: 70%;top: -43px;right: 40px;">
+				<input id="search-book-id" type="search" class="mui-input-clear" placeholder="">
+			</div>
+		</header>
+		<div class="mui-content">
+			<ul class="mui-table-view mui-table-view-chevron" id="books-id">
+			</ul>
+		</div>
+	</body>
+
+	<script id="book-temp-id" type="text/html">
+		<li class="mui-table-view-cell mui-media">
+			<a data-id='{id}' data-name='{name}' data-html-dist='{html_dist}' data-html-name='{html_name}' data-img-path='{img_path}' data-category-id='{dic_category_id}' data-json='{json}' data-desc='{desc}' data-is-download='{isDownload}' download-start='false'>
+				<img id="img-{id}" class="mui-media-object mui-pull-left">
+				<div class="mui-media-body">
+					{name}
+					<p class='mui-ellipsis'>{desc}</p>
+				</div>
+				<div id='download-progress-{id}' class="mui-pull-right my-height" style="display: none;">0%</div>
+				<div id='download-{id}' class="mui-icon mui-icon-pulldown mui-pull-right my-height" style="display: {display};"></div>
+			</a>
+		</li>
+	</script>
+
+	<!--
+    	作者:HZC
+    	时间:2015-08-26
+    	描述:搜索图书
+    -->
+
+	<script type="text/javascript" src="../js/jquery.min.js" type="text/javascript" charset="UTF-8"></script>
+	<script type="text/javascript" src="http://182.92.109.194:8080/rpc/helper.js" type="text/javascript" charset="UTF-8"></script>
+	<script src="../js/mui.min.js" type="text/javascript" charset="utf-8"></script>
+	<script src="../js/routes.js" type="text/javascript" charset="utf-8"></script>
+	<script src="../js/app.js" type="text/javascript" charset="utf-8"></script>
+	<script src="../js/db/service.js" type="text/javascript" charset="utf-8"></script>
+	<script src="../js/hzc.rpc.js" type="text/javascript" charset="utf-8"></script>
+
+	<script type="text/javascript">
+		mui.init();
+		mui.plusReady(function() {
+			var self = plus.webview.currentWebview();
+			openKeyBoard();
+			search();
+			openBook();
+		});
+		/**
+		 * 开始搜索
+		 */
+		function search() {
+				$id('search-btn-id').addEventListener('tap', function() {
+					var keyword = $id('search-book-id').value;
+					//					console.log('开始搜索关键字:' + keyword);
+					searchBooks(keyword, function(data) {
+						if (data.length > 0) {
+							var htmlStr = '';
+							for (var i = 0; i < data.length; i++) {
+								var book = data[i];
+								//								console.log(JSON.stringify(book))
+								var myBooks = getBookIdsFromStorage();
+								if (myBooks && myBooks.toString().indexOf(book.id) > -1) {
+									book.display = 'none';
+									book.isDownload = '1';
+								} else {
+									book.isDownload = '0';
+								}
+								var tempHtml = $id('book-temp-id').innerHTML;
+								htmlStr += render(tempHtml, book);
+								$id('books-id').innerHTML = htmlStr
+								book.imgPath = Routes.urls.book.bookUrl + book.img_path;
+								//book.imgPath = "http://pics.sc.chinaz.com/Files/pic/icons128/5911/o1.png";
+								setImg('img-' + book.id, book.imgPath);
+							}
+						} else {
+							$id('books-id').innerHTML = '<li class="mui-table-view-cell mui-media"><div style="text-align: center;margin-right: -60px;">没有相关图书</div></li>';
+						}
+					});
+				})
+			}
+			/**
+			 * 打开键盘
+			 */
+
+		function openKeyBoard() {
+				setTimeout(function() {
+					var Context = plus.android.importClass("android.content.Context");
+					var InputMethodManager = plus.android.importClass("android.view.inputmethod.InputMethodManager");
+					var main = plus.android.runtimeMainActivity();
+					var imm = main.getSystemService(Context.INPUT_METHOD_SERVICE);
+					imm.toggleSoftInput(0, InputMethodManager.SHOW_FORCED);
+				}, 1000)
+				document.getElementById("search-book-id").focus();
+			}
+			/**
+			 * 打开书
+			 */
+
+		function openBook() {
+			mui('#books-id').on('tap', 'a', function() {
+				var bookSelf = this;
+				//是否已经下载
+				var isDownload = bookSelf.getAttribute('data-is-download');
+				//书id
+				var bookId = bookSelf.getAttribute('data-id');
+				//html的名字
+				var htmlName = bookSelf.getAttribute('data-html-name');
+				var htmlDist = bookSelf.getAttribute('data-html-dist');
+				//服务器中书的下载地址
+				var loadUrl = Routes.urls.book.downloadBook + htmlDist + '/' + htmlName;
+				//				console.log(loadUrl)
+				//没有下载,则提示下载,并开始下载,下载成功更新数据库中的下载状态
+				if (isDownload == '0') {
+					if (bookSelf.getAttribute('download-start') == 'true') {
+						mui.toast('正在下载');
+						return;
+					}
+					window.__downloading = true;
+					mui.toast('开始下载');
+//					setDownloadImage('img-' + bookId);
+//					$id('img-' + bookId).classList.add('donghua');
+					$id('download-' + bookId).style.display = 'none';
+					$id('download-progress-'+bookId).style.display = 'block';
+					bookSelf.setAttribute('download-start', 'true');
+					//开始下载图书
+					downloadSource(loadUrl, function() {
+						var bookName = bookSelf.getAttribute('data-name');
+						var dicCategoryId = bookSelf.getAttribute('data-category-id');
+						var imgPath = bookSelf.getAttribute('data-img-path');
+						var jsonList = bookSelf.getAttribute('data-json');
+						var desc = bookSelf.getAttribute('data-desc');
+						var newBook = {};
+						newBook.id = bookId;
+						//id,name,img_path,pdf_path,html_dist,html_name,dic_category_id,json,desc,status(0:无效,1:有效),is_download(0:没有下载,1:已经下载)
+						newBook.name = bookName;
+						newBook.imgPath = imgPath;
+						newBook.desc = desc;
+						newBook.status = 1;
+						newBook.htmlName = htmlName;
+						newBook.jsonList = jsonList;
+						var jl = jsonList.split(',');
+						var jll = jl.length;
+						var progress = 1;
+						for (var i = 0; i < jll; i++) {
+							if (i == 0) continue;
+							var suburl = jl[i];
+							suburl = Routes.urls.book.getBooks + htmlDist + '/' + suburl;
+							downloadSource(suburl, function() {
+								progress += 1;
+								var jindu = (progress / jll) * 100;
+								$id('download-progress-'+bookId).innerHTML = parseInt(jindu)+'%';
+//								console.log(jindu + '---------------------------------------------------')
+								if (progress == jll) {
+									saveBook(newBook, function() {
+										window.__downloading = false;
+										mui.toast(bookName + ',下载成功');
+//										setImg('img-' + bookId, imgPath);
+//										$id('img-' + bookId).classList.remove('donghua');
+										bookSelf.setAttribute('data-is-download', '1');
+										console.log('数据库更新成功');
+										saveBookIds();
+										$id('download-progress-'+bookId).style.display = 'none';
+									});
+								}
+							}, function() {
+								window.__downloading = false;
+								mui.toast('下载失败');
+							});
+						}
+					}, function() {
+						mui.toast('下载失败');
+						$id('download-' + bookId).style.display = 'block';
+						bookSelf.setAttribute('download-start', 'false');
+					});
+				} else {
+					var bookPath = DOWNLOADPATH + htmlName;
+					var absoluteBookPath = convertToAbsoluteURL(bookPath);
+					//已下载
+					mui.openWindow({
+						id: 'book-id',
+						url: 'book.html',
+						extras: {
+							href: absoluteBookPath
+						},
+						show: {
+							duration: 200
+						}
+					});
+				}
+			});
+		}
+		var oldBack = mui.back;
+		mui.back = function() {
+			//			plus.webview.getWebviewById('tab-webview-subpage-first.html').reload();
+			plus.webview.currentWebview().opener().evalJS("document.getElementById('books-id').innerHTML = '';window.start = 0;window.loadBooks(1);");
+			oldBack();
+		}
+	</script>
+
+</html>

+ 4919 - 0
css/mui.css

@@ -0,0 +1,4919 @@
+/*!
+ * =====================================================
+ * Mui v2.2.0 (https://github.com/dcloudio/mui)
+ * =====================================================
+ */
+
+/*! normalize.css v3.0.1 | MIT License | git.io/normalize */
+html
+{
+    font-family: sans-serif;
+
+    -webkit-text-size-adjust: 100%;
+}
+
+body
+{
+    margin: 0;
+}
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+nav,
+section,
+summary
+{
+    display: block;
+}
+
+audio,
+canvas,
+progress,
+video
+{
+    display: inline-block;
+
+    vertical-align: baseline;
+}
+
+audio:not([controls])
+{
+    display: none;
+
+    height: 0;
+}
+
+[hidden],
+template
+{
+    display: none;
+}
+
+a
+{
+    background: transparent;
+}
+
+a:active,
+a:hover
+{
+    outline: 0;
+}
+
+abbr[title]
+{
+    border-bottom: 1px dotted;
+}
+
+b,
+strong
+{
+    font-weight: bold;
+}
+
+dfn
+{
+    font-style: italic;
+}
+
+h1
+{
+    font-size: 2em;
+
+    margin: .67em 0;
+}
+
+mark
+{
+    color: #000;
+    background: #ff0;
+}
+
+small
+{
+    font-size: 80%;
+}
+
+sub,
+sup
+{
+    font-size: 75%;
+    line-height: 0;
+
+    position: relative;
+
+    vertical-align: baseline;
+}
+
+sup
+{
+    top: -.5em;
+}
+
+sub
+{
+    bottom: -.25em;
+}
+
+img
+{
+    border: 0;
+}
+
+svg:not(:root)
+{
+    overflow: hidden;
+}
+
+figure
+{
+    margin: 1em 40px;
+}
+
+hr
+{
+    box-sizing: content-box;
+    height: 0;
+}
+
+pre
+{
+    overflow: auto;
+}
+
+code,
+kbd,
+pre,
+samp
+{
+    font-family: monospace, monospace;
+    font-size: 1em;
+}
+
+button,
+input,
+optgroup,
+select,
+textarea
+{
+    font: inherit;
+
+    margin: 0;
+
+    color: inherit;
+}
+
+button
+{
+    overflow: visible;
+}
+
+button,
+select
+{
+    text-transform: none;
+}
+
+button,
+html input[type='button'],
+input[type='reset'],
+input[type='submit']
+{
+    cursor: pointer;
+
+    -webkit-appearance: button;
+}
+
+button[disabled],
+html input[disabled]
+{
+    cursor: default;
+}
+
+input
+{
+    line-height: normal;
+}
+
+input[type='checkbox'],
+input[type='radio']
+{
+    box-sizing: border-box;
+    padding: 0;
+}
+
+input[type='number']::-webkit-inner-spin-button,
+input[type='number']::-webkit-outer-spin-button
+{
+    height: auto;
+}
+
+input[type='search']
+{
+    -webkit-box-sizing: content-box;
+            box-sizing: content-box;
+
+    -webkit-appearance: textfield;
+}
+
+input[type='search']::-webkit-search-cancel-button,
+input[type='search']::-webkit-search-decoration
+{
+    -webkit-appearance: none;
+}
+
+fieldset
+{
+    margin: 0 2px;
+    padding: .35em .625em .75em;
+
+    border: 1px solid #c0c0c0;
+}
+
+legend
+{
+    padding: 0;
+
+    border: 0;
+}
+
+textarea
+{
+    overflow: auto;
+}
+
+optgroup
+{
+    font-weight: bold;
+}
+
+table
+{
+    border-spacing: 0;
+    border-collapse: collapse;
+}
+
+td,
+th
+{
+    padding: 0;
+}
+
+*
+{
+    -webkit-box-sizing: border-box;
+            box-sizing: border-box;
+
+    -webkit-user-select: none;
+
+    outline: none;
+
+    -webkit-tap-highlight-color: transparent;
+    -webkit-tap-highlight-color: transparent;
+}
+
+body
+{
+    font-family: 'Helvetica Neue', Helvetica, sans-serif;
+    font-size: 17px;
+    line-height: 21px;
+
+    color: #000;
+    background-color: #efeff4;
+
+    -webkit-overflow-scrolling: touch;
+}
+
+a
+{
+    text-decoration: none;
+
+    color: #007aff;
+}
+a:active
+{
+    color: #0062cc;
+}
+
+.mui-content
+{
+    background-color: #efeff4;
+
+    -webkit-overflow-scrolling: touch;
+}
+
+.mui-bar-nav ~ .mui-content
+{
+    padding-top: 44px;
+}
+.mui-bar-nav ~ .mui-content.mui-scroll-wrapper .mui-scrollbar-vertical
+{
+    top: 44px;
+}
+
+.mui-bar-header-secondary ~ .mui-content
+{
+    padding-top: 88px;
+}
+.mui-bar-header-secondary ~ .mui-content.mui-scroll-wrapper .mui-scrollbar-vertical
+{
+    top: 88px;
+}
+
+.mui-bar-footer ~ .mui-content
+{
+    padding-bottom: 44px;
+}
+.mui-bar-footer ~ .mui-content.mui-scroll-wrapper .mui-scrollbar-vertical
+{
+    bottom: 44px;
+}
+
+.mui-bar-footer-secondary ~ .mui-content
+{
+    padding-bottom: 88px;
+}
+.mui-bar-footer-secondary ~ .mui-content.mui-scroll-wrapper .mui-scrollbar-vertical
+{
+    bottom: 88px;
+}
+
+.mui-bar-tab ~ .mui-content
+{
+    padding-bottom: 50px;
+}
+.mui-bar-tab ~ .mui-content.mui-scroll-wrapper .mui-scrollbar-vertical
+{
+    bottom: 50px;
+}
+
+.mui-bar-footer-secondary-tab ~ .mui-content
+{
+    padding-bottom: 94px;
+}
+.mui-bar-footer-secondary-tab ~ .mui-content.mui-scroll-wrapper .mui-scrollbar-vertical
+{
+    bottom: 94px;
+}
+
+.mui-content-padded
+{
+    margin: 10px;
+}
+
+.mui-inline
+{
+    display: inline-block;
+
+    vertical-align: top;
+}
+
+.mui-block
+{
+    display: block !important;
+}
+
+.mui-visibility
+{
+    visibility: visible !important;
+}
+
+.mui-hidden
+{
+    display: none !important;
+}
+
+.mui-ellipsis
+{
+    overflow: hidden;
+
+    white-space: nowrap;
+    text-overflow: ellipsis;
+}
+
+.mui-ellipsis-2
+{
+    display: -webkit-box;
+    overflow: hidden;
+
+    white-space: normal !important;
+    text-overflow: ellipsis;
+    word-wrap: break-word;
+
+    -webkit-line-clamp: 2;
+    -webkit-box-orient: vertical;
+}
+
+.mui-table
+{
+    display: table;
+
+    width: 100%;
+
+    table-layout: fixed;
+}
+
+.mui-table-cell
+{
+    position: relative;
+
+    display: table-cell;
+}
+
+.mui-text-left
+{
+    text-align: left !important;
+}
+
+.mui-text-center
+{
+    text-align: center !important;
+}
+
+.mui-text-justify
+{
+    text-align: justify !important;
+}
+
+.mui-text-right
+{
+    text-align: right !important;
+}
+
+.mui-pull-left
+{
+    float: left;
+}
+
+.mui-pull-right
+{
+    float: right;
+}
+
+.mui-list-unstyled
+{
+    padding-left: 0;
+
+    list-style: none;
+}
+
+.mui-list-inline
+{
+    margin-left: -5px;
+    padding-left: 0;
+
+    list-style: none;
+}
+
+.mui-list-inline > li
+{
+    display: inline-block;
+
+    padding-right: 5px;
+    padding-left: 5px;
+}
+
+.mui-clearfix:before, .mui-clearfix:after
+{
+    display: table;
+
+    content: ' ';
+}
+.mui-clearfix:after
+{
+    clear: both;
+}
+
+.mui-bg-primary
+{
+    background-color: #007aff;
+}
+
+.mui-bg-positive
+{
+    background-color: #4cd964;
+}
+
+.mui-bg-negative
+{
+    background-color: #dd524d;
+}
+
+.mui-error
+{
+    margin: 88px 35px;
+    padding: 10px;
+
+    border-radius: 6px;
+    background-color: #bbb;
+}
+
+.mui-subtitle
+{
+    font-size: 15px;
+}
+
+h1, h2, h3, h4, h5, h6
+{
+    line-height: 1;
+
+    margin-top: 5px;
+    margin-bottom: 5px;
+}
+
+h1, .mui-h1
+{
+    font-size: 36px;
+}
+
+h2, .mui-h2
+{
+    font-size: 30px;
+}
+
+h3, .mui-h3
+{
+    font-size: 24px;
+}
+
+h4, .mui-h4
+{
+    font-size: 18px;
+}
+
+h5, .mui-h5
+{
+    font-size: 14px;
+    font-weight: normal;
+
+    color: #8f8f94;
+}
+
+h6, .mui-h6
+{
+    font-size: 12px;
+    font-weight: normal;
+
+    color: #8f8f94;
+}
+
+p
+{
+    font-size: 14px;
+
+    margin-top: 0;
+    margin-bottom: 10px;
+
+    color: #8f8f94;
+}
+
+.mui-col-xs-12
+{
+    width: 100%;
+}
+
+.mui-col-xs-11
+{
+    width: 91.66666667%;
+}
+
+.mui-col-xs-10
+{
+    width: 83.33333333%;
+}
+
+.mui-col-xs-9
+{
+    width: 75%;
+}
+
+.mui-col-xs-8
+{
+    width: 66.66666667%;
+}
+
+.mui-col-xs-7
+{
+    width: 58.33333333%;
+}
+
+.mui-col-xs-6
+{
+    width: 50%;
+}
+
+.mui-col-xs-5
+{
+    width: 41.66666667%;
+}
+
+.mui-col-xs-4
+{
+    width: 33.33333333%;
+}
+
+.mui-col-xs-3
+{
+    width: 25%;
+}
+
+.mui-col-xs-2
+{
+    width: 16.66666667%;
+}
+
+.mui-col-xs-1
+{
+    width: 8.33333333%;
+}
+
+@media (min-width: 400px)
+{
+    .mui-col-sm-12
+    {
+        width: 100%;
+    }
+
+    .mui-col-sm-11
+    {
+        width: 91.66666667%;
+    }
+
+    .mui-col-sm-10
+    {
+        width: 83.33333333%;
+    }
+
+    .mui-col-sm-9
+    {
+        width: 75%;
+    }
+
+    .mui-col-sm-8
+    {
+        width: 66.66666667%;
+    }
+
+    .mui-col-sm-7
+    {
+        width: 58.33333333%;
+    }
+
+    .mui-col-sm-6
+    {
+        width: 50%;
+    }
+
+    .mui-col-sm-5
+    {
+        width: 41.66666667%;
+    }
+
+    .mui-col-sm-4
+    {
+        width: 33.33333333%;
+    }
+
+    .mui-col-sm-3
+    {
+        width: 25%;
+    }
+
+    .mui-col-sm-2
+    {
+        width: 16.66666667%;
+    }
+
+    .mui-col-sm-1
+    {
+        width: 8.33333333%;
+    }
+}
+.mui-scroll-wrapper
+{
+    position: absolute;
+    z-index: 1;
+    top: 0;
+    bottom: 0;
+    left: 0;
+
+    overflow: hidden;
+
+    width: 100%;
+
+    -webkit-backface-visibility: hidden;
+}
+
+.mui-scroll
+{
+    position: absolute;
+    z-index: 1;
+
+    width: 100%;
+
+    -webkit-transform: translateZ(0);
+            transform: translateZ(0);
+
+    -webkit-backface-visibility: hidden;
+}
+
+.mui-scrollbar
+{
+    position: absolute;
+    z-index: 9998;
+
+    overflow: hidden;
+
+    -webkit-transition: 500ms;
+            transition: 500ms;
+    transform: translateZ(0px);
+    pointer-events: none;
+
+    opacity: 0;
+}
+
+.mui-scrollbar-vertical
+{
+    top: 0;
+    right: 1px;
+    bottom: 2px;
+
+    width: 4px;
+}
+.mui-scrollbar-vertical .mui-scrollbar-indicator
+{
+    width: 100%;
+}
+
+.mui-scrollbar-horizontal
+{
+    right: 2px;
+    bottom: 0;
+    left: 2px;
+
+    height: 4px;
+}
+.mui-scrollbar-horizontal .mui-scrollbar-indicator
+{
+    height: 100%;
+}
+
+.mui-scrollbar-indicator
+{
+    position: absolute;
+
+    display: block;
+
+    box-sizing: border-box;
+
+    -webkit-transition: .01s cubic-bezier(.1, .57, .1, 1);
+            transition: .01s cubic-bezier(.1, .57, .1, 1);
+    transform: translate(0px, 0px) translateZ(0px);
+
+    border: 1px solid rgba(255, 255, 255, .80196);
+    border-radius: 2px;
+    background: rgba(0, 0, 0, .39804);
+}
+
+.mui-plus-pullrefresh .mui-fullscreen .mui-scroll-wrapper .mui-scroll-wrapper, .mui-plus-pullrefresh .mui-fullscreen .mui-slider-group .mui-scroll-wrapper
+{
+    position: absolute;
+    top: 0;
+    bottom: 0;
+    left: 0;
+
+    overflow: hidden;
+
+    width: 100%;
+}
+.mui-plus-pullrefresh .mui-fullscreen .mui-scroll-wrapper .mui-scroll, .mui-plus-pullrefresh .mui-fullscreen .mui-slider-group .mui-scroll
+{
+    position: absolute;
+
+    width: 100%;
+}
+.mui-plus-pullrefresh .mui-scroll-wrapper, .mui-plus-pullrefresh .mui-slider-group
+{
+    position: static;
+    top: auto;
+    bottom: auto;
+    left: auto;
+
+    overflow: auto;
+
+    width: auto;
+}
+.mui-plus-pullrefresh .mui-slider-group
+{
+    overflow: visible;
+}
+.mui-plus-pullrefresh .mui-scroll
+{
+    position: static;
+
+    width: auto;
+}
+
+.mui-off-canvas-wrap .mui-bar
+{
+    position: absolute !important;
+
+    -webkit-transform: translate3d(0, 0, 0);
+            transform: translate3d(0, 0, 0);
+
+    -webkit-box-shadow: none;
+            box-shadow: none;
+}
+
+.mui-off-canvas-wrap
+{
+    position: relative;
+    z-index: 1;
+
+    overflow: hidden;
+
+    width: 100%;
+    height: 100%;
+}
+.mui-off-canvas-wrap .mui-inner-wrap
+{
+    position: relative;
+    z-index: 1;
+
+    width: 100%;
+    height: 100%;
+}
+.mui-off-canvas-wrap .mui-inner-wrap.mui-transitioning
+{
+    -webkit-transition: -webkit-transform 200ms ease;
+            transition:         transform 200ms ease;
+}
+.mui-off-canvas-wrap .mui-inner-wrap .mui-off-canvas-left
+{
+    -webkit-transform: translate3d(-100%, 0, 0);
+            transform: translate3d(-100%, 0, 0);
+}
+.mui-off-canvas-wrap .mui-inner-wrap .mui-off-canvas-right
+{
+    -webkit-transform: translate3d(100%, 0, 0);
+            transform: translate3d(100%, 0, 0);
+}
+.mui-off-canvas-wrap.mui-active
+{
+    overflow: hidden;
+
+    height: 100%;
+}
+.mui-off-canvas-wrap.mui-active .mui-off-canvas-backdrop
+{
+    position: absolute;
+    z-index: 998;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+
+    display: block;
+
+    transition: background 200ms ease;
+
+    background: rgba(0, 0, 0, .4);
+    box-shadow: -4px 0 4px rgba(0, 0, 0, .5), 4px 0 4px rgba(0, 0, 0, .5);
+
+    -webkit-backface-visibility: hidden;
+    -webkit-tap-highlight-color: transparent;
+}
+.mui-off-canvas-wrap.mui-slide-in .mui-off-canvas-right
+{
+    z-index: 10000 !important;
+
+    -webkit-transform: translate3d(100%, 0px, 0px);
+}
+.mui-off-canvas-wrap.mui-slide-in .mui-off-canvas-left
+{
+    z-index: 10000 !important;
+
+    -webkit-transform: translate3d(-100%, 0px, 0px);
+}
+
+.mui-off-canvas-left, .mui-off-canvas-right
+{
+    position: absolute;
+    z-index: -1;
+    top: 0;
+    bottom: 0;
+
+    visibility: hidden;
+
+    box-sizing: content-box;
+    width: 70%;
+    min-height: 100%;
+
+    background: #333;
+
+    -webkit-backface-visibility: hidden;
+    -webkit-overflow-scrolling: touch;
+}
+.mui-off-canvas-left.mui-transitioning, .mui-off-canvas-right.mui-transitioning
+{
+    -webkit-transition: -webkit-transform 200ms ease;
+            transition:         transform 200ms ease;
+}
+
+.mui-off-canvas-left
+{
+    left: 0;
+}
+
+.mui-off-canvas-right
+{
+    right: 0;
+}
+
+.mui-off-canvas-wrap:not(.mui-slide-in).mui-scalable
+{
+    background-color: #333;
+}
+.mui-off-canvas-wrap:not(.mui-slide-in).mui-scalable > .mui-off-canvas-left, .mui-off-canvas-wrap:not(.mui-slide-in).mui-scalable > .mui-off-canvas-right
+{
+    width: 80%;
+
+    -webkit-transform: scale(.8);
+            transform: scale(.8);
+
+    opacity: .1;
+}
+.mui-off-canvas-wrap:not(.mui-slide-in).mui-scalable > .mui-off-canvas-left.mui-transitioning, .mui-off-canvas-wrap:not(.mui-slide-in).mui-scalable > .mui-off-canvas-right.mui-transitioning
+{
+    -webkit-transition: -webkit-transform 200ms ease, opacity 200ms ease;
+            transition:         transform 200ms ease, opacity 200ms ease;
+}
+.mui-off-canvas-wrap:not(.mui-slide-in).mui-scalable > .mui-off-canvas-left
+{
+    -webkit-transform-origin: -100%;
+            transform-origin: -100%;
+}
+.mui-off-canvas-wrap:not(.mui-slide-in).mui-scalable > .mui-off-canvas-right
+{
+    -webkit-transform-origin: 200%;
+            transform-origin: 200%;
+}
+.mui-off-canvas-wrap:not(.mui-slide-in).mui-scalable.mui-active > .mui-inner-wrap
+{
+    -webkit-transform: scale(.8);
+            transform: scale(.8);
+}
+.mui-off-canvas-wrap:not(.mui-slide-in).mui-scalable.mui-active > .mui-off-canvas-left, .mui-off-canvas-wrap:not(.mui-slide-in).mui-scalable.mui-active > .mui-off-canvas-right
+{
+    -webkit-transform: scale(1);
+            transform: scale(1);
+
+    opacity: 1;
+}
+
+.mui-loading .mui-spinner
+{
+    display: block;
+
+    margin: 0 auto;
+}
+
+.mui-spinner
+{
+    display: inline-block;
+
+    width: 24px;
+    height: 24px;
+
+    -webkit-transform-origin: 50%;
+            transform-origin: 50%;
+    -webkit-animation: spinner-spin 1s step-end infinite;
+            animation: spinner-spin 1s step-end infinite;
+}
+
+.mui-spinner:after
+{
+    display: block;
+
+    width: 100%;
+    height: 100%;
+
+    content: '';
+
+    background-image: url('data:image/svg+xml;charset=utf-8,<svg viewBox=\'0 0 120 120\' xmlns=\'http://www.w3.org/2000/svg\' xmlns:xlink=\'http://www.w3.org/1999/xlink\'><defs><line id=\'l\' x1=\'60\' x2=\'60\' y1=\'7\' y2=\'27\' stroke=\'%236c6c6c\' stroke-width=\'11\' stroke-linecap=\'round\'/></defs><g><use xlink:href=\'%23l\' opacity=\'.27\'/><use xlink:href=\'%23l\' opacity=\'.27\' transform=\'rotate(30 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.27\' transform=\'rotate(60 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.27\' transform=\'rotate(90 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.27\' transform=\'rotate(120 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.27\' transform=\'rotate(150 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.37\' transform=\'rotate(180 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.46\' transform=\'rotate(210 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.56\' transform=\'rotate(240 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.66\' transform=\'rotate(270 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.75\' transform=\'rotate(300 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.85\' transform=\'rotate(330 60,60)\'/></g></svg>');
+    background-repeat: no-repeat;
+    background-position: 50%;
+    background-size: 100%;
+}
+
+.mui-spinner-white:after
+{
+    background-image: url('data:image/svg+xml;charset=utf-8,<svg viewBox=\'0 0 120 120\' xmlns=\'http://www.w3.org/2000/svg\' xmlns:xlink=\'http://www.w3.org/1999/xlink\'><defs><line id=\'l\' x1=\'60\' x2=\'60\' y1=\'7\' y2=\'27\' stroke=\'%23fff\' stroke-width=\'11\' stroke-linecap=\'round\'/></defs><g><use xlink:href=\'%23l\' opacity=\'.27\'/><use xlink:href=\'%23l\' opacity=\'.27\' transform=\'rotate(30 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.27\' transform=\'rotate(60 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.27\' transform=\'rotate(90 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.27\' transform=\'rotate(120 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.27\' transform=\'rotate(150 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.37\' transform=\'rotate(180 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.46\' transform=\'rotate(210 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.56\' transform=\'rotate(240 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.66\' transform=\'rotate(270 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.75\' transform=\'rotate(300 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.85\' transform=\'rotate(330 60,60)\'/></g></svg>');
+}
+
+@-webkit-keyframes spinner-spin
+{
+    0%
+    {
+        -webkit-transform: rotate(0deg);
+    }
+
+    8.33333333%
+    {
+        -webkit-transform: rotate(30deg);
+    }
+
+    16.66666667%
+    {
+        -webkit-transform: rotate(60deg);
+    }
+
+    25%
+    {
+        -webkit-transform: rotate(90deg);
+    }
+
+    33.33333333%
+    {
+        -webkit-transform: rotate(120deg);
+    }
+
+    41.66666667%
+    {
+        -webkit-transform: rotate(150deg);
+    }
+
+    50%
+    {
+        -webkit-transform: rotate(180deg);
+    }
+
+    58.33333333%
+    {
+        -webkit-transform: rotate(210deg);
+    }
+
+    66.66666667%
+    {
+        -webkit-transform: rotate(240deg);
+    }
+
+    75%
+    {
+        -webkit-transform: rotate(270deg);
+    }
+
+    83.33333333%
+    {
+        -webkit-transform: rotate(300deg);
+    }
+
+    91.66666667%
+    {
+        -webkit-transform: rotate(330deg);
+    }
+
+    100%
+    {
+        -webkit-transform: rotate(360deg);
+    }
+}
+@keyframes spinner-spin
+{
+    0%
+    {
+        transform: rotate(0deg);
+    }
+
+    8.33333333%
+    {
+        transform: rotate(30deg);
+    }
+
+    16.66666667%
+    {
+        transform: rotate(60deg);
+    }
+
+    25%
+    {
+        transform: rotate(90deg);
+    }
+
+    33.33333333%
+    {
+        transform: rotate(120deg);
+    }
+
+    41.66666667%
+    {
+        transform: rotate(150deg);
+    }
+
+    50%
+    {
+        transform: rotate(180deg);
+    }
+
+    58.33333333%
+    {
+        transform: rotate(210deg);
+    }
+
+    66.66666667%
+    {
+        transform: rotate(240deg);
+    }
+
+    75%
+    {
+        transform: rotate(270deg);
+    }
+
+    83.33333333%
+    {
+        transform: rotate(300deg);
+    }
+
+    91.66666667%
+    {
+        transform: rotate(330deg);
+    }
+
+    100%
+    {
+        transform: rotate(360deg);
+    }
+}
+input[type='button'],
+input[type='submit'],
+input[type='reset'],
+button,
+.mui-btn
+{
+    font-size: 14px;
+    font-weight: 400;
+    line-height: 1.42;
+
+    position: relative;
+
+    display: inline-block;
+
+    margin-bottom: 0;
+    padding: 6px 12px;
+
+    cursor: pointer;
+    -webkit-transition: all;
+            transition: all;
+    -webkit-transition-timing-function: linear;
+            transition-timing-function: linear;
+    -webkit-transition-duration: .2s;
+            transition-duration: .2s;
+    text-align: center;
+    vertical-align: top;
+    white-space: nowrap;
+
+    color: #333;
+    border: 1px solid #ccc;
+    border-radius: 3px;
+    border-top-left-radius: 3px;
+    border-top-right-radius: 3px;
+    border-bottom-right-radius: 3px;
+    border-bottom-left-radius: 3px;
+    background-color: #fff;
+    background-clip: padding-box;
+}
+input[type='button']:enabled:active, input[type='button'].mui-active:enabled,
+input[type='submit']:enabled:active,
+input[type='submit'].mui-active:enabled,
+input[type='reset']:enabled:active,
+input[type='reset'].mui-active:enabled,
+button:enabled:active,
+button.mui-active:enabled,
+.mui-btn:enabled:active,
+.mui-btn.mui-active:enabled
+{
+    color: #fff;
+    background-color: #929292;
+}
+input[type='button']:disabled, input[type='button'].mui-disabled,
+input[type='submit']:disabled,
+input[type='submit'].mui-disabled,
+input[type='reset']:disabled,
+input[type='reset'].mui-disabled,
+button:disabled,
+button.mui-disabled,
+.mui-btn:disabled,
+.mui-btn.mui-disabled
+{
+    opacity: .6;
+}
+
+input[type='submit'],
+.mui-btn-primary, .mui-btn-blue
+{
+    color: #fff;
+    border: 1px solid #007aff;
+    background-color: #007aff;
+}
+input[type='submit']:enabled:active, input[type='submit'].mui-active:enabled,
+.mui-btn-primary:enabled:active,
+.mui-btn-primary.mui-active:enabled, .mui-btn-blue:enabled:active, .mui-btn-blue.mui-active:enabled
+{
+    color: #fff;
+    border: 1px solid #0062cc;
+    background-color: #0062cc;
+}
+
+.mui-btn-positive, .mui-btn-success, .mui-btn-green
+{
+    color: #fff;
+    border: 1px solid #4cd964;
+    background-color: #4cd964;
+}
+.mui-btn-positive:enabled:active, .mui-btn-positive.mui-active:enabled, .mui-btn-success:enabled:active, .mui-btn-success.mui-active:enabled, .mui-btn-green:enabled:active, .mui-btn-green.mui-active:enabled
+{
+    color: #fff;
+    border: 1px solid #2ac845;
+    background-color: #2ac845;
+}
+
+.mui-btn-warning, .mui-btn-yellow
+{
+    color: #fff;
+    border: 1px solid #f0ad4e;
+    background-color: #f0ad4e;
+}
+.mui-btn-warning:enabled:active, .mui-btn-warning.mui-active:enabled, .mui-btn-yellow:enabled:active, .mui-btn-yellow.mui-active:enabled
+{
+    color: #fff;
+    border: 1px solid #ec971f;
+    background-color: #ec971f;
+}
+
+.mui-btn-negative, .mui-btn-danger, .mui-btn-red
+{
+    color: #fff;
+    border: 1px solid #dd524d;
+    background-color: #dd524d;
+}
+.mui-btn-negative:enabled:active, .mui-btn-negative.mui-active:enabled, .mui-btn-danger:enabled:active, .mui-btn-danger.mui-active:enabled, .mui-btn-red:enabled:active, .mui-btn-red.mui-active:enabled
+{
+    color: #fff;
+    border: 1px solid #cf2d28;
+    background-color: #cf2d28;
+}
+
+.mui-btn-royal, .mui-btn-purple
+{
+    color: #fff;
+    border: 1px solid #8a6de9;
+    background-color: #8a6de9;
+}
+.mui-btn-royal:enabled:active, .mui-btn-royal.mui-active:enabled, .mui-btn-purple:enabled:active, .mui-btn-purple.mui-active:enabled
+{
+    color: #fff;
+    border: 1px solid #6641e2;
+    background-color: #6641e2;
+}
+
+.mui-btn-grey
+{
+    color: #fff;
+    border: 1px solid #c7c7cc;
+    background-color: #c7c7cc;
+}
+.mui-btn-grey:enabled:active, .mui-btn-grey.mui-active:enabled
+{
+    color: #fff;
+    border: 1px solid #acacb4;
+    background-color: #acacb4;
+}
+
+.mui-btn-outlined
+{
+    background-color: transparent;
+}
+.mui-btn-outlined.mui-btn-primary, .mui-btn-outlined.mui-btn-blue
+{
+    color: #007aff;
+}
+.mui-btn-outlined.mui-btn-positive, .mui-btn-outlined.mui-btn-success, .mui-btn-outlined.mui-btn-green
+{
+    color: #4cd964;
+}
+.mui-btn-outlined.mui-btn-warning, .mui-btn-outlined.mui-btn-yellow
+{
+    color: #f0ad4e;
+}
+.mui-btn-outlined.mui-btn-negative, .mui-btn-outlined.mui-btn-danger, .mui-btn-outlined.mui-btn-red
+{
+    color: #dd524d;
+}
+.mui-btn-outlined.mui-btn-royal, .mui-btn-outlined.mui-btn-purple
+{
+    color: #8a6de9;
+}
+.mui-btn-outlined.mui-btn-primary:enabled:active, .mui-btn-outlined.mui-btn-blue:enabled:active, .mui-btn-outlined.mui-btn-positive:enabled:active, .mui-btn-outlined.mui-btn-success:enabled:active, .mui-btn-outlined.mui-btn-green:enabled:active, .mui-btn-outlined.mui-btn-warning:enabled:active, .mui-btn-outlined.mui-btn-yellow:enabled:active, .mui-btn-outlined.mui-btn-negative:enabled:active, .mui-btn-outlined.mui-btn-danger:enabled:active, .mui-btn-outlined.mui-btn-red:enabled:active, .mui-btn-outlined.mui-btn-royal:enabled:active, .mui-btn-outlined.mui-btn-purple:enabled:active
+{
+    color: #fff;
+}
+
+.mui-btn-link
+{
+    padding-top: 6px;
+    padding-bottom: 6px;
+
+    color: #007aff;
+    border: 0;
+    background-color: transparent;
+}
+.mui-btn-link:enabled:active, .mui-btn-link.mui-active:enabled
+{
+    color: #0062cc;
+    background-color: transparent;
+}
+
+.mui-btn-block
+{
+    font-size: 18px;
+
+    display: block;
+
+    width: 100%;
+    margin-bottom: 10px;
+    padding: 15px 0;
+}
+
+.mui-btn .mui-badge
+{
+    font-size: 14px;
+
+    margin: -2px -4px -2px 4px;
+
+    background-color: rgba(0, 0, 0, .15);
+}
+
+.mui-btn .mui-badge-inverted,
+.mui-btn:enabled:active .mui-badge-inverted
+{
+    background-color: transparent;
+}
+
+.mui-btn-primary:enabled:active .mui-badge-inverted,
+.mui-btn-positive:enabled:active .mui-badge-inverted,
+.mui-btn-negative:enabled:active .mui-badge-inverted
+{
+    color: #fff;
+}
+
+.mui-btn-block .mui-badge
+{
+    position: absolute;
+    right: 0;
+
+    margin-right: 10px;
+}
+
+.mui-btn .mui-icon
+{
+    font-size: inherit;
+}
+
+.mui-btn.mui-icon
+{
+    font-size: 14px;
+    line-height: 1.42;
+}
+
+.mui-btn.mui-fab
+{
+    width: 56px;
+    height: 56px;
+    padding: 16px;
+
+    border-radius: 50%;
+    outline: none;
+}
+.mui-btn.mui-fab.mui-btn-mini
+{
+    width: 40px;
+    height: 40px;
+    padding: 8px;
+}
+.mui-btn.mui-fab .mui-icon
+{
+    font-size: 24px;
+    line-height: 24px;
+
+    width: 24px;
+    height: 24px;
+}
+
+.mui-bar
+{
+    position: fixed;
+    z-index: 10;
+    right: 0;
+    left: 0;
+
+    height: 44px;
+    padding-right: 10px;
+    padding-left: 10px;
+
+    border-bottom: 0;
+    background-color: #f7f7f7;
+    -webkit-box-shadow: 0 0 1px rgba(0, 0, 0, .85);
+            box-shadow: 0 0 1px rgba(0, 0, 0, .85);
+
+    -webkit-backface-visibility: hidden;
+            backface-visibility: hidden;
+}
+
+.mui-bar .mui-title
+{
+    right: 40px;
+    left: 40px;
+
+    display: inline-block;
+    overflow: hidden;
+
+    width: auto;
+    margin: 0;
+
+    text-overflow: ellipsis;
+}
+.mui-bar .mui-backdrop
+{
+    background: none;
+}
+
+.mui-bar-header-secondary
+{
+    top: 44px;
+}
+
+.mui-bar-footer
+{
+    bottom: 0;
+}
+
+.mui-bar-footer-secondary
+{
+    bottom: 44px;
+}
+
+.mui-bar-footer-secondary-tab
+{
+    bottom: 50px;
+}
+
+.mui-bar-footer,
+.mui-bar-footer-secondary,
+.mui-bar-footer-secondary-tab
+{
+    border-top: 0;
+}
+
+.mui-bar-nav
+{
+    top: 0;
+
+    -webkit-box-shadow: 0 1px 6px #ccc;
+            box-shadow: 0 1px 6px #ccc;
+}
+.mui-bar-nav ~ .mui-content .mui-anchor
+{
+    display: block;
+    visibility: hidden;
+
+    height: 45px;
+    margin-top: -45px;
+}
+.mui-bar-nav.mui-bar .mui-icon
+{
+    margin-right: -10px;
+    margin-left: -10px;
+    padding-right: 10px;
+    padding-left: 10px;
+}
+
+.mui-title
+{
+    font-size: 17px;
+    font-weight: 500;
+    line-height: 44px;
+
+    position: absolute;
+
+    display: block;
+
+    width: 100%;
+    margin: 0 -10px;
+    padding: 0;
+
+    text-align: center;
+    white-space: nowrap;
+
+    color: #000;
+}
+
+.mui-title a
+{
+    color: inherit;
+}
+
+.mui-bar-tab
+{
+    bottom: 0;
+
+    display: table;
+
+    width: 100%;
+    height: 50px;
+    padding: 0;
+
+    table-layout: fixed;
+
+    border-top: 0;
+    border-bottom: 0;
+
+    -webkit-touch-callout: none;
+}
+.mui-bar-tab .mui-tab-item
+{
+    display: table-cell;
+    overflow: hidden;
+
+    width: 1%;
+    height: 50px;
+
+    text-align: center;
+    vertical-align: middle;
+    white-space: nowrap;
+    text-overflow: ellipsis;
+
+    color: #929292;
+}
+.mui-bar-tab .mui-tab-item.mui-active
+{
+    color: #007aff;
+}
+.mui-bar-tab .mui-tab-item .mui-icon
+{
+    top: 3px;
+
+    width: 24px;
+    height: 24px;
+    padding-top: 0;
+    padding-bottom: 0;
+}
+.mui-bar-tab .mui-tab-item .mui-icon ~ .mui-tab-label
+{
+    font-size: 11px;
+
+    display: block;
+    overflow: hidden;
+
+    text-overflow: ellipsis;
+}
+.mui-bar-tab .mui-tab-item .mui-icon:active
+{
+    background: none;
+}
+
+.mui-focusin > .mui-bar-nav, .mui-focusin > .mui-bar-header-secondary
+{
+    position: absolute;
+}
+
+.mui-focusin > .mui-bar ~ .mui-content
+{
+    padding-bottom: 0;
+}
+
+.mui-bar .mui-btn
+{
+    font-weight: 400;
+
+    position: relative;
+    z-index: 20;
+    top: 7px;
+
+    margin-top: 0;
+    padding: 6px 12px 7px;
+}
+.mui-bar .mui-btn.mui-pull-right
+{
+    margin-left: 10px;
+}
+.mui-bar .mui-btn.mui-pull-left
+{
+    margin-right: 10px;
+}
+
+.mui-bar .mui-btn-link
+{
+    font-size: 16px;
+    line-height: 44px;
+
+    top: 0;
+
+    padding: 0;
+
+    color: #007aff;
+    border: 0;
+}
+.mui-bar .mui-btn-link:active, .mui-bar .mui-btn-link.mui-active
+{
+    color: #0062cc;
+}
+
+.mui-bar .mui-btn-block
+{
+    font-size: 16px;
+
+    top: 6px;
+
+    margin-bottom: 0;
+    padding: 5px 0;
+}
+
+.mui-bar .mui-btn-nav.mui-pull-left
+{
+    margin-left: -5px;
+}
+.mui-bar .mui-btn-nav.mui-pull-left .mui-icon-left-nav
+{
+    margin-right: -3px;
+}
+.mui-bar .mui-btn-nav.mui-pull-right
+{
+    margin-right: -5px;
+}
+.mui-bar .mui-btn-nav.mui-pull-right .mui-icon-right-nav
+{
+    margin-left: -3px;
+}
+.mui-bar .mui-btn-nav:active
+{
+    opacity: .3;
+}
+
+.mui-bar .mui-icon
+{
+    font-size: 24px;
+
+    position: relative;
+    z-index: 20;
+
+    padding-top: 10px;
+    padding-bottom: 10px;
+}
+.mui-bar .mui-icon:active
+{
+    opacity: .3;
+}
+.mui-bar .mui-btn .mui-icon
+{
+    top: 1px;
+
+    margin: 0;
+    padding: 0;
+}
+.mui-bar .mui-title .mui-icon
+{
+    margin: 0;
+    padding: 0;
+}
+.mui-bar .mui-title .mui-icon.mui-icon-caret
+{
+    top: 4px;
+
+    margin-left: -5px;
+}
+
+.mui-bar input[type='search']
+{
+    height: 29px;
+    margin: 6px 0;
+}
+
+.mui-bar .mui-input-row .mui-btn
+{
+    padding: 12px 10px;
+}
+
+.mui-bar .mui-search:before
+{
+    margin-top: -10px;
+}
+
+.mui-bar .mui-input-row .mui-input-clear ~ .mui-icon-clear, .mui-bar .mui-input-row .mui-input-speech ~ .mui-icon-speech
+{
+    top: 0;
+    right: 12px;
+}
+
+.mui-bar.mui-bar-header-secondary .mui-input-row .mui-input-clear ~ .mui-icon-clear, .mui-bar.mui-bar-header-secondary .mui-input-row .mui-input-speech ~ .mui-icon-speech
+{
+    top: 0;
+    right: 0;
+}
+
+.mui-bar .mui-segmented-control
+{
+    top: 7px;
+
+    width: auto;
+    margin: 0 auto;
+}
+
+.mui-bar.mui-bar-header-secondary .mui-segmented-control
+{
+    top: 0;
+}
+
+.mui-badge
+{
+    font-size: 12px;
+    line-height: 1;
+
+    display: inline-block;
+
+    padding: 3px 6px;
+
+    color: #333;
+    border-radius: 100px;
+    background-color: rgba(0, 0, 0, .15);
+}
+.mui-badge.mui-badge-inverted
+{
+    padding: 0 5px 0 0;
+
+    color: #929292;
+    background-color: transparent;
+}
+
+.mui-badge-primary, .mui-badge-blue
+{
+    color: #fff;
+    background-color: #007aff;
+}
+.mui-badge-primary.mui-badge-inverted, .mui-badge-blue.mui-badge-inverted
+{
+    color: #007aff;
+    background-color: transparent;
+}
+
+.mui-badge-success, .mui-badge-green
+{
+    color: #fff;
+    background-color: #4cd964;
+}
+.mui-badge-success.mui-badge-inverted, .mui-badge-green.mui-badge-inverted
+{
+    color: #4cd964;
+    background-color: transparent;
+}
+
+.mui-badge-warning, .mui-badge-yellow
+{
+    color: #fff;
+    background-color: #f0ad4e;
+}
+.mui-badge-warning.mui-badge-inverted, .mui-badge-yellow.mui-badge-inverted
+{
+    color: #f0ad4e;
+    background-color: transparent;
+}
+
+.mui-badge-danger, .mui-badge-red
+{
+    color: #fff;
+    background-color: #dd524d;
+}
+.mui-badge-danger.mui-badge-inverted, .mui-badge-red.mui-badge-inverted
+{
+    color: #dd524d;
+    background-color: transparent;
+}
+
+.mui-badge-royal, .mui-badge-purple
+{
+    color: #fff;
+    background-color: #8a6de9;
+}
+.mui-badge-royal.mui-badge-inverted, .mui-badge-purple.mui-badge-inverted
+{
+    color: #8a6de9;
+    background-color: transparent;
+}
+
+.mui-icon .mui-badge
+{
+    font-size: 10px;
+    line-height: 1.4;
+
+    position: absolute;
+    top: -2px;
+    left: 100%;
+
+    margin-left: -10px;
+    padding: 1px 5px;
+
+    color: white;
+    background: red;
+}
+
+.mui-card
+{
+    overflow: hidden;
+
+    margin: 0 15px;
+
+    border: 1px solid #ddd;
+    border-radius: 6px;
+    background-color: white;
+    background-clip: padding-box;
+}
+
+.mui-content > .mui-card:first-child
+{
+    margin-top: 15px;
+}
+
+.mui-card .mui-input-group:before, .mui-card .mui-input-group:after
+{
+    height: 0;
+}
+.mui-card .mui-input-group .mui-input-row:last-child:before, .mui-card .mui-input-group .mui-input-row:last-child:after
+{
+    height: 0;
+}
+
+.mui-card .mui-table-view
+{
+    margin-bottom: 0;
+
+    border-top: 0;
+    border-bottom: 0;
+    border-radius: 6px;
+}
+.mui-card .mui-table-view .mui-table-view-divider:first-child
+{
+    top: 0;
+
+    border-top-left-radius: 6px;
+    border-top-right-radius: 6px;
+}
+.mui-card .mui-table-view .mui-table-view-divider:last-child
+{
+    border-bottom-right-radius: 6px;
+    border-bottom-left-radius: 6px;
+}
+.mui-card .mui-table-view:before, .mui-card .mui-table-view:after
+{
+    height: 0;
+}
+
+.mui-card > .mui-table-view > .mui-table-view-cell:last-child:before, .mui-card > .mui-table-view > .mui-table-view-cell:last-child:after
+{
+    height: 0;
+}
+
+.mui-table-view
+{
+    position: relative;
+
+    margin-top: 0;
+    margin-bottom: 0;
+    padding-left: 0;
+
+    list-style: none;
+
+    background-color: #fff;
+}
+.mui-table-view:after
+{
+    position: absolute;
+    right: 0;
+    bottom: 0;
+    left: 0;
+
+    height: 1px;
+
+    content: '';
+    -webkit-transform: scaleY(.5);
+            transform: scaleY(.5);
+
+    background-color: #c8c7cc;
+}
+.mui-table-view:before
+{
+    position: absolute;
+    top: 0;
+    right: 0;
+    left: 0;
+
+    height: 1px;
+
+    content: '';
+    -webkit-transform: scaleY(.5);
+            transform: scaleY(.5);
+
+    background-color: #c8c7cc;
+}
+
+.mui-table-view-icon .mui-table-view-cell .mui-navigate-right .mui-icon
+{
+    font-size: 20px;
+
+    margin-top: -1px;
+    margin-right: 5px;
+    margin-left: -5px;
+}
+.mui-table-view-icon .mui-table-view-cell:after
+{
+    left: 40px;
+}
+
+.mui-table-view-chevron .mui-table-view-cell
+{
+    padding-right: 65px;
+}
+.mui-table-view-chevron .mui-table-view-cell > a:not(.mui-btn)
+{
+    margin-right: -65px;
+}
+
+.mui-table-view-radio .mui-table-view-cell
+{
+    padding-right: 65px;
+}
+.mui-table-view-radio .mui-table-view-cell > a:not(.mui-btn)
+{
+    margin-right: -65px;
+}
+.mui-table-view-radio .mui-table-view-cell .mui-navigate-right:after
+{
+    font-size: 30px;
+    font-weight: 600;
+
+    right: 9px;
+
+    content: '';
+
+    color: #007aff;
+}
+.mui-table-view-radio .mui-table-view-cell.mui-selected .mui-navigate-right:after
+{
+    content: '\e472';
+}
+
+.mui-table-view-inverted
+{
+    color: #fff;
+    background: #333;
+}
+.mui-table-view-inverted:after
+{
+    position: absolute;
+    right: 0;
+    bottom: 0;
+    left: 0;
+
+    height: 1px;
+
+    content: '';
+    -webkit-transform: scaleY(.5);
+            transform: scaleY(.5);
+
+    background-color: #222;
+}
+.mui-table-view-inverted:before
+{
+    position: absolute;
+    top: 0;
+    right: 0;
+    left: 0;
+
+    height: 1px;
+
+    content: '';
+    -webkit-transform: scaleY(.5);
+            transform: scaleY(.5);
+
+    background-color: #222;
+}
+.mui-table-view-inverted .mui-table-view-cell:after
+{
+    position: absolute;
+    right: 0;
+    bottom: 0;
+    left: 15px;
+
+    height: 1px;
+
+    content: '';
+    -webkit-transform: scaleY(.5);
+            transform: scaleY(.5);
+
+    background-color: #222;
+}
+.mui-table-view-inverted .mui-table-view-cell.mui-active
+{
+    background-color: #242424;
+}
+.mui-table-view-inverted .mui-table-view-cell > a:not(.mui-btn).mui-active
+{
+    background-color: #242424;
+}
+
+.mui-table-view-cell
+{
+    position: relative;
+
+    overflow: hidden;
+
+    padding: 11px 15px;
+
+    background-color: inherit;
+
+    -webkit-touch-callout: none;
+}
+.mui-table-view-cell:after
+{
+    position: absolute;
+    right: 0;
+    bottom: 0;
+    left: 15px;
+
+    height: 1px;
+
+    content: '';
+    -webkit-transform: scaleY(.5);
+            transform: scaleY(.5);
+
+    background-color: #c8c7cc;
+}
+.mui-table-view-cell.mui-radio input[type=radio], .mui-table-view-cell.mui-checkbox input[type=checkbox]
+{
+    top: 8px;
+}
+.mui-table-view-cell.mui-radio.mui-left, .mui-table-view-cell.mui-checkbox.mui-left
+{
+    padding-left: 58px;
+}
+.mui-table-view-cell.mui-active
+{
+    background-color: #eee;
+}
+.mui-table-view-cell:last-child:before, .mui-table-view-cell:last-child:after
+{
+    height: 0;
+}
+.mui-table-view-cell > a:not(.mui-btn)
+{
+    position: relative;
+
+    display: block;
+    overflow: hidden;
+
+    margin: -11px -15px;
+    padding: inherit;
+
+    white-space: nowrap;
+    text-overflow: ellipsis;
+
+    color: inherit;
+  /*&:active {
+      background-color: #eee;
+  }*/
+}
+.mui-table-view-cell > a:not(.mui-btn).mui-active
+{
+    background-color: #eee;
+}
+.mui-table-view-cell p
+{
+    margin-bottom: 0;
+}
+
+.mui-table-view-cell.mui-transitioning > .mui-slider-handle, .mui-table-view-cell.mui-transitioning > .mui-slider-left .mui-btn, .mui-table-view-cell.mui-transitioning > .mui-slider-right .mui-btn
+{
+    -webkit-transition: -webkit-transform 300ms ease;
+            transition:         transform 300ms ease;
+}
+.mui-table-view-cell.mui-active > .mui-slider-handle
+{
+    background-color: #eee;
+}
+.mui-table-view-cell > .mui-slider-handle
+{
+    position: relative;
+
+    background-color: #fff;
+}
+.mui-table-view-cell > .mui-slider-handle.mui-navigate-right:after, .mui-table-view-cell > .mui-slider-handle .mui-navigate-right:after
+{
+    right: 0;
+}
+.mui-table-view-cell > .mui-slider-handle, .mui-table-view-cell > .mui-slider-left .mui-btn, .mui-table-view-cell > .mui-slider-right .mui-btn
+{
+    -webkit-transition: -webkit-transform 0ms ease;
+            transition:         transform 0ms ease;
+
+    -webkit-backface-visibility: hidden;
+            backface-visibility: hidden;
+}
+.mui-table-view-cell > .mui-slider-left, .mui-table-view-cell > .mui-slider-right
+{
+    position: absolute;
+    top: 0;
+
+    display: -webkit-box;
+    display: -webkit-flex;
+    display:         flex;
+
+    height: 100%;
+
+    -webkit-backface-visibility: hidden;
+            backface-visibility: hidden;
+}
+.mui-table-view-cell > .mui-slider-left > .mui-btn, .mui-table-view-cell > .mui-slider-right > .mui-btn
+{
+    position: relative;
+    left: 0;
+
+    display: -webkit-box;
+    display: -webkit-flex;
+    display:         flex;
+
+    padding: 0 30px;
+
+    color: #fff;
+    border: 0;
+    border-radius: 0;
+
+    -webkit-box-align: center;
+    -webkit-align-items: center;
+            align-items: center;
+}
+.mui-table-view-cell > .mui-slider-left > .mui-btn:after, .mui-table-view-cell > .mui-slider-right > .mui-btn:after
+{
+    position: absolute;
+    z-index: -1;
+    top: 0;
+
+    width: 600%;
+    height: 100%;
+
+    content: '';
+
+    background: inherit;
+}
+.mui-table-view-cell > .mui-slider-left > .mui-btn.mui-icon, .mui-table-view-cell > .mui-slider-right > .mui-btn.mui-icon
+{
+    font-size: 30px;
+}
+.mui-table-view-cell > .mui-slider-right
+{
+    right: 0;
+
+    -webkit-transition: -webkit-transform 0ms ease;
+            transition:         transform 0ms ease;
+    -webkit-transform: translateX(100%);
+            transform: translateX(100%);
+}
+.mui-table-view-cell > .mui-slider-left
+{
+    left: 0;
+
+    -webkit-transition: -webkit-transform 0ms ease;
+            transition:         transform 0ms ease;
+    -webkit-transform: translateX(-100%);
+            transform: translateX(-100%);
+}
+.mui-table-view-cell > .mui-slider-left > .mui-btn:after
+{
+    right: 100%;
+
+    margin-right: -1px;
+}
+
+.mui-table-view-divider
+{
+    font-weight: 500;
+
+    position: relative;
+
+    margin-top: -1px;
+    margin-left: 0;
+    padding-top: 6px;
+    padding-bottom: 6px;
+    padding-left: 15px;
+
+    color: #999;
+    background-color: #fafafa;
+}
+.mui-table-view-divider:after
+{
+    position: absolute;
+    right: 0;
+    bottom: 0;
+    left: 0;
+
+    height: 1px;
+
+    content: '';
+    -webkit-transform: scaleY(.5);
+            transform: scaleY(.5);
+
+    background-color: #c8c7cc;
+}
+.mui-table-view-divider:before
+{
+    position: absolute;
+    top: 0;
+    right: 0;
+    left: 0;
+
+    height: 1px;
+
+    content: '';
+    -webkit-transform: scaleY(.5);
+            transform: scaleY(.5);
+
+    background-color: #c8c7cc;
+}
+
+.mui-table-view .mui-media,
+.mui-table-view .mui-media-body
+{
+    overflow: hidden;
+}
+
+.mui-table-view .mui-media-large .mui-media-object
+{
+    line-height: 80px;
+
+    max-width: 80px;
+    height: 80px;
+}
+.mui-table-view .mui-media .mui-subtitle
+{
+    color: #000;
+}
+.mui-table-view .mui-media-object
+{
+    line-height: 42px;
+
+    max-width: 42px;
+    height: 42px;
+}
+.mui-table-view .mui-media-object.mui-pull-left
+{
+    margin-right: 10px;
+}
+.mui-table-view .mui-media-object.mui-pull-right
+{
+    margin-left: 10px;
+}
+.mui-table-view .mui-table-view-cell.mui-media-icon .mui-media-object
+{
+    line-height: 29px;
+
+    max-width: 29px;
+    height: 29px;
+    margin: -4px 0;
+}
+.mui-table-view .mui-table-view-cell.mui-media-icon .mui-media-object img
+{
+    line-height: 29px;
+
+    max-width: 29px;
+    height: 29px;
+}
+.mui-table-view .mui-table-view-cell.mui-media-icon .mui-media-object.mui-pull-left
+{
+    margin-right: 10px;
+}
+.mui-table-view .mui-table-view-cell.mui-media-icon .mui-media-object .mui-icon
+{
+    font-size: 29px;
+}
+.mui-table-view .mui-table-view-cell.mui-media-icon .mui-media-body:after
+{
+    position: absolute;
+    right: 0;
+    bottom: 0;
+    left: 55px;
+
+    height: 1px;
+
+    content: '';
+    -webkit-transform: scaleY(.5);
+            transform: scaleY(.5);
+
+    background-color: #c8c7cc;
+}
+.mui-table-view .mui-table-view-cell.mui-media-icon:after
+{
+    height: 0 !important;
+}
+
+.mui-table-view.mui-unfold .mui-table-view-cell.mui-collapse .mui-table-view
+{
+    display: block;
+}
+.mui-table-view.mui-unfold .mui-table-view-cell.mui-collapse .mui-table-view:before, .mui-table-view.mui-unfold .mui-table-view-cell.mui-collapse .mui-table-view:after
+{
+    height: 0 !important;
+}
+.mui-table-view.mui-unfold .mui-table-view-cell.mui-media-icon.mui-collapse .mui-media-body:after
+{
+    position: absolute;
+    right: 0;
+    bottom: 0;
+    left: 70px;
+
+    height: 1px;
+
+    content: '';
+    -webkit-transform: scaleY(.5);
+            transform: scaleY(.5);
+
+    background-color: #c8c7cc;
+}
+
+.mui-table-view-cell > .mui-btn,
+.mui-table-view-cell > .mui-badge,
+.mui-table-view-cell > .mui-switch,
+.mui-table-view-cell > a > .mui-btn,
+.mui-table-view-cell > a > .mui-badge,
+.mui-table-view-cell > a > .mui-switch
+{
+    position: absolute;
+    top: 50%;
+    right: 15px;
+
+    -webkit-transform: translateY(-50%);
+            transform: translateY(-50%);
+}
+.mui-table-view-cell .mui-navigate-right > .mui-btn,
+.mui-table-view-cell .mui-navigate-right > .mui-badge,
+.mui-table-view-cell .mui-navigate-right > .mui-switch,
+.mui-table-view-cell .mui-push-left > .mui-btn,
+.mui-table-view-cell .mui-push-left > .mui-badge,
+.mui-table-view-cell .mui-push-left > .mui-switch,
+.mui-table-view-cell .mui-push-right > .mui-btn,
+.mui-table-view-cell .mui-push-right > .mui-badge,
+.mui-table-view-cell .mui-push-right > .mui-switch,
+.mui-table-view-cell > a .mui-navigate-right > .mui-btn,
+.mui-table-view-cell > a .mui-navigate-right > .mui-badge,
+.mui-table-view-cell > a .mui-navigate-right > .mui-switch,
+.mui-table-view-cell > a .mui-push-left > .mui-btn,
+.mui-table-view-cell > a .mui-push-left > .mui-badge,
+.mui-table-view-cell > a .mui-push-left > .mui-switch,
+.mui-table-view-cell > a .mui-push-right > .mui-btn,
+.mui-table-view-cell > a .mui-push-right > .mui-badge,
+.mui-table-view-cell > a .mui-push-right > .mui-switch
+{
+    right: 35px;
+}
+
+.mui-content > .mui-table-view:first-child
+{
+    margin-top: 15px;
+}
+
+.mui-table-view-cell.mui-collapse .mui-table-view:before, .mui-table-view-cell.mui-collapse .mui-table-view:after
+{
+    height: 0;
+}
+.mui-table-view-cell.mui-collapse .mui-table-view .mui-table-view-cell:last-child:after
+{
+    height: 0;
+}
+.mui-table-view-cell.mui-collapse > .mui-navigate-right:after, .mui-table-view-cell.mui-collapse > .mui-push-right:after
+{
+    content: '\e581';
+}
+.mui-table-view-cell.mui-collapse.mui-active
+{
+    margin-top: -1px;
+}
+.mui-table-view-cell.mui-collapse.mui-active .mui-table-view, .mui-table-view-cell.mui-collapse.mui-active .mui-collapse-content
+{
+    display: block;
+}
+.mui-table-view-cell.mui-collapse.mui-active > .mui-navigate-right:after, .mui-table-view-cell.mui-collapse.mui-active > .mui-push-right:after
+{
+    content: '\e580';
+}
+.mui-table-view-cell.mui-collapse.mui-active .mui-table-view-cell > a:not(.mui-btn).mui-active
+{
+    margin-left: -31px;
+    padding-left: 47px;
+}
+.mui-table-view-cell.mui-collapse .mui-collapse-content
+{
+    position: relative;
+
+    display: none;
+    overflow: hidden;
+
+    margin: 11px -15px -11px;
+    padding: 8px 15px;
+
+    -webkit-transition: height .35s ease;
+         -o-transition: height .35s ease;
+            transition: height .35s ease;
+
+    background: white;
+}
+.mui-table-view-cell.mui-collapse .mui-collapse-content > .mui-input-group, .mui-table-view-cell.mui-collapse .mui-collapse-content > .mui-slider
+{
+    width: auto;
+    height: auto;
+    margin: -8px -15px;
+}
+.mui-table-view-cell.mui-collapse .mui-collapse-content > .mui-slider
+{
+    margin: -8px -16px;
+}
+.mui-table-view-cell.mui-collapse .mui-table-view
+{
+    display: none;
+
+    margin-top: 11px;
+    margin-right: -15px;
+    margin-bottom: -11px;
+    margin-left: -15px;
+
+    border: 0;
+}
+.mui-table-view-cell.mui-collapse .mui-table-view.mui-table-view-chevron
+{
+    margin-right: -65px;
+}
+.mui-table-view-cell.mui-collapse .mui-table-view .mui-table-view-cell
+{
+    padding-left: 31px;
+
+    background-position: 31px 100%;
+}
+.mui-table-view-cell.mui-collapse .mui-table-view .mui-table-view-cell:after
+{
+    position: absolute;
+    right: 0;
+    bottom: 0;
+    left: 30px;
+
+    height: 1px;
+
+    content: '';
+    -webkit-transform: scaleY(.5);
+            transform: scaleY(.5);
+
+    background-color: #c8c7cc;
+}
+
+.mui-table-view.mui-grid-view
+{
+    font-size: 0;
+
+    display: block;
+
+    width: 100%;
+    padding: 0 10px 10px 0;
+
+    white-space: normal;
+}
+.mui-table-view.mui-grid-view .mui-table-view-cell
+{
+    font-size: 17px;
+
+    display: inline-block;
+
+    margin-right: -4px;
+    padding: 10px 0 0 14px;
+
+    text-align: center;
+    vertical-align: middle;
+
+    background: none;
+}
+.mui-table-view.mui-grid-view .mui-table-view-cell .mui-media-object
+{
+    width: 100%;
+    max-width: 100%;
+    height: auto;
+}
+.mui-table-view.mui-grid-view .mui-table-view-cell > a:not(.mui-btn)
+{
+    margin: -10px 0 0 -14px;
+}
+.mui-table-view.mui-grid-view .mui-table-view-cell > a:not(.mui-btn):active, .mui-table-view.mui-grid-view .mui-table-view-cell > a:not(.mui-btn).mui-active
+{
+    background: none;
+}
+.mui-table-view.mui-grid-view .mui-table-view-cell .mui-media-body
+{
+    font-size: 15px;
+    line-height: 15px;
+
+    display: block;
+
+    width: 100%;
+    height: 15px;
+    margin-top: 8px;
+
+    text-overflow: ellipsis;
+
+    color: #333;
+}
+.mui-table-view.mui-grid-view .mui-table-view-cell:before, .mui-table-view.mui-grid-view .mui-table-view-cell:after
+{
+    height: 0;
+}
+
+.mui-grid-view.mui-grid-9
+{
+    padding: 1px 0 1px 0;
+    padding-right: 0;
+
+    background-color: #f2f2f2;
+}
+.mui-grid-view.mui-grid-9 .mui-table-view-cell
+{
+    margin: -1px 0 0 -1px;
+    padding: 11px 15px;
+
+    vertical-align: top;
+
+    border-top: 1px solid #eee;
+    border-left: 1px solid #eee;
+}
+.mui-grid-view.mui-grid-9 .mui-table-view-cell.mui-active
+{
+    background-color: #eee;
+}
+.mui-grid-view.mui-grid-9 .mui-table-view-cell > a:not(.mui-btn)
+{
+    margin: 0;
+    padding: 10px 0;
+}
+.mui-grid-view.mui-grid-9:before
+{
+    height: 0;
+}
+.mui-grid-view.mui-grid-9 .mui-media
+{
+    color: #797979;
+}
+.mui-grid-view.mui-grid-9 .mui-media .mui-icon
+{
+    font-size: 2.4em;
+
+    position: relative;
+}
+
+.mui-slider-cell
+{
+    position: relative;
+}
+.mui-slider-cell > .mui-slider-handle
+{
+    z-index: 1;
+}
+.mui-slider-cell > .mui-slider-left, .mui-slider-cell > .mui-slider-right
+{
+    position: absolute;
+    z-index: 0;
+    top: 0;
+    bottom: 0;
+}
+.mui-slider-cell > .mui-slider-left
+{
+    left: 0;
+}
+.mui-slider-cell > .mui-slider-right
+{
+    right: 0;
+}
+
+input,
+textarea,
+select
+{
+    font-family: 'Helvetica Neue', Helvetica, sans-serif;
+    font-size: 17px;
+
+    -webkit-tap-highlight-color: transparent;
+    -webkit-tap-highlight-color: transparent;
+}
+input:focus,
+textarea:focus,
+select:focus
+{
+    -webkit-tap-highlight-color: transparent;
+    -webkit-tap-highlight-color: transparent;
+    -webkit-user-modify: read-write-plaintext-only;
+}
+
+select,
+textarea,
+input[type='text'],
+input[type='search'],
+input[type='password'],
+input[type='datetime'],
+input[type='datetime-local'],
+input[type='date'],
+input[type='month'],
+input[type='time'],
+input[type='week'],
+input[type='number'],
+input[type='email'],
+input[type='url'],
+input[type='tel'],
+input[type='color']
+{
+    line-height: 21px;
+
+    width: 100%;
+    height: 40px;
+    margin-bottom: 15px;
+    padding: 10px 15px;
+
+    -webkit-user-select: text;
+
+    border: 1px solid rgba(0, 0, 0, .2);
+    border-radius: 3px;
+    outline: none;
+    background-color: #fff;
+
+    -webkit-appearance: none;
+}
+
+input[type=number]::-webkit-inner-spin-button,
+input[type=number]::-webkit-outer-spin-button
+{
+    margin: 0;
+
+    -webkit-appearance: none;
+}
+
+input[type='search']
+{
+    font-size: 16px;
+
+    -webkit-box-sizing: border-box;
+            box-sizing: border-box;
+    height: 34px;
+
+    text-align: center;
+
+    border: 0;
+    border-radius: 6px;
+    background-color: rgba(0, 0, 0, .1);
+}
+
+input[type='search']:focus
+{
+    text-align: left;
+}
+
+textarea
+{
+    height: auto;
+
+    resize: none;
+}
+
+select
+{
+    font-size: 14px;
+
+    height: auto;
+    margin-top: 1px;
+
+    border: 0 !important;
+    background-color: #fff;
+}
+select:focus
+{
+    -webkit-user-modify: read-only;
+}
+
+.mui-input-group
+{
+    position: relative;
+
+    padding: 0;
+
+    border: 0;
+    background-color: #fff;
+}
+.mui-input-group:after
+{
+    position: absolute;
+    right: 0;
+    bottom: 0;
+    left: 0;
+
+    height: 1px;
+
+    content: '';
+    -webkit-transform: scaleY(.5);
+            transform: scaleY(.5);
+
+    background-color: #c8c7cc;
+}
+.mui-input-group:before
+{
+    position: absolute;
+    top: 0;
+    right: 0;
+    left: 0;
+
+    height: 1px;
+
+    content: '';
+    -webkit-transform: scaleY(.5);
+            transform: scaleY(.5);
+
+    background-color: #c8c7cc;
+}
+
+.mui-input-group input,
+.mui-input-group textarea
+{
+    margin-bottom: 0;
+
+    border: 0;
+    border-radius: 0;
+    background-color: transparent;
+    -webkit-box-shadow: none;
+            box-shadow: none;
+}
+
+.mui-input-group input[type='search']
+{
+    background: none;
+}
+
+.mui-input-group input:last-child
+{
+    background-image: none;
+}
+
+.mui-input-row
+{
+    clear: left;
+    overflow: hidden;
+}
+.mui-input-row select
+{
+    font-size: 17px;
+
+    height: 37px;
+    padding: 0;
+}
+
+.mui-input-row:last-child,
+.mui-input-row label + input, .mui-input-row .mui-btn + input
+{
+    background: none;
+}
+
+.mui-input-group .mui-input-row
+{
+    height: 40px;
+}
+.mui-input-group .mui-input-row:after
+{
+    position: absolute;
+    right: 0;
+    bottom: 0;
+    left: 15px;
+
+    height: 1px;
+
+    content: '';
+    -webkit-transform: scaleY(.5);
+            transform: scaleY(.5);
+
+    background-color: #c8c7cc;
+}
+
+.mui-input-row label
+{
+    font-family: 'Helvetica Neue', Helvetica, sans-serif;
+    line-height: 1.1;
+
+    float: left;
+
+    width: 35%;
+    padding: 10px 15px;
+}
+
+.mui-input-row label ~ input, .mui-input-row label ~ select, .mui-input-row label ~ textarea
+{
+    float: right;
+
+    width: 65%;
+    margin-bottom: 0;
+    padding-left: 0;
+
+    border: 0;
+}
+
+.mui-input-row .mui-btn
+{
+    font-family: 'Helvetica Neue', Helvetica, sans-serif;
+    line-height: 1.1;
+
+    float: right;
+
+    width: 15%;
+    padding: 10px 15px;
+}
+
+.mui-input-row .mui-btn ~ input, .mui-input-row .mui-btn ~ select, .mui-input-row .mui-btn ~ textarea
+{
+    float: left;
+
+    width: 85%;
+    margin-bottom: 0;
+    padding-left: 0;
+
+    border: 0;
+}
+
+.mui-button-row
+{
+    position: relative;
+
+    padding-top: 5px;
+
+    text-align: center;
+}
+
+.mui-input-group .mui-button-row
+{
+    height: 45px;
+}
+
+.mui-input-row
+{
+    position: relative;
+}
+.mui-input-row.mui-input-range
+{
+    overflow: visible;
+
+    padding-right: 20px;
+}
+.mui-input-row .mui-inline
+{
+    padding: 8px 0;
+}
+.mui-input-row .mui-input-clear ~ .mui-icon-clear, .mui-input-row .mui-input-speech ~ .mui-icon-speech
+{
+    font-size: 20px;
+
+    position: absolute;
+    z-index: 1;
+    top: 10px;
+    right: 0;
+
+    width: 38px;
+    height: 38px;
+
+    text-align: center;
+
+    color: #999;
+}
+.mui-input-row .mui-input-speech ~ .mui-icon-speech
+{
+    font-size: 24px;
+
+    top: 8px;
+}
+.mui-input-row .mui-input-clear ~ .mui-icon-clear ~ .mui-icon-speech
+{
+    display: none;
+}
+.mui-input-row .mui-input-clear ~ .mui-icon-clear.mui-hidden ~ .mui-icon-speech
+{
+    display: inline-block;
+}
+.mui-input-row .mui-icon-speech ~ .mui-placeholder
+{
+    right: 38px;
+}
+.mui-input-row.mui-search .mui-icon-clear
+{
+    top: 7px;
+}
+.mui-input-row.mui-search .mui-icon-speech
+{
+    top: 5px;
+}
+
+.mui-radio, .mui-checkbox
+{
+    position: relative;
+}
+.mui-radio label, .mui-checkbox label
+{
+    display: inline-block;
+    float: none;
+
+    width: 100%;
+    padding-right: 58px;
+}
+
+.mui-radio.mui-left input[type='radio'], .mui-checkbox.mui-left input[type='checkbox']
+{
+    left: 20px;
+}
+
+.mui-radio.mui-left label, .mui-checkbox.mui-left label
+{
+    padding-right: 15px;
+    padding-left: 58px;
+}
+
+.mui-radio input[type='radio'], .mui-checkbox input[type='checkbox']
+{
+    position: absolute;
+    top: 4px;
+    right: 20px;
+
+    display: inline-block;
+
+    width: 28px;
+    height: 26px;
+
+    border: 0;
+    outline: 0 !important;
+    background-color: transparent;
+
+    -webkit-appearance: none;
+}
+.mui-radio input[type='radio'][disabled]:before, .mui-checkbox input[type='checkbox'][disabled]:before
+{
+    opacity: .3;
+}
+.mui-radio input[type='radio']:before, .mui-checkbox input[type='checkbox']:before
+{
+    font-family: Muiicons;
+    font-size: 28px;
+    font-weight: normal;
+    line-height: 1;
+
+    text-decoration: none;
+
+    color: #aaa;
+    border-radius: 0;
+    background: none;
+
+    -webkit-font-smoothing: antialiased;
+}
+.mui-radio input[type='radio']:checked:before, .mui-checkbox input[type='checkbox']:checked:before
+{
+    color: #007aff;
+}
+
+.mui-radio.mui-disabled label, .mui-radio label.mui-disabled, .mui-checkbox.mui-disabled label, .mui-checkbox label.mui-disabled
+{
+    opacity: .4;
+}
+
+.mui-radio input[type='radio']:before
+{
+    content: '\e411';
+}
+
+.mui-radio input[type='radio']:checked:before
+{
+    content: '\e441';
+}
+
+.mui-checkbox input[type='checkbox']:before
+{
+    content: '\e411';
+}
+
+.mui-checkbox input[type='checkbox']:checked:before
+{
+    content: '\e442';
+}
+
+.mui-select
+{
+    position: relative;
+}
+
+.mui-select:before
+{
+    font-family: Muiicons;
+
+    position: absolute;
+    top: 8px;
+    right: 21px;
+
+    content: '\e581';
+
+    color: rgba(170, 170, 170, .6);
+}
+
+.mui-input-row .mui-switch
+{
+    float: right;
+
+    margin-top: 5px;
+    margin-right: 20px;
+}
+
+.mui-input-range
+{
+  /*input[type="range"] {
+      -webkit-appearance: none;
+      background: #999;
+      height: 36px;
+      border-radius: 1px;
+      overflow: hidden;
+      margin-top: 2px;
+      margin-bottom: 2px;
+      outline:none;
+      position:relative;
+      width:100%;
+  }*/
+  /*input[type='range']::-webkit-slider-thumb {
+      -webkit-appearance: none!important;
+      opacity: 0.5;
+      height:28px;
+      width:28px;
+      border-radius: 50%;
+      background:#00b7fb;
+      position: relative;
+      pointer-events: none;
+      -webkit-box-sizing: border-box;
+      box-sizing: border-box;
+      &:before{
+          position: absolute;
+          top: 13px;
+          left: -2000px;
+          width: 2000px;
+          height: 2px;
+          background: #00b7fb;
+          content:' ';
+      }
+  }*/
+}
+.mui-input-range input[type='range']
+{
+    position: relative;
+
+    width: 100%;
+    height: 2px;
+    margin: 17px 0;
+    padding: 0;
+
+    cursor: pointer;
+
+    border: 0;
+    border-radius: 3px;
+    outline: none;
+    background-color: #999;
+
+    -webkit-appearance: none !important;
+}
+.mui-input-range input[type='range']::-webkit-slider-thumb
+{
+    width: 28px;
+    height: 28px;
+
+    border-color: #0062cc;
+    border-radius: 50%;
+    background-color: #007aff;
+    background-clip: padding-box;
+
+    -webkit-appearance: none !important;
+}
+.mui-input-range label ~ input[type='range']
+{
+    width: 65%;
+}
+.mui-input-range .mui-tooltip
+{
+    font-size: 36px;
+    line-height: 64px;
+
+    position: absolute;
+    z-index: 1;
+    top: -70px;
+
+    width: 64px;
+    height: 64px;
+
+    text-align: center;
+
+    opacity: .8;
+    color: #333;
+    border: 1px solid #ddd;
+    border-radius: 6px;
+    background-color: #fff;
+    text-shadow: 0 1px 0 #f3f3f3;
+}
+
+.mui-search
+{
+    position: relative;
+}
+.mui-search input[type='search']
+{
+    padding-left: 30px;
+}
+.mui-search .mui-placeholder
+{
+    font-size: 16px;
+    line-height: 34px;
+
+    position: absolute;
+    z-index: 1;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+
+    display: inline-block;
+
+    height: 34px;
+
+    text-align: center;
+
+    color: #999;
+    border: 0;
+    border-radius: 6px;
+    background: none;
+}
+.mui-search .mui-placeholder .mui-icon
+{
+    font-size: 20px;
+
+    color: #333;
+}
+.mui-search:before
+{
+    font-family: Muiicons;
+    font-size: 20px;
+    font-weight: normal;
+
+    position: absolute;
+    top: 50%;
+    right: 50%;
+
+    display: none;
+
+    margin-top: -18px;
+    margin-right: 31px;
+
+    content: '\e466';
+}
+.mui-search.mui-active:before
+{
+    font-size: 20px;
+
+    right: auto;
+    left: 5px;
+
+    display: block;
+
+    margin-right: 0;
+}
+.mui-search.mui-active input[type='search']
+{
+    text-align: left;
+}
+.mui-search.mui-active .mui-placeholder
+{
+    display: none;
+}
+
+.mui-segmented-control
+{
+    font-size: 15px;
+    font-weight: 400;
+
+    position: relative;
+
+    display: table;
+    overflow: hidden;
+
+    width: 100%;
+
+    table-layout: fixed;
+
+    border: 1px solid #007aff;
+    border-radius: 3px;
+    background-color: transparent;
+
+    -webkit-touch-callout: none;
+}
+.mui-segmented-control.mui-scroll-wrapper
+{
+    height: 38px;
+}
+.mui-segmented-control.mui-scroll-wrapper .mui-scroll
+{
+    width: auto;
+    height: 40px;
+
+    white-space: nowrap;
+}
+.mui-segmented-control.mui-scroll-wrapper .mui-control-item
+{
+    display: inline-block;
+
+    width: auto;
+    padding: 0 20px;
+
+    border: 0;
+}
+.mui-segmented-control .mui-control-item
+{
+    line-height: 38px;
+
+    display: table-cell;
+    overflow: hidden;
+
+    width: 1%;
+
+    -webkit-transition: background-color .1s linear;
+            transition: background-color .1s linear;
+    text-align: center;
+    white-space: nowrap;
+    text-overflow: ellipsis;
+
+    color: #007aff;
+    border-color: #007aff;
+    border-left: 1px solid #007aff;
+}
+.mui-segmented-control .mui-control-item:first-child
+{
+    border-left-width: 0;
+}
+.mui-segmented-control .mui-control-item.mui-active
+{
+    color: #fff;
+    background-color: #007aff;
+}
+.mui-segmented-control.mui-segmented-control-inverted
+{
+    width: 100%;
+
+    border: 0;
+    border-radius: 0;
+}
+.mui-segmented-control.mui-segmented-control-inverted .mui-control-item
+{
+    color: inherit;
+    border: 0;
+}
+.mui-segmented-control.mui-segmented-control-inverted .mui-control-item.mui-active
+{
+    color: #007aff;
+    border-bottom: 2px solid #007aff;
+    background: none;
+}
+.mui-segmented-control.mui-segmented-control-inverted ~ .mui-slider-progress-bar
+{
+    background-color: #007aff;
+}
+
+.mui-segmented-control-positive
+{
+    border: 1px solid #4cd964;
+}
+.mui-segmented-control-positive .mui-control-item
+{
+    color: #4cd964;
+    border-color: inherit;
+}
+.mui-segmented-control-positive .mui-control-item.mui-active
+{
+    color: #fff;
+    background-color: #4cd964;
+}
+.mui-segmented-control-positive.mui-segmented-control-inverted .mui-control-item.mui-active
+{
+    color: #4cd964;
+    border-bottom: 2px solid #4cd964;
+    background: none;
+}
+.mui-segmented-control-positive.mui-segmented-control-inverted ~ .mui-slider-progress-bar
+{
+    background-color: #4cd964;
+}
+
+.mui-segmented-control-negative
+{
+    border: 1px solid #dd524d;
+}
+.mui-segmented-control-negative .mui-control-item
+{
+    color: #dd524d;
+    border-color: inherit;
+}
+.mui-segmented-control-negative .mui-control-item.mui-active
+{
+    color: #fff;
+    background-color: #dd524d;
+}
+.mui-segmented-control-negative.mui-segmented-control-inverted .mui-control-item.mui-active
+{
+    color: #dd524d;
+    border-bottom: 2px solid #dd524d;
+    background: none;
+}
+.mui-segmented-control-negative.mui-segmented-control-inverted ~ .mui-slider-progress-bar
+{
+    background-color: #dd524d;
+}
+
+.mui-control-content
+{
+    position: relative;
+
+    display: none;
+}
+.mui-control-content.mui-active
+{
+    display: block;
+}
+
+.mui-popover
+{
+    position: absolute;
+    z-index: 999;
+
+    display: none;
+
+    width: 280px;
+
+    -webkit-transition: opacity .3s;
+            transition: opacity .3s;
+    -webkit-transition-property: opacity;
+            transition-property: opacity;
+    -webkit-transform: none;
+            transform: none;
+
+    opacity: 0;
+    border-radius: 7px;
+    background-color: #f7f7f7;
+    -webkit-box-shadow: 0 0 15px rgba(0, 0, 0, .1);
+            box-shadow: 0 0 15px rgba(0, 0, 0, .1);
+}
+.mui-popover .mui-popover-arrow
+{
+    position: absolute;
+    z-index: 1000;
+    top: -25px;
+    left: 0;
+
+    overflow: hidden;
+
+    width: 26px;
+    height: 26px;
+}
+.mui-popover .mui-popover-arrow:after
+{
+    position: absolute;
+    top: 19px;
+    left: 0;
+
+    width: 26px;
+    height: 26px;
+
+    content: ' ';
+    -webkit-transform: rotate(45deg);
+            transform: rotate(45deg);
+
+    border-radius: 3px;
+    background: #f7f7f7;
+}
+.mui-popover .mui-popover-arrow.mui-bottom
+{
+    top: 100%;
+    left: -26px;
+
+    margin-top: -1px;
+}
+.mui-popover .mui-popover-arrow.mui-bottom:after
+{
+    top: -19px;
+    left: 0;
+}
+.mui-popover.mui-popover-action
+{
+    bottom: 0;
+
+    width: 100%;
+
+    -webkit-transition: -webkit-transform .3s, opacity .3s;
+            transition:         transform .3s, opacity .3s;
+    -webkit-transform: translate3d(0, 100%, 0);
+            transform: translate3d(0, 100%, 0);
+
+    border-radius: 0;
+    background: none;
+    -webkit-box-shadow: none;
+            box-shadow: none;
+}
+.mui-popover.mui-popover-action .mui-popover-arrow
+{
+    display: none;
+}
+.mui-popover.mui-popover-action.mui-popover-bottom
+{
+    position: fixed;
+}
+.mui-popover.mui-popover-action.mui-active
+{
+    -webkit-transform: translate3d(0, 0, 0);
+            transform: translate3d(0, 0, 0);
+}
+.mui-popover.mui-popover-action .mui-table-view
+{
+    margin: 8px;
+
+    text-align: center;
+
+    color: #007aff;
+    border-radius: 4px;
+}
+.mui-popover.mui-popover-action .mui-table-view .mui-table-view-cell:after
+{
+    position: absolute;
+    right: 0;
+    bottom: 0;
+    left: 0;
+
+    height: 1px;
+
+    content: '';
+    -webkit-transform: scaleY(.5);
+            transform: scaleY(.5);
+
+    background-color: #c8c7cc;
+}
+.mui-popover.mui-popover-action .mui-table-view small
+{
+    font-weight: 400;
+    line-height: 1.3;
+
+    display: block;
+}
+.mui-popover.mui-active
+{
+    display: block;
+
+    opacity: 1;
+}
+.mui-popover .mui-bar ~ .mui-table-view
+{
+    padding-top: 44px;
+}
+
+.mui-backdrop
+{
+    position: fixed;
+    z-index: 998;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+
+    background-color: rgba(0, 0, 0, .3);
+}
+
+.mui-bar-backdrop.mui-backdrop
+{
+    bottom: 50px;
+
+    background: none;
+}
+
+.mui-backdrop-action.mui-backdrop
+{
+    background-color: rgba(0, 0, 0, .3);
+}
+
+.mui-bar-backdrop.mui-backdrop, .mui-backdrop-action.mui-backdrop
+{
+    opacity: 0;
+}
+.mui-bar-backdrop.mui-backdrop.mui-active, .mui-backdrop-action.mui-backdrop.mui-active
+{
+    -webkit-transition: all .4s ease;
+            transition: all .4s ease;
+
+    opacity: 1;
+}
+
+.mui-popover .mui-btn-block
+{
+    margin-bottom: 5px;
+}
+.mui-popover .mui-btn-block:last-child
+{
+    margin-bottom: 0;
+}
+
+.mui-popover .mui-bar
+{
+    -webkit-box-shadow: none;
+            box-shadow: none;
+}
+
+.mui-popover .mui-bar-nav
+{
+    border-bottom: 1px solid rgba(0, 0, 0, .15);
+    border-top-left-radius: 12px;
+    border-top-right-radius: 12px;
+    -webkit-box-shadow: none;
+            box-shadow: none;
+}
+
+.mui-popover .mui-scroll-wrapper
+{
+    margin: 7px 0;
+
+    border-radius: 7px;
+    background-clip: padding-box;
+}
+
+.mui-popover .mui-scroll .mui-table-view
+{
+    max-height: none;
+}
+
+.mui-popover .mui-table-view
+{
+    overflow: auto;
+
+    max-height: 300px;
+    margin-bottom: 0;
+
+    border-radius: 7px;
+    background-color: #f7f7f7;
+    background-image: none;
+
+    -webkit-overflow-scrolling: touch;
+}
+.mui-popover .mui-table-view:before, .mui-popover .mui-table-view:after
+{
+    height: 0;
+}
+.mui-popover .mui-table-view .mui-table-view-cell:first-child,
+.mui-popover .mui-table-view .mui-table-view-cell:first-child > a:not(.mui-btn)
+{
+    border-top-left-radius: 12px;
+    border-top-right-radius: 12px;
+}
+.mui-popover .mui-table-view .mui-table-view-cell:last-child,
+.mui-popover .mui-table-view .mui-table-view-cell:last-child > a:not(.mui-btn)
+{
+    border-bottom-right-radius: 12px;
+    border-bottom-left-radius: 12px;
+}
+
+.mui-popover.mui-bar-popover .mui-table-view
+{
+    width: 106px;
+}
+.mui-popover.mui-bar-popover .mui-table-view .mui-table-view-cell
+{
+    padding: 11px 15px 11px 15px;
+
+    background-position: 0 100%;
+}
+.mui-popover.mui-bar-popover .mui-table-view .mui-table-view-cell > a:not(.mui-btn)
+{
+    margin: -11px -15px -11px -15px;
+}
+
+.mui-pagination
+{
+    display: inline-block;
+
+    margin: 0 auto;
+    padding-left: 0;
+
+    border-radius: 6px;
+}
+.mui-pagination > li
+{
+    display: inline;
+}
+.mui-pagination > li > a,
+.mui-pagination > li > span
+{
+    line-height: 1.428571429;
+
+    position: relative;
+
+    float: left;
+
+    margin-left: -1px;
+    padding: 6px 12px;
+
+    text-decoration: none;
+
+    color: #007aff;
+    border: 1px solid #ddd;
+    background-color: #fff;
+}
+.mui-pagination > li:first-child > a,
+.mui-pagination > li:first-child > span
+{
+    margin-left: 0;
+
+    border-top-left-radius: 6px;
+    border-bottom-left-radius: 6px;
+    background-clip: padding-box;
+}
+.mui-pagination > li:last-child > a,
+.mui-pagination > li:last-child > span
+{
+    border-top-right-radius: 6px;
+    border-bottom-right-radius: 6px;
+    background-clip: padding-box;
+}
+.mui-pagination > li:active > a, .mui-pagination > li:active > a:active,
+.mui-pagination > li:active > span,
+.mui-pagination > li:active > span:active,
+.mui-pagination > li.mui-active > a,
+.mui-pagination > li.mui-active > a:active,
+.mui-pagination > li.mui-active > span,
+.mui-pagination > li.mui-active > span:active
+{
+    z-index: 2;
+
+    cursor: default;
+
+    color: #fff;
+    border-color: #007aff;
+    background-color: #007aff;
+}
+.mui-pagination > li.mui-disabled > span,
+.mui-pagination > li.mui-disabled > span:active,
+.mui-pagination > li.mui-disabled > a,
+.mui-pagination > li.mui-disabled > a:active
+{
+    opacity: .6;
+    color: #777;
+    border: 1px solid #ddd;
+    background-color: #fff;
+}
+
+.mui-pagination-lg > li > a,
+.mui-pagination-lg > li > span
+{
+    font-size: 18px;
+
+    padding: 10px 16px;
+}
+
+.mui-pagination-sm > li > a,
+.mui-pagination-sm > li > span
+{
+    font-size: 12px;
+
+    padding: 5px 10px;
+}
+
+.mui-pager
+{
+    padding-left: 0;
+
+    list-style: none;
+
+    text-align: center;
+}
+.mui-pager:before, .mui-pager:after
+{
+    display: table;
+
+    content: ' ';
+}
+.mui-pager:after
+{
+    clear: both;
+}
+.mui-pager li
+{
+    display: inline;
+}
+.mui-pager li > a,
+.mui-pager li > span
+{
+    display: inline-block;
+
+    padding: 5px 14px;
+
+    border: 1px solid #ddd;
+    border-radius: 6px;
+    background-color: #fff;
+    background-clip: padding-box;
+}
+.mui-pager li:active > a, .mui-pager li:active > span, .mui-pager li.mui-active > a, .mui-pager li.mui-active > span
+{
+    cursor: default;
+    text-decoration: none;
+
+    color: #fff;
+    border-color: #007aff;
+    background-color: #007aff;
+}
+.mui-pager .mui-next > a,
+.mui-pager .mui-next > span
+{
+    float: right;
+}
+.mui-pager .mui-previous > a,
+.mui-pager .mui-previous > span
+{
+    float: left;
+}
+.mui-pager .mui-disabled > a,
+.mui-pager .mui-disabled > a:active,
+.mui-pager .mui-disabled > span,
+.mui-pager .mui-disabled > span:active
+{
+    opacity: .6;
+    color: #777;
+    border: 1px solid #ddd;
+    background-color: #fff;
+}
+
+.mui-modal
+{
+    position: fixed;
+    z-index: 999;
+    top: 0;
+
+    overflow: hidden;
+
+    width: 100%;
+    min-height: 100%;
+
+    -webkit-transition: -webkit-transform .25s, opacity 1ms .25s;
+            transition:         transform .25s, opacity 1ms .25s;
+    -webkit-transition-timing-function: cubic-bezier(.1, .5, .1, 1);
+            transition-timing-function: cubic-bezier(.1, .5, .1, 1);
+    -webkit-transform: translate3d(0, 100%, 0);
+            transform: translate3d(0, 100%, 0);
+
+    opacity: 0;
+    background-color: #fff;
+}
+.mui-modal.mui-active
+{
+    height: 100%;
+
+    -webkit-transition: -webkit-transform .25s;
+            transition:         transform .25s;
+    -webkit-transition-timing-function: cubic-bezier(.1, .5, .1, 1);
+            transition-timing-function: cubic-bezier(.1, .5, .1, 1);
+    -webkit-transform: translate3d(0, 0, 0);
+            transform: translate3d(0, 0, 0);
+
+    opacity: 1;
+}
+
+.mui-android .mui-modal .mui-bar
+{
+    position: static;
+}
+
+.mui-android .mui-modal .mui-bar-nav ~ .mui-content
+{
+    padding-top: 0;
+}
+
+.mui-slider
+{
+    position: relative;
+
+    overflow: hidden;
+
+    width: 100%;
+}
+.mui-slider .mui-segmented-control.mui-segmented-control-inverted .mui-control-item.mui-active
+{
+    border-bottom: 0;
+}
+.mui-slider .mui-segmented-control.mui-segmented-control-inverted ~ .mui-slider-group .mui-slider-item
+{
+    border-top: 1px solid #c8c7cc;
+    border-bottom: 1px solid #c8c7cc;
+}
+.mui-slider .mui-slider-group
+{
+    font-size: 0;
+
+    position: relative;
+
+    -webkit-transition: all 0s linear;
+            transition: all 0s linear;
+    white-space: nowrap;
+}
+.mui-slider .mui-slider-group .mui-slider-item
+{
+    font-size: 14px;
+
+    position: relative;
+
+    display: inline-block;
+
+    width: 100%;
+    height: 100%;
+
+    vertical-align: top;
+}
+.mui-slider .mui-slider-group .mui-slider-item > a:not(.mui-control-item)
+{
+    line-height: 0;
+
+    position: relative;
+
+    display: block;
+}
+.mui-slider .mui-slider-group .mui-slider-item img
+{
+    width: 100%;
+}
+.mui-slider .mui-slider-group .mui-slider-item .mui-table-view:before, .mui-slider .mui-slider-group .mui-slider-item .mui-table-view:after
+{
+    height: 0;
+}
+.mui-slider .mui-slider-group.mui-slider-loop
+{
+    -webkit-transform: translate(-100%, 0px);
+            transform: translate(-100%, 0px);
+}
+
+.mui-slider-title
+{
+    line-height: 30px;
+
+    position: absolute;
+    bottom: 0;
+    left: 0;
+
+    width: 100%;
+    height: 30px;
+    margin: 0;
+
+    text-align: left;
+    text-indent: 12px;
+
+    opacity: .8;
+    background-color: #000;
+}
+
+.mui-slider-indicator
+{
+    position: absolute;
+    bottom: 8px;
+
+    width: 100%;
+
+    text-align: center;
+
+    background: none;
+}
+.mui-slider-indicator.mui-segmented-control
+{
+    position: relative;
+    bottom: auto;
+}
+.mui-slider-indicator .mui-indicator
+{
+    display: inline-block;
+
+    width: 6px;
+    height: 6px;
+    margin: 1px 6px;
+
+    cursor: pointer;
+
+    border-radius: 50%;
+    background: #aaa;
+    -webkit-box-shadow: 0 0 1px 1px rgba(130, 130, 130, .7);
+            box-shadow: 0 0 1px 1px rgba(130, 130, 130, .7);
+}
+.mui-slider-indicator .mui-active.mui-indicator
+{
+    background: #fff;
+}
+.mui-slider-indicator .mui-icon
+{
+    font-size: 20px;
+    line-height: 30px;
+
+    width: 40px;
+    height: 30px;
+    margin: 3px;
+
+    text-align: center;
+
+    border: 1px solid #ddd;
+}
+.mui-slider-indicator .mui-number
+{
+    line-height: 32px;
+
+    display: inline-block;
+
+    width: 58px;
+}
+.mui-slider-indicator .mui-number span
+{
+    color: #ff5053;
+}
+
+.mui-slider-progress-bar
+{
+    z-index: 1;
+
+    height: 2px;
+
+    -webkit-transform: translateZ(0);
+            transform: translateZ(0);
+
+    -webkit-backface-visibility: hidden;
+}
+
+.mui-switch
+{
+    position: relative;
+
+    display: block;
+
+    width: 74px;
+    height: 30px;
+
+    -webkit-transition-timing-function: ease-in-out;
+            transition-timing-function: ease-in-out;
+    -webkit-transition-duration: .2s;
+            transition-duration: .2s;
+    -webkit-transition-property: background-color, border;
+            transition-property: background-color, border;
+
+    border: 2px solid #ddd;
+    border-radius: 20px;
+    background-color: #fff;
+    background-clip: padding-box;
+}
+.mui-switch.mui-disabled
+{
+    opacity: .3;
+}
+.mui-switch .mui-switch-handle
+{
+    position: absolute;
+    z-index: 1;
+    top: -1px;
+    left: -1px;
+
+    width: 28px;
+    height: 28px;
+
+    -webkit-transition: .2s ease-in-out;
+            transition: .2s ease-in-out;
+    -webkit-transition-property: -webkit-transform, width,left;
+            transition-property:         transform, width,left;
+
+    border-radius: 16px;
+    background-color: #fff;
+    background-clip: padding-box;
+    -webkit-box-shadow: 0 2px 5px rgba(0, 0, 0, .4);
+            box-shadow: 0 2px 5px rgba(0, 0, 0, .4);
+}
+.mui-switch:before
+{
+    font-size: 13px;
+
+    position: absolute;
+    top: 3px;
+    right: 11px;
+
+    content: 'Off';
+    text-transform: uppercase;
+
+    color: #999;
+}
+.mui-switch.mui-dragging
+{
+    border-color: #f7f7f7;
+    background-color: #f7f7f7;
+}
+.mui-switch.mui-dragging .mui-switch-handle
+{
+    width: 38px;
+}
+.mui-switch.mui-dragging.mui-active .mui-switch-handle
+{
+    left: -11px;
+
+    width: 38px;
+}
+.mui-switch.mui-active
+{
+    border-color: #4cd964;
+    background-color: #4cd964;
+}
+.mui-switch.mui-active .mui-switch-handle
+{
+    -webkit-transform: translate(43px, 0);
+            transform: translate(43px, 0);
+}
+.mui-switch.mui-active:before
+{
+    right: auto;
+    left: 15px;
+
+    content: 'On';
+
+    color: #fff;
+}
+.mui-switch input[type='checkbox']
+{
+    display: none;
+}
+
+.mui-switch-mini
+{
+    width: 47px;
+}
+.mui-switch-mini:before
+{
+    display: none;
+}
+.mui-switch-mini.mui-active .mui-switch-handle
+{
+    -webkit-transform: translate(16px, 0);
+            transform: translate(16px, 0);
+}
+
+.mui-switch-blue.mui-active
+{
+    border: 2px solid #007aff;
+    background-color: #007aff;
+}
+
+.mui-content.mui-fade
+{
+    left: 0;
+
+    opacity: 0;
+}
+.mui-content.mui-fade.mui-in
+{
+    opacity: 1;
+}
+.mui-content.mui-sliding
+{
+    z-index: 2;
+
+    -webkit-transition: -webkit-transform .4s;
+            transition:         transform .4s;
+    -webkit-transform: translate3d(0, 0, 0);
+            transform: translate3d(0, 0, 0);
+}
+.mui-content.mui-sliding.mui-left
+{
+    z-index: 1;
+
+    -webkit-transform: translate3d(-100%, 0, 0);
+            transform: translate3d(-100%, 0, 0);
+}
+.mui-content.mui-sliding.mui-right
+{
+    z-index: 3;
+
+    -webkit-transform: translate3d(100%, 0, 0);
+            transform: translate3d(100%, 0, 0);
+}
+
+.mui-navigate-right:after,
+.mui-push-left:after,
+.mui-push-right:after
+{
+    font-family: Muiicons;
+    font-size: inherit;
+    line-height: 1;
+
+    position: absolute;
+    top: 50%;
+
+    display: inline-block;
+
+    -webkit-transform: translateY(-50%);
+            transform: translateY(-50%);
+    text-decoration: none;
+
+    color: #bbb;
+
+    -webkit-font-smoothing: antialiased;
+}
+
+.mui-push-left:after
+{
+    left: 15px;
+
+    content: '\e582';
+}
+
+.mui-navigate-right:after,
+.mui-push-right:after
+{
+    right: 15px;
+
+    content: '\e583';
+}
+
+.mui-pull-top-pocket, .mui-pull-bottom-pocket
+{
+    position: absolute;
+    left: 0;
+
+    display: block;
+    visibility: hidden;
+    overflow: hidden;
+
+    width: 100%;
+    height: 50px;
+}
+
+.mui-plus-pullrefresh .mui-pull-top-pocket, .mui-plus-pullrefresh .mui-pull-bottom-pocket
+{
+    display: none;
+    visibility: visible;
+}
+
+.mui-pull-top-pocket
+{
+    top: 0;
+}
+
+.mui-bar-nav ~ .mui-content .mui-pull-top-pocket
+{
+    top: 44px;
+}
+
+.mui-bar-nav ~ .mui-bar-header-secondary ~ .mui-content .mui-pull-top-pocket
+{
+    top: 88px;
+}
+
+.mui-pull-bottom-pocket
+{
+    position: relative;
+    bottom: 0;
+
+    height: 40px;
+}
+.mui-pull-bottom-pocket .mui-pull-loading
+{
+    visibility: hidden;
+}
+.mui-pull-bottom-pocket .mui-pull-loading.mui-in
+{
+    display: inline-block;
+}
+
+.mui-pull
+{
+    font-weight: bold;
+
+    position: absolute;
+    right: 0;
+    bottom: 10px;
+    left: 0;
+
+    text-align: center;
+
+    color: #777;
+}
+
+.mui-pull-loading
+{
+    margin-right: 10px;
+
+    -webkit-transition: -webkit-transform .4s;
+            transition:         transform .4s;
+    -webkit-transition-duration: 400ms;
+            transition-duration: 400ms;
+    vertical-align: middle;
+
+    -webkit-backface-visibility: hidden;
+}
+
+.mui-pull-loading.mui-reverse
+{
+    -webkit-transform: rotate(180deg) translateZ(0);
+            transform: rotate(180deg) translateZ(0);
+}
+
+.mui-pull-caption
+{
+    font-size: 15px;
+    line-height: 24px;
+
+    position: relative;
+
+    display: inline-block;
+    overflow: visible;
+
+    margin-top: 0;
+
+    vertical-align: middle;
+}
+.mui-pull-caption span
+{
+    display: none;
+}
+.mui-pull-caption span.mui-in
+{
+    display: inline;
+}
+
+.mui-toast-container
+{
+    position: fixed;
+    z-index: 9999;
+    bottom: 50px;
+
+    width: 100%;
+}
+
+.mui-toast-message
+{
+    font-size: 14px;
+
+    width: 270px;
+    margin: 5px auto 5px auto;
+    padding: 5px 5px 5px 5px;
+
+    text-align: center;
+
+    color: #000;
+    border-radius: 7px;
+    background-color: #d8d8d8;
+}
+
+.mui-numbox
+{
+    position: relative;
+
+    display: inline-block;
+    overflow: hidden;
+
+    width: 120px;
+    height: 35px;
+    padding: 0 40px 0 40px;
+
+    vertical-align: top;
+    vertical-align: middle;
+
+    border: solid 1px #bbb;
+    border-radius: 3px;
+    background-color: #efeff4;
+}
+.mui-numbox [class*=mui-numbox-btn]
+{
+    font-size: 18px;
+    font-weight: normal;
+    line-height: 100%;
+
+    position: absolute;
+    top: 0;
+
+    overflow: hidden;
+
+    width: 40px;
+    height: 100%;
+    padding: 0;
+
+    color: #555;
+    border: none;
+    border-radius: 0;
+    background-color: #f9f9f9;
+}
+.mui-numbox [class*=mui-numbox-btn]:active
+{
+    background-color: #ccc;
+}
+.mui-numbox [class*=mui-numbox-btn][disabled]
+{
+    color: #c0c0c0;
+}
+.mui-numbox .mui-numbox-btn-plus
+{
+    right: 0;
+
+    border-top-right-radius: 3px;
+    border-bottom-right-radius: 3px;
+}
+.mui-numbox .mui-numbox-btn-minus
+{
+    left: 0;
+
+    border-top-left-radius: 3px;
+    border-bottom-left-radius: 3px;
+}
+.mui-numbox .mui-numbox-input
+{
+    display: inline-block;
+    overflow: hidden;
+
+    width: 100% !important;
+    height: 100%;
+    margin: 0;
+    padding: 0 3px !important;
+
+    text-align: center;
+    text-overflow: ellipsis;
+    word-break: normal;
+
+    border: none !important;
+    border-right: solid 1px #ccc !important;
+    border-left: solid 1px #ccc !important;
+    border-radius: 0 !important;
+}
+
+.mui-input-row .mui-numbox
+{
+    float: right;
+
+    margin: 2px 8px;
+}
+
+@font-face {
+    font-family: Muiicons;
+    font-weight: normal;
+    font-style: normal;
+
+    src: url('../fonts/mui.ttf') format('truetype');
+}
+.mui-icon
+{
+    font-family: Muiicons;
+    font-size: 24px;
+    font-weight: normal;
+    font-style: normal;
+    line-height: 1;
+
+    display: inline-block;
+
+    text-decoration: none;
+
+    -webkit-font-smoothing: antialiased;
+}
+.mui-icon.mui-right:before
+{
+    float: right;
+
+    padding-left: .2em;
+}
+
+.mui-icon-contact:before
+{
+    content: '\e100';
+}
+
+.mui-icon-person:before
+{
+    content: '\e101';
+}
+
+.mui-icon-personadd:before
+{
+    content: '\e102';
+}
+
+.mui-icon-contact-filled:before
+{
+    content: '\e130';
+}
+
+.mui-icon-person-filled:before
+{
+    content: '\e131';
+}
+
+.mui-icon-personadd-filled:before
+{
+    content: '\e132';
+}
+
+.mui-icon-phone:before
+{
+    content: '\e200';
+}
+
+.mui-icon-email:before
+{
+    content: '\e201';
+}
+
+.mui-icon-chatbubble:before
+{
+    content: '\e202';
+}
+
+.mui-icon-chatboxes:before
+{
+    content: '\e203';
+}
+
+.mui-icon-phone-filled:before
+{
+    content: '\e230';
+}
+
+.mui-icon-email-filled:before
+{
+    content: '\e231';
+}
+
+.mui-icon-chatbubble-filled:before
+{
+    content: '\e232';
+}
+
+.mui-icon-chatboxes-filled:before
+{
+    content: '\e233';
+}
+
+.mui-icon-weibo:before
+{
+    content: '\e260';
+}
+
+.mui-icon-weixin:before
+{
+    content: '\e261';
+}
+
+.mui-icon-pengyouquan:before
+{
+    content: '\e262';
+}
+
+.mui-icon-chat:before
+{
+    content: '\e263';
+}
+
+.mui-icon-qq:before
+{
+    content: '\e264';
+}
+
+.mui-icon-videocam:before
+{
+    content: '\e300';
+}
+
+.mui-icon-camera:before
+{
+    content: '\e301';
+}
+
+.mui-icon-mic:before
+{
+    content: '\e302';
+}
+
+.mui-icon-location:before
+{
+    content: '\e303';
+}
+
+.mui-icon-mic-filled:before, .mui-icon-speech:before
+{
+    content: '\e332';
+}
+
+.mui-icon-location-filled:before
+{
+    content: '\e333';
+}
+
+.mui-icon-micoff:before
+{
+    content: '\e360';
+}
+
+.mui-icon-image:before
+{
+    content: '\e363';
+}
+
+.mui-icon-map:before
+{
+    content: '\e364';
+}
+
+.mui-icon-compose:before
+{
+    content: '\e400';
+}
+
+.mui-icon-trash:before
+{
+    content: '\e401';
+}
+
+.mui-icon-upload:before
+{
+    content: '\e402';
+}
+
+.mui-icon-download:before
+{
+    content: '\e403';
+}
+
+.mui-icon-close:before
+{
+    content: '\e404';
+}
+
+.mui-icon-redo:before
+{
+    content: '\e405';
+}
+
+.mui-icon-undo:before
+{
+    content: '\e406';
+}
+
+.mui-icon-refresh:before
+{
+    content: '\e407';
+}
+
+.mui-icon-star:before
+{
+    content: '\e408';
+}
+
+.mui-icon-plus:before
+{
+    content: '\e409';
+}
+
+.mui-icon-minus:before
+{
+    content: '\e410';
+}
+
+.mui-icon-circle:before, .mui-icon-checkbox:before
+{
+    content: '\e411';
+}
+
+.mui-icon-close-filled:before, .mui-icon-clear:before
+{
+    content: '\e434';
+}
+
+.mui-icon-refresh-filled:before
+{
+    content: '\e437';
+}
+
+.mui-icon-star-filled:before
+{
+    content: '\e438';
+}
+
+.mui-icon-plus-filled:before
+{
+    content: '\e439';
+}
+
+.mui-icon-minus-filled:before
+{
+    content: '\e440';
+}
+
+.mui-icon-circle-filled:before
+{
+    content: '\e441';
+}
+
+.mui-icon-checkbox-filled:before
+{
+    content: '\e442';
+}
+
+.mui-icon-closeempty:before
+{
+    content: '\e460';
+}
+
+.mui-icon-refreshempty:before
+{
+    content: '\e461';
+}
+
+.mui-icon-reload:before
+{
+    content: '\e462';
+}
+
+.mui-icon-starhalf:before
+{
+    content: '\e463';
+}
+
+.mui-icon-spinner:before
+{
+    content: '\e464';
+}
+
+.mui-icon-spinner-cycle:before
+{
+    content: '\e465';
+}
+
+.mui-icon-search:before
+{
+    content: '\e466';
+}
+
+.mui-icon-plusempty:before
+{
+    content: '\e468';
+}
+
+.mui-icon-forward:before
+{
+    content: '\e470';
+}
+
+.mui-icon-back:before, .mui-icon-left-nav:before
+{
+    content: '\e471';
+}
+
+.mui-icon-checkmarkempty:before
+{
+    content: '\e472';
+}
+
+.mui-icon-home:before
+{
+    content: '\e500';
+}
+
+.mui-icon-navigate:before
+{
+    content: '\e501';
+}
+
+.mui-icon-gear:before
+{
+    content: '\e502';
+}
+
+.mui-icon-paperplane:before
+{
+    content: '\e503';
+}
+
+.mui-icon-info:before
+{
+    content: '\e504';
+}
+
+.mui-icon-help:before
+{
+    content: '\e505';
+}
+
+.mui-icon-locked:before
+{
+    content: '\e506';
+}
+
+.mui-icon-more:before
+{
+    content: '\e507';
+}
+
+.mui-icon-flag:before
+{
+    content: '\e508';
+}
+
+.mui-icon-home-filled:before
+{
+    content: '\e530';
+}
+
+.mui-icon-gear-filled:before
+{
+    content: '\e532';
+}
+
+.mui-icon-info-filled:before
+{
+    content: '\e534';
+}
+
+.mui-icon-help-filled:before
+{
+    content: '\e535';
+}
+
+.mui-icon-more-filled:before
+{
+    content: '\e537';
+}
+
+.mui-icon-settings:before
+{
+    content: '\e560';
+}
+
+.mui-icon-list:before
+{
+    content: '\e562';
+}
+
+.mui-icon-bars:before
+{
+    content: '\e563';
+}
+
+.mui-icon-loop:before
+{
+    content: '\e565';
+}
+
+.mui-icon-paperclip:before
+{
+    content: '\e567';
+}
+
+.mui-icon-arrowup:before
+{
+    content: '\e580';
+}
+
+.mui-icon-arrowdown:before
+{
+    content: '\e581';
+}
+
+.mui-icon-arrowleft:before
+{
+    content: '\e582';
+}
+
+.mui-icon-arrowright:before
+{
+    content: '\e583';
+}
+
+.mui-icon-arrowthinup:before
+{
+    content: '\e584';
+}
+
+.mui-icon-arrowthindown:before
+{
+    content: '\e585';
+}
+
+.mui-icon-arrowthinleft:before
+{
+    content: '\e586';
+}
+
+.mui-icon-arrowthinright:before
+{
+    content: '\e587';
+}
+
+.mui-icon-pulldown:before
+{
+    content: '\e588';
+}
+
+.mui-fullscreen
+{
+    position: absolute;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+
+    width: 100%;
+    height: 100%;
+}
+.mui-fullscreen.mui-slider .mui-slider-group
+{
+    height: 100%;
+}
+.mui-fullscreen .mui-segmented-control ~ .mui-slider-group
+{
+    position: absolute;
+    top: 40px;
+    bottom: 0;
+
+    width: 100%;
+    height: auto;
+}
+.mui-fullscreen.mui-slider .mui-slider-item > a
+{
+    top: 50%;
+
+    -webkit-transform: translateY(-50%);
+            transform: translateY(-50%);
+}
+.mui-fullscreen .mui-off-canvas-wrap .mui-slider-item > a
+{
+    top: auto;
+
+    -webkit-transform: none;
+            transform: none;
+}
+
+.mui-bar-tab ~ .mui-content .mui-slider.mui-fullscreen .mui-segmented-control ~ .mui-slider-group
+{
+    bottom: 50px;
+}
+
+.mui-android.mui-android-4-0 input:focus,
+.mui-android.mui-android-4-0 textarea:focus
+{
+    -webkit-user-modify: inherit;
+}
+
+.mui-ios .mui-table-view-cell
+{
+    -webkit-transform-style: preserve-3d;
+            transform-style: preserve-3d;
+}
+
+.mui-plus-visible, .mui-wechat-visible
+{
+    display: none !important;
+}
+
+.mui-plus-hidden, .mui-wechat-hidden
+{
+    display: block !important;
+}
+
+.mui-tab-item.mui-plus-hidden, .mui-tab-item.mui-wechat-hidden
+{
+    display: table-cell !important;
+}
+
+.mui-plus .mui-plus-visible, .mui-wechat .mui-wechat-visible
+{
+    display: block !important;
+}
+
+.mui-plus .mui-tab-item.mui-plus-visible, .mui-wechat .mui-tab-item.mui-wechat-visible
+{
+    display: table-cell !important;
+}
+
+.mui-plus .mui-plus-hidden, .mui-wechat .mui-wechat-hidden
+{
+    display: none !important;
+}

File diff suppressed because it is too large
+ 7 - 0
css/mui.min.css


+ 65 - 0
entrance.html

@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html>
+
+	<head>
+		<meta charset="utf-8">
+		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+		<title>入口</title>
+		<link href="css/mui.min.css" rel="stylesheet" />
+	</head>
+
+	<body>
+		<!--
+        	作者:HZC
+        	时间:2015-08-26
+        	描述:入口页,显示背景图,建议做成动态,可以展示最新的新闻动态
+        -->
+		<script src="js/mui.min.js" type="text/javascript" charset="utf-8"></script>
+		<script src="js/app.js" type="text/javascript" charset="utf-8"></script>
+		<script src="js/update.js" type="text/javascript" charset="utf-8"></script>
+		<script src="js/routes.js" type="text/javascript" charset="utf-8"></script>
+		<script type="text/javascript" charset="utf-8">
+			mui.init();
+			mui.plusReady(function() {
+				initDom();
+				update();
+				mui.toastTime();
+			});
+			/**
+			 * 初始化
+			 */
+			function initDom() {
+				var isInstall = checkIsInstall();
+				var isUpdate = checkIsUpdate();
+				if (isInstall || isUpdate) { //安装后第一次打开
+					mui.openWindow({
+						id: 'guide-id',
+						url: 'app/guide.html',
+						show: {
+							duration: 200
+						}
+					});
+				} else {
+					checkLoginStatus(function() {
+						mui.openWindow({
+							id: 'tab-webview-main-id',
+							url: 'main.html',
+							show: {
+								duration: 200
+							}
+						});
+					}, function() {
+						mui.openWindow({
+							id: 'login-id',
+							url: 'login.html',
+							show: {
+								duration: 200
+							}
+						});
+					});
+				}
+			}
+		</script>
+	</body>
+
+</html>

BIN
fonts/iconfont.ttf


BIN
fonts/mui.ttf


BIN
images/common/A+.png


BIN
images/common/A-.png


BIN
images/common/A-shen.png


BIN
images/common/pull_fresh.png


BIN
images/common/zhuanhuan.png


BIN
images/index/guoxue.png


BIN
images/index/lizhi.png


BIN
images/index/qiyeguanli.png


BIN
images/index/tierenjingshen.png


BIN
images/person/header-login.png


BIN
images/person/header.jpg


BIN
images/source/144.png


BIN
images/source/144wuzi.png


BIN
images/source/guide1.png


BIN
images/source/guide2.png


BIN
images/source/guide3.png


+ 304 - 0
js/app.js

@@ -0,0 +1,304 @@
+/*!
+ * =====================================================
+ * User:HZC
+ * State:公用方法
+ * =====================================================
+ */
+
+//所有下载文件存放目录
+var DOWNLOADPATH = '_downloads/';
+
+
+(function($) {
+	//全局配置(通常所有页面引用该配置,特殊页面使用mui.init({})来覆盖全局配置)
+	$.initGlobal({
+		swipeBack: false
+	});
+	var back = $.back;
+	$.back = function() {
+		var current = plus.webview.currentWebview();
+		if (current.mType === 'main') { //模板主页面
+			current.hide('auto');
+			setTimeout(function() {
+				document.getElementById("title").className = 'mui-title mui-fadeout';
+				current.children()[0].hide("none");
+			}, 200);
+		} else if (current.mType === 'sub') {
+			if ($.targets._popover) {
+				$($.targets._popover).popover('hide');
+			} else {
+				current.parent().evalJS('mui&&mui.back();');
+			}
+		} else {
+			back();
+		}
+	}
+})(mui);
+
+/**
+ * toggle
+ */
+window.addEventListener('toggle', function(event) {
+	if (event.target.id === 'M_Toggle') {
+		var isActive = event.detail.isActive;
+		var table = document.querySelector('.mui-table-view');
+		var card = document.querySelector('.mui-card');
+		if (isActive) {
+			card.appendChild(table);
+			card.style.display = '';
+		} else {
+			var content = document.querySelector('.mui-content');
+			content.insertBefore(table, card);
+			card.style.display = 'none';
+		}
+	}
+});
+
+/**
+ * 生成HTML模板
+ * @param {Object} templateStr :模板
+ * @param {Object} data
+ */
+function render(templateStr, data) {
+		return templateStr.replace(/\{([\w\.]*)\}/g, function(str, key) {
+			var keys = key.split("."),
+				v = data[keys.shift()];
+			for (var i = 0, l = keys.length; i < l; i++)
+				v = v[keys[i]];
+			return (typeof v !== "undefined" && v !== null) ? v : "";
+		});
+	}
+	/**
+	 * 根据id查找元素
+	 * @param {Object} id
+	 */
+
+function $id(id) {
+		return document.getElementById(id);
+	}
+	/**
+	 * 判断用户是否登录,已经登录执行succeFunc,未登录执行 failedFunc
+	 * @param {Object} successFunc
+	 * @param {Object} failedFunc
+	 */
+
+function checkLoginStatus(successFunc, failedFunc) {
+	var isAlreadyLogin = window.localStorage.getItem('______isAlreadyLogin_____');
+	if (isAlreadyLogin == "true") {
+		successFunc();
+	} else {
+		failedFunc();
+	}
+}
+
+/**
+ * 设置用户登录状态
+ * @param {Object} msg :true,false
+ */
+function setLoginStatus(msg) {
+	window.localStorage.setItem('______isAlreadyLogin_____', msg);
+}
+
+/**
+ * 检查当前网络连接状态
+ * 当前设备网络连接状态未知、未连接网络,提示网络异常,请检查,同时返回false
+ */
+
+function toastNetworkInfo(msg) {
+	var b = true;
+	var network = plus.networkinfo.getCurrentType();
+	if (network == 1 || network == 0) {
+		if (msg) {
+			mui.toast(msg);
+		}
+		b = false;
+	}
+	return b;
+}
+
+/**
+ * 获取 app 版本
+ */
+function getAppVersion() {
+	return window.localStorage.getItem("__appVersion");
+}
+
+/**
+ * 设置app版本
+ */
+function setAppVersion() {
+	var appVersion = plus.runtime.version;
+	window.localStorage.setItem("__appVersion", appVersion);
+}
+
+/**
+ * 检查是否是刚更新
+ */
+function checkIsUpdate() {
+	var appVersion = getAppVersion();
+	var nowVersion = plus.runtime.version;
+	return (appVersion && appVersion == nowVersion) ? false : true;
+}
+
+/**
+ * 检查是否是新安装
+ */
+function checkIsInstall() {
+	var appVersion = getAppVersion();
+	return appVersion ? false : true;
+}
+
+
+/**
+ * 转换相对路径为绝对路径
+ * @param {Object} relativePath
+ */
+function convertToAbsoluteURL(relativePath) {
+	return plus.io.convertLocalFileSystemURL(relativePath);
+}
+
+/**
+ * 删除指定文件
+ * @param {Object} relativePath:相对路径
+ */
+
+function delFile(relativePath) {
+	plus.io.resolveLocalFileSystemURL(relativePath, function(entry) {
+		entry.remove(function(entry) {
+			console.log("文件删除成功==" + relativePath);
+		}, function(e) {
+			console.log("文件删除失败=" + relativePath);
+		});
+	});
+}
+
+/**
+ * 下载
+ */
+function downloadSource(loadUrl, succCallback, errCallback) {
+	var dtask = plus.downloader.createDownload(loadUrl, {}, function(d, status) {
+		if (status == 200) {
+			//下载成功
+//			console.log('下载成功:"_downloads/"' + d.filename);
+			succCallback(d.filename);
+		} else {
+			//下载失败,需删除本地临时文件,否则下次进来时会检查到图片已存在
+//			console.log('下载失败:"_downloads/"' + d.filename);
+			//dtask.abort();//文档描述:取消下载,删除临时文件;(但经测试临时文件没有删除,故使用delFile()方法删除);
+			errCallback();
+		}
+	});
+	//启动下载任务
+	dtask.start();
+}
+
+/**
+ * <img>设置图片
+ *1.从本地获取,如果本地存在,则直接设置图片
+ *2.如果本地不存在则联网下载,缓存到本地,再设置图片
+ * @param {Object} imgId
+ * @param {Object} loadUrl
+ */
+function setImg(imgId, loadUrl) {
+		if (imgId == null || loadUrl == null) return;
+		//图片下载成功 默认保存在本地相对路径的"_downloads"文件夹里面, 如"_downloads/logo.jpg"
+		var filename = loadUrl.substring(loadUrl.lastIndexOf("/") + 1, loadUrl.length);
+		var relativePath = "_downloads/" + filename;
+		//检查图片是否已存在
+		plus.io.resolveLocalFileSystemURL(relativePath, function(entry) {
+			console.log("图片存在,直接设置=" + relativePath);
+			//如果文件存在,则直接设置本地图片
+			setImgFromLocal(imgId, relativePath);
+		}, function(e) {
+			console.log("图片不存在,联网下载=" + relativePath);
+			//如果文件不存在,联网下载图片
+			setImgFromNet(imgId, loadUrl, relativePath);
+		});
+	}
+	/**
+	 * 给图片标签<img>设置本地图片
+	 * imgId 图片标签<img>的id
+	 * relativePath 本地相对路径 例如:"_downloads/logo.jpg"
+	 * @param {Object} imgId
+	 * @param {Object} relativePath
+	 */
+
+function setImgFromLocal(imgId, relativePath) {
+		//本地相对路径("_downloads/logo.jpg")转成SD卡绝对路径("/storage/emulated/0/Android/data/io.dcloud.HBuilder/.HBuilder/downloads/logo.jpg");
+		var sd_path = plus.io.convertLocalFileSystemURL(relativePath);
+		//给<img>设置图片
+		$id(imgId).setAttribute("src", sd_path);
+	}
+	/**
+	 * 联网下载图片,并设置给<img>
+	 * @param {Object} imgId
+	 * @param {Object} loadUrl
+	 * @param {Object} relativePath
+	 */
+
+function setImgFromNet(imgId, loadUrl, relativePath) {
+	//先设置下载中的默认图片
+	var defalutImgPath = convertToAbsoluteURL('_www/images/common/pull_fresh.png');
+	$id(imgId).setAttribute("src", defalutImgPath);
+	//创建下载任务
+	var dtask = plus.downloader.createDownload(loadUrl, {}, function(d, status) {
+		if (status == 200) {
+			//下载成功
+			console.log("下载成功=" + relativePath);
+			setImgFromLocal(imgId, d.filename);
+		} else {
+			//下载失败,需删除本地临时文件,否则下次进来时会检查到图片已存在
+			console.log("下载失败=" + status + "==" + relativePath);
+			//dtask.abort();//文档描述:取消下载,删除临时文件;(但经测试临时文件没有删除,故使用delFile()方法删除);
+			if (relativePath != null)
+				delFile(relativePath);
+		}
+	});
+	//启动下载任务
+	var ll = dtask.start();
+}
+
+/**
+ * 设置下载图片
+ * @param {Object} imgId
+ */
+function setDownloadImage(imgId) {
+	var defalutImgPath = convertToAbsoluteURL('_www/images/common/pull_fresh.png');
+	$id(imgId).setAttribute("src", defalutImgPath);
+}
+
+/**
+ * 把所有已经下载的书的id保存在localstorage中
+ * @param {Object} ids
+ */
+function saveBookIdsInStorage(ids){
+	window.localStorage.setItem('bookIds____',ids);
+}
+
+function getBookIdsFromStorage(){
+	return window.localStorage.getItem('bookIds____');
+}
+
+/**
+ * 去除字符前后空格 
+ * @param {Object} str
+ */
+function hzcTrim(str){
+	return str.replace(/(^\s*)|(\s*$)/g,'');
+}
+
+/**
+ * 保存用户id 
+ * @param {Object} userId
+ */
+function saveUserId(userId){
+	window.localStorage.setItem('__userId__',userId);
+}
+
+/**
+ * 返回用户id 
+ */
+function getUserId(){
+	return window.localStorage.getItem('__userId__');
+}
+

+ 17 - 0
js/db/dicBook.js

@@ -0,0 +1,17 @@
+/*!
+ * =====================================================
+ * User:HZC
+ * State:书表
+ * 每次更新需要保留数据库操作历史。
+ * =====================================================
+ */
+function createTableBook(tx) {
+	tx.executeSql('DROP TABLE IF EXISTS dic_book', []);
+	//id,name,img_path,pdf_path,html_dist,html_name,dic_category_id,json,desc,status(0:无效,1:有效),is_download(0:没有下载,1:已经下载)
+	tx.executeSql('create table if not exists dic_book(id INTEGER PRIMARY KEY AUTOINCREMENT,name text,img_path text,pdf_path text,html_name text,dic_category_id INTEGER,json text,desc text,status INTEGER,is_download INTEGER)', [], function(tx, rs) {
+		console.log("add message data");
+	}, onError);
+//	tx.executeSql('INSERT INTO dic_book values(?,?,?,?,?,?,?,?,?,?)', [1, '铁人---精神', 'logo.png','','',1,'','123456789',1,1]);
+//	tx.executeSql('INSERT INTO dic_book values(?,?,?,?,?,?,?,?,?,?)', [2, '快速减肥', 'logo.png','','',1,'','123456789',1,1]);
+//	tx.executeSql('INSERT INTO dic_book values(?,?,?,?,?,?,?,?,?,?)', [3, '文件', 'logo.png','','',1,'','123456789',1,0]);
+}

+ 19 - 0
js/db/dicCategory.js

@@ -0,0 +1,19 @@
+/*!
+ * =====================================================
+ * User:HZC
+ * State:分类表。
+ * 每次更新需要保留数据库操作历史。
+ * =====================================================
+ */
+function createTableCategory(tx) {
+	tx.executeSql('DROP TABLE IF EXISTS dic_category', []);
+	//id,name,img_path,status(0:无效,1:有效)
+	tx.executeSql('create table if not exists dic_category(id INTEGER PRIMARY KEY AUTOINCREMENT,name text,img_path text,status INTEGER)', [], function(tx, rs) {
+		console.log("add message data");
+	}, onError);
+
+	tx.executeSql('INSERT INTO dic_category values(?,?,?,?)', [1, '铁人精神', '', 1]);
+	tx.executeSql('INSERT INTO dic_category values(?,?,?,?)', [2, '国学', '', 1]);
+	tx.executeSql('INSERT INTO dic_category values(?,?,?,?)', [3, '励志', '', 1]);
+	tx.executeSql('INSERT INTO dic_category values(?,?,?,?)', [4, '企业管理', '', 1]);
+}

+ 35 - 0
js/db/hzc.initDb.js

@@ -0,0 +1,35 @@
+/*!
+ * =====================================================
+ * User:HZC
+ * State:数据库
+ * =====================================================
+ */
+var db = openDatabase('bookStoreDb', '', 'bookStore Db', 5 * 1000 * 1000);
+
+mui.plusReady(createTable);
+
+//添加数据
+function createTable(onSuccess) {
+	console.log("开始添加测试数据.....");
+	db.transaction(function(tx) {
+		//执行访问数据库的语句
+		db.transaction(function(tx) {
+			createTableCategory(tx);
+		});
+		db.transaction(function(tx){
+			createTableBook(tx);
+		})
+	});
+}
+
+//sql语句执行成功后执行的回调函数
+
+function onSuccess(tx, rs) {
+		console.log("onSuccess操作成功");
+	}
+	//sql语句执行失败后执行的回调函数
+
+function onError(tx, error) {
+	console.log("操作失败,失败信息:" + error.message);
+}
+

+ 226 - 0
js/db/service.js

@@ -0,0 +1,226 @@
+/*!
+ * =====================================================
+ * User:HZC
+ * State:服务
+ * 
+ * 
+ *  获取所有课程 courseCode课程,sReuslt为回调方法名
+ * 
+	function queryAllCourse(length, callback) {
+		sDb.transaction(function(tx) {
+			var sql = "select id,code,name,status,progress from category where length(code)=?";
+			tx.executeSql(sql, [length], function(tx, rs) {
+				var myRows = [];
+				if (rs.rows.length > 0) {
+					for (var i = 0; i < rs.rows.length; i++) {
+						var row = rs.rows.item(i);
+						myRows.push({
+							code: row.code,
+						});
+					}
+				}
+				callback(myRows);
+			}, onError);
+		});
+	}
+	
+ * =====================================================
+ */
+var sDb = openDatabase('bookStoreDb', '', 'bookStore Db', 5 * 1000 * 1000);
+
+/**
+ * 错误信息
+ * @param {Object} tx
+ * @param {Object} error
+ */
+function onError(tx, error) {
+	mui.toast('The db operation mistake : HzcError -- ' + error.message);
+	console.error('The db operation mistake : HzcError -- ' + error.message);
+}
+
+/**
+ * 正确信息
+ * @param {Object} tx
+ * @param {Object} rs
+ */
+function onSucc(tx, rs) {
+		console.log("onSuccess操作成功");
+	}
+	/**
+	 * 获取
+	 * @param {Object} categoryId
+	 */
+
+function getBooksByCategoryId(categoryId, callback) {
+		sDb.transaction(function(tx) {
+			var sql = "select id,name,img_path,html_name,dic_category_id,json,desc,is_download from dic_book where status = 1  and dic_category_id = ?";
+			tx.executeSql(sql, [categoryId], function(tx, rs) {
+				var myRows = [];
+				if (rs.rows.length > 0) {
+					for (var i = 0; i < rs.rows.length; i++) {
+						var row = rs.rows.item(i);
+						myRows.push({
+							id: row.id,
+							name: row.name,
+							imgPath: row.img_path,
+							htmlName: row.html_name,
+							dicCategoryId: row.dic_category_id,
+							jsonList: row.json,
+							desc: row.desc,
+							isDownload: row.is_download
+						});
+					}
+				}
+				callback(myRows);
+			}, onError);
+		});
+	}
+	/**
+	 * 获取我的书
+	 * @param {Object} start:开始数
+	 * @param {Object} callback
+	 */
+
+function getMyBooks(start, callback) {
+	sDb.transaction(function(tx) {
+		var sql = "select id,name,img_path,html_name,dic_category_id,json,desc,is_download from dic_book where status = 1 limit ?,5";
+		tx.executeSql(sql, [start], function(tx, rs) {
+			var myRows = [];
+			if (rs.rows.length > 0) {
+				for (var i = 0; i < rs.rows.length; i++) {
+					var row = rs.rows.item(i);
+					myRows.push({
+						id: row.id,
+						name: row.name,
+						imgPath: row.img_path,
+						htmlName: row.html_name,
+						dicCategoryId: row.dic_category_id,
+						jsonList: row.json,
+						desc: row.desc,
+						isDownload: row.is_download
+					});
+				}
+			}
+			callback(myRows);
+		}, onError);
+	});
+}
+
+/**
+ * 同步后台数据库中的books
+ * @param {Object} data
+ * @param {Object} callback
+ */
+function synDicBook(data, callback) {
+	if (data.length > 0) {
+		getLastBook(function(lastBook) {
+			if (!lastBook) {
+				lastBook.id = -1;
+			}
+			for (var i = 0; i < data.length; i++) {
+				var book = data[i];
+				if (book.id != lastBook.id) {
+					saveBook(book, function() {
+						console.log('保存书成功。');
+					});
+				}
+			}
+		});
+	}
+}
+
+/**
+ * 保存书
+ * @param {Object} book
+ * @param {Object} callback
+ */
+function saveBook(book, callback) {
+	sDb.transaction(function(tx) {
+		var sql = "insert into dic_book (id,name,img_path,html_name,dic_category_id,json,desc,status) values (?,?,?,?,?,?,?,?)";
+		tx.executeSql(sql, [book.id, book.name, book.imgPath, book.htmlName, book.dicCategoryId, book.jsonList, book.desc, book.status],
+			callback, function(tx, error) {
+				var msg = error.message.toString();
+				if (msg.indexOf('unique') > 0) {
+					updateBookStatus(book.id, 1, callback);
+				}
+			});
+	});
+}
+
+
+/**
+ * 获取最后一本书的id
+ * @param {Object} callback
+ */
+function getLastBook(callback) {
+	sDb.transaction(function(tx) {
+		var sql = 'select id from dic_book order by id desc limit 0,1';
+		tx.executeSql(sql, [start], function(tx, rs) {
+			var myRows = {};
+			if (rs.rows.length > 0) {
+				myRows.id = rs.rows[0].id;
+			}
+			callback(myRows);
+		}, onError)
+	});
+}
+
+/**
+ * 更新书下载状态
+ * @param {Object} bookId :id
+ * @param {Object} status :1:已下载,2:未下载
+ * @param {Object} callback
+ */
+function updateDownloadStatus(bookId, status, callback) {
+	sDb.transaction(function(tx) {
+		var sql = 'update dic_book set is_download = ? where id = ?';
+		tx.executeSql(sql, [status, bookId], function(tx, rs) {
+			callback('true');
+		}, onError);
+	});
+}
+
+/**
+ * 把所有已经下载的书的id保存在localstorage中
+ * @param {Object} callback
+ */
+function saveBookIds(callback) {
+	sDb.transaction(function(tx) {
+		var sql = 'select id from dic_book where status = 1';
+		tx.executeSql(sql, [], function(tx, rs) {
+			var ids = '';
+			if (rs.rows.length > 0) {
+				for (var i = 0; i < rs.rows.length; i++) {
+					var bookId = rs.rows.item(i).id;
+					ids = bookId + ',' + ids;
+				}
+			}
+			saveBookIdsInStorage(ids);
+			callback;
+		}, onError);
+	});
+}
+
+/**
+ * 更新书的状态
+ * @param {Object} id
+ * @param {Object} status : 0:不可用,1:可用
+ */
+function updateBookStatus(id, status, callback) {
+	sDb.transaction(function(tx) {
+		var sql = 'update dic_book set status = ? where id = ?';
+		tx.executeSql(sql, [status, id], callback, onError)
+	})
+}
+
+/**
+ * 删除图书 
+ * @param {Object} id
+ * @param {Object} callback
+ */
+function deleteBooks(id, callback) {
+	sDb.transaction(function(tx) {
+		var sql = 'delete from dic_book where id = ?';
+		tx.executeSql(sql, [id], callback, onError);
+	});
+}

+ 62 - 0
js/hzc.rpc.js

@@ -0,0 +1,62 @@
+/*!
+ * =====================================================
+ * User:HZC
+ * State:RPC
+ * =====================================================
+ */
+
+var rpc = new APIClient('/rpc');
+
+/**
+ * 登录
+ * @param {Object} userName
+ * @param {Object} password
+ * @param {Object} callback
+ */
+function login(userName, password, callback) {
+	rpc.login(userName, password, callback);
+}
+
+/**
+ * 注册
+ * @param {Object} userName
+ * @param {Object} password
+ * @param {Object} callback
+ */
+function register(userName, password, callback) {
+	rpc.register(userName, password, callback);
+}
+
+/**
+ * 查询删除的书
+ * @param {Object} callback
+ */
+function listDelPdfId(callback) {
+	rpc.listDelPdfId(callback);
+}
+
+/**
+ * 返回分类下所有书
+ * @param {Object} categoryId
+ * @param {Object} callback
+ */
+function listPdf(categoryId, callback) {
+	rpc.listPdfByPid(categoryId, callback);
+}
+
+/**
+ * 搜索图书 
+ * @param {Object} keywords
+ * @param {Object} callback
+ */
+function searchBooks(keywords, callback) {
+	rpc.searchPdf(keywords, callback);
+}
+
+/**
+ * 查询图书分类
+ * @param {Object} callback
+ */
+function listCategoryRpc(callback){
+	rpc.listCategory(callback);
+}

File diff suppressed because it is too large
+ 1 - 0
js/jquery.min.js


File diff suppressed because it is too large
+ 5 - 0
js/mui.min.js


+ 98 - 0
js/routes.js

@@ -0,0 +1,98 @@
+/*!
+ * =====================================================
+ * User:HZC
+ * State:路由配置对象
+ * =====================================================
+ */
+(function(w) {
+	var domain = 'http://182.92.109.194:8080/'; //production
+	w.Routes = {
+		domain: domain,
+		urls: {
+			// 用户相关
+			user: {
+				// 登录	
+				login: domain + 'SysUserCtrl.loginForPufa.do',
+				//注册
+				register: domain + ''
+			},
+			//图书相关
+			book: {
+				//获取所有书
+				getBooks: domain + '',
+				//图书logo
+				bookUrl: domain + '',
+				//下载图书
+				downloadBook: domain + ''
+			}
+
+		}
+	};
+})(window);
+
+/**
+ *	发送验证码
+ * @param {Object} username 手机号
+ * @param {Object} sendBtn 点击发送的按钮
+ */
+
+function sendCode(username, sendBtn, successFun) {
+	if (username.length == 0) {
+		mui.toast('请输入手机号码 ');
+		return;
+	}
+	if (username.length != 11) {
+		mui.toast('请输入有效的手机号码 ');
+		return;
+	}
+	if (!myreg.test(username)) {
+		mui.toast('请输入有效的手机号码 ');
+		return;
+	}
+	var code = username + 'liu';
+	username = strEnc(username, 'q', 'w', 'e');
+	code = strEnc(code, '2', '3', '4');
+
+	mui.ajax(Routes.urls.user.sendVerifyCode, {
+		data: {
+			username: username,
+			code: code
+		},
+		dataType: 'json', //服务器返回json格式数据
+		type: 'post', //HTTP请求类型
+		timeout: 10000, //超时时间设置为10秒;
+		success: function(data) {
+			mui.toast('验证码已发送 ');
+			sendBtn.setAttribute('issend', 1);
+			if (data && data.success) {
+				var result = data.message;
+				var _verifycode = result.substr(0, 6);
+				successFun(_verifycode);
+			} else {
+				mui.toast(data.message);
+			}
+		},
+		error: function() {
+			mui.toast('网络异常');
+			window.localStorage.setItem('isAlreadyLogin', false);
+
+		}
+	});
+	//		successFun('111111');
+}
+var myreg = /^(13|14|15|18)\d{9}$/;
+
+/**
+ * 网络异常统一回调函数
+ * @param {Object} xhr
+ * @param {Object} type
+ * @param {Object} errorThrown
+ */
+function networkErrorHandler(xhr, type, errorThrown) {
+	var b = toastNetworkInfo();
+	if (!b) {
+		mui.toast("请先打开网络");
+	} else {
+		mui.toast("网络异常,请先设置网络");
+	}
+}

+ 45 - 0
js/update.js

@@ -0,0 +1,45 @@
+var server = "http://182.92.109.194:8001/appInstall/zsysb/update.json"; //获取升级描述文件服务器地址
+
+/**
+ * 自动验证,并更新app
+ */
+function update(from) {
+	var osname = plus.os.name;
+	var appid = plus.runtime.appid;
+	/**
+	 * 更新方法
+	 * @param {Object} respDataStr
+	 */
+
+	function updateHandler(respDataStr) {
+			var respData = eval('(' + respDataStr + ')');
+			var data = respData[osname];
+			var newVersion = parseInt(data.version.split('.').join(''));
+			var version = parseInt(plus.runtime.version.split('.').join(''));
+			if (newVersion <= version) {
+				if (from == "inner")
+					mui.toast('已是最新版本~');
+				return;
+			}
+			plus.ui.confirm(data.note, function(i) {
+				console.log(JSON.stringify(i))
+				if (0 == i.index) { // 点击了: 立即更新
+					plus.runtime.openURL(data.url);
+				}
+			}, data.title, ["立即更新", "取  消"]);
+		}
+		//获取服务器的最新版本信息
+	mui.ajax(server, {
+		dataType: 'text', //服务器返回json格式数据
+		type: 'get', //HTTP请求类型
+		success: updateHandler,
+		error: function(xhr, type, errorThrown) {
+			//			console.log(errorThrown)
+			//			console.log(JSON.stringify(xhr.responseText))
+		}
+	});
+
+}
+
+
+//mui.plusReady(update);

+ 204 - 0
login.html

@@ -0,0 +1,204 @@
+<!DOCTYPE html>
+<html>
+
+	<head>
+		<meta charset="utf-8">
+		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+		<title>登录</title>
+		<link href="css/mui.min.css" rel="stylesheet" />
+		<style>
+			.area {
+				margin: 20px auto 0px auto;
+			}
+			.mui-input-group {
+				margin-top: 10px;
+			}
+			.mui-input-group:first-child {
+				margin-top: 20px;
+			}
+			.mui-input-group label {
+				width: 32%;
+			}
+			.mui-input-row label~input,
+			.mui-input-row label~select,
+			.mui-input-row label~textarea {
+				/*width: 78%;*/
+			}
+			.mui-input-row {
+				height: 50px !important;
+			}
+			.mui-input-row label {
+				line-height: 1.9 !important;
+			}
+			.mui-checkbox input[type=checkbox],
+			.mui-radio input[type=radio] {
+				top: 6px;
+			}
+			.mui-content-padded {
+				margin-top: 25px;
+			}
+			.mui-btn {
+				padding: 10px;
+			}
+			.link-area {
+				display: block;
+				margin-top: 25px;
+				text-align: center;
+			}
+			.spliter {
+				color: #bbb;
+				padding: 0px 8px;
+			}
+			.oauth-area {
+				position: absolute;
+				top: 400px;
+				left: 0px;
+				text-align: center;
+				width: 100%;
+				padding: 0px;
+				margin: 0px;
+			}
+			.oauth-area .oauth-btn {
+				display: inline-block;
+				width: 50px;
+				height: 50px;
+				background-size: 30px 30px;
+				background-position: center center;
+				background-repeat: no-repeat;
+				margin: 0px 20px;
+				border: solid 1px #ddd;
+				border-radius: 25px;
+			}
+			.oauth-area .oauth-btn:active {
+				border: solid 1px #aaa;
+			}
+			.my-input {
+				line-height: 20px !important;
+				height: 50px !important;
+			}
+		</style>
+
+	</head>
+
+	<body>
+		<header class="mui-bar mui-bar-nav">
+			<h1 class="mui-title">石油书吧</h1>
+		</header>
+		<div class="mui-content" style="padding-left:20px;padding-right: 20px;">
+			<form id='login-form' class="mui-input-group" style="border-radius: 6px;margin-top: 20%;">
+				<div class="mui-input-row">
+					<label>账号</label>
+					<input value="" id='account' type="text" class="mui-input-clear mui-input my-input" placeholder="请输入账号">
+				</div>
+				<div class="mui-input-row">
+					<label>密码</label>
+					<input value="" id='password' type="password" class="mui-input-clear mui-input my-input" placeholder="请输入密码">
+				</div>
+			</form>
+			<form class="mui-input-group" style="display: none;">
+				<ul class="mui-table-view mui-table-view-chevron">
+					<li class="mui-table-view-cell">
+						自动登录
+						<div id="autoLogin" class="mui-switch">
+							<div class="mui-switch-handle"></div>
+						</div>
+					</li>
+				</ul>
+			</form>
+			<div class="mui-content-padded">
+				<button id='login' class="mui-btn mui-btn-block mui-btn-warning">登录</button>
+				<div class="link-area">
+					<a id='forgetPassword' style="visibility: hidden;">忘记密码</a>
+					<span class="spliter" style="visibility: hidden;">|</span>
+					<a id='reg'>注册账号</a>
+				</div>
+			</div>
+			<div class="mui-content-padded oauth-area">
+				<img src="images/source/144.png" style="width: 100px;height: 95px;" />
+			</div>
+		</div>
+
+		<!--
+        	作者:HZC
+        	时间:2015-09-05
+        	描述:登录
+        -->
+		<script type="text/javascript" src="js/jquery.min.js" type="text/javascript" charset="UTF-8"></script>
+		<script src="js/mui.min.js" type="text/javascript" charset="UTF-8"></script>
+		<script src="js/app.js" type="text/javascript" charset="UTF-8"></script>
+		<script type="text/javascript" src="http://182.92.109.194:8080/rpc/helper.js" type="text/javascript" charset="UTF-8"></script>
+		<script src="js/hzc.rpc.js" type="text/javascript" charset="utf-8"></script>
+		<script type="text/javascript" charset="UTF-8">
+			(function($, doc) {
+				$.init({
+					statusBarBackground: '#f7f7f7'
+				});
+				$.plusReady(function() {
+					toastNetworkInfo('当前网络不可用');
+					initLogin();
+					reg();
+				});
+				/**
+				 * 注册
+				 */
+				function reg() {
+						document.getElementById("reg").addEventListener('tap', function() {
+							$.openWindow({
+								id: 'reg-id',
+								url: 'reg.html'
+							})
+						})
+					}
+					/**
+					 * 登录
+					 */
+
+				function initLogin() {
+						document.getElementById("login").addEventListener('tap', function() {
+							if (!toastNetworkInfo('当前网络不可用')) return;
+							var account = document.getElementById("account").value;
+							var password = document.getElementById("password").value;
+							account = hzcTrim(account);
+							password = hzcTrim(password);
+							if (account == '' || password == '') {
+								$.toast('请填写账号密码');
+								return;
+							} else {
+								login(account, password, function(data) {
+									if (data.rs) {
+										setLoginStatus('true');
+										saveUserId(data.ms);
+										$.openWindow({
+											id: 'tab-webview-main-id',
+											url: 'main.html',
+											show: {
+												duration: 200
+											}
+										});
+									} else {
+										$.toast(data.ms);
+										return;
+									}
+								});
+							}
+						});
+					}
+					//退出
+				var backButtonPress = 0;
+				$.back = function(event) {
+					backButtonPress++;
+					if (backButtonPress > 1) {
+						plus.runtime.quit();
+					} else {
+						plus.nativeUI.toast('再按一次退出应用');
+					}
+					setTimeout(function() {
+						backButtonPress = 0;
+					}, 1000);
+					return false;
+				};
+			}(mui, document));
+		</script>
+	</body>
+
+</html>

+ 485 - 0
main.html

@@ -0,0 +1,485 @@
+<!DOCTYPE html>
+<html>
+
+	<head>
+		<meta charset="utf-8">
+		<title>主页</title>
+		<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
+		<meta name="apple-mobile-web-app-capable" content="yes">
+		<meta name="apple-mobile-web-app-status-bar-style" content="black">
+		<!--标准mui.css-->
+		<link rel="stylesheet" href="css/mui.min.css">
+		<!--App自定义的css-->
+		<link rel="stylesheet" type="text/css" href="../css/app.css" />
+		<style>
+			.title {
+				margin: 20px 15px 10px;
+				color: #6d6d72;
+				font-size: 15px;
+			}
+			.oa-contact-cell.mui-table .mui-table-cell {
+				padding: 11px 0;
+				vertical-align: middle;
+			}
+			.oa-contact-cell {
+				position: relative;
+				margin: -11px 0;
+			}
+			.oa-contact-avatar {
+				width: 75px;
+			}
+			.oa-contact-avatar img {
+				border-radius: 50%;
+			}
+			.oa-contact-content {
+				width: 100%;
+			}
+			.oa-contact-name {
+				margin-right: 20px;
+			}
+			.oa-contact-name,
+			oa-contact-position {
+				float: left;
+			}
+			body {
+				background-color: #efeff4;
+			}
+			h5 {
+				padding-top: 8px;
+				padding-bottom: 8px;
+				text-indent: 12px;
+			}
+			.mui-table-view.mui-grid-view .mui-table-view-cell .mui-media-body {
+				font-size: 15px;
+				margin-top: 8px;
+				color: #333;
+			}
+			.my-mui-media-body {
+				height: 30px !important;
+				font-size: 18px !important;
+				line-height: 30px !important;
+			}
+			.mui-media-object {
+				width: 80% !important;
+			}
+			.mui-table-view-cell {
+				padding-right:10px !important;
+			}
+		</style>
+	</head>
+
+	<body>
+		<header class="mui-bar mui-bar-nav">
+			<a id="search-id" class="mui-icon mui-icon-search mui-pull-right" style="display: none;"></a>
+			<h1 class="mui-title">石油书吧</h1>
+		</header>
+		<nav class="mui-bar mui-bar-tab" id='menu-nav-id'>
+			<a class="mui-tab-item mui-active" href="#tabbar">
+				<span class="mui-icon mui-icon-contact" style="font-weight: bolder"></span>
+				<span class="mui-tab-label" style="font-weight: bolder">书&nbsp;&nbsp;&nbsp;&nbsp;吧</span>
+			</a>
+			<a data-search='true' class="mui-tab-item" href="#tabbar-with-chat">
+				<span class="mui-icon mui-icon-email" style="font-weight: bolder"></span>
+				<span class="mui-tab-label" style="font-weight: bolder">书&nbsp;&nbsp;&nbsp;&nbsp;架</span>
+			</a>
+			<a class="mui-tab-item" href="#tabbar-with-map">
+				<span class="mui-icon mui-icon-gear" style="font-weight: bolder"></span>
+				<span class="mui-tab-label" style="font-weight: bolder">设&nbsp;&nbsp;&nbsp;&nbsp;置</span>
+			</a>
+		</nav>
+		<div class="mui-content">
+			<!--
+            	描述:书吧
+            -->
+			<div id="tabbar" class="mui-control-content mui-active">
+				<div id="pullrefresh" class="mui-content mui-scroll-wrapper">
+					<div class="mui-scroll" style="margin-top: 15px;">
+						<ul id="books-id" class="mui-table-view mui-table-view-chevron">
+							<li id="loading-id" class="mui-table-view-cell mui-media">
+								<div style="text-align: center;margin-right: -60px;">加载中...</div>
+							</li>
+						</ul>
+					</div>
+				</div>
+			</div>
+			<!--
+            	描述:书架
+            -->
+			<div id="tabbar-with-chat" class="mui-control-content">
+				<ul id="book-list-id" class="mui-table-view mui-grid-view  mui-grid-9">
+					
+				</ul>
+
+			</div>
+			<!--
+            	描述:设置
+            -->
+			<div id="tabbar-with-map" class="mui-control-content">
+				<div class="mui-scroll-wrapper">
+					<div class="mui-scroll">
+						<ul class="mui-table-view" style="margin-top: 20px;">
+							<li class="mui-table-view-cell">
+								<a id="tel" class="mui-navigate-right">
+									客服电话
+								</a>
+							</li>
+							<li class="mui-table-view-cell" >
+								<a id="feedback-btn" data-href="app/feedback.html" class="mui-navigate-right">
+									问题反馈
+								</a>
+							</li>
+						</ul>
+						<ul class="mui-table-view" style="margin-top: 20px;">
+							<li class="mui-table-view-cell">
+								<a id="update" class="mui-navigate-right">检查更新</a>
+							</li>
+						</ul>
+						<ul class="mui-table-view" style="margin-top: 25px;">
+							<li class="mui-table-view-cell">
+								<a id="logout" data-href="logout" style="text-align: center;color: #FF3B30;">
+								退出登录
+							</a>
+							</li>
+						</ul>
+					</div>
+				</div>
+			</div>
+		</div>
+	</body>
+	<script id="book-temp-id" type="text/html">
+		<div class="mui-slider-right mui-disabled">
+			<div class="mui-btn mui-btn-red" data-id='{id}'>删除</div>
+		</div>
+		<div class="mui-slider-handle">
+			<a data-id='{id}' data-is-dowanload='{isDownload}' download-start='false' data-html-name='{htmlName}'>
+				<img id="img-{id}" class="mui-media-object mui-pull-left">
+				<div class="mui-media-body">
+					{name}
+					<p class='mui-ellipsis'>{desc}</p>
+				</div>
+			</a>
+		</div>
+	</script>
+
+	<script type="text/html" id="category-temp-id">
+		<!--<li class="mui-table-view-cell mui-media mui-col-xs-6">-->
+		<a href="javascript:void(0)" data-title='{name}' data-id='{id}'>
+			<img class="mui-media-object" id="img-category-{id}" style="width:130px !important;height: 80px !important;">
+			<div class="mui-media-body my-mui-media-body">{name}</div>
+		</a>
+		<!--</li>-->
+	</script>
+	<!--
+    	作者:52529860@qq.com
+    	时间:2015-09-14
+    	描述:主页
+    -->
+
+	<script type="text/javascript" src="js/jquery.min.js" type="text/javascript" charset="UTF-8"></script>
+	<script type="text/javascript" src="http://182.92.109.194:8080/rpc/helper.js" type="text/javascript" charset="UTF-8"></script>
+	<script src="js/mui.min.js" type="text/javascript" charset="utf-8"></script>
+	<script src="js/routes.js" type="text/javascript" charset="utf-8"></script>
+	<script src="js/update.js" type="text/javascript" charset="utf-8"></script>
+	<script src="js/app.js" type="text/javascript" charset="utf-8"></script>
+	<script src="js/db/service.js" type="text/javascript" charset="utf-8"></script>
+	<script src="js/hzc.rpc.js" type="text/javascript" charset="utf-8"></script>
+	<script>
+		mui.init({
+			swipeBack: false,
+			pullRefresh: {
+				container: '#pullrefresh',
+				up: {
+					contentrefresh: '正在加载...',
+					callback: pullupRefresh
+				}
+			}
+		});
+		mui.plusReady(function() {
+			//			plus.screen.lockOrientation("portrait");
+			loadBooks(1);
+			initCategory();
+			openBook();
+			saveBookIds();
+			openList();
+			callPhone();
+			checkUpdate();
+			feedback();
+			navTab();
+			doSearch();
+			deleteBook();
+			logout();
+		});
+		/**
+		 * 删除图书
+		 */
+		function deleteBook() {
+				mui('#books-id').on('tap', '.mui-btn', function() {
+					var elem = this;
+					var btnArray = ['确认', '取消'];
+					mui.confirm('确认删除该条记录?', '', btnArray, function(e) {
+						if (e.index == 0) {
+							var bookId = elem.getAttribute('data-id');
+							deleteBooks(bookId, function() {
+								saveBookIds(function() {})
+								var li = elem.parentElement.parentElement;
+								var p = li.parentElement;
+								p.removeChild(li);
+								console.log(p.children.length);
+								if (p.children.length == 0) {
+									var li = document.createElement('li');
+									li.className = 'mui-table-view-cell mui-media';
+									li.innerHTML = '<div style="text-align: center;">没有相关图书</div>';
+									//p.appendChild('<li id="loading-id" class="mui-table-view-cell mui-media"><div style="text-align: center;margin-right: -60px;">加载中...</div></li>');
+									p.appendChild(li);
+								}
+							});
+						}
+					});
+				});
+			}
+			/**
+			 * 初始化图书分类
+			 */
+
+		function initCategory() {
+			listCategoryRpc(function(data) {
+				//				console.log(JSON.stringify(data));
+				var htmlStr = '';
+				//				<li class="mui-table-view-cell mui-media"><div style="text-align: center;margin-right: -60px;">数据加载中...</div></li>
+				if (data.length < 1) {
+					htmlStr = '<div style="text-align: center;">没有相关数据</div>';
+					$id('book-list-id').innerHTML = htmlStr;
+					return;
+				}
+				$id('book-list-id').innerHTML = '';
+				var tempHtml = $id('category-temp-id').innerHTML;
+				for (var i = 0; i < data.length; i++) {
+					var category = data[i];
+					//					console.log(JSON.stringify(category))
+					var li = document.createElement('li');
+					li.className = 'mui-table-view-cell mui-media mui-col-xs-6';
+					li.innerHTML = render(tempHtml, category);
+					$id('book-list-id').appendChild(li);
+					category.imgPath = Routes.urls.book.bookUrl + category.img_path;
+					setImg('img-category-' + category.id, category.imgPath);
+				}
+			});
+		}
+		window.count = 0;
+		 //分页查询我的book
+		window.start = 0;
+		/**
+		 * 上拉加载具体业务实现
+		 */
+		function pullupRefresh() {
+				setTimeout(function() {
+					mui('#pullrefresh').pullRefresh().endPullupToRefresh((++window.count > 50)); //参数为true代表没有更多数据了。
+					loadBooks(2);
+				}, 1000);
+			}
+			/**
+			 * 加载图书
+			 * @param {Object} source:来源:1,初始化,2,上拉刷新
+			 */
+
+		function loadBooks(source) {
+				getMyBooks(window.start, function(data) {
+					toastNetworkInfo('当前网络不可用');
+					if (data.length < 1) {
+						mui('#pullrefresh').pullRefresh().endPullupToRefresh(true);
+						if (source == 1) {
+							$id('books-id').innerHTML = '<li class="mui-table-view-cell mui-media"><div style="text-align: center;">没有相关图书</div></li>';
+						} else {
+							mui.toast('没有更多数据了');
+						}
+						return;
+					}
+					window.start += 5;
+					var tempHtml = $id('book-temp-id').innerHTML;
+					try {
+						$id('loading-id').style.display = 'none';
+						$id('loading-id').parentElement.removeChild($id('loading-id'))
+					} catch (e) {}
+					if (toastNetworkInfo('当前网络不可用')) {
+						listDelPdfId(function(delData) {
+							var delDataStr = delData.toString();
+							//								console.log(delDataStr)
+							for (var i = 0; i < data.length; i++) {
+								var book = data[i];
+								if (delDataStr && !delDataStr.indexOf(book.id) > 0) {
+									updateBookStatus(book.id, '0', function() {});
+									continue;
+								}
+								var li = document.createElement('li');
+								li.className = 'mui-table-view-cell mui-media';
+								li.innerHTML = render(tempHtml, book);
+								$id('books-id').appendChild(li);
+								book.imgPath = Routes.urls.book.bookUrl + book.imgPath;
+								setImg('img-' + book.id, book.imgPath);
+							}
+						});
+					} else {
+						for (var i = 0; i < data.length; i++) {
+							var book = data[i];
+							var li = document.createElement('li');
+							li.className = 'mui-table-view-cell mui-media';
+							li.innerHTML = render(tempHtml, book);
+							$id('books-id').appendChild(li);
+							book.imgPath = Routes.urls.book.bookUrl + book.imgPath;
+							setImg('img-' + book.id, book.imgPath);
+						}
+					}
+				});
+			}
+			/**
+			 * 打开书
+			 */
+
+		function openBook() {
+				mui('#books-id').on('tap', 'a', function() {
+					var self = this;
+					var htmlName = self.getAttribute('data-html-name');
+					var bookPath = DOWNLOADPATH + htmlName;
+					var absoluteBookPath = convertToAbsoluteURL(bookPath);
+					mui.openWindow({
+						id: 'book-id',
+						url: 'app/book.html',
+						extras: {
+							href: absoluteBookPath
+						},
+						show: {
+							duration: 200
+						}
+					})
+				});
+			}
+			/**
+			 * 打开图书列表
+			 */
+
+		function openList() {
+				mui('#book-list-id').on('tap', 'a', function() {
+					var title = this.getAttribute('data-title');
+					var categoryId = this.getAttribute('data-id');
+					if (toastNetworkInfo('当前网络不可用')) {
+						var oldWin = plus.webview.getWebviewById('book-list-id-' + categoryId);
+						if (oldWin) {
+							oldWin.show();
+							//							plus.webview.getWebviewById('tab-webview-main-id').reload();
+							return;
+						}
+						mui.openWindow({
+							id: 'book-list-id-' + categoryId,
+							url: 'app/book-list.html',
+							extras: {
+								title: title,
+								categoryId: categoryId
+							},
+							show: {
+								duration: 350
+							}
+						});
+						//						plus.webview.getWebviewById('tab-webview-main-id').reload();
+					}
+				});
+			}
+			//客服电话
+
+		function callPhone() {
+			document.getElementById("tel").addEventListener('tap', function() {
+				plus.device.dial("114");
+			});
+		}
+
+		function feedback() {
+				document.getElementById("feedback-btn").addEventListener('tap', function() {
+					mui.openWindow({
+						id: 'feedback-id',
+						url: this.getAttribute('data-href'),
+						show: {
+							duration: 200
+						}
+					})
+				})
+			}
+			//检查更新
+
+		function checkUpdate() {
+				document.getElementById("update").addEventListener('tap', function() {
+					update("inner");
+				});
+			}
+			/**
+			 * 退出
+			 */
+
+		function logout() {
+				document.getElementById("logout").addEventListener('tap', function() {
+					var btnArray = ['是', '否'];
+					mui.confirm('确定要退出登录吗?', '', btnArray, function(e) {
+						if (e.index == 0) {
+							plus.downloader.clear();
+							setLoginStatus('false');
+							mui.openWindow({
+								id: 'login-id',
+								url: 'login.html',
+								show: {
+									duration: 200
+								}
+							});
+							setTimeout(function() {
+								plus.webview.getWebviewById('tab-webview-main-id').close();
+							}, 2000);
+						}
+					});
+				});
+			}
+			/**
+			 * 显示收藏
+			 */
+
+		function navTab() {
+				mui('#menu-nav-id').on('tap', 'a', function() {
+					var data = this.getAttribute('data-search');
+					if (data == 'true') {
+						$id('search-id').style.display = 'block';
+					} else {
+						$id('search-id').style.display = 'none';
+					}
+				})
+			}
+			/**
+			 * 点击搜索
+			 */
+
+		function doSearch() {
+				document.getElementById("search-id").addEventListener('tap', function() {
+					if (toastNetworkInfo('当前网络不可用')) {
+						mui.openWindow({
+							id: 'search-id',
+							url: 'app/search.html',
+							show: {
+								duration: 200
+							}
+						});
+					}
+				});
+			}
+			//退出
+		var backButtonPress = 0;
+		mui.back = function(event) {
+			backButtonPress++;
+			if (backButtonPress > 1) {
+				plus.downloader.clear();
+				plus.runtime.quit();
+			} else {
+				plus.nativeUI.toast('再按一次退出应用');
+			}
+			setTimeout(function() {
+				backButtonPress = 0;
+			}, 1000);
+			return false;
+		};
+	</script>
+
+</html>

+ 169 - 0
manifest.json

@@ -0,0 +1,169 @@
+{
+	"@platforms": ["android", "iPhone", "iPad"],
+	"id": "H5AE973D1",/*应用的标识,创建应用时自动生成,勿手动修改*/
+	"name": "石油书吧",/*应用名称,程序桌面图标名称*/
+	"version": {
+		"name": "1.0.6",/*应用版本名称*/
+		"code": "83"
+	},
+	"description": "",/*应用描述信息*/
+	"icons": {
+		"72": "icon.png"
+	},
+	"launch_path": "entrance.html",/*应用的入口页面,默认为根目录下的index.html;支持网络地址,必须以http://或https://开头*/
+	"developer": {
+		"name": "",/*开发者名称*/
+		"email": "",/*开发者邮箱地址*/
+		"url": "http://www.dcloud.io"
+	},
+	"permissions": {
+
+
+		"Cache": {
+			"description": "管理应用缓存"
+		},
+		"Camera": {
+			"description": "访问摄像头"
+		},
+		"Console": {
+			"description": "跟踪调试输出日志"
+		},
+		"Contacts": {
+			"description": "访问系统联系人信息"
+		},
+		"Device": {
+			"description": "访问设备信息"
+		},
+		"Downloader": {
+			"description": "文件下载管理"
+		},
+		"Events": {
+			"description": "应用扩展事件"
+		},
+		"File": {
+			"description": "访问本地文件系统"
+		},
+		"Gallery": {
+			"description": "访问系统相册"
+		},
+
+		"Invocation": {
+			"description": "使用Native.js能力"
+		},
+
+		"Orientation": {
+			"description": "访问方向感应器"
+		},
+		"Proximity": {
+			"description": "访问距离感应器"
+		},
+		"Storage": {
+			"description": "管理应用本地数据"
+		},
+
+		"Uploader": {
+			"description": "管理文件上传任务"
+		},
+		"Runtime": {
+			"description": "访问运行期环境"
+		},
+		"XMLHttpRequest": {
+			"description": "跨域网络访问"
+		},
+		"Zip": {
+			"description": "文件压缩与解压缩"
+		},
+
+
+
+		"Webview": {
+			"description": "窗口管理"
+		},
+		"NativeUI": {
+			"description": "原生UI控件"
+		},
+		"Navigator": {
+			"description": "浏览器信息"
+		},
+		"NativeObj": {
+			"description": "原生对象"
+		},"Maps":{},"Audio":{},"Speech":{},"Barcode":{},"Messaging":{},"Geolocation":{},"Accelerometer":{}
+	},
+	"plus": {
+		"splashscreen": {
+			"autoclose": true,/*是否自动关闭程序启动界面,true表示应用加载应用入口页面后自动关闭;false则需调plus.navigator.closeSplashscreen()关闭*/
+			"waiting": true
+		},
+		"runmode": "liberate",/*应用的首次启动运行模式,可取liberate或normal,liberate模式在第一次启动时将解压应用资源(Android平台File API才可正常访问_www目录)*/
+		"signature": "Sk9JTiBVUyBtYWlsdG86aHIyMDEzQGRjbG91ZC5pbw==",/*可选,保留给应用签名,暂不使用*/
+		"distribute": {
+			"apple": {
+				"appid": "",/*iOS应用标识,苹果开发网站申请的appid,如io.dcloud.HelloH5*/
+				"mobileprovision": "",/*iOS应用打包配置文件*/
+				"password": "",/*iOS应用打包个人证书导入密码*/
+				"p12": "",/*iOS应用打包个人证书,打包配置文件关联的个人证书*/
+				"devices": "universal",/*iOS应用支持的设备类型,可取值iphone/ipad/universal*/
+				"frameworks": []
+			},
+			"google": {
+				"packagename": "",/*Android应用包名,如io.dcloud.HelloH5*/
+				"keystore": "",/*Android应用打包使用的密钥库文件*/
+				"password": "",/*Android应用打包使用密钥库中证书的密码*/
+				"aliasname": "",/*Android应用打包使用密钥库中证书的别名*/
+				"permissions": ["<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"com.android.launcher.permission.UNINSTALL_SHORTCUT\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>","<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>","<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>","<uses-permission android:name=\"com.android.launcher.permission.INSTALL_SHORTCUT\"/>","<uses-permission android:name=\"android.permission.SEND_SMS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-permission android:name=\"android.permission.CALL_PHONE\"/>","<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>","<uses-feature android:name=\"android.hardware.camera\"/>","<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>","<uses-permission android:name=\"android.permission.WRITE_SMS\"/>","<uses-permission android:name=\"android.permission.READ_SMS\"/>"]
+			},
+			"orientation": ["portrait-primary","portrait-secondary","landscape-primary","landscape-secondary"],/*应用支持的方向,portrait-primary:竖屏正方向;portrait-secondary:竖屏反方向;landscape-primary:横屏正方向;landscape-secondary:横屏反方向*/
+			"icons": {
+				"ios": {
+					"prerendered": true, /*应用图标是否已经高亮处理,在iOS6及以下设备上有效*/
+					"auto": "", /*应用图标,分辨率:512x512,用于自动生成各种尺寸程序图标*/
+					"iphone": {
+						"normal": "unpackage/res/icons/57x57.png",/*iPhone普通屏幕程序图标,分辨率:57x57*/
+						"retina": "unpackage/res/icons/114x114.png",/*iPhone高分屏程序图标,分辨率:114x114*/
+						"retina7": "unpackage/res/icons/120x120.png",/*iPhone iOS7高分屏程序图标,分辨率:120x120*/
+						"spotlight-normal": "unpackage/res/icons/29x29.png", /*iPhone Spotlight搜索程序图标,分辨率:29x29*/
+						"spotlight-retina": "unpackage/res/icons/58x58.png", /*iPhone高分屏Spotlight搜索程序图标,分辨率:58x58*/
+						"spotlight-retina7": "unpackage/res/icons/80x80.png",/*iPhone iOS7高分屏Spotlight搜索程序图标,分辨率:80x80*/
+						"settings-normal": "unpackage/res/icons/29x29.png", /*iPhone设置页面程序图标,分辨率:29x29*/
+						"settings-retina": "unpackage/res/icons/58x58.png",
+						"retina8": "unpackage/res/icons/180x180.png",
+						"settings-retina8": "unpackage/res/icons/87x87.png"
+					},
+					"ipad": {
+						"normal": "unpackage/res/icons/72x72.png", /*iPad普通屏幕程序图标,分辨率:72x72*/
+						"retina": "unpackage/res/icons/144x144.png", /*iPad高分屏程序图标,分辨率:144x144*/
+						"normal7": "unpackage/res/icons/76x76.png", /*iPad iOS7程序图标,分辨率:76x76*/
+						"retina7": "unpackage/res/icons/152x152.png", /*iPad iOS7高分屏程序图标,分辨率:152x152*/
+						"spotlight-normal": "unpackage/res/icons/50x50.png", /*iPad Spotlight搜索程序图标,分辨率:50x50*/
+						"spotlight-retina": "unpackage/res/icons/100x100.png", /*iPad高分屏Spotlight搜索程序图标,分辨率:100x100*/
+						"spotlight-normal7": "unpackage/res/icons/40x40.png",/*iPad iOS7 Spotlight搜索程序图标,分辨率:40x40*/
+						"spotlight-retina7": "unpackage/res/icons/80x80.png",/*iPad iOS7高分屏Spotlight搜索程序图标,分辨率:80x80*/
+						"settings-normal": "unpackage/res/icons/29x29.png",/*iPad设置页面程序图标,分辨率:29x29*/
+						"settings-retina": "unpackage/res/icons/58x58.png"
+					}
+				},
+				"android": {
+					"mdpi": "unpackage/res/icons/48x48.png", /*普通屏程序图标,分辨率:48x48*/
+					"ldpi": "unpackage/res/icons/48x48.png", /*大屏程序图标,分辨率:48x48*/
+					"hdpi": "unpackage/res/icons/72x72.png", /*高分屏程序图标,分辨率:72x72*/
+					"xhdpi": "unpackage/res/icons/96x96.png",/*720P高分屏程序图标,分辨率:96x96*/
+					"xxhdpi": "unpackage/res/icons/144x144.png"
+				}
+			},
+			"splashscreen": {
+				"ios": {
+					"iphone": {},
+					"ipad": {}
+				},
+				"android": {
+					"mdpi": "unpackage/source/240-282.png", /*普通屏启动图片,分辨率:240x282*/
+					"ldpi": "unpackage/source/320-442.png", /*大屏启动图片,分辨率:320x442*/
+					"hdpi": "unpackage/source/480-762.png", /*高分屏启动图片,分辨率:480x762*/
+					"xhdpi": "unpackage/source/720-1242.png", /*720P高分屏启动图片,分辨率:720x1242*/
+					"xxhdpi": "unpackage/source/1080-1882.png"
+				}
+			},
+			"debug": false
+		}
+	}
+}

+ 166 - 0
reg.html

@@ -0,0 +1,166 @@
+<!DOCTYPE html>
+<html>
+
+	<head>
+		<meta charset="utf-8">
+		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+		<title>注册</title>
+		<link href="css/mui.min.css" rel="stylesheet" />
+		<link href="css/style.css" rel="stylesheet" />
+		<style>
+			.area {
+				margin: 20px auto 0px auto;
+			}
+			.mui-input-group {
+				margin-top: 10px;
+			}
+			.mui-input-group:first-child {
+				margin-top: 20px;
+			}
+			.mui-input-group label {
+				width: 32%;
+			}
+			.mui-input-row label~input,
+			.mui-input-row label~select,
+			.mui-input-row label~textarea {
+				/*width: 78%;*/
+			}
+			.mui-input-row {
+				height: 50px !important;
+			}
+			.mui-input-row label {
+				line-height: 1.9 !important;
+			}
+			.mui-checkbox input[type=checkbox],
+			.mui-radio input[type=radio] {
+				top: 6px;
+			}
+			.mui-content-padded {
+				margin-top: 25px;
+			}
+			.mui-btn {
+				padding: 10px;
+			}
+			.link-area {
+				display: block;
+				margin-top: 25px;
+				text-align: center;
+			}
+			.spliter {
+				color: #bbb;
+				padding: 0px 8px;
+			}
+			.oauth-area {
+				position: absolute;
+				top: 400px;
+				left: 0px;
+				text-align: center;
+				width: 100%;
+				padding: 0px;
+				margin: 0px;
+			}
+			.oauth-area .oauth-btn {
+				display: inline-block;
+				width: 50px;
+				height: 50px;
+				background-size: 30px 30px;
+				background-position: center center;
+				background-repeat: no-repeat;
+				margin: 0px 20px;
+				border: solid 1px #ddd;
+				border-radius: 25px;
+			}
+			.oauth-area .oauth-btn:active {
+				border: solid 1px #aaa;
+			}
+			.my-input {
+				line-height: 20px !important;
+				height: 50px !important;
+			}
+		</style>
+	</head>
+
+	<body>
+		<header class="mui-bar mui-bar-nav">
+			<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
+			<h1 class="mui-title">注册</h1>
+		</header>
+		<div class="mui-content" style="padding-left:20px;padding-right: 20px;">
+			<form class="mui-input-group" style="border-radius: 6px;margin-top: 20%;">
+				<div class="mui-input-row">
+					<label>账号</label>
+					<input id='account' type="text" class="mui-input-clear mui-input my-input" placeholder="请输入账号">
+				</div>
+				<div class="mui-input-row">
+					<label>密码</label>
+					<input id='password' type="password" class="mui-input-clear mui-input my-input" placeholder="请输入密码">
+				</div>
+				<div class="mui-input-row">
+					<label>确认</label>
+					<input id='password_confirm' type="password" class="mui-input-clear mui-input my-input" placeholder="请确认密码">
+				</div>
+			</form>
+			<div class="mui-content-padded">
+				<button id='reg' class="mui-btn mui-btn-block mui-btn-warning" style="width: 100%;">注册</button>
+			</div>
+			<div class="mui-content-padded oauth-area">
+				<img src="images/source/144.png" style="width: 100px;height: 95px;" />
+			</div>
+		</div>
+
+		<!--
+        	作者:HZC
+        	时间:2015-09-05
+        	描述:注册
+        -->
+
+		<script type="text/javascript" src="js/jquery.min.js" type="text/javascript" charset="UTF-8"></script>
+		<script type="text/javascript" src="http://182.92.109.194:8080/rpc/helper.js" type="text/javascript" charset="UTF-8"></script>
+		<script src="js/mui.min.js" type="text/javascript" charset="UTF-8"></script>
+		<script src="js/routes.js" type="text/javascript" charset="utf-8"></script>
+		<script src="js/app.js" type="text/javascript" charset="UTF-8"></script>
+		<script src="js/hzc.rpc.js" type="text/javascript" charset="utf-8"></script>
+		<script type="text/javascript" charset="UTF-8">
+			(function($, doc) {
+				$.init();
+				$.plusReady(function() {
+					var regButton = doc.getElementById('reg');
+					var accountBox = doc.getElementById('account');
+					var passwordBox = doc.getElementById('password');
+					var passwordConfirmBox = doc.getElementById('password_confirm');
+					regButton.addEventListener('tap', function(event) {
+						if (!toastNetworkInfo('当前网络不可用')) return;
+						var account = hzcTrim(accountBox.value);
+						var password = hzcTrim(passwordBox.value);
+						var passwordConfirm = hzcTrim(passwordConfirmBox.value);
+						if (passwordConfirm != password) {
+							plus.nativeUI.toast('密码两次输入不一致');
+							return;
+						}
+						if (account == '' || password == '' || passwordConfirm == '') {
+							$.toast('请填写账号密码');
+							return;
+						}
+						register(account, password, function(data) {
+							if (data.rs) {
+								saveUserId(data.ms);
+								$.toast('注册成功');
+								$.openWindow({
+									url: 'login.html',
+									id: 'login',
+									show: {
+										aniShow: 'pop-in'
+									}
+								});
+							} else {
+								$.toast(data.ms);
+								return;
+							}
+						})
+					});
+				});
+			}(mui, document));
+		</script>
+	</body>
+
+</html>

+ 156 - 0
tab-webview-main.html

@@ -0,0 +1,156 @@
+<!DOCTYPE html>
+<html>
+
+	<head>
+		<meta charset="utf-8">
+		<title></title>
+		<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
+		<meta name="apple-mobile-web-app-capable" content="yes">
+		<meta name="apple-mobile-web-app-status-bar-style" content="black">
+
+		<link rel="stylesheet" href="css/mui.min.css">
+		<style>
+			html,
+			body {
+				background-color: #efeff4;
+			}
+		</style>
+	</head>
+
+	<body>
+		<header class="mui-bar mui-bar-nav">
+			<a id="search-id" class="mui-icon mui-icon-search mui-pull-right" style="display: none;"></a>
+			<h1 id="title" class="mui-title"></h1>
+		</header>
+		<nav class="mui-bar mui-bar-tab">
+			<a id="defaultTab" class="mui-tab-item mui-active" href="tab-webview-subpage-first.html">
+				<span class="mui-icon mui-icon-contact" style="font-weight: bolder"></span>
+				<!--<span class="mui-icon iconfont icon-dianzishu"></span>-->
+				<span class="mui-tab-label" style="font-weight: bolder">书&nbsp;&nbsp;&nbsp;&nbsp;吧</span>
+			</a>
+			<a search="true" class="mui-tab-item" href="tab-webview-subpage-second.html">
+				<span class="mui-icon mui-icon-email" style="font-weight: bolder"></span>
+				<span class="mui-tab-label" style="font-weight: bolder">书&nbsp;&nbsp;&nbsp;&nbsp;架</span>
+			</a>
+			<a class="mui-tab-item" href="tab-webview-subpage-third.html">
+				<span class="mui-icon mui-icon-gear" style="font-weight: bolder"></span>
+				<span class="mui-tab-label" style="font-weight: bolder">设&nbsp;&nbsp;&nbsp;&nbsp;置</span>
+			</a>
+		</nav>
+
+		<!--
+        	作者:HZC
+        	时间:2015-09-04
+        	描述:主页
+        -->
+		<script src="js/mui.min.js" type="text/javascript" charset="UTF-8"></script>
+		<script src="js/app.js" type="text/javascript" charset="utf-8"></script>
+		<script src="js/db/service.js" type="text/javascript" charset="utf-8"></script>
+		<script type="text/javascript" charset="utf-8">
+			 //mui初始化
+			mui.init();
+			var subpages = ['tab-webview-subpage-first.html', 'tab-webview-subpage-second.html', 'tab-webview-subpage-third.html'];
+			var subpage_style = {
+				top: '46px',
+				bottom: '50px'
+			};
+			var aniShow = {};
+			mui.plusReady(function() {
+				plus.screen.lockOrientation("portrait");
+				//当前激活选项
+				window.activeTab = subpages[0];
+				window.title = document.getElementById("title");
+				tapBar();
+				myInit();
+				doSearch();
+			});
+			
+				/**
+				 * 初始化
+				 * 创建子页面,首个选项卡页面显示,其它均隐藏;
+				 */
+
+			function myInit() {
+					//模拟首页点击
+					var defaultTab = document.getElementById("defaultTab");
+					mui.trigger(defaultTab, 'tap');
+					var self = plus.webview.currentWebview();
+					for (var i = 0; i < 3; i++) {
+						var temp = {};
+						var sub = plus.webview.create(subpages[i], subpages[i], subpage_style);
+						if (i > 0) {
+							sub.hide();
+						} else {
+							temp[subpages[i]] = "true";
+							mui.extend(aniShow, temp);
+						}
+						self.append(sub);
+					}
+				}
+				/**
+				 * 选项卡点击事件
+				 */
+
+			function tapBar() {
+					mui('.mui-bar-tab').on('tap', 'a', function(e) {
+						var targetTab = this.getAttribute('href');
+						//更换标题
+						window.title.innerHTML = this.querySelector('.mui-tab-label').innerHTML;;
+						if (targetTab == window.activeTab) {
+							return;
+						}
+						if (this.getAttribute('search') == 'true') {
+							document.getElementById("search-id").style.display = 'block';
+						} else {
+							document.getElementById("search-id").style.display = 'none';
+						}
+						//显示目标选项卡
+						if (mui.os.ios /*|| aniShow[targetTab]*/) {
+							plus.webview.show(targetTab);
+						} else {
+							var temp = {};
+							temp[targetTab] = "true";
+							mui.extend(aniShow, temp);
+							plus.webview.show(targetTab, "fade-in", 300);
+						}
+						//隐藏当前;
+						plus.webview.hide(window.activeTab);
+						//更改当前活跃的选项卡
+						window.activeTab = targetTab;
+					});
+				}
+				/**
+				 * 点击搜索
+				 */
+
+			function doSearch() {
+					document.getElementById("search-id").addEventListener('tap', function() {
+						if (toastNetworkInfo('当前网络不可用')) {
+							mui.openWindow({
+								id: 'search-id',
+								url: 'app/search.html',
+								show: {
+									duration: 200
+								}
+							});
+						}
+					});
+				}
+				//退出
+			var backButtonPress = 0;
+			mui.back = function(event) {
+				backButtonPress++;
+				if (backButtonPress > 1) {
+					plus.runtime.quit();
+				} else {
+					plus.nativeUI.toast('再按一次退出应用');
+				}
+				setTimeout(function() {
+					backButtonPress = 0;
+				}, 1000);
+				return false;
+			};
+		</script>
+	</body>
+
+</html>

+ 158 - 0
tab-webview-subpage-first.html

@@ -0,0 +1,158 @@
+<!DOCTYPE html>
+<html>
+
+	<head>
+		<meta charset="utf-8">
+		<title>书吧</title>
+		<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
+		<meta name="apple-mobile-web-app-capable" content="yes">
+		<meta name="apple-mobile-web-app-status-bar-style" content="black">
+		<link rel="stylesheet" href="css/mui.min.css">
+		<style>
+			html,
+			body {
+				background-color: #efeff4;
+			}
+		</style>
+	</head>
+
+	<body>
+		<div id="pullrefresh" class="mui-content mui-scroll-wrapper">
+			<div class="mui-scroll" style="margin-top: 15px;">
+				<ul id="books-id" class="mui-table-view mui-table-view-chevron">
+					<li id="loading-id" class="mui-table-view-cell mui-media">
+						<div style="text-align: center;margin-right: -60px;">加载中...</div>
+					</li>
+				</ul>
+			</div>
+		</div>
+		<script id="book-temp-id" type="text/html">
+			<!--<li class="mui-table-view-cell mui-media">-->
+			<a data-id='{id}' data-is-dowanload='{isDownload}' download-start='false' data-html-name='{htmlName}'>
+				<img id="img-{id}" class="mui-media-object mui-pull-left">
+				<div class="mui-media-body">
+					{name}
+					<p class='mui-ellipsis'>{desc}</p>
+				</div>
+			</a>
+			<!--</li>-->
+		</script>
+		<!--
+        	作者:HZC
+        	时间:2015-09-04
+        	描述:首页书吧
+        -->
+		<script type="text/javascript" src="js/jquery.min.js" type="text/javascript" charset="UTF-8"></script>
+		<script type="text/javascript" src="http://182.92.109.194:8080/rpc/helper.js" type="text/javascript" charset="UTF-8"></script>
+		<script src="js/mui.min.js" type="text/javascript" charset="utf-8"></script>
+		<script src="js/routes.js" type="text/javascript" charset="utf-8"></script>
+		<script src="js/app.js" type="text/javascript" charset="utf-8"></script>
+		<script src="js/db/service.js" type="text/javascript" charset="utf-8"></script>
+		<script src="js/hzc.rpc.js" type="text/javascript" charset="utf-8"></script>
+		<script type="text/javascript" charset="UTF-8">
+			mui.init({
+				swipeBack: false,
+				pullRefresh: {
+					container: '#pullrefresh',
+					up: {
+						contentrefresh: '正在加载...',
+						callback: pullupRefresh
+					}
+				}
+			});
+			mui.plusReady(function() {
+				plus.screen.lockOrientation("portrait");
+				loadBooks(1);
+				openBook();
+				saveBookIds();
+			})
+			 window.count = 0;
+			 //分页查询我的book
+			window.start = 0;
+			/**
+			 * 上拉加载具体业务实现
+			 */
+			function pullupRefresh() {
+					setTimeout(function() {
+						mui('#pullrefresh').pullRefresh().endPullupToRefresh((++window.count > 50)); //参数为true代表没有更多数据了。
+						loadBooks(2);
+					}, 1000);
+				}
+				/**
+				 * 加载图书
+				 * @param {Object} source:来源:1,初始化,2,上拉刷新
+				 */
+
+			function loadBooks(source) {
+					getMyBooks(window.start, function(data) {
+//						console.log(data.length)
+						toastNetworkInfo('当前网络不可用');
+						if (data.length < 1) {
+							mui('#pullrefresh').pullRefresh().endPullupToRefresh(true);
+							if (source == 1) {
+								$id('books-id').innerHTML = '<li class="mui-table-view-cell mui-media"><div style="text-align: center;margin-right: -60px;">没有相关图书</div></li>';
+							} else {
+								mui.toast('没有更多数据了');
+							}
+							return;
+						}
+						window.start += 5;
+						var tempHtml = $id('book-temp-id').innerHTML;
+						$id('loading-id').style.display = 'none';
+						if (toastNetworkInfo('当前网络不可用')) {
+							listDelPdfId(function(delData) {
+								var delDataStr = delData.toString();
+//								console.log(delDataStr)
+								for (var i = 0; i < data.length; i++) {
+									var book = data[i];
+									if (delDataStr && !delDataStr.indexOf(book.id)>0) {
+										updateBookStatus(book.id, '0',function(){});
+										continue;
+									}
+									var li = document.createElement('li');
+									li.className = 'mui-table-view-cell mui-media';
+									li.innerHTML = render(tempHtml, book);
+									$id('books-id').appendChild(li);
+									book.imgPath = Routes.urls.book.bookUrl + book.imgPath;
+									setImg('img-' + book.id, book.imgPath);
+								}
+							});
+						}else{
+							for (var i = 0; i < data.length; i++) {
+									var book = data[i];
+									var li = document.createElement('li');
+									li.className = 'mui-table-view-cell mui-media';
+									li.innerHTML = render(tempHtml, book);
+									$id('books-id').appendChild(li);
+									book.imgPath = Routes.urls.book.bookUrl + book.imgPath;
+									setImg('img-' + book.id, book.imgPath);
+								}
+						}
+					});
+				}
+				/**
+				 * 打开书
+				 */
+
+			function openBook() {
+				mui('#books-id').on('tap', 'a', function() {
+					var self = this;
+					var htmlName = self.getAttribute('data-html-name');
+					var bookPath = DOWNLOADPATH + htmlName;
+					var absoluteBookPath = convertToAbsoluteURL(bookPath);
+					mui.openWindow({
+						id: 'book-id',
+						url: 'app/book.html',
+						extras: {
+							href: absoluteBookPath
+						},
+						show: {
+							duration: 200
+						}
+					})
+				});
+			}
+		</script>
+	</body>
+
+</html>

+ 143 - 0
tab-webview-subpage-second.html

@@ -0,0 +1,143 @@
+<!DOCTYPE html>
+<html>
+
+	<head>
+		<meta charset="utf-8">
+		<title>书架</title>
+		<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
+		<meta name="apple-mobile-web-app-capable" content="yes">
+		<meta name="apple-mobile-web-app-status-bar-style" content="black">
+
+		<!--标准mui.css-->
+		<link rel="stylesheet" href="css/mui.min.css">
+		<style>
+			body {
+				background-color: #efeff4;
+			}
+			h5 {
+				padding-top: 8px;
+				padding-bottom: 8px;
+				text-indent: 12px;
+			}
+			.mui-table-view.mui-grid-view .mui-table-view-cell .mui-media-body {
+				font-size: 15px;
+				margin-top: 8px;
+				color: #333;
+			}
+			.my-mui-media-body {
+				height: 30px !important;
+				font-size: 18px !important;
+				line-height: 30px !important;
+			}
+			.mui-media-object {
+				width: 80% !important;
+			}
+			.mui-table-view-cell {
+				height: 160px !important;
+			}
+		</style>
+	</head>
+
+	<body>
+		<div class="mui-content">
+			<ul id="book-list-id" class="mui-table-view mui-grid-view  mui-grid-9">
+				<li class="mui-table-view-cell mui-media mui-col-xs-6">
+					<a href="javascript:void(0)" data-title='铁人精神' data-id='1'>
+						<img class="mui-media-object" src="images/index/tierenjingshen.png">
+						<div class="mui-media-body my-mui-media-body">铁人精神</div>
+					</a>
+				</li>
+				<li class="mui-table-view-cell mui-media mui-col-xs-6">
+					<a href="javascript:void(0)" data-title='国学' data-id='2'>
+						<img class="mui-media-object" src="images/index/guoxue.png">
+						<div class="mui-media-body my-mui-media-body">国学</div>
+					</a>
+				</li>
+				<li class="mui-table-view-cell mui-media mui-col-xs-6">
+					<a href="javascript:void(0)" data-title='励志' data-id='3'>
+						<img class="mui-media-object" src="images/index/lizhi.png">
+						<div class="mui-media-body my-mui-media-body">励志</div>
+					</a>
+				</li>
+				<li class="mui-table-view-cell mui-media mui-col-xs-6">
+					<a href="javascript:void(0)" data-title='企业管理' data-id='4'>
+						<img class="mui-media-object" src="images/index/qiyeguanli.png">
+						<div class="mui-media-body my-mui-media-body">企业管理</div>
+					</a>
+				</li>
+			</ul>
+			<!--<ul class="mui-table-view mui-grid-view mui-grid-9">
+				<li class="mui-table-view-cell mui-media mui-col-xs-6 mui-col-sm-6">
+					<a href="#">
+						<span class="mui-icon mui-icon-home"></span>
+						<div class="mui-media-body">铁人精神</div>
+					</a>
+				</li>
+				<li class="mui-table-view-cell mui-media mui-col-xs-6 mui-col-sm-6">
+					<a href="#">
+						<span class="mui-icon mui-icon-email"><span class="mui-badge">5</span></span>
+						<div class="mui-media-body">国学</div>
+					</a>
+				</li>
+				<li class="mui-table-view-cell mui-media mui-col-xs-6 mui-col-sm-6">
+					<a href="#">
+						<span class="mui-icon mui-icon-chatbubble"></span>
+						<div class="mui-media-body">励志</div>
+					</a>
+				</li>
+				<li class="mui-table-view-cell mui-media mui-col-xs-6 mui-col-sm-6">
+					<a href="#">
+						<span class="mui-icon mui-icon-location"></span>
+						<div class="mui-media-body">企业管理</div>
+					</a>
+				</li>
+			</ul>-->
+		</div>
+
+		<!--
+        	作者:HZC
+        	时间:2015-08-26
+        	描述:主页(图书分类)
+        -->
+		<script src="js/mui.min.js" type="text/javascript" charset="utf-8"></script>
+		<script src="js/app.js" type="text/javascript" charset="utf-8"></script>
+		<script type="text/javascript">
+			mui.init();
+			mui.plusReady(function() {
+				plus.screen.lockOrientation("portrait");
+				openList();
+			});
+			/**
+			 * 打开图书列表
+			 */
+			function openList() {
+				mui('#book-list-id').on('tap', 'a', function() {
+					var title = this.getAttribute('data-title');
+					var categoryId = this.getAttribute('data-id');
+					if (toastNetworkInfo('当前网络不可用')) {
+						var oldWin = plus.webview.getWebviewById('book-list-id-' + categoryId);
+						if (oldWin) {
+							oldWin.show();
+							//							plus.webview.getWebviewById('tab-webview-main-id').reload();
+							return;
+						}
+						mui.openWindow({
+							id: 'book-list-id-' + categoryId,
+							url: 'app/book-list.html',
+							extras: {
+								title: title,
+								categoryId: categoryId
+							},
+							show: {
+								duration: 350
+							}
+						});
+						//						plus.webview.getWebviewById('tab-webview-main-id').reload();
+					}
+				});
+			}
+		</script>
+
+	</body>
+
+</html>

+ 146 - 0
tab-webview-subpage-third.html

@@ -0,0 +1,146 @@
+<!DOCTYPE html>
+<html>
+
+	<head>
+		<meta charset="utf-8">
+		<title>设置</title>
+		<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
+		<meta name="apple-mobile-web-app-capable" content="yes">
+		<meta name="apple-mobile-web-app-status-bar-style" content="black">
+
+		<link rel="stylesheet" href="css/mui.min.css">
+		<style>
+			html,
+			body {
+				background-color: #efeff4;
+			}
+			.title {
+				margin: 20px 15px 10px;
+				color: #6d6d72;
+				font-size: 15px;
+			}
+		</style>
+	</head>
+
+	<body>
+		<!--<header class="mui-bar mui-bar-nav">
+			<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
+			<h1 class="mui-title">设置</h1>
+		</header>-->
+		<div class="mui-content" id="all-menu-id">
+			<div class="title">
+			</div>
+			<div class="mui-scroll-wrapper">
+				<div class="mui-scroll">
+					<ul class="mui-table-view" style="margin-top: 20px;">
+						<li class="mui-table-view-cell">
+							<a id="tel" class="mui-navigate-right">
+									客服电话
+								</a>
+						</li>
+						<li class="mui-table-view-cell">
+							<a id="feedback-btn" data-href="app/feedback.html" class="mui-navigate-right">
+									问题反馈
+								</a>
+						</li>
+					</ul>
+					<ul class="mui-table-view" style="margin-top: 20px;">
+						<li class="mui-table-view-cell">
+							<a id="update" class="mui-navigate-right">检查更新</a>
+						</li>
+					</ul>
+					<ul class="mui-table-view" style="margin-top: 25px;">
+						<li class="mui-table-view-cell">
+							<a onclick="logout()" data-href="logout" style="text-align: center;color: #FF3B30;">
+								退出登录
+							</a>
+						</li>
+					</ul>
+				</div>
+			</div>
+		</div>
+	</body>
+
+	<!--
+    	作者:HZC
+    	时间:2015-09-04
+    	描述:首页设置
+    -->
+	<script src="js/mui.min.js"></script>
+	<script src="js/app.js" type="text/javascript" charset="utf-8"></script>
+	<script src="js/update.js" type="text/javascript" charset="utf-8"></script>
+	<script>
+		mui.init({
+			swipeBack: true //启用右滑关闭功能
+		});
+		mui.plusReady(function() {
+			plus.screen.lockOrientation("portrait");
+			var self = plus.webview.currentWebview();
+			callPhone();
+			checkUpdate();
+			feedback();
+		});
+		 //客服电话
+		function callPhone() {
+			document.getElementById("tel").addEventListener('tap', function() {
+				plus.device.dial("114");
+			});
+		}
+
+		function feedback() {
+				document.getElementById("feedback-btn").addEventListener('tap', function() {
+					mui.openWindow({
+						id: 'feedback-id',
+						url: this.getAttribute('data-href'),
+						show: {
+							duration: 200
+						}
+					})
+				})
+			}
+			//检查更新
+
+		function checkUpdate() {
+			document.getElementById("update").addEventListener('tap', function() {
+				//				var server = "http://www.dcloud.io/check/update"; //获取升级描述文件服务器地址
+				//				mui.getJSON(server, {
+				//					"appid": plus.runtime.appid,
+				//					"version": plus.runtime.version,
+				//					"imei": plus.device.imei
+				//				}, function(data) {
+				//					//				if (data.status) {
+				//					//					plus.ui.confirm(data.note, function(i) {
+				//					//						if (0 == i) {
+				//					//							plus.runtime.openURL(data.url);
+				//					//						}
+				//					//					}, data.title, ["立即更新", "取  消"]);
+				//					//				} else {
+				//					mui.toast('已是最新版本~')
+				//						//				}
+				//				});
+				update("inner");
+			});
+		}
+		/**
+			 * 退出
+			 */
+
+		function logout() {
+			var btnArray = ['是', '否'];
+			mui.confirm('确定要退出登录吗?', '', btnArray, function(e) {
+				if (e.index == 0) {
+					setLoginStatus('false');
+					mui.openWindow({
+						id: 'login-id',
+						url: 'login.html',
+						show: {
+							duration: 200
+						}
+					});
+					plus.webview.getWebviewById('tab-webview-main-id').close()
+				}
+			});
+		}
+	</script>
+
+</html>

+ 2 - 0
unpackage/.gitignore

@@ -0,0 +1,2 @@
+/res
+/release

BIN
unpackage/source/1080-1882.png


BIN
unpackage/source/1080-1882.psd


BIN
unpackage/source/144.psd


BIN
unpackage/source/240-282.png


BIN
unpackage/source/240-282.psd


BIN
unpackage/source/320-442.png


BIN
unpackage/source/320-442.psd


BIN
unpackage/source/480-762.png


BIN
unpackage/source/480-762.psd


BIN
unpackage/source/720-1242.png


BIN
unpackage/source/720-1242.psd


BIN
unpackage/source/guide.psd


BIN
unpackage/source/guide1.png


BIN
unpackage/source/guide2.png


BIN
unpackage/source/guide3.png


BIN
unpackage/source/tubiao.psd


Some files were not shown because too many files changed in this diff