diff --git a/apidoc.html b/apidoc.html new file mode 100644 index 0000000..112ff87 --- /dev/null +++ b/apidoc.html @@ -0,0 +1,110 @@ + + + + 接口文档(apidoc生成) + + + + + + + + + diff --git a/apidoc.json b/apidoc.json new file mode 100644 index 0000000..af42043 --- /dev/null +++ b/apidoc.json @@ -0,0 +1,552 @@ +{ + "servers": [ + { + "address": "0.0.0.0:80", + "servlets": [ + { + "urlregs": [ + "/meta/*" + ], + "moduleid": 0, + "name": "", + "comment": "元数据服务", + "mappings": [ + { + "url": "/meta/db_plat_list", + "auth": true, + "actionid": 0, + "comment": "数据平台", + "params": [], + "results": [], + "result": "java.util.List" + }, + { + "url": "/meta/exportsort", + "auth": true, + "actionid": 0, + "comment": "导出字段排序保存", + "params": [ + { + "name": "serviceKey", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "items", + "radix": 10, + "type": "java.util.List", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "platToken", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + } + ], + "results": [], + "result": "java.util.List" + }, + { + "url": "/meta/filter_update", + "auth": true, + "actionid": 0, + "comment": "查询配置修改", + "params": [ + { + "name": "serviceKey", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "filters", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "platToken", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + } + ], + "results": [], + "result": "net.tccn.base.JBean" + }, + { + "url": "/meta/findMetaTable", + "auth": true, + "actionid": 0, + "comment": "", + "params": [ + { + "name": "name", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "token", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + } + ], + "results": [], + "result": "net.tccn.meta.MetaTable" + }, + { + "url": "/meta/importsort", + "auth": true, + "actionid": 0, + "comment": "导入字段保存", + "params": [ + { + "name": "serviceKey", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "items", + "radix": 10, + "type": "java.util.List", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "platToken", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + } + ], + "results": [], + "result": "java.util.List" + }, + { + "url": "/meta/itemsort", + "auth": true, + "actionid": 0, + "comment": "字段排序", + "params": [ + { + "name": "serviceKey", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "items", + "radix": 10, + "type": "java.lang.String[]", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "platToken", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + } + ], + "results": [], + "result": "[Ljava.lang.String;" + }, + { + "url": "/meta/itemupdate", + "auth": true, + "actionid": 0, + "comment": "字段修改", + "params": [ + { + "name": "serviceKey", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "items", + "radix": 10, + "type": "java.util.List", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "platToken", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + } + ], + "results": [], + "result": "java.util.List" + }, + { + "url": "/meta/listcfg", + "auth": false, + "actionid": 0, + "comment": "内容列表配置", + "params": [ + { + "name": "key", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "platToken", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + } + ], + "results": [], + "result": "net.tccn.base.JBean" + }, + { + "url": "/meta/showsort", + "auth": true, + "actionid": 0, + "comment": "展示字段修改", + "params": [ + { + "name": "serviceKey", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "items", + "radix": 10, + "type": "java.util.List", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "platToken", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + } + ], + "results": [], + "result": "java.util.List" + }, + { + "url": "/meta/tableinfo", + "auth": true, + "actionid": 0, + "comment": "table详情", + "params": [ + { + "name": "platToken", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "name", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + } + ], + "results": [], + "result": "net.tccn.base.JBean" + }, + { + "url": "/meta/tablelist", + "auth": true, + "actionid": 0, + "comment": "table列表", + "params": [ + { + "name": "platToken", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "catalog", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "dbPlatId", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "name", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + } + ], + "results": [], + "result": "net.tccn.base.JBean" + } + ] + }, + { + "urlregs": [ + "/qtask/test", + "/qtask/call", + "/qtask/getSysPlat", + "/qtask/qsave" + ], + "moduleid": 0, + "name": "", + "comment": "qtask查询服务", + "mappings": [ + { + "url": "/qtask/call", + "auth": true, + "actionid": 0, + "comment": "qtask查询", + "params": [ + { + "name": "queryId", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "para", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "platToken", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + } + ], + "results": [], + "result": "net.tccn.base.JBean" + }, + { + "url": "/qtask/getSysPlat", + "auth": true, + "actionid": 0, + "comment": "", + "params": [ + { + "name": "token", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + } + ], + "results": [], + "result": "net.tccn.dbq.qtask.SysPlat" + }, + { + "url": "/qtask/qsave", + "auth": true, + "actionid": 0, + "comment": "qtask保存", + "params": [ + { + "name": "qtask", + "radix": 10, + "type": "net.tccn.dbq.qtask.Qtask", + "src": "PARAMETER", + "comment": "", + "required": true + } + ], + "results": [], + "result": "net.tccn.base.JBean" + }, + { + "url": "/qtask/test", + "auth": true, + "actionid": 0, + "comment": "qtask调试", + "params": [ + { + "name": "qtask", + "radix": 10, + "type": "net.tccn.dbq.qtask.Qtask", + "src": "PARAMETER", + "comment": "", + "required": true + } + ], + "results": [], + "result": "net.tccn.base.JBean" + } + ] + } + ] + } + ], + "types": { + "net.tccn.dbq.qtask.Qtask": { + "queryId": { + "type": "java.lang.String", + "primary": false, + "updatable": true + }, + "name": { + "type": "java.lang.String", + "primary": false, + "updatable": true + }, + "remark": { + "type": "java.lang.String", + "primary": false, + "updatable": true + }, + "sql": { + "type": "java.lang.String", + "primary": false, + "updatable": true + }, + "para": { + "type": "java.lang.String", + "primary": false, + "updatable": true + }, + "cate": { + "type": "java.lang.String", + "primary": false, + "updatable": true + }, + "sysPlatId": { + "type": "java.lang.Integer", + "primary": false, + "updatable": true + }, + "platId": { + "type": "java.lang.Integer", + "primary": false, + "updatable": true + }, + "catalog": { + "type": "java.lang.String", + "primary": false, + "updatable": true + }, + "status": { + "type": "java.lang.Integer", + "primary": false, + "updatable": true + }, + "attr": { + "type": "java.util.HashMap", + "primary": false, + "updatable": true + }, + "_id": { + "type": "java.lang.String", + "primary": false, + "updatable": true + }, + "_key": { + "type": "java.lang.String", + "primary": false, + "updatable": true + }, + "_shows": { + "type": "java.util.Set", + "primary": false, + "updatable": true + }, + "_order": { + "type": "java.util.Map", + "primary": false, + "updatable": true + }, + "fieldName": { + "type": "java.util.function.Function", + "primary": false, + "updatable": true + }, + "arangoSource": { + "type": "net.tccn.base.arango.ArangoSource", + "primary": false, + "updatable": true + }, + "db": { + "type": "com.arangodb.ArangoDatabase", + "primary": false, + "updatable": true + }, + "collection": { + "type": "com.arangodb.ArangoCollection", + "primary": false, + "updatable": true + } + } + } +} \ No newline at end of file diff --git a/conf/application.xml b/conf/application.xml new file mode 100644 index 0000000..c17c399 --- /dev/null +++ b/conf/application.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/config.txt b/conf/config.txt new file mode 100644 index 0000000..642aed2 --- /dev/null +++ b/conf/config.txt @@ -0,0 +1,26 @@ +#--------------- FTP -------------- +ftp.host=192.168.202.11 +ftp.port=21 +ftp.user=ftptest +ftp.passwd=123 +ftp.verdict.url_file_path=verdict_url +ftp.verdict.app_file_path=verdict_app + +#apk文件存放目录 /home/ftptest/apk +ftp.verdict.apk_dir=C:\\Users\\eversec\\Documents\\WXWork\\1688854143550524\\Cache\\File\\2018-12\\02 + +#--------------- xml-rpc、kafak -------------- +rpc.url=http://192.168.205.147:8888 + +kafak.servers=192.168.202.11:9092 +#app研判发送地址 +kafak.topic.app_verdict=static_task_virus_topic +#app研判结果监听 +kafak.topic.app_verdict_result=static_task_virus_result_topic + +#--------------- arango -------------- +arango.host=120.24.230.60 +arango.port=8529 +arango.user=root +arango.passwd=abc123 +arango.database=db_dev diff --git a/conf/logging.properties b/conf/logging.properties new file mode 100644 index 0000000..caf8540 --- /dev/null +++ b/conf/logging.properties @@ -0,0 +1,24 @@ + +#FileHandler/ConsoleHandler +handlers = java.util.logging.ConsoleHandler + +############################################################ +.level = FINER + +java.level = INFO +javax.level = INFO +com.sun.level = INFO +sun.level = INFO +jdk.level = INFO + + +java.util.logging.FileHandler.level = FINER +#10M +java.util.logging.FileHandler.limit = 10485760 +java.util.logging.FileHandler.count = 10000 +java.util.logging.FileHandler.encoding = UTF-8 +java.util.logging.FileHandler.pattern = ${APP_HOME}/logs-%m/log-%d.log +java.util.logging.FileHandler.unusual = ${APP_HOME}/logs-%m/log-warnerr-%u.log +java.util.logging.FileHandler.append = true + +java.util.logging.ConsoleHandler.level = FINER diff --git a/conf/persistence.xml b/conf/persistence.xml new file mode 100644 index 0000000..749e535 --- /dev/null +++ b/conf/persistence.xml @@ -0,0 +1,14 @@ + + + + + ALL + + + + + + + + diff --git a/pom.xml b/pom.xml index 359f577..14e52c6 100644 --- a/pom.xml +++ b/pom.xml @@ -7,13 +7,33 @@ net.tccn meta-kit 1.0 - pom + jar - qtask + + + + org.redkale + redkale + 1.9.9 + + + + + com.arangodb + arangodb-java-driver + 5.0.1 + + + + com.google.code.gson + gson + 2.8.4 + + junit junit @@ -31,6 +51,32 @@ 8 + + + + org.apache.maven.plugins + maven-dependency-plugin + + + copy-artifact + package + + copy + + + + + ${project.groupId} + ${project.artifactId} + ${project.version} + ${project.packaging} + + + lib + + + + diff --git a/qtask/.gitignore b/qtask/.gitignore deleted file mode 100644 index 9b1ddc0..0000000 --- a/qtask/.gitignore +++ /dev/null @@ -1,12 +0,0 @@ -/target/ -.project -.classpath -/.settings/ -/.externalToolBuilders/ -/bin/ -*.iml -.idea/ -/.idea/ -/out/ -/tmp/ -/libs/ \ No newline at end of file diff --git a/qtask/pom.xml b/qtask/pom.xml deleted file mode 100644 index 9277f21..0000000 --- a/qtask/pom.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - 4.0.0 - - net.tccn - meta-kit - 1.0 - - - net.tccn - qtask - 1.0 - - - - - junit - junit - RELEASE - test - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - 8 - 8 - - - - - - - \ No newline at end of file diff --git a/qtask/src/main/java/net/tccn/base/Kv.java b/qtask/src/main/java/net/tccn/base/Kv.java deleted file mode 100644 index 757e036..0000000 --- a/qtask/src/main/java/net/tccn/base/Kv.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.tccn.base; - -import java.util.LinkedHashMap; - -/** - * Created by liangxianyou@eversec.cn at 2018/3/12 14:17. - */ -public class Kv extends LinkedHashMap { - public static Kv of(){ - return new Kv(); - } - - public static Kv of(Object k, Object v){ - return new Kv().set(k,v); - } - - public Kv set(K k, V v){ - put(k, v); - return this; - } -} \ No newline at end of file diff --git a/qtask/src/main/java/net/tccn/qtask/QTaskEs.java b/qtask/src/main/java/net/tccn/qtask/QTaskEs.java deleted file mode 100644 index 1f4f3f2..0000000 --- a/qtask/src/main/java/net/tccn/qtask/QTaskEs.java +++ /dev/null @@ -1,16 +0,0 @@ -package net.tccn.qtask; - -import net.tccn.E; - -public class QTaskEs extends QTaskAbs { - - public QTaskEs(E e) { - super(e); - } - - @Override - public Object execute() { - //find result by es api todo: - return null; - } -} diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..3f57fe8 --- /dev/null +++ b/readme.md @@ -0,0 +1,8 @@ +MetaData +-- +1、元数据管理、Db组件、界面展示 +--------------------------- +2、Excel操作、Mysql操作、ES操作、 +--------------------------- +3、 +--------------------------- \ No newline at end of file diff --git a/root/ddl_export.html b/root/ddl_export.html new file mode 100644 index 0000000..565d877 --- /dev/null +++ b/root/ddl_export.html @@ -0,0 +1,167 @@ + + + + + + + MySql数据库表结构导出 + + + + + + + + +
+ +
+

导出数据库表结构(导出后使用wps打开)

+
+
+ + + + +
+ +
+ + + + +
+ +
+ + + + +
+ +
+ + + + +
+ +
+
+ +
+
+ +
+
+ + +
+
+ +
+

最近使用记录 共 {{logs.total}} 条记录

+ + + + + + + + + + + + + + + +
IP时间导出数据类型
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/root/favicon.ico b/root/favicon.ico new file mode 100644 index 0000000..93564d3 Binary files /dev/null and b/root/favicon.ico differ diff --git a/root/index.html b/root/index.html new file mode 100644 index 0000000..4bb545e --- /dev/null +++ b/root/index.html @@ -0,0 +1,164 @@ + + + + + MetaKit + + + + + + +
+ +
+ +
+ +
+
+ +
+
+ + +
+
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/root/list.html b/root/list.html new file mode 100644 index 0000000..c95769e --- /dev/null +++ b/root/list.html @@ -0,0 +1,321 @@ + + + + + 高级查询 + + + + + + + +
+

高级查询 - [测试用例]

+
+
+ +
+
+
+ + + + + + + + + + + + +
+
+ +
+
+ {{x.label}} + + + + +
+ +
+
+ + + + + + + + + + + + +
+ +
+
+ +
+ + +
+ + + + + + + + + \ No newline at end of file diff --git a/root/meta.html b/root/meta.html new file mode 100644 index 0000000..4a2919e --- /dev/null +++ b/root/meta.html @@ -0,0 +1,511 @@ + + + + + Title + + + + + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名中文名数据类型输入类型附加属性备注
+ + + + + + +
+
+ +
+ + + + + + + + + + + + + + + + + +
字段名中文名展示名
+
+
+
+
+ 列表展示的属性 +
+
+ + + + + + + + + + + + + + + +
字段名中文名支持排序
+ + {{getFieldLabel(item)}}
+
+
+
+ + +
+
+
+ 导出的属性配置 +
+
+ + + + + + + + + + + + + + + +
字段名中文名
+ + {{getFieldLabel(item)}}
+
+
+
+ + +
+
+
+ 导入的属性配置 +
+
+ + + + + + + + + + + + + + + +
字段名中文名
+ + {{getFieldLabel(item)}}
+
+
+
+ + +
+ + +
+
+ 高级查询的属性配置 +
+
+ + + + + + + + + + + + + + + +
字段名中文名支持查询类型
+ + {{getFieldLabel(item.name)}} + +
+
+
+
+ +
+ + +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/root/metadata/dataList.html b/root/metadata/dataList.html new file mode 100644 index 0000000..1612681 --- /dev/null +++ b/root/metadata/dataList.html @@ -0,0 +1,262 @@ + + + + +

高级查询 - [测试用例]

+
+ +
+
+
+ + + + + + + + + + + + +
+
+ +
+
+
+ {{x.label}} + + + + + + + +
+
+
+ +
+ + + + + + + + + + + +
+ +
+
+ +
+ + \ No newline at end of file diff --git a/root/metadata/metaLinK.html b/root/metadata/metaLinK.html new file mode 100644 index 0000000..4fb5dc0 --- /dev/null +++ b/root/metadata/metaLinK.html @@ -0,0 +1,29 @@ + + + + + + \ No newline at end of file diff --git a/root/metadata/metaService.html b/root/metadata/metaService.html new file mode 100644 index 0000000..b393663 --- /dev/null +++ b/root/metadata/metaService.html @@ -0,0 +1,614 @@ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名中文名数据类型输入类型附加属性备注
+ + + + + + +
+
+ +
+ + + + + + + + + + + + + + + + + +
字段名中文名展示名
+
+
+
+
列表展示的属性
+
+ + + + + + + + + + + + + + + + + +
字段名中文名
+ + {{getFieldLabel(item)}}
+
+
+
+ + +
+
+
导出的属性配置
+
+ + + + + + + + + + + + + + + + + +
字段名中文名
+ + {{getFieldLabel(item)}}
+
+
+
+ + +
+
+
+ 导入的属性配置 +
+
+ + + + + + + + + + + + + + + + + +
字段名中文名
+ + {{getFieldLabel(item)}}
+
+
+
+ + +
+
+
查询配置
+
+ + + + + + + + + + + + + + + + + + + +
字段名中文名默认展示支持查询类型
+ + {{getFieldLabel(item.name)}} + + + +
+
+
+
+ + +
+
+
数据平台配置
+
+
+
+ +
+ + +
+
+ +
+
+
+
+
+
+ +
+ + + + + \ No newline at end of file diff --git a/root/metadata/metatable/list.html b/root/metadata/metatable/list.html new file mode 100644 index 0000000..f681639 --- /dev/null +++ b/root/metadata/metatable/list.html @@ -0,0 +1,110 @@ + + +
+

+
+
+
+ + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + +
操作
+ +
+
+ +
+ \ No newline at end of file diff --git a/root/metadata/metatable/metaTable.html b/root/metadata/metatable/metaTable.html new file mode 100644 index 0000000..25db513 --- /dev/null +++ b/root/metadata/metatable/metaTable.html @@ -0,0 +1,573 @@ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名中文名数据类型输入类型附加属性备注
+ + + + + + +
+
+ +
+ + + + + + + + + + + + + + + + + +
字段名中文名展示名
+
+
+
+
列表展示的属性
+
+ + + + + + + + + + + + + + + + + +
字段名中文名
+ + {{getFieldLabel(item)}}
+
+
+
+ + +
+
+
导出的属性配置
+
+ + + + + + + + + + + + + + + + + +
字段名中文名
+ + {{getFieldLabel(item)}}
+
+
+
+ + +
+
+
+ 导入的属性配置 +
+
+ + + + + + + + + + + + + + + + + +
字段名中文名
+ + {{getFieldLabel(item)}}
+
+
+
+ + +
+
+
查询配置
+
+ + + + + + + + + + + + + + + + + + + +
字段名中文名默认展示支持查询类型
+ + {{getFieldLabel(item.name)}} + + + +
+
+
+
+ + +
+
+
数据平台配置
+
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+
+
+
+
+ +
+ + + + \ No newline at end of file diff --git a/root/plat/db.html b/root/plat/db.html new file mode 100644 index 0000000..cb339fd --- /dev/null +++ b/root/plat/db.html @@ -0,0 +1,229 @@ + + + +
+

+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
操作
+ + 编辑 | + 启用 + 不启用 | + 删除 +
+
+ + + + +
+ + \ No newline at end of file diff --git a/root/plat/dev.html b/root/plat/dev.html new file mode 100644 index 0000000..d95a645 --- /dev/null +++ b/root/plat/dev.html @@ -0,0 +1,5 @@ + +
+ sdaf +
+
\ No newline at end of file diff --git a/root/plat/index.html b/root/plat/index.html new file mode 100644 index 0000000..d95175a --- /dev/null +++ b/root/plat/index.html @@ -0,0 +1,144 @@ + + + +
+

+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
操作
+ 编辑 | + 启用 + 不启用 | + 删除 +
+
+ + + + +
+ + \ No newline at end of file diff --git a/root/qtask/abc.html b/root/qtask/abc.html new file mode 100644 index 0000000..dc4d906 --- /dev/null +++ b/root/qtask/abc.html @@ -0,0 +1,24 @@ +
+ {{cfg.title}} + + + +
+ + \ No newline at end of file diff --git a/root/qtask/ddl.html b/root/qtask/ddl.html new file mode 100644 index 0000000..252884b --- /dev/null +++ b/root/qtask/ddl.html @@ -0,0 +1,143 @@ + + +
+

导出数据库表结构(导出后使用wps打开)

+
+
+ + + + +
+ +
+ + + + +
+ +
+ + + + +
+ +
+ + + + +
+ +
+
+ +
+
+ +
+
+ + +
+
+ +
+

最近使用记录 共 {{logs.total}} 条记录

+ + + + + + + + + + + + + + + + + + + + + + + +
IP最后时间最后导出数据类型导出总次数
合计总人数{{logs.userTotal}}合计总次数{{logs.total}}
+
+ +
+ \ No newline at end of file diff --git a/root/qtask/debug.html b/root/qtask/debug.html new file mode 100644 index 0000000..e9cba61 --- /dev/null +++ b/root/qtask/debug.html @@ -0,0 +1,131 @@ + +
+

QTask - [测试用例]

+
+
+
+ + 选择QTask任务 + + +
+ + + + +
+
+
查询结果:
+

+    
+
+ + \ No newline at end of file diff --git a/root/qtask/list.html b/root/qtask/list.html new file mode 100644 index 0000000..35e4f54 --- /dev/null +++ b/root/qtask/list.html @@ -0,0 +1,237 @@ + +
+

+
+ +
+ + +
+ + +
+
+
+ + + + + + + + + + + + + + + +
状态操作
+ 编辑| + 启用 + 不启用 | + 删除 +
+
+ + +
+ + + + + + + +
+
+ + \ No newline at end of file diff --git a/root/res/css/red-kit.css b/root/res/css/red-kit.css new file mode 100644 index 0000000..200be64 --- /dev/null +++ b/root/res/css/red-kit.css @@ -0,0 +1,137 @@ +body { + /*background: url("../img/bg.jpg") no-repeat;*/ +} + +/*.navbar-inverse { + background-color: #65487a; + border-color: #9361b8; +} +.navbar-inverse .navbar-nav > .active > a, .navbar-inverse .navbar-nav > .active > a:hover, .navbar-inverse .navbar-nav > .active > a:focus { + background-color: #996fb8; +}*/ + +.container-fluid { + padding-left: 0px; +} + +#home { + /*background-color: #fff;*/ + /*margin: 20px auto; + padding-bottom: 20px;*/ + /*min-height: 500px;*/ +} +#top { + background-color: #404a53; + padding: 0 10px; + margin: 0px; + height: 45px; +} +#top a { + color: #ddd; +} + +#top .nav-tabs{ + border-bottom:0; +} +.nav-tabs>li>a{ + border: 0; +} +.nav-tabs>li.active>a, .nav-tabs>li.active>a:focus, .nav-tabs>li.active>a:hover, .nav-tabs>li>a:hover { + background-color: #404a53; + color: #fff; + border: 0; + border-bottom: 2px solid #607d8b; +} + +#left { + background-color: #404a53; /*padding-bottom: 0px; margin-bottom: 0px;*/ +} +#main { + +} +#left.col-md-1 { + padding: 0 2px; + width: 10.63333333%; +} +#mainDiv .col-md-11 { + width: 89.36666667%; + /*background-color: #fff;*/ +} +#left .nav { + background-color: #404a53; +} + +#left .menu > .nav > li > .nav > li > a { + border:0; + border-bottom: 1px solid #495158; + color: #eee; +} +#left .menu > .nav > li > .nav > li>a:hover { + background-color: #404a53; + border:0; + border-bottom: 1px solid #495158; + color: #fff; +} +#left .menu > .nav > li > .nav > li.active > a:hover { + background-color: rgba(255,255,255,.2);/*#607D8B;*/ + color: #fff; +} + + +#left .menu > .nav > li > .nav > li.active a,#left .menu > .nav > li > .nav > li a:hover{ + background-color: rgba(255,255,255,.2);/*#607D8B;*/ + border-left: 2px solid #77cb99; + color: #fff; +} + +.list-head { + padding-bottom: 10px; +} + +.meta-list .col-md-5 .panel-body { + padding: 0px; +} + +table td,th{ + white-space:nowrap; + overflow:hidden; + text-overflow: ellipsis; + max-width: 200px; +} +th{ + background-color: #f1f1f1; +} + +/*ddl-page*/ +.ddl .input-group { + margin-bottom: 10px; +} + +/*.data-list 元数据测试用例页面*/ +.data-list .table > thead > tr > th.sort:after{ + display: inline-block; + margin-left: 5px; + font-family: ZenIcon; + font-size: 14px; + font-style: normal; + font-weight: normal; + font-variant: normal; + line-height: 1; + color: #808080; + text-transform: none; + content: '\e6bd'; + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.data-list .table > thead > tr > th.sort:hover{ + cursor:pointer; +} +.data-list .table > thead > tr > th.sort-up:after { + color: #145ccd; + content: '\e6b9'; +} +.data-list .table > thead > tr > th.sort-down:after { + color: #145ccd; + content: '\e6b8'; +} \ No newline at end of file diff --git a/root/res/css/zui-theme-black.css b/root/res/css/zui-theme-black.css new file mode 100644 index 0000000..9e53253 --- /dev/null +++ b/root/res/css/zui-theme-black.css @@ -0,0 +1,1310 @@ +/*! + * ZUI user custom theme for - v1.8.1 - 2018-10-12 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +a { + color: #222; +} +a:hover, +a:focus { + color: #000000; +} +.btn { + border-radius: 0; + color: #353535; + background-color: #f2f2f2; + border-color: #bfbfbf; +} +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + color: #353535; + background-color: #dedede; + border-color: #a1a1a1; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + background-image: none; + background-color: #cccccc; + border-color: #a6a6a6; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn, +.btn.disabled:hover, +.btn[disabled]:hover, +fieldset[disabled] .btn:hover, +.btn.disabled:focus, +.btn[disabled]:focus, +fieldset[disabled] .btn:focus, +.btn.disabled:active, +.btn[disabled]:active, +fieldset[disabled] .btn:active, +.btn.disabled.active, +.btn[disabled].active, +fieldset[disabled] .btn.active { + background-color: #f2f2f2; + border-color: #bfbfbf; +} +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + color: #353535; + background-color: #dedede; + border-color: #a1a1a1; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + background-image: none; + background-color: #cccccc; + border-color: #a6a6a6; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn, +.btn.disabled:hover, +.btn[disabled]:hover, +fieldset[disabled] .btn:hover, +.btn.disabled:focus, +.btn[disabled]:focus, +fieldset[disabled] .btn:focus, +.btn.disabled:active, +.btn[disabled]:active, +fieldset[disabled] .btn:active, +.btn.disabled.active, +.btn[disabled].active, +fieldset[disabled] .btn.active { + background-color: #f2f2f2; + border-color: #bfbfbf; +} +.btn-primary { + color: #fff; + background-color: #333; + border-color: #262626; +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + color: #fff; + background-color: #1f1f1f; + border-color: #080808; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + background-image: none; + background-color: #0d0d0d; + border-color: #0d0d0d; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #333; + border-color: #262626; +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + color: #fff; + background-color: #1f1f1f; + border-color: #080808; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + background-image: none; + background-color: #0d0d0d; + border-color: #0d0d0d; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #333; + border-color: #262626; +} +.btn-warning { + color: #fff; + background-color: #f1a325; + border-color: #ed980f; +} +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + color: #fff; + background-color: #df8f0e; + border-color: #b4730c; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + background-image: none; + background-color: #bd7a0c; + border-color: #bd7a0c; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f1a325; + border-color: #ed980f; +} +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + color: #fff; + background-color: #df8f0e; + border-color: #b4730c; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + background-image: none; + background-color: #bd7a0c; + border-color: #bd7a0c; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f1a325; + border-color: #ed980f; +} +.btn-danger { + color: #fff; + background-color: #ea644a; + border-color: #e75033; +} +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + color: #fff; + background-color: #e64525; + border-color: #c63317; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + background-image: none; + background-color: #cf3618; + border-color: #cf3618; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #ea644a; + border-color: #e75033; +} +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + color: #fff; + background-color: #e64525; + border-color: #c63317; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + background-image: none; + background-color: #cf3618; + border-color: #cf3618; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #ea644a; + border-color: #e75033; +} +.btn-success { + color: #fff; + background-color: #38b03f; + border-color: #329d38; +} +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + color: #fff; + background-color: #2e9134; + border-color: #236e27; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + background-image: none; + background-color: #26762a; + border-color: #26762a; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #38b03f; + border-color: #329d38; +} +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + color: #fff; + background-color: #2e9134; + border-color: #236e27; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + background-image: none; + background-color: #26762a; + border-color: #26762a; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #38b03f; + border-color: #329d38; +} +.btn-info { + color: #fff; + background-color: #03b8cf; + border-color: #03a2b6; +} +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + color: #fff; + background-color: #0294a7; + border-color: #026c7a; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + background-image: none; + background-color: #027584; + border-color: #027584; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #03b8cf; + border-color: #03a2b6; +} +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + color: #fff; + background-color: #0294a7; + border-color: #026c7a; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + background-image: none; + background-color: #027584; + border-color: #027584; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #03b8cf; + border-color: #03a2b6; +} +.btn-link { + color: #222; + background-color: transparent; +} +.btn-link, +.btn-link:active, +.btn-link[disabled], +fieldset[disabled] .btn-link, +.btn-link:hover, +.btn-link:focus { + border-color: transparent; + box-shadow: none; +} +.btn-link:hover, +.btn-link:focus { + color: #000000; +} +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #dddddd; +} +.popover, +.tooltip-inner { + border-radius: 0; +} +.label { + border-radius: 0; +} +.label-badge { + border-radius: 9px; +} +.label-dot { + border-radius: 5px; +} +.label-primary { + background-color: #333; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + color: #fff; + background-color: #1a1a1a; +} +.label-primary.label-circle { + background: none; + border: 1px solid #333; + color: #333; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #1a1a1a; +} +.label-success { + background-color: #38b03f; +} +.label-success[href]:hover, +.label-success[href]:focus { + color: #fff; + background-color: #2c8931; +} +.label-success.label-circle { + background: none; + border: 1px solid #38b03f; + color: #38b03f; +} +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #2c8931; +} +.label-info { + background-color: #03b8cf; +} +.label-info[href]:hover, +.label-info[href]:focus { + color: #fff; + background-color: #028b9d; +} +.label-info.label-circle { + background: none; + border: 1px solid #03b8cf; + color: #03b8cf; +} +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #028b9d; +} +.label-warning { + background-color: #f1a325; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + color: #fff; + background-color: #d5890e; +} +.label-warning.label-circle { + background: none; + border: 1px solid #f1a325; + color: #f1a325; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #d5890e; +} +.label-danger { + background-color: #ea644a; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + color: #fff; + background-color: #e53d1c; +} +.label-danger.label-circle { + background: none; + border: 1px solid #ea644a; + color: #ea644a; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #e53d1c; +} +.btn-primary .label-badge, +.btn-primary .label-dot { + background-color: #666666; +} +.text-primary { + color: #333; +} +.text-primary:hover { + color: #1a1a1a; +} +.text-warning { + color: #f1a325; +} +.text-warning:hover { + color: #d5890e; +} +.text-danger { + color: #ea644a; +} +.text-danger:hover { + color: #e53d1c; +} +.text-success { + color: #38b03f; +} +.text-success:hover { + color: #2c8931; +} +.text-info { + color: #03b8cf; +} +.text-info:hover { + color: #028b9d; +} +.text-important { + color: #bd7b46; +} +.text-important:hover { + color: #996337; +} +.text-special { + color: #8666b8; +} +.text-special:hover { + color: #6c4aa1; +} +.text-muted a:hover, +.text-muted a:active { + color: #222; +} +.text-link:hover, +.text-link:active { + color: #222; +} +.bg-primary { + background-color: #333; +} +a.bg-primary:hover { + background-color: #1a1a1a; +} +.hl-primary { + background-color: #f5f5f5; +} +a.hl-primary:hover { + background-color: #dcdcdc; +} +.form-control { + border-radius: 0; +} +.form-control:focus, +.form-control.focus { + border-color: #222; + outline: 0; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(34, 34, 34, 0.6); +} +.form-control:focus { + border-color: #222; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(34, 34, 34, 0.6); +} +.form-condensed .form-control, +.form-condensed .btn { + border-radius: 0; +} +.switch > input:checked + label:before { + background-color: #333; + border-color: #333; +} +.switch input:focus + label { + color: #333; +} +.switch input:focus + label:before { + border-color: #333; +} +.form-control:focus + .input-control-label-left { + color: #222; +} +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.btn-group-vertical > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-bottom-left-radius: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child > .btn:last-child, +.btn-group-vertical > .btn-group:first-child > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn-group:last-child > .btn:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.input-group-addon { + background-color: #e5e5e5; +} +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} +.input-group-addon { + border-radius: 0; +} +.input-group-btn.fix-border > .btn { + border-radius: 0; +} +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.list-group-item { + background-color: #fff; + border: 1px solid #dddddd; +} +.list-group-item:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +a.list-group-item { + color: #555; +} +a.list-group-item .list-group-item-heading { + color: #333; +} +a.list-group-item:hover, +a.list-group-item:focus { + text-decoration: none; + background-color: #f5f5f5; + color: #353535; +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + background-color: #333; + border-color: #333; + color: #fff; +} +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading { + color: inherit; +} +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #e6e6e6; +} +.list-group-item-heading { + color: #333333; +} +.navbar-toggle { + border-radius: 0; +} +@media (min-width: 768px) { + .navbar { + border-radius: 0; + } +} +.navbar-inverse { + background-color: #222; + border-color: #080808; +} +.navbar-inverse .navbar-nav > li.nav-heading { + background-color: #151515; +} +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + background-color: #313131; +} +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + background-color: #3c3c3c; +} +.navbar-inverse .navbar-toggle { + border-color: #3c3c3c; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #151515; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #101010; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + background-color: #3c3c3c; +} +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + background-color: #313131; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + background-color: #3c3c3c; + } +} +.navbar-fixed-left.navbar-inverse .navbar-header, +.navbar-fixed-left.navbar-inverse .navbar-nav { + border-bottom: 1px solid #3c3c3c; + box-shadow: inset 0 -1px 0 #080808; +} +.navbar-fixed-left.navbar-inverse.navbar-collapsed .navbar-nav > li.nav-heading:hover { + color: #eaeaea; + background-color: #0e0e0e; +} +.nav > li > a:hover, +.nav > li > a:focus { + color: #000000; +} +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + border-color: #222; +} +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + background-color: #333; +} +.nav-primary > li:first-child > a { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.nav-primary > li:last-child > a { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.nav-primary > li > a { + border: 1px solid #dddddd; +} +.nav-primary > li.active > a, +.nav-primary > li.active > a:hover, +.nav-primary > li.active > a:focus { + background-color: #333; + border-color: #333; + color: #fff; +} +.nav-secondary > li.active > a, +.nav-secondary > li.active > a:hover, +.nav-secondary > li.active > a:focus { + color: #333; + border-bottom-color: #333; +} +.nav-stacked.nav-primary > li, +.nav-stacked.nav-primary > li > a { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.nav-stacked.nav-primary > li:first-child > a, +.nav-stacked.nav-primary > li:first-child.nav-heading { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.nav-stacked.nav-primary > li:last-child > a { + border-top-right-radius: 0; + border-top-left-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.nav-stacked.nav-primary > li.nav-heading { + border: 1px solid #dddddd; + background-color: #f1f1f1; +} +.nav-stacked.nav-secondary > li > a { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + box-shadow: inset 2px 0 0 #f5f5f5; +} +.nav-stacked.nav-secondary > li > a:hover { + box-shadow: inset 2px 0 0 #e5e5e5; +} +.nav-stacked.nav-secondary > li.active > a, +.nav-stacked.nav-secondary > li.active > a:hover, +.nav-stacked.nav-secondary > li.active > a:focus { + background-color: #f5f5f5; + box-shadow: inset 2px 0 0 #333; +} +.nav-stacked.nav-secondary > li.nav-heading { + border-bottom: 1px solid #dddddd; +} +.nav-tabs > li > a { + border-radius: 0 0 0 0; +} +.pager { + border-radius: 0; +} +.pager > li > a, +.pager > li > span { + background-color: #fff; + border: 1px solid #dddddd; +} +.pager > li:first-child > a, +.pager > li:first-child > span { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.pager > li:last-child > a, +.pager > li:last-child > span { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.pager > li > a:hover, +.pager > li > span:hover, +.pager > li > a:focus, +.pager > li > span:focus { + background-color: #e5e5e5; +} +.pager > li.active > a, +.pager > li.active > span, +.pager > li.active > a:hover, +.pager > li.active > span:hover { + color: #fff; + background-color: #333; + border-color: #333; +} +.pager > li.disabled > span, +.pager > li.disabled > span:hover, +.pager > li.disabled > span:focus, +.pager > li.disabled > a, +.pager > li.disabled > a:hover, +.pager > li.disabled > a:focus { + color: #dddddd; + background-color: #fff; + border-color: #dddddd; +} +.panel { + border-radius: 0; + box-shadow: none; +} +.panel > .panel-heading { + background-image: none; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.panel-group .panel { + border-radius: 0; +} +.dashboard .panel { + box-shadow: none; +} +.panel-primary { + border-color: #333; +} +.panel-primary > .panel-heading { + color: #fff; + background-color: #333; + border-color: #333; +} +.panel-primary > .panel-heading + .panel-collapse .panel-body { + border-top-color: #333; +} +.panel-primary > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #333; +} +.panel-success > .panel-body, +.panel-warning > .panel-body, +.panel-primary > .panel-body, +.panel-info > .panel-body, +.panel-danger > .panel-body { + box-shadow: none; +} +.table-hover > tbody > tr:hover > td, +.table-hover > tbody > tr:hover > th { + background-color: #f5f5f5; +} +.table tr > td.active, +.table tr > th.active, +.table tr.active > td, +.table tr.active > th { + background-color: #ffe7bc; +} +table.tablesorter thead tr .headerSortUp:after, +table.tablesorter thead tr .headerSortDown:after { + color: #222 !important; +} +.chosen-container-single .chosen-search:focus, +.chosen-container-single .chosen-search input[type="text"]:focus { + border-color: #222 !important; +} +.chosen-container-single .chosen-single { + border-radius: 0 !important; +} +.chosen-container-single.chosen-with-drop .chosen-single { + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} +.chosen-container-single.chosen-with-drop.chosen-up .chosen-single { + border-bottom-right-radius: #222 !important; + border-bottom-left-radius: #222 !important; + border-top-right-radius: 0 !important; + border-top-left-radius: 0 !important; +} +.chosen-container .chosen-results li.highlighted { + background-color: #333 !important; +} +.chosen-container-active .chosen-single { + border-color: #222 !important; +} +.chosen-container-active.chosen-with-drop .chosen-single { + border-color: #cbcbcb !important; + border-color: rgba(0, 0, 0, 0.15) !important; +} +.chosen-container-active .chosen-choices { + border-color: #222 !important; +} +.chosen-container-multi .chosen-choices { + border-radius: 0 !important; +} +.chosen-container-multi.chosen-with-drop .chosen-choices { + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} +.chosen-container-multi.chosen-with-drop.chosen-up .chosen-choices { + border-bottom-right-radius: #222 !important; + border-bottom-left-radius: #222 !important; + border-top-right-radius: 0 !important; + border-top-left-radius: 0 !important; +} +.menu > .nav > li > .nav { + background-color: #f6f6f6; +} +.menu > .nav > li > .nav > li > a { + border: 1px solid #dddddd; +} +.menu > .nav > li > .nav > li > a:hover, +.menu > .nav > li > .nav > li > a:focus { + background-color: #e4e4e4; +} +.menu > .nav > li > .nav > li.active > a, +.menu > .nav > li > .nav > li.active > a:hover, +.menu > .nav > li > .nav > li.active > a:focus { + background-color: #333; + border-color: #333; + color: #fff; +} +.menu > .nav > li:first-child > a, +.menu > .nav > li:first-child.nav-heading { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.menu > .nav > li:last-child > a { + border-top-right-radius: 0; + border-top-left-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.menu > .nav > li:first-child > a, +.menu > .nav > li:first-child.nav-heading { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.menu > .nav > li.show > a, +.menu > .nav > li.show > a:hover, +.menu > .nav > li.show > a:focus { + color: #353535; + background-color: #fff; + border-color: #dddddd; +} +.menu > .nav > li.show > a > [class*='icon-'], +.menu > .nav > li.show > a:hover > [class*='icon-'], +.menu > .nav > li.show > a:focus > [class*='icon-'] { + color: #353535; +} +.menu > .nav > li.show > a:hover { + background-color: #f1f1f1; +} +.menu > .nav > li.show:last-child > a { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.menu > .nav > li.show:last-child > .nav > li:last-child > a { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.menu > .nav > li.nav-heading { + border: 1px solid #dddddd; + background-color: #f1f1f1; +} +.dropdown-menu { + border-radius: 0; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + background-color: #333; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + background-color: #333; +} +.dropdown-submenu:hover > a, +.dropdown-submenu:focus > a { + background-color: #333; +} +.dropdown-submenu:hover > a:after { + border-left-color: #fff; +} +.datetimepicker td.day.today { + background-color: #f1a325 !important; + border-color: #f1a325 !important; +} +.datetimepicker td.day.active { + background-color: #333 !important; + border-color: #1a1a1a !important; +} +.datetimepicker td.day.active:hover { + background-color: #1a1a1a !important; +} +.datetimepicker td.day.today:hover, +.datetimepicker td.day.today.active:hover { + background-color: #d5890e !important; +} +.ke-container { + border-radius: 0 !important; +} +.ke-container.focus { + border-color: #222 !important; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(34, 34, 34, 0.6) !important; +} +.ke-menu-item-on { + background-color: #333 !important; +} +.ke-colorpicker-cell-on { + background-color: #333 !important; +} +.ke-input-text:focus { + border-color: #222 !important; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(34, 34, 34, 0.6) !important; +} +.messager { + border-radius: 0; +} +.messager-primary { + background-color: #333; +} +.messager-success { + background-color: #38b03f; +} +.messager-info { + background-color: #03b8cf; +} +.messager-warning { + background-color: #f1a325; +} +.messager-danger { + background-color: #ea644a; +} +.messager-important { + background-color: #bd7b46; +} +.messager-special { + background-color: #8666b8; +} +.comment:hover > .content > .actions > a { + color: #222; +} +.alert:not(.alert-block) { + border-radius: 0; +} +.alert-primary { + background-color: #f5f5f5; + color: #282828; +} +.alert-primary hr { + border-top-color: #e3e3e3; +} +.alert-primary .alert-link { + color: #161616; +} +.alert-success { + background-color: #ddf4df; + color: #329d38; +} +.alert-success hr { + border-top-color: #bae8b6; +} +.alert-success .alert-link { + color: #29822e; +} +.alert-info { + background-color: #ddf3f5; + color: #03a2b6; +} +.alert-info hr { + border-top-color: #a2e4de; +} +.alert-info .alert-link { + color: #028293; +} +.alert-warning { + background-color: #fff0d5; + color: #ed980f; +} +.alert-warning hr { + border-top-color: #ffdcbc; +} +.alert-warning .alert-link { + color: #cc830d; +} +.alert-danger { + background-color: #ffe5e0; + color: #e75033; +} +.alert-danger hr { + border-top-color: #ffc6c7; +} +.alert-danger .alert-link { + color: #dd391a; +} +.alert-primary-inverse { + background-color: #333; + border-color: #333; + color: #fff; +} +.alert-primary-inverse hr { + border-top-color: #dddddd; + border-top-color: rgba(221, 221, 221, 0.25); +} +.alert-primary-inverse .alert-link { + color: rgba(255, 255, 255, 0.8); +} +.modal-dialog { + border-radius: 0; +} +.card { + box-shadow: none; + border-radius: 0; +} +pre { + border-radius: 0; +} +.datagrid .datagrid-hover-row .datagrid-row-cell:hover .datagrid-cell, +.datagrid .datagrid-hover-col .datagrid-cell.hover, +.datagrid .datagrid-hover-col .datagrid-row-cell.active .datagrid-cell.hover { + background-color: #f5f5f5; +} +.datagrid .datagrid-loading > .content > .icon, +.datagrid .datagrid-sort-up > .icon-sort:before, +.datagrid .datagrid-sort-down > .icon-sort:before { + color: #333; +} +.tree-drag-holder { + background-color: #f5f5f5; +} +.tree-menu li.active > a { + background-color: #333; + border-color: #333; + color: #fff; +} +.tree-menu li.active > .list-toggle { + color: #fff; +} diff --git a/root/res/css/zui-theme.css b/root/res/css/zui-theme.css new file mode 100644 index 0000000..3e89655 --- /dev/null +++ b/root/res/css/zui-theme.css @@ -0,0 +1,1310 @@ +/*! + * ZUI user custom theme for - v1.8.1 - 2018-11-06 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +a { + color: #546E7A; +} +a:hover, +a:focus { + color: #35454d; +} +.btn { + border-radius: 0; + color: #353535; + background-color: #f2f2f2; + border-color: #bfbfbf; +} +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + color: #353535; + background-color: #dedede; + border-color: #a1a1a1; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + background-image: none; + background-color: #cccccc; + border-color: #a6a6a6; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn, +.btn.disabled:hover, +.btn[disabled]:hover, +fieldset[disabled] .btn:hover, +.btn.disabled:focus, +.btn[disabled]:focus, +fieldset[disabled] .btn:focus, +.btn.disabled:active, +.btn[disabled]:active, +fieldset[disabled] .btn:active, +.btn.disabled.active, +.btn[disabled].active, +fieldset[disabled] .btn.active { + background-color: #f2f2f2; + border-color: #bfbfbf; +} +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + color: #353535; + background-color: #dedede; + border-color: #a1a1a1; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + background-image: none; + background-color: #cccccc; + border-color: #a6a6a6; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn, +.btn.disabled:hover, +.btn[disabled]:hover, +fieldset[disabled] .btn:hover, +.btn.disabled:focus, +.btn[disabled]:focus, +fieldset[disabled] .btn:focus, +.btn.disabled:active, +.btn[disabled]:active, +fieldset[disabled] .btn:active, +.btn.disabled.active, +.btn[disabled].active, +fieldset[disabled] .btn.active { + background-color: #f2f2f2; + border-color: #bfbfbf; +} +.btn-primary { + color: #fff; + background-color: #607D8B; + border-color: #566f7c; +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + color: #fff; + background-color: #4f6773; + border-color: #3d4f58; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + background-image: none; + background-color: #41545e; + border-color: #41545e; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #607D8B; + border-color: #566f7c; +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + color: #fff; + background-color: #4f6773; + border-color: #3d4f58; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + background-image: none; + background-color: #41545e; + border-color: #41545e; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #607D8B; + border-color: #566f7c; +} +.btn-warning { + color: #fff; + background-color: #f1a325; + border-color: #ed980f; +} +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + color: #fff; + background-color: #df8f0e; + border-color: #b4730c; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + background-image: none; + background-color: #bd7a0c; + border-color: #bd7a0c; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f1a325; + border-color: #ed980f; +} +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + color: #fff; + background-color: #df8f0e; + border-color: #b4730c; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + background-image: none; + background-color: #bd7a0c; + border-color: #bd7a0c; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f1a325; + border-color: #ed980f; +} +.btn-danger { + color: #fff; + background-color: #ea644a; + border-color: #e75033; +} +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + color: #fff; + background-color: #e64525; + border-color: #c63317; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + background-image: none; + background-color: #cf3618; + border-color: #cf3618; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #ea644a; + border-color: #e75033; +} +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + color: #fff; + background-color: #e64525; + border-color: #c63317; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + background-image: none; + background-color: #cf3618; + border-color: #cf3618; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #ea644a; + border-color: #e75033; +} +.btn-success { + color: #fff; + background-color: #38b03f; + border-color: #329d38; +} +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + color: #fff; + background-color: #2e9134; + border-color: #236e27; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + background-image: none; + background-color: #26762a; + border-color: #26762a; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #38b03f; + border-color: #329d38; +} +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + color: #fff; + background-color: #2e9134; + border-color: #236e27; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + background-image: none; + background-color: #26762a; + border-color: #26762a; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #38b03f; + border-color: #329d38; +} +.btn-info { + color: #fff; + background-color: #03b8cf; + border-color: #03a2b6; +} +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + color: #fff; + background-color: #0294a7; + border-color: #026c7a; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + background-image: none; + background-color: #027584; + border-color: #027584; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #03b8cf; + border-color: #03a2b6; +} +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + color: #fff; + background-color: #0294a7; + border-color: #026c7a; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + background-image: none; + background-color: #027584; + border-color: #027584; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #03b8cf; + border-color: #03a2b6; +} +.btn-link { + color: #546E7A; + background-color: transparent; +} +.btn-link, +.btn-link:active, +.btn-link[disabled], +fieldset[disabled] .btn-link, +.btn-link:hover, +.btn-link:focus { + border-color: transparent; + box-shadow: none; +} +.btn-link:hover, +.btn-link:focus { + color: #35454d; +} +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #dddddd; +} +.popover, +.tooltip-inner { + border-radius: 0; +} +.label { + border-radius: 0; +} +.label-badge { + border-radius: 9px; +} +.label-dot { + border-radius: 5px; +} +.label-primary { + background-color: #607D8B; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + color: #fff; + background-color: #4b626d; +} +.label-primary.label-circle { + background: none; + border: 1px solid #607D8B; + color: #607D8B; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #4b626d; +} +.label-success { + background-color: #38b03f; +} +.label-success[href]:hover, +.label-success[href]:focus { + color: #fff; + background-color: #2c8931; +} +.label-success.label-circle { + background: none; + border: 1px solid #38b03f; + color: #38b03f; +} +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #2c8931; +} +.label-info { + background-color: #03b8cf; +} +.label-info[href]:hover, +.label-info[href]:focus { + color: #fff; + background-color: #028b9d; +} +.label-info.label-circle { + background: none; + border: 1px solid #03b8cf; + color: #03b8cf; +} +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #028b9d; +} +.label-warning { + background-color: #f1a325; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + color: #fff; + background-color: #d5890e; +} +.label-warning.label-circle { + background: none; + border: 1px solid #f1a325; + color: #f1a325; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #d5890e; +} +.label-danger { + background-color: #ea644a; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + color: #fff; + background-color: #e53d1c; +} +.label-danger.label-circle { + background: none; + border: 1px solid #ea644a; + color: #ea644a; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #e53d1c; +} +.btn-primary .label-badge, +.btn-primary .label-dot { + background-color: #99aeb8; +} +.text-primary { + color: #607D8B; +} +.text-primary:hover { + color: #4b626d; +} +.text-warning { + color: #f1a325; +} +.text-warning:hover { + color: #d5890e; +} +.text-danger { + color: #ea644a; +} +.text-danger:hover { + color: #e53d1c; +} +.text-success { + color: #38b03f; +} +.text-success:hover { + color: #2c8931; +} +.text-info { + color: #03b8cf; +} +.text-info:hover { + color: #028b9d; +} +.text-important { + color: #bd7b46; +} +.text-important:hover { + color: #996337; +} +.text-special { + color: #8666b8; +} +.text-special:hover { + color: #6c4aa1; +} +.text-muted a:hover, +.text-muted a:active { + color: #546E7A; +} +.text-link:hover, +.text-link:active { + color: #546E7A; +} +.bg-primary { + background-color: #607D8B; +} +a.bg-primary:hover { + background-color: #4b626d; +} +.hl-primary { + background-color: #ECEFF1; +} +a.hl-primary:hover { + background-color: #cfd6db; +} +.form-control { + border-radius: 0; +} +.form-control:focus, +.form-control.focus { + border-color: #546E7A; + outline: 0; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(84, 110, 122, 0.6); +} +.form-control:focus { + border-color: #546E7A; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(84, 110, 122, 0.6); +} +.form-condensed .form-control, +.form-condensed .btn { + border-radius: 0; +} +.switch > input:checked + label:before { + background-color: #607D8B; + border-color: #607D8B; +} +.switch input:focus + label { + color: #607D8B; +} +.switch input:focus + label:before { + border-color: #607D8B; +} +.form-control:focus + .input-control-label-left { + color: #546E7A; +} +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.btn-group-vertical > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-bottom-left-radius: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child > .btn:last-child, +.btn-group-vertical > .btn-group:first-child > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn-group:last-child > .btn:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.input-group-addon { + background-color: #e5e5e5; +} +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} +.input-group-addon { + border-radius: 0; +} +.input-group-btn.fix-border > .btn { + border-radius: 0; +} +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.list-group-item { + background-color: #fff; + border: 1px solid #dddddd; +} +.list-group-item:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +a.list-group-item { + color: #555; +} +a.list-group-item .list-group-item-heading { + color: #333; +} +a.list-group-item:hover, +a.list-group-item:focus { + text-decoration: none; + background-color: #ECEFF1; + color: #353535; +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + background-color: #607D8B; + border-color: #607D8B; + color: #fff; +} +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading { + color: inherit; +} +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #e6e6e6; +} +.list-group-item-heading { + color: #333333; +} +.navbar-toggle { + border-radius: 0; +} +@media (min-width: 768px) { + .navbar { + border-radius: 0; + } +} +.navbar-inverse { + background-color: #546E7A; + border-color: #3f535c; +} +.navbar-inverse .navbar-nav > li.nav-heading { + background-color: #4a606b; +} +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + background-color: #607e8c; +} +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + background-color: #698998; +} +.navbar-inverse .navbar-toggle { + border-color: #698998; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #4a606b; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #455b65; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + background-color: #698998; +} +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #3f535c; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + background-color: #607e8c; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + background-color: #698998; + } +} +.navbar-fixed-left.navbar-inverse .navbar-header, +.navbar-fixed-left.navbar-inverse .navbar-nav { + border-bottom: 1px solid #698998; + box-shadow: inset 0 -1px 0 #3f535c; +} +.navbar-fixed-left.navbar-inverse.navbar-collapsed .navbar-nav > li.nav-heading:hover { + color: #eaeaea; + background-color: #435862; +} +.nav > li > a:hover, +.nav > li > a:focus { + color: #35454d; +} +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + border-color: #546E7A; +} +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + background-color: #607D8B; +} +.nav-primary > li:first-child > a { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.nav-primary > li:last-child > a { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.nav-primary > li > a { + border: 1px solid #dddddd; +} +.nav-primary > li.active > a, +.nav-primary > li.active > a:hover, +.nav-primary > li.active > a:focus { + background-color: #607D8B; + border-color: #607D8B; + color: #fff; +} +.nav-secondary > li.active > a, +.nav-secondary > li.active > a:hover, +.nav-secondary > li.active > a:focus { + color: #607D8B; + border-bottom-color: #607D8B; +} +.nav-stacked.nav-primary > li, +.nav-stacked.nav-primary > li > a { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.nav-stacked.nav-primary > li:first-child > a, +.nav-stacked.nav-primary > li:first-child.nav-heading { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.nav-stacked.nav-primary > li:last-child > a { + border-top-right-radius: 0; + border-top-left-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.nav-stacked.nav-primary > li.nav-heading { + border: 1px solid #dddddd; + background-color: #f1f1f1; +} +.nav-stacked.nav-secondary > li > a { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + box-shadow: inset 2px 0 0 #f5f5f5; +} +.nav-stacked.nav-secondary > li > a:hover { + box-shadow: inset 2px 0 0 #e5e5e5; +} +.nav-stacked.nav-secondary > li.active > a, +.nav-stacked.nav-secondary > li.active > a:hover, +.nav-stacked.nav-secondary > li.active > a:focus { + background-color: #f5f5f5; + box-shadow: inset 2px 0 0 #607D8B; +} +.nav-stacked.nav-secondary > li.nav-heading { + border-bottom: 1px solid #dddddd; +} +.nav-tabs > li > a { + border-radius: 0 0 0 0; +} +.pager { + border-radius: 0; +} +.pager > li > a, +.pager > li > span { + background-color: #fff; + border: 1px solid #dddddd; +} +.pager > li:first-child > a, +.pager > li:first-child > span { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.pager > li:last-child > a, +.pager > li:last-child > span { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.pager > li > a:hover, +.pager > li > span:hover, +.pager > li > a:focus, +.pager > li > span:focus { + background-color: #e5e5e5; +} +.pager > li.active > a, +.pager > li.active > span, +.pager > li.active > a:hover, +.pager > li.active > span:hover { + color: #fff; + background-color: #607D8B; + border-color: #607D8B; +} +.pager > li.disabled > span, +.pager > li.disabled > span:hover, +.pager > li.disabled > span:focus, +.pager > li.disabled > a, +.pager > li.disabled > a:hover, +.pager > li.disabled > a:focus { + color: #dddddd; + background-color: #fff; + border-color: #dddddd; +} +.panel { + border-radius: 0; + box-shadow: none; +} +.panel > .panel-heading { + background-image: none; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.panel-group .panel { + border-radius: 0; +} +.dashboard .panel { + box-shadow: none; +} +.panel-primary { + border-color: #607D8B; +} +.panel-primary > .panel-heading { + color: #fff; + background-color: #607D8B; + border-color: #607D8B; +} +.panel-primary > .panel-heading + .panel-collapse .panel-body { + border-top-color: #607D8B; +} +.panel-primary > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #607D8B; +} +.panel-success > .panel-body, +.panel-warning > .panel-body, +.panel-primary > .panel-body, +.panel-info > .panel-body, +.panel-danger > .panel-body { + box-shadow: none; +} +.table-hover > tbody > tr:hover > td, +.table-hover > tbody > tr:hover > th { + background-color: #ECEFF1; +} +.table tr > td.active, +.table tr > th.active, +.table tr.active > td, +.table tr.active > th { + background-color: #ffe7bc; +} +table.tablesorter thead tr .headerSortUp:after, +table.tablesorter thead tr .headerSortDown:after { + color: #546E7A !important; +} +.chosen-container-single .chosen-search:focus, +.chosen-container-single .chosen-search input[type="text"]:focus { + border-color: #546E7A !important; +} +.chosen-container-single .chosen-single { + border-radius: 0 !important; +} +.chosen-container-single.chosen-with-drop .chosen-single { + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} +.chosen-container-single.chosen-with-drop.chosen-up .chosen-single { + border-bottom-right-radius: #546E7A !important; + border-bottom-left-radius: #546E7A !important; + border-top-right-radius: 0 !important; + border-top-left-radius: 0 !important; +} +.chosen-container .chosen-results li.highlighted { + background-color: #607D8B !important; +} +.chosen-container-active .chosen-single { + border-color: #546E7A !important; +} +.chosen-container-active.chosen-with-drop .chosen-single { + border-color: #cbcbcb !important; + border-color: rgba(0, 0, 0, 0.15) !important; +} +.chosen-container-active .chosen-choices { + border-color: #546E7A !important; +} +.chosen-container-multi .chosen-choices { + border-radius: 0 !important; +} +.chosen-container-multi.chosen-with-drop .chosen-choices { + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} +.chosen-container-multi.chosen-with-drop.chosen-up .chosen-choices { + border-bottom-right-radius: #546E7A !important; + border-bottom-left-radius: #546E7A !important; + border-top-right-radius: 0 !important; + border-top-left-radius: 0 !important; +} +.menu > .nav > li > .nav { + background-color: #f6f6f6; +} +.menu > .nav > li > .nav > li > a { + border: 1px solid #dddddd; +} +.menu > .nav > li > .nav > li > a:hover, +.menu > .nav > li > .nav > li > a:focus { + background-color: #e4e4e4; +} +.menu > .nav > li > .nav > li.active > a, +.menu > .nav > li > .nav > li.active > a:hover, +.menu > .nav > li > .nav > li.active > a:focus { + background-color: #607D8B; + border-color: #607D8B; + color: #fff; +} +.menu > .nav > li:first-child > a, +.menu > .nav > li:first-child.nav-heading { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.menu > .nav > li:last-child > a { + border-top-right-radius: 0; + border-top-left-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.menu > .nav > li:first-child > a, +.menu > .nav > li:first-child.nav-heading { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.menu > .nav > li.show > a, +.menu > .nav > li.show > a:hover, +.menu > .nav > li.show > a:focus { + color: #353535; + background-color: #fff; + border-color: #dddddd; +} +.menu > .nav > li.show > a > [class*='icon-'], +.menu > .nav > li.show > a:hover > [class*='icon-'], +.menu > .nav > li.show > a:focus > [class*='icon-'] { + color: #353535; +} +.menu > .nav > li.show > a:hover { + background-color: #f1f1f1; +} +.menu > .nav > li.show:last-child > a { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.menu > .nav > li.show:last-child > .nav > li:last-child > a { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.menu > .nav > li.nav-heading { + border: 1px solid #dddddd; + background-color: #f1f1f1; +} +.dropdown-menu { + border-radius: 0; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + background-color: #607D8B; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + background-color: #607D8B; +} +.dropdown-submenu:hover > a, +.dropdown-submenu:focus > a { + background-color: #607D8B; +} +.dropdown-submenu:hover > a:after { + border-left-color: #fff; +} +.datetimepicker td.day.today { + background-color: #f1a325 !important; + border-color: #f1a325 !important; +} +.datetimepicker td.day.active { + background-color: #607D8B !important; + border-color: #4b626d !important; +} +.datetimepicker td.day.active:hover { + background-color: #4b626d !important; +} +.datetimepicker td.day.today:hover, +.datetimepicker td.day.today.active:hover { + background-color: #d5890e !important; +} +.ke-container { + border-radius: 0 !important; +} +.ke-container.focus { + border-color: #546E7A !important; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(84, 110, 122, 0.6) !important; +} +.ke-menu-item-on { + background-color: #607D8B !important; +} +.ke-colorpicker-cell-on { + background-color: #607D8B !important; +} +.ke-input-text:focus { + border-color: #546E7A !important; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(84, 110, 122, 0.6) !important; +} +.messager { + border-radius: 0; +} +.messager-primary { + background-color: #607D8B; +} +.messager-success { + background-color: #38b03f; +} +.messager-info { + background-color: #03b8cf; +} +.messager-warning { + background-color: #f1a325; +} +.messager-danger { + background-color: #ea644a; +} +.messager-important { + background-color: #bd7b46; +} +.messager-special { + background-color: #8666b8; +} +.comment:hover > .content > .actions > a { + color: #546E7A; +} +.alert:not(.alert-block) { + border-radius: 0; +} +.alert-primary { + background-color: #ECEFF1; + color: #282828; +} +.alert-primary hr { + border-top-color: #d7dee2; +} +.alert-primary .alert-link { + color: #161616; +} +.alert-success { + background-color: #ddf4df; + color: #329d38; +} +.alert-success hr { + border-top-color: #bae8b6; +} +.alert-success .alert-link { + color: #29822e; +} +.alert-info { + background-color: #ddf3f5; + color: #03a2b6; +} +.alert-info hr { + border-top-color: #a2e4de; +} +.alert-info .alert-link { + color: #028293; +} +.alert-warning { + background-color: #fff0d5; + color: #ed980f; +} +.alert-warning hr { + border-top-color: #ffdcbc; +} +.alert-warning .alert-link { + color: #cc830d; +} +.alert-danger { + background-color: #ffe5e0; + color: #e75033; +} +.alert-danger hr { + border-top-color: #ffc6c7; +} +.alert-danger .alert-link { + color: #dd391a; +} +.alert-primary-inverse { + background-color: #607D8B; + border-color: #607D8B; + color: #fff; +} +.alert-primary-inverse hr { + border-top-color: #dddddd; + border-top-color: rgba(221, 221, 221, 0.25); +} +.alert-primary-inverse .alert-link { + color: rgba(255, 255, 255, 0.8); +} +.modal-dialog { + border-radius: 0; +} +.card { + box-shadow: none; + border-radius: 0; +} +pre { + border-radius: 0; +} +.datagrid .datagrid-hover-row .datagrid-row-cell:hover .datagrid-cell, +.datagrid .datagrid-hover-col .datagrid-cell.hover, +.datagrid .datagrid-hover-col .datagrid-row-cell.active .datagrid-cell.hover { + background-color: #ECEFF1; +} +.datagrid .datagrid-loading > .content > .icon, +.datagrid .datagrid-sort-up > .icon-sort:before, +.datagrid .datagrid-sort-down > .icon-sort:before { + color: #607D8B; +} +.tree-drag-holder { + background-color: #ECEFF1; +} +.tree-menu li.active > a { + background-color: #607D8B; + border-color: #607D8B; + color: #fff; +} +.tree-menu li.active > .list-toggle { + color: #fff; +} diff --git a/root/res/img/bg.jpg b/root/res/img/bg.jpg new file mode 100644 index 0000000..f2160c4 Binary files /dev/null and b/root/res/img/bg.jpg differ diff --git a/root/res/js/red.js b/root/res/js/red.js new file mode 100644 index 0000000..a3cc2c5 --- /dev/null +++ b/root/res/js/red.js @@ -0,0 +1,141 @@ +var red = { + showMsg: function(option) { + var defOption = {msg: "操作成功", type:"info", placement: "bottom-right"}; + + option = option || defOption; + for (var k in defOption) { + option[k] = option[k] || defOption[k] + } + + new $.zui.Messager(option.msg, { + type: option.type // 定义颜色主题 + ,placement: option.placement + }).show(); + }, + getData: function(key, defaultValue) { + var v = localStorage.getItem(key) || defaultValue || ""; + if (typeof(v) == "string" && v.startsWith("{") && v.endsWith("}")) { + v = JSON.parse(v); + } else if (typeof(v) == "string" && v.startsWith("[") && v.endsWith("]")) { + v = JSON.parse(v); + } + return v; + }, + setData: function(key, value) { + var v = value; + if (typeof(v) == "object") { + v = JSON.stringify(value); + } + localStorage.setItem(key, v); + }, + getPlatId: function() { + var plat = red.getData("sysPlat") || {}; + return plat["_key"]; + }, + getPlatToken: function() { + var plat = red.getData("sysPlat") || {}; + return plat["token"]; + }, + getJSON: function (url, para, callback) { + para["platToken"] = red.getPlatToken(); + $.getJSON(url, para, function (json) { + json = json || {}; + red.loginCheck(json); + var data = json; + if (json.code == -1) { + red.showMsg({type:"error", msg: json.message}); + return; + } + + if (json.code == 0) { + data = json.body; + } + + callback(data); + }); + }, + post: function(url, para, callback) { + para["platToken"] = red.getPlatToken(); + $.post(url, para, function (json) { + red.loginCheck(json); + if (json.code == -1) { + red.showMsg({msg: json.message, type: "error"}); + return; + } + + if (callback) { + + callback(json.code == 0 ? json.body : json); + } else { + red.showMsg(); + } + }); + }, + + //TODO: 提取统一查询、请求,失败提示 + //QTASK find list + qtaskCall: function (para, callback) { + + /*$.p$.post("/db/list", {fBean: JSON.stringify(fBean)}, function (json) { + vm.list = json.body; + });*/ + $.getJSON("/qtask/call", para, function (json) { + callback(json); + }); + }, + + //db find + dbQuery: function (para, callback) { + $.getJSON("/db/list", para, function (json) { + red.loginCheck(json); + if (json.code == -1) { + console.log("json.code == -1") + } + + callback(json); + }); + }, + dbPlats: function(callBack) { + red.getJSON("/meta/db_plat_list", {}, function (json) { + callBack(json); + }); + }, + + putAll: function(t, s) { + t = t || {}; + s = s || {}; + + for (var k in s) { + t[k] = s[k]; + } + return t; + }, + + timeFmt: function (date,fmt){ + fmt = fmt || "yyyy-MM-dd HH:mm:ss"; + var o = { + "M+" : date.getMonth()+1, //月份 + "d+" : date.getDate(), //日 + "H+" : date.getHours(), //小时 + "m+" : date.getMinutes(), //分 + "s+" : date.getSeconds(), //秒 + "q+" : Math.floor((date.getMonth()+3)/3), //季度 + "S" : date.getMilliseconds() //毫秒 + }; + + if(/(y+)/.test(fmt)) + fmt=fmt.replace(RegExp.$1, (date.getFullYear()+"").substr(4 - RegExp.$1.length)); + for(var k in o) + if(new RegExp("("+ k +")").test(fmt)) + fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length))); + return fmt; + }, + loginCheck: function (json) { + if (json && json["code"] == -2) { + red.showMsg({type:"error", placement: "center", msg: "登陆过期,请前往登陆"}); + setTimeout(function () { + location.href = "/user/login.html"; + }, 2000); + } + } +} \ No newline at end of file diff --git a/root/res/zui/css/zui-theme.css b/root/res/zui/css/zui-theme.css new file mode 100644 index 0000000..e605a15 --- /dev/null +++ b/root/res/zui/css/zui-theme.css @@ -0,0 +1,1347 @@ +/*! + * ZUI: Theme - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +a { + color: #3949ab; + } +a:hover, +a:focus { + color: #263172; + } +.btn { + color: #353535; + background-color: #fff; + border-color: #ccc; + border-radius: 0; + } +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + color: #353535; + background-color: #ebebeb; + border-color: #adadad; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + background-color: #d9d9d9; + background-image: none; + border-color: #b3b3b3; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn, +.btn.disabled:hover, +.btn[disabled]:hover, +fieldset[disabled] .btn:hover, +.btn.disabled:focus, +.btn[disabled]:focus, +fieldset[disabled] .btn:focus, +.btn.disabled:active, +.btn[disabled]:active, +fieldset[disabled] .btn:active, +.btn.disabled.active, +.btn[disabled].active, +fieldset[disabled] .btn.active { + background-color: #fff; + border-color: #ccc; + } +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + color: #353535; + background-color: #ebebeb; + border-color: #adadad; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + background-color: #d9d9d9; + background-image: none; + border-color: #b3b3b3; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn, +.btn.disabled:hover, +.btn[disabled]:hover, +fieldset[disabled] .btn:hover, +.btn.disabled:focus, +.btn[disabled]:focus, +fieldset[disabled] .btn:focus, +.btn.disabled:active, +.btn[disabled]:active, +fieldset[disabled] .btn:active, +.btn.disabled.active, +.btn[disabled].active, +fieldset[disabled] .btn.active { + background-color: #fff; + border-color: #ccc; + } +.btn-primary { + color: #fff; + background-color: #3f51b5; + border-color: #3e4fb1; + } +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + color: #fff; + background-color: #344397; + border-color: #2e3b84; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + background-color: #2b387c; + background-image: none; + border-color: #313e8b; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #3f51b5; + border-color: #3e4fb1; + } +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + color: #fff; + background-color: #344397; + border-color: #2e3b84; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + background-color: #2b387c; + background-image: none; + border-color: #313e8b; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #3f51b5; + border-color: #3e4fb1; + } +.btn-warning { + color: #fff; + background-color: #f0ad4e; + border-color: #f0ab49; + } +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + color: #fff; + background-color: #ed9c28; + border-color: #e89014; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + background-color: #df8a13; + background-image: none; + border-color: #ec951a; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f0ad4e; + border-color: #f0ab49; + } +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + color: #fff; + background-color: #ed9c28; + border-color: #e89014; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + background-color: #df8a13; + background-image: none; + border-color: #ec951a; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f0ad4e; + border-color: #f0ab49; + } +.btn-danger { + color: #fff; + background-color: #d9534f; + border-color: #d84f4b; + } +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + color: #fff; + background-color: #d2322d; + border-color: #bd2d29; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + background-color: #b52b27; + background-image: none; + border-color: #c52f2b; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #d9534f; + border-color: #d84f4b; + } +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + color: #fff; + background-color: #d2322d; + border-color: #bd2d29; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + background-color: #b52b27; + background-image: none; + border-color: #c52f2b; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #d9534f; + border-color: #d84f4b; + } +.btn-success { + color: #fff; + background-color: #4caf50; + border-color: #4aab4e; + } +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + color: #fff; + background-color: #409343; + border-color: #38813b; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + background-color: #357a38; + background-image: none; + border-color: #3b883e; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #4caf50; + border-color: #4aab4e; + } +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + color: #fff; + background-color: #409343; + border-color: #38813b; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + background-color: #357a38; + background-image: none; + border-color: #3b883e; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #4caf50; + border-color: #4aab4e; + } +.btn-info { + color: #fff; + background-color: #039be5; + border-color: #0398e0; + } +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + color: #fff; + background-color: #0280bd; + border-color: #026fa4; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + background-color: #026899; + background-image: none; + border-color: #0276ae; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #039be5; + border-color: #0398e0; + } +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + color: #fff; + background-color: #0280bd; + border-color: #026fa4; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + background-color: #026899; + background-image: none; + border-color: #0276ae; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #039be5; + border-color: #0398e0; + } +.btn-link { + color: #3949ab; + background-color: transparent; + } +.btn-link, +.btn-link:active, +.btn-link[disabled], +fieldset[disabled] .btn-link, +.btn-link:hover, +.btn-link:focus { + border-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; + } +.btn-link:hover, +.btn-link:focus { + color: #263172; + } +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #ddd; + } +.popover, +.tooltip-inner { + border-radius: 0; + } +.label { + border-radius: 0; + } +.label-badge { + border-radius: 12px; + } +.label-dot { + border-radius: 5px; + } +.label-primary { + background-color: #3f51b5; + } +.label-primary[href]:hover, +.label-primary[href]:focus { + color: #fff; + background-color: #32408f; + } +.label-primary.label-circle { + color: #3f51b5; + background: none; + border: 1px solid #3f51b5; + } +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #32408f; + } +.label-success { + background-color: #4caf50; + } +.label-success[href]:hover, +.label-success[href]:focus { + color: #fff; + background-color: #3d8b40; + } +.label-success.label-circle { + color: #4caf50; + background: none; + border: 1px solid #4caf50; + } +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #3d8b40; + } +.label-info { + background-color: #039be5; + } +.label-info[href]:hover, +.label-info[href]:focus { + color: #fff; + background-color: #0279b3; + } +.label-info.label-circle { + color: #039be5; + background: none; + border: 1px solid #039be5; + } +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #0279b3; + } +.label-warning { + background-color: #f0ad4e; + } +.label-warning[href]:hover, +.label-warning[href]:focus { + color: #fff; + background-color: #ec971f; + } +.label-warning.label-circle { + color: #f0ad4e; + background: none; + border: 1px solid #f0ad4e; + } +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #ec971f; + } +.label-danger { + background-color: #d9534f; + } +.label-danger[href]:hover, +.label-danger[href]:focus { + color: #fff; + background-color: #c9302c; + } +.label-danger.label-circle { + color: #d9534f; + background: none; + border: 1px solid #d9534f; + } +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #c9302c; + } +.btn-primary .label-badge, +.btn-primary .label-dot { + background-color: #8591d5; + } +.text-primary { + color: #3f51b5; + } +.text-primary:hover { + color: #32408f; + } +.text-warning { + color: #f0ad4e; + } +.text-warning:hover { + color: #ec971f; + } +.text-danger { + color: #d9534f; + } +.text-danger:hover { + color: #c9302c; + } +.text-success { + color: #4caf50; + } +.text-success:hover { + color: #3d8b40; + } +.text-info { + color: #039be5; + } +.text-info:hover { + color: #0279b3; + } +.text-important { + color: #bd7b46; + } +.text-important:hover { + color: #996337; + } +.text-special { + color: #8666b8; + } +.text-special:hover { + color: #6c4aa1; + } +.text-muted a:hover, +.text-muted a:active { + color: #3949ab; + } +.text-link:hover, +.text-link:active { + color: #3949ab; + } +.bg-primary { + background-color: #3f51b5; + } +a.bg-primary:hover { + background-color: #32408f; + } +.hl-primary { + background-color: #eceff1; + } +a.hl-primary:hover { + background-color: #cfd6db; + } +.form-control { + border-radius: 0; + } +.form-control:focus, +.form-control.focus { + border-color: #3949ab; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(57, 73, 171, .6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(57, 73, 171, .6); + } +.form-control:focus { + border-color: #3949ab; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(57, 73, 171, .6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(57, 73, 171, .6); + } +.form-condensed .form-control, +.form-condensed .btn { + border-radius: 0; + } +.switch > input:checked + label:before { + background-color: #3f51b5; + border-color: #3f51b5; + } +.switch input:focus + label { + color: #3f51b5; + } +.switch input:focus + label:before { + border-color: #3f51b5; + } +.form-control:focus + .input-control-label-left { + color: #3949ab; + } +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; + } +.btn-group-vertical > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-left-radius: 0; + } +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; + } +.btn-group-vertical > .btn-group:first-child > .btn:last-child, +.btn-group-vertical > .btn-group:first-child > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +.btn-group-vertical > .btn-group:last-child > .btn:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; + } +.input-group-addon { + background-color: #f1f1f1; + } +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; + } +.input-group-addon { + border-radius: 0; + } +.input-group-btn.fix-border > .btn { + border-radius: 0; + } +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } +.list-group-item { + background-color: #fff; + border: 1px solid #ddd; + } +.list-group-item:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; + } +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +a.list-group-item { + color: #555; + } +a.list-group-item .list-group-item-heading { + color: #333; + } +a.list-group-item:hover, +a.list-group-item:focus { + color: #353535; + text-decoration: none; + background-color: #eceff1; + } +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + color: #fff; + background-color: #3f51b5; + border-color: #3f51b5; + } +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading { + color: inherit; + } +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #e6e6e6; + } +.list-group-item-heading { + color: #333; + } +.navbar-toggle { + border-radius: 0; + } +@media (min-width: 768px) { + .navbar { + border-radius: 0; + } + } +.navbar-inverse { + background-color: #3949ab; + border-color: #2c3985; + } +.navbar-inverse .navbar-nav > li.nav-heading { + background-color: #334198; + } +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + background-color: #4254c0; + } +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + background-color: #5262c5; + } +.navbar-inverse .navbar-toggle { + border-color: #5262c5; + } +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #334198; + } +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #303e90; + } +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + background-color: #5262c5; + } +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #2c3985; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + background-color: #4254c0; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + background-color: #5262c5; + } + } +.navbar-fixed-left.navbar-inverse .navbar-header, +.navbar-fixed-left.navbar-inverse .navbar-nav { + border-bottom: 1px solid #5262c5; + -webkit-box-shadow: inset 0 -1px 0 #2c3985; + box-shadow: inset 0 -1px 0 #2c3985; + } +.navbar-fixed-left.navbar-inverse.navbar-collapsed .navbar-nav > li.nav-heading:hover { + color: #eaeaea; + background-color: #2f3c8c; + } +.nav > li > a:hover, +.nav > li > a:focus { + color: #263172; + } +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + border-color: #3949ab; + } +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + background-color: #3f51b5; + } +.nav-primary > li:first-child > a { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } +.nav-primary > li:last-child > a { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } +.nav-primary > li > a { + border: 1px solid #ddd; + } +.nav-primary > li.active > a, +.nav-primary > li.active > a:hover, +.nav-primary > li.active > a:focus { + color: #fff; + background-color: #3f51b5; + border-color: #3f51b5; + } +.nav-secondary > li.active > a, +.nav-secondary > li.active > a:hover, +.nav-secondary > li.active > a:focus { + color: #3f51b5; + border-bottom-color: #3f51b5; + } +.nav-stacked.nav-primary > li, +.nav-stacked.nav-primary > li > a { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +.nav-stacked.nav-primary > li:first-child > a, +.nav-stacked.nav-primary > li:first-child.nav-heading { + border-top-left-radius: 0; + border-top-right-radius: 0; + } +.nav-stacked.nav-primary > li:last-child > a { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +.nav-stacked.nav-primary > li.nav-heading { + background-color: #f1f1f1; + border: 1px solid #ddd; + } +.nav-stacked.nav-secondary > li > a { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + -webkit-box-shadow: inset 2px 0 0 #f5f5f5; + box-shadow: inset 2px 0 0 #f5f5f5; + } +.nav-stacked.nav-secondary > li > a:hover { + -webkit-box-shadow: inset 2px 0 0 #e5e5e5; + box-shadow: inset 2px 0 0 #e5e5e5; + } +.nav-stacked.nav-secondary > li.active > a, +.nav-stacked.nav-secondary > li.active > a:hover, +.nav-stacked.nav-secondary > li.active > a:focus { + background-color: #f5f5f5; + -webkit-box-shadow: inset 2px 0 0 #3f51b5; + box-shadow: inset 2px 0 0 #3f51b5; + } +.nav-stacked.nav-secondary > li.nav-heading { + border-bottom: 1px solid #ddd; + } +.nav-tabs > li > a { + border-radius: 0 0 0 0; + } +.pager { + border-radius: 0; + } +.pager > li > a, +.pager > li > span { + background-color: #fff; + border: 1px solid #ddd; + } +.pager > li:first-child > a, +.pager > li:first-child > span { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } +.pager > li:last-child > a, +.pager > li:last-child > span { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } +.pager > li > a:hover, +.pager > li > span:hover, +.pager > li > a:focus, +.pager > li > span:focus { + background-color: #e5e5e5; + } +.pager > li.active > a, +.pager > li.active > span, +.pager > li.active > a:hover, +.pager > li.active > span:hover { + color: #fff; + background-color: #3f51b5; + border-color: #3f51b5; + } +.pager > li.disabled > span, +.pager > li.disabled > span:hover, +.pager > li.disabled > span:focus, +.pager > li.disabled > a, +.pager > li.disabled > a:hover, +.pager > li.disabled > a:focus { + color: #ddd; + background-color: #fff; + border-color: #ddd; + } +.panel { + border-radius: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +.panel > .panel-heading { + background-image: none; + border-top-left-radius: 0; + border-top-right-radius: 0; + } +.panel-group .panel { + border-radius: 0; + } +.dashboard .panel { + -webkit-box-shadow: none; + box-shadow: none; + } +.panel-primary { + border-color: #3f51b5; + } +.panel-primary > .panel-heading { + color: #fff; + background-color: #3f51b5; + border-color: #3f51b5; + } +.panel-primary > .panel-heading + .panel-collapse .panel-body { + border-top-color: #3f51b5; + } +.panel-primary > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #3f51b5; + } +.panel-success > .panel-body, +.panel-warning > .panel-body, +.panel-primary > .panel-body, +.panel-info > .panel-body, +.panel-danger > .panel-body { + -webkit-box-shadow: none; + box-shadow: none; + } +.table-hover > tbody > tr:hover > td, +.table-hover > tbody > tr:hover > th { + background-color: #eceff1; + } +.table tr > td.active, +.table tr > th.active, +.table tr.active > td, +.table tr.active > th { + background-color: #ffe7bc; + } +table.tablesorter thead tr .headerSortUp:after, +table.tablesorter thead tr .headerSortDown:after { + color: #3949ab !important; + } +.chosen-container-single .chosen-search:focus, +.chosen-container-single .chosen-search input[type="text"]:focus { + border-color: #3949ab !important; + } +.chosen-container-single .chosen-single { + border-radius: 0 !important; + } +.chosen-container-single.chosen-with-drop .chosen-single { + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; + } +.chosen-container-single.chosen-with-drop.chosen-up .chosen-single { + border-top-left-radius: 0 !important; + border-top-right-radius: 0 !important; + border-bottom-right-radius: #3949ab !important; + border-bottom-left-radius: #3949ab !important; + } +.chosen-container .chosen-results li.highlighted { + background-color: #3f51b5 !important; + } +.chosen-container-active .chosen-single { + border-color: #3949ab !important; + } +.chosen-container-active.chosen-with-drop .chosen-single { + border-color: #cbcbcb !important; + border-color: rgba(0, 0, 0, .15) !important; + } +.chosen-container-active .chosen-choices { + border-color: #3949ab !important; + } +.chosen-container-multi .chosen-choices { + border-radius: 0 !important; + } +.chosen-container-multi.chosen-with-drop .chosen-choices { + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; + } +.chosen-container-multi.chosen-with-drop.chosen-up .chosen-choices { + border-top-left-radius: 0 !important; + border-top-right-radius: 0 !important; + border-bottom-right-radius: #3949ab !important; + border-bottom-left-radius: #3949ab !important; + } +.menu > .nav > li > .nav { + background-color: #f6f6f6; + } +.menu > .nav > li > .nav > li > a { + border: 1px solid #ddd; + } +.menu > .nav > li > .nav > li > a:hover, +.menu > .nav > li > .nav > li > a:focus { + background-color: #e4e4e4; + } +.menu > .nav > li > .nav > li.active > a, +.menu > .nav > li > .nav > li.active > a:hover, +.menu > .nav > li > .nav > li.active > a:focus { + color: #fff; + background-color: #3f51b5; + border-color: #3f51b5; + } +.menu > .nav > li:first-child > a, +.menu > .nav > li:first-child.nav-heading { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +.menu > .nav > li:last-child > a { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +.menu > .nav > li:first-child > a, +.menu > .nav > li:first-child.nav-heading { + border-top-left-radius: 0; + border-top-right-radius: 0; + } +.menu > .nav > li.show > a, +.menu > .nav > li.show > a:hover, +.menu > .nav > li.show > a:focus { + color: #353535; + background-color: #fff; + border-color: #ddd; + } +.menu > .nav > li.show > a > [class*='icon-'], +.menu > .nav > li.show > a:hover > [class*='icon-'], +.menu > .nav > li.show > a:focus > [class*='icon-'] { + color: #353535; + } +.menu > .nav > li.show > a:hover { + background-color: #f1f1f1; + } +.menu > .nav > li.show:last-child > a { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +.menu > .nav > li.show:last-child > .nav > li:last-child > a { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +.menu > .nav > li.nav-heading { + background-color: #f1f1f1; + border: 1px solid #ddd; + } +.dropdown-menu { + border-radius: 0; + } +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + background-color: #3f51b5; + } +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + background-color: #3f51b5; + } +.dropdown-submenu:hover > a, +.dropdown-submenu:focus > a { + background-color: #3f51b5; + } +.dropdown-submenu:hover > a:after { + border-left-color: #fff; + } +.datetimepicker td.day.today { + background-color: #f0ad4e !important; + border-color: #f0ad4e !important; + } +.datetimepicker td.day.active { + background-color: #3f51b5 !important; + border-color: #32408f !important; + } +.datetimepicker td.day.active:hover { + background-color: #32408f !important; + } +.datetimepicker td.day.today:hover, +.datetimepicker td.day.today.active:hover { + background-color: #ec971f !important; + } +.ke-container { + border-radius: 0 !important; + } +.ke-container.focus { + border-color: #3949ab !important; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(57, 73, 171, .6) !important; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(57, 73, 171, .6) !important; + } +.ke-menu-item-on { + background-color: #3f51b5 !important; + } +.ke-colorpicker-cell-on { + background-color: #3f51b5 !important; + } +.ke-input-text:focus { + border-color: #3949ab !important; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(57, 73, 171, .6) !important; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(57, 73, 171, .6) !important; + } +.messager { + border-radius: 0; + } +.messager-primary { + background-color: #3f51b5; + } +.messager-success { + background-color: #4caf50; + } +.messager-info { + background-color: #039be5; + } +.messager-warning { + background-color: #f0ad4e; + } +.messager-danger { + background-color: #d9534f; + } +.messager-important { + background-color: #bd7b46; + } +.messager-special { + background-color: #8666b8; + } +.comment:hover > .content > .actions > a { + color: #3949ab; + } +.alert:not(.alert-block) { + border-radius: 0; + } +.alert-primary { + color: #282828; + background-color: #eceff1; + } +.alert-primary hr { + border-top-color: #eceff1; + } +.alert-primary .alert-link { + color: #161616; + } +.alert-success { + color: #449d48; + background-color: #ddf4df; + } +.alert-success hr { + border-top-color: #ddf4df; + } +.alert-success .alert-link { + color: #39843c; + } +.alert-info { + color: #038acc; + background-color: #ddf3f5; + } +.alert-info hr { + border-top-color: #ddf3f5; + } +.alert-info .alert-link { + color: #0272a9; + } +.alert-warning { + color: #eea236; + background-color: #fff0d5; + } +.alert-warning hr { + border-top-color: #fff0d5; + } +.alert-warning .alert-link { + color: #eb9316; + } +.alert-danger { + color: #d43f3a; + background-color: #ffe5e0; + } +.alert-danger hr { + border-top-color: #ffe5e0; + } +.alert-danger .alert-link { + color: #c12e2a; + } +.alert-primary-inverse { + color: #fff; + background-color: #3f51b5; + border-color: #3f51b5; + } +.alert-primary-inverse hr { + border-top-color: #ddd; + border-top-color: rgba(221, 221, 221, .25); + } +.alert-primary-inverse .alert-link { + color: rgba(255, 255, 255, .8); + } +.modal-dialog { + border-radius: 1px; + } +.card { + border-radius: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +pre { + border-radius: 0; + } +.datagrid .datagrid-hover-row .datagrid-row-cell:hover .datagrid-cell, +.datagrid .datagrid-hover-col .datagrid-cell.hover, +.datagrid .datagrid-hover-col .datagrid-row-cell.active .datagrid-cell.hover { + background-color: #eceff1; + } +.datagrid .datagrid-loading > .content > .icon, +.datagrid .datagrid-sort-up > .icon-sort:before, +.datagrid .datagrid-sort-down > .icon-sort:before { + color: #3f51b5; + } +.tree-drag-holder { + background-color: #eceff1; + } +.tree-menu li.active > a { + color: #fff; + background-color: #3f51b5; + border-color: #3f51b5; + } +.tree-menu li.active > .list-toggle { + color: #fff; + } diff --git a/root/res/zui/css/zui-theme.min.css b/root/res/zui/css/zui-theme.min.css new file mode 100644 index 0000000..53322d9 --- /dev/null +++ b/root/res/zui/css/zui-theme.min.css @@ -0,0 +1,6 @@ +/*! + * ZUI: Theme - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */a{color:#3949ab}a:focus,a:hover{color:#263172}.btn{color:#353535;background-color:#fff;border-color:#ccc;border-radius:0}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#353535;background-color:#ebebeb;border-color:#adadad;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#b3b3b3;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#ccc}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#353535;background-color:#ebebeb;border-color:#adadad;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#b3b3b3;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#ccc}.btn-primary{color:#fff;background-color:#3f51b5;border-color:#3e4fb1}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#344397;border-color:#2e3b84;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#2b387c;background-image:none;border-color:#313e8b;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#3f51b5;border-color:#3e4fb1}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#344397;border-color:#2e3b84;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#2b387c;background-image:none;border-color:#313e8b;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#3f51b5;border-color:#3e4fb1}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#f0ab49}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#e89014;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#df8a13;background-image:none;border-color:#ec951a;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#f0ab49}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#e89014;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#df8a13;background-image:none;border-color:#ec951a;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#f0ab49}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d84f4b}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#bd2d29;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#b52b27;background-image:none;border-color:#c52f2b;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d84f4b}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#bd2d29;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#b52b27;background-image:none;border-color:#c52f2b;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d84f4b}.btn-success{color:#fff;background-color:#4caf50;border-color:#4aab4e}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#409343;border-color:#38813b;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#357a38;background-image:none;border-color:#3b883e;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#4caf50;border-color:#4aab4e}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#409343;border-color:#38813b;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#357a38;background-image:none;border-color:#3b883e;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#4caf50;border-color:#4aab4e}.btn-info{color:#fff;background-color:#039be5;border-color:#0398e0}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#fff;background-color:#0280bd;border-color:#026fa4;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#026899;background-image:none;border-color:#0276ae;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#039be5;border-color:#0398e0}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#fff;background-color:#0280bd;border-color:#026fa4;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#026899;background-image:none;border-color:#0276ae;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#039be5;border-color:#0398e0}.btn-link{color:#3949ab;background-color:transparent}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover,.btn-link[disabled],fieldset[disabled] .btn-link{border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:focus,.btn-link:hover{color:#263172}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#ddd}.popover,.tooltip-inner{border-radius:0}.label{border-radius:0}.label-badge{border-radius:12px}.label-dot{border-radius:5px}.label-primary{background-color:#3f51b5}.label-primary[href]:focus,.label-primary[href]:hover{color:#fff;background-color:#32408f}.label-primary.label-circle{color:#3f51b5;background:0 0;border:1px solid #3f51b5}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#32408f}.label-success{background-color:#4caf50}.label-success[href]:focus,.label-success[href]:hover{color:#fff;background-color:#3d8b40}.label-success.label-circle{color:#4caf50;background:0 0;border:1px solid #4caf50}.label-success[href]:focus,.label-success[href]:hover{background-color:#3d8b40}.label-info{background-color:#039be5}.label-info[href]:focus,.label-info[href]:hover{color:#fff;background-color:#0279b3}.label-info.label-circle{color:#039be5;background:0 0;border:1px solid #039be5}.label-info[href]:focus,.label-info[href]:hover{background-color:#0279b3}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{color:#fff;background-color:#ec971f}.label-warning.label-circle{color:#f0ad4e;background:0 0;border:1px solid #f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{color:#fff;background-color:#c9302c}.label-danger.label-circle{color:#d9534f;background:0 0;border:1px solid #d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.btn-primary .label-badge,.btn-primary .label-dot{background-color:#8591d5}.text-primary{color:#3f51b5}.text-primary:hover{color:#32408f}.text-warning{color:#f0ad4e}.text-warning:hover{color:#ec971f}.text-danger{color:#d9534f}.text-danger:hover{color:#c9302c}.text-success{color:#4caf50}.text-success:hover{color:#3d8b40}.text-info{color:#039be5}.text-info:hover{color:#0279b3}.text-important{color:#bd7b46}.text-important:hover{color:#996337}.text-special{color:#8666b8}.text-special:hover{color:#6c4aa1}.text-muted a:active,.text-muted a:hover{color:#3949ab}.text-link:active,.text-link:hover{color:#3949ab}.bg-primary{background-color:#3f51b5}a.bg-primary:hover{background-color:#32408f}.hl-primary{background-color:#eceff1}a.hl-primary:hover{background-color:#cfd6db}.form-control{border-radius:0}.form-control.focus,.form-control:focus{border-color:#3949ab;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(57,73,171,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(57,73,171,.6)}.form-control:focus{border-color:#3949ab;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(57,73,171,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(57,73,171,.6)}.form-condensed .btn,.form-condensed .form-control{border-radius:0}.switch>input:checked+label:before{background-color:#3f51b5;border-color:#3f51b5}.switch input:focus+label{color:#3f51b5}.switch input:focus+label:before{border-color:#3f51b5}.form-control:focus+.input-control-label-left{color:#3949ab}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.input-group-addon{background-color:#f1f1f1}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon{border-radius:0}.input-group-btn.fix-border>.btn{border-radius:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.list-group-item{background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#353535;text-decoration:none;background-color:#eceff1}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{color:#fff;background-color:#3f51b5;border-color:#3f51b5}.list-group-item.active .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#e6e6e6}.list-group-item-heading{color:#333}.navbar-toggle{border-radius:0}@media (min-width:768px){.navbar{border-radius:0}}.navbar-inverse{background-color:#3949ab;border-color:#2c3985}.navbar-inverse .navbar-nav>li.nav-heading{background-color:#334198}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{background-color:#4254c0}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{background-color:#5262c5}.navbar-inverse .navbar-toggle{border-color:#5262c5}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#334198}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#303e90}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#5262c5}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#2c3985}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{background-color:#4254c0}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{background-color:#5262c5}}.navbar-fixed-left.navbar-inverse .navbar-header,.navbar-fixed-left.navbar-inverse .navbar-nav{border-bottom:1px solid #5262c5;-webkit-box-shadow:inset 0 -1px 0 #2c3985;box-shadow:inset 0 -1px 0 #2c3985}.navbar-fixed-left.navbar-inverse.navbar-collapsed .navbar-nav>li.nav-heading:hover{color:#eaeaea;background-color:#2f3c8c}.nav>li>a:focus,.nav>li>a:hover{color:#263172}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{border-color:#3949ab}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{background-color:#3f51b5}.nav-primary>li:first-child>a{border-top-left-radius:0;border-bottom-left-radius:0}.nav-primary>li:last-child>a{border-top-right-radius:0;border-bottom-right-radius:0}.nav-primary>li>a{border:1px solid #ddd}.nav-primary>li.active>a,.nav-primary>li.active>a:focus,.nav-primary>li.active>a:hover{color:#fff;background-color:#3f51b5;border-color:#3f51b5}.nav-secondary>li.active>a,.nav-secondary>li.active>a:focus,.nav-secondary>li.active>a:hover{color:#3f51b5;border-bottom-color:#3f51b5}.nav-stacked.nav-primary>li,.nav-stacked.nav-primary>li>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li:first-child.nav-heading,.nav-stacked.nav-primary>li:first-child>a{border-top-left-radius:0;border-top-right-radius:0}.nav-stacked.nav-primary>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li.nav-heading{background-color:#f1f1f1;border:1px solid #ddd}.nav-stacked.nav-secondary>li>a{border-top-right-radius:0;border-bottom-right-radius:0;-webkit-box-shadow:inset 2px 0 0 #f5f5f5;box-shadow:inset 2px 0 0 #f5f5f5}.nav-stacked.nav-secondary>li>a:hover{-webkit-box-shadow:inset 2px 0 0 #e5e5e5;box-shadow:inset 2px 0 0 #e5e5e5}.nav-stacked.nav-secondary>li.active>a,.nav-stacked.nav-secondary>li.active>a:focus,.nav-stacked.nav-secondary>li.active>a:hover{background-color:#f5f5f5;-webkit-box-shadow:inset 2px 0 0 #3f51b5;box-shadow:inset 2px 0 0 #3f51b5}.nav-stacked.nav-secondary>li.nav-heading{border-bottom:1px solid #ddd}.nav-tabs>li>a{border-radius:0}.pager{border-radius:0}.pager>li>a,.pager>li>span{background-color:#fff;border:1px solid #ddd}.pager>li:first-child>a,.pager>li:first-child>span{border-top-left-radius:0;border-bottom-left-radius:0}.pager>li:last-child>a,.pager>li:last-child>span{border-top-right-radius:0;border-bottom-right-radius:0}.pager>li>a:focus,.pager>li>a:hover,.pager>li>span:focus,.pager>li>span:hover{background-color:#e5e5e5}.pager>li.active>a,.pager>li.active>a:hover,.pager>li.active>span,.pager>li.active>span:hover{color:#fff;background-color:#3f51b5;border-color:#3f51b5}.pager>li.disabled>a,.pager>li.disabled>a:focus,.pager>li.disabled>a:hover,.pager>li.disabled>span,.pager>li.disabled>span:focus,.pager>li.disabled>span:hover{color:#ddd;background-color:#fff;border-color:#ddd}.panel{border-radius:0;-webkit-box-shadow:none;box-shadow:none}.panel>.panel-heading{background-image:none;border-top-left-radius:0;border-top-right-radius:0}.panel-group .panel{border-radius:0}.dashboard .panel{-webkit-box-shadow:none;box-shadow:none}.panel-primary{border-color:#3f51b5}.panel-primary>.panel-heading{color:#fff;background-color:#3f51b5;border-color:#3f51b5}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#3f51b5}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#3f51b5}.panel-danger>.panel-body,.panel-info>.panel-body,.panel-primary>.panel-body,.panel-success>.panel-body,.panel-warning>.panel-body{-webkit-box-shadow:none;box-shadow:none}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#eceff1}.table tr.active>td,.table tr.active>th,.table tr>td.active,.table tr>th.active{background-color:#ffe7bc}table.tablesorter thead tr .headerSortDown:after,table.tablesorter thead tr .headerSortUp:after{color:#3949ab!important}.chosen-container-single .chosen-search input[type=text]:focus,.chosen-container-single .chosen-search:focus{border-color:#3949ab!important}.chosen-container-single .chosen-single{border-radius:0!important}.chosen-container-single.chosen-with-drop .chosen-single{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-single.chosen-with-drop.chosen-up .chosen-single{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#3949ab!important;border-bottom-left-radius:#3949ab!important}.chosen-container .chosen-results li.highlighted{background-color:#3f51b5!important}.chosen-container-active .chosen-single{border-color:#3949ab!important}.chosen-container-active.chosen-with-drop .chosen-single{border-color:#cbcbcb!important;border-color:rgba(0,0,0,.15)!important}.chosen-container-active .chosen-choices{border-color:#3949ab!important}.chosen-container-multi .chosen-choices{border-radius:0!important}.chosen-container-multi.chosen-with-drop .chosen-choices{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-multi.chosen-with-drop.chosen-up .chosen-choices{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#3949ab!important;border-bottom-left-radius:#3949ab!important}.menu>.nav>li>.nav{background-color:#f6f6f6}.menu>.nav>li>.nav>li>a{border:1px solid #ddd}.menu>.nav>li>.nav>li>a:focus,.menu>.nav>li>.nav>li>a:hover{background-color:#e4e4e4}.menu>.nav>li>.nav>li.active>a,.menu>.nav>li>.nav>li.active>a:focus,.menu>.nav>li>.nav>li.active>a:hover{color:#fff;background-color:#3f51b5;border-color:#3f51b5}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:0;border-top-right-radius:0}.menu>.nav>li.show>a,.menu>.nav>li.show>a:focus,.menu>.nav>li.show>a:hover{color:#353535;background-color:#fff;border-color:#ddd}.menu>.nav>li.show>a:focus>[class*=icon-],.menu>.nav>li.show>a:hover>[class*=icon-],.menu>.nav>li.show>a>[class*=icon-]{color:#353535}.menu>.nav>li.show>a:hover{background-color:#f1f1f1}.menu>.nav>li.show:last-child>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li.show:last-child>.nav>li:last-child>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li.nav-heading{background-color:#f1f1f1;border:1px solid #ddd}.dropdown-menu{border-radius:0}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#3f51b5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#3f51b5}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{background-color:#3f51b5}.dropdown-submenu:hover>a:after{border-left-color:#fff}.datetimepicker td.day.today{background-color:#f0ad4e!important;border-color:#f0ad4e!important}.datetimepicker td.day.active{background-color:#3f51b5!important;border-color:#32408f!important}.datetimepicker td.day.active:hover{background-color:#32408f!important}.datetimepicker td.day.today.active:hover,.datetimepicker td.day.today:hover{background-color:#ec971f!important}.ke-container{border-radius:0!important}.ke-container.focus{border-color:#3949ab!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(57,73,171,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(57,73,171,.6)!important}.ke-menu-item-on{background-color:#3f51b5!important}.ke-colorpicker-cell-on{background-color:#3f51b5!important}.ke-input-text:focus{border-color:#3949ab!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(57,73,171,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(57,73,171,.6)!important}.messager{border-radius:0}.messager-primary{background-color:#3f51b5}.messager-success{background-color:#4caf50}.messager-info{background-color:#039be5}.messager-warning{background-color:#f0ad4e}.messager-danger{background-color:#d9534f}.messager-important{background-color:#bd7b46}.messager-special{background-color:#8666b8}.comment:hover>.content>.actions>a{color:#3949ab}.alert:not(.alert-block){border-radius:0}.alert-primary{color:#282828;background-color:#eceff1}.alert-primary hr{border-top-color:#eceff1}.alert-primary .alert-link{color:#161616}.alert-success{color:#449d48;background-color:#ddf4df}.alert-success hr{border-top-color:#ddf4df}.alert-success .alert-link{color:#39843c}.alert-info{color:#038acc;background-color:#ddf3f5}.alert-info hr{border-top-color:#ddf3f5}.alert-info .alert-link{color:#0272a9}.alert-warning{color:#eea236;background-color:#fff0d5}.alert-warning hr{border-top-color:#fff0d5}.alert-warning .alert-link{color:#eb9316}.alert-danger{color:#d43f3a;background-color:#ffe5e0}.alert-danger hr{border-top-color:#ffe5e0}.alert-danger .alert-link{color:#c12e2a}.alert-primary-inverse{color:#fff;background-color:#3f51b5;border-color:#3f51b5}.alert-primary-inverse hr{border-top-color:#ddd;border-top-color:rgba(221,221,221,.25)}.alert-primary-inverse .alert-link{color:rgba(255,255,255,.8)}.modal-dialog{border-radius:1px}.card{border-radius:0;-webkit-box-shadow:none;box-shadow:none}pre{border-radius:0}.datagrid .datagrid-hover-col .datagrid-cell.hover,.datagrid .datagrid-hover-col .datagrid-row-cell.active .datagrid-cell.hover,.datagrid .datagrid-hover-row .datagrid-row-cell:hover .datagrid-cell{background-color:#eceff1}.datagrid .datagrid-loading>.content>.icon,.datagrid .datagrid-sort-down>.icon-sort:before,.datagrid .datagrid-sort-up>.icon-sort:before{color:#3f51b5}.tree-drag-holder{background-color:#eceff1}.tree-menu li.active>a{color:#fff;background-color:#3f51b5;border-color:#3f51b5}.tree-menu li.active>.list-toggle{color:#fff} \ No newline at end of file diff --git a/root/res/zui/css/zui.css b/root/res/zui/css/zui.css new file mode 100644 index 0000000..2ec96fd --- /dev/null +++ b/root/res/zui/css/zui.css @@ -0,0 +1,8714 @@ +/*! + * ZUI: Standard edition - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +/*! Some code copy from Bootstrap v3.0.0 by @fat and @mdo. (Copyright 2013 Twitter, Inc. Licensed under http://www.apache.org/licenses/)*/ + +/*! normalize.css v2.1.3 | MIT License | git.io/normalize */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; + } +audio, +canvas, +video { + display: inline-block; + } +audio:not([controls]) { + display: none; + height: 0; + } +[hidden], +template { + display: none; + } +html { + font-family: sans-serif; + + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; + } +body { + margin: 0; + } +a { + background: transparent; + } +a:focus { + outline: thin dotted; + } +a:active, +a:hover { + outline: 0; + } +h1 { + margin: .67em 0; + font-size: 2em; + } +abbr[title] { + border-bottom: 1px dotted; + } +b, +strong { + font-weight: bold; + } +dfn { + font-style: italic; + } +hr { + height: 0; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + } +mark { + color: #000; + background: #ff0; + } +code, +kbd, +pre, +samp { + font-family: monospace, serif; + font-size: 1em; + } +pre { + white-space: pre-wrap; + } +q { + quotes: "\201C" "\201D" "\2018" "\2019"; + } +small { + font-size: 80%; + } +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; + } +sup { + top: -.5em; + } +sub { + bottom: -.25em; + } +img { + border: 0; + } +svg:not(:root) { + overflow: hidden; + } +figure { + margin: 0; + } +fieldset { + padding: .35em .625em .75em; + margin: 0 2px; + border: 1px solid #c0c0c0; + } +legend { + padding: 0; + border: 0; + } +button, +input, +select, +textarea { + margin: 0; + font-family: inherit; + font-size: 100%; + } +button, +input { + line-height: normal; + } +button, +select { + text-transform: none; + } +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; + } +button[disabled], +html input[disabled] { + cursor: default; + } +input[type="checkbox"], +input[type="radio"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; + } +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-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; + } +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; + } +textarea { + overflow: auto; + vertical-align: top; + } +table { + border-spacing: 0; + border-collapse: collapse; + } +.clearfix:before, +.clearfix:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.container-fixed:before, +.container-fixed:after, +.container-fixed-md:before, +.container-fixed-md:after, +.container-fixed-sm:before, +.container-fixed-sm:after, +.container-fixed-xs:before, +.container-fixed-xs:after, +.row:before, +.row:after, +.dl-horizontal dd:before, +.dl-horizontal dd:after, +.btn-toolbar:before, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after, +.panel-body:before, +.panel-body:after, +.pager-justify:before, +.pager-justify:after, +.pager-loose:before, +.pager-loose:after, +.nav:before, +.nav:after, +.navbar:before, +.navbar:after, +.navbar-header:before, +.navbar-header:after, +.navbar-collapse:before, +.navbar-collapse:after, +.modal-header:before, +.modal-header:after, +.modal-footer:before, +.modal-footer:after, +.cards:before, +.cards:after, +.btn-group-vertical > .btn-group-vertical:before, +.btn-group-vertical > .btn-group-vertical:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.clearfix:after, +.container:after, +.container-fluid:after, +.container-fixed:after, +.container-fixed-md:after, +.container-fixed-sm:after, +.container-fixed-xs:after, +.row:after, +.dl-horizontal dd:after, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:after, +.form-horizontal .form-group:after, +.panel-body:after, +.pager-justify:after, +.pager-loose:after, +.nav:after, +.navbar:after, +.navbar-header:after, +.navbar-collapse:after, +.modal-header:after, +.modal-footer:after, +.cards:after, +.btn-group-vertical > .btn-group-vertical:after { + clear: both; + } +.center-block { + display: block; + margin-right: auto; + margin-left: auto; + } +.pull-right { + float: right !important; + } +.pull-left { + float: left !important; + } +.hide { + display: none; + } +.showing { + display: block; + } +.hidden { + display: none!important; + visibility: hidden !important; + } +.show { + display: block!important; + visibility: visible !important; + } +.invisible { + visibility: hidden; + } +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; + } +.affix { + position: fixed; + } +.with-padding { + padding: 5px 12px; + } +.no-padding { + padding: 0!important; + } +.visible-xs, +.inline.visible-xs, +.inline-block.visible-xs, +tr.visible-xs, +th.visible-xs, +td.visible-xs { + display: none !important; + } +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + .inline.visible-xs { + display: inline !important; + } + .inline-block.visible-xs { + display: inline-block !important; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .visible-xs.visible-sm { + display: block !important; + } + .inline.visible-xs.visible-sm { + display: inline !important; + } + .inline-block.visible-xs.visible-sm { + display: inline-block !important; + } + tr.visible-xs.visible-sm { + display: table-row !important; + } + th.visible-xs.visible-sm, + td.visible-xs.visible-sm { + display: table-cell !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .visible-xs.visible-md { + display: block !important; + } + .inline.visible-xs.visible-md { + display: inline !important; + } + .inline-block.visible-xs.visible-md { + display: inline-block !important; + } + tr.visible-xs.visible-md { + display: table-row !important; + } + th.visible-xs.visible-md, + td.visible-xs.visible-md { + display: table-cell !important; + } + } +@media (min-width: 1200px) { + .visible-xs.visible-lg { + display: block !important; + } + .inline.visible-xs.visible-lg { + display: inline !important; + } + .inline-block.visible-xs.visible-lg { + display: inline-block !important; + } + tr.visible-xs.visible-lg { + display: table-row !important; + } + th.visible-xs.visible-lg, + td.visible-xs.visible-lg { + display: table-cell !important; + } + } +.visible-sm, +.inline.visible-sm, +.inline-block.visible-sm, +tr.visible-sm, +th.visible-sm, +td.visible-sm { + display: none !important; + } +@media (max-width: 767px) { + .visible-sm.visible-xs { + display: block !important; + } + .inline.visible-sm.visible-xs { + display: inline !important; + } + .inline-block.visible-sm.visible-xs { + display: inline-block !important; + } + tr.visible-sm.visible-xs { + display: table-row !important; + } + th.visible-sm.visible-xs, + td.visible-sm.visible-xs { + display: table-cell !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + .inline.visible-sm { + display: inline !important; + } + .inline-block.visible-sm { + display: inline-block !important; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .visible-sm.visible-md { + display: block !important; + } + .inline.visible-sm.visible-md { + display: inline !important; + } + .inline-block.visible-sm.visible-md { + display: inline-block !important; + } + tr.visible-sm.visible-md { + display: table-row !important; + } + th.visible-sm.visible-md, + td.visible-sm.visible-md { + display: table-cell !important; + } + } +@media (min-width: 1200px) { + .visible-sm.visible-lg { + display: block !important; + } + .inline.visible-sm.visible-lg { + display: inline !important; + } + .inline-block.visible-sm.visible-lg { + display: inline-block !important; + } + tr.visible-sm.visible-lg { + display: table-row !important; + } + th.visible-sm.visible-lg, + td.visible-sm.visible-lg { + display: table-cell !important; + } + } +.visible-md, +.inline.visible-md, +.inline-block.visible-md, +tr.visible-md, +th.visible-md, +td.visible-md { + display: none !important; + } +@media (max-width: 767px) { + .visible-md.visible-xs { + display: block !important; + } + .inline.visible-md.visible-xs { + display: inline !important; + } + .inline-block.visible-md.visible-xs { + display: inline-block !important; + } + tr.visible-md.visible-xs { + display: table-row !important; + } + th.visible-md.visible-xs, + td.visible-md.visible-xs { + display: table-cell !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .visible-md.visible-sm { + display: block !important; + } + .inline.visible-md.visible-sm { + display: inline !important; + } + .inline-block.visible-md.visible-sm { + display: inline-block !important; + } + tr.visible-md.visible-sm { + display: table-row !important; + } + th.visible-md.visible-sm, + td.visible-md.visible-sm { + display: table-cell !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + .inline.visible-md { + display: inline !important; + } + .inline-block.visible-md { + display: inline-block !important; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } + } +@media (min-width: 1200px) { + .visible-md.visible-lg { + display: block !important; + } + .inline.visible-md.visible-lg { + display: inline !important; + } + .inline-block.visible-md.visible-lg { + display: inline-block !important; + } + tr.visible-md.visible-lg { + display: table-row !important; + } + th.visible-md.visible-lg, + td.visible-md.visible-lg { + display: table-cell !important; + } + } +.visible-lg, +.inline.visible-lg, +.inline-block.visible-lg, +tr.visible-lg, +th.visible-lg, +td.visible-lg { + display: none !important; + } +@media (max-width: 767px) { + .visible-lg.visible-xs { + display: block !important; + } + .inline.visible-lg.visible-xs { + display: inline !important; + } + .inline-block.visible-lg.visible-xs { + display: inline-block !important; + } + tr.visible-lg.visible-xs { + display: table-row !important; + } + th.visible-lg.visible-xs, + td.visible-lg.visible-xs { + display: table-cell !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .visible-lg.visible-sm { + display: block !important; + } + .inline.visible-lg.visible-sm { + display: inline !important; + } + .inline-block.visible-lg.visible-sm { + display: inline-block !important; + } + tr.visible-lg.visible-sm { + display: table-row !important; + } + th.visible-lg.visible-sm, + td.visible-lg.visible-sm { + display: table-cell !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .visible-lg.visible-md { + display: block !important; + } + .inline.visible-lg.visible-md { + display: inline !important; + } + .inline-block.visible-lg.visible-md { + display: inline-block !important; + } + tr.visible-lg.visible-md { + display: table-row !important; + } + th.visible-lg.visible-md, + td.visible-lg.visible-md { + display: table-cell !important; + } + } +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + .inline.visible-lg { + display: inline !important; + } + .inline-block.visible-lg { + display: inline-block !important; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } + } +.hidden-xs { + display: block !important; + } +.inline.hidden-xs { + display: inline !important; + } +.inline-block.hidden-xs { + display: inline-block !important; + } +tr.hidden-xs { + display: table-row !important; + } +th.hidden-xs, +td.hidden-xs { + display: table-cell !important; + } +@media (max-width: 767px) { + .hidden-xs, + .inline.hidden-xs, + .inline-block.hidden-xs, + tr.hidden-xs, + th.hidden-xs, + td.hidden-xs { + display: none !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .hidden-xs.hidden-sm, + .inline.hidden-xs.hidden-sm, + .inline-block.hidden-xs.hidden-sm, + tr.hidden-xs.hidden-sm, + th.hidden-xs.hidden-sm, + td.hidden-xs.hidden-sm { + display: none !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-xs.hidden-md, + .inline.hidden-xs.hidden-md, + .inline-block.hidden-xs.hidden-md, + tr.hidden-xs.hidden-md, + th.hidden-xs.hidden-md, + td.hidden-xs.hidden-md { + display: none !important; + } + } +@media (min-width: 1200px) { + .hidden-xs.hidden-lg, + .inline.hidden-xs.hidden-lg, + .inline-block.hidden-xs.hidden-lg, + tr.hidden-xs.hidden-lg, + th.hidden-xs.hidden-lg, + td.hidden-xs.hidden-lg { + display: none !important; + } + } +.hidden-sm { + display: block !important; + } +.inline.hidden-sm { + display: inline !important; + } +.inline-block.hidden-sm { + display: inline-block !important; + } +tr.hidden-sm { + display: table-row !important; + } +th.hidden-sm, +td.hidden-sm { + display: table-cell !important; + } +@media (max-width: 767px) { + .hidden-sm.hidden-xs, + .inline.hidden-sm.hidden-xs, + .inline-block.hidden-sm.hidden-xs, + tr.hidden-sm.hidden-xs, + th.hidden-sm.hidden-xs, + td.hidden-sm.hidden-xs { + display: none !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm, + .inline.hidden-sm, + .inline-block.hidden-sm, + tr.hidden-sm, + th.hidden-sm, + td.hidden-sm { + display: none !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-sm.hidden-md, + .inline.hidden-sm.hidden-md, + .inline-block.hidden-sm.hidden-md, + tr.hidden-sm.hidden-md, + th.hidden-sm.hidden-md, + td.hidden-sm.hidden-md { + display: none !important; + } + } +@media (min-width: 1200px) { + .hidden-sm.hidden-lg, + .inline.hidden-sm.hidden-lg, + .inline-block.hidden-sm.hidden-lg, + tr.hidden-sm.hidden-lg, + th.hidden-sm.hidden-lg, + td.hidden-sm.hidden-lg { + display: none !important; + } + } +.hidden-md { + display: block !important; + } +.inline.hidden-md { + display: inline !important; + } +.inline-block.hidden-md { + display: inline-block !important; + } +tr.hidden-md { + display: table-row !important; + } +th.hidden-md, +td.hidden-md { + display: table-cell !important; + } +@media (max-width: 767px) { + .hidden-md.hidden-xs, + .inline.hidden-md.hidden-xs, + .inline-block.hidden-md.hidden-xs, + tr.hidden-md.hidden-xs, + th.hidden-md.hidden-xs, + td.hidden-md.hidden-xs { + display: none !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .hidden-md.hidden-sm, + .inline.hidden-md.hidden-sm, + .inline-block.hidden-md.hidden-sm, + tr.hidden-md.hidden-sm, + th.hidden-md.hidden-sm, + td.hidden-md.hidden-sm { + display: none !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md, + .inline.hidden-md, + .inline-block.hidden-md, + tr.hidden-md, + th.hidden-md, + td.hidden-md { + display: none !important; + } + } +@media (min-width: 1200px) { + .hidden-md.hidden-lg, + .inline.hidden-md.hidden-lg, + .inline-block.hidden-md.hidden-lg, + tr.hidden-md.hidden-lg, + th.hidden-md.hidden-lg, + td.hidden-md.hidden-lg { + display: none !important; + } + } +.hidden-lg { + display: block !important; + } +.inline.hidden-lg { + display: inline !important; + } +.inline-block.hidden-lg { + display: inline-block !important; + } +tr.hidden-lg { + display: table-row !important; + } +th.hidden-lg, +td.hidden-lg { + display: table-cell !important; + } +@media (max-width: 767px) { + .hidden-lg.hidden-xs, + .inline.hidden-lg.hidden-xs, + .inline-block.hidden-lg.hidden-xs, + tr.hidden-lg.hidden-xs, + th.hidden-lg.hidden-xs, + td.hidden-lg.hidden-xs { + display: none !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .hidden-lg.hidden-sm, + .inline.hidden-lg.hidden-sm, + .inline-block.hidden-lg.hidden-sm, + tr.hidden-lg.hidden-sm, + th.hidden-lg.hidden-sm, + td.hidden-lg.hidden-sm { + display: none !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-lg.hidden-md, + .inline.hidden-lg.hidden-md, + .inline-block.hidden-lg.hidden-md, + tr.hidden-lg.hidden-md, + th.hidden-lg.hidden-md, + td.hidden-lg.hidden-md { + display: none !important; + } + } +@media (min-width: 1200px) { + .hidden-lg, + .inline.hidden-lg, + .inline-block.hidden-lg, + tr.hidden-lg, + th.hidden-lg, + td.hidden-lg { + display: none !important; + } + } +.visible-print, +.inline.visible-print, +.inline-block.visible-print, +tr.visible-print, +th.visible-print, +td.visible-print { + display: none !important; + } +@media print { + .visible-print { + display: block !important; + } + .inline.visible-print { + display: inline !important; + } + .inline-block.visible-print { + display: inline-block !important; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } + .hidden-print, + .inline.hidden-print, + .inline-block.hidden-print, + tr.hidden-print, + th.hidden-print, + td.hidden-print { + display: none !important; + } + } +*, +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } +html { + font-size: 10px; + + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + } +body { + font-family: "Helvetica Neue", Helvetica, Tahoma, Arial, 'Microsoft Yahei', 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; + font-size: 13px; + line-height: 1.53846154; + color: #353535; + background-color: #fff; + } +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; + } +a { + color: #145ccd; + text-decoration: none; + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +a:hover, +a:focus { + color: #0d3d88; + text-decoration: underline; + } +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; + } +a.disabled, +a.disabled:hover, +a.disabled:focus, +a[disabled], +a[disabled]:hover, +a[disabled]:focus { + color: #aaa; + text-decoration: none; + cursor: default; + } +audio, +canvas, +img, +video { + max-width: 100%; + vertical-align: middle; + } +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0 0 0 0); + border: 0; + } +::-moz-selection { + text-shadow: none; + background: #b3d4fc; + } +::selection { + text-shadow: none; + background: #b3d4fc; + } +fieldset { + padding: 0; + margin: 0; + border: 0; + } +textarea { + resize: vertical; + } +ol, +ul { + padding-left: 20px; + } +.container, +.container-fluid, +.container-fixed, +.container-fixed-md, +.container-fixed-sm, +.container-fixed-xs { + padding-right: 10px; + padding-left: 10px; + margin-right: auto; + margin-left: auto; + } +@media (min-width: 768px) { + .container { + max-width: 740px; + } + } +@media (min-width: 992px) { + .container { + max-width: 960px; + } + } +@media (min-width: 1200px) { + .container { + max-width: 1160px; + } + } +.container-fixed { + width: 1160px; + } +.container-fixed-md { + width: 960px; + } +.container-fixed-sm { + width: 740px; + } +.container-fixed-xs { + width: 440px; + } +.row { + margin-right: -10px; + margin-left: -10px; + } +.col, +.col-xs-1, +.col-xs-2, +.col-xs-3, +.col-xs-4, +.col-xs-5, +.col-xs-6, +.col-xs-7, +.col-xs-8, +.col-xs-9, +.col-xs-10, +.col-xs-11, +.col-xs-12, +.col-sm-1, +.col-sm-2, +.col-sm-3, +.col-sm-4, +.col-sm-5, +.col-sm-6, +.col-sm-7, +.col-sm-8, +.col-sm-9, +.col-sm-10, +.col-sm-11, +.col-sm-12, +.col-md-1, +.col-md-2, +.col-md-3, +.col-md-4, +.col-md-5, +.col-md-6, +.col-md-7, +.col-md-8, +.col-md-9, +.col-md-10, +.col-md-11, +.col-md-12, +.col-lg-1, +.col-lg-2, +.col-lg-3, +.col-lg-4, +.col-lg-5, +.col-lg-6, +.col-lg-7, +.col-lg-8, +.col-lg-9, +.col-lg-10, +.col-lg-11, +.col-lg-12 { + position: relative; + min-height: 1px; + padding-right: 10px; + padding-left: 10px; + } +.col, +.col-xs, +.col-xs-1, +.col-xs-2, +.col-xs-3, +.col-xs-4, +.col-xs-5, +.col-xs-6, +.col-xs-7, +.col-xs-8, +.col-xs-9, +.col-xs-10, +.col-xs-11, +.col-xs-12 { + float: left; + } +.col-xs-1 { + width: 8.33333333%; + } +.col-xs-2 { + width: 16.66666667%; + } +.col-xs-3 { + width: 25%; + } +.col-xs-4 { + width: 33.33333333%; + } +.col-xs-5 { + width: 41.66666667%; + } +.col-xs-6 { + width: 50%; + } +.col-xs-7 { + width: 58.33333333%; + } +.col-xs-8 { + width: 66.66666667%; + } +.col-xs-9 { + width: 75%; + } +.col-xs-10 { + width: 83.33333333%; + } +.col-xs-11 { + width: 91.66666667%; + } +.col-xs-12 { + width: 100%; + } +@media (min-width: 768px) { + .col-sm-1, + .col-sm-2, + .col-sm-3, + .col-sm-4, + .col-sm-5, + .col-sm-6, + .col-sm-7, + .col-sm-8, + .col-sm-9, + .col-sm-10, + .col-sm-11, + .col-sm-12 { + float: left; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-12 { + width: 100%; + } + .col-sm-push-1 { + left: 8.33333333%; + } + .col-sm-push-2 { + left: 16.66666667%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-4 { + left: 33.33333333%; + } + .col-sm-push-5 { + left: 41.66666667%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-7 { + left: 58.33333333%; + } + .col-sm-push-8 { + left: 66.66666667%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-10 { + left: 83.33333333%; + } + .col-sm-push-11 { + left: 91.66666667%; + } + .col-sm-pull-1 { + right: 8.33333333%; + } + .col-sm-pull-2 { + right: 16.66666667%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-4 { + right: 33.33333333%; + } + .col-sm-pull-5 { + right: 41.66666667%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-7 { + right: 58.33333333%; + } + .col-sm-pull-8 { + right: 66.66666667%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-10 { + right: 83.33333333%; + } + .col-sm-pull-11 { + right: 91.66666667%; + } + .col-sm-offset-1 { + margin-left: 8.33333333%; + } + .col-sm-offset-2 { + margin-left: 16.66666667%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-4 { + margin-left: 33.33333333%; + } + .col-sm-offset-5 { + margin-left: 41.66666667%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-7 { + margin-left: 58.33333333%; + } + .col-sm-offset-8 { + margin-left: 66.66666667%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-10 { + margin-left: 83.33333333%; + } + .col-sm-offset-11 { + margin-left: 91.66666667%; + } + } +@media (min-width: 992px) { + .col-md-1, + .col-md-2, + .col-md-3, + .col-md-4, + .col-md-5, + .col-md-6, + .col-md-7, + .col-md-8, + .col-md-9, + .col-md-10, + .col-md-11, + .col-md-12 { + float: left; + } + .col-md-1 { + width: 8.33333333%; + } + .col-md-2 { + width: 16.66666667%; + } + .col-md-3 { + width: 25%; + } + .col-md-4 { + width: 33.33333333%; + } + .col-md-5 { + width: 41.66666667%; + } + .col-md-6 { + width: 50%; + } + .col-md-7 { + width: 58.33333333%; + } + .col-md-8 { + width: 66.66666667%; + } + .col-md-9 { + width: 75%; + } + .col-md-10 { + width: 83.33333333%; + } + .col-md-11 { + width: 91.66666667%; + } + .col-md-12 { + width: 100%; + } + .col-md-push-0 { + left: auto; + } + .col-md-push-1 { + left: 8.33333333%; + } + .col-md-push-2 { + left: 16.66666667%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-4 { + left: 33.33333333%; + } + .col-md-push-5 { + left: 41.66666667%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-7 { + left: 58.33333333%; + } + .col-md-push-8 { + left: 66.66666667%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-10 { + left: 83.33333333%; + } + .col-md-push-11 { + left: 91.66666667%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-pull-1 { + right: 8.33333333%; + } + .col-md-pull-2 { + right: 16.66666667%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-4 { + right: 33.33333333%; + } + .col-md-pull-5 { + right: 41.66666667%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-7 { + right: 58.33333333%; + } + .col-md-pull-8 { + right: 66.66666667%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-10 { + right: 83.33333333%; + } + .col-md-pull-11 { + right: 91.66666667%; + } + .col-md-offset-0 { + margin-left: 0; + } + .col-md-offset-1 { + margin-left: 8.33333333%; + } + .col-md-offset-2 { + margin-left: 16.66666667%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-4 { + margin-left: 33.33333333%; + } + .col-md-offset-5 { + margin-left: 41.66666667%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-7 { + margin-left: 58.33333333%; + } + .col-md-offset-8 { + margin-left: 66.66666667%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-10 { + margin-left: 83.33333333%; + } + .col-md-offset-11 { + margin-left: 91.66666667%; + } + } +@media (min-width: 1200px) { + .col-lg-1, + .col-lg-2, + .col-lg-3, + .col-lg-4, + .col-lg-5, + .col-lg-6, + .col-lg-7, + .col-lg-8, + .col-lg-9, + .col-lg-10, + .col-lg-11, + .col-lg-12 { + float: left; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-12 { + width: 100%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-push-1 { + left: 8.33333333%; + } + .col-lg-push-2 { + left: 16.66666667%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-4 { + left: 33.33333333%; + } + .col-lg-push-5 { + left: 41.66666667%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-7 { + left: 58.33333333%; + } + .col-lg-push-8 { + left: 66.66666667%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-10 { + left: 83.33333333%; + } + .col-lg-push-11 { + left: 91.66666667%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-pull-1 { + right: 8.33333333%; + } + .col-lg-pull-2 { + right: 16.66666667%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-4 { + right: 33.33333333%; + } + .col-lg-pull-5 { + right: 41.66666667%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-7 { + right: 58.33333333%; + } + .col-lg-pull-8 { + right: 66.66666667%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-10 { + right: 83.33333333%; + } + .col-lg-pull-11 { + right: 91.66666667%; + } + .col-lg-offset-0 { + margin-left: 0; + } + .col-lg-offset-1 { + margin-left: 8.33333333%; + } + .col-lg-offset-2 { + margin-left: 16.66666667%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-4 { + margin-left: 33.33333333%; + } + .col-lg-offset-5 { + margin-left: 41.66666667%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-7 { + margin-left: 58.33333333%; + } + .col-lg-offset-8 { + margin-left: 66.66666667%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-10 { + margin-left: 83.33333333%; + } + .col-lg-offset-11 { + margin-left: 91.66666667%; + } + } +p { + margin: 0 0 10px; + } +.lead { + margin-bottom: 20px; + font-size: 14px; + line-height: 1.4; + } +@media (min-width: 768px) { + .lead { + font-size: 19.5px; + } + } +small, +.small { + font-size: 85%; + } +cite { + font-style: normal; + } +.text-gray, +.text-muted { + color: #808080; + } +.text-gray a, +.text-muted a { + color: #737373; + } +.text-gray a:hover, +.text-muted a:hover, +.text-gray a:active, +.text-muted a:active { + color: #145ccd; + } +.text-primary { + color: #3280fc; + } +.text-yellow, +.text-warning { + color: #f1a325; + } +.text-red, +.text-danger { + color: #ea644a; + } +.text-green, +.text-success { + color: #38b03f; + } +.text-blue, +.text-info { + color: #03b8cf; + } +.text-brown, +.text-important { + color: #bd7b46; + } +.text-purple, +.text-special { + color: #8666b8; + } +.text-link { + color: #353535; + } +.text-link:hover, +.text-link:active { + color: #145ccd; + } +.text-left { + text-align: left; + } +.text-right { + text-align: right; + } +.text-center { + text-align: center; + } +.text-nowrap, +.nobr { + overflow: hidden; + white-space: nowrap; + } +.text-ellipsis { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } +ul, +ol { + margin-top: 0; + margin-bottom: 10px; + } +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; + } +.list-unstyled { + padding-left: 0; + list-style: none; + } +dl { + margin-bottom: 20px; + } +dt, +dd { + line-height: 1.53846154; + } +dt { + font-weight: bold; + } +dd { + margin-left: 0; + } +.dl-inline:before, +.dl-inline:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.dl-inline:after { + clear: both; + } +.dl-inline:before, +.dl-inline:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.dl-inline:after { + clear: both; + } +.dl-inline dt { + display: inline-block; + } +.dl-inline dd { + display: inline-block; + padding-right: 1em; + } +.dl-inline dd:last-child { + padding-right: 0; + } +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } + } +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 16.25px; + border-left: 5px solid #e5e5e5; + } +blockquote p, +blockquote ul, +blockquote ol { + font-weight: 300; + } +blockquote p:last-child, +blockquote ul:last-child, +blockquote ol:last-child { + margin-bottom: 0; + } +blockquote small { + display: block; + line-height: 1.53846154; + color: #808080; + } +blockquote small:before { + content: '\2014 \00A0'; + } +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #e5e5e5; + border-left: 0; + } +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; + } +blockquote.pull-right small:before { + content: ''; + } +blockquote.pull-right small:after { + content: '\00A0 \2014'; + } +.ol-pd-2 { + padding-left: 40px; + } +.ol-pd-3 { + padding-left: 60px; + } +.ol-pd-4 { + padding-left: 80px; + } +.bg-black, +.bg-default { + color: #fff; + background-color: #353535; + } +.bg-primary { + color: #fff; + background-color: #3280fc; + } +.bg-green, +.bg-success { + color: #fff; + background-color: #38b03f; + } +.bg-blue, +.bg-info { + color: #fff; + background-color: #03b8cf; + } +.bg-yellow, +.bg-warning { + color: #fff; + background-color: #f1a325; + } +.bg-red, +.bg-danger { + color: #fff; + background-color: #ea644a; + } +.bg-brown, +.bg-important { + color: #fff; + background-color: #bd7b46; + } +.bg-purple, +.bg-special { + color: #fff; + background-color: #8666b8; + } +.hl-gray, +.hl-default { + background-color: #f1f1f1; + } +.hl-primary { + background-color: #ebf2f9; + } +.hl-green, +.hl-success { + background-color: #ddf4df; + } +.hl-blue, +.hl-info { + background-color: #ddf3f5; + } +.hl-yellow, +.hl-warning { + background-color: #fff0d5; + } +.hl-red, +.hl-danger { + background-color: #ffe5e0; + } +.hl-brown, +.hl-important { + background-color: #f7ebe1; + } +.hl-purple, +.hl-special { + background-color: #f5eeff; + } +.page-header, +.header-dividing { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #e5e5e5; + } +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: "Helvetica Neue", Helvetica, Tahoma, Arial, 'Microsoft Yahei', 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; + font-weight: bold; + line-height: 1.1; + color: inherit; + } +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + line-height: 1; + color: #808080; + } +h1, +h2, +h3 { + margin-top: 20px; + margin-bottom: 10px; + } +h1 small, +h2 small, +h3 small { + font-size: 65%; + } +h4, +h5, +h6 { + margin-top: 10px; + margin-bottom: 10px; + } +h4 small, +h5 small, +h6 small { + font-size: 75%; + } +h1 { + font-size: 26px; + } +h2 { + font-size: 20px; + } +h3 { + font-size: 16px; + } +h4 { + font-size: 14px; + } +h5 { + font-size: 13px; + } +h6 { + font-size: 12px; + } +.btn { + display: inline-block; + padding: 5px 12px; + margin-bottom: 0; + font-size: 13px; + font-weight: normal; + line-height: 1.53846154; + text-align: center; + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border: 1px solid transparent; + border-radius: 4px; + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; + } +.btn:hover, +.btn:focus { + color: #353535; + text-decoration: none; + } +.btn:active, +.btn.active { + background-image: none; + outline: none; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + } +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + pointer-events: none; + cursor: not-allowed; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; + opacity: .65; + } +.btn { + color: #353535; + text-shadow: 0 1px 0 #fff; + background-color: #f2f2f2; + border-color: #bfbfbf; + } +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + color: #353535; + background-color: #dedede; + border-color: #a1a1a1; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + background-color: #ccc; + background-image: none; + border-color: #a6a6a6; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn, +.btn.disabled:hover, +.btn[disabled]:hover, +fieldset[disabled] .btn:hover, +.btn.disabled:focus, +.btn[disabled]:focus, +fieldset[disabled] .btn:focus, +.btn.disabled:active, +.btn[disabled]:active, +fieldset[disabled] .btn:active, +.btn.disabled.active, +.btn[disabled].active, +fieldset[disabled] .btn.active { + background-color: #f2f2f2; + border-color: #bfbfbf; + } +.btn-primary { + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); + background-color: #3280fc; + border-color: #1970fc; + } +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + color: #fff; + background-color: #0a67fb; + border-color: #0354d4; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + background-color: #0358de; + background-image: none; + border-color: #0358de; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #3280fc; + border-color: #1970fc; + } +.btn-warning { + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); + background-color: #f1a325; + border-color: #ed980f; + } +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + color: #fff; + background-color: #df8f0e; + border-color: #b4730c; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + background-color: #bd7a0c; + background-image: none; + border-color: #bd7a0c; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f1a325; + border-color: #ed980f; + } +.btn-danger { + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); + background-color: #ea644a; + border-color: #e75033; + } +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + color: #fff; + background-color: #e64525; + border-color: #c63317; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + background-color: #cf3618; + background-image: none; + border-color: #cf3618; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #ea644a; + border-color: #e75033; + } +.btn-success { + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); + background-color: #38b03f; + border-color: #329d38; + } +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + color: #fff; + background-color: #2e9134; + border-color: #236e27; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + background-color: #26762a; + background-image: none; + border-color: #26762a; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #38b03f; + border-color: #329d38; + } +.btn-info { + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); + background-color: #03b8cf; + border-color: #03a2b6; + } +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + color: #fff; + background-color: #0294a7; + border-color: #026c7a; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + background-color: #027584; + background-image: none; + border-color: #027584; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #03b8cf; + border-color: #03a2b6; + } +.btn-link { + font-weight: normal; + color: #145ccd; + text-shadow: none; + cursor: pointer; + background: none; + -webkit-box-shadow: none; + box-shadow: none; + } +.btn-link, +.btn-link:active, +.btn-link[disabled], +fieldset[disabled] .btn-link, +.btn-link:hover, +.btn-link:focus { + border-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; + } +.btn-link:hover, +.btn-link:focus { + color: #0d3d88; + } +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #ddd; + text-decoration: none; + } +.btn-lg { + padding: 10px 16px; + font-size: 17px; + line-height: 1.25; + border-radius: 4px; + } +.btn-sm, +.btn-xs, +.btn-mini { + padding: 2px 8px; + font-size: 12px; + line-height: 1.5; + border-radius: 4px; + } +.btn-xs, +.btn-mini { + padding: 1px 5px; + } +.btn-block { + display: block; + width: 100%; + } +.btn-block + .btn-block { + margin-top: 5px; + } +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; + } +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; + } +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; + } +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn:hover, +.btn-group-vertical > .btn:focus, +.btn-group-vertical > .btn:active, +.btn-group-vertical > .btn.active { + z-index: 2; + } +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus { + outline: none; + } +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group, +.btn-group-vertical .btn + .btn, +.btn-group-vertical .btn + .btn-group-vertical, +.btn-group-vertical .btn-group-vertical + .btn, +.btn-group-vertical .btn-group-vertical + .btn-group-vertical { + margin-left: -1px; + } +.btn-toolbar { + margin-left: -5px; + } +.btn-toolbar .btn, +.btn-toolbar .btn-group, +.btn-toolbar .input-group, +.btn-toolbar .btn-group-vertical { + float: left; + } +.btn-toolbar > .btn, +.btn-toolbar > .btn-group, +.btn-toolbar > .input-group, +.btn-toolbar > .btn-group-vertical { + margin-left: 5px; + } +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle), +.btn-group-vertical > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; + } +.btn-group > .btn:first-child, +.btn-group-vertical > .btn:first-child { + margin-left: 0; + } +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle), +.btn-group-vertical > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child), +.btn-group-vertical > .btn:last-child:not(:first-child), +.btn-group-vertical > .dropdown-toggle:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } +.btn-group > .btn-group, +.btn-group-vertical > .btn-group-vertical { + float: left; + } +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn, +.btn-group-vertical > .btn-group-vertical:not(:first-child):not(:last-child) > .btn { + border-radius: 0; + } +.btn-group > .btn-group:first-child > .btn:last-child, +.btn-group > .btn-group:first-child > .dropdown-toggle, +.btn-group-vertical > .btn-group-vertical:first-child > .btn:last-child, +.btn-group-vertical > .btn-group-vertical:first-child > .dropdown-toggle { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } +.btn-group > .btn-group:last-child > .btn:first-child, +.btn-group-vertical > .btn-group-vertical:last-child > .btn:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle, +.btn-group-vertical .dropdown-toggle:active, +.btn-group-vertical.open .dropdown-toggle { + outline: 0; + } +.btn-group-xs > .btn { + padding: 2px 8px; + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 4px; + } +.btn-group-sm > .btn { + padding: 2px 8px; + font-size: 12px; + line-height: 1.5; + border-radius: 4px; + } +.btn-group-lg > .btn { + padding: 10px 16px; + font-size: 17px; + line-height: 1.25; + border-radius: 4px; + } +.btn-group > .btn + .dropdown-toggle, +.btn-group-vertical > .btn + .dropdown-toggle { + padding-right: 8px; + padding-left: 8px; + } +.btn-group > .btn-lg + .dropdown-toggle, +.btn-group-vertical > .btn-lg + .dropdown-toggle { + padding-right: 12px; + padding-left: 12px; + } +.btn-group.open .dropdown-toggle, +.btn-group-vertical.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + } +.btn-group.open .dropdown-toggle.btn-link, +.btn-group-vertical.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; + } +.btn .caret { + margin-left: 0; + } +.btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; + } +.dropup .btn-lg .caret { + border-width: 0 5px 5px; + } +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; + } +.btn-group-justified > .btn, +.btn-group-justified > .btn-group, +.btn-group-justified > .btn-group-vertical { + display: table-cell; + float: none; + width: 1%; + } +.btn-group-justified > .btn-group .btn, +.btn-group-justified > .btn-group-vertical .btn { + width: 100%; + } +.btn-group-justified > .btn-group .dropdown-menu, +.btn-group-justified > .btn-group-vertical .dropdown-menu { + left: auto; + } +[data-toggle="buttons"] > .btn input[type="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group-vertical > .btn input[type="radio"], +[data-toggle="buttons"] > .btn-group-vertical > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; + } +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group, +.btn-group-vertical > .btn-group > .btn, +.btn-group-vertical > .btn-group-vertical, +.btn-group-vertical > .btn-group-vertical > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; + } +.btn-group-vertical > .btn-group > .btn, +.btn-group-vertical > .btn-group-vertical > .btn { + float: none; + } +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group, +.btn-group-vertical > .btn + .btn-group-vertical, +.btn-group-vertical > .btn-group-vertical + .btn, +.btn-group-vertical > .btn-group-vertical + .btn-group-vertical { + margin-top: -1px; + margin-left: 0; + } +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; + } +.btn-group-vertical > .btn:first-child:not(:last-child), +.btn-group-vertical > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; + } +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn, +.btn-group-vertical > .btn-group-vertical:not(:first-child):not(:last-child) > .btn { + border-radius: 0; + } +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle, +.btn-group-vertical > .btn-group-vertical:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group-vertical:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child, +.btn-group-vertical > .btn-group-vertical:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; + } +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } + } +@-o-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } + } +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } + } +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #e5e5e5; + border-radius: 4px; + } +.progress-bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + color: #fff; + text-align: center; + background-color: #3280fc; + -webkit-transition: width .6s ease; + -o-transition: width .6s ease; + transition: width .6s ease; + } +.progress-striped .progress-bar { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + background-size: 40px 40px; + } +.progress.active .progress-bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; + } +.progress-bar-success { + background-color: #38b03f; + } +.progress-bar-info { + background-color: #03b8cf; + } +.progress-bar-warning { + background-color: #f1a325; + } +.progress-bar-danger { + background-color: #ea644a; + } +.img-responsive, +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; + } +.img-rounded { + border-radius: 6px; + } +.img-thumbnail { + display: inline-block; + max-width: 100%; + height: auto; + padding: 4px; + line-height: 1.53846154; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: all .2s ease-in-out; + -o-transition: all .2s ease-in-out; + transition: all .2s ease-in-out; + } +.img-circle { + border-radius: 50%; + } +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #e5e5e5; + } +hr.divider-sm { + margin-top: 10px; + margin-bottom: 10px; + } +hr.divider { + margin: 0; + } +.label { + display: inline; + padding: .2em .6em .2em; + font-size: 75%; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: middle; + background-color: #808080; + border-radius: .25em; + } +.label[href]:hover, +.label[href]:focus { + color: #fff; + background-color: #666; + } +.label.label-circle { + color: #808080; + background: none; + border: 1px solid #808080; + } +a.label:hover, +a.label:focus { + color: #fff; + text-decoration: none; + cursor: pointer; + } +.label:empty { + display: none; + } +.label-badge { + display: inline-block; + min-width: 18px; + padding: 3px 7px; + font-size: 12px; + line-height: 1; + border-radius: 9px; + } +.label-dot { + display: inline-block; + width: 10px; + height: 10px; + padding: 0; + line-height: 13px; + text-indent: -9999em; + border-radius: 5px; + } +.label-dot:empty { + display: inline-block; + } +.label-primary { + background-color: #3280fc; + } +.label-primary[href]:hover, +.label-primary[href]:focus { + color: #fff; + background-color: #0462f7; + } +.label-primary.label-circle { + color: #3280fc; + background: none; + border: 1px solid #3280fc; + } +.label-success { + background-color: #38b03f; + } +.label-success[href]:hover, +.label-success[href]:focus { + color: #fff; + background-color: #2c8931; + } +.label-success.label-circle { + color: #38b03f; + background: none; + border: 1px solid #38b03f; + } +.label-info { + background-color: #03b8cf; + } +.label-info[href]:hover, +.label-info[href]:focus { + color: #fff; + background-color: #028b9d; + } +.label-info.label-circle { + color: #03b8cf; + background: none; + border: 1px solid #03b8cf; + } +.label-warning { + background-color: #f1a325; + } +.label-warning[href]:hover, +.label-warning[href]:focus { + color: #fff; + background-color: #d5890e; + } +.label-warning.label-circle { + color: #f1a325; + background: none; + border: 1px solid #f1a325; + } +.label-danger { + background-color: #ea644a; + } +.label-danger[href]:hover, +.label-danger[href]:focus { + color: #fff; + background-color: #e53d1c; + } +.label-danger.label-circle { + color: #ea644a; + background: none; + border: 1px solid #ea644a; + } +.nav-primary > li > a > .label, +.btn .label { + position: relative; + top: -1px; + } +.btn-primary .label, +.btn-success .label, +.btn-info .label, +.btn-danger .label, +.btn-warning .label { + background-color: rgba(0, 0, 0, .2); + } +.list-group-item.active > .label, +.nav-primary > .active > a > .label, +.nav-pills > .active > a > .label { + color: #145ccd; + background-color: #fff; + } +.nav > li > a > .label { + margin-left: 3px; + } +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + border-radius: 4px; + } +.breadcrumb > li { + display: inline-block; + } +.breadcrumb > li + li:before { + padding: 0 5px; + color: #ccc; + content: "/\00a0"; + } +.breadcrumb > .active { + color: #808080; + } +@font-face { + font-family: ZenIcon; + font-style: normal; + font-weight: normal; + + src: url('../fonts/zenicon.eot?v=2.2.0'); + src: url('../fonts/zenicon.eot?#iefix&v=2.2.0') format('embedded-opentype'), url('../fonts/zenicon.woff?v=2.2.0') format('woff'), url('../fonts/zenicon.ttf?v=2.2.0') format('truetype'), url('../fonts/zenicon.svg#regular?v=2.2.0') format('svg'); + } +.icon, +[class^="icon-"], +[class*=" icon-"] { + font-family: ZenIcon; + font-size: 14px; + font-style: normal; + font-weight: normal; + font-variant: normal; + line-height: 1; + text-transform: none; + + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } +.icon:before { + display: inline-block; + min-width: 14px; + text-align: center; + } +a .icon, +a [class^="icon-"], +a [class*=" icon-"] { + display: inline; + } +.icon-lg:before { + font-size: 1.33333333em; + vertical-align: -10%; + } +.icon-2x { + font-size: 28px; + } +.icon-3x { + font-size: 42px; + } +.icon-4x { + font-size: 56px; + } +.icon-5x { + font-size: 70px; + } +.icon-spin { + display: inline-block; + -webkit-animation: spin 2s infinite linear; + -o-animation: spin 2s infinite linear; + animation: spin 2s infinite linear; + } +a .icon-spin { + display: inline-block; + text-decoration: none; + } +@-webkit-keyframes spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } + } +@-o-keyframes spin { + 0% { + -o-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -o-transform: rotate(359deg); + transform: rotate(359deg); + } + } +@keyframes spin { + 0% { + -webkit-transform: rotate(0deg); + -o-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + -o-transform: rotate(359deg); + transform: rotate(359deg); + } + } +.icon-rotate-90 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); + } +.icon-rotate-180 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + -o-transform: rotate(180deg); + transform: rotate(180deg); + } +.icon-rotate-270 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + -o-transform: rotate(270deg); + transform: rotate(270deg); + } +.icon-flip-horizontal { + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + -o-transform: scale(-1, 1); + transform: scale(-1, 1); + } +.icon-flip-vertical { + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + -o-transform: scale(1, -1); + transform: scale(1, -1); + } +.icon.icon-rotate-90, +.icon.icon-rotate-180, +.icon.icon-rotate-270, +.icon.icon-flip-horizontal, +.icon.icon-flip-vertical { + display: inline-block; + } +.icon-resize:before { + content: '\e667'; + } +.icon-expand-full:before { + content: '\e6a3'; + } +.icon-arrows-alt:before { + content: '\e6a3'; + } +.icon-fullscreen:before { + content: '\e6a3'; + } +.icon-collapse-full:before { + content: '\e682'; + } +.icon-yinyang:before { + content: '\e687'; + } +.icon-taiji:before { + content: '\e687'; + } +.icon-window:before { + content: '\e68e'; + } +.icon-window-alt:before { + content: '\e68f'; + } +.icon-carousel:before { + content: '\e6b0'; + } +.icon-spinner-snake:before { + content: '\e97b'; + } +.icon-spinner-indicator:before { + content: '\e97c'; + } +.icon-check-board:before { + content: '\e9b8'; + } +.icon-bar-chart:before { + content: '\f080'; + } +.icon-bar-chart-o:before { + content: '\f080'; + } +.icon-github:before { + content: '\f09b'; + } +.icon-dot-circle:before { + content: '\f192'; + } +.icon-dot-circle-o:before { + content: '\f192'; + } +.icon-cube-alt:before { + content: '\f1b2'; + } +.icon-cubes:before { + content: '\f1b3'; + } +.icon-file-pdf:before { + content: '\f1c1'; + } +.icon-file-word:before { + content: '\f1c2'; + } +.icon-file-excel:before { + content: '\f1c3'; + } +.icon-file-powerpoint:before { + content: '\f1c4'; + } +.icon-file-image:before { + content: '\f1c5'; + } +.icon-file-photo:before { + content: '\f1c5'; + } +.icon-file-picture:before { + content: '\f1c5'; + } +.icon-file-archive:before { + content: '\f1c6'; + } +.icon-file-zip:before { + content: '\f1c6'; + } +.icon-file-audio:before { + content: '\f1c7'; + } +.icon-file-sound:before { + content: '\f1c7'; + } +.icon-file-movie:before { + content: '\f1c8'; + } +.icon-file-video:before { + content: '\f1c8'; + } +.icon-file-code:before { + content: '\f1c9'; + } +.icon-circle-o-notch:before { + content: '\f1ce'; + } +.icon-chanzhi:before { + content: '\e906'; + } +.icon-chanzhi-pro:before { + content: '\e905'; + } +.icon-zsite:before { + content: '\e904'; + } +.icon-zsite-pro:before { + content: '\e903'; + } +.icon-qq:before { + content: '\f600'; + } +.icon-wechat:before { + content: '\f1d7'; + } +.icon-weixin:before { + content: '\f1d7'; + } +.icon-history:before { + content: '\f1da'; + } +.icon-circle-thin:before { + content: '\f1db'; + } +.icon-sliders:before { + content: '\f1de'; + } +.icon-newspaper-o:before { + content: '\f1ea'; + } +.icon-calculator:before { + content: '\f1ec'; + } +.icon-paint-brush:before { + content: '\f1fc'; + } +.icon-area-chart:before { + content: '\f1fe'; + } +.icon-pie-chart:before { + content: '\f200'; + } +.icon-line-chart:before { + content: '\f201'; + } +.icon-toggle-off:before { + content: '\f204'; + } +.icon-toggle-on:before { + content: '\f205'; + } +.icon-diamond:before { + content: '\f219'; + } +.icon-venus:before { + content: '\f221'; + } +.icon-mars:before { + content: '\f222'; + } +.icon-server:before { + content: '\f233'; + } +.icon-music:before { + content: '\e602'; + } +.icon-search:before { + content: '\e603'; + } +.icon-envelope:before { + content: '\e604'; + } +.icon-heart:before { + content: '\e605'; + } +.icon-star:before { + content: '\e606'; + } +.icon-star-empty:before { + content: '\e607'; + } +.icon-user:before { + content: '\e608'; + } +.icon-film:before { + content: '\e609'; + } +.icon-th-large:before { + content: '\e60a'; + } +.icon-th:before { + content: '\e60b'; + } +.icon-th-list:before { + content: '\e60c'; + } +.icon-ok:before { + content: '\e60d'; + } +.icon-check:before { + content: '\e60d'; + } +.icon-remove:before { + content: '\d7'; + } +.icon-times:before { + content: '\d7'; + } +.icon-zoom-in:before { + content: '\e60f'; + } +.icon-zoom-out:before { + content: '\e610'; + } +.icon-off:before { + content: '\e611'; + } +.icon-cog:before { + content: '\e613'; + } +.icon-trash:before { + content: '\e614'; + } +.icon-home:before { + content: '\e615'; + } +.icon-file-o:before { + content: '\e616'; + } +.icon-file-alt:before { + content: '\e616'; + } +.icon-time:before { + content: '\e617'; + } +.icon-download-alt:before { + content: '\e618'; + } +.icon-download:before { + content: '\e619'; + } +.icon-upload:before { + content: '\e61a'; + } +.icon-inbox:before { + content: '\e61b'; + } +.icon-play-circle:before { + content: '\e61c'; + } +.icon-repeat:before { + content: '\e61d'; + } +.icon-refresh:before { + content: '\e61e'; + } +.icon-list-alt:before { + content: '\e61f'; + } +.icon-lock:before { + content: '\e620'; + } +.icon-flag:before { + content: '\e621'; + } +.icon-headphones:before { + content: '\e622'; + } +.icon-volume-off:before { + content: '\e623'; + } +.icon-volume-up:before { + content: '\e625'; + } +.icon-qrcode:before { + content: '\e626'; + } +.icon-barcode:before { + content: '\e627'; + } +.icon-tag:before { + content: '\e628'; + } +.icon-tags:before { + content: '\e629'; + } +.icon-book:before { + content: '\e62a'; + } +.icon-bookmark:before { + content: '\e62b'; + } +.icon-print:before { + content: '\e62c'; + } +.icon-camera:before { + content: '\e62d'; + } +.icon-font:before { + content: '\e62e'; + } +.icon-bold:before { + content: '\e62f'; + } +.icon-italic:before { + content: '\f033'; + } +.icon-header:before { + content: '\f1dc'; + } +.icon-underline:before { + content: '\f0cd'; + } +.icon-strikethrough:before { + content: '\f0cc'; + } +.icon-eraser:before { + content: '\f12d'; + } +.icon-align-justify:before { + content: '\e636'; + } +.icon-list:before { + content: '\e637'; + } +.icon-picture:before { + content: '\e63b'; + } +.icon-pencil:before { + content: '\e63c'; + } +.icon-map-marker:before { + content: '\e63d'; + } +.icon-adjust:before { + content: '\e63e'; + } +.icon-tint:before { + content: '\e63f'; + } +.icon-edit:before { + content: '\e640'; + } +.icon-share:before { + content: '\e641'; + } +.icon-checked:before { + content: '\e642'; + } +.icon-move:before { + content: '\e643'; + } +.icon-arrows:before { + content: '\e643'; + } +.icon-step-backward:before { + content: '\e644'; + } +.icon-fast-backward:before { + content: '\e645'; + } +.icon-backward:before { + content: '\e646'; + } +.icon-play:before { + content: '\e647'; + } +.icon-pause:before { + content: '\e648'; + } +.icon-stop:before { + content: '\e649'; + } +.icon-forward:before { + content: '\e64a'; + } +.icon-fast-forward:before { + content: '\e64b'; + } +.icon-step-forward:before { + content: '\e64c'; + } +.icon-eject:before { + content: '\e64d'; + } +.icon-chevron-left:before { + content: '\e64e'; + } +.icon-chevron-right:before { + content: '\e64f'; + } +.icon-plus-sign:before { + content: '\e650'; + } +.icon-minus-sign:before { + content: '\e651'; + } +.icon-remove-sign:before { + content: '\e652'; + } +.icon-ok-sign:before { + content: '\e653'; + } +.icon-check-circle:before { + content: '\e653'; + } +.icon-question-sign:before { + content: '\e654'; + } +.icon-info-sign:before { + content: '\e655'; + } +.icon-remove-circle:before { + content: '\e657'; + } +.icon-ok-circle:before { + content: '\e658'; + } +.icon-check-circle-o:before { + content: '\e658'; + } +.icon-ban-circle:before { + content: '\e659'; + } +.icon-arrow-left:before { + content: '\e65a'; + } +.icon-arrow-right:before { + content: '\e65b'; + } +.icon-arrow-up:before { + content: '\e65c'; + } +.icon-arrow-down:before { + content: '\e65d'; + } +.icon-share-alt:before { + content: '\e65e'; + } +.icon-resize-full:before { + content: '\e65f'; + } +.icon-resize-small:before { + content: '\e660'; + } +.icon-plus:before { + content: '\e661'; + } +.icon-minus:before { + content: '\e662'; + } +.icon-asterisk:before { + content: '\e663'; + } +.icon-exclamation-sign:before { + content: '\e664'; + } +.icon-gift:before { + content: '\e665'; + } +.icon-leaf:before { + content: '\e666'; + } +.icon-eye-open:before { + content: '\e668'; + } +.icon-eye-close:before { + content: '\e669'; + } +.icon-warning-sign:before { + content: '\e66a'; + } +.icon-plane:before { + content: '\e66b'; + } +.icon-calendar:before { + content: '\e66c'; + } +.icon-random:before { + content: '\e66d'; + } +.icon-comment:before { + content: '\e66e'; + } +.icon-chevron-up:before { + content: '\e670'; + } +.icon-chevron-down:before { + content: '\e671'; + } +.icon-shopping-cart:before { + content: '\e673'; + } +.icon-folder-close:before { + content: '\e674'; + } +.icon-folder-open:before { + content: '\e675'; + } +.icon-resize-v:before { + content: '\e676'; + } +.icon-resize-h:before { + content: '\e677'; + } +.icon-bar-chart-alt:before { + content: '\e678'; + } +.icon-camera-retro:before { + content: '\e679'; + } +.icon-key:before { + content: '\e67a'; + } +.icon-cogs:before { + content: '\e67b'; + } +.icon-comments:before { + content: '\e67c'; + } +.icon-thumbs-o-up:before { + content: '\e67d'; + } +.icon-thumbs-o-down:before { + content: '\e67e'; + } +.icon-star-half:before { + content: '\e67f'; + } +.icon-heart-empty:before { + content: '\e680'; + } +.icon-signout:before { + content: '\e681'; + } +.icon-pushpin:before { + content: '\e683'; + } +.icon-external-link:before { + content: '\e684'; + } +.icon-signin:before { + content: '\e685'; + } +.icon-trophy:before { + content: '\e686'; + } +.icon-upload-alt:before { + content: '\e688'; + } +.icon-lemon:before { + content: '\e689'; + } +.icon-phone:before { + content: '\e68a'; + } +.icon-check-empty:before { + content: '\e68b'; + } +.icon-bookmark-empty:before { + content: '\e68c'; + } +.icon-phone-sign:before { + content: '\e68d'; + } +.icon-credit:before { + content: '\e690'; + } +.icon-rss:before { + content: '\e691'; + } +.icon-hdd:before { + content: '\e692'; + } +.icon-bullhorn:before { + content: '\e693'; + } +.icon-bell:before { + content: '\e694'; + } +.icon-certificate:before { + content: '\e695'; + } +.icon-hand-right:before { + content: '\e696'; + } +.icon-hand-left:before { + content: '\e697'; + } +.icon-hand-up:before { + content: '\e698'; + } +.icon-hand-down:before { + content: '\e699'; + } +.icon-circle-arrow-left:before { + content: '\e69a'; + } +.icon-circle-arrow-right:before { + content: '\e69b'; + } +.icon-circle-arrow-up:before { + content: '\e69c'; + } +.icon-circle-arrow-down:before { + content: '\e69d'; + } +.icon-globe:before { + content: '\e69e'; + } +.icon-wrench:before { + content: '\e69f'; + } +.icon-tasks:before { + content: '\e6a0'; + } +.icon-filter:before { + content: '\e6a1'; + } +.icon-group:before { + content: '\e6a4'; + } +.icon-link:before { + content: '\e6a5'; + } +.icon-cloud:before { + content: '\e6a6'; + } +.icon-beaker:before { + content: '\e6a7'; + } +.icon-cut:before { + content: '\e6a8'; + } +.icon-copy:before { + content: '\e6a9'; + } +.icon-paper-clip:before { + content: '\e6aa'; + } +.icon-save:before { + content: '\e6ab'; + } +.icon-sign-blank:before { + content: '\e6ac'; + } +.icon-bars:before { + content: '\e6ad'; + } +.icon-reorder:before { + content: '\e6ad'; + } +.icon-list-ul:before { + content: '\e6ae'; + } +.icon-list-ol:before { + content: '\e6af'; + } +.icon-table:before { + content: '\e6b2'; + } +.icon-magic:before { + content: '\e6b3'; + } +.icon-caret-down:before { + content: '\e6b8'; + } +.icon-caret-up:before { + content: '\e6b9'; + } +.icon-caret-left:before { + content: '\e6ba'; + } +.icon-caret-right:before { + content: '\e6bb'; + } +.icon-columns:before { + content: '\e6bc'; + } +.icon-sort:before { + content: '\e6bd'; + } +.icon-sort-down:before { + content: '\e6be'; + } +.icon-sort-up:before { + content: '\e6bf'; + } +.icon-envelope-alt:before { + content: '\e6c0'; + } +.icon-undo:before { + content: '\e6c1'; + } +.icon-dashboard:before { + content: '\e6c3'; + } +.icon-comment-alt:before { + content: '\e6c4'; + } +.icon-comments-alt:before { + content: '\e6c5'; + } +.icon-bolt:before { + content: '\e6c6'; + } +.icon-sitemap:before { + content: '\e6c7'; + } +.icon-umbrella:before { + content: '\e6c8'; + } +.icon-paste:before { + content: '\e6c9'; + } +.icon-lightbulb:before { + content: '\e6ca'; + } +.icon-exchange:before { + content: '\e6cb'; + } +.icon-cloud-download:before { + content: '\e6cc'; + } +.icon-cloud-upload:before { + content: '\e6cd'; + } +.icon-bell-alt:before { + content: '\e6d1'; + } +.icon-coffee:before { + content: '\e6d2'; + } +.icon-file-text-o:before { + content: '\e6d4'; + } +.icon-file-text-alt:before { + content: '\e6d4'; + } +.icon-building:before { + content: '\e6d5'; + } +.icon-double-angle-left:before { + content: '\e6dc'; + } +.icon-double-angle-right:before { + content: '\e6dd'; + } +.icon-double-angle-up:before { + content: '\e6de'; + } +.icon-double-angle-down:before { + content: '\e6df'; + } +.icon-angle-left:before { + content: '\e6e0'; + } +.icon-angle-right:before { + content: '\e6e1'; + } +.icon-angle-up:before { + content: '\e6e2'; + } +.icon-angle-down:before { + content: '\e6e3'; + } +.icon-desktop:before { + content: '\e6e4'; + } +.icon-laptop:before { + content: '\e6e5'; + } +.icon-tablet:before { + content: '\e6e6'; + } +.icon-mobile:before { + content: '\e6e7'; + } +.icon-circle-blank:before { + content: '\e6e8'; + } +.icon-quote-left:before { + content: '\e6e9'; + } +.icon-quote-right:before { + content: '\e6ea'; + } +.icon-spinner:before { + content: '\e6eb'; + } +.icon-circle:before { + content: '\e6ec'; + } +.icon-reply:before { + content: '\e6ed'; + } +.icon-folder-close-alt:before { + content: '\e6ef'; + } +.icon-folder-open-alt:before { + content: '\e6f0'; + } +.icon-expand-alt:before { + content: '\e6f1'; + } +.icon-collapse-alt:before { + content: '\e6f2'; + } +.icon-smile:before { + content: '\e6f3'; + } +.icon-frown:before { + content: '\e6f4'; + } +.icon-meh:before { + content: '\e6f5'; + } +.icon-gamepad:before { + content: '\e6f6'; + } +.icon-keyboard:before { + content: '\e6f7'; + } +.icon-flag-alt:before { + content: '\e6f8'; + } +.icon-flag-checkered:before { + content: '\e6f9'; + } +.icon-terminal:before { + content: '\e6fa'; + } +.icon-code:before { + content: '\e6fb'; + } +.icon-reply-all:before { + content: '\e6fc'; + } +.icon-star-half-full:before { + content: '\e6fd'; + } +.icon-location-arrow:before { + content: '\e6fe'; + } +.icon-crop:before { + content: '\e6ff'; + } +.icon-code-fork:before { + content: '\e700'; + } +.icon-unlink:before { + content: '\e701'; + } +.icon-question:before { + content: '\e702'; + } +.icon-info:before { + content: '\e703'; + } +.icon-shield:before { + content: '\e70b'; + } +.icon-calendar-empty:before { + content: '\e70c'; + } +.icon-rocket:before { + content: '\e70e'; + } +.icon-chevron-sign-left:before { + content: '\e70f'; + } +.icon-chevron-sign-right:before { + content: '\e710'; + } +.icon-chevron-sign-up:before { + content: '\e711'; + } +.icon-chevron-sign-down:before { + content: '\e712'; + } +.icon-html5:before { + content: '\e713'; + } +.icon-anchor:before { + content: '\e714'; + } +.icon-unlock-alt:before { + content: '\e715'; + } +.icon-bullseye:before { + content: '\e716'; + } +.icon-ellipsis-h:before { + content: '\e717'; + } +.icon-ellipsis-v:before { + content: '\e718'; + } +.icon-rss-sign:before { + content: '\e719'; + } +.icon-play-sign:before { + content: '\e71a'; + } +.icon-minus-sign-alt:before { + content: '\e71c'; + } +.icon-plus-sign-alt:before { + content: '\f0fe'; + } +.icon-check-minus:before { + content: '\e71d'; + } +.icon-check-plus:before { + content: '\f196'; + } +.icon-level-up:before { + content: '\e71e'; + } +.icon-level-down:before { + content: '\e71f'; + } +.icon-check-sign:before { + content: '\e720'; + } +.icon-edit-sign:before { + content: '\e721'; + } +.icon-external-link-sign:before { + content: '\e722'; + } +.icon-share-sign:before { + content: '\e723'; + } +.icon-compass:before { + content: '\e724'; + } +.icon-collapse:before { + content: '\e725'; + } +.icon-collapse-top:before { + content: '\e726'; + } +.icon-expand:before { + content: '\e727'; + } +.icon-dollar:before { + content: '\e728'; + } +.icon-yen:before { + content: '\e729'; + } +.icon-file:before { + content: '\e72b'; + } +.icon-file-text:before { + content: '\e72c'; + } +.icon-sort-by-alphabet:before { + content: '\e72d'; + } +.icon-sort-by-alphabet-alt:before { + content: '\e72e'; + } +.icon-sort-by-attributes:before { + content: '\e72f'; + } +.icon-sort-by-attributes-alt:before { + content: '\e730'; + } +.icon-sort-by-order:before { + content: '\e731'; + } +.icon-sort-by-order-alt:before { + content: '\e732'; + } +.icon-thumbs-up:before { + content: '\e733'; + } +.icon-thumbs-down:before { + content: '\e734'; + } +.icon-long-arrow-down:before { + content: '\e736'; + } +.icon-long-arrow-up:before { + content: '\e737'; + } +.icon-long-arrow-left:before { + content: '\e738'; + } +.icon-long-arrow-right:before { + content: '\e739'; + } +.icon-apple:before { + content: '\e73a'; + } +.icon-windows:before { + content: '\e73b'; + } +.icon-android:before { + content: '\e73c'; + } +.icon-linux:before { + content: '\e73d'; + } +.icon-sun:before { + content: '\e742'; + } +.icon-moon:before { + content: '\e743'; + } +.icon-archive:before { + content: '\e744'; + } +.icon-bug:before { + content: '\e745'; + } +.icon-zhifubao:before, +.icon-alipay:before { + content: '\e901'; + } +.icon-zhifubao-square:before, +.icon-alipay-square:before { + content: '\e900'; + } +.icon-taobao:before { + content: '\e902'; + } +.icon-weibo:before { + content: '\e746'; + } +.icon-renren:before { + content: '\e747'; + } +.icon-chrome:before { + content: '\e76c'; + } +.icon-firefox:before { + content: '\e76d'; + } +.icon-ie:before { + content: '\e76e'; + } +.icon-opera:before { + content: '\e76f'; + } +.icon-safari:before { + content: '\e770'; + } +.icon-node:before { + content: '\e76a'; + } +.icon-layout:before { + content: '\e768'; + } +.icon-usecase:before { + content: '\e74a'; + } +.icon-stack:before { + content: '\e769'; + } +.icon-branch:before { + content: '\e74b'; + } +.icon-chat:before { + content: '\e74c'; + } +.icon-chat-line:before { + content: '\e74f'; + } +.icon-comment-line:before { + content: '\e74f'; + } +.icon-chat-dot:before { + content: '\e750'; + } +.icon-cube:before { + content: '\e751'; + } +.icon-database:before { + content: '\f1c0'; + } +.icon-align-left:before { + content: '\e633'; + } +fieldset { + padding: 0; + margin: 0; + border: 0; + } +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 19.5px; + line-height: inherit; + color: #333; + border: 0; + border-bottom: 1px solid #e5e5e5; + } +label { + display: inline-block; + margin-bottom: 5px; + font-weight: bold; + } +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } +input[type="radio"], +input[type="checkbox"] { + margin: 5px 0 0; + margin-top: 0 \9; + /* IE8-9 */ + line-height: normal; + } +input[type="file"] { + display: block; + } +select[multiple], +select[size] { + height: auto; + } +select:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 #000; + } +select optgroup { + font-family: inherit; + font-size: inherit; + font-style: inherit; + } +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; + } +input[type="number"]::-webkit-outer-spin-button, +input[type="number"]::-webkit-inner-spin-button { + height: auto; + } +.form-control::-webkit-input-placeholder { + color: #808080; + } +.form-control::-moz-placeholder { + color: #808080; + } +.form-control:-ms-input-placeholder { + color: #808080; + } +.form-control::placeholder { + color: #808080; + } +.form-control { + display: block; + width: 100%; + height: 32px; + padding: 5px 8px; + font-size: 13px; + line-height: 1.53846154; + color: #222; + vertical-align: middle; + background-color: #fff; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + } +.form-control:focus, +.form-control.focus { + border-color: #145ccd; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(20, 92, 205, .6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(20, 92, 205, .6); + } +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + cursor: not-allowed; + background-color: #e5e5e5; + } +.form-control[readonly] { + cursor: default; + } +textarea.form-control { + height: auto; + } +.form-group { + margin-bottom: 15px; + } +.radio, +.checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; + } +.radio label, +.checkbox label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; + } +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-top: 3px; + margin-top: 4px \9; + margin-left: -20px; + } +.os-android .radio input[type="radio"], +.os-android .radio-inline input[type="radio"], +.os-android .checkbox input[type="checkbox"], +.os-android .checkbox-inline input[type="checkbox"] { + margin-top: 0; + } +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; + } +.radio-inline, +.checkbox-inline { + position: relative; + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + vertical-align: middle; + cursor: pointer; + } +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; + } +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"].disabled, +input[type="checkbox"].disabled, +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; + } +.radio-inline.disabled, +.checkbox-inline.disabled, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; + } +.radio.disabled label, +.checkbox.disabled label, +fieldset[disabled] .radio label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; + } +.input-sm { + height: 24px; + padding: 2px 8px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; + } +select.input-sm { + height: 24px; + line-height: 24px; + } +textarea.input-sm { + height: auto; + } +.input-lg { + height: 43px; + padding: 10px 16px; + font-size: 17px; + line-height: 1.25; + border-radius: 6px; + } +select.input-lg { + height: 43px; + line-height: 43px; + } +textarea.input-lg { + height: auto; + } +.has-warning .help-block, +.has-warning > label { + color: #f1a325; + } +.has-warning .form-control { + border-color: #f1a325; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + } +.has-warning .form-control:focus { + border-color: #d5890e; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #f7cb85; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #f7cb85; + } +.has-warning .input-group-addon { + color: #f1a325; + background-color: #fff0d5; + border-color: #f1a325; + } +.has-error .help-block, +.has-error > label { + color: #ea644a; + } +.has-error .form-control { + border-color: #ea644a; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + } +.has-error .form-control:focus { + border-color: #e53d1c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #f5b2a5; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #f5b2a5; + } +.has-error .input-group-addon { + color: #ea644a; + background-color: #ffe5e0; + border-color: #ea644a; + } +.has-success .help-block, +.has-success > label { + color: #38b03f; + } +.has-success .form-control { + border-color: #38b03f; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + } +.has-success .form-control:focus { + border-color: #2c8931; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #79d57f; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #79d57f; + } +.has-success .input-group-addon { + color: #38b03f; + background-color: #ddf4df; + border-color: #38b03f; + } +.form-control-static { + min-height: 33px; + padding-top: 6px; + padding-bottom: 6px; + margin-bottom: 0; + } +.help-block { + display: block; + margin: 5px 0; + color: #757575; + } +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + padding-left: 0; + margin-top: 0; + margin-bottom: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + float: none; + margin-left: 0; + } + } +.form-horizontal .form-group > label, +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + padding-top: 6px; + margin-top: 0; + margin-bottom: 0; + } +.form-horizontal .form-group { + margin-right: -10px; + margin-left: -10px; + } +@media (min-width: 768px) { + .form-horizontal .form-group > label { + text-align: right; + } + } +.required { + position: relative; + } +.required:after { + position: absolute; + top: 0; + right: -10px; + display: inline-block; + font-size: 17px; + color: #ea644a; + content: '*'; + } +.form-horizontal .required:after { + top: 5px; + right: -1px; + } +.form-condensed .form-group { + margin-bottom: 10px; + } +.form-condensed .form-control { + height: 24px; + padding: 2px 8px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; + } +select.form-condensed .form-control { + height: 24px; + line-height: 24px; + } +textarea.form-condensed .form-control { + height: auto; + } +.form-condensed textarea.form-control { + height: auto; + } +.form-condensed .btn { + padding: 2px 8px; + font-size: 12px; + line-height: 1.5; + border-radius: 4px; + } +.form-condensed .input-group > .form-control, +.form-condensed .input-group > .input-group-addon, +.form-condensed .input-group > .input-group-btn > .btn { + padding: 2px 8px; + font-size: 12px; + border-radius: 3px; + } +.form-condensed .input-group .form-control:first-child, +.form-condensed .input-group-addon:first-child, +.form-condensed .input-group-btn:first-child > .btn, +.form-condensed .input-group-btn:first-child > .btn-group > .btn, +.form-condensed .input-group-btn:first-child > .dropdown-toggle, +.form-condensed .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.form-condensed .input-group-btn:last-child > .btn-group:not(:last-child) > .btn, +.form-condensed .input-group-btn:first-child > .btn-group-vertical > .btn, +.form-condensed .input-group-btn:last-child > .btn-group-vertical:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } +.form-condensed .input-group .form-control:last-child, +.form-condensed .input-group-addon:last-child, +.form-condensed .input-group-btn:last-child > .btn, +.form-condensed .input-group-btn:last-child > .btn-group > .btn, +.form-condensed .input-group-btn:last-child > .dropdown-toggle, +.form-condensed .input-group-btn:first-child > .btn:not(:first-child), +.form-condensed .input-group-btn:first-child > .btn-group:not(:first-child) > .btn, +.form-condensed .input-group-btn:last-child > .btn-group-vertical > .btn, +.form-condensed .input-group-btn:first-child > .btn-group-vertical:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } +.form-condensed .input-group-addon:first-child { + border-right: 0; + } +.form-condensed .input-group-addon:last-child { + border-left: 0; + } +.form-condensed .input-group-addon.fix-border, +.form-condensed .input-group-btn.fix-border > .btn { + border-right: 0; + border-left: 0; + border-radius: 0; + } +.form-condensed.form-horizontal .form-group > label, +.form-condensed.form-horizontal .radio, +.form-condensed.form-horizontal .checkbox, +.form-condensed.form-horizontal .radio-inline, +.form-condensed.form-horizontal .checkbox-inline { + padding-top: 1px; + } +.switch { + position: relative; + } +.switch > input { + position: absolute; + top: 0; + left: 0; + display: block; + width: 100%; + height: 100%; + margin: 0; + opacity: 0; + } +.switch > label { + display: block; + padding: 5px 0 5px 35px; + margin: 0; + font-weight: normal; + line-height: 20px; + } +.switch > label:before, +.switch > label:after { + position: absolute; + top: 5px; + left: 0; + display: block; + width: 30px; + height: 20px; + pointer-events: none; + content: ' '; + border: 1px solid #ddd; + border-radius: 10px; + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +.switch > label:after { + top: 6px; + width: 18px; + height: 18px; + background-color: #fff; + border-color: #ccc; + border-radius: 9px; + -webkit-box-shadow: rgba(0, 0, 0, .05) 0 1px 4px, rgba(0, 0, 0, .12) 0 1px 2px; + box-shadow: rgba(0, 0, 0, .05) 0 1px 4px, rgba(0, 0, 0, .12) 0 1px 2px; + } +.switch > input:checked + label:before { + background-color: #3280fc; + border-color: #3280fc; + } +.switch > input:checked + label:after { + left: 11px; + border-color: #fff; + } +.switch.text-left > label { + padding: 5px 35px 5px 0; + } +.switch.text-left > label:before, +.switch.text-left > label:after { + right: 0; + left: auto; + } +.switch.text-left > label:after { + right: 12px; + } +.switch.text-left > input:checked + label:after { + right: 1px; + left: auto; + } +.switch.disabled { + pointer-events: none; + } +.switch.disabled > label, +.switch > input[disabled] + label { + color: #ddd; + pointer-events: none; + } +.switch.disabled > label:before, +.switch > input[disabled] + label:before { + background-color: #fafafa; + } +.switch.disabled > label:after, +.switch > input[disabled] + label:after { + opacity: .7; + } +.switch.disabled > input:checked + label:before, +.switch > input[disabled]:checked + label:before { + background-color: #ccc; + border-color: #ccc; + } +.switch input:focus + label { + color: #3280fc; + } +.switch input:focus + label:before { + border-color: #3280fc; + } +.switch-inline { + display: inline-block; + } +.checkbox-primary { + position: relative; + display: inline-block; + } +.checkbox-primary > label { + padding-left: 25px; + cursor: pointer; + } +.checkbox-primary > label:before, +.checkbox-primary > label:after { + position: absolute; + top: 2px; + right: 0; + left: 0; + display: block; + width: 16px; + height: 16px; + line-height: 16px; + text-align: center; + content: ' '; + border-radius: 2px; + } +.checkbox-primary > label:after { + z-index: 1; + border: 1px solid #808080; + -webkit-transition: .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: .4s cubic-bezier(.175, .885, .32, 1); + transition: .4s cubic-bezier(.175, .885, .32, 1); + -webkit-transition-property: border, background-color; + -o-transition-property: border, background-color; + transition-property: border, background-color; + } +.checkbox-primary > label:before { + top: 3px; + z-index: 2; + font-family: ZenIcon; + font-size: 14px; + font-style: normal; + font-weight: normal; + font-variant: normal; + line-height: 1; + text-transform: none; + content: '\e60d'; + opacity: 0; + -webkit-transition: .2s cubic-bezier(.175, .885, .32, 1); + -o-transition: .2s cubic-bezier(.175, .885, .32, 1); + transition: .2s cubic-bezier(.175, .885, .32, 1); + -webkit-transition-property: opacity, -webkit-transform; + -o-transition-property: opacity, -o-transform; + transition-property: opacity, -webkit-transform; + transition-property: opacity, transform; + transition-property: opacity, transform, -webkit-transform, -o-transform; + -webkit-transform: scale(0); + -ms-transform: scale(0); + -o-transform: scale(0); + transform: scale(0); + + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } +.checkbox-primary.checked > label:after { + background-color: #3280fc; + border-color: #3280fc; + border-width: 4px; + } +.checkbox-primary.checked > label:before { + color: white; + opacity: 1; + -webkit-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); + } +.close { + float: right; + font-size: 19.5px; + font-weight: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: .2; + } +.close:hover, +.close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: .5; + } +button.close { + -webkit-appearance: none; + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + } +@media (min-width: 768px) { + ::-webkit-scrollbar { + width: 10px; + height: 10px; + } + ::-webkit-scrollbar-button { + width: 0; + height: 0; + } + ::-webkit-scrollbar-button:start:decrement, + ::-webkit-scrollbar-button:end:increment { + display: block; + } + ::-webkit-scrollbar-button:vertical:start:increment, + ::-webkit-scrollbar-button:vertical:end:decrement { + display: none; + } + ::-webkit-scrollbar-track:vertical, + ::-webkit-scrollbar-track:horizontal, + ::-webkit-scrollbar-thumb:vertical, + ::-webkit-scrollbar-thumb:horizontal, + ::-webkit-scrollbar-track:vertical, + ::-webkit-scrollbar-track:horizontal, + ::-webkit-scrollbar-thumb:vertical, + ::-webkit-scrollbar-thumb:horizontal { + border-color: transparent; + border-style: solid; + } + ::-webkit-scrollbar-track:vertical::-webkit-scrollbar-track:horizontal { + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + } + ::-webkit-scrollbar-thumb { + min-height: 28px; + padding-top: 100; + background-color: rgba(0, 0, 0, .2); + -webkit-background-clip: padding-box; + background-clip: padding-box; + border-radius: 5px; + -webkit-box-shadow: inset 1px 1px 0 rgba(0, 0, 0, .1), inset 0 -1px 0 rgba(0, 0, 0, .07); + } + ::-webkit-scrollbar-thumb:hover { + background-color: rgba(0, 0, 0, .4); + -webkit-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, .25); + } + ::-webkit-scrollbar-thumb:active { + background-color: rgba(0, 0, 0, .5); + -webkit-box-shadow: inset 1px 1px 3px rgba(0, 0, 0, .35); + } + ::-webkit-scrollbar-track:vertical, + ::-webkit-scrollbar-track:horizontal, + ::-webkit-scrollbar-thumb:vertical, + ::-webkit-scrollbar-thumb:horizontal { + border-width: 0; + } + ::-webkit-scrollbar-track:hover { + background-color: rgba(0, 0, 0, .05); + -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, .1); + } + ::-webkit-scrollbar-track:active { + background-color: rgba(0, 0, 0, .05); + -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, .14), inset -1px -1px 0 rgba(0, 0, 0, .07); + } + .scrollbar-hover::-webkit-scrollbar, + .scrollbar-hover::-webkit-scrollbar-button, + .scrollbar-hover::-webkit-scrollbar-track, + .scrollbar-hover::-webkit-scrollbar-thumb { + visibility: hidden; + } + .scrollbar-hover:hover::-webkit-scrollbar, + .scrollbar-hover:hover::-webkit-scrollbar-button, + .scrollbar-hover:hover::-webkit-scrollbar-track, + .scrollbar-hover:hover::-webkit-scrollbar-thumb { + visibility: visible; + } + } +table { + max-width: 100%; + background-color: transparent; + } +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #808080; + text-align: left; + } +th { + text-align: left; + } +.table { + width: 100%; + margin-bottom: 20px; + } +.table th, +.table td { + padding: 8px; + line-height: 1.53846154; + vertical-align: top; + border-bottom: 1px solid #ddd; + -webkit-transition: background .2s cubic-bezier(.175, .885, .32, 1); + -o-transition: background .2s cubic-bezier(.175, .885, .32, 1); + transition: background .2s cubic-bezier(.175, .885, .32, 1); + } +.table > thead > tr > th { + vertical-align: bottom; + background-color: #f1f1f1; + border-bottom: 1px solid #ddd; + } +.table > tbody + tbody { + border-top: 2px solid #ddd; + } +.table-fixed { + table-layout: fixed; + } +.table-fixed th, +.table-fixed td { + overflow: hidden; + white-space: nowrap; + } +.table-fixed tfoot > tr > th, +.table-fixed tfoot > tr > td, +.table-fixed .nofixed, +.table-fixed .nofixed { + overflow: visible; + } +.table-borderless thead > tr > th, +.table-borderless th, +.table-borderless td { + border: none; + } +.table-auto { + width: auto; + max-width: 100%; + } +.table-condensed th, +.table-condensed td { + padding: 5px; + } +.table-bordered { + border: 1px solid #ddd; + } +.table-bordered th, +.table-bordered td { + border: 1px solid #ddd; + } +.table-striped > tbody > tr:nth-child(odd) > td, +.table-striped > tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; + } +.table-hover > tbody > tr:hover > td, +.table-hover > tbody > tr:hover > th { + background-color: #ebf2f9; + } +table col[class*="col-"] { + display: table-column; + float: none; + } +table td[class*="col-"], +table th[class*="col-"] { + display: table-cell; + float: none; + } +.table tr > td.active, +.table tr > th.active, +.table tr.active > td, +.table tr.active > th { + background-color: #ffe7bc; + } +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #ddf4df; + border-color: #bae8b6; + } +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr.success:hover > th { + background-color: #caeecd; + border-color: #a8e1a3; + } +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #ffe5e0; + border-color: #ffc6c7; + } +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr.danger:hover > th { + background-color: #ffd0c6; + border-color: #ffadad; + } +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #fff0d5; + border-color: #ffdcbc; + } +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr.warning:hover > th { + background-color: #ffe7bc; + border-color: #ffcea2; + } +.table-responsive { + min-height: .01%; + overflow-x: auto; + } +@media screen and (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #ddd; + } + .table-responsive > .table { + margin-bottom: 0; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered th { + border-top: none; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } + } +.list-group { + padding-left: 0; + margin-bottom: 20px; + } +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid #ddd; + } +.list-group-item:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + } +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; + } +.list-group-item > .label-badge { + float: right; + } +.list-group-item > .label-badge + .label-badge { + margin-right: 5px; + } +a.list-group-item { + color: #555; + } +a.list-group-item .list-group-item-heading { + color: #333; + } +a.list-group-item:hover, +a.list-group-item:focus { + color: #353535; + text-decoration: none; + background-color: #ebf2f9; + } +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #fff; + background-color: #3280fc; + border-color: #3280fc; + } +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading { + color: inherit; + } +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #e6e6e6; + } +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; + color: #333; + } +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; + } +.panel { + margin-bottom: 20px; + background-color: #fff; + border: 1px solid transparent; + border-color: #ddd; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: 0 1px 1px rgba(0, 0, 0, .05); + } +.panel > .panel-heading { + color: #333; + background-color: #f5f5f5; + border-color: #ddd; + } +.panel > .panel-heading + .panel-collapse .panel-body { + border-top-color: #ddd; + } +.panel > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #ddd; + } +.panel-body { + padding: 15px; + } +.panel > .table { + margin-bottom: 0; + } +.panel > .panel-body + .table { + border-top: 1px solid #ddd; + } +.panel-heading { + padding: 8px 15px; + border-bottom: 1px solid transparent; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + } +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 15px; + } +.panel-title > a { + color: inherit; + } +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + } +.panel-primary { + border-color: #3280fc; + } +.panel-primary > .panel-heading { + color: #fff; + background-color: #3280fc; + border-color: #3280fc; + } +.panel-primary > .panel-heading + .panel-collapse .panel-body { + border-top-color: #3280fc; + } +.panel-primary > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #3280fc; + } +.panel-success { + border-color: #bae8b6; + } +.panel-success > .panel-heading { + color: #38b03f; + background-color: #ddf4df; + border-color: #bae8b6; + } +.panel-success > .panel-heading + .panel-collapse .panel-body { + border-top-color: #bae8b6; + } +.panel-success > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #bae8b6; + } +.panel-warning { + border-color: #ffdcbc; + } +.panel-warning > .panel-heading { + color: #f1a325; + background-color: #fff0d5; + border-color: #ffdcbc; + } +.panel-warning > .panel-heading + .panel-collapse .panel-body { + border-top-color: #ffdcbc; + } +.panel-warning > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #ffdcbc; + } +.panel-danger { + border-color: #ffc6c7; + } +.panel-danger > .panel-heading { + color: #ea644a; + background-color: #ffe5e0; + border-color: #ffc6c7; + } +.panel-danger > .panel-heading + .panel-collapse .panel-body { + border-top-color: #ffc6c7; + } +.panel-danger > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #ffc6c7; + } +.panel-info { + border-color: #a2e4de; + } +.panel-info > .panel-heading { + color: #03b8cf; + background-color: #ddf3f5; + border-color: #a2e4de; + } +.panel-info > .panel-heading + .panel-collapse .panel-body { + border-top-color: #a2e4de; + } +.panel-info > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #a2e4de; + } +.panel-group { + margin-bottom: 20px; + } +.panel-group .panel { + margin-bottom: 0; + border-radius: 4px; + } +.panel-group .panel + .panel { + margin-top: 5px; + } +.panel-group .panel-heading { + border-bottom: 0; + } +.panel-group .panel-heading + .panel-collapse > .panel-body, +.panel-group .panel-heading + .panel-collapse > .list-group { + border-top: 1px solid #ddd; + } +.panel-group .panel-footer { + border-top: 0; + } +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #ddd; + } +.panel > .list-group, +.panel > .panel-collapse > .list-group { + margin-bottom: 0; + } +.panel > .list-group .list-group-item, +.panel > .panel-collapse > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; + } +.panel > .list-group:first-child .list-group-item:first-child, +.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + } +.panel > .list-group:last-child .list-group-item:last-child, +.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + } +.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; + } +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; + } +.list-group + .panel-footer { + border-top-width: 0; + } +.alert { + padding: 15px; + margin-bottom: 20px; + color: #282828; + background-color: #f1f1f1; + border-radius: 3px; + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +.alert hr { + border-top-color: #e4e4e4; + } +.alert .alert-link { + color: #161616; + } +.alert h4 { + margin-top: 0; + color: inherit; + } +.alert hr { + margin: 10px 0; + } +.alert p, +.alert ul { + margin-bottom: 0; + } +.alert p + p { + margin-top: 5px; + } +.alert-link { + font-weight: bold; + } +.alert > [class*="icon-"] { + float: left; + margin-top: -5px; + font-size: 42px; + opacity: .6; + -webkit-transition: opacity .2s cubic-bezier(.175, .885, .32, 1); + -o-transition: opacity .2s cubic-bezier(.175, .885, .32, 1); + transition: opacity .2s cubic-bezier(.175, .885, .32, 1); + } +.alert > [class*="icon-"] + .content { + min-height: 30px; + margin-left: 64px; + } +.alert.with-icon { + display: table; + width: 100%; + } +.alert.with-icon > [class*="icon-"], +.alert.with-icon > [class*="icon-"] + .content { + display: table-cell; + float: none; + min-height: 0; + margin: 0; + vertical-align: middle; + } +.alert.with-icon > [class*="icon-"] { + width: 48px; + text-align: center; + } +.alert.with-icon > [class*="icon-"] + .content { + padding-left: 1em; + } +.alert-block { + margin: 0; + border-radius: 0; + } +.alert-dismissable { + padding-right: 35px; + } +.alert-dismissable .close { + position: relative; + top: -6px; + right: -21px; + color: inherit; + } +.alert-primary { + color: #282828; + background-color: #ebf2f9; + } +.alert-primary hr { + border-top-color: #d0e0f1; + } +.alert-primary .alert-link { + color: #161616; + } +.alert-success { + color: #329d38; + background-color: #ddf4df; + } +.alert-success hr { + border-top-color: #bae8b6; + } +.alert-success .alert-link { + color: #29822e; + } +.alert-info { + color: #03a2b6; + background-color: #ddf3f5; + } +.alert-info hr { + border-top-color: #a2e4de; + } +.alert-info .alert-link { + color: #028293; + } +.alert-warning { + color: #ed980f; + background-color: #fff0d5; + } +.alert-warning hr { + border-top-color: #ffdcbc; + } +.alert-warning .alert-link { + color: #cc830d; + } +.alert-danger { + color: #e75033; + background-color: #ffe5e0; + } +.alert-danger hr { + border-top-color: #ffc6c7; + } +.alert-danger .alert-link { + color: #dd391a; + } +.alert-inverse { + color: #fff; + background-color: #353535; + border-color: #353535; + } +.alert-inverse hr { + border-top-color: #ddd; + border-top-color: rgba(221, 221, 221, .25); + } +.alert-inverse .alert-link { + color: rgba(255, 255, 255, .8); + } +.alert-primary-inverse { + color: #fff; + background-color: #3280fc; + border-color: #3280fc; + } +.alert-primary-inverse hr { + border-top-color: #ddd; + border-top-color: rgba(221, 221, 221, .25); + } +.alert-primary-inverse .alert-link { + color: rgba(255, 255, 255, .8); + } +.alert-success-inverse { + color: #fff; + background-color: #38b03f; + border-color: #38b03f; + } +.alert-success-inverse hr { + border-top-color: #ddd; + border-top-color: rgba(221, 221, 221, .25); + } +.alert-success-inverse .alert-link { + color: rgba(255, 255, 255, .8); + } +.alert-info-inverse { + color: #fff; + background-color: #03b8cf; + border-color: #03b8cf; + } +.alert-info-inverse hr { + border-top-color: #ddd; + border-top-color: rgba(221, 221, 221, .25); + } +.alert-info-inverse .alert-link { + color: rgba(255, 255, 255, .8); + } +.alert-warning-inverse { + color: #fff; + background-color: #f1a325; + border-color: #f1a325; + } +.alert-warning-inverse hr { + border-top-color: #ddd; + border-top-color: rgba(221, 221, 221, .25); + } +.alert-warning-inverse .alert-link { + color: rgba(255, 255, 255, .8); + } +.alert-danger-inverse { + color: #fff; + background-color: #ea644a; + border-color: #ea644a; + } +.alert-danger-inverse hr { + border-top-color: #ddd; + border-top-color: rgba(221, 221, 221, .25); + } +.alert-danger-inverse .alert-link { + color: rgba(255, 255, 255, .8); + } +.input-control-icon-left, +.input-control-icon-right, +.input-control-label-left, +.input-control-label-right { + position: absolute; + top: 1px; + z-index: 5; + height: 30px; + line-height: 30px; + opacity: .5; + } +.input-control-icon-left, +.input-control-icon-right { + width: 30px; + text-align: center; + } +.input-control-label-left, +.input-control-icon-left { + left: 1px; + } +.input-control-label-right, +.input-control-icon-right { + right: 1px; + } +.input-control-label-left, +.input-control-label-right { + width: 70px; + padding: 0 8px; + overflow: hidden; + text-overflow: ellipsis; + } +.has-label-left-sm > .input-control-label-left, +.has-label-left-sm > .input-control-label-right { + width: 55px; + } +.has-label-left-lg > .input-control-label-left, +.has-label-left-lg > .input-control-label-right { + width: 95px; + } +.input-control { + position: relative; + } +.input-control.has-icon-left > .form-control { + padding-left: 30px; + } +.input-control.has-icon-right > .form-control { + padding-right: 30px; + } +.input-control.has-label-left > .form-control { + padding-left: 70px; + } +.input-control.has-label-right > .form-control { + padding-right: 70px; + } +.input-control.has-label-left-sm > .form-control { + padding-left: 55px; + } +.input-control.has-label-right-sm > .form-control { + padding-right: 55px; + } +.input-control.has-label-left-lg > .form-control { + padding-left: 95px; + } +.input-control.has-label-right-lg > .form-control { + padding-right: 95px; + } +.input-control > a:hover { + background-color: #f1f1f1; + opacity: 1; + } +.form-control:focus + [class^="input-control-"], +.form-control:focus + [class^="input-control-"] + [class^="input-control-"] { + opacity: 1; + } +.form-control:focus + .input-control-label-left { + color: #145ccd; + } +.empty + .search-clear-btn, +.empty + .search-icon + .search-clear-btn { + opacity: 0 !important; + } +input:placeholder-shown + .search-clear-btn, +input:placeholder-shown + .search-icon + .search-clear-btn { + opacity: 0 !important; + } +.search-box-circle .input-control-icon-left, +.search-box-circle .input-control-icon-right, +.search-box-circle > .form-control { + border-radius: 16px; + } +.search-box-circle + .input-group-btn > .btn { + border-radius: 0 16px 16px 0; + } +.input-group { + position: relative; + display: table; + border-collapse: separate; + } +.input-group[class*="col-"] { + float: none; + padding-right: 0; + padding-left: 0; + } +.input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; + } +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; + } +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; + } +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; + } +.input-group-addon { + padding: 5px 12px; + font-size: 13px; + font-weight: normal; + line-height: 1; + color: #222; + text-align: center; + background-color: #e5e5e5; + border: 1px solid #ccc; + border-radius: 4px; + } +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; + } +.input-group-addon.fix-border { + border-right: 0; + border-left: 0; + } +.input-group-addon:empty { + width: 1px; + padding: 0; + } +.input-group-addon.fix-padding { + width: 1px; + padding: 0; + } +.input-group-btn.fix-border > .btn { + border-right: 0; + border-left: 0; + border-radius: 0; + } +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn, +.input-group-btn:first-child > .btn-group-vertical > .btn, +.input-group-btn:last-child > .btn-group-vertical:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn, +.input-group-btn:last-child > .btn-group-vertical > .btn, +.input-group-btn:first-child > .btn-group-vertical:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } +.input-group-addon:first-child { + border-right: 0; + } +.input-group-addon:last-child { + border-left: 0; + } +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; + } +.input-group-btn > .btn { + position: relative; + } +.input-group-btn > .btn + .btn { + margin-left: -1px; + } +.input-group-btn > .btn:hover, +.input-group-btn > .btn:focus, +.input-group-btn > .btn:active { + z-index: 2; + } +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group, +.input-group-btn:first-child > .btn-group-vertical { + margin-right: -1px; + } +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group, +.input-group-btn:last-child > .btn-group-vertical { + margin-left: -1px; + } +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 43px; + padding: 10px 16px; + font-size: 17px; + line-height: 1.25; + border-radius: 6px; + } +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 43px; + line-height: 43px; + } +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn { + height: auto; + } +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 24px; + padding: 2px 8px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; + } +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 24px; + line-height: 24px; + } +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn { + height: auto; + } +.input-group-addon.input-sm { + padding: 2px 8px; + font-size: 12px; + border-radius: 3px; + } +.input-group-addon.input-lg { + padding: 10px 16px; + font-size: 17px; + border-radius: 6px; + } +.code, +code, +kbd, +pre, +samp { + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; + } +kbd, +code { + padding: 2px 4px; + font-size: 90%; + color: #37474f; + background-color: #f3f5f7; + border-radius: 4px; + } +kbd { + padding: 1px 4px; + font-weight: bold; + color: #666; + background-color: #f1f1f1; + border: 1px solid #d7d7d7; + border-bottom-width: 2px; + } +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 12px; + line-height: 1.38461538; + color: #333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px; + } +pre code { + padding: 0; + margin: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border: 0; + } +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; + } +.com { + color: #93a1a1; + } +.lit { + color: #195f91; + } +.pun, +.opn, +.clo { + color: #93a1a1; + } +.fun { + color: #dc322f; + } +.str, +.atv { + color: #d14; + } +.kwd, +.prettyprint .tag { + color: #1e347b; + } +.typ, +.atn, +.dec, +.var { + color: teal; + } +.pln { + color: #48484c; + } +.prettyprint.linenums { + -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; + box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; + } +.prettyprint ol.linenums { + padding-left: 35px; + margin-bottom: 0; + line-height: 20px; + color: #bebec5; + text-shadow: 0 1px 0 #fff; + } +.pager { + display: inline-block; + padding-left: 0; + margin: 20px 0; + list-style: none; + } +.pager > li { + display: inline; + } +.pager > li > a, +.pager > li > span { + position: relative; + float: left; + padding: 5px 12px; + margin-left: -1px; + line-height: 1.53846154; + text-decoration: none; + background-color: #fff; + border: 1px solid #ddd; + } +.pager > li:first-child > a, +.pager > li:first-child > span { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + } +.pager > li:last-child > a, +.pager > li:last-child > span { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + } +.pager > li > a:hover, +.pager > li > span:hover, +.pager > li > a:focus, +.pager > li > span:focus { + z-index: 2; + background-color: #e5e5e5; + } +.pager > li.active > a, +.pager > li.active > span, +.pager > li.active > a:hover, +.pager > li.active > span:hover { + z-index: 3; + color: #fff; + cursor: default; + background-color: #3280fc; + border-color: #3280fc; + } +.pager > li.disabled > span, +.pager > li.disabled > span:hover, +.pager > li.disabled > span:focus, +.pager > li.disabled > a, +.pager > li.disabled > a:hover, +.pager > li.disabled > a:focus { + color: #ddd; + pointer-events: none; + cursor: not-allowed; + background-color: #fff; + border-color: #ddd; + } +.pager-justify { + display: block; + } +.pager-justify .next > a, +.pager-justify .next > span { + float: right; + border-radius: 4px; + } +.pager-justify .previous > a, +.pager-justify .previous > span { + float: left; + border-radius: 4px; + } +.pager-goto { + width: 100px; + text-align: center; + } +.pager > li > div { + float: left; + } +.pager > li .pager-goto, +.pager > li .pager-size-menu, +.pager > li.space { + margin: 0 5px; + } +.pager-label { + position: relative; + float: left; + padding: 5px 4px; + margin-left: -1px; + line-height: 1.53846154; + text-decoration: none; + border: 1px solid transparent; + } +.pager-item-left > a { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + } +.pager-item-right > a { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + } +.pager-lg > li > a, +.pager-lg > li > span { + padding: 10px 16px; + font-size: 17px; + } +.pager-lg > li:first-child > a, +.pager-lg > li:first-child > span { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; + } +.pager-lg > li:last-child > a, +.pager-lg > li:last-child > span { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; + } +.pager-sm > li > a, +.pager-sm > li > span { + padding: 2px 8px; + font-size: 12px; + } +.pager-sm > li:first-child > a, +.pager-sm > li:first-child > span { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + } +.pager-sm > li:last-child > a, +.pager-sm > li:last-child > span { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + } +.pager-pills > li:first-child > a, +.pager-pills > li:first-child > span { + border-radius: 16px 0 0 16px; + } +.pager-pills > li:last-child > a, +.pager-pills > li:last-child > span { + border-radius: 0 16px 16px 0; + } +.pager-pills.pager-justify > li > a, +.pager-pills.pager-justify > li > span { + border-radius: 16px; + } +.pager-loose { + display: block; + margin: 20px 0; + } +.pager-loose.pager-pills > li > a, +.pager-loose.pager-pills > li > span { + border-radius: 16px; + } +.pager-loose > li > a, +.pager-loose > li > span { + margin-left: 5px; + border-radius: 4px; + } +.pager-loose > li:first-child > a, +.pager-loose > li:first-child > span { + margin-left: 0; + } +.nav { + padding-left: 0; + margin-bottom: 0; + list-style: none; + } +.nav > .nav-heading { + padding: 8px 15px; + font-weight: bold; + color: #808080; + } +.nav > li { + position: relative; + display: block; + } +.nav > li > a { + position: relative; + display: block; + padding: 8px 15px; + color: #353535; + } +.nav > li > a:hover, +.nav > li > a:focus { + color: #0d3d88; + text-decoration: none; + background-color: #f1f1f1; + } +.nav > li.disabled > a { + color: #ddd; + } +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #ddd; + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + } +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #f1f1f1; + border-color: #145ccd; + } +.nav > li > a > img { + max-width: none; + } +.nav-pills > li { + float: left; + } +.nav-pills > li > a { + border-radius: 20px; + } +.nav-pills > li + li { + margin-left: 2px; + } +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + color: #fff; + background-color: #3280fc; + } +.nav-primary > li { + float: left; + margin-left: -1px; + } +.nav-primary > li:first-child > a { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + } +.nav-primary > li:last-child > a { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + } +.nav-primary > li > a { + border: 1px solid #ddd; + } +.nav-primary > li.active > a, +.nav-primary > li.active > a:hover, +.nav-primary > li.active > a:focus { + color: #fff; + background-color: #3280fc; + border-color: #3280fc; + } +.nav-secondary > li { + float: left; + } +.nav-secondary > li > a { + border-bottom: 2px solid #e5e5e5; + } +.nav-secondary > li.active > a, +.nav-secondary > li.active > a:hover, +.nav-secondary > li.active > a:focus { + color: #3280fc; + border-bottom-color: #3280fc; + } +.nav-secondary > li.nav-heading { + border-bottom: 2px solid #e5e5e5; + } +.nav-stacked > li { + float: none; + } +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; + } +.nav-stacked.nav-primary > li, +.nav-stacked.nav-primary > li > a { + margin-left: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +.nav-stacked.nav-primary > li + li { + margin-top: -1px; + } +.nav-stacked.nav-primary > li:first-child { + margin-top: 0; + } +.nav-stacked.nav-primary > li:first-child > a, +.nav-stacked.nav-primary > li:first-child.nav-heading { + margin-left: 0; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + } +.nav-stacked.nav-primary > li:last-child > a { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; + } +.nav-stacked.nav-primary > li.nav-heading { + background-color: #f1f1f1; + border: 1px solid #ddd; + } +.nav-stacked.nav-secondary > li > a { + border: none; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + -webkit-box-shadow: inset 2px 0 0 #f5f5f5; + box-shadow: inset 2px 0 0 #f5f5f5; + } +.nav-stacked.nav-secondary > li > a:hover { + -webkit-box-shadow: inset 2px 0 0 #e5e5e5; + box-shadow: inset 2px 0 0 #e5e5e5; + } +.nav-stacked.nav-secondary > li + li { + margin-top: -1px; + } +.nav-stacked.nav-secondary > li:first-child { + margin-top: 0; + } +.nav-stacked.nav-secondary > li.active > a, +.nav-stacked.nav-secondary > li.active > a:hover, +.nav-stacked.nav-secondary > li.active > a:focus { + background-color: #f5f5f5; + -webkit-box-shadow: inset 2px 0 0 #3280fc; + box-shadow: inset 2px 0 0 #3280fc; + } +.nav-stacked.nav-secondary > li.nav-heading { + border-bottom: 1px solid #ddd; + } +.nav-justified { + width: 100%; + } +.nav-justified > li { + float: none; + } +.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; + } +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-justified > li > a { + margin-bottom: 0; + } + .nav-justified.nav-primary > li + li > a { + border-left: 0; + } + } +.nav-tabs { + border-bottom: 1px solid #ddd; + } +.nav-tabs > li { + float: left; + margin-bottom: -1px; + } +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.53846154; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; + } +.nav-tabs > li > a:hover { + border-color: #e5e5e5 #e5e5e5 #ddd; + } +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #808080; + cursor: default; + background-color: #fff; + border: 1px solid #ddd; + border-bottom-color: transparent; + } +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; + } +.nav-tabs.nav-justified > li { + float: none; + } +.nav-tabs.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; + } +@media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-tabs.nav-justified > li > a { + margin-bottom: 0; + } + .nav-tabs.nav-justified.nav-primary > li + li > a { + border-left: 0; + } + } +.nav-tabs.nav-justified > li > a { + margin-right: 0; + border-radius: 4px; + } +.nav-tabs.nav-justified > .active > a, +.nav-tabs.nav-justified > .active > a:hover, +.nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #ddd; + } +@media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #fff; + } + } +@-moz-document url-prefix() { + .nav-tabs > li.active > a:focus .nav-tabs > li > a:focus { + outline: 0; + } + } +.nav-tabs.nav-stacked { + border-right: 1px solid #ddd; + border-bottom: none; + } +.nav-tabs.nav-stacked > li { + float: none; + margin-right: -1px; + margin-bottom: 0; + } +.nav-tabs.nav-stacked > li > a { + margin-right: 0; + border-radius: 4px 0 0 4px; + } +.nav-tabs.nav-stacked > li.active > a, +.nav-tabs.nav-stacked > li.active > a:hover, +.nav-tabs.nav-stacked > li.active > a:focus { + border: 1px solid #ddd; + border-right-color: transparent; + } +.nav-tabs-justified { + border-bottom: 0; + } +.nav-tabs-justified > li > a { + margin-right: 0; + border-radius: 4px; + } +.nav-tabs-justified > .active > a, +.nav-tabs-justified > .active > a:hover, +.nav-tabs-justified > .active > a:focus { + border: 1px solid #ddd; + } +@media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #fff; + } + } +.tab-content > .tab-pane { + display: none; + } +.tab-content > .active { + display: block; + } +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; + } +.navbar { + position: relative; + min-height: 40px; + margin-bottom: 20px; + border: 1px solid transparent; + } +@media (min-width: 768px) { + .navbar { + border-radius: 4px; + } + } +@media (min-width: 768px) { + .navbar-header { + float: left; + } + } +.navbar-collapse { + padding-right: 10px; + padding-left: 10px; + overflow-x: visible; + -webkit-overflow-scrolling: touch; + border-top: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); + } +.navbar-collapse.in { + overflow-y: auto; + } +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-right: 0; + padding-left: 0; + } + } +.navbar-fixed-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + max-height: 340px; + } +@media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } + } +.container > .navbar-header, +.container-fluid > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-collapse { + margin-right: -10px; + margin-left: -10px; + } +@media (min-width: 768px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } + } +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; + } +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } + } +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + } +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } + } +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; + } +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; + } +.navbar-brand { + float: left; + height: 40px; + padding: 10px 15px; + font-size: 17px; + line-height: 20px; + } +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; + } +.navbar-brand > img { + display: block; + } +@media (min-width: 768px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: -10px; + } + } +.navbar-toggle { + position: relative; + float: right; + padding: 9px 10px; + margin-top: 3px; + margin-right: 3px; + margin-bottom: 3px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; + } +.navbar-toggle:focus { + outline: 0; + } +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; + } +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; + } +@media (min-width: 768px) { + .navbar-toggle { + display: none; + } + } +.navbar-nav { + margin: 5px -10px; + } +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; + } +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } + } +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + } + .navbar-nav.nav-justified > li { + float: none; + } + } +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; + } +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +.navbar-nav.pull-right > li > .dropdown-menu, +.navbar-nav > li > .dropdown-menu.pull-right { + right: 0; + left: auto; + } +.navbar-btn { + margin-top: 4px; + margin-bottom: 4px; + } +.navbar-text { + float: left; + margin-top: 10px; + margin-bottom: 10px; + } +@media (min-width: 768px) { + .navbar-text { + margin-right: 10px; + margin-left: 10px; + } + } +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + margin-right: -10px; + } + .navbar-right ~ .navbar-right { + margin-right: 0; + } + } +.navbar-default { + background-color: #f7f7f7; + border-color: #dedede; + } +.navbar-default .navbar-brand { + color: #333; + } +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #1a1a1a; + background-color: transparent; + } +.navbar-default .navbar-text { + color: #333; + } +.navbar-default .navbar-nav > li > a { + color: #333; + } +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #222; + background-color: #e5e5e5; + } +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #555; + background-color: #e7e7e7; + } +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #ccc; + background-color: transparent; + } +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #ddd; + } +.navbar-default .navbar-toggle .icon-bar { + background-color: #808080; + } +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #dedede; + } +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + color: #555; + background-color: #e7e7e7; + } +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #333; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #222; + background-color: #e5e5e5; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #ccc; + background-color: transparent; + } + } +.navbar-default .navbar-link { + color: #333; + } +.navbar-default .navbar-link:hover { + color: #222; + } +.navbar-default .btn-link { + color: #333; + } +.navbar-default .btn-link:hover, +.navbar-default .btn-link:focus { + color: #222; + } +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:hover, +.navbar-default .btn-link[disabled]:focus, +fieldset[disabled] .navbar-default .btn-link:focus { + color: #ccc; + } +.navbar-inverse { + background-color: #145ccd; + border-color: #10479f; + } +.navbar-inverse .navbar-brand { + color: #ddd; + } +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #fff; + background-color: transparent; + } +.navbar-inverse .navbar-text { + color: #ddd; + } +.navbar-inverse .navbar-nav > li > a { + color: #ddd; + } +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #fff; + background-color: #1868e8; + } +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #fff; + background-color: #2a74ea; + } +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444; + background-color: transparent; + } +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #1251b6; + } +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #fff; + } +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #114dad; + } +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + color: #fff; + background-color: #2a74ea; + } +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #10479f; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #10479f; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #ddd; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #fff; + background-color: #1868e8; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-color: #2a74ea; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444; + background-color: transparent; + } + } +.navbar-inverse .navbar-link { + color: #ddd; + } +.navbar-inverse .navbar-link:hover { + color: #fff; + } +.navbar-form { + padding: 10px 10px; + margin-top: 4px; + margin-right: -10px; + margin-bottom: 4px; + margin-left: -10px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); + } +@media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + padding-left: 0; + margin-top: 0; + margin-bottom: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + float: none; + margin-left: 0; + } + } +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } + .navbar-form .form-group:last-child { + margin-bottom: 0; + } + } +@media (min-width: 768px) { + .navbar-form { + width: auto; + padding-top: 0; + padding-bottom: 0; + margin-right: 0; + margin-left: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + } +.fade { + opacity: 0; + -webkit-transition: opacity .15s linear; + -o-transition: opacity .15s linear; + transition: opacity .15s linear; + } +.fade.in { + opacity: 1; + } +.scale { + -webkit-transition: all .15s ease; + -o-transition: all .15s ease; + transition: all .15s ease; + -webkit-transform: scale(.8); + -ms-transform: scale(.8); + -o-transform: scale(.8); + transform: scale(.8); + } +.scale.in { + -webkit-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); + } +.collapse { + display: none; + } +.collapse.in { + display: block; + } +tr.collapse.in { + display: table-row; + } +tbody.collapse.in { + display: table-row-group; + } +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height .35s ease; + -o-transition: height .35s ease; + transition: height .35s ease; + } +.modal-open { + overflow: hidden; + } +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + display: none; + overflow: hidden; + -webkit-overflow-scrolling: touch; + outline: 0; + } +.modal.fade .modal-dialog { + -webkit-transition: -webkit-transform .3s ease-out; + -o-transition: -o-transform .3s ease-out; + transition: -webkit-transform .3s ease-out; + transition: transform .3s ease-out; + transition: transform .3s ease-out, -webkit-transform .3s ease-out, -o-transform .3s ease-out; + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); + } +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); + } +.modal > .loader { + display: none; + } +.modal.modal-loading .modal-dialog { + opacity: 0; + } +.modal.modal-loading .loader { + position: absolute; + top: 35%; + left: 50%; + display: block; + width: 80px; + margin-left: -40px; + font-size: 56px; + color: #fff; + text-align: center; + } +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; + } +.modal-iframe .modal-body > iframe { + border-radius: 0 0 6px 6px; + } +.modal-dialog { + position: relative; + width: auto; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + outline: 0; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); + box-shadow: 0 3px 9px rgba(0, 0, 0, .5); + } +.modal-dialog.modal-moveable { + position: absolute; + margin: 0; + } +.modal-dialog.modal-moveable .modal-header { + cursor: move; + } +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000; + } +.modal-backdrop.fade { + filter: alpha(opacity=0); + opacity: 0; + } +.modal-backdrop.in { + filter: alpha(opacity=50); + opacity: .5; + } +.modal-header { + min-height: 16.53846154px; + padding: 15px; + border-bottom: 1px solid #e5e5e5; + } +.modal-header .close { + margin-top: -2px; + } +.modal-title { + margin: 0; + line-height: 1.53846154; + } +.modal-body { + position: relative; + padding: 15px; + } +.modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; + } +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; + } +.modal-footer .btn-group .btn + .btn, +.modal-footer .btn-group-vertical .btn + .btn { + margin-left: -1px; + } +.modal-footer .btn-block + .btn-block { + margin-left: 0; + } +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; + } +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + } + .modal-sm { + width: 300px; + } + } +@media (min-width: 992px) { + .modal-lg { + width: 900px; + } + } +/* full screen modal */ +.modal-fullscreen { + position: relative; + width: 100%!important; + height: 100%!important; + margin: 0; + border-radius: 0; + } +.modal-fullscreen .modal-body { + position: absolute; + top: 52px; + right: 0; + bottom: 0; + left: 0; + overflow-y: auto; + } +.tooltip { + position: absolute; + z-index: 1030; + display: block; + font-size: 12px; + line-height: 1.4; + visibility: visible; + filter: alpha(opacity=0); + opacity: 0; + } +.tooltip.in { + filter: alpha(opacity=100); + opacity: 1; + } +.tooltip.top { + padding: 5px 0; + margin-top: -3px; + } +.tooltip.right { + padding: 0 5px; + margin-left: 3px; + } +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; + } +.tooltip.left { + padding: 0 5px; + margin-left: -3px; + } +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + text-decoration: none; + background-color: #353535; + border-radius: 4px; + } +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + } +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #353535; + } +.tooltip.top-left .tooltip-arrow { + bottom: 0; + left: 5px; + border-width: 5px 5px 0; + border-top-color: #353535; + } +.tooltip.top-right .tooltip-arrow { + right: 5px; + bottom: 0; + border-width: 5px 5px 0; + border-top-color: #353535; + } +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #353535; + } +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #353535; + } +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #353535; + } +.tooltip.bottom-left .tooltip-arrow { + top: 0; + left: 5px; + border-width: 0 5px 5px; + border-bottom-color: #353535; + } +.tooltip.bottom-right .tooltip-arrow { + top: 0; + right: 5px; + border-width: 0 5px 5px; + border-bottom-color: #353535; + } +.tooltip-primary .tooltip-inner { + background-color: #3280fc; + } +.tooltip-primary.tooltip.top .tooltip-arrow { + border-top-color: #3280fc; + } +.tooltip-primary.tooltip.top-left .tooltip-arrow { + border-top-color: #3280fc; + } +.tooltip-primary.tooltip.top-right .tooltip-arrow { + border-top-color: #3280fc; + } +.tooltip-primary.tooltip.right .tooltip-arrow { + border-right-color: #3280fc; + } +.tooltip-primary.tooltip.left .tooltip-arrow { + border-left-color: #3280fc; + } +.tooltip-primary.tooltip.bottom .tooltip-arrow { + border-bottom-color: #3280fc; + } +.tooltip-primary.tooltip.bottom-left .tooltip-arrow { + border-bottom-color: #3280fc; + } +.tooltip-primary.tooltip.bottom-right .tooltip-arrow { + border-bottom-color: #3280fc; + } +.tooltip-success .tooltip-inner { + background-color: #38b03f; + } +.tooltip-success.tooltip.top .tooltip-arrow { + border-top-color: #38b03f; + } +.tooltip-success.tooltip.top-left .tooltip-arrow { + border-top-color: #38b03f; + } +.tooltip-success.tooltip.top-right .tooltip-arrow { + border-top-color: #38b03f; + } +.tooltip-success.tooltip.right .tooltip-arrow { + border-right-color: #38b03f; + } +.tooltip-success.tooltip.left .tooltip-arrow { + border-left-color: #38b03f; + } +.tooltip-success.tooltip.bottom .tooltip-arrow { + border-bottom-color: #38b03f; + } +.tooltip-success.tooltip.bottom-left .tooltip-arrow { + border-bottom-color: #38b03f; + } +.tooltip-success.tooltip.bottom-right .tooltip-arrow { + border-bottom-color: #38b03f; + } +.tooltip-info .tooltip-inner { + background-color: #03b8cf; + } +.tooltip-info.tooltip.top .tooltip-arrow { + border-top-color: #03b8cf; + } +.tooltip-info.tooltip.top-left .tooltip-arrow { + border-top-color: #03b8cf; + } +.tooltip-info.tooltip.top-right .tooltip-arrow { + border-top-color: #03b8cf; + } +.tooltip-info.tooltip.right .tooltip-arrow { + border-right-color: #03b8cf; + } +.tooltip-info.tooltip.left .tooltip-arrow { + border-left-color: #03b8cf; + } +.tooltip-info.tooltip.bottom .tooltip-arrow { + border-bottom-color: #03b8cf; + } +.tooltip-info.tooltip.bottom-left .tooltip-arrow { + border-bottom-color: #03b8cf; + } +.tooltip-info.tooltip.bottom-right .tooltip-arrow { + border-bottom-color: #03b8cf; + } +.tooltip-warning .tooltip-inner { + background-color: #f1a325; + } +.tooltip-warning.tooltip.top .tooltip-arrow { + border-top-color: #f1a325; + } +.tooltip-warning.tooltip.top-left .tooltip-arrow { + border-top-color: #f1a325; + } +.tooltip-warning.tooltip.top-right .tooltip-arrow { + border-top-color: #f1a325; + } +.tooltip-warning.tooltip.right .tooltip-arrow { + border-right-color: #f1a325; + } +.tooltip-warning.tooltip.left .tooltip-arrow { + border-left-color: #f1a325; + } +.tooltip-warning.tooltip.bottom .tooltip-arrow { + border-bottom-color: #f1a325; + } +.tooltip-warning.tooltip.bottom-left .tooltip-arrow { + border-bottom-color: #f1a325; + } +.tooltip-warning.tooltip.bottom-right .tooltip-arrow { + border-bottom-color: #f1a325; + } +.tooltip-danger .tooltip-inner { + background-color: #ea644a; + } +.tooltip-danger.tooltip.top .tooltip-arrow { + border-top-color: #ea644a; + } +.tooltip-danger.tooltip.top-left .tooltip-arrow { + border-top-color: #ea644a; + } +.tooltip-danger.tooltip.top-right .tooltip-arrow { + border-top-color: #ea644a; + } +.tooltip-danger.tooltip.right .tooltip-arrow { + border-right-color: #ea644a; + } +.tooltip-danger.tooltip.left .tooltip-arrow { + border-left-color: #ea644a; + } +.tooltip-danger.tooltip.bottom .tooltip-arrow { + border-bottom-color: #ea644a; + } +.tooltip-danger.tooltip.bottom-left .tooltip-arrow { + border-bottom-color: #ea644a; + } +.tooltip-danger.tooltip.bottom-right .tooltip-arrow { + border-bottom-color: #ea644a; + } +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + max-width: 300px; + text-align: left; + white-space: normal; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 4px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + } +.popover.top { + margin-top: -10px; + } +.popover.right { + margin-left: 10px; + } +.popover.bottom { + margin-top: 10px; + } +.popover.left { + margin-left: -10px; + } +.popover.no-arrow.top { + margin-top: 0; + } +.popover.no-arrow.right { + margin-left: 0; + } +.popover.no-arrow.bottom { + margin-top: 0; + } +.popover.no-arrow.left { + margin-left: 0; + } +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 13px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 4px 4px 0 0; + } +.popover-content { + padding: 9px 14px; + } +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + } +.popover .arrow { + border-width: 11px; + } +.popover .arrow:after { + content: ""; + border-width: 10px; + } +.popover.top .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, .25); + border-bottom-width: 0; + } +.popover.top .arrow:after { + bottom: 1px; + margin-left: -10px; + content: " "; + border-top-color: #fff; + border-bottom-width: 0; + } +.popover.right .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, .25); + border-left-width: 0; + } +.popover.right .arrow:after { + bottom: -10px; + left: 1px; + content: " "; + border-right-color: #fff; + border-left-width: 0; + } +.popover.bottom .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, .25); + } +.popover.bottom .arrow:after { + top: 1px; + margin-left: -10px; + content: " "; + border-top-width: 0; + border-bottom-color: #fff; + } +.popover.left .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, .25); + } +.popover.left .arrow:after { + right: 1px; + bottom: -10px; + content: " "; + border-right-width: 0; + border-left-color: #fff; + } +.popover-primary { + border-color: #3280fc; + } +.popover-primary .popover-title { + color: #fff; + background-color: #3280fc; + } +.popover-primary.popover.top .arrow { + border-top-color: #3280fc; + } +.popover-primary.popover.right .arrow { + border-right-color: #3280fc; + } +.popover-primary.popover.left .arrow { + border-left-color: #3280fc; + } +.popover-primary.popover.bottom .arrow, +.popover-primary.popover.bottom .arrow:after { + border-bottom-color: #3280fc; + } +.popover-success { + border-color: #38b03f; + } +.popover-success .popover-title { + color: #fff; + background-color: #38b03f; + } +.popover-success.popover.top .arrow { + border-top-color: #38b03f; + } +.popover-success.popover.right .arrow { + border-right-color: #38b03f; + } +.popover-success.popover.left .arrow { + border-left-color: #38b03f; + } +.popover-success.popover.bottom .arrow, +.popover-success.popover.bottom .arrow:after { + border-bottom-color: #38b03f; + } +.popover-info { + border-color: #03b8cf; + } +.popover-info .popover-title { + color: #fff; + background-color: #03b8cf; + } +.popover-info.popover.top .arrow { + border-top-color: #03b8cf; + } +.popover-info.popover.right .arrow { + border-right-color: #03b8cf; + } +.popover-info.popover.left .arrow { + border-left-color: #03b8cf; + } +.popover-info.popover.bottom .arrow, +.popover-info.popover.bottom .arrow:after { + border-bottom-color: #03b8cf; + } +.popover-warning { + border-color: #f1a325; + } +.popover-warning .popover-title { + color: #fff; + background-color: #f1a325; + } +.popover-warning.popover.top .arrow { + border-top-color: #f1a325; + } +.popover-warning.popover.right .arrow { + border-right-color: #f1a325; + } +.popover-warning.popover.left .arrow { + border-left-color: #f1a325; + } +.popover-warning.popover.bottom .arrow, +.popover-warning.popover.bottom .arrow:after { + border-bottom-color: #f1a325; + } +.popover-danger { + border-color: #ea644a; + } +.popover-danger .popover-title { + color: #fff; + background-color: #ea644a; + } +.popover-danger.popover.top .arrow { + border-top-color: #ea644a; + } +.popover-danger.popover.right .arrow { + border-right-color: #ea644a; + } +.popover-danger.popover.left .arrow { + border-left-color: #ea644a; + } +.popover-danger.popover.bottom .arrow, +.popover-danger.popover.bottom .arrow:after { + border-bottom-color: #ea644a; + } +.caret { + display: inline-block; + width: 0; + height: 0; + margin-bottom: 2px; + margin-left: 2px; + vertical-align: middle; + border-top: 4px dashed; + border-top: 4px solid \9; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + } +.dropup, +.dropdown { + position: relative; + } +.dropdown-toggle:focus { + outline: 0; + } +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 13px; + list-style: none; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #cbcbcb; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + } +.dropdown-menu.pull-right { + right: 0; + left: auto; + } +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; + } +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.53846154; + color: #353535; + white-space: nowrap; + } +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + color: #fff; + text-decoration: none; + background-color: #3280fc; + } +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #fff; + text-decoration: none; + background-color: #3280fc; + outline: 0; + } +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #ddd; + } +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + } +.dropdown-hover .dropdown-menu { + margin: -1px 0; + } +.dropdown-hover:hover > .dropdown-menu, +.open > .dropdown-menu { + display: block; + } +.dropdown-hover:hover > a, +.open > a { + outline: 0; + } +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + font-weight: bold; + line-height: 1.53846154; + color: #808080; + } +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; + } +.pull-right > .dropdown-menu { + right: 0; + left: auto; + } +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + content: ""; + border-top: 0 dotted; + border-bottom: 4px solid; + } +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; + } +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; + } + } +.dropdown-submenu { + position: relative; + } +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + border-radius: 4px; + } +.dropdown-submenu.open > .dropdown-menu, +.dropdown-submenu:hover > .dropdown-menu { + display: block; + } +.dropup .dropdown-submenu > .dropdown-menu { + top: auto; + bottom: 0; + margin-top: 0; + margin-bottom: -2px; + border-radius: 4px; + } +.dropdown-submenu > a:after { + display: block; + float: right; + width: 0; + height: 0; + margin-top: 5px; + margin-right: -10px; + content: " "; + border-color: transparent; + border-style: solid; + border-width: 5px 0 5px 5px; + border-left-color: #ccc; + } +.dropdown-submenu:hover > a:after { + border-left-color: #fff; + } +.dropdown-submenu > a { + min-width: 160px; + } +.dropdown-submenu > .dropdown-menu.pull-left { + left: -100%; + } +.dropdown-submenu:hover > a, +.dropdown-submenu:focus > a { + color: #fff; + text-decoration: none; + background-color: #3280fc; + } +.carousel { + position: relative; + } +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; + } +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: .6s ease-in-out left; + -o-transition: .6s ease-in-out left; + transition: .6s ease-in-out left; + } +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + line-height: 1; + } +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; + } +.carousel-inner > .active { + left: 0; + } +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; + } +.carousel-inner > .next { + left: 100%; + } +.carousel-inner > .prev { + left: -100%; + } +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; + } +.carousel-inner > .active.left { + left: -100%; + } +.carousel-inner > .active.right { + left: 100%; + } +.carousel-control { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 10%; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); + filter: alpha(opacity=40); + outline: none; + opacity: .4; + } +.carousel-control > .icon { + font-size: 20px; + } +.carousel-control.left { + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .3)), to(rgba(0, 0, 0, .0001))); + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .3) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .3) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, .3) 0%, rgba(0, 0, 0, .0001) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#4d000000', endColorstr='#00000000', GradientType=1); + background-repeat: repeat-x; + } +.carousel-control.right { + right: 0; + left: auto; + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .3))); + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .3) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .3) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .3) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#4d000000', GradientType=1); + background-repeat: repeat-x; + } +.carousel-control:hover, +.carousel-control:focus { + color: #fff; + text-decoration: none; + filter: alpha(opacity=100); + outline: none; + opacity: 1; + } +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .icon-chevron-left, +.carousel-control .icon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; + } +.carousel-control .icon-prev, +.carousel-control .icon-chevron-left { + left: 50%; + } +.carousel-control .icon-next, +.carousel-control .icon-chevron-right { + right: 50%; + } +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + margin-left: -10px; + font-family: serif; + } +.carousel-control .icon-prev:before { + content: '\2039'; + } +.carousel-control .icon-next:before { + content: '\203a'; + } +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); + } +.carousel-caption .btn { + text-shadow: none; + } +@media screen and (min-width: 768px) { + .carousel-control .icon-prev, + .carousel-control .icon-next { + top: 40%; + width: 30px; + height: 30px; + margin-top: -15px; + margin-left: -15px; + font-size: 80px; + } + .carousel-control .icon-prev { + left: 30%; + } + .carousel-control .icon-next { + right: 25%; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } + } +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + padding-left: 0; + margin-left: -30%; + text-align: center; + list-style: none; + } +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + cursor: pointer; + border: 1px solid #fff; + border-radius: 10px; + } +.carousel-indicators .active { + width: 12px; + height: 12px; + margin: 0; + background-color: #fff; + } +[data-toggle="lightbox"] { + cursor: pointer; + } +.modal-lightbox .close { + position: absolute; + top: 0; + right: 0; + z-index: 10; + display: block; + width: 40px; + height: 40px; + font-size: 14px; + color: #fff; + text-align: center; + background-color: #353535; + background-color: rgba(53, 53, 53, .2); + filter: alpha(opacity=80); + opacity: .8; + -webkit-transition: opacity .2s cubic-bezier(.175, .885, .32, 1), background-color .2s cubic-bezier(.175, .885, .32, 1); + -o-transition: opacity .2s cubic-bezier(.175, .885, .32, 1), background-color .2s cubic-bezier(.175, .885, .32, 1); + transition: opacity .2s cubic-bezier(.175, .885, .32, 1), background-color .2s cubic-bezier(.175, .885, .32, 1); + } +.modal-lightbox .controller { + position: absolute; + top: 0; + display: none; + height: 100%; + padding: 0; + line-height: 100%; + color: #fff; + cursor: pointer; + background-color: transparent; + border: none; + outline: none; + -webkit-transition: background .2s cubic-bezier(.175, .885, .32, 1); + -o-transition: background .2s cubic-bezier(.175, .885, .32, 1); + transition: background .2s cubic-bezier(.175, .885, .32, 1); + } +.modal-lightbox .controller.show { + display: block; + } +.modal-lightbox .controller > .icon { + display: inline-block; + width: 60px; + height: 50px; + line-height: 50px; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); + background-color: transparent; + -webkit-transition: background .2s cubic-bezier(.175, .885, .32, 1); + -o-transition: background .2s cubic-bezier(.175, .885, .32, 1); + transition: background .2s cubic-bezier(.175, .885, .32, 1); + } +.modal-lightbox .controller > .icon:before { + font-size: 20px; + } +.modal-lightbox .controller.prev { + left: 0; + } +.modal-lightbox .controller.next { + right: 0; + } +.modal-lightbox .modal-dialog { + position: relative; + max-width: 100%; + max-height: 100%; + margin-bottom: 0; + background: none; + border: none; + -webkit-box-shadow: none; + box-shadow: none; + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +.modal-lightbox .modal-dialog:hover .close, +.modal-lightbox .modal-dialog:focus .close { + background-color: rgba(53, 53, 53, .5); + filter: alpha(opacity=100); + opacity: 1; + } +.modal-lightbox .modal-dialog:hover .close:hover, +.modal-lightbox .modal-dialog:focus .close:hover { + background-color: rgba(53, 53, 53, .9); + } +.modal-lightbox .modal-dialog:hover .controller > .icon, +.modal-lightbox .modal-dialog:focus .controller > .icon { + text-shadow: none; + background-color: #353535; + background-color: rgba(53, 53, 53, .5); + } +.modal-lightbox .modal-dialog:hover .controller:hover > .icon, +.modal-lightbox .modal-dialog:focus .controller:hover > .icon { + background-color: #353535; + background-color: rgba(53, 53, 53, .9); + } +.modal-lightbox .caption { + display: none; + } +.modal-lightbox.lightbox-with-caption .caption { + position: absolute; + bottom: 0; + display: block; + width: 100%; + padding: 10px 15px; + color: #fff; + text-align: center; + text-shadow: 1px 1px 0 rgba(0, 0, 0, .3); + background: rgba(0, 0, 0, .15); + opacity: .5; + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +.modal-lightbox.lightbox-with-caption .modal-dialog:hover .caption { + background: rgba(0, 0, 0, .6); + opacity: 1; + } +.lightbox-img { + display: block; + width: inherit; + max-width: 100%; + height: auto; + padding: 0; + margin: 0 auto; + cursor: pointer; + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +.messager { + display: table; + margin: 10px; + overflow: hidden; + color: #fff; + pointer-events: auto; + background-color: #353535; + background-color: rgba(0, 0, 0, .8); + border-radius: 20px; + } +.messager-content { + display: table-cell; + padding: 10px 15px; + vertical-align: top; + } +.messager-content > [class^='icon-'] { + display: inline-block; + margin-right: 8px; + } +.messager-actions { + display: table-cell; + vertical-align: top; + } +.messager-actions > .action { + min-width: 40px; + height: 40px; + padding: 0 12px; + color: #fafafa; + color: rgba(255, 255, 255, .6); + text-align: center; + text-shadow: none; + background: none; + border: none; + } +.messager-actions > .action.close { + padding-bottom: 5px; + font-size: 20px; + font-weight: normal; + opacity: 1; + } +.messager-actions > .action:hover { + color: #fff; + background: rgba(0, 0, 0, .1); + } +.messager-actions .action-icon + .action-text { + margin-left: 8px; + } +.messagers-holder { + position: fixed; + z-index: 99999; + padding: 10px; + pointer-events: none; + -webkit-transition: top .2s cubic-bezier(.175, .885, .32, 1); + -o-transition: top .2s cubic-bezier(.175, .885, .32, 1); + transition: top .2s cubic-bezier(.175, .885, .32, 1); + } +.messagers-holder.top { + top: 0; + } +.messagers-holder.top-left { + top: 0; + left: 0; + } +.messagers-holder.top-right { + top: 0; + right: 0; + } +.messagers-holder.bottom { + bottom: 0; + } +.messagers-holder.bottom-left { + bottom: 0; + left: 0; + } +.messagers-holder.bottom-right { + right: 0; + bottom: 0; + } +.messagers-holder.top-right .messager, +.messagers-holder.bottom-right .messager { + margin-left: auto; + } +.messagers-holder.center { + top: 0; + } +.messagers-holder.top, +.messagers-holder.bottom, +.messagers-holder.center { + right: 0; + left: 0; + } +.messagers-holder.top .messager, +.messagers-holder.bottom .messager, +.messagers-holder.center .messager { + margin: 10px auto; + } +.messager-primary { + background-color: #3280fc; + } +.messager-success { + background-color: #38b03f; + } +.messager-info { + background-color: #03b8cf; + } +.messager-warning { + background-color: #f1a325; + } +.messager-danger { + background-color: #ea644a; + } +.messager-important { + background-color: #bd7b46; + } +.messager-special { + background-color: #8666b8; + } +.article { + padding: 20px; + } +.article > header h1, +.article > header h2, +.article > header h3 { + margin-bottom: 20px; + line-height: 1.5; + } +.article > header > .abstract, +.article > header > dl { + padding: 10px 15px; + font-size: 12px; + color: #686868; + background-color: #f1f1f1; + } +.article > header > .abstract > p:last-child, +.article > header > dl > p:last-child { + margin-bottom: 0; + } +.article > header > dl { + margin: 0; + border-bottom: 1px solid #e9e9e9; + } +.article > header > dl.pull-right { + background-color: transparent; + border: none; + } +.article > footer { + border-top: 1px dashed #d7d7d7; + } +.article > footer > p { + padding: 10px 15px; + } +.article > .content, +.article-content { + padding: 20px 0; + font-size: 14px; + line-height: 1.78571429; + } +.article > .content h1, +.article-content h1 { + font-size: 20px; + } +.article > .content h2, +.article-content h2 { + font-size: 18px; + } +.article > .content h3, +.article-content h3 { + font-size: 16px; + } +.article > .content h4, +.article-content h4 { + margin-top: 15px; + font-size: 14px; + } +.article > .content h5, +.article-content h5 { + margin-top: 15px; + font-size: 13px; + } +.article > .content h6, +.article-content h6 { + margin-top: 15px; + font-size: 11px; + } +.article > .content img, +.article-content img { + margin: 10px 0; + } +.article > .content p > img, +.article-content p > img { + margin-right: 10px; + } +.article > .content p > img[align='right'], +.article-content p > img[align='right'] { + margin-left: 10px; + } +.article > .content dl, +.article-content dl { + padding-right: 2em; + padding-left: 2em; + } +.article > .content table, +.article-content table { + margin-bottom: 20px; + } +.article > .content table th, +.article-content table th, +.article > .content table td, +.article-content table td { + padding: 8px; + line-height: 1.53846154; + vertical-align: top; + border-bottom: 1px solid #ddd; + } +.article > .content table > thead > tr > th, +.article-content table > thead > tr > th { + vertical-align: bottom; + background-color: #f1f1f1; + border-bottom: 1px solid #ddd; + } +.article-content p { + margin-bottom: 0; + } +.article-content table { + width: 100%; + } +.article > .content table th, +.article > .content table td, +.article > .content table > thead > tr > th { + border: 1px solid #ddd; + } +body.article-content { + padding: 8px; + } +.article-condensed { + padding: 20px 0; + } +.article-condensed > header { + padding: 0 20px; + } +.article-condensed > header > .abstract, +.article-condensed > header > dl { + padding: 10px 15px; + margin: 0 -20px; + } +.article-condensed > .content, +.article-condensed > .article-content { + padding: 20px; + } +.article-condensed > .content > img, +.article-condensed > .article-content > img, +.article-condensed > .content > pre, +.article-condensed > .article-content > pre { + margin-right: -20px; + margin-left: -20px; + border-radius: 0; + } +.article-condensed > .content > pre, +.article-condensed > .article-content > pre { + border-right: none; + border-left: none; + } +.article-condensed > footer { + border-top: 1px dashed #d7d7d7; + } +.article-condensed > footer > p { + padding: 10px 15px; + } +.article-condensed > footer > .pager-justify > .previous > a { + border-left: none; + border-radius: 0; + } +.article-condensed > footer > .pager-justify > .next > a { + border-right: none; + border-radius: 0; + } +.comments > header { + border-bottom: 1px solid #e5e5e5; + } +.comments > header > .alert { + padding: 7.5px 15px; + margin-bottom: -10px; + } +.comments > header h1, +.comments > header h2, +.comments > header h3 { + padding: 10px 0; + margin: 10px 0; + } +.comments > footer { + padding-top: 10px; + } +.comments > footer > .reply-form > .avatar { + display: block; + float: left; + width: 40px; + height: 40px; + margin-top: 10px; + } +.comments > footer > .reply-form > .avatar + .form { + padding-left: 50px; + } +.comment { + padding: 10px 0; + border-bottom: 1px solid #e5e5e5; + } +.comment:before, +.comment:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.comment:after { + clear: both; + } +.comment:before, +.comment:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.comment:after { + clear: both; + } +.comment > .avatar, +.comment > .content { + display: block; + } +.comment > .avatar { + float: left; + width: 40px; + height: 40px; + margin-top: 10px; + } +.comment > .avatar + .content { + padding-left: 50px; + } +.comment > .content > .text { + margin-top: 5px; + } +.comment > .content > .actions { + margin-top: 4px; + } +.comment > .content > .actions > a { + display: inline-block; + color: #808080; + } +.comment > .content > .actions > a + a { + margin-left: 5px; + } +.comment:hover > .content > .actions > a { + color: #145ccd; + } +.comment > .comments-list { + padding-top: 10px; + padding-bottom: 0; + padding-left: 30px; + margin-left: 20px; + border-left: 1px dashed #e5e5e5; + } +.comment > .comments-list > .comment { + border: none; + border-top: 1px solid #e5e5e5; + } +.comment > .comments-list > .comment:last-child { + padding-bottom: 0; + } +.list { + padding: 0 15px; + } +.list > header { + padding-bottom: 10px; + border-bottom: 1px solid #e5e5e5; + } +.items .item { + padding: 10px 0; + border-bottom: 1px solid #e5e5e5; + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +.items .item-heading > h6, +.items .item-heading h5, +.items .item-heading h4, +.items .item-heading h3, +.items .item-heading h2, +.items .item-heading h1 { + margin-top: 5px; + } +.items .item-content:before, +.items .item-content:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.items .item-content:after { + clear: both; + } +.items .item-content:before, +.items .item-content:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.items .item-content:after { + clear: both; + } +.items .item-content > .media { + max-width: 100%; + margin: 5px 0; + } +.items .item-content > .media.pull-left { + max-width: 150px; + margin: 0; + margin-right: 8px; + } +.items .item-content > .media.pull-right { + max-width: 150px; + margin: 0; + margin-left: 8px; + } +.items .item-footer { + padding-top: 5px; + } +.items .item-footer > a { + color: #808080; + } +.items-hover .item:hover { + background-color: #f5f5f5; + } +.list-condensed { + padding: 0; + } +.list-condensed > header, +.list-condensed > footer, +.list-condensed > .items > .item { + padding-right: 15px; + padding-left: 15px; + } +.cards { + padding-top: 10px; + padding-bottom: 10px; + margin-right: -10px; + margin-left: -10px; + } +.card { + position: relative; + display: block; + padding: 0; + margin-bottom: 20px; + overflow: hidden; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); + box-shadow: 0 1px 2px rgba(0, 0, 0, .075); + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +.card > img { + display: block; + max-width: 100%; + height: auto; + filter: alpha(opacity=100); + opacity: 1; + } +.card > .media-wrapper { + display: block; + width: 100%; + overflow: hidden; + text-align: center; + background-color: #f1f1f1; + filter: alpha(opacity=100); + opacity: 1; + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +.card > .media-wrapper > img { + max-width: 100%; + vertical-align: middle; + } +.card .card-heading { + display: block; + padding: 10px; + margin: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } +.card .card-content, +.card .card-actions { + padding: 0 10px 10px 10px; + overflow: hidden; + text-overflow: ellipsis; + } +.card .card-actions .btn + .pull-right { + padding: 6px 0; + line-height: 20px; + } +.card:hover { + text-decoration: none; + -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, .175); + box-shadow: 0 1px 5px rgba(0, 0, 0, .175); + } +.card:hover > img, +.card:hover > .media-wrapper { + background-color: #e5e5e5; + filter: alpha(opacity=90); + opacity: .9; + } +.card:hover > .card-reveal { + top: 0; + } +.cards-borderless .card { + border: none; + border-radius: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +.cards-borderless .card > img, +.cards-borderless .card > .media-wrapper { + overflow: hidden; + border-radius: 4px; + } +.cards-borderless .card > .card-heading, +.cards-borderless .card > .card-actions, +.cards-borderless .card > .card-content { + padding-right: 0; + padding-left: 0; + } +.card > .caption { + position: absolute; + top: -100%; + left: 0; + display: block; + width: 100%; + padding: 5px 10px; + overflow: hidden; + color: #fff; + text-align: center; + background-color: #666; + background-color: rgba(0, 0, 0, .7); + filter: alpha(opacity=0); + opacity: 0; + -webkit-transition: all .8s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .8s cubic-bezier(.175, .885, .32, 1); + transition: all .8s cubic-bezier(.175, .885, .32, 1); + } +.card:hover > .caption { + top: 0; + filter: alpha(opacity=100); + opacity: 1; + } +.cards-condensed { + padding: 0; + border: 1px solid #ddd; + border-top: 0; + border-left: 0; + } +.cards-condensed > [class^="col-"], +.cards-condensed > [class*=" col-"] { + padding: 0; + } +.cards-condensed .card { + padding: 10px; + margin: 0; + border-right: 0; + border-bottom: 0; + border-radius: 0; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .015); + box-shadow: 0 1px 2px rgba(0, 0, 0, .015); + } +.card > .card-reveal { + position: absolute; + top: 100%; + left: 0; + width: 100%; + height: 100%; + background-color: #f1f1f1; + -webkit-transition: all .8s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .8s cubic-bezier(.175, .885, .32, 1); + transition: all .8s cubic-bezier(.175, .885, .32, 1); + } +.card > .card-reveal > .card-heading { + padding: 20px 10px; + } +.card:hover > .card-reveal { + top: 0; + } +.tree { + padding-left: 0; + } +.tree ul { + position: relative; + display: none; + padding-left: 0; + } +.tree li { + position: relative; + padding: 2px 0 2px 20px; + list-style: none; + } +.tree li:before { + position: absolute; + top: 10px; + left: 8px; + display: block; + width: 3px; + height: 3px; + content: ' '; + background-color: #999; + } +.tree li.has-list:before { + display: none; + } +.tree li > .list-toggle { + position: absolute; + top: -1px; + left: 0; + z-index: 10; + width: 20px; + line-height: 24px; + color: #808080; + text-align: center; + cursor: pointer; + } +.tree li > .list-toggle:before { + content: '\f196'; + } +.tree li > .list-toggle:hover, +.tree li > .list-toggle:active { + color: #0d3d88; + } +.tree li.open > ul { + display: block; + } +.tree li.open > .list-toggle:before { + content: '\e71d'; + } +.tree-actions { + display: inline-block; + margin-left: 5px; + opacity: 0; + -webkit-transition: opacity .1s; + -o-transition: opacity .1s; + transition: opacity .1s; + } +.tree-action { + display: inline-block; + margin-left: 5px; + color: #808080; + } +.tree-action:hover, +.tree-action:active { + text-decoration: none; + } +.tree li:hover > .tree-actions, +.tree-item-wrapper:hover > .tree-actions { + opacity: 1; + } +.tree-drag-holder { + background-color: #ebf2f9; + opacity: .4; + } +.tree .sort-handler { + cursor: move; + } +.tree-animate ul { + opacity: 0; + -webkit-transition: opacity .2s cubic-bezier(.175, .885, .32, 1), -webkit-transform .2s cubic-bezier(.175, .885, .32, 1); + -o-transition: opacity .2s cubic-bezier(.175, .885, .32, 1), -o-transform .2s cubic-bezier(.175, .885, .32, 1); + transition: opacity .2s cubic-bezier(.175, .885, .32, 1), -webkit-transform .2s cubic-bezier(.175, .885, .32, 1); + transition: opacity .2s cubic-bezier(.175, .885, .32, 1), transform .2s cubic-bezier(.175, .885, .32, 1); + transition: opacity .2s cubic-bezier(.175, .885, .32, 1), transform .2s cubic-bezier(.175, .885, .32, 1), -webkit-transform .2s cubic-bezier(.175, .885, .32, 1), -o-transform .2s cubic-bezier(.175, .885, .32, 1); + -webkit-transform: scale(1, .5); + -ms-transform: scale(1, .5); + -o-transform: scale(1, .5); + transform: scale(1, .5); + } +.tree-animate li.open.in > ul { + opacity: 1; + -webkit-transform: scale(1, 1); + -ms-transform: scale(1, 1); + -o-transform: scale(1, 1); + transform: scale(1, 1); + } +.tree-animate.tree-lines li.has-list.open > ul:after { + top: -5px; + bottom: 12px; + left: -11px; + } +.tree-lines ul > li:after { + position: absolute; + top: 11px; + left: -10px; + z-index: 1; + display: block; + width: 22px; + content: ' '; + border-top: 1px dotted #999; + } +.tree-lines ul > li:before, +.tree-lines ul > li.has-list:before { + position: absolute; + top: -12px; + bottom: 12px; + left: -11px; + display: block; + width: auto; + height: auto; + content: ' '; + background: none; + border: none; + border-left: 1px dotted #999; + } +.tree-lines ul > li:last-child:before { + bottom: auto; + height: 23px; + } +.tree-lines ul > li:first-child:before { + top: -5px; + } +.tree-lines ul > li.tree-single-item:before { + height: 19px; + } +.tree-lines ul > li.has-list:after { + width: 14px; + } +.tree-lines ul > li.drag-shadow:after { + display: none; + } +.tree-folders li > .list-toggle:before { + content: '\e6ef'; + } +.tree-folders li.open > .list-toggle:before { + content: '\e6f0'; + } +.tree-folders.tree-lines ul > li:first-child:before { + top: -6px; + } +.tree-folders.tree-lines li.has-list.open > ul:after { + top: 16px; + } +.tree-folders ul > li.has-list:after { + width: 13px; + } +.tree-folders ul > li.has-list.open:after { + width: 15px; + } +.tree-chevrons li > .list-toggle:before { + content: '\e710'; + } +.tree-chevrons li.open > .list-toggle:before { + content: '\e712'; + } +.tree-chevrons li:before { + top: 6px; + left: 4px; + width: 10px; + height: 10px; + background-color: #ddd; + border-radius: 5px; + } +.tree-chevrons ul > li:after { + width: 13px; + } +.tree-angles li > .list-toggle:before { + content: '\e6e1'; + } +.tree-angles li.open > .list-toggle:before { + content: '\e6e3'; + } +.tree-angles ul > li.has-list:after { + width: 15px; + } +.tree-menu { + overflow: hidden; + border: 1px solid #ddd; + border-radius: 4px; + } +.tree-menu li { + padding: 0; + } +.tree-menu li:before { + display: none; + } +.tree-menu li > a { + display: block; + padding: 8px; + margin-bottom: -1px; + color: #353535; + } +.tree-menu li > a > .icon { + display: inline-block; + width: 20px; + color: inherit; + text-align: left; + opacity: .6; + } +.tree-menu li > a:hover, +.tree-menu li > a:active, +.tree-menu li > a:focus { + color: #0d3d88; + text-decoration: none; + background-color: rgba(0, 0, 0, .04); + } +.tree-menu li > a:hover > .icon, +.tree-menu li > a:active > .icon, +.tree-menu li > a:focus > .icon { + opacity: .9; + } +.tree-menu li .list-toggle { + top: 6px; + right: 4px; + left: auto; + width: 24px; + height: 24px; + filter: alpha(opacity=45); + opacity: .45; + -webkit-transition: all .3s; + -o-transition: all .3s; + transition: all .3s; + } +.tree-menu li .list-toggle:before { + content: '\e64f'; + } +.tree-menu li.open > .list-toggle { + filter: alpha(opacity=75); + opacity: .75; + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); + } +.tree-menu li.open > .list-toggle:before { + content: '\e64f'; + } +.tree-menu li > ul { + background-color: rgba(0, 0, 0, .04); + } +.tree-menu li li a { + padding-left: 28px; + border-top-color: transparent; + border-bottom-color: transparent; + } +.tree-menu li li li a { + padding-left: 48px; + } +.tree-menu li li li li a { + padding-left: 68px; + } +.tree-menu li.active > a { + color: #fff; + background-color: #3280fc; + border-color: #3280fc; + } +.tree-menu li.active > .list-toggle { + color: #fff; + } +.tree-menu > li > a { + border: 1px solid transparent; + border-bottom-color: #ddd; + } +.tree-menu > li.open + li > a { + border-top-color: #ddd; + } diff --git a/root/res/zui/css/zui.lite.css b/root/res/zui/css/zui.lite.css new file mode 100644 index 0000000..3129224 --- /dev/null +++ b/root/res/zui/css/zui.lite.css @@ -0,0 +1,6763 @@ +/*! + * ZUI: Lite edition - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +/*! Some code copy from Bootstrap v3.0.0 by @fat and @mdo. (Copyright 2013 Twitter, Inc. Licensed under http://www.apache.org/licenses/)*/ + +/*! normalize.css v2.1.3 | MIT License | git.io/normalize */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; + } +audio, +canvas, +video { + display: inline-block; + } +audio:not([controls]) { + display: none; + height: 0; + } +[hidden], +template { + display: none; + } +html { + font-family: sans-serif; + + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; + } +body { + margin: 0; + } +a { + background: transparent; + } +a:focus { + outline: thin dotted; + } +a:active, +a:hover { + outline: 0; + } +h1 { + margin: .67em 0; + font-size: 2em; + } +abbr[title] { + border-bottom: 1px dotted; + } +b, +strong { + font-weight: bold; + } +dfn { + font-style: italic; + } +hr { + height: 0; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + } +mark { + color: #000; + background: #ff0; + } +code, +kbd, +pre, +samp { + font-family: monospace, serif; + font-size: 1em; + } +pre { + white-space: pre-wrap; + } +q { + quotes: "\201C" "\201D" "\2018" "\2019"; + } +small { + font-size: 80%; + } +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; + } +sup { + top: -.5em; + } +sub { + bottom: -.25em; + } +img { + border: 0; + } +svg:not(:root) { + overflow: hidden; + } +figure { + margin: 0; + } +fieldset { + padding: .35em .625em .75em; + margin: 0 2px; + border: 1px solid #c0c0c0; + } +legend { + padding: 0; + border: 0; + } +button, +input, +select, +textarea { + margin: 0; + font-family: inherit; + font-size: 100%; + } +button, +input { + line-height: normal; + } +button, +select { + text-transform: none; + } +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; + } +button[disabled], +html input[disabled] { + cursor: default; + } +input[type="checkbox"], +input[type="radio"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; + } +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-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; + } +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; + } +textarea { + overflow: auto; + vertical-align: top; + } +table { + border-spacing: 0; + border-collapse: collapse; + } +.clearfix:before, +.clearfix:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.container-fixed:before, +.container-fixed:after, +.container-fixed-md:before, +.container-fixed-md:after, +.container-fixed-sm:before, +.container-fixed-sm:after, +.container-fixed-xs:before, +.container-fixed-xs:after, +.row:before, +.row:after, +.dl-horizontal dd:before, +.dl-horizontal dd:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after, +.panel-body:before, +.panel-body:after, +.pager-justify:before, +.pager-justify:after, +.nav:before, +.nav:after, +.navbar:before, +.navbar:after, +.navbar-header:before, +.navbar-header:after, +.navbar-collapse:before, +.navbar-collapse:after, +.modal-header:before, +.modal-header:after, +.modal-footer:before, +.modal-footer:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.clearfix:after, +.container:after, +.container-fluid:after, +.container-fixed:after, +.container-fixed-md:after, +.container-fixed-sm:after, +.container-fixed-xs:after, +.row:after, +.dl-horizontal dd:after, +.form-horizontal .form-group:after, +.panel-body:after, +.pager-justify:after, +.nav:after, +.navbar:after, +.navbar-header:after, +.navbar-collapse:after, +.modal-header:after, +.modal-footer:after { + clear: both; + } +.center-block { + display: block; + margin-right: auto; + margin-left: auto; + } +.pull-right { + float: right !important; + } +.pull-left { + float: left !important; + } +.hide { + display: none; + } +.showing { + display: block; + } +.hidden { + display: none!important; + visibility: hidden !important; + } +.show { + display: block!important; + visibility: visible !important; + } +.invisible { + visibility: hidden; + } +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; + } +.affix { + position: fixed; + } +.with-padding { + padding: 5px 12px; + } +.no-padding { + padding: 0!important; + } +.visible-xs, +.inline.visible-xs, +.inline-block.visible-xs, +tr.visible-xs, +th.visible-xs, +td.visible-xs { + display: none !important; + } +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + .inline.visible-xs { + display: inline !important; + } + .inline-block.visible-xs { + display: inline-block !important; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .visible-xs.visible-sm { + display: block !important; + } + .inline.visible-xs.visible-sm { + display: inline !important; + } + .inline-block.visible-xs.visible-sm { + display: inline-block !important; + } + tr.visible-xs.visible-sm { + display: table-row !important; + } + th.visible-xs.visible-sm, + td.visible-xs.visible-sm { + display: table-cell !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .visible-xs.visible-md { + display: block !important; + } + .inline.visible-xs.visible-md { + display: inline !important; + } + .inline-block.visible-xs.visible-md { + display: inline-block !important; + } + tr.visible-xs.visible-md { + display: table-row !important; + } + th.visible-xs.visible-md, + td.visible-xs.visible-md { + display: table-cell !important; + } + } +@media (min-width: 1200px) { + .visible-xs.visible-lg { + display: block !important; + } + .inline.visible-xs.visible-lg { + display: inline !important; + } + .inline-block.visible-xs.visible-lg { + display: inline-block !important; + } + tr.visible-xs.visible-lg { + display: table-row !important; + } + th.visible-xs.visible-lg, + td.visible-xs.visible-lg { + display: table-cell !important; + } + } +.visible-sm, +.inline.visible-sm, +.inline-block.visible-sm, +tr.visible-sm, +th.visible-sm, +td.visible-sm { + display: none !important; + } +@media (max-width: 767px) { + .visible-sm.visible-xs { + display: block !important; + } + .inline.visible-sm.visible-xs { + display: inline !important; + } + .inline-block.visible-sm.visible-xs { + display: inline-block !important; + } + tr.visible-sm.visible-xs { + display: table-row !important; + } + th.visible-sm.visible-xs, + td.visible-sm.visible-xs { + display: table-cell !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + .inline.visible-sm { + display: inline !important; + } + .inline-block.visible-sm { + display: inline-block !important; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .visible-sm.visible-md { + display: block !important; + } + .inline.visible-sm.visible-md { + display: inline !important; + } + .inline-block.visible-sm.visible-md { + display: inline-block !important; + } + tr.visible-sm.visible-md { + display: table-row !important; + } + th.visible-sm.visible-md, + td.visible-sm.visible-md { + display: table-cell !important; + } + } +@media (min-width: 1200px) { + .visible-sm.visible-lg { + display: block !important; + } + .inline.visible-sm.visible-lg { + display: inline !important; + } + .inline-block.visible-sm.visible-lg { + display: inline-block !important; + } + tr.visible-sm.visible-lg { + display: table-row !important; + } + th.visible-sm.visible-lg, + td.visible-sm.visible-lg { + display: table-cell !important; + } + } +.visible-md, +.inline.visible-md, +.inline-block.visible-md, +tr.visible-md, +th.visible-md, +td.visible-md { + display: none !important; + } +@media (max-width: 767px) { + .visible-md.visible-xs { + display: block !important; + } + .inline.visible-md.visible-xs { + display: inline !important; + } + .inline-block.visible-md.visible-xs { + display: inline-block !important; + } + tr.visible-md.visible-xs { + display: table-row !important; + } + th.visible-md.visible-xs, + td.visible-md.visible-xs { + display: table-cell !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .visible-md.visible-sm { + display: block !important; + } + .inline.visible-md.visible-sm { + display: inline !important; + } + .inline-block.visible-md.visible-sm { + display: inline-block !important; + } + tr.visible-md.visible-sm { + display: table-row !important; + } + th.visible-md.visible-sm, + td.visible-md.visible-sm { + display: table-cell !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + .inline.visible-md { + display: inline !important; + } + .inline-block.visible-md { + display: inline-block !important; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } + } +@media (min-width: 1200px) { + .visible-md.visible-lg { + display: block !important; + } + .inline.visible-md.visible-lg { + display: inline !important; + } + .inline-block.visible-md.visible-lg { + display: inline-block !important; + } + tr.visible-md.visible-lg { + display: table-row !important; + } + th.visible-md.visible-lg, + td.visible-md.visible-lg { + display: table-cell !important; + } + } +.visible-lg, +.inline.visible-lg, +.inline-block.visible-lg, +tr.visible-lg, +th.visible-lg, +td.visible-lg { + display: none !important; + } +@media (max-width: 767px) { + .visible-lg.visible-xs { + display: block !important; + } + .inline.visible-lg.visible-xs { + display: inline !important; + } + .inline-block.visible-lg.visible-xs { + display: inline-block !important; + } + tr.visible-lg.visible-xs { + display: table-row !important; + } + th.visible-lg.visible-xs, + td.visible-lg.visible-xs { + display: table-cell !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .visible-lg.visible-sm { + display: block !important; + } + .inline.visible-lg.visible-sm { + display: inline !important; + } + .inline-block.visible-lg.visible-sm { + display: inline-block !important; + } + tr.visible-lg.visible-sm { + display: table-row !important; + } + th.visible-lg.visible-sm, + td.visible-lg.visible-sm { + display: table-cell !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .visible-lg.visible-md { + display: block !important; + } + .inline.visible-lg.visible-md { + display: inline !important; + } + .inline-block.visible-lg.visible-md { + display: inline-block !important; + } + tr.visible-lg.visible-md { + display: table-row !important; + } + th.visible-lg.visible-md, + td.visible-lg.visible-md { + display: table-cell !important; + } + } +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + .inline.visible-lg { + display: inline !important; + } + .inline-block.visible-lg { + display: inline-block !important; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } + } +.hidden-xs { + display: block !important; + } +.inline.hidden-xs { + display: inline !important; + } +.inline-block.hidden-xs { + display: inline-block !important; + } +tr.hidden-xs { + display: table-row !important; + } +th.hidden-xs, +td.hidden-xs { + display: table-cell !important; + } +@media (max-width: 767px) { + .hidden-xs, + .inline.hidden-xs, + .inline-block.hidden-xs, + tr.hidden-xs, + th.hidden-xs, + td.hidden-xs { + display: none !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .hidden-xs.hidden-sm, + .inline.hidden-xs.hidden-sm, + .inline-block.hidden-xs.hidden-sm, + tr.hidden-xs.hidden-sm, + th.hidden-xs.hidden-sm, + td.hidden-xs.hidden-sm { + display: none !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-xs.hidden-md, + .inline.hidden-xs.hidden-md, + .inline-block.hidden-xs.hidden-md, + tr.hidden-xs.hidden-md, + th.hidden-xs.hidden-md, + td.hidden-xs.hidden-md { + display: none !important; + } + } +@media (min-width: 1200px) { + .hidden-xs.hidden-lg, + .inline.hidden-xs.hidden-lg, + .inline-block.hidden-xs.hidden-lg, + tr.hidden-xs.hidden-lg, + th.hidden-xs.hidden-lg, + td.hidden-xs.hidden-lg { + display: none !important; + } + } +.hidden-sm { + display: block !important; + } +.inline.hidden-sm { + display: inline !important; + } +.inline-block.hidden-sm { + display: inline-block !important; + } +tr.hidden-sm { + display: table-row !important; + } +th.hidden-sm, +td.hidden-sm { + display: table-cell !important; + } +@media (max-width: 767px) { + .hidden-sm.hidden-xs, + .inline.hidden-sm.hidden-xs, + .inline-block.hidden-sm.hidden-xs, + tr.hidden-sm.hidden-xs, + th.hidden-sm.hidden-xs, + td.hidden-sm.hidden-xs { + display: none !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm, + .inline.hidden-sm, + .inline-block.hidden-sm, + tr.hidden-sm, + th.hidden-sm, + td.hidden-sm { + display: none !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-sm.hidden-md, + .inline.hidden-sm.hidden-md, + .inline-block.hidden-sm.hidden-md, + tr.hidden-sm.hidden-md, + th.hidden-sm.hidden-md, + td.hidden-sm.hidden-md { + display: none !important; + } + } +@media (min-width: 1200px) { + .hidden-sm.hidden-lg, + .inline.hidden-sm.hidden-lg, + .inline-block.hidden-sm.hidden-lg, + tr.hidden-sm.hidden-lg, + th.hidden-sm.hidden-lg, + td.hidden-sm.hidden-lg { + display: none !important; + } + } +.hidden-md { + display: block !important; + } +.inline.hidden-md { + display: inline !important; + } +.inline-block.hidden-md { + display: inline-block !important; + } +tr.hidden-md { + display: table-row !important; + } +th.hidden-md, +td.hidden-md { + display: table-cell !important; + } +@media (max-width: 767px) { + .hidden-md.hidden-xs, + .inline.hidden-md.hidden-xs, + .inline-block.hidden-md.hidden-xs, + tr.hidden-md.hidden-xs, + th.hidden-md.hidden-xs, + td.hidden-md.hidden-xs { + display: none !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .hidden-md.hidden-sm, + .inline.hidden-md.hidden-sm, + .inline-block.hidden-md.hidden-sm, + tr.hidden-md.hidden-sm, + th.hidden-md.hidden-sm, + td.hidden-md.hidden-sm { + display: none !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md, + .inline.hidden-md, + .inline-block.hidden-md, + tr.hidden-md, + th.hidden-md, + td.hidden-md { + display: none !important; + } + } +@media (min-width: 1200px) { + .hidden-md.hidden-lg, + .inline.hidden-md.hidden-lg, + .inline-block.hidden-md.hidden-lg, + tr.hidden-md.hidden-lg, + th.hidden-md.hidden-lg, + td.hidden-md.hidden-lg { + display: none !important; + } + } +.hidden-lg { + display: block !important; + } +.inline.hidden-lg { + display: inline !important; + } +.inline-block.hidden-lg { + display: inline-block !important; + } +tr.hidden-lg { + display: table-row !important; + } +th.hidden-lg, +td.hidden-lg { + display: table-cell !important; + } +@media (max-width: 767px) { + .hidden-lg.hidden-xs, + .inline.hidden-lg.hidden-xs, + .inline-block.hidden-lg.hidden-xs, + tr.hidden-lg.hidden-xs, + th.hidden-lg.hidden-xs, + td.hidden-lg.hidden-xs { + display: none !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .hidden-lg.hidden-sm, + .inline.hidden-lg.hidden-sm, + .inline-block.hidden-lg.hidden-sm, + tr.hidden-lg.hidden-sm, + th.hidden-lg.hidden-sm, + td.hidden-lg.hidden-sm { + display: none !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-lg.hidden-md, + .inline.hidden-lg.hidden-md, + .inline-block.hidden-lg.hidden-md, + tr.hidden-lg.hidden-md, + th.hidden-lg.hidden-md, + td.hidden-lg.hidden-md { + display: none !important; + } + } +@media (min-width: 1200px) { + .hidden-lg, + .inline.hidden-lg, + .inline-block.hidden-lg, + tr.hidden-lg, + th.hidden-lg, + td.hidden-lg { + display: none !important; + } + } +.visible-print, +.inline.visible-print, +.inline-block.visible-print, +tr.visible-print, +th.visible-print, +td.visible-print { + display: none !important; + } +@media print { + .visible-print { + display: block !important; + } + .inline.visible-print { + display: inline !important; + } + .inline-block.visible-print { + display: inline-block !important; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } + .hidden-print, + .inline.hidden-print, + .inline-block.hidden-print, + tr.hidden-print, + th.hidden-print, + td.hidden-print { + display: none !important; + } + } +*, +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } +html { + font-size: 10px; + + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + } +body { + font-family: "Helvetica Neue", Helvetica, Tahoma, Arial, 'Microsoft Yahei', 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; + font-size: 13px; + line-height: 1.53846154; + color: #353535; + background-color: #fff; + } +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; + } +a { + color: #145ccd; + text-decoration: none; + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +a:hover, +a:focus { + color: #0d3d88; + text-decoration: underline; + } +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; + } +a.disabled, +a.disabled:hover, +a.disabled:focus, +a[disabled], +a[disabled]:hover, +a[disabled]:focus { + color: #aaa; + text-decoration: none; + cursor: default; + } +audio, +canvas, +img, +video { + max-width: 100%; + vertical-align: middle; + } +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0 0 0 0); + border: 0; + } +::-moz-selection { + text-shadow: none; + background: #b3d4fc; + } +::selection { + text-shadow: none; + background: #b3d4fc; + } +fieldset { + padding: 0; + margin: 0; + border: 0; + } +textarea { + resize: vertical; + } +ol, +ul { + padding-left: 20px; + } +.container, +.container-fluid, +.container-fixed, +.container-fixed-md, +.container-fixed-sm, +.container-fixed-xs { + padding-right: 10px; + padding-left: 10px; + margin-right: auto; + margin-left: auto; + } +@media (min-width: 768px) { + .container { + max-width: 740px; + } + } +@media (min-width: 992px) { + .container { + max-width: 960px; + } + } +@media (min-width: 1200px) { + .container { + max-width: 1160px; + } + } +.container-fixed { + width: 1160px; + } +.container-fixed-md { + width: 960px; + } +.container-fixed-sm { + width: 740px; + } +.container-fixed-xs { + width: 440px; + } +.row { + margin-right: -10px; + margin-left: -10px; + } +.col, +.col-xs-1, +.col-xs-2, +.col-xs-3, +.col-xs-4, +.col-xs-5, +.col-xs-6, +.col-xs-7, +.col-xs-8, +.col-xs-9, +.col-xs-10, +.col-xs-11, +.col-xs-12, +.col-sm-1, +.col-sm-2, +.col-sm-3, +.col-sm-4, +.col-sm-5, +.col-sm-6, +.col-sm-7, +.col-sm-8, +.col-sm-9, +.col-sm-10, +.col-sm-11, +.col-sm-12, +.col-md-1, +.col-md-2, +.col-md-3, +.col-md-4, +.col-md-5, +.col-md-6, +.col-md-7, +.col-md-8, +.col-md-9, +.col-md-10, +.col-md-11, +.col-md-12, +.col-lg-1, +.col-lg-2, +.col-lg-3, +.col-lg-4, +.col-lg-5, +.col-lg-6, +.col-lg-7, +.col-lg-8, +.col-lg-9, +.col-lg-10, +.col-lg-11, +.col-lg-12 { + position: relative; + min-height: 1px; + padding-right: 10px; + padding-left: 10px; + } +.col, +.col-xs, +.col-xs-1, +.col-xs-2, +.col-xs-3, +.col-xs-4, +.col-xs-5, +.col-xs-6, +.col-xs-7, +.col-xs-8, +.col-xs-9, +.col-xs-10, +.col-xs-11, +.col-xs-12 { + float: left; + } +.col-xs-1 { + width: 8.33333333%; + } +.col-xs-2 { + width: 16.66666667%; + } +.col-xs-3 { + width: 25%; + } +.col-xs-4 { + width: 33.33333333%; + } +.col-xs-5 { + width: 41.66666667%; + } +.col-xs-6 { + width: 50%; + } +.col-xs-7 { + width: 58.33333333%; + } +.col-xs-8 { + width: 66.66666667%; + } +.col-xs-9 { + width: 75%; + } +.col-xs-10 { + width: 83.33333333%; + } +.col-xs-11 { + width: 91.66666667%; + } +.col-xs-12 { + width: 100%; + } +@media (min-width: 768px) { + .col-sm-1, + .col-sm-2, + .col-sm-3, + .col-sm-4, + .col-sm-5, + .col-sm-6, + .col-sm-7, + .col-sm-8, + .col-sm-9, + .col-sm-10, + .col-sm-11, + .col-sm-12 { + float: left; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-12 { + width: 100%; + } + .col-sm-push-1 { + left: 8.33333333%; + } + .col-sm-push-2 { + left: 16.66666667%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-4 { + left: 33.33333333%; + } + .col-sm-push-5 { + left: 41.66666667%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-7 { + left: 58.33333333%; + } + .col-sm-push-8 { + left: 66.66666667%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-10 { + left: 83.33333333%; + } + .col-sm-push-11 { + left: 91.66666667%; + } + .col-sm-pull-1 { + right: 8.33333333%; + } + .col-sm-pull-2 { + right: 16.66666667%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-4 { + right: 33.33333333%; + } + .col-sm-pull-5 { + right: 41.66666667%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-7 { + right: 58.33333333%; + } + .col-sm-pull-8 { + right: 66.66666667%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-10 { + right: 83.33333333%; + } + .col-sm-pull-11 { + right: 91.66666667%; + } + .col-sm-offset-1 { + margin-left: 8.33333333%; + } + .col-sm-offset-2 { + margin-left: 16.66666667%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-4 { + margin-left: 33.33333333%; + } + .col-sm-offset-5 { + margin-left: 41.66666667%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-7 { + margin-left: 58.33333333%; + } + .col-sm-offset-8 { + margin-left: 66.66666667%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-10 { + margin-left: 83.33333333%; + } + .col-sm-offset-11 { + margin-left: 91.66666667%; + } + } +@media (min-width: 992px) { + .col-md-1, + .col-md-2, + .col-md-3, + .col-md-4, + .col-md-5, + .col-md-6, + .col-md-7, + .col-md-8, + .col-md-9, + .col-md-10, + .col-md-11, + .col-md-12 { + float: left; + } + .col-md-1 { + width: 8.33333333%; + } + .col-md-2 { + width: 16.66666667%; + } + .col-md-3 { + width: 25%; + } + .col-md-4 { + width: 33.33333333%; + } + .col-md-5 { + width: 41.66666667%; + } + .col-md-6 { + width: 50%; + } + .col-md-7 { + width: 58.33333333%; + } + .col-md-8 { + width: 66.66666667%; + } + .col-md-9 { + width: 75%; + } + .col-md-10 { + width: 83.33333333%; + } + .col-md-11 { + width: 91.66666667%; + } + .col-md-12 { + width: 100%; + } + .col-md-push-0 { + left: auto; + } + .col-md-push-1 { + left: 8.33333333%; + } + .col-md-push-2 { + left: 16.66666667%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-4 { + left: 33.33333333%; + } + .col-md-push-5 { + left: 41.66666667%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-7 { + left: 58.33333333%; + } + .col-md-push-8 { + left: 66.66666667%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-10 { + left: 83.33333333%; + } + .col-md-push-11 { + left: 91.66666667%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-pull-1 { + right: 8.33333333%; + } + .col-md-pull-2 { + right: 16.66666667%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-4 { + right: 33.33333333%; + } + .col-md-pull-5 { + right: 41.66666667%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-7 { + right: 58.33333333%; + } + .col-md-pull-8 { + right: 66.66666667%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-10 { + right: 83.33333333%; + } + .col-md-pull-11 { + right: 91.66666667%; + } + .col-md-offset-0 { + margin-left: 0; + } + .col-md-offset-1 { + margin-left: 8.33333333%; + } + .col-md-offset-2 { + margin-left: 16.66666667%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-4 { + margin-left: 33.33333333%; + } + .col-md-offset-5 { + margin-left: 41.66666667%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-7 { + margin-left: 58.33333333%; + } + .col-md-offset-8 { + margin-left: 66.66666667%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-10 { + margin-left: 83.33333333%; + } + .col-md-offset-11 { + margin-left: 91.66666667%; + } + } +@media (min-width: 1200px) { + .col-lg-1, + .col-lg-2, + .col-lg-3, + .col-lg-4, + .col-lg-5, + .col-lg-6, + .col-lg-7, + .col-lg-8, + .col-lg-9, + .col-lg-10, + .col-lg-11, + .col-lg-12 { + float: left; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-12 { + width: 100%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-push-1 { + left: 8.33333333%; + } + .col-lg-push-2 { + left: 16.66666667%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-4 { + left: 33.33333333%; + } + .col-lg-push-5 { + left: 41.66666667%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-7 { + left: 58.33333333%; + } + .col-lg-push-8 { + left: 66.66666667%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-10 { + left: 83.33333333%; + } + .col-lg-push-11 { + left: 91.66666667%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-pull-1 { + right: 8.33333333%; + } + .col-lg-pull-2 { + right: 16.66666667%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-4 { + right: 33.33333333%; + } + .col-lg-pull-5 { + right: 41.66666667%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-7 { + right: 58.33333333%; + } + .col-lg-pull-8 { + right: 66.66666667%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-10 { + right: 83.33333333%; + } + .col-lg-pull-11 { + right: 91.66666667%; + } + .col-lg-offset-0 { + margin-left: 0; + } + .col-lg-offset-1 { + margin-left: 8.33333333%; + } + .col-lg-offset-2 { + margin-left: 16.66666667%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-4 { + margin-left: 33.33333333%; + } + .col-lg-offset-5 { + margin-left: 41.66666667%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-7 { + margin-left: 58.33333333%; + } + .col-lg-offset-8 { + margin-left: 66.66666667%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-10 { + margin-left: 83.33333333%; + } + .col-lg-offset-11 { + margin-left: 91.66666667%; + } + } +p { + margin: 0 0 10px; + } +.lead { + margin-bottom: 20px; + font-size: 14px; + line-height: 1.4; + } +@media (min-width: 768px) { + .lead { + font-size: 19.5px; + } + } +small, +.small { + font-size: 85%; + } +cite { + font-style: normal; + } +.text-gray, +.text-muted { + color: #808080; + } +.text-gray a, +.text-muted a { + color: #737373; + } +.text-gray a:hover, +.text-muted a:hover, +.text-gray a:active, +.text-muted a:active { + color: #145ccd; + } +.text-primary { + color: #3280fc; + } +.text-yellow, +.text-warning { + color: #f1a325; + } +.text-red, +.text-danger { + color: #ea644a; + } +.text-green, +.text-success { + color: #38b03f; + } +.text-blue, +.text-info { + color: #03b8cf; + } +.text-brown, +.text-important { + color: #bd7b46; + } +.text-purple, +.text-special { + color: #8666b8; + } +.text-link { + color: #353535; + } +.text-link:hover, +.text-link:active { + color: #145ccd; + } +.text-left { + text-align: left; + } +.text-right { + text-align: right; + } +.text-center { + text-align: center; + } +.text-nowrap, +.nobr { + overflow: hidden; + white-space: nowrap; + } +.text-ellipsis { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } +ul, +ol { + margin-top: 0; + margin-bottom: 10px; + } +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; + } +.list-unstyled { + padding-left: 0; + list-style: none; + } +dl { + margin-bottom: 20px; + } +dt, +dd { + line-height: 1.53846154; + } +dt { + font-weight: bold; + } +dd { + margin-left: 0; + } +.dl-inline:before, +.dl-inline:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.dl-inline:after { + clear: both; + } +.dl-inline:before, +.dl-inline:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.dl-inline:after { + clear: both; + } +.dl-inline dt { + display: inline-block; + } +.dl-inline dd { + display: inline-block; + padding-right: 1em; + } +.dl-inline dd:last-child { + padding-right: 0; + } +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } + } +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 16.25px; + border-left: 5px solid #e5e5e5; + } +blockquote p, +blockquote ul, +blockquote ol { + font-weight: 300; + } +blockquote p:last-child, +blockquote ul:last-child, +blockquote ol:last-child { + margin-bottom: 0; + } +blockquote small { + display: block; + line-height: 1.53846154; + color: #808080; + } +blockquote small:before { + content: '\2014 \00A0'; + } +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #e5e5e5; + border-left: 0; + } +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; + } +blockquote.pull-right small:before { + content: ''; + } +blockquote.pull-right small:after { + content: '\00A0 \2014'; + } +.ol-pd-2 { + padding-left: 40px; + } +.ol-pd-3 { + padding-left: 60px; + } +.ol-pd-4 { + padding-left: 80px; + } +.page-header, +.header-dividing { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #e5e5e5; + } +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: "Helvetica Neue", Helvetica, Tahoma, Arial, 'Microsoft Yahei', 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; + font-weight: bold; + line-height: 1.1; + color: inherit; + } +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + line-height: 1; + color: #808080; + } +h1, +h2, +h3 { + margin-top: 20px; + margin-bottom: 10px; + } +h1 small, +h2 small, +h3 small { + font-size: 65%; + } +h4, +h5, +h6 { + margin-top: 10px; + margin-bottom: 10px; + } +h4 small, +h5 small, +h6 small { + font-size: 75%; + } +h1 { + font-size: 26px; + } +h2 { + font-size: 20px; + } +h3 { + font-size: 16px; + } +h4 { + font-size: 14px; + } +h5 { + font-size: 13px; + } +h6 { + font-size: 12px; + } +.btn { + display: inline-block; + padding: 5px 12px; + margin-bottom: 0; + font-size: 13px; + font-weight: normal; + line-height: 1.53846154; + text-align: center; + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border: 1px solid transparent; + border-radius: 4px; + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; + } +.btn:hover, +.btn:focus { + color: #353535; + text-decoration: none; + } +.btn:active, +.btn.active { + background-image: none; + outline: none; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + } +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + pointer-events: none; + cursor: not-allowed; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; + opacity: .65; + } +.btn { + color: #353535; + text-shadow: 0 1px 0 #fff; + background-color: #f2f2f2; + border-color: #bfbfbf; + } +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + color: #353535; + background-color: #dedede; + border-color: #a1a1a1; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + background-color: #ccc; + background-image: none; + border-color: #a6a6a6; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn, +.btn.disabled:hover, +.btn[disabled]:hover, +fieldset[disabled] .btn:hover, +.btn.disabled:focus, +.btn[disabled]:focus, +fieldset[disabled] .btn:focus, +.btn.disabled:active, +.btn[disabled]:active, +fieldset[disabled] .btn:active, +.btn.disabled.active, +.btn[disabled].active, +fieldset[disabled] .btn.active { + background-color: #f2f2f2; + border-color: #bfbfbf; + } +.btn-primary { + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); + background-color: #3280fc; + border-color: #1970fc; + } +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + color: #fff; + background-color: #0a67fb; + border-color: #0354d4; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + background-color: #0358de; + background-image: none; + border-color: #0358de; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #3280fc; + border-color: #1970fc; + } +.btn-warning { + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); + background-color: #f1a325; + border-color: #ed980f; + } +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + color: #fff; + background-color: #df8f0e; + border-color: #b4730c; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + background-color: #bd7a0c; + background-image: none; + border-color: #bd7a0c; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f1a325; + border-color: #ed980f; + } +.btn-danger { + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); + background-color: #ea644a; + border-color: #e75033; + } +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + color: #fff; + background-color: #e64525; + border-color: #c63317; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + background-color: #cf3618; + background-image: none; + border-color: #cf3618; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #ea644a; + border-color: #e75033; + } +.btn-success { + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); + background-color: #38b03f; + border-color: #329d38; + } +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + color: #fff; + background-color: #2e9134; + border-color: #236e27; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + background-color: #26762a; + background-image: none; + border-color: #26762a; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #38b03f; + border-color: #329d38; + } +.btn-info { + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); + background-color: #03b8cf; + border-color: #03a2b6; + } +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + color: #fff; + background-color: #0294a7; + border-color: #026c7a; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + background-color: #027584; + background-image: none; + border-color: #027584; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #03b8cf; + border-color: #03a2b6; + } +.btn-link { + font-weight: normal; + color: #145ccd; + text-shadow: none; + cursor: pointer; + background: none; + -webkit-box-shadow: none; + box-shadow: none; + } +.btn-link, +.btn-link:active, +.btn-link[disabled], +fieldset[disabled] .btn-link, +.btn-link:hover, +.btn-link:focus { + border-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; + } +.btn-link:hover, +.btn-link:focus { + color: #0d3d88; + } +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #ddd; + text-decoration: none; + } +.btn-lg { + padding: 10px 16px; + font-size: 17px; + line-height: 1.25; + border-radius: 4px; + } +.btn-sm, +.btn-xs, +.btn-mini { + padding: 2px 8px; + font-size: 12px; + line-height: 1.5; + border-radius: 4px; + } +.btn-xs, +.btn-mini { + padding: 1px 5px; + } +.btn-block { + display: block; + width: 100%; + } +.btn-block + .btn-block { + margin-top: 5px; + } +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; + } +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #e5e5e5; + } +hr.divider-sm { + margin-top: 10px; + margin-bottom: 10px; + } +hr.divider { + margin: 0; + } +.label { + display: inline; + padding: .2em .6em .2em; + font-size: 75%; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: middle; + background-color: #808080; + border-radius: .25em; + } +.label[href]:hover, +.label[href]:focus { + color: #fff; + background-color: #666; + } +.label.label-circle { + color: #808080; + background: none; + border: 1px solid #808080; + } +a.label:hover, +a.label:focus { + color: #fff; + text-decoration: none; + cursor: pointer; + } +.label:empty { + display: none; + } +.label-badge { + display: inline-block; + min-width: 18px; + padding: 3px 7px; + font-size: 12px; + line-height: 1; + border-radius: 9px; + } +.label-dot { + display: inline-block; + width: 10px; + height: 10px; + padding: 0; + line-height: 13px; + text-indent: -9999em; + border-radius: 5px; + } +.label-dot:empty { + display: inline-block; + } +.label-primary { + background-color: #3280fc; + } +.label-primary[href]:hover, +.label-primary[href]:focus { + color: #fff; + background-color: #0462f7; + } +.label-primary.label-circle { + color: #3280fc; + background: none; + border: 1px solid #3280fc; + } +.label-success { + background-color: #38b03f; + } +.label-success[href]:hover, +.label-success[href]:focus { + color: #fff; + background-color: #2c8931; + } +.label-success.label-circle { + color: #38b03f; + background: none; + border: 1px solid #38b03f; + } +.label-info { + background-color: #03b8cf; + } +.label-info[href]:hover, +.label-info[href]:focus { + color: #fff; + background-color: #028b9d; + } +.label-info.label-circle { + color: #03b8cf; + background: none; + border: 1px solid #03b8cf; + } +.label-warning { + background-color: #f1a325; + } +.label-warning[href]:hover, +.label-warning[href]:focus { + color: #fff; + background-color: #d5890e; + } +.label-warning.label-circle { + color: #f1a325; + background: none; + border: 1px solid #f1a325; + } +.label-danger { + background-color: #ea644a; + } +.label-danger[href]:hover, +.label-danger[href]:focus { + color: #fff; + background-color: #e53d1c; + } +.label-danger.label-circle { + color: #ea644a; + background: none; + border: 1px solid #ea644a; + } +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + border-radius: 4px; + } +.breadcrumb > li { + display: inline-block; + } +.breadcrumb > li + li:before { + padding: 0 5px; + color: #ccc; + content: "/\00a0"; + } +.breadcrumb > .active { + color: #808080; + } +@font-face { + font-family: ZenIcon; + font-style: normal; + font-weight: normal; + + src: url('../fonts/zenicon.eot?v=2.2.0'); + src: url('../fonts/zenicon.eot?#iefix&v=2.2.0') format('embedded-opentype'), url('../fonts/zenicon.woff?v=2.2.0') format('woff'), url('../fonts/zenicon.ttf?v=2.2.0') format('truetype'), url('../fonts/zenicon.svg#regular?v=2.2.0') format('svg'); + } +.icon, +[class^="icon-"], +[class*=" icon-"] { + font-family: ZenIcon; + font-size: 14px; + font-style: normal; + font-weight: normal; + font-variant: normal; + line-height: 1; + text-transform: none; + + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } +.icon:before { + display: inline-block; + min-width: 14px; + text-align: center; + } +a .icon, +a [class^="icon-"], +a [class*=" icon-"] { + display: inline; + } +.icon-lg:before { + font-size: 1.33333333em; + vertical-align: -10%; + } +.icon-2x { + font-size: 28px; + } +.icon-3x { + font-size: 42px; + } +.icon-4x { + font-size: 56px; + } +.icon-5x { + font-size: 70px; + } +.icon-spin { + display: inline-block; + -webkit-animation: spin 2s infinite linear; + -o-animation: spin 2s infinite linear; + animation: spin 2s infinite linear; + } +a .icon-spin { + display: inline-block; + text-decoration: none; + } +@-webkit-keyframes spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } + } +@-o-keyframes spin { + 0% { + -o-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -o-transform: rotate(359deg); + transform: rotate(359deg); + } + } +@keyframes spin { + 0% { + -webkit-transform: rotate(0deg); + -o-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + -o-transform: rotate(359deg); + transform: rotate(359deg); + } + } +.icon-rotate-90 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); + } +.icon-rotate-180 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + -o-transform: rotate(180deg); + transform: rotate(180deg); + } +.icon-rotate-270 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + -o-transform: rotate(270deg); + transform: rotate(270deg); + } +.icon-flip-horizontal { + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + -o-transform: scale(-1, 1); + transform: scale(-1, 1); + } +.icon-flip-vertical { + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + -o-transform: scale(1, -1); + transform: scale(1, -1); + } +.icon.icon-rotate-90, +.icon.icon-rotate-180, +.icon.icon-rotate-270, +.icon.icon-flip-horizontal, +.icon.icon-flip-vertical { + display: inline-block; + } +.icon-resize:before { + content: '\e667'; + } +.icon-expand-full:before { + content: '\e6a3'; + } +.icon-arrows-alt:before { + content: '\e6a3'; + } +.icon-fullscreen:before { + content: '\e6a3'; + } +.icon-collapse-full:before { + content: '\e682'; + } +.icon-yinyang:before { + content: '\e687'; + } +.icon-taiji:before { + content: '\e687'; + } +.icon-window:before { + content: '\e68e'; + } +.icon-window-alt:before { + content: '\e68f'; + } +.icon-carousel:before { + content: '\e6b0'; + } +.icon-spinner-snake:before { + content: '\e97b'; + } +.icon-spinner-indicator:before { + content: '\e97c'; + } +.icon-check-board:before { + content: '\e9b8'; + } +.icon-bar-chart:before { + content: '\f080'; + } +.icon-bar-chart-o:before { + content: '\f080'; + } +.icon-github:before { + content: '\f09b'; + } +.icon-dot-circle:before { + content: '\f192'; + } +.icon-dot-circle-o:before { + content: '\f192'; + } +.icon-cube-alt:before { + content: '\f1b2'; + } +.icon-cubes:before { + content: '\f1b3'; + } +.icon-file-pdf:before { + content: '\f1c1'; + } +.icon-file-word:before { + content: '\f1c2'; + } +.icon-file-excel:before { + content: '\f1c3'; + } +.icon-file-powerpoint:before { + content: '\f1c4'; + } +.icon-file-image:before { + content: '\f1c5'; + } +.icon-file-photo:before { + content: '\f1c5'; + } +.icon-file-picture:before { + content: '\f1c5'; + } +.icon-file-archive:before { + content: '\f1c6'; + } +.icon-file-zip:before { + content: '\f1c6'; + } +.icon-file-audio:before { + content: '\f1c7'; + } +.icon-file-sound:before { + content: '\f1c7'; + } +.icon-file-movie:before { + content: '\f1c8'; + } +.icon-file-video:before { + content: '\f1c8'; + } +.icon-file-code:before { + content: '\f1c9'; + } +.icon-circle-o-notch:before { + content: '\f1ce'; + } +.icon-chanzhi:before { + content: '\e906'; + } +.icon-chanzhi-pro:before { + content: '\e905'; + } +.icon-zsite:before { + content: '\e904'; + } +.icon-zsite-pro:before { + content: '\e903'; + } +.icon-qq:before { + content: '\f600'; + } +.icon-wechat:before { + content: '\f1d7'; + } +.icon-weixin:before { + content: '\f1d7'; + } +.icon-history:before { + content: '\f1da'; + } +.icon-circle-thin:before { + content: '\f1db'; + } +.icon-sliders:before { + content: '\f1de'; + } +.icon-newspaper-o:before { + content: '\f1ea'; + } +.icon-calculator:before { + content: '\f1ec'; + } +.icon-paint-brush:before { + content: '\f1fc'; + } +.icon-area-chart:before { + content: '\f1fe'; + } +.icon-pie-chart:before { + content: '\f200'; + } +.icon-line-chart:before { + content: '\f201'; + } +.icon-toggle-off:before { + content: '\f204'; + } +.icon-toggle-on:before { + content: '\f205'; + } +.icon-diamond:before { + content: '\f219'; + } +.icon-venus:before { + content: '\f221'; + } +.icon-mars:before { + content: '\f222'; + } +.icon-server:before { + content: '\f233'; + } +.icon-music:before { + content: '\e602'; + } +.icon-search:before { + content: '\e603'; + } +.icon-envelope:before { + content: '\e604'; + } +.icon-heart:before { + content: '\e605'; + } +.icon-star:before { + content: '\e606'; + } +.icon-star-empty:before { + content: '\e607'; + } +.icon-user:before { + content: '\e608'; + } +.icon-film:before { + content: '\e609'; + } +.icon-th-large:before { + content: '\e60a'; + } +.icon-th:before { + content: '\e60b'; + } +.icon-th-list:before { + content: '\e60c'; + } +.icon-ok:before { + content: '\e60d'; + } +.icon-check:before { + content: '\e60d'; + } +.icon-remove:before { + content: '\d7'; + } +.icon-times:before { + content: '\d7'; + } +.icon-zoom-in:before { + content: '\e60f'; + } +.icon-zoom-out:before { + content: '\e610'; + } +.icon-off:before { + content: '\e611'; + } +.icon-cog:before { + content: '\e613'; + } +.icon-trash:before { + content: '\e614'; + } +.icon-home:before { + content: '\e615'; + } +.icon-file-o:before { + content: '\e616'; + } +.icon-file-alt:before { + content: '\e616'; + } +.icon-time:before { + content: '\e617'; + } +.icon-download-alt:before { + content: '\e618'; + } +.icon-download:before { + content: '\e619'; + } +.icon-upload:before { + content: '\e61a'; + } +.icon-inbox:before { + content: '\e61b'; + } +.icon-play-circle:before { + content: '\e61c'; + } +.icon-repeat:before { + content: '\e61d'; + } +.icon-refresh:before { + content: '\e61e'; + } +.icon-list-alt:before { + content: '\e61f'; + } +.icon-lock:before { + content: '\e620'; + } +.icon-flag:before { + content: '\e621'; + } +.icon-headphones:before { + content: '\e622'; + } +.icon-volume-off:before { + content: '\e623'; + } +.icon-volume-up:before { + content: '\e625'; + } +.icon-qrcode:before { + content: '\e626'; + } +.icon-barcode:before { + content: '\e627'; + } +.icon-tag:before { + content: '\e628'; + } +.icon-tags:before { + content: '\e629'; + } +.icon-book:before { + content: '\e62a'; + } +.icon-bookmark:before { + content: '\e62b'; + } +.icon-print:before { + content: '\e62c'; + } +.icon-camera:before { + content: '\e62d'; + } +.icon-font:before { + content: '\e62e'; + } +.icon-bold:before { + content: '\e62f'; + } +.icon-italic:before { + content: '\f033'; + } +.icon-header:before { + content: '\f1dc'; + } +.icon-underline:before { + content: '\f0cd'; + } +.icon-strikethrough:before { + content: '\f0cc'; + } +.icon-eraser:before { + content: '\f12d'; + } +.icon-align-justify:before { + content: '\e636'; + } +.icon-list:before { + content: '\e637'; + } +.icon-picture:before { + content: '\e63b'; + } +.icon-pencil:before { + content: '\e63c'; + } +.icon-map-marker:before { + content: '\e63d'; + } +.icon-adjust:before { + content: '\e63e'; + } +.icon-tint:before { + content: '\e63f'; + } +.icon-edit:before { + content: '\e640'; + } +.icon-share:before { + content: '\e641'; + } +.icon-checked:before { + content: '\e642'; + } +.icon-move:before { + content: '\e643'; + } +.icon-arrows:before { + content: '\e643'; + } +.icon-step-backward:before { + content: '\e644'; + } +.icon-fast-backward:before { + content: '\e645'; + } +.icon-backward:before { + content: '\e646'; + } +.icon-play:before { + content: '\e647'; + } +.icon-pause:before { + content: '\e648'; + } +.icon-stop:before { + content: '\e649'; + } +.icon-forward:before { + content: '\e64a'; + } +.icon-fast-forward:before { + content: '\e64b'; + } +.icon-step-forward:before { + content: '\e64c'; + } +.icon-eject:before { + content: '\e64d'; + } +.icon-chevron-left:before { + content: '\e64e'; + } +.icon-chevron-right:before { + content: '\e64f'; + } +.icon-plus-sign:before { + content: '\e650'; + } +.icon-minus-sign:before { + content: '\e651'; + } +.icon-remove-sign:before { + content: '\e652'; + } +.icon-ok-sign:before { + content: '\e653'; + } +.icon-check-circle:before { + content: '\e653'; + } +.icon-question-sign:before { + content: '\e654'; + } +.icon-info-sign:before { + content: '\e655'; + } +.icon-remove-circle:before { + content: '\e657'; + } +.icon-ok-circle:before { + content: '\e658'; + } +.icon-check-circle-o:before { + content: '\e658'; + } +.icon-ban-circle:before { + content: '\e659'; + } +.icon-arrow-left:before { + content: '\e65a'; + } +.icon-arrow-right:before { + content: '\e65b'; + } +.icon-arrow-up:before { + content: '\e65c'; + } +.icon-arrow-down:before { + content: '\e65d'; + } +.icon-share-alt:before { + content: '\e65e'; + } +.icon-resize-full:before { + content: '\e65f'; + } +.icon-resize-small:before { + content: '\e660'; + } +.icon-plus:before { + content: '\e661'; + } +.icon-minus:before { + content: '\e662'; + } +.icon-asterisk:before { + content: '\e663'; + } +.icon-exclamation-sign:before { + content: '\e664'; + } +.icon-gift:before { + content: '\e665'; + } +.icon-leaf:before { + content: '\e666'; + } +.icon-eye-open:before { + content: '\e668'; + } +.icon-eye-close:before { + content: '\e669'; + } +.icon-warning-sign:before { + content: '\e66a'; + } +.icon-plane:before { + content: '\e66b'; + } +.icon-calendar:before { + content: '\e66c'; + } +.icon-random:before { + content: '\e66d'; + } +.icon-comment:before { + content: '\e66e'; + } +.icon-chevron-up:before { + content: '\e670'; + } +.icon-chevron-down:before { + content: '\e671'; + } +.icon-shopping-cart:before { + content: '\e673'; + } +.icon-folder-close:before { + content: '\e674'; + } +.icon-folder-open:before { + content: '\e675'; + } +.icon-resize-v:before { + content: '\e676'; + } +.icon-resize-h:before { + content: '\e677'; + } +.icon-bar-chart-alt:before { + content: '\e678'; + } +.icon-camera-retro:before { + content: '\e679'; + } +.icon-key:before { + content: '\e67a'; + } +.icon-cogs:before { + content: '\e67b'; + } +.icon-comments:before { + content: '\e67c'; + } +.icon-thumbs-o-up:before { + content: '\e67d'; + } +.icon-thumbs-o-down:before { + content: '\e67e'; + } +.icon-star-half:before { + content: '\e67f'; + } +.icon-heart-empty:before { + content: '\e680'; + } +.icon-signout:before { + content: '\e681'; + } +.icon-pushpin:before { + content: '\e683'; + } +.icon-external-link:before { + content: '\e684'; + } +.icon-signin:before { + content: '\e685'; + } +.icon-trophy:before { + content: '\e686'; + } +.icon-upload-alt:before { + content: '\e688'; + } +.icon-lemon:before { + content: '\e689'; + } +.icon-phone:before { + content: '\e68a'; + } +.icon-check-empty:before { + content: '\e68b'; + } +.icon-bookmark-empty:before { + content: '\e68c'; + } +.icon-phone-sign:before { + content: '\e68d'; + } +.icon-credit:before { + content: '\e690'; + } +.icon-rss:before { + content: '\e691'; + } +.icon-hdd:before { + content: '\e692'; + } +.icon-bullhorn:before { + content: '\e693'; + } +.icon-bell:before { + content: '\e694'; + } +.icon-certificate:before { + content: '\e695'; + } +.icon-hand-right:before { + content: '\e696'; + } +.icon-hand-left:before { + content: '\e697'; + } +.icon-hand-up:before { + content: '\e698'; + } +.icon-hand-down:before { + content: '\e699'; + } +.icon-circle-arrow-left:before { + content: '\e69a'; + } +.icon-circle-arrow-right:before { + content: '\e69b'; + } +.icon-circle-arrow-up:before { + content: '\e69c'; + } +.icon-circle-arrow-down:before { + content: '\e69d'; + } +.icon-globe:before { + content: '\e69e'; + } +.icon-wrench:before { + content: '\e69f'; + } +.icon-tasks:before { + content: '\e6a0'; + } +.icon-filter:before { + content: '\e6a1'; + } +.icon-group:before { + content: '\e6a4'; + } +.icon-link:before { + content: '\e6a5'; + } +.icon-cloud:before { + content: '\e6a6'; + } +.icon-beaker:before { + content: '\e6a7'; + } +.icon-cut:before { + content: '\e6a8'; + } +.icon-copy:before { + content: '\e6a9'; + } +.icon-paper-clip:before { + content: '\e6aa'; + } +.icon-save:before { + content: '\e6ab'; + } +.icon-sign-blank:before { + content: '\e6ac'; + } +.icon-bars:before { + content: '\e6ad'; + } +.icon-reorder:before { + content: '\e6ad'; + } +.icon-list-ul:before { + content: '\e6ae'; + } +.icon-list-ol:before { + content: '\e6af'; + } +.icon-table:before { + content: '\e6b2'; + } +.icon-magic:before { + content: '\e6b3'; + } +.icon-caret-down:before { + content: '\e6b8'; + } +.icon-caret-up:before { + content: '\e6b9'; + } +.icon-caret-left:before { + content: '\e6ba'; + } +.icon-caret-right:before { + content: '\e6bb'; + } +.icon-columns:before { + content: '\e6bc'; + } +.icon-sort:before { + content: '\e6bd'; + } +.icon-sort-down:before { + content: '\e6be'; + } +.icon-sort-up:before { + content: '\e6bf'; + } +.icon-envelope-alt:before { + content: '\e6c0'; + } +.icon-undo:before { + content: '\e6c1'; + } +.icon-dashboard:before { + content: '\e6c3'; + } +.icon-comment-alt:before { + content: '\e6c4'; + } +.icon-comments-alt:before { + content: '\e6c5'; + } +.icon-bolt:before { + content: '\e6c6'; + } +.icon-sitemap:before { + content: '\e6c7'; + } +.icon-umbrella:before { + content: '\e6c8'; + } +.icon-paste:before { + content: '\e6c9'; + } +.icon-lightbulb:before { + content: '\e6ca'; + } +.icon-exchange:before { + content: '\e6cb'; + } +.icon-cloud-download:before { + content: '\e6cc'; + } +.icon-cloud-upload:before { + content: '\e6cd'; + } +.icon-bell-alt:before { + content: '\e6d1'; + } +.icon-coffee:before { + content: '\e6d2'; + } +.icon-file-text-o:before { + content: '\e6d4'; + } +.icon-file-text-alt:before { + content: '\e6d4'; + } +.icon-building:before { + content: '\e6d5'; + } +.icon-double-angle-left:before { + content: '\e6dc'; + } +.icon-double-angle-right:before { + content: '\e6dd'; + } +.icon-double-angle-up:before { + content: '\e6de'; + } +.icon-double-angle-down:before { + content: '\e6df'; + } +.icon-angle-left:before { + content: '\e6e0'; + } +.icon-angle-right:before { + content: '\e6e1'; + } +.icon-angle-up:before { + content: '\e6e2'; + } +.icon-angle-down:before { + content: '\e6e3'; + } +.icon-desktop:before { + content: '\e6e4'; + } +.icon-laptop:before { + content: '\e6e5'; + } +.icon-tablet:before { + content: '\e6e6'; + } +.icon-mobile:before { + content: '\e6e7'; + } +.icon-circle-blank:before { + content: '\e6e8'; + } +.icon-quote-left:before { + content: '\e6e9'; + } +.icon-quote-right:before { + content: '\e6ea'; + } +.icon-spinner:before { + content: '\e6eb'; + } +.icon-circle:before { + content: '\e6ec'; + } +.icon-reply:before { + content: '\e6ed'; + } +.icon-folder-close-alt:before { + content: '\e6ef'; + } +.icon-folder-open-alt:before { + content: '\e6f0'; + } +.icon-expand-alt:before { + content: '\e6f1'; + } +.icon-collapse-alt:before { + content: '\e6f2'; + } +.icon-smile:before { + content: '\e6f3'; + } +.icon-frown:before { + content: '\e6f4'; + } +.icon-meh:before { + content: '\e6f5'; + } +.icon-gamepad:before { + content: '\e6f6'; + } +.icon-keyboard:before { + content: '\e6f7'; + } +.icon-flag-alt:before { + content: '\e6f8'; + } +.icon-flag-checkered:before { + content: '\e6f9'; + } +.icon-terminal:before { + content: '\e6fa'; + } +.icon-code:before { + content: '\e6fb'; + } +.icon-reply-all:before { + content: '\e6fc'; + } +.icon-star-half-full:before { + content: '\e6fd'; + } +.icon-location-arrow:before { + content: '\e6fe'; + } +.icon-crop:before { + content: '\e6ff'; + } +.icon-code-fork:before { + content: '\e700'; + } +.icon-unlink:before { + content: '\e701'; + } +.icon-question:before { + content: '\e702'; + } +.icon-info:before { + content: '\e703'; + } +.icon-shield:before { + content: '\e70b'; + } +.icon-calendar-empty:before { + content: '\e70c'; + } +.icon-rocket:before { + content: '\e70e'; + } +.icon-chevron-sign-left:before { + content: '\e70f'; + } +.icon-chevron-sign-right:before { + content: '\e710'; + } +.icon-chevron-sign-up:before { + content: '\e711'; + } +.icon-chevron-sign-down:before { + content: '\e712'; + } +.icon-html5:before { + content: '\e713'; + } +.icon-anchor:before { + content: '\e714'; + } +.icon-unlock-alt:before { + content: '\e715'; + } +.icon-bullseye:before { + content: '\e716'; + } +.icon-ellipsis-h:before { + content: '\e717'; + } +.icon-ellipsis-v:before { + content: '\e718'; + } +.icon-rss-sign:before { + content: '\e719'; + } +.icon-play-sign:before { + content: '\e71a'; + } +.icon-minus-sign-alt:before { + content: '\e71c'; + } +.icon-plus-sign-alt:before { + content: '\f0fe'; + } +.icon-check-minus:before { + content: '\e71d'; + } +.icon-check-plus:before { + content: '\f196'; + } +.icon-level-up:before { + content: '\e71e'; + } +.icon-level-down:before { + content: '\e71f'; + } +.icon-check-sign:before { + content: '\e720'; + } +.icon-edit-sign:before { + content: '\e721'; + } +.icon-external-link-sign:before { + content: '\e722'; + } +.icon-share-sign:before { + content: '\e723'; + } +.icon-compass:before { + content: '\e724'; + } +.icon-collapse:before { + content: '\e725'; + } +.icon-collapse-top:before { + content: '\e726'; + } +.icon-expand:before { + content: '\e727'; + } +.icon-dollar:before { + content: '\e728'; + } +.icon-yen:before { + content: '\e729'; + } +.icon-file:before { + content: '\e72b'; + } +.icon-file-text:before { + content: '\e72c'; + } +.icon-sort-by-alphabet:before { + content: '\e72d'; + } +.icon-sort-by-alphabet-alt:before { + content: '\e72e'; + } +.icon-sort-by-attributes:before { + content: '\e72f'; + } +.icon-sort-by-attributes-alt:before { + content: '\e730'; + } +.icon-sort-by-order:before { + content: '\e731'; + } +.icon-sort-by-order-alt:before { + content: '\e732'; + } +.icon-thumbs-up:before { + content: '\e733'; + } +.icon-thumbs-down:before { + content: '\e734'; + } +.icon-long-arrow-down:before { + content: '\e736'; + } +.icon-long-arrow-up:before { + content: '\e737'; + } +.icon-long-arrow-left:before { + content: '\e738'; + } +.icon-long-arrow-right:before { + content: '\e739'; + } +.icon-apple:before { + content: '\e73a'; + } +.icon-windows:before { + content: '\e73b'; + } +.icon-android:before { + content: '\e73c'; + } +.icon-linux:before { + content: '\e73d'; + } +.icon-sun:before { + content: '\e742'; + } +.icon-moon:before { + content: '\e743'; + } +.icon-archive:before { + content: '\e744'; + } +.icon-bug:before { + content: '\e745'; + } +.icon-zhifubao:before, +.icon-alipay:before { + content: '\e901'; + } +.icon-zhifubao-square:before, +.icon-alipay-square:before { + content: '\e900'; + } +.icon-taobao:before { + content: '\e902'; + } +.icon-weibo:before { + content: '\e746'; + } +.icon-renren:before { + content: '\e747'; + } +.icon-chrome:before { + content: '\e76c'; + } +.icon-firefox:before { + content: '\e76d'; + } +.icon-ie:before { + content: '\e76e'; + } +.icon-opera:before { + content: '\e76f'; + } +.icon-safari:before { + content: '\e770'; + } +.icon-node:before { + content: '\e76a'; + } +.icon-layout:before { + content: '\e768'; + } +.icon-usecase:before { + content: '\e74a'; + } +.icon-stack:before { + content: '\e769'; + } +.icon-branch:before { + content: '\e74b'; + } +.icon-chat:before { + content: '\e74c'; + } +.icon-chat-line:before { + content: '\e74f'; + } +.icon-comment-line:before { + content: '\e74f'; + } +.icon-chat-dot:before { + content: '\e750'; + } +.icon-cube:before { + content: '\e751'; + } +.icon-database:before { + content: '\f1c0'; + } +.icon-align-left:before { + content: '\e633'; + } +fieldset { + padding: 0; + margin: 0; + border: 0; + } +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 19.5px; + line-height: inherit; + color: #333; + border: 0; + border-bottom: 1px solid #e5e5e5; + } +label { + display: inline-block; + margin-bottom: 5px; + font-weight: bold; + } +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } +input[type="radio"], +input[type="checkbox"] { + margin: 5px 0 0; + margin-top: 0 \9; + /* IE8-9 */ + line-height: normal; + } +input[type="file"] { + display: block; + } +select[multiple], +select[size] { + height: auto; + } +select:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 #000; + } +select optgroup { + font-family: inherit; + font-size: inherit; + font-style: inherit; + } +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; + } +input[type="number"]::-webkit-outer-spin-button, +input[type="number"]::-webkit-inner-spin-button { + height: auto; + } +.form-control::-webkit-input-placeholder { + color: #808080; + } +.form-control::-moz-placeholder { + color: #808080; + } +.form-control:-ms-input-placeholder { + color: #808080; + } +.form-control::placeholder { + color: #808080; + } +.form-control { + display: block; + width: 100%; + height: 32px; + padding: 5px 8px; + font-size: 13px; + line-height: 1.53846154; + color: #222; + vertical-align: middle; + background-color: #fff; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + } +.form-control:focus, +.form-control.focus { + border-color: #145ccd; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(20, 92, 205, .6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(20, 92, 205, .6); + } +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + cursor: not-allowed; + background-color: #e5e5e5; + } +.form-control[readonly] { + cursor: default; + } +textarea.form-control { + height: auto; + } +.form-group { + margin-bottom: 15px; + } +.radio, +.checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; + } +.radio label, +.checkbox label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; + } +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-top: 3px; + margin-top: 4px \9; + margin-left: -20px; + } +.os-android .radio input[type="radio"], +.os-android .radio-inline input[type="radio"], +.os-android .checkbox input[type="checkbox"], +.os-android .checkbox-inline input[type="checkbox"] { + margin-top: 0; + } +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; + } +.radio-inline, +.checkbox-inline { + position: relative; + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + vertical-align: middle; + cursor: pointer; + } +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; + } +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"].disabled, +input[type="checkbox"].disabled, +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; + } +.radio-inline.disabled, +.checkbox-inline.disabled, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; + } +.radio.disabled label, +.checkbox.disabled label, +fieldset[disabled] .radio label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; + } +.input-sm { + height: 24px; + padding: 2px 8px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; + } +select.input-sm { + height: 24px; + line-height: 24px; + } +textarea.input-sm { + height: auto; + } +.input-lg { + height: 43px; + padding: 10px 16px; + font-size: 17px; + line-height: 1.25; + border-radius: 6px; + } +select.input-lg { + height: 43px; + line-height: 43px; + } +textarea.input-lg { + height: auto; + } +.has-warning .help-block, +.has-warning > label { + color: #f1a325; + } +.has-warning .form-control { + border-color: #f1a325; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + } +.has-warning .form-control:focus { + border-color: #d5890e; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #f7cb85; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #f7cb85; + } +.has-warning .input-group-addon { + color: #f1a325; + background-color: #fff0d5; + border-color: #f1a325; + } +.has-error .help-block, +.has-error > label { + color: #ea644a; + } +.has-error .form-control { + border-color: #ea644a; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + } +.has-error .form-control:focus { + border-color: #e53d1c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #f5b2a5; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #f5b2a5; + } +.has-error .input-group-addon { + color: #ea644a; + background-color: #ffe5e0; + border-color: #ea644a; + } +.has-success .help-block, +.has-success > label { + color: #38b03f; + } +.has-success .form-control { + border-color: #38b03f; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + } +.has-success .form-control:focus { + border-color: #2c8931; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #79d57f; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #79d57f; + } +.has-success .input-group-addon { + color: #38b03f; + background-color: #ddf4df; + border-color: #38b03f; + } +.form-control-static { + min-height: 33px; + padding-top: 6px; + padding-bottom: 6px; + margin-bottom: 0; + } +.help-block { + display: block; + margin: 5px 0; + color: #757575; + } +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + padding-left: 0; + margin-top: 0; + margin-bottom: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + float: none; + margin-left: 0; + } + } +.form-horizontal .form-group > label, +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + padding-top: 6px; + margin-top: 0; + margin-bottom: 0; + } +.form-horizontal .form-group { + margin-right: -10px; + margin-left: -10px; + } +@media (min-width: 768px) { + .form-horizontal .form-group > label { + text-align: right; + } + } +.required { + position: relative; + } +.required:after { + position: absolute; + top: 0; + right: -10px; + display: inline-block; + font-size: 17px; + color: #ea644a; + content: '*'; + } +.form-horizontal .required:after { + top: 5px; + right: -1px; + } +.close { + float: right; + font-size: 19.5px; + font-weight: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: .2; + } +.close:hover, +.close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: .5; + } +button.close { + -webkit-appearance: none; + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + } +table { + max-width: 100%; + background-color: transparent; + } +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #808080; + text-align: left; + } +th { + text-align: left; + } +.table { + width: 100%; + margin-bottom: 20px; + } +.table th, +.table td { + padding: 8px; + line-height: 1.53846154; + vertical-align: top; + border-bottom: 1px solid #ddd; + -webkit-transition: background .2s cubic-bezier(.175, .885, .32, 1); + -o-transition: background .2s cubic-bezier(.175, .885, .32, 1); + transition: background .2s cubic-bezier(.175, .885, .32, 1); + } +.table > thead > tr > th { + vertical-align: bottom; + background-color: #f1f1f1; + border-bottom: 1px solid #ddd; + } +.table > tbody + tbody { + border-top: 2px solid #ddd; + } +.table-fixed { + table-layout: fixed; + } +.table-fixed th, +.table-fixed td { + overflow: hidden; + white-space: nowrap; + } +.table-fixed tfoot > tr > th, +.table-fixed tfoot > tr > td, +.table-fixed .nofixed, +.table-fixed .nofixed { + overflow: visible; + } +.table-borderless thead > tr > th, +.table-borderless th, +.table-borderless td { + border: none; + } +.table-auto { + width: auto; + max-width: 100%; + } +.table-condensed th, +.table-condensed td { + padding: 5px; + } +.table-bordered { + border: 1px solid #ddd; + } +.table-bordered th, +.table-bordered td { + border: 1px solid #ddd; + } +.table-striped > tbody > tr:nth-child(odd) > td, +.table-striped > tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; + } +.table-hover > tbody > tr:hover > td, +.table-hover > tbody > tr:hover > th { + background-color: #ebf2f9; + } +table col[class*="col-"] { + display: table-column; + float: none; + } +table td[class*="col-"], +table th[class*="col-"] { + display: table-cell; + float: none; + } +.table tr > td.active, +.table tr > th.active, +.table tr.active > td, +.table tr.active > th { + background-color: #ffe7bc; + } +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #ddf4df; + border-color: #bae8b6; + } +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr.success:hover > th { + background-color: #caeecd; + border-color: #a8e1a3; + } +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #ffe5e0; + border-color: #ffc6c7; + } +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr.danger:hover > th { + background-color: #ffd0c6; + border-color: #ffadad; + } +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #fff0d5; + border-color: #ffdcbc; + } +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr.warning:hover > th { + background-color: #ffe7bc; + border-color: #ffcea2; + } +.list-group { + padding-left: 0; + margin-bottom: 20px; + } +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid #ddd; + } +.list-group-item:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + } +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; + } +.list-group-item > .label-badge { + float: right; + } +.list-group-item > .label-badge + .label-badge { + margin-right: 5px; + } +a.list-group-item { + color: #555; + } +a.list-group-item .list-group-item-heading { + color: #333; + } +a.list-group-item:hover, +a.list-group-item:focus { + color: #353535; + text-decoration: none; + background-color: #ebf2f9; + } +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #fff; + background-color: #3280fc; + border-color: #3280fc; + } +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading { + color: inherit; + } +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #e6e6e6; + } +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; + color: #333; + } +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; + } +.panel { + margin-bottom: 20px; + background-color: #fff; + border: 1px solid transparent; + border-color: #ddd; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: 0 1px 1px rgba(0, 0, 0, .05); + } +.panel > .panel-heading { + color: #333; + background-color: #f5f5f5; + border-color: #ddd; + } +.panel > .panel-heading + .panel-collapse .panel-body { + border-top-color: #ddd; + } +.panel > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #ddd; + } +.panel-body { + padding: 15px; + } +.panel > .table { + margin-bottom: 0; + } +.panel > .panel-body + .table { + border-top: 1px solid #ddd; + } +.panel-heading { + padding: 8px 15px; + border-bottom: 1px solid transparent; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + } +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 15px; + } +.panel-title > a { + color: inherit; + } +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + } +.alert { + padding: 15px; + margin-bottom: 20px; + color: #282828; + background-color: #f1f1f1; + border-radius: 3px; + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +.alert hr { + border-top-color: #e4e4e4; + } +.alert .alert-link { + color: #161616; + } +.alert h4 { + margin-top: 0; + color: inherit; + } +.alert hr { + margin: 10px 0; + } +.alert p, +.alert ul { + margin-bottom: 0; + } +.alert p + p { + margin-top: 5px; + } +.alert-link { + font-weight: bold; + } +.alert > [class*="icon-"] { + float: left; + margin-top: -5px; + font-size: 42px; + opacity: .6; + -webkit-transition: opacity .2s cubic-bezier(.175, .885, .32, 1); + -o-transition: opacity .2s cubic-bezier(.175, .885, .32, 1); + transition: opacity .2s cubic-bezier(.175, .885, .32, 1); + } +.alert > [class*="icon-"] + .content { + min-height: 30px; + margin-left: 64px; + } +.alert.with-icon { + display: table; + width: 100%; + } +.alert.with-icon > [class*="icon-"], +.alert.with-icon > [class*="icon-"] + .content { + display: table-cell; + float: none; + min-height: 0; + margin: 0; + vertical-align: middle; + } +.alert.with-icon > [class*="icon-"] { + width: 48px; + text-align: center; + } +.alert.with-icon > [class*="icon-"] + .content { + padding-left: 1em; + } +.alert-block { + margin: 0; + border-radius: 0; + } +.alert-dismissable { + padding-right: 35px; + } +.alert-dismissable .close { + position: relative; + top: -6px; + right: -21px; + color: inherit; + } +.alert-primary { + color: #282828; + background-color: #ebf2f9; + } +.alert-primary hr { + border-top-color: #d0e0f1; + } +.alert-primary .alert-link { + color: #161616; + } +.alert-success { + color: #329d38; + background-color: #ddf4df; + } +.alert-success hr { + border-top-color: #bae8b6; + } +.alert-success .alert-link { + color: #29822e; + } +.alert-info { + color: #03a2b6; + background-color: #ddf3f5; + } +.alert-info hr { + border-top-color: #a2e4de; + } +.alert-info .alert-link { + color: #028293; + } +.alert-warning { + color: #ed980f; + background-color: #fff0d5; + } +.alert-warning hr { + border-top-color: #ffdcbc; + } +.alert-warning .alert-link { + color: #cc830d; + } +.alert-danger { + color: #e75033; + background-color: #ffe5e0; + } +.alert-danger hr { + border-top-color: #ffc6c7; + } +.alert-danger .alert-link { + color: #dd391a; + } +.input-group { + position: relative; + display: table; + border-collapse: separate; + } +.input-group[class*="col-"] { + float: none; + padding-right: 0; + padding-left: 0; + } +.input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; + } +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; + } +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; + } +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; + } +.input-group-addon { + padding: 5px 12px; + font-size: 13px; + font-weight: normal; + line-height: 1; + color: #222; + text-align: center; + background-color: #e5e5e5; + border: 1px solid #ccc; + border-radius: 4px; + } +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; + } +.input-group-addon.fix-border { + border-right: 0; + border-left: 0; + } +.input-group-addon:empty { + width: 1px; + padding: 0; + } +.input-group-addon.fix-padding { + width: 1px; + padding: 0; + } +.input-group-btn.fix-border > .btn { + border-right: 0; + border-left: 0; + border-radius: 0; + } +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } +.input-group-addon:first-child { + border-right: 0; + } +.input-group-addon:last-child { + border-left: 0; + } +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; + } +.input-group-btn > .btn { + position: relative; + } +.input-group-btn > .btn + .btn { + margin-left: -1px; + } +.input-group-btn > .btn:hover, +.input-group-btn > .btn:focus, +.input-group-btn > .btn:active { + z-index: 2; + } +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group { + margin-right: -1px; + } +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group { + margin-left: -1px; + } +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 43px; + padding: 10px 16px; + font-size: 17px; + line-height: 1.25; + border-radius: 6px; + } +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 43px; + line-height: 43px; + } +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn { + height: auto; + } +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 24px; + padding: 2px 8px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; + } +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 24px; + line-height: 24px; + } +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn { + height: auto; + } +.input-group-addon.input-sm { + padding: 2px 8px; + font-size: 12px; + border-radius: 3px; + } +.input-group-addon.input-lg { + padding: 10px 16px; + font-size: 17px; + border-radius: 6px; + } +.code, +code, +kbd, +pre, +samp { + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; + } +kbd, +code { + padding: 2px 4px; + font-size: 90%; + color: #37474f; + background-color: #f3f5f7; + border-radius: 4px; + } +kbd { + padding: 1px 4px; + font-weight: bold; + color: #666; + background-color: #f1f1f1; + border: 1px solid #d7d7d7; + border-bottom-width: 2px; + } +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 12px; + line-height: 1.38461538; + color: #333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px; + } +pre code { + padding: 0; + margin: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border: 0; + } +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; + } +.com { + color: #93a1a1; + } +.lit { + color: #195f91; + } +.pun, +.opn, +.clo { + color: #93a1a1; + } +.fun { + color: #dc322f; + } +.str, +.atv { + color: #d14; + } +.kwd, +.prettyprint .tag { + color: #1e347b; + } +.typ, +.atn, +.dec, +.var { + color: teal; + } +.pln { + color: #48484c; + } +.prettyprint.linenums { + -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; + box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; + } +.prettyprint ol.linenums { + padding-left: 35px; + margin-bottom: 0; + line-height: 20px; + color: #bebec5; + text-shadow: 0 1px 0 #fff; + } +.pager { + display: inline-block; + padding-left: 0; + margin: 20px 0; + list-style: none; + } +.pager > li { + display: inline; + } +.pager > li > a, +.pager > li > span { + position: relative; + float: left; + padding: 5px 12px; + margin-left: -1px; + line-height: 1.53846154; + text-decoration: none; + background-color: #fff; + border: 1px solid #ddd; + } +.pager > li:first-child > a, +.pager > li:first-child > span { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + } +.pager > li:last-child > a, +.pager > li:last-child > span { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + } +.pager > li > a:hover, +.pager > li > span:hover, +.pager > li > a:focus, +.pager > li > span:focus { + z-index: 2; + background-color: #e5e5e5; + } +.pager > li.active > a, +.pager > li.active > span, +.pager > li.active > a:hover, +.pager > li.active > span:hover { + z-index: 3; + color: #fff; + cursor: default; + background-color: #3280fc; + border-color: #3280fc; + } +.pager > li.disabled > span, +.pager > li.disabled > span:hover, +.pager > li.disabled > span:focus, +.pager > li.disabled > a, +.pager > li.disabled > a:hover, +.pager > li.disabled > a:focus { + color: #ddd; + pointer-events: none; + cursor: not-allowed; + background-color: #fff; + border-color: #ddd; + } +.pager-justify { + display: block; + } +.pager-justify .next > a, +.pager-justify .next > span { + float: right; + border-radius: 4px; + } +.pager-justify .previous > a, +.pager-justify .previous > span { + float: left; + border-radius: 4px; + } +.pager-goto { + width: 100px; + text-align: center; + } +.pager > li > div { + float: left; + } +.pager > li .pager-goto, +.pager > li .pager-size-menu, +.pager > li.space { + margin: 0 5px; + } +.pager-label { + position: relative; + float: left; + padding: 5px 4px; + margin-left: -1px; + line-height: 1.53846154; + text-decoration: none; + border: 1px solid transparent; + } +.pager-item-left > a { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + } +.pager-item-right > a { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + } +.nav { + padding-left: 0; + margin-bottom: 0; + list-style: none; + } +.nav > .nav-heading { + padding: 8px 15px; + font-weight: bold; + color: #808080; + } +.nav > li { + position: relative; + display: block; + } +.nav > li > a { + position: relative; + display: block; + padding: 8px 15px; + color: #353535; + } +.nav > li > a:hover, +.nav > li > a:focus { + color: #0d3d88; + text-decoration: none; + background-color: #f1f1f1; + } +.nav > li.disabled > a { + color: #ddd; + } +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #ddd; + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + } +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #f1f1f1; + border-color: #145ccd; + } +.nav > li > a > img { + max-width: none; + } +.nav-pills > li { + float: left; + } +.nav-pills > li > a { + border-radius: 20px; + } +.nav-pills > li + li { + margin-left: 2px; + } +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + color: #fff; + background-color: #3280fc; + } +.nav-primary > li { + float: left; + margin-left: -1px; + } +.nav-primary > li:first-child > a { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + } +.nav-primary > li:last-child > a { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + } +.nav-primary > li > a { + border: 1px solid #ddd; + } +.nav-primary > li.active > a, +.nav-primary > li.active > a:hover, +.nav-primary > li.active > a:focus { + color: #fff; + background-color: #3280fc; + border-color: #3280fc; + } +.nav-secondary > li { + float: left; + } +.nav-secondary > li > a { + border-bottom: 2px solid #e5e5e5; + } +.nav-secondary > li.active > a, +.nav-secondary > li.active > a:hover, +.nav-secondary > li.active > a:focus { + color: #3280fc; + border-bottom-color: #3280fc; + } +.nav-secondary > li.nav-heading { + border-bottom: 2px solid #e5e5e5; + } +.nav-stacked > li { + float: none; + } +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; + } +.nav-stacked.nav-primary > li, +.nav-stacked.nav-primary > li > a { + margin-left: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +.nav-stacked.nav-primary > li + li { + margin-top: -1px; + } +.nav-stacked.nav-primary > li:first-child { + margin-top: 0; + } +.nav-stacked.nav-primary > li:first-child > a, +.nav-stacked.nav-primary > li:first-child.nav-heading { + margin-left: 0; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + } +.nav-stacked.nav-primary > li:last-child > a { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; + } +.nav-stacked.nav-primary > li.nav-heading { + background-color: #f1f1f1; + border: 1px solid #ddd; + } +.nav-stacked.nav-secondary > li > a { + border: none; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + -webkit-box-shadow: inset 2px 0 0 #f5f5f5; + box-shadow: inset 2px 0 0 #f5f5f5; + } +.nav-stacked.nav-secondary > li > a:hover { + -webkit-box-shadow: inset 2px 0 0 #e5e5e5; + box-shadow: inset 2px 0 0 #e5e5e5; + } +.nav-stacked.nav-secondary > li + li { + margin-top: -1px; + } +.nav-stacked.nav-secondary > li:first-child { + margin-top: 0; + } +.nav-stacked.nav-secondary > li.active > a, +.nav-stacked.nav-secondary > li.active > a:hover, +.nav-stacked.nav-secondary > li.active > a:focus { + background-color: #f5f5f5; + -webkit-box-shadow: inset 2px 0 0 #3280fc; + box-shadow: inset 2px 0 0 #3280fc; + } +.nav-stacked.nav-secondary > li.nav-heading { + border-bottom: 1px solid #ddd; + } +.nav-justified { + width: 100%; + } +.nav-justified > li { + float: none; + } +.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; + } +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-justified > li > a { + margin-bottom: 0; + } + .nav-justified.nav-primary > li + li > a { + border-left: 0; + } + } +.navbar { + position: relative; + min-height: 40px; + margin-bottom: 20px; + border: 1px solid transparent; + } +@media (min-width: 768px) { + .navbar { + border-radius: 4px; + } + } +@media (min-width: 768px) { + .navbar-header { + float: left; + } + } +.navbar-collapse { + padding-right: 10px; + padding-left: 10px; + overflow-x: visible; + -webkit-overflow-scrolling: touch; + border-top: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); + } +.navbar-collapse.in { + overflow-y: auto; + } +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-right: 0; + padding-left: 0; + } + } +.navbar-fixed-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + max-height: 340px; + } +@media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } + } +.container > .navbar-header, +.container-fluid > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-collapse { + margin-right: -10px; + margin-left: -10px; + } +@media (min-width: 768px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } + } +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; + } +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } + } +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + } +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } + } +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; + } +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; + } +.navbar-brand { + float: left; + height: 40px; + padding: 10px 15px; + font-size: 17px; + line-height: 20px; + } +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; + } +.navbar-brand > img { + display: block; + } +@media (min-width: 768px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: -10px; + } + } +.navbar-toggle { + position: relative; + float: right; + padding: 9px 10px; + margin-top: 3px; + margin-right: 3px; + margin-bottom: 3px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; + } +.navbar-toggle:focus { + outline: 0; + } +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; + } +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; + } +@media (min-width: 768px) { + .navbar-toggle { + display: none; + } + } +.navbar-nav { + margin: 5px -10px; + } +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; + } +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } + } +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + } + .navbar-nav.nav-justified > li { + float: none; + } + } +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; + } +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +.navbar-nav.pull-right > li > .dropdown-menu, +.navbar-nav > li > .dropdown-menu.pull-right { + right: 0; + left: auto; + } +.navbar-btn { + margin-top: 4px; + margin-bottom: 4px; + } +.navbar-text { + float: left; + margin-top: 10px; + margin-bottom: 10px; + } +@media (min-width: 768px) { + .navbar-text { + margin-right: 10px; + margin-left: 10px; + } + } +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + margin-right: -10px; + } + .navbar-right ~ .navbar-right { + margin-right: 0; + } + } +.navbar-default { + background-color: #f7f7f7; + border-color: #dedede; + } +.navbar-default .navbar-brand { + color: #333; + } +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #1a1a1a; + background-color: transparent; + } +.navbar-default .navbar-text { + color: #333; + } +.navbar-default .navbar-nav > li > a { + color: #333; + } +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #222; + background-color: #e5e5e5; + } +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #555; + background-color: #e7e7e7; + } +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #ccc; + background-color: transparent; + } +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #ddd; + } +.navbar-default .navbar-toggle .icon-bar { + background-color: #808080; + } +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #dedede; + } +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + color: #555; + background-color: #e7e7e7; + } +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #333; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #222; + background-color: #e5e5e5; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #ccc; + background-color: transparent; + } + } +.navbar-default .navbar-link { + color: #333; + } +.navbar-default .navbar-link:hover { + color: #222; + } +.navbar-default .btn-link { + color: #333; + } +.navbar-default .btn-link:hover, +.navbar-default .btn-link:focus { + color: #222; + } +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:hover, +.navbar-default .btn-link[disabled]:focus, +fieldset[disabled] .navbar-default .btn-link:focus { + color: #ccc; + } +.navbar-inverse { + background-color: #145ccd; + border-color: #10479f; + } +.navbar-inverse .navbar-brand { + color: #ddd; + } +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #fff; + background-color: transparent; + } +.navbar-inverse .navbar-text { + color: #ddd; + } +.navbar-inverse .navbar-nav > li > a { + color: #ddd; + } +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #fff; + background-color: #1868e8; + } +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #fff; + background-color: #2a74ea; + } +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444; + background-color: transparent; + } +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #1251b6; + } +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #fff; + } +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #114dad; + } +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + color: #fff; + background-color: #2a74ea; + } +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #10479f; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #10479f; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #ddd; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #fff; + background-color: #1868e8; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-color: #2a74ea; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444; + background-color: transparent; + } + } +.navbar-inverse .navbar-link { + color: #ddd; + } +.navbar-inverse .navbar-link:hover { + color: #fff; + } +.fade { + opacity: 0; + -webkit-transition: opacity .15s linear; + -o-transition: opacity .15s linear; + transition: opacity .15s linear; + } +.fade.in { + opacity: 1; + } +.scale { + -webkit-transition: all .15s ease; + -o-transition: all .15s ease; + transition: all .15s ease; + -webkit-transform: scale(.8); + -ms-transform: scale(.8); + -o-transform: scale(.8); + transform: scale(.8); + } +.scale.in { + -webkit-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); + } +.collapse { + display: none; + } +.collapse.in { + display: block; + } +tr.collapse.in { + display: table-row; + } +tbody.collapse.in { + display: table-row-group; + } +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height .35s ease; + -o-transition: height .35s ease; + transition: height .35s ease; + } +.modal-open { + overflow: hidden; + } +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + display: none; + overflow: hidden; + -webkit-overflow-scrolling: touch; + outline: 0; + } +.modal.fade .modal-dialog { + -webkit-transition: -webkit-transform .3s ease-out; + -o-transition: -o-transform .3s ease-out; + transition: -webkit-transform .3s ease-out; + transition: transform .3s ease-out; + transition: transform .3s ease-out, -webkit-transform .3s ease-out, -o-transform .3s ease-out; + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); + } +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); + } +.modal > .loader { + display: none; + } +.modal.modal-loading .modal-dialog { + opacity: 0; + } +.modal.modal-loading .loader { + position: absolute; + top: 35%; + left: 50%; + display: block; + width: 80px; + margin-left: -40px; + font-size: 56px; + color: #fff; + text-align: center; + } +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; + } +.modal-iframe .modal-body > iframe { + border-radius: 0 0 6px 6px; + } +.modal-dialog { + position: relative; + width: auto; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + outline: 0; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); + box-shadow: 0 3px 9px rgba(0, 0, 0, .5); + } +.modal-dialog.modal-moveable { + position: absolute; + margin: 0; + } +.modal-dialog.modal-moveable .modal-header { + cursor: move; + } +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000; + } +.modal-backdrop.fade { + filter: alpha(opacity=0); + opacity: 0; + } +.modal-backdrop.in { + filter: alpha(opacity=50); + opacity: .5; + } +.modal-header { + min-height: 16.53846154px; + padding: 15px; + border-bottom: 1px solid #e5e5e5; + } +.modal-header .close { + margin-top: -2px; + } +.modal-title { + margin: 0; + line-height: 1.53846154; + } +.modal-body { + position: relative; + padding: 15px; + } +.modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; + } +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; + } +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; + } +.modal-footer .btn-block + .btn-block { + margin-left: 0; + } +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; + } +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + } + .modal-sm { + width: 300px; + } + } +@media (min-width: 992px) { + .modal-lg { + width: 900px; + } + } +/* full screen modal */ +.modal-fullscreen { + position: relative; + width: 100%!important; + height: 100%!important; + margin: 0; + border-radius: 0; + } +.modal-fullscreen .modal-body { + position: absolute; + top: 52px; + right: 0; + bottom: 0; + left: 0; + overflow-y: auto; + } +.tooltip { + position: absolute; + z-index: 1030; + display: block; + font-size: 12px; + line-height: 1.4; + visibility: visible; + filter: alpha(opacity=0); + opacity: 0; + } +.tooltip.in { + filter: alpha(opacity=100); + opacity: 1; + } +.tooltip.top { + padding: 5px 0; + margin-top: -3px; + } +.tooltip.right { + padding: 0 5px; + margin-left: 3px; + } +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; + } +.tooltip.left { + padding: 0 5px; + margin-left: -3px; + } +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + text-decoration: none; + background-color: #353535; + border-radius: 4px; + } +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + } +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #353535; + } +.tooltip.top-left .tooltip-arrow { + bottom: 0; + left: 5px; + border-width: 5px 5px 0; + border-top-color: #353535; + } +.tooltip.top-right .tooltip-arrow { + right: 5px; + bottom: 0; + border-width: 5px 5px 0; + border-top-color: #353535; + } +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #353535; + } +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #353535; + } +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #353535; + } +.tooltip.bottom-left .tooltip-arrow { + top: 0; + left: 5px; + border-width: 0 5px 5px; + border-bottom-color: #353535; + } +.tooltip.bottom-right .tooltip-arrow { + top: 0; + right: 5px; + border-width: 0 5px 5px; + border-bottom-color: #353535; + } +.tooltip-primary .tooltip-inner { + background-color: #3280fc; + } +.tooltip-primary.tooltip.top .tooltip-arrow { + border-top-color: #3280fc; + } +.tooltip-primary.tooltip.top-left .tooltip-arrow { + border-top-color: #3280fc; + } +.tooltip-primary.tooltip.top-right .tooltip-arrow { + border-top-color: #3280fc; + } +.tooltip-primary.tooltip.right .tooltip-arrow { + border-right-color: #3280fc; + } +.tooltip-primary.tooltip.left .tooltip-arrow { + border-left-color: #3280fc; + } +.tooltip-primary.tooltip.bottom .tooltip-arrow { + border-bottom-color: #3280fc; + } +.tooltip-primary.tooltip.bottom-left .tooltip-arrow { + border-bottom-color: #3280fc; + } +.tooltip-primary.tooltip.bottom-right .tooltip-arrow { + border-bottom-color: #3280fc; + } +.tooltip-success .tooltip-inner { + background-color: #38b03f; + } +.tooltip-success.tooltip.top .tooltip-arrow { + border-top-color: #38b03f; + } +.tooltip-success.tooltip.top-left .tooltip-arrow { + border-top-color: #38b03f; + } +.tooltip-success.tooltip.top-right .tooltip-arrow { + border-top-color: #38b03f; + } +.tooltip-success.tooltip.right .tooltip-arrow { + border-right-color: #38b03f; + } +.tooltip-success.tooltip.left .tooltip-arrow { + border-left-color: #38b03f; + } +.tooltip-success.tooltip.bottom .tooltip-arrow { + border-bottom-color: #38b03f; + } +.tooltip-success.tooltip.bottom-left .tooltip-arrow { + border-bottom-color: #38b03f; + } +.tooltip-success.tooltip.bottom-right .tooltip-arrow { + border-bottom-color: #38b03f; + } +.tooltip-info .tooltip-inner { + background-color: #03b8cf; + } +.tooltip-info.tooltip.top .tooltip-arrow { + border-top-color: #03b8cf; + } +.tooltip-info.tooltip.top-left .tooltip-arrow { + border-top-color: #03b8cf; + } +.tooltip-info.tooltip.top-right .tooltip-arrow { + border-top-color: #03b8cf; + } +.tooltip-info.tooltip.right .tooltip-arrow { + border-right-color: #03b8cf; + } +.tooltip-info.tooltip.left .tooltip-arrow { + border-left-color: #03b8cf; + } +.tooltip-info.tooltip.bottom .tooltip-arrow { + border-bottom-color: #03b8cf; + } +.tooltip-info.tooltip.bottom-left .tooltip-arrow { + border-bottom-color: #03b8cf; + } +.tooltip-info.tooltip.bottom-right .tooltip-arrow { + border-bottom-color: #03b8cf; + } +.tooltip-warning .tooltip-inner { + background-color: #f1a325; + } +.tooltip-warning.tooltip.top .tooltip-arrow { + border-top-color: #f1a325; + } +.tooltip-warning.tooltip.top-left .tooltip-arrow { + border-top-color: #f1a325; + } +.tooltip-warning.tooltip.top-right .tooltip-arrow { + border-top-color: #f1a325; + } +.tooltip-warning.tooltip.right .tooltip-arrow { + border-right-color: #f1a325; + } +.tooltip-warning.tooltip.left .tooltip-arrow { + border-left-color: #f1a325; + } +.tooltip-warning.tooltip.bottom .tooltip-arrow { + border-bottom-color: #f1a325; + } +.tooltip-warning.tooltip.bottom-left .tooltip-arrow { + border-bottom-color: #f1a325; + } +.tooltip-warning.tooltip.bottom-right .tooltip-arrow { + border-bottom-color: #f1a325; + } +.tooltip-danger .tooltip-inner { + background-color: #ea644a; + } +.tooltip-danger.tooltip.top .tooltip-arrow { + border-top-color: #ea644a; + } +.tooltip-danger.tooltip.top-left .tooltip-arrow { + border-top-color: #ea644a; + } +.tooltip-danger.tooltip.top-right .tooltip-arrow { + border-top-color: #ea644a; + } +.tooltip-danger.tooltip.right .tooltip-arrow { + border-right-color: #ea644a; + } +.tooltip-danger.tooltip.left .tooltip-arrow { + border-left-color: #ea644a; + } +.tooltip-danger.tooltip.bottom .tooltip-arrow { + border-bottom-color: #ea644a; + } +.tooltip-danger.tooltip.bottom-left .tooltip-arrow { + border-bottom-color: #ea644a; + } +.tooltip-danger.tooltip.bottom-right .tooltip-arrow { + border-bottom-color: #ea644a; + } +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + max-width: 300px; + text-align: left; + white-space: normal; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 4px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + } +.popover.top { + margin-top: -10px; + } +.popover.right { + margin-left: 10px; + } +.popover.bottom { + margin-top: 10px; + } +.popover.left { + margin-left: -10px; + } +.popover.no-arrow.top { + margin-top: 0; + } +.popover.no-arrow.right { + margin-left: 0; + } +.popover.no-arrow.bottom { + margin-top: 0; + } +.popover.no-arrow.left { + margin-left: 0; + } +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 13px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 4px 4px 0 0; + } +.popover-content { + padding: 9px 14px; + } +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + } +.popover .arrow { + border-width: 11px; + } +.popover .arrow:after { + content: ""; + border-width: 10px; + } +.popover.top .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, .25); + border-bottom-width: 0; + } +.popover.top .arrow:after { + bottom: 1px; + margin-left: -10px; + content: " "; + border-top-color: #fff; + border-bottom-width: 0; + } +.popover.right .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, .25); + border-left-width: 0; + } +.popover.right .arrow:after { + bottom: -10px; + left: 1px; + content: " "; + border-right-color: #fff; + border-left-width: 0; + } +.popover.bottom .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, .25); + } +.popover.bottom .arrow:after { + top: 1px; + margin-left: -10px; + content: " "; + border-top-width: 0; + border-bottom-color: #fff; + } +.popover.left .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, .25); + } +.popover.left .arrow:after { + right: 1px; + bottom: -10px; + content: " "; + border-right-width: 0; + border-left-color: #fff; + } +.popover-primary { + border-color: #3280fc; + } +.popover-primary .popover-title { + color: #fff; + background-color: #3280fc; + } +.popover-primary.popover.top .arrow { + border-top-color: #3280fc; + } +.popover-primary.popover.right .arrow { + border-right-color: #3280fc; + } +.popover-primary.popover.left .arrow { + border-left-color: #3280fc; + } +.popover-primary.popover.bottom .arrow, +.popover-primary.popover.bottom .arrow:after { + border-bottom-color: #3280fc; + } +.popover-success { + border-color: #38b03f; + } +.popover-success .popover-title { + color: #fff; + background-color: #38b03f; + } +.popover-success.popover.top .arrow { + border-top-color: #38b03f; + } +.popover-success.popover.right .arrow { + border-right-color: #38b03f; + } +.popover-success.popover.left .arrow { + border-left-color: #38b03f; + } +.popover-success.popover.bottom .arrow, +.popover-success.popover.bottom .arrow:after { + border-bottom-color: #38b03f; + } +.popover-info { + border-color: #03b8cf; + } +.popover-info .popover-title { + color: #fff; + background-color: #03b8cf; + } +.popover-info.popover.top .arrow { + border-top-color: #03b8cf; + } +.popover-info.popover.right .arrow { + border-right-color: #03b8cf; + } +.popover-info.popover.left .arrow { + border-left-color: #03b8cf; + } +.popover-info.popover.bottom .arrow, +.popover-info.popover.bottom .arrow:after { + border-bottom-color: #03b8cf; + } +.popover-warning { + border-color: #f1a325; + } +.popover-warning .popover-title { + color: #fff; + background-color: #f1a325; + } +.popover-warning.popover.top .arrow { + border-top-color: #f1a325; + } +.popover-warning.popover.right .arrow { + border-right-color: #f1a325; + } +.popover-warning.popover.left .arrow { + border-left-color: #f1a325; + } +.popover-warning.popover.bottom .arrow, +.popover-warning.popover.bottom .arrow:after { + border-bottom-color: #f1a325; + } +.popover-danger { + border-color: #ea644a; + } +.popover-danger .popover-title { + color: #fff; + background-color: #ea644a; + } +.popover-danger.popover.top .arrow { + border-top-color: #ea644a; + } +.popover-danger.popover.right .arrow { + border-right-color: #ea644a; + } +.popover-danger.popover.left .arrow { + border-left-color: #ea644a; + } +.popover-danger.popover.bottom .arrow, +.popover-danger.popover.bottom .arrow:after { + border-bottom-color: #ea644a; + } +.caret { + display: inline-block; + width: 0; + height: 0; + margin-bottom: 2px; + margin-left: 2px; + vertical-align: middle; + border-top: 4px dashed; + border-top: 4px solid \9; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + } +.dropup, +.dropdown { + position: relative; + } +.dropdown-toggle:focus { + outline: 0; + } +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 13px; + list-style: none; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #cbcbcb; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + } +.dropdown-menu.pull-right { + right: 0; + left: auto; + } +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; + } +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.53846154; + color: #353535; + white-space: nowrap; + } +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + color: #fff; + text-decoration: none; + background-color: #3280fc; + } +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #fff; + text-decoration: none; + background-color: #3280fc; + outline: 0; + } +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #ddd; + } +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + } +.dropdown-hover .dropdown-menu { + margin: -1px 0; + } +.dropdown-hover:hover > .dropdown-menu, +.open > .dropdown-menu { + display: block; + } +.dropdown-hover:hover > a, +.open > a { + outline: 0; + } +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + font-weight: bold; + line-height: 1.53846154; + color: #808080; + } +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; + } +.pull-right > .dropdown-menu { + right: 0; + left: auto; + } +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + content: ""; + border-top: 0 dotted; + border-bottom: 4px solid; + } +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; + } +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; + } + } +.dropdown-submenu { + position: relative; + } +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + border-radius: 4px; + } +.dropdown-submenu.open > .dropdown-menu, +.dropdown-submenu:hover > .dropdown-menu { + display: block; + } +.dropup .dropdown-submenu > .dropdown-menu { + top: auto; + bottom: 0; + margin-top: 0; + margin-bottom: -2px; + border-radius: 4px; + } +.dropdown-submenu > a:after { + display: block; + float: right; + width: 0; + height: 0; + margin-top: 5px; + margin-right: -10px; + content: " "; + border-color: transparent; + border-style: solid; + border-width: 5px 0 5px 5px; + border-left-color: #ccc; + } +.dropdown-submenu:hover > a:after { + border-left-color: #fff; + } +.dropdown-submenu > a { + min-width: 160px; + } +.dropdown-submenu > .dropdown-menu.pull-left { + left: -100%; + } +.dropdown-submenu:hover > a, +.dropdown-submenu:focus > a { + color: #fff; + text-decoration: none; + background-color: #3280fc; + } +.carousel { + position: relative; + } +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; + } +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: .6s ease-in-out left; + -o-transition: .6s ease-in-out left; + transition: .6s ease-in-out left; + } +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + line-height: 1; + } +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; + } +.carousel-inner > .active { + left: 0; + } +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; + } +.carousel-inner > .next { + left: 100%; + } +.carousel-inner > .prev { + left: -100%; + } +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; + } +.carousel-inner > .active.left { + left: -100%; + } +.carousel-inner > .active.right { + left: 100%; + } +.carousel-control { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 10%; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); + filter: alpha(opacity=40); + outline: none; + opacity: .4; + } +.carousel-control > .icon { + font-size: 20px; + } +.carousel-control.left { + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .3)), to(rgba(0, 0, 0, .0001))); + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .3) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .3) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, .3) 0%, rgba(0, 0, 0, .0001) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#4d000000', endColorstr='#00000000', GradientType=1); + background-repeat: repeat-x; + } +.carousel-control.right { + right: 0; + left: auto; + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .3))); + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .3) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .3) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .3) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#4d000000', GradientType=1); + background-repeat: repeat-x; + } +.carousel-control:hover, +.carousel-control:focus { + color: #fff; + text-decoration: none; + filter: alpha(opacity=100); + outline: none; + opacity: 1; + } +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .icon-chevron-left, +.carousel-control .icon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; + } +.carousel-control .icon-prev, +.carousel-control .icon-chevron-left { + left: 50%; + } +.carousel-control .icon-next, +.carousel-control .icon-chevron-right { + right: 50%; + } +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + margin-left: -10px; + font-family: serif; + } +.carousel-control .icon-prev:before { + content: '\2039'; + } +.carousel-control .icon-next:before { + content: '\203a'; + } +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); + } +.carousel-caption .btn { + text-shadow: none; + } +@media screen and (min-width: 768px) { + .carousel-control .icon-prev, + .carousel-control .icon-next { + top: 40%; + width: 30px; + height: 30px; + margin-top: -15px; + margin-left: -15px; + font-size: 80px; + } + .carousel-control .icon-prev { + left: 30%; + } + .carousel-control .icon-next { + right: 25%; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } + } +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + padding-left: 0; + margin-left: -30%; + text-align: center; + list-style: none; + } +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + cursor: pointer; + border: 1px solid #fff; + border-radius: 10px; + } +.carousel-indicators .active { + width: 12px; + height: 12px; + margin: 0; + background-color: #fff; + } +.bg-black, +.bg-default { + color: #fff; + background-color: #353535; + } +.bg-primary { + color: #fff; + background-color: #3280fc; + } +.bg-green, +.bg-success { + color: #fff; + background-color: #38b03f; + } +.bg-blue, +.bg-info { + color: #fff; + background-color: #03b8cf; + } +.bg-yellow, +.bg-warning { + color: #fff; + background-color: #f1a325; + } +.bg-red, +.bg-danger { + color: #fff; + background-color: #ea644a; + } +.bg-brown, +.bg-important { + color: #fff; + background-color: #bd7b46; + } +.bg-purple, +.bg-special { + color: #fff; + background-color: #8666b8; + } +.hl-gray, +.hl-default { + background-color: #f1f1f1; + } +.hl-primary { + background-color: #ebf2f9; + } +.hl-green, +.hl-success { + background-color: #ddf4df; + } +.hl-blue, +.hl-info { + background-color: #ddf3f5; + } +.hl-yellow, +.hl-warning { + background-color: #fff0d5; + } +.hl-red, +.hl-danger { + background-color: #ffe5e0; + } +.hl-brown, +.hl-important { + background-color: #f7ebe1; + } +.hl-purple, +.hl-special { + background-color: #f5eeff; + } +.article { + padding: 20px; + } +.article > header h1, +.article > header h2, +.article > header h3 { + margin-bottom: 20px; + line-height: 1.5; + } +.article > header > .abstract, +.article > header > dl { + padding: 10px 15px; + font-size: 12px; + color: #686868; + background-color: #f1f1f1; + } +.article > header > .abstract > p:last-child, +.article > header > dl > p:last-child { + margin-bottom: 0; + } +.article > header > dl { + margin: 0; + border-bottom: 1px solid #e9e9e9; + } +.article > header > dl.pull-right { + background-color: transparent; + border: none; + } +.article > footer { + border-top: 1px dashed #d7d7d7; + } +.article > footer > p { + padding: 10px 15px; + } +.article > .content, +.article-content { + padding: 20px 0; + font-size: 14px; + line-height: 1.78571429; + } +.article > .content h1, +.article-content h1 { + font-size: 20px; + } +.article > .content h2, +.article-content h2 { + font-size: 18px; + } +.article > .content h3, +.article-content h3 { + font-size: 16px; + } +.article > .content h4, +.article-content h4 { + margin-top: 15px; + font-size: 14px; + } +.article > .content h5, +.article-content h5 { + margin-top: 15px; + font-size: 13px; + } +.article > .content h6, +.article-content h6 { + margin-top: 15px; + font-size: 11px; + } +.article > .content img, +.article-content img { + margin: 10px 0; + } +.article > .content p > img, +.article-content p > img { + margin-right: 10px; + } +.article > .content p > img[align='right'], +.article-content p > img[align='right'] { + margin-left: 10px; + } +.article > .content dl, +.article-content dl { + padding-right: 2em; + padding-left: 2em; + } +.article > .content table, +.article-content table { + margin-bottom: 20px; + } +.article > .content table th, +.article-content table th, +.article > .content table td, +.article-content table td { + padding: 8px; + line-height: 1.53846154; + vertical-align: top; + border-bottom: 1px solid #ddd; + } +.article > .content table > thead > tr > th, +.article-content table > thead > tr > th { + vertical-align: bottom; + background-color: #f1f1f1; + border-bottom: 1px solid #ddd; + } +.article-content p { + margin-bottom: 0; + } +.article-content table { + width: 100%; + } +.article > .content table th, +.article > .content table td, +.article > .content table > thead > tr > th { + border: 1px solid #ddd; + } +body.article-content { + padding: 8px; + } +.article-condensed { + padding: 20px 0; + } +.article-condensed > header { + padding: 0 20px; + } +.article-condensed > header > .abstract, +.article-condensed > header > dl { + padding: 10px 15px; + margin: 0 -20px; + } +.article-condensed > .content, +.article-condensed > .article-content { + padding: 20px; + } +.article-condensed > .content > img, +.article-condensed > .article-content > img, +.article-condensed > .content > pre, +.article-condensed > .article-content > pre { + margin-right: -20px; + margin-left: -20px; + border-radius: 0; + } +.article-condensed > .content > pre, +.article-condensed > .article-content > pre { + border-right: none; + border-left: none; + } +.article-condensed > footer { + border-top: 1px dashed #d7d7d7; + } +.article-condensed > footer > p { + padding: 10px 15px; + } +.article-condensed > footer > .pager-justify > .previous > a { + border-left: none; + border-radius: 0; + } +.article-condensed > footer > .pager-justify > .next > a { + border-right: none; + border-radius: 0; + } +.comments > header { + border-bottom: 1px solid #e5e5e5; + } +.comments > header > .alert { + padding: 7.5px 15px; + margin-bottom: -10px; + } +.comments > header h1, +.comments > header h2, +.comments > header h3 { + padding: 10px 0; + margin: 10px 0; + } +.comments > footer { + padding-top: 10px; + } +.comments > footer > .reply-form > .avatar { + display: block; + float: left; + width: 40px; + height: 40px; + margin-top: 10px; + } +.comments > footer > .reply-form > .avatar + .form { + padding-left: 50px; + } +.comment { + padding: 10px 0; + border-bottom: 1px solid #e5e5e5; + } +.comment:before, +.comment:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.comment:after { + clear: both; + } +.comment:before, +.comment:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.comment:after { + clear: both; + } +.comment > .avatar, +.comment > .content { + display: block; + } +.comment > .avatar { + float: left; + width: 40px; + height: 40px; + margin-top: 10px; + } +.comment > .avatar + .content { + padding-left: 50px; + } +.comment > .content > .text { + margin-top: 5px; + } +.comment > .content > .actions { + margin-top: 4px; + } +.comment > .content > .actions > a { + display: inline-block; + color: #808080; + } +.comment > .content > .actions > a + a { + margin-left: 5px; + } +.comment:hover > .content > .actions > a { + color: #145ccd; + } +.comment > .comments-list { + padding-top: 10px; + padding-bottom: 0; + padding-left: 30px; + margin-left: 20px; + border-left: 1px dashed #e5e5e5; + } +.comment > .comments-list > .comment { + border: none; + border-top: 1px solid #e5e5e5; + } +.comment > .comments-list > .comment:last-child { + padding-bottom: 0; + } +.list { + padding: 0 15px; + } +.list > header { + padding-bottom: 10px; + border-bottom: 1px solid #e5e5e5; + } +.items .item { + padding: 10px 0; + border-bottom: 1px solid #e5e5e5; + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +.items .item-heading > h6, +.items .item-heading h5, +.items .item-heading h4, +.items .item-heading h3, +.items .item-heading h2, +.items .item-heading h1 { + margin-top: 5px; + } +.items .item-content:before, +.items .item-content:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.items .item-content:after { + clear: both; + } +.items .item-content:before, +.items .item-content:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.items .item-content:after { + clear: both; + } +.items .item-content > .media { + max-width: 100%; + margin: 5px 0; + } +.items .item-content > .media.pull-left { + max-width: 150px; + margin: 0; + margin-right: 8px; + } +.items .item-content > .media.pull-right { + max-width: 150px; + margin: 0; + margin-left: 8px; + } +.items .item-footer { + padding-top: 5px; + } +.items .item-footer > a { + color: #808080; + } +.items-hover .item:hover { + background-color: #f5f5f5; + } +.list-condensed { + padding: 0; + } +.list-condensed > header, +.list-condensed > footer, +.list-condensed > .items > .item { + padding-right: 15px; + padding-left: 15px; + } diff --git a/root/res/zui/css/zui.lite.min.css b/root/res/zui/css/zui.lite.min.css new file mode 100644 index 0000000..67b7bf3 --- /dev/null +++ b/root/res/zui/css/zui.lite.min.css @@ -0,0 +1,6 @@ +/*! + * ZUI: Lite edition - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + *//*! Some code copy from Bootstrap v3.0.0 by @fat and @mdo. (Copyright 2013 Twitter, Inc. Licensed under http://www.apache.org/licenses/)*//*! normalize.css v2.1.3 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}a{background:0 0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{margin:.67em 0;font-size:2em}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}mark{color:#000;background:#ff0}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}button,input,select,textarea{margin:0;font-family:inherit;font-size:100%}button,input{line-height:normal}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=search]{-webkit-box-sizing:content-box;-moz-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}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}textarea{overflow:auto;vertical-align:top}table{border-spacing:0;border-collapse:collapse}.clearfix:after,.clearfix:before,.container-fixed-md:after,.container-fixed-md:before,.container-fixed-sm:after,.container-fixed-sm:before,.container-fixed-xs:after,.container-fixed-xs:before,.container-fixed:after,.container-fixed:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager-justify:after,.pager-justify:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.clearfix:after,.container-fixed-md:after,.container-fixed-sm:after,.container-fixed-xs:after,.container-fixed:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager-justify:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none}.showing{display:block}.hidden{display:none!important;visibility:hidden!important}.show{display:block!important;visibility:visible!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.affix{position:fixed}.with-padding{padding:5px 12px}.no-padding{padding:0!important}.inline-block.visible-xs,.inline.visible-xs,.visible-xs,td.visible-xs,th.visible-xs,tr.visible-xs{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}.inline.visible-xs{display:inline!important}.inline-block.visible-xs{display:inline-block!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}.inline.visible-xs.visible-sm{display:inline!important}.inline-block.visible-xs.visible-sm{display:inline-block!important}tr.visible-xs.visible-sm{display:table-row!important}td.visible-xs.visible-sm,th.visible-xs.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block!important}.inline.visible-xs.visible-md{display:inline!important}.inline-block.visible-xs.visible-md{display:inline-block!important}tr.visible-xs.visible-md{display:table-row!important}td.visible-xs.visible-md,th.visible-xs.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-xs.visible-lg{display:block!important}.inline.visible-xs.visible-lg{display:inline!important}.inline-block.visible-xs.visible-lg{display:inline-block!important}tr.visible-xs.visible-lg{display:table-row!important}td.visible-xs.visible-lg,th.visible-xs.visible-lg{display:table-cell!important}}.inline-block.visible-sm,.inline.visible-sm,.visible-sm,td.visible-sm,th.visible-sm,tr.visible-sm{display:none!important}@media (max-width:767px){.visible-sm.visible-xs{display:block!important}.inline.visible-sm.visible-xs{display:inline!important}.inline-block.visible-sm.visible-xs{display:inline-block!important}tr.visible-sm.visible-xs{display:table-row!important}td.visible-sm.visible-xs,th.visible-sm.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}.inline.visible-sm{display:inline!important}.inline-block.visible-sm{display:inline-block!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-sm.visible-md{display:block!important}.inline.visible-sm.visible-md{display:inline!important}.inline-block.visible-sm.visible-md{display:inline-block!important}tr.visible-sm.visible-md{display:table-row!important}td.visible-sm.visible-md,th.visible-sm.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-sm.visible-lg{display:block!important}.inline.visible-sm.visible-lg{display:inline!important}.inline-block.visible-sm.visible-lg{display:inline-block!important}tr.visible-sm.visible-lg{display:table-row!important}td.visible-sm.visible-lg,th.visible-sm.visible-lg{display:table-cell!important}}.inline-block.visible-md,.inline.visible-md,.visible-md,td.visible-md,th.visible-md,tr.visible-md{display:none!important}@media (max-width:767px){.visible-md.visible-xs{display:block!important}.inline.visible-md.visible-xs{display:inline!important}.inline-block.visible-md.visible-xs{display:inline-block!important}tr.visible-md.visible-xs{display:table-row!important}td.visible-md.visible-xs,th.visible-md.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}.inline.visible-md.visible-sm{display:inline!important}.inline-block.visible-md.visible-sm{display:inline-block!important}tr.visible-md.visible-sm{display:table-row!important}td.visible-md.visible-sm,th.visible-md.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}.inline.visible-md{display:inline!important}.inline-block.visible-md{display:inline-block!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-md.visible-lg{display:block!important}.inline.visible-md.visible-lg{display:inline!important}.inline-block.visible-md.visible-lg{display:inline-block!important}tr.visible-md.visible-lg{display:table-row!important}td.visible-md.visible-lg,th.visible-md.visible-lg{display:table-cell!important}}.inline-block.visible-lg,.inline.visible-lg,.visible-lg,td.visible-lg,th.visible-lg,tr.visible-lg{display:none!important}@media (max-width:767px){.visible-lg.visible-xs{display:block!important}.inline.visible-lg.visible-xs{display:inline!important}.inline-block.visible-lg.visible-xs{display:inline-block!important}tr.visible-lg.visible-xs{display:table-row!important}td.visible-lg.visible-xs,th.visible-lg.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}.inline.visible-lg.visible-sm{display:inline!important}.inline-block.visible-lg.visible-sm{display:inline-block!important}tr.visible-lg.visible-sm{display:table-row!important}td.visible-lg.visible-sm,th.visible-lg.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block!important}.inline.visible-lg.visible-md{display:inline!important}.inline-block.visible-lg.visible-md{display:inline-block!important}tr.visible-lg.visible-md{display:table-row!important}td.visible-lg.visible-md,th.visible-lg.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-lg{display:block!important}.inline.visible-lg{display:inline!important}.inline-block.visible-lg{display:inline-block!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}.hidden-xs{display:block!important}.inline.hidden-xs{display:inline!important}.inline-block.hidden-xs{display:inline-block!important}tr.hidden-xs{display:table-row!important}td.hidden-xs,th.hidden-xs{display:table-cell!important}@media (max-width:767px){.hidden-xs,.inline-block.hidden-xs,.inline.hidden-xs,td.hidden-xs,th.hidden-xs,tr.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm,.inline-block.hidden-xs.hidden-sm,.inline.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm,th.hidden-xs.hidden-sm,tr.hidden-xs.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md,.inline-block.hidden-xs.hidden-md,.inline.hidden-xs.hidden-md,td.hidden-xs.hidden-md,th.hidden-xs.hidden-md,tr.hidden-xs.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-xs.hidden-lg,.inline-block.hidden-xs.hidden-lg,.inline.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg,th.hidden-xs.hidden-lg,tr.hidden-xs.hidden-lg{display:none!important}}.hidden-sm{display:block!important}.inline.hidden-sm{display:inline!important}.inline-block.hidden-sm{display:inline-block!important}tr.hidden-sm{display:table-row!important}td.hidden-sm,th.hidden-sm{display:table-cell!important}@media (max-width:767px){.hidden-sm.hidden-xs,.inline-block.hidden-sm.hidden-xs,.inline.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs,th.hidden-sm.hidden-xs,tr.hidden-sm.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm,.inline-block.hidden-sm,.inline.hidden-sm,td.hidden-sm,th.hidden-sm,tr.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md,.inline-block.hidden-sm.hidden-md,.inline.hidden-sm.hidden-md,td.hidden-sm.hidden-md,th.hidden-sm.hidden-md,tr.hidden-sm.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-sm.hidden-lg,.inline-block.hidden-sm.hidden-lg,.inline.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg,th.hidden-sm.hidden-lg,tr.hidden-sm.hidden-lg{display:none!important}}.hidden-md{display:block!important}.inline.hidden-md{display:inline!important}.inline-block.hidden-md{display:inline-block!important}tr.hidden-md{display:table-row!important}td.hidden-md,th.hidden-md{display:table-cell!important}@media (max-width:767px){.hidden-md.hidden-xs,.inline-block.hidden-md.hidden-xs,.inline.hidden-md.hidden-xs,td.hidden-md.hidden-xs,th.hidden-md.hidden-xs,tr.hidden-md.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-md.hidden-sm,.inline-block.hidden-md.hidden-sm,.inline.hidden-md.hidden-sm,td.hidden-md.hidden-sm,th.hidden-md.hidden-sm,tr.hidden-md.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md,.inline-block.hidden-md,.inline.hidden-md,td.hidden-md,th.hidden-md,tr.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-md.hidden-lg,.inline-block.hidden-md.hidden-lg,.inline.hidden-md.hidden-lg,td.hidden-md.hidden-lg,th.hidden-md.hidden-lg,tr.hidden-md.hidden-lg{display:none!important}}.hidden-lg{display:block!important}.inline.hidden-lg{display:inline!important}.inline-block.hidden-lg{display:inline-block!important}tr.hidden-lg{display:table-row!important}td.hidden-lg,th.hidden-lg{display:table-cell!important}@media (max-width:767px){.hidden-lg.hidden-xs,.inline-block.hidden-lg.hidden-xs,.inline.hidden-lg.hidden-xs,td.hidden-lg.hidden-xs,th.hidden-lg.hidden-xs,tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-lg.hidden-sm,.inline-block.hidden-lg.hidden-sm,.inline.hidden-lg.hidden-sm,td.hidden-lg.hidden-sm,th.hidden-lg.hidden-sm,tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-lg.hidden-md,.inline-block.hidden-lg.hidden-md,.inline.hidden-lg.hidden-md,td.hidden-lg.hidden-md,th.hidden-lg.hidden-md,tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg,.inline-block.hidden-lg,.inline.hidden-lg,td.hidden-lg,th.hidden-lg,tr.hidden-lg{display:none!important}}.inline-block.visible-print,.inline.visible-print,.visible-print,td.visible-print,th.visible-print,tr.visible-print{display:none!important}@media print{.visible-print{display:block!important}.inline.visible-print{display:inline!important}.inline-block.visible-print{display:inline-block!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}.hidden-print,.inline-block.hidden-print,.inline.hidden-print,td.hidden-print,th.hidden-print,tr.hidden-print{display:none!important}}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Tahoma,Arial,'Microsoft Yahei','PingFang SC','Hiragino Sans GB','WenQuanYi Micro Hei',sans-serif;font-size:13px;line-height:1.53846154;color:#353535;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#145ccd;text-decoration:none;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}a:focus,a:hover{color:#0d3d88;text-decoration:underline}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a.disabled,a.disabled:focus,a.disabled:hover,a[disabled],a[disabled]:focus,a[disabled]:hover{color:#aaa;text-decoration:none;cursor:default}audio,canvas,img,video{max-width:100%;vertical-align:middle}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}::-moz-selection{text-shadow:none;background:#b3d4fc}::selection{text-shadow:none;background:#b3d4fc}fieldset{padding:0;margin:0;border:0}textarea{resize:vertical}ol,ul{padding-left:20px}.container,.container-fixed,.container-fixed-md,.container-fixed-sm,.container-fixed-xs,.container-fluid{padding-right:10px;padding-left:10px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{max-width:740px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1160px}}.container-fixed{width:1160px}.container-fixed-md{width:960px}.container-fixed-sm{width:740px}.container-fixed-xs{width:440px}.row{margin-right:-10px;margin-left:-10px}.col,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:10px;padding-left:10px}.col,.col-xs,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-1{width:8.33333333%}.col-xs-2{width:16.66666667%}.col-xs-3{width:25%}.col-xs-4{width:33.33333333%}.col-xs-5{width:41.66666667%}.col-xs-6{width:50%}.col-xs-7{width:58.33333333%}.col-xs-8{width:66.66666667%}.col-xs-9{width:75%}.col-xs-10{width:83.33333333%}.col-xs-11{width:91.66666667%}.col-xs-12{width:100%}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-1{width:8.33333333%}.col-sm-2{width:16.66666667%}.col-sm-3{width:25%}.col-sm-4{width:33.33333333%}.col-sm-5{width:41.66666667%}.col-sm-6{width:50%}.col-sm-7{width:58.33333333%}.col-sm-8{width:66.66666667%}.col-sm-9{width:75%}.col-sm-10{width:83.33333333%}.col-sm-11{width:91.66666667%}.col-sm-12{width:100%}.col-sm-push-1{left:8.33333333%}.col-sm-push-2{left:16.66666667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333333%}.col-sm-push-5{left:41.66666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.33333333%}.col-sm-push-8{left:66.66666667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333333%}.col-sm-push-11{left:91.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-11{right:91.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-11{margin-left:91.66666667%}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-1{width:8.33333333%}.col-md-2{width:16.66666667%}.col-md-3{width:25%}.col-md-4{width:33.33333333%}.col-md-5{width:41.66666667%}.col-md-6{width:50%}.col-md-7{width:58.33333333%}.col-md-8{width:66.66666667%}.col-md-9{width:75%}.col-md-10{width:83.33333333%}.col-md-11{width:91.66666667%}.col-md-12{width:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.33333333%}.col-md-push-2{left:16.66666667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333333%}.col-md-push-5{left:41.66666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.33333333%}.col-md-push-8{left:66.66666667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333333%}.col-md-push-11{left:91.66666667%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.33333333%}.col-md-pull-2{right:16.66666667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333333%}.col-md-pull-5{right:41.66666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.33333333%}.col-md-pull-8{right:66.66666667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333333%}.col-md-pull-11{right:91.66666667%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-11{margin-left:91.66666667%}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-1{width:8.33333333%}.col-lg-2{width:16.66666667%}.col-lg-3{width:25%}.col-lg-4{width:33.33333333%}.col-lg-5{width:41.66666667%}.col-lg-6{width:50%}.col-lg-7{width:58.33333333%}.col-lg-8{width:66.66666667%}.col-lg-9{width:75%}.col-lg-10{width:83.33333333%}.col-lg-11{width:91.66666667%}.col-lg-12{width:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.33333333%}.col-lg-push-2{left:16.66666667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333333%}.col-lg-push-5{left:41.66666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.33333333%}.col-lg-push-8{left:66.66666667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333333%}.col-lg-push-11{left:91.66666667%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-11{right:91.66666667%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-11{margin-left:91.66666667%}}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:14px;line-height:1.4}@media (min-width:768px){.lead{font-size:19.5px}}.small,small{font-size:85%}cite{font-style:normal}.text-gray,.text-muted{color:grey}.text-gray a,.text-muted a{color:#737373}.text-gray a:active,.text-gray a:hover,.text-muted a:active,.text-muted a:hover{color:#145ccd}.text-primary{color:#3280fc}.text-warning,.text-yellow{color:#f1a325}.text-danger,.text-red{color:#ea644a}.text-green,.text-success{color:#38b03f}.text-blue,.text-info{color:#03b8cf}.text-brown,.text-important{color:#bd7b46}.text-purple,.text-special{color:#8666b8}.text-link{color:#353535}.text-link:active,.text-link:hover{color:#145ccd}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.nobr,.text-nowrap{overflow:hidden;white-space:nowrap}.text-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}dl{margin-bottom:20px}dd,dt{line-height:1.53846154}dt{font-weight:700}dd{margin-left:0}.dl-inline:after,.dl-inline:before{display:table;content:" "}.dl-inline:after{clear:both}.dl-inline:after,.dl-inline:before{display:table;content:" "}.dl-inline:after{clear:both}.dl-inline dt{display:inline-block}.dl-inline dd{display:inline-block;padding-right:1em}.dl-inline dd:last-child{padding-right:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}blockquote{padding:10px 20px;margin:0 0 20px;font-size:16.25px;border-left:5px solid #e5e5e5}blockquote ol,blockquote p,blockquote ul{font-weight:300}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote small{display:block;line-height:1.53846154;color:grey}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #e5e5e5;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}.ol-pd-2{padding-left:40px}.ol-pd-3{padding-left:60px}.ol-pd-4{padding-left:80px}.header-dividing,.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #e5e5e5}h1,h2,h3,h4,h5,h6{font-family:"Helvetica Neue",Helvetica,Tahoma,Arial,'Microsoft Yahei','PingFang SC','Hiragino Sans GB','WenQuanYi Micro Hei',sans-serif;font-weight:700;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:400;line-height:1;color:grey}h1,h2,h3{margin-top:20px;margin-bottom:10px}h1 small,h2 small,h3 small{font-size:65%}h4,h5,h6{margin-top:10px;margin-bottom:10px}h4 small,h5 small,h6 small{font-size:75%}h1{font-size:26px}h2{font-size:20px}h3{font-size:16px}h4{font-size:14px}h5{font-size:13px}h6{font-size:12px}.btn{display:inline-block;padding:5px 12px;margin-bottom:0;font-size:13px;font-weight:400;line-height:1.53846154;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;border-radius:4px;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:focus,.btn:hover{color:#353535;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn{color:#353535;text-shadow:0 1px 0 #fff;background-color:#f2f2f2;border-color:#bfbfbf}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#353535;background-color:#dedede;border-color:#a1a1a1;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#ccc;background-image:none;border-color:#a6a6a6;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#f2f2f2;border-color:#bfbfbf}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.2);background-color:#3280fc;border-color:#1970fc}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#0a67fb;border-color:#0354d4;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#0358de;background-image:none;border-color:#0358de;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#3280fc;border-color:#1970fc}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.2);background-color:#f1a325;border-color:#ed980f}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#df8f0e;border-color:#b4730c;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#bd7a0c;background-image:none;border-color:#bd7a0c;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f1a325;border-color:#ed980f}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.2);background-color:#ea644a;border-color:#e75033}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#e64525;border-color:#c63317;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#cf3618;background-image:none;border-color:#cf3618;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#ea644a;border-color:#e75033}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.2);background-color:#38b03f;border-color:#329d38}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#2e9134;border-color:#236e27;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#26762a;background-image:none;border-color:#26762a;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#38b03f;border-color:#329d38}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.2);background-color:#03b8cf;border-color:#03a2b6}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#fff;background-color:#0294a7;border-color:#026c7a;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#027584;background-image:none;border-color:#027584;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#03b8cf;border-color:#03a2b6}.btn-link{font-weight:400;color:#145ccd;text-shadow:none;cursor:pointer;background:0 0;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover,.btn-link[disabled],fieldset[disabled] .btn-link{border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:focus,.btn-link:hover{color:#0d3d88}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#ddd;text-decoration:none}.btn-lg{padding:10px 16px;font-size:17px;line-height:1.25;border-radius:4px}.btn-mini,.btn-sm,.btn-xs{padding:2px 8px;font-size:12px;line-height:1.5;border-radius:4px}.btn-mini,.btn-xs{padding:1px 5px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #e5e5e5}hr.divider-sm{margin-top:10px;margin-bottom:10px}hr.divider{margin:0}.label{display:inline;padding:.2em .6em .2em;font-size:75%;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:grey;border-radius:.25em}.label[href]:focus,.label[href]:hover{color:#fff;background-color:#666}.label.label-circle{color:grey;background:0 0;border:1px solid grey}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.label-badge{display:inline-block;min-width:18px;padding:3px 7px;font-size:12px;line-height:1;border-radius:9px}.label-dot{display:inline-block;width:10px;height:10px;padding:0;line-height:13px;text-indent:-9999em;border-radius:5px}.label-dot:empty{display:inline-block}.label-primary{background-color:#3280fc}.label-primary[href]:focus,.label-primary[href]:hover{color:#fff;background-color:#0462f7}.label-primary.label-circle{color:#3280fc;background:0 0;border:1px solid #3280fc}.label-success{background-color:#38b03f}.label-success[href]:focus,.label-success[href]:hover{color:#fff;background-color:#2c8931}.label-success.label-circle{color:#38b03f;background:0 0;border:1px solid #38b03f}.label-info{background-color:#03b8cf}.label-info[href]:focus,.label-info[href]:hover{color:#fff;background-color:#028b9d}.label-info.label-circle{color:#03b8cf;background:0 0;border:1px solid #03b8cf}.label-warning{background-color:#f1a325}.label-warning[href]:focus,.label-warning[href]:hover{color:#fff;background-color:#d5890e}.label-warning.label-circle{color:#f1a325;background:0 0;border:1px solid #f1a325}.label-danger{background-color:#ea644a}.label-danger[href]:focus,.label-danger[href]:hover{color:#fff;background-color:#e53d1c}.label-danger.label-circle{color:#ea644a;background:0 0;border:1px solid #ea644a}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:grey}@font-face{font-family:ZenIcon;font-style:normal;font-weight:400;src:url(../fonts/zenicon.eot?v=2.2.0);src:url(../fonts/zenicon.eot?#iefix&v=2.2.0) format('embedded-opentype'),url(../fonts/zenicon.woff?v=2.2.0) format('woff'),url(../fonts/zenicon.ttf?v=2.2.0) format('truetype'),url(../fonts/zenicon.svg#regular?v=2.2.0) format('svg')}.icon,[class*=" icon-"],[class^=icon-]{font-family:ZenIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-transform:none;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon:before{display:inline-block;min-width:14px;text-align:center}a .icon,a [class*=" icon-"],a [class^=icon-]{display:inline}.icon-lg:before{font-size:1.33333333em;vertical-align:-10%}.icon-2x{font-size:28px}.icon-3x{font-size:42px}.icon-4x{font-size:56px}.icon-5x{font-size:70px}.icon-spin{display:inline-block;-webkit-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}a .icon-spin{display:inline-block;text-decoration:none}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0);transform:rotate(0)}100%{-o-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spin{0%{-webkit-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);-o-transform:rotate(359deg);transform:rotate(359deg)}}.icon-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.icon-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.icon-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.icon-flip-horizontal{-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);-o-transform:scale(-1,1);transform:scale(-1,1)}.icon-flip-vertical{-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);-o-transform:scale(1,-1);transform:scale(1,-1)}.icon.icon-flip-horizontal,.icon.icon-flip-vertical,.icon.icon-rotate-180,.icon.icon-rotate-270,.icon.icon-rotate-90{display:inline-block}.icon-resize:before{content:'\e667'}.icon-expand-full:before{content:'\e6a3'}.icon-arrows-alt:before{content:'\e6a3'}.icon-fullscreen:before{content:'\e6a3'}.icon-collapse-full:before{content:'\e682'}.icon-yinyang:before{content:'\e687'}.icon-taiji:before{content:'\e687'}.icon-window:before{content:'\e68e'}.icon-window-alt:before{content:'\e68f'}.icon-carousel:before{content:'\e6b0'}.icon-spinner-snake:before{content:'\e97b'}.icon-spinner-indicator:before{content:'\e97c'}.icon-check-board:before{content:'\e9b8'}.icon-bar-chart:before{content:'\f080'}.icon-bar-chart-o:before{content:'\f080'}.icon-github:before{content:'\f09b'}.icon-dot-circle:before{content:'\f192'}.icon-dot-circle-o:before{content:'\f192'}.icon-cube-alt:before{content:'\f1b2'}.icon-cubes:before{content:'\f1b3'}.icon-file-pdf:before{content:'\f1c1'}.icon-file-word:before{content:'\f1c2'}.icon-file-excel:before{content:'\f1c3'}.icon-file-powerpoint:before{content:'\f1c4'}.icon-file-image:before{content:'\f1c5'}.icon-file-photo:before{content:'\f1c5'}.icon-file-picture:before{content:'\f1c5'}.icon-file-archive:before{content:'\f1c6'}.icon-file-zip:before{content:'\f1c6'}.icon-file-audio:before{content:'\f1c7'}.icon-file-sound:before{content:'\f1c7'}.icon-file-movie:before{content:'\f1c8'}.icon-file-video:before{content:'\f1c8'}.icon-file-code:before{content:'\f1c9'}.icon-circle-o-notch:before{content:'\f1ce'}.icon-chanzhi:before{content:'\e906'}.icon-chanzhi-pro:before{content:'\e905'}.icon-zsite:before{content:'\e904'}.icon-zsite-pro:before{content:'\e903'}.icon-qq:before{content:'\f600'}.icon-wechat:before{content:'\f1d7'}.icon-weixin:before{content:'\f1d7'}.icon-history:before{content:'\f1da'}.icon-circle-thin:before{content:'\f1db'}.icon-sliders:before{content:'\f1de'}.icon-newspaper-o:before{content:'\f1ea'}.icon-calculator:before{content:'\f1ec'}.icon-paint-brush:before{content:'\f1fc'}.icon-area-chart:before{content:'\f1fe'}.icon-pie-chart:before{content:'\f200'}.icon-line-chart:before{content:'\f201'}.icon-toggle-off:before{content:'\f204'}.icon-toggle-on:before{content:'\f205'}.icon-diamond:before{content:'\f219'}.icon-venus:before{content:'\f221'}.icon-mars:before{content:'\f222'}.icon-server:before{content:'\f233'}.icon-music:before{content:'\e602'}.icon-search:before{content:'\e603'}.icon-envelope:before{content:'\e604'}.icon-heart:before{content:'\e605'}.icon-star:before{content:'\e606'}.icon-star-empty:before{content:'\e607'}.icon-user:before{content:'\e608'}.icon-film:before{content:'\e609'}.icon-th-large:before{content:'\e60a'}.icon-th:before{content:'\e60b'}.icon-th-list:before{content:'\e60c'}.icon-ok:before{content:'\e60d'}.icon-check:before{content:'\e60d'}.icon-remove:before{content:'\d7'}.icon-times:before{content:'\d7'}.icon-zoom-in:before{content:'\e60f'}.icon-zoom-out:before{content:'\e610'}.icon-off:before{content:'\e611'}.icon-cog:before{content:'\e613'}.icon-trash:before{content:'\e614'}.icon-home:before{content:'\e615'}.icon-file-o:before{content:'\e616'}.icon-file-alt:before{content:'\e616'}.icon-time:before{content:'\e617'}.icon-download-alt:before{content:'\e618'}.icon-download:before{content:'\e619'}.icon-upload:before{content:'\e61a'}.icon-inbox:before{content:'\e61b'}.icon-play-circle:before{content:'\e61c'}.icon-repeat:before{content:'\e61d'}.icon-refresh:before{content:'\e61e'}.icon-list-alt:before{content:'\e61f'}.icon-lock:before{content:'\e620'}.icon-flag:before{content:'\e621'}.icon-headphones:before{content:'\e622'}.icon-volume-off:before{content:'\e623'}.icon-volume-up:before{content:'\e625'}.icon-qrcode:before{content:'\e626'}.icon-barcode:before{content:'\e627'}.icon-tag:before{content:'\e628'}.icon-tags:before{content:'\e629'}.icon-book:before{content:'\e62a'}.icon-bookmark:before{content:'\e62b'}.icon-print:before{content:'\e62c'}.icon-camera:before{content:'\e62d'}.icon-font:before{content:'\e62e'}.icon-bold:before{content:'\e62f'}.icon-italic:before{content:'\f033'}.icon-header:before{content:'\f1dc'}.icon-underline:before{content:'\f0cd'}.icon-strikethrough:before{content:'\f0cc'}.icon-eraser:before{content:'\f12d'}.icon-align-justify:before{content:'\e636'}.icon-list:before{content:'\e637'}.icon-picture:before{content:'\e63b'}.icon-pencil:before{content:'\e63c'}.icon-map-marker:before{content:'\e63d'}.icon-adjust:before{content:'\e63e'}.icon-tint:before{content:'\e63f'}.icon-edit:before{content:'\e640'}.icon-share:before{content:'\e641'}.icon-checked:before{content:'\e642'}.icon-move:before{content:'\e643'}.icon-arrows:before{content:'\e643'}.icon-step-backward:before{content:'\e644'}.icon-fast-backward:before{content:'\e645'}.icon-backward:before{content:'\e646'}.icon-play:before{content:'\e647'}.icon-pause:before{content:'\e648'}.icon-stop:before{content:'\e649'}.icon-forward:before{content:'\e64a'}.icon-fast-forward:before{content:'\e64b'}.icon-step-forward:before{content:'\e64c'}.icon-eject:before{content:'\e64d'}.icon-chevron-left:before{content:'\e64e'}.icon-chevron-right:before{content:'\e64f'}.icon-plus-sign:before{content:'\e650'}.icon-minus-sign:before{content:'\e651'}.icon-remove-sign:before{content:'\e652'}.icon-ok-sign:before{content:'\e653'}.icon-check-circle:before{content:'\e653'}.icon-question-sign:before{content:'\e654'}.icon-info-sign:before{content:'\e655'}.icon-remove-circle:before{content:'\e657'}.icon-ok-circle:before{content:'\e658'}.icon-check-circle-o:before{content:'\e658'}.icon-ban-circle:before{content:'\e659'}.icon-arrow-left:before{content:'\e65a'}.icon-arrow-right:before{content:'\e65b'}.icon-arrow-up:before{content:'\e65c'}.icon-arrow-down:before{content:'\e65d'}.icon-share-alt:before{content:'\e65e'}.icon-resize-full:before{content:'\e65f'}.icon-resize-small:before{content:'\e660'}.icon-plus:before{content:'\e661'}.icon-minus:before{content:'\e662'}.icon-asterisk:before{content:'\e663'}.icon-exclamation-sign:before{content:'\e664'}.icon-gift:before{content:'\e665'}.icon-leaf:before{content:'\e666'}.icon-eye-open:before{content:'\e668'}.icon-eye-close:before{content:'\e669'}.icon-warning-sign:before{content:'\e66a'}.icon-plane:before{content:'\e66b'}.icon-calendar:before{content:'\e66c'}.icon-random:before{content:'\e66d'}.icon-comment:before{content:'\e66e'}.icon-chevron-up:before{content:'\e670'}.icon-chevron-down:before{content:'\e671'}.icon-shopping-cart:before{content:'\e673'}.icon-folder-close:before{content:'\e674'}.icon-folder-open:before{content:'\e675'}.icon-resize-v:before{content:'\e676'}.icon-resize-h:before{content:'\e677'}.icon-bar-chart-alt:before{content:'\e678'}.icon-camera-retro:before{content:'\e679'}.icon-key:before{content:'\e67a'}.icon-cogs:before{content:'\e67b'}.icon-comments:before{content:'\e67c'}.icon-thumbs-o-up:before{content:'\e67d'}.icon-thumbs-o-down:before{content:'\e67e'}.icon-star-half:before{content:'\e67f'}.icon-heart-empty:before{content:'\e680'}.icon-signout:before{content:'\e681'}.icon-pushpin:before{content:'\e683'}.icon-external-link:before{content:'\e684'}.icon-signin:before{content:'\e685'}.icon-trophy:before{content:'\e686'}.icon-upload-alt:before{content:'\e688'}.icon-lemon:before{content:'\e689'}.icon-phone:before{content:'\e68a'}.icon-check-empty:before{content:'\e68b'}.icon-bookmark-empty:before{content:'\e68c'}.icon-phone-sign:before{content:'\e68d'}.icon-credit:before{content:'\e690'}.icon-rss:before{content:'\e691'}.icon-hdd:before{content:'\e692'}.icon-bullhorn:before{content:'\e693'}.icon-bell:before{content:'\e694'}.icon-certificate:before{content:'\e695'}.icon-hand-right:before{content:'\e696'}.icon-hand-left:before{content:'\e697'}.icon-hand-up:before{content:'\e698'}.icon-hand-down:before{content:'\e699'}.icon-circle-arrow-left:before{content:'\e69a'}.icon-circle-arrow-right:before{content:'\e69b'}.icon-circle-arrow-up:before{content:'\e69c'}.icon-circle-arrow-down:before{content:'\e69d'}.icon-globe:before{content:'\e69e'}.icon-wrench:before{content:'\e69f'}.icon-tasks:before{content:'\e6a0'}.icon-filter:before{content:'\e6a1'}.icon-group:before{content:'\e6a4'}.icon-link:before{content:'\e6a5'}.icon-cloud:before{content:'\e6a6'}.icon-beaker:before{content:'\e6a7'}.icon-cut:before{content:'\e6a8'}.icon-copy:before{content:'\e6a9'}.icon-paper-clip:before{content:'\e6aa'}.icon-save:before{content:'\e6ab'}.icon-sign-blank:before{content:'\e6ac'}.icon-bars:before{content:'\e6ad'}.icon-reorder:before{content:'\e6ad'}.icon-list-ul:before{content:'\e6ae'}.icon-list-ol:before{content:'\e6af'}.icon-table:before{content:'\e6b2'}.icon-magic:before{content:'\e6b3'}.icon-caret-down:before{content:'\e6b8'}.icon-caret-up:before{content:'\e6b9'}.icon-caret-left:before{content:'\e6ba'}.icon-caret-right:before{content:'\e6bb'}.icon-columns:before{content:'\e6bc'}.icon-sort:before{content:'\e6bd'}.icon-sort-down:before{content:'\e6be'}.icon-sort-up:before{content:'\e6bf'}.icon-envelope-alt:before{content:'\e6c0'}.icon-undo:before{content:'\e6c1'}.icon-dashboard:before{content:'\e6c3'}.icon-comment-alt:before{content:'\e6c4'}.icon-comments-alt:before{content:'\e6c5'}.icon-bolt:before{content:'\e6c6'}.icon-sitemap:before{content:'\e6c7'}.icon-umbrella:before{content:'\e6c8'}.icon-paste:before{content:'\e6c9'}.icon-lightbulb:before{content:'\e6ca'}.icon-exchange:before{content:'\e6cb'}.icon-cloud-download:before{content:'\e6cc'}.icon-cloud-upload:before{content:'\e6cd'}.icon-bell-alt:before{content:'\e6d1'}.icon-coffee:before{content:'\e6d2'}.icon-file-text-o:before{content:'\e6d4'}.icon-file-text-alt:before{content:'\e6d4'}.icon-building:before{content:'\e6d5'}.icon-double-angle-left:before{content:'\e6dc'}.icon-double-angle-right:before{content:'\e6dd'}.icon-double-angle-up:before{content:'\e6de'}.icon-double-angle-down:before{content:'\e6df'}.icon-angle-left:before{content:'\e6e0'}.icon-angle-right:before{content:'\e6e1'}.icon-angle-up:before{content:'\e6e2'}.icon-angle-down:before{content:'\e6e3'}.icon-desktop:before{content:'\e6e4'}.icon-laptop:before{content:'\e6e5'}.icon-tablet:before{content:'\e6e6'}.icon-mobile:before{content:'\e6e7'}.icon-circle-blank:before{content:'\e6e8'}.icon-quote-left:before{content:'\e6e9'}.icon-quote-right:before{content:'\e6ea'}.icon-spinner:before{content:'\e6eb'}.icon-circle:before{content:'\e6ec'}.icon-reply:before{content:'\e6ed'}.icon-folder-close-alt:before{content:'\e6ef'}.icon-folder-open-alt:before{content:'\e6f0'}.icon-expand-alt:before{content:'\e6f1'}.icon-collapse-alt:before{content:'\e6f2'}.icon-smile:before{content:'\e6f3'}.icon-frown:before{content:'\e6f4'}.icon-meh:before{content:'\e6f5'}.icon-gamepad:before{content:'\e6f6'}.icon-keyboard:before{content:'\e6f7'}.icon-flag-alt:before{content:'\e6f8'}.icon-flag-checkered:before{content:'\e6f9'}.icon-terminal:before{content:'\e6fa'}.icon-code:before{content:'\e6fb'}.icon-reply-all:before{content:'\e6fc'}.icon-star-half-full:before{content:'\e6fd'}.icon-location-arrow:before{content:'\e6fe'}.icon-crop:before{content:'\e6ff'}.icon-code-fork:before{content:'\e700'}.icon-unlink:before{content:'\e701'}.icon-question:before{content:'\e702'}.icon-info:before{content:'\e703'}.icon-shield:before{content:'\e70b'}.icon-calendar-empty:before{content:'\e70c'}.icon-rocket:before{content:'\e70e'}.icon-chevron-sign-left:before{content:'\e70f'}.icon-chevron-sign-right:before{content:'\e710'}.icon-chevron-sign-up:before{content:'\e711'}.icon-chevron-sign-down:before{content:'\e712'}.icon-html5:before{content:'\e713'}.icon-anchor:before{content:'\e714'}.icon-unlock-alt:before{content:'\e715'}.icon-bullseye:before{content:'\e716'}.icon-ellipsis-h:before{content:'\e717'}.icon-ellipsis-v:before{content:'\e718'}.icon-rss-sign:before{content:'\e719'}.icon-play-sign:before{content:'\e71a'}.icon-minus-sign-alt:before{content:'\e71c'}.icon-plus-sign-alt:before{content:'\f0fe'}.icon-check-minus:before{content:'\e71d'}.icon-check-plus:before{content:'\f196'}.icon-level-up:before{content:'\e71e'}.icon-level-down:before{content:'\e71f'}.icon-check-sign:before{content:'\e720'}.icon-edit-sign:before{content:'\e721'}.icon-external-link-sign:before{content:'\e722'}.icon-share-sign:before{content:'\e723'}.icon-compass:before{content:'\e724'}.icon-collapse:before{content:'\e725'}.icon-collapse-top:before{content:'\e726'}.icon-expand:before{content:'\e727'}.icon-dollar:before{content:'\e728'}.icon-yen:before{content:'\e729'}.icon-file:before{content:'\e72b'}.icon-file-text:before{content:'\e72c'}.icon-sort-by-alphabet:before{content:'\e72d'}.icon-sort-by-alphabet-alt:before{content:'\e72e'}.icon-sort-by-attributes:before{content:'\e72f'}.icon-sort-by-attributes-alt:before{content:'\e730'}.icon-sort-by-order:before{content:'\e731'}.icon-sort-by-order-alt:before{content:'\e732'}.icon-thumbs-up:before{content:'\e733'}.icon-thumbs-down:before{content:'\e734'}.icon-long-arrow-down:before{content:'\e736'}.icon-long-arrow-up:before{content:'\e737'}.icon-long-arrow-left:before{content:'\e738'}.icon-long-arrow-right:before{content:'\e739'}.icon-apple:before{content:'\e73a'}.icon-windows:before{content:'\e73b'}.icon-android:before{content:'\e73c'}.icon-linux:before{content:'\e73d'}.icon-sun:before{content:'\e742'}.icon-moon:before{content:'\e743'}.icon-archive:before{content:'\e744'}.icon-bug:before{content:'\e745'}.icon-alipay:before,.icon-zhifubao:before{content:'\e901'}.icon-alipay-square:before,.icon-zhifubao-square:before{content:'\e900'}.icon-taobao:before{content:'\e902'}.icon-weibo:before{content:'\e746'}.icon-renren:before{content:'\e747'}.icon-chrome:before{content:'\e76c'}.icon-firefox:before{content:'\e76d'}.icon-ie:before{content:'\e76e'}.icon-opera:before{content:'\e76f'}.icon-safari:before{content:'\e770'}.icon-node:before{content:'\e76a'}.icon-layout:before{content:'\e768'}.icon-usecase:before{content:'\e74a'}.icon-stack:before{content:'\e769'}.icon-branch:before{content:'\e74b'}.icon-chat:before{content:'\e74c'}.icon-chat-line:before{content:'\e74f'}.icon-comment-line:before{content:'\e74f'}.icon-chat-dot:before{content:'\e750'}.icon-cube:before{content:'\e751'}.icon-database:before{content:'\f1c0'}.icon-align-left:before{content:'\e633'}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:19.5px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:5px 0 0;margin-top:0\9;line-height:normal}input[type=file]{display:block}select[multiple],select[size]{height:auto}select:-moz-focusring{color:transparent;text-shadow:0 0 0 #000}select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}.form-control::-webkit-input-placeholder{color:grey}.form-control::-moz-placeholder{color:grey}.form-control:-ms-input-placeholder{color:grey}.form-control::placeholder{color:grey}.form-control{display:block;width:100%;height:32px;padding:5px 8px;font-size:13px;line-height:1.53846154;color:#222;vertical-align:middle;background-color:#fff;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s}.form-control.focus,.form-control:focus{border-color:#145ccd;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(20,92,205,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(20,92,205,.6)}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#e5e5e5}.form-control[readonly]{cursor:default}textarea.form-control{height:auto}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:3px;margin-top:4px\9;margin-left:-20px}.os-android .checkbox input[type=checkbox],.os-android .checkbox-inline input[type=checkbox],.os-android .radio input[type=radio],.os-android .radio-inline input[type=radio]{margin-top:0}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.input-sm{height:24px;padding:2px 8px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:24px;line-height:24px}textarea.input-sm{height:auto}.input-lg{height:43px;padding:10px 16px;font-size:17px;line-height:1.25;border-radius:6px}select.input-lg{height:43px;line-height:43px}textarea.input-lg{height:auto}.has-warning .help-block,.has-warning>label{color:#f1a325}.has-warning .form-control{border-color:#f1a325;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#d5890e;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #f7cb85;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #f7cb85}.has-warning .input-group-addon{color:#f1a325;background-color:#fff0d5;border-color:#f1a325}.has-error .help-block,.has-error>label{color:#ea644a}.has-error .form-control{border-color:#ea644a;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#e53d1c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #f5b2a5;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #f5b2a5}.has-error .input-group-addon{color:#ea644a;background-color:#ffe5e0;border-color:#ea644a}.has-success .help-block,.has-success>label{color:#38b03f}.has-success .form-control{border-color:#38b03f;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2c8931;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #79d57f;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #79d57f}.has-success .input-group-addon{color:#38b03f;background-color:#ddf4df;border-color:#38b03f}.form-control-static{min-height:33px;padding-top:6px;padding-bottom:6px;margin-bottom:0}.help-block{display:block;margin:5px 0;color:#757575}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{float:none;margin-left:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .form-group>label,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:6px;margin-top:0;margin-bottom:0}.form-horizontal .form-group{margin-right:-10px;margin-left:-10px}@media (min-width:768px){.form-horizontal .form-group>label{text-align:right}}.required{position:relative}.required:after{position:absolute;top:0;right:-10px;display:inline-block;font-size:17px;color:#ea644a;content:'*'}.form-horizontal .required:after{top:5px;right:-1px}.close{float:right;font-size:19.5px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}table{max-width:100%;background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:grey;text-align:left}th{text-align:left}.table{width:100%;margin-bottom:20px}.table td,.table th{padding:8px;line-height:1.53846154;vertical-align:top;border-bottom:1px solid #ddd;-webkit-transition:background .2s cubic-bezier(.175,.885,.32,1);-o-transition:background .2s cubic-bezier(.175,.885,.32,1);transition:background .2s cubic-bezier(.175,.885,.32,1)}.table>thead>tr>th{vertical-align:bottom;background-color:#f1f1f1;border-bottom:1px solid #ddd}.table>tbody+tbody{border-top:2px solid #ddd}.table-fixed{table-layout:fixed}.table-fixed td,.table-fixed th{overflow:hidden;white-space:nowrap}.table-fixed .nofixed,.table-fixed tfoot>tr>td,.table-fixed tfoot>tr>th{overflow:visible}.table-borderless td,.table-borderless th,.table-borderless thead>tr>th{border:none}.table-auto{width:auto;max-width:100%}.table-condensed td,.table-condensed th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered td,.table-bordered th{border:1px solid #ddd}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#ebf2f9}table col[class*=col-]{display:table-column;float:none}table td[class*=col-],table th[class*=col-]{display:table-cell;float:none}.table tr.active>td,.table tr.active>th,.table tr>td.active,.table tr>th.active{background-color:#ffe7bc}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#ddf4df;border-color:#bae8b6}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#caeecd;border-color:#a8e1a3}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#ffe5e0;border-color:#ffc6c7}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ffd0c6;border-color:#ffadad}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fff0d5;border-color:#ffdcbc}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#ffe7bc;border-color:#ffcea2}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.label-badge{float:right}.list-group-item>.label-badge+.label-badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#353535;text-decoration:none;background-color:#ebf2f9}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#3280fc;border-color:#3280fc}.list-group-item.active .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#e6e6e6}.list-group-item-heading{margin-top:0;margin-bottom:5px;color:#333}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-color:#ddd;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-body{padding:15px}.panel>.table{margin-bottom:0}.panel>.panel-body+.table{border-top:1px solid #ddd}.panel-heading{padding:8px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-title{margin-top:0;margin-bottom:0;font-size:15px}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.alert{padding:15px;margin-bottom:20px;color:#282828;background-color:#f1f1f1;border-radius:3px;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.alert hr{border-top-color:#e4e4e4}.alert .alert-link{color:#161616}.alert h4{margin-top:0;color:inherit}.alert hr{margin:10px 0}.alert p,.alert ul{margin-bottom:0}.alert p+p{margin-top:5px}.alert-link{font-weight:700}.alert>[class*=icon-]{float:left;margin-top:-5px;font-size:42px;opacity:.6;-webkit-transition:opacity .2s cubic-bezier(.175,.885,.32,1);-o-transition:opacity .2s cubic-bezier(.175,.885,.32,1);transition:opacity .2s cubic-bezier(.175,.885,.32,1)}.alert>[class*=icon-]+.content{min-height:30px;margin-left:64px}.alert.with-icon{display:table;width:100%}.alert.with-icon>[class*=icon-],.alert.with-icon>[class*=icon-]+.content{display:table-cell;float:none;min-height:0;margin:0;vertical-align:middle}.alert.with-icon>[class*=icon-]{width:48px;text-align:center}.alert.with-icon>[class*=icon-]+.content{padding-left:1em}.alert-block{margin:0;border-radius:0}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-6px;right:-21px;color:inherit}.alert-primary{color:#282828;background-color:#ebf2f9}.alert-primary hr{border-top-color:#d0e0f1}.alert-primary .alert-link{color:#161616}.alert-success{color:#329d38;background-color:#ddf4df}.alert-success hr{border-top-color:#bae8b6}.alert-success .alert-link{color:#29822e}.alert-info{color:#03a2b6;background-color:#ddf3f5}.alert-info hr{border-top-color:#a2e4de}.alert-info .alert-link{color:#028293}.alert-warning{color:#ed980f;background-color:#fff0d5}.alert-warning hr{border-top-color:#ffdcbc}.alert-warning .alert-link{color:#cc830d}.alert-danger{color:#e75033;background-color:#ffe5e0}.alert-danger hr{border-top-color:#ffc6c7}.alert-danger .alert-link{color:#dd391a}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:5px 12px;font-size:13px;font-weight:400;line-height:1;color:#222;text-align:center;background-color:#e5e5e5;border:1px solid #ccc;border-radius:4px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group-addon.fix-border{border-right:0;border-left:0}.input-group-addon:empty{width:1px;padding:0}.input-group-addon.fix-padding{width:1px;padding:0}.input-group-btn.fix-border>.btn{border-right:0;border-left:0;border-radius:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:first-child{border-right:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:43px;padding:10px 16px;font-size:17px;line-height:1.25;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:43px;line-height:43px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:24px;padding:2px 8px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:24px;line-height:24px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon.input-sm{padding:2px 8px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:17px;border-radius:6px}.code,code,kbd,pre,samp{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}code,kbd{padding:2px 4px;font-size:90%;color:#37474f;background-color:#f3f5f7;border-radius:4px}kbd{padding:1px 4px;font-weight:700;color:#666;background-color:#f1f1f1;border:1px solid #d7d7d7;border-bottom-width:2px}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:12px;line-height:1.38461538;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;margin:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.com{color:#93a1a1}.lit{color:#195f91}.clo,.opn,.pun{color:#93a1a1}.fun{color:#dc322f}.atv,.str{color:#d14}.kwd,.prettyprint .tag{color:#1e347b}.atn,.dec,.typ,.var{color:teal}.pln{color:#48484c}.prettyprint.linenums{-webkit-box-shadow:inset 40px 0 0 #fbfbfc,inset 41px 0 0 #ececf0;box-shadow:inset 40px 0 0 #fbfbfc,inset 41px 0 0 #ececf0}.prettyprint ol.linenums{padding-left:35px;margin-bottom:0;line-height:20px;color:#bebec5;text-shadow:0 1px 0 #fff}.pager{display:inline-block;padding-left:0;margin:20px 0;list-style:none}.pager>li{display:inline}.pager>li>a,.pager>li>span{position:relative;float:left;padding:5px 12px;margin-left:-1px;line-height:1.53846154;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pager>li:first-child>a,.pager>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pager>li:last-child>a,.pager>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pager>li>a:focus,.pager>li>a:hover,.pager>li>span:focus,.pager>li>span:hover{z-index:2;background-color:#e5e5e5}.pager>li.active>a,.pager>li.active>a:hover,.pager>li.active>span,.pager>li.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#3280fc;border-color:#3280fc}.pager>li.disabled>a,.pager>li.disabled>a:focus,.pager>li.disabled>a:hover,.pager>li.disabled>span,.pager>li.disabled>span:focus,.pager>li.disabled>span:hover{color:#ddd;pointer-events:none;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pager-justify{display:block}.pager-justify .next>a,.pager-justify .next>span{float:right;border-radius:4px}.pager-justify .previous>a,.pager-justify .previous>span{float:left;border-radius:4px}.pager-goto{width:100px;text-align:center}.pager>li>div{float:left}.pager>li .pager-goto,.pager>li .pager-size-menu,.pager>li.space{margin:0 5px}.pager-label{position:relative;float:left;padding:5px 4px;margin-left:-1px;line-height:1.53846154;text-decoration:none;border:1px solid transparent}.pager-item-left>a{border-top-left-radius:4px;border-bottom-left-radius:4px}.pager-item-right>a{border-top-right-radius:4px;border-bottom-right-radius:4px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>.nav-heading{padding:8px 15px;font-weight:700;color:grey}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:8px 15px;color:#353535}.nav>li>a:focus,.nav>li>a:hover{color:#0d3d88;text-decoration:none;background-color:#f1f1f1}.nav>li.disabled>a{color:#ddd}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#ddd;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#f1f1f1;border-color:#145ccd}.nav>li>a>img{max-width:none}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:20px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#3280fc}.nav-primary>li{float:left;margin-left:-1px}.nav-primary>li:first-child>a{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.nav-primary>li:last-child>a{border-top-right-radius:4px;border-bottom-right-radius:4px}.nav-primary>li>a{border:1px solid #ddd}.nav-primary>li.active>a,.nav-primary>li.active>a:focus,.nav-primary>li.active>a:hover{color:#fff;background-color:#3280fc;border-color:#3280fc}.nav-secondary>li{float:left}.nav-secondary>li>a{border-bottom:2px solid #e5e5e5}.nav-secondary>li.active>a,.nav-secondary>li.active>a:focus,.nav-secondary>li.active>a:hover{color:#3280fc;border-bottom-color:#3280fc}.nav-secondary>li.nav-heading{border-bottom:2px solid #e5e5e5}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-stacked.nav-primary>li,.nav-stacked.nav-primary>li>a{margin-left:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li+li{margin-top:-1px}.nav-stacked.nav-primary>li:first-child{margin-top:0}.nav-stacked.nav-primary>li:first-child.nav-heading,.nav-stacked.nav-primary>li:first-child>a{margin-left:0;border-top-left-radius:4px;border-top-right-radius:4px}.nav-stacked.nav-primary>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.nav-stacked.nav-primary>li.nav-heading{background-color:#f1f1f1;border:1px solid #ddd}.nav-stacked.nav-secondary>li>a{border:none;border-top-right-radius:4px;border-bottom-right-radius:4px;-webkit-box-shadow:inset 2px 0 0 #f5f5f5;box-shadow:inset 2px 0 0 #f5f5f5}.nav-stacked.nav-secondary>li>a:hover{-webkit-box-shadow:inset 2px 0 0 #e5e5e5;box-shadow:inset 2px 0 0 #e5e5e5}.nav-stacked.nav-secondary>li+li{margin-top:-1px}.nav-stacked.nav-secondary>li:first-child{margin-top:0}.nav-stacked.nav-secondary>li.active>a,.nav-stacked.nav-secondary>li.active>a:focus,.nav-stacked.nav-secondary>li.active>a:hover{background-color:#f5f5f5;-webkit-box-shadow:inset 2px 0 0 #3280fc;box-shadow:inset 2px 0 0 #3280fc}.nav-stacked.nav-secondary>li.nav-heading{border-bottom:1px solid #ddd}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}.nav-justified.nav-primary>li+li>a{border-left:0}}.navbar{position:relative;min-height:40px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:10px;padding-left:10px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-10px;margin-left:-10px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:40px;padding:10px 15px;font-size:17px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-10px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:3px;margin-right:3px;margin-bottom:3px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:5px -10px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px}.navbar-nav.nav-justified>li{float:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-nav.pull-right>li>.dropdown-menu,.navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar-btn{margin-top:4px;margin-bottom:4px}.navbar-text{float:left;margin-top:10px;margin-bottom:10px}@media (min-width:768px){.navbar-text{margin-right:10px;margin-left:10px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-10px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f7f7f7;border-color:#dedede}.navbar-default .navbar-brand{color:#333}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#1a1a1a;background-color:transparent}.navbar-default .navbar-text{color:#333}.navbar-default .navbar-nav>li>a{color:#333}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#222;background-color:#e5e5e5}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:grey}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#dedede}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#333}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#222;background-color:#e5e5e5}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#333}.navbar-default .navbar-link:hover{color:#222}.navbar-default .btn-link{color:#333}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#222}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#145ccd;border-color:#10479f}.navbar-inverse .navbar-brand{color:#ddd}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#ddd}.navbar-inverse .navbar-nav>li>a{color:#ddd}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:#1868e8}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#2a74ea}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#1251b6}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#114dad}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#2a74ea}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#10479f}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#10479f}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#ddd}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:#1868e8}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#2a74ea}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#ddd}.navbar-inverse .navbar-link:hover{color:#fff}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.scale{-webkit-transition:all .15s ease;-o-transition:all .15s ease;transition:all .15s ease;-webkit-transform:scale(.8);-ms-transform:scale(.8);-o-transform:scale(.8);transform:scale(.8)}.scale.in{-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out,-o-transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal>.loader{display:none}.modal.modal-loading .modal-dialog{opacity:0}.modal.modal-loading .loader{position:absolute;top:35%;left:50%;display:block;width:80px;margin-left:-40px;font-size:56px;color:#fff;text-align:center}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-iframe .modal-body>iframe{border-radius:0 0 6px 6px}.modal-dialog{position:relative;width:auto;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-dialog.modal-moveable{position:absolute;margin:0}.modal-dialog.modal-moveable .modal-header{cursor:move}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.54px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.53846154}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto;-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.modal-fullscreen{position:relative;width:100%!important;height:100%!important;margin:0;border-radius:0}.modal-fullscreen .modal-body{position:absolute;top:52px;right:0;bottom:0;left:0;overflow-y:auto}.tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=100);opacity:1}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#353535;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#353535}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#353535}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-width:5px 5px 0;border-top-color:#353535}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#353535}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#353535}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#353535}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#353535}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#353535}.tooltip-primary .tooltip-inner{background-color:#3280fc}.tooltip-primary.tooltip.top .tooltip-arrow{border-top-color:#3280fc}.tooltip-primary.tooltip.top-left .tooltip-arrow{border-top-color:#3280fc}.tooltip-primary.tooltip.top-right .tooltip-arrow{border-top-color:#3280fc}.tooltip-primary.tooltip.right .tooltip-arrow{border-right-color:#3280fc}.tooltip-primary.tooltip.left .tooltip-arrow{border-left-color:#3280fc}.tooltip-primary.tooltip.bottom .tooltip-arrow{border-bottom-color:#3280fc}.tooltip-primary.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#3280fc}.tooltip-primary.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#3280fc}.tooltip-success .tooltip-inner{background-color:#38b03f}.tooltip-success.tooltip.top .tooltip-arrow{border-top-color:#38b03f}.tooltip-success.tooltip.top-left .tooltip-arrow{border-top-color:#38b03f}.tooltip-success.tooltip.top-right .tooltip-arrow{border-top-color:#38b03f}.tooltip-success.tooltip.right .tooltip-arrow{border-right-color:#38b03f}.tooltip-success.tooltip.left .tooltip-arrow{border-left-color:#38b03f}.tooltip-success.tooltip.bottom .tooltip-arrow{border-bottom-color:#38b03f}.tooltip-success.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#38b03f}.tooltip-success.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#38b03f}.tooltip-info .tooltip-inner{background-color:#03b8cf}.tooltip-info.tooltip.top .tooltip-arrow{border-top-color:#03b8cf}.tooltip-info.tooltip.top-left .tooltip-arrow{border-top-color:#03b8cf}.tooltip-info.tooltip.top-right .tooltip-arrow{border-top-color:#03b8cf}.tooltip-info.tooltip.right .tooltip-arrow{border-right-color:#03b8cf}.tooltip-info.tooltip.left .tooltip-arrow{border-left-color:#03b8cf}.tooltip-info.tooltip.bottom .tooltip-arrow{border-bottom-color:#03b8cf}.tooltip-info.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#03b8cf}.tooltip-info.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#03b8cf}.tooltip-warning .tooltip-inner{background-color:#f1a325}.tooltip-warning.tooltip.top .tooltip-arrow{border-top-color:#f1a325}.tooltip-warning.tooltip.top-left .tooltip-arrow{border-top-color:#f1a325}.tooltip-warning.tooltip.top-right .tooltip-arrow{border-top-color:#f1a325}.tooltip-warning.tooltip.right .tooltip-arrow{border-right-color:#f1a325}.tooltip-warning.tooltip.left .tooltip-arrow{border-left-color:#f1a325}.tooltip-warning.tooltip.bottom .tooltip-arrow{border-bottom-color:#f1a325}.tooltip-warning.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#f1a325}.tooltip-warning.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#f1a325}.tooltip-danger .tooltip-inner{background-color:#ea644a}.tooltip-danger.tooltip.top .tooltip-arrow{border-top-color:#ea644a}.tooltip-danger.tooltip.top-left .tooltip-arrow{border-top-color:#ea644a}.tooltip-danger.tooltip.top-right .tooltip-arrow{border-top-color:#ea644a}.tooltip-danger.tooltip.right .tooltip-arrow{border-right-color:#ea644a}.tooltip-danger.tooltip.left .tooltip-arrow{border-left-color:#ea644a}.tooltip-danger.tooltip.bottom .tooltip-arrow{border-bottom-color:#ea644a}.tooltip-danger.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#ea644a}.tooltip-danger.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#ea644a}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:300px;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:4px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover.no-arrow.top{margin-top:0}.popover.no-arrow.right{margin-left:0}.popover.no-arrow.bottom{margin-top:0}.popover.no-arrow.left{margin-left:0}.popover-title{padding:8px 14px;margin:0;font-size:13px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:4px 4px 0 0}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{content:"";border-width:10px}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom .arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left .arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.popover-primary{border-color:#3280fc}.popover-primary .popover-title{color:#fff;background-color:#3280fc}.popover-primary.popover.top .arrow{border-top-color:#3280fc}.popover-primary.popover.right .arrow{border-right-color:#3280fc}.popover-primary.popover.left .arrow{border-left-color:#3280fc}.popover-primary.popover.bottom .arrow,.popover-primary.popover.bottom .arrow:after{border-bottom-color:#3280fc}.popover-success{border-color:#38b03f}.popover-success .popover-title{color:#fff;background-color:#38b03f}.popover-success.popover.top .arrow{border-top-color:#38b03f}.popover-success.popover.right .arrow{border-right-color:#38b03f}.popover-success.popover.left .arrow{border-left-color:#38b03f}.popover-success.popover.bottom .arrow,.popover-success.popover.bottom .arrow:after{border-bottom-color:#38b03f}.popover-info{border-color:#03b8cf}.popover-info .popover-title{color:#fff;background-color:#03b8cf}.popover-info.popover.top .arrow{border-top-color:#03b8cf}.popover-info.popover.right .arrow{border-right-color:#03b8cf}.popover-info.popover.left .arrow{border-left-color:#03b8cf}.popover-info.popover.bottom .arrow,.popover-info.popover.bottom .arrow:after{border-bottom-color:#03b8cf}.popover-warning{border-color:#f1a325}.popover-warning .popover-title{color:#fff;background-color:#f1a325}.popover-warning.popover.top .arrow{border-top-color:#f1a325}.popover-warning.popover.right .arrow{border-right-color:#f1a325}.popover-warning.popover.left .arrow{border-left-color:#f1a325}.popover-warning.popover.bottom .arrow,.popover-warning.popover.bottom .arrow:after{border-bottom-color:#f1a325}.popover-danger{border-color:#ea644a}.popover-danger .popover-title{color:#fff;background-color:#ea644a}.popover-danger.popover.top .arrow{border-top-color:#ea644a}.popover-danger.popover.right .arrow{border-right-color:#ea644a}.popover-danger.popover.left .arrow{border-left-color:#ea644a}.popover-danger.popover.bottom .arrow,.popover-danger.popover.bottom .arrow:after{border-bottom-color:#ea644a}.caret{display:inline-block;width:0;height:0;margin-bottom:2px;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:13px;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #cbcbcb;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.53846154;color:#353535;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#fff;text-decoration:none;background-color:#3280fc}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#3280fc;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#ddd}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-hover .dropdown-menu{margin:-1px 0}.dropdown-hover:hover>.dropdown-menu,.open>.dropdown-menu{display:block}.dropdown-hover:hover>a,.open>a{outline:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;font-weight:700;line-height:1.53846154;color:grey}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0 dotted;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;border-radius:4px}.dropdown-submenu.open>.dropdown-menu,.dropdown-submenu:hover>.dropdown-menu{display:block}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;border-radius:4px}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;content:" ";border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#ccc}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu>a{min-width:160px}.dropdown-submenu>.dropdown-menu.pull-left{left:-100%}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{color:#fff;text-decoration:none;background-color:#3280fc}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:10%;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=40);outline:0;opacity:.4}.carousel-control>.icon{font-size:20px}.carousel-control.left{background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.3)),to(rgba(0,0,0,.0001)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.3) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.3) 0,rgba(0,0,0,.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.3) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4d000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.3)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.3) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.3) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.3) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#4d000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=100);outline:0;opacity:1}.carousel-control .icon-chevron-left,.carousel-control .icon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-chevron-left,.carousel-control .icon-prev{left:50%}.carousel-control .icon-chevron-right,.carousel-control .icon-next{right:50%}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .icon-next,.carousel-control .icon-prev{top:40%;width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:80px}.carousel-control .icon-prev{left:30%}.carousel-control .icon-next{right:25%}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.bg-black,.bg-default{color:#fff;background-color:#353535}.bg-primary{color:#fff;background-color:#3280fc}.bg-green,.bg-success{color:#fff;background-color:#38b03f}.bg-blue,.bg-info{color:#fff;background-color:#03b8cf}.bg-warning,.bg-yellow{color:#fff;background-color:#f1a325}.bg-danger,.bg-red{color:#fff;background-color:#ea644a}.bg-brown,.bg-important{color:#fff;background-color:#bd7b46}.bg-purple,.bg-special{color:#fff;background-color:#8666b8}.hl-default,.hl-gray{background-color:#f1f1f1}.hl-primary{background-color:#ebf2f9}.hl-green,.hl-success{background-color:#ddf4df}.hl-blue,.hl-info{background-color:#ddf3f5}.hl-warning,.hl-yellow{background-color:#fff0d5}.hl-danger,.hl-red{background-color:#ffe5e0}.hl-brown,.hl-important{background-color:#f7ebe1}.hl-purple,.hl-special{background-color:#f5eeff}.article{padding:20px}.article>header h1,.article>header h2,.article>header h3{margin-bottom:20px;line-height:1.5}.article>header>.abstract,.article>header>dl{padding:10px 15px;font-size:12px;color:#686868;background-color:#f1f1f1}.article>header>.abstract>p:last-child,.article>header>dl>p:last-child{margin-bottom:0}.article>header>dl{margin:0;border-bottom:1px solid #e9e9e9}.article>header>dl.pull-right{background-color:transparent;border:none}.article>footer{border-top:1px dashed #d7d7d7}.article>footer>p{padding:10px 15px}.article-content,.article>.content{padding:20px 0;font-size:14px;line-height:1.78571429}.article-content h1,.article>.content h1{font-size:20px}.article-content h2,.article>.content h2{font-size:18px}.article-content h3,.article>.content h3{font-size:16px}.article-content h4,.article>.content h4{margin-top:15px;font-size:14px}.article-content h5,.article>.content h5{margin-top:15px;font-size:13px}.article-content h6,.article>.content h6{margin-top:15px;font-size:11px}.article-content img,.article>.content img{margin:10px 0}.article-content p>img,.article>.content p>img{margin-right:10px}.article-content p>img[align=right],.article>.content p>img[align=right]{margin-left:10px}.article-content dl,.article>.content dl{padding-right:2em;padding-left:2em}.article-content table,.article>.content table{margin-bottom:20px}.article-content table td,.article-content table th,.article>.content table td,.article>.content table th{padding:8px;line-height:1.53846154;vertical-align:top;border-bottom:1px solid #ddd}.article-content table>thead>tr>th,.article>.content table>thead>tr>th{vertical-align:bottom;background-color:#f1f1f1;border-bottom:1px solid #ddd}.article-content p{margin-bottom:0}.article-content table{width:100%}.article>.content table td,.article>.content table th,.article>.content table>thead>tr>th{border:1px solid #ddd}body.article-content{padding:8px}.article-condensed{padding:20px 0}.article-condensed>header{padding:0 20px}.article-condensed>header>.abstract,.article-condensed>header>dl{padding:10px 15px;margin:0 -20px}.article-condensed>.article-content,.article-condensed>.content{padding:20px}.article-condensed>.article-content>img,.article-condensed>.article-content>pre,.article-condensed>.content>img,.article-condensed>.content>pre{margin-right:-20px;margin-left:-20px;border-radius:0}.article-condensed>.article-content>pre,.article-condensed>.content>pre{border-right:none;border-left:none}.article-condensed>footer{border-top:1px dashed #d7d7d7}.article-condensed>footer>p{padding:10px 15px}.article-condensed>footer>.pager-justify>.previous>a{border-left:none;border-radius:0}.article-condensed>footer>.pager-justify>.next>a{border-right:none;border-radius:0}.comments>header{border-bottom:1px solid #e5e5e5}.comments>header>.alert{padding:7.5px 15px;margin-bottom:-10px}.comments>header h1,.comments>header h2,.comments>header h3{padding:10px 0;margin:10px 0}.comments>footer{padding-top:10px}.comments>footer>.reply-form>.avatar{display:block;float:left;width:40px;height:40px;margin-top:10px}.comments>footer>.reply-form>.avatar+.form{padding-left:50px}.comment{padding:10px 0;border-bottom:1px solid #e5e5e5}.comment:after,.comment:before{display:table;content:" "}.comment:after{clear:both}.comment:after,.comment:before{display:table;content:" "}.comment:after{clear:both}.comment>.avatar,.comment>.content{display:block}.comment>.avatar{float:left;width:40px;height:40px;margin-top:10px}.comment>.avatar+.content{padding-left:50px}.comment>.content>.text{margin-top:5px}.comment>.content>.actions{margin-top:4px}.comment>.content>.actions>a{display:inline-block;color:grey}.comment>.content>.actions>a+a{margin-left:5px}.comment:hover>.content>.actions>a{color:#145ccd}.comment>.comments-list{padding-top:10px;padding-bottom:0;padding-left:30px;margin-left:20px;border-left:1px dashed #e5e5e5}.comment>.comments-list>.comment{border:none;border-top:1px solid #e5e5e5}.comment>.comments-list>.comment:last-child{padding-bottom:0}.list{padding:0 15px}.list>header{padding-bottom:10px;border-bottom:1px solid #e5e5e5}.items .item{padding:10px 0;border-bottom:1px solid #e5e5e5;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.items .item-heading h1,.items .item-heading h2,.items .item-heading h3,.items .item-heading h4,.items .item-heading h5,.items .item-heading>h6{margin-top:5px}.items .item-content:after,.items .item-content:before{display:table;content:" "}.items .item-content:after{clear:both}.items .item-content:after,.items .item-content:before{display:table;content:" "}.items .item-content:after{clear:both}.items .item-content>.media{max-width:100%;margin:5px 0}.items .item-content>.media.pull-left{max-width:150px;margin:0;margin-right:8px}.items .item-content>.media.pull-right{max-width:150px;margin:0;margin-left:8px}.items .item-footer{padding-top:5px}.items .item-footer>a{color:grey}.items-hover .item:hover{background-color:#f5f5f5}.list-condensed{padding:0}.list-condensed>.items>.item,.list-condensed>footer,.list-condensed>header{padding-right:15px;padding-left:15px} \ No newline at end of file diff --git a/root/res/zui/css/zui.min.css b/root/res/zui/css/zui.min.css new file mode 100644 index 0000000..28efd03 --- /dev/null +++ b/root/res/zui/css/zui.min.css @@ -0,0 +1,6 @@ +/*! + * ZUI: Standard edition - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + *//*! Some code copy from Bootstrap v3.0.0 by @fat and @mdo. (Copyright 2013 Twitter, Inc. Licensed under http://www.apache.org/licenses/)*//*! normalize.css v2.1.3 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}a{background:0 0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{margin:.67em 0;font-size:2em}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}mark{color:#000;background:#ff0}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}button,input,select,textarea{margin:0;font-family:inherit;font-size:100%}button,input{line-height:normal}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=search]{-webkit-box-sizing:content-box;-moz-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}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}textarea{overflow:auto;vertical-align:top}table{border-spacing:0;border-collapse:collapse}.btn-group-vertical>.btn-group-vertical:after,.btn-group-vertical>.btn-group-vertical:before,.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.cards:after,.cards:before,.clearfix:after,.clearfix:before,.container-fixed-md:after,.container-fixed-md:before,.container-fixed-sm:after,.container-fixed-sm:before,.container-fixed-xs:after,.container-fixed-xs:before,.container-fixed:after,.container-fixed:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager-justify:after,.pager-justify:before,.pager-loose:after,.pager-loose:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group-vertical:after,.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.cards:after,.clearfix:after,.container-fixed-md:after,.container-fixed-sm:after,.container-fixed-xs:after,.container-fixed:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager-justify:after,.pager-loose:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none}.showing{display:block}.hidden{display:none!important;visibility:hidden!important}.show{display:block!important;visibility:visible!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.affix{position:fixed}.with-padding{padding:5px 12px}.no-padding{padding:0!important}.inline-block.visible-xs,.inline.visible-xs,.visible-xs,td.visible-xs,th.visible-xs,tr.visible-xs{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}.inline.visible-xs{display:inline!important}.inline-block.visible-xs{display:inline-block!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}.inline.visible-xs.visible-sm{display:inline!important}.inline-block.visible-xs.visible-sm{display:inline-block!important}tr.visible-xs.visible-sm{display:table-row!important}td.visible-xs.visible-sm,th.visible-xs.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block!important}.inline.visible-xs.visible-md{display:inline!important}.inline-block.visible-xs.visible-md{display:inline-block!important}tr.visible-xs.visible-md{display:table-row!important}td.visible-xs.visible-md,th.visible-xs.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-xs.visible-lg{display:block!important}.inline.visible-xs.visible-lg{display:inline!important}.inline-block.visible-xs.visible-lg{display:inline-block!important}tr.visible-xs.visible-lg{display:table-row!important}td.visible-xs.visible-lg,th.visible-xs.visible-lg{display:table-cell!important}}.inline-block.visible-sm,.inline.visible-sm,.visible-sm,td.visible-sm,th.visible-sm,tr.visible-sm{display:none!important}@media (max-width:767px){.visible-sm.visible-xs{display:block!important}.inline.visible-sm.visible-xs{display:inline!important}.inline-block.visible-sm.visible-xs{display:inline-block!important}tr.visible-sm.visible-xs{display:table-row!important}td.visible-sm.visible-xs,th.visible-sm.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}.inline.visible-sm{display:inline!important}.inline-block.visible-sm{display:inline-block!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-sm.visible-md{display:block!important}.inline.visible-sm.visible-md{display:inline!important}.inline-block.visible-sm.visible-md{display:inline-block!important}tr.visible-sm.visible-md{display:table-row!important}td.visible-sm.visible-md,th.visible-sm.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-sm.visible-lg{display:block!important}.inline.visible-sm.visible-lg{display:inline!important}.inline-block.visible-sm.visible-lg{display:inline-block!important}tr.visible-sm.visible-lg{display:table-row!important}td.visible-sm.visible-lg,th.visible-sm.visible-lg{display:table-cell!important}}.inline-block.visible-md,.inline.visible-md,.visible-md,td.visible-md,th.visible-md,tr.visible-md{display:none!important}@media (max-width:767px){.visible-md.visible-xs{display:block!important}.inline.visible-md.visible-xs{display:inline!important}.inline-block.visible-md.visible-xs{display:inline-block!important}tr.visible-md.visible-xs{display:table-row!important}td.visible-md.visible-xs,th.visible-md.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}.inline.visible-md.visible-sm{display:inline!important}.inline-block.visible-md.visible-sm{display:inline-block!important}tr.visible-md.visible-sm{display:table-row!important}td.visible-md.visible-sm,th.visible-md.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}.inline.visible-md{display:inline!important}.inline-block.visible-md{display:inline-block!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-md.visible-lg{display:block!important}.inline.visible-md.visible-lg{display:inline!important}.inline-block.visible-md.visible-lg{display:inline-block!important}tr.visible-md.visible-lg{display:table-row!important}td.visible-md.visible-lg,th.visible-md.visible-lg{display:table-cell!important}}.inline-block.visible-lg,.inline.visible-lg,.visible-lg,td.visible-lg,th.visible-lg,tr.visible-lg{display:none!important}@media (max-width:767px){.visible-lg.visible-xs{display:block!important}.inline.visible-lg.visible-xs{display:inline!important}.inline-block.visible-lg.visible-xs{display:inline-block!important}tr.visible-lg.visible-xs{display:table-row!important}td.visible-lg.visible-xs,th.visible-lg.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}.inline.visible-lg.visible-sm{display:inline!important}.inline-block.visible-lg.visible-sm{display:inline-block!important}tr.visible-lg.visible-sm{display:table-row!important}td.visible-lg.visible-sm,th.visible-lg.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block!important}.inline.visible-lg.visible-md{display:inline!important}.inline-block.visible-lg.visible-md{display:inline-block!important}tr.visible-lg.visible-md{display:table-row!important}td.visible-lg.visible-md,th.visible-lg.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-lg{display:block!important}.inline.visible-lg{display:inline!important}.inline-block.visible-lg{display:inline-block!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}.hidden-xs{display:block!important}.inline.hidden-xs{display:inline!important}.inline-block.hidden-xs{display:inline-block!important}tr.hidden-xs{display:table-row!important}td.hidden-xs,th.hidden-xs{display:table-cell!important}@media (max-width:767px){.hidden-xs,.inline-block.hidden-xs,.inline.hidden-xs,td.hidden-xs,th.hidden-xs,tr.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm,.inline-block.hidden-xs.hidden-sm,.inline.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm,th.hidden-xs.hidden-sm,tr.hidden-xs.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md,.inline-block.hidden-xs.hidden-md,.inline.hidden-xs.hidden-md,td.hidden-xs.hidden-md,th.hidden-xs.hidden-md,tr.hidden-xs.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-xs.hidden-lg,.inline-block.hidden-xs.hidden-lg,.inline.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg,th.hidden-xs.hidden-lg,tr.hidden-xs.hidden-lg{display:none!important}}.hidden-sm{display:block!important}.inline.hidden-sm{display:inline!important}.inline-block.hidden-sm{display:inline-block!important}tr.hidden-sm{display:table-row!important}td.hidden-sm,th.hidden-sm{display:table-cell!important}@media (max-width:767px){.hidden-sm.hidden-xs,.inline-block.hidden-sm.hidden-xs,.inline.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs,th.hidden-sm.hidden-xs,tr.hidden-sm.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm,.inline-block.hidden-sm,.inline.hidden-sm,td.hidden-sm,th.hidden-sm,tr.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md,.inline-block.hidden-sm.hidden-md,.inline.hidden-sm.hidden-md,td.hidden-sm.hidden-md,th.hidden-sm.hidden-md,tr.hidden-sm.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-sm.hidden-lg,.inline-block.hidden-sm.hidden-lg,.inline.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg,th.hidden-sm.hidden-lg,tr.hidden-sm.hidden-lg{display:none!important}}.hidden-md{display:block!important}.inline.hidden-md{display:inline!important}.inline-block.hidden-md{display:inline-block!important}tr.hidden-md{display:table-row!important}td.hidden-md,th.hidden-md{display:table-cell!important}@media (max-width:767px){.hidden-md.hidden-xs,.inline-block.hidden-md.hidden-xs,.inline.hidden-md.hidden-xs,td.hidden-md.hidden-xs,th.hidden-md.hidden-xs,tr.hidden-md.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-md.hidden-sm,.inline-block.hidden-md.hidden-sm,.inline.hidden-md.hidden-sm,td.hidden-md.hidden-sm,th.hidden-md.hidden-sm,tr.hidden-md.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md,.inline-block.hidden-md,.inline.hidden-md,td.hidden-md,th.hidden-md,tr.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-md.hidden-lg,.inline-block.hidden-md.hidden-lg,.inline.hidden-md.hidden-lg,td.hidden-md.hidden-lg,th.hidden-md.hidden-lg,tr.hidden-md.hidden-lg{display:none!important}}.hidden-lg{display:block!important}.inline.hidden-lg{display:inline!important}.inline-block.hidden-lg{display:inline-block!important}tr.hidden-lg{display:table-row!important}td.hidden-lg,th.hidden-lg{display:table-cell!important}@media (max-width:767px){.hidden-lg.hidden-xs,.inline-block.hidden-lg.hidden-xs,.inline.hidden-lg.hidden-xs,td.hidden-lg.hidden-xs,th.hidden-lg.hidden-xs,tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-lg.hidden-sm,.inline-block.hidden-lg.hidden-sm,.inline.hidden-lg.hidden-sm,td.hidden-lg.hidden-sm,th.hidden-lg.hidden-sm,tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-lg.hidden-md,.inline-block.hidden-lg.hidden-md,.inline.hidden-lg.hidden-md,td.hidden-lg.hidden-md,th.hidden-lg.hidden-md,tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg,.inline-block.hidden-lg,.inline.hidden-lg,td.hidden-lg,th.hidden-lg,tr.hidden-lg{display:none!important}}.inline-block.visible-print,.inline.visible-print,.visible-print,td.visible-print,th.visible-print,tr.visible-print{display:none!important}@media print{.visible-print{display:block!important}.inline.visible-print{display:inline!important}.inline-block.visible-print{display:inline-block!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}.hidden-print,.inline-block.hidden-print,.inline.hidden-print,td.hidden-print,th.hidden-print,tr.hidden-print{display:none!important}}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Tahoma,Arial,'Microsoft Yahei','PingFang SC','Hiragino Sans GB','WenQuanYi Micro Hei',sans-serif;font-size:13px;line-height:1.53846154;color:#353535;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#145ccd;text-decoration:none;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}a:focus,a:hover{color:#0d3d88;text-decoration:underline}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a.disabled,a.disabled:focus,a.disabled:hover,a[disabled],a[disabled]:focus,a[disabled]:hover{color:#aaa;text-decoration:none;cursor:default}audio,canvas,img,video{max-width:100%;vertical-align:middle}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}::-moz-selection{text-shadow:none;background:#b3d4fc}::selection{text-shadow:none;background:#b3d4fc}fieldset{padding:0;margin:0;border:0}textarea{resize:vertical}ol,ul{padding-left:20px}.container,.container-fixed,.container-fixed-md,.container-fixed-sm,.container-fixed-xs,.container-fluid{padding-right:10px;padding-left:10px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{max-width:740px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1160px}}.container-fixed{width:1160px}.container-fixed-md{width:960px}.container-fixed-sm{width:740px}.container-fixed-xs{width:440px}.row{margin-right:-10px;margin-left:-10px}.col,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:10px;padding-left:10px}.col,.col-xs,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-1{width:8.33333333%}.col-xs-2{width:16.66666667%}.col-xs-3{width:25%}.col-xs-4{width:33.33333333%}.col-xs-5{width:41.66666667%}.col-xs-6{width:50%}.col-xs-7{width:58.33333333%}.col-xs-8{width:66.66666667%}.col-xs-9{width:75%}.col-xs-10{width:83.33333333%}.col-xs-11{width:91.66666667%}.col-xs-12{width:100%}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-1{width:8.33333333%}.col-sm-2{width:16.66666667%}.col-sm-3{width:25%}.col-sm-4{width:33.33333333%}.col-sm-5{width:41.66666667%}.col-sm-6{width:50%}.col-sm-7{width:58.33333333%}.col-sm-8{width:66.66666667%}.col-sm-9{width:75%}.col-sm-10{width:83.33333333%}.col-sm-11{width:91.66666667%}.col-sm-12{width:100%}.col-sm-push-1{left:8.33333333%}.col-sm-push-2{left:16.66666667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333333%}.col-sm-push-5{left:41.66666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.33333333%}.col-sm-push-8{left:66.66666667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333333%}.col-sm-push-11{left:91.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-11{right:91.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-11{margin-left:91.66666667%}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-1{width:8.33333333%}.col-md-2{width:16.66666667%}.col-md-3{width:25%}.col-md-4{width:33.33333333%}.col-md-5{width:41.66666667%}.col-md-6{width:50%}.col-md-7{width:58.33333333%}.col-md-8{width:66.66666667%}.col-md-9{width:75%}.col-md-10{width:83.33333333%}.col-md-11{width:91.66666667%}.col-md-12{width:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.33333333%}.col-md-push-2{left:16.66666667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333333%}.col-md-push-5{left:41.66666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.33333333%}.col-md-push-8{left:66.66666667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333333%}.col-md-push-11{left:91.66666667%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.33333333%}.col-md-pull-2{right:16.66666667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333333%}.col-md-pull-5{right:41.66666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.33333333%}.col-md-pull-8{right:66.66666667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333333%}.col-md-pull-11{right:91.66666667%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-11{margin-left:91.66666667%}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-1{width:8.33333333%}.col-lg-2{width:16.66666667%}.col-lg-3{width:25%}.col-lg-4{width:33.33333333%}.col-lg-5{width:41.66666667%}.col-lg-6{width:50%}.col-lg-7{width:58.33333333%}.col-lg-8{width:66.66666667%}.col-lg-9{width:75%}.col-lg-10{width:83.33333333%}.col-lg-11{width:91.66666667%}.col-lg-12{width:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.33333333%}.col-lg-push-2{left:16.66666667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333333%}.col-lg-push-5{left:41.66666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.33333333%}.col-lg-push-8{left:66.66666667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333333%}.col-lg-push-11{left:91.66666667%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-11{right:91.66666667%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-11{margin-left:91.66666667%}}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:14px;line-height:1.4}@media (min-width:768px){.lead{font-size:19.5px}}.small,small{font-size:85%}cite{font-style:normal}.text-gray,.text-muted{color:grey}.text-gray a,.text-muted a{color:#737373}.text-gray a:active,.text-gray a:hover,.text-muted a:active,.text-muted a:hover{color:#145ccd}.text-primary{color:#3280fc}.text-warning,.text-yellow{color:#f1a325}.text-danger,.text-red{color:#ea644a}.text-green,.text-success{color:#38b03f}.text-blue,.text-info{color:#03b8cf}.text-brown,.text-important{color:#bd7b46}.text-purple,.text-special{color:#8666b8}.text-link{color:#353535}.text-link:active,.text-link:hover{color:#145ccd}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.nobr,.text-nowrap{overflow:hidden;white-space:nowrap}.text-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}dl{margin-bottom:20px}dd,dt{line-height:1.53846154}dt{font-weight:700}dd{margin-left:0}.dl-inline:after,.dl-inline:before{display:table;content:" "}.dl-inline:after{clear:both}.dl-inline:after,.dl-inline:before{display:table;content:" "}.dl-inline:after{clear:both}.dl-inline dt{display:inline-block}.dl-inline dd{display:inline-block;padding-right:1em}.dl-inline dd:last-child{padding-right:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}blockquote{padding:10px 20px;margin:0 0 20px;font-size:16.25px;border-left:5px solid #e5e5e5}blockquote ol,blockquote p,blockquote ul{font-weight:300}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote small{display:block;line-height:1.53846154;color:grey}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #e5e5e5;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}.ol-pd-2{padding-left:40px}.ol-pd-3{padding-left:60px}.ol-pd-4{padding-left:80px}.bg-black,.bg-default{color:#fff;background-color:#353535}.bg-primary{color:#fff;background-color:#3280fc}.bg-green,.bg-success{color:#fff;background-color:#38b03f}.bg-blue,.bg-info{color:#fff;background-color:#03b8cf}.bg-warning,.bg-yellow{color:#fff;background-color:#f1a325}.bg-danger,.bg-red{color:#fff;background-color:#ea644a}.bg-brown,.bg-important{color:#fff;background-color:#bd7b46}.bg-purple,.bg-special{color:#fff;background-color:#8666b8}.hl-default,.hl-gray{background-color:#f1f1f1}.hl-primary{background-color:#ebf2f9}.hl-green,.hl-success{background-color:#ddf4df}.hl-blue,.hl-info{background-color:#ddf3f5}.hl-warning,.hl-yellow{background-color:#fff0d5}.hl-danger,.hl-red{background-color:#ffe5e0}.hl-brown,.hl-important{background-color:#f7ebe1}.hl-purple,.hl-special{background-color:#f5eeff}.header-dividing,.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #e5e5e5}h1,h2,h3,h4,h5,h6{font-family:"Helvetica Neue",Helvetica,Tahoma,Arial,'Microsoft Yahei','PingFang SC','Hiragino Sans GB','WenQuanYi Micro Hei',sans-serif;font-weight:700;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:400;line-height:1;color:grey}h1,h2,h3{margin-top:20px;margin-bottom:10px}h1 small,h2 small,h3 small{font-size:65%}h4,h5,h6{margin-top:10px;margin-bottom:10px}h4 small,h5 small,h6 small{font-size:75%}h1{font-size:26px}h2{font-size:20px}h3{font-size:16px}h4{font-size:14px}h5{font-size:13px}h6{font-size:12px}.btn{display:inline-block;padding:5px 12px;margin-bottom:0;font-size:13px;font-weight:400;line-height:1.53846154;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;border-radius:4px;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:focus,.btn:hover{color:#353535;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn{color:#353535;text-shadow:0 1px 0 #fff;background-color:#f2f2f2;border-color:#bfbfbf}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#353535;background-color:#dedede;border-color:#a1a1a1;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#ccc;background-image:none;border-color:#a6a6a6;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#f2f2f2;border-color:#bfbfbf}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.2);background-color:#3280fc;border-color:#1970fc}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#0a67fb;border-color:#0354d4;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#0358de;background-image:none;border-color:#0358de;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#3280fc;border-color:#1970fc}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.2);background-color:#f1a325;border-color:#ed980f}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#df8f0e;border-color:#b4730c;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#bd7a0c;background-image:none;border-color:#bd7a0c;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f1a325;border-color:#ed980f}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.2);background-color:#ea644a;border-color:#e75033}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#e64525;border-color:#c63317;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#cf3618;background-image:none;border-color:#cf3618;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#ea644a;border-color:#e75033}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.2);background-color:#38b03f;border-color:#329d38}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#2e9134;border-color:#236e27;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#26762a;background-image:none;border-color:#26762a;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#38b03f;border-color:#329d38}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.2);background-color:#03b8cf;border-color:#03a2b6}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#fff;background-color:#0294a7;border-color:#026c7a;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#027584;background-image:none;border-color:#027584;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#03b8cf;border-color:#03a2b6}.btn-link{font-weight:400;color:#145ccd;text-shadow:none;cursor:pointer;background:0 0;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover,.btn-link[disabled],fieldset[disabled] .btn-link{border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:focus,.btn-link:hover{color:#0d3d88}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#ddd;text-decoration:none}.btn-lg{padding:10px 16px;font-size:17px;line-height:1.25;border-radius:4px}.btn-mini,.btn-sm,.btn-xs{padding:2px 8px;font-size:12px;line-height:1.5;border-radius:4px}.btn-mini,.btn-xs{padding:1px 5px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group-vertical>.btn:focus,.btn-group>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group-vertical,.btn-group-vertical .btn-group-vertical+.btn,.btn-group-vertical .btn-group-vertical+.btn-group-vertical{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .btn-group-vertical,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.btn-group-vertical,.btn-toolbar>.input-group{margin-left:5px}.btn-group-vertical>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle),.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group-vertical>.btn:first-child,.btn-group>.btn:first-child{margin-left:0}.btn-group-vertical>.btn:first-child:not(:last-child):not(.dropdown-toggle),.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child),.btn-group-vertical>.dropdown-toggle:not(:first-child),.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group-vertical,.btn-group>.btn-group{float:left}.btn-group-vertical>.btn-group-vertical:not(:first-child):not(:last-child)>.btn,.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group-vertical:first-child>.btn:last-child,.btn-group-vertical>.btn-group-vertical:first-child>.dropdown-toggle,.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group-vertical>.btn-group-vertical:last-child>.btn:first-child,.btn-group>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group-vertical .dropdown-toggle:active,.btn-group-vertical.open .dropdown-toggle,.btn-group.open .dropdown-toggle{outline:0}.btn-group-xs>.btn{padding:2px 8px;padding:1px 5px;font-size:12px;line-height:1.5;border-radius:4px}.btn-group-sm>.btn{padding:2px 8px;font-size:12px;line-height:1.5;border-radius:4px}.btn-group-lg>.btn{padding:10px 16px;font-size:17px;line-height:1.25;border-radius:4px}.btn-group-vertical>.btn+.dropdown-toggle,.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group-vertical>.btn-lg+.dropdown-toggle,.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group-vertical.open .dropdown-toggle,.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group-vertical.open .dropdown-toggle.btn-link,.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group,.btn-group-justified>.btn-group-vertical{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn,.btn-group-justified>.btn-group-vertical .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu,.btn-group-justified>.btn-group-vertical .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group-vertical>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group-vertical>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group-vertical,.btn-group-vertical>.btn-group-vertical>.btn,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group-vertical>.btn,.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn+.btn-group-vertical,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group,.btn-group-vertical>.btn-group-vertical+.btn,.btn-group-vertical>.btn-group-vertical+.btn-group-vertical{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child),.btn-group-vertical>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group-vertical:not(:first-child):not(:last-child)>.btn,.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group-vertical:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group-vertical:first-child:not(:last-child)>.dropdown-toggle,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group-vertical:last-child:not(:first-child)>.btn:first-child,.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#e5e5e5;border-radius:4px}.progress-bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;background-color:#3280fc;-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#38b03f}.progress-bar-info{background-color:#03b8cf}.progress-bar-warning{background-color:#f1a325}.progress-bar-danger{background-color:#ea644a}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.53846154;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #e5e5e5}hr.divider-sm{margin-top:10px;margin-bottom:10px}hr.divider{margin:0}.label{display:inline;padding:.2em .6em .2em;font-size:75%;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:grey;border-radius:.25em}.label[href]:focus,.label[href]:hover{color:#fff;background-color:#666}.label.label-circle{color:grey;background:0 0;border:1px solid grey}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.label-badge{display:inline-block;min-width:18px;padding:3px 7px;font-size:12px;line-height:1;border-radius:9px}.label-dot{display:inline-block;width:10px;height:10px;padding:0;line-height:13px;text-indent:-9999em;border-radius:5px}.label-dot:empty{display:inline-block}.label-primary{background-color:#3280fc}.label-primary[href]:focus,.label-primary[href]:hover{color:#fff;background-color:#0462f7}.label-primary.label-circle{color:#3280fc;background:0 0;border:1px solid #3280fc}.label-success{background-color:#38b03f}.label-success[href]:focus,.label-success[href]:hover{color:#fff;background-color:#2c8931}.label-success.label-circle{color:#38b03f;background:0 0;border:1px solid #38b03f}.label-info{background-color:#03b8cf}.label-info[href]:focus,.label-info[href]:hover{color:#fff;background-color:#028b9d}.label-info.label-circle{color:#03b8cf;background:0 0;border:1px solid #03b8cf}.label-warning{background-color:#f1a325}.label-warning[href]:focus,.label-warning[href]:hover{color:#fff;background-color:#d5890e}.label-warning.label-circle{color:#f1a325;background:0 0;border:1px solid #f1a325}.label-danger{background-color:#ea644a}.label-danger[href]:focus,.label-danger[href]:hover{color:#fff;background-color:#e53d1c}.label-danger.label-circle{color:#ea644a;background:0 0;border:1px solid #ea644a}.btn .label,.nav-primary>li>a>.label{position:relative;top:-1px}.btn-danger .label,.btn-info .label,.btn-primary .label,.btn-success .label,.btn-warning .label{background-color:rgba(0,0,0,.2)}.list-group-item.active>.label,.nav-pills>.active>a>.label,.nav-primary>.active>a>.label{color:#145ccd;background-color:#fff}.nav>li>a>.label{margin-left:3px}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:grey}@font-face{font-family:ZenIcon;font-style:normal;font-weight:400;src:url(../fonts/zenicon.eot?v=2.2.0);src:url(../fonts/zenicon.eot?#iefix&v=2.2.0) format('embedded-opentype'),url(../fonts/zenicon.woff?v=2.2.0) format('woff'),url(../fonts/zenicon.ttf?v=2.2.0) format('truetype'),url(../fonts/zenicon.svg#regular?v=2.2.0) format('svg')}.icon,[class*=" icon-"],[class^=icon-]{font-family:ZenIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-transform:none;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon:before{display:inline-block;min-width:14px;text-align:center}a .icon,a [class*=" icon-"],a [class^=icon-]{display:inline}.icon-lg:before{font-size:1.33333333em;vertical-align:-10%}.icon-2x{font-size:28px}.icon-3x{font-size:42px}.icon-4x{font-size:56px}.icon-5x{font-size:70px}.icon-spin{display:inline-block;-webkit-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}a .icon-spin{display:inline-block;text-decoration:none}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0);transform:rotate(0)}100%{-o-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spin{0%{-webkit-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);-o-transform:rotate(359deg);transform:rotate(359deg)}}.icon-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.icon-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.icon-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.icon-flip-horizontal{-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);-o-transform:scale(-1,1);transform:scale(-1,1)}.icon-flip-vertical{-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);-o-transform:scale(1,-1);transform:scale(1,-1)}.icon.icon-flip-horizontal,.icon.icon-flip-vertical,.icon.icon-rotate-180,.icon.icon-rotate-270,.icon.icon-rotate-90{display:inline-block}.icon-resize:before{content:'\e667'}.icon-expand-full:before{content:'\e6a3'}.icon-arrows-alt:before{content:'\e6a3'}.icon-fullscreen:before{content:'\e6a3'}.icon-collapse-full:before{content:'\e682'}.icon-yinyang:before{content:'\e687'}.icon-taiji:before{content:'\e687'}.icon-window:before{content:'\e68e'}.icon-window-alt:before{content:'\e68f'}.icon-carousel:before{content:'\e6b0'}.icon-spinner-snake:before{content:'\e97b'}.icon-spinner-indicator:before{content:'\e97c'}.icon-check-board:before{content:'\e9b8'}.icon-bar-chart:before{content:'\f080'}.icon-bar-chart-o:before{content:'\f080'}.icon-github:before{content:'\f09b'}.icon-dot-circle:before{content:'\f192'}.icon-dot-circle-o:before{content:'\f192'}.icon-cube-alt:before{content:'\f1b2'}.icon-cubes:before{content:'\f1b3'}.icon-file-pdf:before{content:'\f1c1'}.icon-file-word:before{content:'\f1c2'}.icon-file-excel:before{content:'\f1c3'}.icon-file-powerpoint:before{content:'\f1c4'}.icon-file-image:before{content:'\f1c5'}.icon-file-photo:before{content:'\f1c5'}.icon-file-picture:before{content:'\f1c5'}.icon-file-archive:before{content:'\f1c6'}.icon-file-zip:before{content:'\f1c6'}.icon-file-audio:before{content:'\f1c7'}.icon-file-sound:before{content:'\f1c7'}.icon-file-movie:before{content:'\f1c8'}.icon-file-video:before{content:'\f1c8'}.icon-file-code:before{content:'\f1c9'}.icon-circle-o-notch:before{content:'\f1ce'}.icon-chanzhi:before{content:'\e906'}.icon-chanzhi-pro:before{content:'\e905'}.icon-zsite:before{content:'\e904'}.icon-zsite-pro:before{content:'\e903'}.icon-qq:before{content:'\f600'}.icon-wechat:before{content:'\f1d7'}.icon-weixin:before{content:'\f1d7'}.icon-history:before{content:'\f1da'}.icon-circle-thin:before{content:'\f1db'}.icon-sliders:before{content:'\f1de'}.icon-newspaper-o:before{content:'\f1ea'}.icon-calculator:before{content:'\f1ec'}.icon-paint-brush:before{content:'\f1fc'}.icon-area-chart:before{content:'\f1fe'}.icon-pie-chart:before{content:'\f200'}.icon-line-chart:before{content:'\f201'}.icon-toggle-off:before{content:'\f204'}.icon-toggle-on:before{content:'\f205'}.icon-diamond:before{content:'\f219'}.icon-venus:before{content:'\f221'}.icon-mars:before{content:'\f222'}.icon-server:before{content:'\f233'}.icon-music:before{content:'\e602'}.icon-search:before{content:'\e603'}.icon-envelope:before{content:'\e604'}.icon-heart:before{content:'\e605'}.icon-star:before{content:'\e606'}.icon-star-empty:before{content:'\e607'}.icon-user:before{content:'\e608'}.icon-film:before{content:'\e609'}.icon-th-large:before{content:'\e60a'}.icon-th:before{content:'\e60b'}.icon-th-list:before{content:'\e60c'}.icon-ok:before{content:'\e60d'}.icon-check:before{content:'\e60d'}.icon-remove:before{content:'\d7'}.icon-times:before{content:'\d7'}.icon-zoom-in:before{content:'\e60f'}.icon-zoom-out:before{content:'\e610'}.icon-off:before{content:'\e611'}.icon-cog:before{content:'\e613'}.icon-trash:before{content:'\e614'}.icon-home:before{content:'\e615'}.icon-file-o:before{content:'\e616'}.icon-file-alt:before{content:'\e616'}.icon-time:before{content:'\e617'}.icon-download-alt:before{content:'\e618'}.icon-download:before{content:'\e619'}.icon-upload:before{content:'\e61a'}.icon-inbox:before{content:'\e61b'}.icon-play-circle:before{content:'\e61c'}.icon-repeat:before{content:'\e61d'}.icon-refresh:before{content:'\e61e'}.icon-list-alt:before{content:'\e61f'}.icon-lock:before{content:'\e620'}.icon-flag:before{content:'\e621'}.icon-headphones:before{content:'\e622'}.icon-volume-off:before{content:'\e623'}.icon-volume-up:before{content:'\e625'}.icon-qrcode:before{content:'\e626'}.icon-barcode:before{content:'\e627'}.icon-tag:before{content:'\e628'}.icon-tags:before{content:'\e629'}.icon-book:before{content:'\e62a'}.icon-bookmark:before{content:'\e62b'}.icon-print:before{content:'\e62c'}.icon-camera:before{content:'\e62d'}.icon-font:before{content:'\e62e'}.icon-bold:before{content:'\e62f'}.icon-italic:before{content:'\f033'}.icon-header:before{content:'\f1dc'}.icon-underline:before{content:'\f0cd'}.icon-strikethrough:before{content:'\f0cc'}.icon-eraser:before{content:'\f12d'}.icon-align-justify:before{content:'\e636'}.icon-list:before{content:'\e637'}.icon-picture:before{content:'\e63b'}.icon-pencil:before{content:'\e63c'}.icon-map-marker:before{content:'\e63d'}.icon-adjust:before{content:'\e63e'}.icon-tint:before{content:'\e63f'}.icon-edit:before{content:'\e640'}.icon-share:before{content:'\e641'}.icon-checked:before{content:'\e642'}.icon-move:before{content:'\e643'}.icon-arrows:before{content:'\e643'}.icon-step-backward:before{content:'\e644'}.icon-fast-backward:before{content:'\e645'}.icon-backward:before{content:'\e646'}.icon-play:before{content:'\e647'}.icon-pause:before{content:'\e648'}.icon-stop:before{content:'\e649'}.icon-forward:before{content:'\e64a'}.icon-fast-forward:before{content:'\e64b'}.icon-step-forward:before{content:'\e64c'}.icon-eject:before{content:'\e64d'}.icon-chevron-left:before{content:'\e64e'}.icon-chevron-right:before{content:'\e64f'}.icon-plus-sign:before{content:'\e650'}.icon-minus-sign:before{content:'\e651'}.icon-remove-sign:before{content:'\e652'}.icon-ok-sign:before{content:'\e653'}.icon-check-circle:before{content:'\e653'}.icon-question-sign:before{content:'\e654'}.icon-info-sign:before{content:'\e655'}.icon-remove-circle:before{content:'\e657'}.icon-ok-circle:before{content:'\e658'}.icon-check-circle-o:before{content:'\e658'}.icon-ban-circle:before{content:'\e659'}.icon-arrow-left:before{content:'\e65a'}.icon-arrow-right:before{content:'\e65b'}.icon-arrow-up:before{content:'\e65c'}.icon-arrow-down:before{content:'\e65d'}.icon-share-alt:before{content:'\e65e'}.icon-resize-full:before{content:'\e65f'}.icon-resize-small:before{content:'\e660'}.icon-plus:before{content:'\e661'}.icon-minus:before{content:'\e662'}.icon-asterisk:before{content:'\e663'}.icon-exclamation-sign:before{content:'\e664'}.icon-gift:before{content:'\e665'}.icon-leaf:before{content:'\e666'}.icon-eye-open:before{content:'\e668'}.icon-eye-close:before{content:'\e669'}.icon-warning-sign:before{content:'\e66a'}.icon-plane:before{content:'\e66b'}.icon-calendar:before{content:'\e66c'}.icon-random:before{content:'\e66d'}.icon-comment:before{content:'\e66e'}.icon-chevron-up:before{content:'\e670'}.icon-chevron-down:before{content:'\e671'}.icon-shopping-cart:before{content:'\e673'}.icon-folder-close:before{content:'\e674'}.icon-folder-open:before{content:'\e675'}.icon-resize-v:before{content:'\e676'}.icon-resize-h:before{content:'\e677'}.icon-bar-chart-alt:before{content:'\e678'}.icon-camera-retro:before{content:'\e679'}.icon-key:before{content:'\e67a'}.icon-cogs:before{content:'\e67b'}.icon-comments:before{content:'\e67c'}.icon-thumbs-o-up:before{content:'\e67d'}.icon-thumbs-o-down:before{content:'\e67e'}.icon-star-half:before{content:'\e67f'}.icon-heart-empty:before{content:'\e680'}.icon-signout:before{content:'\e681'}.icon-pushpin:before{content:'\e683'}.icon-external-link:before{content:'\e684'}.icon-signin:before{content:'\e685'}.icon-trophy:before{content:'\e686'}.icon-upload-alt:before{content:'\e688'}.icon-lemon:before{content:'\e689'}.icon-phone:before{content:'\e68a'}.icon-check-empty:before{content:'\e68b'}.icon-bookmark-empty:before{content:'\e68c'}.icon-phone-sign:before{content:'\e68d'}.icon-credit:before{content:'\e690'}.icon-rss:before{content:'\e691'}.icon-hdd:before{content:'\e692'}.icon-bullhorn:before{content:'\e693'}.icon-bell:before{content:'\e694'}.icon-certificate:before{content:'\e695'}.icon-hand-right:before{content:'\e696'}.icon-hand-left:before{content:'\e697'}.icon-hand-up:before{content:'\e698'}.icon-hand-down:before{content:'\e699'}.icon-circle-arrow-left:before{content:'\e69a'}.icon-circle-arrow-right:before{content:'\e69b'}.icon-circle-arrow-up:before{content:'\e69c'}.icon-circle-arrow-down:before{content:'\e69d'}.icon-globe:before{content:'\e69e'}.icon-wrench:before{content:'\e69f'}.icon-tasks:before{content:'\e6a0'}.icon-filter:before{content:'\e6a1'}.icon-group:before{content:'\e6a4'}.icon-link:before{content:'\e6a5'}.icon-cloud:before{content:'\e6a6'}.icon-beaker:before{content:'\e6a7'}.icon-cut:before{content:'\e6a8'}.icon-copy:before{content:'\e6a9'}.icon-paper-clip:before{content:'\e6aa'}.icon-save:before{content:'\e6ab'}.icon-sign-blank:before{content:'\e6ac'}.icon-bars:before{content:'\e6ad'}.icon-reorder:before{content:'\e6ad'}.icon-list-ul:before{content:'\e6ae'}.icon-list-ol:before{content:'\e6af'}.icon-table:before{content:'\e6b2'}.icon-magic:before{content:'\e6b3'}.icon-caret-down:before{content:'\e6b8'}.icon-caret-up:before{content:'\e6b9'}.icon-caret-left:before{content:'\e6ba'}.icon-caret-right:before{content:'\e6bb'}.icon-columns:before{content:'\e6bc'}.icon-sort:before{content:'\e6bd'}.icon-sort-down:before{content:'\e6be'}.icon-sort-up:before{content:'\e6bf'}.icon-envelope-alt:before{content:'\e6c0'}.icon-undo:before{content:'\e6c1'}.icon-dashboard:before{content:'\e6c3'}.icon-comment-alt:before{content:'\e6c4'}.icon-comments-alt:before{content:'\e6c5'}.icon-bolt:before{content:'\e6c6'}.icon-sitemap:before{content:'\e6c7'}.icon-umbrella:before{content:'\e6c8'}.icon-paste:before{content:'\e6c9'}.icon-lightbulb:before{content:'\e6ca'}.icon-exchange:before{content:'\e6cb'}.icon-cloud-download:before{content:'\e6cc'}.icon-cloud-upload:before{content:'\e6cd'}.icon-bell-alt:before{content:'\e6d1'}.icon-coffee:before{content:'\e6d2'}.icon-file-text-o:before{content:'\e6d4'}.icon-file-text-alt:before{content:'\e6d4'}.icon-building:before{content:'\e6d5'}.icon-double-angle-left:before{content:'\e6dc'}.icon-double-angle-right:before{content:'\e6dd'}.icon-double-angle-up:before{content:'\e6de'}.icon-double-angle-down:before{content:'\e6df'}.icon-angle-left:before{content:'\e6e0'}.icon-angle-right:before{content:'\e6e1'}.icon-angle-up:before{content:'\e6e2'}.icon-angle-down:before{content:'\e6e3'}.icon-desktop:before{content:'\e6e4'}.icon-laptop:before{content:'\e6e5'}.icon-tablet:before{content:'\e6e6'}.icon-mobile:before{content:'\e6e7'}.icon-circle-blank:before{content:'\e6e8'}.icon-quote-left:before{content:'\e6e9'}.icon-quote-right:before{content:'\e6ea'}.icon-spinner:before{content:'\e6eb'}.icon-circle:before{content:'\e6ec'}.icon-reply:before{content:'\e6ed'}.icon-folder-close-alt:before{content:'\e6ef'}.icon-folder-open-alt:before{content:'\e6f0'}.icon-expand-alt:before{content:'\e6f1'}.icon-collapse-alt:before{content:'\e6f2'}.icon-smile:before{content:'\e6f3'}.icon-frown:before{content:'\e6f4'}.icon-meh:before{content:'\e6f5'}.icon-gamepad:before{content:'\e6f6'}.icon-keyboard:before{content:'\e6f7'}.icon-flag-alt:before{content:'\e6f8'}.icon-flag-checkered:before{content:'\e6f9'}.icon-terminal:before{content:'\e6fa'}.icon-code:before{content:'\e6fb'}.icon-reply-all:before{content:'\e6fc'}.icon-star-half-full:before{content:'\e6fd'}.icon-location-arrow:before{content:'\e6fe'}.icon-crop:before{content:'\e6ff'}.icon-code-fork:before{content:'\e700'}.icon-unlink:before{content:'\e701'}.icon-question:before{content:'\e702'}.icon-info:before{content:'\e703'}.icon-shield:before{content:'\e70b'}.icon-calendar-empty:before{content:'\e70c'}.icon-rocket:before{content:'\e70e'}.icon-chevron-sign-left:before{content:'\e70f'}.icon-chevron-sign-right:before{content:'\e710'}.icon-chevron-sign-up:before{content:'\e711'}.icon-chevron-sign-down:before{content:'\e712'}.icon-html5:before{content:'\e713'}.icon-anchor:before{content:'\e714'}.icon-unlock-alt:before{content:'\e715'}.icon-bullseye:before{content:'\e716'}.icon-ellipsis-h:before{content:'\e717'}.icon-ellipsis-v:before{content:'\e718'}.icon-rss-sign:before{content:'\e719'}.icon-play-sign:before{content:'\e71a'}.icon-minus-sign-alt:before{content:'\e71c'}.icon-plus-sign-alt:before{content:'\f0fe'}.icon-check-minus:before{content:'\e71d'}.icon-check-plus:before{content:'\f196'}.icon-level-up:before{content:'\e71e'}.icon-level-down:before{content:'\e71f'}.icon-check-sign:before{content:'\e720'}.icon-edit-sign:before{content:'\e721'}.icon-external-link-sign:before{content:'\e722'}.icon-share-sign:before{content:'\e723'}.icon-compass:before{content:'\e724'}.icon-collapse:before{content:'\e725'}.icon-collapse-top:before{content:'\e726'}.icon-expand:before{content:'\e727'}.icon-dollar:before{content:'\e728'}.icon-yen:before{content:'\e729'}.icon-file:before{content:'\e72b'}.icon-file-text:before{content:'\e72c'}.icon-sort-by-alphabet:before{content:'\e72d'}.icon-sort-by-alphabet-alt:before{content:'\e72e'}.icon-sort-by-attributes:before{content:'\e72f'}.icon-sort-by-attributes-alt:before{content:'\e730'}.icon-sort-by-order:before{content:'\e731'}.icon-sort-by-order-alt:before{content:'\e732'}.icon-thumbs-up:before{content:'\e733'}.icon-thumbs-down:before{content:'\e734'}.icon-long-arrow-down:before{content:'\e736'}.icon-long-arrow-up:before{content:'\e737'}.icon-long-arrow-left:before{content:'\e738'}.icon-long-arrow-right:before{content:'\e739'}.icon-apple:before{content:'\e73a'}.icon-windows:before{content:'\e73b'}.icon-android:before{content:'\e73c'}.icon-linux:before{content:'\e73d'}.icon-sun:before{content:'\e742'}.icon-moon:before{content:'\e743'}.icon-archive:before{content:'\e744'}.icon-bug:before{content:'\e745'}.icon-alipay:before,.icon-zhifubao:before{content:'\e901'}.icon-alipay-square:before,.icon-zhifubao-square:before{content:'\e900'}.icon-taobao:before{content:'\e902'}.icon-weibo:before{content:'\e746'}.icon-renren:before{content:'\e747'}.icon-chrome:before{content:'\e76c'}.icon-firefox:before{content:'\e76d'}.icon-ie:before{content:'\e76e'}.icon-opera:before{content:'\e76f'}.icon-safari:before{content:'\e770'}.icon-node:before{content:'\e76a'}.icon-layout:before{content:'\e768'}.icon-usecase:before{content:'\e74a'}.icon-stack:before{content:'\e769'}.icon-branch:before{content:'\e74b'}.icon-chat:before{content:'\e74c'}.icon-chat-line:before{content:'\e74f'}.icon-comment-line:before{content:'\e74f'}.icon-chat-dot:before{content:'\e750'}.icon-cube:before{content:'\e751'}.icon-database:before{content:'\f1c0'}.icon-align-left:before{content:'\e633'}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:19.5px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:5px 0 0;margin-top:0\9;line-height:normal}input[type=file]{display:block}select[multiple],select[size]{height:auto}select:-moz-focusring{color:transparent;text-shadow:0 0 0 #000}select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}.form-control::-webkit-input-placeholder{color:grey}.form-control::-moz-placeholder{color:grey}.form-control:-ms-input-placeholder{color:grey}.form-control::placeholder{color:grey}.form-control{display:block;width:100%;height:32px;padding:5px 8px;font-size:13px;line-height:1.53846154;color:#222;vertical-align:middle;background-color:#fff;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s}.form-control.focus,.form-control:focus{border-color:#145ccd;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(20,92,205,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(20,92,205,.6)}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#e5e5e5}.form-control[readonly]{cursor:default}textarea.form-control{height:auto}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:3px;margin-top:4px\9;margin-left:-20px}.os-android .checkbox input[type=checkbox],.os-android .checkbox-inline input[type=checkbox],.os-android .radio input[type=radio],.os-android .radio-inline input[type=radio]{margin-top:0}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.input-sm{height:24px;padding:2px 8px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:24px;line-height:24px}textarea.input-sm{height:auto}.input-lg{height:43px;padding:10px 16px;font-size:17px;line-height:1.25;border-radius:6px}select.input-lg{height:43px;line-height:43px}textarea.input-lg{height:auto}.has-warning .help-block,.has-warning>label{color:#f1a325}.has-warning .form-control{border-color:#f1a325;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#d5890e;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #f7cb85;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #f7cb85}.has-warning .input-group-addon{color:#f1a325;background-color:#fff0d5;border-color:#f1a325}.has-error .help-block,.has-error>label{color:#ea644a}.has-error .form-control{border-color:#ea644a;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#e53d1c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #f5b2a5;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #f5b2a5}.has-error .input-group-addon{color:#ea644a;background-color:#ffe5e0;border-color:#ea644a}.has-success .help-block,.has-success>label{color:#38b03f}.has-success .form-control{border-color:#38b03f;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2c8931;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #79d57f;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #79d57f}.has-success .input-group-addon{color:#38b03f;background-color:#ddf4df;border-color:#38b03f}.form-control-static{min-height:33px;padding-top:6px;padding-bottom:6px;margin-bottom:0}.help-block{display:block;margin:5px 0;color:#757575}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{float:none;margin-left:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .form-group>label,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:6px;margin-top:0;margin-bottom:0}.form-horizontal .form-group{margin-right:-10px;margin-left:-10px}@media (min-width:768px){.form-horizontal .form-group>label{text-align:right}}.required{position:relative}.required:after{position:absolute;top:0;right:-10px;display:inline-block;font-size:17px;color:#ea644a;content:'*'}.form-horizontal .required:after{top:5px;right:-1px}.form-condensed .form-group{margin-bottom:10px}.form-condensed .form-control{height:24px;padding:2px 8px;font-size:12px;line-height:1.5;border-radius:3px}select.form-condensed .form-control{height:24px;line-height:24px}textarea.form-condensed .form-control{height:auto}.form-condensed textarea.form-control{height:auto}.form-condensed .btn{padding:2px 8px;font-size:12px;line-height:1.5;border-radius:4px}.form-condensed .input-group>.form-control,.form-condensed .input-group>.input-group-addon,.form-condensed .input-group>.input-group-btn>.btn{padding:2px 8px;font-size:12px;border-radius:3px}.form-condensed .input-group .form-control:first-child,.form-condensed .input-group-addon:first-child,.form-condensed .input-group-btn:first-child>.btn,.form-condensed .input-group-btn:first-child>.btn-group-vertical>.btn,.form-condensed .input-group-btn:first-child>.btn-group>.btn,.form-condensed .input-group-btn:first-child>.dropdown-toggle,.form-condensed .input-group-btn:last-child>.btn-group-vertical:not(:last-child)>.btn,.form-condensed .input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.form-condensed .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.form-condensed .input-group .form-control:last-child,.form-condensed .input-group-addon:last-child,.form-condensed .input-group-btn:first-child>.btn-group-vertical:not(:first-child)>.btn,.form-condensed .input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.form-condensed .input-group-btn:first-child>.btn:not(:first-child),.form-condensed .input-group-btn:last-child>.btn,.form-condensed .input-group-btn:last-child>.btn-group-vertical>.btn,.form-condensed .input-group-btn:last-child>.btn-group>.btn,.form-condensed .input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.form-condensed .input-group-addon:first-child{border-right:0}.form-condensed .input-group-addon:last-child{border-left:0}.form-condensed .input-group-addon.fix-border,.form-condensed .input-group-btn.fix-border>.btn{border-right:0;border-left:0;border-radius:0}.form-condensed.form-horizontal .checkbox,.form-condensed.form-horizontal .checkbox-inline,.form-condensed.form-horizontal .form-group>label,.form-condensed.form-horizontal .radio,.form-condensed.form-horizontal .radio-inline{padding-top:1px}.switch{position:relative}.switch>input{position:absolute;top:0;left:0;display:block;width:100%;height:100%;margin:0;opacity:0}.switch>label{display:block;padding:5px 0 5px 35px;margin:0;font-weight:400;line-height:20px}.switch>label:after,.switch>label:before{position:absolute;top:5px;left:0;display:block;width:30px;height:20px;pointer-events:none;content:' ';border:1px solid #ddd;border-radius:10px;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.switch>label:after{top:6px;width:18px;height:18px;background-color:#fff;border-color:#ccc;border-radius:9px;-webkit-box-shadow:rgba(0,0,0,.05) 0 1px 4px,rgba(0,0,0,.12) 0 1px 2px;box-shadow:rgba(0,0,0,.05) 0 1px 4px,rgba(0,0,0,.12) 0 1px 2px}.switch>input:checked+label:before{background-color:#3280fc;border-color:#3280fc}.switch>input:checked+label:after{left:11px;border-color:#fff}.switch.text-left>label{padding:5px 35px 5px 0}.switch.text-left>label:after,.switch.text-left>label:before{right:0;left:auto}.switch.text-left>label:after{right:12px}.switch.text-left>input:checked+label:after{right:1px;left:auto}.switch.disabled{pointer-events:none}.switch.disabled>label,.switch>input[disabled]+label{color:#ddd;pointer-events:none}.switch.disabled>label:before,.switch>input[disabled]+label:before{background-color:#fafafa}.switch.disabled>label:after,.switch>input[disabled]+label:after{opacity:.7}.switch.disabled>input:checked+label:before,.switch>input[disabled]:checked+label:before{background-color:#ccc;border-color:#ccc}.switch input:focus+label{color:#3280fc}.switch input:focus+label:before{border-color:#3280fc}.switch-inline{display:inline-block}.checkbox-primary{position:relative;display:inline-block}.checkbox-primary>label{padding-left:25px;cursor:pointer}.checkbox-primary>label:after,.checkbox-primary>label:before{position:absolute;top:2px;right:0;left:0;display:block;width:16px;height:16px;line-height:16px;text-align:center;content:' ';border-radius:2px}.checkbox-primary>label:after{z-index:1;border:1px solid grey;-webkit-transition:.4s cubic-bezier(.175,.885,.32,1);-o-transition:.4s cubic-bezier(.175,.885,.32,1);transition:.4s cubic-bezier(.175,.885,.32,1);-webkit-transition-property:border,background-color;-o-transition-property:border,background-color;transition-property:border,background-color}.checkbox-primary>label:before{top:3px;z-index:2;font-family:ZenIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-transform:none;content:'\e60d';opacity:0;-webkit-transition:.2s cubic-bezier(.175,.885,.32,1);-o-transition:.2s cubic-bezier(.175,.885,.32,1);transition:.2s cubic-bezier(.175,.885,.32,1);-webkit-transition-property:opacity,-webkit-transform;-o-transition-property:opacity,-o-transform;transition-property:opacity,-webkit-transform;transition-property:opacity,transform;transition-property:opacity,transform,-webkit-transform,-o-transform;-webkit-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0);speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.checkbox-primary.checked>label:after{background-color:#3280fc;border-color:#3280fc;border-width:4px}.checkbox-primary.checked>label:before{color:#fff;opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.close{float:right;font-size:19.5px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}@media (min-width:768px){::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-button{width:0;height:0}::-webkit-scrollbar-button:end:increment,::-webkit-scrollbar-button:start:decrement{display:block}::-webkit-scrollbar-button:vertical:end:decrement,::-webkit-scrollbar-button:vertical:start:increment{display:none}::-webkit-scrollbar-thumb:horizontal,::-webkit-scrollbar-thumb:vertical,::-webkit-scrollbar-track:horizontal,::-webkit-scrollbar-track:vertical{border-color:transparent;border-style:solid}::-webkit-scrollbar-track:vertical::-webkit-scrollbar-track:horizontal{background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box}::-webkit-scrollbar-thumb{min-height:28px;padding-top:100;background-color:rgba(0,0,0,.2);-webkit-background-clip:padding-box;background-clip:padding-box;border-radius:5px;-webkit-box-shadow:inset 1px 1px 0 rgba(0,0,0,.1),inset 0 -1px 0 rgba(0,0,0,.07)}::-webkit-scrollbar-thumb:hover{background-color:rgba(0,0,0,.4);-webkit-box-shadow:inset 1px 1px 1px rgba(0,0,0,.25)}::-webkit-scrollbar-thumb:active{background-color:rgba(0,0,0,.5);-webkit-box-shadow:inset 1px 1px 3px rgba(0,0,0,.35)}::-webkit-scrollbar-thumb:horizontal,::-webkit-scrollbar-thumb:vertical,::-webkit-scrollbar-track:horizontal,::-webkit-scrollbar-track:vertical{border-width:0}::-webkit-scrollbar-track:hover{background-color:rgba(0,0,0,.05);-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.1)}::-webkit-scrollbar-track:active{background-color:rgba(0,0,0,.05);-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.14),inset -1px -1px 0 rgba(0,0,0,.07)}.scrollbar-hover::-webkit-scrollbar,.scrollbar-hover::-webkit-scrollbar-button,.scrollbar-hover::-webkit-scrollbar-thumb,.scrollbar-hover::-webkit-scrollbar-track{visibility:hidden}.scrollbar-hover:hover::-webkit-scrollbar,.scrollbar-hover:hover::-webkit-scrollbar-button,.scrollbar-hover:hover::-webkit-scrollbar-thumb,.scrollbar-hover:hover::-webkit-scrollbar-track{visibility:visible}}table{max-width:100%;background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:grey;text-align:left}th{text-align:left}.table{width:100%;margin-bottom:20px}.table td,.table th{padding:8px;line-height:1.53846154;vertical-align:top;border-bottom:1px solid #ddd;-webkit-transition:background .2s cubic-bezier(.175,.885,.32,1);-o-transition:background .2s cubic-bezier(.175,.885,.32,1);transition:background .2s cubic-bezier(.175,.885,.32,1)}.table>thead>tr>th{vertical-align:bottom;background-color:#f1f1f1;border-bottom:1px solid #ddd}.table>tbody+tbody{border-top:2px solid #ddd}.table-fixed{table-layout:fixed}.table-fixed td,.table-fixed th{overflow:hidden;white-space:nowrap}.table-fixed .nofixed,.table-fixed tfoot>tr>td,.table-fixed tfoot>tr>th{overflow:visible}.table-borderless td,.table-borderless th,.table-borderless thead>tr>th{border:none}.table-auto{width:auto;max-width:100%}.table-condensed td,.table-condensed th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered td,.table-bordered th{border:1px solid #ddd}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#ebf2f9}table col[class*=col-]{display:table-column;float:none}table td[class*=col-],table th[class*=col-]{display:table-cell;float:none}.table tr.active>td,.table tr.active>th,.table tr>td.active,.table tr>th.active{background-color:#ffe7bc}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#ddf4df;border-color:#bae8b6}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#caeecd;border-color:#a8e1a3}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#ffe5e0;border-color:#ffc6c7}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ffd0c6;border-color:#ffadad}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fff0d5;border-color:#ffdcbc}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#ffe7bc;border-color:#ffcea2}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered th{border-top:none}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.label-badge{float:right}.list-group-item>.label-badge+.label-badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#353535;text-decoration:none;background-color:#ebf2f9}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#3280fc;border-color:#3280fc}.list-group-item.active .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#e6e6e6}.list-group-item-heading{margin-top:0;margin-bottom:5px;color:#333}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-color:#ddd;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-body{padding:15px}.panel>.table{margin-bottom:0}.panel>.panel-body+.table{border-top:1px solid #ddd}.panel-heading{padding:8px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-title{margin-top:0;margin-bottom:0;font-size:15px}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-primary{border-color:#3280fc}.panel-primary>.panel-heading{color:#fff;background-color:#3280fc;border-color:#3280fc}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#3280fc}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#3280fc}.panel-success{border-color:#bae8b6}.panel-success>.panel-heading{color:#38b03f;background-color:#ddf4df;border-color:#bae8b6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#bae8b6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bae8b6}.panel-warning{border-color:#ffdcbc}.panel-warning>.panel-heading{color:#f1a325;background-color:#fff0d5;border-color:#ffdcbc}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#ffdcbc}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ffdcbc}.panel-danger{border-color:#ffc6c7}.panel-danger>.panel-heading{color:#ea644a;background-color:#ffe5e0;border-color:#ffc6c7}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ffc6c7}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ffc6c7}.panel-info{border-color:#a2e4de}.panel-info>.panel-heading{color:#03b8cf;background-color:#ddf3f5;border-color:#a2e4de}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#a2e4de}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#a2e4de}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.alert{padding:15px;margin-bottom:20px;color:#282828;background-color:#f1f1f1;border-radius:3px;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.alert hr{border-top-color:#e4e4e4}.alert .alert-link{color:#161616}.alert h4{margin-top:0;color:inherit}.alert hr{margin:10px 0}.alert p,.alert ul{margin-bottom:0}.alert p+p{margin-top:5px}.alert-link{font-weight:700}.alert>[class*=icon-]{float:left;margin-top:-5px;font-size:42px;opacity:.6;-webkit-transition:opacity .2s cubic-bezier(.175,.885,.32,1);-o-transition:opacity .2s cubic-bezier(.175,.885,.32,1);transition:opacity .2s cubic-bezier(.175,.885,.32,1)}.alert>[class*=icon-]+.content{min-height:30px;margin-left:64px}.alert.with-icon{display:table;width:100%}.alert.with-icon>[class*=icon-],.alert.with-icon>[class*=icon-]+.content{display:table-cell;float:none;min-height:0;margin:0;vertical-align:middle}.alert.with-icon>[class*=icon-]{width:48px;text-align:center}.alert.with-icon>[class*=icon-]+.content{padding-left:1em}.alert-block{margin:0;border-radius:0}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-6px;right:-21px;color:inherit}.alert-primary{color:#282828;background-color:#ebf2f9}.alert-primary hr{border-top-color:#d0e0f1}.alert-primary .alert-link{color:#161616}.alert-success{color:#329d38;background-color:#ddf4df}.alert-success hr{border-top-color:#bae8b6}.alert-success .alert-link{color:#29822e}.alert-info{color:#03a2b6;background-color:#ddf3f5}.alert-info hr{border-top-color:#a2e4de}.alert-info .alert-link{color:#028293}.alert-warning{color:#ed980f;background-color:#fff0d5}.alert-warning hr{border-top-color:#ffdcbc}.alert-warning .alert-link{color:#cc830d}.alert-danger{color:#e75033;background-color:#ffe5e0}.alert-danger hr{border-top-color:#ffc6c7}.alert-danger .alert-link{color:#dd391a}.alert-inverse{color:#fff;background-color:#353535;border-color:#353535}.alert-inverse hr{border-top-color:#ddd;border-top-color:rgba(221,221,221,.25)}.alert-inverse .alert-link{color:rgba(255,255,255,.8)}.alert-primary-inverse{color:#fff;background-color:#3280fc;border-color:#3280fc}.alert-primary-inverse hr{border-top-color:#ddd;border-top-color:rgba(221,221,221,.25)}.alert-primary-inverse .alert-link{color:rgba(255,255,255,.8)}.alert-success-inverse{color:#fff;background-color:#38b03f;border-color:#38b03f}.alert-success-inverse hr{border-top-color:#ddd;border-top-color:rgba(221,221,221,.25)}.alert-success-inverse .alert-link{color:rgba(255,255,255,.8)}.alert-info-inverse{color:#fff;background-color:#03b8cf;border-color:#03b8cf}.alert-info-inverse hr{border-top-color:#ddd;border-top-color:rgba(221,221,221,.25)}.alert-info-inverse .alert-link{color:rgba(255,255,255,.8)}.alert-warning-inverse{color:#fff;background-color:#f1a325;border-color:#f1a325}.alert-warning-inverse hr{border-top-color:#ddd;border-top-color:rgba(221,221,221,.25)}.alert-warning-inverse .alert-link{color:rgba(255,255,255,.8)}.alert-danger-inverse{color:#fff;background-color:#ea644a;border-color:#ea644a}.alert-danger-inverse hr{border-top-color:#ddd;border-top-color:rgba(221,221,221,.25)}.alert-danger-inverse .alert-link{color:rgba(255,255,255,.8)}.input-control-icon-left,.input-control-icon-right,.input-control-label-left,.input-control-label-right{position:absolute;top:1px;z-index:5;height:30px;line-height:30px;opacity:.5}.input-control-icon-left,.input-control-icon-right{width:30px;text-align:center}.input-control-icon-left,.input-control-label-left{left:1px}.input-control-icon-right,.input-control-label-right{right:1px}.input-control-label-left,.input-control-label-right{width:70px;padding:0 8px;overflow:hidden;text-overflow:ellipsis}.has-label-left-sm>.input-control-label-left,.has-label-left-sm>.input-control-label-right{width:55px}.has-label-left-lg>.input-control-label-left,.has-label-left-lg>.input-control-label-right{width:95px}.input-control{position:relative}.input-control.has-icon-left>.form-control{padding-left:30px}.input-control.has-icon-right>.form-control{padding-right:30px}.input-control.has-label-left>.form-control{padding-left:70px}.input-control.has-label-right>.form-control{padding-right:70px}.input-control.has-label-left-sm>.form-control{padding-left:55px}.input-control.has-label-right-sm>.form-control{padding-right:55px}.input-control.has-label-left-lg>.form-control{padding-left:95px}.input-control.has-label-right-lg>.form-control{padding-right:95px}.input-control>a:hover{background-color:#f1f1f1;opacity:1}.form-control:focus+[class^=input-control-],.form-control:focus+[class^=input-control-]+[class^=input-control-]{opacity:1}.form-control:focus+.input-control-label-left{color:#145ccd}.empty+.search-clear-btn,.empty+.search-icon+.search-clear-btn{opacity:0!important}input:placeholder-shown+.search-clear-btn,input:placeholder-shown+.search-icon+.search-clear-btn{opacity:0!important}.search-box-circle .input-control-icon-left,.search-box-circle .input-control-icon-right,.search-box-circle>.form-control{border-radius:16px}.search-box-circle+.input-group-btn>.btn{border-radius:0 16px 16px 0}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:5px 12px;font-size:13px;font-weight:400;line-height:1;color:#222;text-align:center;background-color:#e5e5e5;border:1px solid #ccc;border-radius:4px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group-addon.fix-border{border-right:0;border-left:0}.input-group-addon:empty{width:1px;padding:0}.input-group-addon.fix-padding{width:1px;padding:0}.input-group-btn.fix-border>.btn{border-right:0;border-left:0;border-radius:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group-vertical>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group-vertical:not(:last-child)>.btn,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group-vertical:not(:first-child)>.btn,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group-vertical>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:first-child{border-right:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group,.input-group-btn:first-child>.btn-group-vertical{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group,.input-group-btn:last-child>.btn-group-vertical{margin-left:-1px}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:43px;padding:10px 16px;font-size:17px;line-height:1.25;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:43px;line-height:43px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:24px;padding:2px 8px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:24px;line-height:24px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon.input-sm{padding:2px 8px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:17px;border-radius:6px}.code,code,kbd,pre,samp{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}code,kbd{padding:2px 4px;font-size:90%;color:#37474f;background-color:#f3f5f7;border-radius:4px}kbd{padding:1px 4px;font-weight:700;color:#666;background-color:#f1f1f1;border:1px solid #d7d7d7;border-bottom-width:2px}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:12px;line-height:1.38461538;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;margin:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.com{color:#93a1a1}.lit{color:#195f91}.clo,.opn,.pun{color:#93a1a1}.fun{color:#dc322f}.atv,.str{color:#d14}.kwd,.prettyprint .tag{color:#1e347b}.atn,.dec,.typ,.var{color:teal}.pln{color:#48484c}.prettyprint.linenums{-webkit-box-shadow:inset 40px 0 0 #fbfbfc,inset 41px 0 0 #ececf0;box-shadow:inset 40px 0 0 #fbfbfc,inset 41px 0 0 #ececf0}.prettyprint ol.linenums{padding-left:35px;margin-bottom:0;line-height:20px;color:#bebec5;text-shadow:0 1px 0 #fff}.pager{display:inline-block;padding-left:0;margin:20px 0;list-style:none}.pager>li{display:inline}.pager>li>a,.pager>li>span{position:relative;float:left;padding:5px 12px;margin-left:-1px;line-height:1.53846154;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pager>li:first-child>a,.pager>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pager>li:last-child>a,.pager>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pager>li>a:focus,.pager>li>a:hover,.pager>li>span:focus,.pager>li>span:hover{z-index:2;background-color:#e5e5e5}.pager>li.active>a,.pager>li.active>a:hover,.pager>li.active>span,.pager>li.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#3280fc;border-color:#3280fc}.pager>li.disabled>a,.pager>li.disabled>a:focus,.pager>li.disabled>a:hover,.pager>li.disabled>span,.pager>li.disabled>span:focus,.pager>li.disabled>span:hover{color:#ddd;pointer-events:none;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pager-justify{display:block}.pager-justify .next>a,.pager-justify .next>span{float:right;border-radius:4px}.pager-justify .previous>a,.pager-justify .previous>span{float:left;border-radius:4px}.pager-goto{width:100px;text-align:center}.pager>li>div{float:left}.pager>li .pager-goto,.pager>li .pager-size-menu,.pager>li.space{margin:0 5px}.pager-label{position:relative;float:left;padding:5px 4px;margin-left:-1px;line-height:1.53846154;text-decoration:none;border:1px solid transparent}.pager-item-left>a{border-top-left-radius:4px;border-bottom-left-radius:4px}.pager-item-right>a{border-top-right-radius:4px;border-bottom-right-radius:4px}.pager-lg>li>a,.pager-lg>li>span{padding:10px 16px;font-size:17px}.pager-lg>li:first-child>a,.pager-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pager-lg>li:last-child>a,.pager-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pager-sm>li>a,.pager-sm>li>span{padding:2px 8px;font-size:12px}.pager-sm>li:first-child>a,.pager-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pager-sm>li:last-child>a,.pager-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager-pills>li:first-child>a,.pager-pills>li:first-child>span{border-radius:16px 0 0 16px}.pager-pills>li:last-child>a,.pager-pills>li:last-child>span{border-radius:0 16px 16px 0}.pager-pills.pager-justify>li>a,.pager-pills.pager-justify>li>span{border-radius:16px}.pager-loose{display:block;margin:20px 0}.pager-loose.pager-pills>li>a,.pager-loose.pager-pills>li>span{border-radius:16px}.pager-loose>li>a,.pager-loose>li>span{margin-left:5px;border-radius:4px}.pager-loose>li:first-child>a,.pager-loose>li:first-child>span{margin-left:0}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>.nav-heading{padding:8px 15px;font-weight:700;color:grey}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:8px 15px;color:#353535}.nav>li>a:focus,.nav>li>a:hover{color:#0d3d88;text-decoration:none;background-color:#f1f1f1}.nav>li.disabled>a{color:#ddd}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#ddd;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#f1f1f1;border-color:#145ccd}.nav>li>a>img{max-width:none}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:20px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#3280fc}.nav-primary>li{float:left;margin-left:-1px}.nav-primary>li:first-child>a{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.nav-primary>li:last-child>a{border-top-right-radius:4px;border-bottom-right-radius:4px}.nav-primary>li>a{border:1px solid #ddd}.nav-primary>li.active>a,.nav-primary>li.active>a:focus,.nav-primary>li.active>a:hover{color:#fff;background-color:#3280fc;border-color:#3280fc}.nav-secondary>li{float:left}.nav-secondary>li>a{border-bottom:2px solid #e5e5e5}.nav-secondary>li.active>a,.nav-secondary>li.active>a:focus,.nav-secondary>li.active>a:hover{color:#3280fc;border-bottom-color:#3280fc}.nav-secondary>li.nav-heading{border-bottom:2px solid #e5e5e5}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-stacked.nav-primary>li,.nav-stacked.nav-primary>li>a{margin-left:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li+li{margin-top:-1px}.nav-stacked.nav-primary>li:first-child{margin-top:0}.nav-stacked.nav-primary>li:first-child.nav-heading,.nav-stacked.nav-primary>li:first-child>a{margin-left:0;border-top-left-radius:4px;border-top-right-radius:4px}.nav-stacked.nav-primary>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.nav-stacked.nav-primary>li.nav-heading{background-color:#f1f1f1;border:1px solid #ddd}.nav-stacked.nav-secondary>li>a{border:none;border-top-right-radius:4px;border-bottom-right-radius:4px;-webkit-box-shadow:inset 2px 0 0 #f5f5f5;box-shadow:inset 2px 0 0 #f5f5f5}.nav-stacked.nav-secondary>li>a:hover{-webkit-box-shadow:inset 2px 0 0 #e5e5e5;box-shadow:inset 2px 0 0 #e5e5e5}.nav-stacked.nav-secondary>li+li{margin-top:-1px}.nav-stacked.nav-secondary>li:first-child{margin-top:0}.nav-stacked.nav-secondary>li.active>a,.nav-stacked.nav-secondary>li.active>a:focus,.nav-stacked.nav-secondary>li.active>a:hover{background-color:#f5f5f5;-webkit-box-shadow:inset 2px 0 0 #3280fc;box-shadow:inset 2px 0 0 #3280fc}.nav-stacked.nav-secondary>li.nav-heading{border-bottom:1px solid #ddd}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}.nav-justified.nav-primary>li+li>a{border-left:0}}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.53846154;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#e5e5e5 #e5e5e5 #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:grey;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}.nav-tabs.nav-justified.nav-primary>li+li>a{border-left:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}@-moz-document url-prefix(){.nav-tabs>li.active>a:focus .nav-tabs>li>a:focus{outline:0}}.nav-tabs.nav-stacked{border-right:1px solid #ddd;border-bottom:none}.nav-tabs.nav-stacked>li{float:none;margin-right:-1px;margin-bottom:0}.nav-tabs.nav-stacked>li>a{margin-right:0;border-radius:4px 0 0 4px}.nav-tabs.nav-stacked>li.active>a,.nav-tabs.nav-stacked>li.active>a:focus,.nav-tabs.nav-stacked>li.active>a:hover{border:1px solid #ddd;border-right-color:transparent}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:40px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:10px;padding-left:10px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-10px;margin-left:-10px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:40px;padding:10px 15px;font-size:17px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-10px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:3px;margin-right:3px;margin-bottom:3px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:5px -10px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px}.navbar-nav.nav-justified>li{float:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-nav.pull-right>li>.dropdown-menu,.navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar-btn{margin-top:4px;margin-bottom:4px}.navbar-text{float:left;margin-top:10px;margin-bottom:10px}@media (min-width:768px){.navbar-text{margin-right:10px;margin-left:10px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-10px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f7f7f7;border-color:#dedede}.navbar-default .navbar-brand{color:#333}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#1a1a1a;background-color:transparent}.navbar-default .navbar-text{color:#333}.navbar-default .navbar-nav>li>a{color:#333}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#222;background-color:#e5e5e5}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:grey}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#dedede}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#333}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#222;background-color:#e5e5e5}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#333}.navbar-default .navbar-link:hover{color:#222}.navbar-default .btn-link{color:#333}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#222}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#145ccd;border-color:#10479f}.navbar-inverse .navbar-brand{color:#ddd}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#ddd}.navbar-inverse .navbar-nav>li>a{color:#ddd}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:#1868e8}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#2a74ea}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#1251b6}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#114dad}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#2a74ea}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#10479f}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#10479f}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#ddd}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:#1868e8}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#2a74ea}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#ddd}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-form{padding:10px 10px;margin-top:4px;margin-right:-10px;margin-bottom:4px;margin-left:-10px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{float:none;margin-left:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.scale{-webkit-transition:all .15s ease;-o-transition:all .15s ease;transition:all .15s ease;-webkit-transform:scale(.8);-ms-transform:scale(.8);-o-transform:scale(.8);transform:scale(.8)}.scale.in{-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out,-o-transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal>.loader{display:none}.modal.modal-loading .modal-dialog{opacity:0}.modal.modal-loading .loader{position:absolute;top:35%;left:50%;display:block;width:80px;margin-left:-40px;font-size:56px;color:#fff;text-align:center}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-iframe .modal-body>iframe{border-radius:0 0 6px 6px}.modal-dialog{position:relative;width:auto;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-dialog.modal-moveable{position:absolute;margin:0}.modal-dialog.modal-moveable .modal-header{cursor:move}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.54px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.53846154}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn,.modal-footer .btn-group-vertical .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto;-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.modal-fullscreen{position:relative;width:100%!important;height:100%!important;margin:0;border-radius:0}.modal-fullscreen .modal-body{position:absolute;top:52px;right:0;bottom:0;left:0;overflow-y:auto}.tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=100);opacity:1}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#353535;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#353535}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#353535}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-width:5px 5px 0;border-top-color:#353535}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#353535}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#353535}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#353535}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#353535}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#353535}.tooltip-primary .tooltip-inner{background-color:#3280fc}.tooltip-primary.tooltip.top .tooltip-arrow{border-top-color:#3280fc}.tooltip-primary.tooltip.top-left .tooltip-arrow{border-top-color:#3280fc}.tooltip-primary.tooltip.top-right .tooltip-arrow{border-top-color:#3280fc}.tooltip-primary.tooltip.right .tooltip-arrow{border-right-color:#3280fc}.tooltip-primary.tooltip.left .tooltip-arrow{border-left-color:#3280fc}.tooltip-primary.tooltip.bottom .tooltip-arrow{border-bottom-color:#3280fc}.tooltip-primary.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#3280fc}.tooltip-primary.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#3280fc}.tooltip-success .tooltip-inner{background-color:#38b03f}.tooltip-success.tooltip.top .tooltip-arrow{border-top-color:#38b03f}.tooltip-success.tooltip.top-left .tooltip-arrow{border-top-color:#38b03f}.tooltip-success.tooltip.top-right .tooltip-arrow{border-top-color:#38b03f}.tooltip-success.tooltip.right .tooltip-arrow{border-right-color:#38b03f}.tooltip-success.tooltip.left .tooltip-arrow{border-left-color:#38b03f}.tooltip-success.tooltip.bottom .tooltip-arrow{border-bottom-color:#38b03f}.tooltip-success.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#38b03f}.tooltip-success.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#38b03f}.tooltip-info .tooltip-inner{background-color:#03b8cf}.tooltip-info.tooltip.top .tooltip-arrow{border-top-color:#03b8cf}.tooltip-info.tooltip.top-left .tooltip-arrow{border-top-color:#03b8cf}.tooltip-info.tooltip.top-right .tooltip-arrow{border-top-color:#03b8cf}.tooltip-info.tooltip.right .tooltip-arrow{border-right-color:#03b8cf}.tooltip-info.tooltip.left .tooltip-arrow{border-left-color:#03b8cf}.tooltip-info.tooltip.bottom .tooltip-arrow{border-bottom-color:#03b8cf}.tooltip-info.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#03b8cf}.tooltip-info.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#03b8cf}.tooltip-warning .tooltip-inner{background-color:#f1a325}.tooltip-warning.tooltip.top .tooltip-arrow{border-top-color:#f1a325}.tooltip-warning.tooltip.top-left .tooltip-arrow{border-top-color:#f1a325}.tooltip-warning.tooltip.top-right .tooltip-arrow{border-top-color:#f1a325}.tooltip-warning.tooltip.right .tooltip-arrow{border-right-color:#f1a325}.tooltip-warning.tooltip.left .tooltip-arrow{border-left-color:#f1a325}.tooltip-warning.tooltip.bottom .tooltip-arrow{border-bottom-color:#f1a325}.tooltip-warning.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#f1a325}.tooltip-warning.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#f1a325}.tooltip-danger .tooltip-inner{background-color:#ea644a}.tooltip-danger.tooltip.top .tooltip-arrow{border-top-color:#ea644a}.tooltip-danger.tooltip.top-left .tooltip-arrow{border-top-color:#ea644a}.tooltip-danger.tooltip.top-right .tooltip-arrow{border-top-color:#ea644a}.tooltip-danger.tooltip.right .tooltip-arrow{border-right-color:#ea644a}.tooltip-danger.tooltip.left .tooltip-arrow{border-left-color:#ea644a}.tooltip-danger.tooltip.bottom .tooltip-arrow{border-bottom-color:#ea644a}.tooltip-danger.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#ea644a}.tooltip-danger.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#ea644a}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:300px;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:4px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover.no-arrow.top{margin-top:0}.popover.no-arrow.right{margin-left:0}.popover.no-arrow.bottom{margin-top:0}.popover.no-arrow.left{margin-left:0}.popover-title{padding:8px 14px;margin:0;font-size:13px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:4px 4px 0 0}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{content:"";border-width:10px}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom .arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left .arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.popover-primary{border-color:#3280fc}.popover-primary .popover-title{color:#fff;background-color:#3280fc}.popover-primary.popover.top .arrow{border-top-color:#3280fc}.popover-primary.popover.right .arrow{border-right-color:#3280fc}.popover-primary.popover.left .arrow{border-left-color:#3280fc}.popover-primary.popover.bottom .arrow,.popover-primary.popover.bottom .arrow:after{border-bottom-color:#3280fc}.popover-success{border-color:#38b03f}.popover-success .popover-title{color:#fff;background-color:#38b03f}.popover-success.popover.top .arrow{border-top-color:#38b03f}.popover-success.popover.right .arrow{border-right-color:#38b03f}.popover-success.popover.left .arrow{border-left-color:#38b03f}.popover-success.popover.bottom .arrow,.popover-success.popover.bottom .arrow:after{border-bottom-color:#38b03f}.popover-info{border-color:#03b8cf}.popover-info .popover-title{color:#fff;background-color:#03b8cf}.popover-info.popover.top .arrow{border-top-color:#03b8cf}.popover-info.popover.right .arrow{border-right-color:#03b8cf}.popover-info.popover.left .arrow{border-left-color:#03b8cf}.popover-info.popover.bottom .arrow,.popover-info.popover.bottom .arrow:after{border-bottom-color:#03b8cf}.popover-warning{border-color:#f1a325}.popover-warning .popover-title{color:#fff;background-color:#f1a325}.popover-warning.popover.top .arrow{border-top-color:#f1a325}.popover-warning.popover.right .arrow{border-right-color:#f1a325}.popover-warning.popover.left .arrow{border-left-color:#f1a325}.popover-warning.popover.bottom .arrow,.popover-warning.popover.bottom .arrow:after{border-bottom-color:#f1a325}.popover-danger{border-color:#ea644a}.popover-danger .popover-title{color:#fff;background-color:#ea644a}.popover-danger.popover.top .arrow{border-top-color:#ea644a}.popover-danger.popover.right .arrow{border-right-color:#ea644a}.popover-danger.popover.left .arrow{border-left-color:#ea644a}.popover-danger.popover.bottom .arrow,.popover-danger.popover.bottom .arrow:after{border-bottom-color:#ea644a}.caret{display:inline-block;width:0;height:0;margin-bottom:2px;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:13px;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #cbcbcb;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.53846154;color:#353535;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#fff;text-decoration:none;background-color:#3280fc}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#3280fc;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#ddd}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-hover .dropdown-menu{margin:-1px 0}.dropdown-hover:hover>.dropdown-menu,.open>.dropdown-menu{display:block}.dropdown-hover:hover>a,.open>a{outline:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;font-weight:700;line-height:1.53846154;color:grey}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0 dotted;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;border-radius:4px}.dropdown-submenu.open>.dropdown-menu,.dropdown-submenu:hover>.dropdown-menu{display:block}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;border-radius:4px}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;content:" ";border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#ccc}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu>a{min-width:160px}.dropdown-submenu>.dropdown-menu.pull-left{left:-100%}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{color:#fff;text-decoration:none;background-color:#3280fc}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:10%;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=40);outline:0;opacity:.4}.carousel-control>.icon{font-size:20px}.carousel-control.left{background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.3)),to(rgba(0,0,0,.0001)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.3) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.3) 0,rgba(0,0,0,.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.3) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4d000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.3)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.3) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.3) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.3) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#4d000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=100);outline:0;opacity:1}.carousel-control .icon-chevron-left,.carousel-control .icon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-chevron-left,.carousel-control .icon-prev{left:50%}.carousel-control .icon-chevron-right,.carousel-control .icon-next{right:50%}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .icon-next,.carousel-control .icon-prev{top:40%;width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:80px}.carousel-control .icon-prev{left:30%}.carousel-control .icon-next{right:25%}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}[data-toggle=lightbox]{cursor:pointer}.modal-lightbox .close{position:absolute;top:0;right:0;z-index:10;display:block;width:40px;height:40px;font-size:14px;color:#fff;text-align:center;background-color:#353535;background-color:rgba(53,53,53,.2);filter:alpha(opacity=80);opacity:.8;-webkit-transition:opacity .2s cubic-bezier(.175,.885,.32,1),background-color .2s cubic-bezier(.175,.885,.32,1);-o-transition:opacity .2s cubic-bezier(.175,.885,.32,1),background-color .2s cubic-bezier(.175,.885,.32,1);transition:opacity .2s cubic-bezier(.175,.885,.32,1),background-color .2s cubic-bezier(.175,.885,.32,1)}.modal-lightbox .controller{position:absolute;top:0;display:none;height:100%;padding:0;line-height:100%;color:#fff;cursor:pointer;background-color:transparent;border:none;outline:0;-webkit-transition:background .2s cubic-bezier(.175,.885,.32,1);-o-transition:background .2s cubic-bezier(.175,.885,.32,1);transition:background .2s cubic-bezier(.175,.885,.32,1)}.modal-lightbox .controller.show{display:block}.modal-lightbox .controller>.icon{display:inline-block;width:60px;height:50px;line-height:50px;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:transparent;-webkit-transition:background .2s cubic-bezier(.175,.885,.32,1);-o-transition:background .2s cubic-bezier(.175,.885,.32,1);transition:background .2s cubic-bezier(.175,.885,.32,1)}.modal-lightbox .controller>.icon:before{font-size:20px}.modal-lightbox .controller.prev{left:0}.modal-lightbox .controller.next{right:0}.modal-lightbox .modal-dialog{position:relative;max-width:100%;max-height:100%;margin-bottom:0;background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.modal-lightbox .modal-dialog:focus .close,.modal-lightbox .modal-dialog:hover .close{background-color:rgba(53,53,53,.5);filter:alpha(opacity=100);opacity:1}.modal-lightbox .modal-dialog:focus .close:hover,.modal-lightbox .modal-dialog:hover .close:hover{background-color:rgba(53,53,53,.9)}.modal-lightbox .modal-dialog:focus .controller>.icon,.modal-lightbox .modal-dialog:hover .controller>.icon{text-shadow:none;background-color:#353535;background-color:rgba(53,53,53,.5)}.modal-lightbox .modal-dialog:focus .controller:hover>.icon,.modal-lightbox .modal-dialog:hover .controller:hover>.icon{background-color:#353535;background-color:rgba(53,53,53,.9)}.modal-lightbox .caption{display:none}.modal-lightbox.lightbox-with-caption .caption{position:absolute;bottom:0;display:block;width:100%;padding:10px 15px;color:#fff;text-align:center;text-shadow:1px 1px 0 rgba(0,0,0,.3);background:rgba(0,0,0,.15);opacity:.5;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.modal-lightbox.lightbox-with-caption .modal-dialog:hover .caption{background:rgba(0,0,0,.6);opacity:1}.lightbox-img{display:block;width:inherit;max-width:100%;height:auto;padding:0;margin:0 auto;cursor:pointer;-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5);-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.messager{display:table;margin:10px;overflow:hidden;color:#fff;pointer-events:auto;background-color:#353535;background-color:rgba(0,0,0,.8);border-radius:20px}.messager-content{display:table-cell;padding:10px 15px;vertical-align:top}.messager-content>[class^=icon-]{display:inline-block;margin-right:8px}.messager-actions{display:table-cell;vertical-align:top}.messager-actions>.action{min-width:40px;height:40px;padding:0 12px;color:#fafafa;color:rgba(255,255,255,.6);text-align:center;text-shadow:none;background:0 0;border:none}.messager-actions>.action.close{padding-bottom:5px;font-size:20px;font-weight:400;opacity:1}.messager-actions>.action:hover{color:#fff;background:rgba(0,0,0,.1)}.messager-actions .action-icon+.action-text{margin-left:8px}.messagers-holder{position:fixed;z-index:99999;padding:10px;pointer-events:none;-webkit-transition:top .2s cubic-bezier(.175,.885,.32,1);-o-transition:top .2s cubic-bezier(.175,.885,.32,1);transition:top .2s cubic-bezier(.175,.885,.32,1)}.messagers-holder.top{top:0}.messagers-holder.top-left{top:0;left:0}.messagers-holder.top-right{top:0;right:0}.messagers-holder.bottom{bottom:0}.messagers-holder.bottom-left{bottom:0;left:0}.messagers-holder.bottom-right{right:0;bottom:0}.messagers-holder.bottom-right .messager,.messagers-holder.top-right .messager{margin-left:auto}.messagers-holder.center{top:0}.messagers-holder.bottom,.messagers-holder.center,.messagers-holder.top{right:0;left:0}.messagers-holder.bottom .messager,.messagers-holder.center .messager,.messagers-holder.top .messager{margin:10px auto}.messager-primary{background-color:#3280fc}.messager-success{background-color:#38b03f}.messager-info{background-color:#03b8cf}.messager-warning{background-color:#f1a325}.messager-danger{background-color:#ea644a}.messager-important{background-color:#bd7b46}.messager-special{background-color:#8666b8}.article{padding:20px}.article>header h1,.article>header h2,.article>header h3{margin-bottom:20px;line-height:1.5}.article>header>.abstract,.article>header>dl{padding:10px 15px;font-size:12px;color:#686868;background-color:#f1f1f1}.article>header>.abstract>p:last-child,.article>header>dl>p:last-child{margin-bottom:0}.article>header>dl{margin:0;border-bottom:1px solid #e9e9e9}.article>header>dl.pull-right{background-color:transparent;border:none}.article>footer{border-top:1px dashed #d7d7d7}.article>footer>p{padding:10px 15px}.article-content,.article>.content{padding:20px 0;font-size:14px;line-height:1.78571429}.article-content h1,.article>.content h1{font-size:20px}.article-content h2,.article>.content h2{font-size:18px}.article-content h3,.article>.content h3{font-size:16px}.article-content h4,.article>.content h4{margin-top:15px;font-size:14px}.article-content h5,.article>.content h5{margin-top:15px;font-size:13px}.article-content h6,.article>.content h6{margin-top:15px;font-size:11px}.article-content img,.article>.content img{margin:10px 0}.article-content p>img,.article>.content p>img{margin-right:10px}.article-content p>img[align=right],.article>.content p>img[align=right]{margin-left:10px}.article-content dl,.article>.content dl{padding-right:2em;padding-left:2em}.article-content table,.article>.content table{margin-bottom:20px}.article-content table td,.article-content table th,.article>.content table td,.article>.content table th{padding:8px;line-height:1.53846154;vertical-align:top;border-bottom:1px solid #ddd}.article-content table>thead>tr>th,.article>.content table>thead>tr>th{vertical-align:bottom;background-color:#f1f1f1;border-bottom:1px solid #ddd}.article-content p{margin-bottom:0}.article-content table{width:100%}.article>.content table td,.article>.content table th,.article>.content table>thead>tr>th{border:1px solid #ddd}body.article-content{padding:8px}.article-condensed{padding:20px 0}.article-condensed>header{padding:0 20px}.article-condensed>header>.abstract,.article-condensed>header>dl{padding:10px 15px;margin:0 -20px}.article-condensed>.article-content,.article-condensed>.content{padding:20px}.article-condensed>.article-content>img,.article-condensed>.article-content>pre,.article-condensed>.content>img,.article-condensed>.content>pre{margin-right:-20px;margin-left:-20px;border-radius:0}.article-condensed>.article-content>pre,.article-condensed>.content>pre{border-right:none;border-left:none}.article-condensed>footer{border-top:1px dashed #d7d7d7}.article-condensed>footer>p{padding:10px 15px}.article-condensed>footer>.pager-justify>.previous>a{border-left:none;border-radius:0}.article-condensed>footer>.pager-justify>.next>a{border-right:none;border-radius:0}.comments>header{border-bottom:1px solid #e5e5e5}.comments>header>.alert{padding:7.5px 15px;margin-bottom:-10px}.comments>header h1,.comments>header h2,.comments>header h3{padding:10px 0;margin:10px 0}.comments>footer{padding-top:10px}.comments>footer>.reply-form>.avatar{display:block;float:left;width:40px;height:40px;margin-top:10px}.comments>footer>.reply-form>.avatar+.form{padding-left:50px}.comment{padding:10px 0;border-bottom:1px solid #e5e5e5}.comment:after,.comment:before{display:table;content:" "}.comment:after{clear:both}.comment:after,.comment:before{display:table;content:" "}.comment:after{clear:both}.comment>.avatar,.comment>.content{display:block}.comment>.avatar{float:left;width:40px;height:40px;margin-top:10px}.comment>.avatar+.content{padding-left:50px}.comment>.content>.text{margin-top:5px}.comment>.content>.actions{margin-top:4px}.comment>.content>.actions>a{display:inline-block;color:grey}.comment>.content>.actions>a+a{margin-left:5px}.comment:hover>.content>.actions>a{color:#145ccd}.comment>.comments-list{padding-top:10px;padding-bottom:0;padding-left:30px;margin-left:20px;border-left:1px dashed #e5e5e5}.comment>.comments-list>.comment{border:none;border-top:1px solid #e5e5e5}.comment>.comments-list>.comment:last-child{padding-bottom:0}.list{padding:0 15px}.list>header{padding-bottom:10px;border-bottom:1px solid #e5e5e5}.items .item{padding:10px 0;border-bottom:1px solid #e5e5e5;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.items .item-heading h1,.items .item-heading h2,.items .item-heading h3,.items .item-heading h4,.items .item-heading h5,.items .item-heading>h6{margin-top:5px}.items .item-content:after,.items .item-content:before{display:table;content:" "}.items .item-content:after{clear:both}.items .item-content:after,.items .item-content:before{display:table;content:" "}.items .item-content:after{clear:both}.items .item-content>.media{max-width:100%;margin:5px 0}.items .item-content>.media.pull-left{max-width:150px;margin:0;margin-right:8px}.items .item-content>.media.pull-right{max-width:150px;margin:0;margin-left:8px}.items .item-footer{padding-top:5px}.items .item-footer>a{color:grey}.items-hover .item:hover{background-color:#f5f5f5}.list-condensed{padding:0}.list-condensed>.items>.item,.list-condensed>footer,.list-condensed>header{padding-right:15px;padding-left:15px}.cards{padding-top:10px;padding-bottom:10px;margin-right:-10px;margin-left:-10px}.card{position:relative;display:block;padding:0;margin-bottom:20px;overflow:hidden;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075);-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.card>img{display:block;max-width:100%;height:auto;filter:alpha(opacity=100);opacity:1}.card>.media-wrapper{display:block;width:100%;overflow:hidden;text-align:center;background-color:#f1f1f1;filter:alpha(opacity=100);opacity:1;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.card>.media-wrapper>img{max-width:100%;vertical-align:middle}.card .card-heading{display:block;padding:10px;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card .card-actions,.card .card-content{padding:0 10px 10px 10px;overflow:hidden;text-overflow:ellipsis}.card .card-actions .btn+.pull-right{padding:6px 0;line-height:20px}.card:hover{text-decoration:none;-webkit-box-shadow:0 1px 5px rgba(0,0,0,.175);box-shadow:0 1px 5px rgba(0,0,0,.175)}.card:hover>.media-wrapper,.card:hover>img{background-color:#e5e5e5;filter:alpha(opacity=90);opacity:.9}.card:hover>.card-reveal{top:0}.cards-borderless .card{border:none;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.cards-borderless .card>.media-wrapper,.cards-borderless .card>img{overflow:hidden;border-radius:4px}.cards-borderless .card>.card-actions,.cards-borderless .card>.card-content,.cards-borderless .card>.card-heading{padding-right:0;padding-left:0}.card>.caption{position:absolute;top:-100%;left:0;display:block;width:100%;padding:5px 10px;overflow:hidden;color:#fff;text-align:center;background-color:#666;background-color:rgba(0,0,0,.7);filter:alpha(opacity=0);opacity:0;-webkit-transition:all .8s cubic-bezier(.175,.885,.32,1);-o-transition:all .8s cubic-bezier(.175,.885,.32,1);transition:all .8s cubic-bezier(.175,.885,.32,1)}.card:hover>.caption{top:0;filter:alpha(opacity=100);opacity:1}.cards-condensed{padding:0;border:1px solid #ddd;border-top:0;border-left:0}.cards-condensed>[class*=" col-"],.cards-condensed>[class^=col-]{padding:0}.cards-condensed .card{padding:10px;margin:0;border-right:0;border-bottom:0;border-radius:0;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.015);box-shadow:0 1px 2px rgba(0,0,0,.015)}.card>.card-reveal{position:absolute;top:100%;left:0;width:100%;height:100%;background-color:#f1f1f1;-webkit-transition:all .8s cubic-bezier(.175,.885,.32,1);-o-transition:all .8s cubic-bezier(.175,.885,.32,1);transition:all .8s cubic-bezier(.175,.885,.32,1)}.card>.card-reveal>.card-heading{padding:20px 10px}.card:hover>.card-reveal{top:0}.tree{padding-left:0}.tree ul{position:relative;display:none;padding-left:0}.tree li{position:relative;padding:2px 0 2px 20px;list-style:none}.tree li:before{position:absolute;top:10px;left:8px;display:block;width:3px;height:3px;content:' ';background-color:#999}.tree li.has-list:before{display:none}.tree li>.list-toggle{position:absolute;top:-1px;left:0;z-index:10;width:20px;line-height:24px;color:grey;text-align:center;cursor:pointer}.tree li>.list-toggle:before{content:'\f196'}.tree li>.list-toggle:active,.tree li>.list-toggle:hover{color:#0d3d88}.tree li.open>ul{display:block}.tree li.open>.list-toggle:before{content:'\e71d'}.tree-actions{display:inline-block;margin-left:5px;opacity:0;-webkit-transition:opacity .1s;-o-transition:opacity .1s;transition:opacity .1s}.tree-action{display:inline-block;margin-left:5px;color:grey}.tree-action:active,.tree-action:hover{text-decoration:none}.tree li:hover>.tree-actions,.tree-item-wrapper:hover>.tree-actions{opacity:1}.tree-drag-holder{background-color:#ebf2f9;opacity:.4}.tree .sort-handler{cursor:move}.tree-animate ul{opacity:0;-webkit-transition:opacity .2s cubic-bezier(.175,.885,.32,1),-webkit-transform .2s cubic-bezier(.175,.885,.32,1);-o-transition:opacity .2s cubic-bezier(.175,.885,.32,1),-o-transform .2s cubic-bezier(.175,.885,.32,1);transition:opacity .2s cubic-bezier(.175,.885,.32,1),-webkit-transform .2s cubic-bezier(.175,.885,.32,1);transition:opacity .2s cubic-bezier(.175,.885,.32,1),transform .2s cubic-bezier(.175,.885,.32,1);transition:opacity .2s cubic-bezier(.175,.885,.32,1),transform .2s cubic-bezier(.175,.885,.32,1),-webkit-transform .2s cubic-bezier(.175,.885,.32,1),-o-transform .2s cubic-bezier(.175,.885,.32,1);-webkit-transform:scale(1,.5);-ms-transform:scale(1,.5);-o-transform:scale(1,.5);transform:scale(1,.5)}.tree-animate li.open.in>ul{opacity:1;-webkit-transform:scale(1,1);-ms-transform:scale(1,1);-o-transform:scale(1,1);transform:scale(1,1)}.tree-animate.tree-lines li.has-list.open>ul:after{top:-5px;bottom:12px;left:-11px}.tree-lines ul>li:after{position:absolute;top:11px;left:-10px;z-index:1;display:block;width:22px;content:' ';border-top:1px dotted #999}.tree-lines ul>li.has-list:before,.tree-lines ul>li:before{position:absolute;top:-12px;bottom:12px;left:-11px;display:block;width:auto;height:auto;content:' ';background:0 0;border:none;border-left:1px dotted #999}.tree-lines ul>li:last-child:before{bottom:auto;height:23px}.tree-lines ul>li:first-child:before{top:-5px}.tree-lines ul>li.tree-single-item:before{height:19px}.tree-lines ul>li.has-list:after{width:14px}.tree-lines ul>li.drag-shadow:after{display:none}.tree-folders li>.list-toggle:before{content:'\e6ef'}.tree-folders li.open>.list-toggle:before{content:'\e6f0'}.tree-folders.tree-lines ul>li:first-child:before{top:-6px}.tree-folders.tree-lines li.has-list.open>ul:after{top:16px}.tree-folders ul>li.has-list:after{width:13px}.tree-folders ul>li.has-list.open:after{width:15px}.tree-chevrons li>.list-toggle:before{content:'\e710'}.tree-chevrons li.open>.list-toggle:before{content:'\e712'}.tree-chevrons li:before{top:6px;left:4px;width:10px;height:10px;background-color:#ddd;border-radius:5px}.tree-chevrons ul>li:after{width:13px}.tree-angles li>.list-toggle:before{content:'\e6e1'}.tree-angles li.open>.list-toggle:before{content:'\e6e3'}.tree-angles ul>li.has-list:after{width:15px}.tree-menu{overflow:hidden;border:1px solid #ddd;border-radius:4px}.tree-menu li{padding:0}.tree-menu li:before{display:none}.tree-menu li>a{display:block;padding:8px;margin-bottom:-1px;color:#353535}.tree-menu li>a>.icon{display:inline-block;width:20px;color:inherit;text-align:left;opacity:.6}.tree-menu li>a:active,.tree-menu li>a:focus,.tree-menu li>a:hover{color:#0d3d88;text-decoration:none;background-color:rgba(0,0,0,.04)}.tree-menu li>a:active>.icon,.tree-menu li>a:focus>.icon,.tree-menu li>a:hover>.icon{opacity:.9}.tree-menu li .list-toggle{top:6px;right:4px;left:auto;width:24px;height:24px;filter:alpha(opacity=45);opacity:.45;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}.tree-menu li .list-toggle:before{content:'\e64f'}.tree-menu li.open>.list-toggle{filter:alpha(opacity=75);opacity:.75;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.tree-menu li.open>.list-toggle:before{content:'\e64f'}.tree-menu li>ul{background-color:rgba(0,0,0,.04)}.tree-menu li li a{padding-left:28px;border-top-color:transparent;border-bottom-color:transparent}.tree-menu li li li a{padding-left:48px}.tree-menu li li li li a{padding-left:68px}.tree-menu li.active>a{color:#fff;background-color:#3280fc;border-color:#3280fc}.tree-menu li.active>.list-toggle{color:#fff}.tree-menu>li>a{border:1px solid transparent;border-bottom-color:#ddd}.tree-menu>li.open+li>a{border-top-color:#ddd} \ No newline at end of file diff --git a/root/res/zui/fonts/zenicon.eot b/root/res/zui/fonts/zenicon.eot new file mode 100644 index 0000000..4b88409 Binary files /dev/null and b/root/res/zui/fonts/zenicon.eot differ diff --git a/root/res/zui/fonts/zenicon.svg b/root/res/zui/fonts/zenicon.svg new file mode 100644 index 0000000..c3d5233 --- /dev/null +++ b/root/res/zui/fonts/zenicon.svg @@ -0,0 +1,375 @@ + + + + + + +{ + "fontFamily": "ZenIcon", + "majorVersion": 2, + "minorVersion": 5, + "designerURL": "", + "fontURL": "https://zui.sexy/#control-icons", + "designer": "", + "license": "", + "licenseURL": "", + "description": "base on fontawesome\nFont generated by IcoMoon.", + "version": "Version 2.5", + "fontId": "ZenIcon", + "psName": "ZenIcon", + "subFamily": "Regular", + "fullName": "ZenIcon" +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/root/res/zui/fonts/zenicon.ttf b/root/res/zui/fonts/zenicon.ttf new file mode 100644 index 0000000..0d3d5e0 Binary files /dev/null and b/root/res/zui/fonts/zenicon.ttf differ diff --git a/root/res/zui/fonts/zenicon.woff b/root/res/zui/fonts/zenicon.woff new file mode 100644 index 0000000..8dd67e0 Binary files /dev/null and b/root/res/zui/fonts/zenicon.woff differ diff --git a/root/res/zui/js/zui.js b/root/res/zui/js/zui.js new file mode 100644 index 0000000..37bc251 --- /dev/null +++ b/root/res/zui/js/zui.js @@ -0,0 +1,6451 @@ +/*! + * ZUI: Standard edition - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +/*! Some code copy from Bootstrap v3.0.0 by @fat and @mdo. (Copyright 2013 Twitter, Inc. Licensed under http://www.apache.org/licenses/)*/ + +/* ======================================================================== + * ZUI: jquery.extensions.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function($, window, undefined) { + 'use strict'; + + /* Check jquery */ + if(typeof($) === 'undefined') throw new Error('ZUI requires jQuery'); + + // ZUI shared object + if(!$.zui) $.zui = function(obj) { + if($.isPlainObject(obj)) { + $.extend($.zui, obj); + } + }; + + var MOUSE_BUTTON_CODES = { + all: -1, + left: 0, + middle: 1, + right: 2 + }; + + var lastUuidAmend = 0; + $.zui({ + uuid: function() { + return(new Date()).getTime() * 1000 + (lastUuidAmend++) % 1000; + }, + + callEvent: function(func, event, proxy) { + if($.isFunction(func)) { + if(proxy !== undefined) { + func = $.proxy(func, proxy); + } + var result = func(event); + if(event) event.result = result; + return !(result !== undefined && (!result)); + } + return 1; + }, + + clientLang: function() { + var lang; + var config = window.config; + if(typeof(config) != 'undefined' && config.clientLang) { + lang = config.clientLang; + } + if(!lang) { + var hl = $('html').attr('lang'); + lang = hl ? hl : (navigator.userLanguage || navigator.userLanguage || 'zh_cn'); + } + return lang.replace('-', '_').toLowerCase(); + }, + + strCode: function(str) { + var code = 0; + if(str && str.length) { + for(var i = 0; i < str.length; ++i) { + code += i * str.charCodeAt(i); + } + } + return code; + }, + + getMouseButtonCode: function(mouseButton) { + if(typeof mouseButton !== 'number') { + mouseButton = MOUSE_BUTTON_CODES[mouseButton]; + } + if(mouseButton === undefined || mouseButton === null) mouseButton = -1; + return mouseButton; + } + }); + + $.fn.callEvent = function(name, event, model) { + var $this = $(this); + var dotIndex = name.indexOf('.zui.'); + var shortName = dotIndex < 0 ? name : name.substring(0, dotIndex); + var e = $.Event(shortName, event); + + if((model === undefined) && dotIndex > 0) { + model = $this.data(name.substring(dotIndex + 1)); + } + + if(model && model.options) { + var func = model.options[shortName]; + if($.isFunction(func)) { + e.result = $.zui.callEvent(func, e, model); + } + } + $this.trigger(e); + return e; + }; + + $.fn.callComEvent = function(component, eventName, params) { + if (params !== undefined && !$.isArray(params)) { + params = [params]; + } + var $this = this; + var result = $this.triggerHandler(eventName, params); + + var eventCallback = component.options[eventName]; + if (eventCallback) { + result = eventCallback.apply(component, params); + } + return result; + }; +}(jQuery, window, undefined)); + + +/* ======================================================================== + * ZUI: typography.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function($) { + 'use strict'; + + $.fn.fixOlPd = function(pd) { + pd = pd || 10; + return this.each(function() { + var $ol = $(this); + $ol.css('paddingLeft', Math.ceil(Math.log10($ol.children().length)) * pd + 10); + }); + }; + + $(function() { + $('.ol-pd-fix,.article ol').fixOlPd(); + }); +}(jQuery)); + + +/* ======================================================================== + * Bootstrap: button.js v3.0.3 + * http://getbootstrap.com/javascript/#buttons + * + * ZUI: The file has been changed in ZUI. It will not keep update with the + * Bootsrap version in the future. + * http://zui.sexy + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++ function($) { + 'use strict'; + + // BUTTON PUBLIC CLASS DEFINITION + // ============================== + + var Button = function(element, options) { + this.$element = $(element) + this.options = $.extend({}, Button.DEFAULTS, options) + this.isLoading = false + } + + Button.DEFAULTS = { + loadingText: 'loading...' + } + + Button.prototype.setState = function(state) { + var d = 'disabled' + var $el = this.$element + var val = $el.is('input') ? 'val' : 'html' + var data = $el.data() + + state = state + 'Text' + + if(!data.resetText) $el.data('resetText', $el[val]()) + + $el[val](data[state] || this.options[state]) + + // push to event loop to allow forms to submit + setTimeout($.proxy(function() { + if(state == 'loadingText') { + this.isLoading = true + $el.addClass(d).attr(d, d) + } else if(this.isLoading) { + this.isLoading = false + $el.removeClass(d).removeAttr(d) + } + }, this), 0) + } + + Button.prototype.toggle = function() { + var changed = true + var $parent = this.$element.closest('[data-toggle="buttons"]') + + if($parent.length) { + var $input = this.$element.find('input') + if($input.prop('type') == 'radio') { + if($input.prop('checked') && this.$element.hasClass('active')) changed = false + else $parent.find('.active').removeClass('active') + } + if(changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') + } + + if(changed) this.$element.toggleClass('active') + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + var old = $.fn.button + + $.fn.button = function(option) { + return this.each(function() { + var $this = $(this) + var data = $this.data('zui.button') + var options = typeof option == 'object' && option + + if(!data) $this.data('zui.button', (data = new Button(this, options))) + + if(option == 'toggle') data.toggle() + else if(option) data.setState(option) + }) + } + + $.fn.button.Constructor = Button + + + // BUTTON NO CONFLICT + // ================== + + $.fn.button.noConflict = function() { + $.fn.button = old + return this + } + + + // BUTTON DATA-API + // =============== + + $(document).on('click.zui.button.data-api', '[data-toggle^=button]', function(e) { + var $btn = $(e.target) + if(!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + $btn.button('toggle') + e.preventDefault() + }) + +}(jQuery); + + +/* ======================================================================== + * Bootstrap: alert.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#alerts + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ZUI: The file has been changed in ZUI. It will not keep update with the + * Bootsrap version in the future. + * http://zui.sexy + * ======================================================================== */ + + ++ function($) { + 'use strict'; + + // ALERT CLASS DEFINITION + // ====================== + + var dismiss = '[data-dismiss="alert"]' + var zuiname = 'zui.alert'; + + var Alert = function(el) { + $(el).on('click', dismiss, this.close) + } + + Alert.prototype.close = function(e) { + var $this = $(this) + var selector = $this.attr('data-target') + + if(!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = $(selector) + + if(e) e.preventDefault() + + if(!$parent.length) { + $parent = $this.hasClass('alert') ? $this : $this.parent() + } + + $parent.trigger(e = $.Event('close.' + zuiname)) + + if(e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + $parent.trigger('closed.' + zuiname).remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one($.support.transition.end, removeElement) + .emulateTransitionEnd(150) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + var old = $.fn.alert + + $.fn.alert = function(option) { + return this.each(function() { + var $this = $(this) + var data = $this.data(zuiname) + + if(!data) $this.data(zuiname, (data = new Alert(this))) + if(typeof option == 'string') data[option].call($this) + }) + } + + $.fn.alert.Constructor = Alert + + + // ALERT NO CONFLICT + // ================= + + $.fn.alert.noConflict = function() { + $.fn.alert = old + return this + } + + + // ALERT DATA-API + // ============== + + $(document).on('click.' + zuiname + '.data-api', dismiss, Alert.prototype.close) + +}(window.jQuery); + +/* ======================================================================== + * ZUI: pager.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2017-2018 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function($) { + 'use strict'; + + var NAME = 'zui.pager'; // model name + + var DEFAULT_PAGER = { + page: 0, // current page index + recTotal: 0, // records total count + recPerPage: 10, // records count per page + }; + + var LANG = { + zh_cn: { + prev: '上一页', + next: '下一页', + first: '第一页', + last: '最后一页', + goto: '跳转', + pageOf: '第 {page} 页', + totalPage: '共 {totalPage} 页', + totalCount: '共 {recTotal} 项', + pageSize: '每页 {recPerPage} 项', + itemsRange: '第 {start} ~ {end} 项', + pageOfTotal: '第 {page}/{totalPage} 页' + }, + zh_tw: { + prev: '上一頁', + next: '下一頁', + first: '第一頁', + last: '最後一頁', + goto: '跳轉', + pageOf: '第 {page} 頁', + totalPage: '共 {totalPage} 頁', + totalCount: '共 {recTotal} 項', + pageSize: '每頁 {recPerPage} 項', + itemsRange: '第 {start} ~ {end} 項', + pageOfTotal: '第 {page}/{totalPage} 頁' + }, + en: { + prev: 'Prev', + next: 'Next', + first: 'First', + last: 'Last', + goto: 'Goto', + pageOf: 'Page {page}', + totalPage: '{totalPage} pages', + totalCount: '{recTotal} items', + pageSize: '{recPerPage} items per page', + itemsRange: 'From {start} to {end}', + pageOfTotal: 'Page {page} of {totalPage}' + } + }; + + // The pager model class + var Pager = function(element, options) { + var that = this; + that.name = NAME; + that.$ = $(element); + + options = that.options = $.extend({}, Pager.DEFAULTS, this.$.data(), options); + + var lang = options.lang || 'zh_cn'; + that.lang = $.isPlainObject(lang) ? ($.extend(true, {}, LANG[lang.lang || $.zui.clientLang()], lang)) : LANG[lang]; + + that.state = {}; + + that.set(options.page, options.recTotal, options.recPerPage); + + that.$.on('click', '.pager-goto-btn', function() { + var $goto = $(this).closest('.pager-goto'); + var page = parseInt($goto.find('.pager-goto-input').val()); + if (page !== NaN) { + that.set(page); + } + }).on('click', '.pager-item', function() { + var page = $(this).data('page'); + if (typeof page === 'number' && page > 0) { + that.set(page); + } + }).on('click', '.pager-size-menu [data-size]', function() { + var size = $(this).data('size'); + if (typeof size === 'number' && size > 0) { + that.set(-1, -1, size); + } + }); + }; + + Pager.prototype.set = function(page, recTotal, recPerPage) { + var that = this; + if (typeof page === 'object' && page !== null) { + recPerPage = page.recPerPage; + recTotal = page.recTotal; + page = page.page; + } + var state = that.state; + if (!state) { + state = $.extend({}, DEFAULT_PAGER); + } + var oldState = $.extend({}, state); + if (typeof recPerPage === 'number' && recPerPage > 0) { + state.recPerPage = recPerPage; + } + if (typeof recTotal === 'number' && recTotal >= 0) { + state.recTotal = recTotal; + } + if (typeof page === 'number' && page >= 0) { + state.page = page; + } + state.totalPage = (state.recTotal && state.recPerPage) ? (Math.ceil(state.recTotal / state.recPerPage)) : 1; + state.page = Math.max(0, Math.min(state.page, state.totalPage)); + // stateRecCount is items count in current page + state.pageRecCount = state.recTotal; + if (state.page && state.recTotal) { + if (state.page < state.totalPage) { + state.pageRecCount = state.recPerPage; + } else if (state.page > 1) { + state.pageRecCount = state.recTotal - (state.recPerPage * (state.page - 1)); + } + } + state.skip = state.page > 1 ? ((state.page - 1) * state.recPerPage) : 0; + state.start = state.skip + 1; + state.end = state.skip + state.pageRecCount; + state.prev = state.page > 1 ? (state.page - 1) : 0; + state.next = state.page < state.totalPage ? (state.page + 1) : 0; + that.state = state; + if (oldState.page !== state.page || oldState.recTotal !== state.recTotal || oldState.recPerPage !== state.recPerPage) { + that.$.callComEvent(that, 'onPageChange', [state, oldState]); + } + return that.render(); + }; + + Pager.prototype.createLinkItem = function(page, text, asAElement) { + var that = this; + if (text === undefined) { + text = page; + } + var $ele = $('').attr('href', page ? that.createLink(page, that.state) : '###').html(text); + if (!asAElement) { + $ele = $('
  • ').append($ele).toggleClass('active', page === that.state.page).toggleClass('disabled', !page); + } + return $ele; + }; + + Pager.prototype.createNavItems = function(maxCount) { + var that = this; + var $nav = that.$; + var pager = that.state; + var totalPage = pager.totalPage; + var page = pager.page; + var appendItem = function(p, to) { + if(p === false) { + $nav.append(that.createLinkItem(0, to || '')); + return; + } + if(to === undefined) to = p; + for(var i = p; i <= to; ++i) { + $nav.append(that.createLinkItem(i)); + } + }; + if (maxCount === undefined) { + maxCount = that.options.maxNavCount || 10; + } + appendItem(1); + if(totalPage > 1) { + if(totalPage <= maxCount) { + appendItem(2, totalPage); + } + else if(page < (maxCount - 2)) { + appendItem(2, maxCount - 2); + appendItem(false); + appendItem(totalPage); + } + else if(page > (totalPage - maxCount + 2)) { + appendItem(false); + appendItem((totalPage - maxCount + 2), totalPage); + } + else { + appendItem(false); + appendItem(page - Math.ceil((maxCount-4)/2), page + Math.floor((maxCount-4)/2)); + appendItem(false); + appendItem(totalPage); + } + } + }; + + Pager.prototype.createGoto = function() { + var that = this; + var pager = this.state; + var $goto = $('
    '); + return $goto; + }; + + Pager.prototype.createSizeMenu = function() { + var that = this; + var pager = this.state; + var $menu = $(''); + var options = that.options.pageSizeOptions; + if (typeof options === 'string') { + options = options.split(','); + } + for (var i = 0; i < options.length; ++i) { + var size = options[i]; + if (typeof size === 'string') { + size = parseInt(size); + } + var $li = $('
  • ' + size + '
  • ').toggleClass('active', size === pager.recPerPage); + $menu.append($li); + } + return $('
    ').addClass(that.options.menuDirection).append($menu); + }; + + Pager.prototype.createElement = function(element, $pager, pager) { + var that = this; + var createLinkItem= $.proxy(that.createLinkItem, that); + var lang = that.lang; + switch (element) { + case 'prev': + return createLinkItem(pager.prev, lang.prev); + case 'prev_icon': + return createLinkItem(pager.prev, ''); + case 'next': + return createLinkItem(pager.next, lang.next); + case 'next_icon': + return createLinkItem(pager.next, ''); + case 'first': + return createLinkItem(1, lang.first, true); + case 'first_icon': + return createLinkItem(1, '', true); + case 'last': + return createLinkItem(pager.totalPage, lang.last, true); + case 'last_icon': + return createLinkItem(pager.totalPage, '', true); + case 'space': + case '|': + return $('
  • '); + case 'nav': + case 'pages': + that.createNavItems(); + return; + case 'total_text': + return $(('
    ' + lang.totalCount + '
    ').format(pager)); + case 'page_text': + return $(('
    ' + lang.pageOf + '
    ').format(pager)); + case 'total_page_text': + return $(('
    ' + lang.totalPage + '
    ').format(pager)); + case 'page_of_total_text': + return $(('
    ' + lang.pageOfTotal + '
    ').format(pager)); + case 'page_size_text': + return $(('
    ' + lang.pageSize + '
    ').format(pager)); + case 'items_range_text': + return $(('
    ' + lang.itemsRange + '
    ').format(pager)); + case 'goto': + return that.createGoto(); + case 'size_menu': + return that.createSizeMenu(); + default: + return $('
  • ').html(element); + } + }; + + Pager.prototype.createLink = function(page, pager) { + var linkCreator = this.options.linkCreator; + if (typeof linkCreator === 'string') { + return linkCreator.format($.extend({}, pager, {page: page})); + } else if ($.isFunction(linkCreator)) { + return linkCreator(page, pager); + } + return '#page=' + page; + }; + + Pager.prototype.render = function(elements) { + var that = this; + var state = that.state; + var createElement = that.options.elementCreator || that.createElement; + var isMapperCreator = $.isPlainObject(createElement); + + elements = elements || that.elements || that.options.elements; + if (typeof elements == 'string') { + elements = elements.split(','); + } + that.elements = elements; + + that.$.empty(); + + for(var i = 0; i < elements.length; ++i) { + var element = $.trim(elements[i]); + var creator = isMapperCreator ? (createElement[element] || createElement) : createElement; + var $element = creator.call(that, element, that.$, state); + if ($element === false) { + $element = that.createElement(element, that.$, state); + } + if ($element instanceof $) { + if ($element[0].tagName !== 'LI') { + $element = $('
  • ').append($element); + } + that.$.append($element); + } + } + + // Fix page item border + var $lastItem = null; + that.$.children('li').each(function() { + var $li = $(this); + var isItem = !!$li.children('.pager-item').length; + if ($lastItem) { + $lastItem.toggleClass('pager-item-right', !isItem); + } else { + if (isItem) { + $li.addClass('pager-item-left'); + } + } + $lastItem = isItem ? $li : null; + }); + + that.$.callComEvent(that, 'onRender', [state]); + return that; + }; + + // default options + Pager.DEFAULTS = $.extend({ + elements: ['first_icon', 'prev_icon', 'pages', 'next_icon', 'last_icon', 'page_of_total_text', 'items_range_text', 'total_text'], + prevIcon: 'icon-double-angle-left', + nextIcon: 'icon-double-angle-right', + firstIcon: 'icon-step-backward', + lastIcon: 'icon-step-forward', + maxNavCount: 10, + menuDirection: 'dropdown', // or dropup + pageSizeOptions: [10, 20, 30, 50, 100], + // onPageChange: null + }, DEFAULT_PAGER); + + // Extense jquery element + $.fn.pager = function(option) { + return this.each(function() { + var $this = $(this); + var data = $this.data(NAME); + var options = typeof option == 'object' && option; + + if(!data) $this.data(NAME, (data = new Pager(this, options))); + + if(typeof option == 'string') data[option](); + }); + }; + + Pager.NAME = NAME; + + $.fn.pager.Constructor = Pager; + + // Auto call pager after document load complete + $(function() { + $('[data-ride="pager"]').pager(); + }); +}(jQuery)); + + +/* ======================================================================== + * Bootstrap: tab.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#tabs + * + * ZUI: The file has been changed in ZUI. It will not keep update with the + * Bootsrap version in the future. + * http://zui.sexy + * ======================================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++ function($) { + 'use strict'; + + // TAB CLASS DEFINITION + // ==================== + + var zuiname = 'zui.tab' + var Tab = function(element) { + this.element = $(element) + } + + Tab.prototype.show = function() { + var $this = this.element + var $ul = $this.closest('ul:not(.dropdown-menu)') + var selector = $this.attr('data-target') || $this.attr('data-tab') + + if(!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + if($this.parent('li').hasClass('active')) return + + var previous = $ul.find('.active:last a')[0] + var e = $.Event('show.' + zuiname, { + relatedTarget: previous + }) + + $this.trigger(e) + + if(e.isDefaultPrevented()) return + + var $target = $(selector) + + this.activate($this.parent('li'), $ul) + this.activate($target, $target.parent(), function() { + $this.trigger({ + type: 'shown.' + zuiname, + relatedTarget: previous + }) + }) + } + + Tab.prototype.activate = function(element, container, callback) { + var $active = container.find('> .active') + var transition = callback && $.support.transition && $active.hasClass('fade') + + function next() { + $active + .removeClass('active') + .find('> .dropdown-menu > .active') + .removeClass('active') + + element.addClass('active') + + if(transition) { + element[0].offsetWidth // reflow for transition + element.addClass('in') + } else { + element.removeClass('fade') + } + + if(element.parent('.dropdown-menu')) { + element.closest('li.dropdown').addClass('active') + } + + callback && callback() + } + + transition ? + $active + .one($.support.transition.end, next) + .emulateTransitionEnd(150) : + next() + + $active.removeClass('in') + } + + + // TAB PLUGIN DEFINITION + // ===================== + + var old = $.fn.tab + + $.fn.tab = function(option) { + return this.each(function() { + var $this = $(this) + var data = $this.data(zuiname) + + if(!data) $this.data(zuiname, (data = new Tab(this))) + if(typeof option == 'string') data[option]() + }) + } + + $.fn.tab.Constructor = Tab + + + // TAB NO CONFLICT + // =============== + + $.fn.tab.noConflict = function() { + $.fn.tab = old + return this + } + + + // TAB DATA-API + // ============ + + $(document).on('click.zui.tab.data-api', '[data-toggle="tab"], [data-tab]', function(e) { + e.preventDefault() + $(this).tab('show') + }) + +}(window.jQuery); + + +/* ======================================================================== + * Bootstrap: transition.js v3.2.0 + * http://getbootstrap.com/javascript/#transitions + * + * ZUI: The file has been changed in ZUI. It will not keep update with the + * Bootsrap version in the future. + * http://zui.sexy + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++ function($) { + 'use strict'; + + // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) + // ============================================================ + + function transitionEnd() { + var el = document.createElement('bootstrap') + + var transEndEventNames = { + WebkitTransition: 'webkitTransitionEnd', + MozTransition: 'transitionend', + OTransition: 'oTransitionEnd otransitionend', + transition: 'transitionend' + } + + for(var name in transEndEventNames) { + if(el.style[name] !== undefined) { + return { + end: transEndEventNames[name] + } + } + } + + return false // explicit for ie8 ( ._.) + } + + // http://blog.alexmaccaw.com/css-transitions + $.fn.emulateTransitionEnd = function(duration) { + var called = false + var $el = this + $(this).one('bsTransitionEnd', function() { + called = true + }) + var callback = function() { + if(!called) $($el).trigger($.support.transition.end) + } + setTimeout(callback, duration) + return this + } + + $(function() { + $.support.transition = transitionEnd() + + if(!$.support.transition) return + + $.event.special.bsTransitionEnd = { + bindType: $.support.transition.end, + delegateType: $.support.transition.end, + handle: function(e) { + if($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) + } + } + }) + +}(jQuery); + + +/* ======================================================================== + * Bootstrap: collapse.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#collapse + * + * ZUI: The file has been changed in ZUI. It will not keep update with the + * Bootsrap version in the future. + * http://zui.sexy + * ======================================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++ function($) { + 'use strict'; + + var zuiname = 'zui.collapse' + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function(element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.transitioning = null + + if(this.options.parent) this.$parent = $(this.options.parent) + if(this.options.toggle) this.toggle() + } + + Collapse.DEFAULTS = { + toggle: true + } + + Collapse.prototype.dimension = function() { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + Collapse.prototype.show = function() { + if(this.transitioning || this.$element.hasClass('in')) return + + var startEvent = $.Event('show.' + zuiname) + this.$element.trigger(startEvent) + if(startEvent.isDefaultPrevented()) return + + var actives = this.$parent && this.$parent.find('.in') + + if(actives && actives.length) { + var hasData = actives.data(zuiname) + if(hasData && hasData.transitioning) return + actives.collapse('hide') + hasData || actives.data(zuiname, null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing')[dimension](0) + + this.transitioning = 1 + + var complete = function() { + this.$element + .removeClass('collapsing') + .addClass('in')[dimension]('auto') + this.transitioning = 0 + this.$element.trigger('shown.' + zuiname) + } + + if(!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one($.support.transition.end, $.proxy(complete, this)) + .emulateTransitionEnd(350)[dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function() { + if(this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.' + zuiname) + this.$element.trigger(startEvent) + if(startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element[dimension](this.$element[dimension]())[0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse') + .removeClass('in') + + this.transitioning = 1 + + var complete = function() { + this.transitioning = 0 + this.$element + .trigger('hidden.' + zuiname) + .removeClass('collapsing') + .addClass('collapse') + } + + if(!$.support.transition) return complete.call(this) + + this.$element[dimension](0) + .one($.support.transition.end, $.proxy(complete, this)) + .emulateTransitionEnd(350) + } + + Collapse.prototype.toggle = function() { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + var old = $.fn.collapse + + $.fn.collapse = function(option) { + return this.each(function() { + var $this = $(this) + var data = $this.data(zuiname) + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if(!data) $this.data(zuiname, (data = new Collapse(this, options))) + if(typeof option == 'string') data[option]() + }) + } + + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function() { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.' + zuiname + '.data-api', '[data-toggle=collapse]', function(e) { + var $this = $(this), + href + var target = $this.attr('data-target') || e.preventDefault() || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 + var $target = $(target) + var data = $target.data(zuiname) + var option = data ? 'toggle' : $this.data() + var parent = $this.attr('data-parent') + var $parent = parent && $(parent) + + if(!data || !data.transitioning) { + if($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed') + $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed') + } + + $target.collapse(option) + }) + +}(window.jQuery); + + +/* ======================================================================== + * ZUI: device.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function(window, $) { + 'use strict'; + var desktopLg = 1200, + desktop = 992, + tablet = 768; + + var $window = $(window); + + var resetCssClass = function() { + var width = $window.width(); + $('html').toggleClass('screen-desktop', width >= desktop && width < desktopLg) + .toggleClass('screen-desktop-wide', width >= desktopLg) + .toggleClass('screen-tablet', width >= tablet && width < desktop) + .toggleClass('screen-phone', width < tablet) + .toggleClass('device-mobile', width < desktop) + .toggleClass('device-desktop', width >= desktop); + }; + + var classNames = ''; + var userAgent = navigator.userAgent; + if (userAgent.match(/(iPad|iPhone|iPod)/i)) { + classNames += ' os-ios'; + } else if (userAgent.match(/android/i)) { + classNames += ' os-android'; + } else if (userAgent.match(/Win/i)) { + classNames += ' os-windows'; + } else if (userAgent.match(/Mac/i)) { + classNames += ' os-mac'; + } else if (userAgent.match(/Linux/i)) { + classNames += ' os-linux'; + } else if (userAgent.match(/X11/i)) { + classNames += ' os-unix'; + } + if ('ontouchstart' in document.documentElement) { + classNames += ' is-touchable'; + } + $('html').addClass(classNames); + + $window.resize(resetCssClass); + resetCssClass(); +}(window, jQuery)); + + +/* ======================================================================== + * ZUI: browser.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function($) { + 'use strict'; + + var browseHappyTip = { + 'zh_cn': '您的浏览器版本过低,无法体验所有功能,建议升级或者更换浏览器。 了解更多...', + 'zh_tw': '您的瀏覽器版本過低,無法體驗所有功能,建議升級或者更换瀏覽器。了解更多...', + 'en': 'Your browser is too old, it has been unable to experience the colorful internet. We strongly recommend that you upgrade a better one. Learn more...' + }; + + // The browser modal class + var Browser = function() { + var ie = this.isIE() || this.isIE10() || false; + if(ie) { + for(var i = 10; i > 5; i--) { + if(this.isIE(i)) { + ie = i; + break; + } + } + } + + this.ie = ie; + + this.cssHelper(); + }; + + // Append CSS class to html tag + Browser.prototype.cssHelper = function() { + var ie = this.ie, + $html = $('html'); + $html.toggleClass('ie', ie) + .removeClass('ie-6 ie-7 ie-8 ie-9 ie-10'); + if(ie) { + $html.addClass('ie-' + ie) + .toggleClass('gt-ie-7 gte-ie-8 support-ie', ie >= 8) + .toggleClass('lte-ie-7 lt-ie-8 outdated-ie', ie < 8) + .toggleClass('gt-ie-8 gte-ie-9', ie >= 9) + .toggleClass('lte-ie-8 lt-ie-9', ie < 9) + .toggleClass('gt-ie-9 gte-ie-10', ie >= 10) + .toggleClass('lte-ie-9 lt-ie-10', ie < 10); + } + }; + + // Show browse happy tip + Browser.prototype.tip = function(showCoontent) { + var $browseHappy = $('#browseHappyTip'); + if(!$browseHappy.length) { + $browseHappy = $('
    '); + $browseHappy.prependTo('body'); + } + + $browseHappy.find('.content').html(showCoontent || this.browseHappyTip || browseHappyTip[$.zui.clientLang() || 'zh_cn']); + }; + + // Detect it is IE, can given a version + Browser.prototype.isIE = function(version) { + if(version === 10) return this.isIE10(); + var b = document.createElement('b'); + b.innerHTML = ''; + return b.getElementsByTagName('i').length === 1; + }; + + // Detect ie 10 with hack + Browser.prototype.isIE10 = function() { + return (/*@cc_on!@*/false); + }; + + $.zui({ + browser: new Browser() + }); + + $(function() { + if(!$('body').hasClass('disabled-browser-tip')) { + if($.zui.browser.ie && $.zui.browser.ie < 8) { + $.zui.browser.tip(); + } + } + }); +}(jQuery)); + + +/* ======================================================================== + * ZUI: date.js + * Date polyfills + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function() { + 'use strict'; + + /** + * Ticks of a whole day + * @type {number} + */ + Date.ONEDAY_TICKS = 24 * 3600 * 1000; + + /** + * Format date to a string + * + * @param string format + * @return string + */ + if(!Date.prototype.format) { + Date.prototype.format = function(format) { + var date = { + 'M+': this.getMonth() + 1, + 'd+': this.getDate(), + 'h+': this.getHours(), + 'm+': this.getMinutes(), + 's+': this.getSeconds(), + 'q+': Math.floor((this.getMonth() + 3) / 3), + 'S+': this.getMilliseconds() + }; + if(/(y+)/i.test(format)) { + format = format.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length)); + } + for(var k in date) { + if(new RegExp('(' + k + ')').test(format)) { + format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? date[k] : ('00' + date[k]).substr(('' + date[k]).length)); + } + } + return format; + }; + } + + /** + * Add milliseconds to the date + * @param {number} value + */ + if(!Date.prototype.addMilliseconds) { + Date.prototype.addMilliseconds = function(value) { + this.setTime(this.getTime() + value); + return this; + }; + } + + + /** + * Add days to the date + * @param {number} days + */ + if(!Date.prototype.addDays) { + Date.prototype.addDays = function(days) { + this.addMilliseconds(days * Date.ONEDAY_TICKS); + return this; + }; + } + + + /** + * Clone a new date instane from the date + * @return {Date} + */ + if(!Date.prototype.clone) { + Date.prototype.clone = function() { + var date = new Date(); + date.setTime(this.getTime()); + return date; + }; + } + + + /** + * Judge the year is in a leap year + * @param {integer} year + * @return {Boolean} + */ + if(!Date.isLeapYear) { + Date.isLeapYear = function(year) { + return(((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0)); + }; + } + + if(!Date.getDaysInMonth) { + /** + * Get days number of the date + * @param {integer} year + * @param {integer} month + * @return {integer} + */ + Date.getDaysInMonth = function(year, month) { + return [31, (Date.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month]; + }; + } + + + /** + * Judge the date is in a leap year + * @return {Boolean} + */ + if(!Date.prototype.isLeapYear) { + Date.prototype.isLeapYear = function() { + return Date.isLeapYear(this.getFullYear()); + }; + } + + + /** + * Clear time part of the date + * @return {date} + */ + if(!Date.prototype.clearTime) { + Date.prototype.clearTime = function() { + this.setHours(0); + this.setMinutes(0); + this.setSeconds(0); + this.setMilliseconds(0); + return this; + }; + } + + + /** + * Get days of this month of the date + * @return {integer} + */ + if(!Date.prototype.getDaysInMonth) { + Date.prototype.getDaysInMonth = function() { + return Date.getDaysInMonth(this.getFullYear(), this.getMonth()); + }; + } + + + /** + * Add months to the date + * @param {date} value + */ + if(!Date.prototype.addMonths) { + Date.prototype.addMonths = function(value) { + var n = this.getDate(); + this.setDate(1); + this.setMonth(this.getMonth() + value); + this.setDate(Math.min(n, this.getDaysInMonth())); + return this; + }; + } + + + /** + * Get last week day of the date + * @param {integer} day + * @return {date} + */ + if(!Date.prototype.getLastWeekday) { + Date.prototype.getLastWeekday = function(day) { + day = day || 1; + + var d = this.clone(); + while(d.getDay() != day) { + d.addDays(-1); + } + d.clearTime(); + return d; + }; + } + + + /** + * Judge the date is same day as another date + * @param {date} date + * @return {Boolean} + */ + if(!Date.prototype.isSameDay) { + Date.prototype.isSameDay = function(date) { + return date.toDateString() === this.toDateString(); + }; + } + + + /** + * Judge the date is in same week as another date + * @param {date} date + * @return {Boolean} + */ + if(!Date.prototype.isSameWeek) { + Date.prototype.isSameWeek = function(date) { + var weekStart = this.getLastWeekday(); + var weekEnd = weekStart.clone().addDays(7); + return date >= weekStart && date < weekEnd; + }; + } + + + /** + * Judge the date is in same year as another date + * @param {date} date + * @return {Boolean} + */ + if(!Date.prototype.isSameYear) { + Date.prototype.isSameYear = function(date) { + return this.getFullYear() === date.getFullYear(); + }; + } + + /** + * Create an date instance with string, timestamp or date instance + * @param {Date|String|Number} date + * @return {Date} + */ + if (!Date.create) { + Date.create = function(date) { + if (!(date instanceof Date)) { + if (typeof date === 'number' && date < 10000000000) { + date *= 1000; + } + date = new Date(date); + } + return date; + }; + } + + if (!Date.timestamp) { + Date.timestamp = function(date) { + if (typeof date === 'number') { + if (date < 10000000000) { + date *= 1000; + } + } else { + date = Date.create(date).getTime(); + } + return date; + }; + } +}()); + + +/* ======================================================================== + * ZUI: string.js + * String Polyfill. + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function() { + 'use strict'; + + /** + * Format string with argument list or object + * @param {object | arguments} args + * @return {String} + */ + if(!String.prototype.format) { + String.prototype.format = function(args) { + var result = this; + if(arguments.length > 0) { + var reg; + if(arguments.length <= 2 && typeof(args) == 'object') { + for(var key in args) { + if(args[key] !== undefined) { + reg = new RegExp('(' + (arguments[1] ? arguments[1].replace('0', key) : '{' + key + '}') + ')', 'g'); + result = result.replace(reg, args[key]); + } + } + } else { + for(var i = 0; i < arguments.length; i++) { + if(arguments[i] !== undefined) { + reg = new RegExp('({[' + i + ']})', 'g'); + result = result.replace(reg, arguments[i]); + } + } + } + } + return result; + }; + } + + /** + * Judge the string is a integer number + * + * @access public + * @return bool + */ + if(!String.prototype.isNum) { + String.prototype.isNum = function(s) { + if(s !== null) { + var r, re; + re = /\d*/i; + r = s.match(re); + return(r == s) ? true : false; + } + return false; + }; + } + + if(!String.prototype.endsWith) { + String.prototype.endsWith = function(searchString, position) { + var subjectString = this.toString(); + if(position === undefined || position > subjectString.length) { + position = subjectString.length; + } + position -= searchString.length; + var lastIndex = subjectString.indexOf(searchString, position); + return lastIndex !== -1 && lastIndex === position; + }; + } + + if(!String.prototype.startsWith) { + String.prototype.startsWith = function(searchString, position) { + position = position || 0; + return this.lastIndexOf(searchString, position) === position; + }; + } + + if(!String.prototype.includes) { + String.prototype.includes = function() { + return String.prototype.indexOf.apply(this, arguments) !== -1; + }; + } + +})(); + + +/* ======================================================================== + * Resize: resize.js [Version: 1.1] + * http://benalman.com/projects/jquery-resize-plugin/ + * + * ZUI: The file has been changed in ZUI. It will not keep update with the + * official version in the future. + * http://zui.sexy + * ======================================================================== + * opyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + * ======================================================================== */ + + +/*! + * jQuery resize event - v1.1 + * http://benalman.com/projects/jquery-resize-plugin/ + * Copyright (c) 2010 "Cowboy" Ben Alman + * MIT & GPL http://benalman.com/about/license/ + */ + +// Script: jQuery resize event +// +// *Version: 1.1, Last updated: 3/14/2010* +// +// Project Home - http://benalman.com/projects/jquery-resize-plugin/ +// GitHub - http://github.com/cowboy/jquery-resize/ +// Source - http://github.com/cowboy/jquery-resize/raw/master/jquery.ba-resize.js +// (Minified) - http://github.com/cowboy/jquery-resize/raw/master/jquery.ba-resize.min.js (1.0kb) +// +// About: License +// +// Copyright (c) 2010 "Cowboy" Ben Alman, +// Dual licensed under the MIT and GPL licenses. +// http://benalman.com/about/license/ +// +// About: Examples +// +// This working example, complete with fully commented code, illustrates a few +// ways in which this plugin can be used. +// +// resize event - http://benalman.com/code/projects/jquery-resize/examples/resize/ +// +// About: Support and Testing +// +// Information about what version or versions of jQuery this plugin has been +// tested with, what browsers it has been tested in, and where the unit tests +// reside (so you can test it yourself). +// +// jQuery Versions - 1.3.2, 1.4.1, 1.4.2 +// Browsers Tested - Internet Explorer 6-8, Firefox 2-3.6, Safari 3-4, Chrome, Opera 9.6-10.1. +// Unit Tests - http://benalman.com/code/projects/jquery-resize/unit/ +// +// About: Release History +// +// 1.1 - (3/14/2010) Fixed a minor bug that was causing the event to trigger +// immediately after bind in some circumstances. Also changed $.fn.data +// to $.data to improve performance. +// 1.0 - (2/10/2010) Initial release + +(function($, window, undefined) { + '$:nomunge'; // Used by YUI compressor. + + // A jQuery object containing all non-window elements to which the resize + // event is bound. + var elems = $([]), + + // Extend $.resize if it already exists, otherwise create it. + jq_resize = $.resize = $.extend($.resize, {}), + + timeout_id, + + // Reused strings. + str_setTimeout = 'setTimeout', + str_resize = 'resize', + str_data = str_resize + '-special-event', + str_delay = 'delay', + str_throttle = 'throttleWindow'; + + // Property: jQuery.resize.delay + // + // The numeric interval (in milliseconds) at which the resize event polling + // loop executes. Defaults to 250. + + jq_resize[str_delay] = 250; + + // Property: jQuery.resize.throttleWindow + // + // Throttle the native window object resize event to fire no more than once + // every milliseconds. Defaults to true. + // + // Because the window object has its own resize event, it doesn't need to be + // provided by this plugin, and its execution can be left entirely up to the + // browser. However, since certain browsers fire the resize event continuously + // while others do not, enabling this will throttle the window resize event, + // making event behavior consistent across all elements in all browsers. + // + // While setting this property to false will disable window object resize + // event throttling, please note that this property must be changed before any + // window object resize event callbacks are bound. + + jq_resize[str_throttle] = true; + + // Event: resize event + // + // Fired when an element's width or height changes. Because browsers only + // provide this event for the window element, for other elements a polling + // loop is initialized, running every milliseconds + // to see if elements' dimensions have changed. You may bind with either + // .resize( fn ) or .bind( "resize", fn ), and unbind with .unbind( "resize" ). + // + // Usage: + // + // > jQuery('selector').bind( 'resize', function(e) { + // > // element's width or height has changed! + // > ... + // > }); + // + // Additional Notes: + // + // * The polling loop is not created until at least one callback is actually + // bound to the 'resize' event, and this single polling loop is shared + // across all elements. + // + // Double firing issue in jQuery 1.3.2: + // + // While this plugin works in jQuery 1.3.2, if an element's event callbacks + // are manually triggered via .trigger( 'resize' ) or .resize() those + // callbacks may double-fire, due to limitations in the jQuery 1.3.2 special + // events system. This is not an issue when using jQuery 1.4+. + // + // > // While this works in jQuery 1.4+ + // > $(elem).css({ width: new_w, height: new_h }).resize(); + // > + // > // In jQuery 1.3.2, you need to do this: + // > var elem = $(elem); + // > elem.css({ width: new_w, height: new_h }); + // > elem.data( 'resize-special-event', { width: elem.width(), height: elem.height() } ); + // > elem.resize(); + + $.event.special[str_resize] = { + + // Called only when the first 'resize' event callback is bound per element. + setup: function() { + // Since window has its own native 'resize' event, return false so that + // jQuery will bind the event using DOM methods. Since only 'window' + // objects have a .setTimeout method, this should be a sufficient test. + // Unless, of course, we're throttling the 'resize' event for window. + if(!jq_resize[str_throttle] && this[str_setTimeout]) { + return false; + } + + var elem = $(this); + + // Add this element to the list of internal elements to monitor. + elems = elems.add(elem); + + // Initialize data store on the element. + $.data(this, str_data, { + w: elem.width(), + h: elem.height() + }); + + // If this is the first element added, start the polling loop. + if(elems.length === 1) { + loopy(); + } + }, + + // Called only when the last 'resize' event callback is unbound per element. + teardown: function() { + // Since window has its own native 'resize' event, return false so that + // jQuery will unbind the event using DOM methods. Since only 'window' + // objects have a .setTimeout method, this should be a sufficient test. + // Unless, of course, we're throttling the 'resize' event for window. + if(!jq_resize[str_throttle] && this[str_setTimeout]) { + return false; + } + + var elem = $(this); + + // Remove this element from the list of internal elements to monitor. + elems = elems.not(elem); + + // Remove any data stored on the element. + elem.removeData(str_data); + + // If this is the last element removed, stop the polling loop. + if(!elems.length) { + clearTimeout(timeout_id); + } + }, + + // Called every time a 'resize' event callback is bound per element (new in + // jQuery 1.4). + add: function(handleObj) { + // Since window has its own native 'resize' event, return false so that + // jQuery doesn't modify the event object. Unless, of course, we're + // throttling the 'resize' event for window. + if(!jq_resize[str_throttle] && this[str_setTimeout]) { + return false; + } + + var old_handler; + + // The new_handler function is executed every time the event is triggered. + // This is used to update the internal element data store with the width + // and height when the event is triggered manually, to avoid double-firing + // of the event callback. See the "Double firing issue in jQuery 1.3.2" + // comments above for more information. + + function new_handler(e, w, h) { + var elem = $(this), + data = $.data(this, str_data) || {}; + + // If called from the polling loop, w and h will be passed in as + // arguments. If called manually, via .trigger( 'resize' ) or .resize(), + // those values will need to be computed. + data.w = w !== undefined ? w : elem.width(); + data.h = h !== undefined ? h : elem.height(); + + old_handler.apply(this, arguments); + }; + + // This may seem a little complicated, but it normalizes the special event + // .add method between jQuery 1.4/1.4.1 and 1.4.2+ + if($.isFunction(handleObj)) { + // 1.4, 1.4.1 + old_handler = handleObj; + return new_handler; + } else { + // 1.4.2+ + old_handler = handleObj.handler; + handleObj.handler = new_handler; + } + } + + }; + + function loopy() { + + // Start the polling loop, asynchronously. + timeout_id = window[str_setTimeout](function() { + + // Iterate over all elements to which the 'resize' event is bound. + elems.each(function() { + var elem = $(this), + width = elem.width(), + height = elem.height(), + data = $.data(this, str_data); + + // If element size has changed since the last time, update the element + // data store and trigger the 'resize' event. + if(width !== data.w || height !== data.h) { + elem.trigger(str_resize, [data.w = width, data.h = height]); + } + + }); + + // Loop. + loopy(); + + }, jq_resize[str_delay]); + + }; + +})(jQuery, this); + + +/* ======================================================================== + * Bootstrap: scrollspy.js v3.0.3 + * http://getbootstrap.com/javascript/#scrollspy + * + * ZUI: The file has been changed in ZUI. It will not keep update with the + * Bootsrap version in the future. + * http://zui.sexy + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++ function($) { + 'use strict'; + + // SCROLLSPY CLASS DEFINITION + // ========================== + + var zuiname = 'zui.scrollspy' + + function ScrollSpy(element, options) { + var href + var process = $.proxy(this.process, this) + + this.$element = $(element).is('body') ? $(window) : $(element) + this.$body = $('body') + this.$scrollElement = this.$element.on('scroll.' + zuiname + '.data-api', process) + this.options = $.extend({}, ScrollSpy.DEFAULTS, options) + if(!this.selector) this.selector = (this.options.target || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + || '') + ' .nav li > a' + this.offsets = $([]) + this.targets = $([]) + this.activeTarget = null + + this.refresh() + this.process() + } + + ScrollSpy.DEFAULTS = { + offset: 10 + } + + ScrollSpy.prototype.refresh = function() { + var offsetMethod = this.$element[0] == window ? 'offset' : 'position' + + this.offsets = $([]) + this.targets = $([]) + + var self = this + var $targets = this.$body + .find(this.selector) + .map(function() { + var $el = $(this) + var href = $el.data('target') || $el.attr('href') + var $href = /^#./.test(href) && $(href) + + return($href && $href.length && $href.is(':visible') && [ + [$href[offsetMethod]().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href] + ]) || null + }) + .sort(function(a, b) { + return a[0] - b[0] + }) + .each(function() { + self.offsets.push(this[0]) + self.targets.push(this[1]) + }) + } + + ScrollSpy.prototype.process = function() { + var scrollTop = this.$scrollElement.scrollTop() + this.options.offset + var scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight + var maxScroll = scrollHeight - this.$scrollElement.height() + var offsets = this.offsets + var targets = this.targets + var activeTarget = this.activeTarget + var i + + if(scrollTop >= maxScroll) { + return activeTarget != (i = targets.last()[0]) && this.activate(i) + } + + if(activeTarget && scrollTop <= offsets[0]) { + return activeTarget != (i = targets[0]) && this.activate(i) + } + + for(i = offsets.length; i--;) { + activeTarget != targets[i] && scrollTop >= offsets[i] && (!offsets[i + 1] || scrollTop <= offsets[i + 1]) && this.activate(targets[i]) + } + } + + ScrollSpy.prototype.activate = function(target) { + this.activeTarget = target + + $(this.selector) + .parentsUntil(this.options.target, '.active') + .removeClass('active') + + var selector = this.selector + + '[data-target="' + target + '"],' + + this.selector + '[href="' + target + '"]' + + var active = $(selector) + .parents('li') + .addClass('active') + + if(active.parent('.dropdown-menu').length) { + active = active + .closest('li.dropdown') + .addClass('active') + } + + active.trigger('activate.' + zuiname) + } + + + // SCROLLSPY PLUGIN DEFINITION + // =========================== + + var old = $.fn.scrollspy + + $.fn.scrollspy = function(option) { + return this.each(function() { + var $this = $(this) + var data = $this.data(zuiname) + var options = typeof option == 'object' && option + + if(!data) $this.data(zuiname, (data = new ScrollSpy(this, options))) + if(typeof option == 'string') data[option]() + }) + } + + $.fn.scrollspy.Constructor = ScrollSpy + + + // SCROLLSPY NO CONFLICT + // ===================== + + $.fn.scrollspy.noConflict = function() { + $.fn.scrollspy = old + return this + } + + + // SCROLLSPY DATA-API + // ================== + + $(window).on('load', function() { + $('[data-spy="scroll"]').each(function() { + var $spy = $(this) + $spy.scrollspy($spy.data()) + }) + }) + +}(jQuery); + + +/* ======================================================================== + * ZUI: storeb.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function(window, $) { + 'use strict'; + + var lsName = 'localStorage'; + var storage, + dataset, + pageName = 'page_' + window.location.pathname + window.location.search; + + /* The Store object */ + var Store = function() { + this.slience = true; + try { + if((lsName in window) && window[lsName] && window[lsName].setItem) { + this.enable = true; + storage = window[lsName]; + } + } catch(e){} + if(!this.enable) { + dataset = {}; + storage = { + getLength: function() { + var length = 0; + $.each(dataset, function() { + length++; + }); + return length; + }, + key: function(index) { + var key, i = 0; + $.each(dataset, function(k) { + if(i === index) { + key = k; + return false; + } + i++; + }); + return key; + }, + removeItem: function(key) { + delete dataset[key]; + }, + getItem: function(key) { + return dataset[key]; + }, + setItem: function(key, val) { + dataset[key] = val; + }, + clear: function() { + dataset = {}; + } + }; + } + this.storage = storage; + this.page = this.get(pageName, {}); + }; + + /* Save page data */ + Store.prototype.pageSave = function() { + if($.isEmptyObject(this.page)) { + this.remove(pageName); + } else { + var forDeletes = [], + i; + for(i in this.page) { + var val = this.page[i]; + if(val === null) + forDeletes.push(i); + } + for(i = forDeletes.length - 1; i >= 0; i--) { + delete this.page[forDeletes[i]]; + } + this.set(pageName, this.page); + } + }; + + /* Remove page data item */ + Store.prototype.pageRemove = function(key) { + if(typeof this.page[key] != 'undefined') { + this.page[key] = null; + this.pageSave(); + } + }; + + /* Clear page data */ + Store.prototype.pageClear = function() { + this.page = {}; + this.pageSave(); + }; + + /* Get page data */ + Store.prototype.pageGet = function(key, defaultValue) { + var val = this.page[key]; + return(defaultValue !== undefined && (val === null || val === undefined)) ? defaultValue : val; + }; + + /* Set page data */ + Store.prototype.pageSet = function(objOrKey, val) { + if($.isPlainObject(objOrKey)) { + $.extend(true, this.page, objOrKey); + } else { + this.page[this.serialize(objOrKey)] = val; + } + this.pageSave(); + }; + + /* Check enable status */ + Store.prototype.check = function() { + if(!this.enable) { + if(!this.slience) throw new Error('Browser not support localStorage or enable status been set true.'); + } + return this.enable; + }; + + /* Get length */ + Store.prototype.length = function() { + if(this.check()) { + return storage.getLength ? storage.getLength() : storage.length; + } + return 0; + }; + + /* Remove item with browser localstorage native method */ + Store.prototype.removeItem = function(key) { + storage.removeItem(key); + return this; + }; + + /* Remove item with browser localstorage native method, same as removeItem */ + Store.prototype.remove = function(key) { + return this.removeItem(key); + }; + + /* Get item value with browser localstorage native method, and without deserialize */ + Store.prototype.getItem = function(key) { + return storage.getItem(key); + }; + + /* Get item value and deserialize it, if value is null and defaultValue been given then return defaultValue */ + Store.prototype.get = function(key, defaultValue) { + var val = this.deserialize(this.getItem(key)); + if(typeof val === 'undefined' || val === null) { + if(typeof defaultValue !== 'undefined') { + return defaultValue; + } + } + return val; + }; + + /* Get item key by index and deserialize it */ + Store.prototype.key = function(index) { + return storage.key(index); + }; + + /* Set item value with browser localstorage native method, and without serialize filter */ + Store.prototype.setItem = function(key, val) { + storage.setItem(key, val); + return this; + }; + + /* Set item value, serialize it if the given value is not an string */ + Store.prototype.set = function(key, val) { + if(val === undefined) return this.remove(key); + this.setItem(key, this.serialize(val)); + return this; + }; + + /* Clear all items with browser localstorage native method */ + Store.prototype.clear = function() { + storage.clear(); + return this; + }; + + /* Iterate all items with callback */ + Store.prototype.forEach = function(callback) { + var length = this.length(); + for(var i = length - 1; i >= 0; i--) { + var key = storage.key(i); + callback(key, this.get(key)); + } + return this; + }; + + /* Get all items and set value in an object. */ + Store.prototype.getAll = function() { + var all = {}; + this.forEach(function(key, val) { + all[key] = val; + }); + + return all; + }; + + /* Serialize value with JSON.stringify */ + Store.prototype.serialize = function(value) { + if(typeof value === 'string') return value; + return JSON.stringify(value); + }; + + /* Deserialize value, with JSON.parse if the given value is not a string */ + Store.prototype.deserialize = function(value) { + if(typeof value !== 'string') return undefined; + try { + return JSON.parse(value); + } catch(e) { + return value || undefined; + } + }; + + $.zui({ + store: new Store() + }); +}(window, jQuery)); + + +/* ======================================================================== + * ZUI: searchbox.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function($) { + 'use strict'; + + var NAME = 'zui.searchBox'; // modal name + + // The searchbox modal class + var SearchBox = function(element, options) { + var that = this; + that.name = name; + that.$ = $(element); + + that.options = options = $.extend({}, SearchBox.DEFAULTS, that.$.data(), options); + + // Initialize here + var $input = that.$.is(options.inputSelector) ? that.$ : that.$.find(options.inputSelector); + if ($input.length) { + var clearChangeTimer = function() { + if (that.changeTimer) { + clearTimeout(that.changeTimer); + that.changeTimer = null; + } + }; + + var handleChange = function() { + clearChangeTimer(); + var value = that.getSearch(); + if (value !== that.lastValue) { + var isEmpty = value === ''; + $input.toggleClass('empty', isEmpty); + that.$.callComEvent(that, 'onSearchChange', [value, isEmpty]); + that.lastValue = value; + } + }; + + that.$input = $input = $input.first(); + that.lastValue = that.getSearch(); + + $input.on(options.listenEvent, function(params) { + that.changeTimer = setTimeout(function() { + handleChange(); + }, options.changeDelay); + }).on('focus', function(e) { + $input.addClass('focus'); + that.$.callComEvent(that, 'onFocus', [e]); + }).on('blur', function(e) { + $input.removeClass('focus'); + that.$.callComEvent(that, 'onBlur', [e]); + }).on('keydown', function(e) { + var handled = 0; + var keyCode = e.witch; + if (keyCode === 27 && options.escToClear) { // esc + this.setSearch('', true); + handleChange(); + handled = 1; + } else if (keyCode === 13 && options.onPressEnter) { + handleChange(); + that.$.callComEvent(that, 'onPressEnter', [e]); + } + var onKeyDownResult = that.$.callComEvent(that, 'onKeyDown', [e]); + if (onKeyDownResult === false) { + handled = 1; + } + if (handled) { + e.preventDefault(); + } + }); + + that.$.on('click', '.search-clear-btn', function(e) { + that.setSearch('', true); + handleChange(); + e.preventDefault(); + }); + + handleChange(); + } else { + console.error('ZUI: search box init error, cannot find search box input element.'); + } + }; + + // default options + SearchBox.DEFAULTS = { + inputSelector: 'input[type="search"],input[type="text"]', + listenEvent: 'change input paste', + changeDelay: 500, + + // onKeyDown: null, + // onFocus: null, + // onBlur: null, + // onSearchChange: null, + // onPressEnter: null, + // escToClear: true + }; + + // Get current search string + SearchBox.prototype.getSearch = function() { + return this.$input && $.trim(this.$input.val()); + }; + + // Set current search string + SearchBox.prototype.setSearch = function(value, notTriggerChange) { + var $input = this.$input; + if ($input) { + $input.val(value); + if (!notTriggerChange) { + $input.trigger('change'); + } + } + }; + + // Focus input element + SearchBox.prototype.focus = function() { + this.$input && this.$input.focus(); + }; + + // Extense jquery element + $.fn.searchBox = function(option) { + return this.each(function() { + var $this = $(this); + var data = $this.data(NAME); + var options = typeof option == 'object' && option; + + if(!data) $this.data(NAME, (data = new SearchBox(this, options))); + + if(typeof option == 'string') data[option](); + }); + }; + + SearchBox.NAME = NAME; + + $.fn.searchBox.Constructor = SearchBox; +}(jQuery)); + + +/* ======================================================================== + * ZUI: draggable.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function($, document) { + 'use strict'; + + var NAME = 'zui.draggable', + DEFAULTS = { + // selector: '', + container: 'body', + move: true + // mouseButton: -1 // 0, 1, 2, -1, all, left, right, middle + }; + var idIncrementer = 0; + + var Draggable = function(element, options) { + var that = this; + that.$ = $(element); + that.id = idIncrementer++; + that.options = $.extend({}, DEFAULTS, that.$.data(), options); + that.init(); + }; + + Draggable.DEFAULTS = DEFAULTS; + Draggable.NAME = NAME; + + Draggable.prototype.init = function() { + var that = this, + $root = that.$, + BEFORE = 'before', + DRAG = 'drag', + FINISH = 'finish', + eventSuffix = '.' + NAME + '.' + that.id, + mouseDownEvent = 'mousedown' + eventSuffix, + mouseUpEvent = 'mouseup' + eventSuffix, + mouseMoveEvent = 'mousemove' + eventSuffix, + setting = that.options, + selector = setting.selector, + handle = setting.handle, + $ele = $root, + isMoveFunc = $.isFunction(setting.move), + startPos, + cPos, + startOffset, + mousePos, + moved; + + var mouseMove = function(event) { + var mX = event.pageX, + mY = event.pageY; + moved = true; + var dragPos = { + left: mX - startOffset.x, + top: mY - startOffset.y + }; + + $ele.removeClass('drag-ready').addClass('dragging'); + if(setting.move) { + if (isMoveFunc) { + setting.move(dragPos, $ele); + } else { + $ele.css(dragPos); + } + } + + setting[DRAG] && setting[DRAG]({ + event: event, + element: $ele, + startOffset: startOffset, + pos: dragPos, + offset: { + x: mX - startPos.x, + y: mY - startPos.y + }, + smallOffset: { + x: mX - mousePos.x, + y: mY - mousePos.y + } + }); + mousePos.x = mX; + mousePos.y = mY; + + if(setting.stopPropagation) { + event.stopPropagation(); + } + }; + + var mouseUp = function(event) { + $(document).off(eventSuffix); + if(!moved) { + $ele.removeClass('drag-ready'); + return; + } + var endPos = { + left: event.pageX - startOffset.x, + top: event.pageY - startOffset.y + }; + $ele.removeClass('drag-ready dragging'); + if(setting.move) { + if (isMoveFunc) { + setting.move(endPos, $ele); + } else { + $ele.css(endPos); + } + } + + setting[FINISH] && setting[FINISH]({ + event: event, + element: $ele, + startOffset: startOffset, + pos: endPos, + offset: { + x: event.pageX - startPos.x, + y: event.pageY - startPos.y + }, + smallOffset: { + x: event.pageX - mousePos.x, + y: event.pageY - mousePos.y + } + }); + event.preventDefault(); + if(setting.stopPropagation) { + event.stopPropagation(); + } + }; + + var mouseDown = function(event) { + var mouseButton = $.zui.getMouseButtonCode(setting.mouseButton); + if(mouseButton > -1 && event.button !== mouseButton) { + return; + } + + var $mouseDownEle = $(this); + if(selector) { + $ele = handle ? $mouseDownEle.closest(selector) : $mouseDownEle; + } + + if(setting[BEFORE]) { + var isSure = setting[BEFORE]({ + event: event, + element: $ele + }); + if(isSure === false) return; + } + + var $container = $(setting.container), + pos = $ele.offset(); + cPos = $container.offset(); + startPos = { + x: event.pageX, + y: event.pageY + }; + startOffset = { + x: event.pageX - pos.left + cPos.left, + y: event.pageY - pos.top + cPos.top + }; + mousePos = $.extend({}, startPos); + moved = false; + + $ele.addClass('drag-ready'); + event.preventDefault(); + + if(setting.stopPropagation) { + event.stopPropagation(); + } + + $(document).on(mouseMoveEvent, mouseMove).on(mouseUpEvent, mouseUp); + }; + + if(handle) { + $root.on(mouseDownEvent, handle, mouseDown); + } else if(selector) { + $root.on(mouseDownEvent, selector, mouseDown); + } else { + $root.on(mouseDownEvent, mouseDown); + } + }; + + Draggable.prototype.destroy = function() { + var eventSuffix = '.' + NAME + '.' + this.id; + this.$.off(eventSuffix); + $(document).off(eventSuffix); + this.$.data(NAME, null); + }; + + $.fn.draggable = function(option) { + return this.each(function() { + var $this = $(this); + var data = $this.data(NAME); + var options = typeof option == 'object' && option; + + if(!data) $this.data(NAME, (data = new Draggable(this, options))); + if(typeof option == 'string') data[option](); + }); + }; + + $.fn.draggable.Constructor = Draggable; +}(jQuery, document)); + + +/* ======================================================================== + * ZUI: droppable.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function($, document, Math) { + 'use strict'; + + var NAME = 'zui.droppable', + DEFAULTS = { + // container: '', + // selector: '', + // handle: '', + // flex: false, + // nested: false, + target: '.droppable-target', + deviation: 5, + sensorOffsetX: 0, + sensorOffsetY: 0, + // mouseButton: -1 // 0, 1, 2, -1, all, left, right, middle + }; + var idIncrementer = 0; + + var Droppable = function(element, options) { + var that = this; + that.id = idIncrementer++; + that.$ = $(element); + that.options = $.extend({}, DEFAULTS, that.$.data(), options); + that.init(); + }; + + Droppable.DEFAULTS = DEFAULTS; + Droppable.NAME = NAME; + + Droppable.prototype.trigger = function(name, params) { + return $.zui.callEvent(this.options[name], params, this); + }; + + Droppable.prototype.init = function() { + var that = this, + $root = that.$, + setting = that.options, + deviation = setting.deviation, + eventSuffix = '.' + NAME + '.' + that.id, + mouseDownEvent = 'mousedown' + eventSuffix, + mouseUpEvent = 'mouseup' + eventSuffix, + mouseMoveEvent = 'mousemove' + eventSuffix, + selector = setting.selector, + handle = setting.handle, + flex = setting.flex, + container = setting.container, + canMoveHere = setting.canMoveHere, + $ele = $root, + isMouseDown = false, + $container = container ? $(setting.container).first() : (selector ? $root : $('body')), + $targets, + $target, + $shadow, + isIn, + isSelf, + oldCssPosition, + startOffset, + startMouseOffset, + containerOffset, + clickOffset, + mouseOffset, + lastMouseOffset, + mouseDownBackEventCall; + + var mouseMove = function(event) { + if(!isMouseDown) return; + + mouseOffset = {left: event.pageX, top: event.pageY}; + + // ignore small move + if(Math.abs(mouseOffset.left - startMouseOffset.left) < deviation && Math.abs(mouseOffset.top - startMouseOffset.top) < deviation) return; + + if($shadow === null) // create shadow + { + var cssPosition = $container.css('position'); + if(cssPosition != 'absolute' && cssPosition != 'relative' && cssPosition != 'fixed') { + oldCssPosition = cssPosition; + $container.css('position', 'relative'); + } + + $shadow = $ele.clone().removeClass('drag-from').addClass('drag-shadow').css({ + position: 'absolute', + width: $ele.outerWidth(), + transition: 'none' + }).appendTo($container); + $ele.addClass('dragging'); + + that.trigger('start', { + event: event, + element: $ele + }); + } + + var offset = { + left: mouseOffset.left - clickOffset.left, + top: mouseOffset.top - clickOffset.top + }; + var position = { + left: offset.left - containerOffset.left, + top: offset.top - containerOffset.top + }; + $shadow.css(position); + $.extend(lastMouseOffset, mouseOffset); + + var isNew = false; + isIn = false; + + if(!flex) { + $targets.removeClass('drop-to'); + } + + var $newTarget = null; + $targets.each(function() { + var t = $(this), + tPos = t.offset(), + tW = t.outerWidth(), + tH = t.outerHeight(), + tX = tPos.left + setting.sensorOffsetX, + tY = tPos.top + setting.sensorOffsetY; + + if(mouseOffset.left > tX && mouseOffset.top > tY && mouseOffset.left < (tX + tW) && mouseOffset.top < (tY + tH)) { + if($newTarget) $newTarget.removeClass('drop-to'); + $newTarget = t; + if(!setting.nested) return false; + } + }); + + if($newTarget) { + isIn = true; + var id = $newTarget.data('id'); + if($ele.data('id') != id) isSelf = false; + if($target === null || ($target.data('id') !== id && (!isSelf))) isNew = true; + $target = $newTarget; + if(flex) { + $targets.removeClass('drop-to'); + } + $target.addClass('drop-to'); + } + + + if(!flex) { + $ele.toggleClass('drop-in', isIn); + $shadow.toggleClass('drop-in', isIn); + } else if($target !== null && $target.length) { + isIn = true; + } + + if(!canMoveHere || canMoveHere($ele, $target) !== false) { + that.trigger('drag', { + event: event, + isIn: isIn, + target: $target, + element: $ele, + isNew: isNew, + selfTarget: isSelf, + clickOffset: clickOffset, + offset: offset, + position: { + left: offset.left - containerOffset.left, + top: offset.top - containerOffset.top + }, + mouseOffset: mouseOffset + }); + } + + event.preventDefault(); + }; + + var mouseUp = function(event) { + $(document).off(eventSuffix); + clearTimeout(mouseDownBackEventCall); + if(!isMouseDown) return; + + isMouseDown = false; + + if(oldCssPosition) { + $container.css('position', oldCssPosition); + } + + if($shadow === null) { + $ele.removeClass('drag-from'); + that.trigger('always', { + event: event, + cancel: true + }); + return; + } + + if(!isIn) $target = null; + var isSure = true; + mouseOffset = event ? { + left: event.pageX, + top: event.pageY + } : lastMouseOffset; + var offset = { + left: mouseOffset.left - clickOffset.left, + top: mouseOffset.top - clickOffset.top + }; + var moveOffset = { + left: mouseOffset.left - lastMouseOffset.left, + top: mouseOffset.top - lastMouseOffset.top + }; + lastMouseOffset.left = mouseOffset.left; + lastMouseOffset.top = mouseOffset.top; + var eventOptions = { + event: event, + isIn: isIn, + target: $target, + element: $ele, + isNew: (!isSelf) && $target !== null, + selfTarget: isSelf, + offset: offset, + mouseOffset: mouseOffset, + position: { + left: offset.left - containerOffset.left, + top: offset.top - containerOffset.top + }, + lastMouseOffset: lastMouseOffset, + moveOffset: moveOffset + }; + + isSure = that.trigger('beforeDrop', eventOptions); + + if(isSure && isIn) { + that.trigger('drop', eventOptions); + } + + $targets.removeClass('drop-to'); + $ele.removeClass('dragging').removeClass('drag-from'); + $shadow.remove(); + $shadow = null; + + that.trigger('finish', eventOptions); + that.trigger('always', eventOptions); + + if(event) event.preventDefault(); + }; + + var mouseDown = function(event) { + var mouseButton = $.zui.getMouseButtonCode(setting.mouseButton); + if(mouseButton > -1 && event.button !== mouseButton) { + return; + } + + var $mouseDownEle = $(this); + if(selector) { + $ele = handle ? $mouseDownEle.closest(selector) : $mouseDownEle; + } + + if($ele.hasClass('drag-shadow')) { + return; + } + + if(setting['before']) { + if(setting['before']({ + event: event, + element: $ele + }) === false) return; + } + + isMouseDown = true; + $targets = $.isFunction(setting.target) ? setting.target($root) : $container.find(setting.target), + $target = null, + $shadow = null, + isIn = false, + isSelf = true, + oldCssPosition = null, + startOffset = $ele.offset(), + containerOffset = $container.offset(); + startMouseOffset = {left: event.pageX, top: event.pageY}; + lastMouseOffset = $.extend({}, startMouseOffset); + clickOffset = { + left: startMouseOffset.left - startOffset.left, + top: startMouseOffset.top - startOffset.top + }; + + $ele.addClass('drag-from'); + $(document).on(mouseMoveEvent, mouseMove).on(mouseUpEvent, mouseUp); + mouseDownBackEventCall = setTimeout(function() { + $(document).on(mouseDownEvent, mouseUp); + }, 10); + event.preventDefault(); + }; + + if(handle) { + $root.on(mouseDownEvent, handle, mouseDown); + } else if(selector) { + $root.on(mouseDownEvent, selector, mouseDown); + } else { + $root.on(mouseDownEvent, mouseDown); + } + }; + + Droppable.prototype.destroy = function() { + var eventSuffix = '.' + NAME + '.' + this.id; + this.$.off(eventSuffix); + $(document).off(eventSuffix); + this.$.data(NAME, null); + }; + + Droppable.prototype.reset = function() { + this.destroy(); + this.init(); + }; + + $.fn.droppable = function(option) { + return this.each(function() { + var $this = $(this); + var data = $this.data(NAME); + var options = typeof option == 'object' && option; + + if(!data) $this.data(NAME, (data = new Droppable(this, options))); + + if(typeof option == 'string') data[option](); + }); + }; + + $.fn.droppable.Constructor = Droppable; +}(jQuery, document, Math)); + +/* ======================================================================== + * Bootstrap: modal.js v3.2.0 + * http://getbootstrap.com/javascript/#modals + * + * ZUI: The file has been changed in ZUI. It will not keep update with the + * Bootsrap version in the future. + * http://zui.sexy + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== + * Updates in ZUI: + * 1. changed event namespace to *.zui.modal + * 2. added position option to ajust poisition of modal + * 3. added event 'escaping.zui.modal' with an param 'esc' to judge the esc + * key down + * 4. get moveable options value from '.modal-moveable' on '.modal-dialog' + * 5. add setMoveable method to make modal dialog moveable + * ======================================================================== */ + ++ function($) { + 'use strict'; + + // MODAL CLASS DEFINITION + // ====================== + + var zuiname = 'zui.modal' + var Modal = function(element, options) { + var that = this; + that.options = options + that.$body = $(document.body) + that.$element = $(element) + that.$backdrop = + that.isShown = null + that.scrollbarWidth = 0 + + if(options.moveable === undefined) { + that.options.moveable = that.$element.hasClass('modal-moveable'); + } + + if(options.remote) { + that.$element + .find('.modal-content') + .load(options.remote, function() { + that.$element.trigger('loaded.' + zuiname) + }) + } + } + + Modal.VERSION = '3.2.0' + + Modal.TRANSITION_DURATION = 300 + Modal.BACKDROP_TRANSITION_DURATION = 150 + + Modal.DEFAULTS = { + backdrop: true, + keyboard: true, + show: true, + // rememberPos: false, + // moveable: false, + position: 'fit' // 'center' or '40px' or '10%' + }; + + var setDialogPos = function($dialog, pos) { + var $window = $(window); + pos.left = Math.max(0, Math.min(pos.left, $window.width() - $dialog.outerWidth())); + pos.top = Math.max(0, Math.min(pos.top, $window.height() - $dialog.outerHeight())); + $dialog.css(pos); + }; + + Modal.prototype.toggle = function(_relatedTarget, position) { + return this.isShown ? this.hide() : this.show(_relatedTarget, position) + } + + Modal.prototype.ajustPosition = function(position) { + var that = this; + var options = that.options; + if(typeof position === 'undefined') position = options.position; + if(typeof position === 'undefined') return; + var $dialog = that.$element.find('.modal-dialog'); + // if($dialog.hasClass('modal-dragged')) return; + + var half = Math.max(0, ($(window).height() - $dialog.outerHeight()) / 2); + var topPos = position == 'fit' ? (half * 2 / 3) : (position == 'center' ? half : position); + if($dialog.hasClass('modal-moveable')) { + var pos = null; + var rememberPos = options.rememberPos; + if(rememberPos) { + if(rememberPos === true) { + pos = that.$element.data('modal-pos'); + } else if($.zui.store) { + pos = $.zui.store.pageGet(zuiname + '.rememberPos.' + rememberPos); + } + } + if(!pos) { + pos = { + left: Math.max(0, ($(window).width() - $dialog.outerWidth()) / 2), + top: topPos + }; + } + if (options.moveable === 'inside') { + setDialogPos($dialog, pos); + } else { + $dialog.css(pos); + } + } else { + $dialog.css('margin-top', topPos); + } + } + + Modal.prototype.setMoveale = function() { + if(!$.fn.draggable) console.error('Moveable modal requires draggable.js.'); + var that = this; + var options = that.options; + var $dialog = that.$element.find('.modal-dialog').removeClass('modal-dragged'); + $dialog.toggleClass('modal-moveable', !!options.moveable); + + if(!that.$element.data('modal-moveable-setup')) { + $dialog.draggable({ + container: that.$element, + handle: '.modal-header', + before: function() { + $dialog.css('margin-top', '').addClass('modal-dragged'); + }, + finish: function(e) { + var rememberPos = options.rememberPos; + if(rememberPos) { + that.$element.data('modal-pos', e.pos); + if($.zui.store && rememberPos !== true) { + $.zui.store.pageSet(zuiname + '.rememberPos.' + rememberPos, e.pos); + } + } + }, + move: options.moveable === 'inside' ? function (dragPos) { + setDialogPos($dialog, dragPos); + } : true + }); + } + } + + Modal.prototype.show = function(_relatedTarget, position) { + var that = this + var e = $.Event('show.' + zuiname, { + relatedTarget: _relatedTarget + }) + + that.$element.trigger(e) + + if(that.isShown || e.isDefaultPrevented()) return + + that.isShown = true + + if(that.options.moveable) that.setMoveale(); + + that.checkScrollbar() + that.$body.addClass('modal-open') + + that.setScrollbar() + that.escape() + + that.$element.on('click.dismiss.' + zuiname, '[data-dismiss="modal"]', $.proxy(that.hide, that)) + + that.backdrop(function() { + var transition = $.support.transition && that.$element.hasClass('fade') + + if(!that.$element.parent().length) { + that.$element.appendTo(that.$body) // don't move modals dom position + } + + that.$element + .show() + .scrollTop(0) + + if(transition) { + that.$element[0].offsetWidth // force reflow + } + + that.$element + .addClass('in') + .attr('aria-hidden', false) + + that.ajustPosition(position); + + that.enforceFocus() + + var e = $.Event('shown.' + zuiname, { + relatedTarget: _relatedTarget + }) + + transition ? + that.$element.find('.modal-dialog') // wait for modal to slide in + .one('bsTransitionEnd', function() { + that.$element.trigger('focus').trigger(e) + }) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + that.$element.trigger('focus').trigger(e) + }) + } + + Modal.prototype.hide = function(e) { + if(e) e.preventDefault() + + e = $.Event('hide.' + zuiname) + + this.$element.trigger(e) + + if(!this.isShown || e.isDefaultPrevented()) return + + this.isShown = false + + this.$body.removeClass('modal-open') + + this.resetScrollbar() + this.escape() + + $(document).off('focusin.' + zuiname) + + this.$element + .removeClass('in') + .attr('aria-hidden', true) + .off('click.dismiss.' + zuiname) + + $.support.transition && this.$element.hasClass('fade') ? + this.$element + .one('bsTransitionEnd', $.proxy(this.hideModal, this)) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + this.hideModal() + } + + Modal.prototype.enforceFocus = function() { + $(document) + .off('focusin.' + zuiname) // guard against infinite focus loop + .on('focusin.' + zuiname, $.proxy(function(e) { + if(this.$element[0] !== e.target && !this.$element.has(e.target).length) { + this.$element.trigger('focus') + } + }, this)) + } + + Modal.prototype.escape = function() { + if(this.isShown && this.options.keyboard) { + $(document).on('keydown.dismiss.' + zuiname, $.proxy(function(e) { + if(e.which == 27) { + var et = $.Event('escaping.' + zuiname) + var result = this.$element.triggerHandler(et, 'esc') + if(result != undefined && (!result)) return + this.hide() + } + }, this)) + } else if(!this.isShown) { + $(document).off('keydown.dismiss.' + zuiname) + } + } + + Modal.prototype.hideModal = function() { + var that = this + this.$element.hide() + this.backdrop(function() { + that.$element.trigger('hidden.' + zuiname) + }) + } + + Modal.prototype.removeBackdrop = function() { + this.$backdrop && this.$backdrop.remove() + this.$backdrop = null + } + + Modal.prototype.backdrop = function(callback) { + var that = this + var animate = this.$element.hasClass('fade') ? 'fade' : '' + + if(this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $('
  • '); + } + var $a = $('').attr({ + href: item.url || '###', + 'class': item.className, + style: item.style + }).data('item', item); + if (item.html) { + $a.html(item.html === true ? (item.label || item.text) : item.html); + } else { + $a.text(item.label || item.text); + } + if (item.onClick) { + $a.on('click', item.onClick); + } + return $('
  • ').toggleClass('disabled', item.disabled === true).append($a); + }; + + var animationTimer = null; + var hideContextMenu = function(id, callback) { + if (typeof id === 'function') { + callback = id; + id = null; + } + + if (animationTimer) { + clearTimeout(animationTimer); + animationTimer = null; + } + + var $target = $('#' + targetId); + if ($target.length) { + var options = $target.data('options'); + if (!id || options.id === id) { + var afterHide = function() { + $target.hide(); + options.onHidden && options.onHidden(); + callback && callback(); + }; + options.onHide && options.onHide(); + var animation = options.animation; + $target.removeClass('in'); + if (animation) { + animationTimer = setTimeout(afterHide, options.duration); + } else { + afterHide(); + } + } + } + return ContextMenu; + }; + + var showContextMenu = function(items, options, callback) { + if ($.isPlainObject(items)) { + callback = options; + options = items; + items = options.items; + } + + isShowingMenu = true; + // hideContextMenu(); + + options = $.extend({}, DEFAULTS, options); + var x = options.x; + var y = options.y; + if (x === undefined) x = (options.event || options).clientX; + if (x === undefined) x = mouseX; + if (y === undefined) y = (options.event || options).clientY; + if (y === undefined) y = mouseY; + + var $target = $('#' + targetId); + if (!$target.length) { + $target = $('').appendTo('body'); + } + var $menu = $target.find('.contextmenu-menu').off('click.' + NAME).on('click.' + NAME, 'a', function(e) { + var $item = $(this); + var clickResult = options.onClickItem && options.onClickItem($item.data('item'), $item, e); + if (clickResult !== false) { + hideContextMenu(); + } + }).empty();; + $target.hide().attr('class', 'contextmenu'); + var itemCreator = options.itemCreator || createMenuItem; + var itemsType = typeof items; + if (itemsType === 'string') { + items = items.split(','); + } else if (itemsType === 'function') { + items = items(options); + } + $.each(items, function(index, item) { + $menu.append(itemCreator(item, index, options)); + }); + + // Show menu + var animation = options.animation; + var duration = options.duration; + if (animation === true) options.animation = animation = 'fade'; + if (animationTimer) { + clearTimeout(animationTimer); + animationTimer = null; + } + var afterShow = function() { + $target.addClass('in'); + options.onShown && options.onShown(); + callback && callback(); + }; + options.onShow && options.onShow(); + $target.data('options', { + animation: animation, + onHide: options.onHide, + onHidden: options.onHidden, + id: options.id, + duration: duration + }); + + var $w = $(window); + x = Math.max(0, Math.min(x, $w.width() - $menu.outerWidth())); + y = Math.max(0, Math.min(y, $w.height() - $menu.outerHeight())); + $target.css({ + left: x, + top: y + }); + + if (animation) { + $target.addClass('open').addClass(animation).show(); + animationTimer = setTimeout(function() { + afterShow(); + isShowingMenu = false; + }, options.duration); + } else { + $target.addClass('open').show(); + afterShow(); + animationTimer = setTimeout(function() { + isShowingMenu = false; + }, 200); + } + return ContextMenu; + }; + + $(document).on('click', function(e) { + if (!isShowingMenu && !$(e.target).closest('.contextmenu').length) { + hideContextMenu(); + } + }); + + $.extend(ContextMenu, { + NAME: NAME, + DEFAULTS: DEFAULTS, + show: showContextMenu, + hide: hideContextMenu, + listenMouse: listenMouseMove + }); + $.zui({ContextMenu: ContextMenu}); + + + // The contextmenu model class + var ContextListener = function(element, options) { + var that = this; + that.name = NAME; + that.$ = $(element); + + options = that.options = $.extend({trigger: 'contextmenu'}, ContextMenu.DEFAULTS, this.$.data(), options); + + var trigger = options.trigger; + + that.id = $.zui.uuid(); + var eventHandler = function(e) { + if (e.type === 'mousedown' && e.button !== 2) { + return; + } + var config = { + x: e.clientX, + y: e.clientY, + event: e + }; + if (options.itemsCreator) { + config.items = options.itemsCreator.call(this, e); + } + that.show(config); + e.preventDefault(); + e.returnValue = false; // 解决IE8右键弹出 + return false; + }; + var eventName = trigger + '.' + NAME; + if (options.selector) { + that.$.on(eventName, options.selector, eventHandler); + } else { + that.$.on(eventName, eventHandler); + } + }; + + ContextListener.prototype.destory = function () { + that.$.off('.' + NAME); + }; + + ContextListener.prototype.hide = function (callback) { + ContextMenu.hide(this.id, callback); + }; + + ContextListener.prototype.show = function (options, callback) { + options = $.extend({}, this.options, options); + ContextMenu.show(options, callback); + }; + + // Extense jquery element + $.fn.contextmenu = function(option) { + return this.each(function() { + var $this = $(this); + var data = $this.data(NAME); + var options = typeof option == 'object' && option; + + if(!data) $this.data(NAME, (data = new ContextListener(this, options))); + + if(typeof option == 'string') data[option](); + }); + }; + $.fn.contextmenu.Constructor = ContextListener; +}(jQuery, undefined)); + + +/* ======================================================================== + * Bootstrap: carousel.js v3.0.0 + * http://twzui.github.com/bootstrap/javascript.html#carousel + * + * ZUI: The file has been changed in ZUI. It will not keep update with the + * Bootsrap version in the future. + * http://zui.sexy + * ======================================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== + * Updates in ZUI: + * 1. support touch event for touchable devices + * ======================================================================== */ + + ++ function($) { + 'use strict'; + + // CAROUSEL CLASS DEFINITION + // ========================= + + var Carousel = function(element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.paused = + this.sliding = + this.interval = + this.$active = + this.$items = null + + this.options.pause == 'hover' && this.$element + .on('mouseenter', $.proxy(this.pause, this)) + .on('mouseleave', $.proxy(this.cycle, this)) + } + + Carousel.DEFAULTS = { + interval: 5000, + pause: 'hover', + wrap: true, + touchable: true + } + + Carousel.prototype.touchable = function() { + if(!this.options.touchable) return; + + this.$element.on('touchstart touchmove touchend', touch); + var touchStartX, touchStartY; + var that = this; + + /* listen the touch event */ + function touch(event) { + var event = event || window.event; + if(event.originalEvent) event = event.originalEvent; + var carousel = $(this); + + switch(event.type) { + case "touchstart": + touchStartX = event.touches[0].pageX; + touchStartY = event.touches[0].pageY; + break; + case "touchend": + var distanceX = event.changedTouches[0].pageX - touchStartX; + var distanceY = event.changedTouches[0].pageY - touchStartY; + if(Math.abs(distanceX) > Math.abs(distanceY)) { + handleCarousel(carousel, distanceX); + if(Math.abs(distanceX) > 10) { + event.preventDefault(); + } + } else { + var $w = $(window); + $('body,html').animate({ + scrollTop: $w.scrollTop() - distanceY + }, 400) + } + break; + } + } + + function handleCarousel(carousel, distance) { + if(distance > 10) that.prev(); + else if(distance < -10) that.next(); + } + } + + Carousel.prototype.cycle = function(e) { + e || (this.paused = false) + + this.interval && clearInterval(this.interval) + + this.options.interval && !this.paused && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + + return this + } + + Carousel.prototype.getActiveIndex = function() { + this.$active = this.$element.find('.item.active') + this.$items = this.$active.parent().children() + + return this.$items.index(this.$active) + } + + Carousel.prototype.to = function(pos) { + var that = this + var activeIndex = this.getActiveIndex() + + if(pos > (this.$items.length - 1) || pos < 0) return + + if(this.sliding) return this.$element.one('slid', function() { + that.to(pos) + }) + if(activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) + } + + Carousel.prototype.pause = function(e) { + e || (this.paused = true) + + if(this.$element.find('.next, .prev').length && $.support.transition.end) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + + this.interval = clearInterval(this.interval) + + return this + } + + Carousel.prototype.next = function() { + if(this.sliding) return + return this.slide('next') + } + + Carousel.prototype.prev = function() { + if(this.sliding) return + return this.slide('prev') + } + + Carousel.prototype.slide = function(type, next) { + var $active = this.$element.find('.item.active') + var $next = next || $active[type]() + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var fallback = type == 'next' ? 'first' : 'last' + var that = this + + if(!$next.length) { + if(!this.options.wrap) return + $next = this.$element.find('.item')[fallback]() + } + + this.sliding = true + + isCycling && this.pause() + + var e = $.Event('slide.zui.carousel', { + relatedTarget: $next[0], + direction: direction + }) + + if($next.hasClass('active')) return + + if(this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + this.$element.one('slid', function() { + var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) + $nextIndicator && $nextIndicator.addClass('active') + }) + } + + if($.support.transition && this.$element.hasClass('slide')) { + this.$element.trigger(e) + if(e.isDefaultPrevented()) return + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one($.support.transition.end, function() { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function() { + that.$element.trigger('slid') + }, 0) + }) + .emulateTransitionEnd(600) + } else { + this.$element.trigger(e) + if(e.isDefaultPrevented()) return + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger('slid') + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + var old = $.fn.carousel + + $.fn.carousel = function(option) { + return this.each(function() { + var $this = $(this) + var data = $this.data('zui.carousel') + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) + var action = typeof option == 'string' ? option : options.slide + + if(!data) $this.data('zui.carousel', (data = new Carousel(this, options))) + if(typeof option == 'number') data.to(option) + else if(action) data[action]() + else if(options.interval) data.pause().cycle() + + if(options.touchable) data.touchable() + }) + } + + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function() { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + $(document).on('click.zui.carousel.data-api', '[data-slide], [data-slide-to]', function(e) { + var $this = $(this), + href + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if(slideIndex) options.interval = false + + $target.carousel(options) + + if(slideIndex = $this.attr('data-slide-to')) { + $target.data('zui.carousel').to(slideIndex) + } + + e.preventDefault() + }) + + $(window).on('load', function() { + $('[data-ride="carousel"]').each(function() { + var $carousel = $(this) + $carousel.carousel($carousel.data()) + }) + }) + +}(window.jQuery); + + +/* ======================================================================== + * TangBin: image.ready.js + * http://www.planeart.cn/?p=1121 + * + * ZUI: The file has been changed in ZUI. It will not keep update with the + * original version in the future. + * http://zui.sexy + * ======================================================================== + * @version 2011.05.27 + * @author TangBin + * ======================================================================== */ + + +/*! TangBin: image.ready.js http://www.planeart.cn/?p=1121 */ + +(function($) { + 'use strict'; + + /** + * Image ready + * @param {String} image url + * @param {Function} callback on image ready + * @param {Function} callback on image load + * @param {Function} callback on error + * @example imgReady('image.png', function () { + alert('size ready: width=' + this.width + '; height=' + this.height); + }); + */ + $.zui.imgReady = (function() { + var list = [], + intervalId = null, + + // 用来执行队列 + tick = function() { + var i = 0; + for(; i < list.length; i++) { + list[i].end ? list.splice(i--, 1) : list[i](); + }!list.length && stop(); + }, + + // 停止所有定时器队列 + stop = function() { + clearInterval(intervalId); + intervalId = null; + }; + + return function(url, ready, load, error) { + var onready, width, height, newWidth, newHeight, + img = new Image(); + + img.src = url; + + // 如果图片被缓存,则直接返回缓存数据 + if(img.complete) { + ready.call(img); + load && load.call(img); + return; + } + + width = img.width; + height = img.height; + + // 加载错误后的事件 + img.onerror = function() { + error && error.call(img); + onready.end = true; + img = img.onload = img.onerror = null; + }; + + // 图片尺寸就绪 + onready = function() { + newWidth = img.width; + newHeight = img.height; + if(newWidth !== width || newHeight !== height || + // 如果图片已经在其他地方加载可使用面积检测 + newWidth * newHeight > 1024 + ) { + ready.call(img); + onready.end = true; + } + }; + onready(); + + // 完全加载完毕的事件 + img.onload = function() { + // onload在定时器时间差范围内可能比onready快 + // 这里进行检查并保证onready优先执行 + !onready.end && onready(); + + load && load.call(img); + + // IE gif动画会循环执行onload,置空onload即可 + img = img.onload = img.onerror = null; + }; + + // 加入队列中定期执行 + if(!onready.end) { + list.push(onready); + // 无论何时只允许出现一个定时器,减少浏览器性能损耗 + if(intervalId === null) intervalId = setInterval(tick, 40); + } + }; + })(); +}(jQuery)); + + +/* ======================================================================== + * ZUI: lightbox.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function($, window, Math) { + 'use strict'; + + if(!$.fn.modalTrigger) throw new Error('modal & modalTrigger requires for lightbox'); + if(!$.zui.imgReady) throw new Error('imgReady requires for lightbox'); + + var Lightbox = function(element, options) { + this.$ = $(element); + this.options = this.getOptions(options); + + this.init(); + }; + + Lightbox.DEFAULTS = { + modalTeamplate: '
  • ").append(a).toggleClass("active",e===o.state.page).toggleClass("disabled",!e)),a},o.prototype.createNavItems=function(t){var e=this,i=e.$,n=e.state,o=n.totalPage,a=n.page,s=function(t,n){if(t===!1)return void i.append(e.createLinkItem(0,n||''));void 0===n&&(n=t);for(var o=t;o<=n;++o)i.append(e.createLinkItem(o))};void 0===t&&(t=e.options.maxNavCount||10),s(1),o>1&&(o<=t?s(2,o):ao-t+2?(s(!1),s(o-t+2,o)):(s(!1),s(a-Math.ceil((t-4)/2),a+Math.floor((t-4)/2)),s(!1),s(o)))},o.prototype.createGoto=function(){var e=this,i=this.state,n=t('
    ");return n},o.prototype.createSizeMenu=function(){var e=this,i=this.state,n=t(''),o=e.options.pageSizeOptions;"string"==typeof o&&(o=o.split(","));for(var a=0;a'+s+"
  • ").toggleClass("active",s===i.recPerPage);n.append(r)}return t('
    ').addClass(e.options.menuDirection).append(n)},o.prototype.createElement=function(e,i,n){var o=this,a=t.proxy(o.createLinkItem,o),s=o.lang;switch(e){case"prev":return a(n.prev,s.prev);case"prev_icon":return a(n.prev,'');case"next":return a(n.next,s.next);case"next_icon":return a(n.next,'');case"first":return a(1,s.first,!0);case"first_icon":return a(1,'',!0);case"last":return a(n.totalPage,s.last,!0);case"last_icon":return a(n.totalPage,'',!0);case"space":case"|":return t('
  • ');case"nav":case"pages":return void o.createNavItems();case"total_text":return t(('
    '+s.totalCount+"
    ").format(n));case"page_text":return t(('
    '+s.pageOf+"
    ").format(n));case"total_page_text":return t(('
    '+s.totalPage+"
    ").format(n));case"page_of_total_text":return t(('
    '+s.pageOfTotal+"
    ").format(n));case"page_size_text":return t(('
    '+s.pageSize+"
    ").format(n));case"items_range_text":return t(('
    '+s.itemsRange+"
    ").format(n));case"goto":return o.createGoto();case"size_menu":return o.createSizeMenu();default:return t("
  • ").html(e)}},o.prototype.createLink=function(e,i){var n=this.options.linkCreator;return"string"==typeof n?n.format(t.extend({},i,{page:e})):t.isFunction(n)?n(e,i):"#page="+e},o.prototype.render=function(e){var i=this,n=i.state,o=i.options.elementCreator||i.createElement,a=t.isPlainObject(o);e=e||i.elements||i.options.elements,"string"==typeof e&&(e=e.split(",")),i.elements=e,i.$.empty();for(var s=0;s").append(c)),i.$.append(c))}var d=null;return i.$.children("li").each(function(){var e=t(this),i=!!e.children(".pager-item").length;d?d.toggleClass("pager-item-right",!i):i&&e.addClass("pager-item-left"),d=i?e:null}),i.$.callComEvent(i,"onRender",[n]),i},o.DEFAULTS=t.extend({elements:["first_icon","prev_icon","pages","next_icon","last_icon","page_of_total_text","items_range_text","total_text"],prevIcon:"icon-double-angle-left",nextIcon:"icon-double-angle-right",firstIcon:"icon-step-backward",lastIcon:"icon-step-forward",maxNavCount:10,menuDirection:"dropdown",pageSizeOptions:[10,20,30,50,100]},i),t.fn.pager=function(i){return this.each(function(){var n=t(this),a=n.data(e),s="object"==typeof i&&i;a||n.data(e,a=new o(this,s)),"string"==typeof i&&a[i]()})},o.NAME=e,t.fn.pager.Constructor=o,t(function(){t('[data-ride="pager"]').pager()})}(jQuery),+function(t){"use strict";var e="zui.tab",i=function(e){this.element=t(e)};i.prototype.show=function(){var i=this.element,n=i.closest("ul:not(.dropdown-menu)"),o=i.attr("data-target")||i.attr("data-tab");if(o||(o=i.attr("href"),o=o&&o.replace(/.*(?=#[^\s]*$)/,"")),!i.parent("li").hasClass("active")){var a=n.find(".active:last a")[0],s=t.Event("show."+e,{relatedTarget:a});if(i.trigger(s),!s.isDefaultPrevented()){var r=t(o);this.activate(i.parent("li"),n),this.activate(r,r.parent(),function(){i.trigger({type:"shown."+e,relatedTarget:a})})}}},i.prototype.activate=function(e,i,n){function o(){a.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),e.addClass("active"),s?(e[0].offsetWidth,e.addClass("in")):e.removeClass("fade"),e.parent(".dropdown-menu")&&e.closest("li.dropdown").addClass("active"),n&&n()}var a=i.find("> .active"),s=n&&t.support.transition&&a.hasClass("fade");s?a.one(t.support.transition.end,o).emulateTransitionEnd(150):o(),a.removeClass("in")};var n=t.fn.tab;t.fn.tab=function(n){return this.each(function(){var o=t(this),a=o.data(e);a||o.data(e,a=new i(this)),"string"==typeof n&&a[n]()})},t.fn.tab.Constructor=i,t.fn.tab.noConflict=function(){return t.fn.tab=n,this},t(document).on("click.zui.tab.data-api",'[data-toggle="tab"], [data-tab]',function(e){e.preventDefault(),t(this).tab("show")})}(window.jQuery),+function(t){"use strict";function e(){var t=document.createElement("bootstrap"),e={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var i in e)if(void 0!==t.style[i])return{end:e[i]};return!1}t.fn.emulateTransitionEnd=function(e){var i=!1,n=this;t(this).one("bsTransitionEnd",function(){i=!0});var o=function(){i||t(n).trigger(t.support.transition.end)};return setTimeout(o,e),this},t(function(){t.support.transition=e(),t.support.transition&&(t.event.special.bsTransitionEnd={bindType:t.support.transition.end,delegateType:t.support.transition.end,handle:function(e){if(t(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(t){"use strict";var e="zui.collapse",i=function(e,n){this.$element=t(e),this.options=t.extend({},i.DEFAULTS,n),this.transitioning=null,this.options.parent&&(this.$parent=t(this.options.parent)),this.options.toggle&&this.toggle()};i.DEFAULTS={toggle:!0},i.prototype.dimension=function(){var t=this.$element.hasClass("width");return t?"width":"height"},i.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var i=t.Event("show."+e);if(this.$element.trigger(i),!i.isDefaultPrevented()){var n=this.$parent&&this.$parent.find(".in");if(n&&n.length){var o=n.data(e);if(o&&o.transitioning)return;n.collapse("hide"),o||n.data(e,null)}var a=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[a](0),this.transitioning=1;var s=function(){this.$element.removeClass("collapsing").addClass("in")[a]("auto"),this.transitioning=0,this.$element.trigger("shown."+e)};if(!t.support.transition)return s.call(this);var r=t.camelCase(["scroll",a].join("-"));this.$element.one(t.support.transition.end,t.proxy(s,this)).emulateTransitionEnd(350)[a](this.$element[0][r])}}},i.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var i=t.Event("hide."+e);if(this.$element.trigger(i),!i.isDefaultPrevented()){var n=this.dimension();this.$element[n](this.$element[n]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var o=function(){this.transitioning=0,this.$element.trigger("hidden."+e).removeClass("collapsing").addClass("collapse")};return t.support.transition?void this.$element[n](0).one(t.support.transition.end,t.proxy(o,this)).emulateTransitionEnd(350):o.call(this)}}},i.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var n=t.fn.collapse;t.fn.collapse=function(n){return this.each(function(){var o=t(this),a=o.data(e),s=t.extend({},i.DEFAULTS,o.data(),"object"==typeof n&&n);a||o.data(e,a=new i(this,s)),"string"==typeof n&&a[n]()})},t.fn.collapse.Constructor=i,t.fn.collapse.noConflict=function(){return t.fn.collapse=n,this},t(document).on("click."+e+".data-api","[data-toggle=collapse]",function(i){var n,o=t(this),a=o.attr("data-target")||i.preventDefault()||(n=o.attr("href"))&&n.replace(/.*(?=#[^\s]+$)/,""),s=t(a),r=s.data(e),l=r?"toggle":o.data(),c=o.attr("data-parent"),d=c&&t(c);r&&r.transitioning||(d&&d.find('[data-toggle=collapse][data-parent="'+c+'"]').not(o).addClass("collapsed"),o[s.hasClass("in")?"addClass":"removeClass"]("collapsed")),s.collapse(l)})}(window.jQuery),function(t,e){"use strict";var i=1200,n=992,o=768,a=e(t),s=function(){var t=a.width();e("html").toggleClass("screen-desktop",t>=n&&t=i).toggleClass("screen-tablet",t>=o&&t=n)},r="",l=navigator.userAgent;l.match(/(iPad|iPhone|iPod)/i)?r+=" os-ios":l.match(/android/i)?r+=" os-android":l.match(/Win/i)?r+=" os-windows":l.match(/Mac/i)?r+=" os-mac":l.match(/Linux/i)?r+=" os-linux":l.match(/X11/i)&&(r+=" os-unix"),"ontouchstart"in document.documentElement&&(r+=" is-touchable"),e("html").addClass(r),a.resize(s),s()}(window,jQuery),function(t){"use strict";var e={zh_cn:'您的浏览器版本过低,无法体验所有功能,建议升级或者更换浏览器。 了解更多...',zh_tw:'您的瀏覽器版本過低,無法體驗所有功能,建議升級或者更换瀏覽器。了解更多...',en:'Your browser is too old, it has been unable to experience the colorful internet. We strongly recommend that you upgrade a better one. Learn more...'},i=function(){var t=this.isIE()||this.isIE10()||!1;if(t)for(var e=10;e>5;e--)if(this.isIE(e)){t=e;break}this.ie=t,this.cssHelper()};i.prototype.cssHelper=function(){var e=this.ie,i=t("html");i.toggleClass("ie",e).removeClass("ie-6 ie-7 ie-8 ie-9 ie-10"),e&&i.addClass("ie-"+e).toggleClass("gt-ie-7 gte-ie-8 support-ie",e>=8).toggleClass("lte-ie-7 lt-ie-8 outdated-ie",e<8).toggleClass("gt-ie-8 gte-ie-9",e>=9).toggleClass("lte-ie-8 lt-ie-9",e<9).toggleClass("gt-ie-9 gte-ie-10",e>=10).toggleClass("lte-ie-9 lt-ie-10",e<10)},i.prototype.tip=function(i){var n=t("#browseHappyTip");n.length||(n=t('
    '),n.prependTo("body")),n.find(".content").html(i||this.browseHappyTip||e[t.zui.clientLang()||"zh_cn"])},i.prototype.isIE=function(t){if(10===t)return this.isIE10();var e=document.createElement("b");return e.innerHTML="",1===e.getElementsByTagName("i").length},i.prototype.isIE10=function(){return!1},t.zui({browser:new i}),t(function(){t("body").hasClass("disabled-browser-tip")||t.zui.browser.ie&&t.zui.browser.ie<8&&t.zui.browser.tip()})}(jQuery),function(){"use strict";Date.ONEDAY_TICKS=864e5,Date.prototype.format||(Date.prototype.format=function(t){var e={"M+":this.getMonth()+1,"d+":this.getDate(),"h+":this.getHours(),"m+":this.getMinutes(),"s+":this.getSeconds(),"q+":Math.floor((this.getMonth()+3)/3),"S+":this.getMilliseconds()};/(y+)/i.test(t)&&(t=t.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length)));for(var i in e)new RegExp("("+i+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[i]:("00"+e[i]).substr((""+e[i]).length)));return t}),Date.prototype.addMilliseconds||(Date.prototype.addMilliseconds=function(t){return this.setTime(this.getTime()+t),this}),Date.prototype.addDays||(Date.prototype.addDays=function(t){return this.addMilliseconds(t*Date.ONEDAY_TICKS),this}),Date.prototype.clone||(Date.prototype.clone=function(){var t=new Date;return t.setTime(this.getTime()),t}),Date.isLeapYear||(Date.isLeapYear=function(t){return t%4===0&&t%100!==0||t%400===0}),Date.getDaysInMonth||(Date.getDaysInMonth=function(t,e){return[31,Date.isLeapYear(t)?29:28,31,30,31,30,31,31,30,31,30,31][e]}),Date.prototype.isLeapYear||(Date.prototype.isLeapYear=function(){return Date.isLeapYear(this.getFullYear())}),Date.prototype.clearTime||(Date.prototype.clearTime=function(){return this.setHours(0),this.setMinutes(0),this.setSeconds(0),this.setMilliseconds(0),this}),Date.prototype.getDaysInMonth||(Date.prototype.getDaysInMonth=function(){return Date.getDaysInMonth(this.getFullYear(),this.getMonth())}),Date.prototype.addMonths||(Date.prototype.addMonths=function(t){var e=this.getDate();return this.setDate(1),this.setMonth(this.getMonth()+t),this.setDate(Math.min(e,this.getDaysInMonth())),this}),Date.prototype.getLastWeekday||(Date.prototype.getLastWeekday=function(t){t=t||1;for(var e=this.clone();e.getDay()!=t;)e.addDays(-1);return e.clearTime(),e}),Date.prototype.isSameDay||(Date.prototype.isSameDay=function(t){return t.toDateString()===this.toDateString()}),Date.prototype.isSameWeek||(Date.prototype.isSameWeek=function(t){var e=this.getLastWeekday(),i=e.clone().addDays(7);return t>=e&&t0){var i;if(arguments.length<=2&&"object"==typeof t)for(var n in t)void 0!==t[n]&&(i=new RegExp("("+(arguments[1]?arguments[1].replace("0",n):"{"+n+"}")+")","g"),e=e.replace(i,t[n]));else for(var o=0;oi.length)&&(e=i.length),e-=t.length;var n=i.indexOf(t,e);return n!==-1&&n===e}),String.prototype.startsWith||(String.prototype.startsWith=function(t,e){return e=e||0,this.lastIndexOf(t,e)===e}),String.prototype.includes||(String.prototype.includes=function(){return String.prototype.indexOf.apply(this,arguments)!==-1})}(),/*! + * jQuery resize event - v1.1 + * http://benalman.com/projects/jquery-resize-plugin/ + * Copyright (c) 2010 "Cowboy" Ben Alman + * MIT & GPL http://benalman.com/about/license/ + */ +function(t,e,i){"$:nomunge";function n(){o=e[r](function(){a.each(function(){var e=t(this),i=e.width(),n=e.height(),o=t.data(this,c);i===o.w&&n===o.h||e.trigger(l,[o.w=i,o.h=n])}),n()},s[d])}var o,a=t([]),s=t.resize=t.extend(t.resize,{}),r="setTimeout",l="resize",c=l+"-special-event",d="delay",p="throttleWindow";s[d]=250,s[p]=!0,t.event.special[l]={setup:function(){if(!s[p]&&this[r])return!1;var e=t(this);a=a.add(e),t.data(this,c,{w:e.width(),h:e.height()}),1===a.length&&n()},teardown:function(){if(!s[p]&&this[r])return!1;var e=t(this);a=a.not(e),e.removeData(c),a.length||clearTimeout(o)},add:function(e){function n(e,n,a){var s=t(this),r=t.data(this,c)||{};r.w=n!==i?n:s.width(),r.h=a!==i?a:s.height(),o.apply(this,arguments)}if(!s[p]&&this[r])return!1;var o;return t.isFunction(e)?(o=e,n):(o=e.handler,void(e.handler=n))}}}(jQuery,this),+function(t){"use strict";function e(n,o){var a,s=t.proxy(this.process,this);this.$element=t(t(n).is("body")?window:n),this.$body=t("body"),this.$scrollElement=this.$element.on("scroll."+i+".data-api",s),this.options=t.extend({},e.DEFAULTS,o),this.selector||(this.selector=(this.options.target||(a=t(n).attr("href"))&&a.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a"),this.offsets=t([]),this.targets=t([]),this.activeTarget=null,this.refresh(),this.process()}var i="zui.scrollspy";e.DEFAULTS={offset:10},e.prototype.refresh=function(){var e=this.$element[0]==window?"offset":"position";this.offsets=t([]),this.targets=t([]);var i=this;this.$body.find(this.selector).map(function(){var n=t(this),o=n.data("target")||n.attr("href"),a=/^#./.test(o)&&t(o);return a&&a.length&&a.is(":visible")&&[[a[e]().top+(!t.isWindow(i.$scrollElement.get(0))&&i.$scrollElement.scrollTop()),o]]||null}).sort(function(t,e){return t[0]-e[0]}).each(function(){i.offsets.push(this[0]),i.targets.push(this[1])})},e.prototype.process=function(){var t,e=this.$scrollElement.scrollTop()+this.options.offset,i=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,n=i-this.$scrollElement.height(),o=this.offsets,a=this.targets,s=this.activeTarget;if(e>=n)return s!=(t=a.last()[0])&&this.activate(t);if(s&&e<=o[0])return s!=(t=a[0])&&this.activate(t);for(t=o.length;t--;)s!=a[t]&&e>=o[t]&&(!o[t+1]||e<=o[t+1])&&this.activate(a[t])},e.prototype.activate=function(e){this.activeTarget=e,t(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var n=this.selector+'[data-target="'+e+'"],'+this.selector+'[href="'+e+'"]',o=t(n).parents("li").addClass("active");o.parent(".dropdown-menu").length&&(o=o.closest("li.dropdown").addClass("active")),o.trigger("activate."+i)};var n=t.fn.scrollspy;t.fn.scrollspy=function(n){return this.each(function(){var o=t(this),a=o.data(i),s="object"==typeof n&&n;a||o.data(i,a=new e(this,s)),"string"==typeof n&&a[n]()})},t.fn.scrollspy.Constructor=e,t.fn.scrollspy.noConflict=function(){return t.fn.scrollspy=n,this},t(window).on("load",function(){t('[data-spy="scroll"]').each(function(){var e=t(this);e.scrollspy(e.data())})})}(jQuery),function(t,e){"use strict";var i,n,o="localStorage",a="page_"+t.location.pathname+t.location.search,s=function(){this.slience=!0;try{o in t&&t[o]&&t[o].setItem&&(this.enable=!0,i=t[o])}catch(s){}this.enable||(n={},i={getLength:function(){var t=0;return e.each(n,function(){t++}),t},key:function(t){var i,o=0;return e.each(n,function(e){return o===t?(i=e,!1):void o++}),i},removeItem:function(t){delete n[t]},getItem:function(t){return n[t]},setItem:function(t,e){n[t]=e},clear:function(){n={}}}),this.storage=i,this.page=this.get(a,{})};s.prototype.pageSave=function(){if(e.isEmptyObject(this.page))this.remove(a);else{var t,i=[];for(t in this.page){var n=this.page[t];null===n&&i.push(t)}for(t=i.length-1;t>=0;t--)delete this.page[i[t]];this.set(a,this.page)}},s.prototype.pageRemove=function(t){"undefined"!=typeof this.page[t]&&(this.page[t]=null,this.pageSave())},s.prototype.pageClear=function(){this.page={},this.pageSave()},s.prototype.pageGet=function(t,e){var i=this.page[t];return void 0===e||null!==i&&void 0!==i?i:e},s.prototype.pageSet=function(t,i){e.isPlainObject(t)?e.extend(!0,this.page,t):this.page[this.serialize(t)]=i,this.pageSave()},s.prototype.check=function(){if(!this.enable&&!this.slience)throw new Error("Browser not support localStorage or enable status been set true.");return this.enable},s.prototype.length=function(){return this.check()?i.getLength?i.getLength():i.length:0},s.prototype.removeItem=function(t){return i.removeItem(t),this},s.prototype.remove=function(t){return this.removeItem(t)},s.prototype.getItem=function(t){return i.getItem(t)},s.prototype.get=function(t,e){var i=this.deserialize(this.getItem(t));return"undefined"!=typeof i&&null!==i||"undefined"==typeof e?i:e},s.prototype.key=function(t){return i.key(t)},s.prototype.setItem=function(t,e){return i.setItem(t,e),this},s.prototype.set=function(t,e){return void 0===e?this.remove(t):(this.setItem(t,this.serialize(e)),this)},s.prototype.clear=function(){return i.clear(),this},s.prototype.forEach=function(t){for(var e=this.length(),n=e-1;n>=0;n--){var o=i.key(n);t(o,this.get(o))}return this},s.prototype.getAll=function(){var t={};return this.forEach(function(e,i){t[e]=i}),t},s.prototype.serialize=function(t){return"string"==typeof t?t:JSON.stringify(t)},s.prototype.deserialize=function(t){if("string"==typeof t)try{return JSON.parse(t)}catch(e){return t||void 0}},e.zui({store:new s})}(window,jQuery),function(t){"use strict";var e="zui.searchBox",i=function(e,n){var o=this;o.name=name,o.$=t(e),o.options=n=t.extend({},i.DEFAULTS,o.$.data(),n);var a=o.$.is(n.inputSelector)?o.$:o.$.find(n.inputSelector);if(a.length){var s=function(){o.changeTimer&&(clearTimeout(o.changeTimer),o.changeTimer=null)},r=function(){s();var t=o.getSearch();if(t!==o.lastValue){var e=""===t;a.toggleClass("empty",e),o.$.callComEvent(o,"onSearchChange",[t,e]),o.lastValue=t}};o.$input=a=a.first(),o.lastValue=o.getSearch(),a.on(n.listenEvent,function(t){o.changeTimer=setTimeout(function(){r()},n.changeDelay)}).on("focus",function(t){a.addClass("focus"),o.$.callComEvent(o,"onFocus",[t])}).on("blur",function(t){a.removeClass("focus"),o.$.callComEvent(o,"onBlur",[t])}).on("keydown",function(t){var e=0,i=t.witch;27===i&&n.escToClear?(this.setSearch("",!0),r(),e=1):13===i&&n.onPressEnter&&(r(),o.$.callComEvent(o,"onPressEnter",[t]));var a=o.$.callComEvent(o,"onKeyDown",[t]);a===!1&&(e=1),e&&t.preventDefault()}),o.$.on("click",".search-clear-btn",function(t){o.setSearch("",!0),r(),t.preventDefault()}),r()}else console.error("ZUI: search box init error, cannot find search box input element.")};i.DEFAULTS={inputSelector:'input[type="search"],input[type="text"]',listenEvent:"change input paste",changeDelay:500},i.prototype.getSearch=function(){return this.$input&&t.trim(this.$input.val())},i.prototype.setSearch=function(t,e){var i=this.$input;i&&(i.val(t),e||i.trigger("change"))},i.prototype.focus=function(){this.$input&&this.$input.focus()},t.fn.searchBox=function(n){return this.each(function(){var o=t(this),a=o.data(e),s="object"==typeof n&&n;a||o.data(e,a=new i(this,s)),"string"==typeof n&&a[n]()})},i.NAME=e,t.fn.searchBox.Constructor=i}(jQuery),function(t,e){"use strict";var i="zui.draggable",n={container:"body",move:!0},o=0,a=function(e,i){var a=this;a.$=t(e),a.id=o++,a.options=t.extend({},n,a.$.data(),i),a.init()};a.DEFAULTS=n,a.NAME=i,a.prototype.init=function(){var n,o,a,s,r,l=this,c=l.$,d="before",p="drag",h="finish",u="."+i+"."+l.id,f="mousedown"+u,g="mouseup"+u,m="mousemove"+u,v=l.options,y=v.selector,b=v.handle,w=c,C=t.isFunction(v.move),$=function(t){var e=t.pageX,i=t.pageY;r=!0;var o={left:e-a.x,top:i-a.y};w.removeClass("drag-ready").addClass("dragging"),v.move&&(C?v.move(o,w):w.css(o)),v[p]&&v[p]({event:t,element:w,startOffset:a,pos:o,offset:{x:e-n.x,y:i-n.y},smallOffset:{x:e-s.x,y:i-s.y}}),s.x=e,s.y=i,v.stopPropagation&&t.stopPropagation()},x=function(i){if(t(e).off(u),!r)return void w.removeClass("drag-ready");var o={left:i.pageX-a.x,top:i.pageY-a.y};w.removeClass("drag-ready dragging"),v.move&&(C?v.move(o,w):w.css(o)),v[h]&&v[h]({event:i,element:w,startOffset:a,pos:o,offset:{x:i.pageX-n.x,y:i.pageY-n.y},smallOffset:{x:i.pageX-s.x,y:i.pageY-s.y}}),i.preventDefault(),v.stopPropagation&&i.stopPropagation()},T=function(i){var l=t.zui.getMouseButtonCode(v.mouseButton);if(!(l>-1&&i.button!==l)){var c=t(this);if(y&&(w=b?c.closest(y):c),v[d]){var p=v[d]({event:i,element:w});if(p===!1)return}var h=t(v.container),u=w.offset();o=h.offset(),n={x:i.pageX,y:i.pageY},a={x:i.pageX-u.left+o.left,y:i.pageY-u.top+o.top},s=t.extend({},n),r=!1,w.addClass("drag-ready"),i.preventDefault(),v.stopPropagation&&i.stopPropagation(),t(e).on(m,$).on(g,x)}};b?c.on(f,b,T):y?c.on(f,y,T):c.on(f,T)},a.prototype.destroy=function(){var n="."+i+"."+this.id;this.$.off(n),t(e).off(n),this.$.data(i,null)},t.fn.draggable=function(e){return this.each(function(){var n=t(this),o=n.data(i),s="object"==typeof e&&e;o||n.data(i,o=new a(this,s)),"string"==typeof e&&o[e]()})},t.fn.draggable.Constructor=a}(jQuery,document),function(t,e,i){"use strict";var n="zui.droppable",o={target:".droppable-target",deviation:5,sensorOffsetX:0,sensorOffsetY:0},a=0,s=function(e,i){var n=this;n.id=a++,n.$=t(e),n.options=t.extend({},o,n.$.data(),i),n.init()};s.DEFAULTS=o,s.NAME=n,s.prototype.trigger=function(e,i){return t.zui.callEvent(this.options[e],i,this)},s.prototype.init=function(){var o,a,s,r,l,c,d,p,h,u,f,g,m,v=this,y=v.$,b=v.options,w=b.deviation,C="."+n+"."+v.id,$="mousedown"+C,x="mouseup"+C,T="mousemove"+C,k=b.selector,D=b.handle,E=b.flex,S=b.container,z=b.canMoveHere,P=y,I=!1,M=S?t(b.container).first():k?y:t("body"),j=function(e){if(I&&(f={left:e.pageX,top:e.pageY},!(i.abs(f.left-p.left)a&&f.top>s&&f.left-1&&i.button!==n)){var f=t(this);k&&(P=D?f.closest(k):f),P.hasClass("drag-shadow")||b.before&&b.before({event:i,element:P})===!1||(I=!0,o=t.isFunction(b.target)?b.target(y):M.find(b.target),a=null,s=null,r=!1,l=!0,c=null,d=P.offset(),h=M.offset(),p={left:i.pageX,top:i.pageY},g=t.extend({},p),u={left:p.left-d.left,top:p.top-d.top},P.addClass("drag-from"),t(e).on(T,j).on(x,L),m=setTimeout(function(){t(e).on($,L)},10),i.preventDefault())}};D?y.on($,D,O):k?y.on($,k,O):y.on($,O)},s.prototype.destroy=function(){var i="."+n+"."+this.id;this.$.off(i),t(e).off(i),this.$.data(n,null)},s.prototype.reset=function(){this.destroy(),this.init()},t.fn.droppable=function(e){return this.each(function(){var i=t(this),o=i.data(n),a="object"==typeof e&&e;o||i.data(n,o=new s(this,a)),"string"==typeof e&&o[e]()})},t.fn.droppable.Constructor=s}(jQuery,document,Math),+function(t){"use strict";function e(e,o,a){return this.each(function(){var s=t(this),r=s.data(i),l=t.extend({},n.DEFAULTS,s.data(),"object"==typeof e&&e);r||s.data(i,r=new n(this,l)),"string"==typeof e?r[e](o,a):l.show&&r.show(o,a)})}var i="zui.modal",n=function(e,n){var o=this;o.options=n,o.$body=t(document.body),o.$element=t(e),o.$backdrop=o.isShown=null,o.scrollbarWidth=0,void 0===n.moveable&&(o.options.moveable=o.$element.hasClass("modal-moveable")),n.remote&&o.$element.find(".modal-content").load(n.remote,function(){o.$element.trigger("loaded."+i)})};n.VERSION="3.2.0",n.TRANSITION_DURATION=300,n.BACKDROP_TRANSITION_DURATION=150,n.DEFAULTS={backdrop:!0,keyboard:!0,show:!0,position:"fit"};var o=function(e,i){var n=t(window);i.left=Math.max(0,Math.min(i.left,n.width()-e.outerWidth())),i.top=Math.max(0,Math.min(i.top,n.height()-e.outerHeight())),e.css(i)};n.prototype.toggle=function(t,e){return this.isShown?this.hide():this.show(t,e)},n.prototype.ajustPosition=function(e){var n=this,a=n.options;if("undefined"==typeof e&&(e=a.position),"undefined"!=typeof e){var s=n.$element.find(".modal-dialog"),r=Math.max(0,(t(window).height()-s.outerHeight())/2),l="fit"==e?2*r/3:"center"==e?r:e;if(s.hasClass("modal-moveable")){var c=null,d=a.rememberPos;d&&(d===!0?c=n.$element.data("modal-pos"):t.zui.store&&(c=t.zui.store.pageGet(i+".rememberPos."+d))),c||(c={left:Math.max(0,(t(window).width()-s.outerWidth())/2),top:l}),"inside"===a.moveable?o(s,c):s.css(c)}else s.css("margin-top",l)}},n.prototype.setMoveale=function(){t.fn.draggable||console.error("Moveable modal requires draggable.js.");var e=this,n=e.options,a=e.$element.find(".modal-dialog").removeClass("modal-dragged");a.toggleClass("modal-moveable",!!n.moveable),e.$element.data("modal-moveable-setup")||a.draggable({container:e.$element,handle:".modal-header",before:function(){a.css("margin-top","").addClass("modal-dragged")},finish:function(o){var a=n.rememberPos;a&&(e.$element.data("modal-pos",o.pos),t.zui.store&&a!==!0&&t.zui.store.pageSet(i+".rememberPos."+a,o.pos))},move:"inside"!==n.moveable||function(t){o(a,t)}})},n.prototype.show=function(e,o){var a=this,s=t.Event("show."+i,{relatedTarget:e});a.$element.trigger(s),a.isShown||s.isDefaultPrevented()||(a.isShown=!0,a.options.moveable&&a.setMoveale(),a.checkScrollbar(),a.$body.addClass("modal-open"),a.setScrollbar(),a.escape(),a.$element.on("click.dismiss."+i,'[data-dismiss="modal"]',t.proxy(a.hide,a)),a.backdrop(function(){var s=t.support.transition&&a.$element.hasClass("fade");a.$element.parent().length||a.$element.appendTo(a.$body),a.$element.show().scrollTop(0),s&&a.$element[0].offsetWidth,a.$element.addClass("in").attr("aria-hidden",!1),a.ajustPosition(o),a.enforceFocus();var r=t.Event("shown."+i,{relatedTarget:e});s?a.$element.find(".modal-dialog").one("bsTransitionEnd",function(){a.$element.trigger("focus").trigger(r)}).emulateTransitionEnd(n.TRANSITION_DURATION):a.$element.trigger("focus").trigger(r)}))},n.prototype.hide=function(e){e&&e.preventDefault(),e=t.Event("hide."+i),this.$element.trigger(e),this.isShown&&!e.isDefaultPrevented()&&(this.isShown=!1,this.$body.removeClass("modal-open"),this.resetScrollbar(),this.escape(),t(document).off("focusin."+i),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss."+i),t.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",t.proxy(this.hideModal,this)).emulateTransitionEnd(n.TRANSITION_DURATION):this.hideModal())},n.prototype.enforceFocus=function(){t(document).off("focusin."+i).on("focusin."+i,t.proxy(function(t){this.$element[0]===t.target||this.$element.has(t.target).length||this.$element.trigger("focus")},this))},n.prototype.escape=function(){this.isShown&&this.options.keyboard?t(document).on("keydown.dismiss."+i,t.proxy(function(e){if(27==e.which){var n=t.Event("escaping."+i),o=this.$element.triggerHandler(n,"esc");if(void 0!=o&&!o)return;this.hide()}},this)):this.isShown||t(document).off("keydown.dismiss."+i)},n.prototype.hideModal=function(){var t=this;this.$element.hide(),this.backdrop(function(){t.$element.trigger("hidden."+i)})},n.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},n.prototype.backdrop=function(e){var o=this,a=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var s=t.support.transition&&a;if(this.$backdrop=t('
  • ');var n=t("").attr({href:e.url||"###","class":e.className,style:e.style}).data("item",e);return e.html?n.html(e.html===!0?e.label||e.text:e.html):n.text(e.label||e.text),e.onClick&&n.on("click",e.onClick),t("
  • ").toggleClass("disabled",e.disabled===!0).append(n)},p=null,h=function(e,i){"function"==typeof e&&(i=e,e=null),p&&(clearTimeout(p),p=null);var n=t("#"+s);if(n.length){var o=n.data("options");if(!e||o.id===e){var r=function(){n.hide(),o.onHidden&&o.onHidden(),i&&i()};o.onHide&&o.onHide();var l=o.animation;n.removeClass("in"),l?p=setTimeout(r,o.duration):r()}}return a},u=function(c,u,f){t.isPlainObject(c)&&(f=u,u=c,c=u.items),o=!0,u=t.extend({},n,u);var g=u.x,m=u.y;g===e&&(g=(u.event||u).clientX),g===e&&(g=r),m===e&&(m=(u.event||u).clientY),m===e&&(m=l);var v=t("#"+s);v.length||(v=t('').appendTo("body"));var y=v.find(".contextmenu-menu").off("click."+i).on("click."+i,"a",function(e){var i=t(this),n=u.onClickItem&&u.onClickItem(i.data("item"),i,e);n!==!1&&h()}).empty();v.hide().attr("class","contextmenu");var b=u.itemCreator||d,w=typeof c;"string"===w?c=c.split(","):"function"===w&&(c=c(u)),t.each(c,function(t,e){y.append(b(e,t,u))});var C=u.animation,$=u.duration;C===!0&&(u.animation=C="fade"),p&&(clearTimeout(p),p=null);var x=function(){v.addClass("in"),u.onShown&&u.onShown(),f&&f()};u.onShow&&u.onShow(),v.data("options",{animation:C,onHide:u.onHide,onHidden:u.onHidden,id:u.id,duration:$});var T=t(window);return g=Math.max(0,Math.min(g,T.width()-y.outerWidth())),m=Math.max(0,Math.min(m,T.height()-y.outerHeight())),v.css({left:g,top:m}),C?(v.addClass("open").addClass(C).show(),p=setTimeout(function(){x(),o=!1},u.duration)):(v.addClass("open").show(),x(),p=setTimeout(function(){o=!1},200)),a};t(document).on("click",function(e){o||t(e.target).closest(".contextmenu").length||h()}),t.extend(a,{NAME:i,DEFAULTS:n,show:u,hide:h,listenMouse:c}),t.zui({ContextMenu:a});var f=function(e,n){var o=this;o.name=i,o.$=t(e),n=o.options=t.extend({trigger:"contextmenu"},a.DEFAULTS,this.$.data(),n);var s=n.trigger;o.id=t.zui.uuid();var r=function(t){if("mousedown"!==t.type||2===t.button){var e={x:t.clientX,y:t.clientY,event:t};return n.itemsCreator&&(e.items=n.itemsCreator.call(this,t)),o.show(e),t.preventDefault(),t.returnValue=!1,!1}},l=s+"."+i;n.selector?o.$.on(l,n.selector,r):o.$.on(l,r)};f.prototype.destory=function(){that.$.off("."+i)},f.prototype.hide=function(t){a.hide(this.id,t)},f.prototype.show=function(e,i){e=t.extend({},this.options,e),a.show(e,i)},t.fn.contextmenu=function(e){return this.each(function(){var n=t(this),o=n.data(i),a="object"==typeof e&&e;o||n.data(i,o=new f(this,a)),"string"==typeof e&&o[e]()})},t.fn.contextmenu.Constructor=f}(jQuery,void 0),+function(t){"use strict";var e=function(e,i){this.$element=t(e),this.$indicators=this.$element.find(".carousel-indicators"),this.options=i,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",t.proxy(this.pause,this)).on("mouseleave",t.proxy(this.cycle,this))};e.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,touchable:!0},e.prototype.touchable=function(){function e(e){var e=e||window.event;e.originalEvent&&(e=e.originalEvent);var a=t(this);switch(e.type){case"touchstart":n=e.touches[0].pageX,o=e.touches[0].pageY;break;case"touchend":var s=e.changedTouches[0].pageX-n,r=e.changedTouches[0].pageY-o;if(Math.abs(s)>Math.abs(r))i(a,s),Math.abs(s)>10&&e.preventDefault();else{var l=t(window);t("body,html").animate({scrollTop:l.scrollTop()-r},400)}}}function i(t,e){e>10?a.prev():e<-10&&a.next()}if(this.options.touchable){this.$element.on("touchstart touchmove touchend",e);var n,o,a=this}},e.prototype.cycle=function(e){return e||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(t.proxy(this.next,this),this.options.interval)),this},e.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},e.prototype.to=function(e){var i=this,n=this.getActiveIndex();if(!(e>this.$items.length-1||e<0))return this.sliding?this.$element.one("slid",function(){i.to(e)}):n==e?this.pause().cycle():this.slide(e>n?"next":"prev",t(this.$items[e]))},e.prototype.pause=function(e){return e||(this.paused=!0),this.$element.find(".next, .prev").length&&t.support.transition.end&&(this.$element.trigger(t.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},e.prototype.next=function(){if(!this.sliding)return this.slide("next")},e.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},e.prototype.slide=function(e,i){var n=this.$element.find(".item.active"),o=i||n[e](),a=this.interval,s="next"==e?"left":"right",r="next"==e?"first":"last",l=this;if(!o.length){if(!this.options.wrap)return;o=this.$element.find(".item")[r]()}this.sliding=!0,a&&this.pause();var c=t.Event("slide.zui.carousel",{relatedTarget:o[0],direction:s});if(!o.hasClass("active")){if(this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var e=t(l.$indicators.children()[l.getActiveIndex()]);e&&e.addClass("active")})),t.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(c),c.isDefaultPrevented())return;o.addClass(e),o[0].offsetWidth,n.addClass(s),o.addClass(s),n.one(t.support.transition.end,function(){o.removeClass([e,s].join(" ")).addClass("active"),n.removeClass(["active",s].join(" ")),l.sliding=!1,setTimeout(function(){l.$element.trigger("slid")},0)}).emulateTransitionEnd(600)}else{if(this.$element.trigger(c),c.isDefaultPrevented())return;n.removeClass("active"),o.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return a&&this.cycle(),this}};var i=t.fn.carousel;t.fn.carousel=function(i){return this.each(function(){var n=t(this),o=n.data("zui.carousel"),a=t.extend({},e.DEFAULTS,n.data(),"object"==typeof i&&i),s="string"==typeof i?i:a.slide;o||n.data("zui.carousel",o=new e(this,a)),"number"==typeof i?o.to(i):s?o[s]():a.interval&&o.pause().cycle(),a.touchable&&o.touchable()})},t.fn.carousel.Constructor=e,t.fn.carousel.noConflict=function(){return t.fn.carousel=i,this},t(document).on("click.zui.carousel.data-api","[data-slide], [data-slide-to]",function(e){var i,n=t(this),o=t(n.attr("data-target")||(i=n.attr("href"))&&i.replace(/.*(?=#[^\s]+$)/,"")),a=t.extend({},o.data(),n.data()),s=n.attr("data-slide-to");s&&(a.interval=!1),o.carousel(a),(s=n.attr("data-slide-to"))&&o.data("zui.carousel").to(s),e.preventDefault()}),t(window).on("load",function(){t('[data-ride="carousel"]').each(function(){var e=t(this);e.carousel(e.data())})})}(window.jQuery),/*! TangBin: image.ready.js http://www.planeart.cn/?p=1121 */ +function(t){"use strict";t.zui.imgReady=function(){var t=[],e=null,i=function(){for(var e=0;e1024)&&(o.call(h),r.end=!0)},r(),h.onload=function(){!r.end&&r(),a&&a.call(h),h=h.onload=h.onerror=null},void(r.end||(t.push(r),null===e&&(e=setInterval(i,40)))))}}()}(jQuery),function(t,e,i){"use strict";if(!t.fn.modalTrigger)throw new Error("modal & modalTrigger requires for lightbox");if(!t.zui.imgReady)throw new Error("imgReady requires for lightbox");var n=function(e,i){this.$=t(e),this.options=this.getOptions(i),this.init()};n.DEFAULTS={modalTeamplate:'
  • <%if(datasets[i].label){%><%=datasets[i].label%><%}%>
  • <%}%>'};e.Type.extend({name:"Line",defaults:n,initialize:function(i){this.PointClass=e.Point.extend({strokeWidth:this.options.pointDotStrokeWidth,radius:this.options.pointDotRadius,display:this.options.pointDot,hitDetectionRadius:this.options.pointHitDetectionRadius,ctx:this.chart.ctx,inRange:function(t){return Math.pow(t-this.x,2)0&&ithis.scale.endPoint?t.controlPoints.outer.y=this.scale.endPoint:t.controlPoints.outer.ythis.scale.endPoint?t.controlPoints.inner.y=this.scale.endPoint:t.controlPoints.inner.y0&&(e.lineTo(h[h.length-1].x,this.scale.endPoint),e.lineTo(h[0].x,this.scale.endPoint),e.fillStyle=t.fillColor,e.closePath(),e.fill()),s.each(h,function(t){t.draw()})},this)}}),t.fn.lineChart=function(i,s){var n=[];return this.each(function(){var o=t(this);n.push(new e(this.getContext("2d")).Line(i,t.extend(o.data(),s)))}),1===n.length?n[0]:n}}.call(this,jQuery),function(t){"use strict";var i=t&&t.zui?t.zui:this,e=i.Chart,s=e.helpers,n={segmentShowStroke:!0,segmentStrokeColor:"#fff",segmentStrokeWidth:1,percentageInnerCutout:50,scaleShowLabels:!1,scaleLabel:"<%=value%>",scaleLabelPlacement:"auto",animationSteps:60,animationEasing:"easeOutBounce",animateRotate:!0,animateScale:!1,legendTemplate:'
      <% for (var i=0; i
    • <%if(segments[i].label){%><%=segments[i].label%><%}%>
    • <%}%>
    '};e.Type.extend({name:"Doughnut",defaults:n,initialize:function(t){this.segments=[],this.outerRadius=(s.min([this.chart.width,this.chart.height])-this.options.segmentStrokeWidth/2)/2,this.SegmentArc=e.Arc.extend({ctx:this.chart.ctx,x:this.chart.width/2,y:this.chart.height/2}),this.options.showTooltips&&s.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getSegmentsAtEvent(t):[];s.each(this.segments,function(t){t.restore(["fillColor"])}),s.each(i,function(t){t.fillColor=t.highlightColor}),this.showTooltip(i)}),this.calculateTotal(t),s.each(t,function(t,i){this.addData(t,i,!0)},this),this.render()},getSegmentsAtEvent:function(t){var i=[],e=s.getRelativePosition(t);return s.each(this.segments,function(t){t.inRange(e.x,e.y)&&i.push(t)},this),i},addData:function(i,e,s){if(t.zui&&t.zui.Color&&t.zui.Color.get){var n=new t.zui.Color.get(i.color);i.color=n.toCssStr(),i.highlight||(i.highlight=n.lighten(5).toCssStr())}var o=e||this.segments.length;this.segments.splice(o,0,new this.SegmentArc({id:"undefined"==typeof i.id?o:i.id,value:i.value,outerRadius:this.options.animateScale?0:this.outerRadius,innerRadius:this.options.animateScale?0:this.outerRadius/100*this.options.percentageInnerCutout,fillColor:i.color,highlightColor:i.highlight||i.color,showStroke:this.options.segmentShowStroke,strokeWidth:this.options.segmentStrokeWidth,strokeColor:this.options.segmentStrokeColor,startAngle:1.5*Math.PI,circumference:this.options.animateRotate?0:this.calculateCircumference(i.value),showLabel:i.showLabel!==!1,label:i.label})),s||(this.reflow(),this.update())},calculateCircumference:function(t){return 2*Math.PI*(Math.abs(t)/this.total)},calculateTotal:function(t){this.total=0,s.each(t,function(t){this.total+=Math.abs(t.value)},this)},update:function(){this.calculateTotal(this.segments),s.each(this.activeElements,function(t){t.restore(["fillColor"])}),s.each(this.segments,function(t){t.save()}),this.render()},removeData:function(t){var i=s.isNumber(t)?t:this.segments.length-1;this.segments.splice(i,1),this.reflow(),this.update()},reflow:function(){s.extend(this.SegmentArc.prototype,{x:this.chart.width/2,y:this.chart.height/2}),this.outerRadius=(s.min([this.chart.width,this.chart.height])-this.options.segmentStrokeWidth/2)/2,s.each(this.segments,function(t){t.update({outerRadius:this.outerRadius,innerRadius:this.outerRadius/100*this.options.percentageInnerCutout})},this)},drawLabel:function(i,e,n){var o=this.options,a=(i.endAngle+i.startAngle)/2,h=o.scaleLabelPlacement;"inside"!==h&&"outside"!==h&&this.chart.width-this.chart.height>50&&i.circumference=0,g=l+d,v=r+f;u.textAlign=p?"left":"right",u.measureText(c).width,l=p?Math.max(d+i.outerRadius+10,l+30+d):Math.min(d-i.outerRadius-10,l-30+d);var x=o.scaleFontSize*(o.scaleLineHeight||1),m=Math.round((.8*r+f)/x)+1,y=(Math.floor(this.chart.width/x)+1,p?1:-1);if(n[m*y]&&(m>1?m--:m++),n[m*y])return;r=(m-1)*x+o.scaleFontSize/2,n[m*y]=!0,u.beginPath(),u.moveTo(g,v),u.lineTo(l,r),l=p?l+5:l-5,u.lineTo(l,r),u.strokeStyle=t.zui&&t.zui.Color?new t.zui.Color(i.fillColor).fade(40).toCssStr():i.fillColor,u.strokeWidth=o.scaleLineWidth,u.stroke(),u.fillStyle=i.fillColor}else l=.7*l+d,r=.7*r+f,u.fillStyle=t.zui&&t.zui.Color?new t.zui.Color(i.fillColor).contrast().toCssStr():"#fff";u.fillText(c,l,r)},draw:function(t){var i=t?t:1;this.clear();var e;if(s.each(this.segments,function(t,e){t.transition({circumference:this.calculateCircumference(t.value),outerRadius:this.outerRadius,innerRadius:this.outerRadius/100*this.options.percentageInnerCutout},i),t.endAngle=t.startAngle+t.circumference,t.draw(),0===e&&(t.startAngle=1.5*Math.PI),e<% for (var i=0; i
  • <%if(datasets[i].label){%><%=datasets[i].label%><%}%>
  • <%}%>'};e.Type.extend({name:"Bar",defaults:n,initialize:function(i){var n=this.options;this.ScaleClass=e.Scale.extend({offsetGridLines:!0,calculateBarX:function(t,i,e){var s=this.calculateBaseWidth(),o=this.calculateX(e)-s/2,a=this.calculateBarWidth(t);return o+a*i+i*n.barDatasetSpacing+a/2},calculateBaseWidth:function(){return this.calculateX(1)-this.calculateX(0)-2*n.barValueSpacing},calculateBarWidth:function(t){var i=this.calculateBaseWidth()-(t-1)*n.barDatasetSpacing;return i/t}}),this.datasets=[],this.options.showTooltips&&s.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getBarsAtEvent(t):[];this.eachBars(function(t){t.restore(["fillColor","strokeColor"])}),s.each(i,function(t){t.fillColor=t.highlightFill,t.strokeColor=t.highlightStroke}),this.showTooltip(i)}),this.BarClass=e.Rectangle.extend({strokeWidth:this.options.barStrokeWidth,showStroke:this.options.barShowStroke,ctx:this.chart.ctx}),s.each(i.datasets,function(e,n){if(t.zui&&t.zui.Color&&t.zui.Color.get){var o=t.zui.Color.get(e.color),a=o.toCssStr();e.fillColor||(e.fillColor=o.clone().fade(50).toCssStr()),e.strokeColor||(e.strokeColor=a)}var h={label:e.label||null,fillColor:e.fillColor,strokeColor:e.strokeColor,bars:[]};this.datasets.push(h),s.each(e.data,function(t,s){h.bars.push(new this.BarClass({value:t,label:i.labels[s],datasetLabel:e.label,strokeColor:e.strokeColor,fillColor:e.fillColor,highlightFill:e.highlightFill||e.fillColor,highlightStroke:e.highlightStroke||e.strokeColor}))},this)},this),this.buildScale(i.labels),this.BarClass.prototype.base=this.scale.endPoint,this.eachBars(function(t,i,e){s.extend(t,{width:this.scale.calculateBarWidth(this.datasets.length),x:this.scale.calculateBarX(this.datasets.length,e,i),y:this.scale.endPoint}),t.save()},this),this.render()},update:function(){this.scale.update(),s.each(this.activeElements,function(t){t.restore(["fillColor","strokeColor"])}),this.eachBars(function(t){t.save()}),this.render()},eachBars:function(t){s.each(this.datasets,function(i,e){s.each(i.bars,t,this,e)},this)},getBarsAtEvent:function(t){for(var i,e=[],n=s.getRelativePosition(t),o=function(t){e.push(t.bars[i])},a=0;a span { + display: block; + margin-right: 26px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } +.chosen-container-single .chosen-single-with-deselect span { + margin-right: 38px; + } +.chosen-container-single .chosen-single abbr { + position: absolute; + top: 7px; + right: 24px; + display: block; + width: 20px; + height: 20px; + font-size: 19.5px; + font-weight: bold; + line-height: 14px; + color: #000; + text-align: center; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: .2; + } +.chosen-container-single .chosen-single abbr:before { + content: '×'; + } +.chosen-container-single .chosen-single abbr:hover, +.chosen-container-single .chosen-single abbr:focus { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: .5; + } +.chosen-container-single .chosen-single div { + position: absolute; + top: 0; + right: 0; + display: block; + height: 100%; + padding: 5px 8px; + } +.chosen-container-single .chosen-single div b { + display: inline-block; + width: 0; + height: 0; + margin-bottom: 2px; + margin-left: 2px; + vertical-align: middle; + border-top: 4px dashed; + border-top: 4px solid \9; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + } +.chosen-container-single .chosen-search { + position: relative; + z-index: 1010; + padding: 3px 4px; + margin: 0; + white-space: nowrap; + } +.chosen-container-single .chosen-search input[type="text"] { + width: 100%; + height: 27px; + padding: 2px 26px 2px 8px; + margin: 1px 0; + font-size: 12px; + line-height: 1.5; + background-color: #fff; + border: 1px solid #ccc; + border-radius: 4px; + outline: 0; + } +.chosen-container-single .chosen-search input[type="text"]:focus { + border-color: #145ccd; + } +.chosen-container-single .chosen-search:before { + position: absolute; + top: 10px; + right: 10px; + display: block; + font-family: ZenIcon; + font-size: 14px; + font-style: normal; + font-weight: normal; + font-variant: normal; + line-height: 1; + color: #808080; + text-transform: none; + content: '\e603'; + + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } +.chosen-container-single .chosen-drop { + margin-top: -1px; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border-radius: 0 0 4px 4px; + } +.chosen-container-single.chosen-container-single-nosearch .chosen-search { + position: absolute; + left: -9999px; + } +.chosen-container .chosen-results { + position: relative; + max-height: 240px; + padding: 0; + margin: 0; + overflow-x: hidden; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + } +.chosen-container .chosen-results li { + display: none; + padding: 5px 10px; + margin: 0; + line-height: 15px; + list-style: none; + -webkit-transition: background-color .2s cubic-bezier(.175, .885, .32, 1); + -o-transition: background-color .2s cubic-bezier(.175, .885, .32, 1); + transition: background-color .2s cubic-bezier(.175, .885, .32, 1); + + -webkit-touch-callout: none; + } +.chosen-container .chosen-results li.active-result { + display: list-item; + cursor: pointer; + } +.chosen-container .chosen-results li.disabled-result { + display: list-item; + color: #ccc; + cursor: default; + } +.chosen-container .chosen-results li.highlighted { + color: #fff; + background-color: #3280fc; + } +.chosen-container .chosen-results li.no-results { + display: list-item; + background: #f4f4f4; + } +.chosen-container .chosen-results li.group-result { + display: list-item; + font-weight: bold; + cursor: default; + } +.chosen-container .chosen-results li.group-option { + padding-left: 15px; + } +.chosen-container .chosen-results li em { + font-style: normal; + text-decoration: underline; + } +.chosen-container-multi .chosen-choices { + position: relative; + width: 100%; + min-height: 32px; + min-height: 30px \0; + padding: 0; + margin: 0; + overflow: hidden; + cursor: text; + background-color: #fff; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + } +.chosen-container-multi .chosen-choices:before, +.chosen-container-multi .chosen-choices:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.chosen-container-multi .chosen-choices:after { + clear: both; + } +.chosen-container-multi .chosen-choices li { + display: block; + float: left; + padding: 0 6px; + margin: 5px 0 0 6px; + list-style: none; + } +.chosen-container-multi .chosen-choices li.search-field { + padding: 0; + margin-bottom: 4px; + white-space: nowrap; + } +.chosen-container-multi .chosen-choices li.search-field input[type="text"] { + height: 20px; + font-size: 100%; + color: #808080; + background: transparent !important; + border: 0 !important; + border-radius: 0; + outline: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +.chosen-container-multi .chosen-choices li.search-field .default { + color: #999; + } +.chosen-container-multi .chosen-choices li.search-field:before { + position: absolute; + right: 8px; + bottom: 8px; + display: block; + font-family: ZenIcon; + font-size: 14px; + font-style: normal; + font-weight: normal; + font-variant: normal; + line-height: 1; + color: #808080; + text-transform: none; + content: '\e603'; + opacity: 0; + -webkit-transition: opacity .2s cubic-bezier(.175, .885, .32, 1); + -o-transition: opacity .2s cubic-bezier(.175, .885, .32, 1); + transition: opacity .2s cubic-bezier(.175, .885, .32, 1); + + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } +.chosen-container-multi .chosen-choices li.search-choice { + position: relative; + padding: 3px 20px 3px 5px; + line-height: 12px; + cursor: default; + background-color: #f1f1f1; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ddd; + border-radius: 3px; + -webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, .05); + box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, .05); + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +.chosen-container-multi .chosen-choices li.search-choice:hover { + background-color: #fff; + border-color: #c4c4c4; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, .1); + box-shadow: 0 1px 0 rgba(0, 0, 0, .1); + } +.chosen-container-multi .chosen-choices li.search-choice .search-choice-close { + position: absolute; + top: 0; + right: 0; + display: block; + width: 20px; + height: 20px; + font-size: 15.6px; + font-weight: bold; + line-height: 14px; + color: #000; + text-align: center; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: .2; + } +.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:before { + content: '×'; + } +.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover, +.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: .5; + } +.chosen-container-multi .chosen-choices li.search-choice-disabled { + padding-right: 5px; + color: #666; + background-color: #e4e4e4; + border: 1px solid #ccc; + } +.chosen-container-multi .chosen-choices li.search-choice-focus { + background: #d4d4d4; + } +.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close { + background-position: -42px -10px; + } +.chosen-container-multi .chosen-results { + padding: 5px 0; + margin: 0; + } +.chosen-container-multi .chosen-drop .result-selected { + display: list-item; + color: #ccc; + cursor: default; + } +.chosen-container-active .chosen-single { + border-color: #145ccd; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(20, 92, 205, .6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(20, 92, 205, .6); + } +.chosen-container-active.chosen-with-drop .chosen-single { + border: 1px solid #cbcbcb; + border: 1px solid rgba(0, 0, 0, .15); + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + } +.chosen-container-active.chosen-with-drop .chosen-single div { + background: transparent; + border-left: none; + } +.chosen-container-active.chosen-with-drop .chosen-single div b { + content: ""; + border-top: 0 dotted; + border-bottom: 4px solid; + } +.chosen-container-active.chosen-with-drop.chosen-up .chosen-single { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + } +.chosen-container-active .chosen-choices { + border-color: #145ccd; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(20, 92, 205, .6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(20, 92, 205, .6); + } +.chosen-container-active .chosen-choices li.search-field input[type="text"] { + color: #111 !important; + } +.chosen-container-active .chosen-choices li.search-field:before { + opacity: 1; + } +.chosen-disabled { + cursor: default; + opacity: .5 !important; + } +.chosen-disabled .chosen-single { + cursor: default; + } +.chosen-disabled .chosen-choices .search-choice .search-choice-close { + cursor: default; + } diff --git a/root/res/zui/lib/chosen/chosen.js b/root/res/zui/lib/chosen/chosen.js new file mode 100644 index 0000000..cf37754 --- /dev/null +++ b/root/res/zui/lib/chosen/chosen.js @@ -0,0 +1,1313 @@ +/* ======================================================================== + * Chosen: chosen.js [version 1.1.0] + * https://github.com/harvesthq/chosen + * + * Chosen, a Select Box Enhancer for jQuery and Prototype + * by Patrick Filler for Harvest, http://getharvest.com + * + * ZUI: The file has been changed in ZUI. It will not keep update with the + * official version in the future. + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2011 Harvest http://getharvest.com + * MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md + * ======================================================================== + * Improvement in ZUI: + * 1. New option 'drop_direction': 'auto' | 'top' | 'bottom'; + * 2. Enhance the search experience, support search items by custom data + * with 'data-keys=*' attribute in option; + * 3. ‘middle_highlight’ option can make hightlight item in the middle of + * the dropdown menu + * ======================================================================== */ + + +/*! +Chosen, a Select Box Enhancer for jQuery and Prototype +by Patrick Filler for Harvest, http://getharvest.com + +Version 1.1.0 +Full source at https://github.com/harvesthq/chosen +Copyright (c) 2011 Harvest http://getharvest.com + +MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md +*/ + + +(function() { + var $, AbstractChosen, Chosen, SelectParser, _ref, + __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { + for(var key in parent) { + if(__hasProp.call(parent, key)) child[key] = parent[key]; + } + + function ctor() { + this.constructor = child; + } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); + child.__super__ = parent.prototype; + return child; + }; + + var LANGUAGE = { + zh_cn: { + no_results_text: "没有找到" + }, + zh_tw: { + no_results_text: "沒有找到" + }, + en: { + no_results_text: "No results match" + } + } + + SelectParser = (function() { + function SelectParser() { + this.options_index = 0; + this.parsed = []; + } + + SelectParser.prototype.add_node = function(child) { + if(child.nodeName.toUpperCase() === "OPTGROUP") { + return this.add_group(child); + } else { + return this.add_option(child); + } + }; + + SelectParser.prototype.add_group = function(group) { + var group_position, option, _i, _len, _ref, _results; + group_position = this.parsed.length; + this.parsed.push({ + array_index: group_position, + group: true, + label: this.escapeExpression(group.label), + children: 0, + disabled: group.disabled, + title: group.title, + search_keys: ($.trim(group.getAttribute('data-keys') || '')).replace(/,/g, ' ') + }); + _ref = group.childNodes; + _results = []; + for(_i = 0, _len = _ref.length; _i < _len; _i++) { + option = _ref[_i]; + _results.push(this.add_option(option, group_position, group.disabled)); + } + return _results; + }; + + SelectParser.prototype.add_option = function(option, group_position, group_disabled) { + if(option.nodeName.toUpperCase() === "OPTION") { + if(option.text !== "") { + if(group_position != null) { + this.parsed[group_position].children += 1; + } + this.parsed.push({ + array_index: this.parsed.length, + options_index: this.options_index, + value: option.value, + text: option.text, + title: option.title, + html: option.innerHTML, + selected: option.selected, + disabled: group_disabled === true ? group_disabled : option.disabled, + group_array_index: group_position, + classes: option.className, + style: option.style.cssText, + search_keys: ($.trim(option.getAttribute('data-keys') || '') + option.value).replace(/,/, ' ') + }); + } else { + this.parsed.push({ + array_index: this.parsed.length, + options_index: this.options_index, + empty: true + }); + } + return this.options_index += 1; + } + }; + + SelectParser.prototype.escapeExpression = function(text) { + var map, unsafe_chars; + if((text == null) || text === false) { + return ""; + } + if(!/[\&\<\>\"\'\`]/.test(text)) { + return text; + } + map = { + "<": "<", + ">": ">", + '"': """, + "'": "'", + "`": "`" + }; + unsafe_chars = /&(?!\w+;)|[\<\>\"\'\`]/g; + return text.replace(unsafe_chars, function(chr) { + return map[chr] || "&"; + }); + }; + + return SelectParser; + + })(); + + SelectParser.select_to_array = function(select) { + var child, parser, _i, _len, _ref; + parser = new SelectParser(); + _ref = select.childNodes; + for(_i = 0, _len = _ref.length; _i < _len; _i++) { + child = _ref[_i]; + parser.add_node(child); + } + return parser.parsed; + }; + + AbstractChosen = (function() { + function AbstractChosen(form_field, options) { + this.form_field = form_field; + this.options = options != null ? options : {}; + if(!AbstractChosen.browser_is_supported()) { + return; + } + + this.lang = LANGUAGE[this.options.lang || ($.zui.clientLang ? $.zui.clientLang() : 'zh_cn')]; + this.is_multiple = this.form_field.multiple; + this.set_default_text(); + this.set_default_values(); + this.setup(); + this.set_up_html(); + this.register_observers(); + } + + AbstractChosen.prototype.set_default_values = function() { + var _this = this; + this.click_test_action = function(evt) { + return _this.test_active_click(evt); + }; + this.activate_action = function(evt) { + return _this.activate_field(evt); + }; + this.active_field = false; + this.mouse_on_container = false; + this.results_showing = false; + this.result_highlighted = null; + this.allow_single_deselect = (this.options.allow_single_deselect != null) && (this.form_field.options[0] != null) && this.form_field.options[0].text === "" ? this.options.allow_single_deselect : false; + this.disable_search_threshold = this.options.disable_search_threshold || 0; + this.disable_search = this.options.disable_search || false; + this.enable_split_word_search = this.options.enable_split_word_search != null ? this.options.enable_split_word_search : true; + this.group_search = this.options.group_search != null ? this.options.group_search : true; + this.search_contains = this.options.search_contains || false; + this.single_backstroke_delete = this.options.single_backstroke_delete != null ? this.options.single_backstroke_delete : true; + this.max_selected_options = this.options.max_selected_options || Infinity; + this.drop_direction = this.options.drop_direction || 'auto'; + this.middle_highlight = this.options.middle_highlight; + this.inherit_select_classes = this.options.inherit_select_classes || false; + this.display_selected_options = this.options.display_selected_options != null ? this.options.display_selected_options : true; + return this.display_disabled_options = this.options.display_disabled_options != null ? this.options.display_disabled_options : true; + }; + + AbstractChosen.prototype.set_default_text = function() { + if(this.form_field.getAttribute("data-placeholder")) { + this.default_text = this.form_field.getAttribute("data-placeholder"); + } else if(this.is_multiple) { + this.default_text = this.options.placeholder_text_multiple || this.options.placeholder_text || AbstractChosen.default_multiple_text; + } else { + this.default_text = this.options.placeholder_text_single || this.options.placeholder_text || AbstractChosen.default_single_text; + } + return this.results_none_found = this.form_field.getAttribute("data-no_results_text") || this.options.no_results_text || this.lang.no_results_text || AbstractChosen.default_no_result_text; + }; + + AbstractChosen.prototype.mouse_enter = function() { + return this.mouse_on_container = true; + }; + + AbstractChosen.prototype.mouse_leave = function() { + return this.mouse_on_container = false; + }; + + AbstractChosen.prototype.input_focus = function(evt) { + var _this = this; + if(this.is_multiple) { + if(!this.active_field) { + return setTimeout((function() { + return _this.container_mousedown(); + }), 50); + } + } else { + if(!this.active_field) { + return this.activate_field(); + } + } + }; + + AbstractChosen.prototype.input_blur = function(evt) { + var _this = this; + if(!this.mouse_on_container) { + this.active_field = false; + return setTimeout((function() { + return _this.blur_test(); + }), 100); + } + }; + + AbstractChosen.prototype.results_option_build = function(options) { + var content, data, _i, _len, _ref; + content = ''; + _ref = this.results_data; + for(_i = 0, _len = _ref.length; _i < _len; _i++) { + data = _ref[_i]; + if(data.group) { + content += this.result_add_group(data); + } else { + content += this.result_add_option(data); + } + if(options != null ? options.first : void 0) { + if(data.selected && this.is_multiple) { + this.choice_build(data); + } else if(data.selected && !this.is_multiple) { + this.single_set_selected_text(data.text); + } + } + } + return content; + }; + + AbstractChosen.prototype.result_add_option = function(option) { + var classes, option_el; + if(!option.search_match) { + return ''; + } + if(!this.include_option_in_results(option)) { + return ''; + } + classes = []; + if(!option.disabled && !(option.selected && this.is_multiple)) { + classes.push("active-result"); + } + if(option.disabled && !(option.selected && this.is_multiple)) { + classes.push("disabled-result"); + } + if(option.selected) { + classes.push("result-selected"); + } + if(option.group_array_index != null) { + classes.push("group-option"); + } + if(option.classes !== "") { + classes.push(option.classes); + } + option_el = document.createElement("li"); + option_el.className = classes.join(" "); + option_el.style.cssText = option.style; + option_el.title = option.title; + option_el.setAttribute("data-option-array-index", option.array_index); + option_el.innerHTML = option.search_text; + return this.outerHTML(option_el); + }; + + AbstractChosen.prototype.result_add_group = function(group) { + var group_el; + if(!(group.search_match || group.group_match)) { + return ''; + } + if(!(group.active_options > 0)) { + return ''; + } + group_el = document.createElement("li"); + group_el.className = "group-result"; + group_el.title = group.title; + group_el.innerHTML = group.search_text; + return this.outerHTML(group_el); + }; + + AbstractChosen.prototype.results_update_field = function() { + this.set_default_text(); + if(!this.is_multiple) { + this.results_reset_cleanup(); + } + this.result_clear_highlight(); + this.results_build(); + if(this.results_showing) { + return this.winnow_results(); + } + }; + + AbstractChosen.prototype.reset_single_select_options = function() { + var result, _i, _len, _ref, _results; + _ref = this.results_data; + _results = []; + for(_i = 0, _len = _ref.length; _i < _len; _i++) { + result = _ref[_i]; + if(result.selected) { + _results.push(result.selected = false); + } else { + _results.push(void 0); + } + } + return _results; + }; + + AbstractChosen.prototype.results_toggle = function() { + if(this.results_showing) { + return this.results_hide(); + } else { + return this.results_show(); + } + }; + + AbstractChosen.prototype.results_search = function(evt) { + if(this.results_showing) { + return this.winnow_results(1); + } else { + return this.results_show(); + } + }; + + AbstractChosen.prototype.winnow_results = function(canMiddleHighlight) { + var escapedSearchText, option, regex, regexAnchor, results, results_group, searchText, startpos, text, zregex, _i, _len, _ref; + this.no_results_clear(); + results = 0; + searchText = this.get_search_text(); + escapedSearchText = searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); + regexAnchor = this.search_contains ? "" : "^"; + regex = new RegExp(regexAnchor + escapedSearchText, 'i'); + zregex = new RegExp(escapedSearchText, 'i'); + _ref = this.results_data; + for(_i = 0, _len = _ref.length; _i < _len; _i++) { + option = _ref[_i]; + option.search_match = false; + results_group = null; + if(this.include_option_in_results(option)) { + if(option.group) { + option.group_match = false; + option.active_options = 0; + } + if((option.group_array_index != null) && this.results_data[option.group_array_index]) { + results_group = this.results_data[option.group_array_index]; + if(results_group.active_options === 0 && results_group.search_match) { + results += 1; + } + results_group.active_options += 1; + } + if(!(option.group && !this.group_search)) { + option.search_text = option.group ? option.label : option.html; + option.search_keys_match = this.search_string_match(option.search_keys, regex); + option.search_text_match = this.search_string_match(option.search_text, regex); + option.search_match = option.search_text_match || option.search_keys_match; + if(option.search_match && !option.group) { + results += 1; + } + if(option.search_match) { + if(option.search_text_match && option.search_text.length) { + startpos = option.search_text.search(zregex); + text = option.search_text.substr(0, startpos + searchText.length) + '' + option.search_text.substr(startpos + searchText.length); + option.search_text = text.substr(0, startpos) + '' + text.substr(startpos); + } else if(option.search_keys_match && option.search_keys.length) { + startpos = option.search_keys.search(zregex); + text = option.search_keys.substr(0, startpos + searchText.length) + '' + option.search_keys.substr(startpos + searchText.length); + option.search_text += '  ' + text.substr(0, startpos) + '' + text.substr(startpos) + ''; + } + if(results_group != null) { + results_group.group_match = true; + } + } else if((option.group_array_index != null) && this.results_data[option.group_array_index].search_match) { + option.search_match = true; + } + } + } + } + this.result_clear_highlight(); + if(results < 1 && searchText.length) { + this.update_results_content(""); + return this.no_results(searchText); + } else { + this.update_results_content(this.results_option_build()); + return this.winnow_results_set_highlight(canMiddleHighlight); + } + }; + + AbstractChosen.prototype.search_string_match = function(search_string, regex) { + var part, parts, _i, _len; + if(regex.test(search_string)) { + return true; + } else if(this.enable_split_word_search && (search_string.indexOf(" ") >= 0 || search_string.indexOf("[") === 0)) { + parts = search_string.replace(/\[|\]/g, "").split(" "); + if(parts.length) { + for(_i = 0, _len = parts.length; _i < _len; _i++) { + part = parts[_i]; + if(regex.test(part)) { + return true; + } + } + } + } + }; + + AbstractChosen.prototype.choices_count = function() { + var option, _i, _len, _ref; + if(this.selected_option_count != null) { + return this.selected_option_count; + } + this.selected_option_count = 0; + _ref = this.form_field.options; + for(_i = 0, _len = _ref.length; _i < _len; _i++) { + option = _ref[_i]; + if(option.selected && option.value != '') { + this.selected_option_count += 1; + } + } + return this.selected_option_count; + }; + + AbstractChosen.prototype.choices_click = function(evt) { + evt.preventDefault(); + if(!(this.results_showing || this.is_disabled)) { + return this.results_show(); + } + }; + + AbstractChosen.prototype.keyup_checker = function(evt) { + var stroke, _ref; + stroke = (_ref = evt.which) != null ? _ref : evt.keyCode; + this.search_field_scale(); + switch(stroke) { + case 8: + if(this.is_multiple && this.backstroke_length < 1 && this.choices_count() > 0) { + return this.keydown_backstroke(); + } else if(!this.pending_backstroke) { + this.result_clear_highlight(); + return this.results_search(); + } + break; + case 13: + evt.preventDefault(); + if(this.results_showing) { + return this.result_select(evt); + } + break; + case 27: + if(this.results_showing) { + this.results_hide(); + } + return true; + case 9: + case 38: + case 40: + case 16: + case 91: + case 17: + break; + default: + return this.results_search(); + } + }; + + AbstractChosen.prototype.clipboard_event_checker = function(evt) { + var _this = this; + return setTimeout((function() { + return _this.results_search(); + }), 50); + }; + + AbstractChosen.prototype.container_width = function() { + if(this.options.width != null) { + return this.options.width; + } else { + return "" + this.form_field.offsetWidth + "px"; + } + }; + + AbstractChosen.prototype.include_option_in_results = function(option) { + if(this.is_multiple && (!this.display_selected_options && option.selected)) { + return false; + } + if(!this.display_disabled_options && option.disabled) { + return false; + } + if(option.empty) { + return false; + } + return true; + }; + + AbstractChosen.prototype.search_results_touchstart = function(evt) { + this.touch_started = true; + return this.search_results_mouseover(evt); + }; + + AbstractChosen.prototype.search_results_touchmove = function(evt) { + this.touch_started = false; + return this.search_results_mouseout(evt); + }; + + AbstractChosen.prototype.search_results_touchend = function(evt) { + if(this.touch_started) { + return this.search_results_mouseup(evt); + } + }; + + AbstractChosen.prototype.outerHTML = function(element) { + var tmp; + if(element.outerHTML) { + return element.outerHTML; + } + tmp = document.createElement("div"); + tmp.appendChild(element); + return tmp.innerHTML; + }; + + AbstractChosen.browser_is_supported = function() { + if(window.navigator.appName === "Microsoft Internet Explorer") { + return document.documentMode >= 8; + } + if(/iP(od|hone)/i.test(window.navigator.userAgent)) { + return false; + } + if(/Android/i.test(window.navigator.userAgent)) { + if(/Mobile/i.test(window.navigator.userAgent)) { + return false; + } + } + return true; + }; + + AbstractChosen.default_multiple_text = ""; + + AbstractChosen.default_single_text = ""; + + AbstractChosen.default_no_result_text = "No results match"; + + return AbstractChosen; + + })(); + + $ = jQuery; + + $.fn.extend({ + chosen: function(options) { + if(!AbstractChosen.browser_is_supported()) { + return this; + } + return this.each(function(input_field) { + var $this, chosen; + $this = $(this); + chosen = $this.data('chosen'); + if(options === 'destroy' && chosen) { + chosen.destroy(); + } else if(!chosen) { + $this.data('chosen', new Chosen(this, options)); + } + }); + } + }); + + Chosen = (function(_super) { + __extends(Chosen, _super); + + function Chosen() { + _ref = Chosen.__super__.constructor.apply(this, arguments); + return _ref; + } + + Chosen.prototype.setup = function() { + this.form_field_jq = $(this.form_field); + this.current_selectedIndex = this.form_field.selectedIndex; + return this.is_rtl = this.form_field_jq.hasClass("chosen-rtl"); + }; + + Chosen.prototype.set_up_html = function() { + var container_classes, container_props; + container_classes = ["chosen-container"]; + container_classes.push("chosen-container-" + (this.is_multiple ? "multi" : "single")); + if(this.inherit_select_classes && this.form_field.className) { + container_classes.push(this.form_field.className); + } + if(this.is_rtl) { + container_classes.push("chosen-rtl"); + } + var strClass = this.form_field.getAttribute('data-css-class'); + if(strClass) { + container_classes.push(strClass); + } + + container_props = { + 'class': container_classes.join(' '), + 'style': "width: " + (this.container_width()) + ";", + 'title': this.form_field.title + }; + if(this.form_field.id.length) { + container_props.id = this.form_field.id.replace(/[^\w]/g, '_') + "_chosen"; + } + this.container = $("
    ", container_props); + if(this.is_multiple) { + this.container.html('
      '); + } else { + this.container.html('
      ' + this.default_text + '
        '); + } + this.form_field_jq.hide().after(this.container); + this.dropdown = this.container.find('div.chosen-drop').first(); + this.search_field = this.container.find('input').first(); + this.search_results = this.container.find('ul.chosen-results').first(); + this.search_field_scale(); + this.search_no_results = this.container.find('li.no-results').first(); + if(this.is_multiple) { + this.search_choices = this.container.find('ul.chosen-choices').first(); + this.search_container = this.container.find('li.search-field').first(); + } else { + this.search_container = this.container.find('div.chosen-search').first(); + this.selected_item = this.container.find('.chosen-single').first(); + } + if(this.options.drop_width) { + this.dropdown.css('width', this.options.drop_width).addClass('chosen-drop-size-limited'); + } + this.results_build(); + this.set_tab_index(); + this.set_label_behavior(); + return this.form_field_jq.trigger("chosen:ready", { + chosen: this + }); + }; + + Chosen.prototype.register_observers = function() { + var _this = this; + this.container.bind('mousedown.chosen', function(evt) { + _this.container_mousedown(evt); + }); + this.container.bind('mouseup.chosen', function(evt) { + _this.container_mouseup(evt); + }); + this.container.bind('mouseenter.chosen', function(evt) { + _this.mouse_enter(evt); + }); + this.container.bind('mouseleave.chosen', function(evt) { + _this.mouse_leave(evt); + }); + this.search_results.bind('mouseup.chosen', function(evt) { + _this.search_results_mouseup(evt); + }); + this.search_results.bind('mouseover.chosen', function(evt) { + _this.search_results_mouseover(evt); + }); + this.search_results.bind('mouseout.chosen', function(evt) { + _this.search_results_mouseout(evt); + }); + this.search_results.bind('mousewheel.chosen DOMMouseScroll.chosen', function(evt) { + _this.search_results_mousewheel(evt); + }); + this.search_results.bind('touchstart.chosen', function(evt) { + _this.search_results_touchstart(evt); + }); + this.search_results.bind('touchmove.chosen', function(evt) { + _this.search_results_touchmove(evt); + }); + this.search_results.bind('touchend.chosen', function(evt) { + _this.search_results_touchend(evt); + }); + this.form_field_jq.bind("chosen:updated.chosen", function(evt) { + _this.results_update_field(evt); + }); + this.form_field_jq.bind("chosen:activate.chosen", function(evt) { + _this.activate_field(evt); + }); + this.form_field_jq.bind("chosen:open.chosen", function(evt) { + _this.container_mousedown(evt); + }); + this.form_field_jq.bind("chosen:close.chosen", function(evt) { + _this.input_blur(evt); + }); + this.search_field.bind('blur.chosen', function(evt) { + _this.input_blur(evt); + }); + this.search_field.bind('keyup.chosen', function(evt) { + _this.keyup_checker(evt); + }); + this.search_field.bind('keydown.chosen', function(evt) { + _this.keydown_checker(evt); + }); + this.search_field.bind('focus.chosen', function(evt) { + _this.input_focus(evt); + }); + this.search_field.bind('cut.chosen', function(evt) { + _this.clipboard_event_checker(evt); + }); + this.search_field.bind('paste.chosen', function(evt) { + _this.clipboard_event_checker(evt); + }); + if(this.is_multiple) { + return this.search_choices.bind('click.chosen', function(evt) { + _this.choices_click(evt); + }); + } else { + return this.container.bind('click.chosen', function(evt) { + evt.preventDefault(); + }); + } + }; + + Chosen.prototype.destroy = function() { + $(this.container[0].ownerDocument).unbind("click.chosen", this.click_test_action); + if(this.search_field[0].tabIndex) { + this.form_field_jq[0].tabIndex = this.search_field[0].tabIndex; + } + this.container.remove(); + this.form_field_jq.removeData('chosen'); + return this.form_field_jq.show(); + }; + + Chosen.prototype.search_field_disabled = function() { + this.is_disabled = this.form_field_jq[0].disabled; + if(this.is_disabled) { + this.container.addClass('chosen-disabled'); + this.search_field[0].disabled = true; + if(!this.is_multiple) { + this.selected_item.unbind("focus.chosen", this.activate_action); + } + return this.close_field(); + } else { + this.container.removeClass('chosen-disabled'); + this.search_field[0].disabled = false; + if(!this.is_multiple) { + return this.selected_item.bind("focus.chosen", this.activate_action); + } + } + }; + + Chosen.prototype.container_mousedown = function(evt) { + if(!this.is_disabled) { + if(evt && evt.type === "mousedown" && !this.results_showing) { + evt.preventDefault(); + } + if(!((evt != null) && ($(evt.target)).hasClass("search-choice-close"))) { + if(!this.active_field) { + if(this.is_multiple) { + this.search_field.val(""); + } + $(this.container[0].ownerDocument).bind('click.chosen', this.click_test_action); + this.results_show(); + } else if(!this.is_multiple && evt && (($(evt.target)[0] === this.selected_item[0]) || $(evt.target).parents("a.chosen-single").length)) { + evt.preventDefault(); + this.results_toggle(); + } + return this.activate_field(); + } + } + }; + + Chosen.prototype.container_mouseup = function(evt) { + if(evt.target.nodeName === "ABBR" && !this.is_disabled) { + return this.results_reset(evt); + } + }; + + Chosen.prototype.search_results_mousewheel = function(evt) { + var delta; + if(evt.originalEvent) { + delta = -evt.originalEvent.wheelDelta || evt.originalEvent.detail; + } + if(delta != null) { + evt.preventDefault(); + if(evt.type === 'DOMMouseScroll') { + delta = delta * 40; + } + return this.search_results.scrollTop(delta + this.search_results.scrollTop()); + } + }; + + Chosen.prototype.blur_test = function(evt) { + if(!this.active_field && this.container.hasClass("chosen-container-active")) { + return this.close_field(); + } + }; + + Chosen.prototype.close_field = function() { + $(this.container[0].ownerDocument).unbind("click.chosen", this.click_test_action); + this.active_field = false; + this.results_hide(); + this.container.removeClass("chosen-container-active"); + this.clear_backstroke(); + this.show_search_field_default(); + return this.search_field_scale(); + }; + + Chosen.prototype.activate_field = function() { + this.container.addClass("chosen-container-active"); + this.active_field = true; + this.search_field.val(this.search_field.val()); + // return this.search_field.focus(); ZUI: bug: when user select a item by click, container scroll to left automaticly. + }; + + Chosen.prototype.test_active_click = function(evt) { + var active_container; + active_container = $(evt.target).closest('.chosen-container'); + if(active_container.length && this.container[0] === active_container[0]) { + return this.active_field = true; + } else { + return this.close_field(); + } + }; + + Chosen.prototype.results_build = function() { + this.parsing = true; + this.selected_option_count = null; + this.results_data = SelectParser.select_to_array(this.form_field); + if(this.is_multiple) { + this.search_choices.find("li.search-choice").remove(); + } else if(!this.is_multiple) { + this.single_set_selected_text(); + if(this.disable_search || this.form_field.options.length <= this.disable_search_threshold) { + this.search_field[0].readOnly = true; + this.container.addClass("chosen-container-single-nosearch"); + } else { + this.search_field[0].readOnly = false; + this.container.removeClass("chosen-container-single-nosearch"); + } + } + this.update_results_content(this.results_option_build({ + first: true + })); + this.search_field_disabled(); + this.show_search_field_default(); + this.search_field_scale(); + return this.parsing = false; + }; + + Chosen.prototype.result_do_highlight = function(el, canMiddleHighlight) { + var high_bottom, high_top, maxHeight, visible_bottom, visible_top, resultHeight, scrollTop = -1; + if(el.length) { + this.result_clear_highlight(); + this.result_highlight = el; + this.result_highlight.addClass("highlighted"); + maxHeight = parseInt(this.search_results.css("maxHeight"), 10); + resultHeight = this.result_highlight.outerHeight(); + visible_top = this.search_results.scrollTop(); + visible_bottom = maxHeight + visible_top; + high_top = this.result_highlight.position().top + this.search_results.scrollTop(); + high_bottom = high_top + resultHeight; + if(this.middle_highlight && (canMiddleHighlight || this.middle_highlight === 'always' || high_bottom >= visible_bottom || high_top < visible_top)) { + scrollTop = Math.min(high_top - resultHeight, Math.max(0, high_top - (maxHeight - resultHeight)/2)); + } else if(high_bottom >= visible_bottom) { + scrollTop = (high_bottom - maxHeight) > 0 ? high_bottom - maxHeight : 0; + } else if(high_top < visible_top) { + scrollTop = high_top; + } + if(scrollTop > -1) { + this.search_results.scrollTop(scrollTop); + } + } + }; + + Chosen.prototype.result_clear_highlight = function() { + if(this.result_highlight) { + this.result_highlight.removeClass("highlighted"); + } + return this.result_highlight = null; + }; + + Chosen.prototype.results_show = function() { + if(this.is_multiple && this.max_selected_options <= this.choices_count()) { + this.form_field_jq.trigger("chosen:maxselected", { + chosen: this + }); + return false; + } + this.container.addClass("chosen-with-drop"); + this.results_showing = true; + this.search_field.focus(); + this.search_field.val(this.search_field.val()); + this.winnow_results(1); + + var dropDirection = this.drop_direction; + if(dropDirection === 'auto') { + if (!this.drop_directionFixed) { + var $drop = this.container.find('.chosen-drop'); + var offset = this.container.offset(); + if(offset.top + $drop.outerHeight() + 30 > $(window).height() + $(window).scrollTop()) { + dropDirection = 'up'; + } + this.drop_directionFixed = dropDirection; + } else { + dropDirection = this.drop_directionFixed; + } + } + this.container.toggleClass('chosen-up', dropDirection === 'up'); + + return this.form_field_jq.trigger("chosen:showing_dropdown", { + chosen: this + }); + }; + + Chosen.prototype.update_results_content = function(content) { + return this.search_results.html(content); + }; + + Chosen.prototype.results_hide = function() { + if(this.results_showing) { + this.result_clear_highlight(); + this.container.removeClass("chosen-with-drop"); + this.form_field_jq.trigger("chosen:hiding_dropdown", { + chosen: this + }); + this.drop_directionFixed = 0; + } + return this.results_showing = false; + }; + + Chosen.prototype.set_tab_index = function(el) { + var ti; + if(this.form_field.tabIndex) { + ti = this.form_field.tabIndex; + this.form_field.tabIndex = -1; + return this.search_field[0].tabIndex = ti; + } + }; + + Chosen.prototype.set_label_behavior = function() { + var _this = this; + this.form_field_label = this.form_field_jq.parents("label"); + if(!this.form_field_label.length && this.form_field.id.length) { + this.form_field_label = $("label[for='" + this.form_field.id + "']"); + } + if(this.form_field_label.length > 0) { + return this.form_field_label.bind('click.chosen', function(evt) { + if(_this.is_multiple) { + return _this.container_mousedown(evt); + } else { + return _this.activate_field(); + } + }); + } + }; + + Chosen.prototype.show_search_field_default = function() { + if(this.is_multiple && this.choices_count() < 1 && !this.active_field) { + this.search_field.val(this.default_text); + return this.search_field.addClass("default"); + } else { + this.search_field.val(""); + return this.search_field.removeClass("default"); + } + }; + + Chosen.prototype.search_results_mouseup = function(evt) { + var target; + target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first(); + if(target.length) { + this.result_highlight = target; + this.result_select(evt); + // return this.search_field.focus(); // ZUI: bug: when user select a item by click, container scroll to left automaticly. + } + }; + + Chosen.prototype.search_results_mouseover = function(evt) { + var target; + target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first(); + if(target) { + return this.result_do_highlight(target); + } + }; + + Chosen.prototype.search_results_mouseout = function(evt) { + if($(evt.target).hasClass("active-result" || $(evt.target).parents('.active-result').first())) { + return this.result_clear_highlight(); + } + }; + + Chosen.prototype.choice_build = function(item) { + var choice, close_link, + _this = this; + choice = $('
      • ', { + "class": "search-choice" + /// ZUI change begin + /// Set title to span with item value + /// }).html("" + item.html + ""); + }).html("" + item.html + ""); + /// ZUI change end + if(item.disabled) { + choice.addClass('search-choice-disabled'); + } else { + close_link = $('', { + "class": 'search-choice-close', + 'data-option-array-index': item.array_index + }); + close_link.bind('click.chosen', function(evt) { + return _this.choice_destroy_link_click(evt); + }); + choice.append(close_link); + } + return this.search_container.before(choice); + }; + + Chosen.prototype.choice_destroy_link_click = function(evt) { + evt.preventDefault(); + evt.stopPropagation(); + if(!this.is_disabled) { + return this.choice_destroy($(evt.target)); + } + }; + + Chosen.prototype.choice_destroy = function(link) { + if(this.result_deselect(link[0].getAttribute("data-option-array-index"))) { + this.show_search_field_default(); + if(this.is_multiple && this.choices_count() > 0 && this.search_field.val().length < 1) { + this.results_hide(); + } + link.parents('li').first().remove(); + return this.search_field_scale(); + } + }; + + Chosen.prototype.results_reset = function() { + this.reset_single_select_options(); + this.form_field.options[0].selected = true; + this.single_set_selected_text(); + this.show_search_field_default(); + this.results_reset_cleanup(); + this.form_field_jq.trigger("change"); + if(this.active_field) { + return this.results_hide(); + } + }; + + Chosen.prototype.results_reset_cleanup = function() { + this.current_selectedIndex = this.form_field.selectedIndex; + return this.selected_item.find("abbr").remove(); + }; + + Chosen.prototype.result_select = function(evt) { + var high, item; + if(this.result_highlight) { + high = this.result_highlight; + this.result_clear_highlight(); + if(this.is_multiple && this.max_selected_options <= this.choices_count()) { + this.form_field_jq.trigger("chosen:maxselected", { + chosen: this + }); + return false; + } + if(this.is_multiple) { + high.removeClass("active-result"); + } else { + this.reset_single_select_options(); + } + item = this.results_data[high[0].getAttribute("data-option-array-index")]; + item.selected = true; + this.form_field.options[item.options_index].selected = true; + this.selected_option_count = null; + if(this.is_multiple) { + this.choice_build(item); + } else { + this.single_set_selected_text(item.text); + } + if(!((evt.metaKey || evt.ctrlKey) && this.is_multiple)) { + this.results_hide(); + } + this.search_field.val(""); + if(this.is_multiple || this.form_field.selectedIndex !== this.current_selectedIndex) { + this.form_field_jq.trigger("change", { + 'selected': this.form_field.options[item.options_index].value + }); + } + this.current_selectedIndex = this.form_field.selectedIndex; + return this.search_field_scale(); + } + }; + + Chosen.prototype.single_set_selected_text = function(text) { + if(text == null) { + text = this.default_text; + } + if(text === this.default_text) { + this.selected_item.addClass("chosen-default"); + } else { + this.single_deselect_control_build(); + this.selected_item.removeClass("chosen-default"); + } + /// ZUI change begin + /// Change title with text + /// return this.selected_item.find("span").text(text); // old code + return this.selected_item.find("span").attr('title', text).text(text); + /// ZUI change end + }; + + Chosen.prototype.result_deselect = function(pos) { + var result_data; + result_data = this.results_data[pos]; + if(!this.form_field.options[result_data.options_index].disabled) { + result_data.selected = false; + this.form_field.options[result_data.options_index].selected = false; + this.selected_option_count = null; + this.result_clear_highlight(); + if(this.results_showing) { + this.winnow_results(); + } + this.form_field_jq.trigger("change", { + deselected: this.form_field.options[result_data.options_index].value + }); + this.search_field_scale(); + return true; + } else { + return false; + } + }; + + Chosen.prototype.single_deselect_control_build = function() { + if(!this.allow_single_deselect) { + return; + } + if(!this.selected_item.find("abbr").length) { + this.selected_item.find("span").first().after(""); + } + return this.selected_item.addClass("chosen-single-with-deselect"); + }; + + Chosen.prototype.get_search_text = function() { + if(this.search_field.val() === this.default_text) { + return ""; + } else { + return $('
        ').text($.trim(this.search_field.val())).html(); + } + }; + + Chosen.prototype.winnow_results_set_highlight = function(canMiddleHighlight) { + var do_high, selected_results; + selected_results = !this.is_multiple ? this.search_results.find(".result-selected.active-result") : []; + do_high = selected_results.length ? selected_results.first() : this.search_results.find(".active-result").first(); + if(do_high != null) { + return this.result_do_highlight(do_high, canMiddleHighlight); + } + }; + + Chosen.prototype.no_results = function(terms) { + var no_results_html; + no_results_html = $('
      • ' + this.results_none_found + ' ""
      • '); + no_results_html.find("span").first().html(terms); + this.search_results.append(no_results_html); + return this.form_field_jq.trigger("chosen:no_results", { + chosen: this + }); + }; + + Chosen.prototype.no_results_clear = function() { + return this.search_results.find(".no-results").remove(); + }; + + Chosen.prototype.keydown_arrow = function() { + var next_sib; + if(this.results_showing && this.result_highlight) { + next_sib = this.result_highlight.nextAll("li.active-result").first(); + if(next_sib) { + return this.result_do_highlight(next_sib); + } + } else { + return this.results_show(); + } + }; + + Chosen.prototype.keyup_arrow = function() { + var prev_sibs; + if(!this.results_showing && !this.is_multiple) { + return this.results_show(); + } else if(this.result_highlight) { + prev_sibs = this.result_highlight.prevAll("li.active-result"); + if(prev_sibs.length) { + return this.result_do_highlight(prev_sibs.first()); + } else { + if(this.choices_count() > 0) { + this.results_hide(); + } + return this.result_clear_highlight(); + } + } + }; + + Chosen.prototype.keydown_backstroke = function() { + var next_available_destroy; + if(this.pending_backstroke) { + this.choice_destroy(this.pending_backstroke.find("a").first()); + return this.clear_backstroke(); + } else { + next_available_destroy = this.search_container.siblings("li.search-choice").last(); + if(next_available_destroy.length && !next_available_destroy.hasClass("search-choice-disabled")) { + this.pending_backstroke = next_available_destroy; + if(this.single_backstroke_delete) { + return this.keydown_backstroke(); + } else { + return this.pending_backstroke.addClass("search-choice-focus"); + } + } + } + }; + + Chosen.prototype.clear_backstroke = function() { + if(this.pending_backstroke) { + this.pending_backstroke.removeClass("search-choice-focus"); + } + return this.pending_backstroke = null; + }; + + Chosen.prototype.keydown_checker = function(evt) { + var stroke, _ref1; + stroke = (_ref1 = evt.which) != null ? _ref1 : evt.keyCode; + this.search_field_scale(); + if(stroke !== 8 && this.pending_backstroke) { + this.clear_backstroke(); + } + switch(stroke) { + case 8: + this.backstroke_length = this.search_field.val().length; + break; + case 9: + if(this.results_showing && !this.is_multiple) { + this.result_select(evt); + } + this.mouse_on_container = false; + break; + case 13: + evt.preventDefault(); + break; + case 38: + evt.preventDefault(); + this.keyup_arrow(); + break; + case 40: + evt.preventDefault(); + this.keydown_arrow(); + break; + } + }; + + Chosen.prototype.search_field_scale = function() { + var div, f_width, h, style, style_block, styles, w, _i, _len; + if(this.is_multiple) { + h = 0; + w = 0; + style_block = "position:absolute; left: -1000px; top: -1000px; display:none;"; + styles = ['font-size', 'font-style', 'font-weight', 'font-family', 'line-height', 'text-transform', 'letter-spacing']; + for(_i = 0, _len = styles.length; _i < _len; _i++) { + style = styles[_i]; + style_block += style + ":" + this.search_field.css(style) + ";"; + } + div = $('
        ', { + 'style': style_block + }); + div.text(this.search_field.val()); + $('body').append(div); + w = div.width() + 25; + div.remove(); + f_width = this.container.outerWidth(); + if(w > f_width - 10) { + w = f_width - 10; + } + return this.search_field.css({ + 'width': w + 'px' + }); + } + }; + + return Chosen; + + })(AbstractChosen); +}).call(this); + diff --git a/root/res/zui/lib/chosen/chosen.min.css b/root/res/zui/lib/chosen/chosen.min.css new file mode 100644 index 0000000..d94e54c --- /dev/null +++ b/root/res/zui/lib/chosen/chosen.min.css @@ -0,0 +1,7 @@ +/*! + * Chosen, a Select Box Enhancer for jQuery and Prototype + * by Patrick Filler for Harvest, http://getharvest.com + * + * Copyright (c) 2011-2016 Harvest http://getharvest.com + * MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md +*/.chosen-container{position:relative;display:inline-block;font-size:13px;vertical-align:middle;zoom:1;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;*display:inline}.chosen-container .chosen-drop{position:absolute;top:100%;left:-9999px;z-index:1010;width:100%;background:#fff;border:1px solid #cbcbcb;border:1px solid rgba(0,0,0,.15);border-top:0;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.chosen-container .chosen-drop.chosen-drop-size-limited{border-top:1px solid rgba(0,0,0,.15)}.chosen-container.chosen-with-drop .chosen-drop{left:0}.chosen-container a{cursor:pointer}.chosen-container.chosen-up .chosen-drop{top:inherit;bottom:100%;margin-top:auto;margin-bottom:-1px;border-radius:2px 2px 0 0;-webkit-box-shadow:0 -3px 5px rgba(0,0,0,.175);box-shadow:0 -3px 5px rgba(0,0,0,.175)}.chosen-container-single .chosen-single{display:block;width:100%;height:32px;padding:5px 8px;overflow:hidden;line-height:1.53846154;color:#222;text-decoration:none;white-space:nowrap;vertical-align:middle;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s}.chosen-container-single .chosen-default{color:grey}.chosen-container-single .chosen-single>span{display:block;margin-right:26px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chosen-container-single .chosen-single-with-deselect span{margin-right:38px}.chosen-container-single .chosen-single abbr{position:absolute;top:7px;right:24px;display:block;width:20px;height:20px;font-size:19.5px;font-weight:700;line-height:14px;color:#000;text-align:center;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.chosen-container-single .chosen-single abbr:before{content:'×'}.chosen-container-single .chosen-single abbr:focus,.chosen-container-single .chosen-single abbr:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}.chosen-container-single .chosen-single div{position:absolute;top:0;right:0;display:block;height:100%;padding:5px 8px}.chosen-container-single .chosen-single div b{display:inline-block;width:0;height:0;margin-bottom:2px;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.chosen-container-single .chosen-search{position:relative;z-index:1010;padding:3px 4px;margin:0;white-space:nowrap}.chosen-container-single .chosen-search input[type=text]{width:100%;height:27px;padding:2px 26px 2px 8px;margin:1px 0;font-size:12px;line-height:1.5;background-color:#fff;border:1px solid #ccc;border-radius:4px;outline:0}.chosen-container-single .chosen-search input[type=text]:focus{border-color:#145ccd}.chosen-container-single .chosen-search:before{position:absolute;top:10px;right:10px;display:block;font-family:ZenIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;color:grey;text-transform:none;content:'\e603';speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.chosen-container-single .chosen-drop{margin-top:-1px;-webkit-background-clip:padding-box;background-clip:padding-box;border-radius:0 0 4px 4px}.chosen-container-single.chosen-container-single-nosearch .chosen-search{position:absolute;left:-9999px}.chosen-container .chosen-results{position:relative;max-height:240px;padding:0;margin:0;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.chosen-container .chosen-results li{display:none;padding:5px 10px;margin:0;line-height:15px;list-style:none;-webkit-transition:background-color .2s cubic-bezier(.175,.885,.32,1);-o-transition:background-color .2s cubic-bezier(.175,.885,.32,1);transition:background-color .2s cubic-bezier(.175,.885,.32,1);-webkit-touch-callout:none}.chosen-container .chosen-results li.active-result{display:list-item;cursor:pointer}.chosen-container .chosen-results li.disabled-result{display:list-item;color:#ccc;cursor:default}.chosen-container .chosen-results li.highlighted{color:#fff;background-color:#3280fc}.chosen-container .chosen-results li.no-results{display:list-item;background:#f4f4f4}.chosen-container .chosen-results li.group-result{display:list-item;font-weight:700;cursor:default}.chosen-container .chosen-results li.group-option{padding-left:15px}.chosen-container .chosen-results li em{font-style:normal;text-decoration:underline}.chosen-container-multi .chosen-choices{position:relative;width:100%;min-height:32px;min-height:30px\9;padding:0;margin:0;overflow:hidden;cursor:text;background-color:#fff;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s}.chosen-container-multi .chosen-choices:after,.chosen-container-multi .chosen-choices:before{display:table;content:" "}.chosen-container-multi .chosen-choices:after{clear:both}.chosen-container-multi .chosen-choices li{display:block;float:left;padding:0 6px;margin:5px 0 0 6px;list-style:none}.chosen-container-multi .chosen-choices li.search-field{padding:0;margin-bottom:4px;white-space:nowrap}.chosen-container-multi .chosen-choices li.search-field input[type=text]{height:20px;font-size:100%;color:grey;background:0 0!important;border:0!important;border-radius:0;outline:0;-webkit-box-shadow:none;box-shadow:none}.chosen-container-multi .chosen-choices li.search-field .default{color:#999}.chosen-container-multi .chosen-choices li.search-field:before{position:absolute;right:8px;bottom:8px;display:block;font-family:ZenIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;color:grey;text-transform:none;content:'\e603';opacity:0;-webkit-transition:opacity .2s cubic-bezier(.175,.885,.32,1);-o-transition:opacity .2s cubic-bezier(.175,.885,.32,1);transition:opacity .2s cubic-bezier(.175,.885,.32,1);speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.chosen-container-multi .chosen-choices li.search-choice{position:relative;padding:3px 20px 3px 5px;line-height:12px;cursor:default;background-color:#f1f1f1;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ddd;border-radius:3px;-webkit-box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.chosen-container-multi .chosen-choices li.search-choice:hover{background-color:#fff;border-color:#c4c4c4;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 0 rgba(0,0,0,.1)}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close{position:absolute;top:0;right:0;display:block;width:20px;height:20px;font-size:15.6px;font-weight:700;line-height:14px;color:#000;text-align:center;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:before{content:'×'}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:focus,.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}.chosen-container-multi .chosen-choices li.search-choice-disabled{padding-right:5px;color:#666;background-color:#e4e4e4;border:1px solid #ccc}.chosen-container-multi .chosen-choices li.search-choice-focus{background:#d4d4d4}.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close{background-position:-42px -10px}.chosen-container-multi .chosen-results{padding:5px 0;margin:0}.chosen-container-multi .chosen-drop .result-selected{display:list-item;color:#ccc;cursor:default}.chosen-container-active .chosen-single{border-color:#145ccd;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(20,92,205,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(20,92,205,.6)}.chosen-container-active.chosen-with-drop .chosen-single{border:1px solid #cbcbcb;border:1px solid rgba(0,0,0,.15);border-bottom-right-radius:0;border-bottom-left-radius:0;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.chosen-container-active.chosen-with-drop .chosen-single div{background:0 0;border-left:none}.chosen-container-active.chosen-with-drop .chosen-single div b{content:"";border-top:0 dotted;border-bottom:4px solid}.chosen-container-active.chosen-with-drop.chosen-up .chosen-single{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.chosen-container-active .chosen-choices{border-color:#145ccd;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(20,92,205,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(20,92,205,.6)}.chosen-container-active .chosen-choices li.search-field input[type=text]{color:#111!important}.chosen-container-active .chosen-choices li.search-field:before{opacity:1}.chosen-disabled{cursor:default;opacity:.5!important}.chosen-disabled .chosen-single{cursor:default}.chosen-disabled .chosen-choices .search-choice .search-choice-close{cursor:default} \ No newline at end of file diff --git a/root/res/zui/lib/chosen/chosen.min.js b/root/res/zui/lib/chosen/chosen.min.js new file mode 100644 index 0000000..37e423e --- /dev/null +++ b/root/res/zui/lib/chosen/chosen.min.js @@ -0,0 +1,11 @@ +/*! +Chosen, a Select Box Enhancer for jQuery and Prototype +by Patrick Filler for Harvest, http://getharvest.com + +Version 1.1.0 +Full source at https://github.com/harvesthq/chosen +Copyright (c) 2011 Harvest http://getharvest.com + +MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md +*/ +(function(){var t,e,s,i,r,o={}.hasOwnProperty,h=function(t,e){function s(){this.constructor=t}for(var i in e)o.call(e,i)&&(t[i]=e[i]);return s.prototype=e.prototype,t.prototype=new s,t.__super__=e.prototype,t},n={zh_cn:{no_results_text:"没有找到"},zh_tw:{no_results_text:"沒有找到"},en:{no_results_text:"No results match"}};i=function(){function e(){this.options_index=0,this.parsed=[]}return e.prototype.add_node=function(t){return"OPTGROUP"===t.nodeName.toUpperCase()?this.add_group(t):this.add_option(t)},e.prototype.add_group=function(e){var s,i,r,o,h,n;for(s=this.parsed.length,this.parsed.push({array_index:s,group:!0,label:this.escapeExpression(e.label),children:0,disabled:e.disabled,title:e.title,search_keys:t.trim(e.getAttribute("data-keys")||"").replace(/,/g," ")}),h=e.childNodes,n=[],r=0,o=h.length;r\"\'\`]/.test(t)?(e={"<":"<",">":">",'"':""","'":"'","`":"`"},s=/&(?!\w+;)|[\<\>\"\'\`]/g,t.replace(s,function(t){return e[t]||"&"})):t},e}(),i.select_to_array=function(t){var e,s,r,o,h;for(s=new i,h=t.childNodes,r=0,o=h.length;r0?(e=document.createElement("li"),e.className="group-result",e.title=t.title,e.innerHTML=t.search_text,this.outerHTML(e)):""},e.prototype.results_update_field=function(){if(this.set_default_text(),this.is_multiple||this.results_reset_cleanup(),this.result_clear_highlight(),this.results_build(),this.results_showing)return this.winnow_results()},e.prototype.reset_single_select_options=function(){var t,e,s,i,r;for(i=this.results_data,r=[],e=0,s=i.length;e"+s.search_text.substr(l+n.length),s.search_text=c.substr(0,l)+""+c.substr(l)):s.search_keys_match&&s.search_keys.length&&(l=s.search_keys.search(a),c=s.search_keys.substr(0,l+n.length)+""+s.search_keys.substr(l+n.length),s.search_text+='  '+c.substr(0,l)+""+c.substr(l)+""),null!=h&&(h.group_match=!0)):null!=s.group_array_index&&this.results_data[s.group_array_index].search_match&&(s.search_match=!0)));return this.result_clear_highlight(),o<1&&n.length?(this.update_results_content(""),this.no_results(n)):(this.update_results_content(this.results_option_build()),this.winnow_results_set_highlight(t))},e.prototype.search_string_match=function(t,e){var s,i,r,o;if(e.test(t))return!0;if(this.enable_split_word_search&&(t.indexOf(" ")>=0||0===t.indexOf("["))&&(i=t.replace(/\[|\]/g,"").split(" "),i.length))for(r=0,o=i.length;r0)return this.keydown_backstroke();if(!this.pending_backstroke)return this.result_clear_highlight(),this.results_search();break;case 13:if(t.preventDefault(),this.results_showing)return this.result_select(t);break;case 27:return this.results_showing&&this.results_hide(),!0;case 9:case 38:case 40:case 16:case 91:case 17:break;default:return this.results_search()}},e.prototype.clipboard_event_checker=function(t){var e=this;return setTimeout(function(){return e.results_search()},50)},e.prototype.container_width=function(){return null!=this.options.width?this.options.width:""+this.form_field.offsetWidth+"px"},e.prototype.include_option_in_results=function(t){return!(this.is_multiple&&!this.display_selected_options&&t.selected)&&(!(!this.display_disabled_options&&t.disabled)&&!t.empty)},e.prototype.search_results_touchstart=function(t){return this.touch_started=!0,this.search_results_mouseover(t)},e.prototype.search_results_touchmove=function(t){return this.touch_started=!1,this.search_results_mouseout(t)},e.prototype.search_results_touchend=function(t){if(this.touch_started)return this.search_results_mouseup(t)},e.prototype.outerHTML=function(t){var e;return t.outerHTML?t.outerHTML:(e=document.createElement("div"),e.appendChild(t),e.innerHTML)},e.browser_is_supported=function(){return"Microsoft Internet Explorer"===window.navigator.appName?document.documentMode>=8:!/iP(od|hone)/i.test(window.navigator.userAgent)&&(!/Android/i.test(window.navigator.userAgent)||!/Mobile/i.test(window.navigator.userAgent))},e.default_multiple_text="",e.default_single_text="",e.default_no_result_text="No results match",e}(),t=jQuery,t.fn.extend({chosen:function(i){return e.browser_is_supported()?this.each(function(e){var r,o;r=t(this),o=r.data("chosen"),"destroy"===i&&o?o.destroy():o||r.data("chosen",new s(this,i))}):this}}),s=function(e){function s(){return r=s.__super__.constructor.apply(this,arguments)}return h(s,e),s.prototype.setup=function(){return this.form_field_jq=t(this.form_field),this.current_selectedIndex=this.form_field.selectedIndex,this.is_rtl=this.form_field_jq.hasClass("chosen-rtl")},s.prototype.set_up_html=function(){var e,s;e=["chosen-container"],e.push("chosen-container-"+(this.is_multiple?"multi":"single")),this.inherit_select_classes&&this.form_field.className&&e.push(this.form_field.className),this.is_rtl&&e.push("chosen-rtl");var i=this.form_field.getAttribute("data-css-class");return i&&e.push(i),s={"class":e.join(" "),style:"width: "+this.container_width()+";",title:this.form_field.title},this.form_field.id.length&&(s.id=this.form_field.id.replace(/[^\w]/g,"_")+"_chosen"),this.container=t("
        ",s),this.is_multiple?this.container.html('
          '):this.container.html('
          '+this.default_text+'
            '),this.form_field_jq.hide().after(this.container),this.dropdown=this.container.find("div.chosen-drop").first(),this.search_field=this.container.find("input").first(),this.search_results=this.container.find("ul.chosen-results").first(),this.search_field_scale(),this.search_no_results=this.container.find("li.no-results").first(),this.is_multiple?(this.search_choices=this.container.find("ul.chosen-choices").first(),this.search_container=this.container.find("li.search-field").first()):(this.search_container=this.container.find("div.chosen-search").first(),this.selected_item=this.container.find(".chosen-single").first()),this.options.drop_width&&this.dropdown.css("width",this.options.drop_width).addClass("chosen-drop-size-limited"),this.results_build(),this.set_tab_index(),this.set_label_behavior(),this.form_field_jq.trigger("chosen:ready",{chosen:this})},s.prototype.register_observers=function(){var t=this;return this.container.bind("mousedown.chosen",function(e){t.container_mousedown(e)}),this.container.bind("mouseup.chosen",function(e){t.container_mouseup(e)}),this.container.bind("mouseenter.chosen",function(e){t.mouse_enter(e)}),this.container.bind("mouseleave.chosen",function(e){t.mouse_leave(e)}),this.search_results.bind("mouseup.chosen",function(e){t.search_results_mouseup(e)}),this.search_results.bind("mouseover.chosen",function(e){t.search_results_mouseover(e)}),this.search_results.bind("mouseout.chosen",function(e){t.search_results_mouseout(e)}),this.search_results.bind("mousewheel.chosen DOMMouseScroll.chosen",function(e){t.search_results_mousewheel(e)}),this.search_results.bind("touchstart.chosen",function(e){t.search_results_touchstart(e)}),this.search_results.bind("touchmove.chosen",function(e){t.search_results_touchmove(e)}),this.search_results.bind("touchend.chosen",function(e){t.search_results_touchend(e)}),this.form_field_jq.bind("chosen:updated.chosen",function(e){t.results_update_field(e)}),this.form_field_jq.bind("chosen:activate.chosen",function(e){t.activate_field(e)}),this.form_field_jq.bind("chosen:open.chosen",function(e){t.container_mousedown(e)}),this.form_field_jq.bind("chosen:close.chosen",function(e){t.input_blur(e)}),this.search_field.bind("blur.chosen",function(e){t.input_blur(e)}),this.search_field.bind("keyup.chosen",function(e){t.keyup_checker(e)}),this.search_field.bind("keydown.chosen",function(e){t.keydown_checker(e)}),this.search_field.bind("focus.chosen",function(e){t.input_focus(e)}),this.search_field.bind("cut.chosen",function(e){t.clipboard_event_checker(e)}),this.search_field.bind("paste.chosen",function(e){t.clipboard_event_checker(e)}),this.is_multiple?this.search_choices.bind("click.chosen",function(e){t.choices_click(e)}):this.container.bind("click.chosen",function(t){t.preventDefault()})},s.prototype.destroy=function(){return t(this.container[0].ownerDocument).unbind("click.chosen",this.click_test_action),this.search_field[0].tabIndex&&(this.form_field_jq[0].tabIndex=this.search_field[0].tabIndex),this.container.remove(),this.form_field_jq.removeData("chosen"),this.form_field_jq.show()},s.prototype.search_field_disabled=function(){return this.is_disabled=this.form_field_jq[0].disabled,this.is_disabled?(this.container.addClass("chosen-disabled"),this.search_field[0].disabled=!0,this.is_multiple||this.selected_item.unbind("focus.chosen",this.activate_action),this.close_field()):(this.container.removeClass("chosen-disabled"),this.search_field[0].disabled=!1,this.is_multiple?void 0:this.selected_item.bind("focus.chosen",this.activate_action))},s.prototype.container_mousedown=function(e){if(!this.is_disabled&&(e&&"mousedown"===e.type&&!this.results_showing&&e.preventDefault(),null==e||!t(e.target).hasClass("search-choice-close")))return this.active_field?this.is_multiple||!e||t(e.target)[0]!==this.selected_item[0]&&!t(e.target).parents("a.chosen-single").length||(e.preventDefault(),this.results_toggle()):(this.is_multiple&&this.search_field.val(""),t(this.container[0].ownerDocument).bind("click.chosen",this.click_test_action),this.results_show()),this.activate_field()},s.prototype.container_mouseup=function(t){if("ABBR"===t.target.nodeName&&!this.is_disabled)return this.results_reset(t)},s.prototype.search_results_mousewheel=function(t){var e;if(t.originalEvent&&(e=-t.originalEvent.wheelDelta||t.originalEvent.detail),null!=e)return t.preventDefault(),"DOMMouseScroll"===t.type&&(e=40*e),this.search_results.scrollTop(e+this.search_results.scrollTop())},s.prototype.blur_test=function(t){if(!this.active_field&&this.container.hasClass("chosen-container-active"))return this.close_field()},s.prototype.close_field=function(){return t(this.container[0].ownerDocument).unbind("click.chosen",this.click_test_action),this.active_field=!1,this.results_hide(),this.container.removeClass("chosen-container-active"),this.clear_backstroke(),this.show_search_field_default(),this.search_field_scale()},s.prototype.activate_field=function(){this.container.addClass("chosen-container-active"),this.active_field=!0,this.search_field.val(this.search_field.val())},s.prototype.test_active_click=function(e){var s;return s=t(e.target).closest(".chosen-container"),s.length&&this.container[0]===s[0]?this.active_field=!0:this.close_field()},s.prototype.results_build=function(){return this.parsing=!0,this.selected_option_count=null,this.results_data=i.select_to_array(this.form_field),this.is_multiple?this.search_choices.find("li.search-choice").remove():this.is_multiple||(this.single_set_selected_text(),this.disable_search||this.form_field.options.length<=this.disable_search_threshold?(this.search_field[0].readOnly=!0,this.container.addClass("chosen-container-single-nosearch")):(this.search_field[0].readOnly=!1,this.container.removeClass("chosen-container-single-nosearch"))),this.update_results_content(this.results_option_build({first:!0})),this.search_field_disabled(),this.show_search_field_default(),this.search_field_scale(),this.parsing=!1},s.prototype.result_do_highlight=function(t,e){var s,i,r,o,h,n,l=-1;t.length&&(this.result_clear_highlight(),this.result_highlight=t,this.result_highlight.addClass("highlighted"),r=parseInt(this.search_results.css("maxHeight"),10),n=this.result_highlight.outerHeight(),h=this.search_results.scrollTop(),o=r+h,i=this.result_highlight.position().top+this.search_results.scrollTop(),s=i+n,this.middle_highlight&&(e||"always"===this.middle_highlight||s>=o||i=o?l=s-r>0?s-r:0:i-1&&this.search_results.scrollTop(l))},s.prototype.result_clear_highlight=function(){return this.result_highlight&&this.result_highlight.removeClass("highlighted"),this.result_highlight=null},s.prototype.results_show=function(){if(this.is_multiple&&this.max_selected_options<=this.choices_count())return this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1;this.container.addClass("chosen-with-drop"),this.results_showing=!0,this.search_field.focus(),this.search_field.val(this.search_field.val()),this.winnow_results(1);var e=this.drop_direction;if("auto"===e)if(this.drop_directionFixed)e=this.drop_directionFixed;else{var s=this.container.find(".chosen-drop"),i=this.container.offset();i.top+s.outerHeight()+30>t(window).height()+t(window).scrollTop()&&(e="up"),this.drop_directionFixed=e}return this.container.toggleClass("chosen-up","up"===e),this.form_field_jq.trigger("chosen:showing_dropdown",{chosen:this})},s.prototype.update_results_content=function(t){return this.search_results.html(t)},s.prototype.results_hide=function(){return this.results_showing&&(this.result_clear_highlight(),this.container.removeClass("chosen-with-drop"),this.form_field_jq.trigger("chosen:hiding_dropdown",{chosen:this}),this.drop_directionFixed=0),this.results_showing=!1},s.prototype.set_tab_index=function(t){var e;if(this.form_field.tabIndex)return e=this.form_field.tabIndex,this.form_field.tabIndex=-1,this.search_field[0].tabIndex=e},s.prototype.set_label_behavior=function(){var e=this;if(this.form_field_label=this.form_field_jq.parents("label"),!this.form_field_label.length&&this.form_field.id.length&&(this.form_field_label=t("label[for='"+this.form_field.id+"']")),this.form_field_label.length>0)return this.form_field_label.bind("click.chosen",function(t){return e.is_multiple?e.container_mousedown(t):e.activate_field()})},s.prototype.show_search_field_default=function(){return this.is_multiple&&this.choices_count()<1&&!this.active_field?(this.search_field.val(this.default_text),this.search_field.addClass("default")):(this.search_field.val(""),this.search_field.removeClass("default"))},s.prototype.search_results_mouseup=function(e){var s;s=t(e.target).hasClass("active-result")?t(e.target):t(e.target).parents(".active-result").first(),s.length&&(this.result_highlight=s,this.result_select(e))},s.prototype.search_results_mouseover=function(e){var s;if(s=t(e.target).hasClass("active-result")?t(e.target):t(e.target).parents(".active-result").first())return this.result_do_highlight(s)},s.prototype.search_results_mouseout=function(e){if(t(e.target).hasClass("active-result"))return this.result_clear_highlight()},s.prototype.choice_build=function(e){var s,i,r=this;return s=t("
          • ",{"class":"search-choice"}).html(""+e.html+""),e.disabled?s.addClass("search-choice-disabled"):(i=t("",{"class":"search-choice-close","data-option-array-index":e.array_index}),i.bind("click.chosen",function(t){return r.choice_destroy_link_click(t)}),s.append(i)),this.search_container.before(s)},s.prototype.choice_destroy_link_click=function(e){if(e.preventDefault(),e.stopPropagation(),!this.is_disabled)return this.choice_destroy(t(e.target))},s.prototype.choice_destroy=function(t){if(this.result_deselect(t[0].getAttribute("data-option-array-index")))return this.show_search_field_default(),this.is_multiple&&this.choices_count()>0&&this.search_field.val().length<1&&this.results_hide(),t.parents("li").first().remove(),this.search_field_scale()},s.prototype.results_reset=function(){if(this.reset_single_select_options(),this.form_field.options[0].selected=!0,this.single_set_selected_text(),this.show_search_field_default(),this.results_reset_cleanup(),this.form_field_jq.trigger("change"),this.active_field)return this.results_hide()},s.prototype.results_reset_cleanup=function(){return this.current_selectedIndex=this.form_field.selectedIndex,this.selected_item.find("abbr").remove()},s.prototype.result_select=function(t){var e,s;if(this.result_highlight)return e=this.result_highlight,this.result_clear_highlight(),this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.is_multiple?e.removeClass("active-result"):this.reset_single_select_options(),s=this.results_data[e[0].getAttribute("data-option-array-index")],s.selected=!0,this.form_field.options[s.options_index].selected=!0,this.selected_option_count=null,this.is_multiple?this.choice_build(s):this.single_set_selected_text(s.text),(t.metaKey||t.ctrlKey)&&this.is_multiple||this.results_hide(),this.search_field.val(""),(this.is_multiple||this.form_field.selectedIndex!==this.current_selectedIndex)&&this.form_field_jq.trigger("change",{selected:this.form_field.options[s.options_index].value}),this.current_selectedIndex=this.form_field.selectedIndex,this.search_field_scale())},s.prototype.single_set_selected_text=function(t){return null==t&&(t=this.default_text),t===this.default_text?this.selected_item.addClass("chosen-default"):(this.single_deselect_control_build(),this.selected_item.removeClass("chosen-default")),this.selected_item.find("span").attr("title",t).text(t)},s.prototype.result_deselect=function(t){var e;return e=this.results_data[t],!this.form_field.options[e.options_index].disabled&&(e.selected=!1,this.form_field.options[e.options_index].selected=!1,this.selected_option_count=null,this.result_clear_highlight(),this.results_showing&&this.winnow_results(),this.form_field_jq.trigger("change",{deselected:this.form_field.options[e.options_index].value}),this.search_field_scale(),!0)},s.prototype.single_deselect_control_build=function(){if(this.allow_single_deselect)return this.selected_item.find("abbr").length||this.selected_item.find("span").first().after(''),this.selected_item.addClass("chosen-single-with-deselect")},s.prototype.get_search_text=function(){return this.search_field.val()===this.default_text?"":t("
            ").text(t.trim(this.search_field.val())).html()},s.prototype.winnow_results_set_highlight=function(t){var e,s;if(s=this.is_multiple?[]:this.search_results.find(".result-selected.active-result"),e=s.length?s.first():this.search_results.find(".active-result").first(),null!=e)return this.result_do_highlight(e,t)},s.prototype.no_results=function(e){var s;return s=t('
          • '+this.results_none_found+' ""
          • '),s.find("span").first().html(e),this.search_results.append(s),this.form_field_jq.trigger("chosen:no_results",{chosen:this})},s.prototype.no_results_clear=function(){return this.search_results.find(".no-results").remove()},s.prototype.keydown_arrow=function(){var t;return this.results_showing&&this.result_highlight?(t=this.result_highlight.nextAll("li.active-result").first())?this.result_do_highlight(t):void 0:this.results_show()},s.prototype.keyup_arrow=function(){var t;return this.results_showing||this.is_multiple?this.result_highlight?(t=this.result_highlight.prevAll("li.active-result"),t.length?this.result_do_highlight(t.first()):(this.choices_count()>0&&this.results_hide(),this.result_clear_highlight())):void 0:this.results_show()},s.prototype.keydown_backstroke=function(){var t;return this.pending_backstroke?(this.choice_destroy(this.pending_backstroke.find("a").first()),this.clear_backstroke()):(t=this.search_container.siblings("li.search-choice").last(),t.length&&!t.hasClass("search-choice-disabled")?(this.pending_backstroke=t,this.single_backstroke_delete?this.keydown_backstroke():this.pending_backstroke.addClass("search-choice-focus")):void 0)},s.prototype.clear_backstroke=function(){return this.pending_backstroke&&this.pending_backstroke.removeClass("search-choice-focus"),this.pending_backstroke=null},s.prototype.keydown_checker=function(t){var e,s;switch(e=null!=(s=t.which)?s:t.keyCode,this.search_field_scale(),8!==e&&this.pending_backstroke&&this.clear_backstroke(),e){case 8:this.backstroke_length=this.search_field.val().length;break;case 9:this.results_showing&&!this.is_multiple&&this.result_select(t),this.mouse_on_container=!1;break;case 13:t.preventDefault();break;case 38:t.preventDefault(),this.keyup_arrow();break;case 40:t.preventDefault(),this.keydown_arrow()}},s.prototype.search_field_scale=function(){var e,s,i,r,o,h,n,l,c;if(this.is_multiple){for(i=0,n=0,o="position:absolute; left: -1000px; top: -1000px; display:none;",h=["font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"],l=0,c=h.length;l",{style:o}),e.text(this.search_field.val()),t("body").append(e),n=e.width()+25,e.remove(),s=this.container.outerWidth(),n>s-10&&(n=s-10),this.search_field.css({width:n+"px"})}},s}(e)}).call(this); \ No newline at end of file diff --git a/root/res/zui/lib/chosenicons/zui.chosenicons.css b/root/res/zui/lib/chosenicons/zui.chosenicons.css new file mode 100644 index 0000000..2e2e047 --- /dev/null +++ b/root/res/zui/lib/chosenicons/zui.chosenicons.css @@ -0,0 +1,27 @@ +/*! + * ZUI: 图标选择器 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +.chosen-container.chosen-icons .chosen-results { + padding: 5px; + } +.chosen-container.chosen-icons .chosen-results li { + border-radius: 4px; + } +.chosen-container.chosen-icons .chosen-results li.group-result { + padding: 5px 0; + font-size: 12px; + color: #666; + border-radius: 0; + } +.chosen-container.chosen-icons .chosen-results li.group-option { + display: inline-block; + width: 30px; + padding: 8px; + font-size: 14px; + line-height: 14px; + text-align: center; + } diff --git a/root/res/zui/lib/chosenicons/zui.chosenicons.js b/root/res/zui/lib/chosenicons/zui.chosenicons.js new file mode 100644 index 0000000..7b0be43 --- /dev/null +++ b/root/res/zui/lib/chosenicons/zui.chosenicons.js @@ -0,0 +1,160 @@ +/*! + * ZUI: 图标选择器 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +/* ======================================================================== + * ZUI: chosen.icons.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + ++ function($) { + 'use strict'; + + var ChosenIcons = function(element, options) { + this.$ = $(element); + this.options = this.getOptions(options); + this.lang = ChosenIcons.LANGS[this.options.lang]; + this.id = 'chosen-icons-' + parseInt(Math.random() * 10000000000 + 1); + + this.init(); + }; + + ChosenIcons.DEFAULTS = { + optional: true, + lang: 'zh_cn', + icons: { + common: ['heart', 'user', 'group', 'list-ul', 'th', 'th-large', 'star', 'star-empty', 'search', 'envelope', 'dashboard', 'sitemap', 'umbrella', 'lightbulb', 'envelope-alt', 'cog', 'ok', 'remove', 'home', 'time', 'flag', 'flag-alt', 'flag-checkered', 'qrcode', 'tag', 'tags', 'book', 'bookmark', 'bookmark-empty', 'print', 'camera', 'picture', 'globe', 'map-marker', 'edit', 'edit-sign', 'play', 'stop', 'plus-sign', 'minus-sign', 'remove-sign', 'ok-sign', 'check-sign', 'question-sign', 'info-sign', 'exclamation-sign', 'plus', 'plus-sign', 'minus', 'minus-sign', 'asterisk', 'calendar', 'calendar-empty', 'comment', 'comment-alt', 'comments', 'comments-alt', 'folder-close', 'folder-open', 'folder-close-alt', 'folder-open-alt', 'thumbs-up', 'thumbs-down', 'pushpin', 'building', 'phone', 'rss', 'rss-sign', 'bullhorn', 'bell', 'bell-alt', 'certificate', 'wrench', 'tasks', 'cloud', 'beaker', 'magic', 'smile', 'frown', 'meh', 'code', 'location-arrow'], + web: ['share', 'pencil', 'trash', 'file-alt', 'file', 'file-text', 'download-alt', 'upload-alt', 'inbox', 'repeat', 'refresh', 'lock', 'check', 'check-empty', 'eye-open', 'eye-close', 'key', 'signin', 'signout', 'external-link', 'external-link-sign', 'link', 'reorder', 'quote-left', 'quote-right', 'spinner', 'reply', 'question', 'info', 'archive', 'collapse', 'collapse-top'], + editor: ['table', 'copy', 'save', 'list-ol', 'paste', 'keyboard', 'paper-clip', 'crop', 'unlink', 'sort-by-alphabet', 'sort-by-alphabet-alt', 'sort-by-attributes', 'sort-by-attributes-alt', 'sort-by-order', 'sort-by-order-alt'], + directional: ['chevron-left', 'chevron-right', 'chevron-down', 'chevron-up', 'arrow-left', 'arrow-right', 'arrow-down', 'arrow-up', 'hand-right', 'hand-left', 'hand-up', 'hand-down', 'circle-arrow-left', 'circle-arrow-right', 'circle-arrow-up', 'circle-arrow-down', 'double-angle-left', 'double-angle-right', 'double-angle-down', 'double-angle-up', 'angle-left', 'angle-right', 'angle-down', 'angle-up', 'long-arrow-left', 'long-arrow-right', 'long-arrow-down', 'long-arrow-up', 'caret-left', 'caret-right', 'caret-down', 'caret-up'], + other: ['desktop', 'laptop', 'tablet', 'mobile', 'building', 'firefox', 'ie', 'opera', 'qq', 'lemon', 'sign-blank', 'circle', 'circle-blank', 'terminal', 'html5', 'android', 'apple', 'windows', 'weibo', 'wechat', 'renren', 'bug', 'moon', 'sun'] + } + }; + + ChosenIcons.LANGS = {}; + ChosenIcons.LANGS['zh_cn'] = { + emptyIcon: '[没有图标]', + commonIcons: '常用图标', + webIcons: 'Web 图标', + editorIcons: '编辑器图标', + directionalIcons: '箭头总汇', + otherIcons: '其他图标', + }; + ChosenIcons.LANGS['en'] = { + emptyIcon: '[No Icon]', + commonIcons: 'Common Icons', + webIcons: 'Web Icons', + editorIcons: 'Editor Icons', + directionalIcons: 'Directional Icons', + otherIcons: 'Other Icons' + }; + ChosenIcons.LANGS['zh_tw'] = { + emptyIcon: '[沒有圖標]', + commonIcons: '常用圖標', + webIcons: 'Web 圖標', + editorIcons: '編輯器圖標', + directionalIcons: '箭頭總匯', + otherIcons: '其他圖標' + }; + + ChosenIcons.prototype.getOptions = function(options) { + options = $.extend(true, { + placeholder_text: ' ', + disable_search: true, + width: '100%', + inherit_select_classes: true + }, ChosenIcons.DEFAULTS, this.$.data(), options); + return options; + }; + + ChosenIcons.prototype.init = function() { + var that = this; + var $this = this.$.addClass('chosen-icons').addClass(this.id).removeClass('form-control'); + + $this.empty(); + + if(this.options.optional) { + $this.append(this.getOptionHtml()); + } + + var lang = this.lang; + + var iconsHtml = []; + $.each(this.options.icons, function(name, icons) { + iconsHtml.push(that.getgroupHtml(name, icons)); + }); + + $this.append(iconsHtml.join('')); + + $this.chosen(this.options); + + var chosenSelector = '.chosen-container.' + this.id; + + $this.on('chosen:showing_dropdown', function() { + $(chosenSelector + ' .chosen-results .group-option').each(function() { + var $this = $(this).addClass('icon'); + var text = $(this).text(); + $this.html(''); + }); + }).change(function() { + var span = $(chosenSelector + ' .chosen-single > span'); + var text = $(this).val(); + + if(text && text.length > 0) { + span.html('   ' + text.substr(5).replace(/-/g, ' ') + ''); + } + else { + span.html('' + lang.emptyIcon + ''); + } + }); + + var val = $this.data('value'); + if(val) { + $this.val(val).change(); + } + } + + ChosenIcons.prototype.getgroupHtml = function(name, icons) { + icons = icons || this.options.icons[name] + var iconsHtml = [], + that = this; + + $.each(icons, function(i, icon) { + iconsHtml.push(that.getOptionHtml(icon)); + }); + + return '' + iconsHtml.join('') + ''; + } + + ChosenIcons.prototype.getOptionHtml = function(value) { + var name = value; + if(value && value.length > 0) { + value = 'icon-' + value; + } else { + value = ''; + name = this.lang.emptyIcon; + } + return ''; + } + + $.fn.chosenIcons = function(option) { + return this.each(function() { + var $this = $(this); + var data = $this.data('zui.chosenIcons'); + var options = typeof option == 'object' && option; + + if(!data) $this.data('zui.chosenIcons', (data = new ChosenIcons(this, options))); + + if(typeof option == 'string') data[option](); + }) + }; + + $.fn.chosenIcons.Constructor = ChosenIcons; +}(jQuery); + diff --git a/root/res/zui/lib/chosenicons/zui.chosenicons.min.css b/root/res/zui/lib/chosenicons/zui.chosenicons.min.css new file mode 100644 index 0000000..84adfcf --- /dev/null +++ b/root/res/zui/lib/chosenicons/zui.chosenicons.min.css @@ -0,0 +1,6 @@ +/*! + * ZUI: 图标选择器 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */.chosen-container.chosen-icons .chosen-results{padding:5px}.chosen-container.chosen-icons .chosen-results li{border-radius:4px}.chosen-container.chosen-icons .chosen-results li.group-result{padding:5px 0;font-size:12px;color:#666;border-radius:0}.chosen-container.chosen-icons .chosen-results li.group-option{display:inline-block;width:30px;padding:8px;font-size:14px;line-height:14px;text-align:center} \ No newline at end of file diff --git a/root/res/zui/lib/chosenicons/zui.chosenicons.min.js b/root/res/zui/lib/chosenicons/zui.chosenicons.min.js new file mode 100644 index 0000000..2291093 --- /dev/null +++ b/root/res/zui/lib/chosenicons/zui.chosenicons.min.js @@ -0,0 +1,7 @@ +/*! + * ZUI: 图标选择器 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ ++function(o){"use strict";var e=function(t,n){this.$=o(t),this.options=this.getOptions(n),this.lang=e.LANGS[this.options.lang],this.id="chosen-icons-"+parseInt(1e10*Math.random()+1),this.init()};e.DEFAULTS={optional:!0,lang:"zh_cn",icons:{common:["heart","user","group","list-ul","th","th-large","star","star-empty","search","envelope","dashboard","sitemap","umbrella","lightbulb","envelope-alt","cog","ok","remove","home","time","flag","flag-alt","flag-checkered","qrcode","tag","tags","book","bookmark","bookmark-empty","print","camera","picture","globe","map-marker","edit","edit-sign","play","stop","plus-sign","minus-sign","remove-sign","ok-sign","check-sign","question-sign","info-sign","exclamation-sign","plus","plus-sign","minus","minus-sign","asterisk","calendar","calendar-empty","comment","comment-alt","comments","comments-alt","folder-close","folder-open","folder-close-alt","folder-open-alt","thumbs-up","thumbs-down","pushpin","building","phone","rss","rss-sign","bullhorn","bell","bell-alt","certificate","wrench","tasks","cloud","beaker","magic","smile","frown","meh","code","location-arrow"],web:["share","pencil","trash","file-alt","file","file-text","download-alt","upload-alt","inbox","repeat","refresh","lock","check","check-empty","eye-open","eye-close","key","signin","signout","external-link","external-link-sign","link","reorder","quote-left","quote-right","spinner","reply","question","info","archive","collapse","collapse-top"],editor:["table","copy","save","list-ol","paste","keyboard","paper-clip","crop","unlink","sort-by-alphabet","sort-by-alphabet-alt","sort-by-attributes","sort-by-attributes-alt","sort-by-order","sort-by-order-alt"],directional:["chevron-left","chevron-right","chevron-down","chevron-up","arrow-left","arrow-right","arrow-down","arrow-up","hand-right","hand-left","hand-up","hand-down","circle-arrow-left","circle-arrow-right","circle-arrow-up","circle-arrow-down","double-angle-left","double-angle-right","double-angle-down","double-angle-up","angle-left","angle-right","angle-down","angle-up","long-arrow-left","long-arrow-right","long-arrow-down","long-arrow-up","caret-left","caret-right","caret-down","caret-up"],other:["desktop","laptop","tablet","mobile","building","firefox","ie","opera","qq","lemon","sign-blank","circle","circle-blank","terminal","html5","android","apple","windows","weibo","wechat","renren","bug","moon","sun"]}},e.LANGS={},e.LANGS.zh_cn={emptyIcon:"[没有图标]",commonIcons:"常用图标",webIcons:"Web 图标",editorIcons:"编辑器图标",directionalIcons:"箭头总汇",otherIcons:"其他图标"},e.LANGS.en={emptyIcon:"[No Icon]",commonIcons:"Common Icons",webIcons:"Web Icons",editorIcons:"Editor Icons",directionalIcons:"Directional Icons",otherIcons:"Other Icons"},e.LANGS.zh_tw={emptyIcon:"[沒有圖標]",commonIcons:"常用圖標",webIcons:"Web 圖標",editorIcons:"編輯器圖標",directionalIcons:"箭頭總匯",otherIcons:"其他圖標"},e.prototype.getOptions=function(t){return t=o.extend(!0,{placeholder_text:" ",disable_search:!0,width:"100%",inherit_select_classes:!0},e.DEFAULTS,this.$.data(),t)},e.prototype.init=function(){var e=this,t=this.$.addClass("chosen-icons").addClass(this.id).removeClass("form-control");t.empty(),this.options.optional&&t.append(this.getOptionHtml());var n=this.lang,s=[];o.each(this.options.icons,function(o,t){s.push(e.getgroupHtml(o,t))}),t.append(s.join("")),t.chosen(this.options);var i=".chosen-container."+this.id;t.on("chosen:showing_dropdown",function(){o(i+" .chosen-results .group-option").each(function(){var e=o(this).addClass("icon"),t=o(this).text();e.html('')})}).change(function(){var e=o(i+" .chosen-single > span"),t=o(this).val();t&&t.length>0?e.html('   '+t.substr(5).replace(/-/g," ")+""):e.html(''+n.emptyIcon+"")});var r=t.data("value");r&&t.val(r).change()},e.prototype.getgroupHtml=function(e,t){t=t||this.options.icons[e];var n=[],s=this;return o.each(t,function(o,e){n.push(s.getOptionHtml(e))}),''+n.join("")+""},e.prototype.getOptionHtml=function(o){var e=o;return o&&o.length>0?o="icon-"+o:(o="",e=this.lang.emptyIcon),'"},o.fn.chosenIcons=function(t){return this.each(function(){var n=o(this),s=n.data("zui.chosenIcons"),i="object"==typeof t&&t;s||n.data("zui.chosenIcons",s=new e(this,i)),"string"==typeof t&&s[t]()})},o.fn.chosenIcons.Constructor=e}(jQuery); \ No newline at end of file diff --git a/root/res/zui/lib/clipboard/clipboard.js b/root/res/zui/lib/clipboard/clipboard.js new file mode 100644 index 0000000..6a28dfb --- /dev/null +++ b/root/res/zui/lib/clipboard/clipboard.js @@ -0,0 +1,745 @@ +/*! + * clipboard.js v1.5.5 + * https://zenorocha.github.io/clipboard.js + * + * Licensed MIT © Zeno Rocha + */ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Clipboard = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o li { + display: block; + float: left; + padding: 2px; + } +.colorpicker .dropdown-menu > li > a { + position: relative; + display: block; + width: 100%; + height: 100%; + padding: 0; + font-family: ZenIcon; + font-size: 14px; + font-style: normal; + font-weight: normal; + font-variant: normal; + line-height: 1; + text-align: center; + text-transform: none; + border: 1px solid transparent; + border-radius: 4px; + + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } +.colorpicker .dropdown-menu > li > a:before { + position: absolute; + top: 50%; + display: block; + width: 100%; + height: 20px; + margin-top: -8px; + } +.colorpicker .dropdown-menu > li > a:hover { + border-color: #333; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, .25); + box-shadow: 0 1px 4px rgba(0, 0, 0, .25); + } +.colorpicker .dropdown-menu > li > a.active:before { + content: '\e60d'; + } +.colorpicker .dropdown-menu > li > a.empty { + color: #666; + background: #f2f2f2; + } +.colorpicker .dropdown-menu > li > a.empty:before { + content: '\d7'; + } +.colorpicker .btn { + text-shadow: none; + } +.colorpicker .btn .cp-title { + display: inline-block; + margin-right: 5px; + } +.colorpicker.btn-wrapper { + position: relative; + display: inline-block; + } diff --git a/root/res/zui/lib/colorpicker/zui.colorpicker.js b/root/res/zui/lib/colorpicker/zui.colorpicker.js new file mode 100644 index 0000000..7fc4ed4 --- /dev/null +++ b/root/res/zui/lib/colorpicker/zui.colorpicker.js @@ -0,0 +1,230 @@ +/*! + * ZUI: 颜色选择器 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +/* ======================================================================== + * ZUI: ColorPicker.js [1.5.0+] + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function($) { + 'use strict'; + + var name = 'zui.colorPicker'; // modal name + var TEAMPLATE = '
            '; + var LANG = { + zh_cn: { + errorTip: "不是有效的颜色值" + }, + zh_tw: { + errorTip: "不是有效的顏色值" + }, + en: { + errorTip: "Not a valid color value" + } + }; + + // The ColorPicker modal class + var ColorPicker = function(element, options) { + this.name = name; + this.$ = $(element); + + this.getOptions(options); + this.init(); + }; + + // default options + ColorPicker.DEFAULTS = { + colors: ['#00BCD4', '#388E3C', '#3280fc', '#3F51B5', '#9C27B0', '#795548', '#F57C00', '#F44336', '#E91E63'], + pullMenuRight: true, + wrapper: 'btn-wrapper', + tileSize: 30, + lineCount: 5, + optional: true, + tooltip: 'top', + icon: 'caret-down', + // btnTip: 'Tool tip in button' + }; + + ColorPicker.prototype.init = function() { + var options = this.options, + that = this; + + this.$picker = $(TEAMPLATE).addClass(options.wrapper); + this.$picker.find('.cp-title').toggle(options.title !== undefined).text(options.title); + this.$menu = this.$picker.find('.dropdown-menu').toggleClass('pull-right', options.pullMenuRight); + this.$btn = this.$picker.find('.btn.dropdown-toggle'); + this.$btn.find('.ic').addClass('icon-' + options.icon); + if(options.btnTip) { + this.$picker.attr('data-toggle', 'tooltip').tooltip({title: options.btnTip, placement: options.tooltip, container: 'body'}); + } + this.$.attr('data-provide', null).after(this.$picker); + + // init colors + this.colors = {}; + $.each(this.options.colors, function(idx, rawColor) { + if($.zui.Color.isColor(rawColor)) { + var color = new $.zui.Color(rawColor); + that.colors[color.toCssStr()] = color; + } + }); + + this.updateColors(); + var that = this; + this.$picker.on('click', '.cp-tile', function() { + that.setValue($(this).data('color')); + }); + var $input = this.$; + var setInputColor = function() { + var val = $input.val(); + var isColor = $.zui.Color.isColor(val); + $input.parent().toggleClass('has-error', !isColor && !(options.optional && val === '')); + if(isColor) { + that.setValue(val, true); + } else { + if(options.optional && val === '') { + $input.tooltip('hide'); + } else if(!$input.is(':focus')) { + $input.tooltip('show', options.errorTip); + } + } + } + if($input.is('input:not([type=hidden])')) { + if(options.tooltip) { + $input.attr('data-toggle', 'tooltip').tooltip({trigger: 'manual', placement: options.tooltip, tipClass: 'tooltip-danger', container: 'body'}); + } + $input.on('keyup paste input change', setInputColor); + } else { + $input.appendTo(this.$picker); + } + setInputColor(); + }; + + ColorPicker.prototype.addColor = function(color) { + if(!(color instanceof $.zui.Color)) { + color = new $.zui.Color(color); + } + var hex = color.toCssStr(), + options = this.options; + + if(!this.colors[hex]) { + this.colors[hex] = color; + } + + var $a = $('
            ', { + titile: color + }).data('color', color).css({ + 'color': color.contrast().toCssStr(), + 'background': hex, + 'border-color': color.luma() > 0.43 ? '#ccc' : 'transparent' + }).attr('data-color', hex); + this.$menu.append($('
          • ').css({width: options.tileSize, height: options.tileSize}).append($a)); + if(options.optional) { + this.$menu.find('.cp-tile.empty').parent().detach().appendTo(this.$menu); + } + }; + + ColorPicker.prototype.updateColors = function(colors) { + var $picker = this.$picker, + $menu = this.$menu.empty(), + options = this.options, + colors = colors || this.colors, + that = this; + var bestLineCount = 0; + $.each(colors, function(idx, color) { + that.addColor(color); + bestLineCount++; + }); + if(options.optional) { + var $li = $('
          • ').css({width: options.tileSize, height: options.tileSize}); + this.$menu.append($li); + bestLineCount++; + } + $menu.css('width', Math.min(bestLineCount, options.lineCount) * options.tileSize + 6); + }; + + ColorPicker.prototype.setValue = function(color, notSetInput) { + var options = this.options; + this.$menu.find('.cp-tile.active').removeClass('active'); + var hex = ''; + if(color) { + var c = new $.zui.Color(color); + hex = c.toCssStr().toLowerCase(); + this.$btn.css({ + background: hex, + color: c.contrast().toCssStr(), + borderColor: c.luma() > 0.43 ? '#ccc' : hex + }); + if(!this.colors[hex]) { + this.addColor(c); + } + if(!notSetInput && this.$.val().toLowerCase() !== hex) { + this.$.val(hex).trigger('change'); + } + this.$menu.find('.cp-tile[data-color="' + hex + '"]').addClass('active'); + this.$.tooltip('hide'); + this.$.trigger('colorchange', c); + } else { + this.$btn.attr('style', null); + if(!notSetInput && this.$.val() !== '') { + this.$.val(hex).trigger('change'); + } + if(options.optional) { + this.$.tooltip('hide'); + } + this.$menu.find('.cp-tile.empty').addClass('active'); + this.$.trigger('colorchange', null); + } + + if(options.updateBorder) { + $(options.updateBorder).css('border-color', hex); + } + if(options.updateBackground) { + $(options.updateBackground).css('background-color', hex); + } + if(options.updateColor) { + $(options.updateText).css('color', hex); + } + if(options.updateText) { + $(options.updateText).text(hex); + } + }; + + // Get and init options + ColorPicker.prototype.getOptions = function(options) { + var thisOptions = $.extend({}, ColorPicker.DEFAULTS, this.$.data(), options); + if(typeof thisOptions.colors === 'string') thisOptions.colors = thisOptions.colors.split(','); + var lang = (thisOptions.lang || $.zui.clientLang()).toLowerCase(); + if(!thisOptions.errorTip) { + thisOptions.errorTip = LANG[lang].errorTip; + } + if(!$.fn.tooltip) thisOptions.btnTip = false; + this.options = thisOptions; + }; + + // Extense jquery element + $.fn.colorPicker = function(option) { + return this.each(function() { + var $this = $(this); + var data = $this.data(name); + var options = typeof option == 'object' && option; + + if(!data) $this.data(name, (data = new ColorPicker(this, options))); + + if(typeof option == 'string') data[option](); + }); + }; + + $.fn.colorPicker.Constructor = ColorPicker; + + // Auto call colorPicker after document load complete + $(function() { + $('[data-provide="colorpicker"]').colorPicker(); + }); +}(jQuery)); diff --git a/root/res/zui/lib/colorpicker/zui.colorpicker.min.css b/root/res/zui/lib/colorpicker/zui.colorpicker.min.css new file mode 100644 index 0000000..c6488d0 --- /dev/null +++ b/root/res/zui/lib/colorpicker/zui.colorpicker.min.css @@ -0,0 +1,6 @@ +/*! + * ZUI: 颜色选择器 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */.colorpicker .dropdown-menu{min-width:0;padding:2px}.colorpicker .dropdown-menu>li{display:block;float:left;padding:2px}.colorpicker .dropdown-menu>li>a{position:relative;display:block;width:100%;height:100%;padding:0;font-family:ZenIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-align:center;text-transform:none;border:1px solid transparent;border-radius:4px;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.colorpicker .dropdown-menu>li>a:before{position:absolute;top:50%;display:block;width:100%;height:20px;margin-top:-8px}.colorpicker .dropdown-menu>li>a:hover{border-color:#333;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.25);box-shadow:0 1px 4px rgba(0,0,0,.25)}.colorpicker .dropdown-menu>li>a.active:before{content:'\e60d'}.colorpicker .dropdown-menu>li>a.empty{color:#666;background:#f2f2f2}.colorpicker .dropdown-menu>li>a.empty:before{content:'\d7'}.colorpicker .btn{text-shadow:none}.colorpicker .btn .cp-title{display:inline-block;margin-right:5px}.colorpicker.btn-wrapper{position:relative;display:inline-block} \ No newline at end of file diff --git a/root/res/zui/lib/colorpicker/zui.colorpicker.min.js b/root/res/zui/lib/colorpicker/zui.colorpicker.min.js new file mode 100644 index 0000000..2930afa --- /dev/null +++ b/root/res/zui/lib/colorpicker/zui.colorpicker.min.js @@ -0,0 +1,7 @@ +/*! + * ZUI: 颜色选择器 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ +!function(t){"use strict";var o="zui.colorPicker",i='
            ',e={zh_cn:{errorTip:"不是有效的颜色值"},zh_tw:{errorTip:"不是有效的顏色值"},en:{errorTip:"Not a valid color value"}},r=function(i,e){this.name=o,this.$=t(i),this.getOptions(e),this.init()};r.DEFAULTS={colors:["#00BCD4","#388E3C","#3280fc","#3F51B5","#9C27B0","#795548","#F57C00","#F44336","#E91E63"],pullMenuRight:!0,wrapper:"btn-wrapper",tileSize:30,lineCount:5,optional:!0,tooltip:"top",icon:"caret-down"},r.prototype.init=function(){var o=this.options,e=this;this.$picker=t(i).addClass(o.wrapper),this.$picker.find(".cp-title").toggle(void 0!==o.title).text(o.title),this.$menu=this.$picker.find(".dropdown-menu").toggleClass("pull-right",o.pullMenuRight),this.$btn=this.$picker.find(".btn.dropdown-toggle"),this.$btn.find(".ic").addClass("icon-"+o.icon),o.btnTip&&this.$picker.attr("data-toggle","tooltip").tooltip({title:o.btnTip,placement:o.tooltip,container:"body"}),this.$.attr("data-provide",null).after(this.$picker),this.colors={},t.each(this.options.colors,function(o,i){if(t.zui.Color.isColor(i)){var r=new t.zui.Color(i);e.colors[r.toCssStr()]=r}}),this.updateColors();var e=this;this.$picker.on("click",".cp-tile",function(){e.setValue(t(this).data("color"))});var r=this.$,s=function(){var i=r.val(),s=t.zui.Color.isColor(i);r.parent().toggleClass("has-error",!(s||o.optional&&""===i)),s?e.setValue(i,!0):o.optional&&""===i?r.tooltip("hide"):r.is(":focus")||r.tooltip("show",o.errorTip)};r.is("input:not([type=hidden])")?(o.tooltip&&r.attr("data-toggle","tooltip").tooltip({trigger:"manual",placement:o.tooltip,tipClass:"tooltip-danger",container:"body"}),r.on("keyup paste input change",s)):r.appendTo(this.$picker),s()},r.prototype.addColor=function(o){o instanceof t.zui.Color||(o=new t.zui.Color(o));var i=o.toCssStr(),e=this.options;this.colors[i]||(this.colors[i]=o);var r=t('',{titile:o}).data("color",o).css({color:o.contrast().toCssStr(),background:i,"border-color":o.luma()>.43?"#ccc":"transparent"}).attr("data-color",i);this.$menu.append(t("
          • ").css({width:e.tileSize,height:e.tileSize}).append(r)),e.optional&&this.$menu.find(".cp-tile.empty").parent().detach().appendTo(this.$menu)},r.prototype.updateColors=function(o){var i=(this.$picker,this.$menu.empty()),e=this.options,o=o||this.colors,r=this,s=0;if(t.each(o,function(t,o){r.addColor(o),s++}),e.optional){var a=t('
          • ').css({width:e.tileSize,height:e.tileSize});this.$menu.append(a),s++}i.css("width",Math.min(s,e.lineCount)*e.tileSize+6)},r.prototype.setValue=function(o,i){var e=this.options;this.$menu.find(".cp-tile.active").removeClass("active");var r="";if(o){var s=new t.zui.Color(o);r=s.toCssStr().toLowerCase(),this.$btn.css({background:r,color:s.contrast().toCssStr(),borderColor:s.luma()>.43?"#ccc":r}),this.colors[r]||this.addColor(s),i||this.$.val().toLowerCase()===r||this.$.val(r).trigger("change"),this.$menu.find('.cp-tile[data-color="'+r+'"]').addClass("active"),this.$.tooltip("hide"),this.$.trigger("colorchange",s)}else this.$btn.attr("style",null),i||""===this.$.val()||this.$.val(r).trigger("change"),e.optional&&this.$.tooltip("hide"),this.$menu.find(".cp-tile.empty").addClass("active"),this.$.trigger("colorchange",null);e.updateBorder&&t(e.updateBorder).css("border-color",r),e.updateBackground&&t(e.updateBackground).css("background-color",r),e.updateColor&&t(e.updateText).css("color",r),e.updateText&&t(e.updateText).text(r)},r.prototype.getOptions=function(o){var i=t.extend({},r.DEFAULTS,this.$.data(),o);"string"==typeof i.colors&&(i.colors=i.colors.split(","));var s=(i.lang||t.zui.clientLang()).toLowerCase();i.errorTip||(i.errorTip=e[s].errorTip),t.fn.tooltip||(i.btnTip=!1),this.options=i},t.fn.colorPicker=function(i){return this.each(function(){var e=t(this),s=e.data(o),a="object"==typeof i&&i;s||e.data(o,s=new r(this,a)),"string"==typeof i&&s[i]()})},t.fn.colorPicker.Constructor=r,t(function(){t('[data-provide="colorpicker"]').colorPicker()})}(jQuery); \ No newline at end of file diff --git a/root/res/zui/lib/colorset.js/zui.colorset.js b/root/res/zui/lib/colorset.js/zui.colorset.js new file mode 100644 index 0000000..954a2a2 --- /dev/null +++ b/root/res/zui/lib/colorset.js/zui.colorset.js @@ -0,0 +1,72 @@ +/*! + * ZUI: JS配色表 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +/*! + * ZUI: Generated from less code - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +(function($) { + 'use strict'; + var nextColorIndex = 0; + var presetColors = ['primary', 'red', 'yellow', 'green', 'blue', 'purple', 'brown', 'dark']; + + var colorset = { + primary: '#3280fc', + secondary: '#145ccd', + pale: '#ebf2f9', + fore: '#353535', + back: '#fff', + grayDarker: '#222222', + grayDark: '#333333', + gray: '#808080', + grayLight: '#dddddd', + grayLighter: '#e5e5e5', + grayPale: '#f1f1f1', + white: '#fff', + black: '#000', + red: '#ea644a', + yellow: '#f1a325', + green: '#38b03f', + blue: '#03b8cf', + purple: '#8666b8', + brown: '#bd7b46', + greenPale: '#ddf4df', + yellowPale: '#fff0d5', + redPale: '#ffe5e0', + bluePale: '#ddf3f5', + brownPale: '#f7ebe1', + purplePale: '#f5eeff', + light: '#fff', + dark: '#353535', + success: '#38b03f', + warning: '#f1a325', + danger: '#ea644a', + info: '#03b8cf', + important: '#bd7b46', + special: '#8666b8', + successPale: '#ddf4df', + warningPale: '#fff0d5', + dangerPale: '#ffe5e0', + infoPale: '#ddf3f5', + importantPale: '#f7ebe1', + specialPale: '#f5eeff' + }; + + colorset.get = function(colorName) { + if(typeof colorName === 'undefined' || colorName === 'random') { + colorName = presetColors[(nextColorIndex++) % presetColors.length]; + } + var color = colorset[colorName] ? colorset[colorName] : colorName; + return $.zui.Color ? new $.zui.Color(color) : color; + } + + $.zui({colorset: colorset}); + if($.zui.Color) $.extend($.zui.Color, colorset); +}(jQuery)); diff --git a/root/res/zui/lib/colorset.js/zui.colorset.min.js b/root/res/zui/lib/colorset.js/zui.colorset.min.js new file mode 100644 index 0000000..f1de329 --- /dev/null +++ b/root/res/zui/lib/colorset.js/zui.colorset.min.js @@ -0,0 +1,13 @@ +/*! + * ZUI: JS配色表 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ +/*! + * ZUI: Generated from less code - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ +!function(e){"use strict";var f=0,r=["primary","red","yellow","green","blue","purple","brown","dark"],a={primary:"#3280fc",secondary:"#145ccd",pale:"#ebf2f9",fore:"#353535",back:"#fff",grayDarker:"#222222",grayDark:"#333333",gray:"#808080",grayLight:"#dddddd",grayLighter:"#e5e5e5",grayPale:"#f1f1f1",white:"#fff",black:"#000",red:"#ea644a",yellow:"#f1a325",green:"#38b03f",blue:"#03b8cf",purple:"#8666b8",brown:"#bd7b46",greenPale:"#ddf4df",yellowPale:"#fff0d5",redPale:"#ffe5e0",bluePale:"#ddf3f5",brownPale:"#f7ebe1",purplePale:"#f5eeff",light:"#fff",dark:"#353535",success:"#38b03f",warning:"#f1a325",danger:"#ea644a",info:"#03b8cf",important:"#bd7b46",special:"#8666b8",successPale:"#ddf4df",warningPale:"#fff0d5",dangerPale:"#ffe5e0",infoPale:"#ddf3f5",importantPale:"#f7ebe1",specialPale:"#f5eeff"};a.get=function(l){"undefined"!=typeof l&&"random"!==l||(l=r[f++%r.length]);var d=a[l]?a[l]:l;return e.zui.Color?new e.zui.Color(d):d},e.zui({colorset:a}),e.zui.Color&&e.extend(e.zui.Color,a)}(jQuery); \ No newline at end of file diff --git a/root/res/zui/lib/dashboard/zui.dashboard.css b/root/res/zui/lib/dashboard/zui.dashboard.css new file mode 100644 index 0000000..356d292 --- /dev/null +++ b/root/res/zui/lib/dashboard/zui.dashboard.css @@ -0,0 +1,288 @@ +/*! + * ZUI: 仪表盘 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +.dashboard { + position: relative; + } +.dashboard .panel { + position: relative; + } +.dashboard .panel-actions { + position: absolute; + top: 0; + right: 0; + } +.dashboard .panel-actions .dropdown-menu { + min-width: 80px; + } +.dashboard .panel-actions .dropdown-menu > li > a { + padding: 3px 10px; + } +.dashboard .panel-actions > a, +.dashboard .panel-actions > .dropdown > a { + color: #808080; + text-decoration: none !important; + } +.dashboard .panel-actions > a, +.dashboard .panel-actions > .btn, +.dashboard .panel-actions > .dropdown { + display: block; + float: left; + } +.dashboard .panel-actions > a, +.dashboard .panel-actions > .btn, +.dashboard .panel-actions > .dropdown > a, +.dashboard .panel-actions > .dropdown > .btn { + display: block; + min-width: 28px; + height: 31px; + padding: 0 3px; + line-height: 30px; + text-align: center; + filter: alpha(opacity=70); + border: none; + border-radius: 0; + opacity: .7; + } +.dashboard .panel-actions > a:hover, +.dashboard .panel-actions > .dropdown > a:hover { + background-color: rgba(0, 0, 0, .1); + } +.dashboard .panel-heading { + height: 32px; + padding: 6px 60px 6px 6px; + font-weight: bold; + text-overflow: ellipsis; + white-space: nowrap; + } +.dashboard .panel-heading > .icon { + filter: alpha(opacity=70); + opacity: .7; + } +.dashboard .panel-heading:hover > .panel-actions > .btn, +.dashboard .panel-heading:hover > .panel-actions > .dropdown > .btn, +.dashboard .panel-heading:hover > .panel-actions > .dropdown > a, +.dashboard .panel-heading:hover > .panel-actions > a { + filter: alpha(opacity=100); + opacity: 1; + } +.dashboard .panel-body { + position: absolute; + top: 32px; + right: 0; + bottom: 0; + left: 0; + padding: 10px; + overflow: auto; + } +.dashboard .panel-body.no-padding { + padding: 0; + } +.dashboard .panel-body > :last-child { + margin: 0; + } +.dashboard .panel-body > .list-group .list-group-item { + border-right: none; + border-left: none; + border-radius: 0; + } +.dashboard .panel-body > .list-group .list-group-item:first-child { + border-top: none; + } +.dashboard.dashboard-draggable .panel-heading { + cursor: move; + } +.dashboard .panel-dragging { + color: #fff; + background: rgba(0, 0, 0, .1); + border: 1px solid #fff; + -webkit-box-shadow: none!important; + box-shadow: none!important; + } +.dashboard .panel-dragging > * { + filter: alpha(opacity=10); + opacity: .1; + } +.dashboard .panel-dragging-shadow { + position: absolute; + cursor: move; + background: rgba(255, 255, 255, .5); + border: 2px solid rgba(255, 255, 255, .9); + -webkit-box-shadow: 1px 5px 15px rgba(0, 0, 0, .5) !important; + box-shadow: 1px 5px 15px rgba(0, 0, 0, .5) !important; + } +.dashboard .panel-dragging-shadow > * { + filter: alpha(opacity=70); + opacity: .7; + } +.dashboard .panel-dragging-shadow.circle { + overflow: hidden; + border-radius: 50%; + -webkit-transition: width .2s, height .2s; + -o-transition: width .2s, height .2s; + transition: width .2s, height .2s; + } +.dashboard .panel-dragging-shadow.circle .panel-actions { + display: none; + } +.dashboard .dragging-col-holder { + display: none; + } +.dashboard.dashboard-holding .dragging-col-holder { + display: block; + } +.dashboard.dashboard-holding .dragging-col { + display: none; + } +.dashboard .resize-handle { + position: absolute; + top: 0; + right: 4px; + bottom: 20px; + width: 12px; + cursor: e-resize; + filter: alpha(opacity=0); + border-radius: 4px; + opacity: 0; + -webkit-transition: opacity .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: opacity .4s cubic-bezier(.175, .885, .32, 1); + transition: opacity .4s cubic-bezier(.175, .885, .32, 1); + } +.dashboard .resize-handle > .icon { + position: absolute; + top: 50%; + left: 0; + display: block; + width: 20px; + height: 20px; + margin-top: -10px; + line-height: 20px; + color: #3280fc; + text-align: center; + background-color: rgba(50, 128, 252, .2); + -webkit-transition: left .4s cubic-bezier(.175, .885, .32, 1), top .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: left .4s cubic-bezier(.175, .885, .32, 1), top .4s cubic-bezier(.175, .885, .32, 1); + transition: left .4s cubic-bezier(.175, .885, .32, 1), top .4s cubic-bezier(.175, .885, .32, 1); + } +.dashboard .resize-handle:hover { + background-color: rgba(50, 128, 252, .12); + filter: alpha(opacity=100); + opacity: 1; + } +.dashboard .resize-handle:hover > .icon { + left: -4px; + } +.dashboard .resize-handle.resize-vertical { + top: auto; + right: 10px; + bottom: 14px; + left: 10px; + width: auto; + height: 12px; + cursor: n-resize; + } +.dashboard .resize-handle.resize-vertical > .icon { + top: 0; + left: 50%; + margin-top: 0; + margin-left: -10px; + } +.dashboard .resize-handle.resize-vertical:hover { + background-color: rgba(50, 128, 252, .12); + filter: alpha(opacity=100); + opacity: 1; + } +.dashboard .resize-handle.resize-vertical:hover > .icon { + top: -4px; + } +.dashboard .resizing { + -webkit-transition: width .2s cubic-bezier(.175, .885, .32, 1); + -o-transition: width .2s cubic-bezier(.175, .885, .32, 1); + transition: width .2s cubic-bezier(.175, .885, .32, 1); + } +.dashboard .resizing-v .resize-vertical { + opacity: 1; + } +.dashboard .resizing-v .resize-vertical > .icon { + top: -4px; + } +.dashboard .resizing-h .resize-horizontal { + opacity: 1; + } +.dashboard .resizing-h .resize-horizontal > .icon { + left: -4px; + } +.dashboard .resizing .resize-handle { + background-color: rgba(50, 128, 252, .12); + } +.dashboard .panel-body:after, +.dashboard .panel-body:before { + display: block; + visibility: hidden; + content: ' '; + opacity: 0; + -webkit-transition: visibility .2s, opacity .2s; + -o-transition: visibility .2s, opacity .2s; + transition: visibility .2s, opacity .2s; + } +.dashboard .panel-body:before { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + background-color: #fff; + } +.dashboard .panel-body:after { + position: absolute; + top: 50%; + left: 50%; + width: 40px; + height: 40px; + margin-top: -20px; + margin-left: -20px; + font-family: ZenIcon; + font-size: 14px; + font-size: 28px; + font-style: normal; + font-weight: normal; + font-variant: normal; + line-height: 1; + line-height: 40px; + text-align: center; + text-transform: none; + content: '\e97c'; + -webkit-animation: spin 2s infinite linear; + -o-animation: spin 2s infinite linear; + animation: spin 2s infinite linear; + + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } +.dashboard .panel-loading > .panel-body { + overflow: hidden; + } +.dashboard .panel-loading > .panel-body:before, +.dashboard .panel-loading > .panel-body:after { + visibility: visible; + opacity: .5; + } +.dashboard-inverse { + background-color: #3280fc; + } +.dashboard-inverse .panel { + -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, .15); + box-shadow: 0 1px 5px rgba(0, 0, 0, .15); + } +.dashboard-inverse .panel-dragging { + background: rgba(0, 0, 0, .3); + } +.dashboard-inverse .panel-dragging-shadow { + -webkit-box-shadow: 1px 2px 15px rgba(0, 0, 0, .5) !important; + box-shadow: 1px 2px 15px rgba(0, 0, 0, .5) !important; + } diff --git a/root/res/zui/lib/dashboard/zui.dashboard.js b/root/res/zui/lib/dashboard/zui.dashboard.js new file mode 100644 index 0000000..cf80fa4 --- /dev/null +++ b/root/res/zui/lib/dashboard/zui.dashboard.js @@ -0,0 +1,529 @@ +/*! + * ZUI: 仪表盘 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +/* ======================================================================== + * ZUI: dashboard.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function($, Math, undefined) { + 'use strict'; + + var dashboardMessager = $.zui.Messager ? new $.zui.Messager({placement: 'top', time: 1500, close: 0, scale: false, fade: false}) : 0; + + var Dashboard = function(element, options) { + this.$ = $(element); + this.options = this.getOptions(options); + this.draggable = this.$.hasClass('dashboard-draggable') || this.options.draggable; + + this.init(); + }; + + Dashboard.DEFAULTS = { + minHeight: 100, + height: 360, + shadowType: 'normal', + sensitive: false, + circleShadowSize: 100, + onlyRefreshBody: true, + resizable: true, // 'vertical', 'horizontal' + resizeMessage: false + }; + + Dashboard.prototype.getOptions = function(options) { + options = $.extend({}, Dashboard.DEFAULTS, this.$.data(), options); + return options; + }; + + Dashboard.prototype.handleRemoveEvent = function() { + var afterPanelRemoved = this.options.afterPanelRemoved; + var tip = this.options.panelRemovingTip; + this.$.on('click', '.remove-panel', function() { + var panel = $(this).closest('.panel'); + var name = panel.data('name') || panel.find('.panel-heading').text().replace('\n', '').replace(/(^\s*)|(\s*$)/g, ''); + var index = panel.attr('data-id'); + + if(tip === undefined || tip === false || confirm(tip.format(name))) { + panel.parent().remove(); + if(afterPanelRemoved && $.isFunction(afterPanelRemoved)) { + afterPanelRemoved(index); + } + } + }); + }; + + Dashboard.prototype.handleRefreshEvent = function() { + var that = this; + var onlyRefreshBody = this.options.onlyRefreshBody; + this.$.on('click', '.refresh-panel', function() { + var panel = $(this).closest('.panel'); + that.refresh(panel, onlyRefreshBody); + }); + }; + + Dashboard.prototype.handleDraggable = function() { + var dashboard = this.$; + var options = this.options; + var circleShadow = options.shadowType === 'circle'; + var circleSize = options.circleShadowSize; + var halfCircleSize = circleSize / 2; + var afterOrdered = options.afterOrdered; + + this.$.addClass('dashboard-draggable'); + + this.$.on('mousedown', '.panel-actions, .drag-disabled', function(event) { + event.stopPropagation(); + }); + + var pColClass; + this.$.on('mousedown', '.panel-heading, .panel-drag-handler', function(event) { + var panel = $(this).closest('.panel'); + var pCol = panel.parent(); + var row = panel.closest('.row'); + var dPanel = panel.clone().addClass('panel-dragging-shadow'); + var pos = panel.offset(); + var dPos = dashboard.offset(); + var dColShadow = row.find('.dragging-col-holder'); + var sWidth = panel.width(), + sHeight = panel.height(), + sX1, sY1, sX2, sY2, moveFn, dropCol, dropBefore, nextDropCol; + if(!dColShadow.length) { + dColShadow = $('
            ').removeClass('dragging-col').appendTo(row); + } + + if(pColClass) dColShadow.removeClass(pColClass); + dColShadow.addClass(pColClass = pCol.attr('class')); + + dColShadow.insertBefore(pCol).find('.panel').replaceWith(panel.clone().addClass('panel-dragging panel-dragging-holder')); + + dashboard.addClass('dashboard-dragging'); + panel.addClass('panel-dragging').parent().addClass('dragging-col'); + + dPanel.css({ + left: pos.left - dPos.left, + top: pos.top - dPos.top, + width: sWidth, + height: sHeight + }).appendTo(dashboard).data('mouseOffset', { + x: event.pageX - pos.left + dPos.left, + y: event.pageY - pos.top + dPos.top + }); + + if(circleShadow) { + dPanel.addClass('circle'); + setTimeout(function() { + dPanel.css({ + left: event.pageX - dPos.left - halfCircleSize, + top: event.pageY - dPos.top - halfCircleSize, + width: circleSize, + height: circleSize + }).data('mouseOffset', { + x: dPos.left + halfCircleSize, + y: dPos.top + halfCircleSize + }); + }, 100); + } + + $(document).on('mousemove', mouseMove).on('mouseup', mouseUp); + event.preventDefault(); + + function mouseMove(event) { + // console.log('......................'); + var offset = dPanel.data('mouseOffset'); + sX1 = event.pageX - offset.x; + sY1 = event.pageY - offset.y; + sX2 = sX1 + sWidth; + sY2 = sY1 + sHeight; + dPanel.css({ + left: sX1, + top: sY1 + }); + + row.find('.dragging-in').removeClass('dragging-in'); + dropBefore = false; + dropCol = null; + var area = 0, + thisArea; + row.children(':not(.dragging-col)').each(function() { + var col = $(this); + if(col.hasClass('dragging-col-holder')) { + dropBefore = (!options.sensitive) || (area < 100); + return true; + } + var p = col.children('.panel'); + var pP = p.offset(), + pW = p.width(), + pH = p.height(); + var pX = pP.left, + pY = pP.top; + + if(options.sensitive) { + pX -= dPos.left; + pY -= dPos.top; + thisArea = getIntersectArea(sX1, sY1, sX2, sY2, pX, pY, pX + pW, pY + pH); + if(thisArea > 100 && thisArea > area && thisArea > Math.min(getRectArea(sX1, sY1, sX2, sY2), getRectArea(pX, pY, pX + pW, pY + pH)) / 3) { + area = thisArea; + dropCol = col; + } + } else { + var mX = event.pageX, + mY = event.pageY; + + if(mX > pX && mY > pY && mX < (pX + pW) && mY < (pY + pH)) { + dropCol = col; + return false; + } + } + }); + + if(dropCol) { + if(moveFn) clearTimeout(moveFn); + nextDropCol = dropCol; + moveFn = setTimeout(movePanel, 50); + } + event.preventDefault(); + } + + function movePanel() { + if(nextDropCol) { + nextDropCol.addClass('dragging-in'); + if(dropBefore) dColShadow.insertAfter(nextDropCol); + else dColShadow.insertBefore(nextDropCol); + dashboard.addClass('dashboard-holding'); + moveFn = null; + nextDropCol = null; + } + } + + function mouseUp(event) { + if(moveFn) clearTimeout(moveFn); + + var oldOrder = panel.data('order'); + panel.parent().insertAfter(dColShadow); + var newOrder = 0; + var newOrders = {}; + + row.children(':not(.dragging-col-holder)').each(function() { + var p = $(this).children('.panel'); + p.data('order', ++newOrder); + newOrders[p.data('id') || p.attr('id')] = newOrder; + p.parent().attr('data-order', newOrder); + }); + + if(oldOrder != newOrders[panel.data('id') || panel.attr('id')]) { + row.data('orders', newOrders); + + if(afterOrdered && $.isFunction(afterOrdered)) { + afterOrdered(newOrders); + } + } + + dPanel.remove(); + + dashboard.removeClass('dashboard-holding'); + dashboard.find('.dragging-col').removeClass('dragging-col'); + dashboard.find('.panel-dragging').removeClass('panel-dragging'); + row.find('.dragging-in').removeClass('dragging-in'); + dashboard.removeClass('dashboard-dragging'); + $(document).off('mousemove', mouseMove).off('mouseup', mouseUp); + event.preventDefault(); + } + }); + }; + + Dashboard.prototype.handlePanelPadding = function() { + this.$.find('.panel-body > table, .panel-body > .list-group').parent().addClass('no-padding'); + }; + + Dashboard.prototype.updatePanelHeight = function() { + var that = this; + var defaultHeight = that.options.height; + var minHeight = that.options.minHeight; + var sizeConfig = {}; + if(that.id && $.zui.store) { + sizeConfig = $.zui.store.pageGet('zui.dashboard.' + that.id + '.sizeConfig', sizeConfig); + } + + this.$.children('.row').each(function() { + var $row = $(this); + var rowWidth = $row.width(); + var rows = [], row = [], calWidth = 0; + $row.children(':not(.dragging-col-holder)').each(function() { + var $col = $(this); + var colWidth = $col.width(); + if(calWidth + colWidth > rowWidth) { + if(row.length) rows.push(row); + row = [$col]; + calWidth = colWidth; + } else { + calWidth += colWidth; + row.push($col); + } + }); + if(row.length) rows.push(row); + if(rows.length) { + $.each(rows, function(rowId) { + row = rows[rowId]; + var bestHeight = 0; + var panels = []; + var setNewHeight = false; + $.each(row, function(colId) { + var $col = row[colId].data('row-id', rowId); + var $panel = $col.children('.panel:first'); + panels.push($panel); + if(setNewHeight) return; + var newHeight = $panel.data('newHeight'); + if(newHeight) { + $panel.data('newHeight', null).data('height', newHeight); + bestHeight = Math.max(minHeight, newHeight); + setNewHeight = true; + } else { + var panelHeight = $panel.data('height') || sizeConfig[$panel.data('id')]; + if(panelHeight) bestHeight = Math.max(bestHeight, panelHeight); + } + }); + if(!bestHeight) { + bestHeight = defaultHeight; + } + $.each(panels, function(idx) { + var $panel = panels[idx].css('height', bestHeight); + sizeConfig[$panel.data('id')] = $panel.data('height'); + }); + }); + } + }); + + if(that.id && $.zui.store) { + $.zui.store.pageSet('zui.dashboard.' + that.id + '.sizeConfig', sizeConfig); + } + + return sizeConfig; + }; + + Dashboard.prototype.handleResizeEvent = function() { + var that = this; + var options = that.options; + var resizable = options.resizable; + var onResize = options.onResize; + var minHeight = options.minHeight; + var resizeMessage = options.resizeMessage; + var messagerAvaliable = resizeMessage && dashboardMessager; + that.$.on('mousedown', '.resize-handle', function(e) { + var $handle = $(this); + var isVertical = $handle.hasClass('resize-vertical'); + var $col = $handle.parent() + .addClass('resizing') + .toggleClass('resizing-v', isVertical) + .toggleClass('resizing-h', !isVertical); + var $row = $col.closest('.row'); + var $panel = $col.children('.panel'); + var startX = e.pageX, startY = e.pageY; + var startWidth = $col.width(), startHeight = $panel.height(); + var rowWidth = $row.width(); + var oldGrid = Math.round(12*startWidth/rowWidth); + var lastGrid = oldGrid; + if(!isVertical) $col.attr('data-grid', oldGrid); + + var mouseMove = function(event) { + if(isVertical) { + $panel.css('height', Math.max(minHeight, startHeight + (event.pageY - startY))); + } + else { + var x = event.pageX; + var grid = Math.max(1, Math.min(12, Math.round(12 * (startWidth + (x - startX)) / rowWidth))); + if(lastGrid != grid) { + $col.attr('data-grid', grid).css('width', (100*grid/12) + '%'); + if(messagerAvaliable) dashboardMessager[dashboardMessager.isShow ? 'update' : 'show'](Math.round(100*grid/12) + '% (' + grid + '/12)'); + lastGrid = grid; + } + } + event.preventDefault(); + event.stopPropagation(); + }; + + var mouseUp = function(event) { + $col.removeClass('resizing resizing-v resizing-h'); + + if(isVertical) { + var newHeight = Math.max(minHeight, startHeight + (event.pageY - startY)); + if(newHeight !== startHeight) + { + if($.isFunction(onResize)) + { + var revert = function() { + $panel.css('height', startHeight).data('height', startHeight); + that.updatePanelHeight(); + }; + var result = onResize({type: 'vertical', id: $panel.data('id'), element: $col, old: startHeight, height: newHeight, revert: revert}); + if(result === false) revert(); + } + $panel.css('height', newHeight).data('newHeight', newHeight);; + } + } else { + var lastGrid = $col.attr('data-grid'); + if(oldGrid != lastGrid) { + if($.isFunction(onResize)) { + var revert = function() { + $col.attr('data-grid', oldGrid).css('width', null); + that.updatePanelHeight(); + }; + var result = onResize({type: 'horizontal', id: $panel.data('id'), element: $col, old: oldGrid, grid: lastGrid, revert: revert}); + if(result === false) revert(); + else if(result !== true) { + if(messagerAvaliable) dashboardMessager.show(Math.round(100*lastGrid/12) + '% (' + lastGrid + '/12)'); + } + } + } + } + that.updatePanelHeight(); + $('body').off('mousemove.resize', mouseMove).off('mouseup.resize', mouseUp); + event.preventDefault(); + event.stopPropagation(); + }; + + $('body').on('mousemove.resize', mouseMove).on('mouseup.resize', mouseUp); + e.preventDefault(); + e.stopPropagation(); + }); + var $col = that.$.children('.row').children(':not(.dragging-col-holder)'); + if(resizable === true || resizable === 'horizontal') + { + $col.append('
            '); + } + if(resizable === true || resizable === 'vertical') + { + $col.append('
            '); + } + }; + + Dashboard.prototype.refresh = function($panel, onlyRefreshBody) { + if(onlyRefreshBody === undefined) onlyRefreshBody = this.options.onlyRefreshBody; + var afterRefresh = this.options.afterRefresh; + $panel = $($panel); + var url = $panel.data('url'); + if(!url) return; + $panel.addClass('panel-loading').find('.panel-heading .icon-refresh,.panel-heading .icon-repeat').addClass('icon-spin'); + $.ajax({ + url: url, + dataType: 'html' + }).done(function(data) { + var $data = $(data); + if($data.hasClass('panel')) { + $panel.empty().append($data.children()); + } else if(onlyRefreshBody) { + $panel.find('.panel-body').empty().html(data); + } else { + $panel.html(data); + } + if($.isFunction(afterRefresh)) { + afterRefresh.call(this, { + result: true, + data: data, + $panel: $panel + }); + } + }).fail(function() { + $panel.addClass('panel-error'); + if($.isFunction(afterRefresh)) { + afterRefresh.call(this, { + result: false, + $panel: $panel + }); + } + }).always(function() { + $panel.removeClass('panel-loading'); + $panel.find('.panel-heading .icon-refresh,.panel-heading .icon-repeat').removeClass('icon-spin'); + }); + }; + + function getRectArea(x1, y1, x2, y2) { + return Math.abs((x2 - x1) * (y2 - y1)); + } + + function isPointInner(x, y, x1, y1, x2, y2) { + return x >= x1 && x <= x2 && y >= y1 && y <= y2; + } + + function getIntersectArea(ax1, ay1, ax2, ay2, bx1, by1, bx2, by2) { + var x1 = Math.max(ax1, bx1), + y1 = Math.max(ay1, by1), + x2 = Math.min(ax2, bx2), + y2 = Math.min(ay2, by2); + if(isPointInner(x1, y1, ax1, ay1, ax2, ay2) && isPointInner(x2, y2, ax1, ay1, ax2, ay2) && isPointInner(x1, y1, bx1, by1, bx2, by2) && isPointInner(x2, y2, bx1, by1, bx2, by2)) { + return getRectArea(x1, y1, x2, y2); + } + return 0; + } + + Dashboard.prototype.init = function() { + var options = this.options, that = this; + that.id = options.id ? options.id : that.$.attr('id'); + if(options.data) { + var $row = $('
            '); + $.each(options.data, function(idx, config) { + var $col = $('
            '); + if(config.colAttrs) $col.attr(config.colAttrs); + var $panel = $('
            '); + if(config.panelAttrs) $panel.attr(config.panelAttrs); + if(config.height !== undefined) $panel.data('height', config.height); + if(config.content !== undefined) { + if($.isFunction(config.content)) { + var content = config.content($panel); + if(content !== true) { + $panel.html(content); + } + } else { + $panel.html(config.content); + } + } + $row.append($col.append($panel.data('url', config.url))); + }); + that.$.append($row); + } + + that.updatePanelHeight(); + that.handlePanelPadding(); + that.handleRemoveEvent(); + that.handleRefreshEvent(); + if(options.resizable) that.handleResizeEvent(); + if(that.draggable) that.handleDraggable(); + + var orderSeed = 0; + that.$.find('.panel').each(function() { + var $this = $(this); + $this.data('order', ++orderSeed); + if(!$this.attr('id')) { + $this.attr('id', 'panel' + orderSeed); + } + if(!$this.attr('data-id')) { + $this.attr('data-id', orderSeed); + } + + that.refresh($this, options.onlyRefreshBody); + }); + + that.$.find('[data-toggle="tooltip"]').tooltip({container: 'body'}); + }; + + $.fn.dashboard = function(option) { + return this.each(function() { + var $this = $(this); + var data = $this.data('zui.dashboard'); + var options = typeof option == 'object' && option; + + if(!data) $this.data('zui.dashboard', (data = new Dashboard(this, options))); + + if(typeof option == 'string') data[option](); + }); + }; + + $.fn.dashboard.Constructor = Dashboard; +}(jQuery, Math, undefined)); + diff --git a/root/res/zui/lib/dashboard/zui.dashboard.min.css b/root/res/zui/lib/dashboard/zui.dashboard.min.css new file mode 100644 index 0000000..407ab93 --- /dev/null +++ b/root/res/zui/lib/dashboard/zui.dashboard.min.css @@ -0,0 +1,6 @@ +/*! + * ZUI: 仪表盘 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */.dashboard{position:relative}.dashboard .panel{position:relative}.dashboard .panel-actions{position:absolute;top:0;right:0}.dashboard .panel-actions .dropdown-menu{min-width:80px}.dashboard .panel-actions .dropdown-menu>li>a{padding:3px 10px}.dashboard .panel-actions>.dropdown>a,.dashboard .panel-actions>a{color:grey;text-decoration:none!important}.dashboard .panel-actions>.btn,.dashboard .panel-actions>.dropdown,.dashboard .panel-actions>a{display:block;float:left}.dashboard .panel-actions>.btn,.dashboard .panel-actions>.dropdown>.btn,.dashboard .panel-actions>.dropdown>a,.dashboard .panel-actions>a{display:block;min-width:28px;height:31px;padding:0 3px;line-height:30px;text-align:center;filter:alpha(opacity=70);border:none;border-radius:0;opacity:.7}.dashboard .panel-actions>.dropdown>a:hover,.dashboard .panel-actions>a:hover{background-color:rgba(0,0,0,.1)}.dashboard .panel-heading{height:32px;padding:6px 60px 6px 6px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.dashboard .panel-heading>.icon{filter:alpha(opacity=70);opacity:.7}.dashboard .panel-heading:hover>.panel-actions>.btn,.dashboard .panel-heading:hover>.panel-actions>.dropdown>.btn,.dashboard .panel-heading:hover>.panel-actions>.dropdown>a,.dashboard .panel-heading:hover>.panel-actions>a{filter:alpha(opacity=100);opacity:1}.dashboard .panel-body{position:absolute;top:32px;right:0;bottom:0;left:0;padding:10px;overflow:auto}.dashboard .panel-body.no-padding{padding:0}.dashboard .panel-body>:last-child{margin:0}.dashboard .panel-body>.list-group .list-group-item{border-right:none;border-left:none;border-radius:0}.dashboard .panel-body>.list-group .list-group-item:first-child{border-top:none}.dashboard.dashboard-draggable .panel-heading{cursor:move}.dashboard .panel-dragging{color:#fff;background:rgba(0,0,0,.1);border:1px solid #fff;-webkit-box-shadow:none!important;box-shadow:none!important}.dashboard .panel-dragging>*{filter:alpha(opacity=10);opacity:.1}.dashboard .panel-dragging-shadow{position:absolute;cursor:move;background:rgba(255,255,255,.5);border:2px solid rgba(255,255,255,.9);-webkit-box-shadow:1px 5px 15px rgba(0,0,0,.5)!important;box-shadow:1px 5px 15px rgba(0,0,0,.5)!important}.dashboard .panel-dragging-shadow>*{filter:alpha(opacity=70);opacity:.7}.dashboard .panel-dragging-shadow.circle{overflow:hidden;border-radius:50%;-webkit-transition:width .2s,height .2s;-o-transition:width .2s,height .2s;transition:width .2s,height .2s}.dashboard .panel-dragging-shadow.circle .panel-actions{display:none}.dashboard .dragging-col-holder{display:none}.dashboard.dashboard-holding .dragging-col-holder{display:block}.dashboard.dashboard-holding .dragging-col{display:none}.dashboard .resize-handle{position:absolute;top:0;right:4px;bottom:20px;width:12px;cursor:e-resize;filter:alpha(opacity=0);border-radius:4px;opacity:0;-webkit-transition:opacity .4s cubic-bezier(.175,.885,.32,1);-o-transition:opacity .4s cubic-bezier(.175,.885,.32,1);transition:opacity .4s cubic-bezier(.175,.885,.32,1)}.dashboard .resize-handle>.icon{position:absolute;top:50%;left:0;display:block;width:20px;height:20px;margin-top:-10px;line-height:20px;color:#3280fc;text-align:center;background-color:rgba(50,128,252,.2);-webkit-transition:left .4s cubic-bezier(.175,.885,.32,1),top .4s cubic-bezier(.175,.885,.32,1);-o-transition:left .4s cubic-bezier(.175,.885,.32,1),top .4s cubic-bezier(.175,.885,.32,1);transition:left .4s cubic-bezier(.175,.885,.32,1),top .4s cubic-bezier(.175,.885,.32,1)}.dashboard .resize-handle:hover{background-color:rgba(50,128,252,.12);filter:alpha(opacity=100);opacity:1}.dashboard .resize-handle:hover>.icon{left:-4px}.dashboard .resize-handle.resize-vertical{top:auto;right:10px;bottom:14px;left:10px;width:auto;height:12px;cursor:n-resize}.dashboard .resize-handle.resize-vertical>.icon{top:0;left:50%;margin-top:0;margin-left:-10px}.dashboard .resize-handle.resize-vertical:hover{background-color:rgba(50,128,252,.12);filter:alpha(opacity=100);opacity:1}.dashboard .resize-handle.resize-vertical:hover>.icon{top:-4px}.dashboard .resizing{-webkit-transition:width .2s cubic-bezier(.175,.885,.32,1);-o-transition:width .2s cubic-bezier(.175,.885,.32,1);transition:width .2s cubic-bezier(.175,.885,.32,1)}.dashboard .resizing-v .resize-vertical{opacity:1}.dashboard .resizing-v .resize-vertical>.icon{top:-4px}.dashboard .resizing-h .resize-horizontal{opacity:1}.dashboard .resizing-h .resize-horizontal>.icon{left:-4px}.dashboard .resizing .resize-handle{background-color:rgba(50,128,252,.12)}.dashboard .panel-body:after,.dashboard .panel-body:before{display:block;visibility:hidden;content:' ';opacity:0;-webkit-transition:visibility .2s,opacity .2s;-o-transition:visibility .2s,opacity .2s;transition:visibility .2s,opacity .2s}.dashboard .panel-body:before{position:absolute;top:0;right:0;bottom:0;left:0;background-color:#fff}.dashboard .panel-body:after{position:absolute;top:50%;left:50%;width:40px;height:40px;margin-top:-20px;margin-left:-20px;font-family:ZenIcon;font-size:14px;font-size:28px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;line-height:40px;text-align:center;text-transform:none;content:'\e97c';-webkit-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.dashboard .panel-loading>.panel-body{overflow:hidden}.dashboard .panel-loading>.panel-body:after,.dashboard .panel-loading>.panel-body:before{visibility:visible;opacity:.5}.dashboard-inverse{background-color:#3280fc}.dashboard-inverse .panel{-webkit-box-shadow:0 1px 5px rgba(0,0,0,.15);box-shadow:0 1px 5px rgba(0,0,0,.15)}.dashboard-inverse .panel-dragging{background:rgba(0,0,0,.3)}.dashboard-inverse .panel-dragging-shadow{-webkit-box-shadow:1px 2px 15px rgba(0,0,0,.5)!important;box-shadow:1px 2px 15px rgba(0,0,0,.5)!important} \ No newline at end of file diff --git a/root/res/zui/lib/dashboard/zui.dashboard.min.js b/root/res/zui/lib/dashboard/zui.dashboard.min.js new file mode 100644 index 0000000..96adaa9 --- /dev/null +++ b/root/res/zui/lib/dashboard/zui.dashboard.min.js @@ -0,0 +1,7 @@ +/*! + * ZUI: 仪表盘 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ +!function(e,a,t){"use strict";function i(e,t,i,n){return a.abs((i-e)*(n-t))}function n(e,a,t,i,n,o){return e>=t&&e<=n&&a>=i&&a<=o}function o(e,t,o,s,r,d,l,h){var g=a.max(e,r),p=a.max(t,d),c=a.min(o,l),f=a.min(s,h);return n(g,p,e,t,o,s)&&n(c,f,e,t,o,s)&&n(g,p,r,d,l,h)&&n(c,f,r,d,l,h)?i(g,p,c,f):0}var s=e.zui.Messager?new e.zui.Messager({placement:"top",time:1500,close:0,scale:!1,fade:!1}):0,r=function(a,t){this.$=e(a),this.options=this.getOptions(t),this.draggable=this.$.hasClass("dashboard-draggable")||this.options.draggable,this.init()};r.DEFAULTS={minHeight:100,height:360,shadowType:"normal",sensitive:!1,circleShadowSize:100,onlyRefreshBody:!0,resizable:!0,resizeMessage:!1},r.prototype.getOptions=function(a){return a=e.extend({},r.DEFAULTS,this.$.data(),a)},r.prototype.handleRemoveEvent=function(){var a=this.options.afterPanelRemoved,i=this.options.panelRemovingTip;this.$.on("click",".remove-panel",function(){var n=e(this).closest(".panel"),o=n.data("name")||n.find(".panel-heading").text().replace("\n","").replace(/(^\s*)|(\s*$)/g,""),s=n.attr("data-id");(i===t||i===!1||confirm(i.format(o)))&&(n.parent().remove(),a&&e.isFunction(a)&&a(s))})},r.prototype.handleRefreshEvent=function(){var a=this,t=this.options.onlyRefreshBody;this.$.on("click",".refresh-panel",function(){var i=e(this).closest(".panel");a.refresh(i,t)})},r.prototype.handleDraggable=function(){var t=this.$,n=this.options,s="circle"===n.shadowType,r=n.circleShadowSize,d=r/2,l=n.afterOrdered;this.$.addClass("dashboard-draggable"),this.$.on("mousedown",".panel-actions, .drag-disabled",function(e){e.stopPropagation()});var h;this.$.on("mousedown",".panel-heading, .panel-drag-handler",function(g){function p(t){var s=x.data("mouseOffset");u=t.pageX-s.x,v=t.pageY-s.y,m=u+F,z=v+A,x.css({left:u,top:v}),R.find(".dragging-in").removeClass("dragging-in"),w=!1,C=null;var r,d=0;R.children(":not(.dragging-col)").each(function(){var s=e(this);if(s.hasClass("dragging-col-holder"))return w=!n.sensitive||d<100,!0;var l=s.children(".panel"),h=l.offset(),g=l.width(),p=l.height(),c=h.left,f=h.top;if(n.sensitive)c-=H.left,f-=H.top,r=o(u,v,m,z,c,f,c+g,f+p),r>100&&r>d&&r>a.min(i(u,v,m,z),i(c,f,c+g,f+p))/3&&(d=r,C=s);else{var y=t.pageX,b=t.pageY;if(y>c&&b>f&&y
            ').removeClass("dragging-col").appendTo(R)),h&&D.removeClass(h),D.addClass(h=P.attr("class")),D.insertBefore(P).find(".panel").replaceWith($.clone().addClass("panel-dragging panel-dragging-holder")),t.addClass("dashboard-dragging"),$.addClass("panel-dragging").parent().addClass("dragging-col"),x.css({left:T.left-H.left,top:T.top-H.top,width:F,height:A}).appendTo(t).data("mouseOffset",{x:g.pageX-T.left+H.left,y:g.pageY-T.top+H.top}),s&&(x.addClass("circle"),setTimeout(function(){x.css({left:g.pageX-H.left-d,top:g.pageY-H.top-d,width:r,height:r}).data("mouseOffset",{x:H.left+d,y:H.top+d})},100)),e(document).on("mousemove",p).on("mouseup",f),g.preventDefault()})},r.prototype.handlePanelPadding=function(){this.$.find(".panel-body > table, .panel-body > .list-group").parent().addClass("no-padding")},r.prototype.updatePanelHeight=function(){var t=this,i=t.options.height,n=t.options.minHeight,o={};return t.id&&e.zui.store&&(o=e.zui.store.pageGet("zui.dashboard."+t.id+".sizeConfig",o)),this.$.children(".row").each(function(){var t=e(this),s=t.width(),r=[],d=[],l=0;t.children(":not(.dragging-col-holder)").each(function(){var a=e(this),t=a.width();l+t>s?(d.length&&r.push(d),d=[a],l=t):(l+=t,d.push(a))}),d.length&&r.push(d),r.length&&e.each(r,function(t){d=r[t];var s=0,l=[],h=!1;e.each(d,function(e){var i=d[e].data("row-id",t),r=i.children(".panel:first");if(l.push(r),!h){var g=r.data("newHeight");if(g)r.data("newHeight",null).data("height",g),s=a.max(n,g),h=!0;else{var p=r.data("height")||o[r.data("id")];p&&(s=a.max(s,p))}}}),s||(s=i),e.each(l,function(e){var a=l[e].css("height",s);o[a.data("id")]=a.data("height")})})}),t.id&&e.zui.store&&e.zui.store.pageSet("zui.dashboard."+t.id+".sizeConfig",o),o},r.prototype.handleResizeEvent=function(){var t=this,i=t.options,n=i.resizable,o=i.onResize,r=i.minHeight,d=i.resizeMessage,l=d&&s;t.$.on("mousedown",".resize-handle",function(i){var n=e(this),d=n.hasClass("resize-vertical"),h=n.parent().addClass("resizing").toggleClass("resizing-v",d).toggleClass("resizing-h",!d),g=h.closest(".row"),p=h.children(".panel"),c=i.pageX,f=i.pageY,u=h.width(),v=p.height(),m=g.width(),z=a.round(12*u/m),y=z;d||h.attr("data-grid",z);var C=function(e){if(d)p.css("height",a.max(r,v+(e.pageY-f)));else{var t=e.pageX,i=a.max(1,a.min(12,a.round(12*(u+(t-c))/m)));y!=i&&(h.attr("data-grid",i).css("width",100*i/12+"%"),l&&s[s.isShow?"update":"show"](a.round(100*i/12)+"% ("+i+"/12)"),y=i)}e.preventDefault(),e.stopPropagation()},w=function(i){if(h.removeClass("resizing resizing-v resizing-h"),d){var n=a.max(r,v+(i.pageY-f));if(n!==v){if(e.isFunction(o)){var g=function(){p.css("height",v).data("height",v),t.updatePanelHeight()},c=o({type:"vertical",id:p.data("id"),element:h,old:v,height:n,revert:g});c===!1&&g()}p.css("height",n).data("newHeight",n)}}else{var u=h.attr("data-grid");if(z!=u&&e.isFunction(o)){var g=function(){h.attr("data-grid",z).css("width",null),t.updatePanelHeight()},c=o({type:"horizontal",id:p.data("id"),element:h,old:z,grid:u,revert:g});c===!1?g():c!==!0&&l&&s.show(a.round(100*u/12)+"% ("+u+"/12)")}}t.updatePanelHeight(),e("body").off("mousemove.resize",C).off("mouseup.resize",w),i.preventDefault(),i.stopPropagation()};e("body").on("mousemove.resize",C).on("mouseup.resize",w),i.preventDefault(),i.stopPropagation()});var h=t.$.children(".row").children(":not(.dragging-col-holder)");n!==!0&&"horizontal"!==n||h.append('
            '),n!==!0&&"vertical"!==n||h.append('
            ')},r.prototype.refresh=function(a,i){i===t&&(i=this.options.onlyRefreshBody);var n=this.options.afterRefresh;a=e(a);var o=a.data("url");o&&(a.addClass("panel-loading").find(".panel-heading .icon-refresh,.panel-heading .icon-repeat").addClass("icon-spin"),e.ajax({url:o,dataType:"html"}).done(function(t){var o=e(t);o.hasClass("panel")?a.empty().append(o.children()):i?a.find(".panel-body").empty().html(t):a.html(t),e.isFunction(n)&&n.call(this,{result:!0,data:t,$panel:a})}).fail(function(){a.addClass("panel-error"),e.isFunction(n)&&n.call(this,{result:!1,$panel:a})}).always(function(){a.removeClass("panel-loading"),a.find(".panel-heading .icon-refresh,.panel-heading .icon-repeat").removeClass("icon-spin")}))},r.prototype.init=function(){var a=this.options,i=this;if(i.id=a.id?a.id:i.$.attr("id"),a.data){var n=e('
            ');e.each(a.data,function(a,i){var o=e('
            ');i.colAttrs&&o.attr(i.colAttrs);var s=e('
            ');if(i.panelAttrs&&s.attr(i.panelAttrs),i.height!==t&&s.data("height",i.height),i.content!==t)if(e.isFunction(i.content)){var r=i.content(s);r!==!0&&s.html(r)}else s.html(i.content);n.append(o.append(s.data("url",i.url)))}),i.$.append(n)}i.updatePanelHeight(),i.handlePanelPadding(),i.handleRemoveEvent(),i.handleRefreshEvent(),a.resizable&&i.handleResizeEvent(),i.draggable&&i.handleDraggable();var o=0;i.$.find(".panel").each(function(){var t=e(this);t.data("order",++o),t.attr("id")||t.attr("id","panel"+o),t.attr("data-id")||t.attr("data-id",o),i.refresh(t,a.onlyRefreshBody)}),i.$.find('[data-toggle="tooltip"]').tooltip({container:"body"})},e.fn.dashboard=function(a){return this.each(function(){var t=e(this),i=t.data("zui.dashboard"),n="object"==typeof a&&a;i||t.data("zui.dashboard",i=new r(this,n)),"string"==typeof a&&i[a]()})},e.fn.dashboard.Constructor=r}(jQuery,Math,void 0); \ No newline at end of file diff --git a/root/res/zui/lib/datagrid/zui.datagrid.css b/root/res/zui/lib/datagrid/zui.datagrid.css new file mode 100644 index 0000000..9ae1161 --- /dev/null +++ b/root/res/zui/lib/datagrid/zui.datagrid.css @@ -0,0 +1,272 @@ +/*! + * ZUI: 数据表格② - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +.datagrid-container { + position: relative; + overflow: hidden; + background-color: #f1f1f1; + border: 1px solid #ddd; + } +.datagrid-cells { + position: absolute; + top: 0; + left: 0; + overflow: visible; + } +.datagrid-cell { + position: absolute; + padding: 8px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + background-color: #fff; + border: 1px solid #ddd; + -webkit-transition: .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: .4s cubic-bezier(.175, .885, .32, 1); + transition: .4s cubic-bezier(.175, .885, .32, 1); + -webkit-transition-property: background, outline; + -o-transition-property: background, outline; + transition-property: background, outline; + } +.datagrid-cell.datagrid-cell-index { + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; + color: #808080; + text-align: right; + background-color: #f1f1f1; + } +.datagrid-cell.datagrid-cell-head { + background-color: #f1f1f1; + } +.datagrid-cell-span { + z-index: 10; + } +.datagrid-row { + position: absolute; + width: 100%; + background-color: #fff; + -webkit-transition: .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: .4s cubic-bezier(.175, .885, .32, 1); + transition: .4s cubic-bezier(.175, .885, .32, 1); + -webkit-transition-property: background, outline; + -o-transition-property: background, outline; + transition-property: background, outline; + } +.datagrid-row-head { + font-weight: bold; + color: #808080; + background-color: #f1f1f1; + } +.datagrid-fixed.datagrid-row { + z-index: 35; + } +.datagrid-fixed.datagrid-cell { + z-index: 30; + } +.datagrid-fixed-edge-top { + -webkit-box-shadow: 0 2px 5px 0 rgba(0, 0, 0, .125), 0 1px 0 rgba(0, 0, 0, .25); + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, .125), 0 1px 0 rgba(0, 0, 0, .25); + } +.datagrid-fixed-edge-bottom { + -webkit-box-shadow: 0 -2px 5px 0 rgba(0, 0, 0, .125), 0 -1px 0 rgba(0, 0, 0, .25); + box-shadow: 0 -2px 5px 0 rgba(0, 0, 0, .125), 0 -1px 0 rgba(0, 0, 0, .25); + } +.datagrid-fixed-edge-left { + -webkit-box-shadow: -1px 0 0 rgba(0, 0, 0, .25) inset; + box-shadow: -1px 0 0 rgba(0, 0, 0, .25) inset; + } +.datagrid-fixed-edge-right { + -webkit-box-shadow: 1px 0 0 rgba(0, 0, 0, .25) inset; + box-shadow: 1px 0 0 rgba(0, 0, 0, .25) inset; + } +.datagrid-row-cell.active .datagrid-cell { + background-color: #fff0d5; + } +.datagrid-row-cell.active .datagrid-cell.datagrid-cell-index { + background-color: #ffe7bc; + } +.datagrid-hover-row .datagrid-row-cell:hover { + z-index: 20; + } +.datagrid-hover-row .datagrid-row-cell:hover .datagrid-cell { + background-color: #ebf2f9; + } +.datagrid-hover-row .datagrid-row-cell:hover.datagrid-fixed { + z-index: 38; + } +.datagrid-hover-row .datagrid-row-cell:hover > .datagrid-cell-index { + background-color: #ddd; + } +.datagrid-hover-row .datagrid-row-cell:hover.active .datagrid-cell { + background-color: #ffe1ac; + } +.datagrid-hover-row .datagrid-row-cell:hover.active .datagrid-cell-index { + background-color: #ffda98; + } +.datagrid-hover-row.datagrid-hover-shadow .datagrid-row-cell:hover { + -webkit-box-shadow: 0 1px 3px 2px rgba(0, 0, 0, .05), 0 0 2px 1px rgba(0, 0, 0, .075); + box-shadow: 0 1px 3px 2px rgba(0, 0, 0, .05), 0 0 2px 1px rgba(0, 0, 0, .075); + } +.datagrid-hover-cell .datagrid-row-cell .datagrid-cell-cell:hover { + z-index: 40; + background-color: #fff; + outline: 1px solid #808080; + outline-offset: -1px; + } +.datagrid-hover-cell .datagrid-row-cell .datagrid-cell-cell.datagrid-fixed:hover, +.datagrid-hover-cell .datagrid-row-cell.datagrid-fixed .datagrid-cell-cell:hover { + z-index: 42; + } +.datagrid-hover-cell.datagrid-hover-shadow .datagrid-row-cell .datagrid-cell:hover { + -webkit-box-shadow: 0 1px 3px 3px rgba(0, 0, 0, .075), 0 0 2px rgba(0, 0, 0, .1); + box-shadow: 0 1px 3px 3px rgba(0, 0, 0, .075), 0 0 2px rgba(0, 0, 0, .1); + } +.datagrid-hover-col .datagrid-cell.hover { + background-color: #ebf2f9; + } +.datagrid-hover-col .datagrid-cell-head.hover, +.datagrid-hover-col .datagrid-cell-index.hover { + background-color: #ddd; + } +.datagrid-hover-col .datagrid-row-cell.active .datagrid-cell.hover { + background-color: #d7e5f3; + } +.datagrid-scrollbar { + position: absolute; + right: 0; + bottom: 0; + z-index: 50; + opacity: 0; + -webkit-transition: 2.5s cubic-bezier(.175, .885, .32, 1); + -o-transition: 2.5s cubic-bezier(.175, .885, .32, 1); + transition: 2.5s cubic-bezier(.175, .885, .32, 1); + -webkit-transition-property: background, opacity; + -o-transition-property: background, opacity; + transition-property: background, opacity; + } +.datagrid-scrollbar.scrolling, +.datagrid-container:hover .datagrid-scrollbar { + opacity: 1; + } +.datagrid-scrollbar > .bar { + position: absolute; + min-width: 10px; + background-color: #ddd; + background-color: rgba(0, 0, 0, .25); + } +.datagrid-scrollbar.scrolling, +.datagrid-scrollbar:hover { + background-color: rgba(0, 0, 0, .075); + } +.datagrid-scrollbar.scrolling > .bar, +.datagrid-scrollbar:hover > .bar { + position: absolute; + background-color: #808080; + background-color: rgba(0, 0, 0, .5); + } +.datagrid-scrollbar-h { + left: 0; + height: 10px; + } +.datagrid-scrollbar-h > .bar { + top: 0!important; + bottom: 0!important; + min-width: 20px; + } +.datagrid-scrollbar-v { + top: 0; + width: 10px; + } +.datagrid-scrollbar-v > .bar { + right: 0!important; + left: 0!important; + min-height: 20px; + } +.datagrid-messager { + position: absolute; + top: 0; + right: 0; + left: 0; + z-index: 60; + padding: 5px 10px; + text-align: center; + } +.datagrid-messager > .close { + position: absolute; + top: 0; + right: 0; + display: block; + width: 30px; + height: 30px; + padding-bottom: 5px; + line-height: 20px; + text-align: center; + } +.datagrid-messager > .close:hover { + background-color: rgba(0, 0, 0, .1); + } +.datagrid-loading { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 61; + background-color: rgba(255, 255, 255, .6); + } +.datagrid-loading > .content { + position: relative; + top: 50%; + display: block; + height: 50px; + margin-top: -25px; + text-align: center; + } +.datagrid-loading > .content > .icon { + color: #3280fc; + } +.datagrid-col-sortable { + padding-right: 20px; + cursor: pointer; + } +.datagrid-sorter { + position: absolute; + top: 3px; + right: 0; + bottom: 0; + width: 20px; + line-height: 30px; + text-align: center; + } +.datagrid-sort-down > .icon-sort:before { + color: #3280fc; + content: '\e6b8'; + } +.datagrid-sort-up > .icon-sort:before { + color: #3280fc; + content: '\e6b9'; + } +.datagrid-borderless .datagrid-container { + border-color: transparent; + } +.datagrid-borderless .datagrid-cell { + border-right-color: transparent; + border-left-color: transparent; + } +.datagrid-borderless .datagrid-fixed-edge-left { + -webkit-box-shadow: -1px 0 0 rgba(0, 0, 0, .1) inset; + box-shadow: -1px 0 0 rgba(0, 0, 0, .1) inset; + } +.datagrid-borderless .datagrid-fixed-edge-right { + -webkit-box-shadow: 1px 0 0 rgba(0, 0, 0, .1) inset; + box-shadow: 1px 0 0 rgba(0, 0, 0, .1) inset; + } +.datagrid-borderless .datagrid-row-cell:not(:hover) .datagrid-cell.datagrid-cell-index { + background-color: #fff; + } +.datagrid-striped .datagrid-cells > .datagrid-row-cell:nth-child(odd) .datagrid-cell-cell { + background-color: #f9f9f9; + } diff --git a/root/res/zui/lib/datagrid/zui.datagrid.js b/root/res/zui/lib/datagrid/zui.datagrid.js new file mode 100644 index 0000000..6403d1b --- /dev/null +++ b/root/res/zui/lib/datagrid/zui.datagrid.js @@ -0,0 +1,1825 @@ +/*! + * ZUI: 数据表格② - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +/*! + * jQuery Mousewheel 3.1.13 + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + */ + +(function (factory) { + if ( typeof define === 'function' && define.amd ) { + // AMD. Register as an anonymous module. + define(['jquery'], factory); + } else if (typeof exports === 'object') { + // Node/CommonJS style for Browserify + module.exports = factory; + } else { + // Browser globals + factory(jQuery); + } +}(function ($) { + + var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'], + toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ? + ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'], + slice = Array.prototype.slice, + nullLowestDeltaTimeout, lowestDelta; + + if ( $.event.fixHooks ) { + for ( var i = toFix.length; i; ) { + $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks; + } + } + + var special = $.event.special.mousewheel = { + version: '3.1.12', + + setup: function() { + if ( this.addEventListener ) { + for ( var i = toBind.length; i; ) { + this.addEventListener( toBind[--i], handler, false ); + } + } else { + this.onmousewheel = handler; + } + // Store the line height and page height for this particular element + $.data(this, 'mousewheel-line-height', special.getLineHeight(this)); + $.data(this, 'mousewheel-page-height', special.getPageHeight(this)); + }, + + teardown: function() { + if ( this.removeEventListener ) { + for ( var i = toBind.length; i; ) { + this.removeEventListener( toBind[--i], handler, false ); + } + } else { + this.onmousewheel = null; + } + // Clean up the data we added to the element + $.removeData(this, 'mousewheel-line-height'); + $.removeData(this, 'mousewheel-page-height'); + }, + + getLineHeight: function(elem) { + var $elem = $(elem), + $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent'](); + if (!$parent.length) { + $parent = $('body'); + } + return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16; + }, + + getPageHeight: function(elem) { + return $(elem).height(); + }, + + settings: { + adjustOldDeltas: true, // see shouldAdjustOldDeltas() below + normalizeOffset: true // calls getBoundingClientRect for each event + } + }; + + $.fn.extend({ + mousewheel: function(fn) { + return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel'); + }, + + unmousewheel: function(fn) { + return this.unbind('mousewheel', fn); + } + }); + + + function handler(event) { + var orgEvent = event || window.event, + args = slice.call(arguments, 1), + delta = 0, + deltaX = 0, + deltaY = 0, + absDelta = 0, + offsetX = 0, + offsetY = 0; + event = $.event.fix(orgEvent); + event.type = 'mousewheel'; + + // Old school scrollwheel delta + if ( 'detail' in orgEvent ) { deltaY = orgEvent.detail * -1; } + if ( 'wheelDelta' in orgEvent ) { deltaY = orgEvent.wheelDelta; } + if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY; } + if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; } + + // Firefox < 17 horizontal scrolling related to DOMMouseScroll event + if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) { + deltaX = deltaY * -1; + deltaY = 0; + } + + // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy + delta = deltaY === 0 ? deltaX : deltaY; + + // New school wheel delta (wheel event) + if ( 'deltaY' in orgEvent ) { + deltaY = orgEvent.deltaY * -1; + delta = deltaY; + } + if ( 'deltaX' in orgEvent ) { + deltaX = orgEvent.deltaX; + if ( deltaY === 0 ) { delta = deltaX * -1; } + } + + // No change actually happened, no reason to go any further + if ( deltaY === 0 && deltaX === 0 ) { return; } + + // Need to convert lines and pages to pixels if we aren't already in pixels + // There are three delta modes: + // * deltaMode 0 is by pixels, nothing to do + // * deltaMode 1 is by lines + // * deltaMode 2 is by pages + if ( orgEvent.deltaMode === 1 ) { + var lineHeight = $.data(this, 'mousewheel-line-height'); + delta *= lineHeight; + deltaY *= lineHeight; + deltaX *= lineHeight; + } else if ( orgEvent.deltaMode === 2 ) { + var pageHeight = $.data(this, 'mousewheel-page-height'); + delta *= pageHeight; + deltaY *= pageHeight; + deltaX *= pageHeight; + } + + // Store lowest absolute delta to normalize the delta values + absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) ); + + if ( !lowestDelta || absDelta < lowestDelta ) { + lowestDelta = absDelta; + + // Adjust older deltas if necessary + if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) { + lowestDelta /= 40; + } + } + + // Adjust older deltas if necessary + if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) { + // Divide all the things by 40! + delta /= 40; + deltaX /= 40; + deltaY /= 40; + } + + // Get a whole, normalized value for the deltas + delta = Math[ delta >= 1 ? 'floor' : 'ceil' ](delta / lowestDelta); + deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta); + deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta); + + // Normalise offsetX and offsetY properties + if ( special.settings.normalizeOffset && this.getBoundingClientRect ) { + var boundingRect = this.getBoundingClientRect(); + offsetX = event.clientX - boundingRect.left; + offsetY = event.clientY - boundingRect.top; + } + + // Add information to the event object + event.deltaX = deltaX; + event.deltaY = deltaY; + event.deltaFactor = lowestDelta; + event.offsetX = offsetX; + event.offsetY = offsetY; + // Go ahead and set deltaMode to 0 since we converted to pixels + // Although this is a little odd since we overwrite the deltaX/Y + // properties with normalized deltas. + event.deltaMode = 0; + + // Add event and delta to the front of the arguments + args.unshift(event, delta, deltaX, deltaY); + + // Clearout lowestDelta after sometime to better + // handle multiple device types that give different + // a different lowestDelta + // Ex: trackpad = 3 and mouse wheel = 120 + if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); } + nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200); + + return ($.event.dispatch || $.event.handle).apply(this, args); + } + + function nullLowestDelta() { + lowestDelta = null; + } + + function shouldAdjustOldDeltas(orgEvent, absDelta) { + // If this is an older event and the delta is divisable by 120, + // then we are assuming that the browser is treating this as an + // older mouse wheel event and that we should divide the deltas + // by 40 to try and get a more usable deltaFactor. + // Side note, this actually impacts the reported scroll distance + // in older browsers and can cause scrolling to be slower than native. + // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false. + return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0; + } + +})); + +/* ======================================================================== + * ZUI: datagrid.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function($, undefined) { + 'use strict'; + + var loadDataSourceFromTable = function ($table) { + var cols = []; + $table.find('thead>tr:first>th').each(function(idx) { + var $th = $(this); + cols.push($.extend({ + name: idx, + label: $th.html(), + html: true, + width: $th.outerWidth() + }, $th.data())); + if ($th.attr('colspan') && $th.attr('colspan') !== '1') { + throw new Erorr('Table th element with colspan attribute is not support.'); + } + }); + var data = []; + $table.find('tbody>tr').each(function() { + var $tr = $(this); + var item = {}; + $tr.children('td').each(function(idx) { + item[idx] = $(this).html(); + }); + data.push($.extend(item, $tr.data())); + }); + return { + cols: cols, + array: data, + length: data.length + }; + }; + + // Define the datagrid model name + var NAME = 'zui.datagrid'; + + var DEFAULT_VALUE_OPERATOR = { + date: { + getter: function(dataValue, cell, dataGrid) { + var formater = dataGrid.options.defaultDateFormater; + return Date.create(dataValue).format(formater); + }, + setter: function(inputValue, cell, dataGrid) { + if (typeof inputValue === 'string') { + var intValue = parseInt(inputValue, 10); + if (!isNaN(intValue)) { + inputValue = intValue; + } + } + return Date.timestamp(inputValue); + }, + // sort: function(val1, val2) { + // } + } + }; + + var DEFAULT_CONFIGS = { + }; + + var DEFAULT_PAGER = { + page: 0, // current page index + recTotal: 0, // records total count + recPerPage: 10, // records count per page + }; + + var DEFAULT_STATES = { + // Fixed columns and rows config + fixedLeftUntil: 0, + // fixedRightFrom: 5, + fixedTopUntil: 0, + // fixedBottomFrom: 5, + + order: 'asc', // desc + + sortBy: null, + + pager: DEFAULT_PAGER, + + selections: {} + }; + + var DEFAULT_SEARCH_FUNC = function(item, searchKeyArr) { + var score = 0; + var searchKeyLength = searchKeyArr.length; + var matchKeysCount = 0, matchKeys = {}; + $.each(item, function(key, value) { + var valueType = typeof value; + if (valueType === 'number' || valueType === 'number') { + value += ''; + } else if (valueType !== 'string') { + value = JSON.stringify(valueType); + } + var keyScore = 0; + for(var i = 0; i < searchKeyLength; ++i) { + var search = searchKeyArr[i]; + if (value.includes(search)) { + if (value.startsWith(search)) { + keyScore = 10; + } else { + keyScore = 20; + } + if (!matchKeys[search]) { + matchKeys[search] = 1; + matchKeysCount++; + } + } + } + score += keyScore; + }); + score = matchKeysCount === searchKeyLength ? score : 0; + return score; + }; + + var DEFAULT_SORT_FUNC = function(val1, val2) { + if (val1 == val2) { + return 0; + } else if (val1 < val2) { + return -1; + } + return 1; + }; + + var LANG = { + zh_cn: { + 'errorCannotGetDataFromRemote': '无法从远程服务器({0})获取数据。', + 'errorCannotHandleRemoteData': '无法处理远程服务器返回的数据。' + }, + zh_tw: { + 'errorCannotGetDataFromRemote': '無法從遠程服務器({0})獲取數據。', + 'errorCannotHandleRemoteData': '無法處理遠程服務器返回的數據。' + }, + en: { + 'errorCannotGetDataFromRemote': 'Cannot fetch data from remote server {0}.', + 'errorCannotHandleRemoteData': 'Cannot handle the remote data.' + } + }; + + // The datagrid modal class + var DataGrid = function(element, options) { + var that = this; + var $element = that.$ = $(element); + that.name = NAME; + that.uuid = $.zui.uuid(); + that.id = 'zui-datagrid-' + that.uuid; + options = $.extend({}, DataGrid.DEFAULTS, that.$.data(), options); + + var lang = options.lang || 'zh_cn'; + that.lang = $.isPlainObject(lang) ? ($.extend(true, {}, LANG[lang.lang || $.zui.clientLang()], lang)) : LANG[lang]; + + options.valueOperator = $.extend({}, DEFAULT_VALUE_OPERATOR, options.valueOperator); + options.rowDefaultHeight = options.rowDefaultHeight || 30; + options.headerHeight = options.headerHeight || options.rowDefaultHeight || 30; + that.options = options; + if (typeof options.borderWidth !== 'number') { + options.borderWidth = 1; + } + + // Initialize + if ($element.is('table')) { + options.dataSource = $.extend(loadDataSourceFromTable(that.$), options.dataSource); + $element.hide(); + $element = $('
            ').insertAfter(that.$); + } + + var $container = $element.find('.datagrid-container:first'); + if (!$container.length) { + $container = $('
            ').appendTo($element); + } + $container.css({ + width: options.width, + borderWidth: options.borderWidth + }); + var $document = $(document); + var createScrollbar = function(direction) { + var $scrollbar = $container.find('.datagrid-scrollbar-' + direction); + if (!$scrollbar.length) { + $scrollbar = $('
            ').appendTo($container); + } + var isMouseDown = false; + var lastPos = null; + var eventSuffix = '.scrollbar' + direction + '.' + NAME + '.' + that.uuid; + var startPagePos, startPageOffset, isClickBar, startScrollOffset; + var handleMousePosition = function(e) { + if (!isMouseDown) return; + var pos = e[direction === 'h' ? 'pageX' : 'pageY']; + if (lastPos === pos) { + return; + } + lastPos = pos; + pos = (pos - startPagePos) + startPageOffset; + var scroll = that.layout[direction + 'Scroll']; + var offset; + if (isClickBar) { + offset = (lastPos - startPagePos) + startScrollOffset; + } else { + offset = Math.max(0, Math.min(scroll.space, pos - Math.round(scroll.barSize/2))); + } + if (direction === 'h') { + that.setScrollbarOffset(offset); + } else { + that.setScrollbarOffset(null, offset); + } + }; + $scrollbar.on('mousedown', function(e) { + e.preventDefault(); + isMouseDown = true; + var scroll = that.layout[direction + 'Scroll']; + var degree = direction === 'h' ? 'X' : 'Y'; + startPageOffset = e['offset' + degree]; + startPagePos = e['page' + degree]; + isClickBar = $(e.target).is('.bar'); + startScrollOffset = scroll.offset; + if (isClickBar) { + startPageOffset += startScrollOffset; + } + handleMousePosition(e); + $scrollbar.addClass('scrolling'); + $document.on('mouseup' + eventSuffix, function(e) { + isMouseDown = false; + handleMousePosition(e); + $document.off(eventSuffix); + $scrollbar.removeClass('scrolling'); + }).on('mousemove' + eventSuffix, handleMousePosition); + }); + that['$' + direction + 'Scroll'] = $scrollbar; + that['$' + direction + 'Scrollbar'] = $scrollbar.find('.bar'); + }; + createScrollbar('h'); + createScrollbar('v'); + var mouseWheelFactor = options.mouseWheelFactor; + var isWindows = window.navigator.userAgent.match(/Win/i); + if (isWindows) mouseWheelFactor *= 20; + $container.on('mousewheel', function(event) { + that.scroll(that.layout.scrollLeft - Math.round(event.deltaX * mouseWheelFactor), that.layout.scrollTop - Math.round(event.deltaY * mouseWheelFactor)); + event.preventDefault(); + }); + + that.$container = $container; + + var $cells = $element.find('.datagrid-cells:first'); + if (!$cells.length) { + $cells = $('
            ').appendTo($container); + } + $cells.toggleClass('datagrid-hover-cell', !!options.hoverCell) + .toggleClass('datagrid-hover-row', !!options.hoverRow) + .toggleClass('datagrid-hover-col', !!options.hoverCol) + .toggleClass('datagrid-hover-shadow', !!options.hoverCol); + that.$cells = $cells; + + // configs is an object + that.isFuncConfigs = $.isFunction(options.configs); + that.configs = that.isFuncConfigs ? options.configs : $.extend({}, DEFAULT_CONFIGS, options.configs); + + that.layout = {scrollLeft: 0, scrollTop: 0}; + that.configsCache = {}; + that.userConfigs = {}; + + // states is 2D arrays + that.states = $.extend(true, {}, DEFAULT_STATES, options.states); + that.cells = []; + that.setPager(that.states.pager); + + that.setDataSource(options.dataSource); + + that.render(true); + + if (options.responsive) { + var lastContainerWidth = $container.width(); + $container.on('resize', function() { + that.layout.cols = null; + that.render(); + }); + } + + if (options.hoverCol) { + $cells.on('mouseenter', '.datagrid-cell-head', function() { + var $headCol = $(this); + var colIndex = $headCol.data('col'); + that.$cells.find('.datagrid-cell.hover').removeClass('hover'); + that.$cells.find('.datagrid-cell[data-col="' + colIndex + '"]').addClass('hover'); + }).on('mouseleave', '.datagrid-cell-head.hover', function() { + that.$cells.find('.datagrid-cell.hover').removeClass('hover'); + }); + } + + if (options.sortable) { + $cells.on('click', '.datagrid-col-sortable', function() { + var colIndex = $(this).data('col'); + var col = that.getColConfig(colIndex); + var sortBy = that.states.sortBy; + var order = that.states.order; + if (sortBy !== col.name) { + sortBy = col.name; + order = 'desc'; + } else if (order === 'desc') { + order = 'asc'; + } else if (order === 'asc') { + sortBy = ''; + } + that.sortBy(sortBy, order); + }); + } + + if (options.checkable) { + if (options.selectable && $.fn.selectable) { + that.selectable = $cells.selectable($.extend({ + selector: '.datagrid-row-cell', + // selectClass: false, + trigger: options.checkByClickRow ? null : '.datagrid-row-cell .datagrid-has-checkbox', + clickBehavior: 'multi', + select: function(data) { + that.checkRow(data.id, true); + }, + unselect: function(data) { + that.checkRow(data.id, false); + } + }, $.isPlainObject(options.selectable) ? options.selectable : null)).data('zui.selectable'); + $cells.on('click', '.datagrid-cell-head.datagrid-has-checkbox', function() { + that.checkRow($(this).data('row')); + that.selectable.syncSelectionsFromClass(); + }); + } else { + $cells.on('click', options.checkByClickRow ? '.datagrid-row' : '.datagrid-has-checkbox', function(e) { + var rowIndex = $(this).data('row'); + if (rowIndex || $(e.target).closest('.datagrid-has-checkbox').length) { + that.checkRow(rowIndex); + } + }); + } + } + + // Init pager + if ($.fn.pager) { + var $pager = that.$.find('.pager'); + if ($pager.length) { + that.pagerObj = $pager.pager($.extend({}, that.pager, { + onPageChange: function(pageInfo) { + that.setPager(pageInfo).render(); + } + })).data('zui.pager'); + } + } + + // Init searchbox + if ($.fn.searchBox) { + var $searchBox = that.$.find('.search-box'); + if($searchBox) { + that.searchbox = $searchBox.searchBox({ + onSearchChange: function (searchString) { + that.search(searchString); + } + }); + } + } + }; + + DataGrid.prototype.setPager = function(page, recTotal, recPerPage) { + var that = this; + if (typeof page === 'object') { + recPerPage = page.recPerPage; + recTotal = page.recTotal; + page = page.page; + } + var pager = that.pager; + var oldPager = $.extend({}, pager); + if (!pager) { + pager = $.extend({}, DEFAULT_PAGER); + } + if (typeof recPerPage === 'number' && recPerPage > 0) { + pager.recPerPage = recPerPage; + } + if (typeof recTotal === 'number' && recTotal >= 0) { + pager.recTotal = recTotal; + } + if (typeof page === 'number' && page >= 0) { + pager.page = page; + } + pager.totalPage = (pager.recTotal && pager.recPerPage) ? (Math.ceil(pager.recTotal / pager.recPerPage)) : 1; + pager.page = Math.max(0, Math.min(pager.page, pager.totalPage)); + // pagerRecCount is items count in current page + pager.pageRecCount = pager.recTotal; + if (pager.page && pager.recTotal) { + if (pager.page < pager.totalPage) { + pager.pageRecCount = pager.recPerPage; + } else if (pager.page > 1) { + pager.pageRecCount = pager.recTotal - (pager.recPerPage * (pager.page - 1)); + } + } + pager.skip = pager.page > 1 ? ((pager.page - 1) * pager.recPerPage) : 0; + pager.end = pager.skip + pager.pageRecCount; + that.pager = pager; + + if (oldPager.page !== pager.page || oldPager.recTotal !== pager.recTotal || oldPager.recPerPage !== pager.recPerPage) { + that.layout.cols = null; + that.scroll(0, 0); + } + return that; + }; + + DataGrid.prototype.goToPage = function(page) { + return this.setPager(page).render(); + }; + + DataGrid.prototype.setSearch = function(searchStr) { + if (searchStr === undefined || searchStr === null) { + searchStr = ''; + } + this.states.search = $.trim(searchStr); + return this; + }; + + DataGrid.prototype.search = function(searchStr) { + var that = this; + if (searchStr !== that.states.search && that.pager.page) { + that.setPager(1); + } + return that.setSearch(searchStr).render(); + }; + + DataGrid.prototype.setSorter = function(sortBy, order) { + var that = this; + if (order === undefined) { + order = that.states.order === 'desc' ? 'asc' : 'desc'; + } + that.states.order = order.toLowerCase(); + that.states.sortBy = sortBy; + return that; + }; + + DataGrid.prototype.sortBy = function(sortBy, order) { + return this.setSorter(sortBy, order).render(); + }; + + DataGrid.prototype.setDataSource = function(data, cols) { + var that = this; + var dataSource = {}; + var oldcols = that.dataSource && that.dataSource.cols; + if ($.isArray(data)) { + dataSource.array = data; + dataSource.length = data.length; + that.setPager('', data.length); + } else if ($.isPlainObject(data)) { + dataSource = $.extend(dataSource, data); + } else if (typeof data === 'string') { + dataSource.remote = data; + } + if (dataSource.cache === true || dataSource.cache === undefined) { + dataSource.cache = []; + dataSource.cacheSize = 1; + } else if (typeof dataSource.cache === 'number') { + dataSource.cacheSize = dataSource.cache; + dataSource.cache = []; + } + if ($.isArray(dataSource.data)) { + dataSource.array = dataSource.data; + dataSource.length = dataSource.array.length; + that.setPager('', dataSource.length); + delete dataSource.data; + } else if (!dataSource.data && $.isFunction(dataSource.getByIndex)) { + that.setPager('', dataSource.length); + } + that.dataSource = dataSource; + + cols = cols || dataSource.cols || oldcols || []; + if (cols.length) { + for (var i = 0; i < cols.length; ++i) { + var col = cols[i]; + if (typeof col === 'string') { + cols[i] = {name: col}; + } + } + } + if (cols !== oldcols) { + that.layout.cols = null; + } + dataSource.cols = cols; + }; + + DataGrid.prototype.filterData = function(arr, filter) { + var that = this; + var result = arr; + var hasSearchScore = null; + if (filter.search) { + var searchKeyArr = filter.search.replace(/\s{2,}/g, ' ').split(' '); + result = []; + var searchFunc = that.options.searchFunc || DEFAULT_SEARCH_FUNC; + for (var i = 0; i < arr.length; ++i) { + var item = arr[i]; + var score = searchFunc(item, searchKeyArr, i, filter, that); + if (score) { + if (hasSearchScore === null) { + hasSearchScore = typeof score === 'number'; + } + if (hasSearchScore) { + item._SCORE = score; + } + result.push(item); + } + } + } + + that.setPager(-1, result.length); + + if (result.length) { + var sortBy = filter.sortBy || (hasSearchScore ? '_SCORE' : false); + if (sortBy) { + var order = sortBy === '_SCORE' ? 'DESC' : filter.order; + var colConfig = that.getColConfigByName(sortBy); + var isDESC = order === 'desc'; + var sortFunc = (colConfig && colConfig.sortFunc) || that.options.sortFunc || DEFAULT_SORT_FUNC; + result.sort(function(item1, item2) { + var sortResult = sortFunc(item1[sortBy], item2[sortBy], item1, item2, sortBy, that); + return isDESC ? ((-1) * sortResult) : sortResult; + }); + } + + var pager = that.pager; + if (pager.page) { + var start = pager.page > 1 ? (pager.page * pager.recPerPage) : 0; + result = result.slice(pager.skip, pager.end); + } + } + + return result; + }; + + DataGrid.prototype.getFilterParams = function() { + var that = this; + var states = that.states; + return { + page: that.pager.page, + recPerPage: that.pager.recPerPage, + search: states.search, + sortBy: states.sortBy, + order: states.order + }; + }; + + DataGrid.prototype.loadData = function(callback) { + var that = this; + that.loadingId = $.zui.uuid(); + + var afterLoad = function(result) { + that.$.callComEvent(that, 'onLoad', result); + return callback && callback(result); + }; + + var params = that.getFilterParams(); + var dataId = [params.page, params.recPerPage, params.search, params.sortBy, params.order].join('&'); + var data = that.getData(dataId); + + if (data) { + return afterLoad(data); + } + var dataSource = that.dataSource; + if (dataSource.array) { + data = that.filterData(dataSource.array, params); + that.resetData(dataId, data, that.pager); + return afterLoad(data); + } else if (dataSource.getByIndex) { + data = dataSource.getByIndex; + that.resetData(dataId, data); + return afterLoad(data); + } else { + var loadData = dataSource.loader; + var remote = dataSource.remote; + if (!loadData && remote) { + loadData = function(params, onFinish) { + var ajaxOptions = $.isFunction(remote) ? remote(params, that) : {url: remote}; + $.ajax($.extend({ + type: 'GET', + data: params, + dataType: 'json', + success: function(responseData, textStatus, jqXHR) { + if (dataSource.remoteConverter) { + responseData = dataSource.remoteConverter(responseData, textStatus, jqXHR, that); + } + if (typeof responseData === 'string') { + responseData = $.parseJSON(responseData); + } + if ($.isPlainObject(responseData) && responseData.data) { + var result = responseData.result || responseData.status; + if (result === 'success' || result === 'ok' || result === 200) { + onFinish(responseData); + } else { + onFinish(false, responseData.message || responseData.reason || that.lang['errorCannotHandleRemoteData'], responseData); + } + } else { + onFinish(false, that.lang['errorCannotHandleRemoteData'], responseData); + } + }, + error: function() { + onFinish(false, that.lang['errorCannotGetDataFromRemote'].format(dataSource.remote)); + }, + }, ajaxOptions)); + }; + } + if (loadData) { + that.renderLoading(true); + var loadingId = that.loadingId; + loadData(params, function(resultData, error) { + if (loadingId !== that.loadingId) { + return; + } + that.renderLoading(false); + if (error) { + that.showMessage(error, 'danger'); + afterLoad(false); + return; + } + that.resetData(dataId, resultData.data, resultData.pager); + afterLoad(resultData.data); + }); + } else { + return afterLoad(false); + } + } + }; + + DataGrid.prototype.getDataItem = function(index, data, filterParams) { + var that = this; + data = data || that.getData(); + if (typeof data === 'function') { + filterParams = filterParams || that.getFilterParams(); + return data(index, filterParams); + } + return data[index]; + }; + + DataGrid.prototype.showMessage = function(message, type, autoCloseTime) { + var that = this; + if (that.msgerAutoCloseTimer) { + clearTimeout(that.msgerAutoCloseTimer); + that.msgerAutoCloseTimer = null; + } + var $messager = that.$container.find('.datagrid-messager'); + if (!message) { + $messager.slideUp(); + return; + } + type = type || 'info'; + if (autoCloseTime === undefined) { + autoCloseTime = 5000; + } + if (!$messager.length) { + $messager = $('').appendTo(that.$container).on('click', '.close', function() { + $messager.slideUp(); + if (that.msgerAutoCloseTimer) { + clearTimeout(that.msgerAutoCloseTimer); + that.msgerAutoCloseTimer = null; + } + }); + } + $messager.attr('class', 'datagrid-messager bg-' + type).find('.content').text(message); + $messager.slideDown(); + if (autoCloseTime) { + that.msgerAutoCloseTimer = setTimeout(function() { + $messager.slideUp(); + that.msgerAutoCloseTimer = null; + }, autoCloseTime); + } + }; + + DataGrid.prototype.renderLoading = function(loading) { + var that = this; + if (loading !== undefined) { + that.states.loading = loading; + } + var $loading = that.$container.find('.datagrid-loading'); + if (loading) { + if (!$loading.length) { + $loading = $('').appendTo(that.$container); + } + $loading.find('.datagrid-loading-message').text((typeof loading === 'string') ? loading : ''); + $loading.fadeIn(); + } else { + $loading.fadeOut(); + } + }; + + DataGrid.prototype.getData = function(dataId) { + var dataSource = this.dataSource; + var data = null; + if (dataId && dataId !== dataSource.dataId) { + if (dataSource.cache && dataSource.cache.length) { + for (var i = dataSource.cache.length - 1; i >= 0; --i) { + var dataCache = dataSource.cache[i]; + if (dataCache.id === dataId) { + dataSource.dataId = dataId; + dataSource.data = dataCache.data; + this.setPager(dataCache.pager); + data = dataCache.data; + break; + } + } + } + } else { + data = dataSource.data; + } + return data; + }; + + DataGrid.prototype.resetData = function(dataId, data, pager) { + var dataSource = this.dataSource; + dataSource.dataId = dataId; + dataSource.data = data; + if (dataSource.cache) { + for (var i = dataSource.cache.length - 1; i > 0; --i) { + var dataCache = dataSource.cache[i]; + if (dataCache.id === dataId) { + dataSource.cache.splice(i, 1); + break; + } + } + dataSource.cache.push({ + id: dataId, + data: data, + pager: $.extend({}, pager) + }); + while (dataSource.cache.length > dataSource.cacheSize) { + dataSource.cache.shift(); + } + } + if (pager) { + this.setPager(pager); + } + }; + + DataGrid.prototype.getRowLayout = function(rowIndex) { + var layout = this.layout; + if (rowIndex === 0) { + return { + top: 0, + height: layout.headerHeight + }; + } + var rowHeight = layout.rowHeight; + return { + height: rowHeight, + top: layout.headerHeight + (rowIndex > 1 ? ((rowIndex - 1) * rowHeight) : 0) + rowIndex * layout.borderWidth + }; + }; + + DataGrid.prototype.updateLayout = function() { + var that = this; + var options = that.options; + var layout = that.layout; + var data = that.data; + var pager = that.pager; + var dataLength = pager.pageRecCount; + var $container = that.$container; + var containerWidth = $container.width(); + var dataSource = that.dataSource; + + if (!dataSource.cols.length && dataLength) { + $.each(that.getDataItem(0), function(name) { + dataSource.cols.push({ + name: name + }); + }); + } + + // Caculate cols layout + if (!layout.cols) { + var cols = dataSource.cols; + var colAutoMinWidth = options.colAutoMinWidth; + var colAutoDefaultWidth = options.colAutoDefaultWidth; + var growTotal = 0; + var minGrowWidth = 0; + var rowIndexWidth = options.rowIndexWidth; + var colsLayout = [{ + left: 0, + width: options.showRowIndex ? (rowIndexWidth === 'auto' ? ((dataLength + that.pager.skip + '').length * 8 + 18) : rowIndexWidth) : 0 + }]; + var cellsTotalWidth = 0; + var fixedWidth = colsLayout[0].width; + var lastGrowColIndex = false; + var lastMaxGrow = 0; + var checkBoxColIndex = 0; + var colLayout, colWidth; + + for (var i = 0; i < cols.length; ++i) { + var col = cols[i]; + if (!col) continue; + colWidth = col.width; + if (!colWidth || colWidth === 'auto') { + colWidth = 0.1; + } + colLayout = {left: 0}; + if (colWidth >= 1) { + if (col.minWidth !== undefined) { + colWidth = Math.max(colWidth, col.minWidth); + } + colLayout.width = colWidth; + fixedWidth += colWidth; + } else { + if (col.minWidth === undefined) { + col.minWidth = colAutoMinWidth; + } + colLayout.grow = colWidth; + growTotal += colWidth; + minGrowWidth += col.minWidth; + if (lastMaxGrow <= colLayout.grow) { + lastMaxGrow = colLayout.grow; + lastGrowColIndex = i + 1; + } + } + colLayout.minWidth = col.minWidth; + if (!checkBoxColIndex && col.checkbox) { + checkBoxColIndex = i + 1; + colLayout.checkbox = true; + } + colsLayout.push(colLayout); + } + if (options.checkable && !checkBoxColIndex) { + colsLayout[0].checkbox = true; + if (rowIndexWidth === 'auto') { + colsLayout[0].width += 30; + fixedWidth += 30; + } + } + var flexWidth = containerWidth - fixedWidth; + var autoOverflow = flexWidth < minGrowWidth; + var colsLenght = colsLayout.length; + for (var j = 0; j < colsLenght; ++j) { + colLayout = colsLayout[j]; + colWidth = colLayout.width; + if (!colWidth && colWidth !== 0) { + if (autoOverflow) { + colWidth = colAutoDefaultWidth * colLayout.grow * 10; + } else { + colWidth = flexWidth * colLayout.grow / growTotal; + } + colWidth = Math.floor(Math.max(colLayout.minWidth, colWidth)); + colLayout.width = colWidth; + } + if (j > 0) { + var lastColLayout = colsLayout[j - 1]; + colLayout.left = lastColLayout.left + lastColLayout.width; + } + cellsTotalWidth += colWidth; + } + + var extraGap = containerWidth - cellsTotalWidth; + if (lastGrowColIndex && extraGap > 0) { + colsLayout[lastGrowColIndex].width += extraGap; + cellsTotalWidth += extraGap; + } + layout.width = cellsTotalWidth; + layout.cols = colsLayout; + } + + layout.containerWidth = containerWidth; + layout.rowHeight = options.rowDefaultHeight; + layout.borderWidth = options.borderWidth; + layout.headerHeight = options.showHeader ? (options.headerHeight) : 0; + layout.rowsLength = dataLength + 1; + layout.colsLength = layout.cols.length; + layout.height = layout.headerHeight + dataLength * (layout.rowHeight + layout.borderWidth); + layout.spanMap = {}; + + var containerHeight = options.height; + if (containerHeight === 'page') { + containerHeight = layout.headerHeight + that.pager.recPerPage * (layout.rowHeight + layout.borderWidth); + } + $container.css('height', containerHeight); + layout.containerHeight = containerHeight; + + layout.vScrollSpare = layout.height - layout.containerHeight; + layout.hScrollSpare = layout.width - layout.containerWidth; + + that.layout = layout; + + var partialRendering = pager.page ? true : options.partialRendering; + if (partialRendering === 'auto') { + partialRendering = layout.height > (2 * layout.containerHeight); + } + layout.partialRendering = partialRendering; + return layout; + }; + + DataGrid.prototype.getCell = function(rowIndex, colIndex) { + var that = this; + var config = that.getCellConfig(rowIndex, colIndex); + var col = colIndex > 0 ? that.dataSource.cols[colIndex - 1] : null; + var type, value; + var cell = { + rowIndex: rowIndex, + colIndex: colIndex, + config: config, + checked: that.isRowChecked(config.rowId) + }; + if (colIndex === 0) { + type = 'index'; + var colLabel = rowIndex > 0 ? (that.pager.skip + rowIndex) : ''; + value = config.label !== undefined ? config.label : colLabel; + } else if (rowIndex === 0) { + type = 'head'; + value = config.label !== undefined ? config.label : (config.name !== undefined ? config.name : colIndex); + } else { + type = 'cell'; + value = config.data && config.data[that.options.dataItemIsArray ? colIndex : col.name]; + } + if (rowIndex > 0) { + var optionsValueOperator = that.options.valueOperator; + var valueType = config.valueType; + var valueOperator = config.valueOperator || (optionsValueOperator && valueType ? optionsValueOperator[valueType] : null); + if (valueOperator && valueOperator.getter) { + value = valueOperator.getter(value, cell, that); + } + } + cell.value = value; + cell.type = type; + var spanMap = that.layout.spanMap; + if (spanMap[config.id] || config.hidden) { + cell.hidden = true; + } else if ((config.colspan && config.colspan > 1) || (config.rowspan && config.rowspan > 1)) { + var rowSpanEnd = rowIndex + (config.rowspan || 1); + var colSpanEnd = colIndex + (config.colspan || 1); + for (var r = rowIndex; r < rowSpanEnd; ++r) { + for (var c = colIndex; c < colSpanEnd; ++c) { + if (r !== rowIndex || c !== colIndex) { + spanMap['R' + r + 'C' + c] = config.id; + } + } + } + config.span = true; + } + return cell; + }; + + DataGrid.prototype.getRowConfig = function(rowIndex) { + var that = this; + var rowId = 'R' + rowIndex; + var config = that.configsCache[rowId]; + if (!config) { + config = $.extend({ + // height: 'auto' + // fixed: false + }, that.isFuncConfigs ? that.configs(rowId) : that.configs[rowId], that.userConfigs[rowId]); + that.configsCache[rowId] = config; + } + var dataItem = rowIndex > 0 ? that.getDataItem(rowIndex - 1) : null; + config.data = dataItem; + var rowId = dataItem && (dataItem.rowId || dataItem.id); + config.rowId = rowId !== undefined ? rowId : (rowIndex === 0 ? '#header' : rowIndex); + return config; + }; + + DataGrid.prototype.getColConfigByName = function(colName) { + var cols = this.dataSource.cols; + for (var i = 0; i < cols.length; ++i) { + if (cols[i].name === colName) { + return this.getColConfig(i + 1); + } + } + return null; + }; + + DataGrid.prototype.getColConfig = function(colIndex) { + var that = this; + var colId = 'C' + colIndex; + // var config = that.configsCache[colId]; + var config = null; + if (!config) { + config = $.extend( + { + // html: false, + // style: null, + // className: '', + // valueOperator: null, + // sortFunc + valueType: 'string' + }, + colIndex > 0 ? that.dataSource.cols[colIndex - 1] : null, + that.layout.cols ? that.layout.cols[colIndex] : null, + that.isFuncConfigs ? that.configs(colId) : that.configs[colId], + that.userConfigs[colId] + ); + // that.configsCache[colId] = config; + } + return config; + }; + + DataGrid.prototype.getCellConfig = function(rowIndex, colIndex) { + var that = this; + var cellId = 'R' + rowIndex + 'C' + colIndex; + // var config = that.configsCache[cellId]; + var config = null; + if (!config) { + config = $.extend( + {id: cellId}, + that.getColConfig(colIndex), + that.getRowConfig(rowIndex), + that.isFuncConfigs ? that.configs(cellId) : that.configs[cellId], + that.userConfigs[cellId] + ); + // that.configsCache[cellId] = config; + } + return config; + }; + + DataGrid.prototype.isRowChecked = function(rowId) { + return !!this.states.selections[rowId]; + }; + + DataGrid.prototype.checkRow = function(rowIndex, checked) { + var that = this; + var selections = that.states.selections; + var rowConfig = that.getRowConfig(rowIndex); + var rowId = rowConfig.rowId; + if (checked === undefined) { + checked = !selections[rowId]; + } + if (selections[rowId] === checked) { + return; + } + if (checked) { + selections[rowId] = rowConfig; + } else { + delete selections[rowId]; + if (rowIndex > 0 && selections['#header']) { + delete selections['#header']; + that.renderRow(0); + } + } + that.renderRow(rowIndex); + if (rowIndex === 0 && that.layout.rowsLength < 500) { + for (var i = 1; i < that.layout.rowsLength; ++i) { + that.checkRow(i, checked); + } + } + that.renderFixeds(); + return checked; + }; + + DataGrid.prototype.getCheckItems = function() { + var selections = this.states.selections; + var items = []; + selections && $.each(selections, function(rowId) { + items.push(selections[rowId].data); + }); + return items; + }; + + DataGrid.prototype.renderCell = function(rowIndex, colIndex, $row) { + var that = this; + var options = that.options; + var cell = that.getCell(rowIndex, colIndex); + var config = cell.config; + + if (cell.hidden) { + return; + } + + var isCheckbox = config.checkbox; + var elementId = [that.id, 'cell', rowIndex, colIndex].join('-'); + var $cell = $('#' + elementId); + if (!$cell.length) { + $row = $row || $('#' + that.id + '-row-' + rowIndex); + $cell = (options.cellCreator ? options.cellCreator(cell, that) : $('
            ')).appendTo($row); + $cell.attr({ + id: elementId, + 'data-type': cell.type, + 'data-col': cell.colIndex, + 'data-row': cell.rowIndex + }).toggleClass('datagrid-cell-head', rowIndex === 0) + .toggleClass('datagrid-cell-cell', cell.type === 'cell') + .toggleClass('datagrid-cell-index', colIndex === 0); + + if (isCheckbox) { + var $checkbox = $cell.find('.datagrid-checkbox'); + if (!$checkbox.length) { + $checkbox = $('
            ').prependTo($cell.addClass('datagrid-has-checkbox')); + } + $cell.append(''); + } + } + + // Caculate cell style + var borderWidth = options.borderWidth; + var layout = that.layout; + var colsLength = layout.colsLength; + var cellBoundsStyle = { + top: borderWidth ? -borderWidth : 0, + bottom: borderWidth ? -borderWidth : 0, + left: borderWidth ? (config.left - borderWidth) : config.left, + width: borderWidth ? (config.width + ((colsLength - 1) === colIndex ? 2 : 1) * borderWidth) : config.width, + borderWidth: borderWidth + }; + if (config.span) { + if (config.rowspan && config.rowspan > 1) { + cellBoundsStyle.bottom -= (config.rowspan - 1) * (layout.rowHeight + borderWidth); + } + if (config.colspan && config.colspan > 1) { + var colspanEnd = colIndex + config.colspan; + for (var i = colIndex + 1; i < colspanEnd; ++i) { + var theSpanCell = that.getCell(rowIndex, i); + cellBoundsStyle.width += theSpanCell.config.width; + } + } + } + var configStyle = config.style; + if ($.isFunction(configStyle)) { + configStyle = configStyle(cell, cellBoundsStyle, that); + } + var style = $.extend({}, configStyle, cellBoundsStyle); + $cell.css(style).toggleClass('datagrid-cell-span', !!config.span); + + if (options.cellFormator) { + options.cellFormator($cell, cell, that); + } else { + var $content = isCheckbox ? $cell.find('.content') : $cell; + $content[cell.config.html ? 'html' : 'text'](cell.value); + if (config.className) { + $cell.addClass(config.className); + } + } + + if (colIndex > 0 && rowIndex === 0 && options.sortable && config.sort !== false) { + var sorted = false; + if (config.name === that.states.sortBy) { + sorted = that.states.order === 'desc' ? 'down' : 'up'; + } + var $sorter = $cell.find('.datagrid-sorter'); + if (!$sorter.length) { + $sorter = $('
            ').appendTo($cell); + $cell.addClass('datagrid-col-sortable'); + } + $sorter.toggleClass('datagrid-sort-up', sorted === 'up') + .toggleClass('datagrid-sort-down', sorted === 'down'); + } + + if (isCheckbox) { + $cell.find('.datagrid-checkbox').toggleClass('checked', cell.checked); + $row.toggleClass('active', cell.checked); + } + return $cell; + }; + + DataGrid.prototype.renderRow = function(rowIndex) { + var that = this; + var layout = that.layout; + var options = that.options; + var rowLayout = that.getRowLayout(rowIndex); + var colsLength = layout.colsLength; + var elementId = that.id + '-row-' + rowIndex; + var $row = $('#' + elementId); + if (!$row.length) { + $row = (options.rowCreator ? options.rowCreator(rowIndex, that) : $('
            ')).appendTo(that.$cells); + $row.attr({ + id: elementId, + 'data-row': rowIndex, + 'data-id': rowIndex + }).css({ + top: layout.partialRendering ? (rowLayout.top - layout.scrollTop) : rowLayout.top, + height: rowLayout.height + }).toggleClass('datagrid-row-head', rowIndex === 0) + .toggleClass('datagrid-row-cell', rowIndex !== 0); + } else if(layout.partialRendering) { + $row.css('top', rowLayout.top - layout.scrollTop); + } + for (var i = 0; i < colsLength; ++i) { + that.renderCell(rowIndex, i, $row); + } + return $row; + }; + + DataGrid.prototype.renderData = function() { + var that = this; + var layout = that.layout; + + if (!layout.cols) { + that.updateLayout(); + } + + var startRenderRow = 1; + var endRenderRow = layout.rowsLength - 1; + if (layout.partialRendering) { + var rowHeight = layout.rowHeight + layout.borderWidth; + startRenderRow = Math.min(endRenderRow, Math.max(1, Math.floor((layout.scrollTop - layout.headerHeight)/rowHeight))); + endRenderRow = Math.min(endRenderRow, Math.max(1, Math.ceil((layout.scrollTop + layout.containerHeight - layout.headerHeight)/rowHeight))); + that.$cells.find('.datagrid-row').each(function() { + var $row = $(this); + var rowIndex = $row.data('row'); + if (rowIndex > 0 && !$row.hasClass('datagrid-fixed') && (rowIndex < startRenderRow || rowIndex > endRenderRow)) { + $row.remove(); + } + }); + } + + // Render header + if (that.options.showHeader) { + that.renderRow(0); + } + + for (var i = startRenderRow; i <= endRenderRow; ++i) { + that.renderRow(i); + } + + if (layout.vScrollSpare) { + var states = that.states; + var fixedTopUntil = states.fixedTopUntil; + var fixedBottomFrom = states.fixedBottomFrom; + if (typeof fixedTopUntil === 'number' && fixedTopUntil > 0 && fixedTopUntil < startRenderRow) { + for (var i = 1; i <= fixedTopUntil; ++i) { + that.renderRow(i); + } + } + if (typeof fixedBottomFrom === 'number' && fixedBottomFrom > 0 && fixedBottomFrom > endRenderRow) { + for (var i = fixedBottomFrom; i <= (layout.rowsLength - 1); ++i) { + that.renderRow(i); + } + } + } + + if (that.pagerObj) { + that.pagerObj.set(that.pager); + } + }; + + DataGrid.prototype.render = function(ignoreDelay) { + var that = this; + var options = that.options; + + if (!ignoreDelay && options.renderDelay) { + if (that.renderDelayTimer) { + clearTimeout(that.renderDelayTimer); + } + that.renderDelayTimer = setTimeout(function() { + that.render(true); + }, options.renderDelay); + return that; + } + + if (that.renderDelayTimer) { + clearTimeout(that.renderDelayTimer); + that.renderDelayTimer = null; + } + + that.loadData(function(data) { + var layout = that.updateLayout(); + + that.$cells.css({ + width: layout.width, + height: layout.partialRendering ? layout.containerHeight : that.layout.height + }); + + // Render rows + that.renderData(); + + // Render scrollbars + that.renderScrolls(); + + that.renderFixeds(); + + that.$.callComEvent(that, 'onRender'); + }); + + return that; + }; + + DataGrid.prototype.setScrollbarOffset = function(offsetX, offsetY) { + var that = this; + var layout = that.layout; + var scrollLeft = layout.scrollLeft; + var scrollTop = layout.scrollTop; + if (typeof offsetX === 'number') { + var hScroll = layout.hScroll; + if (hScroll.offset !== offsetX) { + scrollLeft = Math.round(offsetX * layout.hScrollSpare / hScroll.space); + } + } + if (typeof offsetY === 'number') { + var vScroll = layout.vScroll; + if (vScroll.offset !== offsetY) { + scrollTop = Math.round(offsetY * layout.vScrollSpare / vScroll.space); + } + } + that.scroll(scrollLeft, scrollTop); + }; + + DataGrid.prototype.renderScrolls = function() { + var that = this; + var layout = that.layout; + var vSize = layout.vScrollSpare; + var hSize = layout.hScrollSpare; + var showVBar = vSize > 0; + var showHBar = hSize > 0; + that.$vScroll.toggle(showVBar); + that.$hScroll.toggle(showHBar); + layout.scrollLeft = showHBar ? Math.max(0, Math.min(hSize, layout.scrollLeft)) : 0; + layout.scrollTop = showVBar ? Math.max(0, Math.min(vSize, layout.scrollTop)) : 0; + if (showVBar) { + var $bar = that.$vScrollbar; + var scale = layout.containerHeight / layout.height; + var barSize = Math.max(20, Math.floor(scale * layout.containerHeight)); + var scrollSpace = layout.containerHeight - barSize; + var scrollScale = scrollSpace / vSize; + var offset = Math.round(layout.scrollTop * scrollScale); + layout.vScroll = { + space: scrollSpace, + size: vSize, + scale: scrollScale, + barSize: barSize, + offset: offset + }; + var barStyle = { + height: barSize, + top: offset + }; + $bar.css(barStyle); + } + if (showHBar) { + var $bar = that.$hScrollbar; + var scale = layout.containerWidth / layout.width; + var barSize = Math.max(20, Math.floor(scale * layout.containerWidth)); + var scrollSpace = layout.containerWidth - barSize; + var offset = Math.round(layout.scrollLeft * scrollSpace / hSize); + var barStyle = { + width: barSize, + left: offset + }; + layout.hScroll = { + offset: offset, + space: scrollSpace, + size: hSize, + barSize: barSize + }; + $bar.css(barStyle); + } + that.$cells.css({ + top: layout.partialRendering ? 0 : -layout.scrollTop, + left: -layout.scrollLeft + }); + }; + + DataGrid.prototype.scroll = function(scrollLeft, scrollTop, ignoreDelay) { + var that = this; + var now = new Date(); + var scrollDelay = that.options.scrollDelay; + if (scrollDelay) { + if (!ignoreDelay && that.lastScrollTime && (now - that.lastScrollTime) < scrollDelay) { + if (that.scrollDelayTimer) { + clearTimeout(that.scrollDelayTimer); + } + that.scrollDelayTimer = setTimeout(function() { + that.scroll(scrollLeft, scrollTop); + }, (scrollDelay - ((now - that.lastScrollTime)))); + + return; + } + if (that.scrollDelayTimer) { + clearTimeout(that.scrollDelayTimer); + that.scrollDelayTimer = null; + } + that.lastScrollTime = now; + } + var layout = that.layout; + var hScrolled = false, vScrolled = false; + if (typeof scrollLeft === 'number') { + scrollLeft = Math.max(0, Math.min(scrollLeft, layout.width - layout.containerWidth)); + if (scrollLeft !== layout.scrollLeft) { + hScrolled = true; + layout.scrollLeft = scrollLeft; + } + } + if (typeof scrollTop === 'number') { + scrollTop = Math.max(0, Math.min(scrollTop, layout.height - layout.containerHeight)); + if (scrollTop !== layout.scrollTop) { + vScrolled = true; + layout.scrollTop = scrollTop; + } + } + + if (vScrolled && layout.partialRendering) { + that.renderData(); + } + + if (hScrolled || vScrolled) { + that.renderScrolls(); + that.renderFixeds(); + } + + that.$.callComEvent(that, 'onScroll', [scrollLeft, scrollTop, {vScrolled: vScrolled, hScrolled: hScrolled}]); + }; + + DataGrid.prototype.renderFixeds = function() { + var that = this; + var states = that.states; + var layout = that.layout; + + that.$cells.find('.datagrid-fixed').removeClass('datagrid-fixed'); + that.$cells.find('.datagrid-fixed-edge-top').removeClass('datagrid-fixed-edge-top'); + that.$cells.find('.datagrid-fixed-edge-bottom').removeClass('datagrid-fixed-edge-bottom'); + that.$cells.find('.datagrid-fixed-edge-left').removeClass('datagrid-fixed-edge-left'); + that.$cells.find('.datagrid-fixed-edge-right').removeClass('datagrid-fixed-edge-right'); + + if (layout.vScrollSpare) { + var fixedTopUntil = states.fixedTopUntil; + if (typeof fixedTopUntil === 'number' && fixedTopUntil > -1) { + fixedTopUntil = Math.min(fixedTopUntil, layout.rowsLength); + for (var i = 0; i <= fixedTopUntil; ++i) { + var rowLayout = that.getRowLayout(i); + var $row = $('#' + that.id + '-row-' + i); + var fixedTop = layout.partialRendering ? rowLayout.top : (rowLayout.top + layout.scrollTop); + $row.addClass('datagrid-fixed').css('top', fixedTop); + if (i === fixedTopUntil && layout.scrollTop) { + $row.addClass('datagrid-fixed-edge-top'); + } + } + } else { + fixedTopUntil = -1; + } + var fixedBottomFrom = states.fixedBottomFrom; + if (typeof fixedBottomFrom === 'number' && fixedBottomFrom > -1) { + fixedBottomFrom = Math.max(fixedTopUntil > -1 ? (fixedTopUntil + 1) : 1, Math.min(fixedBottomFrom, layout.rowsLength)); + for (var i = fixedBottomFrom; i < layout.rowsLength; ++i) { + var rowLayout = that.getRowLayout(i); + var $row = $('#' + that.id + '-row-' + i); + var fixedTop = layout.partialRendering ? (rowLayout.top - layout.vScrollSpare) : (rowLayout.top - layout.vScrollSpare + layout.scrollTop); + $row.addClass('datagrid-fixed').css('top', fixedTop); + if (i === fixedBottomFrom && layout.scrollTop < layout.vScrollSpare) { + $row.addClass('datagrid-fixed-edge-bottom'); + } + } + } + } + + if (layout.hScrollSpare) { + var fixedLeftUntil = states.fixedLeftUntil; + if (typeof fixedLeftUntil === 'number' && fixedLeftUntil > -1) { + fixedLeftUntil = Math.min(fixedLeftUntil, layout.colsLength); + for (var i = 0; i <= fixedLeftUntil; ++i) { + var colLayout = layout.cols[i]; + var $cols = that.$cells.find('.datagrid-cell[data-col="' + i + '"]'); + var fixedLeft = colLayout.left + layout.scrollLeft - layout.borderWidth; + $cols.addClass('datagrid-fixed').css('left', fixedLeft); + if (i === fixedLeftUntil && layout.scrollLeft) { + $cols.addClass('datagrid-fixed-edge-left'); + } + } + } else { + fixedLeftUntil = -1; + } + var fixedRightFrom = states.fixedRightFrom; + if (typeof fixedRightFrom === 'number' && fixedRightFrom > -1) { + fixedRightFrom = Math.max(fixedLeftUntil > -1 ? (fixedLeftUntil + 1) : 1, Math.min(fixedRightFrom, layout.colsLength)); + for (var i = fixedRightFrom; i < layout.colsLength; ++i) { + var colLayout = layout.cols[i]; + var $cols = that.$cells.find('.datagrid-cell[data-col="' + i + '"]'); + var fixedLeft = colLayout.left - layout.hScrollSpare + layout.scrollLeft; + $cols.addClass('datagrid-fixed').css('left', fixedLeft); + if (i === fixedRightFrom && layout.scrollLeft < layout.hScrollSpare) { + $cols.addClass('datagrid-fixed-edge-right'); + } + } + } + } + }; + + // default options + DataGrid.DEFAULTS = { + // The data grid width, if set 'auto', then use the container element width + width: 'auto', + + // The data grid height, if set 'page', then use the page height + height: 400, + + // The init data, require an object array + // dataSource: null, + + // The cells configurations + // configs: null, + + // The cells default states + // states: null, + + // Cell default height + rowDefaultHeight: 36, + + // Column default width + colAutoDefaultWidth: 80, + + // Column min width + colAutoMinWidth: 50, + + // Show cells header + showHeader: true, + + // Cells header height + headerHeight: 36, + + // Show row index number + showRowIndex: true, + + // Row index width + rowIndexWidth: 'auto', + + // Create cell element + // cellCreator: null, + + // Format cell element + // cellFormator: null, + + // Row creator + // rowCreator: null, + + // Border width (px) + borderWidth: 1, + + // Use row hover effection + hoverRow: true, + + // Use column hover effection + hoverCol: true, + + // Use cell hover effection + hoverCell: false, + + // Relayout on container resize + responsive: true, + + // Value operator + // valueOperator: null, + + // Default date formater + defaultDateFormater: 'yyyy-MM-dd hh:mm', + + // Partial rendering can show large amount data in high efficiency + partialRendering: 'auto', + + // Scroll event trigger delay time + scrollDelay: 0, + + // Delay render time + renderDelay: 100, + + // On user scroll list + // onScroll: null, + + // On render datagrid + // onRender: null, + + // Search filter function + // searchFunc: null, + + // Sort function + // sortFunc: null, + + // Sort by click column headers + // sortable: false, + + // Show checkboxes and let user select a row + // checkable: false, + + // Let user check by click row + checkByClickRow: true, + + // Let user check rows by drag + selectable: true, + + mouseWheelFactor: 1, + }; + + // Extense jquery element + $.fn.datagrid = function(option) { + return this.each(function() { + var $this = $(this); + var data = $this.data(NAME); + var options = typeof option == 'object' && option; + + if(!data) $this.data(NAME, (data = new DataGrid(this, options))); + + if(typeof option == 'string') data[option](); + }); + }; + + DataGrid.NAME = NAME; + + $.fn.datagrid.Constructor = DataGrid; + + // Auto call datagrid after document load complete + $(function() { + $('[data-ride="datagrid"]').datagrid(); + }); +}(jQuery, undefined)); + diff --git a/root/res/zui/lib/datagrid/zui.datagrid.min.css b/root/res/zui/lib/datagrid/zui.datagrid.min.css new file mode 100644 index 0000000..9d40209 --- /dev/null +++ b/root/res/zui/lib/datagrid/zui.datagrid.min.css @@ -0,0 +1,6 @@ +/*! + * ZUI: 数据表格② - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */.datagrid-container{position:relative;overflow:hidden;background-color:#f1f1f1;border:1px solid #ddd}.datagrid-cells{position:absolute;top:0;left:0;overflow:visible}.datagrid-cell{position:absolute;padding:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:#fff;border:1px solid #ddd;-webkit-transition:.4s cubic-bezier(.175,.885,.32,1);-o-transition:.4s cubic-bezier(.175,.885,.32,1);transition:.4s cubic-bezier(.175,.885,.32,1);-webkit-transition-property:background,outline;-o-transition-property:background,outline;transition-property:background,outline}.datagrid-cell.datagrid-cell-index{font-family:Monaco,Menlo,Consolas,"Courier New",monospace;color:grey;text-align:right;background-color:#f1f1f1}.datagrid-cell.datagrid-cell-head{background-color:#f1f1f1}.datagrid-cell-span{z-index:10}.datagrid-row{position:absolute;width:100%;background-color:#fff;-webkit-transition:.4s cubic-bezier(.175,.885,.32,1);-o-transition:.4s cubic-bezier(.175,.885,.32,1);transition:.4s cubic-bezier(.175,.885,.32,1);-webkit-transition-property:background,outline;-o-transition-property:background,outline;transition-property:background,outline}.datagrid-row-head{font-weight:700;color:grey;background-color:#f1f1f1}.datagrid-fixed.datagrid-row{z-index:35}.datagrid-fixed.datagrid-cell{z-index:30}.datagrid-fixed-edge-top{-webkit-box-shadow:0 2px 5px 0 rgba(0,0,0,.125),0 1px 0 rgba(0,0,0,.25);box-shadow:0 2px 5px 0 rgba(0,0,0,.125),0 1px 0 rgba(0,0,0,.25)}.datagrid-fixed-edge-bottom{-webkit-box-shadow:0 -2px 5px 0 rgba(0,0,0,.125),0 -1px 0 rgba(0,0,0,.25);box-shadow:0 -2px 5px 0 rgba(0,0,0,.125),0 -1px 0 rgba(0,0,0,.25)}.datagrid-fixed-edge-left{-webkit-box-shadow:-1px 0 0 rgba(0,0,0,.25) inset;box-shadow:-1px 0 0 rgba(0,0,0,.25) inset}.datagrid-fixed-edge-right{-webkit-box-shadow:1px 0 0 rgba(0,0,0,.25) inset;box-shadow:1px 0 0 rgba(0,0,0,.25) inset}.datagrid-row-cell.active .datagrid-cell{background-color:#fff0d5}.datagrid-row-cell.active .datagrid-cell.datagrid-cell-index{background-color:#ffe7bc}.datagrid-hover-row .datagrid-row-cell:hover{z-index:20}.datagrid-hover-row .datagrid-row-cell:hover .datagrid-cell{background-color:#ebf2f9}.datagrid-hover-row .datagrid-row-cell:hover.datagrid-fixed{z-index:38}.datagrid-hover-row .datagrid-row-cell:hover>.datagrid-cell-index{background-color:#ddd}.datagrid-hover-row .datagrid-row-cell:hover.active .datagrid-cell{background-color:#ffe1ac}.datagrid-hover-row .datagrid-row-cell:hover.active .datagrid-cell-index{background-color:#ffda98}.datagrid-hover-row.datagrid-hover-shadow .datagrid-row-cell:hover{-webkit-box-shadow:0 1px 3px 2px rgba(0,0,0,.05),0 0 2px 1px rgba(0,0,0,.075);box-shadow:0 1px 3px 2px rgba(0,0,0,.05),0 0 2px 1px rgba(0,0,0,.075)}.datagrid-hover-cell .datagrid-row-cell .datagrid-cell-cell:hover{z-index:40;background-color:#fff;outline:1px solid grey;outline-offset:-1px}.datagrid-hover-cell .datagrid-row-cell .datagrid-cell-cell.datagrid-fixed:hover,.datagrid-hover-cell .datagrid-row-cell.datagrid-fixed .datagrid-cell-cell:hover{z-index:42}.datagrid-hover-cell.datagrid-hover-shadow .datagrid-row-cell .datagrid-cell:hover{-webkit-box-shadow:0 1px 3px 3px rgba(0,0,0,.075),0 0 2px rgba(0,0,0,.1);box-shadow:0 1px 3px 3px rgba(0,0,0,.075),0 0 2px rgba(0,0,0,.1)}.datagrid-hover-col .datagrid-cell.hover{background-color:#ebf2f9}.datagrid-hover-col .datagrid-cell-head.hover,.datagrid-hover-col .datagrid-cell-index.hover{background-color:#ddd}.datagrid-hover-col .datagrid-row-cell.active .datagrid-cell.hover{background-color:#d7e5f3}.datagrid-scrollbar{position:absolute;right:0;bottom:0;z-index:50;opacity:0;-webkit-transition:2.5s cubic-bezier(.175,.885,.32,1);-o-transition:2.5s cubic-bezier(.175,.885,.32,1);transition:2.5s cubic-bezier(.175,.885,.32,1);-webkit-transition-property:background,opacity;-o-transition-property:background,opacity;transition-property:background,opacity}.datagrid-container:hover .datagrid-scrollbar,.datagrid-scrollbar.scrolling{opacity:1}.datagrid-scrollbar>.bar{position:absolute;min-width:10px;background-color:#ddd;background-color:rgba(0,0,0,.25)}.datagrid-scrollbar.scrolling,.datagrid-scrollbar:hover{background-color:rgba(0,0,0,.075)}.datagrid-scrollbar.scrolling>.bar,.datagrid-scrollbar:hover>.bar{position:absolute;background-color:grey;background-color:rgba(0,0,0,.5)}.datagrid-scrollbar-h{left:0;height:10px}.datagrid-scrollbar-h>.bar{top:0!important;bottom:0!important;min-width:20px}.datagrid-scrollbar-v{top:0;width:10px}.datagrid-scrollbar-v>.bar{right:0!important;left:0!important;min-height:20px}.datagrid-messager{position:absolute;top:0;right:0;left:0;z-index:60;padding:5px 10px;text-align:center}.datagrid-messager>.close{position:absolute;top:0;right:0;display:block;width:30px;height:30px;padding-bottom:5px;line-height:20px;text-align:center}.datagrid-messager>.close:hover{background-color:rgba(0,0,0,.1)}.datagrid-loading{position:absolute;top:0;right:0;bottom:0;left:0;z-index:61;background-color:rgba(255,255,255,.6)}.datagrid-loading>.content{position:relative;top:50%;display:block;height:50px;margin-top:-25px;text-align:center}.datagrid-loading>.content>.icon{color:#3280fc}.datagrid-col-sortable{padding-right:20px;cursor:pointer}.datagrid-sorter{position:absolute;top:3px;right:0;bottom:0;width:20px;line-height:30px;text-align:center}.datagrid-sort-down>.icon-sort:before{color:#3280fc;content:'\e6b8'}.datagrid-sort-up>.icon-sort:before{color:#3280fc;content:'\e6b9'}.datagrid-borderless .datagrid-container{border-color:transparent}.datagrid-borderless .datagrid-cell{border-right-color:transparent;border-left-color:transparent}.datagrid-borderless .datagrid-fixed-edge-left{-webkit-box-shadow:-1px 0 0 rgba(0,0,0,.1) inset;box-shadow:-1px 0 0 rgba(0,0,0,.1) inset}.datagrid-borderless .datagrid-fixed-edge-right{-webkit-box-shadow:1px 0 0 rgba(0,0,0,.1) inset;box-shadow:1px 0 0 rgba(0,0,0,.1) inset}.datagrid-borderless .datagrid-row-cell:not(:hover) .datagrid-cell.datagrid-cell-index{background-color:#fff}.datagrid-striped .datagrid-cells>.datagrid-row-cell:nth-child(odd) .datagrid-cell-cell{background-color:#f9f9f9} \ No newline at end of file diff --git a/root/res/zui/lib/datagrid/zui.datagrid.min.js b/root/res/zui/lib/datagrid/zui.datagrid.min.js new file mode 100644 index 0000000..70de1a9 --- /dev/null +++ b/root/res/zui/lib/datagrid/zui.datagrid.min.js @@ -0,0 +1,14 @@ +/*! + * ZUI: 数据表格② - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ +/*! + * jQuery Mousewheel 3.1.13 + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + */ +!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?module.exports=e:e(jQuery)}(function(e){function t(t){var n=t||window.event,l=s.call(arguments,1),d=0,h=0,g=0,f=0,u=0,p=0;if(t=e.event.fix(n),t.type="mousewheel","detail"in n&&(g=n.detail*-1),"wheelDelta"in n&&(g=n.wheelDelta),"wheelDeltaY"in n&&(g=n.wheelDeltaY),"wheelDeltaX"in n&&(h=n.wheelDeltaX*-1),"axis"in n&&n.axis===n.HORIZONTAL_AXIS&&(h=g*-1,g=0),d=0===g?h:g,"deltaY"in n&&(g=n.deltaY*-1,d=g),"deltaX"in n&&(h=n.deltaX,0===g&&(d=h*-1)),0!==g||0!==h){if(1===n.deltaMode){var v=e.data(this,"mousewheel-line-height");d*=v,g*=v,h*=v}else if(2===n.deltaMode){var m=e.data(this,"mousewheel-page-height");d*=m,g*=m,h*=m}if(f=Math.max(Math.abs(g),Math.abs(h)),(!i||f=1?"floor":"ceil"](d/i),h=Math[h>=1?"floor":"ceil"](h/i),g=Math[g>=1?"floor":"ceil"](g/i),c.settings.normalizeOffset&&this.getBoundingClientRect){var y=this.getBoundingClientRect();u=t.clientX-y.left,p=t.clientY-y.top}return t.deltaX=h,t.deltaY=g,t.deltaFactor=i,t.offsetX=u,t.offsetY=p,t.deltaMode=0,l.unshift(t,d,h,g),o&&clearTimeout(o),o=setTimeout(a,200),(e.event.dispatch||e.event.handle).apply(this,l)}}function a(){i=null}function r(e,t){return c.settings.adjustOldDeltas&&"mousewheel"===e.type&&t%120===0}var o,i,n=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],l="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],s=Array.prototype.slice;if(e.event.fixHooks)for(var d=n.length;d;)e.event.fixHooks[n[--d]]=e.event.mouseHooks;var c=e.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var a=l.length;a;)this.addEventListener(l[--a],t,!1);else this.onmousewheel=t;e.data(this,"mousewheel-line-height",c.getLineHeight(this)),e.data(this,"mousewheel-page-height",c.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var a=l.length;a;)this.removeEventListener(l[--a],t,!1);else this.onmousewheel=null;e.removeData(this,"mousewheel-line-height"),e.removeData(this,"mousewheel-page-height")},getLineHeight:function(t){var a=e(t),r=a["offsetParent"in e.fn?"offsetParent":"parent"]();return r.length||(r=e("body")),parseInt(r.css("fontSize"),10)||parseInt(a.css("fontSize"),10)||16},getPageHeight:function(t){return e(t).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};e.fn.extend({mousewheel:function(e){return e?this.bind("mousewheel",e):this.trigger("mousewheel")},unmousewheel:function(e){return this.unbind("mousewheel",e)}})}),function(e,t){"use strict";var a=function(t){var a=[];t.find("thead>tr:first>th").each(function(t){var r=e(this);if(a.push(e.extend({name:t,label:r.html(),html:!0,width:r.outerWidth()},r.data())),r.attr("colspan")&&"1"!==r.attr("colspan"))throw new Erorr("Table th element with colspan attribute is not support.")});var r=[];return t.find("tbody>tr").each(function(){var t=e(this),a={};t.children("td").each(function(t){a[t]=e(this).html()}),r.push(e.extend(a,t.data()))}),{cols:a,array:r,length:r.length}},r="zui.datagrid",o={date:{getter:function(e,t,a){var r=a.options.defaultDateFormater;return Date.create(e).format(r)},setter:function(e,t,a){if("string"==typeof e){var r=parseInt(e,10);isNaN(r)||(e=r)}return Date.timestamp(e)}}},i={},n={page:0,recTotal:0,recPerPage:10},l={fixedLeftUntil:0,fixedTopUntil:0,order:"asc",sortBy:null,pager:n,selections:{}},s=function(t,a){var r=0,o=a.length,i=0,n={};return e.each(t,function(e,t){var l=typeof t;"number"===l||"number"===l?t+="":"string"!==l&&(t=JSON.stringify(l));for(var s=0,d=0;d').insertAfter(s.$));var f=d.find(".datagrid-container:first");f.length||(f=e('
            ').appendTo(d)),f.css({width:n.width,borderWidth:n.borderWidth});var u=e(document),p=function(t){var a=f.find(".datagrid-scrollbar-"+t);a.length||(a=e('
            ').appendTo(f));var o,i,n,l,d=!1,c=null,h=".scrollbar"+t+"."+r+"."+s.uuid,g=function(e){if(d){var a=e["h"===t?"pageX":"pageY"];if(c!==a){c=a,a=a-o+i;var r,h=s.layout[t+"Scroll"];r=n?c-o+l:Math.max(0,Math.min(h.space,a-Math.round(h.barSize/2))),"h"===t?s.setScrollbarOffset(r):s.setScrollbarOffset(null,r)}}};a.on("mousedown",function(r){r.preventDefault(),d=!0;var c=s.layout[t+"Scroll"],f="h"===t?"X":"Y";i=r["offset"+f],o=r["page"+f],n=e(r.target).is(".bar"),l=c.offset,n&&(i+=l),g(r),a.addClass("scrolling"),u.on("mouseup"+h,function(e){d=!1,g(e),u.off(h),a.removeClass("scrolling")}).on("mousemove"+h,g)}),s["$"+t+"Scroll"]=a,s["$"+t+"Scrollbar"]=a.find(".bar")};p("h"),p("v");var v=n.mouseWheelFactor,m=window.navigator.userAgent.match(/Win/i);m&&(v*=20),f.on("mousewheel",function(e){s.scroll(s.layout.scrollLeft-Math.round(e.deltaX*v),s.layout.scrollTop-Math.round(e.deltaY*v)),e.preventDefault()}),s.$container=f;var y=d.find(".datagrid-cells:first");if(y.length||(y=e('
            ').appendTo(f)),y.toggleClass("datagrid-hover-cell",!!n.hoverCell).toggleClass("datagrid-hover-row",!!n.hoverRow).toggleClass("datagrid-hover-col",!!n.hoverCol).toggleClass("datagrid-hover-shadow",!!n.hoverCol),s.$cells=y,s.isFuncConfigs=e.isFunction(n.configs),s.configs=s.isFuncConfigs?n.configs:e.extend({},i,n.configs),s.layout={scrollLeft:0,scrollTop:0},s.configsCache={},s.userConfigs={},s.states=e.extend(!0,{},l,n.states),s.cells=[],s.setPager(s.states.pager),s.setDataSource(n.dataSource),s.render(!0),n.responsive){f.width();f.on("resize",function(){s.layout.cols=null,s.render()})}if(n.hoverCol&&y.on("mouseenter",".datagrid-cell-head",function(){var t=e(this),a=t.data("col");s.$cells.find(".datagrid-cell.hover").removeClass("hover"),s.$cells.find('.datagrid-cell[data-col="'+a+'"]').addClass("hover")}).on("mouseleave",".datagrid-cell-head.hover",function(){s.$cells.find(".datagrid-cell.hover").removeClass("hover")}),n.sortable&&y.on("click",".datagrid-col-sortable",function(){var t=e(this).data("col"),a=s.getColConfig(t),r=s.states.sortBy,o=s.states.order;r!==a.name?(r=a.name,o="desc"):"desc"===o?o="asc":"asc"===o&&(r=""),s.sortBy(r,o)}),n.checkable&&(n.selectable&&e.fn.selectable?(s.selectable=y.selectable(e.extend({selector:".datagrid-row-cell",trigger:n.checkByClickRow?null:".datagrid-row-cell .datagrid-has-checkbox",clickBehavior:"multi",select:function(e){s.checkRow(e.id,!0)},unselect:function(e){s.checkRow(e.id,!1)}},e.isPlainObject(n.selectable)?n.selectable:null)).data("zui.selectable"),y.on("click",".datagrid-cell-head.datagrid-has-checkbox",function(){s.checkRow(e(this).data("row")),s.selectable.syncSelectionsFromClass()})):y.on("click",n.checkByClickRow?".datagrid-row":".datagrid-has-checkbox",function(t){var a=e(this).data("row");(a||e(t.target).closest(".datagrid-has-checkbox").length)&&s.checkRow(a)})),e.fn.pager){var w=s.$.find(".pager");w.length&&(s.pagerObj=w.pager(e.extend({},s.pager,{onPageChange:function(e){s.setPager(e).render()}})).data("zui.pager"))}if(e.fn.searchBox){var C=s.$.find(".search-box");C&&(s.searchbox=C.searchBox({onSearchChange:function(e){s.search(e)}}))}};h.prototype.setPager=function(t,a,r){var o=this;"object"==typeof t&&(r=t.recPerPage,a=t.recTotal,t=t.page);var i=o.pager,l=e.extend({},i);return i||(i=e.extend({},n)),"number"==typeof r&&r>0&&(i.recPerPage=r),"number"==typeof a&&a>=0&&(i.recTotal=a),"number"==typeof t&&t>=0&&(i.page=t),i.totalPage=i.recTotal&&i.recPerPage?Math.ceil(i.recTotal/i.recPerPage):1,i.page=Math.max(0,Math.min(i.page,i.totalPage)),i.pageRecCount=i.recTotal,i.page&&i.recTotal&&(i.page1&&(i.pageRecCount=i.recTotal-i.recPerPage*(i.page-1))),i.skip=i.page>1?(i.page-1)*i.recPerPage:0,i.end=i.skip+i.pageRecCount,o.pager=i,l.page===i.page&&l.recTotal===i.recTotal&&l.recPerPage===i.recPerPage||(o.layout.cols=null,o.scroll(0,0)),o},h.prototype.goToPage=function(e){return this.setPager(e).render()},h.prototype.setSearch=function(a){return a!==t&&null!==a||(a=""),this.states.search=e.trim(a),this},h.prototype.search=function(e){var t=this;return e!==t.states.search&&t.pager.page&&t.setPager(1),t.setSearch(e).render()},h.prototype.setSorter=function(e,a){var r=this;return a===t&&(a="desc"===r.states.order?"asc":"desc"),r.states.order=a.toLowerCase(),r.states.sortBy=e,r},h.prototype.sortBy=function(e,t){return this.setSorter(e,t).render()},h.prototype.setDataSource=function(a,r){var o=this,i={},n=o.dataSource&&o.dataSource.cols;if(e.isArray(a)?(i.array=a,i.length=a.length,o.setPager("",a.length)):e.isPlainObject(a)?i=e.extend(i,a):"string"==typeof a&&(i.remote=a),i.cache===!0||i.cache===t?(i.cache=[],i.cacheSize=1):"number"==typeof i.cache&&(i.cacheSize=i.cache,i.cache=[]),e.isArray(i.data)?(i.array=i.data,i.length=i.array.length,o.setPager("",i.length),delete i.data):!i.data&&e.isFunction(i.getByIndex)&&o.setPager("",i.length),o.dataSource=i,r=r||i.cols||n||[],r.length)for(var l=0;l1?m.page*m.recPerPage:0;r=r.slice(m.skip,m.end)}}return r},h.prototype.getFilterParams=function(){var e=this,t=e.states;return{page:e.pager.page,recPerPage:e.pager.recPerPage,search:t.search,sortBy:t.sortBy,order:t.order}},h.prototype.loadData=function(t){var a=this;a.loadingId=e.zui.uuid();var r=function(e){return a.$.callComEvent(a,"onLoad",e),t&&t(e)},o=a.getFilterParams(),i=[o.page,o.recPerPage,o.search,o.sortBy,o.order].join("&"),n=a.getData(i);if(n)return r(n);var l=a.dataSource;if(l.array)return n=a.filterData(l.array,o),a.resetData(i,n,a.pager),r(n);if(l.getByIndex)return n=l.getByIndex,a.resetData(i,n),r(n);var s=l.loader,d=l.remote;if(!s&&d&&(s=function(t,r){var o=e.isFunction(d)?d(t,a):{url:d};e.ajax(e.extend({type:"GET",data:t,dataType:"json",success:function(t,o,i){if(l.remoteConverter&&(t=l.remoteConverter(t,o,i,a)),"string"==typeof t&&(t=e.parseJSON(t)),e.isPlainObject(t)&&t.data){var n=t.result||t.status;"success"===n||"ok"===n||200===n?r(t):r(!1,t.message||t.reason||a.lang.errorCannotHandleRemoteData,t)}else r(!1,a.lang.errorCannotHandleRemoteData,t)},error:function(){r(!1,a.lang.errorCannotGetDataFromRemote.format(l.remote))}},o))}),!s)return r(!1);a.renderLoading(!0);var c=a.loadingId;s(o,function(e,t){if(c===a.loadingId){if(a.renderLoading(!1),t)return a.showMessage(t,"danger"),void r(!1);a.resetData(i,e.data,e.pager),r(e.data)}})},h.prototype.getDataItem=function(e,t,a){var r=this;return t=t||r.getData(),"function"==typeof t?(a=a||r.getFilterParams(),t(e,a)):t[e]},h.prototype.showMessage=function(a,r,o){var i=this;i.msgerAutoCloseTimer&&(clearTimeout(i.msgerAutoCloseTimer),i.msgerAutoCloseTimer=null);var n=i.$container.find(".datagrid-messager");return a?(r=r||"info",o===t&&(o=5e3),n.length||(n=e('').appendTo(i.$container).on("click",".close",function(){n.slideUp(),i.msgerAutoCloseTimer&&(clearTimeout(i.msgerAutoCloseTimer),i.msgerAutoCloseTimer=null)})),n.attr("class","datagrid-messager bg-"+r).find(".content").text(a),n.slideDown(),void(o&&(i.msgerAutoCloseTimer=setTimeout(function(){n.slideUp(),i.msgerAutoCloseTimer=null},o)))):void n.slideUp()},h.prototype.renderLoading=function(a){var r=this;a!==t&&(r.states.loading=a);var o=r.$container.find(".datagrid-loading");a?(o.length||(o=e('').appendTo(r.$container)),o.find(".datagrid-loading-message").text("string"==typeof a?a:""),o.fadeIn()):o.fadeOut()},h.prototype.getData=function(e){var t=this.dataSource,a=null;if(e&&e!==t.dataId){if(t.cache&&t.cache.length)for(var r=t.cache.length-1;r>=0;--r){var o=t.cache[r];if(o.id===e){t.dataId=e,t.data=o.data,this.setPager(o.pager),a=o.data;break}}}else a=t.data;return a},h.prototype.resetData=function(t,a,r){var o=this.dataSource;if(o.dataId=t,o.data=a,o.cache){for(var i=o.cache.length-1;i>0;--i){var n=o.cache[i];if(n.id===t){o.cache.splice(i,1);break}}for(o.cache.push({id:t,data:a,pager:e.extend({},r)});o.cache.length>o.cacheSize;)o.cache.shift()}r&&this.setPager(r)},h.prototype.getRowLayout=function(e){var t=this.layout;if(0===e)return{top:0,height:t.headerHeight};var a=t.rowHeight;return{height:a,top:t.headerHeight+(e>1?(e-1)*a:0)+e*t.borderWidth}},h.prototype.updateLayout=function(){var a=this,r=a.options,o=a.layout,i=(a.data,a.pager),n=i.pageRecCount,l=a.$container,s=l.width(),d=a.dataSource;if(!d.cols.length&&n&&e.each(a.getDataItem(0),function(e){d.cols.push({name:e})}),!o.cols){for(var c,h,g=d.cols,f=r.colAutoMinWidth,u=r.colAutoDefaultWidth,p=0,v=0,m=r.rowIndexWidth,y=[{left:0,width:r.showRowIndex?"auto"===m?8*(n+a.pager.skip+"").length+18:m:0}],w=0,C=y[0].width,b=!1,x=0,S=0,T=0;T=1?(D.minWidth!==t&&(h=Math.max(h,D.minWidth)),c.width=h,C+=h):(D.minWidth===t&&(D.minWidth=f),c.grow=h,p+=h,v+=D.minWidth,x<=c.grow&&(x=c.grow,b=T+1)),c.minWidth=D.minWidth,!S&&D.checkbox&&(S=T+1,c.checkbox=!0),y.push(c))}r.checkable&&!S&&(y[0].checkbox=!0,"auto"===m&&(y[0].width+=30,C+=30));for(var M=s-C,R=M0){var k=y[L-1];c.left=k.left+k.width}w+=h}var H=s-w;b&&H>0&&(y[b].width+=H,w+=H),o.width=w,o.cols=y}o.containerWidth=s,o.rowHeight=r.rowDefaultHeight,o.borderWidth=r.borderWidth,o.headerHeight=r.showHeader?r.headerHeight:0,o.rowsLength=n+1,o.colsLength=o.cols.length,o.height=o.headerHeight+n*(o.rowHeight+o.borderWidth),o.spanMap={};var W=r.height;"page"===W&&(W=o.headerHeight+a.pager.recPerPage*(o.rowHeight+o.borderWidth)),l.css("height",W),o.containerHeight=W,o.vScrollSpare=o.height-o.containerHeight,o.hScrollSpare=o.width-o.containerWidth,a.layout=o;var F=!!i.page||r.partialRendering;return"auto"===F&&(F=o.height>2*o.containerHeight),o.partialRendering=F,o},h.prototype.getCell=function(e,a){var r,o,i=this,n=i.getCellConfig(e,a),l=a>0?i.dataSource.cols[a-1]:null,s={rowIndex:e,colIndex:a,config:n,checked:i.isRowChecked(n.rowId)};if(0===a){r="index";var d=e>0?i.pager.skip+e:"";o=n.label!==t?n.label:d}else 0===e?(r="head",o=n.label!==t?n.label:n.name!==t?n.name:a):(r="cell",o=n.data&&n.data[i.options.dataItemIsArray?a:l.name]);if(e>0){var c=i.options.valueOperator,h=n.valueType,g=n.valueOperator||(c&&h?c[h]:null);g&&g.getter&&(o=g.getter(o,s,i))}s.value=o,s.type=r;var f=i.layout.spanMap;if(f[n.id]||n.hidden)s.hidden=!0;else if(n.colspan&&n.colspan>1||n.rowspan&&n.rowspan>1){for(var u=e+(n.rowspan||1),p=a+(n.colspan||1),v=e;v0?r.getDataItem(a-1):null;i.data=n;var o=n&&(n.rowId||n.id);return i.rowId=o!==t?o:0===a?"#header":a,i},h.prototype.getColConfigByName=function(e){for(var t=this.dataSource.cols,a=0;a0?a.dataSource.cols[t-1]:null,a.layout.cols?a.layout.cols[t]:null,a.isFuncConfigs?a.configs(r):a.configs[r],a.userConfigs[r])),o},h.prototype.getCellConfig=function(t,a){var r=this,o="R"+t+"C"+a,i=null;return i||(i=e.extend({id:o},r.getColConfig(a),r.getRowConfig(t),r.isFuncConfigs?r.configs(o):r.configs[o],r.userConfigs[o])),i},h.prototype.isRowChecked=function(e){return!!this.states.selections[e]},h.prototype.checkRow=function(e,a){var r=this,o=r.states.selections,i=r.getRowConfig(e),n=i.rowId;if(a===t&&(a=!o[n]),o[n]!==a){if(a?o[n]=i:(delete o[n],e>0&&o["#header"]&&(delete o["#header"],r.renderRow(0))),r.renderRow(e),0===e&&r.layout.rowsLength<500)for(var l=1;l')).appendTo(r),c.attr({id:d,"data-type":n.type,"data-col":n.colIndex,"data-row":n.rowIndex}).toggleClass("datagrid-cell-head",0===t).toggleClass("datagrid-cell-cell","cell"===n.type).toggleClass("datagrid-cell-index",0===a),s)){var h=c.find(".datagrid-checkbox");h.length||(h=e('
            ').prependTo(c.addClass("datagrid-has-checkbox"))),c.append('')}var g=i.borderWidth,f=o.layout,u=f.colsLength,p={top:g?-g:0,bottom:g?-g:0,left:g?l.left-g:l.left,width:g?l.width+(u-1===a?2:1)*g:l.width,borderWidth:g};if(l.span&&(l.rowspan&&l.rowspan>1&&(p.bottom-=(l.rowspan-1)*(f.rowHeight+g)),l.colspan&&l.colspan>1))for(var v=a+l.colspan,m=a+1;m0&&0===t&&i.sortable&&l.sort!==!1){var x=!1;l.name===o.states.sortBy&&(x="desc"===o.states.order?"down":"up");var S=c.find(".datagrid-sorter");S.length||(S=e('
            ').appendTo(c),c.addClass("datagrid-col-sortable")),S.toggleClass("datagrid-sort-up","up"===x).toggleClass("datagrid-sort-down","down"===x)}return s&&(c.find(".datagrid-checkbox").toggleClass("checked",n.checked),r.toggleClass("active",n.checked)),c}},h.prototype.renderRow=function(t){var a=this,r=a.layout,o=a.options,i=a.getRowLayout(t),n=r.colsLength,l=a.id+"-row-"+t,s=e("#"+l);s.length?r.partialRendering&&s.css("top",i.top-r.scrollTop):(s=(o.rowCreator?o.rowCreator(t,a):e('
            ')).appendTo(a.$cells),s.attr({id:l,"data-row":t,"data-id":t}).css({top:r.partialRendering?i.top-r.scrollTop:i.top,height:i.height}).toggleClass("datagrid-row-head",0===t).toggleClass("datagrid-row-cell",0!==t));for(var d=0;d0&&!t.hasClass("datagrid-fixed")&&(ao)&&t.remove()})}t.options.showHeader&&t.renderRow(0);for(var n=r;n<=o;++n)t.renderRow(n);if(a.vScrollSpare){var l=t.states,s=l.fixedTopUntil,d=l.fixedBottomFrom;if("number"==typeof s&&s>0&&s0&&d>o)for(var n=d;n<=a.rowsLength-1;++n)t.renderRow(n)}t.pagerObj&&t.pagerObj.set(t.pager)},h.prototype.render=function(e){var t=this,a=t.options;return!e&&a.renderDelay?(t.renderDelayTimer&&clearTimeout(t.renderDelayTimer),t.renderDelayTimer=setTimeout(function(){t.render(!0)},a.renderDelay),t):(t.renderDelayTimer&&(clearTimeout(t.renderDelayTimer),t.renderDelayTimer=null),t.loadData(function(e){var a=t.updateLayout();t.$cells.css({width:a.width,height:a.partialRendering?a.containerHeight:t.layout.height}),t.renderData(),t.renderScrolls(),t.renderFixeds(),t.$.callComEvent(t,"onRender")}),t)},h.prototype.setScrollbarOffset=function(e,t){var a=this,r=a.layout,o=r.scrollLeft,i=r.scrollTop;if("number"==typeof e){var n=r.hScroll;n.offset!==e&&(o=Math.round(e*r.hScrollSpare/n.space))}if("number"==typeof t){var l=r.vScroll;l.offset!==t&&(i=Math.round(t*r.vScrollSpare/l.space))}a.scroll(o,i)},h.prototype.renderScrolls=function(){var e=this,t=e.layout,a=t.vScrollSpare,r=t.hScrollSpare,o=a>0,i=r>0;if(e.$vScroll.toggle(o),e.$hScroll.toggle(i),t.scrollLeft=i?Math.max(0,Math.min(r,t.scrollLeft)):0,t.scrollTop=o?Math.max(0,Math.min(a,t.scrollTop)):0,o){var n=e.$vScrollbar,l=t.containerHeight/t.height,s=Math.max(20,Math.floor(l*t.containerHeight)),d=t.containerHeight-s,c=d/a,h=Math.round(t.scrollTop*c);t.vScroll={space:d,size:a,scale:c,barSize:s,offset:h};var g={height:s,top:h};n.css(g)}if(i){var n=e.$hScrollbar,l=t.containerWidth/t.width,s=Math.max(20,Math.floor(l*t.containerWidth)),d=t.containerWidth-s,h=Math.round(t.scrollLeft*d/r),g={width:s,left:h};t.hScroll={offset:h,space:d,size:r,barSize:s},n.css(g)}e.$cells.css({top:t.partialRendering?0:-t.scrollTop,left:-t.scrollLeft})},h.prototype.scroll=function(e,t,a){var r=this,o=new Date,i=r.options.scrollDelay;if(i){if(!a&&r.lastScrollTime&&o-r.lastScrollTime-1){o=Math.min(o,r.rowsLength);for(var i=0;i<=o;++i){var n=t.getRowLayout(i),l=e("#"+t.id+"-row-"+i),s=r.partialRendering?n.top:n.top+r.scrollTop;l.addClass("datagrid-fixed").css("top",s),i===o&&r.scrollTop&&l.addClass("datagrid-fixed-edge-top")}}else o=-1;var d=a.fixedBottomFrom;if("number"==typeof d&&d>-1){d=Math.max(o>-1?o+1:1,Math.min(d,r.rowsLength));for(var i=d;i-1){c=Math.min(c,r.colsLength);for(var i=0;i<=c;++i){var h=r.cols[i],g=t.$cells.find('.datagrid-cell[data-col="'+i+'"]'),f=h.left+r.scrollLeft-r.borderWidth;g.addClass("datagrid-fixed").css("left",f),i===c&&r.scrollLeft&&g.addClass("datagrid-fixed-edge-left")}}else c=-1;var u=a.fixedRightFrom;if("number"==typeof u&&u>-1){u=Math.max(c>-1?c+1:1,Math.min(u,r.colsLength));for(var i=u;i .datatable-head { + -webkit-transition: -webkit-box-shadow .2s; + -o-transition: box-shadow .2s; + transition: -webkit-box-shadow .2s; + transition: box-shadow .2s; + transition: box-shadow .2s, -webkit-box-shadow .2s; + } +.datatable .table { + margin: 0; + table-layout: fixed; + } +.datatable .table > tbody > tr > td, +.datatable .table > thead > tr > th { + min-width: 20px; + } +.datatable .table > tbody > tr > td.check-btn, +.datatable .table > thead > tr > th.check-btn { + width: 30px; + color: #9b9b9b; + text-align: center; + cursor: pointer; + } +.datatable .table > tbody > tr.hover > td.check-btn, +.datatable .table > tbody > tr.active > td.check-btn, +.datatable .table > thead > tr > th.check-btn:hover, +.datatable .table > tbody > tr > td.check-btn:hover, +.datatable .table > thead > tr > th.check-btn.checked, +.datatable .table > tbody > tr > td.check-btn.checked { + color: #4f4f4f; + } +.datatable .table > thead > tr > th.check-btn.checked > .icon-check-empty:before, +.datatable .table > tbody > tr > td.check-btn.checked > .icon-check-empty:before, +.datatable .table > tbody > tr.active > td.check-btn > .icon-check-empty:before { + content: '\e642'; + } +.datatable .table > thead > tr > th.col-hover { + background-color: #e2e2e2; + } +.datatable .table > tbody > tr > td.col-hover, +.datatable .table > tbody > tr.hover > td { + background-color: #ebf2f9; + } +.datatable .table > tbody > tr.active.hover td { + background-color: #ffdea2; + } +.datatable.head-fixed > .datatable-head { + position: fixed; + z-index: 1030; + -webkit-box-shadow: 0 1px 4px 0 rgba(0, 0, 0, .15); + box-shadow: 0 1px 4px 0 rgba(0, 0, 0, .15); + } +.datatable.sortable .datatable-head-span .table > thead > tr > th { + overflow: hidden; + white-space: nowrap; + cursor: pointer; + } +.datatable.sortable .datatable-head-span .table > thead > tr > th.text-center { + padding-right: 0; + padding-left: 0; + } +.datatable.sortable .datatable-head-span .table > thead > tr > th:after { + display: inline-block; + margin-left: 5px; + font-family: ZenIcon; + font-size: 14px; + font-style: normal; + font-weight: normal; + font-variant: normal; + line-height: 1; + color: #808080; + text-transform: none; + content: '\e6bd'; + + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } +.datatable.sortable .datatable-head-span .table > thead > tr > th.sort-down:after { + color: #145ccd; + content: '\e6b8'; + } +.datatable.sortable .datatable-head-span .table > thead > tr > th.sort-up:after { + color: #145ccd; + content: '\e6b9'; + } +.datatable.sortable .datatable-head-span .table > thead > tr > th.check-btn:after, +.datatable.sortable .datatable-head-span .table > thead > tr > th.sort-disabled:after { + display: none; + } +.datatable.sortable .datatable-head-span .table > thead > tr > th.sort-disabled { + cursor: default; + } +.datatable-wrapper { + position: relative; + } +.datatable-span { + display: table-cell; + vertical-align: top; + } +.datatable-span.flexarea { + overflow: hidden; + } +.datatable-span.flexarea.datatable-head-span.dragging { + cursor: move !important; + } +.datatable-span.flexarea .table { + position: relative; + top: 0; + left: 0; + } +.datatable-span.flexarea .scrolled-shadow { + position: absolute; + top: 0; + bottom: 0; + display: none; + width: 20px; + -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, .15); + box-shadow: 0 0 10px rgba(0, 0, 0, .15); + opacity: 0; + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +.datatable-span.flexarea .scrolled-in-shadow { + left: -30px; + } +.datatable-span.flexarea .scrolled-out-shadow { + right: -30px; + } +.datatable > .scroll-wrapper { + position: relative; + width: 100%; + } +.datatable .scroll-slide { + position: absolute; + right: -1px; + bottom: 0; + left: -1px; + display: none; + height: 11px; + background: #e5e5e5; + background: rgba(128, 128, 128, .1); + border: 1px solid #e5e5e5; + border-bottom: none; + opacity: 0; + -webkit-transition: opacity .5s, background .3s; + -o-transition: opacity .5s, background .3s; + transition: opacity .5s, background .3s; + } +.datatable .scroll-slide > .bar { + position: absolute; + top: 0; + left: 0; + min-width: 50px; + height: 10px; + cursor: move; + background-color: #a6a6a6; + } +.datatable .scroll-slide:hover > .bar { + background-color: #808080; + } +.datatable .scroll-slide.scroll-pos-out { + bottom: -14px; + height: 15px; + } +.datatable .scroll-slide.scroll-pos-out > .bar { + height: 14px; + } +.datatable.show-scroll-slide:hover .scroll-slide, +.datatable.show-scroll-slide.scrolling .scroll-slide, +.datatable.show-scroll-slide:hover .scrolled-shadow, +.datatable.show-scroll-slide.scrolling .scrolled-shadow { + opacity: 1; + } +.datatable.show-scroll-slide .scroll-slide, +.datatable.show-scroll-slide .scrolled-shadow { + display: block; + } +.datatable.show-scroll-slide.scrolled-in .scrolled-in-shadow { + left: -20px; + } +.datatable.show-scroll-slide.scrolled-out .scrolled-out-shadow { + right: -20px; + } diff --git a/root/res/zui/lib/datatable/zui.datatable.js b/root/res/zui/lib/datatable/zui.datatable.js new file mode 100644 index 0000000..9476b60 --- /dev/null +++ b/root/res/zui/lib/datatable/zui.datatable.js @@ -0,0 +1,948 @@ +/*! + * ZUI: 数据表格 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +/* ======================================================================== + * ZUI: datatable.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ +(function($) { + 'use strict'; + + var name = 'zui.datatable'; + var store = $.zui.store; + + /** + * Datatable class + * + * @param object element DOM element or jquery element + * @param object options Datatable options + */ + var DataTable = function(element, options) { + this.name = name; + this.$ = $(element); + this.isTable = (this.$[0].tagName === 'TABLE'); + this.firstShow = true; + if(this.isTable) { + this.$table = this.$; + this.id = 'datatable-' + (this.$.attr('id') || $.zui.uuid()); + } else { + this.$datatable = this.$.addClass('datatable'); + if(this.$.attr('id')) { + this.id = this.$.attr('id'); + } else { + this.id = 'datatable-' + $.zui.uuid(); + this.$.attr('id', this.id); + } + } + this.getOptions(options); + this.load(); + + this.callEvent('ready'); + }; + + // default options + DataTable.DEFAULTS = { + // Check options + checkable: false, // added check icon to the head of rows + checkByClickRow: true, // change check status by click anywhere on a row + checkedClass: 'active', // apply CSS class to an checked row + checkboxName: null, + selectable: true, + + // Sort options + sortable: false, // enable sorter + + // storage + storage: true, // enable storage + + // fixed header of columns + fixedHeader: false, // fixed header + fixedHeaderOffset: 0, // set top offset of header when fixed + fixedLeftWidth: '30%', // set left width after first render + fixedRightWidth: '30%', // set right width after first render + flexHeadDrag: true, // scroll flexarea by drag header + scrollPos: 'in', // scroll bar position: 'out' | 'in' + + // hover effection + rowHover: true, // apply hover effection to row + colHover: true, // apply hover effection to head + hoverClass: 'hover', + colHoverClass: 'col-hover', + + + // Fix cell height + fixCellHeight: true, + + // Merge rows + mergeRows: false, // Merge rows + + // custom columns size + // customizable: false, // enable customizable + minColWidth: 20, // min width of columns + minFixedLeftWidth: 200, // min left width + minFixedRightWidth: 200, // min right width + minFlexAreaWidth: 200 // min flexarea width + }; + + // Get options + DataTable.prototype.getOptions = function(options) { + var $e = this.$; + options = $.extend({}, DataTable.DEFAULTS, this.$.data(), options); + + options.tableClass = options.tableClass || ''; + options.tableClass = ' ' + options.tableClass + ' table-datatable'; + + $.each(['bordered', 'condensed', 'striped', 'condensed', 'fixed'], function(idx, cls) { + cls = 'table-' + cls; + if($e.hasClass(cls)) options.tableClass += ' ' + cls; + }); + + if($e.hasClass('table-hover') || options.rowHover) { + options.tableClass += ' table-hover'; + } + + if(!options.checkable || !$.fn.selectable) options.selectable = false; + + this.options = options; + }; + + // Load data form options or table dom + DataTable.prototype.load = function(data) { + var options = this.options, + cols; + + if($.isFunction(data)) { + data = data(this.data, this); + data.keepSort = true; + } else if($.isPlainObject(data)) { + this.data = data; + } else if(typeof data === 'string') { + var $table = $(data); + if($table.length) { + this.$table = $table.first(); + this.$table.data(name, this); + this.isTable = true; + } + data = null; + } else { + data = options.data; + } + + if(!data) { + if(this.isTable) { + data = { + cols: [], + rows: [] + }; + cols = data.cols; + var rows = data.rows, + i, + $th, $tr, $td, row, $t = this.$table, + colSpan; + + $t.children('thead').children('tr:first').children('th').each(function() { + $th = $(this); + cols.push($.extend({ + text: $th.html(), + flex: false || $th.hasClass('flex-col'), + width: 'auto', + cssClass: $th.attr('class'), + css: $th.attr('style'), + type: 'string', + ignore: $th.hasClass('ignore'), + sort: !$th.hasClass('sort-disabled'), + mergeRows: $th.attr('merge-rows') + }, $th.data())); + }); + + $t.children('tbody').children('tr').each(function() { + $tr = $(this); + row = $.extend({ + data: [], + checked: false, + cssClass: $tr.attr('class'), + css: $tr.attr('style'), + id: $tr.attr('id') + }, $tr.data()); + + $tr.children('td').each(function() { + $td = $(this); + colSpan = $td.attr('colspan') || 1; + row.data.push($.extend({ + cssClass: $td.attr('class'), + css: $td.attr('style'), + text: $td.html(), + colSpan: colSpan, + title: $td.attr('title') + }, $td.data())); + + if(colSpan > 1) { + for(i = 1; i < colSpan; i++) { + row.data.push({ + empty: true + }); + } + } + }); + + rows.push(row); + }); + + var $tfoot = $t.children('tfoot'); + if($tfoot.length) { + data.footer = $('
            ').append($tfoot); + } + } else { + throw new Error('No data avaliable!'); + } + } + + data.flexStart = -1; + data.flexEnd = -1; + + cols = data.cols; + data.colsLength = cols.length; + for(var i = 0; i < data.colsLength; ++i) { + var col = cols[i]; + if(col.flex) { + if(data.flexStart < 0) { + data.flexStart = i; + } + + data.flexEnd = i; + } + } + + if(data.flexStart === 0 && data.flexEnd === data.colsLength) { + data.flexStart = -1; + data.flexEnd = -1; + } + + data.flexArea = data.flexStart >= 0; + data.fixedRight = data.flexEnd >= 0 && data.flexEnd < (data.colsLength - 1); + data.fixedLeft = data.flexStart > 0; + if(data.flexStart < 0 && data.flexEnd < 0) { + data.fixedLeft = true; + data.flexStart = data.colsLength; + data.flexEnd = data.colsLength; + } + + this.data = data; + + this.callEvent('afterLoad', { + data: data + }); + + this.render(); + }; + + // Render datatable + DataTable.prototype.render = function() { + var that = this; + var $datatable = that.$datatable || (that.isTable ? $('
            ') : that.$datatable), + options = that.options, + data = that.data, + cols = that.data.cols, + rows = that.data.rows; + var checkable = options.checkable, + $left, + i, + $right, + $flex, + dataRowSpan = '
            ', + dataHeadSpan = '
            '; + + $datatable.children('.datatable-head, .datatable-rows, .scroll-wrapper').remove(); + + // Set css class to datatable by options + $datatable.toggleClass('sortable', options.sortable); + // $datatable.toggleClass('customizable', options.customizable); + + // Head + var $head = $('
            '), + $tr, + $th, + col; + $left = $(''); + $right = $(''); + $flex = $(''); + for(i = 0; i < cols.length; i++) { + col = cols[i]; + $tr = i < data.flexStart ? $left : ((i >= data.flexStart && i <= data.flexEnd) ? $flex : $right); + if(i === 0 && checkable) { + $tr.append(''); + } + if(col.ignore) continue; + + $th = $(''); + + // set sort class + $th.toggleClass('sort-down', col.sort === 'down') + .toggleClass('sort-up', col.sort === 'up') + .toggleClass('sort-disabled', col.sort === false); + + $th.addClass(col.cssClass) + .addClass(col.colClass) + .html(col.text) + .attr({ + 'data-index': i, + 'data-type': col.type, + style: col.css + }).css('width', col.width); + $tr.append($th); + } + + var $headSpan; + if(data.fixedLeft) { + $headSpan = $(dataHeadSpan); + $headSpan.addClass('fixed-left') + // .find('.datatable-wrapper') + // .append('
            ') + .find('table') + .addClass(options.tableClass) + .find('thead').append($left); + $head.append($headSpan); + } + if(data.flexArea) { + $headSpan = $(dataHeadSpan); + $headSpan.addClass('flexarea') + .find('.datatable-wrapper') + .append('
            ') + .find('table') + .addClass(options.tableClass) + .find('thead').append($flex); + $head.append($headSpan); + } + if(data.fixedRight) { + $headSpan = $(dataHeadSpan); + $headSpan.addClass('fixed-right') + // .find('.datatable-wrapper') + // .append('
            ') + .find('table') + .addClass(options.tableClass) + .find('thead').append($right); + $head.append($headSpan); + } + $datatable.append($head); + + // Rows + var $rows = $('
            '); + var $leftRow, + $flexRow, + $rightRow, + // $tr, + $td, + $cTd, + row, + rowLen = rows.length, + rowCol, + rowColLen; + $left = $(''); + $right = $(''); + $flex = $(''); + + for(var r = 0; r < rowLen; ++r) { + row = rows[r]; + + // format row + if(typeof row.id === 'undefined') { + row.id = r; + } + row.index = r; + + $leftRow = $(''); + $leftRow.addClass(row.cssClass) + .toggleClass(options.checkedClass, !!row.checked) + .attr({ + 'data-index': r, + 'data-id': row.id + }); + $flexRow = $leftRow.clone().addClass('datatable-row-flex'); + $rightRow = $leftRow.clone().addClass('datatable-row-right'); + $leftRow.addClass('datatable-row-left'); + + rowColLen = row.data.length; + for(i = 0; i < rowColLen; ++i) { + rowCol = row.data[i]; + if(i > 0 && rowCol.empty) { + continue; + } + + $tr = i < data.flexStart ? $leftRow : ((i >= data.flexStart && i <= data.flexEnd) ? $flexRow : $rightRow); + if(i === 0 && checkable) { + $cTd = $(''); + if(options.checkboxName) { + $cTd.append(''); + } + $tr.append($cTd); + } + + if(cols[i].ignore) continue; + + // format row column + if(!$.isPlainObject(rowCol)) { + rowCol = { + text: rowCol, + row: r, + index: i + }; + } else { + rowCol.row = r; + rowCol.index = i; + } + row.data[i] = rowCol; + + $td = $(''); + + $td.html(rowCol.text) + .addClass(rowCol.cssClass) + .addClass(cols[i].colClass) + .attr('colspan', rowCol.colSpan) + .attr({ + 'data-row': r, + 'data-index': i, + 'data-flex': false, + 'data-type': cols[i].type, + style: rowCol.css, + title: rowCol.title || '' + }).css('width', cols[i].width); + + + $tr.append($td); + } + + $left.append($leftRow); + $flex.append($flexRow); + $right.append($rightRow); + } + + + var $rowSpan; + if(data.fixedLeft) { + $rowSpan = $(dataRowSpan); + $rowSpan.addClass('fixed-left') + .find('table') + .addClass(options.tableClass) + .append($left); + $rows.append($rowSpan); + } + if(data.flexArea) { + $rowSpan = $(dataRowSpan); + $rowSpan.addClass('flexarea') + .find('.datatable-wrapper') + .append('
            ') + .find('table') + .addClass(options.tableClass) + .append($flex); + $rows.append($rowSpan); + } + if(data.fixedRight) { + $rowSpan = $(dataRowSpan); + $rowSpan.addClass('fixed-right') + .find('table') + .addClass(options.tableClass) + .append($right); + $rows.append($rowSpan); + } + $datatable.append($rows); + + if(data.flexArea) { + $datatable.append('
            '); + } + + var $oldFooter = $datatable.children('.datatable-footer').detach(); + if(data.footer) { + $datatable.append($('').css(t.extend({zIndex:1060,position:"absolute",top:e,left:i,pointerEvents:"none"},u.options.rangeStyle)).appendTo(t("body")))),n.css(s),clearTimeout(a),a=setTimeout(b,10),d=!1))},$=function(e){t(document).off(g),clearTimeout(y),v&&(v=!1,n&&n.remove(),d||s&&(clearTimeout(a),b(),s=null),u.callEvent("finish",{selections:u.selections,selected:u.getSelectedArray()}),e.preventDefault())},w=function(o){if(v)return $(o);var s=t.zui.getMouseButtonCode(r.mouseButton);if(!(s>-1&&o.button!==s||u.altKey||3===o.which||u.callEvent("start",o)===!1)){var l=u.$children=u.$.find(r.selector);l.addClass("slectable-item");var c=u.multiKey?"multi":r.clickBehavior;if("multi"===c?u.toggle(o.target):"single"===c?(u.unselect(),u.select(o.target)):"toggle"===c&&u.toggle(o.target,null,function(t){u.unselect()}),u.callEvent("startDrag",o)===!1)return void u.callEvent("finish",{selections:u.selections,selected:u.getSelectedArray()});e=o.pageX,i=o.pageY,n=null,d=!0,v=!0,t(document).on("mousemove"+g,C).on("mouseup"+g,$),y=setTimeout(function(){t(document).on(m,$)},10),o.preventDefault()}},F=r.container&&"default"!==r.container?t(r.container):this.$;r.trigger?F.on(m,r.trigger,w):F.on(m,w),t(document).on("keydown",function(t){var e=t.keyCode;17===e||91==e?u.multiKey=e:18===e&&(u.altKey=!0)}).on("keyup",function(t){u.multiKey=!1,u.altKey=!1})},i.prototype.callEvent=function(e,i){var n=t.Event(e+"."+this.name);this.$.trigger(n,i);var o=n.result,s=this.options[e];return t.isFunction(s)&&(o=s.apply(this,t.isArray(i)?i:[i])),o},t.fn.selectable=function(n){return this.each(function(){var o=t(this),s=o.data(e),l="object"==typeof n&&n;s||o.data(e,s=new i(this,l)),"string"==typeof n&&s[n]()})},t.fn.selectable.Constructor=i,t(function(){t('[data-ride="selectable"]').selectable()})}(jQuery); \ No newline at end of file diff --git a/root/res/zui/lib/sortable/zui.sortable.js b/root/res/zui/lib/sortable/zui.sortable.js new file mode 100644 index 0000000..57e98bb --- /dev/null +++ b/root/res/zui/lib/sortable/zui.sortable.js @@ -0,0 +1,185 @@ +/*! + * ZUI: 排序 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +/* ======================================================================== + * ZUI: sortable.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + ++ function($, window, document) { + 'use strict'; + + if(!$.fn.droppable) { + console.error('Sortable requires droppable.js'); + return; + } + + var NAME = 'zui.sortable', + DEFAULTS = { + selector : 'li,div', + dragCssClass : 'invisible', + sortingClass : 'sortable-sorting' + }, + STR_ORDER = 'order'; + + var Sortable = function(element, options) { + var that = this; + that.$ = $(element); + that.options = $.extend({}, DEFAULTS, that.$.data(), options); + that.init(); + }; + + Sortable.DEFAULTS = DEFAULTS; + Sortable.NAME = NAME; + + Sortable.prototype.init = function() { + var that = this, + $root = that.$, + options = that.options, + selector = options.selector, + sortingClass = options.sortingClass, + dragCssClass = options.dragCssClass, + isReverse = options.reverse; + + var markOrders = function($items) { + $items = $items || that.getItems(1); + var orders = []; + + $items.each(function() { + var order = $(this).data(STR_ORDER); + if(typeof order === 'number') { + orders.push(order); + } + }); + + orders.sort(function(a, b) { + return a - b; + }); + + var itemsCount = $items.length; + while(orders.length < itemsCount) { + orders.push(orders.length ? (orders[orders.length - 1] + 1) : 0); + } + + if(isReverse) { + orders.reverse(); + } + + that.maxOrder = 0; + $items.each(function(idx) { + that.maxOrder = Math.max(that.maxOrder, orders[idx]); + $(this).data(STR_ORDER, orders[idx]).attr('data-' + STR_ORDER, orders[idx]); + }); + }; + + markOrders(); + + $root.droppable({ + handle : options.trigger, + target : selector, + selector : selector, + container : $root, + always : options.always, + flex : true, + lazy : options.lazy, + canMoveHere : options.canMoveHere, + nested : options.nested, + before : options.before, + mouseButton : options.mouseButton, + start: function(e) { + if(dragCssClass) e.element.addClass(dragCssClass); + that.trigger('start', e); + }, + drag: function(e) { + $root.addClass(sortingClass); + if(e.isIn) { + var $ele = e.element, + $target = e.target, + eleOrder = $ele.data(STR_ORDER), + targetOrder = $target.data(STR_ORDER); + if (!eleOrder && eleOrder !== 0) { + that.maxOrder++; + eleOrder = that.maxOrder; + $ele.attr('data-' + STR_ORDER, eleOrder); + } + if (!targetOrder && targetOrder !== 0) { + that.maxOrder++; + targetOrder = that.maxOrder; + $target.attr('data-' + STR_ORDER, targetOrder); + } + if(eleOrder == targetOrder) return; + else if(eleOrder > targetOrder) { + $target[isReverse ? 'after' : 'before']($ele); + } else { + $target[isReverse ? 'before' : 'after']($ele); + } + var $items = that.getItems(1); + markOrders($items); + that.trigger(STR_ORDER, { + list: $items, + element: $ele + }); + } + }, + finish: function(e) { + if(dragCssClass && e.element) e.element.removeClass(dragCssClass); + $root.removeClass(sortingClass); + that.trigger('finish', { + list: that.getItems(1), + element: e.element + }); + } + }); + }; + + Sortable.prototype.destroy = function() { + this.$.droppable('destroy'); + this.$.data(NAME, null); + }; + + Sortable.prototype.reset = function() { + this.destroy(); + this.init(); + }; + + Sortable.prototype.getItems = function(onlyElements) { + var $items = this.$.children(this.options.selector).not('.drag-shadow'); + if(!onlyElements) { + return $items.map(function() { + var $item = $(this); + return { + item: $item, + order: $item.data('order') + }; + }); + } + return $items; + }; + + Sortable.prototype.trigger = function(name, params) { + return $.zui.callEvent(this.options[name], params, this); + }; + + $.fn.sortable = function(option) { + return this.each(function() { + var $this = $(this); + var data = $this.data(NAME); + var options = typeof option == 'object' && option; + + if(!data) $this.data(NAME, (data = new Sortable(this, options))); + else if(typeof option == 'object') data.reset(); + + if(typeof option == 'string') data[option](); + }); + }; + + $.fn.sortable.Constructor = Sortable; +}(jQuery, window, document); + diff --git a/root/res/zui/lib/sortable/zui.sortable.min.js b/root/res/zui/lib/sortable/zui.sortable.min.js new file mode 100644 index 0000000..16447f1 --- /dev/null +++ b/root/res/zui/lib/sortable/zui.sortable.min.js @@ -0,0 +1,7 @@ +/*! + * ZUI: 排序 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ ++function(t,e,r){"use strict";if(!t.fn.droppable)return void console.error("Sortable requires droppable.js");var a="zui.sortable",n={selector:"li,div",dragCssClass:"invisible",sortingClass:"sortable-sorting"},o="order",s=function(e,r){var a=this;a.$=t(e),a.options=t.extend({},n,a.$.data(),r),a.init()};s.DEFAULTS=n,s.NAME=a,s.prototype.init=function(){var e=this,r=e.$,a=e.options,n=a.selector,s=a.sortingClass,i=a.dragCssClass,l=a.reverse,d=function(r){r=r||e.getItems(1);var a=[];r.each(function(){var e=t(this).data(o);"number"==typeof e&&a.push(e)}),a.sort(function(t,e){return t-e});for(var n=r.length;a.lengthu?n[l?"after":"before"](a):n[l?"before":"after"](a);var f=e.getItems(1);d(f),e.trigger(o,{list:f,element:a})}},finish:function(t){i&&t.element&&t.element.removeClass(i),r.removeClass(s),e.trigger("finish",{list:e.getItems(1),element:t.element})}})},s.prototype.destroy=function(){this.$.droppable("destroy"),this.$.data(a,null)},s.prototype.reset=function(){this.destroy(),this.init()},s.prototype.getItems=function(e){var r=this.$.children(this.options.selector).not(".drag-shadow");return e?r:r.map(function(){var e=t(this);return{item:e,order:e.data("order")}})},s.prototype.trigger=function(e,r){return t.zui.callEvent(this.options[e],r,this)},t.fn.sortable=function(e){return this.each(function(){var r=t(this),n=r.data(a),o="object"==typeof e&&e;n?"object"==typeof e&&n.reset():r.data(a,n=new s(this,o)),"string"==typeof e&&n[e]()})},t.fn.sortable.Constructor=s}(jQuery,window,document); \ No newline at end of file diff --git a/root/res/zui/lib/tabs/zui.tabs.css b/root/res/zui/lib/tabs/zui.tabs.css new file mode 100644 index 0000000..18ebcc8 --- /dev/null +++ b/root/res/zui/lib/tabs/zui.tabs.css @@ -0,0 +1,146 @@ +/*! + * ZUI: 标签页管理器 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +.tabs { + position: relative; + min-height: 400px; + } +.tabs-navbar { + padding: 4px 4px 0 4px; + } +.tabs-nav { + height: 30px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border-bottom: none; + border-bottom: 1px solid #ddd; + } +.tab-nav-item { + width: 160px; + min-width: 0; + max-width: 160px; + padding-right: 2px; + margin-bottom: 0; + border: none; + } +.tab-nav-item:hover { + min-width: 95px; + } +.tab-nav-link { + position: relative; + height: 30px; + margin: 0; + overflow: hidden; + background-color: rgba(255, 255, 255, .65); + background-color: #e5e5e5; + border-color: #ddd; + border-bottom: none; + border-radius: 2px 2px 0 0; + } +.tab-nav-link > .title { + position: absolute; + top: 5px; + right: 5px; + left: 30px; + display: block; + overflow: hidden; + font-size: 14px; + line-height: 20px; + text-overflow: ellipsis; + white-space: nowrap; + } +.tab-nav-link > .icon { + position: absolute; + top: 5px; + left: 5px; + display: block; + width: 20px; + height: 20px; + line-height: 20px; + text-align: center; + opacity: .8; + } +.tab-nav-item.loading .tab-nav-link > .icon:before { + content: '\e97b'; + -webkit-animation: spin 2s infinite linear; + -o-animation: spin 2s infinite linear; + animation: spin 2s infinite linear; + } +.tab-nav-link > .close { + position: absolute; + top: 5px; + right: 5px; + width: 20px; + height: 20px; + font-weight: 200; + line-height: 16px; + text-align: center; + text-shadow: none; + visibility: hidden; + border-radius: 4px; + opacity: 0; + -webkit-transition: all .2s; + -o-transition: all .2s; + transition: all .2s; + } +.tab-nav-link > .close:hover { + color: #fff; + background-color: #ea644a; + } +.tab-nav-link:hover > .title { + right: 25px; + } +.tab-nav-link:hover > .close { + visibility: visible; + opacity: 1; + } +.tab-nav-link.not-closable > .close { + display: none; + } +.nav-tabs.tabs-nav > li > a, +.nav-tabs.tabs-nav > li > a:hover, +.nav-tabs.tabs-nav > li > a:focus { + border-color: #ddd #ddd transparent #ddd; + } +.tab-nav-condensed .tab-nav-link > .title { + left: 5px; + text-overflow: initial; + } +.tab-nav-condensed .tab-nav-link > .icon { + display: none; + } +.tabs-container { + position: absolute; + top: 34px; + right: 0; + bottom: 0; + left: 0; + } +.tabs-container > .tab-pane { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + display: none; + } +.tabs-container > .tab-pane.active { + display: block; + } +.tab-iframe-cover { + display: none; + } +.tabs-show-contextmenu .tab-iframe-cover { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + display: block; + } diff --git a/root/res/zui/lib/tabs/zui.tabs.js b/root/res/zui/lib/tabs/zui.tabs.js new file mode 100644 index 0000000..5b98268 --- /dev/null +++ b/root/res/zui/lib/tabs/zui.tabs.js @@ -0,0 +1,488 @@ +/*! + * ZUI: 标签页管理器 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +/* ======================================================================== + * ZUI: tabs.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2017-2018 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function($) { + 'use strict'; + + /** + * Tab object + * @param {Object | String} tab + */ + var Tab = function(tab) { + var that = this; + if(typeof tab === 'string') { + that.url = tab; + } else if($.isPlainObject(tab)) { + $.extend(that, tab); + } + if(!that.id) { + that.id = $.zui.uuid(); + } + if(!that.type) { + if(that.iframe) { + that.type = 'iframe'; + that.url = that.url || that.iframe; + } else if(that.ajax) { + that.type = 'ajax'; + that.url = that.url || ($.isPlainObject(that.ajax) ? that.ajax.url : that.ajax); + } else if(that.url) { + that.type = tab.ajax ? 'ajax' : 'iframe'; + } else { + that.type = 'custom'; + } + } + that.createTime = new Date().getTime(); + that.openTime = 0; + that.onCreate && that.onCreate.call(that); + }; + + Tab.prototype.open = function() { + var that = this; + that.openTime = new Date().getTime(); + that.onOpen && that.onOpen.call(that); + }; + + Tab.prototype.close = function() { + var that = this; + that.openTime = 0; + that.onClose && that.onClose.call(that); + }; + + Tab.create = function(data) { + if (data instanceof Tab) { + return data; + } + return new Tab(data); + }; + + var NAME = 'zui.tabs'; // model name + var DEFAULTS = { + tabs: [], + defaultTabIcon: 'icon-window', + contextMenu: true, + errorTemplate: '
            {0}
            ', + // messagerOptions: null, + showMessage: true, + navTemplate: '', + containerTemplate: '
            ' + }; + + var LANG = { + zh_cn: { + reload: '重新加载', + close: '关闭', + closeOthers: '关闭其他标签页', + closeRight: '关闭右侧标签页', + reopenLast: '恢复上次关闭的标签页', + errorCannotFetchFromRemote: '无法从远程服务器({0})获取内容。' + }, + zh_tw: { + reload: '重新加載', + close: '關閉', + closeOthers: '關閉其他標籤頁', + closeRight: '關閉右側標籤頁', + reopenLast: '恢復上次關閉的標籤頁', + errorCannotFetchFromRemote: '無法從遠程服務器({0})獲取內容。' + }, + en: { + reload: 'Reload', + close: 'Close', + closeOthers: 'Close others', + closeRight: 'Close right', + reopenLast: 'Reopen last', + errorCannotFetchFromRemote: 'Cannot fetch data from remote server {0}.' + } + }; + + // The tabs model class + var Tabs = function(element, options) { + var that = this; + that.name = NAME; + that.$ = $(element); + + options = that.options = $.extend({}, DEFAULTS, this.$.data(), options); + var lang = options.lang || 'zh_cn'; + that.lang = $.isPlainObject(lang) ? ($.extend(true, {}, LANG[lang.lang || $.zui.clientLang()], lang)) : LANG[lang]; + + // Initialize here + var $navbar = that.$.find('.tabs-navbar'); + if (!$navbar.length) { + $navbar = $(options.navTemplate).appendTo(that.$); + } + that.$navbar = $navbar; + + var $nav = $navbar.find('.tabs-nav'); + if (!$nav.length) { + $nav = $('').appendTo($navbar); + } + that.$nav = $nav; + + var $tabs = that.$.find('.tabs-container'); + if (!$tabs.length) { + $tabs = $(options.containerTemplate).appendTo(that.$); + } + that.$tabs = $tabs; + + that.activeTabId = options.defaultTab; + var tabs = options.tabs || []; + that.tabs = {}; + $.each(tabs, function(index, item) { + var tab = Tab.create(item); + that.tabs[tab.id] = tab; + + if (!that.activeTabId) { + that.activeTabId = tab.id; + } + + that.renderTab(tab); + }); + that.closedTabs = []; + + that.open(that.getActiveTab()); + + $nav.on('click.' + NAME, '.tab-nav-link', function () { + that.open(that.getTab($(this).data('id'))); + }).on('click.' + NAME, '.tab-nav-close', function (e) { + that.close($(this).closest('.tab-nav-link').data('id')); + e.stopPropagation(); + }).on('resize.' + NAME, function () { + that.adjustNavs(); + }); + + if (options.contextMenu) { + $nav.contextmenu({ + selector: '.tab-nav-link', + itemsCreator: function (e) { + return that.createMenuItems(that.getTab($(this).data('id'))); + }, + onShow: function () { + that.$.addClass('tabs-show-contextmenu'); + }, + onHide: function () { + that.$.removeClass('tabs-show-contextmenu'); + } + }); + } + }; + + Tabs.prototype.createMenuItems = function (tab) { + var that = this; + var lang = that.lang; + return [{ + label: lang.reload, + onClick: function () { + that.open(tab, true); + } + }, '-', { + label: lang.close, + disabled: tab.forbidClose, + onClick: function () { + that.close(tab.id); + } + }, { + label: lang.closeOthers, + disabled: that.$nav.find('.tab-nav-item:not(.hidden)').length <= 1, + onClick: function () { + that.closeOthers(tab.id); + } + }, { + label: lang.closeRight, + disabled: !$('#tab-nav-item-' + tab.id).next('.tab-nav-item:not(.hidden)').length, + onClick: function () { + that.closeRight(tab.id); + } + }, '-', { + label: lang.reopenLast, + disabled: !that.closedTabs.length, + onClick: function () { + that.reopen(); + } + }]; + }; + + Tabs.prototype.adjustNavs = function (immediately) { + var that = this; + if (!immediately) { + if (that.adjustNavsTimer) { + clearTimeout(that.adjustNavsTimer); + } + that.adjustNavsTimer = setTimeout(function() { + that.adjustNavs(true); + }, 50); + return; + } + if (that.adjustNavsTimer) { + that.adjustNavsTimer = null; + } + var $nav = that.$nav; + var $navItems = $nav.find('.tab-nav-item:not(.hidden)'); + var totalWidth = $nav.width(); + var totalCount = $navItems.length; + var maxWidth = Math.floor(totalWidth/totalCount); + if(maxWidth < 96) { + maxWidth = Math.floor((totalWidth-96)/(totalCount-1)) + } + $nav.toggleClass('tab-nav-condensed', maxWidth <= 50); + $navItems.css('max-width', maxWidth); + }; + + Tabs.prototype.renderTab = function(tab, beforeTabId) { + var that = this; + var $nav = that.$nav; + var $tabNav = $('#tab-nav-item-' + tab.id); + if (!$tabNav.length) { + var $a = $('×').attr({ + href: '#tabs-item-' + tab.id, + 'data-id': tab.id + }); + $tabNav = $('
          • ').append($a).appendTo(that.$nav); + if (beforeTabId) { + var $before$nav = $('#tab-nav-item-' + beforeTabId); + if ($before$nav.length) { + $tabNav.insertAfter($before$nav); + } + } + that.adjustNavs(); + } + var $a = $tabNav.find('a').attr('title', tab.desc).toggleClass('not-closable', !!tab.forbidClose); + $a.find('.icon').attr('class', 'icon ' + (tab.icon || that.options.defaultTabIcon)); + $a.find('.title').text(tab.title || tab.defaultTitle || ''); + return $tabNav; + }; + + Tabs.prototype.getActiveTab = function() { + var that = this; + return that.activeTabId ? that.tabs[that.activeTabId] : null; + }; + + Tabs.prototype.getTab = function(tabId) { + var that = this; + if (!tabId) { + return that.getActiveTab(); + } + if (typeof tabId === 'object') { + tabId = tabId.id; + } + return that.tabs[tabId]; + }; + + Tabs.prototype.close = function(tabId, forceClose) { + var that = this; + var tab = that.getTab(tabId); + if (tab && (forceClose || !tab.forbidClose)) { + $('#tab-nav-item-' + tab.id).remove(); + $('#tab-' + tab.id).remove(); + tab.close(); + delete that.tabs[tab.id]; + that.closedTabs.push(tab); + that.$.callComEvent(that, 'onClose', tab); + + var lastTab; + $.each(that.tabs, function (tabId, tab) { + if (!lastTab || lastTab.openTime < tab.openTime) { + lastTab = tab; + } + }); + lastTab && that.open(lastTab); + } + }; + + Tabs.prototype.open = function(tab, forceReload) { + var that = this; + + if (!(tab instanceof Tab)) { + tab = Tab.create(tab); + } + + var $tabNav = that.renderTab(tab); + that.$nav.find('.tab-nav-item.active').removeClass('active'); + $tabNav.addClass('active'); + + var $tabPane = $('#tab-' + tab.id); + if (!$tabPane.length) { + $tabPane = $('
            ').appendTo(that.$tabs); + } + that.$tabs.find('.tab-pane.active').removeClass('active'); + $tabPane.addClass('active'); + + tab.open(); + that.activeTabId = tab.id; + that.tabs[tab.id] = tab; + + if (forceReload || !tab.loaded) { + that.reload(tab); + } + + that.$.callComEvent(that, 'onOpen', tab); + }; + + Tabs.prototype.showMessage = function (message, type) { + $.zui.messager.show(message, $.extend({ + placement: 'center' + }, this.options.messagerOptions, { + type: type + })); + }; + + Tabs.prototype.reload = function(tab) { + var that = this; + + if (typeof tab === 'string') { + tab = that.getTab(tab); + } else if (!tab) { + tab = that.getActiveTab(); + } + + if (!tab) { + return; + } + + if (!tab.openTime) { + return that.open(tab); + } + + var $tabNav = $('#tab-nav-item-' + tab.id).addClass('loading').removeClass('has-error'); + var $tabPane = $('#tab-' + tab.id).addClass('loading').removeClass('has-error'); + var afterRefresh = function (content, error) { + if (!tab.openTime) { + return; + } + $tabNav.removeClass('loading'); + $tabPane.removeClass('loading'); + that.$.callComEvent(that, 'onLoad', tab); + if(typeof content === 'string' || content instanceof $) { + if (tab.contentConverter) { + content = tab.contentConverter(content, tab); + } + $tabPane.empty().append(content); + if (!tab.title) { + content = $tabPane.text().replace(/\n/g, ''); + tab.title = content.length > 10 ? content.substr(0, 10) : content; + that.renderTab(tab); + } + } + if (error) { + $tabNav.addClass('has-error'); + $tabPane.addClass('has-error'); + var showMessage = that.options.showMessage; + if (showMessage) { + if ($.isFunction(showMessage)) { + error = showMessage(error); + } + that.showMessage(error, 'danger'); + } + if (!content) { + $tabPane.html(that.options.errorTemplate.format(error)); + } + } + tab.loaded = new Date().getTime(); + }; + if (tab.type === 'ajax') { + var ajaxOption = { + type: 'get', + url: tab.url, + error: function(jqXHR, textStatus, errorThrown) { + afterRefresh(false, that.lang.errorCannotFetchFromRemote.format(tab.url)); + }, + success: function(data) { + afterRefresh(data); + } + }; + if($.isPlainObject(tab.ajax)) { + ajaxOption = $.extend(ajaxOption, tab.ajax); + } + $.ajax(ajaxOption); + } else if (tab.type === 'iframe') { + try { + var iframeName = 'tab-iframe-' + tab.id; + var $iframe = $(''); + $iframe.appendTo($tabPane.empty()); + $('
            ').appendTo($tabPane); + var frame = document.getElementById(iframeName); + frame.onload = frame.onreadystatechange = function() { + if(this.readyState && this.readyState != 'complete') return; + afterRefresh(); + var contentDocument = frame.contentDocument; + if (contentDocument && !tab.title) { + tab.title = contentDocument.title; + that.renderTab(tab); + } + }; + } catch (e) { + afterRefresh(); + } + } else { + var content = tab.content || tab.custom; + if (typeof content === 'function') { + content = content(tab, afterRefresh, that); + if (content !== true) { + afterRefresh(content); + } + } else { + afterRefresh(content); + } + } + }; + + Tabs.prototype.closeOthers = function(tabId) { + var that = this; + that.$nav.find('.tab-nav-link:not(.hidden)').each(function() { + var thisTabId = $(this).data('id'); + if (thisTabId !== tabId) { + that.close(thisTabId); + } + }); + }; + + Tabs.prototype.closeRight = function(tabId) { + var $tabNav = $('#tab-nav-item-' + tabId); + var $rightNav = $tabNav.next('.tab-nav-item:not(.hidden)'); + while ($rightNav.length) { + this.close($rightNav.data('id')); + $rightNav = $tabNav.next('.tab-nav-item:not(.hidden)'); + } + }; + + Tabs.prototype.closeAll = function() { + var that = this; + that.$nav.find('.tab-nav-link:not(.hidden)').each(function() { + that.close($(this).data('id')); + }); + }; + + Tabs.prototype.reopen = function() { + var that = this; + if(that.closedTabs.length) { + that.open(that.closedTabs.pop()); + } + }; + + // Extense jquery element + $.fn.tabs = function(option) { + return this.each(function() { + var $this = $(this); + var data = $this.data(NAME); + var options = typeof option == 'object' && option; + + if(!data) $this.data(NAME, (data = new Tabs(this, options))); + + if(typeof option == 'string') data[option](); + }); + }; + + Tabs.NAME = NAME; + $.fn.tabs.Constructor = Tabs; +}(jQuery)); + diff --git a/root/res/zui/lib/tabs/zui.tabs.min.css b/root/res/zui/lib/tabs/zui.tabs.min.css new file mode 100644 index 0000000..2bc5423 --- /dev/null +++ b/root/res/zui/lib/tabs/zui.tabs.min.css @@ -0,0 +1,6 @@ +/*! + * ZUI: 标签页管理器 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */.tabs{position:relative;min-height:400px}.tabs-navbar{padding:4px 4px 0 4px}.tabs-nav{height:30px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-bottom:none;border-bottom:1px solid #ddd}.tab-nav-item{width:160px;min-width:0;max-width:160px;padding-right:2px;margin-bottom:0;border:none}.tab-nav-item:hover{min-width:95px}.tab-nav-link{position:relative;height:30px;margin:0;overflow:hidden;background-color:rgba(255,255,255,.65);background-color:#e5e5e5;border-color:#ddd;border-bottom:none;border-radius:2px 2px 0 0}.tab-nav-link>.title{position:absolute;top:5px;right:5px;left:30px;display:block;overflow:hidden;font-size:14px;line-height:20px;text-overflow:ellipsis;white-space:nowrap}.tab-nav-link>.icon{position:absolute;top:5px;left:5px;display:block;width:20px;height:20px;line-height:20px;text-align:center;opacity:.8}.tab-nav-item.loading .tab-nav-link>.icon:before{content:'\e97b';-webkit-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}.tab-nav-link>.close{position:absolute;top:5px;right:5px;width:20px;height:20px;font-weight:200;line-height:16px;text-align:center;text-shadow:none;visibility:hidden;border-radius:4px;opacity:0;-webkit-transition:all .2s;-o-transition:all .2s;transition:all .2s}.tab-nav-link>.close:hover{color:#fff;background-color:#ea644a}.tab-nav-link:hover>.title{right:25px}.tab-nav-link:hover>.close{visibility:visible;opacity:1}.tab-nav-link.not-closable>.close{display:none}.nav-tabs.tabs-nav>li>a,.nav-tabs.tabs-nav>li>a:focus,.nav-tabs.tabs-nav>li>a:hover{border-color:#ddd #ddd transparent #ddd}.tab-nav-condensed .tab-nav-link>.title{left:5px;text-overflow:initial}.tab-nav-condensed .tab-nav-link>.icon{display:none}.tabs-container{position:absolute;top:34px;right:0;bottom:0;left:0}.tabs-container>.tab-pane{position:absolute;top:0;right:0;bottom:0;left:0;display:none}.tabs-container>.tab-pane.active{display:block}.tab-iframe-cover{display:none}.tabs-show-contextmenu .tab-iframe-cover{position:absolute;top:0;right:0;bottom:0;left:0;display:block} \ No newline at end of file diff --git a/root/res/zui/lib/tabs/zui.tabs.min.js b/root/res/zui/lib/tabs/zui.tabs.min.js new file mode 100644 index 0000000..49edee0 --- /dev/null +++ b/root/res/zui/lib/tabs/zui.tabs.min.js @@ -0,0 +1,7 @@ +/*! + * ZUI: 标签页管理器 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ +!function(e){"use strict";var t=function(t){var a=this;"string"==typeof t?a.url=t:e.isPlainObject(t)&&e.extend(a,t),a.id||(a.id=e.zui.uuid()),a.type||(a.iframe?(a.type="iframe",a.url=a.url||a.iframe):a.ajax?(a.type="ajax",a.url=a.url||(e.isPlainObject(a.ajax)?a.ajax.url:a.ajax)):a.url?a.type=t.ajax?"ajax":"iframe":a.type="custom"),a.createTime=(new Date).getTime(),a.openTime=0,a.onCreate&&a.onCreate.call(a)};t.prototype.open=function(){var e=this;e.openTime=(new Date).getTime(),e.onOpen&&e.onOpen.call(e)},t.prototype.close=function(){var e=this;e.openTime=0,e.onClose&&e.onClose.call(e)},t.create=function(e){return e instanceof t?e:new t(e)};var a="zui.tabs",n={tabs:[],defaultTabIcon:"icon-window",contextMenu:!0,errorTemplate:'
            {0}
            ',showMessage:!0,navTemplate:'',containerTemplate:'
            '},o={zh_cn:{reload:"重新加载",close:"关闭",closeOthers:"关闭其他标签页",closeRight:"关闭右侧标签页",reopenLast:"恢复上次关闭的标签页",errorCannotFetchFromRemote:"无法从远程服务器({0})获取内容。"},zh_tw:{reload:"重新加載",close:"關閉",closeOthers:"關閉其他標籤頁",closeRight:"關閉右側標籤頁",reopenLast:"恢復上次關閉的標籤頁",errorCannotFetchFromRemote:"無法從遠程服務器({0})獲取內容。"},en:{reload:"Reload",close:"Close",closeOthers:"Close others",closeRight:"Close right",reopenLast:"Reopen last",errorCannotFetchFromRemote:"Cannot fetch data from remote server {0}."}},i=function(i,s){var r=this;r.name=a,r.$=e(i),s=r.options=e.extend({},n,this.$.data(),s);var l=s.lang||"zh_cn";r.lang=e.isPlainObject(l)?e.extend(!0,{},o[l.lang||e.zui.clientLang()],l):o[l];var c=r.$.find(".tabs-navbar");c.length||(c=e(s.navTemplate).appendTo(r.$)),r.$navbar=c;var d=c.find(".tabs-nav");d.length||(d=e('').appendTo(c)),r.$nav=d;var v=r.$.find(".tabs-container");v.length||(v=e(s.containerTemplate).appendTo(r.$)),r.$tabs=v,r.activeTabId=s.defaultTab;var p=s.tabs||[];r.tabs={},e.each(p,function(e,a){var n=t.create(a);r.tabs[n.id]=n,r.activeTabId||(r.activeTabId=n.id),r.renderTab(n)}),r.closedTabs=[],r.open(r.getActiveTab()),d.on("click."+a,".tab-nav-link",function(){r.open(r.getTab(e(this).data("id")))}).on("click."+a,".tab-nav-close",function(t){r.close(e(this).closest(".tab-nav-link").data("id")),t.stopPropagation()}).on("resize."+a,function(){r.adjustNavs()}),s.contextMenu&&d.contextmenu({selector:".tab-nav-link",itemsCreator:function(t){return r.createMenuItems(r.getTab(e(this).data("id")))},onShow:function(){r.$.addClass("tabs-show-contextmenu")},onHide:function(){r.$.removeClass("tabs-show-contextmenu")}})};i.prototype.createMenuItems=function(t){var a=this,n=a.lang;return[{label:n.reload,onClick:function(){a.open(t,!0)}},"-",{label:n.close,disabled:t.forbidClose,onClick:function(){a.close(t.id)}},{label:n.closeOthers,disabled:a.$nav.find(".tab-nav-item:not(.hidden)").length<=1,onClick:function(){a.closeOthers(t.id)}},{label:n.closeRight,disabled:!e("#tab-nav-item-"+t.id).next(".tab-nav-item:not(.hidden)").length,onClick:function(){a.closeRight(t.id)}},"-",{label:n.reopenLast,disabled:!a.closedTabs.length,onClick:function(){a.reopen()}}]},i.prototype.adjustNavs=function(e){var t=this;if(!e)return t.adjustNavsTimer&&clearTimeout(t.adjustNavsTimer),void(t.adjustNavsTimer=setTimeout(function(){t.adjustNavs(!0)},50));t.adjustNavsTimer&&(t.adjustNavsTimer=null);var a=t.$nav,n=a.find(".tab-nav-item:not(.hidden)"),o=a.width(),i=n.length,s=Math.floor(o/i);s<96&&(s=Math.floor((o-96)/(i-1))),a.toggleClass("tab-nav-condensed",s<=50),n.css("max-width",s)},i.prototype.renderTab=function(t,a){var n=this,o=(n.$nav,e("#tab-nav-item-"+t.id));if(!o.length){var i=e('×').attr({href:"#tabs-item-"+t.id,"data-id":t.id});if(o=e('
          • ').append(i).appendTo(n.$nav),a){var s=e("#tab-nav-item-"+a);s.length&&o.insertAfter(s)}n.adjustNavs()}var i=o.find("a").attr("title",t.desc).toggleClass("not-closable",!!t.forbidClose);return i.find(".icon").attr("class","icon "+(t.icon||n.options.defaultTabIcon)),i.find(".title").text(t.title||t.defaultTitle||""),o},i.prototype.getActiveTab=function(){var e=this;return e.activeTabId?e.tabs[e.activeTabId]:null},i.prototype.getTab=function(e){var t=this;return e?("object"==typeof e&&(e=e.id),t.tabs[e]):t.getActiveTab()},i.prototype.close=function(t,a){var n=this,o=n.getTab(t);if(o&&(a||!o.forbidClose)){e("#tab-nav-item-"+o.id).remove(),e("#tab-"+o.id).remove(),o.close(),delete n.tabs[o.id],n.closedTabs.push(o),n.$.callComEvent(n,"onClose",o);var i;e.each(n.tabs,function(e,t){(!i||i.openTime').appendTo(o.$tabs)),o.$tabs.find(".tab-pane.active").removeClass("active"),s.addClass("active"),a.open(),o.activeTabId=a.id,o.tabs[a.id]=a,!n&&a.loaded||o.reload(a),o.$.callComEvent(o,"onOpen",a)},i.prototype.showMessage=function(t,a){e.zui.messager.show(t,e.extend({placement:"center"},this.options.messagerOptions,{type:a}))},i.prototype.reload=function(t){var a=this;if("string"==typeof t?t=a.getTab(t):t||(t=a.getActiveTab()),t){if(!t.openTime)return a.open(t);var n=e("#tab-nav-item-"+t.id).addClass("loading").removeClass("has-error"),o=e("#tab-"+t.id).addClass("loading").removeClass("has-error"),i=function(i,s){if(t.openTime){if(n.removeClass("loading"),o.removeClass("loading"),a.$.callComEvent(a,"onLoad",t),("string"==typeof i||i instanceof e)&&(t.contentConverter&&(i=t.contentConverter(i,t)),o.empty().append(i),t.title||(i=o.text().replace(/\n/g,""),t.title=i.length>10?i.substr(0,10):i,a.renderTab(t))),s){n.addClass("has-error"),o.addClass("has-error");var r=a.options.showMessage;r&&(e.isFunction(r)&&(s=r(s)),a.showMessage(s,"danger")),i||o.html(a.options.errorTemplate.format(s))}t.loaded=(new Date).getTime()}};if("ajax"===t.type){var s={type:"get",url:t.url,error:function(e,n,o){i(!1,a.lang.errorCannotFetchFromRemote.format(t.url))},success:function(e){i(e)}};e.isPlainObject(t.ajax)&&(s=e.extend(s,t.ajax)),e.ajax(s)}else if("iframe"===t.type)try{var r="tab-iframe-"+t.id,l=e('');l.appendTo(o.empty()),e('
            ').appendTo(o);var c=document.getElementById(r);c.onload=c.onreadystatechange=function(){if(!this.readyState||"complete"==this.readyState){i();var e=c.contentDocument;e&&!t.title&&(t.title=e.title,a.renderTab(t))}}}catch(d){i()}else{var v=t.content||t.custom;"function"==typeof v?(v=v(t,i,a),v!==!0&&i(v)):i(v)}}},i.prototype.closeOthers=function(t){var a=this;a.$nav.find(".tab-nav-link:not(.hidden)").each(function(){var n=e(this).data("id");n!==t&&a.close(n)})},i.prototype.closeRight=function(t){for(var a=e("#tab-nav-item-"+t),n=a.next(".tab-nav-item:not(.hidden)");n.length;)this.close(n.data("id")),n=a.next(".tab-nav-item:not(.hidden)")},i.prototype.closeAll=function(){var t=this;t.$nav.find(".tab-nav-link:not(.hidden)").each(function(){t.close(e(this).data("id"))})},i.prototype.reopen=function(){var e=this;e.closedTabs.length&&e.open(e.closedTabs.pop())},e.fn.tabs=function(t){return this.each(function(){var n=e(this),o=n.data(a),s="object"==typeof t&&t;o||n.data(a,o=new i(this,s)),"string"==typeof t&&o[t]()})},i.NAME=a,e.fn.tabs.Constructor=i}(jQuery); \ No newline at end of file diff --git a/root/res/zui/lib/treemap/zui.treemap.css b/root/res/zui/lib/treemap/zui.treemap.css new file mode 100644 index 0000000..e9501fb --- /dev/null +++ b/root/res/zui/lib/treemap/zui.treemap.css @@ -0,0 +1,120 @@ +/*! + * ZUI: 树形图 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +.treemap-data { + text-align: left; + } +.treemap-nodes { + position: relative; + display: table; + padding: 10px; + margin-right: auto; + margin-left: auto; + text-align: center; + -webkit-user-select: none; + -moz-user-select: none; + } +.treemap-node { + display: table-cell; + vertical-align: top; + } +.treemap-node-wrapper { + position: relative; + z-index: 5; + display: inline-block; + padding: 5px 10px; + border: 1px solid #808080; + border-radius: 1px; + } +a.treemap-node-wrapper { + color: #353535; + cursor: pointer; + } +a.treemap-node-wrapper:active, +a.treemap-node-wrapper:focus, +a.treemap-node-wrapper:hover { + color: #3280fc; + text-decoration: none; + background-color: #ebf2f9; + border-color: #3280fc; + } +.treemap-node-root > .treemap-node-wrapper { + background-color: rgba(0, 0, 0, .1); + } +.treemap-node-children { + display: table; + margin-top: 20px auto 0; + } +.treemap-line-top, +.treemap-line-bottom { + position: absolute; + top: 100%; + left: 50%; + margin-left: -1px; + border-right: none!important; + border-bottom: none!important; + } +.treemap-line-top { + top: 0; + } +.treemap-node > .treemap-line { + position: absolute; + right: 0; + left: 0; + z-index: 1; + border-right: none!important; + border-bottom: none!important; + } +.treemap-node-fold-icon { + position: absolute; + top: -6px; + left: -5px; + z-index: 10; + display: block!important; + width: 10px; + height: 10px; + line-height: 10px; + color: #808080; + background-color: #fff; + border-radius: 5px; + opacity: 0; + -webkit-transition: opacity .2s, -webkit-transform .1s; + -o-transition: opacity .2s, -o-transform .1s; + transition: opacity .2s, -webkit-transform .1s; + transition: opacity .2s, transform .1s; + transition: opacity .2s, transform .1s, -webkit-transform .1s, -o-transform .1s; + } +.treemap-node-fold-icon:before { + min-width: 10px; + content: '\e6f2'; + } +.treemap-node-wrapper:hover .treemap-node-fold-icon { + opacity: 1; + } +.treemap-node.collapsed > .treemap-line, +.treemap-node.collapsed .treemap-line-bottom { + border-color: transparent!important; + } +.treemap-node.collapsed > .treemap-node-children { + display: none; + } +.treemap-node.collapsed .treemap-node-fold-icon { + top: -6px; + color: #808080; + opacity: 1; + -webkit-transform: none!important; + -ms-transform: none!important; + -o-transform: none!important; + transform: none!important; + } +.treemap-node.collapsed .treemap-node-fold-icon:before { + content: '\e6f1'; + } +.treemap-node.tree-node-collapsing > .treemap-line, +.treemap-node.tree-node-collapsing > .treemap-node-children { + visibility: hidden; + } diff --git a/root/res/zui/lib/treemap/zui.treemap.js b/root/res/zui/lib/treemap/zui.treemap.js new file mode 100644 index 0000000..99f569f --- /dev/null +++ b/root/res/zui/lib/treemap/zui.treemap.js @@ -0,0 +1,415 @@ +/*! + * ZUI: 树形图 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +/* ======================================================================== + * ZUI: treemap.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +// Tree map data format +// { +// text: main text, +// html: main text as html format +// style: node style, +// textColor: text color, +// color: background color +// border: border style, +// cableWidth: 2, +// cableColor: '#808080' +// cableStyle: 'solid' +// } + + +(function($, window, document, Math, undefined) { + 'use strict'; + + var NAME = 'zui.treemap', + DEFAULTS = { + data: [], + // direction: 'bottom', // or 'top', 'left', 'right' + cableWidth: 1, + cableColor: '#808080', + cableStyle: 'solid', + rowSpace: 30, + nodeSpace: 20, + listenNodeResize: true, + nodeTemplate: '
            ', + foldable: true, + clickNodeToFold: true, + // sort: false, // Boolean or function + // tooltip: null, + // nodeStyle: null, + }; + // var DEFAULT_NODE = { + // id: uuid(), // uuid + // text: '', // main text, + // html: '', // main text as html format + // style: null, // node element style + // textColor: '', // text color + // color: '', // background color + // border: '', // border style, + // tooltip: '' // node caption + // attrs: null // attrs + // title: '' // node title + // tooltip: '' // node tooltip + // }; + + var getDataFromUlList = function($list) { + return $list.children('li,.treemap-data-item').map(function() { + var $item = $(this), + item = $item.data(), + $text = $item.children('.text'), + $html = $item.children('.content'), + $children = $item.children('ul,.treemap-data-list'); + if($text.length) item.text = $text.text(); + if($html.length) item.html = $html.html(); + if($children.length) { + item.children = getDataFromUlList($children); + } + if(!item.text && !item.html) { + var $content = $item.children(':not(ul,.treemap-data-list)'); + var $itemClone = $item.clone(); + $itemClone.find('ul,.treemap-data-list').remove(); + if(!$content.length) { + item.text = $itemClone.text(); + } else { + item.html = $itemClone.html(); + } + } + return item; + }).get(); + }; + + var Treemap = function(element, options) { + var $element = $(element); + if($.isArray(options)) { + options = {data: options}; + } + options = $.extend({}, DEFAULTS, $element.data(), options); + + var data = options.data || []; + if(!data.length) { + var $dataList = $element.children('.treemap-data'); + if($dataList.length) { + data = getDataFromUlList($dataList.hide()); + } + } + + var $nodes = $element.children('.treemap-nodes'); + if(!$nodes.length) { + $nodes = $('
            ').appendTo($element); + } + + var that = this; + that.$ = $element; + that.$nodes = $nodes; + that.data = $.isArray(data) ? data : [data]; + that.options = options; + that.offsetX = 0; + that.offsetY = 0; + that.scale = options.scale || 1; + + // Bind events + + that.render(); + + $nodes.on('resize', '.treemap-node-wrapper', function() { + that.delayDrawLines(); + }); + if(options.foldable) { + $nodes.on('click', options.clickNodeToFold ? '.treemap-node-wrapper' : '.treemap-node-fold-icon', function() { + that.toggle($(this).closest('.treemap-node')); + }); + } + + $nodes.on('click', '.treemap-node-wrapper', function() { + var $node = $(this).closest('.treemap-node'); + that.callEvent('onNodeClick', $node.data('node')); + }); + }; + + Treemap.prototype.toggle = function($node, toggle, ignoreAnimation) { + var that = this; + if(typeof $node === 'boolean') { + toggle = $node; + $node = null; + } + if(!$node) { + $node = that.$nodes.children('.treemap-node').first(); + } + if($node) + { + if($node.data('node').foldable === false) { + return; + } + if(toggle === undefined) { + toggle = $node.hasClass('collapsed'); + } + $node.toggleClass('collapsed', !toggle).find('[data-toggle="tooltip"]').tooltip('hide'); + if (!ignoreAnimation) { + $node.addClass('tree-node-collapsing') + } + that.$nodes.find('.tooltip').remove(); + that.drawLines(); + if (!ignoreAnimation) { + $node.removeClass('tree-node-collapsing'); + } else { + clearTimeout(that.toggleTimeTask); + that.toggleTimeTask = setTimeout(function() { + $node.removeClass('tree-node-collapsing'); + }, 200); + } + } + }; + + Treemap.prototype.showLevel = function(level) { + var that = this; + that.$nodes.find('.treemap-node').each(function() { + var $node = $(this); + that.toggle($node, $node.data('level') < level, true); + }); + }; + + Treemap.prototype.render = function(data) { + var that = this; + that.data = data ? ($.isArray(data) ? data : [data]) : that.data; + + if(that.data) { + that.createNodes(); + that.drawLines(); + that.delayDrawLines(500); + } + + that.callEvent('afterRender'); + }; + + Treemap.prototype.createNodes = function(nodes, parent, callback) { + var that = this, + options = that.options, + rowSpace = options.rowSpace, + $nodes = that.$nodes; + if(!parent) { + $nodes.find('.treemap-node-wrapper').off('resize.' + NAME); + $nodes.empty(); + } + if(options.sort) { + nodes.sort($.isFunction(options.sort) ? options.sort : function(nodeX, nodeY) { + return (nodeX.order || 0) - (nodeY.order); + }); + } + var lastNode = null; + nodes = nodes || that.data; + if (!parent) { + that.maxLevel = 1; + } + $.each(nodes, function(idx, node) { + if(typeof node === 'string') { + node = {html: node}; + nodes[idx] = node; + } + + if(!node.id) node.id = $.zui.uuid(); + node.level = parent ? (parent.level + 1) : 1; + that.maxLevel = Math.max(that.maxLevel, node.level); + + // Create node element + var isCustomNodeTemplate = $.isFunction(options.nodeTemplate); + var $node = isCustomNodeTemplate ? options.nodeTemplate(node, that) : $(options.nodeTemplate); + + // Create node wrapper element + var $wrapper = $node.find('.treemap-node-wrapper'); + if(!$wrapper.length) { + $wrapper = $('
            ').appendTo($node); + } + + var children = node.children; + var hasChild = children && children.length; + node.isOnlyOneChild = hasChild === 1; + + // Set node data attributes + node.idx = idx; + var row = parent ? (parent.row + 1) : 0; + $node.toggleClass('treemap-node-has-child', !!hasChild) + .toggleClass('treemap-node-has-parent', !!parent) + .toggleClass('treemap-node-one-child', hasChild === 1) + .toggleClass('collapsed', !!node.collapsed && node.collapsed !== 'false') + .toggleClass('treemap-node-root', !row) + .attr({'data-id': node.id, 'data-level': node.level}).data('node', node); + if(node.className) { + $node.addClass(node.className); + } + node.row = row; + + // Set node element attributes and sytle + var style = $.extend({}, options.nodeStyle, node.style); + if(node.textColor) style.color = node.textColor; + if(node.color) style.backgroundColor = node.color; + if(node.border) style.border = node.border; + var attrs = $.extend({}, node.attrs, { + title: node.caption + }); + if(node.tooltip) { + attrs['data-toggle'] = 'tooltip'; + attrs.title = node.tooltip; + } + $wrapper.attr(attrs).css(style); + if(lastNode) { + $node.css('padding-left', options.nodeSpace); + } + if(!isCustomNodeTemplate) { + if(node.html) $wrapper.append(node.html); + else if(node.text) $wrapper.text(node.text); + } + + // append node element to ducument + $node.appendTo(parent ? parent.$children : $nodes); + + // Save sizes + // node.bounds = { + // width : $wrapper.outerWidth(), + // height : $wrapper.outerHeight() + // }; + + if(lastNode) { + lastNode.next = node; + } + node.prev = lastNode; + node.parent = parent; + node.$ = $node; + node.$wrapper = $wrapper; + + // Create children + if(hasChild) { + var $children = $node.find('.treemap-node-children'); + if(!$children.length) { + $children = $('
            ').appendTo($node); + } + $children.css('margin-top', rowSpace); + node.$children = $children; + that.createNodes(children, node); + } + + if(options.listenNodeResize) { + $wrapper.on('resize.' + NAME, function() { + // node.bounds.width = $wrapper.outerWidth(); + // node.bounds.height = $wrapper.outerHeight(); + that.delayDrawLines(); + }); + } + + lastNode = node; + callback && callback($node, node); + }); + + if(!parent) { + // Init tooltip + $nodes.find('[data-toggle="tooltip"]').tooltip(options.tooltip); + } + }; + + Treemap.prototype.delayDrawLines = function(delay) { + var that = this; + clearTimeout(that.delayDrawLinesTask); + that.delayDrawLinesTask = setTimeout(function() { + that.drawLines(); + }, delay || 10); + }; + + Treemap.prototype.drawLines = function(nodes, parent) { + var that = this, + options = that.options, + rowSpace = options.rowSpace; + var cableStyle = {}; + if(options.cableWidth) cableStyle.borderWidth = options.cableWidth; + if(options.cableStyle) cableStyle.borderStyle = options.cableStyle; + if(options.cableColor) cableStyle.borderColor = options.cableColor; + var rowSpaceHalf = Math.round(rowSpace/2); + var nodesOffsetLeft = that.$nodes.offset().left; + $.each(nodes || that.data, function(idx, node) { + var $wrapper = node.$wrapper; + var children = node.children; + var nodeCableStyle = $.extend({ + height: rowSpaceHalf, + top: -rowSpaceHalf - 1, + left: Math.round(($wrapper.outerWidth() - cableStyle.borderWidth)/2), + color: cableStyle.borderColor + }, cableStyle); + if(parent && !parent.isOnlyOneChild) { + var $topLine = $wrapper.find('.treemap-line-top'); + if(!$topLine.length) { + $topLine = $('
            ').appendTo($wrapper); + } + $topLine.css(nodeCableStyle); + } + if(children && children.length) { + nodeCableStyle.top = $wrapper.outerHeight() - 1; + if(node.isOnlyOneChild) { + nodeCableStyle.height = rowSpace; + } + var $bottomLine = $wrapper.find('.treemap-line-bottom'); + if(!$bottomLine.length) { + $bottomLine = $('
            ').appendTo($wrapper); + if(options.foldable) { + $bottomLine.append(''); + } + } + $bottomLine.css(nodeCableStyle); + that.drawLines(children, node); + if(children.length > 1) { + var firstChild = children[0], + lastChild = children[children.length - 1]; + + var $centerLine = node.$.children('.treemap-line'); + if(!$centerLine.length) { + $centerLine = $('
            ').insertAfter($wrapper); + } + var lineLeft = Math.round(firstChild.$wrapper.offset().left - nodesOffsetLeft + firstChild.$wrapper.outerWidth()/2); + $centerLine.css($.extend({ + marginTop: rowSpaceHalf, + left: lineLeft, + width: lastChild.$wrapper.offset().left - nodesOffsetLeft -lineLeft + lastChild.$wrapper.outerWidth()/2 + }, cableStyle)); + } + } + }); + + if(!parent) { + that.callEvent('afterDrawLines'); + } + }; + + // Call event + Treemap.prototype.callEvent = function(name, params) { + var that = this; + if(!$.isArray(params)) params = [params]; + that.$.trigger(name, params); + if($.isFunction(that.options[name])) { + return that.options[name].apply(that, params); + } + }; + + Treemap.DEFAULTS = DEFAULTS; + Treemap.NAME = NAME; + + $.fn.treemap = function(option, param1, parma2) { + return this.each(function() { + var $this = $(this); + var data = $this.data(NAME); + var options = typeof option == 'object' && option; + + if(!data) $this.data(NAME, (data = new Treemap(this, options))); + + if(typeof option == 'string') data[option](param1, parma2); + }); + }; + + $.fn.treemap.Constructor = Treemap; +}(jQuery, window, document, Math, undefined)); + diff --git a/root/res/zui/lib/treemap/zui.treemap.min.css b/root/res/zui/lib/treemap/zui.treemap.min.css new file mode 100644 index 0000000..a9656f1 --- /dev/null +++ b/root/res/zui/lib/treemap/zui.treemap.min.css @@ -0,0 +1,6 @@ +/*! + * ZUI: 树形图 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */.treemap-data{text-align:left}.treemap-nodes{position:relative;display:table;padding:10px;margin-right:auto;margin-left:auto;text-align:center;-webkit-user-select:none;-moz-user-select:none}.treemap-node{display:table-cell;vertical-align:top}.treemap-node-wrapper{position:relative;z-index:5;display:inline-block;padding:5px 10px;border:1px solid grey;border-radius:1px}a.treemap-node-wrapper{color:#353535;cursor:pointer}a.treemap-node-wrapper:active,a.treemap-node-wrapper:focus,a.treemap-node-wrapper:hover{color:#3280fc;text-decoration:none;background-color:#ebf2f9;border-color:#3280fc}.treemap-node-root>.treemap-node-wrapper{background-color:rgba(0,0,0,.1)}.treemap-node-children{display:table;margin-top:20px auto 0}.treemap-line-bottom,.treemap-line-top{position:absolute;top:100%;left:50%;margin-left:-1px;border-right:none!important;border-bottom:none!important}.treemap-line-top{top:0}.treemap-node>.treemap-line{position:absolute;right:0;left:0;z-index:1;border-right:none!important;border-bottom:none!important}.treemap-node-fold-icon{position:absolute;top:-6px;left:-5px;z-index:10;display:block!important;width:10px;height:10px;line-height:10px;color:grey;background-color:#fff;border-radius:5px;opacity:0;-webkit-transition:opacity .2s,-webkit-transform .1s;-o-transition:opacity .2s,-o-transform .1s;transition:opacity .2s,-webkit-transform .1s;transition:opacity .2s,transform .1s;transition:opacity .2s,transform .1s,-webkit-transform .1s,-o-transform .1s}.treemap-node-fold-icon:before{min-width:10px;content:'\e6f2'}.treemap-node-wrapper:hover .treemap-node-fold-icon{opacity:1}.treemap-node.collapsed .treemap-line-bottom,.treemap-node.collapsed>.treemap-line{border-color:transparent!important}.treemap-node.collapsed>.treemap-node-children{display:none}.treemap-node.collapsed .treemap-node-fold-icon{top:-6px;color:grey;opacity:1;-webkit-transform:none!important;-ms-transform:none!important;-o-transform:none!important;transform:none!important}.treemap-node.collapsed .treemap-node-fold-icon:before{content:'\e6f1'}.treemap-node.tree-node-collapsing>.treemap-line,.treemap-node.tree-node-collapsing>.treemap-node-children{visibility:hidden} \ No newline at end of file diff --git a/root/res/zui/lib/treemap/zui.treemap.min.js b/root/res/zui/lib/treemap/zui.treemap.min.js new file mode 100644 index 0000000..a492f2a --- /dev/null +++ b/root/res/zui/lib/treemap/zui.treemap.min.js @@ -0,0 +1,7 @@ +/*! + * ZUI: 树形图 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ +!function(e,t,a,o,r){"use strict";var n="zui.treemap",l={data:[],cableWidth:1,cableColor:"#808080",cableStyle:"solid",rowSpace:30,nodeSpace:20,listenNodeResize:!0,nodeTemplate:'
            ',foldable:!0,clickNodeToFold:!0},i=function(t){return t.children("li,.treemap-data-item").map(function(){var t=e(this),a=t.data(),o=t.children(".text"),r=t.children(".content"),n=t.children("ul,.treemap-data-list");if(o.length&&(a.text=o.text()),r.length&&(a.html=r.html()),n.length&&(a.children=i(n)),!a.text&&!a.html){var l=t.children(":not(ul,.treemap-data-list)"),d=t.clone();d.find("ul,.treemap-data-list").remove(),l.length?a.html=d.html():a.text=d.text()}return a}).get()},d=function(t,a){var o=e(t);e.isArray(a)&&(a={data:a}),a=e.extend({},l,o.data(),a);var r=a.data||[];if(!r.length){var n=o.children(".treemap-data");n.length&&(r=i(n.hide()))}var d=o.children(".treemap-nodes");d.length||(d=e('
            ').appendTo(o));var s=this;s.$=o,s.$nodes=d,s.data=e.isArray(r)?r:[r],s.options=a,s.offsetX=0,s.offsetY=0,s.scale=a.scale||1,s.render(),d.on("resize",".treemap-node-wrapper",function(){s.delayDrawLines()}),a.foldable&&d.on("click",a.clickNodeToFold?".treemap-node-wrapper":".treemap-node-fold-icon",function(){s.toggle(e(this).closest(".treemap-node"))}),d.on("click",".treemap-node-wrapper",function(){var t=e(this).closest(".treemap-node");s.callEvent("onNodeClick",t.data("node"))})};d.prototype.toggle=function(e,t,a){var o=this;if("boolean"==typeof e&&(t=e,e=null),e||(e=o.$nodes.children(".treemap-node").first()),e){if(e.data("node").foldable===!1)return;t===r&&(t=e.hasClass("collapsed")),e.toggleClass("collapsed",!t).find('[data-toggle="tooltip"]').tooltip("hide"),a||e.addClass("tree-node-collapsing"),o.$nodes.find(".tooltip").remove(),o.drawLines(),a?(clearTimeout(o.toggleTimeTask),o.toggleTimeTask=setTimeout(function(){e.removeClass("tree-node-collapsing")},200)):e.removeClass("tree-node-collapsing")}},d.prototype.showLevel=function(t){var a=this;a.$nodes.find(".treemap-node").each(function(){var o=e(this);a.toggle(o,o.data("level")').appendTo(m));var v=h.children,u=v&&v.length;h.isOnlyOneChild=1===u,h.idx=c;var w=a?a.row+1:0;m.toggleClass("treemap-node-has-child",!!u).toggleClass("treemap-node-has-parent",!!a).toggleClass("treemap-node-one-child",1===u).toggleClass("collapsed",!!h.collapsed&&"false"!==h.collapsed).toggleClass("treemap-node-root",!w).attr({"data-id":h.id,"data-level":h.level}).data("node",h),h.className&&m.addClass(h.className),h.row=w;var y=e.extend({},i.nodeStyle,h.style);h.textColor&&(y.color=h.textColor),h.color&&(y.backgroundColor=h.color),h.border&&(y.border=h.border);var b=e.extend({},h.attrs,{title:h.caption});if(h.tooltip&&(b["data-toggle"]="tooltip",b.title=h.tooltip),g.attr(b).css(y),p&&m.css("padding-left",i.nodeSpace),f||(h.html?g.append(h.html):h.text&&g.text(h.text)),m.appendTo(a?a.$children:s),p&&(p.next=h),h.prev=p,h.parent=a,h.$=m,h.$wrapper=g,u){var x=m.find(".treemap-node-children");x.length||(x=e('
            ').appendTo(m)),x.css("margin-top",d),h.$children=x,l.createNodes(v,h)}i.listenNodeResize&&g.on("resize."+n,function(){l.delayDrawLines()}),p=h,r&&r(m,h)}),a||s.find('[data-toggle="tooltip"]').tooltip(i.tooltip)},d.prototype.delayDrawLines=function(e){var t=this;clearTimeout(t.delayDrawLinesTask),t.delayDrawLinesTask=setTimeout(function(){t.drawLines()},e||10)},d.prototype.drawLines=function(t,a){var r=this,n=r.options,l=n.rowSpace,i={};n.cableWidth&&(i.borderWidth=n.cableWidth),n.cableStyle&&(i.borderStyle=n.cableStyle),n.cableColor&&(i.borderColor=n.cableColor);var d=o.round(l/2),s=r.$nodes.offset().left;e.each(t||r.data,function(t,p){var c=p.$wrapper,h=p.children,f=e.extend({height:d,top:-d-1,left:o.round((c.outerWidth()-i.borderWidth)/2),color:i.borderColor},i);if(a&&!a.isOnlyOneChild){var m=c.find(".treemap-line-top");m.length||(m=e('
            ').appendTo(c)),m.css(f)}if(h&&h.length){f.top=c.outerHeight()-1,p.isOnlyOneChild&&(f.height=l);var g=c.find(".treemap-line-bottom");if(g.length||(g=e('
            ').appendTo(c),n.foldable&&g.append('')),g.css(f),r.drawLines(h,p),h.length>1){var v=h[0],u=h[h.length-1],w=p.$.children(".treemap-line");w.length||(w=e('
            ').insertAfter(c));var y=o.round(v.$wrapper.offset().left-s+v.$wrapper.outerWidth()/2);w.css(e.extend({marginTop:d,left:y,width:u.$wrapper.offset().left-s-y+u.$wrapper.outerWidth()/2},i))}}}),a||r.callEvent("afterDrawLines")},d.prototype.callEvent=function(t,a){var o=this;if(e.isArray(a)||(a=[a]),o.$.trigger(t,a),e.isFunction(o.options[t]))return o.options[t].apply(o,a)},d.DEFAULTS=l,d.NAME=n,e.fn.treemap=function(t,a,o){return this.each(function(){var r=e(this),l=r.data(n),i="object"==typeof t&&t;l||r.data(n,l=new d(this,i)),"string"==typeof t&&l[t](a,o)})},e.fn.treemap.Constructor=d}(jQuery,window,document,Math,void 0); \ No newline at end of file diff --git a/root/res/zui/lib/ueditor/ueditor.css b/root/res/zui/lib/ueditor/ueditor.css new file mode 100644 index 0000000..07eb88a --- /dev/null +++ b/root/res/zui/lib/ueditor/ueditor.css @@ -0,0 +1,1604 @@ +/*基础UI构建 +*/ +/* common layer */ +.edui-default .edui-box { + padding: 0; + margin: 0; + overflow: hidden; + border: none; + } +.edui-default a.edui-box { + display: block; + color: black; + text-decoration: none; + } +.edui-default a.edui-box:hover { + text-decoration: none; + } +.edui-default a.edui-box:active { + text-decoration: none; + } +.edui-default table.edui-box { + border-collapse: collapse; + } +.edui-default ul.edui-box { + list-style-type: none; + } +div.edui-box { + position: relative; + display: inline-block !important; + vertical-align: top; + } +.edui-default .edui-clearfix { + zoom: 1; + } +.edui-default .edui-clearfix:after { + display: block; + clear: both; + content: '\20'; + } +* html div.edui-box { + display: inline !important; + } +*:first-child + html div.edui-box { + display: inline !important; + } +/* control layout */ +.edui-default .edui-button-body, +.edui-splitbutton-body, +.edui-menubutton-body, +.edui-combox-body { + position: relative; + } +.edui-default .edui-popup { + position: absolute; + -webkit-user-select: none; + -moz-user-select: none; + } +.edui-default .edui-popup .edui-shadow { + position: absolute; + z-index: -1; + } +.edui-default .edui-popup .edui-bordereraser { + position: absolute; + overflow: hidden; + } +.edui-default .edui-tablepicker .edui-canvas { + position: relative; + } +.edui-default .edui-tablepicker .edui-canvas .edui-overlay { + position: absolute; + } +.edui-default .edui-dialog-modalmask, +.edui-dialog-dragmask { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + } +.edui-default .edui-toolbar { + position: relative; + } +/* + * default theme + */ +.edui-default .edui-label { + cursor: default; + } +.edui-default span.edui-clickable { + color: blue; + text-decoration: underline; + cursor: pointer; + } +.edui-default span.edui-unclickable { + color: gray; + cursor: default; + } +/* 工具栏 */ +.edui-default .edui-toolbar { + width: auto; + height: auto; + padding: 1px; + overflow: hidden; + cursor: default; + /*全屏下单独一行不占位*/ + zoom: 1; + -webkit-user-select: none; + -moz-user-select: none; + } +.edui-default .edui-toolbar .edui-button, +.edui-default .edui-toolbar .edui-splitbutton, +.edui-default .edui-toolbar .edui-menubutton, +.edui-default .edui-toolbar .edui-combox { + margin: 1px; + } +/*UI工具栏、编辑区域、底部*/ +.edui-default .edui-editor { + position: relative; + overflow: visible; + background-color: white; + border: 1px solid #d4d4d4; + border-radius: 4px; + } +.edui-editor div { + width: auto; + height: auto; + } +.edui-default .edui-editor-toolbarbox { + position: relative; + zoom: 1; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + } +.edui-default .edui-editor-toolbarboxouter { + background-color: #fafafa; + background-repeat: repeat-x; + border-bottom: 1px solid #d4d4d4; + + *zoom: 1; + } +.edui-default .edui-editor-toolbarboxinner { + padding: 2px; + } +.edui-default .edui-editor-iframeholder { + position: relative; + } +.edui-default .edui-editor-bottomContainer { + overflow: hidden; + } +.edui-default .edui-editor-bottomContainer table { + width: 100%; + height: 0; + overflow: hidden; + border-spacing: 0; + } +.edui-default .edui-editor-bottomContainer td { + font-family: Arial, Helvetica, Tahoma, Verdana, Sans-Serif; + font-size: 12px; + line-height: 20px; + white-space: nowrap; + border-top: 1px solid #ccc; + } +.edui-default .edui-editor-wordcount { + margin-right: 5px; + color: #aaa; + text-align: right; + } +.edui-default .edui-editor-scale { + width: 12px; + } +.edui-default .edui-editor-scale .edui-editor-icon { + float: right; + width: 100%; + height: 12px; + margin-top: 10px; + cursor: se-resize; + background: url(../images/scale.png) no-repeat; + } +.edui-default .edui-editor-breadcrumb { + margin: 2px 0 0 3px; + } +.edui-default .edui-editor-breadcrumb span { + color: blue; + text-decoration: underline; + cursor: pointer; + } +.edui-default .edui-toolbar .edui-for-fullscreen { + float: right; + } +.edui-default .edui-bubble .edui-popup-content { + padding: 5px; + font-family: "宋体"; + font-size: 10pt; + background-color: #fff6d9; + border: 1px solid #dcac6c; + } +.edui-default .edui-editor-toolbarmsg { + position: absolute; + bottom: -25px; + left: 0; + z-index: 1009; + width: 99.9%; + background-color: #fff6d9; + border-bottom: 1px solid #ccc; + } +.edui-default .edui-editor-toolbarmsg-upload { + position: absolute; + top: 5px; + left: 350px; + width: 100px; + height: 16px; + font-size: 14px; + line-height: 16px; + color: blue; + cursor: pointer; + } +.edui-default .edui-editor-toolbarmsg-label { + padding: 4px; + font-size: 12px; + line-height: 16px; + } +.edui-default .edui-editor-toolbarmsg-close { + float: right; + width: 20px; + height: 16px; + line-height: 16px; + color: red; + cursor: pointer; + } +.edui-default .edui-list .edui-bordereraser { + display: none; + } +.edui-default .edui-listitem { + padding: 1px; + white-space: nowrap; + } +.edui-default .edui-list .edui-state-hover { + position: relative; + padding: 0; + background-color: #fff5d4; + border: 1px solid #dcac6c; + } +.edui-default .edui-for-fontfamily .edui-listitem-label { + min-width: 130px; + height: 22px; + padding-left: 5px; + font-size: 12px; + line-height: 22px; + + _width: 120px; + } +.edui-default .edui-for-insertcode .edui-listitem-label { + min-width: 120px; + height: 22px; + padding-left: 5px; + font-size: 12px; + line-height: 22px; + + _width: 120px; + } +.edui-default .edui-for-underline .edui-listitem-label { + min-width: 120px; + padding: 3px 5px; + font-size: 12px; + + _width: 120px; + } +.edui-default .edui-for-fontsize .edui-listitem-label { + min-width: 120px; + padding: 3px 5px; + + _width: 120px; + } +.edui-default .edui-for-paragraph .edui-listitem-label { + min-width: 200px; + padding: 2px 5px; + + _width: 200px; + } +.edui-default .edui-for-rowspacingtop .edui-listitem-label, +.edui-default .edui-for-rowspacingbottom .edui-listitem-label { + min-width: 53px; + padding: 2px 5px; + + _width: 53px; + } +.edui-default .edui-for-lineheight .edui-listitem-label { + min-width: 53px; + padding: 2px 5px; + + _width: 53px; + } +.edui-default .edui-for-customstyle .edui-listitem-label { + width: 200px !important; + min-width: 200px; + padding: 2px 5px; + + _width: 200px; + } +/* 可选中按钮弹出菜单*/ +.edui-default .edui-menu { + z-index: 3000; + } +.edui-default .edui-menu .edui-popup-content { + padding: 3px; + } +.edui-default .edui-menu-body { + min-width: 170px; + background: url("../images/sparator_v.png") repeat-y 25px; + + _width: 150px; + } +.edui-default .edui-menuitem { + height: 20px; + vertical-align: top; + cursor: default; + } +.edui-default .edui-menuitem .edui-icon { + width: 20px !important; + height: 20px !important; + background: url(../images/icons.png) 0 -4000px; + background: url(../images/icons.gif) 0 -4000px\9; + } +.edui-default .edui-menuitem .edui-label { + height: 20px; + padding-left: 10px; + font-size: 12px; + line-height: 20px; + } +.edui-default .edui-state-checked .edui-menuitem-body { + background: url("../images/icons-all.gif") no-repeat 6px -205px; + } +.edui-default .edui-state-disabled .edui-menuitem-label { + color: gray; + } +/*不可选中菜单按钮 */ +.edui-default .edui-toolbar .edui-combox-body .edui-button-body { + width: 60px; + height: 20px; + padding-left: 5px; + margin: 0 3px 0 0; + font-size: 12px; + line-height: 20px; + white-space: nowrap; + } +.edui-default .edui-toolbar .edui-combox-body .edui-arrow { + width: 9px; + height: 20px; + background: url(../images/icons.png) -741px 0; + + _background: url(../images/icons.gif) -741px 0; + } +.edui-default .edui-toolbar .edui-combox .edui-combox-body { + background-color: white; + border: 1px solid #ccc; + border-radius: 2px; + + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + } +.edui-default .edui-toolbar .edui-combox-body .edui-splitborder { + display: none; + } +.edui-default .edui-toolbar .edui-combox-body .edui-arrow { + border-left: 1px solid #ccc; + } +.edui-default .edui-toolbar .edui-state-hover .edui-combox-body { + background-color: #fff5d4; + border: 1px solid #dcac6c; + } +.edui-default .edui-toolbar .edui-state-hover .edui-combox-body .edui-arrow { + border-left: 1px solid #dcac6c; + } +.edui-default .edui-toolbar .edui-state-checked .edui-combox-body { + background-color: #ffe69f; + border: 1px solid #dcac6c; + } +.edui-toolbar .edui-state-checked .edui-combox-body .edui-arrow { + border-left: 1px solid #dcac6c; + } +.edui-toolbar .edui-state-disabled .edui-combox-body { + background-color: #f0f0ee; + filter: alpha(opacity=30); + opacity: .3; + } +.edui-toolbar .edui-state-opened .edui-combox-body { + background-color: white; + border: 1px solid gray; + } +/*普通按钮样式及状态*/ +.edui-default .edui-toolbar .edui-button .edui-icon, +.edui-default .edui-toolbar .edui-menubutton .edui-icon, +.edui-default .edui-toolbar .edui-splitbutton .edui-icon { + width: 20px !important; + height: 20px !important; + background-image: url(../images/icons.png); + background-image: url(../images/icons.gif) \9; + } +.edui-default .edui-toolbar .edui-button .edui-button-wrap { + position: relative; + padding: 1px; + } +.edui-default .edui-toolbar .edui-button .edui-state-hover .edui-button-wrap { + padding: 0; + background-color: #fff5d4; + border: 1px solid #dcac6c; + } +.edui-default .edui-toolbar .edui-button .edui-state-checked .edui-button-wrap { + padding: 0; + background-color: #ffe69f; + border: 1px solid #dcac6c; + border-radius: 2px; + + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + } +.edui-default .edui-toolbar .edui-button .edui-state-active .edui-button-wrap { + padding: 0; + background-color: #fff; + border: 1px solid gray; + } +.edui-default .edui-toolbar .edui-state-disabled .edui-label { + color: #ccc; + } +.edui-default .edui-toolbar .edui-state-disabled .edui-icon { + filter: alpha(opacity=30); + opacity: .3; + } +/* toolbar icons */ +.edui-default .edui-for-undo .edui-icon { + background-position: -160px 0; + } +.edui-default .edui-for-redo .edui-icon { + background-position: -100px 0; + } +.edui-default .edui-for-bold .edui-icon { + background-position: 0 0; + } +.edui-default .edui-for-italic .edui-icon { + background-position: -60px 0; + } +.edui-default .edui-for-fontborder .edui-icon { + background-position: -160px -40px; + } +.edui-default .edui-for-underline .edui-icon { + background-position: -140px 0; + } +.edui-default .edui-for-strikethrough .edui-icon { + background-position: -120px 0; + } +.edui-default .edui-for-subscript .edui-icon { + background-position: -600px 0; + } +.edui-default .edui-for-superscript .edui-icon { + background-position: -620px 0; + } +.edui-default .edui-for-blockquote .edui-icon { + background-position: -220px 0; + } +.edui-default .edui-for-forecolor .edui-icon { + background-position: -720px 0; + } +.edui-default .edui-for-backcolor .edui-icon { + background-position: -760px 0; + } +.edui-default .edui-for-inserttable .edui-icon { + background-position: -580px -20px; + } +.edui-default .edui-for-autotypeset .edui-icon { + background-position: -640px -40px; + } +.edui-default .edui-for-justifyleft .edui-icon { + background-position: -460px 0; + } +.edui-default .edui-for-justifycenter .edui-icon { + background-position: -420px 0; + } +.edui-default .edui-for-justifyright .edui-icon { + background-position: -480px 0; + } +.edui-default .edui-for-justifyjustify .edui-icon { + background-position: -440px 0; + } +.edui-default .edui-for-insertorderedlist .edui-icon { + background-position: -80px 0; + } +.edui-default .edui-for-insertunorderedlist .edui-icon { + background-position: -20px 0; + } +.edui-default .edui-for-lineheight .edui-icon { + background-position: -725px -40px; + } +.edui-default .edui-for-rowspacingbottom .edui-icon { + background-position: -745px -40px; + } +.edui-default .edui-for-rowspacingtop .edui-icon { + background-position: -765px -40px; + } +.edui-default .edui-for-horizontal .edui-icon { + background-position: -360px 0; + } +.edui-default .edui-for-link .edui-icon { + background-position: -500px 0; + } +.edui-default .edui-for-code .edui-icon { + background-position: -440px -40px; + } +.edui-default .edui-for-insertimage .edui-icon { + background-position: -726px -77px; + } +.edui-default .edui-for-insertframe .edui-icon { + background-position: -240px -40px; + } +.edui-default .edui-for-emoticon .edui-icon { + background-position: -60px -20px; + } +.edui-default .edui-for-spechars .edui-icon { + background-position: -240px 0; + } +.edui-default .edui-for-help .edui-icon { + background-position: -340px 0; + } +.edui-default .edui-for-print .edui-icon { + background-position: -440px -20px; + } +.edui-default .edui-for-preview .edui-icon { + background-position: -420px -20px; + } +.edui-default .edui-for-selectall .edui-icon { + background-position: -400px -20px; + } +.edui-default .edui-for-searchreplace .edui-icon { + background-position: -520px -20px; + } +.edui-default .edui-for-map .edui-icon { + background-position: -40px -40px; + } +.edui-default .edui-for-gmap .edui-icon { + background-position: -260px -40px; + } +.edui-default .edui-for-insertvideo .edui-icon { + background-position: -320px -20px; + } +.edui-default .edui-for-time .edui-icon { + background-position: -160px -20px; + } +.edui-default .edui-for-date .edui-icon { + background-position: -140px -20px; + } +.edui-default .edui-for-cut .edui-icon { + background-position: -680px 0; + } +.edui-default .edui-for-copy .edui-icon { + background-position: -700px 0; + } +.edui-default .edui-for-paste .edui-icon { + background-position: -560px 0; + } +.edui-default .edui-for-formatmatch .edui-icon { + background-position: -40px 0; + } +.edui-default .edui-for-pasteplain .edui-icon { + background-position: -360px -20px; + } +.edui-default .edui-for-directionalityltr .edui-icon { + background-position: -20px -20px; + } +.edui-default .edui-for-directionalityrtl .edui-icon { + background-position: -40px -20px; + } +.edui-default .edui-for-source .edui-icon { + background-position: -261px 0; + } +.edui-default .edui-for-removeformat .edui-icon { + background-position: -580px 0; + } +.edui-default .edui-for-unlink .edui-icon { + background-position: -640px 0; + } +.edui-default .edui-for-touppercase .edui-icon { + background-position: -786px 0; + } +.edui-default .edui-for-tolowercase .edui-icon { + background-position: -806px 0; + } +.edui-default .edui-for-insertrow .edui-icon { + background-position: -478px -76px; + } +.edui-default .edui-for-insertrownext .edui-icon { + background-position: -498px -76px; + } +.edui-default .edui-for-insertcol .edui-icon { + background-position: -455px -76px; + } +.edui-default .edui-for-insertcolnext .edui-icon { + background-position: -429px -76px; + } +.edui-default .edui-for-mergeright .edui-icon { + background-position: -60px -40px; + } +.edui-default .edui-for-mergedown .edui-icon { + background-position: -80px -40px; + } +.edui-default .edui-for-splittorows .edui-icon { + background-position: -100px -40px; + } +.edui-default .edui-for-splittocols .edui-icon { + background-position: -120px -40px; + } +.edui-default .edui-for-insertparagraphbeforetable .edui-icon { + background-position: -140px -40px; + } +.edui-default .edui-for-deleterow .edui-icon { + background-position: -660px -20px; + } +.edui-default .edui-for-deletecol .edui-icon { + background-position: -640px -20px; + } +.edui-default .edui-for-splittocells .edui-icon { + background-position: -800px -20px; + } +.edui-default .edui-for-mergecells .edui-icon { + background-position: -760px -20px; + } +.edui-default .edui-for-deletetable .edui-icon { + background-position: -620px -20px; + } +.edui-default .edui-for-cleardoc .edui-icon { + background-position: -520px 0; + } +.edui-default .edui-for-fullscreen .edui-icon { + background-position: -100px -20px; + } +.edui-default .edui-for-anchor .edui-icon { + background-position: -200px 0; + } +.edui-default .edui-for-pagebreak .edui-icon { + background-position: -460px -40px; + } +.edui-default .edui-for-imagenone .edui-icon { + background-position: -480px -40px; + } +.edui-default .edui-for-imageleft .edui-icon { + background-position: -500px -40px; + } +.edui-default .edui-for-wordimage .edui-icon { + background-position: -660px -40px; + } +.edui-default .edui-for-imageright .edui-icon { + background-position: -520px -40px; + } +.edui-default .edui-for-imagecenter .edui-icon { + background-position: -540px -40px; + } +.edui-default .edui-for-indent .edui-icon { + background-position: -400px 0; + } +.edui-default .edui-for-outdent .edui-icon { + background-position: -540px 0; + } +.edui-default .edui-for-webapp .edui-icon { + background-position: -601px -40px; + } +.edui-default .edui-for-table .edui-icon { + background-position: -580px -20px; + } +.edui-default .edui-for-edittable .edui-icon { + background-position: -420px -40px; + } +.edui-default .edui-for-template .edui-icon { + background-position: -339px -40px; + } +.edui-default .edui-for-delete .edui-icon { + background-position: -360px -40px; + } +.edui-default .edui-for-attachment .edui-icon { + background-position: -620px -40px; + } +.edui-default .edui-for-edittd .edui-icon { + background-position: -700px -40px; + } +.edui-default .edui-for-snapscreen .edui-icon { + background-position: -581px -40px; + } +.edui-default .edui-for-scrawl .edui-icon { + background-position: -801px -41px; + } +.edui-default .edui-for-background .edui-icon { + background-position: -680px -40px; + } +.edui-default .edui-for-music .edui-icon { + background-position: -18px -40px; + } +.edui-default .edui-for-formula .edui-icon { + background-position: -200px -40px; + } +.edui-default .edui-for-aligntd .edui-icon { + background-position: -236px -76px; + } +.edui-default .edui-for-insertparagraphtrue .edui-icon { + background-position: -625px -76px; + } +.edui-default .edui-for-insertparagraph .edui-icon { + background-position: -602px -76px; + } +.edui-default .edui-for-insertcaption .edui-icon { + background-position: -336px -76px; + } +.edui-default .edui-for-deletecaption .edui-icon { + background-position: -362px -76px; + } +.edui-default .edui-for-inserttitle .edui-icon { + background-position: -286px -76px; + } +.edui-default .edui-for-deletetitle .edui-icon { + background-position: -311px -76px; + } +.edui-default .edui-for-aligntable .edui-icon { + background-position: -440px 0; + } +.edui-default .edui-for-tablealignment-left .edui-icon { + background-position: -460px 0; + } +.edui-default .edui-for-tablealignment-center .edui-icon { + background-position: -420px 0; + } +.edui-default .edui-for-tablealignment-right .edui-icon { + background-position: -480px 0; + } +.edui-default .edui-for-drafts .edui-icon { + background-position: -560px 0; + } +.edui-default .edui-for-charts .edui-icon { + background: url(../images/charts.png ) no-repeat 2px 3px !important; + } +.edui-default .edui-for-inserttitlecol .edui-icon { + background-position: -673px -76px; + } +.edui-default .edui-for-deletetitlecol .edui-icon { + background-position: -698px -76px; + } +.edui-default .edui-for-simpleupload .edui-icon { + background-position: -380px 0; + } +/*splitbutton*/ +.edui-default .edui-toolbar .edui-splitbutton-body .edui-arrow, +.edui-default .edui-toolbar .edui-menubutton-body .edui-arrow { + width: 9px; + height: 20px; + background: url(../images/icons.png) -741px 0; + + _background: url(../images/icons.gif) -741px 0; + } +.edui-default .edui-toolbar .edui-splitbutton .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-menubutton-body { + padding: 1px; + } +.edui-default .edui-toolbar .edui-splitborder { + width: 1px; + height: 20px; + } +.edui-default .edui-toolbar .edui-state-hover .edui-splitborder { + width: 1px; + border-left: 0 solid #dcac6c; + } +.edui-default .edui-toolbar .edui-state-active .edui-splitborder { + width: 0; + border-left: 1px solid gray; + } +.edui-default .edui-toolbar .edui-state-opened .edui-splitborder { + width: 1px; + border: 0; + } +.edui-default .edui-toolbar .edui-splitbutton .edui-state-hover .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-state-hover .edui-menubutton-body { + padding: 0; + background-color: #fff5d4; + border: 1px solid #dcac6c; + } +.edui-default .edui-toolbar .edui-splitbutton .edui-state-checked .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-state-checked .edui-menubutton-body { + padding: 0; + background-color: #ffe69f; + border: 1px solid #dcac6c; + } +.edui-default .edui-toolbar .edui-splitbutton .edui-state-active .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-state-active .edui-menubutton-body { + padding: 0; + background-color: #fff; + border: 1px solid gray; + } +.edui-default .edui-state-disabled .edui-arrow { + filter: alpha(opacity=30); + opacity: .3; + } +.edui-default .edui-toolbar .edui-splitbutton .edui-state-opened .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-state-opened .edui-menubutton-body { + padding: 0; + background-color: white; + border: 1px solid gray; + } +.edui-default .edui-for-insertorderedlist .edui-bordereraser, +.edui-default .edui-for-lineheight .edui-bordereraser, +.edui-default .edui-for-rowspacingtop .edui-bordereraser, +.edui-default .edui-for-rowspacingbottom .edui-bordereraser, +.edui-default .edui-for-insertunorderedlist .edui-bordereraser { + background-color: white; + } +/* 解决嵌套导致的图标问题 */ +.edui-default .edui-for-insertorderedlist .edui-popup-body .edui-icon, +.edui-default .edui-for-lineheight .edui-popup-body .edui-icon, +.edui-default .edui-for-rowspacingtop .edui-popup-body .edui-icon, +.edui-default .edui-for-rowspacingbottom .edui-popup-body .edui-icon, +.edui-default .edui-for-insertunorderedlist .edui-popup-body .edui-icon { + /*background-position: 0 -40px;*/ + background-image: none ; + } +/* 弹出菜单 */ +.edui-default .edui-popup { + z-index: 3000; + width: auto; + height: auto; + background-color: #fff; + } +.edui-default .edui-popup .edui-shadow { + top: 0; + left: 0; + width: 100%; + height: 100%; + } +.edui-default .edui-popup-content { + padding: 5px; + background: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + + *border-right-width: 2px; + *border-bottom-width: 2px; + } +.edui-default .edui-popup .edui-bordereraser { + height: 3px; + background-color: white; + } +.edui-default .edui-menu .edui-bordereraser { + height: 3px; + } +.edui-default .edui-anchor-topleft .edui-bordereraser { + top: -2px; + left: 1px; + } +.edui-default .edui-anchor-topright .edui-bordereraser { + top: -2px; + right: 1px; + } +.edui-default .edui-anchor-bottomleft .edui-bordereraser { + bottom: -6px; + left: 0; + height: 7px; + border-right: 1px solid gray; + border-left: 1px solid gray; + } +.edui-default .edui-anchor-bottomright .edui-bordereraser { + right: 0; + bottom: -6px; + height: 7px; + border-right: 1px solid gray; + border-left: 1px solid gray; + } +.edui-popup div { + width: auto; + height: auto; + } +.edui-default .edui-editor-messageholder { + position: absolute; + top: 28px; + right: 3px; + display: block; + width: 150px; + height: auto; + padding: 0; + margin: 0; + border: 0; + } +.edui-default .edui-message { + position: relative; + min-height: 10px; + padding: 0; + margin-bottom: 3px; + text-shadow: 0 1px 0 rgba(255, 255, 255, .5); + } +.edui-default .edui-message-body { + padding: 8px 15px 8px 8px; + color: #c09853; + background-color: #fcf8e3; + border: 1px solid #fbeed5; + border-radius: 4px; + } +.edui-default .edui-message-type-info { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; + } +.edui-default .edui-message-type-success { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; + } +.edui-default .edui-message-type-danger, +.edui-default .edui-message-type-error { + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7; + } +.edui-default .edui-message .edui-message-closer { + position: absolute; + top: 0; + right: 0; + display: block; + float: right; + width: 16px; + height: 16px; + padding: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 20px; + font-weight: bold; + line-height: 16px; + color: #999; + text-shadow: 0 1px 0 #fff; + cursor: pointer; + background: transparent; + border: 0; + } +.edui-default .edui-message .edui-message-content { + font-size: 10pt; + word-break: normal; + word-wrap: break-word; + } +/* 弹出对话框按钮和对话框大小 */ +.edui-default .edui-dialog { + position: absolute; + z-index: 2000; + } +.edui-dialog div { + width: auto; + } +.edui-default .edui-dialog-wrap { + margin-right: 6px; + margin-bottom: 6px; + } +.edui-default .edui-dialog-fullscreen-flag { + margin-right: 0; + margin-bottom: 0; + } +.edui-default .edui-dialog-body { + position: relative; + padding: 2px 0 0 2px; + + _zoom: 1; + } +.edui-default .edui-dialog-fullscreen-flag .edui-dialog-body { + padding: 0; + } +.edui-default .edui-dialog-shadow { + position: absolute; + top: 0; + left: 0; + z-index: -1; + width: 100%; + height: 100%; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); + box-shadow: 0 3px 9px rgba(0, 0, 0, .5); + + *border-right-width: 2px; + *border-bottom-width: 2px; + } +.edui-default .edui-dialog-foot { + background-color: white; + } +.edui-default .edui-dialog-titlebar { + position: relative; + min-height: 24px; + padding: 8px 10px; + line-height: 24px; + cursor: move; + border-bottom: 1px solid #e5e5e5; + } +.edui-default .edui-dialog-caption { + padding-left: 5px; + font-size: 12px; + font-weight: bold; + line-height: 26px; + } +.edui-default .edui-dialog-draghandle { + height: 26px; + } +.edui-default .edui-dialog-closebutton { + position: absolute !important; + top: 4px; + right: 3px; + } +.edui-default .edui-dialog-closebutton .edui-button-body { + width: 30px; + height: 30px; + font-size: 19.5px; + font-weight: 700; + line-height: 30px; + color: #000; + text-align: center; + text-shadow: 0 1px 0 #fff; + cursor: pointer; + filter: alpha(opacity=20); + opacity: .2; + } +.edui-default .edui-dialog-closebutton .edui-button-body:before { + content: '×'; + } +.edui-default .edui-dialog-closebutton .edui-button-body:hover { + filter: alpha(opacity=70); + opacity: .7; + } +.edui-default .edui-dialog-foot { + height: 40px; + } +.edui-default .edui-dialog-buttons { + position: absolute; + right: 0; + } +.edui-default .edui-dialog-buttons .edui-button { + margin-right: 10px; + } +.edui-default .edui-dialog-buttons .edui-button .edui-button-body { + width: 96px; + height: 24px; + font-size: 12px; + line-height: 24px; + text-align: center; + cursor: default; + background-color: #f2f2f2; + border: 1px solid #bfbfbf; + border-radius: 4px; + } +.edui-default .edui-dialog-buttons .edui-button .edui-state-hover .edui-button-body { + background-color: #dedede; + border-color: #a1a1a1; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.edui-default .edui-dialog iframe { + padding: 0; + margin: 0; + vertical-align: top; + border: 0; + } +.edui-default .edui-dialog-modalmask { + position: absolute; + background-color: #ccc; + filter: alpha(opacity=30); + opacity: .3; + /*z-index: 1999;*/ + } +.edui-default .edui-dialog-dragmask { + position: absolute; + cursor: move; + /*z-index: 2001;*/ + background-color: transparent; + } +.edui-default .edui-dialog-content { + position: relative; + } +.edui-default .dialogcontmask { + position: absolute; + display: block; + width: 100%; + height: 100%; + cursor: move; + visibility: hidden; + filter: alpha(opacity=0); + opacity: 0; + } +/*link-dialog*/ +.edui-default .edui-for-link .edui-dialog-content { + width: 420px; + height: 200px; + overflow: hidden; + } +/*background-dialog*/ +.edui-default .edui-for-background .edui-dialog-content { + width: 440px; + height: 280px; + overflow: hidden; + } +/*template-dialog*/ +.edui-default .edui-for-template .edui-dialog-content { + width: 630px; + height: 390px; + overflow: hidden; + } +/*scrawl-dialog*/ +.edui-default .edui-for-scrawl .edui-dialog-content { + width: 515px; + height: 360px; + + *width: 506px; + } +/*spechars-dialog*/ +.edui-default .edui-for-spechars .edui-dialog-content { + width: 620px; + height: 500px; + + *width: 630px; + *height: 570px; + } +/*image-dialog*/ +.edui-default .edui-for-insertimage .edui-dialog-content { + width: 650px; + height: 400px; + overflow: hidden; + } +/*webapp-dialog*/ +.edui-default .edui-for-webapp .edui-dialog-content { + width: 560px; + height: 450px; + overflow: hidden; + + _width: 565px; + } +/*image-insertframe*/ +.edui-default .edui-for-insertframe .edui-dialog-content { + width: 350px; + height: 200px; + overflow: hidden; + } +/*wordImage-dialog*/ +.edui-default .edui-for-wordimage .edui-dialog-content { + width: 620px; + height: 380px; + overflow: hidden; + } +/*attachment-dialog*/ +.edui-default .edui-for-attachment .edui-dialog-content { + width: 650px; + height: 400px; + overflow: hidden; + } +/*map-dialog*/ +.edui-default .edui-for-map .edui-dialog-content { + width: 550px; + height: 400px; + } +/*gmap-dialog*/ +.edui-default .edui-for-gmap .edui-dialog-content { + width: 550px; + height: 400px; + } +/*video-dialog*/ +.edui-default .edui-for-insertvideo .edui-dialog-content { + width: 590px; + height: 390px; + } +/*anchor-dialog*/ +.edui-default .edui-for-anchor .edui-dialog-content { + width: 320px; + height: 60px; + overflow: hidden; + } +/*searchreplace-dialog*/ +.edui-default .edui-for-searchreplace .edui-dialog-content { + width: 400px; + height: 220px; + } +/*help-dialog*/ +.edui-default .edui-for-help .edui-dialog-content { + width: 400px; + height: 420px; + } +/*edittable-dialog*/ +.edui-default .edui-for-edittable .edui-dialog-content { + width: 540px; + height: 335px; + + _width: 590px; + } +/*edittip-dialog*/ +.edui-default .edui-for-edittip .edui-dialog-content { + width: 225px; + height: 60px; + } +/*edittd-dialog*/ +.edui-default .edui-for-edittd .edui-dialog-content { + width: 240px; + height: 50px; + } +/*snapscreen-dialog*/ +.edui-default .edui-for-snapscreen .edui-dialog-content { + width: 400px; + height: 220px; + } +/*music-dialog*/ +.edui-default .edui-for-music .edui-dialog-content { + width: 515px; + height: 360px; + } +/*段落弹出菜单*/ +.edui-default .edui-for-paragraph .edui-listitem-label { + font-family: Tahoma, Verdana, Arial, Helvetica; + } +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-p { + font-size: 22px; + line-height: 27px; + } +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h1 { + font-size: 32px; + font-weight: bolder; + line-height: 36px; + } +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h2 { + font-size: 27px; + font-weight: bolder; + line-height: 29px; + } +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h3 { + font-size: 19px; + font-weight: bolder; + line-height: 23px; + } +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h4 { + font-size: 16px; + font-weight: bolder; + line-height: 19px; + } +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h5 { + font-size: 13px; + font-weight: bolder; + line-height: 16px; + } +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h6 { + font-size: 12px; + font-weight: bolder; + line-height: 14px; + } +/* 表格弹出菜单 */ +.edui-default .edui-for-inserttable .edui-splitborder { + display: none; + } +.edui-default .edui-for-inserttable .edui-splitbutton-body .edui-arrow { + width: 0; + } +.edui-default .edui-toolbar .edui-for-inserttable .edui-state-active .edui-splitborder { + border-left: 1px solid transparent; + } +.edui-default .edui-tablepicker .edui-infoarea { + width: 220px; + height: 14px; + margin-bottom: 3px; + clear: both; + font-size: 12px; + line-height: 14px; + } +.edui-default .edui-tablepicker .edui-infoarea .edui-label { + float: left; + } +.edui-default .edui-dialog-buttons .edui-label { + line-height: 24px; + } +.edui-default .edui-tablepicker .edui-infoarea .edui-clickable { + float: right; + } +.edui-default .edui-tablepicker .edui-pickarea { + width: 220px; + height: 220px; + background: url("../images/unhighlighted.gif") repeat; + } +.edui-default .edui-tablepicker .edui-pickarea .edui-overlay { + background: url("../images/highlighted.gif") repeat; + } +/* 颜色弹出菜单 */ +.edui-default .edui-colorpicker-topbar { + width: 200px; + height: 27px; + /*border-bottom: 1px gray dashed;*/ + } +.edui-default .edui-colorpicker-preview { + float: left; + width: 128px; + height: 20px; + margin-left: 1px; + border: 1px inset black; + } +.edui-default .edui-colorpicker-nocolor { + float: right; + height: 14px; + padding: 3px 5px; + margin-right: 1px; + font-size: 12px; + line-height: 14px; + cursor: pointer; + border: 1px solid #333; + } +.edui-default .edui-colorpicker-tablefirstrow { + height: 30px; + } +.edui-default .edui-colorpicker-colorcell { + display: block; + width: 14px; + height: 14px; + margin: 0; + cursor: pointer; + } +.edui-default .edui-colorpicker-colorcell:hover { + width: 14px; + height: 14px; + margin: 0; + } +.edui-default .edui-colorpicker-advbtn { + display: block; + height: 20px; + text-align: center; + cursor: pointer; + } +.arrow_down { + background: white url('../images/arrow_down.png') no-repeat center; + } +.arrow_up { + background: white url('../images/arrow_up.png') no-repeat center; + } +/*高级的样式*/ +.edui-colorpicker-adv { + position: relative; + display: none; + height: 180px; + overflow: hidden; + } +.edui-colorpicker-plant, +.edui-colorpicker-hue { + border: solid 1px #666; + } +.edui-colorpicker-pad { + position: absolute; + top: 13px; + left: 14px; + width: 150px; + height: 150px; + overflow: hidden; + cursor: crosshair; + background: red; + } +.edui-colorpicker-cover { + position: absolute; + top: 0; + left: 0; + width: 150px; + height: 150px; + background: url("../images/tangram-colorpicker.png") -160px -200px; + } +.edui-colorpicker-padDot { + position: absolute; + top: 0; + left: 0; + z-index: 1000; + width: 11px; + height: 11px; + overflow: hidden; + background: url(../images/tangram-colorpicker.png) 0 -200px repeat-x; + } +.edui-colorpicker-sliderMain { + position: absolute; + top: 13px; + left: 171px; + width: 19px; + height: 152px; + background: url(../images/tangram-colorpicker.png) -179px -12px no-repeat; + } +.edui-colorpicker-slider { + width: 100%; + height: 100%; + cursor: pointer; + } +.edui-colorpicker-thumb { + position: absolute; + top: 0; + right: -1px; + left: -1px; + height: 3px; + cursor: pointer; + background: white; + border: 1px solid black; + opacity: .8; + } +/*自动排版弹出菜单*/ +.edui-default .edui-autotypesetpicker .edui-autotypesetpicker-body { + margin-bottom: 3px; + clear: both; + font-size: 12px; + } +.edui-default .edui-autotypesetpicker-body table { + border-spacing: 2px; + border-collapse: separate; + } +.edui-default .edui-autotypesetpicker-body td { + font-size: 12px; + word-wrap: break-word; + } +.edui-default .edui-autotypesetpicker-body td input { + margin: 3px 3px 3px 4px; + + *margin: 1px 0 0 0; + } +/*自动排版弹出菜单*/ +.edui-default .edui-cellalignpicker .edui-cellalignpicker-body { + width: 70px; + font-size: 12px; + cursor: default; + } +.edui-default .edui-cellalignpicker-body table { + border-spacing: 0; + border-collapse: separate; + } +.edui-default .edui-cellalignpicker-body td { + padding: 1px; + } +.edui-default .edui-cellalignpicker-body .edui-icon { + width: 20px; + height: 20px; + padding: 1px; + background-image: url(../images/table-cell-align.png); + } +.edui-default .edui-cellalignpicker-body .edui-left { + background-position: 0 0; + } +.edui-default .edui-cellalignpicker-body .edui-center { + background-position: -25px 0; + } +.edui-default .edui-cellalignpicker-body .edui-right { + background-position: -51px 0; + } +.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-left { + background-position: -73px 0; + } +.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-center { + background-position: -98px 0; + } +.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-right { + background-position: -124px 0; + } +.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-left { + background-color: #f1f4f5; + background-position: -146px 0; + } +.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-center { + background-position: -245px 0; + } +.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-right { + background-position: -271px 0; + } +/*分隔线*/ +.edui-default .edui-toolbar .edui-separator { + width: 2px; + height: 20px; + margin: 2px 4px 2px 3px; + background: url(../images/icons.png) -181px 0; + background: url(../images/icons.gif) -181px 0 \9; + } +/*颜色按钮 */ +.edui-default .edui-toolbar .edui-colorbutton .edui-colorlump { + position: absolute; + bottom: 1px; + left: 1px; + width: 18px; + height: 4px; + overflow: hidden; + } +/*表情按钮及弹出菜单*/ +/*去除了表情的下拉箭头*/ +.edui-default .edui-for-emotion .edui-icon { + background-position: -60px -20px; + } +.edui-default .edui-for-emotion .edui-popup-content iframe { + width: 514px; + height: 380px; + overflow: hidden; + } +.edui-default .edui-for-emotion .edui-popup-content { + position: relative; + z-index: 555; + } +.edui-default .edui-for-emotion .edui-splitborder { + display: none; + } +.edui-default .edui-for-emotion .edui-splitbutton-body .edui-arrow { + width: 0; + } +.edui-default .edui-toolbar .edui-for-emotion .edui-state-active .edui-splitborder { + border-left: 1px solid transparent; + } +/*contextmenu*/ +.edui-default .edui-hassubmenu .edui-arrow { + float: right; + width: 20px; + height: 20px; + background: url("../images/icons-all.gif") no-repeat 10px -233px; + } +.edui-default .edui-menu-body .edui-menuitem { + padding: 1px; + } +.edui-default .edui-menuseparator { + height: 1px; + margin: 2px 0; + overflow: hidden; + } +.edui-default .edui-menuseparator-inner { + margin-right: 1px; + margin-left: 29px; + border-bottom: 1px solid #e2e3e3; + } +.edui-default .edui-menu-body .edui-state-hover { + padding: 0 !important; + background-color: #fff5d4; + border: 1px solid #dcac6c; + } +/*弹出菜单*/ +.edui-default .edui-shortcutmenu { + width: 190px; + height: 50px; + padding: 2px; + background-color: #fff; + border: 1px solid #ccc; + border-radius: 4px; + } +/*粘贴弹出菜单*/ +.edui-default .edui-wordpastepop .edui-popup-content { + width: 54px; + height: 21px; + padding: 0; + border: none; + } +.edui-default .edui-pasteicon { + width: 100%; + height: 100%; + background-image: url('../images/wordpaste.png'); + background-position: 0 0; + } +.edui-default .edui-pasteicon.edui-state-opened { + background-position: 0 -34px; + } +.edui-default .edui-pastecontainer { + position: relative; + width: 97px; + visibility: hidden; + background: #fff; + border: 1px solid #ccc; + } +.edui-default .edui-pastecontainer .edui-title { + height: 25px; + padding-left: 5px; + font-size: 12px; + font-weight: bold; + line-height: 25px; + background: #f8f8ff; + } +.edui-default .edui-pastecontainer .edui-button { + margin: 3px 0; + overflow: hidden; + } +.edui-default .edui-pastecontainer .edui-button .edui-richtxticon, +.edui-default .edui-pastecontainer .edui-button .edui-tagicon, +.edui-default .edui-pastecontainer .edui-button .edui-plaintxticon { + float: left; + width: 29px; + height: 29px; + margin-left: 5px; + cursor: pointer; + background-image: url('../images/wordpaste.png'); + background-repeat: no-repeat; + } +.edui-default .edui-pastecontainer .edui-button .edui-richtxticon { + margin-left: 0; + background-position: -109px 0; + } +.edui-default .edui-pastecontainer .edui-button .edui-tagicon { + background-position: -148px 1px; + } +.edui-default .edui-pastecontainer .edui-button .edui-plaintxticon { + background-position: -72px 0; + } +.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-richtxticon { + background-position: -109px -34px; + } +.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-tagicon { + background-position: -148px -34px; + } +.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-plaintxticon { + background-position: -72px -34px; + } diff --git a/root/res/zui/lib/ueditor/ueditor.min.css b/root/res/zui/lib/ueditor/ueditor.min.css new file mode 100644 index 0000000..0900926 --- /dev/null +++ b/root/res/zui/lib/ueditor/ueditor.min.css @@ -0,0 +1 @@ +.edui-default .edui-box{padding:0;margin:0;overflow:hidden;border:none}.edui-default a.edui-box{display:block;color:#000;text-decoration:none}.edui-default a.edui-box:hover{text-decoration:none}.edui-default a.edui-box:active{text-decoration:none}.edui-default table.edui-box{border-collapse:collapse}.edui-default ul.edui-box{list-style-type:none}div.edui-box{position:relative;display:inline-block!important;vertical-align:top}.edui-default .edui-clearfix{zoom:1}.edui-default .edui-clearfix:after{display:block;clear:both;content:'\20'}* html div.edui-box{display:inline!important}.edui-combox-body,.edui-default .edui-button-body,.edui-menubutton-body,.edui-splitbutton-body{position:relative}.edui-default .edui-popup{position:absolute;-webkit-user-select:none;-moz-user-select:none}.edui-default .edui-popup .edui-shadow{position:absolute;z-index:-1}.edui-default .edui-popup .edui-bordereraser{position:absolute;overflow:hidden}.edui-default .edui-tablepicker .edui-canvas{position:relative}.edui-default .edui-tablepicker .edui-canvas .edui-overlay{position:absolute}.edui-default .edui-dialog-modalmask,.edui-dialog-dragmask{position:absolute;top:0;left:0;width:100%;height:100%}.edui-default .edui-toolbar{position:relative}.edui-default .edui-label{cursor:default}.edui-default span.edui-clickable{color:#00f;text-decoration:underline;cursor:pointer}.edui-default span.edui-unclickable{color:gray;cursor:default}.edui-default .edui-toolbar{width:auto;height:auto;padding:1px;overflow:hidden;cursor:default;zoom:1;-webkit-user-select:none;-moz-user-select:none}.edui-default .edui-toolbar .edui-button,.edui-default .edui-toolbar .edui-combox,.edui-default .edui-toolbar .edui-menubutton,.edui-default .edui-toolbar .edui-splitbutton{margin:1px}.edui-default .edui-editor{position:relative;overflow:visible;background-color:#fff;border:1px solid #d4d4d4;border-radius:4px}.edui-editor div{width:auto;height:auto}.edui-default .edui-editor-toolbarbox{position:relative;zoom:1;border-top-left-radius:4px;border-top-right-radius:4px}.edui-default .edui-editor-toolbarboxouter{background-color:#fafafa;background-repeat:repeat-x;border-bottom:1px solid #d4d4d4;*zoom:1}.edui-default .edui-editor-toolbarboxinner{padding:2px}.edui-default .edui-editor-iframeholder{position:relative}.edui-default .edui-editor-bottomContainer{overflow:hidden}.edui-default .edui-editor-bottomContainer table{width:100%;height:0;overflow:hidden;border-spacing:0}.edui-default .edui-editor-bottomContainer td{font-family:Arial,Helvetica,Tahoma,Verdana,Sans-Serif;font-size:12px;line-height:20px;white-space:nowrap;border-top:1px solid #ccc}.edui-default .edui-editor-wordcount{margin-right:5px;color:#aaa;text-align:right}.edui-default .edui-editor-scale{width:12px}.edui-default .edui-editor-scale .edui-editor-icon{float:right;width:100%;height:12px;margin-top:10px;cursor:se-resize;background:url(../images/scale.png) no-repeat}.edui-default .edui-editor-breadcrumb{margin:2px 0 0 3px}.edui-default .edui-editor-breadcrumb span{color:#00f;text-decoration:underline;cursor:pointer}.edui-default .edui-toolbar .edui-for-fullscreen{float:right}.edui-default .edui-bubble .edui-popup-content{padding:5px;font-family:"宋体";font-size:10pt;background-color:#fff6d9;border:1px solid #dcac6c}.edui-default .edui-editor-toolbarmsg{position:absolute;bottom:-25px;left:0;z-index:1009;width:99.9%;background-color:#fff6d9;border-bottom:1px solid #ccc}.edui-default .edui-editor-toolbarmsg-upload{position:absolute;top:5px;left:350px;width:100px;height:16px;font-size:14px;line-height:16px;color:#00f;cursor:pointer}.edui-default .edui-editor-toolbarmsg-label{padding:4px;font-size:12px;line-height:16px}.edui-default .edui-editor-toolbarmsg-close{float:right;width:20px;height:16px;line-height:16px;color:red;cursor:pointer}.edui-default .edui-list .edui-bordereraser{display:none}.edui-default .edui-listitem{padding:1px;white-space:nowrap}.edui-default .edui-list .edui-state-hover{position:relative;padding:0;background-color:#fff5d4;border:1px solid #dcac6c}.edui-default .edui-for-fontfamily .edui-listitem-label{min-width:130px;height:22px;padding-left:5px;font-size:12px;line-height:22px;_width:120px}.edui-default .edui-for-insertcode .edui-listitem-label{min-width:120px;height:22px;padding-left:5px;font-size:12px;line-height:22px;_width:120px}.edui-default .edui-for-underline .edui-listitem-label{min-width:120px;padding:3px 5px;font-size:12px;_width:120px}.edui-default .edui-for-fontsize .edui-listitem-label{min-width:120px;padding:3px 5px;_width:120px}.edui-default .edui-for-paragraph .edui-listitem-label{min-width:200px;padding:2px 5px;_width:200px}.edui-default .edui-for-rowspacingbottom .edui-listitem-label,.edui-default .edui-for-rowspacingtop .edui-listitem-label{min-width:53px;padding:2px 5px;_width:53px}.edui-default .edui-for-lineheight .edui-listitem-label{min-width:53px;padding:2px 5px;_width:53px}.edui-default .edui-for-customstyle .edui-listitem-label{width:200px!important;min-width:200px;padding:2px 5px;_width:200px}.edui-default .edui-menu{z-index:3000}.edui-default .edui-menu .edui-popup-content{padding:3px}.edui-default .edui-menu-body{min-width:170px;background:url(../images/sparator_v.png) repeat-y 25px;_width:150px}.edui-default .edui-menuitem{height:20px;vertical-align:top;cursor:default}.edui-default .edui-menuitem .edui-icon{width:20px!important;height:20px!important;background:url(../images/icons.png) 0 -4000px;background:url(../images/icons.gif) 0 -4000px\9}.edui-default .edui-menuitem .edui-label{height:20px;padding-left:10px;font-size:12px;line-height:20px}.edui-default .edui-state-checked .edui-menuitem-body{background:url(../images/icons-all.gif) no-repeat 6px -205px}.edui-default .edui-state-disabled .edui-menuitem-label{color:gray}.edui-default .edui-toolbar .edui-combox-body .edui-button-body{width:60px;height:20px;padding-left:5px;margin:0 3px 0 0;font-size:12px;line-height:20px;white-space:nowrap}.edui-default .edui-toolbar .edui-combox-body .edui-arrow{width:9px;height:20px;background:url(../images/icons.png) -741px 0;_background:url(../images/icons.gif) -741px 0}.edui-default .edui-toolbar .edui-combox .edui-combox-body{background-color:#fff;border:1px solid #ccc;border-radius:2px;-webkit-border-radius:2px;-moz-border-radius:2px}.edui-default .edui-toolbar .edui-combox-body .edui-splitborder{display:none}.edui-default .edui-toolbar .edui-combox-body .edui-arrow{border-left:1px solid #ccc}.edui-default .edui-toolbar .edui-state-hover .edui-combox-body{background-color:#fff5d4;border:1px solid #dcac6c}.edui-default .edui-toolbar .edui-state-hover .edui-combox-body .edui-arrow{border-left:1px solid #dcac6c}.edui-default .edui-toolbar .edui-state-checked .edui-combox-body{background-color:#ffe69f;border:1px solid #dcac6c}.edui-toolbar .edui-state-checked .edui-combox-body .edui-arrow{border-left:1px solid #dcac6c}.edui-toolbar .edui-state-disabled .edui-combox-body{background-color:#f0f0ee;filter:alpha(opacity=30);opacity:.3}.edui-toolbar .edui-state-opened .edui-combox-body{background-color:#fff;border:1px solid gray}.edui-default .edui-toolbar .edui-button .edui-icon,.edui-default .edui-toolbar .edui-menubutton .edui-icon,.edui-default .edui-toolbar .edui-splitbutton .edui-icon{width:20px!important;height:20px!important;background-image:url(../images/icons.png);background-image:url(../images/icons.gif)\9}.edui-default .edui-toolbar .edui-button .edui-button-wrap{position:relative;padding:1px}.edui-default .edui-toolbar .edui-button .edui-state-hover .edui-button-wrap{padding:0;background-color:#fff5d4;border:1px solid #dcac6c}.edui-default .edui-toolbar .edui-button .edui-state-checked .edui-button-wrap{padding:0;background-color:#ffe69f;border:1px solid #dcac6c;border-radius:2px;-webkit-border-radius:2px;-moz-border-radius:2px}.edui-default .edui-toolbar .edui-button .edui-state-active .edui-button-wrap{padding:0;background-color:#fff;border:1px solid gray}.edui-default .edui-toolbar .edui-state-disabled .edui-label{color:#ccc}.edui-default .edui-toolbar .edui-state-disabled .edui-icon{filter:alpha(opacity=30);opacity:.3}.edui-default .edui-for-undo .edui-icon{background-position:-160px 0}.edui-default .edui-for-redo .edui-icon{background-position:-100px 0}.edui-default .edui-for-bold .edui-icon{background-position:0 0}.edui-default .edui-for-italic .edui-icon{background-position:-60px 0}.edui-default .edui-for-fontborder .edui-icon{background-position:-160px -40px}.edui-default .edui-for-underline .edui-icon{background-position:-140px 0}.edui-default .edui-for-strikethrough .edui-icon{background-position:-120px 0}.edui-default .edui-for-subscript .edui-icon{background-position:-600px 0}.edui-default .edui-for-superscript .edui-icon{background-position:-620px 0}.edui-default .edui-for-blockquote .edui-icon{background-position:-220px 0}.edui-default .edui-for-forecolor .edui-icon{background-position:-720px 0}.edui-default .edui-for-backcolor .edui-icon{background-position:-760px 0}.edui-default .edui-for-inserttable .edui-icon{background-position:-580px -20px}.edui-default .edui-for-autotypeset .edui-icon{background-position:-640px -40px}.edui-default .edui-for-justifyleft .edui-icon{background-position:-460px 0}.edui-default .edui-for-justifycenter .edui-icon{background-position:-420px 0}.edui-default .edui-for-justifyright .edui-icon{background-position:-480px 0}.edui-default .edui-for-justifyjustify .edui-icon{background-position:-440px 0}.edui-default .edui-for-insertorderedlist .edui-icon{background-position:-80px 0}.edui-default .edui-for-insertunorderedlist .edui-icon{background-position:-20px 0}.edui-default .edui-for-lineheight .edui-icon{background-position:-725px -40px}.edui-default .edui-for-rowspacingbottom .edui-icon{background-position:-745px -40px}.edui-default .edui-for-rowspacingtop .edui-icon{background-position:-765px -40px}.edui-default .edui-for-horizontal .edui-icon{background-position:-360px 0}.edui-default .edui-for-link .edui-icon{background-position:-500px 0}.edui-default .edui-for-code .edui-icon{background-position:-440px -40px}.edui-default .edui-for-insertimage .edui-icon{background-position:-726px -77px}.edui-default .edui-for-insertframe .edui-icon{background-position:-240px -40px}.edui-default .edui-for-emoticon .edui-icon{background-position:-60px -20px}.edui-default .edui-for-spechars .edui-icon{background-position:-240px 0}.edui-default .edui-for-help .edui-icon{background-position:-340px 0}.edui-default .edui-for-print .edui-icon{background-position:-440px -20px}.edui-default .edui-for-preview .edui-icon{background-position:-420px -20px}.edui-default .edui-for-selectall .edui-icon{background-position:-400px -20px}.edui-default .edui-for-searchreplace .edui-icon{background-position:-520px -20px}.edui-default .edui-for-map .edui-icon{background-position:-40px -40px}.edui-default .edui-for-gmap .edui-icon{background-position:-260px -40px}.edui-default .edui-for-insertvideo .edui-icon{background-position:-320px -20px}.edui-default .edui-for-time .edui-icon{background-position:-160px -20px}.edui-default .edui-for-date .edui-icon{background-position:-140px -20px}.edui-default .edui-for-cut .edui-icon{background-position:-680px 0}.edui-default .edui-for-copy .edui-icon{background-position:-700px 0}.edui-default .edui-for-paste .edui-icon{background-position:-560px 0}.edui-default .edui-for-formatmatch .edui-icon{background-position:-40px 0}.edui-default .edui-for-pasteplain .edui-icon{background-position:-360px -20px}.edui-default .edui-for-directionalityltr .edui-icon{background-position:-20px -20px}.edui-default .edui-for-directionalityrtl .edui-icon{background-position:-40px -20px}.edui-default .edui-for-source .edui-icon{background-position:-261px 0}.edui-default .edui-for-removeformat .edui-icon{background-position:-580px 0}.edui-default .edui-for-unlink .edui-icon{background-position:-640px 0}.edui-default .edui-for-touppercase .edui-icon{background-position:-786px 0}.edui-default .edui-for-tolowercase .edui-icon{background-position:-806px 0}.edui-default .edui-for-insertrow .edui-icon{background-position:-478px -76px}.edui-default .edui-for-insertrownext .edui-icon{background-position:-498px -76px}.edui-default .edui-for-insertcol .edui-icon{background-position:-455px -76px}.edui-default .edui-for-insertcolnext .edui-icon{background-position:-429px -76px}.edui-default .edui-for-mergeright .edui-icon{background-position:-60px -40px}.edui-default .edui-for-mergedown .edui-icon{background-position:-80px -40px}.edui-default .edui-for-splittorows .edui-icon{background-position:-100px -40px}.edui-default .edui-for-splittocols .edui-icon{background-position:-120px -40px}.edui-default .edui-for-insertparagraphbeforetable .edui-icon{background-position:-140px -40px}.edui-default .edui-for-deleterow .edui-icon{background-position:-660px -20px}.edui-default .edui-for-deletecol .edui-icon{background-position:-640px -20px}.edui-default .edui-for-splittocells .edui-icon{background-position:-800px -20px}.edui-default .edui-for-mergecells .edui-icon{background-position:-760px -20px}.edui-default .edui-for-deletetable .edui-icon{background-position:-620px -20px}.edui-default .edui-for-cleardoc .edui-icon{background-position:-520px 0}.edui-default .edui-for-fullscreen .edui-icon{background-position:-100px -20px}.edui-default .edui-for-anchor .edui-icon{background-position:-200px 0}.edui-default .edui-for-pagebreak .edui-icon{background-position:-460px -40px}.edui-default .edui-for-imagenone .edui-icon{background-position:-480px -40px}.edui-default .edui-for-imageleft .edui-icon{background-position:-500px -40px}.edui-default .edui-for-wordimage .edui-icon{background-position:-660px -40px}.edui-default .edui-for-imageright .edui-icon{background-position:-520px -40px}.edui-default .edui-for-imagecenter .edui-icon{background-position:-540px -40px}.edui-default .edui-for-indent .edui-icon{background-position:-400px 0}.edui-default .edui-for-outdent .edui-icon{background-position:-540px 0}.edui-default .edui-for-webapp .edui-icon{background-position:-601px -40px}.edui-default .edui-for-table .edui-icon{background-position:-580px -20px}.edui-default .edui-for-edittable .edui-icon{background-position:-420px -40px}.edui-default .edui-for-template .edui-icon{background-position:-339px -40px}.edui-default .edui-for-delete .edui-icon{background-position:-360px -40px}.edui-default .edui-for-attachment .edui-icon{background-position:-620px -40px}.edui-default .edui-for-edittd .edui-icon{background-position:-700px -40px}.edui-default .edui-for-snapscreen .edui-icon{background-position:-581px -40px}.edui-default .edui-for-scrawl .edui-icon{background-position:-801px -41px}.edui-default .edui-for-background .edui-icon{background-position:-680px -40px}.edui-default .edui-for-music .edui-icon{background-position:-18px -40px}.edui-default .edui-for-formula .edui-icon{background-position:-200px -40px}.edui-default .edui-for-aligntd .edui-icon{background-position:-236px -76px}.edui-default .edui-for-insertparagraphtrue .edui-icon{background-position:-625px -76px}.edui-default .edui-for-insertparagraph .edui-icon{background-position:-602px -76px}.edui-default .edui-for-insertcaption .edui-icon{background-position:-336px -76px}.edui-default .edui-for-deletecaption .edui-icon{background-position:-362px -76px}.edui-default .edui-for-inserttitle .edui-icon{background-position:-286px -76px}.edui-default .edui-for-deletetitle .edui-icon{background-position:-311px -76px}.edui-default .edui-for-aligntable .edui-icon{background-position:-440px 0}.edui-default .edui-for-tablealignment-left .edui-icon{background-position:-460px 0}.edui-default .edui-for-tablealignment-center .edui-icon{background-position:-420px 0}.edui-default .edui-for-tablealignment-right .edui-icon{background-position:-480px 0}.edui-default .edui-for-drafts .edui-icon{background-position:-560px 0}.edui-default .edui-for-charts .edui-icon{background:url(../images/charts.png) no-repeat 2px 3px!important}.edui-default .edui-for-inserttitlecol .edui-icon{background-position:-673px -76px}.edui-default .edui-for-deletetitlecol .edui-icon{background-position:-698px -76px}.edui-default .edui-for-simpleupload .edui-icon{background-position:-380px 0}.edui-default .edui-toolbar .edui-menubutton-body .edui-arrow,.edui-default .edui-toolbar .edui-splitbutton-body .edui-arrow{width:9px;height:20px;background:url(../images/icons.png) -741px 0;_background:url(../images/icons.gif) -741px 0}.edui-default .edui-toolbar .edui-menubutton .edui-menubutton-body,.edui-default .edui-toolbar .edui-splitbutton .edui-splitbutton-body{padding:1px}.edui-default .edui-toolbar .edui-splitborder{width:1px;height:20px}.edui-default .edui-toolbar .edui-state-hover .edui-splitborder{width:1px;border-left:0 solid #dcac6c}.edui-default .edui-toolbar .edui-state-active .edui-splitborder{width:0;border-left:1px solid gray}.edui-default .edui-toolbar .edui-state-opened .edui-splitborder{width:1px;border:0}.edui-default .edui-toolbar .edui-menubutton .edui-state-hover .edui-menubutton-body,.edui-default .edui-toolbar .edui-splitbutton .edui-state-hover .edui-splitbutton-body{padding:0;background-color:#fff5d4;border:1px solid #dcac6c}.edui-default .edui-toolbar .edui-menubutton .edui-state-checked .edui-menubutton-body,.edui-default .edui-toolbar .edui-splitbutton .edui-state-checked .edui-splitbutton-body{padding:0;background-color:#ffe69f;border:1px solid #dcac6c}.edui-default .edui-toolbar .edui-menubutton .edui-state-active .edui-menubutton-body,.edui-default .edui-toolbar .edui-splitbutton .edui-state-active .edui-splitbutton-body{padding:0;background-color:#fff;border:1px solid gray}.edui-default .edui-state-disabled .edui-arrow{filter:alpha(opacity=30);opacity:.3}.edui-default .edui-toolbar .edui-menubutton .edui-state-opened .edui-menubutton-body,.edui-default .edui-toolbar .edui-splitbutton .edui-state-opened .edui-splitbutton-body{padding:0;background-color:#fff;border:1px solid gray}.edui-default .edui-for-insertorderedlist .edui-bordereraser,.edui-default .edui-for-insertunorderedlist .edui-bordereraser,.edui-default .edui-for-lineheight .edui-bordereraser,.edui-default .edui-for-rowspacingbottom .edui-bordereraser,.edui-default .edui-for-rowspacingtop .edui-bordereraser{background-color:#fff}.edui-default .edui-for-insertorderedlist .edui-popup-body .edui-icon,.edui-default .edui-for-insertunorderedlist .edui-popup-body .edui-icon,.edui-default .edui-for-lineheight .edui-popup-body .edui-icon,.edui-default .edui-for-rowspacingbottom .edui-popup-body .edui-icon,.edui-default .edui-for-rowspacingtop .edui-popup-body .edui-icon{background-image:none}.edui-default .edui-popup{z-index:3000;width:auto;height:auto;background-color:#fff}.edui-default .edui-popup .edui-shadow{top:0;left:0;width:100%;height:100%}.edui-default .edui-popup-content{padding:5px;background:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);*border-right-width:2px;*border-bottom-width:2px}.edui-default .edui-popup .edui-bordereraser{height:3px;background-color:#fff}.edui-default .edui-menu .edui-bordereraser{height:3px}.edui-default .edui-anchor-topleft .edui-bordereraser{top:-2px;left:1px}.edui-default .edui-anchor-topright .edui-bordereraser{top:-2px;right:1px}.edui-default .edui-anchor-bottomleft .edui-bordereraser{bottom:-6px;left:0;height:7px;border-right:1px solid gray;border-left:1px solid gray}.edui-default .edui-anchor-bottomright .edui-bordereraser{right:0;bottom:-6px;height:7px;border-right:1px solid gray;border-left:1px solid gray}.edui-popup div{width:auto;height:auto}.edui-default .edui-editor-messageholder{position:absolute;top:28px;right:3px;display:block;width:150px;height:auto;padding:0;margin:0;border:0}.edui-default .edui-message{position:relative;min-height:10px;padding:0;margin-bottom:3px;text-shadow:0 1px 0 rgba(255,255,255,.5)}.edui-default .edui-message-body{padding:8px 15px 8px 8px;color:#c09853;background-color:#fcf8e3;border:1px solid #fbeed5;border-radius:4px}.edui-default .edui-message-type-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.edui-default .edui-message-type-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.edui-default .edui-message-type-danger,.edui-default .edui-message-type-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.edui-default .edui-message .edui-message-closer{position:absolute;top:0;right:0;display:block;float:right;width:16px;height:16px;padding:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:20px;font-weight:700;line-height:16px;color:#999;text-shadow:0 1px 0 #fff;cursor:pointer;background:0 0;border:0}.edui-default .edui-message .edui-message-content{font-size:10pt;word-break:normal;word-wrap:break-word}.edui-default .edui-dialog{position:absolute;z-index:2000}.edui-dialog div{width:auto}.edui-default .edui-dialog-wrap{margin-right:6px;margin-bottom:6px}.edui-default .edui-dialog-fullscreen-flag{margin-right:0;margin-bottom:0}.edui-default .edui-dialog-body{position:relative;padding:2px 0 0 2px;_zoom:1}.edui-default .edui-dialog-fullscreen-flag .edui-dialog-body{padding:0}.edui-default .edui-dialog-shadow{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);*border-right-width:2px;*border-bottom-width:2px}.edui-default .edui-dialog-foot{background-color:#fff}.edui-default .edui-dialog-titlebar{position:relative;min-height:24px;padding:8px 10px;line-height:24px;cursor:move;border-bottom:1px solid #e5e5e5}.edui-default .edui-dialog-caption{padding-left:5px;font-size:12px;font-weight:700;line-height:26px}.edui-default .edui-dialog-draghandle{height:26px}.edui-default .edui-dialog-closebutton{position:absolute!important;top:4px;right:3px}.edui-default .edui-dialog-closebutton .edui-button-body{width:30px;height:30px;font-size:19.5px;font-weight:700;line-height:30px;color:#000;text-align:center;text-shadow:0 1px 0 #fff;cursor:pointer;filter:alpha(opacity=20);opacity:.2}.edui-default .edui-dialog-closebutton .edui-button-body:before{content:'×'}.edui-default .edui-dialog-closebutton .edui-button-body:hover{filter:alpha(opacity=70);opacity:.7}.edui-default .edui-dialog-foot{height:40px}.edui-default .edui-dialog-buttons{position:absolute;right:0}.edui-default .edui-dialog-buttons .edui-button{margin-right:10px}.edui-default .edui-dialog-buttons .edui-button .edui-button-body{width:96px;height:24px;font-size:12px;line-height:24px;text-align:center;cursor:default;background-color:#f2f2f2;border:1px solid #bfbfbf;border-radius:4px}.edui-default .edui-dialog-buttons .edui-button .edui-state-hover .edui-button-body{background-color:#dedede;border-color:#a1a1a1;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.edui-default .edui-dialog iframe{padding:0;margin:0;vertical-align:top;border:0}.edui-default .edui-dialog-modalmask{position:absolute;background-color:#ccc;filter:alpha(opacity=30);opacity:.3}.edui-default .edui-dialog-dragmask{position:absolute;cursor:move;background-color:transparent}.edui-default .edui-dialog-content{position:relative}.edui-default .dialogcontmask{position:absolute;display:block;width:100%;height:100%;cursor:move;visibility:hidden;filter:alpha(opacity=0);opacity:0}.edui-default .edui-for-link .edui-dialog-content{width:420px;height:200px;overflow:hidden}.edui-default .edui-for-background .edui-dialog-content{width:440px;height:280px;overflow:hidden}.edui-default .edui-for-template .edui-dialog-content{width:630px;height:390px;overflow:hidden}.edui-default .edui-for-scrawl .edui-dialog-content{width:515px;height:360px;*width:506px}.edui-default .edui-for-spechars .edui-dialog-content{width:620px;height:500px;*width:630px;*height:570px}.edui-default .edui-for-insertimage .edui-dialog-content{width:650px;height:400px;overflow:hidden}.edui-default .edui-for-webapp .edui-dialog-content{width:560px;height:450px;overflow:hidden;_width:565px}.edui-default .edui-for-insertframe .edui-dialog-content{width:350px;height:200px;overflow:hidden}.edui-default .edui-for-wordimage .edui-dialog-content{width:620px;height:380px;overflow:hidden}.edui-default .edui-for-attachment .edui-dialog-content{width:650px;height:400px;overflow:hidden}.edui-default .edui-for-map .edui-dialog-content{width:550px;height:400px}.edui-default .edui-for-gmap .edui-dialog-content{width:550px;height:400px}.edui-default .edui-for-insertvideo .edui-dialog-content{width:590px;height:390px}.edui-default .edui-for-anchor .edui-dialog-content{width:320px;height:60px;overflow:hidden}.edui-default .edui-for-searchreplace .edui-dialog-content{width:400px;height:220px}.edui-default .edui-for-help .edui-dialog-content{width:400px;height:420px}.edui-default .edui-for-edittable .edui-dialog-content{width:540px;height:335px;_width:590px}.edui-default .edui-for-edittip .edui-dialog-content{width:225px;height:60px}.edui-default .edui-for-edittd .edui-dialog-content{width:240px;height:50px}.edui-default .edui-for-snapscreen .edui-dialog-content{width:400px;height:220px}.edui-default .edui-for-music .edui-dialog-content{width:515px;height:360px}.edui-default .edui-for-paragraph .edui-listitem-label{font-family:Tahoma,Verdana,Arial,Helvetica}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-p{font-size:22px;line-height:27px}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h1{font-size:32px;font-weight:bolder;line-height:36px}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h2{font-size:27px;font-weight:bolder;line-height:29px}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h3{font-size:19px;font-weight:bolder;line-height:23px}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h4{font-size:16px;font-weight:bolder;line-height:19px}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h5{font-size:13px;font-weight:bolder;line-height:16px}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h6{font-size:12px;font-weight:bolder;line-height:14px}.edui-default .edui-for-inserttable .edui-splitborder{display:none}.edui-default .edui-for-inserttable .edui-splitbutton-body .edui-arrow{width:0}.edui-default .edui-toolbar .edui-for-inserttable .edui-state-active .edui-splitborder{border-left:1px solid transparent}.edui-default .edui-tablepicker .edui-infoarea{width:220px;height:14px;margin-bottom:3px;clear:both;font-size:12px;line-height:14px}.edui-default .edui-tablepicker .edui-infoarea .edui-label{float:left}.edui-default .edui-dialog-buttons .edui-label{line-height:24px}.edui-default .edui-tablepicker .edui-infoarea .edui-clickable{float:right}.edui-default .edui-tablepicker .edui-pickarea{width:220px;height:220px;background:url(../images/unhighlighted.gif) repeat}.edui-default .edui-tablepicker .edui-pickarea .edui-overlay{background:url(../images/highlighted.gif) repeat}.edui-default .edui-colorpicker-topbar{width:200px;height:27px}.edui-default .edui-colorpicker-preview{float:left;width:128px;height:20px;margin-left:1px;border:1px inset #000}.edui-default .edui-colorpicker-nocolor{float:right;height:14px;padding:3px 5px;margin-right:1px;font-size:12px;line-height:14px;cursor:pointer;border:1px solid #333}.edui-default .edui-colorpicker-tablefirstrow{height:30px}.edui-default .edui-colorpicker-colorcell{display:block;width:14px;height:14px;margin:0;cursor:pointer}.edui-default .edui-colorpicker-colorcell:hover{width:14px;height:14px;margin:0}.edui-default .edui-colorpicker-advbtn{display:block;height:20px;text-align:center;cursor:pointer}.arrow_down{background:#fff url(../images/arrow_down.png) no-repeat center}.arrow_up{background:#fff url(../images/arrow_up.png) no-repeat center}.edui-colorpicker-adv{position:relative;display:none;height:180px;overflow:hidden}.edui-colorpicker-hue,.edui-colorpicker-plant{border:solid 1px #666}.edui-colorpicker-pad{position:absolute;top:13px;left:14px;width:150px;height:150px;overflow:hidden;cursor:crosshair;background:red}.edui-colorpicker-cover{position:absolute;top:0;left:0;width:150px;height:150px;background:url(../images/tangram-colorpicker.png) -160px -200px}.edui-colorpicker-padDot{position:absolute;top:0;left:0;z-index:1000;width:11px;height:11px;overflow:hidden;background:url(../images/tangram-colorpicker.png) 0 -200px repeat-x}.edui-colorpicker-sliderMain{position:absolute;top:13px;left:171px;width:19px;height:152px;background:url(../images/tangram-colorpicker.png) -179px -12px no-repeat}.edui-colorpicker-slider{width:100%;height:100%;cursor:pointer}.edui-colorpicker-thumb{position:absolute;top:0;right:-1px;left:-1px;height:3px;cursor:pointer;background:#fff;border:1px solid #000;opacity:.8}.edui-default .edui-autotypesetpicker .edui-autotypesetpicker-body{margin-bottom:3px;clear:both;font-size:12px}.edui-default .edui-autotypesetpicker-body table{border-spacing:2px;border-collapse:separate}.edui-default .edui-autotypesetpicker-body td{font-size:12px;word-wrap:break-word}.edui-default .edui-autotypesetpicker-body td input{margin:3px 3px 3px 4px;*margin:1px 0 0 0}.edui-default .edui-cellalignpicker .edui-cellalignpicker-body{width:70px;font-size:12px;cursor:default}.edui-default .edui-cellalignpicker-body table{border-spacing:0;border-collapse:separate}.edui-default .edui-cellalignpicker-body td{padding:1px}.edui-default .edui-cellalignpicker-body .edui-icon{width:20px;height:20px;padding:1px;background-image:url(../images/table-cell-align.png)}.edui-default .edui-cellalignpicker-body .edui-left{background-position:0 0}.edui-default .edui-cellalignpicker-body .edui-center{background-position:-25px 0}.edui-default .edui-cellalignpicker-body .edui-right{background-position:-51px 0}.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-left{background-position:-73px 0}.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-center{background-position:-98px 0}.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-right{background-position:-124px 0}.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-left{background-color:#f1f4f5;background-position:-146px 0}.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-center{background-position:-245px 0}.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-right{background-position:-271px 0}.edui-default .edui-toolbar .edui-separator{width:2px;height:20px;margin:2px 4px 2px 3px;background:url(../images/icons.png) -181px 0;background:url(../images/icons.gif) -181px 0\9}.edui-default .edui-toolbar .edui-colorbutton .edui-colorlump{position:absolute;bottom:1px;left:1px;width:18px;height:4px;overflow:hidden}.edui-default .edui-for-emotion .edui-icon{background-position:-60px -20px}.edui-default .edui-for-emotion .edui-popup-content iframe{width:514px;height:380px;overflow:hidden}.edui-default .edui-for-emotion .edui-popup-content{position:relative;z-index:555}.edui-default .edui-for-emotion .edui-splitborder{display:none}.edui-default .edui-for-emotion .edui-splitbutton-body .edui-arrow{width:0}.edui-default .edui-toolbar .edui-for-emotion .edui-state-active .edui-splitborder{border-left:1px solid transparent}.edui-default .edui-hassubmenu .edui-arrow{float:right;width:20px;height:20px;background:url(../images/icons-all.gif) no-repeat 10px -233px}.edui-default .edui-menu-body .edui-menuitem{padding:1px}.edui-default .edui-menuseparator{height:1px;margin:2px 0;overflow:hidden}.edui-default .edui-menuseparator-inner{margin-right:1px;margin-left:29px;border-bottom:1px solid #e2e3e3}.edui-default .edui-menu-body .edui-state-hover{padding:0!important;background-color:#fff5d4;border:1px solid #dcac6c}.edui-default .edui-shortcutmenu{width:190px;height:50px;padding:2px;background-color:#fff;border:1px solid #ccc;border-radius:4px}.edui-default .edui-wordpastepop .edui-popup-content{width:54px;height:21px;padding:0;border:none}.edui-default .edui-pasteicon{width:100%;height:100%;background-image:url(../images/wordpaste.png);background-position:0 0}.edui-default .edui-pasteicon.edui-state-opened{background-position:0 -34px}.edui-default .edui-pastecontainer{position:relative;width:97px;visibility:hidden;background:#fff;border:1px solid #ccc}.edui-default .edui-pastecontainer .edui-title{height:25px;padding-left:5px;font-size:12px;font-weight:700;line-height:25px;background:#f8f8ff}.edui-default .edui-pastecontainer .edui-button{margin:3px 0;overflow:hidden}.edui-default .edui-pastecontainer .edui-button .edui-plaintxticon,.edui-default .edui-pastecontainer .edui-button .edui-richtxticon,.edui-default .edui-pastecontainer .edui-button .edui-tagicon{float:left;width:29px;height:29px;margin-left:5px;cursor:pointer;background-image:url(../images/wordpaste.png);background-repeat:no-repeat}.edui-default .edui-pastecontainer .edui-button .edui-richtxticon{margin-left:0;background-position:-109px 0}.edui-default .edui-pastecontainer .edui-button .edui-tagicon{background-position:-148px 1px}.edui-default .edui-pastecontainer .edui-button .edui-plaintxticon{background-position:-72px 0}.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-richtxticon{background-position:-109px -34px}.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-tagicon{background-position:-148px -34px}.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-plaintxticon{background-position:-72px -34px} \ No newline at end of file diff --git a/root/res/zui/lib/uploader/Moxie.swf b/root/res/zui/lib/uploader/Moxie.swf new file mode 100644 index 0000000..4e82d8e Binary files /dev/null and b/root/res/zui/lib/uploader/Moxie.swf differ diff --git a/root/res/zui/lib/uploader/Moxie.xap b/root/res/zui/lib/uploader/Moxie.xap new file mode 100644 index 0000000..70ef069 Binary files /dev/null and b/root/res/zui/lib/uploader/Moxie.xap differ diff --git a/root/res/zui/lib/uploader/zui.uploader.css b/root/res/zui/lib/uploader/zui.uploader.css new file mode 100644 index 0000000..b1121ae --- /dev/null +++ b/root/res/zui/lib/uploader/zui.uploader.css @@ -0,0 +1,615 @@ +/*! + * ZUI: 文件上传 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +.uploader { + position: relative; + margin-bottom: 20px; + } +.uploader-btn-hidden { + position: absolute; + top: -1px; + left: -1px; + width: 1px; + height: 1px; + opacity: 0; + } +.file-dragable { + position: relative; + } +[data-drop-placeholder]:before { + position: absolute; + top: 0; + left: 0; + z-index: 10; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + width: 100%; + height: 100%; + font-size: 16px; + text-align: center; + pointer-events: none; + content: attr(data-drop-placeholder); + background-color: rgba(255, 240, 213, .5); + filter: alpha(opacity=0); + border: 2px dashed #f1a325; + opacity: 0; + -webkit-transition: all .2s; + -o-transition: all .2s; + transition: all .2s; + -webkit-transform: scale(.95); + -ms-transform: scale(.95); + -o-transform: scale(.95); + transform: scale(.95); + + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + } +.ie [data-drop-placeholder]:before { + display: none !important; + } +.file-dragable[data-drop-placeholder]:before { + filter: alpha(opacity=100); + opacity: 1; + -webkit-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); + } +.file-drag-enter[data-drop-placeholder]:before { + background-color: #fff0d5; + border-style: solid; + } +.uploader-files, +.file-list { + position: relative; + min-height: 32px; + margin-bottom: 10px; + border: 1px solid #ddd; + } +.uploader-files[data-drag-placeholder]:before, +.file-list[data-drag-placeholder]:before { + position: absolute; + top: 50%; + right: 0; + left: 0; + display: block; + margin-top: -15px; + line-height: 32px; + color: #ddd; + text-align: center; + pointer-events: none; + content: attr(data-drag-placeholder); + -webkit-transition: all .4s; + -o-transition: all .4s; + transition: all .4s; + } +.uploader-files[data-drag-placeholder]:hover:before, +.file-list[data-drag-placeholder]:hover:before { + color: #808080; + } +.uploader-files .file-icon, +.file-list .file-icon { + position: relative; + width: 32px; + height: 32px; + line-height: 32px; + text-align: center; + filter: alpha(opacity=70); + opacity: .7; + -webkit-transition: opacity .4s; + -o-transition: opacity .4s; + transition: opacity .4s; + } +.uploader-files .file-icon-image, +.file-list .file-icon-image { + position: absolute; + top: 5px; + right: 5px; + bottom: 5px; + left: 5px; + background-color: #fff; + background-repeat: no-repeat; + background-position: center; + -webkit-background-size: cover; + background-size: cover; + border: 1px solid #ddd; + } +.uploader-files .file-name, +.file-list .file-name { + text-decoration: none; + -webkit-transition: all .2s; + -o-transition: all .2s; + transition: all .2s; + } +.uploader-files .file-name[contenteditable], +.file-list .file-name[contenteditable] { + padding: 0 5px; + background-color: #fff; + outline: 1px solid #3280fc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #97befd; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #97befd; + } +.uploader-files .file-name, +.file-list .file-name, +.uploader-files .file-size, +.file-list .file-size { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } +.uploader-files .file-renaming .file-name[contenteditable], +.file-list .file-renaming .file-name[contenteditable] { + text-overflow: initial; + } +.uploader-files .file:hover .file-name, +.file-list .file:hover .file-name { + color: #3280fc; + } +.uploader-files .file:hover .file-icon, +.file-list .file:hover .file-icon { + opacity: 1; + } +.uploader-files .file-status, +.file-list .file-status { + display: inline-block; + line-height: 20px; + text-align: right; + } +.uploader-files .file-status:hover, +.file-list .file-status:hover { + background-color: rgba(0, 0, 0, .07); + } +.uploader-files .file-status > .icon, +.file-list .file-status > .icon { + line-height: 20px; + vertical-align: middle; + opacity: 1; + -webkit-transition: all .8s; + -o-transition: all .8s; + transition: all .8s; + -webkit-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); + } +.uploader-files .file-status > .icon:before, +.file-list .file-status > .icon:before { + content: '\e653'; + } +.uploader-files .file-status > .text, +.file-list .file-status > .text { + display: inline-block; + padding: 0 6px; + font-size: 12px; + line-height: 20px; + } +.uploader-files .file-status > .text:empty, +.file-list .file-status > .text:empty { + display: none; + } +.uploader-files .file[data-status="uploading"] .file-status > .icon, +.file-list .file[data-status="uploading"] .file-status > .icon { + filter: alpha(opacity=0); + opacity: 0; + -webkit-transform: scale(0); + -ms-transform: scale(0); + -o-transform: scale(0); + transform: scale(0); + } +.uploader-files .file[data-status="uploading"] .file-status > .text, +.file-list .file[data-status="uploading"] .file-status > .text { + color: #fff; + background-color: #3280fc; + border-radius: 10px; + } +.uploader-files .file[data-status="queue"] .file-status, +.file-list .file[data-status="queue"] .file-status { + color: #f1a325; + } +.uploader-files .file[data-status="queue"] .file-status > .icon:before, +.file-list .file[data-status="queue"] .file-status > .icon:before { + content: '\e6cd'; + } +.uploader-files .file[data-status="failed"] .file-status, +.file-list .file[data-status="failed"] .file-status { + color: #ea644a; + } +.uploader-files .file[data-status="failed"] .file-status > .icon:before, +.file-list .file[data-status="failed"] .file-status > .icon:before { + content: '\e66a'; + } +.uploader-files .file[data-status="done"] .file-status, +.file-list .file[data-status="done"] .file-status { + color: #38b03f; + } +.uploader-files .file .actions > .btn-reset-file, +.file-list .file .actions > .btn-reset-file, +.uploader-files .file .actions > .btn-download-file, +.file-list .file .actions > .btn-download-file, +.uploader-files .file[data-status="failed"] .actions > .btn-rename-file, +.file-list .file[data-status="failed"] .actions > .btn-rename-file, +.uploader-files .file[data-status="uploading"] .actions > .btn, +.file-list .file[data-status="uploading"] .actions > .btn, +.uploader-files .file[data-status="done"] .actions > .btn, +.file-list .file[data-status="done"] .actions > .btn { + display: none; + } +.uploader-files .file[data-status="done"] .actions > .btn-download-file[href], +.file-list .file[data-status="done"] .actions > .btn-download-file[href], +.uploader-files.file-show-rename-action-on-done .file[data-status="done"] .actions > .btn-rename-file, +.file-list.file-show-rename-action-on-done .file[data-status="done"] .actions > .btn-rename-file, +.uploader-files.file-show-delete-action-on-done .file[data-status="done"] .actions > .btn-delete-file, +.file-list.file-show-delete-action-on-done .file[data-status="done"] .actions > .btn-delete-file, +.uploader-files .file[data-status="failed"] .actions > .btn-reset-file, +.file-list .file[data-status="failed"] .actions > .btn-reset-file { + display: inline-block; + } +.uploader-files.file-rename-by-click [data-status="queue"] .file-name:hover, +.file-list.file-rename-by-click [data-status="queue"] .file-name:hover { + background-color: rgba(255, 255, 255, .5); + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #97befd; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #97befd; + } +.uploader-files .file-progress-bar, +.file-list .file-progress-bar { + position: absolute; + top: 0; + bottom: 0; + left: 0; + z-index: 10; + pointer-events: none; + background-color: rgba(50, 128, 252, .1); + filter: alpha(opacity=0); + -webkit-box-shadow: inset 0 -2px #3280fc; + box-shadow: inset 0 -2px #3280fc; + opacity: 0; + -webkit-transition: width .6s ease, opacity .4s; + -o-transition: width .6s ease, opacity .4s; + transition: width .6s ease, opacity .4s; + } +.uploader-files .file[data-status="uploading"] .file-progress-bar, +.file-list .file[data-status="uploading"] .file-progress-bar { + filter: alpha(opacity=100); + opacity: 1; + } +.uploader-files .file[data-status="queue"], +.file-list .file[data-status="queue"] { + background-color: #fff0d5; + } +.uploader-files .file[data-status="failed"], +.file-list .file[data-status="failed"] { + background-color: #ffe5e0; + } +.uploader-files .file[data-status="done"], +.file-list .file[data-status="done"] { + background-color: #fff; + } +.uploader-actions { + background-color: #f1f1f1; + } +.file-list + .uploader-actions { + margin-top: -10px; + border: 1px solid #ddd; + border-top: none; + } +.uploader-actions .uploader-status { + padding: 5px 10px; + line-height: 20px; + } +.uploader-message { + position: absolute; + top: 0; + right: 0; + left: 0; + z-index: 1; + display: none; + padding: 5px 10px; + color: #fff; + background: #3280fc; + filter: alpha(opacity=95); + opacity: .95; + } +.uploader-message > .close { + position: absolute; + top: 3px; + right: 10px; + color: inherit; + text-shadow: none; + opacity: .4; + } +.uploader-message > .close:hover { + opacity: 1; + } +.uploader-message[data-type="danger"] { + background: #ea644a; + } +.uploader-message[data-type="warning"] { + background: #f1a325; + } +.uploader-message[data-type="info"] { + background: #03b8cf; + } +.uploader-message[data-type="success"] { + background: #38b03f; + } +.file-list .file { + position: relative; + z-index: 0; + background-color: #fff; + -webkit-transition: background .4s; + -o-transition: background .4s; + transition: background .4s; + } +.file-list .file + .file { + border-top: 1px solid #ddd; + } +.file-list .file-wrapper { + position: relative; + z-index: 2; + display: table; + width: 100%; + table-layout: fixed; + -webkit-transition: background .4s; + -o-transition: background .4s; + transition: background .4s; + } +.file-list .file-wrapper:hover { + background-color: rgba(0, 0, 0, .05); + } +.file-list .file-wrapper > .file-icon, +.file-list .file-wrapper > .content, +.file-list .file-wrapper > .actions { + display: table-cell; + vertical-align: middle; + } +.file-list .file-wrapper > .actions { + width: 150px; + text-align: right; + } +.file-list .file-wrapper > .actions > .btn { + padding: 5px 8px; + } +.file-list .file-wrapper > .actions > .btn:hover { + background-color: rgba(0, 0, 0, .07); + } +.file-list .file-name { + display: block; + } +.file-list .file-wrapper > .content > .file-name { + float: left; + } +.file-list .file-wrapper > .content > .file-size { + float: right; + margin-top: 2px; + } +.file-list .file-wrapper > .actions > .btn { + border-radius: 0; + } +.file-list .file-status { + padding: 5px; + } +.file-list-lg .file { + min-height: 50px; + } +.file-list-lg .file-icon { + width: 50px; + line-height: 50px; + } +.file-list-lg .file-icon .icon { + position: relative; + display: block; + width: 50px; + font-size: 28px; + line-height: 50px; + text-align: center; + } +.file-list-lg .file-icon .icon-file-o { + position: relative; + left: -2px; + } +.file-list-lg .file-status { + line-height: 40px; + } +.file-list-lg .file-status > .icon { + font-size: 20px; + } +.file-list-lg .file[data-status="done"] .file-status { + padding: 5px 12px; + } +.file-list-lg .file-wrapper > .content > .file-name { + float: none; + line-height: 20px; + } +.file-list-lg .file-wrapper > .content > .file-size { + float: none; + line-height: 14px; + } +.file-list-lg .file-wrapper > .actions > .btn { + padding: 14px 8px; + } +.file-list-lg .file-renaming .file-name[contenteditable] { + font-size: 14px; + line-height: 34px; + } +.file-list-lg .file-renaming .file-wrapper > .content > .file-size { + display: none; + } +.file-list-grid { + margin-right: -8px; + margin-left: -8px; + border: none; + } +.file-list-grid:before, +.file-list-grid:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.file-list-grid:after { + clear: both; + } +.file-list-grid .file { + display: block; + float: left; + width: 120px; + height: 120px; + margin: 8px 8px 35px 8px; + border: 1px solid #ddd; + border-radius: 4px; + } +.file-list-grid .file .file-icon { + display: block; + width: 118px; + height: 118px; + overflow: hidden; + } +.file-list-grid .file-icon > .icon { + font-size: 70px; + line-height: 118px; + } +.file-list-grid .file-icon-image { + top: -1px; + right: -1px; + bottom: -1px; + left: -1px; + border: none; + } +.file-list-grid .file-wrapper { + position: absolute; + top: 0; + right: 0; + left: 0; + display: block; + width: auto; + } +.file-list-grid .file-wrapper > .content { + position: absolute; + right: -1px; + bottom: -24px; + left: -1px; + display: block; + text-align: center; + -webkit-transition: all .2s; + -o-transition: all .2s; + transition: all .2s; + } +.file-list-grid .file-wrapper > .content > .file-name { + position: relative; + z-index: 5; + float: none; + padding: 4px 0; + line-height: 16px; + border: 1px solid transparent; + } +.file-list-grid .file-wrapper > .content > .file-size { + position: absolute; + top: -24px; + left: 4px; + display: block; + padding: 0 5px; + line-height: 18px; + color: #fff; + background-color: #808080; + background-color: rgba(0, 0, 0, .5); + filter: alpha(opacity=0); + border-radius: 9px; + opacity: 0; + -webkit-transition: opacity .4s; + -o-transition: opacity .4s; + transition: opacity .4s; + } +.file-list-grid .file-renaming .file-wrapper > .content > .file-name, +.file-list-grid .file-wrapper > .content:hover > .file-name { + text-overflow: initial; + word-break: break-all; + white-space: normal; + background-color: #fff; + border-color: #ddd; + -webkit-box-shadow: none; + box-shadow: none; + } +.file-list-grid .file-renaming .file-wrapper > .content > .file-name { + padding: 4px; + text-align: left; + } +.file-list-grid .file[data-status="uploading"] .file-wrapper > .content > .file-size, +.file-list-grid .file:hover .file-wrapper > .content > .file-size { + filter: alpha(opacity=100); + opacity: 1; + } +.file-list-grid .file-wrapper > .actions { + position: absolute; + top: 0; + right: 0; + left: 0; + display: block; + width: 118px; + } +.file-list-grid .file-wrapper:hover > .actions { + background: rgba(255, 255, 255, .85); + } +.file-list-grid .file-wrapper > .actions > .file-status { + position: absolute; + top: 0; + left: 0; + height: 28px; + padding: 4px 5px; + } +.file-list-grid .file-wrapper > .actions > .file-status > .icon { + position: relative; + top: -1px; + display: inline-block; + font-size: 21px; + text-shadow: -1px -1px 0 #fff, 1px -1px 0 #fff, -1px 1px 0 #fff, 1px 1px 0 #fff; + } +.file-list-grid .file-wrapper > .actions > .file-status > .text { + padding: 0; + } +.file-list-grid .file[data-status="failed"] .file-wrapper > .actions > .file-status > .icon { + font-size: 14px; + text-shadow: none; + } +.file-list-grid .file[data-status="uploading"] .file-wrapper > .actions > .file-status > .text { + position: absolute; + top: 4px; + left: 4px; + padding: 0 8px; + } +.file-list-grid .file[data-status="failed"] .file-wrapper > .actions > .file-status { + top: 4px; + left: 4px; + height: 20px; + padding: 0 8px; + color: #fff; + background-color: #ea644a; + border-radius: 10px; + } +.file-list-grid .file-wrapper > .actions > .btn { + padding: 3px 6px; + filter: alpha(opacity=0); + opacity: 0; + } +.file-list-grid .file-wrapper:hover > .actions > .btn { + filter: alpha(opacity=100); + opacity: 1; + } +.file-list-grid .file-progress-bar { + -webkit-box-shadow: inset 0 -4px #3280fc; + box-shadow: inset 0 -4px #3280fc; + } +.file-list-grid + .uploader-actions { + border: none; + } diff --git a/root/res/zui/lib/uploader/zui.uploader.js b/root/res/zui/lib/uploader/zui.uploader.js new file mode 100644 index 0000000..9d1b83f --- /dev/null +++ b/root/res/zui/lib/uploader/zui.uploader.js @@ -0,0 +1,934 @@ +/*! + * ZUI: 文件上传 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +/*! + * mOxie - multi-runtime File API & XMLHttpRequest L2 Polyfill + * v1.5.2 + * + * Copyright 2013, Moxiecode Systems AB + * Released under GPL License. + * + * License: http://www.plupload.com/license + * Contributing: http://www.plupload.com/contributing + * + * Date: 2016-11-23 + */ +!function(e,t){var i=function(){var e={};return t.apply(e,arguments),e.moxie};"function"==typeof define&&define.amd?define("moxie",[],i):"object"==typeof module&&module.exports?module.exports=i():e.moxie=i()}(this||window,function(){!function(e,t){"use strict";function i(e,t){for(var i,n=[],r=0;r0&&u(n,function(n,u){var c=-1!==m(e(n),["array","object"]);return n===r||t&&s[u]===r?!0:(c&&i&&(n=o(n)),e(s[u])===e(n)&&c?a(t,i,[s[u],n]):s[u]=n,void 0)})}),s}function s(e,t){function i(){this.constructor=e}for(var n in t)({}).hasOwnProperty.call(t,n)&&(e[n]=t[n]);return i.prototype=t.prototype,e.prototype=new i,e.__parent__=t.prototype,e}function u(e,t){var i,n,r,o;if(e){try{i=e.length}catch(a){i=o}if(i===o||"number"!=typeof i){for(n in e)if(e.hasOwnProperty(n)&&t(e[n],n)===!1)return}else for(r=0;i>r;r++)if(t(e[r],r)===!1)return}}function c(t){var i;if(!t||"object"!==e(t))return!0;for(i in t)return!1;return!0}function l(t,i){function n(r){"function"===e(t[r])&&t[r](function(e){++ri;i++)if(t[i]===e)return i}return-1}function h(t,i){var n=[];"array"!==e(t)&&(t=[t]),"array"!==e(i)&&(i=[i]);for(var r in t)-1===m(t[r],i)&&n.push(t[r]);return n.length?n:!1}function f(e,t){var i=[];return u(e,function(e){-1!==m(e,t)&&i.push(e)}),i.length?i:null}function p(e){var t,i=[];for(t=0;ti;i++)n+=Math.floor(65535*Math.random()).toString(32);return(t||"o_")+n+(e++).toString(32)}}();return{guid:w,typeOf:e,extend:t,extendIf:i,extendImmutable:n,extendImmutableIf:r,inherit:s,each:u,isEmptyObj:c,inSeries:l,inParallel:d,inArray:m,arrayDiff:h,arrayIntersect:f,toArray:p,trim:g,sprintf:v,parseSizeStr:x,delay:y}}),n("moxie/core/utils/Encode",[],function(){var e=function(e){return unescape(encodeURIComponent(e))},t=function(e){return decodeURIComponent(escape(e))},i=function(e,i){if("function"==typeof window.atob)return i?t(window.atob(e)):window.atob(e);var n,r,o,a,s,u,c,l,d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",m=0,h=0,f="",p=[];if(!e)return e;e+="";do a=d.indexOf(e.charAt(m++)),s=d.indexOf(e.charAt(m++)),u=d.indexOf(e.charAt(m++)),c=d.indexOf(e.charAt(m++)),l=a<<18|s<<12|u<<6|c,n=255&l>>16,r=255&l>>8,o=255&l,p[h++]=64==u?String.fromCharCode(n):64==c?String.fromCharCode(n,r):String.fromCharCode(n,r,o);while(m>18,s=63&l>>12,u=63&l>>6,c=63&l,p[h++]=d.charAt(a)+d.charAt(s)+d.charAt(u)+d.charAt(c);while(mn;n++)if(e[n]!=t[n]){if(e[n]=u(e[n]),t[n]=u(t[n]),e[n]t[n]){o=1;break}}if(!i)return o;switch(i){case">":case"gt":return o>0;case">=":case"ge":return o>=0;case"<=":case"le":return 0>=o;case"==":case"=":case"eq":return 0===o;case"<>":case"!=":case"ne":return 0!==o;case"":case"<":case"lt":return 0>o;default:return null}}var i=function(e){var t="",i="?",n="function",r="undefined",o="object",a="name",s="version",u={has:function(e,t){return-1!==t.toLowerCase().indexOf(e.toLowerCase())},lowerize:function(e){return e.toLowerCase()}},c={rgx:function(){for(var t,i,a,s,u,c,l,d=0,m=arguments;d0?2==u.length?t[u[0]]=typeof u[1]==n?u[1].call(this,l):u[1]:3==u.length?t[u[0]]=typeof u[1]!==n||u[1].exec&&u[1].test?l?l.replace(u[1],u[2]):e:l?u[1].call(this,l,u[2]):e:4==u.length&&(t[u[0]]=l?u[3].call(this,l.replace(u[1],u[2])):e):t[u]=l?l:e;break}if(c)break}return t},str:function(t,n){for(var r in n)if(typeof n[r]===o&&n[r].length>0){for(var a=0;a=9)},use_data_uri_of:function(e){return t.use_data_uri&&33e3>e||t.use_data_uri_over32kb()},use_fileinput:function(){if(navigator.userAgent.match(/(Android (1.0|1.1|1.5|1.6|2.0|2.1))|(Windows Phone (OS 7|8.0))|(XBLWP)|(ZuneWP)|(w(eb)?OSBrowser)|(webOS)|(Kindle\/(1.0|2.0|2.5|3.0))/))return!1;var e=document.createElement("input");return e.setAttribute("type","file"),!e.disabled}};return function(i){var n=[].slice.call(arguments);return n.shift(),"function"===e.typeOf(t[i])?t[i].apply(this,n):!!t[i]}}(),r=(new i).getResult(),o={can:n,uaParser:i,browser:r.browser.name,version:r.browser.version,os:r.os.name,osVersion:r.os.version,verComp:t,swf_url:"../flash/Moxie.swf",xap_url:"../silverlight/Moxie.xap",global_event_dispatcher:"moxie.core.EventTarget.instance.dispatchEvent"};return o.OS=o.os,o}),n("moxie/core/Exceptions",["moxie/core/utils/Basic"],function(e){function t(e,t){var i;for(i in e)if(e[i]===t)return i;return null}return{RuntimeError:function(){function i(e,i){this.code=e,this.name=t(n,e),this.message=this.name+(i||": RuntimeError "+this.code)}var n={NOT_INIT_ERR:1,EXCEPTION_ERR:3,NOT_SUPPORTED_ERR:9,JS_ERR:4};return e.extend(i,n),i.prototype=Error.prototype,i}(),OperationNotAllowedException:function(){function t(e){this.code=e,this.name="OperationNotAllowedException"}return e.extend(t,{NOT_ALLOWED_ERR:1}),t.prototype=Error.prototype,t}(),ImageError:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": ImageError "+this.code}var n={WRONG_FORMAT:1,MAX_RESOLUTION_ERR:2,INVALID_META_ERR:3};return e.extend(i,n),i.prototype=Error.prototype,i}(),FileException:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": FileException "+this.code}var n={NOT_FOUND_ERR:1,SECURITY_ERR:2,ABORT_ERR:3,NOT_READABLE_ERR:4,ENCODING_ERR:5,NO_MODIFICATION_ALLOWED_ERR:6,INVALID_STATE_ERR:7,SYNTAX_ERR:8};return e.extend(i,n),i.prototype=Error.prototype,i}(),DOMException:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": DOMException "+this.code}var n={INDEX_SIZE_ERR:1,DOMSTRING_SIZE_ERR:2,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,INVALID_CHARACTER_ERR:5,NO_DATA_ALLOWED_ERR:6,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INUSE_ATTRIBUTE_ERR:10,INVALID_STATE_ERR:11,SYNTAX_ERR:12,INVALID_MODIFICATION_ERR:13,NAMESPACE_ERR:14,INVALID_ACCESS_ERR:15,VALIDATION_ERR:16,TYPE_MISMATCH_ERR:17,SECURITY_ERR:18,NETWORK_ERR:19,ABORT_ERR:20,URL_MISMATCH_ERR:21,QUOTA_EXCEEDED_ERR:22,TIMEOUT_ERR:23,INVALID_NODE_TYPE_ERR:24,DATA_CLONE_ERR:25};return e.extend(i,n),i.prototype=Error.prototype,i}(),EventException:function(){function t(e){this.code=e,this.name="EventException"}return e.extend(t,{UNSPECIFIED_EVENT_TYPE_ERR:0}),t.prototype=Error.prototype,t}()}}),n("moxie/core/utils/Dom",["moxie/core/utils/Env"],function(e){var t=function(e){return"string"!=typeof e?e:document.getElementById(e)},i=function(e,t){if(!e.className)return!1;var i=new RegExp("(^|\\s+)"+t+"(\\s+|$)");return i.test(e.className)},n=function(e,t){i(e,t)||(e.className=e.className?e.className.replace(/\s+$/,"")+" "+t:t)},r=function(e,t){if(e.className){var i=new RegExp("(^|\\s+)"+t+"(\\s+|$)");e.className=e.className.replace(i,function(e,t,i){return" "===t&&" "===i?" ":""})}},o=function(e,t){return e.currentStyle?e.currentStyle[t]:window.getComputedStyle?window.getComputedStyle(e,null)[t]:void 0},a=function(t,i){function n(e){var t,i,n=0,r=0;return e&&(i=e.getBoundingClientRect(),t="CSS1Compat"===c.compatMode?c.documentElement:c.body,n=i.left+t.scrollLeft,r=i.top+t.scrollTop),{x:n,y:r}}var r,o,a,s=0,u=0,c=document;if(t=t,i=i||c.body,t&&t.getBoundingClientRect&&"IE"===e.browser&&(!c.documentMode||c.documentMode<8))return o=n(t),a=n(i),{x:o.x-a.x,y:o.y-a.y};for(r=t;r&&r!=i&&r.nodeType;)s+=r.offsetLeft||0,u+=r.offsetTop||0,r=r.offsetParent;for(r=t.parentNode;r&&r!=i&&r.nodeType;)s-=r.scrollLeft||0,u-=r.scrollTop||0,r=r.parentNode;return{x:s,y:u}},s=function(e){return{w:e.offsetWidth||e.clientWidth,h:e.offsetHeight||e.clientHeight}};return{get:t,hasClass:i,addClass:n,removeClass:r,getStyle:o,getPos:a,getSize:s}}),n("moxie/core/EventTarget",["moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Basic"],function(e,t,i){function n(){this.uid=i.guid()}var r={};return i.extend(n.prototype,{init:function(){this.uid||(this.uid=i.guid("uid_"))},addEventListener:function(e,t,n,o){var a,s=this;return this.hasOwnProperty("uid")||(this.uid=i.guid("uid_")),e=i.trim(e),/\s/.test(e)?(i.each(e.split(/\s+/),function(e){s.addEventListener(e,t,n,o)}),void 0):(e=e.toLowerCase(),n=parseInt(n,10)||0,a=r[this.uid]&&r[this.uid][e]||[],a.push({fn:t,priority:n,scope:o||this}),r[this.uid]||(r[this.uid]={}),r[this.uid][e]=a,void 0)},hasEventListener:function(e){var t;return e?(e=e.toLowerCase(),t=r[this.uid]&&r[this.uid][e]):t=r[this.uid],t?t:!1},removeEventListener:function(e,t){var n,o,a=this;if(e=e.toLowerCase(),/\s/.test(e))return i.each(e.split(/\s+/),function(e){a.removeEventListener(e,t)}),void 0;if(n=r[this.uid]&&r[this.uid][e]){if(t){for(o=n.length-1;o>=0;o--)if(n[o].fn===t){n.splice(o,1);break}}else n=[];n.length||(delete r[this.uid][e],i.isEmptyObj(r[this.uid])&&delete r[this.uid])}},removeAllEventListeners:function(){r[this.uid]&&delete r[this.uid]},dispatchEvent:function(e){var n,o,a,s,u,c={},l=!0;if("string"!==i.typeOf(e)){if(s=e,"string"!==i.typeOf(s.type))throw new t.EventException(t.EventException.UNSPECIFIED_EVENT_TYPE_ERR);e=s.type,s.total!==u&&s.loaded!==u&&(c.total=s.total,c.loaded=s.loaded),c.async=s.async||!1}if(-1!==e.indexOf("::")?function(t){n=t[0],e=t[1]}(e.split("::")):n=this.uid,e=e.toLowerCase(),o=r[n]&&r[n][e]){o.sort(function(e,t){return t.priority-e.priority}),a=[].slice.call(arguments),a.shift(),c.type=e,a.unshift(c);var d=[];i.each(o,function(e){a[0].target=e.scope,c.async?d.push(function(t){setTimeout(function(){t(e.fn.apply(e.scope,a)===!1)},1)}):d.push(function(t){t(e.fn.apply(e.scope,a)===!1)})}),d.length&&i.inSeries(d,function(e){l=!e})}return l},bindOnce:function(e,t,i,n){var r=this;r.bind.call(this,e,function o(){return r.unbind(e,o),t.apply(this,arguments)},i,n)},bind:function(){this.addEventListener.apply(this,arguments)},unbind:function(){this.removeEventListener.apply(this,arguments)},unbindAll:function(){this.removeAllEventListeners.apply(this,arguments)},trigger:function(){return this.dispatchEvent.apply(this,arguments)},handleEventProps:function(e){var t=this;this.bind(e.join(" "),function(e){var t="on"+e.type.toLowerCase();"function"===i.typeOf(this[t])&&this[t].apply(this,arguments)}),i.each(e,function(e){e="on"+e.toLowerCase(e),"undefined"===i.typeOf(t[e])&&(t[e]=null)})}}),n.instance=new n,n}),n("moxie/runtime/Runtime",["moxie/core/utils/Env","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/EventTarget"],function(e,t,i,n){function r(e,n,o,s,u){var c,l=this,d=t.guid(n+"_"),m=u||"browser";e=e||{},a[d]=this,o=t.extend({access_binary:!1,access_image_binary:!1,display_media:!1,do_cors:!1,drag_and_drop:!1,filter_by_extension:!0,resize_image:!1,report_upload_progress:!1,return_response_headers:!1,return_response_type:!1,return_status_code:!0,send_custom_headers:!1,select_file:!1,select_folder:!1,select_multiple:!0,send_binary_string:!1,send_browser_cookies:!0,send_multipart:!0,slice_blob:!1,stream_upload:!1,summon_file_dialog:!1,upload_filesize:!0,use_http_method:!0},o),e.preferred_caps&&(m=r.getMode(s,e.preferred_caps,m)),c=function(){var e={};return{exec:function(t,i,n,r){return c[i]&&(e[t]||(e[t]={context:this,instance:new c[i]}),e[t].instance[n])?e[t].instance[n].apply(this,r):void 0},removeInstance:function(t){delete e[t]},removeAllInstances:function(){var i=this;t.each(e,function(e,n){"function"===t.typeOf(e.instance.destroy)&&e.instance.destroy.call(e.context),i.removeInstance(n)})}}}(),t.extend(this,{initialized:!1,uid:d,type:n,mode:r.getMode(s,e.required_caps,m),shimid:d+"_container",clients:0,options:e,can:function(e,i){var n=arguments[2]||o;if("string"===t.typeOf(e)&&"undefined"===t.typeOf(i)&&(e=r.parseCaps(e)),"object"===t.typeOf(e)){for(var a in e)if(!this.can(a,e[a],n))return!1;return!0}return"function"===t.typeOf(n[e])?n[e].call(this,i):i===n[e]},getShimContainer:function(){var e,n=i.get(this.shimid);return n||(e=i.get(this.options.container)||document.body,n=document.createElement("div"),n.id=this.shimid,n.className="moxie-shim moxie-shim-"+this.type,t.extend(n.style,{position:"absolute",top:"0px",left:"0px",width:"1px",height:"1px",overflow:"hidden"}),e.appendChild(n),e=null),n},getShim:function(){return c},shimExec:function(e,t){var i=[].slice.call(arguments,2);return l.getShim().exec.call(this,this.uid,e,t,i)},exec:function(e,t){var i=[].slice.call(arguments,2);return l[e]&&l[e][t]?l[e][t].apply(this,i):l.shimExec.apply(this,arguments)},destroy:function(){if(l){var e=i.get(this.shimid);e&&e.parentNode.removeChild(e),c&&c.removeAllInstances(),this.unbindAll(),delete a[this.uid],this.uid=null,d=l=c=e=null}}}),this.mode&&e.required_caps&&!this.can(e.required_caps)&&(this.mode=!1)}var o={},a={};return r.order="html5,flash,silverlight,html4",r.getRuntime=function(e){return a[e]?a[e]:!1},r.addConstructor=function(e,t){t.prototype=n.instance,o[e]=t},r.getConstructor=function(e){return o[e]||null},r.getInfo=function(e){var t=r.getRuntime(e);return t?{uid:t.uid,type:t.type,mode:t.mode,can:function(){return t.can.apply(t,arguments)}}:null},r.parseCaps=function(e){var i={};return"string"!==t.typeOf(e)?e||{}:(t.each(e.split(","),function(e){i[e]=!0}),i)},r.can=function(e,t){var i,n,o=r.getConstructor(e);return o?(i=new o({required_caps:t}),n=i.mode,i.destroy(),!!n):!1},r.thatCan=function(e,t){var i=(t||r.order).split(/\s*,\s*/);for(var n in i)if(r.can(i[n],e))return i[n];return null},r.getMode=function(e,i,n){var r=null;if("undefined"===t.typeOf(n)&&(n="browser"),i&&!t.isEmptyObj(e)){if(t.each(i,function(i,n){if(e.hasOwnProperty(n)){var o=e[n](i);if("string"==typeof o&&(o=[o]),r){if(!(r=t.arrayIntersect(r,o)))return r=!1}else r=o}}),r)return-1!==t.inArray(n,r)?n:r[0];if(r===!1)return!1}return n},r.capTrue=function(){return!0},r.capFalse=function(){return!1},r.capTest=function(e){return function(){return!!e}},r}),n("moxie/runtime/RuntimeClient",["moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Basic","moxie/runtime/Runtime"],function(e,t,i,n){return function(){var e;i.extend(this,{connectRuntime:function(r){function o(i){var a,u;return i.length?(a=i.shift().toLowerCase(),(u=n.getConstructor(a))?(e=new u(r),e.bind("Init",function(){e.initialized=!0,setTimeout(function(){e.clients++,s.ruid=e.uid,s.trigger("RuntimeInit",e)},1)}),e.bind("Error",function(){e.destroy(),o(i)}),e.bind("Exception",function(e,i){var n=i.name+"(#"+i.code+")"+(i.message?", from: "+i.message:"");s.trigger("RuntimeError",new t.RuntimeError(t.RuntimeError.EXCEPTION_ERR,n))}),e.mode?(e.init(),void 0):(e.trigger("Error"),void 0)):(o(i),void 0)):(s.trigger("RuntimeError",new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)),e=null,void 0)}var a,s=this;if("string"===i.typeOf(r)?a=r:"string"===i.typeOf(r.ruid)&&(a=r.ruid),a){if(e=n.getRuntime(a))return s.ruid=a,e.clients++,e;throw new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)}o((r.runtime_order||n.order).split(/\s*,\s*/))},disconnectRuntime:function(){e&&--e.clients<=0&&e.destroy(),e=null},getRuntime:function(){return e&&e.uid?e:e=null},exec:function(){return e?e.exec.apply(this,arguments):null},can:function(t){return e?e.can(t):!1}})}}),n("moxie/file/Blob",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/runtime/RuntimeClient"],function(e,t,i){function n(o,a){function s(t,i,o){var a,s=r[this.uid];return"string"===e.typeOf(s)&&s.length?(a=new n(null,{type:o,size:i-t}),a.detach(s.substr(t,a.size)),a):null}i.call(this),o&&this.connectRuntime(o),a?"string"===e.typeOf(a)&&(a={data:a}):a={},e.extend(this,{uid:a.uid||e.guid("uid_"),ruid:o,size:a.size||0,type:a.type||"",slice:function(e,t,i){return this.isDetached()?s.apply(this,arguments):this.getRuntime().exec.call(this,"Blob","slice",this.getSource(),e,t,i)},getSource:function(){return r[this.uid]?r[this.uid]:null},detach:function(e){if(this.ruid&&(this.getRuntime().exec.call(this,"Blob","destroy"),this.disconnectRuntime(),this.ruid=null),e=e||"","data:"==e.substr(0,5)){var i=e.indexOf(";base64,");this.type=e.substring(5,i),e=t.atob(e.substring(i+8))}this.size=e.length,r[this.uid]=e},isDetached:function(){return!this.ruid&&"string"===e.typeOf(r[this.uid])},destroy:function(){this.detach(),delete r[this.uid]}}),a.data?this.detach(a.data):r[this.uid]=a}var r={};return n}),n("moxie/core/I18n",["moxie/core/utils/Basic"],function(e){var t={};return{addI18n:function(i){return e.extend(t,i)},translate:function(e){return t[e]||e},_:function(e){return this.translate(e)},sprintf:function(t){var i=[].slice.call(arguments,1);return t.replace(/%[a-z]/g,function(){var t=i.shift();return"undefined"!==e.typeOf(t)?t:""})}}}),n("moxie/core/utils/Mime",["moxie/core/utils/Basic","moxie/core/I18n"],function(e,t){var i="application/msword,doc dot,application/pdf,pdf,application/pgp-signature,pgp,application/postscript,ps ai eps,application/rtf,rtf,application/vnd.ms-excel,xls xlb,application/vnd.ms-powerpoint,ppt pps pot,application/zip,zip,application/x-shockwave-flash,swf swfl,application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx,application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx,application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx,application/vnd.openxmlformats-officedocument.presentationml.template,potx,application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx,application/x-javascript,js,application/json,json,audio/mpeg,mp3 mpga mpega mp2,audio/x-wav,wav,audio/x-m4a,m4a,audio/ogg,oga ogg,audio/aiff,aiff aif,audio/flac,flac,audio/aac,aac,audio/ac3,ac3,audio/x-ms-wma,wma,image/bmp,bmp,image/gif,gif,image/jpeg,jpg jpeg jpe,image/photoshop,psd,image/png,png,image/svg+xml,svg svgz,image/tiff,tiff tif,text/plain,asc txt text diff log,text/html,htm html xhtml,text/css,css,text/csv,csv,text/rtf,rtf,video/mpeg,mpeg mpg mpe m2v,video/quicktime,qt mov,video/mp4,mp4,video/x-m4v,m4v,video/x-flv,flv,video/x-ms-wmv,wmv,video/avi,avi,video/webm,webm,video/3gpp,3gpp 3gp,video/3gpp2,3g2,video/vnd.rn-realvideo,rv,video/ogg,ogv,video/x-matroska,mkv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe",n={mimes:{},extensions:{},addMimeType:function(e){var t,i,n,r=e.split(/,/);for(t=0;ta;a++)o+=String.fromCharCode(r[a]);return o}}t.call(this),e.extend(this,{uid:e.guid("uid_"),readAsBinaryString:function(e){return n.call(this,"readAsBinaryString",e)},readAsDataURL:function(e){return n.call(this,"readAsDataURL",e)},readAsText:function(e){return n.call(this,"readAsText",e)}})}}),n("moxie/xhr/FormData",["moxie/core/Exceptions","moxie/core/utils/Basic","moxie/file/Blob"],function(e,t,i){function n(){var e,n=[];t.extend(this,{append:function(r,o){var a=this,s=t.typeOf(o);o instanceof i?e={name:r,value:o}:"array"===s?(r+="[]",t.each(o,function(e){a.append(r,e)})):"object"===s?t.each(o,function(e,t){a.append(r+"["+t+"]",e)}):"null"===s||"undefined"===s||"number"===s&&isNaN(o)?a.append(r,"false"):n.push({name:r,value:o.toString()})},hasBlob:function(){return!!this.getBlob()},getBlob:function(){return e&&e.value||null},getBlobName:function(){return e&&e.name||null},each:function(i){t.each(n,function(e){i(e.value,e.name)}),e&&i(e.value,e.name)},destroy:function(){e=null,n=[]}})}return n}),n("moxie/xhr/XMLHttpRequest",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/core/EventTarget","moxie/core/utils/Encode","moxie/core/utils/Url","moxie/runtime/Runtime","moxie/runtime/RuntimeTarget","moxie/file/Blob","moxie/file/FileReaderSync","moxie/xhr/FormData","moxie/core/utils/Env","moxie/core/utils/Mime"],function(e,t,i,n,r,o,a,s,u,c,l,d){function m(){this.uid=e.guid("uid_")}function h(){function i(e,t){return I.hasOwnProperty(e)?1===arguments.length?l.can("define_property")?I[e]:A[e]:(l.can("define_property")?I[e]=t:A[e]=t,void 0):void 0}function u(t){function n(){R&&(R.destroy(),R=null),s.dispatchEvent("loadend"),s=null}function r(r){R.bind("LoadStart",function(e){i("readyState",h.LOADING),s.dispatchEvent("readystatechange"),s.dispatchEvent(e),L&&s.upload.dispatchEvent(e)}),R.bind("Progress",function(e){i("readyState")!==h.LOADING&&(i("readyState",h.LOADING),s.dispatchEvent("readystatechange")),s.dispatchEvent(e)}),R.bind("UploadProgress",function(e){L&&s.upload.dispatchEvent({type:"progress",lengthComputable:!1,total:e.total,loaded:e.loaded})}),R.bind("Load",function(t){i("readyState",h.DONE),i("status",Number(r.exec.call(R,"XMLHttpRequest","getStatus")||0)),i("statusText",f[i("status")]||""),i("response",r.exec.call(R,"XMLHttpRequest","getResponse",i("responseType"))),~e.inArray(i("responseType"),["text",""])?i("responseText",i("response")):"document"===i("responseType")&&i("responseXML",i("response")),U=r.exec.call(R,"XMLHttpRequest","getAllResponseHeaders"),s.dispatchEvent("readystatechange"),i("status")>0?(L&&s.upload.dispatchEvent(t),s.dispatchEvent(t)):(F=!0,s.dispatchEvent("error")),n()}),R.bind("Abort",function(e){s.dispatchEvent(e),n()}),R.bind("Error",function(e){F=!0,i("readyState",h.DONE),s.dispatchEvent("readystatechange"),M=!0,s.dispatchEvent(e),n()}),r.exec.call(R,"XMLHttpRequest","send",{url:x,method:v,async:T,user:y,password:w,headers:S,mimeType:D,encoding:O,responseType:s.responseType,withCredentials:s.withCredentials,options:k},t)}var s=this;E=(new Date).getTime(),R=new a,"string"==typeof k.required_caps&&(k.required_caps=o.parseCaps(k.required_caps)),k.required_caps=e.extend({},k.required_caps,{return_response_type:s.responseType}),t instanceof c&&(k.required_caps.send_multipart=!0),e.isEmptyObj(S)||(k.required_caps.send_custom_headers=!0),B||(k.required_caps.do_cors=!0),k.ruid?r(R.connectRuntime(k)):(R.bind("RuntimeInit",function(e,t){r(t)}),R.bind("RuntimeError",function(e,t){s.dispatchEvent("RuntimeError",t)}),R.connectRuntime(k))}function g(){i("responseText",""),i("responseXML",null),i("response",null),i("status",0),i("statusText",""),E=b=null}var x,v,y,w,E,b,R,_,A=this,I={timeout:0,readyState:h.UNSENT,withCredentials:!1,status:0,statusText:"",responseType:"",responseXML:null,responseText:null,response:null},T=!0,S={},O=null,D=null,N=!1,C=!1,L=!1,M=!1,F=!1,B=!1,P=null,H=null,k={},U="";e.extend(this,I,{uid:e.guid("uid_"),upload:new m,open:function(o,a,s,u,c){var l;if(!o||!a)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(/[\u0100-\uffff]/.test(o)||n.utf8_encode(o)!==o)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(~e.inArray(o.toUpperCase(),["CONNECT","DELETE","GET","HEAD","OPTIONS","POST","PUT","TRACE","TRACK"])&&(v=o.toUpperCase()),~e.inArray(v,["CONNECT","TRACE","TRACK"]))throw new t.DOMException(t.DOMException.SECURITY_ERR);if(a=n.utf8_encode(a),l=r.parseUrl(a),B=r.hasSameOrigin(l),x=r.resolveUrl(a),(u||c)&&!B)throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);if(y=u||l.user,w=c||l.pass,T=s||!0,T===!1&&(i("timeout")||i("withCredentials")||""!==i("responseType")))throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);N=!T,C=!1,S={},g.call(this),i("readyState",h.OPENED),this.dispatchEvent("readystatechange")},setRequestHeader:function(r,o){var a=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","content-transfer-encoding","date","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","user-agent","via"];if(i("readyState")!==h.OPENED||C)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(/[\u0100-\uffff]/.test(r)||n.utf8_encode(r)!==r)throw new t.DOMException(t.DOMException.SYNTAX_ERR);return r=e.trim(r).toLowerCase(),~e.inArray(r,a)||/^(proxy\-|sec\-)/.test(r)?!1:(S[r]?S[r]+=", "+o:S[r]=o,!0)},hasRequestHeader:function(e){return e&&S[e.toLowerCase()]||!1},getAllResponseHeaders:function(){return U||""},getResponseHeader:function(t){return t=t.toLowerCase(),F||~e.inArray(t,["set-cookie","set-cookie2"])?null:U&&""!==U&&(_||(_={},e.each(U.split(/\r\n/),function(t){var i=t.split(/:\s+/);2===i.length&&(i[0]=e.trim(i[0]),_[i[0].toLowerCase()]={header:i[0],value:e.trim(i[1])})})),_.hasOwnProperty(t))?_[t].header+": "+_[t].value:null},overrideMimeType:function(n){var r,o;if(~e.inArray(i("readyState"),[h.LOADING,h.DONE]))throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(n=e.trim(n.toLowerCase()),/;/.test(n)&&(r=n.match(/^([^;]+)(?:;\scharset\=)?(.*)$/))&&(n=r[1],r[2]&&(o=r[2])),!d.mimes[n])throw new t.DOMException(t.DOMException.SYNTAX_ERR);P=n,H=o},send:function(i,r){if(k="string"===e.typeOf(r)?{ruid:r}:r?r:{},this.readyState!==h.OPENED||C)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(i instanceof s)k.ruid=i.ruid,D=i.type||"application/octet-stream";else if(i instanceof c){if(i.hasBlob()){var o=i.getBlob();k.ruid=o.ruid,D=o.type||"application/octet-stream"}}else"string"==typeof i&&(O="UTF-8",D="text/plain;charset=UTF-8",i=n.utf8_encode(i));this.withCredentials||(this.withCredentials=k.required_caps&&k.required_caps.send_browser_cookies&&!B),L=!N&&this.upload.hasEventListener(),F=!1,M=!i,N||(C=!0),u.call(this,i)},abort:function(){if(F=!0,N=!1,~e.inArray(i("readyState"),[h.UNSENT,h.OPENED,h.DONE]))i("readyState",h.UNSENT);else{if(i("readyState",h.DONE),C=!1,!R)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);R.getRuntime().exec.call(R,"XMLHttpRequest","abort",M),M=!0}},destroy:function(){R&&("function"===e.typeOf(R.destroy)&&R.destroy(),R=null),this.unbindAll(),this.upload&&(this.upload.unbindAll(),this.upload=null)}}),this.handleEventProps(p.concat(["readystatechange"])),this.upload.handleEventProps(p)}var f={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",306:"Reserved",307:"Temporary Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Request Entity Too Large",414:"Request-URI Too Long",415:"Unsupported Media Type",416:"Requested Range Not Satisfiable",417:"Expectation Failed",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",426:"Upgrade Required",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",510:"Not Extended"};m.prototype=i.instance;var p=["loadstart","progress","abort","error","load","timeout","loadend"];return h.UNSENT=0,h.OPENED=1,h.HEADERS_RECEIVED=2,h.LOADING=3,h.DONE=4,h.prototype=i.instance,h}),n("moxie/runtime/Transporter",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/runtime/RuntimeClient","moxie/core/EventTarget"],function(e,t,i,n){function r(){function n(){l=d=0,c=this.result=null}function o(t,i){var n=this;u=i,n.bind("TransportingProgress",function(t){d=t.loaded,l>d&&-1===e.inArray(n.state,[r.IDLE,r.DONE])&&a.call(n)},999),n.bind("TransportingComplete",function(){d=l,n.state=r.DONE,c=null,n.result=u.exec.call(n,"Transporter","getAsBlob",t||"")},999),n.state=r.BUSY,n.trigger("TransportingStarted"),a.call(n)}function a(){var e,i=this,n=l-d;m>n&&(m=n),e=t.btoa(c.substr(d,m)),u.exec.call(i,"Transporter","receive",e,l)}var s,u,c,l,d,m;i.call(this),e.extend(this,{uid:e.guid("uid_"),state:r.IDLE,result:null,transport:function(t,i,r){var a=this;if(r=e.extend({chunk_size:204798},r),(s=r.chunk_size%3)&&(r.chunk_size+=3-s),m=r.chunk_size,n.call(this),c=t,l=t.length,"string"===e.typeOf(r)||r.ruid)o.call(a,i,this.connectRuntime(r));else{var u=function(e,t){a.unbind("RuntimeInit",u),o.call(a,i,t)};this.bind("RuntimeInit",u),this.connectRuntime(r)}},abort:function(){var e=this;e.state=r.IDLE,u&&(u.exec.call(e,"Transporter","clear"),e.trigger("TransportingAborted")),n.call(e)},destroy:function(){this.unbindAll(),u=null,this.disconnectRuntime(),n.call(this)}})}return r.IDLE=0,r.BUSY=1,r.DONE=2,r.prototype=n.instance,r}),n("moxie/image/Image",["moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/file/FileReaderSync","moxie/xhr/XMLHttpRequest","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/runtime/Transporter","moxie/core/utils/Env","moxie/core/EventTarget","moxie/file/Blob","moxie/file/File","moxie/core/utils/Encode"],function(e,t,i,n,r,o,a,s,u,c,l,d,m){function h(){function n(e){try{return e||(e=this.exec("Image","getInfo")),this.size=e.size,this.width=e.width,this.height=e.height,this.type=e.type,this.meta=e.meta,""===this.name&&(this.name=e.name),!0}catch(t){return this.trigger("error",t.code),!1}}function c(t){var n=e.typeOf(t);try{if(t instanceof h){if(!t.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);p.apply(this,arguments)}else if(t instanceof l){if(!~e.inArray(t.type,["image/jpeg","image/png"]))throw new i.ImageError(i.ImageError.WRONG_FORMAT);g.apply(this,arguments)}else if(-1!==e.inArray(n,["blob","file"]))c.call(this,new d(null,t),arguments[1]);else if("string"===n)"data:"===t.substr(0,5)?c.call(this,new l(null,{data:t}),arguments[1]):x.apply(this,arguments);else{if("node"!==n||"img"!==t.nodeName.toLowerCase())throw new i.DOMException(i.DOMException.TYPE_MISMATCH_ERR);c.call(this,t.src,arguments[1])}}catch(r){this.trigger("error",r.code)}}function p(t,i){var n=this.connectRuntime(t.ruid);this.ruid=n.uid,n.exec.call(this,"Image","loadFromImage",t,"undefined"===e.typeOf(i)?!0:i)}function g(t,i){function n(e){r.ruid=e.uid,e.exec.call(r,"Image","loadFromBlob",t)}var r=this;r.name=t.name||"",t.isDetached()?(this.bind("RuntimeInit",function(e,t){n(t)}),i&&"string"==typeof i.required_caps&&(i.required_caps=o.parseCaps(i.required_caps)),this.connectRuntime(e.extend({required_caps:{access_image_binary:!0,resize_image:!0}},i))):n(this.connectRuntime(t.ruid))}function x(e,t){var i,n=this;i=new r,i.open("get",e),i.responseType="blob",i.onprogress=function(e){n.trigger(e)},i.onload=function(){g.call(n,i.response,!0)},i.onerror=function(e){n.trigger(e)},i.onloadend=function(){i.destroy()},i.bind("RuntimeError",function(e,t){n.trigger("RuntimeError",t)}),i.send(null,t)}a.call(this),e.extend(this,{uid:e.guid("uid_"),ruid:null,name:"",size:0,width:0,height:0,type:"",meta:{},clone:function(){this.load.apply(this,arguments)},load:function(){c.apply(this,arguments)},resize:function(t){var n,r,o=this,a={x:0,y:0,width:o.width,height:o.height},s=e.extendIf({width:o.width,height:o.height,type:o.type||"image/jpeg",quality:90,crop:!1,fit:!0,preserveHeaders:!0,resample:"default",multipass:!0},t);try{if(!o.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);if(o.width>h.MAX_RESIZE_WIDTH||o.height>h.MAX_RESIZE_HEIGHT)throw new i.ImageError(i.ImageError.MAX_RESOLUTION_ERR);if(n=o.meta&&o.meta.tiff&&o.meta.tiff.Orientation||1,-1!==e.inArray(n,[5,6,7,8])){var u=s.width;s.width=s.height,s.height=u}if(s.crop){switch(r=Math.max(s.width/o.width,s.height/o.height),t.fit?(a.width=Math.min(Math.ceil(s.width/r),o.width),a.height=Math.min(Math.ceil(s.height/r),o.height),r=s.width/a.width):(a.width=Math.min(s.width,o.width),a.height=Math.min(s.height,o.height),r=1),"boolean"==typeof s.crop&&(s.crop="cc"),s.crop.toLowerCase().replace(/_/,"-")){case"rb":case"right-bottom":a.x=o.width-a.width,a.y=o.height-a.height;break;case"cb":case"center-bottom":a.x=Math.floor((o.width-a.width)/2),a.y=o.height-a.height;break;case"lb":case"left-bottom":a.x=0,a.y=o.height-a.height;break;case"lt":case"left-top":a.x=0,a.y=0;break;case"ct":case"center-top":a.x=Math.floor((o.width-a.width)/2),a.y=0;break;case"rt":case"right-top":a.x=o.width-a.width,a.y=0;break;case"rc":case"right-center":case"right-middle":a.x=o.width-a.width,a.y=Math.floor((o.height-a.height)/2);break;case"lc":case"left-center":case"left-middle":a.x=0,a.y=Math.floor((o.height-a.height)/2);break;case"cc":case"center-center":case"center-middle":default:a.x=Math.floor((o.width-a.width)/2),a.y=Math.floor((o.height-a.height)/2)}a.x=Math.max(a.x,0),a.y=Math.max(a.y,0)}else r=Math.min(s.width/o.width,s.height/o.height);this.exec("Image","resize",a,r,s)}catch(c){o.trigger("error",c.code)}},downsize:function(t){var i,n={width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90,crop:!1,preserveHeaders:!0,resample:"default"};i="object"==typeof t?e.extend(n,t):e.extend(n,{width:arguments[0],height:arguments[1],crop:arguments[2],preserveHeaders:arguments[3]}),this.resize(i)},crop:function(e,t,i){this.downsize(e,t,!0,i)},getAsCanvas:function(){if(!u.can("create_canvas"))throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR);var e=this.connectRuntime(this.ruid);return e.exec.call(this,"Image","getAsCanvas")},getAsBlob:function(e,t){if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsBlob",e||"image/jpeg",t||90)},getAsDataURL:function(e,t){if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsDataURL",e||"image/jpeg",t||90)},getAsBinaryString:function(e,t){var i=this.getAsDataURL(e,t);return m.atob(i.substring(i.indexOf("base64,")+7))},embed:function(n,r){function o(t,r){var o=this;if(u.can("create_canvas")){var l=o.getAsCanvas();if(l)return n.appendChild(l),l=null,o.destroy(),c.trigger("embedded"),void 0}var d=o.getAsDataURL(t,r);if(!d)throw new i.ImageError(i.ImageError.WRONG_FORMAT);if(u.can("use_data_uri_of",d.length))n.innerHTML='',o.destroy(),c.trigger("embedded");else{var h=new s;h.bind("TransportingComplete",function(){a=c.connectRuntime(this.result.ruid),c.bind("Embedded",function(){e.extend(a.getShimContainer().style,{top:"0px",left:"0px",width:o.width+"px",height:o.height+"px"}),a=null},999),a.exec.call(c,"ImageView","display",this.result.uid,width,height),o.destroy()}),h.transport(m.atob(d.substring(d.indexOf("base64,")+7)),t,{required_caps:{display_media:!0},runtime_order:"flash,silverlight",container:n})}}var a,c=this,l=e.extend({width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90},r);try{if(!(n=t.get(n)))throw new i.DOMException(i.DOMException.INVALID_NODE_TYPE_ERR);if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);this.width>h.MAX_RESIZE_WIDTH||this.height>h.MAX_RESIZE_HEIGHT;var d=new h;return d.bind("Resize",function(){o.call(this,l.type,l.quality)}),d.bind("Load",function(){d.downsize(l)}),this.meta.thumb&&this.meta.thumb.width>=l.width&&this.meta.thumb.height>=l.height?d.load(this.meta.thumb.data):d.clone(this,!1),d}catch(f){this.trigger("error",f.code)}},destroy:function(){this.ruid&&(this.getRuntime().exec.call(this,"Image","destroy"),this.disconnectRuntime()),this.unbindAll()}}),this.handleEventProps(f),this.bind("Load Resize",function(){return n.call(this)},999)}var f=["progress","load","error","resize","embedded"];return h.MAX_RESIZE_WIDTH=8192,h.MAX_RESIZE_HEIGHT=8192,h.prototype=c.instance,h}),n("moxie/runtime/html5/Runtime",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/Runtime","moxie/core/utils/Env"],function(e,t,i,n){function o(t){var o=this,u=i.capTest,c=i.capTrue,l=e.extend({access_binary:u(window.FileReader||window.File&&window.File.getAsDataURL),access_image_binary:function(){return o.can("access_binary")&&!!s.Image},display_media:u((n.can("create_canvas")||n.can("use_data_uri_over32kb"))&&r("moxie/image/Image")),do_cors:u(window.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest),drag_and_drop:u(function(){var e=document.createElement("div");return("draggable"in e||"ondragstart"in e&&"ondrop"in e)&&("IE"!==n.browser||n.verComp(n.version,9,">"))}()),filter_by_extension:u(function(){return!("Chrome"===n.browser&&n.verComp(n.version,28,"<")||"IE"===n.browser&&n.verComp(n.version,10,"<")||"Safari"===n.browser&&n.verComp(n.version,7,"<")||"Firefox"===n.browser&&n.verComp(n.version,37,"<"))}()),return_response_headers:c,return_response_type:function(e){return"json"===e&&window.JSON?!0:n.can("return_response_type",e)},return_status_code:c,report_upload_progress:u(window.XMLHttpRequest&&(new XMLHttpRequest).upload),resize_image:function(){return o.can("access_binary")&&n.can("create_canvas")},select_file:function(){return n.can("use_fileinput")&&window.File},select_folder:function(){return o.can("select_file")&&("Chrome"===n.browser&&n.verComp(n.version,21,">=")||"Firefox"===n.browser&&n.verComp(n.version,42,">="))},select_multiple:function(){return!(!o.can("select_file")||"Safari"===n.browser&&"Windows"===n.os||"iOS"===n.os&&n.verComp(n.osVersion,"7.0.0",">")&&n.verComp(n.osVersion,"8.0.0","<"))},send_binary_string:u(window.XMLHttpRequest&&((new XMLHttpRequest).sendAsBinary||window.Uint8Array&&window.ArrayBuffer)),send_custom_headers:u(window.XMLHttpRequest),send_multipart:function(){return!!(window.XMLHttpRequest&&(new XMLHttpRequest).upload&&window.FormData)||o.can("send_binary_string")},slice_blob:u(window.File&&(File.prototype.mozSlice||File.prototype.webkitSlice||File.prototype.slice)),stream_upload:function(){return o.can("slice_blob")&&o.can("send_multipart")},summon_file_dialog:function(){return o.can("select_file")&&("Firefox"===n.browser&&n.verComp(n.version,4,">=")||"Opera"===n.browser&&n.verComp(n.version,12,">=")||"IE"===n.browser&&n.verComp(n.version,10,">=")||!!~e.inArray(n.browser,["Chrome","Safari","Edge"]))},upload_filesize:c,use_http_method:c},arguments[2]);i.call(this,t,arguments[1]||a,l),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(o),e=o=null}}(this.destroy)}),e.extend(this.getShim(),s)}var a="html5",s={};return i.addConstructor(a,o),s}),n("moxie/runtime/html5/file/Blob",["moxie/runtime/html5/Runtime","moxie/file/Blob"],function(e,t){function i(){function e(e,t,i){var n;if(!window.File.prototype.slice)return(n=window.File.prototype.webkitSlice||window.File.prototype.mozSlice)?n.call(e,t,i):null;try{return e.slice(),e.slice(t,i)}catch(r){return e.slice(t,i-t)}}this.slice=function(){return new t(this.getRuntime().uid,e.apply(this,arguments))}}return e.Blob=i}),n("moxie/core/utils/Events",["moxie/core/utils/Basic"],function(e){function t(){this.returnValue=!1}function i(){this.cancelBubble=!0}var n={},r="moxie_"+e.guid(),o=function(o,a,s,u){var c,l;a=a.toLowerCase(),o.addEventListener?(c=s,o.addEventListener(a,c,!1)):o.attachEvent&&(c=function(){var e=window.event;e.target||(e.target=e.srcElement),e.preventDefault=t,e.stopPropagation=i,s(e)},o.attachEvent("on"+a,c)),o[r]||(o[r]=e.guid()),n.hasOwnProperty(o[r])||(n[o[r]]={}),l=n[o[r]],l.hasOwnProperty(a)||(l[a]=[]),l[a].push({func:c,orig:s,key:u})},a=function(t,i,o){var a,s;if(i=i.toLowerCase(),t[r]&&n[t[r]]&&n[t[r]][i]){a=n[t[r]][i];for(var u=a.length-1;u>=0&&(a[u].orig!==o&&a[u].key!==o||(t.removeEventListener?t.removeEventListener(i,a[u].func,!1):t.detachEvent&&t.detachEvent("on"+i,a[u].func),a[u].orig=null,a[u].func=null,a.splice(u,1),o===s));u--);if(a.length||delete n[t[r]][i],e.isEmptyObj(n[t[r]])){delete n[t[r]];try{delete t[r]}catch(c){t[r]=s}}}},s=function(t,i){t&&t[r]&&e.each(n[t[r]],function(e,n){a(t,n,i)})};return{addEvent:o,removeEvent:a,removeAllEvents:s}}),n("moxie/runtime/html5/file/FileInput",["moxie/runtime/html5/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,a){function s(){var e,s;i.extend(this,{init:function(u){var c,l,d,m,h,f,p=this,g=p.getRuntime();e=u,d=e.accept.mimes||o.extList2mimes(e.accept,g.can("filter_by_extension")),l=g.getShimContainer(),l.innerHTML='",c=n.get(g.uid),i.extend(c.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),m=n.get(e.browse_button),s=n.getStyle(m,"z-index")||"auto",g.can("summon_file_dialog")&&("static"===n.getStyle(m,"position")&&(m.style.position="relative"),r.addEvent(m,"click",function(e){var t=n.get(g.uid);t&&!t.disabled&&t.click(),e.preventDefault()},p.uid),p.bind("Refresh",function(){h=parseInt(s,10)||1,n.get(e.browse_button).style.zIndex=h,this.getRuntime().getShimContainer().style.zIndex=h-1})),f=g.can("summon_file_dialog")?m:l,r.addEvent(f,"mouseover",function(){p.trigger("mouseenter")},p.uid),r.addEvent(f,"mouseout",function(){p.trigger("mouseleave")},p.uid),r.addEvent(f,"mousedown",function(){p.trigger("mousedown")},p.uid),r.addEvent(n.get(e.container),"mouseup",function(){p.trigger("mouseup")},p.uid),c.onchange=function x(){if(p.files=[],i.each(this.files,function(i){var n="";return e.directory&&"."==i.name?!0:(i.webkitRelativePath&&(n="/"+i.webkitRelativePath.replace(/^\//,"")),i=new t(g.uid,i),i.relativePath=n,p.files.push(i),void 0)}),"IE"!==a.browser&&"IEMobile"!==a.browser)this.value="";else{var n=this.cloneNode(!0);this.parentNode.replaceChild(n,this),n.onchange=x}p.files.length&&p.trigger("change")},p.trigger({type:"ready",async:!0}),l=null},setOption:function(e,t){var i=this.getRuntime(),r=n.get(i.uid);switch(e){case"accept":if(t){var a=t.mimes||o.extList2mimes(t,i.can("filter_by_extension"));r.setAttribute("accept",a.join(","))}else r.removeAttribute("accept");break;case"directory":t&&i.can("select_folder")?(r.setAttribute("directory",""),r.setAttribute("webkitdirectory","")):(r.removeAttribute("directory"),r.removeAttribute("webkitdirectory"));break;case"multiple":t&&i.can("select_multiple")?r.setAttribute("multiple",""):r.removeAttribute("multiple")}},disable:function(e){var t,i=this.getRuntime();(t=n.get(i.uid))&&(t.disabled=!!e)},destroy:function(){var t=this.getRuntime(),i=t.getShim(),o=t.getShimContainer(),a=e&&n.get(e.container),u=e&&n.get(e.browse_button);a&&r.removeAllEvents(a,this.uid),u&&(r.removeAllEvents(u,this.uid),u.style.zIndex=s),o&&(r.removeAllEvents(o,this.uid),o.innerHTML=""),i.removeInstance(this.uid),e=o=a=u=i=null}})}return e.FileInput=s}),n("moxie/runtime/html5/file/FileDrop",["moxie/runtime/html5/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime"],function(e,t,i,n,r,o){function a(){function e(e){if(!e.dataTransfer||!e.dataTransfer.types)return!1;var t=i.toArray(e.dataTransfer.types||[]);return-1!==i.inArray("Files",t)||-1!==i.inArray("public.file-url",t)||-1!==i.inArray("application/x-moz-file",t)}function a(e,i){if(u(e)){var n=new t(f,e);n.relativePath=i||"",p.push(n)}}function s(e){for(var t=[],n=0;n=")&&u.verComp(u.version,7,"<"),f="Android Browser"===u.browser,p=!1;if(h=i.url.replace(/^.+?\/([\w\-\.]+)$/,"$1").toLowerCase(),m=c(),m.open(i.method,i.url,i.async,i.user,i.password),r instanceof o)r.isDetached()&&(p=!0),r=r.getSource(); +else if(r instanceof a){if(r.hasBlob())if(r.getBlob().isDetached())r=d.call(s,r),p=!0;else if((l||f)&&"blob"===t.typeOf(r.getBlob().getSource())&&window.FileReader)return e.call(s,i,r),void 0;if(r instanceof a){var g=new window.FormData;r.each(function(e,t){e instanceof o?g.append(t,e.getSource()):g.append(t,e)}),r=g}}m.upload?(i.withCredentials&&(m.withCredentials=!0),m.addEventListener("load",function(e){s.trigger(e)}),m.addEventListener("error",function(e){s.trigger(e)}),m.addEventListener("progress",function(e){s.trigger(e)}),m.upload.addEventListener("progress",function(e){s.trigger({type:"UploadProgress",loaded:e.loaded,total:e.total})})):m.onreadystatechange=function(){switch(m.readyState){case 1:break;case 2:break;case 3:var e,t;try{n.hasSameOrigin(i.url)&&(e=m.getResponseHeader("Content-Length")||0),m.responseText&&(t=m.responseText.length)}catch(r){e=t=0}s.trigger({type:"progress",lengthComputable:!!e,total:parseInt(e,10),loaded:t});break;case 4:m.onreadystatechange=function(){},0===m.status?s.trigger("error"):s.trigger("load")}},t.isEmptyObj(i.headers)||t.each(i.headers,function(e,t){m.setRequestHeader(t,e)}),""!==i.responseType&&"responseType"in m&&(m.responseType="json"!==i.responseType||u.can("return_response_type","json")?i.responseType:"text"),p?m.sendAsBinary?m.sendAsBinary(r):function(){for(var e=new Uint8Array(r.length),t=0;t0&&o.set(new Uint8Array(t.slice(0,e)),0),o.set(new Uint8Array(r),e),o.set(new Uint8Array(t.slice(e+n)),e+r.byteLength),this.clear(),t=o.buffer,i=new DataView(t);break}default:return t}},length:function(){return t?t.byteLength:0},clear:function(){i=t=null}})}function n(t){function i(e,i,n){n=3===arguments.length?n:t.length-i-1,t=t.substr(0,i)+e+t.substr(n+i)}e.extend(this,{readByteAt:function(e){return t.charCodeAt(e)},writeByteAt:function(e,t){i(String.fromCharCode(t),e,1)},SEGMENT:function(e,n,r){switch(arguments.length){case 1:return t.substr(e);case 2:return t.substr(e,n);case 3:i(null!==r?r:"",e,n);break;default:return t}},length:function(){return t?t.length:0},clear:function(){t=null}})}return e.extend(t.prototype,{littleEndian:!1,read:function(e,t){var i,n,r;if(e+t>this.length())throw new Error("You are trying to read outside the source boundaries.");for(n=this.littleEndian?0:-8*(t-1),r=0,i=0;t>r;r++)i|=this.readByteAt(e+r)<this.length())throw new Error("You are trying to write outside the source boundaries.");for(n=this.littleEndian?0:-8*(i-1),r=0;i>r;r++)this.writeByteAt(e+r,255&t>>Math.abs(n+8*r))},BYTE:function(e){return this.read(e,1)},SHORT:function(e){return this.read(e,2)},LONG:function(e){return this.read(e,4)},SLONG:function(e){var t=this.read(e,4);return t>2147483647?t-4294967296:t},CHAR:function(e){return String.fromCharCode(this.read(e,1))},STRING:function(e,t){return this.asArray("CHAR",e,t).join("")},asArray:function(e,t,i){for(var n=[],r=0;i>r;r++)n[r]=this[e](t+r);return n}}),t}),n("moxie/runtime/html5/image/JPEGHeaders",["moxie/runtime/html5/utils/BinaryReader","moxie/core/Exceptions"],function(e,t){return function i(n){var r,o,a,s=[],u=0;if(r=new e(n),65496!==r.SHORT(0))throw r.clear(),new t.ImageError(t.ImageError.WRONG_FORMAT);for(o=2;o<=r.length();)if(a=r.SHORT(o),a>=65488&&65495>=a)o+=2;else{if(65498===a||65497===a)break;u=r.SHORT(o+2)+2,a>=65505&&65519>=a&&s.push({hex:a,name:"APP"+(15&a),start:o,length:u,segment:r.SEGMENT(o,u)}),o+=u}return r.clear(),{headers:s,restore:function(t){var i,n,r;for(r=new e(t),o=65504==r.SHORT(2)?4+r.SHORT(4):2,n=0,i=s.length;i>n;n++)r.SEGMENT(o,0,s[n].segment),o+=s[n].length;return t=r.SEGMENT(),r.clear(),t},strip:function(t){var n,r,o,a;for(o=new i(t),r=o.headers,o.purge(),n=new e(t),a=r.length;a--;)n.SEGMENT(r[a].start,r[a].length,"");return t=n.SEGMENT(),n.clear(),t},get:function(e){for(var t=[],i=0,n=s.length;n>i;i++)s[i].name===e.toUpperCase()&&t.push(s[i].segment);return t},set:function(e,t){var i,n,r,o=[];for("string"==typeof t?o.push(t):o=t,i=n=0,r=s.length;r>i&&(s[i].name===e.toUpperCase()&&(s[i].segment=o[n],s[i].length=o[n].length,n++),!(n>=o.length));i++);},purge:function(){this.headers=s=[]}}}}),n("moxie/runtime/html5/image/ExifParser",["moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader","moxie/core/Exceptions"],function(e,i,n){function r(o){function a(i,r){var o,a,s,u,c,m,h,f,p=this,g=[],x={},v={1:"BYTE",7:"UNDEFINED",2:"ASCII",3:"SHORT",4:"LONG",5:"RATIONAL",9:"SLONG",10:"SRATIONAL"},y={BYTE:1,UNDEFINED:1,ASCII:1,SHORT:2,LONG:4,RATIONAL:8,SLONG:4,SRATIONAL:8};for(o=p.SHORT(i),a=0;o>a;a++)if(g=[],h=i+2+12*a,s=r[p.SHORT(h)],s!==t){if(u=v[p.SHORT(h+=2)],c=p.LONG(h+=2),m=y[u],!m)throw new n.ImageError(n.ImageError.INVALID_META_ERR);if(h+=4,m*c>4&&(h=p.LONG(h)+d.tiffHeader),h+m*c>=this.length())throw new n.ImageError(n.ImageError.INVALID_META_ERR);"ASCII"!==u?(g=p.asArray(u,h,c),f=1==c?g[0]:g,x[s]=l.hasOwnProperty(s)&&"object"!=typeof f?l[s][f]:f):x[s]=e.trim(p.STRING(h,c).replace(/\0$/,""))}return x}function s(e,t,i){var n,r,o,a=0;if("string"==typeof t){var s=c[e.toLowerCase()];for(var u in s)if(s[u]===t){t=u;break}}n=d[e.toLowerCase()+"IFD"],r=this.SHORT(n);for(var l=0;r>l;l++)if(o=n+12*l+2,this.SHORT(o)==t){a=o+8;break}if(!a)return!1;try{this.write(a,i,4)}catch(m){return!1}return!0}var u,c,l,d,m,h;if(i.call(this,o),c={tiff:{274:"Orientation",270:"ImageDescription",271:"Make",272:"Model",305:"Software",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer"},exif:{36864:"ExifVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",36867:"DateTimeOriginal",33434:"ExposureTime",33437:"FNumber",34855:"ISOSpeedRatings",37377:"ShutterSpeedValue",37378:"ApertureValue",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37386:"FocalLength",41986:"ExposureMode",41987:"WhiteBalance",41990:"SceneCaptureType",41988:"DigitalZoomRatio",41992:"Contrast",41993:"Saturation",41994:"Sharpness"},gps:{0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude"},thumb:{513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength"}},l={ColorSpace:{1:"sRGB",0:"Uncalibrated"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{1:"Daylight",2:"Fliorescent",3:"Tungsten",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 -5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire",1:"Flash fired",5:"Strobe return light not detected",7:"Strobe return light detected",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},ExposureMode:{0:"Auto exposure",1:"Manual exposure",2:"Auto bracket"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},GPSLatitudeRef:{N:"North latitude",S:"South latitude"},GPSLongitudeRef:{E:"East longitude",W:"West longitude"}},d={tiffHeader:10},m=d.tiffHeader,u={clear:this.clear},e.extend(this,{read:function(){try{return r.prototype.read.apply(this,arguments)}catch(e){throw new n.ImageError(n.ImageError.INVALID_META_ERR)}},write:function(){try{return r.prototype.write.apply(this,arguments)}catch(e){throw new n.ImageError(n.ImageError.INVALID_META_ERR)}},UNDEFINED:function(){return this.BYTE.apply(this,arguments)},RATIONAL:function(e){return this.LONG(e)/this.LONG(e+4)},SRATIONAL:function(e){return this.SLONG(e)/this.SLONG(e+4)},ASCII:function(e){return this.CHAR(e)},TIFF:function(){return h||null},EXIF:function(){var t=null;if(d.exifIFD){try{t=a.call(this,d.exifIFD,c.exif)}catch(i){return null}if(t.ExifVersion&&"array"===e.typeOf(t.ExifVersion)){for(var n=0,r="";n=65472&&65475>=t)return n+=5,{height:e.SHORT(n),width:e.SHORT(n+=2)};i=e.SHORT(n+=2),n+=i-2}return null}function s(){var e,t,i=d.thumb();return i&&(e=new n(i),t=a(e),e.clear(),t)?(t.data=i,t):null}function u(){d&&l&&c&&(d.clear(),l.purge(),c.clear(),m=l=d=c=null)}var c,l,d,m;if(c=new n(o),65496!==c.SHORT(0))throw new t.ImageError(t.ImageError.WRONG_FORMAT);l=new i(o);try{d=new r(l.get("app1")[0])}catch(h){}m=a.call(this),e.extend(this,{type:"image/jpeg",size:c.length(),width:m&&m.width||0,height:m&&m.height||0,setExif:function(t,i){return d?("object"===e.typeOf(t)?e.each(t,function(e,t){d.setExif(t,e)}):d.setExif(t,i),l.set("app1",d.SEGMENT()),void 0):!1},writeHeaders:function(){return arguments.length?l.restore(arguments[0]):l.restore(o)},stripHeaders:function(e){return l.strip(e)},purge:function(){u.call(this)}}),d&&(this.meta={tiff:d.TIFF(),exif:d.EXIF(),gps:d.GPS(),thumb:s()})}return o}),n("moxie/runtime/html5/image/PNG",["moxie/core/Exceptions","moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader"],function(e,t,i){function n(n){function r(){var e,t;return e=a.call(this,8),"IHDR"==e.type?(t=e.start,{width:s.LONG(t),height:s.LONG(t+=4)}):null}function o(){s&&(s.clear(),n=l=u=c=s=null)}function a(e){var t,i,n,r;return t=s.LONG(e),i=s.STRING(e+=4,4),n=e+=4,r=s.LONG(e+t),{length:t,type:i,start:n,CRC:r}}var s,u,c,l;s=new i(n),function(){var t=0,i=0,n=[35152,20039,3338,6666];for(i=0;in||n>2)&&(n=.5>n?.5:2,a=!0);var s=t(i,n);return a?e(s,o/s.width):s}function t(e,t){var i=e.width,n=e.height,r=Math.floor(i*t),o=Math.floor(n*t),a=document.createElement("canvas");return a.width=r,a.height=o,a.getContext("2d").drawImage(e,0,0,i,n,0,0,r,o),e=null,a}return{scale:e}}),n("moxie/runtime/html5/image/Image",["moxie/runtime/html5/Runtime","moxie/core/utils/Basic","moxie/core/Exceptions","moxie/core/utils/Encode","moxie/file/Blob","moxie/file/File","moxie/runtime/html5/image/ImageInfo","moxie/runtime/html5/image/ResizerCanvas","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,a,s,u){function c(){function e(){if(!v&&!g)throw new i.ImageError(i.DOMException.INVALID_STATE_ERR);return v||g}function c(){var t=e();return"canvas"==t.nodeName.toLowerCase()?t:(v=document.createElement("canvas"),v.width=t.width,v.height=t.height,v.getContext("2d").drawImage(t,0,0),v)}function l(e){return n.atob(e.substring(e.indexOf("base64,")+7))}function d(e,t){return"data:"+(t||"")+";base64,"+n.btoa(e)}function m(e){var t=this;g=new Image,g.onerror=function(){p.call(this),t.trigger("error",i.ImageError.WRONG_FORMAT)},g.onload=function(){t.trigger("load")},g.src="data:"==e.substr(0,5)?e:d(e,w.type)}function h(e,t){var n,r=this;return window.FileReader?(n=new FileReader,n.onload=function(){t(this.result)},n.onerror=function(){r.trigger("error",i.ImageError.WRONG_FORMAT)},n.readAsDataURL(e),void 0):t(e.getAsDataURL())}function f(e,i){var n=Math.PI/180,r=document.createElement("canvas"),o=r.getContext("2d"),a=e.width,s=e.height;switch(t.inArray(i,[5,6,7,8])>-1?(r.width=s,r.height=a):(r.width=a,r.height=s),i){case 2:o.translate(a,0),o.scale(-1,1);break;case 3:o.translate(a,s),o.rotate(180*n);break;case 4:o.translate(0,s),o.scale(1,-1);break;case 5:o.rotate(90*n),o.scale(1,-1);break;case 6:o.rotate(90*n),o.translate(0,-s);break;case 7:o.rotate(90*n),o.translate(a,-s),o.scale(-1,1);break;case 8:o.rotate(-90*n),o.translate(-a,0)}return o.drawImage(e,0,0,a,s),r}function p(){x&&(x.purge(),x=null),y=g=v=w=null,b=!1}var g,x,v,y,w,E=this,b=!1,R=!0;t.extend(this,{loadFromBlob:function(e){var t=this,n=t.getRuntime(),r=arguments.length>1?arguments[1]:!0;if(!n.can("access_binary"))throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR);return w=e,e.isDetached()?(y=e.getSource(),m.call(this,y),void 0):(h.call(this,e.getSource(),function(e){r&&(y=l(e)),m.call(t,e)}),void 0)},loadFromImage:function(e,t){this.meta=e.meta,w=new o(null,{name:e.name,size:e.size,type:e.type}),m.call(this,t?y=e.getAsBinaryString():e.getAsDataURL())},getInfo:function(){var t,i=this.getRuntime();return!x&&y&&i.can("access_image_binary")&&(x=new a(y)),t={width:e().width||0,height:e().height||0,type:w.type||u.getFileMime(w.name),size:y&&y.length||w.size||0,name:w.name||"",meta:null},R&&(t.meta=x&&x.meta||this.meta||{},!t.meta||!t.meta.thumb||t.meta.thumb.data instanceof r||(t.meta.thumb.data=new r(null,{type:"image/jpeg",data:t.meta.thumb.data}))),t},resize:function(t,i,n){var r=document.createElement("canvas");if(r.width=t.width,r.height=t.height,r.getContext("2d").drawImage(e(),t.x,t.y,t.width,t.height,0,0,r.width,r.height),v=s.scale(r,i),R=n.preserveHeaders,!R){var o=this.meta&&this.meta.tiff&&this.meta.tiff.Orientation||1;v=f(v,o)}this.width=v.width,this.height=v.height,b=!0,this.trigger("Resize")},getAsCanvas:function(){return v||(v=c()),v.id=this.uid+"_canvas",v},getAsBlob:function(e,t){return e!==this.type?(b=!0,new o(null,{name:w.name||"",type:e,data:E.getAsDataURL(e,t)})):new o(null,{name:w.name||"",type:e,data:E.getAsBinaryString(e,t)})},getAsDataURL:function(e){var t=arguments[1]||90;if(!b)return g.src;if(c(),"image/jpeg"!==e)return v.toDataURL("image/png");try{return v.toDataURL("image/jpeg",t/100)}catch(i){return v.toDataURL("image/jpeg")}},getAsBinaryString:function(e,t){if(!b)return y||(y=l(E.getAsDataURL(e,t))),y;if("image/jpeg"!==e)y=l(E.getAsDataURL(e,t));else{var i;t||(t=90),c();try{i=v.toDataURL("image/jpeg",t/100)}catch(n){i=v.toDataURL("image/jpeg")}y=l(i),x&&(y=x.stripHeaders(y),R&&(x.meta&&x.meta.exif&&x.setExif({PixelXDimension:this.width,PixelYDimension:this.height}),y=x.writeHeaders(y)),x.purge(),x=null)}return b=!1,y},destroy:function(){E=null,p.call(this),this.getRuntime().getShim().removeInstance(this.uid)}})}return e.Image=c}),n("moxie/runtime/flash/Runtime",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/runtime/Runtime"],function(e,t,i,n,o){function a(){var e;try{e=navigator.plugins["Shockwave Flash"],e=e.description}catch(t){try{e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version")}catch(i){e="0.0"}}return e=e.match(/\d+/g),parseFloat(e[0]+"."+e[1])}function s(e){var n=i.get(e);n&&"OBJECT"==n.nodeName&&("IE"===t.browser?(n.style.display="none",function r(){4==n.readyState?u(e):setTimeout(r,10)}()):n.parentNode.removeChild(n))}function u(e){var t=i.get(e);if(t){for(var n in t)"function"==typeof t[n]&&(t[n]=null);t.parentNode.removeChild(t)}}function c(u){var c,m=this;u=e.extend({swf_url:t.swf_url},u),o.call(this,u,l,{access_binary:function(e){return e&&"browser"===m.mode},access_image_binary:function(e){return e&&"browser"===m.mode},display_media:o.capTest(r("moxie/image/Image")),do_cors:o.capTrue,drag_and_drop:!1,report_upload_progress:function(){return"client"===m.mode},resize_image:o.capTrue,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!e.arrayDiff(t,["","text","document"])||"browser"===m.mode},return_status_code:function(t){return"browser"===m.mode||!e.arrayDiff(t,[200,404])},select_file:o.capTrue,select_multiple:o.capTrue,send_binary_string:function(e){return e&&"browser"===m.mode},send_browser_cookies:function(e){return e&&"browser"===m.mode},send_custom_headers:function(e){return e&&"browser"===m.mode},send_multipart:o.capTrue,slice_blob:function(e){return e&&"browser"===m.mode},stream_upload:function(e){return e&&"browser"===m.mode},summon_file_dialog:!1,upload_filesize:function(t){return e.parseSizeStr(t)<=2097152||"client"===m.mode},use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}},{access_binary:function(e){return e?"browser":"client"},access_image_binary:function(e){return e?"browser":"client"},report_upload_progress:function(e){return e?"browser":"client"},return_response_type:function(t){return e.arrayDiff(t,["","text","json","document"])?"browser":["client","browser"]},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"browser":["client","browser"]},send_binary_string:function(e){return e?"browser":"client"},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"browser":"client"},slice_blob:function(e){return e?"browser":"client"},stream_upload:function(e){return e?"client":"browser"},upload_filesize:function(t){return e.parseSizeStr(t)>=2097152?"client":"browser"}},"client"),a()<11.3&&(this.mode=!1),e.extend(this,{getShim:function(){return i.get(this.uid)},shimExec:function(e,t){var i=[].slice.call(arguments,2);return m.getShim().exec(this.uid,e,t,i)},init:function(){var i,r,o;o=this.getShimContainer(),e.extend(o.style,{position:"absolute",top:"-8px",left:"-8px",width:"9px",height:"9px",overflow:"hidden"}),i=''+''+''+''+"","IE"===t.browser?(r=document.createElement("div"),o.appendChild(r),r.outerHTML=i,r=o=null):o.innerHTML=i,c=setTimeout(function(){m&&!m.initialized&&m.trigger("Error",new n.RuntimeError(n.RuntimeError.NOT_INIT_ERR))},5e3)},destroy:function(e){return function(){s(m.uid),e.call(m),clearTimeout(c),u=c=e=m=null}}(this.destroy)},d)}var l="flash",d={};return o.addConstructor(l,c),d}),n("moxie/runtime/flash/file/Blob",["moxie/runtime/flash/Runtime","moxie/file/Blob"],function(e,t){var i={slice:function(e,i,n,r){var o=this.getRuntime();return 0>i?i=Math.max(e.size+i,0):i>0&&(i=Math.min(i,e.size)),0>n?n=Math.max(e.size+n,0):n>0&&(n=Math.min(n,e.size)),e=o.shimExec.call(this,"Blob","slice",i,n,r||""),e&&(e=new t(o.uid,e)),e}};return e.Blob=i}),n("moxie/runtime/flash/file/FileInput",["moxie/runtime/flash/Runtime","moxie/file/File","moxie/core/utils/Basic"],function(e,t,i){var n={init:function(e){var n=this,r=this.getRuntime();this.bind("Change",function(){var e=r.shimExec.call(n,"FileInput","getFiles");n.files=[],i.each(e,function(e){n.files.push(new t(r.uid,e))})},999),this.getRuntime().shimExec.call(this,"FileInput","init",{accept:e.accept,multiple:e.multiple}),this.trigger("ready")}};return e.FileInput=n}),n("moxie/runtime/flash/file/FileReader",["moxie/runtime/flash/Runtime","moxie/core/utils/Encode"],function(e,t){function i(e,i){switch(i){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var n={read:function(e,t){var n=this;return n.result="","readAsDataURL"===e&&(n.result="data:"+(t.type||"")+";base64,"),n.bind("Progress",function(t,r){r&&(n.result+=i(r,e))},999),n.getRuntime().shimExec.call(this,"FileReader","readAsBase64",t.uid)}};return e.FileReader=n}),n("moxie/runtime/flash/file/FileReaderSync",["moxie/runtime/flash/Runtime","moxie/core/utils/Encode"],function(e,t){function i(e,i){switch(i){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var n={read:function(e,t){var n,r=this.getRuntime();return(n=r.shimExec.call(this,"FileReaderSync","readAsBase64",t.uid))?("readAsDataURL"===e&&(n="data:"+(t.type||"")+";base64,"+n),i(n,e,t.type)):null}};return e.FileReaderSync=n}),n("moxie/runtime/flash/runtime/Transporter",["moxie/runtime/flash/Runtime","moxie/file/Blob"],function(e,t){var i={getAsBlob:function(e){var i=this.getRuntime(),n=i.shimExec.call(this,"Transporter","getAsBlob",e);return n?new t(i.uid,n):null}};return e.Transporter=i}),n("moxie/runtime/flash/xhr/XMLHttpRequest",["moxie/runtime/flash/Runtime","moxie/core/utils/Basic","moxie/file/Blob","moxie/file/File","moxie/file/FileReaderSync","moxie/runtime/flash/file/FileReaderSync","moxie/xhr/FormData","moxie/runtime/Transporter","moxie/runtime/flash/runtime/Transporter"],function(e,t,i,n,r,o,a,s){var u={send:function(e,n){function r(){e.transport=l.mode,l.shimExec.call(c,"XMLHttpRequest","send",e,n)}function o(e,t){l.shimExec.call(c,"XMLHttpRequest","appendBlob",e,t.uid),n=null,r()}function u(e,t){var i=new s;i.bind("TransportingComplete",function(){t(this.result)}),i.transport(e.getSource(),e.type,{ruid:l.uid})}var c=this,l=c.getRuntime();if(t.isEmptyObj(e.headers)||t.each(e.headers,function(e,t){l.shimExec.call(c,"XMLHttpRequest","setRequestHeader",t,e.toString())}),n instanceof a){var d;if(n.each(function(e,t){e instanceof i?d=t:l.shimExec.call(c,"XMLHttpRequest","append",t,e)}),n.hasBlob()){var m=n.getBlob();m.isDetached()?u(m,function(e){m.destroy(),o(d,e)}):o(d,m)}else n=null,r()}else n instanceof i?n.isDetached()?u(n,function(e){n.destroy(),n=e.uid,r()}):(n=n.uid,r()):r()},getResponse:function(e){var i,o,a=this.getRuntime();if(o=a.shimExec.call(this,"XMLHttpRequest","getResponseAsBlob")){if(o=new n(a.uid,o),"blob"===e)return o;try{if(i=new r,~t.inArray(e,["","text"]))return i.readAsText(o);if("json"===e&&window.JSON)return JSON.parse(i.readAsText(o))}finally{o.destroy()}}return null},abort:function(){var e=this.getRuntime();e.shimExec.call(this,"XMLHttpRequest","abort"),this.dispatchEvent("readystatechange"),this.dispatchEvent("abort")}};return e.XMLHttpRequest=u}),n("moxie/runtime/flash/image/Image",["moxie/runtime/flash/Runtime","moxie/core/utils/Basic","moxie/runtime/Transporter","moxie/file/Blob","moxie/file/FileReaderSync"],function(e,t,i,n,r){var o={loadFromBlob:function(e){function t(e){r.shimExec.call(n,"Image","loadFromBlob",e.uid),n=r=null}var n=this,r=n.getRuntime();if(e.isDetached()){var o=new i;o.bind("TransportingComplete",function(){t(o.result.getSource())}),o.transport(e.getSource(),e.type,{ruid:r.uid})}else t(e.getSource())},loadFromImage:function(e){var t=this.getRuntime();return t.shimExec.call(this,"Image","loadFromImage",e.uid)},getInfo:function(){var e=this.getRuntime(),t=e.shimExec.call(this,"Image","getInfo");return!t.meta||!t.meta.thumb||t.meta.thumb.data instanceof n||(t.meta.thumb.data=new n(e.uid,t.meta.thumb.data)),t},getAsBlob:function(e,t){var i=this.getRuntime(),r=i.shimExec.call(this,"Image","getAsBlob",e,t);return r?new n(i.uid,r):null},getAsDataURL:function(){var e,t=this.getRuntime(),i=t.Image.getAsBlob.apply(this,arguments);return i?(e=new r,e.readAsDataURL(i)):null}};return e.Image=o}),n("moxie/runtime/silverlight/Runtime",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/runtime/Runtime"],function(e,t,i,n,o){function a(e){var t,i,n,r,o,a=!1,s=null,u=0;try{try{s=new ActiveXObject("AgControl.AgControl"),s.IsVersionSupported(e)&&(a=!0),s=null}catch(c){var l=navigator.plugins["Silverlight Plug-In"];if(l){for(t=l.description,"1.0.30226.2"===t&&(t="2.0.30226.2"),i=t.split(".");i.length>3;)i.pop();for(;i.length<4;)i.push(0);for(n=e.split(".");n.length>4;)n.pop();do r=parseInt(n[u],10),o=parseInt(i[u],10),u++;while(u=r&&!isNaN(r)&&(a=!0)}}}catch(d){a=!1}return a}function s(s){var l,d=this;s=e.extend({xap_url:t.xap_url},s),o.call(this,s,u,{access_binary:o.capTrue,access_image_binary:o.capTrue,display_media:o.capTest(r("moxie/image/Image")),do_cors:o.capTrue,drag_and_drop:!1,report_upload_progress:o.capTrue,resize_image:o.capTrue,return_response_headers:function(e){return e&&"client"===d.mode},return_response_type:function(e){return"json"!==e?!0:!!window.JSON},return_status_code:function(t){return"client"===d.mode||!e.arrayDiff(t,[200,404])},select_file:o.capTrue,select_multiple:o.capTrue,send_binary_string:o.capTrue,send_browser_cookies:function(e){return e&&"browser"===d.mode},send_custom_headers:function(e){return e&&"client"===d.mode},send_multipart:o.capTrue,slice_blob:o.capTrue,stream_upload:!0,summon_file_dialog:!1,upload_filesize:o.capTrue,use_http_method:function(t){return"client"===d.mode||!e.arrayDiff(t,["GET","POST"])}},{return_response_headers:function(e){return e?"client":"browser"},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"client":["client","browser"]},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"client":"browser"},use_http_method:function(t){return e.arrayDiff(t,["GET","POST"])?"client":["client","browser"]}}),a("2.0.31005.0")&&"Opera"!==t.browser||(this.mode=!1),e.extend(this,{getShim:function(){return i.get(this.uid).content.Moxie},shimExec:function(e,t){var i=[].slice.call(arguments,2);return d.getShim().exec(this.uid,e,t,i)},init:function(){var e;e=this.getShimContainer(),e.innerHTML=''+''+''+''+''+''+"",l=setTimeout(function(){d&&!d.initialized&&d.trigger("Error",new n.RuntimeError(n.RuntimeError.NOT_INIT_ERR))},"Windows"!==t.OS?1e4:5e3)},destroy:function(e){return function(){e.call(d),clearTimeout(l),s=l=e=d=null}}(this.destroy)},c)}var u="silverlight",c={};return o.addConstructor(u,s),c}),n("moxie/runtime/silverlight/file/Blob",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/file/Blob"],function(e,t,i){return e.Blob=t.extend({},i)}),n("moxie/runtime/silverlight/file/FileInput",["moxie/runtime/silverlight/Runtime","moxie/file/File","moxie/core/utils/Basic"],function(e,t,i){function n(e){for(var t="",i=0;ii;i++)t=s.keys[i],a=s[t],a&&(/^(\d|[1-9]\d+)$/.test(a)?a=parseInt(a,10):/^\d*\.\d+$/.test(a)&&(a=parseFloat(a)),r.meta[e][t]=a)}),!r.meta||!r.meta.thumb||r.meta.thumb.data instanceof i||(r.meta.thumb.data=new i(e.uid,r.meta.thumb.data))),r.width=parseInt(o.width,10),r.height=parseInt(o.height,10),r.size=parseInt(o.size,10),r.type=o.type,r.name=o.name,r},resize:function(e,t,i){this.getRuntime().shimExec.call(this,"Image","resize",e.x,e.y,e.width,e.height,t,i.preserveHeaders,i.resample)}})}),n("moxie/runtime/html4/Runtime",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/Runtime","moxie/core/utils/Env"],function(e,t,i,n){function o(t){var o=this,u=i.capTest,c=i.capTrue;i.call(this,t,a,{access_binary:u(window.FileReader||window.File&&File.getAsDataURL),access_image_binary:!1,display_media:u((n.can("create_canvas")||n.can("use_data_uri_over32kb"))&&r("moxie/image/Image")),do_cors:!1,drag_and_drop:!1,filter_by_extension:u(function(){return!("Chrome"===n.browser&&n.verComp(n.version,28,"<")||"IE"===n.browser&&n.verComp(n.version,10,"<")||"Safari"===n.browser&&n.verComp(n.version,7,"<")||"Firefox"===n.browser&&n.verComp(n.version,37,"<"))}()),resize_image:function(){return s.Image&&o.can("access_binary")&&n.can("create_canvas")},report_upload_progress:!1,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!!~e.inArray(t,["text","document",""])},return_status_code:function(t){return!e.arrayDiff(t,[200,404])},select_file:function(){return n.can("use_fileinput")},select_multiple:!1,send_binary_string:!1,send_custom_headers:!1,send_multipart:!0,slice_blob:!1,stream_upload:function(){return o.can("select_file")},summon_file_dialog:function(){return o.can("select_file")&&("Firefox"===n.browser&&n.verComp(n.version,4,">=")||"Opera"===n.browser&&n.verComp(n.version,12,">=")||"IE"===n.browser&&n.verComp(n.version,10,">=")||!!~e.inArray(n.browser,["Chrome","Safari"]))},upload_filesize:c,use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}}),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(o),e=o=null}}(this.destroy)}),e.extend(this.getShim(),s)}var a="html4",s={};return i.addConstructor(a,o),s}),n("moxie/runtime/html4/file/FileInput",["moxie/runtime/html4/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,a){function s(){function e(){var o,c,d,m,h,f,p=this,g=p.getRuntime();f=i.guid("uid_"),o=g.getShimContainer(),s&&(d=n.get(s+"_form"),d&&i.extend(d.style,{top:"100%"})),m=document.createElement("form"),m.setAttribute("id",f+"_form"),m.setAttribute("method","post"),m.setAttribute("enctype","multipart/form-data"),m.setAttribute("encoding","multipart/form-data"),i.extend(m.style,{overflow:"hidden",position:"absolute",top:0,left:0,width:"100%",height:"100%"}),h=document.createElement("input"),h.setAttribute("id",f),h.setAttribute("type","file"),h.setAttribute("accept",l.join(",")),i.extend(h.style,{fontSize:"999px",opacity:0}),m.appendChild(h),o.appendChild(m),i.extend(h.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),"IE"===a.browser&&a.verComp(a.version,10,"<")&&i.extend(h.style,{filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=0)"}),h.onchange=function(){var i;if(this.value){if(this.files){if(i=this.files[0],0===i.size)return m.parentNode.removeChild(m),void 0}else i={name:this.value};i=new t(g.uid,i),this.onchange=function(){},e.call(p),p.files=[i],h.setAttribute("id",i.uid),m.setAttribute("id",i.uid+"_form"),p.trigger("change"),h=m=null}},g.can("summon_file_dialog")&&(c=n.get(u.browse_button),r.removeEvent(c,"click",p.uid),r.addEvent(c,"click",function(e){h&&!h.disabled&&h.click(),e.preventDefault()},p.uid)),s=f,o=d=c=null}var s,u,c,l=[];i.extend(this,{init:function(t){var i,a=this,s=a.getRuntime();u=t,l=t.accept.mimes||o.extList2mimes(t.accept,s.can("filter_by_extension")),i=s.getShimContainer(),function(){var e,o,l;e=n.get(t.browse_button),c=n.getStyle(e,"z-index")||"auto",s.can("summon_file_dialog")&&("static"===n.getStyle(e,"position")&&(e.style.position="relative"),a.bind("Refresh",function(){o=parseInt(c,10)||1,n.get(u.browse_button).style.zIndex=o,this.getRuntime().getShimContainer().style.zIndex=o-1})),l=s.can("summon_file_dialog")?e:i,r.addEvent(l,"mouseover",function(){a.trigger("mouseenter")},a.uid),r.addEvent(l,"mouseout",function(){a.trigger("mouseleave")},a.uid),r.addEvent(l,"mousedown",function(){a.trigger("mousedown")},a.uid),r.addEvent(n.get(t.container),"mouseup",function(){a.trigger("mouseup")},a.uid),e=null}(),e.call(this),i=null,a.trigger({type:"ready",async:!0})},setOption:function(e,t){var i,r=this.getRuntime();"accept"==e&&(l=t.mimes||o.extList2mimes(t,r.can("filter_by_extension"))),i=n.get(s),i&&i.setAttribute("accept",l.join(","))},disable:function(e){var t;(t=n.get(s))&&(t.disabled=!!e)},destroy:function(){var e=this.getRuntime(),t=e.getShim(),i=e.getShimContainer(),o=u&&n.get(u.container),a=u&&n.get(u.browse_button);o&&r.removeAllEvents(o,this.uid),a&&(r.removeAllEvents(a,this.uid),a.style.zIndex=c),i&&(r.removeAllEvents(i,this.uid),i.innerHTML=""),t.removeInstance(this.uid),s=l=u=i=o=a=t=null}})}return e.FileInput=s}),n("moxie/runtime/html4/file/FileReader",["moxie/runtime/html4/Runtime","moxie/runtime/html5/file/FileReader"],function(e,t){return e.FileReader=t}),n("moxie/runtime/html4/xhr/XMLHttpRequest",["moxie/runtime/html4/Runtime","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Url","moxie/core/Exceptions","moxie/core/utils/Events","moxie/file/Blob","moxie/xhr/FormData"],function(e,t,i,n,r,o,a,s){function u(){function e(e){var t,n,r,a,s=this,u=!1;if(l){if(t=l.id.replace(/_iframe$/,""),n=i.get(t+"_form")){for(r=n.getElementsByTagName("input"),a=r.length;a--;)switch(r[a].getAttribute("type")){case"hidden":r[a].parentNode.removeChild(r[a]);break;case"file":u=!0}r=[],u||n.parentNode.removeChild(n),n=null}setTimeout(function(){o.removeEvent(l,"load",s.uid),l.parentNode&&l.parentNode.removeChild(l);var t=s.getRuntime().getShimContainer();t.children.length||t.parentNode.removeChild(t),t=l=null,e()},1)}}var u,c,l;t.extend(this,{send:function(d,m){function h(){var i=y.getShimContainer()||document.body,r=document.createElement("div");r.innerHTML='',l=r.firstChild,i.appendChild(l),o.addEvent(l,"load",function(){var i;try{i=l.contentWindow.document||l.contentDocument||window.frames[l.id].document,/^4(0[0-9]|1[0-7]|2[2346])\s/.test(i.title)?u=i.title.replace(/^(\d+).*$/,"$1"):(u=200,c=t.trim(i.body.innerHTML),v.trigger({type:"progress",loaded:c.length,total:c.length}),x&&v.trigger({type:"uploadprogress",loaded:x.size||1025,total:x.size||1025}))}catch(r){if(!n.hasSameOrigin(d.url))return e.call(v,function(){v.trigger("error")}),void 0;u=404}e.call(v,function(){v.trigger("load")})},v.uid)}var f,p,g,x,v=this,y=v.getRuntime();if(u=c=null,m instanceof s&&m.hasBlob()){if(x=m.getBlob(),f=x.uid,g=i.get(f),p=i.get(f+"_form"),!p)throw new r.DOMException(r.DOMException.NOT_FOUND_ERR)}else f=t.guid("uid_"),p=document.createElement("form"),p.setAttribute("id",f+"_form"),p.setAttribute("method",d.method),p.setAttribute("enctype","multipart/form-data"),p.setAttribute("encoding","multipart/form-data"),y.getShimContainer().appendChild(p);p.setAttribute("target",f+"_iframe"),m instanceof s&&m.each(function(e,i){if(e instanceof a)g&&g.setAttribute("name",i);else{var n=document.createElement("input");t.extend(n,{type:"hidden",name:i,value:e}),g?p.insertBefore(n,g):p.appendChild(n)}}),p.setAttribute("action",d.url),h(),p.submit(),v.trigger("loadstart")},getStatus:function(){return u},getResponse:function(e){if("json"===e&&"string"===t.typeOf(c)&&window.JSON)try{return JSON.parse(c.replace(/^\s*]*>/,"").replace(/<\/pre>\s*$/,""))}catch(i){return null}return c},abort:function(){var t=this;l&&l.contentWindow&&(l.contentWindow.stop?l.contentWindow.stop():l.contentWindow.document.execCommand?l.contentWindow.document.execCommand("Stop"):l.src="about:blank"),e.call(this,function(){t.dispatchEvent("abort")})}})}return e.XMLHttpRequest=u}),n("moxie/runtime/html4/image/Image",["moxie/runtime/html4/Runtime","moxie/runtime/html5/image/Image"],function(e,t){return e.Image=t}),a(["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Dom","moxie/core/EventTarget","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/file/Blob","moxie/core/I18n","moxie/core/utils/Mime","moxie/file/FileInput","moxie/file/File","moxie/file/FileDrop","moxie/file/FileReader","moxie/core/utils/Url","moxie/runtime/RuntimeTarget","moxie/xhr/FormData","moxie/xhr/XMLHttpRequest","moxie/runtime/Transporter","moxie/image/Image","moxie/core/utils/Events","moxie/runtime/html5/image/ResizerCanvas"])}(this)}); +/** + * Plupload - multi-runtime File Uploader + * v2.2.1 + * + * Copyright 2013, Moxiecode Systems AB + * Released under GPL License. + * + * License: http://www.plupload.com/license + * Contributing: http://www.plupload.com/contributing + * + * Date: 2016-11-23 + */ +!function(e,t){var i=function(){var e={};return t.apply(e,arguments),e.plupload};"function"==typeof define&&define.amd?define("plupload",["./moxie"],i):"object"==typeof module&&module.exports?module.exports=i(require("./moxie")):e.plupload=i(e.moxie)}(this||window,function(e){!function(e,t,i){function n(e){function t(e,t,i){var r={chunks:"slice_blob",jpgresize:"send_binary_string",pngresize:"send_binary_string",progress:"report_upload_progress",multi_selection:"select_multiple",dragdrop:"drag_and_drop",drop_element:"drag_and_drop",headers:"send_custom_headers",urlstream_upload:"send_binary_string",canSendBinary:"send_binary",triggerDialog:"summon_file_dialog"};r[e]?n[r[e]]=t:i||(n[e]=t)}var i=e.required_features,n={};return"string"==typeof i?l.each(i.split(/\s*,\s*/),function(e){t(e,!0)}):"object"==typeof i?l.each(i,function(e,i){t(i,e)}):i===!0&&(e.chunk_size>0&&(n.slice_blob=!0),l.isEmptyObj(e.resize)&&e.multipart||(n.send_binary_string=!0),l.each(e,function(e,i){t(i,!!e,!0)})),n}var r=window.setTimeout,s={},a=t.core.utils,o=t.runtime.Runtime,l={VERSION:"2.2.1",STOPPED:1,STARTED:2,QUEUED:1,UPLOADING:2,FAILED:4,DONE:5,GENERIC_ERROR:-100,HTTP_ERROR:-200,IO_ERROR:-300,SECURITY_ERROR:-400,INIT_ERROR:-500,FILE_SIZE_ERROR:-600,FILE_EXTENSION_ERROR:-601,FILE_DUPLICATE_ERROR:-602,IMAGE_FORMAT_ERROR:-700,MEMORY_ERROR:-701,IMAGE_DIMENSIONS_ERROR:-702,mimeTypes:a.Mime.mimes,ua:a.Env,typeOf:a.Basic.typeOf,extend:a.Basic.extend,guid:a.Basic.guid,getAll:function(e){var t,i=[];"array"!==l.typeOf(e)&&(e=[e]);for(var n=e.length;n--;)t=l.get(e[n]),t&&i.push(t);return i.length?i:null},get:a.Dom.get,each:a.Basic.each,getPos:a.Dom.getPos,getSize:a.Dom.getSize,xmlEncode:function(e){var t={"<":"lt",">":"gt","&":"amp",'"':"quot","'":"#39"},i=/[<>&\"\']/g;return e?(""+e).replace(i,function(e){return t[e]?"&"+t[e]+";":e}):e},toArray:a.Basic.toArray,inArray:a.Basic.inArray,inSeries:a.Basic.inSeries,addI18n:t.core.I18n.addI18n,translate:t.core.I18n.translate,sprintf:a.Basic.sprintf,isEmptyObj:a.Basic.isEmptyObj,hasClass:a.Dom.hasClass,addClass:a.Dom.addClass,removeClass:a.Dom.removeClass,getStyle:a.Dom.getStyle,addEvent:a.Events.addEvent,removeEvent:a.Events.removeEvent,removeAllEvents:a.Events.removeAllEvents,cleanName:function(e){var t,i;for(i=[/[\300-\306]/g,"A",/[\340-\346]/g,"a",/\307/g,"C",/\347/g,"c",/[\310-\313]/g,"E",/[\350-\353]/g,"e",/[\314-\317]/g,"I",/[\354-\357]/g,"i",/\321/g,"N",/\361/g,"n",/[\322-\330]/g,"O",/[\362-\370]/g,"o",/[\331-\334]/g,"U",/[\371-\374]/g,"u"],t=0;t0?"&":"?")+i),e},formatSize:function(e){function t(e,t){return Math.round(e*Math.pow(10,t))/Math.pow(10,t)}if(e===i||/\D/.test(e))return l.translate("N/A");var n=Math.pow(1024,4);return e>n?t(e/n,1)+" "+l.translate("tb"):e>(n/=1024)?t(e/n,1)+" "+l.translate("gb"):e>(n/=1024)?t(e/n,1)+" "+l.translate("mb"):e>1024?Math.round(e/1024)+" "+l.translate("kb"):e+" "+l.translate("b")},parseSize:a.Basic.parseSizeStr,predictRuntime:function(e,t){var i,n;return i=new l.Uploader(e),n=o.thatCan(i.getOption().required_features,t||e.runtimes),i.destroy(),n},addFileFilter:function(e,t){s[e]=t}};l.addFileFilter("mime_types",function(e,t,i){e.length&&!e.regexp.test(t.name)?(this.trigger("Error",{code:l.FILE_EXTENSION_ERROR,message:l.translate("File extension error."),file:t}),i(!1)):i(!0)}),l.addFileFilter("max_file_size",function(e,t,i){var n;e=l.parseSize(e),t.size!==n&&e&&t.size>e?(this.trigger("Error",{code:l.FILE_SIZE_ERROR,message:l.translate("File size error."),file:t}),i(!1)):i(!0)}),l.addFileFilter("prevent_duplicates",function(e,t,i){if(e)for(var n=this.files.length;n--;)if(t.name===this.files[n].name&&t.size===this.files[n].size)return this.trigger("Error",{code:l.FILE_DUPLICATE_ERROR,message:l.translate("Duplicate file error."),file:t}),i(!1),void 0;i(!0)}),l.Uploader=function(e){function a(){var e,t,i=0;if(this.state==l.STARTED){for(t=0;t0?Math.ceil(100*(e.loaded/e.size)):100,d()}function d(){var e,t;for(w.reset(),e=0;e0?Math.ceil(100*(w.uploaded/T.length)):0:(w.bytesPerSec=Math.ceil(w.loaded/((+new Date-S||1)/1e3)),w.percent=w.size>0?Math.ceil(100*(w.loaded/w.size)):0)}function c(){var e=A[0]||P[0];return e?e.getRuntime().uid:!1}function f(e,t){if(e.ruid){var i=o.getInfo(e.ruid);if(i)return i.can(t)}return!1}function p(){this.bind("FilesAdded FilesRemoved",function(e){e.trigger("QueueChanged"),e.refresh()}),this.bind("CancelUpload",y),this.bind("BeforeUpload",m),this.bind("UploadFile",E),this.bind("UploadProgress",v),this.bind("StateChanged",b),this.bind("QueueChanged",d),this.bind("Error",z),this.bind("FileUploaded",R),this.bind("Destroy",O)}function g(e,i){var n=this,r=0,s=[],a={runtime_order:e.runtimes,required_caps:e.required_features,preferred_caps:F,swf_url:e.flash_swf_url,xap_url:e.silverlight_xap_url};l.each(e.runtimes.split(/\s*,\s*/),function(t){e[t]&&(a[t]=e[t])}),e.browse_button&&l.each(e.browse_button,function(i){s.push(function(s){var u=new t.file.FileInput(l.extend({},a,{accept:e.filters.mime_types,name:e.file_data_name,multiple:e.multi_selection,container:e.container,browse_button:i}));u.onready=function(){var e=o.getInfo(this.ruid);l.extend(n.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),multi_selection:e.can("select_multiple")}),r++,A.push(this),s()},u.onchange=function(){n.addFile(this.files)},u.bind("mouseenter mouseleave mousedown mouseup",function(t){U||(e.browse_button_hover&&("mouseenter"===t.type?l.addClass(i,e.browse_button_hover):"mouseleave"===t.type&&l.removeClass(i,e.browse_button_hover)),e.browse_button_active&&("mousedown"===t.type?l.addClass(i,e.browse_button_active):"mouseup"===t.type&&l.removeClass(i,e.browse_button_active)))}),u.bind("mousedown",function(){n.trigger("Browse")}),u.bind("error runtimeerror",function(){u=null,s()}),u.init()})}),e.drop_element&&l.each(e.drop_element,function(e){s.push(function(i){var s=new t.file.FileDrop(l.extend({},a,{drop_zone:e}));s.onready=function(){var e=o.getInfo(this.ruid);l.extend(n.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),dragdrop:e.can("drag_and_drop")}),r++,P.push(this),i()},s.ondrop=function(){n.addFile(this.files)},s.bind("error runtimeerror",function(){s=null,i()}),s.init()})}),l.inSeries(s,function(){"function"==typeof i&&i(r)})}function h(e,n,r){var s=new t.image.Image;try{s.onload=function(){return n.width>this.width&&n.height>this.height&&n.quality===i&&n.preserve_headers&&!n.crop?(this.destroy(),r(e)):(s.downsize(n.width,n.height,n.crop,n.preserve_headers),void 0)},s.onresize=function(){r(this.getAsBlob(e.type,n.quality)),this.destroy()},s.onerror=function(){r(e)},s.load(e)}catch(a){r(e)}}function _(e,i,r){function s(e,i,n){var r=I[e];switch(e){case"max_file_size":"max_file_size"===e&&(I.max_file_size=I.filters.max_file_size=i);break;case"chunk_size":(i=l.parseSize(i))&&(I[e]=i,I.send_file_name=!0);break;case"multipart":I[e]=i,i||(I.send_file_name=!0);break;case"unique_names":I[e]=i,i&&(I.send_file_name=!0);break;case"filters":"array"===l.typeOf(i)&&(i={mime_types:i}),n?l.extend(I.filters,i):I.filters=i,i.mime_types&&("string"===l.typeOf(i.mime_types)&&(i.mime_types=t.core.utils.Mime.mimes2extList(i.mime_types)),i.mime_types.regexp=function(e){var t=[];return l.each(e,function(e){l.each(e.extensions.split(/,/),function(e){/^\s*\*\s*$/.test(e)?t.push("\\.*"):t.push("\\."+e.replace(new RegExp("["+"/^$.*+?|()[]{}\\".replace(/./g,"\\$&")+"]","g"),"\\$&"))})}),new RegExp("("+t.join("|")+")$","i")}(i.mime_types),I.filters.mime_types=i.mime_types);break;case"resize":I.resize=i?l.extend({preserve_headers:!0,crop:!1},i):!1;break;case"prevent_duplicates":I.prevent_duplicates=I.filters.prevent_duplicates=!!i;break;case"container":case"browse_button":case"drop_element":i="container"===e?l.get(i):l.getAll(i);case"runtimes":case"multi_selection":case"flash_swf_url":case"silverlight_xap_url":I[e]=i,n||(u=!0);break;default:I[e]=i}n||a.trigger("OptionChanged",e,i,r)}var a=this,u=!1;"object"==typeof e?l.each(e,function(e,t){s(t,e,r)}):s(e,i,r),r?(I.required_features=n(l.extend({},I)),F=n(l.extend({},I,{required_features:!0}))):u&&(a.trigger("Destroy"),g.call(a,I,function(e){e?(a.runtime=o.getInfo(c()).type,a.trigger("Init",{runtime:a.runtime}),a.trigger("PostInit")):a.trigger("Error",{code:l.INIT_ERROR,message:l.translate("Init error.")})}))}function m(e,t){if(e.settings.unique_names){var i=t.name.match(/\.([^.]+)$/),n="part";i&&(n=i[1]),t.target_name=t.id+"."+n}}function E(e,i){function n(){d-->0?r(s,1e3):(i.loaded=p,e.trigger("Error",{code:l.HTTP_ERROR,message:l.translate("HTTP Error."),file:i,response:D.responseText,status:D.status,responseHeaders:D.getAllResponseHeaders()}))}function s(){var f,g,h,_={};i.status===l.UPLOADING&&e.state!==l.STOPPED&&(e.settings.send_file_name&&(_.name=i.target_name||i.name),u&&c.chunks&&a.size>u?(h=Math.min(u,a.size-p),f=a.slice(p,p+h)):(h=a.size,f=a),u&&c.chunks&&(e.settings.send_chunk_number?(_.chunk=Math.ceil(p/u),_.chunks=Math.ceil(a.size/u)):(_.offset=p,_.total=a.size)),D=new t.xhr.XMLHttpRequest,D.upload&&(D.upload.onprogress=function(t){i.loaded=Math.min(i.size,p+t.loaded),e.trigger("UploadProgress",i)}),D.onload=function(){return D.status>=400?(n(),void 0):(d=e.settings.max_retries,h=a.size?(i.size!=i.origSize&&(a.destroy(),a=null),e.trigger("UploadProgress",i),i.status=l.DONE,e.trigger("FileUploaded",i,{response:D.responseText,status:D.status,responseHeaders:D.getAllResponseHeaders()})):r(s,1),void 0)},D.onerror=function(){n()},D.onloadend=function(){this.destroy(),D=null},e.settings.multipart&&c.multipart?(D.open("post",o,!0),l.each(e.settings.headers,function(e,t){D.setRequestHeader(t,e)}),g=new t.xhr.FormData,l.each(l.extend(_,e.settings.multipart_params),function(e,t){g.append(t,e)}),g.append(e.settings.file_data_name,f),D.send(g,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:F,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url})):(o=l.buildUrl(e.settings.url,l.extend(_,e.settings.multipart_params)),D.open("post",o,!0),l.each(e.settings.headers,function(e,t){D.setRequestHeader(t,e)}),D.hasRequestHeader("Content-Type")||D.setRequestHeader("Content-Type","application/octet-stream"),D.send(f,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:F,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url})))}var a,o=e.settings.url,u=e.settings.chunk_size,d=e.settings.max_retries,c=e.features,p=0;i.loaded&&(p=i.loaded=u?u*Math.floor(i.loaded/u):0),a=i.getSource(),!l.isEmptyObj(e.settings.resize)&&f(a,"send_binary_string")&&-1!==l.inArray(a.type,["image/jpeg","image/png"])?h.call(this,a,e.settings.resize,function(e){a=e,i.size=e.size,s()}):s()}function v(e,t){u(t)}function b(e){if(e.state==l.STARTED)S=+new Date;else if(e.state==l.STOPPED)for(var t=e.files.length-1;t>=0;t--)e.files[t].status==l.UPLOADING&&(e.files[t].status=l.QUEUED,d())}function y(){D&&D.abort()}function R(e){d(),r(function(){a.call(e)},1)}function z(e,t){t.code===l.INIT_ERROR?e.destroy():t.code===l.HTTP_ERROR&&(t.file.status=l.FAILED,u(t.file),e.state==l.STARTED&&(e.trigger("CancelUpload"),r(function(){a.call(e)},1)))}function O(e){e.stop(),l.each(T,function(e){e.destroy()}),T=[],A.length&&(l.each(A,function(e){e.destroy()}),A=[]),P.length&&(l.each(P,function(e){e.destroy()}),P=[]),F={},U=!1,S=D=null,w.reset()}var I,S,w,D,x=l.guid(),T=[],F={},A=[],P=[],U=!1;I={runtimes:o.order,max_retries:0,chunk_size:0,multipart:!0,multi_selection:!0,file_data_name:"file",flash_swf_url:"js/Moxie.swf",silverlight_xap_url:"js/Moxie.xap",filters:{mime_types:[],prevent_duplicates:!1,max_file_size:0},resize:!1,send_file_name:!0,send_chunk_number:!0},_.call(this,e,null,!0),w=new l.QueueProgress,l.extend(this,{id:x,uid:x,state:l.STOPPED,features:{},runtime:null,files:T,settings:I,total:w,init:function(){var e,t,i=this;return e=i.getOption("preinit"),"function"==typeof e?e(i):l.each(e,function(e,t){i.bind(t,e)}),p.call(i),l.each(["container","browse_button","drop_element"],function(e){return null===i.getOption(e)?(t={code:l.INIT_ERROR,message:l.sprintf(l.translate("%s specified, but cannot be found."),e)},!1):void 0}),t?i.trigger("Error",t):I.browse_button||I.drop_element?(g.call(i,I,function(e){var t=i.getOption("init");"function"==typeof t?t(i):l.each(t,function(e,t){i.bind(t,e)}),e?(i.runtime=o.getInfo(c()).type,i.trigger("Init",{runtime:i.runtime}),i.trigger("PostInit")):i.trigger("Error",{code:l.INIT_ERROR,message:l.translate("Init error.")})}),void 0):i.trigger("Error",{code:l.INIT_ERROR,message:l.translate("You must specify either browse_button or drop_element.")})},setOption:function(e,t){_.call(this,e,t,!this.runtime)},getOption:function(e){return e?I[e]:I},refresh:function(){A.length&&l.each(A,function(e){e.trigger("Refresh")}),this.trigger("Refresh")},start:function(){this.state!=l.STARTED&&(this.state=l.STARTED,this.trigger("StateChanged"),a.call(this))},stop:function(){this.state!=l.STOPPED&&(this.state=l.STOPPED,this.trigger("StateChanged"),this.trigger("CancelUpload"))},disableBrowse:function(){U=arguments[0]!==i?arguments[0]:!0,A.length&&l.each(A,function(e){e.disable(U)}),this.trigger("DisableBrowse",U)},getFile:function(e){var t;for(t=T.length-1;t>=0;t--)if(T[t].id===e)return T[t]},addFile:function(e,i){function n(e,t){var i=[];l.each(u.settings.filters,function(t,n){s[n]&&i.push(function(i){s[n].call(u,t,e,function(e){i(!e)})})}),l.inSeries(i,t)}function a(e){var s=l.typeOf(e);if(e instanceof t.file.File){if(!e.ruid&&!e.isDetached()){if(!o)return!1;e.ruid=o,e.connectRuntime(o)}a(new l.File(e))}else e instanceof t.file.Blob?(a(e.getSource()),e.destroy()):e instanceof l.File?(i&&(e.name=i),d.push(function(t){n(e,function(i){i||(T.push(e),f.push(e),u.trigger("FileFiltered",e)),r(t,1)})})):-1!==l.inArray(s,["file","blob"])?a(new t.file.File(null,e)):"node"===s&&"filelist"===l.typeOf(e.files)?l.each(e.files,a):"array"===s&&(i=null,l.each(e,a))}var o,u=this,d=[],f=[];o=c(),a(e),d.length&&l.inSeries(d,function(){f.length&&u.trigger("FilesAdded",f)})},removeFile:function(e){for(var t="string"==typeof e?e:e.id,i=T.length-1;i>=0;i--)if(T[i].id===t)return this.splice(i,1)[0]},splice:function(e,t){var n=T.splice(e===i?0:e,t===i?T.length:t),r=!1;return this.state==l.STARTED&&(l.each(n,function(e){return e.status===l.UPLOADING?(r=!0,!1):void 0}),r&&this.stop()),this.trigger("FilesRemoved",n),l.each(n,function(e){e.destroy()}),r&&this.start(),n},dispatchEvent:function(e){var t,i;if(e=e.toLowerCase(),t=this.hasEventListener(e)){t.sort(function(e,t){return t.priority-e.priority}),i=[].slice.call(arguments),i.shift(),i.unshift(this);for(var n=0;n.file-list', '#myFileList', '
            ' + // fileTemplate: '', + // fileFormater: null, + // fileIconCreator: null, + // staticFiles: null, + rename: true, + // renameExtension: false, + renameByClick: true, + // autoUpload: false, + // browseByClickList: false, + dropPlaceholder: true, + // messageCreator: null, // NOT SUPPORT + previewImageIcon: true, + sendFileName: true, + sendFileId: true, + responseHandler: true, + // limitFilesCount: false, + // deleteConfirm: false, + // removeUploaded: false, + // statusCreator: null, // Function + // previewImageSize: {width: 200, height: 200}, + uploadedMessage: true, + // deleteActionOnDone: false, // false, true or function + // renameActionOnDone: false, // false, true or function + + // plupload options + drop_element: 'self', // 'self', 'fileList', String or jQuery object, + browse_button: 'hidden', // String or jQuery object + // url: '', // String + filters: {prevent_duplicates: true}, // {mime_types, max_file_size, prevent_duplicates} + // headers: null, // Object + // multipart: true, // true, false + // multipart_params: null, // Object + chunk_size: '1mb', // Number, String + max_retries: 3, + // resize: {}, // {width, height, crop, quality, preserve_headers}, + // multi_selection: true, // true, false, + // required_features: null, // String + // unique_names: false, // true, false + // runtimes: 'html5,flash,silverlight,html4', // String + // file_data_name: 'file', // String + flash_swf_url: 'lib/uploader/Moxie.swf', // String + silverlight_xap_url: 'lib/uploader/Moxie.xap' // String + }; + + var STATUS = { + QUEUED : Plupload.QUEUED, + UPLOADING : Plupload.UPLOADING, + FAILED : Plupload.FAILED, + DONE : Plupload.DONE, + STOPPED : Plupload.STOPPED, + STARTED : Plupload.STARTED + }; + STATUS[Plupload.QUEUED] = 'queue'; + STATUS[Plupload.UPLOADING] = 'uploading'; + STATUS[Plupload.FAILED] = 'failed'; + STATUS[Plupload.DONE] = 'done'; + + var ERRORS = { + GENERIC_ERROR : Plupload.GENERIC_ERROR, + HTTP_ERROR : Plupload.HTTP_ERROR, + IO_ERROR : Plupload.IO_ERROR, + SECURITY_ERROR : Plupload.SECURITY_ERROR, + INIT_ERROR : Plupload.INIT_ERROR, + FILE_SIZE_ERROR : Plupload.FILE_SIZE_ERROR, + FILE_EXTENSION_ERROR : Plupload.FILE_EXTENSION_ERROR, + FILE_DUPLICATE_ERROR : Plupload.FILE_DUPLICATE_ERROR, + IMAGE_FORMAT_ERROR : Plupload.IMAGE_FORMAT_ERROR, + IMAGE_MEMORY_ERROR : Plupload.IMAGE_MEMORY_ERROR, + IMAGE_DIMENSIONS_ERROR: Plupload.IMAGE_DIMENSIONS_ERROR + }; + + // The uploader modal class + var Uploader = function(element, options) { + var that = this; + that.name = NAME; + that.$ = $(element).addClass('uploader'); + options = that.getOptions(options); + + // Init lang + var lang = $.isPlainObject(options.lang) ? ($.extend(true, {}, Uploader.LANG[lang.lang || $.zui.clientLang()], options.lang)) : Uploader.LANG[options.lang]; + that.lang = lang; + + // Init file list element + var $this = that.$; + var fileList = options.fileList; + var $list; + if(!fileList || fileList == 'large' || fileList == 'grid') { + $list = $this.find('.file-list,.uploader-files'); + } else if(fileList.indexOf('>') === 0) $list = $this.find(fileList.substr(1)); + else $list = $(fileList); + if(!$list || !$list.length) $list = $('
            '); + if(!$list.parent().length) $this.append($list); + if(fileList == 'large') $list.addClass('file-list-lg'); + else if(fileList == 'grid') $list.addClass('file-list-grid'); + $list.children('.file').addClass('file-static'); + that.$list = $list; + + if(options.browseByClickList || $list.hasClass('uploader-btn-browse')) { + $list.addClass('uploader-btn-browse').on('click', '.file-wrapper > .actions,.file-renaming .file-name', function(e) { + e.stopPropagation(); + }); + } + + // Init file template + var template = options.fileTemplate; + if(!template) { + var $template = $list.find('.template'); + if($template.length) { + template = $template.first().clone().removeClass('template'); + $template.remove(); + } + if(!template) template = FILE_TEMPLATE; + } + if(typeof template === 'string') { + template = $(template); + if(template.parent()) template = template.clone().removeClass('template'); + } + that.template = template; + + // Init browse button element + var browseBtn = options.browse_button; + var $btn = null; + if(browseBtn) { + if(browseBtn.indexOf('>') === 0) $btn = $this.find(browseBtn.substr(1)); + else if(browseBtn !== 'hidden') $btn = $(browseBtn); + } + if(!$btn || !$btn.length) { + $btn = $('
            ').appendTo($this); + } + that.$button = $btn.first(); + + // Init drop element + var dropElement = options.drop_element; + var $dropElement = (dropElement == 'fileList' ? that.$list : (dropElement == 'self' ? that.$ : $(dropElement))).first().addClass('file-drag-area'); + if (!notSupportDnd) { + var dropPlaceholder = options.dropPlaceholder; + if(dropPlaceholder === true) dropPlaceholder = lang.dropPlaceholder; + if(dropPlaceholder) $dropElement.attr('data-drop-placeholder', dropPlaceholder); + } else { + $dropElement.attr('data-drop-placeholder', ''); + } + that.$dropElement = $dropElement; + + // Init message + that.$message = $this.find('.uploader-message').on('click', '.close', function() { + that.hideMessage(); + }); + that.$status = $this.find('.uploader-status'); + + // Init actions + $this.toggleClass('uploader-rename', !!options.rename); + + // Init plupload + that.initPlupload(); + + // Bind events + $this.on('click.' + NAME, '.uploader-btn-start', function(e) { + that.start(); + }).on('click.' + NAME, '.uploader-btn-browse', function(e) { + if($(this).is(that.$button)) return; + that.$button.trigger('click'); + }).on('click.' + NAME, '.uploader-btn-stop', function(e) { + that.stop(); + }); + + $('body').on('dragleave.' + NAME + ' drop.' + NAME, function(e) { + $this.removeClass('file-dragable'); + + // Below two lines for firefox, open a new tab after drop file + e.preventDefault(); + e.stopPropagation(); + }).on('dragover.' + NAME + ' dragenter.' + NAME, function(e) { + $this.addClass('file-dragable'); + }); + $dropElement.on('dragleave.' + NAME + ' drop.' + NAME, function(e) { + $this.removeClass('file-drag-enter'); + }).on('dragover.' + NAME + ' dragenter.' + NAME, function(e) { + $this.addClass('file-drag-enter'); + }); + + $list.on('click.' + NAME, '.btn-delete-file', function() { + var $file = $(this).closest('.file'); + var file = $file.data('file'); + var deleteActionOnDoneOption = options.deleteActionOnDone; + var doneActionAble = file.status === Plupload.DONE && $.isFunction(deleteActionOnDoneOption); + if(file.status === Plupload.QUEUED || file.status === Plupload.FAILED || doneActionAble) { + var doRemoveFile = function() { + that.removeFile(file); + }; + var removeFile = function() { + if(doneActionAble) { + var result = deleteActionOnDoneOption.call(that, file, doRemoveFile); + if(result === true) { + doRemoveFile(); + } + } else { + doRemoveFile(); + } + }; + var deleteConfirmOption = options.deleteConfirm; + if(deleteConfirmOption) { + var confirmMessage = $.isFunction(deleteConfirmOption) ? deleteConfirmOption(file) : (deleteConfirmOption === true ? lang.deleteConfirm : deleteConfirmOption); + confirmMessage = confirmMessage.format(file); + if(window.bootbox) { + window.bootbox.confirm(confirmMessage, function(result) { + if(result) removeFile(); + }); + } else { + if(window.confirm(confirmMessage)) removeFile(); + } + } else { + removeFile(); + } + } + }).on('click.' + NAME, '.btn-reset-file', function() { + var $file = $(this).closest('.file'); + var file = that.plupload.getFile($file.data('id')) || $file.data('file'); + if(file.status === Plupload.FAILED) { + file.status = Plupload.QUEUED; + that.showFile(file); + if(options.autoUpload) that.start(); + } + }); + if(options.rename) { + $list.toggleClass('file-rename-by-click', !!options.renameByClick) + .toggleClass('file-show-rename-action-on-done', !!options.renameActionOnDone); + $list.on('click.' + NAME, '.btn-rename-file' + (options.renameByClick ? ',.file-name' : ''), function() { + var $file = $(this).closest('.file'); + if($file.hasClass('file-renaming')) return; + var file = that.plupload.getFile($file.data('id')) || $file.data('file'); + var renameActionOnDoneOption = options.renameActionOnDone; + var renameActionAble = file.status === Plupload.DONE && $.isFunction(renameActionOnDoneOption); + if(renameActionAble || file.status === Plupload.QUEUED) { + var $filename = $file.find('.file-name').first(); + $file.addClass('file-renaming'); + that.showFile(file); + if(!options.renameExtension && file.ext) { + $filename.text(file.name.substr(0, file.name.length - file.ext.length - 1)); + } + $filename.attr('contenteditable', 'true').one('blur', function() { + var filename = $.trim($filename.text()); + var renameFile = function() { + if(filename !== undefined && filename !== null && filename !== '') { + var ext = file.ext; + if(ext.length && !options.renameExtension && filename.lastIndexOf('.' + ext) !== (filename.length - ext.length - 1)) { + filename += '.' + ext; + } + file.name = filename; + } + that.showFile(file); + }; + if(renameActionAble) { + var result = renameActionOnDoneOption.call(that, file, filename, renameFile); + if(result === true) { + renameFile(); + } else if(result === false) { + that.showFile(file); + } + } else { + renameFile(); + } + $file.removeClass('file-renaming'); + $filename.off('keydown.' + NAME).attr('contenteditable', null); + }).on('keydown.' + NAME, function(e) { + if(e.keyCode === 13) { + $filename.blur(); + e.preventDefault(); + } + }).focus(); + } + }); + } + + $list.toggleClass('file-show-delete-action-on-done', !!options.deleteActionOnDone); + + // Init static files + that.staticFilesSize = 0; + that.staticFilesCount = 0; + if(options.staticFiles) { + $.each(options.staticFiles, function(idx, file) { + file = $.extend({status: Plupload.DONE}, file); + file.static = true; + if(!file.id) file.id = $.zui.uuid(); + that.showFile(file); + if (file.size) { + that.staticFilesSize += file.size; + that.staticFilesCount++; + } + }); + } + + that.callEvent('onInit'); + }; + + // default options + Uploader.DEFAULTS = DEFAULTS; + + Uploader.prototype.showMessage = function(message, type, time) { + var that = this; + var $msg = that.$message; + if(!message) that.hideMessage(); + else clearTimeout(that.lastDismissMessage); + type = type || 'danger'; + if(time === undefined) time = type === 'danger' ? 8 : 5; + if(time < 20) time *= 1000; + var $content = $msg.find('.content'); + if($content.length) $content.empty().append(message); + else $msg.empty().append(message); + $msg.attr('data-type', type).slideDown('fast'); + if(time) { + that.lastDismissMessage = setTimeout(function() { + that.hideMessage(); + }, time); + } + }; + + Uploader.prototype.hideMessage = function() { + clearTimeout(this.lastDismissMessage); + this.$message.slideUp('fast'); + }; + + Uploader.prototype.start = function() { + return this.plupload.start(); + }; + + Uploader.prototype.stop = function() { + return this.plupload.stop(); + }; + + Uploader.prototype.getState = function() { + return this.plupload.state; + }; + + Uploader.prototype.isStarted = function() { + return this.getState() === Plupload.STARTED; + }; + + Uploader.prototype.isStopped = function() { + return this.getState() === Plupload.STOPPED; + }; + + Uploader.prototype.getFiles = function() { + return this.plupload.files; + }; + + Uploader.prototype.getTotal = function() { + return this.plupload.total; + }; + + Uploader.prototype.disableBrowse = function(disable) { + this.$.find('.uploader-btn-browse').attr('disable', disable ? 'disable' : null).toggle('disable', !!disable); + return this.plupload.disableBrowse(); + }; + + Uploader.prototype.getFile = function(id) { + return this.plupload.getFile(id); + }; + + Uploader.prototype.destroy = function() { + var that = this; + var eventNamespace = '.' + NAME; + that.$.off(eventNamespace).data(NAME, null); + that.$list.off(eventNamespace); + that.$dropElement.off(eventNamespace); + $('body').off(eventNamespace); + that.plupload.destroy(); + }; + + // see https://github.com/moxiecode/moxie/wiki/API + Uploader.prototype.previewImageSrc = function(file, callback) { + if(!file || !file.getSource || !/image\//.test(file.type)) return; + var size = $.extend({width: 200, height: 200}, this.options.previewImageSize); + if(file.type == 'image/gif') { + //mOxie.Image only support jpg and png + var fr = new Moxie.file.FileReader(); + fr.onload = function() { + callback(fr.result); + fr.destroy(); + fr = null; + }; + fr.readAsDataURL(file.getSource()); + } else { + var preloader = new Moxie.image.Image(); + preloader.onload = function() { + // compressImage + preloader.downsize(size.width, size.height); + var imgsrc = preloader.type == 'image/jpeg' ? preloader.getAsDataURL('image/jpeg', 80) : preloader.getAsDataURL(); // return base64 data + callback(imgsrc); + preloader.destroy(); + preloader = null; + }; + preloader.load(file.getSource()); + } + }; + + Uploader.prototype.createFileIcon = function(file) { + var fileType = file.type; + var ext = file.ext; + var icon = 'file-o'; + var types = fileType ? fileType.split('/') : null; + var type = (types && types.length) ? types[0] : '', subType = (types && types.length) > 1 ? types[1] : ''; + if(type == 'image') icon = 'file-image'; + else if(ext == 'doc' || ext == 'docx' || ext == 'pages') icon = 'file-word'; + else if(ext == 'ppt' || ext == 'pptx' || ext == 'key') icon = 'file-powerpoint'; + else if(ext == 'xls' || ext == 'xlsx' || ext == 'numbers') icon = 'file-excel'; + else if(ext == 'html' || ext == 'htm') icon = 'globe'; + else if(ext == 'js' || ext == 'php' || ext == 'cs' || ext == 'jsx' || ext == 'css' || ext == 'less' || ext == 'json' || ext == 'java' || ext == 'lua' || ext == 'py' || ext == 'c' || ext == 'cpp' || ext == 'swift' || ext == 'h' || ext == 'sh' || ext == 'rb' || ext == 'yml' || ext == 'ini' || ext == 'sql' || ext == 'xml') icon = 'file-code'; + else if(ext == 'apk') icon = 'android'; + else if(ext == 'exe') icon = 'windows'; + else if(ext == 'pkg' || ext == 'msi' || ext == 'dmg') icon = 'cube'; + else if(ext == 'epub') icon = 'book'; + else if(ext == 'sketch') icon = 'diamond'; + else if(subType == 'zip' || subType == 'x-rar' || subType == 'x-7z-compressed') icon = 'file-archive'; + else if(subType == 'pdf') icon = 'file-pdf'; + else if(type == 'video') icon = 'file-movie'; + else if(type == 'audio') icon = 'file-audio'; + else if(type == 'text') icon = 'file-text-o'; + return ''; + }; + + Uploader.prototype.getFileItem = function(file) { + var that = this; + if(typeof file == 'string') { + file = that.plupload.getFile(file); + } + + if(!file) return null; + + var filename = file.name; + if(filename && file.ext === undefined) { + var ext = filename.lastIndexOf('.'); + if(ext > -1) ext = filename.substr(ext + 1); + else ext = ''; + file.ext = ext; + + if(file.type && /image\//.test(file.type)) { + file.isImage = file.ext; + } + } + + var $file = $('#file-' + file.id); + if(!$file.length) { + if($.isFunction(that.template)) { + $file = $(that.template(file, that)); + } else { + $file = $(that.template).clone(); + $file.find('.btn-rename-file').attr('title', that.lang.rename); + $file.find('.btn-delete-file').attr('title', that.lang.remove); + $file.find('.btn-reset-file').attr('title', that.lang.repeat); + $file.find('.btn-download-file').attr('title', that.lang.download).attr('download', file.name); + } + $file.data('id', file.id) + .toggleClass('file-static', !!file.static) + .attr('id', 'file-' + file.id) + .appendTo(that.$list); + if($.fn.tooltip) $file.find('[data-toggle="tooltip"]').tooltip(); + } + return $file; + }; + + Uploader.prototype.showFile = function(file, responseObject) { + var that = this; + if($.isArray(file)) { + $.each(file, function(idx, f) { + that.showFile(f, responseObject); + }); + return; + } + + if(typeof file == 'string') { + file = that.plupload.getFile(file); + } + + if(!file) return; + + var $file = that.getFileItem(file); + if(!$file || !$file.length) { + return; + } + + var options = that.options; + var status = STATUS[file.status]; + if(options.fileFormater) { + options.fileFormater.call(that, $file, file, status); + } else { + var downloadUrl = (status == 'done' && file.url) ? file.url : null; + $file.find('.file-name').text(file.name); + $file.find('.file-size').text((status == 'uploading' ? (Plupload.formatSize(Math.floor(file.size*file.percent/100)).toUpperCase() + '/') : '') + Plupload.formatSize(file.size).toUpperCase()); + $file.find('.file-icon').html(options.fileIconCreator ? options.fileIconCreator(file.type, file, that) : that.createFileIcon(file)).css('color', 'hsl(' + $.zui.strCode(file.type || file.ext) + ', 70%, 40%)'); + $file.find('.file-progress-bar').css('width', file.percent + '%'); + var $status = $file.find('.file-status').attr('title', that.lang[status]); + $status.find('.text').text(status == 'uploading' ? (file.percent + '%') : ((status == 'failed') ? that.lang[status] : '')); + if($.fn.tooltip) $file.find('[data-toggle="tooltip"]').tooltip('fixTitle'); + $file.find('a.btn-download-file, a.file-name').attr('href', downloadUrl); + } + + if(options.previewImageIcon && file.isImage) { + var setPreviewImage = function() { + $file.find('.file-icon').html('
            '); + }; + if(file.previewImage) { + setPreviewImage(); + } else { + that.previewImageSrc(file, function(src) { + file.previewImage = src; + setPreviewImage(); + }); + } + } + + $file.attr('data-status', status) + .data('file', file); + + // console.log('FILE', file); + }; + + Uploader.prototype.showStatus = function() { + var that = this; + var plupload = that.plupload; + var $status = that.$status; + var state = plupload.state, + total = plupload.total, + statusText = '', + totalCount = plupload.files.length; + if(that.options.statusCreator) { + statusText = that.options.statusCreator(total, state, that); + } else { + var stateObj = { + uploading: Math.max(0, Math.min(totalCount, total.uploaded + 1)), + total: that.staticFilesCount + totalCount, + size: Plupload.formatSize(total.size + that.staticFilesSize).toUpperCase(), + queue: total.queued, + failed: total.failed, + uploaded: total.uploaded, + uploadedSize: Plupload.formatSize(total.loaded).toUpperCase(), + percent: total.percent, + speed: Plupload.formatSize(total.bytesPerSec).toUpperCase() + '/S' + }; + if(state == Plupload.STARTED) { + statusText = that.lang.startedStatusText.format(stateObj); + } else { + if(totalCount < 1) { + statusText = that.lang.initStatusText; + } else { + statusText = that.lang.stoppedStatusText.format(stateObj); + } + } + } + $status.html(statusText); + if(total.uploaded < 1) $status.find('.uploader-status-uploaded').remove(); + if(total.failed < 1) $status.find('.uploader-status-failed').remove(); + if(total.queued < 1) $status.find('.uploader-status-queue').remove(); + if($.fn.tooltip) $status.find('[data-toggle="tooltip"]').tooltip(); + }; + + Uploader.prototype.delayShowStatus = function(delay) { + var that = this; + if(that.delayStatusTask) return; + that.delayStatusTask = true; + if(delay === undefined) delay = 500; + that.delayStatusTask = setTimeout(function() { + that.showStatus(); + that.delayStatusTask = false; + }, delay); + }; + + Uploader.prototype.removeFile = function(file, onlyRemoveElement) { + var that = this; + if(typeof file == 'string') { + file = that.plupload.getFile(file); + } + if(onlyRemoveElement || file.static) { + var $file = $('#file-' + file.id); + if($.fn.tooltip) { + $file.find('[data-toggle="tooltip"]').tooltip('destroy'); + $('.tooltip').remove(); + } + $file.fadeOut(function() { + $(this).remove(); + }); + } else { + that.plupload.removeFile(file); + } + }; + + Uploader.prototype.initPlupload = function() { + var that = this; + var options = that.options; + var plOptions = $.extend({}, options, { + browse_button: that.$button[0], + container: that.$[0], + drop_element: that.$dropElement[0], + multipart_params: null + }); + var eventHandlers = { + FilesAdded: function(uploader, files) { + var limitFilesCount = options.limitFilesCount; + if(limitFilesCount) { + if(limitFilesCount === true) limitFilesCount = 1; + var existCount = that.$list.children('.file').length; + if((existCount + files.length) > limitFilesCount) { + that.showMessage(that.lang.limitFilesCountMessage.format({count: limitFilesCount}), 'warning'); + var newFiles = []; + for(var i = 0; i < files.length; ++i) { + if((existCount + i + 1) <= limitFilesCount) { + newFiles.push(files[i]); + } else { + uploader.removeFile(files[i]); + } + } + if(!newFiles.length) return; + files = newFiles; + } + } + that.showFile(files); + if(options.autoUpload) that.start(); + that.showStatus(); + that.callEvent('onFilesAdded', [files]); + }, + UploadProgress: function(uploader, file) { + that.showFile(file); + that.delayShowStatus(); + that.callEvent('onUploadProgress', file); + }, + FileUploaded: function(uploader, file, responseObject) { + if(responseObject) { + var responseData = typeof responseObject === 'object' ? responseObject.response : responseObject; + try {file.remoteData = $.parseJSON(responseData);} + catch(e) {} + } + if(that.qiniuEnable && file.remoteData) { + file.url = uploader.settings.domain + file.remoteData.key; + } + var responseHandlerOption = options.responseHandler; + if(responseHandlerOption) { + var error = null; + if($.isFunction(responseHandlerOption)) { + error = responseHandlerOption.call(that, responseObject, file); + } else if(responseObject.response) { + var json = file.remoteData; + if($.isPlainObject(json)) { + var result = json.status || json.result; + if(result !== undefined && result !== 'ok' && result !== 'success' && result !== 200) { + error = {message: json.message, data: json}; + } + if(json.id !== undefined) file.remoteId = json.id; + if(json.url !== undefined) file.url = json.url; + if(json.name !== undefined) file.name = json.name; + } + } + if(error) { + error = $.isPlainObject(error) ? error : {message: error}; + file.status = Plupload.FAILED; + if(error.code === undefined) error.code = Plupload.GENERIC_ERROR; + error.file = file; + error.responseObject = responseObject; + uploader.trigger('Error', error); + file.errorMessage = error.message; + return; + } + } + + if(file.status === Plupload.DONE) { + that.lastUploadedCount++; + } + that.showFile(file, responseObject); + that.showStatus(); + that.callEvent('onFileUploaded', [file, responseObject]); + + if(file.status === Plupload.DONE) { + var optionRemoveUploaded = options.removeUploaded; + if(optionRemoveUploaded) { + setTimeout(function() { + $('#file-' + file.id).fadeOut(function() { + $(this).remove(); + }); + }, (typeof optionRemoveUploaded) === 'number' ? optionRemoveUploaded : 2000); + } + } + }, + UploadComplete: function(uploader, files) { + that.showFile(files); + that.showStatus(); + var uploadedMessage = options.uploadedMessage; + if(uploadedMessage) { + var uploadedCount = that.lastUploadedCount; + var failedCount = 0; + var failMessages = []; + $.each(files, function(idx, file) { + if(file.status === Plupload.FAILED) { + failedCount++; + if (file.errorMessage) { + failMessages.push(file.errorMessage); + delete file.errorMessage; + } + } + }); + var msg = failMessages && failMessages.length ? ('

            ' + failMessages.join(',') + '

            ') : '', + msgData = { + uploaded: uploadedCount, + failed: failedCount + }; + if(typeof uploadedMessage === 'string') { + msg += uploadedMessage.format(msgData); + } else if($.isFunction(uploadedMessage)) { + msg += uploadedMessage(msgData); + } else { + msg += that.lang[failedCount > 0 ? 'uploadHasFailedMessage' : (uploadedCount > 0 ? 'uploadSuccessMessage' : 'uploadEmptyMessage')].format(msgData); + } + that.showMessage(msg, failedCount > 0 ? 'danger' : (uploadedCount > 0 ? 'success' : 'warning'), 3); + } + that.callEvent('onUploadComplete', [files]); + }, + FilesRemoved: function(uploader, files) { + $.each(files, function(idx, file) { + that.removeFile(file, true); + }); + that.showStatus(); + that.callEvent('onFilesRemoved', files); + }, + ChunkUploaded: function(uploader, file, responseObject) { + that.callEvent('onChunkUploaded', [file, responseObject]); + }, + UploadFile: function(uploader, file) { + that.showStatus(); + that.callEvent('onUploadFile', file); + }, + BeforeUpload: function(uploader, file) { + var oldParams = uploader.getOption('multipart_params'); + var multipartParamsOption = options.multipart_params; + var params = {}; + if (oldParams && oldParams.key) { + params.key = oldParams.key; + } + if (oldParams && oldParams.token) { + params.token = oldParams.token; + } + if(options.sendFileName) params[options.sendFileName === true ? 'name' : options.sendFileName] = file.name; + if(options.sendFileId) params[options.sendFileId === true ? 'uuid' : options.sendFileId] = file.id; + params = $.extend(params, $.isFunction(multipartParamsOption) ? multipartParamsOption(file, params) : multipartParamsOption); + uploader.setOption('multipart_params', params); + that.callEvent('onBeforeUpload', file); + }, + Refresh: function(uploader) { + that.showStatus(); + that.callEvent('onRefresh'); + }, + StateChanged: function(uploader) { + if(uploader.state === Plupload.STARTED) { + that.lastUploadedCount = 0; + } + that.$.toggleClass('uploader-started', Plupload.STARTED === uploader.state); + that.hideMessage(); + that.showStatus(); + that.callEvent('onStateChanged', uploader.state); + }, + QueueChanged: function(uploader) { + that.showStatus(); + that.callEvent('onQueueChanged'); + }, + Error: function(uploader, error) { + var type = 'danger'; + if(error.code === Plupload.FILE_SIZE_ERROR || error.code === Plupload.FILE_SIZE_ERROR || error.code === Plupload.FILE_EXTENSION_ERROR || error.code === Plupload.FILE_DUPLICATE_ERROR || error.code === Plupload.MAGE_FORMAT_ERROR) type = 'warning'; + that.showMessage(error.message, type); + that.callEvent('onError', error); + } + }; + + Plupload.addI18n(that.lang.i18n); + + that.qiniuEnable = $.isPlainObject(options.qiniu) && window.Qiniu; + if(that.qiniuEnable) { + var qiniuOptions = options.qiniu; + var qiniuKeyFunc = qiniuOptions.key; + delete plOptions.qiniu; + if(qiniuKeyFunc) { + delete qiniuOptions.key; + if($.isFunction(qiniuKeyFunc)) { + eventHandlers.Key = qiniuKeyFunc; + } + } else { + eventHandlers.Key = function(uploader, file) { + return file.name; + }; + } + qiniuOptions.init = eventHandlers; + plOptions = $.extend(plOptions, qiniuOptions); + var qiniuSKD = new QiniuJsSDK(); + var plupload = qiniuSKD.uploader(plOptions); + that.plupload = plupload; + } else { + var plupload = new Plupload.Uploader(plOptions); + plupload.init(); + that.plOptions = plOptions; + that.plupload = plupload; + $.each(eventHandlers, function(eventName, eventHandler) { + plupload.bind(eventName, eventHandler); + }); + } + }; + + // Get and init options + Uploader.prototype.getOptions = function(options) { + this.options = $.extend({ + lang: $.zui.clientLang() + }, DEFAULTS, this.$.data(), options); + return this.options; + }; + + // Call event helper + Uploader.prototype.callEvent = function(name, params) { + var that = this; + if(!$.isArray(params)) params = [params]; + that.$.trigger(name, params); + if($.isFunction(that.options[name])) { + return that.options[name].apply(that, params); + } + }; + + // Extense jquery element + $.fn.uploader = function(option, params) { + return this.each(function() { + var $this = $(this); + var data = $this.data(NAME); + var options = typeof option == 'object' && option; + + if(!data) $this.data(NAME, (data = new Uploader(this, options))); + + if(typeof option == 'string') data[option](params); + }); + }; + + Uploader.NAME = NAME; + Uploader.STATUS = STATUS; + Uploader.ERRORS = ERRORS; + Uploader.NAME = NAME; + Uploader.LANG = { + zh_cn: {"limitFilesCountMessage": "所有文件数目不能超过 {count} 个,如果要上传此文件请先从列表移除文件。", "uploadEmptyMessage": "没有文件等待上传。", "uploadSuccessMessage": "已上传 {uploaded} 个文件。", "uploadHasFailedMessage": "已上传 {uploaded} 个文件,{failed} 个文件上传失败。", "startedStatusText": "正在上传第 {uploading} 个文件,共 {total} 个文件,已上传 {uploaded} 个文件,{failed} 个上传失败,进度 {percent}%,平均速度 {speed}。", "initStatusText": "添加文件或拖放文件来上传。", "stoppedStatusText": "共 {total} 个文件{queue} 个文件等待上传,已上传 {uploaded} 个文件{failed} 个上传失败,平均速度 {speed}。", "deleteConfirm": "确定移除文件【{name}】?", "download": "下载", "rename": "重命名", "repeat": "重新上传", "remove": "移除", "dropPlaceholder": "将文件拖放至在此处。", "queue": "待上传", "uploading": "正在上传", "failed": "失败", "done": "已上传", "i18n": {"Stop Upload":"停止上传","Upload URL might be wrong or doesn't exist.":"上传的URL可能是错误的或不存在。","tb":"tb","Size":"大小","Close":"关闭","You must specify either browse_button or drop_element.":"您必须指定 browse_button 或者 drop_element。","Init error.":"初始化错误。","Add files to the upload queue and click the start button.":"将文件添加到上传队列,然后点击”开始上传“按钮。","List":"列表","Filename":"文件名","%s specified, but cannot be found.":"%s 已指定,但是没有找到。","Image format either wrong or not supported.":"图片格式错误或者不支持。","Status":"状态","HTTP Error.":"HTTP 错误。","Start Upload":"开始上传","Error: File too large:":"错误: 文件太大:","kb":"kb","Duplicate file error.":"无法添加重复文件。","File size error.":"文件大小错误。","N/A":"N/A","gb":"gb","Error: Invalid file extension:":"错误:无效的文件扩展名:","Select files":"选择文件","%s already present in the queue.":"%s 已经在当前队列里。","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"超限。%s 支持最大 %wx%hpx 的图片。","File: %s":"文件: %s","b":"b","Uploaded %d/%d files":"已上传 %d/%d 个文件","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"每次只接受同时上传 %d 个文件,多余的文件将会被删除。","%d files queued":"%d 个文件加入到队列","File: %s, size: %d, max file size: %d":"文件: %s, 大小: %d, 最大文件大小: %d","Thumbnails":"缩略图","Drag files here.":"把文件拖到这里。","Runtime ran out of available memory.":"运行时已消耗所有可用内存。","File count error.":"文件数量错误。","File extension error.":"文件扩展名错误。","mb":"mb","Add Files":"增加文件"}}, + zh_tw: {"limitFilesCountMessage": "所有文件數目不能超過 {count} 個。","uploadEmptyMessage": "没有文件等待上傳。", "uploadSuccessMessage": "已上傳 {uploaded} 个文件。", "uploadHasFailedMessage": "文件上傳完成,已上傳 {uploaded} 個文件,{failed} 個文件上傳失败。", "startedStatusText": "正在上傳第{uploading} 個文件,共{total} 個文件,已上傳{uploaded} 個文件,{failed} 個上傳失敗,進度{percent}%,平均速度{speed}。", "initStatusText": "添加文件或拖放文件來上傳。", "stoppedStatusText": "共{total} 個文件{queue} 個文件等待上傳,已上傳{uploaded} 個文件{failed} 個上傳失敗,平均速度{speed}< /strong>。", "deleteConfirm": "確定移除文件【{name}】?", "download": "下载", "rename": "重命名", "repeat": "重新上傳", "remove": "移除", "dropPlaceholder": "將文件拖放至在此處。", "queue": "待上傳", "uploading": "正在上傳", "failed": "失敗", "done": "已上傳", "i18n": {"Stop Upload":"停止上傳","Upload URL might be wrong or doesn't exist.":"檔案URL可能有誤或者不存在。","tb":"tb","Size":"大小","Close":"關閉","You must specify either browse_button or drop_element.":"您必須指定 browse_button 或 drop_element。","Init error.":"初始化錯誤。","Add files to the upload queue and click the start button.":"將檔案加入上傳序列,然後點選”開始上傳“按鈕。","List":"清單","Filename":"檔案名稱","%s specified, but cannot be found.":"找不到已選擇的 %s。","Image format either wrong or not supported.":"圖片格式錯誤或者不支援。","Status":"狀態","HTTP Error.":"HTTP 錯誤。","Start Upload":"開始上傳","Error: File too large:":"錯誤: 檔案大小太大:","kb":"kb","Duplicate file error.":"錯誤:檔案重複。","File size error.":"錯誤:檔案大小超過限制。","N/A":"N/A","gb":"gb","Error: Invalid file extension:":"錯誤:不接受的檔案格式:","Select files":"選擇檔案","%s already present in the queue.":"%s 已經存在目前的檔案序列。","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"圖片解析度超出範圍! %s 最高只支援到 %wx%hpx。","File: %s":"檔案: %s","b":"b","Uploaded %d/%d files":"已上傳 %d/%d 個文件","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"每次只能上傳 %d 個檔案,超過限制數量的檔案將被忽略。","%d files queued":"%d 個檔案加入到序列","File: %s, size: %d, max file size: %d":"檔案: %s, 大小: %d, 檔案大小上限: %d","Thumbnails":"縮圖","Drag files here.":"把檔案拖曳到這裡。","Runtime ran out of available memory.":"執行時耗盡了所有可用的記憶體。","File count error.":"檔案數量錯誤。","File extension error.":"檔案副檔名錯誤。","mb":"mb","Add Files":"增加檔案"}}, + en: {"limitFilesCountMessage": "All files count can not over {count}.","uploadEmptyMessage": "No file in queue to upload", "uploadSuccessMessage": "Uploaded {uploaded} files。", "uploadHasFailedMessage": "Uploaded complete, {uploaded} success, {failed} failed.", "startedStatusText": "Uploading NO.{uploading} file, total {total} files, Uploaded {uploaded} files, {failed} failed, progress {percent}%, average spped {speed}。", "initStatusText": "Append or drag file here.", "stoppedStatusText": "Total {total} files, {queue} files in queue, uploaded {uploaded} files, {failed} failed, average spped {speed}。", "deleteConfirm": "Remove file \"{name}\" form upload queue?", "rename": "Rename", "download": "Download", "repeat": "Repeat", "remove": "Remove", "dropPlaceholder": "Drop file here.", "queue": "Wait", "uploading": "Uploading", "failed": "Failed", "done": "Done", "i18n": {"Stop Upload":"Stop Upload","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.","tb":"tb","Size":"Size","Close":"Close","You must specify either browse_button or drop_element.":"You must specify either browse_button or drop_element.","Init error.":"Init error.","Add files to the upload queue and click the start button.":"Add files to the upload queue and click the start button.","List":"List","Filename":"Filename","%s specified, but cannot be found.":"%s specified, but cannot be found.","Image format either wrong or not supported.":"Image format either wrong or not supported.","Status":"Status","HTTP Error.":"HTTP Error.","Start Upload":"Start Upload","Error: File too large:":"Error: File too large:","kb":"kb","Duplicate file error.":"Duplicate file error.","File size error.":"File size error.","N/A":"N/A","gb":"gb","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"Select files","%s already present in the queue.":"%s already present in the queue.","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.","File: %s":"File: %s","b":"b","Uploaded %d/%d files":"Uploaded %d/%d files","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","%d files queued":"%d files queued","File: %s, size: %d, max file size: %d":"File: %s, size: %d, max file size: %d","Thumbnails":"Thumbnails","Drag files here.":"Drag files here.","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"File count error.","File extension error.":"File extension error.","mb":"mb","Add Files":"Add Files"}} + }; + + $.zui.plupload = Plupload; + $.zui.moxie = Moxie; + $.zui.Uploader = Uploader; + + $.fn.uploader.Constructor = Uploader; + + // For qiniu + if(!window.mOxie) window.mOxie = { + Env: Moxie.core.utils.Env, + XMLHttpRequest: Moxie.xhr.XMLHttpRequest + }; + + // Auto call uploader after document load complete + $(function() { + $('[data-ride="uploader"]').uploader(); + }); +}(jQuery, window, plupload, moxie, undefined)); + diff --git a/root/res/zui/lib/uploader/zui.uploader.min.css b/root/res/zui/lib/uploader/zui.uploader.min.css new file mode 100644 index 0000000..b714532 --- /dev/null +++ b/root/res/zui/lib/uploader/zui.uploader.min.css @@ -0,0 +1,6 @@ +/*! + * ZUI: 文件上传 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */.uploader{position:relative;margin-bottom:20px}.uploader-btn-hidden{position:absolute;top:-1px;left:-1px;width:1px;height:1px;opacity:0}.file-dragable{position:relative}[data-drop-placeholder]:before{position:absolute;top:0;left:0;z-index:10;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;height:100%;font-size:16px;text-align:center;pointer-events:none;content:attr(data-drop-placeholder);background-color:rgba(255,240,213,.5);filter:alpha(opacity=0);border:2px dashed #f1a325;opacity:0;-webkit-transition:all .2s;-o-transition:all .2s;transition:all .2s;-webkit-transform:scale(.95);-ms-transform:scale(.95);-o-transform:scale(.95);transform:scale(.95);-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.ie [data-drop-placeholder]:before{display:none!important}.file-dragable[data-drop-placeholder]:before{filter:alpha(opacity=100);opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.file-drag-enter[data-drop-placeholder]:before{background-color:#fff0d5;border-style:solid}.file-list,.uploader-files{position:relative;min-height:32px;margin-bottom:10px;border:1px solid #ddd}.file-list[data-drag-placeholder]:before,.uploader-files[data-drag-placeholder]:before{position:absolute;top:50%;right:0;left:0;display:block;margin-top:-15px;line-height:32px;color:#ddd;text-align:center;pointer-events:none;content:attr(data-drag-placeholder);-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s}.file-list[data-drag-placeholder]:hover:before,.uploader-files[data-drag-placeholder]:hover:before{color:grey}.file-list .file-icon,.uploader-files .file-icon{position:relative;width:32px;height:32px;line-height:32px;text-align:center;filter:alpha(opacity=70);opacity:.7;-webkit-transition:opacity .4s;-o-transition:opacity .4s;transition:opacity .4s}.file-list .file-icon-image,.uploader-files .file-icon-image{position:absolute;top:5px;right:5px;bottom:5px;left:5px;background-color:#fff;background-repeat:no-repeat;background-position:center;-webkit-background-size:cover;background-size:cover;border:1px solid #ddd}.file-list .file-name,.uploader-files .file-name{text-decoration:none;-webkit-transition:all .2s;-o-transition:all .2s;transition:all .2s}.file-list .file-name[contenteditable],.uploader-files .file-name[contenteditable]{padding:0 5px;background-color:#fff;outline:1px solid #3280fc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #97befd;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #97befd}.file-list .file-name,.file-list .file-size,.uploader-files .file-name,.uploader-files .file-size{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-list .file-renaming .file-name[contenteditable],.uploader-files .file-renaming .file-name[contenteditable]{text-overflow:initial}.file-list .file:hover .file-name,.uploader-files .file:hover .file-name{color:#3280fc}.file-list .file:hover .file-icon,.uploader-files .file:hover .file-icon{opacity:1}.file-list .file-status,.uploader-files .file-status{display:inline-block;line-height:20px;text-align:right}.file-list .file-status:hover,.uploader-files .file-status:hover{background-color:rgba(0,0,0,.07)}.file-list .file-status>.icon,.uploader-files .file-status>.icon{line-height:20px;vertical-align:middle;opacity:1;-webkit-transition:all .8s;-o-transition:all .8s;transition:all .8s;-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.file-list .file-status>.icon:before,.uploader-files .file-status>.icon:before{content:'\e653'}.file-list .file-status>.text,.uploader-files .file-status>.text{display:inline-block;padding:0 6px;font-size:12px;line-height:20px}.file-list .file-status>.text:empty,.uploader-files .file-status>.text:empty{display:none}.file-list .file[data-status=uploading] .file-status>.icon,.uploader-files .file[data-status=uploading] .file-status>.icon{filter:alpha(opacity=0);opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0)}.file-list .file[data-status=uploading] .file-status>.text,.uploader-files .file[data-status=uploading] .file-status>.text{color:#fff;background-color:#3280fc;border-radius:10px}.file-list .file[data-status=queue] .file-status,.uploader-files .file[data-status=queue] .file-status{color:#f1a325}.file-list .file[data-status=queue] .file-status>.icon:before,.uploader-files .file[data-status=queue] .file-status>.icon:before{content:'\e6cd'}.file-list .file[data-status=failed] .file-status,.uploader-files .file[data-status=failed] .file-status{color:#ea644a}.file-list .file[data-status=failed] .file-status>.icon:before,.uploader-files .file[data-status=failed] .file-status>.icon:before{content:'\e66a'}.file-list .file[data-status=done] .file-status,.uploader-files .file[data-status=done] .file-status{color:#38b03f}.file-list .file .actions>.btn-download-file,.file-list .file .actions>.btn-reset-file,.file-list .file[data-status=uploading] .actions>.btn,.file-list .file[data-status=failed] .actions>.btn-rename-file,.file-list .file[data-status=done] .actions>.btn,.uploader-files .file .actions>.btn-download-file,.uploader-files .file .actions>.btn-reset-file,.uploader-files .file[data-status=uploading] .actions>.btn,.uploader-files .file[data-status=failed] .actions>.btn-rename-file,.uploader-files .file[data-status=done] .actions>.btn{display:none}.file-list .file[data-status=failed] .actions>.btn-reset-file,.file-list .file[data-status=done] .actions>.btn-download-file[href],.file-list.file-show-delete-action-on-done .file[data-status=done] .actions>.btn-delete-file,.file-list.file-show-rename-action-on-done .file[data-status=done] .actions>.btn-rename-file,.uploader-files .file[data-status=failed] .actions>.btn-reset-file,.uploader-files .file[data-status=done] .actions>.btn-download-file[href],.uploader-files.file-show-delete-action-on-done .file[data-status=done] .actions>.btn-delete-file,.uploader-files.file-show-rename-action-on-done .file[data-status=done] .actions>.btn-rename-file{display:inline-block}.file-list.file-rename-by-click [data-status=queue] .file-name:hover,.uploader-files.file-rename-by-click [data-status=queue] .file-name:hover{background-color:rgba(255,255,255,.5);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #97befd;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #97befd}.file-list .file-progress-bar,.uploader-files .file-progress-bar{position:absolute;top:0;bottom:0;left:0;z-index:10;pointer-events:none;background-color:rgba(50,128,252,.1);filter:alpha(opacity=0);-webkit-box-shadow:inset 0 -2px #3280fc;box-shadow:inset 0 -2px #3280fc;opacity:0;-webkit-transition:width .6s ease,opacity .4s;-o-transition:width .6s ease,opacity .4s;transition:width .6s ease,opacity .4s}.file-list .file[data-status=uploading] .file-progress-bar,.uploader-files .file[data-status=uploading] .file-progress-bar{filter:alpha(opacity=100);opacity:1}.file-list .file[data-status=queue],.uploader-files .file[data-status=queue]{background-color:#fff0d5}.file-list .file[data-status=failed],.uploader-files .file[data-status=failed]{background-color:#ffe5e0}.file-list .file[data-status=done],.uploader-files .file[data-status=done]{background-color:#fff}.uploader-actions{background-color:#f1f1f1}.file-list+.uploader-actions{margin-top:-10px;border:1px solid #ddd;border-top:none}.uploader-actions .uploader-status{padding:5px 10px;line-height:20px}.uploader-message{position:absolute;top:0;right:0;left:0;z-index:1;display:none;padding:5px 10px;color:#fff;background:#3280fc;filter:alpha(opacity=95);opacity:.95}.uploader-message>.close{position:absolute;top:3px;right:10px;color:inherit;text-shadow:none;opacity:.4}.uploader-message>.close:hover{opacity:1}.uploader-message[data-type=danger]{background:#ea644a}.uploader-message[data-type=warning]{background:#f1a325}.uploader-message[data-type=info]{background:#03b8cf}.uploader-message[data-type=success]{background:#38b03f}.file-list .file{position:relative;z-index:0;background-color:#fff;-webkit-transition:background .4s;-o-transition:background .4s;transition:background .4s}.file-list .file+.file{border-top:1px solid #ddd}.file-list .file-wrapper{position:relative;z-index:2;display:table;width:100%;table-layout:fixed;-webkit-transition:background .4s;-o-transition:background .4s;transition:background .4s}.file-list .file-wrapper:hover{background-color:rgba(0,0,0,.05)}.file-list .file-wrapper>.actions,.file-list .file-wrapper>.content,.file-list .file-wrapper>.file-icon{display:table-cell;vertical-align:middle}.file-list .file-wrapper>.actions{width:150px;text-align:right}.file-list .file-wrapper>.actions>.btn{padding:5px 8px}.file-list .file-wrapper>.actions>.btn:hover{background-color:rgba(0,0,0,.07)}.file-list .file-name{display:block}.file-list .file-wrapper>.content>.file-name{float:left}.file-list .file-wrapper>.content>.file-size{float:right;margin-top:2px}.file-list .file-wrapper>.actions>.btn{border-radius:0}.file-list .file-status{padding:5px}.file-list-lg .file{min-height:50px}.file-list-lg .file-icon{width:50px;line-height:50px}.file-list-lg .file-icon .icon{position:relative;display:block;width:50px;font-size:28px;line-height:50px;text-align:center}.file-list-lg .file-icon .icon-file-o{position:relative;left:-2px}.file-list-lg .file-status{line-height:40px}.file-list-lg .file-status>.icon{font-size:20px}.file-list-lg .file[data-status=done] .file-status{padding:5px 12px}.file-list-lg .file-wrapper>.content>.file-name{float:none;line-height:20px}.file-list-lg .file-wrapper>.content>.file-size{float:none;line-height:14px}.file-list-lg .file-wrapper>.actions>.btn{padding:14px 8px}.file-list-lg .file-renaming .file-name[contenteditable]{font-size:14px;line-height:34px}.file-list-lg .file-renaming .file-wrapper>.content>.file-size{display:none}.file-list-grid{margin-right:-8px;margin-left:-8px;border:none}.file-list-grid:after,.file-list-grid:before{display:table;content:" "}.file-list-grid:after{clear:both}.file-list-grid .file{display:block;float:left;width:120px;height:120px;margin:8px 8px 35px 8px;border:1px solid #ddd;border-radius:4px}.file-list-grid .file .file-icon{display:block;width:118px;height:118px;overflow:hidden}.file-list-grid .file-icon>.icon{font-size:70px;line-height:118px}.file-list-grid .file-icon-image{top:-1px;right:-1px;bottom:-1px;left:-1px;border:none}.file-list-grid .file-wrapper{position:absolute;top:0;right:0;left:0;display:block;width:auto}.file-list-grid .file-wrapper>.content{position:absolute;right:-1px;bottom:-24px;left:-1px;display:block;text-align:center;-webkit-transition:all .2s;-o-transition:all .2s;transition:all .2s}.file-list-grid .file-wrapper>.content>.file-name{position:relative;z-index:5;float:none;padding:4px 0;line-height:16px;border:1px solid transparent}.file-list-grid .file-wrapper>.content>.file-size{position:absolute;top:-24px;left:4px;display:block;padding:0 5px;line-height:18px;color:#fff;background-color:grey;background-color:rgba(0,0,0,.5);filter:alpha(opacity=0);border-radius:9px;opacity:0;-webkit-transition:opacity .4s;-o-transition:opacity .4s;transition:opacity .4s}.file-list-grid .file-renaming .file-wrapper>.content>.file-name,.file-list-grid .file-wrapper>.content:hover>.file-name{text-overflow:initial;word-break:break-all;white-space:normal;background-color:#fff;border-color:#ddd;-webkit-box-shadow:none;box-shadow:none}.file-list-grid .file-renaming .file-wrapper>.content>.file-name{padding:4px;text-align:left}.file-list-grid .file:hover .file-wrapper>.content>.file-size,.file-list-grid .file[data-status=uploading] .file-wrapper>.content>.file-size{filter:alpha(opacity=100);opacity:1}.file-list-grid .file-wrapper>.actions{position:absolute;top:0;right:0;left:0;display:block;width:118px}.file-list-grid .file-wrapper:hover>.actions{background:rgba(255,255,255,.85)}.file-list-grid .file-wrapper>.actions>.file-status{position:absolute;top:0;left:0;height:28px;padding:4px 5px}.file-list-grid .file-wrapper>.actions>.file-status>.icon{position:relative;top:-1px;display:inline-block;font-size:21px;text-shadow:-1px -1px 0 #fff,1px -1px 0 #fff,-1px 1px 0 #fff,1px 1px 0 #fff}.file-list-grid .file-wrapper>.actions>.file-status>.text{padding:0}.file-list-grid .file[data-status=failed] .file-wrapper>.actions>.file-status>.icon{font-size:14px;text-shadow:none}.file-list-grid .file[data-status=uploading] .file-wrapper>.actions>.file-status>.text{position:absolute;top:4px;left:4px;padding:0 8px}.file-list-grid .file[data-status=failed] .file-wrapper>.actions>.file-status{top:4px;left:4px;height:20px;padding:0 8px;color:#fff;background-color:#ea644a;border-radius:10px}.file-list-grid .file-wrapper>.actions>.btn{padding:3px 6px;filter:alpha(opacity=0);opacity:0}.file-list-grid .file-wrapper:hover>.actions>.btn{filter:alpha(opacity=100);opacity:1}.file-list-grid .file-progress-bar{-webkit-box-shadow:inset 0 -4px #3280fc;box-shadow:inset 0 -4px #3280fc}.file-list-grid+.uploader-actions{border:none} \ No newline at end of file diff --git a/root/res/zui/lib/uploader/zui.uploader.min.js b/root/res/zui/lib/uploader/zui.uploader.min.js new file mode 100644 index 0000000..77b8a48 --- /dev/null +++ b/root/res/zui/lib/uploader/zui.uploader.min.js @@ -0,0 +1,23 @@ +/*! + * ZUI: 文件上传 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ +/*! + * mOxie - multi-runtime File API & XMLHttpRequest L2 Polyfill + * v1.5.2 + * + * Copyright 2013, Moxiecode Systems AB + * Released under GPL License. + * + * License: http://www.plupload.com/license + * Contributing: http://www.plupload.com/contributing + * + * Date: 2016-11-23 + */ +!function(e,t){var i=function(){var e={};return t.apply(e,arguments),e.moxie};"function"==typeof define&&define.amd?define("moxie",[],i):"object"==typeof module&&module.exports?module.exports=i():e.moxie=i()}(this||window,function(){!function(e,t){"use strict";function i(e,t){for(var i,n=[],r=0;r0&&l(n,function(n,l){var u=-1!==p(e(n),["array","object"]);return!!(n===r||t&&a[l]===r)||(u&&i&&(n=o(n)),void(e(a[l])===e(n)&&u?s(t,i,[a[l],n]):a[l]=n))})}),a}function a(e,t){function i(){this.constructor=e}for(var n in t)({}).hasOwnProperty.call(t,n)&&(e[n]=t[n]);return i.prototype=t.prototype,e.prototype=new i,e.__parent__=t.prototype,e}function l(e,t){var i,n,r,o;if(e){try{i=e.length}catch(s){i=o}if(i===o||"number"!=typeof i){for(n in e)if(e.hasOwnProperty(n)&&t(e[n],n)===!1)return}else for(r=0;i>r;r++)if(t(e[r],r)===!1)return}}function u(t){var i;if(!t||"object"!==e(t))return!0;for(i in t)return!1;return!0}function c(t,i){function n(r){"function"===e(t[r])&&t[r](function(e){++ri;i++)if(t[i]===e)return i}return-1}function f(t,i){var n=[];"array"!==e(t)&&(t=[t]),"array"!==e(i)&&(i=[i]);for(var r in t)-1===p(t[r],i)&&n.push(t[r]);return!!n.length&&n}function m(e,t){var i=[];return l(e,function(e){-1!==p(e,t)&&i.push(e)}),i.length?i:null}function h(e){var t,i=[];for(t=0;ti;i++)n+=Math.floor(65535*Math.random()).toString(32);return(t||"o_")+n+(e++).toString(32)}}();return{guid:E,typeOf:e,extend:t,extendIf:i,extendImmutable:n,extendImmutableIf:r,inherit:a,each:l,isEmptyObj:u,inSeries:c,inParallel:d,inArray:p,arrayDiff:f,arrayIntersect:m,toArray:h,trim:g,sprintf:x,parseSizeStr:v,delay:y}}),n("moxie/core/utils/Encode",[],function(){var e=function(e){return unescape(encodeURIComponent(e))},t=function(e){return decodeURIComponent(escape(e))},i=function(e,i){if("function"==typeof window.atob)return i?t(window.atob(e)):window.atob(e);var n,r,o,s,a,l,u,c,d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",p=0,f=0,m="",h=[];if(!e)return e;e+="";do s=d.indexOf(e.charAt(p++)),a=d.indexOf(e.charAt(p++)),l=d.indexOf(e.charAt(p++)),u=d.indexOf(e.charAt(p++)),c=s<<18|a<<12|l<<6|u,n=255&c>>16,r=255&c>>8,o=255&c,h[f++]=64==l?String.fromCharCode(n):64==u?String.fromCharCode(n,r):String.fromCharCode(n,r,o);while(p>18,a=63&c>>12,l=63&c>>6,u=63&c,h[f++]=d.charAt(s)+d.charAt(a)+d.charAt(l)+d.charAt(u);while(pn;n++)if(e[n]!=t[n]){if(e[n]=l(e[n]),t[n]=l(t[n]),e[n]t[n]){o=1;break}}if(!i)return o;switch(i){case">":case"gt":return o>0;case">=":case"ge":return o>=0;case"<=":case"le":return 0>=o;case"==":case"=":case"eq":return 0===o;case"<>":case"!=":case"ne":return 0!==o;case"":case"<":case"lt":return 0>o;default:return null}}var i=function(e){var t="",i="?",n="function",r="undefined",o="object",s="name",a="version",l={has:function(e,t){return-1!==t.toLowerCase().indexOf(e.toLowerCase())},lowerize:function(e){return e.toLowerCase()}},u={rgx:function(){for(var t,i,s,a,l,u,c,d=0,p=arguments;d0?2==l.length?t[l[0]]=typeof l[1]==n?l[1].call(this,c):l[1]:3==l.length?t[l[0]]=typeof l[1]!==n||l[1].exec&&l[1].test?c?c.replace(l[1],l[2]):e:c?l[1].call(this,c,l[2]):e:4==l.length&&(t[l[0]]=c?l[3].call(this,c.replace(l[1],l[2])):e):t[l]=c?c:e;break}if(u)break}return t},str:function(t,n){for(var r in n)if(typeof n[r]===o&&n[r].length>0){for(var s=0;s=9)},use_data_uri_of:function(e){return t.use_data_uri&&33e3>e||t.use_data_uri_over32kb()},use_fileinput:function(){if(navigator.userAgent.match(/(Android (1.0|1.1|1.5|1.6|2.0|2.1))|(Windows Phone (OS 7|8.0))|(XBLWP)|(ZuneWP)|(w(eb)?OSBrowser)|(webOS)|(Kindle\/(1.0|2.0|2.5|3.0))/))return!1;var e=document.createElement("input");return e.setAttribute("type","file"),!e.disabled}};return function(i){var n=[].slice.call(arguments);return n.shift(),"function"===e.typeOf(t[i])?t[i].apply(this,n):!!t[i]}}(),r=(new i).getResult(),o={can:n,uaParser:i,browser:r.browser.name,version:r.browser.version,os:r.os.name,osVersion:r.os.version,verComp:t,swf_url:"../flash/Moxie.swf",xap_url:"../silverlight/Moxie.xap",global_event_dispatcher:"moxie.core.EventTarget.instance.dispatchEvent"};return o.OS=o.os,o}),n("moxie/core/Exceptions",["moxie/core/utils/Basic"],function(e){function t(e,t){var i;for(i in e)if(e[i]===t)return i;return null}return{RuntimeError:function(){function i(e,i){this.code=e,this.name=t(n,e),this.message=this.name+(i||": RuntimeError "+this.code)}var n={NOT_INIT_ERR:1,EXCEPTION_ERR:3,NOT_SUPPORTED_ERR:9,JS_ERR:4};return e.extend(i,n),i.prototype=Error.prototype,i}(),OperationNotAllowedException:function(){function t(e){this.code=e,this.name="OperationNotAllowedException"}return e.extend(t,{NOT_ALLOWED_ERR:1}),t.prototype=Error.prototype,t}(),ImageError:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": ImageError "+this.code}var n={WRONG_FORMAT:1,MAX_RESOLUTION_ERR:2,INVALID_META_ERR:3};return e.extend(i,n),i.prototype=Error.prototype,i}(),FileException:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": FileException "+this.code}var n={NOT_FOUND_ERR:1,SECURITY_ERR:2,ABORT_ERR:3,NOT_READABLE_ERR:4,ENCODING_ERR:5,NO_MODIFICATION_ALLOWED_ERR:6,INVALID_STATE_ERR:7,SYNTAX_ERR:8};return e.extend(i,n),i.prototype=Error.prototype,i}(),DOMException:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": DOMException "+this.code}var n={INDEX_SIZE_ERR:1,DOMSTRING_SIZE_ERR:2,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,INVALID_CHARACTER_ERR:5,NO_DATA_ALLOWED_ERR:6,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INUSE_ATTRIBUTE_ERR:10,INVALID_STATE_ERR:11,SYNTAX_ERR:12,INVALID_MODIFICATION_ERR:13,NAMESPACE_ERR:14,INVALID_ACCESS_ERR:15,VALIDATION_ERR:16,TYPE_MISMATCH_ERR:17,SECURITY_ERR:18,NETWORK_ERR:19,ABORT_ERR:20,URL_MISMATCH_ERR:21,QUOTA_EXCEEDED_ERR:22,TIMEOUT_ERR:23,INVALID_NODE_TYPE_ERR:24,DATA_CLONE_ERR:25};return e.extend(i,n),i.prototype=Error.prototype,i}(),EventException:function(){function t(e){this.code=e,this.name="EventException"}return e.extend(t,{UNSPECIFIED_EVENT_TYPE_ERR:0}),t.prototype=Error.prototype,t}()}}),n("moxie/core/utils/Dom",["moxie/core/utils/Env"],function(e){var t=function(e){return"string"!=typeof e?e:document.getElementById(e)},i=function(e,t){if(!e.className)return!1;var i=new RegExp("(^|\\s+)"+t+"(\\s+|$)");return i.test(e.className)},n=function(e,t){i(e,t)||(e.className=e.className?e.className.replace(/\s+$/,"")+" "+t:t)},r=function(e,t){if(e.className){var i=new RegExp("(^|\\s+)"+t+"(\\s+|$)");e.className=e.className.replace(i,function(e,t,i){return" "===t&&" "===i?" ":""})}},o=function(e,t){return e.currentStyle?e.currentStyle[t]:window.getComputedStyle?window.getComputedStyle(e,null)[t]:void 0},s=function(t,i){function n(e){var t,i,n=0,r=0;return e&&(i=e.getBoundingClientRect(),t="CSS1Compat"===u.compatMode?u.documentElement:u.body,n=i.left+t.scrollLeft,r=i.top+t.scrollTop),{x:n,y:r}}var r,o,s,a=0,l=0,u=document;if(t=t,i=i||u.body,t&&t.getBoundingClientRect&&"IE"===e.browser&&(!u.documentMode||u.documentMode<8))return o=n(t),s=n(i),{x:o.x-s.x,y:o.y-s.y};for(r=t;r&&r!=i&&r.nodeType;)a+=r.offsetLeft||0,l+=r.offsetTop||0,r=r.offsetParent;for(r=t.parentNode;r&&r!=i&&r.nodeType;)a-=r.scrollLeft||0,l-=r.scrollTop||0,r=r.parentNode;return{x:a,y:l}},a=function(e){return{w:e.offsetWidth||e.clientWidth,h:e.offsetHeight||e.clientHeight}};return{get:t,hasClass:i,addClass:n,removeClass:r,getStyle:o,getPos:s,getSize:a}}),n("moxie/core/EventTarget",["moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Basic"],function(e,t,i){function n(){this.uid=i.guid()}var r={};return i.extend(n.prototype,{init:function(){this.uid||(this.uid=i.guid("uid_"))},addEventListener:function(e,t,n,o){var s,a=this;return this.hasOwnProperty("uid")||(this.uid=i.guid("uid_")),e=i.trim(e),/\s/.test(e)?void i.each(e.split(/\s+/),function(e){a.addEventListener(e,t,n,o)}):(e=e.toLowerCase(),n=parseInt(n,10)||0,s=r[this.uid]&&r[this.uid][e]||[],s.push({fn:t,priority:n,scope:o||this}),r[this.uid]||(r[this.uid]={}),void(r[this.uid][e]=s))},hasEventListener:function(e){var t;return e?(e=e.toLowerCase(),t=r[this.uid]&&r[this.uid][e]):t=r[this.uid],!!t&&t},removeEventListener:function(e,t){var n,o,s=this;if(e=e.toLowerCase(),/\s/.test(e))return void i.each(e.split(/\s+/),function(e){s.removeEventListener(e,t)});if(n=r[this.uid]&&r[this.uid][e]){if(t){for(o=n.length-1;o>=0;o--)if(n[o].fn===t){n.splice(o,1);break}}else n=[];n.length||(delete r[this.uid][e],i.isEmptyObj(r[this.uid])&&delete r[this.uid])}},removeAllEventListeners:function(){r[this.uid]&&delete r[this.uid]},dispatchEvent:function(e){var n,o,s,a,l,u={},c=!0;if("string"!==i.typeOf(e)){if(a=e,"string"!==i.typeOf(a.type))throw new t.EventException(t.EventException.UNSPECIFIED_EVENT_TYPE_ERR);e=a.type,a.total!==l&&a.loaded!==l&&(u.total=a.total,u.loaded=a.loaded),u.async=a.async||!1}if(-1!==e.indexOf("::")?function(t){n=t[0],e=t[1]}(e.split("::")):n=this.uid,e=e.toLowerCase(),o=r[n]&&r[n][e]){o.sort(function(e,t){return t.priority-e.priority}),s=[].slice.call(arguments),s.shift(),u.type=e,s.unshift(u);var d=[];i.each(o,function(e){s[0].target=e.scope,u.async?d.push(function(t){setTimeout(function(){t(e.fn.apply(e.scope,s)===!1)},1)}):d.push(function(t){t(e.fn.apply(e.scope,s)===!1)})}),d.length&&i.inSeries(d,function(e){c=!e})}return c},bindOnce:function(e,t,i,n){var r=this;r.bind.call(this,e,function o(){return r.unbind(e,o),t.apply(this,arguments)},i,n)},bind:function(){this.addEventListener.apply(this,arguments)},unbind:function(){this.removeEventListener.apply(this,arguments)},unbindAll:function(){this.removeAllEventListeners.apply(this,arguments)},trigger:function(){return this.dispatchEvent.apply(this,arguments)},handleEventProps:function(e){var t=this;this.bind(e.join(" "),function(e){var t="on"+e.type.toLowerCase();"function"===i.typeOf(this[t])&&this[t].apply(this,arguments)}),i.each(e,function(e){e="on"+e.toLowerCase(e),"undefined"===i.typeOf(t[e])&&(t[e]=null)})}}),n.instance=new n,n}),n("moxie/runtime/Runtime",["moxie/core/utils/Env","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/EventTarget"],function(e,t,i,n){function r(e,n,o,a,l){var u,c=this,d=t.guid(n+"_"),p=l||"browser";e=e||{},s[d]=this,o=t.extend({access_binary:!1,access_image_binary:!1,display_media:!1,do_cors:!1,drag_and_drop:!1,filter_by_extension:!0,resize_image:!1,report_upload_progress:!1,return_response_headers:!1,return_response_type:!1,return_status_code:!0,send_custom_headers:!1,select_file:!1,select_folder:!1,select_multiple:!0,send_binary_string:!1,send_browser_cookies:!0,send_multipart:!0,slice_blob:!1,stream_upload:!1,summon_file_dialog:!1,upload_filesize:!0,use_http_method:!0},o),e.preferred_caps&&(p=r.getMode(a,e.preferred_caps,p)),u=function(){var e={};return{exec:function(t,i,n,r){return u[i]&&(e[t]||(e[t]={context:this,instance:new u[i]}),e[t].instance[n])?e[t].instance[n].apply(this,r):void 0},removeInstance:function(t){delete e[t]},removeAllInstances:function(){var i=this;t.each(e,function(e,n){"function"===t.typeOf(e.instance.destroy)&&e.instance.destroy.call(e.context),i.removeInstance(n)})}}}(),t.extend(this,{initialized:!1,uid:d,type:n,mode:r.getMode(a,e.required_caps,p),shimid:d+"_container",clients:0,options:e,can:function(e,i){var n=arguments[2]||o;if("string"===t.typeOf(e)&&"undefined"===t.typeOf(i)&&(e=r.parseCaps(e)),"object"===t.typeOf(e)){for(var s in e)if(!this.can(s,e[s],n))return!1;return!0}return"function"===t.typeOf(n[e])?n[e].call(this,i):i===n[e]},getShimContainer:function(){var e,n=i.get(this.shimid);return n||(e=i.get(this.options.container)||document.body,n=document.createElement("div"),n.id=this.shimid,n.className="moxie-shim moxie-shim-"+this.type,t.extend(n.style,{position:"absolute",top:"0px",left:"0px",width:"1px",height:"1px",overflow:"hidden"}),e.appendChild(n),e=null),n},getShim:function(){return u},shimExec:function(e,t){var i=[].slice.call(arguments,2);return c.getShim().exec.call(this,this.uid,e,t,i)},exec:function(e,t){var i=[].slice.call(arguments,2);return c[e]&&c[e][t]?c[e][t].apply(this,i):c.shimExec.apply(this,arguments)},destroy:function(){if(c){var e=i.get(this.shimid);e&&e.parentNode.removeChild(e),u&&u.removeAllInstances(),this.unbindAll(),delete s[this.uid],this.uid=null,d=c=u=e=null}}}),this.mode&&e.required_caps&&!this.can(e.required_caps)&&(this.mode=!1)}var o={},s={};return r.order="html5,flash,silverlight,html4",r.getRuntime=function(e){return!!s[e]&&s[e]},r.addConstructor=function(e,t){t.prototype=n.instance,o[e]=t},r.getConstructor=function(e){return o[e]||null},r.getInfo=function(e){var t=r.getRuntime(e);return t?{uid:t.uid,type:t.type,mode:t.mode,can:function(){return t.can.apply(t,arguments)}}:null},r.parseCaps=function(e){var i={};return"string"!==t.typeOf(e)?e||{}:(t.each(e.split(","),function(e){i[e]=!0}),i)},r.can=function(e,t){var i,n,o=r.getConstructor(e);return!!o&&(i=new o({required_caps:t}),n=i.mode,i.destroy(),!!n)},r.thatCan=function(e,t){var i=(t||r.order).split(/\s*,\s*/);for(var n in i)if(r.can(i[n],e))return i[n];return null},r.getMode=function(e,i,n){var r=null;if("undefined"===t.typeOf(n)&&(n="browser"),i&&!t.isEmptyObj(e)){if(t.each(i,function(i,n){if(e.hasOwnProperty(n)){var o=e[n](i);if("string"==typeof o&&(o=[o]),r){if(!(r=t.arrayIntersect(r,o)))return r=!1}else r=o}}),r)return-1!==t.inArray(n,r)?n:r[0];if(r===!1)return!1}return n},r.capTrue=function(){return!0},r.capFalse=function(){return!1},r.capTest=function(e){return function(){return!!e}},r}),n("moxie/runtime/RuntimeClient",["moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Basic","moxie/runtime/Runtime"],function(e,t,i,n){return function(){var e;i.extend(this,{connectRuntime:function(r){function o(i){var s,l;return i.length?(s=i.shift().toLowerCase(),(l=n.getConstructor(s))?(e=new l(r),e.bind("Init",function(){e.initialized=!0,setTimeout(function(){e.clients++,a.ruid=e.uid,a.trigger("RuntimeInit",e)},1)}),e.bind("Error",function(){e.destroy(),o(i)}),e.bind("Exception",function(e,i){var n=i.name+"(#"+i.code+")"+(i.message?", from: "+i.message:"");a.trigger("RuntimeError",new t.RuntimeError(t.RuntimeError.EXCEPTION_ERR,n))}),e.mode?void e.init():void e.trigger("Error")):void o(i)):(a.trigger("RuntimeError",new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)),void(e=null))}var s,a=this;if("string"===i.typeOf(r)?s=r:"string"===i.typeOf(r.ruid)&&(s=r.ruid),s){if(e=n.getRuntime(s))return a.ruid=s,e.clients++,e;throw new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)}o((r.runtime_order||n.order).split(/\s*,\s*/))},disconnectRuntime:function(){e&&--e.clients<=0&&e.destroy(),e=null},getRuntime:function(){return e&&e.uid?e:e=null},exec:function(){return e?e.exec.apply(this,arguments):null},can:function(t){return!!e&&e.can(t)}})}}),n("moxie/file/Blob",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/runtime/RuntimeClient"],function(e,t,i){function n(o,s){function a(t,i,o){var s,a=r[this.uid];return"string"===e.typeOf(a)&&a.length?(s=new n(null,{type:o,size:i-t}),s.detach(a.substr(t,s.size)),s):null}i.call(this),o&&this.connectRuntime(o),s?"string"===e.typeOf(s)&&(s={data:s}):s={},e.extend(this,{uid:s.uid||e.guid("uid_"),ruid:o,size:s.size||0,type:s.type||"",slice:function(e,t,i){return this.isDetached()?a.apply(this,arguments):this.getRuntime().exec.call(this,"Blob","slice",this.getSource(),e,t,i)},getSource:function(){return r[this.uid]?r[this.uid]:null},detach:function(e){if(this.ruid&&(this.getRuntime().exec.call(this,"Blob","destroy"),this.disconnectRuntime(),this.ruid=null),e=e||"","data:"==e.substr(0,5)){var i=e.indexOf(";base64,");this.type=e.substring(5,i),e=t.atob(e.substring(i+8))}this.size=e.length,r[this.uid]=e},isDetached:function(){return!this.ruid&&"string"===e.typeOf(r[this.uid])},destroy:function(){this.detach(),delete r[this.uid]}}),s.data?this.detach(s.data):r[this.uid]=s}var r={};return n}),n("moxie/core/I18n",["moxie/core/utils/Basic"],function(e){var t={};return{addI18n:function(i){return e.extend(t,i)},translate:function(e){return t[e]||e},_:function(e){return this.translate(e)},sprintf:function(t){var i=[].slice.call(arguments,1);return t.replace(/%[a-z]/g,function(){var t=i.shift();return"undefined"!==e.typeOf(t)?t:""})}}}),n("moxie/core/utils/Mime",["moxie/core/utils/Basic","moxie/core/I18n"],function(e,t){var i="application/msword,doc dot,application/pdf,pdf,application/pgp-signature,pgp,application/postscript,ps ai eps,application/rtf,rtf,application/vnd.ms-excel,xls xlb,application/vnd.ms-powerpoint,ppt pps pot,application/zip,zip,application/x-shockwave-flash,swf swfl,application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx,application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx,application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx,application/vnd.openxmlformats-officedocument.presentationml.template,potx,application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx,application/x-javascript,js,application/json,json,audio/mpeg,mp3 mpga mpega mp2,audio/x-wav,wav,audio/x-m4a,m4a,audio/ogg,oga ogg,audio/aiff,aiff aif,audio/flac,flac,audio/aac,aac,audio/ac3,ac3,audio/x-ms-wma,wma,image/bmp,bmp,image/gif,gif,image/jpeg,jpg jpeg jpe,image/photoshop,psd,image/png,png,image/svg+xml,svg svgz,image/tiff,tiff tif,text/plain,asc txt text diff log,text/html,htm html xhtml,text/css,css,text/csv,csv,text/rtf,rtf,video/mpeg,mpeg mpg mpe m2v,video/quicktime,qt mov,video/mp4,mp4,video/x-m4v,m4v,video/x-flv,flv,video/x-ms-wmv,wmv,video/avi,avi,video/webm,webm,video/3gpp,3gpp 3gp,video/3gpp2,3g2,video/vnd.rn-realvideo,rv,video/ogg,ogv,video/x-matroska,mkv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe",n={mimes:{},extensions:{},addMimeType:function(e){var t,i,n,r=e.split(/,/);for(t=0;ts;s++)o+=String.fromCharCode(r[s]);return o}}t.call(this),e.extend(this,{uid:e.guid("uid_"),readAsBinaryString:function(e){return n.call(this,"readAsBinaryString",e)},readAsDataURL:function(e){return n.call(this,"readAsDataURL",e)},readAsText:function(e){return n.call(this,"readAsText",e)}})}}),n("moxie/xhr/FormData",["moxie/core/Exceptions","moxie/core/utils/Basic","moxie/file/Blob"],function(e,t,i){function n(){var e,n=[];t.extend(this,{append:function(r,o){var s=this,a=t.typeOf(o);o instanceof i?e={name:r,value:o}:"array"===a?(r+="[]",t.each(o,function(e){s.append(r,e)})):"object"===a?t.each(o,function(e,t){s.append(r+"["+t+"]",e)}):"null"===a||"undefined"===a||"number"===a&&isNaN(o)?s.append(r,"false"):n.push({name:r,value:o.toString()})},hasBlob:function(){return!!this.getBlob()},getBlob:function(){return e&&e.value||null},getBlobName:function(){return e&&e.name||null},each:function(i){t.each(n,function(e){i(e.value,e.name)}),e&&i(e.value,e.name)},destroy:function(){e=null,n=[]}})}return n}),n("moxie/xhr/XMLHttpRequest",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/core/EventTarget","moxie/core/utils/Encode","moxie/core/utils/Url","moxie/runtime/Runtime","moxie/runtime/RuntimeTarget","moxie/file/Blob","moxie/file/FileReaderSync","moxie/xhr/FormData","moxie/core/utils/Env","moxie/core/utils/Mime"],function(e,t,i,n,r,o,s,a,l,u,c,d){function p(){this.uid=e.guid("uid_")}function f(){function i(e,t){return S.hasOwnProperty(e)?1===arguments.length?c.can("define_property")?S[e]:I[e]:void(c.can("define_property")?S[e]=t:I[e]=t):void 0}function l(t){function n(){_&&(_.destroy(),_=null),a.dispatchEvent("loadend"),a=null}function r(r){_.bind("LoadStart",function(e){i("readyState",f.LOADING),a.dispatchEvent("readystatechange"),a.dispatchEvent(e),N&&a.upload.dispatchEvent(e)}),_.bind("Progress",function(e){i("readyState")!==f.LOADING&&(i("readyState",f.LOADING),a.dispatchEvent("readystatechange")),a.dispatchEvent(e)}),_.bind("UploadProgress",function(e){N&&a.upload.dispatchEvent({type:"progress",lengthComputable:!1,total:e.total,loaded:e.loaded})}),_.bind("Load",function(t){i("readyState",f.DONE),i("status",Number(r.exec.call(_,"XMLHttpRequest","getStatus")||0)),i("statusText",m[i("status")]||""),i("response",r.exec.call(_,"XMLHttpRequest","getResponse",i("responseType"))),~e.inArray(i("responseType"),["text",""])?i("responseText",i("response")):"document"===i("responseType")&&i("responseXML",i("response")),k=r.exec.call(_,"XMLHttpRequest","getAllResponseHeaders"),a.dispatchEvent("readystatechange"),i("status")>0?(N&&a.upload.dispatchEvent(t),a.dispatchEvent(t)):(L=!0,a.dispatchEvent("error")),n()}),_.bind("Abort",function(e){a.dispatchEvent(e),n()}),_.bind("Error",function(e){L=!0,i("readyState",f.DONE),a.dispatchEvent("readystatechange"),M=!0,a.dispatchEvent(e),n()}),r.exec.call(_,"XMLHttpRequest","send",{url:v,method:x,async:T,user:y,password:E,headers:A,mimeType:D,encoding:O,responseType:a.responseType,withCredentials:a.withCredentials,options:B},t)}var a=this;w=(new Date).getTime(),_=new s,"string"==typeof B.required_caps&&(B.required_caps=o.parseCaps(B.required_caps)),B.required_caps=e.extend({},B.required_caps,{return_response_type:a.responseType}),t instanceof u&&(B.required_caps.send_multipart=!0),e.isEmptyObj(A)||(B.required_caps.send_custom_headers=!0),z||(B.required_caps.do_cors=!0),B.ruid?r(_.connectRuntime(B)):(_.bind("RuntimeInit",function(e,t){r(t)}),_.bind("RuntimeError",function(e,t){a.dispatchEvent("RuntimeError",t)}),_.connectRuntime(B))}function g(){i("responseText",""),i("responseXML",null),i("response",null),i("status",0),i("statusText",""),w=b=null}var v,x,y,E,w,b,_,R,I=this,S={timeout:0,readyState:f.UNSENT,withCredentials:!1,status:0,statusText:"",responseType:"",responseXML:null,responseText:null,response:null},T=!0,A={},O=null,D=null,F=!1,C=!1,N=!1,M=!1,L=!1,z=!1,U=null,P=null,B={},k="";e.extend(this,S,{uid:e.guid("uid_"),upload:new p,open:function(o,s,a,l,u){var c;if(!o||!s)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(/[\u0100-\uffff]/.test(o)||n.utf8_encode(o)!==o)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(~e.inArray(o.toUpperCase(),["CONNECT","DELETE","GET","HEAD","OPTIONS","POST","PUT","TRACE","TRACK"])&&(x=o.toUpperCase()),~e.inArray(x,["CONNECT","TRACE","TRACK"]))throw new t.DOMException(t.DOMException.SECURITY_ERR);if(s=n.utf8_encode(s),c=r.parseUrl(s),z=r.hasSameOrigin(c),v=r.resolveUrl(s),(l||u)&&!z)throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);if(y=l||c.user,E=u||c.pass,T=a||!0,T===!1&&(i("timeout")||i("withCredentials")||""!==i("responseType")))throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);F=!T,C=!1,A={},g.call(this),i("readyState",f.OPENED),this.dispatchEvent("readystatechange")},setRequestHeader:function(r,o){var s=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","content-transfer-encoding","date","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","user-agent","via"];if(i("readyState")!==f.OPENED||C)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(/[\u0100-\uffff]/.test(r)||n.utf8_encode(r)!==r)throw new t.DOMException(t.DOMException.SYNTAX_ERR);return r=e.trim(r).toLowerCase(),!~e.inArray(r,s)&&!/^(proxy\-|sec\-)/.test(r)&&(A[r]?A[r]+=", "+o:A[r]=o,!0)},hasRequestHeader:function(e){return e&&A[e.toLowerCase()]||!1},getAllResponseHeaders:function(){return k||""},getResponseHeader:function(t){return t=t.toLowerCase(),L||~e.inArray(t,["set-cookie","set-cookie2"])?null:k&&""!==k&&(R||(R={},e.each(k.split(/\r\n/),function(t){var i=t.split(/:\s+/);2===i.length&&(i[0]=e.trim(i[0]),R[i[0].toLowerCase()]={header:i[0],value:e.trim(i[1])})})),R.hasOwnProperty(t))?R[t].header+": "+R[t].value:null},overrideMimeType:function(n){var r,o;if(~e.inArray(i("readyState"),[f.LOADING,f.DONE]))throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(n=e.trim(n.toLowerCase()),/;/.test(n)&&(r=n.match(/^([^;]+)(?:;\scharset\=)?(.*)$/))&&(n=r[1],r[2]&&(o=r[2])),!d.mimes[n])throw new t.DOMException(t.DOMException.SYNTAX_ERR);U=n,P=o},send:function(i,r){if(B="string"===e.typeOf(r)?{ruid:r}:r?r:{},this.readyState!==f.OPENED||C)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(i instanceof a)B.ruid=i.ruid,D=i.type||"application/octet-stream";else if(i instanceof u){if(i.hasBlob()){var o=i.getBlob();B.ruid=o.ruid,D=o.type||"application/octet-stream"}}else"string"==typeof i&&(O="UTF-8",D="text/plain;charset=UTF-8",i=n.utf8_encode(i));this.withCredentials||(this.withCredentials=B.required_caps&&B.required_caps.send_browser_cookies&&!z),N=!F&&this.upload.hasEventListener(),L=!1,M=!i,F||(C=!0),l.call(this,i)},abort:function(){if(L=!0,F=!1,~e.inArray(i("readyState"),[f.UNSENT,f.OPENED,f.DONE]))i("readyState",f.UNSENT);else{if(i("readyState",f.DONE),C=!1,!_)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);_.getRuntime().exec.call(_,"XMLHttpRequest","abort",M),M=!0}},destroy:function(){_&&("function"===e.typeOf(_.destroy)&&_.destroy(),_=null),this.unbindAll(),this.upload&&(this.upload.unbindAll(),this.upload=null)}}),this.handleEventProps(h.concat(["readystatechange"])),this.upload.handleEventProps(h)}var m={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",306:"Reserved",307:"Temporary Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Request Entity Too Large",414:"Request-URI Too Long",415:"Unsupported Media Type",416:"Requested Range Not Satisfiable",417:"Expectation Failed",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",426:"Upgrade Required",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",510:"Not Extended"};p.prototype=i.instance;var h=["loadstart","progress","abort","error","load","timeout","loadend"];return f.UNSENT=0,f.OPENED=1,f.HEADERS_RECEIVED=2,f.LOADING=3,f.DONE=4,f.prototype=i.instance,f}),n("moxie/runtime/Transporter",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/runtime/RuntimeClient","moxie/core/EventTarget"],function(e,t,i,n){function r(){function n(){c=d=0,u=this.result=null}function o(t,i){var n=this;l=i,n.bind("TransportingProgress",function(t){d=t.loaded,c>d&&-1===e.inArray(n.state,[r.IDLE,r.DONE])&&s.call(n)},999),n.bind("TransportingComplete",function(){d=c,n.state=r.DONE,u=null,n.result=l.exec.call(n,"Transporter","getAsBlob",t||"")},999),n.state=r.BUSY,n.trigger("TransportingStarted"),s.call(n)}function s(){var e,i=this,n=c-d;p>n&&(p=n),e=t.btoa(u.substr(d,p)),l.exec.call(i,"Transporter","receive",e,c)}var a,l,u,c,d,p;i.call(this),e.extend(this,{uid:e.guid("uid_"),state:r.IDLE,result:null,transport:function(t,i,r){var s=this;if(r=e.extend({chunk_size:204798},r),(a=r.chunk_size%3)&&(r.chunk_size+=3-a),p=r.chunk_size,n.call(this),u=t,c=t.length,"string"===e.typeOf(r)||r.ruid)o.call(s,i,this.connectRuntime(r));else{var l=function(e,t){s.unbind("RuntimeInit",l),o.call(s,i,t)};this.bind("RuntimeInit",l),this.connectRuntime(r)}},abort:function(){var e=this;e.state=r.IDLE,l&&(l.exec.call(e,"Transporter","clear"),e.trigger("TransportingAborted")),n.call(e)},destroy:function(){this.unbindAll(),l=null,this.disconnectRuntime(),n.call(this)}})}return r.IDLE=0,r.BUSY=1,r.DONE=2,r.prototype=n.instance,r}),n("moxie/image/Image",["moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/file/FileReaderSync","moxie/xhr/XMLHttpRequest","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/runtime/Transporter","moxie/core/utils/Env","moxie/core/EventTarget","moxie/file/Blob","moxie/file/File","moxie/core/utils/Encode"],function(e,t,i,n,r,o,s,a,l,u,c,d,p){function f(){function n(e){try{return e||(e=this.exec("Image","getInfo")),this.size=e.size,this.width=e.width,this.height=e.height,this.type=e.type,this.meta=e.meta,""===this.name&&(this.name=e.name),!0}catch(t){return this.trigger("error",t.code),!1}}function u(t){var n=e.typeOf(t);try{if(t instanceof f){if(!t.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);h.apply(this,arguments)}else if(t instanceof c){if(!~e.inArray(t.type,["image/jpeg","image/png"]))throw new i.ImageError(i.ImageError.WRONG_FORMAT);g.apply(this,arguments)}else if(-1!==e.inArray(n,["blob","file"]))u.call(this,new d(null,t),arguments[1]);else if("string"===n)"data:"===t.substr(0,5)?u.call(this,new c(null,{data:t}),arguments[1]):v.apply(this,arguments);else{if("node"!==n||"img"!==t.nodeName.toLowerCase())throw new i.DOMException(i.DOMException.TYPE_MISMATCH_ERR);u.call(this,t.src,arguments[1])}}catch(r){this.trigger("error",r.code)}}function h(t,i){var n=this.connectRuntime(t.ruid);this.ruid=n.uid,n.exec.call(this,"Image","loadFromImage",t,"undefined"===e.typeOf(i)||i)}function g(t,i){function n(e){r.ruid=e.uid,e.exec.call(r,"Image","loadFromBlob",t)}var r=this;r.name=t.name||"",t.isDetached()?(this.bind("RuntimeInit",function(e,t){n(t)}),i&&"string"==typeof i.required_caps&&(i.required_caps=o.parseCaps(i.required_caps)),this.connectRuntime(e.extend({required_caps:{access_image_binary:!0,resize_image:!0}},i))):n(this.connectRuntime(t.ruid))}function v(e,t){var i,n=this;i=new r,i.open("get",e),i.responseType="blob",i.onprogress=function(e){n.trigger(e)},i.onload=function(){g.call(n,i.response,!0)},i.onerror=function(e){n.trigger(e)},i.onloadend=function(){i.destroy()},i.bind("RuntimeError",function(e,t){n.trigger("RuntimeError",t)}),i.send(null,t)}s.call(this),e.extend(this,{uid:e.guid("uid_"),ruid:null,name:"",size:0,width:0,height:0,type:"",meta:{},clone:function(){this.load.apply(this,arguments)},load:function(){u.apply(this,arguments)},resize:function(t){var n,r,o=this,s={x:0,y:0,width:o.width,height:o.height},a=e.extendIf({width:o.width,height:o.height,type:o.type||"image/jpeg",quality:90,crop:!1,fit:!0,preserveHeaders:!0,resample:"default",multipass:!0},t);try{if(!o.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);if(o.width>f.MAX_RESIZE_WIDTH||o.height>f.MAX_RESIZE_HEIGHT)throw new i.ImageError(i.ImageError.MAX_RESOLUTION_ERR);if(n=o.meta&&o.meta.tiff&&o.meta.tiff.Orientation||1,-1!==e.inArray(n,[5,6,7,8])){var l=a.width;a.width=a.height,a.height=l}if(a.crop){switch(r=Math.max(a.width/o.width,a.height/o.height),t.fit?(s.width=Math.min(Math.ceil(a.width/r),o.width),s.height=Math.min(Math.ceil(a.height/r),o.height),r=a.width/s.width):(s.width=Math.min(a.width,o.width),s.height=Math.min(a.height,o.height),r=1),"boolean"==typeof a.crop&&(a.crop="cc"),a.crop.toLowerCase().replace(/_/,"-")){case"rb":case"right-bottom":s.x=o.width-s.width,s.y=o.height-s.height;break;case"cb":case"center-bottom":s.x=Math.floor((o.width-s.width)/2),s.y=o.height-s.height;break;case"lb":case"left-bottom":s.x=0,s.y=o.height-s.height;break;case"lt":case"left-top":s.x=0,s.y=0;break;case"ct":case"center-top":s.x=Math.floor((o.width-s.width)/2),s.y=0;break;case"rt":case"right-top":s.x=o.width-s.width,s.y=0;break;case"rc":case"right-center":case"right-middle":s.x=o.width-s.width,s.y=Math.floor((o.height-s.height)/2);break;case"lc":case"left-center":case"left-middle":s.x=0,s.y=Math.floor((o.height-s.height)/2);break;case"cc":case"center-center":case"center-middle":default:s.x=Math.floor((o.width-s.width)/2),s.y=Math.floor((o.height-s.height)/2)}s.x=Math.max(s.x,0),s.y=Math.max(s.y,0)}else r=Math.min(a.width/o.width,a.height/o.height);this.exec("Image","resize",s,r,a)}catch(u){o.trigger("error",u.code)}},downsize:function(t){var i,n={width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90,crop:!1,preserveHeaders:!0,resample:"default"};i="object"==typeof t?e.extend(n,t):e.extend(n,{width:arguments[0],height:arguments[1],crop:arguments[2],preserveHeaders:arguments[3]}),this.resize(i)},crop:function(e,t,i){this.downsize(e,t,!0,i)},getAsCanvas:function(){if(!l.can("create_canvas"))throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR);var e=this.connectRuntime(this.ruid);return e.exec.call(this,"Image","getAsCanvas")},getAsBlob:function(e,t){if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsBlob",e||"image/jpeg",t||90)},getAsDataURL:function(e,t){if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsDataURL",e||"image/jpeg",t||90)},getAsBinaryString:function(e,t){var i=this.getAsDataURL(e,t);return p.atob(i.substring(i.indexOf("base64,")+7))},embed:function(n,r){function o(t,r){var o=this;if(l.can("create_canvas")){var c=o.getAsCanvas();if(c)return n.appendChild(c),c=null,o.destroy(),void u.trigger("embedded")}var d=o.getAsDataURL(t,r);if(!d)throw new i.ImageError(i.ImageError.WRONG_FORMAT);if(l.can("use_data_uri_of",d.length))n.innerHTML='',o.destroy(),u.trigger("embedded");else{var f=new a;f.bind("TransportingComplete",function(){s=u.connectRuntime(this.result.ruid),u.bind("Embedded",function(){e.extend(s.getShimContainer().style,{top:"0px",left:"0px",width:o.width+"px",height:o.height+"px"}),s=null},999),s.exec.call(u,"ImageView","display",this.result.uid,width,height),o.destroy()}),f.transport(p.atob(d.substring(d.indexOf("base64,")+7)),t,{required_caps:{display_media:!0},runtime_order:"flash,silverlight",container:n})}}var s,u=this,c=e.extend({width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90},r);try{if(!(n=t.get(n)))throw new i.DOMException(i.DOMException.INVALID_NODE_TYPE_ERR);if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);this.width>f.MAX_RESIZE_WIDTH||this.height>f.MAX_RESIZE_HEIGHT;var d=new f;return d.bind("Resize",function(){o.call(this,c.type,c.quality)}),d.bind("Load",function(){d.downsize(c)}),this.meta.thumb&&this.meta.thumb.width>=c.width&&this.meta.thumb.height>=c.height?d.load(this.meta.thumb.data):d.clone(this,!1),d}catch(m){this.trigger("error",m.code)}},destroy:function(){this.ruid&&(this.getRuntime().exec.call(this,"Image","destroy"),this.disconnectRuntime()),this.unbindAll()}}),this.handleEventProps(m),this.bind("Load Resize",function(){return n.call(this)},999)}var m=["progress","load","error","resize","embedded"];return f.MAX_RESIZE_WIDTH=8192,f.MAX_RESIZE_HEIGHT=8192,f.prototype=u.instance,f}),n("moxie/runtime/html5/Runtime",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/Runtime","moxie/core/utils/Env"],function(e,t,i,n){function o(t){var o=this,l=i.capTest,u=i.capTrue,c=e.extend({access_binary:l(window.FileReader||window.File&&window.File.getAsDataURL),access_image_binary:function(){return o.can("access_binary")&&!!a.Image},display_media:l((n.can("create_canvas")||n.can("use_data_uri_over32kb"))&&r("moxie/image/Image")),do_cors:l(window.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest),drag_and_drop:l(function(){var e=document.createElement("div");return("draggable"in e||"ondragstart"in e&&"ondrop"in e)&&("IE"!==n.browser||n.verComp(n.version,9,">"))}()),filter_by_extension:l(function(){return!("Chrome"===n.browser&&n.verComp(n.version,28,"<")||"IE"===n.browser&&n.verComp(n.version,10,"<")||"Safari"===n.browser&&n.verComp(n.version,7,"<")||"Firefox"===n.browser&&n.verComp(n.version,37,"<"))}()),return_response_headers:u,return_response_type:function(e){return!("json"!==e||!window.JSON)||n.can("return_response_type",e)},return_status_code:u,report_upload_progress:l(window.XMLHttpRequest&&(new XMLHttpRequest).upload),resize_image:function(){return o.can("access_binary")&&n.can("create_canvas")},select_file:function(){return n.can("use_fileinput")&&window.File},select_folder:function(){return o.can("select_file")&&("Chrome"===n.browser&&n.verComp(n.version,21,">=")||"Firefox"===n.browser&&n.verComp(n.version,42,">="))},select_multiple:function(){return!(!o.can("select_file")||"Safari"===n.browser&&"Windows"===n.os||"iOS"===n.os&&n.verComp(n.osVersion,"7.0.0",">")&&n.verComp(n.osVersion,"8.0.0","<"))},send_binary_string:l(window.XMLHttpRequest&&((new XMLHttpRequest).sendAsBinary||window.Uint8Array&&window.ArrayBuffer)),send_custom_headers:l(window.XMLHttpRequest),send_multipart:function(){return!!(window.XMLHttpRequest&&(new XMLHttpRequest).upload&&window.FormData)||o.can("send_binary_string")},slice_blob:l(window.File&&(File.prototype.mozSlice||File.prototype.webkitSlice||File.prototype.slice)),stream_upload:function(){return o.can("slice_blob")&&o.can("send_multipart")},summon_file_dialog:function(){return o.can("select_file")&&("Firefox"===n.browser&&n.verComp(n.version,4,">=")||"Opera"===n.browser&&n.verComp(n.version,12,">=")||"IE"===n.browser&&n.verComp(n.version,10,">=")||!!~e.inArray(n.browser,["Chrome","Safari","Edge"]))},upload_filesize:u,use_http_method:u},arguments[2]);i.call(this,t,arguments[1]||s,c),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(o),e=o=null}}(this.destroy)}),e.extend(this.getShim(),a)}var s="html5",a={};return i.addConstructor(s,o),a}),n("moxie/runtime/html5/file/Blob",["moxie/runtime/html5/Runtime","moxie/file/Blob"],function(e,t){function i(){function e(e,t,i){var n;if(!window.File.prototype.slice)return(n=window.File.prototype.webkitSlice||window.File.prototype.mozSlice)?n.call(e,t,i):null;try{return e.slice(),e.slice(t,i)}catch(r){return e.slice(t,i-t)}}this.slice=function(){return new t(this.getRuntime().uid,e.apply(this,arguments))}}return e.Blob=i}),n("moxie/core/utils/Events",["moxie/core/utils/Basic"],function(e){function t(){this.returnValue=!1}function i(){this.cancelBubble=!0}var n={},r="moxie_"+e.guid(),o=function(o,s,a,l){var u,c;s=s.toLowerCase(),o.addEventListener?(u=a,o.addEventListener(s,u,!1)):o.attachEvent&&(u=function(){var e=window.event;e.target||(e.target=e.srcElement),e.preventDefault=t,e.stopPropagation=i,a(e)},o.attachEvent("on"+s,u)),o[r]||(o[r]=e.guid()),n.hasOwnProperty(o[r])||(n[o[r]]={}),c=n[o[r]],c.hasOwnProperty(s)||(c[s]=[]),c[s].push({func:u,orig:a,key:l})},s=function(t,i,o){var s,a;if(i=i.toLowerCase(),t[r]&&n[t[r]]&&n[t[r]][i]){s=n[t[r]][i];for(var l=s.length-1;l>=0&&(s[l].orig!==o&&s[l].key!==o||(t.removeEventListener?t.removeEventListener(i,s[l].func,!1):t.detachEvent&&t.detachEvent("on"+i,s[l].func),s[l].orig=null,s[l].func=null,s.splice(l,1),o===a));l--);if(s.length||delete n[t[r]][i],e.isEmptyObj(n[t[r]])){delete n[t[r]];try{delete t[r]}catch(u){t[r]=a}}}},a=function(t,i){t&&t[r]&&e.each(n[t[r]],function(e,n){s(t,n,i)})};return{addEvent:o,removeEvent:s,removeAllEvents:a}}),n("moxie/runtime/html5/file/FileInput",["moxie/runtime/html5/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,s){function a(){var e,a;i.extend(this,{init:function(l){var u,c,d,p,f,m,h=this,g=h.getRuntime();e=l,d=e.accept.mimes||o.extList2mimes(e.accept,g.can("filter_by_extension")),c=g.getShimContainer(),c.innerHTML='",u=n.get(g.uid),i.extend(u.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),p=n.get(e.browse_button),a=n.getStyle(p,"z-index")||"auto",g.can("summon_file_dialog")&&("static"===n.getStyle(p,"position")&&(p.style.position="relative"),r.addEvent(p,"click",function(e){var t=n.get(g.uid);t&&!t.disabled&&t.click(),e.preventDefault()},h.uid),h.bind("Refresh",function(){f=parseInt(a,10)||1,n.get(e.browse_button).style.zIndex=f,this.getRuntime().getShimContainer().style.zIndex=f-1})),m=g.can("summon_file_dialog")?p:c,r.addEvent(m,"mouseover",function(){h.trigger("mouseenter")},h.uid),r.addEvent(m,"mouseout",function(){h.trigger("mouseleave")},h.uid),r.addEvent(m,"mousedown",function(){h.trigger("mousedown")},h.uid),r.addEvent(n.get(e.container),"mouseup",function(){h.trigger("mouseup")},h.uid),u.onchange=function v(){if(h.files=[],i.each(this.files,function(i){var n="";return!(!e.directory||"."!=i.name)||(i.webkitRelativePath&&(n="/"+i.webkitRelativePath.replace(/^\//,"")),i=new t(g.uid,i),i.relativePath=n,void h.files.push(i))}),"IE"!==s.browser&&"IEMobile"!==s.browser)this.value="";else{var n=this.cloneNode(!0);this.parentNode.replaceChild(n,this),n.onchange=v}h.files.length&&h.trigger("change")},h.trigger({type:"ready",async:!0}),c=null},setOption:function(e,t){var i=this.getRuntime(),r=n.get(i.uid);switch(e){case"accept":if(t){var s=t.mimes||o.extList2mimes(t,i.can("filter_by_extension"));r.setAttribute("accept",s.join(","))}else r.removeAttribute("accept");break;case"directory":t&&i.can("select_folder")?(r.setAttribute("directory",""),r.setAttribute("webkitdirectory","")):(r.removeAttribute("directory"),r.removeAttribute("webkitdirectory"));break;case"multiple":t&&i.can("select_multiple")?r.setAttribute("multiple",""):r.removeAttribute("multiple")}},disable:function(e){var t,i=this.getRuntime();(t=n.get(i.uid))&&(t.disabled=!!e)},destroy:function(){var t=this.getRuntime(),i=t.getShim(),o=t.getShimContainer(),s=e&&n.get(e.container),l=e&&n.get(e.browse_button);s&&r.removeAllEvents(s,this.uid),l&&(r.removeAllEvents(l,this.uid),l.style.zIndex=a),o&&(r.removeAllEvents(o,this.uid),o.innerHTML=""),i.removeInstance(this.uid),e=o=s=l=i=null}})}return e.FileInput=a}),n("moxie/runtime/html5/file/FileDrop",["moxie/runtime/html5/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime"],function(e,t,i,n,r,o){function s(){function e(e){if(!e.dataTransfer||!e.dataTransfer.types)return!1;var t=i.toArray(e.dataTransfer.types||[]);return-1!==i.inArray("Files",t)||-1!==i.inArray("public.file-url",t)||-1!==i.inArray("application/x-moz-file",t)}function s(e,i){if(l(e)){var n=new t(m,e);n.relativePath=i||"",h.push(n)}}function a(e){for(var t=[],n=0;n=")&&l.verComp(l.version,7,"<"),m="Android Browser"===l.browser,h=!1; +if(f=i.url.replace(/^.+?\/([\w\-\.]+)$/,"$1").toLowerCase(),p=u(),p.open(i.method,i.url,i.async,i.user,i.password),r instanceof o)r.isDetached()&&(h=!0),r=r.getSource();else if(r instanceof s){if(r.hasBlob())if(r.getBlob().isDetached())r=d.call(a,r),h=!0;else if((c||m)&&"blob"===t.typeOf(r.getBlob().getSource())&&window.FileReader)return void e.call(a,i,r);if(r instanceof s){var g=new window.FormData;r.each(function(e,t){e instanceof o?g.append(t,e.getSource()):g.append(t,e)}),r=g}}p.upload?(i.withCredentials&&(p.withCredentials=!0),p.addEventListener("load",function(e){a.trigger(e)}),p.addEventListener("error",function(e){a.trigger(e)}),p.addEventListener("progress",function(e){a.trigger(e)}),p.upload.addEventListener("progress",function(e){a.trigger({type:"UploadProgress",loaded:e.loaded,total:e.total})})):p.onreadystatechange=function(){switch(p.readyState){case 1:break;case 2:break;case 3:var e,t;try{n.hasSameOrigin(i.url)&&(e=p.getResponseHeader("Content-Length")||0),p.responseText&&(t=p.responseText.length)}catch(r){e=t=0}a.trigger({type:"progress",lengthComputable:!!e,total:parseInt(e,10),loaded:t});break;case 4:p.onreadystatechange=function(){},0===p.status?a.trigger("error"):a.trigger("load")}},t.isEmptyObj(i.headers)||t.each(i.headers,function(e,t){p.setRequestHeader(t,e)}),""!==i.responseType&&"responseType"in p&&(p.responseType="json"!==i.responseType||l.can("return_response_type","json")?i.responseType:"text"),h?p.sendAsBinary?p.sendAsBinary(r):function(){for(var e=new Uint8Array(r.length),t=0;t0&&o.set(new Uint8Array(t.slice(0,e)),0),o.set(new Uint8Array(r),e),o.set(new Uint8Array(t.slice(e+n)),e+r.byteLength),this.clear(),t=o.buffer,i=new DataView(t);break}default:return t}},length:function(){return t?t.byteLength:0},clear:function(){i=t=null}})}function n(t){function i(e,i,n){n=3===arguments.length?n:t.length-i-1,t=t.substr(0,i)+e+t.substr(n+i)}e.extend(this,{readByteAt:function(e){return t.charCodeAt(e)},writeByteAt:function(e,t){i(String.fromCharCode(t),e,1)},SEGMENT:function(e,n,r){switch(arguments.length){case 1:return t.substr(e);case 2:return t.substr(e,n);case 3:i(null!==r?r:"",e,n);break;default:return t}},length:function(){return t?t.length:0},clear:function(){t=null}})}return e.extend(t.prototype,{littleEndian:!1,read:function(e,t){var i,n,r;if(e+t>this.length())throw new Error("You are trying to read outside the source boundaries.");for(n=this.littleEndian?0:-8*(t-1),r=0,i=0;t>r;r++)i|=this.readByteAt(e+r)<this.length())throw new Error("You are trying to write outside the source boundaries.");for(n=this.littleEndian?0:-8*(i-1),r=0;i>r;r++)this.writeByteAt(e+r,255&t>>Math.abs(n+8*r))},BYTE:function(e){return this.read(e,1)},SHORT:function(e){return this.read(e,2)},LONG:function(e){return this.read(e,4)},SLONG:function(e){var t=this.read(e,4);return t>2147483647?t-4294967296:t},CHAR:function(e){return String.fromCharCode(this.read(e,1))},STRING:function(e,t){return this.asArray("CHAR",e,t).join("")},asArray:function(e,t,i){for(var n=[],r=0;i>r;r++)n[r]=this[e](t+r);return n}}),t}),n("moxie/runtime/html5/image/JPEGHeaders",["moxie/runtime/html5/utils/BinaryReader","moxie/core/Exceptions"],function(e,t){return function i(n){var r,o,s,a=[],l=0;if(r=new e(n),65496!==r.SHORT(0))throw r.clear(),new t.ImageError(t.ImageError.WRONG_FORMAT);for(o=2;o<=r.length();)if(s=r.SHORT(o),s>=65488&&65495>=s)o+=2;else{if(65498===s||65497===s)break;l=r.SHORT(o+2)+2,s>=65505&&65519>=s&&a.push({hex:s,name:"APP"+(15&s),start:o,length:l,segment:r.SEGMENT(o,l)}),o+=l}return r.clear(),{headers:a,restore:function(t){var i,n,r;for(r=new e(t),o=65504==r.SHORT(2)?4+r.SHORT(4):2,n=0,i=a.length;i>n;n++)r.SEGMENT(o,0,a[n].segment),o+=a[n].length;return t=r.SEGMENT(),r.clear(),t},strip:function(t){var n,r,o,s;for(o=new i(t),r=o.headers,o.purge(),n=new e(t),s=r.length;s--;)n.SEGMENT(r[s].start,r[s].length,"");return t=n.SEGMENT(),n.clear(),t},get:function(e){for(var t=[],i=0,n=a.length;n>i;i++)a[i].name===e.toUpperCase()&&t.push(a[i].segment);return t},set:function(e,t){var i,n,r,o=[];for("string"==typeof t?o.push(t):o=t,i=n=0,r=a.length;r>i&&(a[i].name===e.toUpperCase()&&(a[i].segment=o[n],a[i].length=o[n].length,n++),!(n>=o.length));i++);},purge:function(){this.headers=a=[]}}}}),n("moxie/runtime/html5/image/ExifParser",["moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader","moxie/core/Exceptions"],function(e,i,n){function r(o){function s(i,r){var o,s,a,l,u,p,f,m,h=this,g=[],v={},x={1:"BYTE",7:"UNDEFINED",2:"ASCII",3:"SHORT",4:"LONG",5:"RATIONAL",9:"SLONG",10:"SRATIONAL"},y={BYTE:1,UNDEFINED:1,ASCII:1,SHORT:2,LONG:4,RATIONAL:8,SLONG:4,SRATIONAL:8};for(o=h.SHORT(i),s=0;o>s;s++)if(g=[],f=i+2+12*s,a=r[h.SHORT(f)],a!==t){if(l=x[h.SHORT(f+=2)],u=h.LONG(f+=2),p=y[l],!p)throw new n.ImageError(n.ImageError.INVALID_META_ERR);if(f+=4,p*u>4&&(f=h.LONG(f)+d.tiffHeader),f+p*u>=this.length())throw new n.ImageError(n.ImageError.INVALID_META_ERR);"ASCII"!==l?(g=h.asArray(l,f,u),m=1==u?g[0]:g,v[a]=c.hasOwnProperty(a)&&"object"!=typeof m?c[a][m]:m):v[a]=e.trim(h.STRING(f,u).replace(/\0$/,""))}return v}function a(e,t,i){var n,r,o,s=0;if("string"==typeof t){var a=u[e.toLowerCase()];for(var l in a)if(a[l]===t){t=l;break}}n=d[e.toLowerCase()+"IFD"],r=this.SHORT(n);for(var c=0;r>c;c++)if(o=n+12*c+2,this.SHORT(o)==t){s=o+8;break}if(!s)return!1;try{this.write(s,i,4)}catch(p){return!1}return!0}var l,u,c,d,p,f;if(i.call(this,o),u={tiff:{274:"Orientation",270:"ImageDescription",271:"Make",272:"Model",305:"Software",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer"},exif:{36864:"ExifVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",36867:"DateTimeOriginal",33434:"ExposureTime",33437:"FNumber",34855:"ISOSpeedRatings",37377:"ShutterSpeedValue",37378:"ApertureValue",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37386:"FocalLength",41986:"ExposureMode",41987:"WhiteBalance",41990:"SceneCaptureType",41988:"DigitalZoomRatio",41992:"Contrast",41993:"Saturation",41994:"Sharpness"},gps:{0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude"},thumb:{513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength"}},c={ColorSpace:{1:"sRGB",0:"Uncalibrated"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{1:"Daylight",2:"Fliorescent",3:"Tungsten",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 -5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire",1:"Flash fired",5:"Strobe return light not detected",7:"Strobe return light detected",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},ExposureMode:{0:"Auto exposure",1:"Manual exposure",2:"Auto bracket"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},GPSLatitudeRef:{N:"North latitude",S:"South latitude"},GPSLongitudeRef:{E:"East longitude",W:"West longitude"}},d={tiffHeader:10},p=d.tiffHeader,l={clear:this.clear},e.extend(this,{read:function(){try{return r.prototype.read.apply(this,arguments)}catch(e){throw new n.ImageError(n.ImageError.INVALID_META_ERR)}},write:function(){try{return r.prototype.write.apply(this,arguments)}catch(e){throw new n.ImageError(n.ImageError.INVALID_META_ERR)}},UNDEFINED:function(){return this.BYTE.apply(this,arguments)},RATIONAL:function(e){return this.LONG(e)/this.LONG(e+4)},SRATIONAL:function(e){return this.SLONG(e)/this.SLONG(e+4)},ASCII:function(e){return this.CHAR(e)},TIFF:function(){return f||null},EXIF:function(){var t=null;if(d.exifIFD){try{t=s.call(this,d.exifIFD,u.exif)}catch(i){return null}if(t.ExifVersion&&"array"===e.typeOf(t.ExifVersion)){for(var n=0,r="";n=65472&&65475>=t)return n+=5,{height:e.SHORT(n),width:e.SHORT(n+=2)};i=e.SHORT(n+=2),n+=i-2}return null}function a(){var e,t,i=d.thumb();return i&&(e=new n(i),t=s(e),e.clear(),t)?(t.data=i,t):null}function l(){d&&c&&u&&(d.clear(),c.purge(),u.clear(),p=c=d=u=null)}var u,c,d,p;if(u=new n(o),65496!==u.SHORT(0))throw new t.ImageError(t.ImageError.WRONG_FORMAT);c=new i(o);try{d=new r(c.get("app1")[0])}catch(f){}p=s.call(this),e.extend(this,{type:"image/jpeg",size:u.length(),width:p&&p.width||0,height:p&&p.height||0,setExif:function(t,i){return!!d&&("object"===e.typeOf(t)?e.each(t,function(e,t){d.setExif(t,e)}):d.setExif(t,i),void c.set("app1",d.SEGMENT()))},writeHeaders:function(){return arguments.length?c.restore(arguments[0]):c.restore(o)},stripHeaders:function(e){return c.strip(e)},purge:function(){l.call(this)}}),d&&(this.meta={tiff:d.TIFF(),exif:d.EXIF(),gps:d.GPS(),thumb:a()})}return o}),n("moxie/runtime/html5/image/PNG",["moxie/core/Exceptions","moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader"],function(e,t,i){function n(n){function r(){var e,t;return e=s.call(this,8),"IHDR"==e.type?(t=e.start,{width:a.LONG(t),height:a.LONG(t+=4)}):null}function o(){a&&(a.clear(),n=c=l=u=a=null)}function s(e){var t,i,n,r;return t=a.LONG(e),i=a.STRING(e+=4,4),n=e+=4,r=a.LONG(e+t),{length:t,type:i,start:n,CRC:r}}var a,l,u,c;a=new i(n),function(){var t=0,i=0,n=[35152,20039,3338,6666];for(i=0;in||n>2)&&(n=.5>n?.5:2,s=!0);var a=t(i,n);return s?e(a,o/a.width):a}function t(e,t){var i=e.width,n=e.height,r=Math.floor(i*t),o=Math.floor(n*t),s=document.createElement("canvas");return s.width=r,s.height=o,s.getContext("2d").drawImage(e,0,0,i,n,0,0,r,o),e=null,s}return{scale:e}}),n("moxie/runtime/html5/image/Image",["moxie/runtime/html5/Runtime","moxie/core/utils/Basic","moxie/core/Exceptions","moxie/core/utils/Encode","moxie/file/Blob","moxie/file/File","moxie/runtime/html5/image/ImageInfo","moxie/runtime/html5/image/ResizerCanvas","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,s,a,l){function u(){function e(){if(!x&&!g)throw new i.ImageError(i.DOMException.INVALID_STATE_ERR);return x||g}function u(){var t=e();return"canvas"==t.nodeName.toLowerCase()?t:(x=document.createElement("canvas"),x.width=t.width,x.height=t.height,x.getContext("2d").drawImage(t,0,0),x)}function c(e){return n.atob(e.substring(e.indexOf("base64,")+7))}function d(e,t){return"data:"+(t||"")+";base64,"+n.btoa(e)}function p(e){var t=this;g=new Image,g.onerror=function(){h.call(this),t.trigger("error",i.ImageError.WRONG_FORMAT)},g.onload=function(){t.trigger("load")},g.src="data:"==e.substr(0,5)?e:d(e,E.type)}function f(e,t){var n,r=this;return window.FileReader?(n=new FileReader,n.onload=function(){t(this.result)},n.onerror=function(){r.trigger("error",i.ImageError.WRONG_FORMAT)},void n.readAsDataURL(e)):t(e.getAsDataURL())}function m(e,i){var n=Math.PI/180,r=document.createElement("canvas"),o=r.getContext("2d"),s=e.width,a=e.height;switch(t.inArray(i,[5,6,7,8])>-1?(r.width=a,r.height=s):(r.width=s,r.height=a),i){case 2:o.translate(s,0),o.scale(-1,1);break;case 3:o.translate(s,a),o.rotate(180*n);break;case 4:o.translate(0,a),o.scale(1,-1);break;case 5:o.rotate(90*n),o.scale(1,-1);break;case 6:o.rotate(90*n),o.translate(0,-a);break;case 7:o.rotate(90*n),o.translate(s,-a),o.scale(-1,1);break;case 8:o.rotate(-90*n),o.translate(-s,0)}return o.drawImage(e,0,0,s,a),r}function h(){v&&(v.purge(),v=null),y=g=x=E=null,b=!1}var g,v,x,y,E,w=this,b=!1,_=!0;t.extend(this,{loadFromBlob:function(e){var t=this,n=t.getRuntime(),r=!(arguments.length>1)||arguments[1];if(!n.can("access_binary"))throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR);return E=e,e.isDetached()?(y=e.getSource(),void p.call(this,y)):void f.call(this,e.getSource(),function(e){r&&(y=c(e)),p.call(t,e)})},loadFromImage:function(e,t){this.meta=e.meta,E=new o(null,{name:e.name,size:e.size,type:e.type}),p.call(this,t?y=e.getAsBinaryString():e.getAsDataURL())},getInfo:function(){var t,i=this.getRuntime();return!v&&y&&i.can("access_image_binary")&&(v=new s(y)),t={width:e().width||0,height:e().height||0,type:E.type||l.getFileMime(E.name),size:y&&y.length||E.size||0,name:E.name||"",meta:null},_&&(t.meta=v&&v.meta||this.meta||{},!t.meta||!t.meta.thumb||t.meta.thumb.data instanceof r||(t.meta.thumb.data=new r(null,{type:"image/jpeg",data:t.meta.thumb.data}))),t},resize:function(t,i,n){var r=document.createElement("canvas");if(r.width=t.width,r.height=t.height,r.getContext("2d").drawImage(e(),t.x,t.y,t.width,t.height,0,0,r.width,r.height),x=a.scale(r,i),_=n.preserveHeaders,!_){var o=this.meta&&this.meta.tiff&&this.meta.tiff.Orientation||1;x=m(x,o)}this.width=x.width,this.height=x.height,b=!0,this.trigger("Resize")},getAsCanvas:function(){return x||(x=u()),x.id=this.uid+"_canvas",x},getAsBlob:function(e,t){return e!==this.type?(b=!0,new o(null,{name:E.name||"",type:e,data:w.getAsDataURL(e,t)})):new o(null,{name:E.name||"",type:e,data:w.getAsBinaryString(e,t)})},getAsDataURL:function(e){var t=arguments[1]||90;if(!b)return g.src;if(u(),"image/jpeg"!==e)return x.toDataURL("image/png");try{return x.toDataURL("image/jpeg",t/100)}catch(i){return x.toDataURL("image/jpeg")}},getAsBinaryString:function(e,t){if(!b)return y||(y=c(w.getAsDataURL(e,t))),y;if("image/jpeg"!==e)y=c(w.getAsDataURL(e,t));else{var i;t||(t=90),u();try{i=x.toDataURL("image/jpeg",t/100)}catch(n){i=x.toDataURL("image/jpeg")}y=c(i),v&&(y=v.stripHeaders(y),_&&(v.meta&&v.meta.exif&&v.setExif({PixelXDimension:this.width,PixelYDimension:this.height}),y=v.writeHeaders(y)),v.purge(),v=null)}return b=!1,y},destroy:function(){w=null,h.call(this),this.getRuntime().getShim().removeInstance(this.uid)}})}return e.Image=u}),n("moxie/runtime/flash/Runtime",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/runtime/Runtime"],function(e,t,i,n,o){function s(){var e;try{e=navigator.plugins["Shockwave Flash"],e=e.description}catch(t){try{e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version")}catch(i){e="0.0"}}return e=e.match(/\d+/g),parseFloat(e[0]+"."+e[1])}function a(e){var n=i.get(e);n&&"OBJECT"==n.nodeName&&("IE"===t.browser?(n.style.display="none",function r(){4==n.readyState?l(e):setTimeout(r,10)}()):n.parentNode.removeChild(n))}function l(e){var t=i.get(e);if(t){for(var n in t)"function"==typeof t[n]&&(t[n]=null);t.parentNode.removeChild(t)}}function u(l){var u,p=this;l=e.extend({swf_url:t.swf_url},l),o.call(this,l,c,{access_binary:function(e){return e&&"browser"===p.mode},access_image_binary:function(e){return e&&"browser"===p.mode},display_media:o.capTest(r("moxie/image/Image")),do_cors:o.capTrue,drag_and_drop:!1,report_upload_progress:function(){return"client"===p.mode},resize_image:o.capTrue,return_response_headers:!1,return_response_type:function(t){return!("json"!==t||!window.JSON)||(!e.arrayDiff(t,["","text","document"])||"browser"===p.mode)},return_status_code:function(t){return"browser"===p.mode||!e.arrayDiff(t,[200,404])},select_file:o.capTrue,select_multiple:o.capTrue,send_binary_string:function(e){return e&&"browser"===p.mode},send_browser_cookies:function(e){return e&&"browser"===p.mode},send_custom_headers:function(e){return e&&"browser"===p.mode},send_multipart:o.capTrue,slice_blob:function(e){return e&&"browser"===p.mode},stream_upload:function(e){return e&&"browser"===p.mode},summon_file_dialog:!1,upload_filesize:function(t){return e.parseSizeStr(t)<=2097152||"client"===p.mode},use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}},{access_binary:function(e){return e?"browser":"client"},access_image_binary:function(e){return e?"browser":"client"},report_upload_progress:function(e){return e?"browser":"client"},return_response_type:function(t){return e.arrayDiff(t,["","text","json","document"])?"browser":["client","browser"]},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"browser":["client","browser"]},send_binary_string:function(e){return e?"browser":"client"},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"browser":"client"},slice_blob:function(e){return e?"browser":"client"},stream_upload:function(e){return e?"client":"browser"},upload_filesize:function(t){return e.parseSizeStr(t)>=2097152?"client":"browser"}},"client"),s()<11.3&&(this.mode=!1),e.extend(this,{getShim:function(){return i.get(this.uid)},shimExec:function(e,t){var i=[].slice.call(arguments,2);return p.getShim().exec(this.uid,e,t,i)},init:function(){var i,r,o;o=this.getShimContainer(),e.extend(o.style,{position:"absolute",top:"-8px",left:"-8px",width:"9px",height:"9px",overflow:"hidden"}),i='',"IE"===t.browser?(r=document.createElement("div"),o.appendChild(r),r.outerHTML=i,r=o=null):o.innerHTML=i,u=setTimeout(function(){p&&!p.initialized&&p.trigger("Error",new n.RuntimeError(n.RuntimeError.NOT_INIT_ERR))},5e3)},destroy:function(e){return function(){a(p.uid),e.call(p),clearTimeout(u),l=u=e=p=null}}(this.destroy)},d)}var c="flash",d={};return o.addConstructor(c,u),d}),n("moxie/runtime/flash/file/Blob",["moxie/runtime/flash/Runtime","moxie/file/Blob"],function(e,t){var i={slice:function(e,i,n,r){var o=this.getRuntime();return 0>i?i=Math.max(e.size+i,0):i>0&&(i=Math.min(i,e.size)),0>n?n=Math.max(e.size+n,0):n>0&&(n=Math.min(n,e.size)),e=o.shimExec.call(this,"Blob","slice",i,n,r||""),e&&(e=new t(o.uid,e)),e}};return e.Blob=i}),n("moxie/runtime/flash/file/FileInput",["moxie/runtime/flash/Runtime","moxie/file/File","moxie/core/utils/Basic"],function(e,t,i){var n={init:function(e){var n=this,r=this.getRuntime();this.bind("Change",function(){var e=r.shimExec.call(n,"FileInput","getFiles");n.files=[],i.each(e,function(e){n.files.push(new t(r.uid,e))})},999),this.getRuntime().shimExec.call(this,"FileInput","init",{accept:e.accept,multiple:e.multiple}),this.trigger("ready")}};return e.FileInput=n}),n("moxie/runtime/flash/file/FileReader",["moxie/runtime/flash/Runtime","moxie/core/utils/Encode"],function(e,t){function i(e,i){switch(i){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var n={read:function(e,t){var n=this;return n.result="","readAsDataURL"===e&&(n.result="data:"+(t.type||"")+";base64,"),n.bind("Progress",function(t,r){r&&(n.result+=i(r,e))},999),n.getRuntime().shimExec.call(this,"FileReader","readAsBase64",t.uid)}};return e.FileReader=n}),n("moxie/runtime/flash/file/FileReaderSync",["moxie/runtime/flash/Runtime","moxie/core/utils/Encode"],function(e,t){function i(e,i){switch(i){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var n={read:function(e,t){var n,r=this.getRuntime();return(n=r.shimExec.call(this,"FileReaderSync","readAsBase64",t.uid))?("readAsDataURL"===e&&(n="data:"+(t.type||"")+";base64,"+n),i(n,e,t.type)):null}};return e.FileReaderSync=n}),n("moxie/runtime/flash/runtime/Transporter",["moxie/runtime/flash/Runtime","moxie/file/Blob"],function(e,t){var i={getAsBlob:function(e){var i=this.getRuntime(),n=i.shimExec.call(this,"Transporter","getAsBlob",e);return n?new t(i.uid,n):null}};return e.Transporter=i}),n("moxie/runtime/flash/xhr/XMLHttpRequest",["moxie/runtime/flash/Runtime","moxie/core/utils/Basic","moxie/file/Blob","moxie/file/File","moxie/file/FileReaderSync","moxie/runtime/flash/file/FileReaderSync","moxie/xhr/FormData","moxie/runtime/Transporter","moxie/runtime/flash/runtime/Transporter"],function(e,t,i,n,r,o,s,a){var l={send:function(e,n){function r(){e.transport=c.mode,c.shimExec.call(u,"XMLHttpRequest","send",e,n)}function o(e,t){c.shimExec.call(u,"XMLHttpRequest","appendBlob",e,t.uid),n=null,r()}function l(e,t){var i=new a;i.bind("TransportingComplete",function(){t(this.result)}),i.transport(e.getSource(),e.type,{ruid:c.uid})}var u=this,c=u.getRuntime();if(t.isEmptyObj(e.headers)||t.each(e.headers,function(e,t){c.shimExec.call(u,"XMLHttpRequest","setRequestHeader",t,e.toString())}),n instanceof s){var d;if(n.each(function(e,t){e instanceof i?d=t:c.shimExec.call(u,"XMLHttpRequest","append",t,e)}),n.hasBlob()){var p=n.getBlob();p.isDetached()?l(p,function(e){p.destroy(),o(d,e)}):o(d,p)}else n=null,r()}else n instanceof i?n.isDetached()?l(n,function(e){n.destroy(),n=e.uid,r()}):(n=n.uid,r()):r()},getResponse:function(e){var i,o,s=this.getRuntime();if(o=s.shimExec.call(this,"XMLHttpRequest","getResponseAsBlob")){if(o=new n(s.uid,o),"blob"===e)return o;try{if(i=new r,~t.inArray(e,["","text"]))return i.readAsText(o);if("json"===e&&window.JSON)return JSON.parse(i.readAsText(o))}finally{o.destroy()}}return null},abort:function(){var e=this.getRuntime();e.shimExec.call(this,"XMLHttpRequest","abort"),this.dispatchEvent("readystatechange"),this.dispatchEvent("abort")}};return e.XMLHttpRequest=l}),n("moxie/runtime/flash/image/Image",["moxie/runtime/flash/Runtime","moxie/core/utils/Basic","moxie/runtime/Transporter","moxie/file/Blob","moxie/file/FileReaderSync"],function(e,t,i,n,r){var o={loadFromBlob:function(e){function t(e){r.shimExec.call(n,"Image","loadFromBlob",e.uid),n=r=null}var n=this,r=n.getRuntime();if(e.isDetached()){var o=new i;o.bind("TransportingComplete",function(){t(o.result.getSource())}),o.transport(e.getSource(),e.type,{ruid:r.uid})}else t(e.getSource())},loadFromImage:function(e){var t=this.getRuntime();return t.shimExec.call(this,"Image","loadFromImage",e.uid)},getInfo:function(){var e=this.getRuntime(),t=e.shimExec.call(this,"Image","getInfo");return!t.meta||!t.meta.thumb||t.meta.thumb.data instanceof n||(t.meta.thumb.data=new n(e.uid,t.meta.thumb.data)),t},getAsBlob:function(e,t){var i=this.getRuntime(),r=i.shimExec.call(this,"Image","getAsBlob",e,t);return r?new n(i.uid,r):null},getAsDataURL:function(){var e,t=this.getRuntime(),i=t.Image.getAsBlob.apply(this,arguments);return i?(e=new r,e.readAsDataURL(i)):null}};return e.Image=o}),n("moxie/runtime/silverlight/Runtime",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/runtime/Runtime"],function(e,t,i,n,o){function s(e){var t,i,n,r,o,s=!1,a=null,l=0;try{try{a=new ActiveXObject("AgControl.AgControl"),a.IsVersionSupported(e)&&(s=!0),a=null}catch(u){var c=navigator.plugins["Silverlight Plug-In"];if(c){for(t=c.description,"1.0.30226.2"===t&&(t="2.0.30226.2"),i=t.split(".");i.length>3;)i.pop();for(;i.length<4;)i.push(0);for(n=e.split(".");n.length>4;)n.pop();do r=parseInt(n[l],10),o=parseInt(i[l],10),l++;while(l=r&&!isNaN(r)&&(s=!0)}}}catch(d){s=!1}return s}function a(a){var c,d=this;a=e.extend({xap_url:t.xap_url},a),o.call(this,a,l,{access_binary:o.capTrue,access_image_binary:o.capTrue,display_media:o.capTest(r("moxie/image/Image")),do_cors:o.capTrue,drag_and_drop:!1,report_upload_progress:o.capTrue,resize_image:o.capTrue,return_response_headers:function(e){return e&&"client"===d.mode},return_response_type:function(e){return"json"!==e||!!window.JSON},return_status_code:function(t){return"client"===d.mode||!e.arrayDiff(t,[200,404])},select_file:o.capTrue,select_multiple:o.capTrue,send_binary_string:o.capTrue,send_browser_cookies:function(e){return e&&"browser"===d.mode},send_custom_headers:function(e){return e&&"client"===d.mode},send_multipart:o.capTrue,slice_blob:o.capTrue,stream_upload:!0,summon_file_dialog:!1,upload_filesize:o.capTrue,use_http_method:function(t){return"client"===d.mode||!e.arrayDiff(t,["GET","POST"])}},{return_response_headers:function(e){return e?"client":"browser"},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"client":["client","browser"]},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"client":"browser"},use_http_method:function(t){return e.arrayDiff(t,["GET","POST"])?"client":["client","browser"]}}),s("2.0.31005.0")&&"Opera"!==t.browser||(this.mode=!1),e.extend(this,{getShim:function(){return i.get(this.uid).content.Moxie},shimExec:function(e,t){var i=[].slice.call(arguments,2);return d.getShim().exec(this.uid,e,t,i)},init:function(){var e;e=this.getShimContainer(),e.innerHTML='',c=setTimeout(function(){d&&!d.initialized&&d.trigger("Error",new n.RuntimeError(n.RuntimeError.NOT_INIT_ERR))},"Windows"!==t.OS?1e4:5e3)},destroy:function(e){return function(){e.call(d),clearTimeout(c),a=c=e=d=null}}(this.destroy)},u)}var l="silverlight",u={};return o.addConstructor(l,a),u}),n("moxie/runtime/silverlight/file/Blob",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/file/Blob"],function(e,t,i){return e.Blob=t.extend({},i)}),n("moxie/runtime/silverlight/file/FileInput",["moxie/runtime/silverlight/Runtime","moxie/file/File","moxie/core/utils/Basic"],function(e,t,i){function n(e){for(var t="",i=0;ii;i++)t=a.keys[i],s=a[t],s&&(/^(\d|[1-9]\d+)$/.test(s)?s=parseInt(s,10):/^\d*\.\d+$/.test(s)&&(s=parseFloat(s)),r.meta[e][t]=s)}),!r.meta||!r.meta.thumb||r.meta.thumb.data instanceof i||(r.meta.thumb.data=new i(e.uid,r.meta.thumb.data))),r.width=parseInt(o.width,10),r.height=parseInt(o.height,10),r.size=parseInt(o.size,10),r.type=o.type,r.name=o.name,r},resize:function(e,t,i){this.getRuntime().shimExec.call(this,"Image","resize",e.x,e.y,e.width,e.height,t,i.preserveHeaders,i.resample)}})}),n("moxie/runtime/html4/Runtime",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/Runtime","moxie/core/utils/Env"],function(e,t,i,n){function o(t){var o=this,l=i.capTest,u=i.capTrue;i.call(this,t,s,{access_binary:l(window.FileReader||window.File&&File.getAsDataURL),access_image_binary:!1,display_media:l((n.can("create_canvas")||n.can("use_data_uri_over32kb"))&&r("moxie/image/Image")),do_cors:!1,drag_and_drop:!1,filter_by_extension:l(function(){return!("Chrome"===n.browser&&n.verComp(n.version,28,"<")||"IE"===n.browser&&n.verComp(n.version,10,"<")||"Safari"===n.browser&&n.verComp(n.version,7,"<")||"Firefox"===n.browser&&n.verComp(n.version,37,"<"))}()),resize_image:function(){return a.Image&&o.can("access_binary")&&n.can("create_canvas")},report_upload_progress:!1,return_response_headers:!1,return_response_type:function(t){return!("json"!==t||!window.JSON)||!!~e.inArray(t,["text","document",""])},return_status_code:function(t){return!e.arrayDiff(t,[200,404])},select_file:function(){return n.can("use_fileinput")},select_multiple:!1,send_binary_string:!1,send_custom_headers:!1,send_multipart:!0,slice_blob:!1,stream_upload:function(){return o.can("select_file")},summon_file_dialog:function(){return o.can("select_file")&&("Firefox"===n.browser&&n.verComp(n.version,4,">=")||"Opera"===n.browser&&n.verComp(n.version,12,">=")||"IE"===n.browser&&n.verComp(n.version,10,">=")||!!~e.inArray(n.browser,["Chrome","Safari"]))},upload_filesize:u,use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}}),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(o),e=o=null}}(this.destroy)}),e.extend(this.getShim(),a)}var s="html4",a={};return i.addConstructor(s,o),a}),n("moxie/runtime/html4/file/FileInput",["moxie/runtime/html4/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,s){function a(){function e(){var o,u,d,p,f,m,h=this,g=h.getRuntime();m=i.guid("uid_"),o=g.getShimContainer(),a&&(d=n.get(a+"_form"),d&&i.extend(d.style,{top:"100%"})),p=document.createElement("form"),p.setAttribute("id",m+"_form"),p.setAttribute("method","post"),p.setAttribute("enctype","multipart/form-data"),p.setAttribute("encoding","multipart/form-data"),i.extend(p.style,{overflow:"hidden",position:"absolute",top:0,left:0,width:"100%",height:"100%"}),f=document.createElement("input"),f.setAttribute("id",m),f.setAttribute("type","file"),f.setAttribute("accept",c.join(",")),i.extend(f.style,{fontSize:"999px",opacity:0}),p.appendChild(f),o.appendChild(p),i.extend(f.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),"IE"===s.browser&&s.verComp(s.version,10,"<")&&i.extend(f.style,{filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=0)"}),f.onchange=function(){var i;if(this.value){if(this.files){if(i=this.files[0],0===i.size)return void p.parentNode.removeChild(p)}else i={name:this.value};i=new t(g.uid,i),this.onchange=function(){},e.call(h),h.files=[i],f.setAttribute("id",i.uid),p.setAttribute("id",i.uid+"_form"),h.trigger("change"),f=p=null}},g.can("summon_file_dialog")&&(u=n.get(l.browse_button),r.removeEvent(u,"click",h.uid),r.addEvent(u,"click",function(e){f&&!f.disabled&&f.click(),e.preventDefault()},h.uid)),a=m,o=d=u=null}var a,l,u,c=[];i.extend(this,{init:function(t){var i,s=this,a=s.getRuntime();l=t,c=t.accept.mimes||o.extList2mimes(t.accept,a.can("filter_by_extension")),i=a.getShimContainer(),function(){var e,o,c;e=n.get(t.browse_button),u=n.getStyle(e,"z-index")||"auto",a.can("summon_file_dialog")&&("static"===n.getStyle(e,"position")&&(e.style.position="relative"),s.bind("Refresh",function(){o=parseInt(u,10)||1,n.get(l.browse_button).style.zIndex=o,this.getRuntime().getShimContainer().style.zIndex=o-1})),c=a.can("summon_file_dialog")?e:i,r.addEvent(c,"mouseover",function(){s.trigger("mouseenter")},s.uid),r.addEvent(c,"mouseout",function(){s.trigger("mouseleave")},s.uid),r.addEvent(c,"mousedown",function(){s.trigger("mousedown")},s.uid),r.addEvent(n.get(t.container),"mouseup",function(){s.trigger("mouseup")},s.uid),e=null}(),e.call(this),i=null,s.trigger({type:"ready",async:!0})},setOption:function(e,t){var i,r=this.getRuntime();"accept"==e&&(c=t.mimes||o.extList2mimes(t,r.can("filter_by_extension"))),i=n.get(a),i&&i.setAttribute("accept",c.join(","))},disable:function(e){var t;(t=n.get(a))&&(t.disabled=!!e)},destroy:function(){var e=this.getRuntime(),t=e.getShim(),i=e.getShimContainer(),o=l&&n.get(l.container),s=l&&n.get(l.browse_button);o&&r.removeAllEvents(o,this.uid),s&&(r.removeAllEvents(s,this.uid),s.style.zIndex=u),i&&(r.removeAllEvents(i,this.uid),i.innerHTML=""),t.removeInstance(this.uid),a=c=l=i=o=s=t=null}})}return e.FileInput=a}),n("moxie/runtime/html4/file/FileReader",["moxie/runtime/html4/Runtime","moxie/runtime/html5/file/FileReader"],function(e,t){return e.FileReader=t}),n("moxie/runtime/html4/xhr/XMLHttpRequest",["moxie/runtime/html4/Runtime","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Url","moxie/core/Exceptions","moxie/core/utils/Events","moxie/file/Blob","moxie/xhr/FormData"],function(e,t,i,n,r,o,s,a){function l(){function e(e){var t,n,r,s,a=this,l=!1;if(c){if(t=c.id.replace(/_iframe$/,""),n=i.get(t+"_form")){for(r=n.getElementsByTagName("input"),s=r.length;s--;)switch(r[s].getAttribute("type")){case"hidden":r[s].parentNode.removeChild(r[s]);break;case"file":l=!0}r=[],l||n.parentNode.removeChild(n),n=null}setTimeout(function(){o.removeEvent(c,"load",a.uid),c.parentNode&&c.parentNode.removeChild(c);var t=a.getRuntime().getShimContainer();t.children.length||t.parentNode.removeChild(t),t=c=null,e()},1)}}var l,u,c;t.extend(this,{send:function(d,p){function f(){var i=y.getShimContainer()||document.body,r=document.createElement("div");r.innerHTML='',c=r.firstChild,i.appendChild(c),o.addEvent(c,"load",function(){var i;try{i=c.contentWindow.document||c.contentDocument||window.frames[c.id].document,/^4(0[0-9]|1[0-7]|2[2346])\s/.test(i.title)?l=i.title.replace(/^(\d+).*$/,"$1"):(l=200,u=t.trim(i.body.innerHTML),x.trigger({type:"progress",loaded:u.length,total:u.length}),v&&x.trigger({type:"uploadprogress",loaded:v.size||1025,total:v.size||1025}))}catch(r){if(!n.hasSameOrigin(d.url))return void e.call(x,function(){x.trigger("error")});l=404}e.call(x,function(){x.trigger("load")})},x.uid)}var m,h,g,v,x=this,y=x.getRuntime();if(l=u=null,p instanceof a&&p.hasBlob()){if(v=p.getBlob(),m=v.uid,g=i.get(m),h=i.get(m+"_form"),!h)throw new r.DOMException(r.DOMException.NOT_FOUND_ERR)}else m=t.guid("uid_"),h=document.createElement("form"),h.setAttribute("id",m+"_form"),h.setAttribute("method",d.method),h.setAttribute("enctype","multipart/form-data"),h.setAttribute("encoding","multipart/form-data"),y.getShimContainer().appendChild(h);h.setAttribute("target",m+"_iframe"),p instanceof a&&p.each(function(e,i){if(e instanceof s)g&&g.setAttribute("name",i);else{var n=document.createElement("input");t.extend(n,{type:"hidden",name:i,value:e}),g?h.insertBefore(n,g):h.appendChild(n)}}),h.setAttribute("action",d.url),f(),h.submit(),x.trigger("loadstart")},getStatus:function(){return l},getResponse:function(e){if("json"===e&&"string"===t.typeOf(u)&&window.JSON)try{return JSON.parse(u.replace(/^\s*]*>/,"").replace(/<\/pre>\s*$/,""))}catch(i){return null}return u},abort:function(){var t=this;c&&c.contentWindow&&(c.contentWindow.stop?c.contentWindow.stop():c.contentWindow.document.execCommand?c.contentWindow.document.execCommand("Stop"):c.src="about:blank"),e.call(this,function(){t.dispatchEvent("abort")})}})}return e.XMLHttpRequest=l}),n("moxie/runtime/html4/image/Image",["moxie/runtime/html4/Runtime","moxie/runtime/html5/image/Image"],function(e,t){return e.Image=t}),s(["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Dom","moxie/core/EventTarget","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/file/Blob","moxie/core/I18n","moxie/core/utils/Mime","moxie/file/FileInput","moxie/file/File","moxie/file/FileDrop","moxie/file/FileReader","moxie/core/utils/Url","moxie/runtime/RuntimeTarget","moxie/xhr/FormData","moxie/xhr/XMLHttpRequest","moxie/runtime/Transporter","moxie/image/Image","moxie/core/utils/Events","moxie/runtime/html5/image/ResizerCanvas"])}(this)}),!function(e,t){var i=function(){var e={};return t.apply(e,arguments),e.plupload};"function"==typeof define&&define.amd?define("plupload",["./moxie"],i):"object"==typeof module&&module.exports?module.exports=i(require("./moxie")):e.plupload=i(e.moxie)}(this||window,function(e){!function(e,t,i){function n(e){function t(e,t,i){var r={chunks:"slice_blob",jpgresize:"send_binary_string",pngresize:"send_binary_string",progress:"report_upload_progress",multi_selection:"select_multiple",dragdrop:"drag_and_drop",drop_element:"drag_and_drop",headers:"send_custom_headers",urlstream_upload:"send_binary_string",canSendBinary:"send_binary",triggerDialog:"summon_file_dialog"};r[e]?n[r[e]]=t:i||(n[e]=t)}var i=e.required_features,n={};return"string"==typeof i?l.each(i.split(/\s*,\s*/),function(e){t(e,!0)}):"object"==typeof i?l.each(i,function(e,i){t(i,e)}):i===!0&&(e.chunk_size>0&&(n.slice_blob=!0),l.isEmptyObj(e.resize)&&e.multipart||(n.send_binary_string=!0),l.each(e,function(e,i){t(i,!!e,!0)})),n}var r=window.setTimeout,o={},s=t.core.utils,a=t.runtime.Runtime,l={VERSION:"2.2.1",STOPPED:1,STARTED:2,QUEUED:1,UPLOADING:2,FAILED:4,DONE:5,GENERIC_ERROR:-100,HTTP_ERROR:-200,IO_ERROR:-300,SECURITY_ERROR:-400,INIT_ERROR:-500,FILE_SIZE_ERROR:-600,FILE_EXTENSION_ERROR:-601,FILE_DUPLICATE_ERROR:-602,IMAGE_FORMAT_ERROR:-700,MEMORY_ERROR:-701,IMAGE_DIMENSIONS_ERROR:-702,mimeTypes:s.Mime.mimes,ua:s.Env,typeOf:s.Basic.typeOf,extend:s.Basic.extend,guid:s.Basic.guid,getAll:function(e){var t,i=[];"array"!==l.typeOf(e)&&(e=[e]);for(var n=e.length;n--;)t=l.get(e[n]),t&&i.push(t);return i.length?i:null},get:s.Dom.get,each:s.Basic.each,getPos:s.Dom.getPos,getSize:s.Dom.getSize,xmlEncode:function(e){var t={"<":"lt",">":"gt","&":"amp",'"':"quot","'":"#39"},i=/[<>&\"\']/g;return e?(""+e).replace(i,function(e){return t[e]?"&"+t[e]+";":e}):e},toArray:s.Basic.toArray,inArray:s.Basic.inArray,inSeries:s.Basic.inSeries,addI18n:t.core.I18n.addI18n,translate:t.core.I18n.translate,sprintf:s.Basic.sprintf,isEmptyObj:s.Basic.isEmptyObj,hasClass:s.Dom.hasClass,addClass:s.Dom.addClass,removeClass:s.Dom.removeClass,getStyle:s.Dom.getStyle,addEvent:s.Events.addEvent,removeEvent:s.Events.removeEvent,removeAllEvents:s.Events.removeAllEvents,cleanName:function(e){var t,i;for(i=[/[\300-\306]/g,"A",/[\340-\346]/g,"a",/\307/g,"C",/\347/g,"c",/[\310-\313]/g,"E",/[\350-\353]/g,"e",/[\314-\317]/g,"I",/[\354-\357]/g,"i",/\321/g,"N",/\361/g,"n",/[\322-\330]/g,"O",/[\362-\370]/g,"o",/[\331-\334]/g,"U",/[\371-\374]/g,"u"],t=0;t0?"&":"?")+i),e},formatSize:function(e){function t(e,t){return Math.round(e*Math.pow(10,t))/Math.pow(10,t)}if(e===i||/\D/.test(e))return l.translate("N/A");var n=Math.pow(1024,4);return e>n?t(e/n,1)+" "+l.translate("tb"):e>(n/=1024)?t(e/n,1)+" "+l.translate("gb"):e>(n/=1024)?t(e/n,1)+" "+l.translate("mb"):e>1024?Math.round(e/1024)+" "+l.translate("kb"):e+" "+l.translate("b")},parseSize:s.Basic.parseSizeStr,predictRuntime:function(e,t){var i,n;return i=new l.Uploader(e),n=a.thatCan(i.getOption().required_features,t||e.runtimes),i.destroy(),n},addFileFilter:function(e,t){o[e]=t}};l.addFileFilter("mime_types",function(e,t,i){e.length&&!e.regexp.test(t.name)?(this.trigger("Error",{code:l.FILE_EXTENSION_ERROR,message:l.translate("File extension error."),file:t}),i(!1)):i(!0)}),l.addFileFilter("max_file_size",function(e,t,i){var n;e=l.parseSize(e),t.size!==n&&e&&t.size>e?(this.trigger("Error",{code:l.FILE_SIZE_ERROR,message:l.translate("File size error."),file:t}),i(!1)):i(!0)}),l.addFileFilter("prevent_duplicates",function(e,t,i){if(e)for(var n=this.files.length;n--;)if(t.name===this.files[n].name&&t.size===this.files[n].size)return this.trigger("Error",{code:l.FILE_DUPLICATE_ERROR,message:l.translate("Duplicate file error."),file:t}),void i(!1);i(!0)}),l.Uploader=function(e){function s(){var e,t,i=0;if(this.state==l.STARTED){for(t=0;t0?Math.ceil(100*(e.loaded/e.size)):100,c()}function c(){var e,t;for(T.reset(),e=0;e0?Math.ceil(100*(T.uploaded/D.length)):0:(T.bytesPerSec=Math.ceil(T.loaded/((+new Date-S||1)/1e3)),T.percent=T.size>0?Math.ceil(100*(T.loaded/T.size)):0)}function d(){var e=C[0]||N[0];return!!e&&e.getRuntime().uid}function p(e,t){if(e.ruid){var i=a.getInfo(e.ruid);if(i)return i.can(t)}return!1}function f(){this.bind("FilesAdded FilesRemoved",function(e){e.trigger("QueueChanged"),e.refresh()}),this.bind("CancelUpload",w),this.bind("BeforeUpload",v),this.bind("UploadFile",x),this.bind("UploadProgress",y),this.bind("StateChanged",E),this.bind("QueueChanged",c),this.bind("Error",_),this.bind("FileUploaded",b),this.bind("Destroy",R)}function m(e,i){var n=this,r=0,o=[],s={runtime_order:e.runtimes,required_caps:e.required_features,preferred_caps:F,swf_url:e.flash_swf_url,xap_url:e.silverlight_xap_url};l.each(e.runtimes.split(/\s*,\s*/),function(t){e[t]&&(s[t]=e[t])}),e.browse_button&&l.each(e.browse_button,function(i){o.push(function(o){var u=new t.file.FileInput(l.extend({},s,{accept:e.filters.mime_types,name:e.file_data_name,multiple:e.multi_selection,container:e.container,browse_button:i}));u.onready=function(){var e=a.getInfo(this.ruid);l.extend(n.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),multi_selection:e.can("select_multiple")}),r++,C.push(this),o()},u.onchange=function(){n.addFile(this.files)},u.bind("mouseenter mouseleave mousedown mouseup",function(t){M||(e.browse_button_hover&&("mouseenter"===t.type?l.addClass(i,e.browse_button_hover):"mouseleave"===t.type&&l.removeClass(i,e.browse_button_hover)),e.browse_button_active&&("mousedown"===t.type?l.addClass(i,e.browse_button_active):"mouseup"===t.type&&l.removeClass(i,e.browse_button_active)))}),u.bind("mousedown",function(){n.trigger("Browse")}),u.bind("error runtimeerror",function(){u=null,o()}),u.init()})}),e.drop_element&&l.each(e.drop_element,function(e){o.push(function(i){var o=new t.file.FileDrop(l.extend({},s,{drop_zone:e}));o.onready=function(){var e=a.getInfo(this.ruid);l.extend(n.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),dragdrop:e.can("drag_and_drop")}),r++,N.push(this),i()},o.ondrop=function(){n.addFile(this.files)},o.bind("error runtimeerror",function(){o=null,i()}),o.init()})}),l.inSeries(o,function(){"function"==typeof i&&i(r)})}function h(e,n,r){var o=new t.image.Image;try{o.onload=function(){return n.width>this.width&&n.height>this.height&&n.quality===i&&n.preserve_headers&&!n.crop?(this.destroy(),r(e)):void o.downsize(n.width,n.height,n.crop,n.preserve_headers)},o.onresize=function(){r(this.getAsBlob(e.type,n.quality)),this.destroy()},o.onerror=function(){r(e)},o.load(e)}catch(s){r(e)}}function g(e,i,r){function o(e,i,n){var r=I[e];switch(e){case"max_file_size":"max_file_size"===e&&(I.max_file_size=I.filters.max_file_size=i);break;case"chunk_size":(i=l.parseSize(i))&&(I[e]=i,I.send_file_name=!0);break;case"multipart":I[e]=i,i||(I.send_file_name=!0);break;case"unique_names":I[e]=i,i&&(I.send_file_name=!0);break;case"filters":"array"===l.typeOf(i)&&(i={mime_types:i}),n?l.extend(I.filters,i):I.filters=i,i.mime_types&&("string"===l.typeOf(i.mime_types)&&(i.mime_types=t.core.utils.Mime.mimes2extList(i.mime_types)),i.mime_types.regexp=function(e){var t=[];return l.each(e,function(e){l.each(e.extensions.split(/,/),function(e){/^\s*\*\s*$/.test(e)?t.push("\\.*"):t.push("\\."+e.replace(new RegExp("["+"/^$.*+?|()[]{}\\".replace(/./g,"\\$&")+"]","g"),"\\$&"))})}),new RegExp("("+t.join("|")+")$","i")}(i.mime_types),I.filters.mime_types=i.mime_types);break;case"resize":I.resize=!!i&&l.extend({preserve_headers:!0,crop:!1},i);break;case"prevent_duplicates":I.prevent_duplicates=I.filters.prevent_duplicates=!!i;break;case"container":case"browse_button":case"drop_element":i="container"===e?l.get(i):l.getAll(i);case"runtimes":case"multi_selection":case"flash_swf_url":case"silverlight_xap_url":I[e]=i,n||(u=!0);break;default:I[e]=i}n||s.trigger("OptionChanged",e,i,r)}var s=this,u=!1;"object"==typeof e?l.each(e,function(e,t){o(t,e,r)}):o(e,i,r),r?(I.required_features=n(l.extend({},I)),F=n(l.extend({},I,{required_features:!0}))):u&&(s.trigger("Destroy"),m.call(s,I,function(e){e?(s.runtime=a.getInfo(d()).type,s.trigger("Init",{runtime:s.runtime}),s.trigger("PostInit")):s.trigger("Error",{code:l.INIT_ERROR,message:l.translate("Init error.")})}))}function v(e,t){if(e.settings.unique_names){var i=t.name.match(/\.([^.]+)$/),n="part";i&&(n=i[1]),t.target_name=t.id+"."+n}}function x(e,i){function n(){c-- >0?r(o,1e3):(i.loaded=f,e.trigger("Error",{code:l.HTTP_ERROR,message:l.translate("HTTP Error."),file:i,response:A.responseText,status:A.status,responseHeaders:A.getAllResponseHeaders()}))}function o(){var p,m,h,g={};i.status===l.UPLOADING&&e.state!==l.STOPPED&&(e.settings.send_file_name&&(g.name=i.target_name||i.name),u&&d.chunks&&s.size>u?(h=Math.min(u,s.size-f),p=s.slice(f,f+h)):(h=s.size,p=s),u&&d.chunks&&(e.settings.send_chunk_number?(g.chunk=Math.ceil(f/u),g.chunks=Math.ceil(s.size/u)):(g.offset=f,g.total=s.size)),A=new t.xhr.XMLHttpRequest,A.upload&&(A.upload.onprogress=function(t){i.loaded=Math.min(i.size,f+t.loaded),e.trigger("UploadProgress",i)}),A.onload=function(){return A.status>=400?void n():(c=e.settings.max_retries,h=s.size?(i.size!=i.origSize&&(s.destroy(),s=null),e.trigger("UploadProgress",i),i.status=l.DONE,e.trigger("FileUploaded",i,{response:A.responseText,status:A.status,responseHeaders:A.getAllResponseHeaders()})):r(o,1)))},A.onerror=function(){n()},A.onloadend=function(){this.destroy(),A=null},e.settings.multipart&&d.multipart?(A.open("post",a,!0),l.each(e.settings.headers,function(e,t){A.setRequestHeader(t,e)}),m=new t.xhr.FormData,l.each(l.extend(g,e.settings.multipart_params),function(e,t){m.append(t,e)}),m.append(e.settings.file_data_name,p),A.send(m,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:F,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url})):(a=l.buildUrl(e.settings.url,l.extend(g,e.settings.multipart_params)),A.open("post",a,!0),l.each(e.settings.headers,function(e,t){A.setRequestHeader(t,e)}),A.hasRequestHeader("Content-Type")||A.setRequestHeader("Content-Type","application/octet-stream"),A.send(p,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:F,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url})))}var s,a=e.settings.url,u=e.settings.chunk_size,c=e.settings.max_retries,d=e.features,f=0;i.loaded&&(f=i.loaded=u?u*Math.floor(i.loaded/u):0),s=i.getSource(),!l.isEmptyObj(e.settings.resize)&&p(s,"send_binary_string")&&-1!==l.inArray(s.type,["image/jpeg","image/png"])?h.call(this,s,e.settings.resize,function(e){s=e,i.size=e.size,o()}):o()}function y(e,t){u(t)}function E(e){if(e.state==l.STARTED)S=+new Date;else if(e.state==l.STOPPED)for(var t=e.files.length-1;t>=0;t--)e.files[t].status==l.UPLOADING&&(e.files[t].status=l.QUEUED,c())}function w(){A&&A.abort()}function b(e){c(),r(function(){s.call(e)},1)}function _(e,t){t.code===l.INIT_ERROR?e.destroy():t.code===l.HTTP_ERROR&&(t.file.status=l.FAILED,u(t.file),e.state==l.STARTED&&(e.trigger("CancelUpload"),r(function(){s.call(e)},1)))}function R(e){e.stop(),l.each(D,function(e){e.destroy()}),D=[],C.length&&(l.each(C,function(e){e.destroy()}),C=[]),N.length&&(l.each(N,function(e){e.destroy()}),N=[]),F={},M=!1,S=A=null,T.reset()}var I,S,T,A,O=l.guid(),D=[],F={},C=[],N=[],M=!1;I={runtimes:a.order,max_retries:0,chunk_size:0,multipart:!0,multi_selection:!0,file_data_name:"file",flash_swf_url:"js/Moxie.swf",silverlight_xap_url:"js/Moxie.xap",filters:{mime_types:[],prevent_duplicates:!1,max_file_size:0},resize:!1,send_file_name:!0,send_chunk_number:!0},g.call(this,e,null,!0),T=new l.QueueProgress,l.extend(this,{id:O,uid:O,state:l.STOPPED,features:{},runtime:null,files:D,settings:I,total:T,init:function(){var e,t,i=this;return e=i.getOption("preinit"),"function"==typeof e?e(i):l.each(e,function(e,t){i.bind(t,e)}),f.call(i),l.each(["container","browse_button","drop_element"],function(e){return null===i.getOption(e)?(t={code:l.INIT_ERROR,message:l.sprintf(l.translate("%s specified, but cannot be found."),e)},!1):void 0}),t?i.trigger("Error",t):I.browse_button||I.drop_element?void m.call(i,I,function(e){var t=i.getOption("init");"function"==typeof t?t(i):l.each(t,function(e,t){i.bind(t,e)}),e?(i.runtime=a.getInfo(d()).type,i.trigger("Init",{runtime:i.runtime}),i.trigger("PostInit")):i.trigger("Error",{code:l.INIT_ERROR,message:l.translate("Init error.")})}):i.trigger("Error",{code:l.INIT_ERROR,message:l.translate("You must specify either browse_button or drop_element.")})},setOption:function(e,t){g.call(this,e,t,!this.runtime)},getOption:function(e){return e?I[e]:I},refresh:function(){C.length&&l.each(C,function(e){e.trigger("Refresh")}),this.trigger("Refresh")},start:function(){this.state!=l.STARTED&&(this.state=l.STARTED,this.trigger("StateChanged"),s.call(this))},stop:function(){this.state!=l.STOPPED&&(this.state=l.STOPPED,this.trigger("StateChanged"),this.trigger("CancelUpload"))},disableBrowse:function(){M=arguments[0]===i||arguments[0],C.length&&l.each(C,function(e){e.disable(M)}),this.trigger("DisableBrowse",M)},getFile:function(e){var t;for(t=D.length-1;t>=0;t--)if(D[t].id===e)return D[t]},addFile:function(e,i){function n(e,t){var i=[];l.each(u.settings.filters,function(t,n){o[n]&&i.push(function(i){o[n].call(u,t,e,function(e){i(!e)})})}),l.inSeries(i,t)}function s(e){var o=l.typeOf(e);if(e instanceof t.file.File){if(!e.ruid&&!e.isDetached()){if(!a)return!1;e.ruid=a,e.connectRuntime(a)}s(new l.File(e))}else e instanceof t.file.Blob?(s(e.getSource()),e.destroy()):e instanceof l.File?(i&&(e.name=i),c.push(function(t){n(e,function(i){i||(D.push(e),p.push(e),u.trigger("FileFiltered",e)),r(t,1)})})):-1!==l.inArray(o,["file","blob"])?s(new t.file.File(null,e)):"node"===o&&"filelist"===l.typeOf(e.files)?l.each(e.files,s):"array"===o&&(i=null,l.each(e,s))}var a,u=this,c=[],p=[];a=d(),s(e),c.length&&l.inSeries(c,function(){p.length&&u.trigger("FilesAdded",p)})},removeFile:function(e){for(var t="string"==typeof e?e:e.id,i=D.length-1;i>=0;i--)if(D[i].id===t)return this.splice(i,1)[0]},splice:function(e,t){var n=D.splice(e===i?0:e,t===i?D.length:t),r=!1;return this.state==l.STARTED&&(l.each(n,function(e){return e.status===l.UPLOADING?(r=!0,!1):void 0}),r&&this.stop()),this.trigger("FilesRemoved",n),l.each(n,function(e){e.destroy()}),r&&this.start(),n},dispatchEvent:function(e){var t,i;if(e=e.toLowerCase(),t=this.hasEventListener(e)){t.sort(function(e,t){return t.priority-e.priority}),i=[].slice.call(arguments),i.shift(),i.unshift(this);for(var n=0;n
            0KB
            ',l={rename:!0,renameByClick:!0,dropPlaceholder:!0,previewImageIcon:!0,sendFileName:!0,sendFileId:!0,responseHandler:!0,uploadedMessage:!0,drop_element:"self",browse_button:"hidden",filters:{prevent_duplicates:!0},chunk_size:"1mb",max_retries:3,flash_swf_url:"lib/uploader/Moxie.swf",silverlight_xap_url:"lib/uploader/Moxie.xap"},u={QUEUED:i.QUEUED,UPLOADING:i.UPLOADING,FAILED:i.FAILED,DONE:i.DONE,STOPPED:i.STOPPED,STARTED:i.STARTED};u[i.QUEUED]="queue",u[i.UPLOADING]="uploading",u[i.FAILED]="failed",u[i.DONE]="done";var c={GENERIC_ERROR:i.GENERIC_ERROR,HTTP_ERROR:i.HTTP_ERROR,IO_ERROR:i.IO_ERROR,SECURITY_ERROR:i.SECURITY_ERROR,INIT_ERROR:i.INIT_ERROR,FILE_SIZE_ERROR:i.FILE_SIZE_ERROR,FILE_EXTENSION_ERROR:i.FILE_EXTENSION_ERROR,FILE_DUPLICATE_ERROR:i.FILE_DUPLICATE_ERROR,IMAGE_FORMAT_ERROR:i.IMAGE_FORMAT_ERROR,IMAGE_MEMORY_ERROR:i.IMAGE_MEMORY_ERROR,IMAGE_DIMENSIONS_ERROR:i.IMAGE_DIMENSIONS_ERROR},d=function(n,l){var u=this;u.name=s,u.$=e(n).addClass("uploader"),l=u.getOptions(l);var c=e.isPlainObject(l.lang)?e.extend(!0,{},d.LANG[c.lang||e.zui.clientLang()],l.lang):d.LANG[l.lang];u.lang=c;var p,f=u.$,m=l.fileList;p=m&&"large"!=m&&"grid"!=m?0===m.indexOf(">")?f.find(m.substr(1)):e(m):f.find(".file-list,.uploader-files"),p&&p.length||(p=e('
            ')),p.parent().length||f.append(p),"large"==m?p.addClass("file-list-lg"):"grid"==m&&p.addClass("file-list-grid"),p.children(".file").addClass("file-static"),u.$list=p,(l.browseByClickList||p.hasClass("uploader-btn-browse"))&&p.addClass("uploader-btn-browse").on("click",".file-wrapper > .actions,.file-renaming .file-name",function(e){e.stopPropagation()});var h=l.fileTemplate;if(!h){var g=p.find(".template");g.length&&(h=g.first().clone().removeClass("template"),g.remove()),h||(h=a)}"string"==typeof h&&(h=e(h),h.parent()&&(h=h.clone().removeClass("template"))),u.template=h;var v=l.browse_button,x=null;v&&(0===v.indexOf(">")?x=f.find(v.substr(1)):"hidden"!==v&&(x=e(v))),x&&x.length||(x=e('
            ').appendTo(f)),u.$button=x.first();var y=l.drop_element,E=("fileList"==y?u.$list:"self"==y?u.$:e(y)).first().addClass("file-drag-area");if(o)E.attr("data-drop-placeholder","");else{var w=l.dropPlaceholder;w===!0&&(w=c.dropPlaceholder),w&&E.attr("data-drop-placeholder",w)}u.$dropElement=E,u.$message=f.find(".uploader-message").on("click",".close",function(){u.hideMessage()}),u.$status=f.find(".uploader-status"),f.toggleClass("uploader-rename",!!l.rename),u.initPlupload(),f.on("click."+s,".uploader-btn-start",function(e){u.start()}).on("click."+s,".uploader-btn-browse",function(t){e(this).is(u.$button)||u.$button.trigger("click")}).on("click."+s,".uploader-btn-stop",function(e){u.stop()}),e("body").on("dragleave."+s+" drop."+s,function(e){f.removeClass("file-dragable"),e.preventDefault(),e.stopPropagation()}).on("dragover."+s+" dragenter."+s,function(e){f.addClass("file-dragable")}),E.on("dragleave."+s+" drop."+s,function(e){f.removeClass("file-drag-enter")}).on("dragover."+s+" dragenter."+s,function(e){f.addClass("file-drag-enter")}),p.on("click."+s,".btn-delete-file",function(){var n=e(this).closest(".file"),r=n.data("file"),o=l.deleteActionOnDone,s=r.status===i.DONE&&e.isFunction(o);if(r.status===i.QUEUED||r.status===i.FAILED||s){var a=function(){u.removeFile(r)},d=function(){if(s){var e=o.call(u,r,a);e===!0&&a()}else a()},p=l.deleteConfirm;if(p){var f=e.isFunction(p)?p(r):p===!0?c.deleteConfirm:p;f=f.format(r),t.bootbox?t.bootbox.confirm(f,function(e){e&&d()}):t.confirm(f)&&d()}else d()}}).on("click."+s,".btn-reset-file",function(){var t=e(this).closest(".file"),n=u.plupload.getFile(t.data("id"))||t.data("file");n.status===i.FAILED&&(n.status=i.QUEUED,u.showFile(n),l.autoUpload&&u.start())}),l.rename&&(p.toggleClass("file-rename-by-click",!!l.renameByClick).toggleClass("file-show-rename-action-on-done",!!l.renameActionOnDone),p.on("click."+s,".btn-rename-file"+(l.renameByClick?",.file-name":""),function(){var t=e(this).closest(".file"); +if(!t.hasClass("file-renaming")){var n=u.plupload.getFile(t.data("id"))||t.data("file"),o=l.renameActionOnDone,a=n.status===i.DONE&&e.isFunction(o);if(a||n.status===i.QUEUED){var c=t.find(".file-name").first();t.addClass("file-renaming"),u.showFile(n),!l.renameExtension&&n.ext&&c.text(n.name.substr(0,n.name.length-n.ext.length-1)),c.attr("contenteditable","true").one("blur",function(){var i=e.trim(c.text()),d=function(){if(i!==r&&null!==i&&""!==i){var e=n.ext;e.length&&!l.renameExtension&&i.lastIndexOf("."+e)!==i.length-e.length-1&&(i+="."+e),n.name=i}u.showFile(n)};if(a){var p=o.call(u,n,i,d);p===!0?d():p===!1&&u.showFile(n)}else d();t.removeClass("file-renaming"),c.off("keydown."+s).attr("contenteditable",null)}).on("keydown."+s,function(e){13===e.keyCode&&(c.blur(),e.preventDefault())}).focus()}}})),p.toggleClass("file-show-delete-action-on-done",!!l.deleteActionOnDone),u.staticFilesSize=0,u.staticFilesCount=0,l.staticFiles&&e.each(l.staticFiles,function(t,n){n=e.extend({status:i.DONE},n),n["static"]=!0,n.id||(n.id=e.zui.uuid()),u.showFile(n),n.size&&(u.staticFilesSize+=n.size,u.staticFilesCount++)}),u.callEvent("onInit")};d.DEFAULTS=l,d.prototype.showMessage=function(e,t,i){var n=this,o=n.$message;e?clearTimeout(n.lastDismissMessage):n.hideMessage(),t=t||"danger",i===r&&(i="danger"===t?8:5),i<20&&(i*=1e3);var s=o.find(".content");s.length?s.empty().append(e):o.empty().append(e),o.attr("data-type",t).slideDown("fast"),i&&(n.lastDismissMessage=setTimeout(function(){n.hideMessage()},i))},d.prototype.hideMessage=function(){clearTimeout(this.lastDismissMessage),this.$message.slideUp("fast")},d.prototype.start=function(){return this.plupload.start()},d.prototype.stop=function(){return this.plupload.stop()},d.prototype.getState=function(){return this.plupload.state},d.prototype.isStarted=function(){return this.getState()===i.STARTED},d.prototype.isStopped=function(){return this.getState()===i.STOPPED},d.prototype.getFiles=function(){return this.plupload.files},d.prototype.getTotal=function(){return this.plupload.total},d.prototype.disableBrowse=function(e){return this.$.find(".uploader-btn-browse").attr("disable",e?"disable":null).toggle("disable",!!e),this.plupload.disableBrowse()},d.prototype.getFile=function(e){return this.plupload.getFile(e)},d.prototype.destroy=function(){var t=this,i="."+s;t.$.off(i).data(s,null),t.$list.off(i),t.$dropElement.off(i),e("body").off(i),t.plupload.destroy()},d.prototype.previewImageSrc=function(t,i){if(t&&t.getSource&&/image\//.test(t.type)){var r=e.extend({width:200,height:200},this.options.previewImageSize);if("image/gif"==t.type){var o=new n.file.FileReader;o.onload=function(){i(o.result),o.destroy(),o=null},o.readAsDataURL(t.getSource())}else{var s=new n.image.Image;s.onload=function(){s.downsize(r.width,r.height);var e="image/jpeg"==s.type?s.getAsDataURL("image/jpeg",80):s.getAsDataURL();i(e),s.destroy(),s=null},s.load(t.getSource())}}},d.prototype.createFileIcon=function(e){var t=e.type,i=e.ext,n="file-o",r=t?t.split("/"):null,o=r&&r.length?r[0]:"",s=(r&&r.length)>1?r[1]:"";return"image"==o?n="file-image":"doc"==i||"docx"==i||"pages"==i?n="file-word":"ppt"==i||"pptx"==i||"key"==i?n="file-powerpoint":"xls"==i||"xlsx"==i||"numbers"==i?n="file-excel":"html"==i||"htm"==i?n="globe":"js"==i||"php"==i||"cs"==i||"jsx"==i||"css"==i||"less"==i||"json"==i||"java"==i||"lua"==i||"py"==i||"c"==i||"cpp"==i||"swift"==i||"h"==i||"sh"==i||"rb"==i||"yml"==i||"ini"==i||"sql"==i||"xml"==i?n="file-code":"apk"==i?n="android":"exe"==i?n="windows":"pkg"==i||"msi"==i||"dmg"==i?n="cube":"epub"==i?n="book":"sketch"==i?n="diamond":"zip"==s||"x-rar"==s||"x-7z-compressed"==s?n="file-archive":"pdf"==s?n="file-pdf":"video"==o?n="file-movie":"audio"==o?n="file-audio":"text"==o&&(n="file-text-o"),'"},d.prototype.getFileItem=function(t){var i=this;if("string"==typeof t&&(t=i.plupload.getFile(t)),!t)return null;var n=t.name;if(n&&t.ext===r){var o=n.lastIndexOf(".");o=o>-1?n.substr(o+1):"",t.ext=o,t.type&&/image\//.test(t.type)&&(t.isImage=t.ext)}var s=e("#file-"+t.id);return s.length||(e.isFunction(i.template)?s=e(i.template(t,i)):(s=e(i.template).clone(),s.find(".btn-rename-file").attr("title",i.lang.rename),s.find(".btn-delete-file").attr("title",i.lang.remove),s.find(".btn-reset-file").attr("title",i.lang.repeat),s.find(".btn-download-file").attr("title",i.lang.download).attr("download",t.name)),s.data("id",t.id).toggleClass("file-static",!!t["static"]).attr("id","file-"+t.id).appendTo(i.$list),e.fn.tooltip&&s.find('[data-toggle="tooltip"]').tooltip()),s},d.prototype.showFile=function(t,n){var r=this;if(e.isArray(t))return void e.each(t,function(e,t){r.showFile(t,n)});if("string"==typeof t&&(t=r.plupload.getFile(t)),t){var o=r.getFileItem(t);if(o&&o.length){var s=r.options,a=u[t.status];if(s.fileFormater)s.fileFormater.call(r,o,t,a);else{var l="done"==a&&t.url?t.url:null;o.find(".file-name").text(t.name),o.find(".file-size").text(("uploading"==a?i.formatSize(Math.floor(t.size*t.percent/100)).toUpperCase()+"/":"")+i.formatSize(t.size).toUpperCase()),o.find(".file-icon").html(s.fileIconCreator?s.fileIconCreator(t.type,t,r):r.createFileIcon(t)).css("color","hsl("+e.zui.strCode(t.type||t.ext)+", 70%, 40%)"),o.find(".file-progress-bar").css("width",t.percent+"%");var c=o.find(".file-status").attr("title",r.lang[a]);c.find(".text").text("uploading"==a?t.percent+"%":"failed"==a?r.lang[a]:""),e.fn.tooltip&&o.find('[data-toggle="tooltip"]').tooltip("fixTitle"),o.find("a.btn-download-file, a.file-name").attr("href",l)}if(s.previewImageIcon&&t.isImage){var d=function(){o.find(".file-icon").html('
            ')};t.previewImage?d():r.previewImageSrc(t,function(e){t.previewImage=e,d()})}o.attr("data-status",a).data("file",t)}}},d.prototype.showStatus=function(){var t=this,n=t.plupload,r=t.$status,o=n.state,s=n.total,a="",l=n.files.length;if(t.options.statusCreator)a=t.options.statusCreator(s,o,t);else{var u={uploading:Math.max(0,Math.min(l,s.uploaded+1)),total:t.staticFilesCount+l,size:i.formatSize(s.size+t.staticFilesSize).toUpperCase(),queue:s.queued,failed:s.failed,uploaded:s.uploaded,uploadedSize:i.formatSize(s.loaded).toUpperCase(),percent:s.percent,speed:i.formatSize(s.bytesPerSec).toUpperCase()+"/S"};a=o==i.STARTED?t.lang.startedStatusText.format(u):l<1?t.lang.initStatusText:t.lang.stoppedStatusText.format(u)}r.html(a),s.uploaded<1&&r.find(".uploader-status-uploaded").remove(),s.failed<1&&r.find(".uploader-status-failed").remove(),s.queued<1&&r.find(".uploader-status-queue").remove(),e.fn.tooltip&&r.find('[data-toggle="tooltip"]').tooltip()},d.prototype.delayShowStatus=function(e){var t=this;t.delayStatusTask||(t.delayStatusTask=!0,e===r&&(e=500),t.delayStatusTask=setTimeout(function(){t.showStatus(),t.delayStatusTask=!1},e))},d.prototype.removeFile=function(t,i){var n=this;if("string"==typeof t&&(t=n.plupload.getFile(t)),i||t["static"]){var r=e("#file-"+t.id);e.fn.tooltip&&(r.find('[data-toggle="tooltip"]').tooltip("destroy"),e(".tooltip").remove()),r.fadeOut(function(){e(this).remove()})}else n.plupload.removeFile(t)},d.prototype.initPlupload=function(){var n=this,o=n.options,s=e.extend({},o,{browse_button:n.$button[0],container:n.$[0],drop_element:n.$dropElement[0],multipart_params:null}),a={FilesAdded:function(e,t){var i=o.limitFilesCount;if(i){i===!0&&(i=1);var r=n.$list.children(".file").length;if(r+t.length>i){n.showMessage(n.lang.limitFilesCountMessage.format({count:i}),"warning");for(var s=[],a=0;a"+u.join(",")+"

            ":"",d={uploaded:a,failed:l};c+="string"==typeof s?s.format(d):e.isFunction(s)?s(d):n.lang[l>0?"uploadHasFailedMessage":a>0?"uploadSuccessMessage":"uploadEmptyMessage"].format(d),n.showMessage(c,l>0?"danger":a>0?"success":"warning",3)}n.callEvent("onUploadComplete",[r])},FilesRemoved:function(t,i){e.each(i,function(e,t){n.removeFile(t,!0)}),n.showStatus(),n.callEvent("onFilesRemoved",i)},ChunkUploaded:function(e,t,i){n.callEvent("onChunkUploaded",[t,i])},UploadFile:function(e,t){n.showStatus(),n.callEvent("onUploadFile",t)},BeforeUpload:function(t,i){var r=t.getOption("multipart_params"),s=o.multipart_params,a={};r&&r.key&&(a.key=r.key),r&&r.token&&(a.token=r.token),o.sendFileName&&(a[o.sendFileName===!0?"name":o.sendFileName]=i.name),o.sendFileId&&(a[o.sendFileId===!0?"uuid":o.sendFileId]=i.id),a=e.extend(a,e.isFunction(s)?s(i,a):s),t.setOption("multipart_params",a),n.callEvent("onBeforeUpload",i)},Refresh:function(e){n.showStatus(),n.callEvent("onRefresh")},StateChanged:function(e){e.state===i.STARTED&&(n.lastUploadedCount=0),n.$.toggleClass("uploader-started",i.STARTED===e.state),n.hideMessage(),n.showStatus(),n.callEvent("onStateChanged",e.state)},QueueChanged:function(e){n.showStatus(),n.callEvent("onQueueChanged")},Error:function(e,t){var r="danger";t.code!==i.FILE_SIZE_ERROR&&t.code!==i.FILE_SIZE_ERROR&&t.code!==i.FILE_EXTENSION_ERROR&&t.code!==i.FILE_DUPLICATE_ERROR&&t.code!==i.MAGE_FORMAT_ERROR||(r="warning"),n.showMessage(t.message,r),n.callEvent("onError",t)}};if(i.addI18n(n.lang.i18n),n.qiniuEnable=e.isPlainObject(o.qiniu)&&t.Qiniu,n.qiniuEnable){var l=o.qiniu,u=l.key;delete s.qiniu,u?(delete l.key,e.isFunction(u)&&(a.Key=u)):a.Key=function(e,t){return t.name},l.init=a,s=e.extend(s,l);var c=new QiniuJsSDK,d=c.uploader(s);n.plupload=d}else{var d=new i.Uploader(s);d.init(),n.plOptions=s,n.plupload=d,e.each(a,function(e,t){d.bind(e,t)})}},d.prototype.getOptions=function(t){return this.options=e.extend({lang:e.zui.clientLang()},l,this.$.data(),t),this.options},d.prototype.callEvent=function(t,i){var n=this;if(e.isArray(i)||(i=[i]),n.$.trigger(t,i),e.isFunction(n.options[t]))return n.options[t].apply(n,i)},e.fn.uploader=function(t,i){return this.each(function(){var n=e(this),r=n.data(s),o="object"==typeof t&&t;r||n.data(s,r=new d(this,o)),"string"==typeof t&&r[t](i)})},d.NAME=s,d.STATUS=u,d.ERRORS=c,d.NAME=s,d.LANG={zh_cn:{limitFilesCountMessage:"所有文件数目不能超过 {count} 个,如果要上传此文件请先从列表移除文件。",uploadEmptyMessage:"没有文件等待上传。",uploadSuccessMessage:"已上传 {uploaded} 个文件。",uploadHasFailedMessage:"已上传 {uploaded} 个文件,{failed} 个文件上传失败。",startedStatusText:'正在上传第 {uploading} 个文件,共 {total} 个文件,已上传 {uploaded} 个文件,{failed} 个上传失败,进度 {percent}%,平均速度 {speed}。',initStatusText:"添加文件或拖放文件来上传。",stoppedStatusText:'共 {total} 个文件{queue} 个文件等待上传,已上传 {uploaded} 个文件{failed} 个上传失败,平均速度 {speed}。',deleteConfirm:"确定移除文件【{name}】?",download:"下载",rename:"重命名",repeat:"重新上传",remove:"移除",dropPlaceholder:"将文件拖放至在此处。",queue:"待上传",uploading:"正在上传",failed:"失败",done:"已上传",i18n:{"Stop Upload":"停止上传","Upload URL might be wrong or doesn't exist.":"上传的URL可能是错误的或不存在。",tb:"tb",Size:"大小",Close:"关闭","You must specify either browse_button or drop_element.":"您必须指定 browse_button 或者 drop_element。","Init error.":"初始化错误。","Add files to the upload queue and click the start button.":"将文件添加到上传队列,然后点击”开始上传“按钮。",List:"列表",Filename:"文件名","%s specified, but cannot be found.":"%s 已指定,但是没有找到。","Image format either wrong or not supported.":"图片格式错误或者不支持。",Status:"状态","HTTP Error.":"HTTP 错误。","Start Upload":"开始上传","Error: File too large:":"错误: 文件太大:",kb:"kb","Duplicate file error.":"无法添加重复文件。","File size error.":"文件大小错误。","N/A":"N/A",gb:"gb","Error: Invalid file extension:":"错误:无效的文件扩展名:","Select files":"选择文件","%s already present in the queue.":"%s 已经在当前队列里。","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"超限。%s 支持最大 %wx%hpx 的图片。","File: %s":"文件: %s",b:"b","Uploaded %d/%d files":"已上传 %d/%d 个文件","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"每次只接受同时上传 %d 个文件,多余的文件将会被删除。","%d files queued":"%d 个文件加入到队列","File: %s, size: %d, max file size: %d":"文件: %s, 大小: %d, 最大文件大小: %d",Thumbnails:"缩略图","Drag files here.":"把文件拖到这里。","Runtime ran out of available memory.":"运行时已消耗所有可用内存。","File count error.":"文件数量错误。","File extension error.":"文件扩展名错误。",mb:"mb","Add Files":"增加文件"}},zh_tw:{limitFilesCountMessage:"所有文件數目不能超過 {count} 個。",uploadEmptyMessage:"没有文件等待上傳。",uploadSuccessMessage:"已上傳 {uploaded} 个文件。",uploadHasFailedMessage:"文件上傳完成,已上傳 {uploaded} 個文件,{failed} 個文件上傳失败。",startedStatusText:'正在上傳第{uploading} 個文件,共{total} 個文件,已上傳{uploaded} 個文件,{failed} 個上傳失敗,進度{percent}%,平均速度{speed}。',initStatusText:"添加文件或拖放文件來上傳。",stoppedStatusText:'共{total} 個文件{queue} 個文件等待上傳,已上傳{uploaded} 個文件{failed} 個上傳失敗,平均速度{speed}< /strong>。',deleteConfirm:"確定移除文件【{name}】?",download:"下载",rename:"重命名",repeat:"重新上傳",remove:"移除",dropPlaceholder:"將文件拖放至在此處。",queue:"待上傳",uploading:"正在上傳",failed:"失敗",done:"已上傳",i18n:{"Stop Upload":"停止上傳","Upload URL might be wrong or doesn't exist.":"檔案URL可能有誤或者不存在。",tb:"tb",Size:"大小",Close:"關閉","You must specify either browse_button or drop_element.":"您必須指定 browse_button 或 drop_element。","Init error.":"初始化錯誤。","Add files to the upload queue and click the start button.":"將檔案加入上傳序列,然後點選”開始上傳“按鈕。",List:"清單",Filename:"檔案名稱","%s specified, but cannot be found.":"找不到已選擇的 %s。","Image format either wrong or not supported.":"圖片格式錯誤或者不支援。",Status:"狀態","HTTP Error.":"HTTP 錯誤。","Start Upload":"開始上傳","Error: File too large:":"錯誤: 檔案大小太大:",kb:"kb","Duplicate file error.":"錯誤:檔案重複。","File size error.":"錯誤:檔案大小超過限制。","N/A":"N/A",gb:"gb","Error: Invalid file extension:":"錯誤:不接受的檔案格式:","Select files":"選擇檔案","%s already present in the queue.":"%s 已經存在目前的檔案序列。","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"圖片解析度超出範圍! %s 最高只支援到 %wx%hpx。","File: %s":"檔案: %s",b:"b","Uploaded %d/%d files":"已上傳 %d/%d 個文件","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"每次只能上傳 %d 個檔案,超過限制數量的檔案將被忽略。","%d files queued":"%d 個檔案加入到序列","File: %s, size: %d, max file size: %d":"檔案: %s, 大小: %d, 檔案大小上限: %d",Thumbnails:"縮圖","Drag files here.":"把檔案拖曳到這裡。","Runtime ran out of available memory.":"執行時耗盡了所有可用的記憶體。","File count error.":"檔案數量錯誤。","File extension error.":"檔案副檔名錯誤。",mb:"mb","Add Files":"增加檔案"}},en:{limitFilesCountMessage:"All files count can not over {count}.",uploadEmptyMessage:"No file in queue to upload",uploadSuccessMessage:"Uploaded {uploaded} files。",uploadHasFailedMessage:"Uploaded complete, {uploaded} success, {failed} failed.",startedStatusText:'Uploading NO.{uploading} file, total {total} files, Uploaded {uploaded} files, {failed} failed, progress {percent}%, average spped {speed}。',initStatusText:"Append or drag file here.",stoppedStatusText:'Total {total} files, {queue} files in queue, uploaded {uploaded} files, {failed} failed, average spped {speed}。',deleteConfirm:'Remove file "{name}" form upload queue?',rename:"Rename",download:"Download",repeat:"Repeat",remove:"Remove",dropPlaceholder:"Drop file here.",queue:"Wait",uploading:"Uploading",failed:"Failed",done:"Done",i18n:{"Stop Upload":"Stop Upload","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.",tb:"tb",Size:"Size",Close:"Close","You must specify either browse_button or drop_element.":"You must specify either browse_button or drop_element.","Init error.":"Init error.","Add files to the upload queue and click the start button.":"Add files to the upload queue and click the start button.",List:"List",Filename:"Filename","%s specified, but cannot be found.":"%s specified, but cannot be found.","Image format either wrong or not supported.":"Image format either wrong or not supported.",Status:"Status","HTTP Error.":"HTTP Error.","Start Upload":"Start Upload","Error: File too large:":"Error: File too large:",kb:"kb","Duplicate file error.":"Duplicate file error.","File size error.":"File size error.","N/A":"N/A",gb:"gb","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"Select files","%s already present in the queue.":"%s already present in the queue.","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.","File: %s":"File: %s",b:"b","Uploaded %d/%d files":"Uploaded %d/%d files","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","%d files queued":"%d files queued","File: %s, size: %d, max file size: %d":"File: %s, size: %d, max file size: %d",Thumbnails:"Thumbnails","Drag files here.":"Drag files here.","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"File count error.","File extension error.":"File extension error.",mb:"mb","Add Files":"Add Files"}}},e.zui.plupload=i,e.zui.moxie=n,e.zui.Uploader=d,e.fn.uploader.Constructor=d,t.mOxie||(t.mOxie={Env:n.core.utils.Env,XMLHttpRequest:n.xhr.XMLHttpRequest}),e(function(){e('[data-ride="uploader"]').uploader()})}(jQuery,window,plupload,moxie,void 0); \ No newline at end of file diff --git a/root/user/login.html b/root/user/login.html new file mode 100644 index 0000000..f69c089 --- /dev/null +++ b/root/user/login.html @@ -0,0 +1,127 @@ + + + + + 登录 - MetaKit + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/net/tccn/base/JBean.java b/src/main/java/net/tccn/base/JBean.java new file mode 100644 index 0000000..f3646e7 --- /dev/null +++ b/src/main/java/net/tccn/base/JBean.java @@ -0,0 +1,78 @@ +package net.tccn.base; + +import org.redkale.convert.json.JsonConvert; + +/** + * Created by liangxianyou at 2018/7/30 16:51. + */ +public class JBean { + private int code; + private String message; + private Object body; + private long timestamp; + + public static JBean by(int code, String message){ + JBean jBean = new JBean(); + jBean.code = code; + jBean.message = message; + jBean.timestamp = System.currentTimeMillis(); + return jBean; + } + public static JBean by(int code, String message, Object result){ + JBean jBean = new JBean(); + jBean.code = code; + jBean.message = message; + jBean.body = result; + jBean.timestamp = System.currentTimeMillis(); + return jBean; + } + public JBean set(int code, String message){ + this.code = code; + this.message = message; + return this; + } + + public JBean set(int code, String message, Object result){ + this.code = code; + this.message = message; + this.body = result; + this.timestamp = System.currentTimeMillis(); + return this; + } + + public JBean setCode(int code) { + this.code = code; + return this; + } + + public JBean setMessage(String message) { + this.message = message; + return this; + } + + public JBean setBody(Object body) { + this.body = body; + return this; + } + + public int getCode() { + return code; + } + + public String getMessage() { + return message; + } + + public Object getBody() { + return body; + } + + public long getTimestamp() { + return timestamp; + } + + @Override + public String toString() { + return JsonConvert.root().convertTo(this); + } +} diff --git a/src/main/java/net/tccn/base/Kv.java b/src/main/java/net/tccn/base/Kv.java new file mode 100644 index 0000000..ffeac98 --- /dev/null +++ b/src/main/java/net/tccn/base/Kv.java @@ -0,0 +1,156 @@ +package net.tccn.base; + +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.function.Predicate; + +/** + * Created by liangxianyou@eversec.cn at 2018/3/12 14:17. + */ +public class Kv extends LinkedHashMap { + public static Kv of(){ + return new Kv(); + } + + public static Kv of(Object k, Object v){ + return new Kv().set(k,v); + } + + public Kv set(K k, V v){ + put(k, v); + return this; + } + + public static Kv toKv(Object m) { + return toKv(m, Kv.of(), m.getClass()); + } + + private static Kv toKv(Object m, Kv kv, Class clazz) { + Field[] fields = clazz.getDeclaredFields(); + for (Field field : fields) { + try { + field.setAccessible(true); + if (!kv.containsKey(field.getName())) { + kv.set(field.getName(), field.get(m)); + } + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + + Class superclass = clazz.getSuperclass(); + if (superclass != null) { + kv = toKv(m, kv, superclass); + } + return kv; + } + + public T toBean(Class type) { + return (T) toBean(this, type); + } + + // 首字母大写 + private static Function upFirst = (s) -> { + return s.substring(0, 1).toUpperCase() + s.substring(1); + }; + private static Map clazzMap = new HashMap<>(); + static { + clazzMap.put(ArrayList.class, new Class[]{List.class, ArrayList.class, String.class}); + clazzMap.put(HashMap.class, new Class[]{Map.class, HashMap.class, String.class}); + clazzMap.put(Long.class, new Class[]{Long.class, Integer.class, long.class, int.class, short.class, String.class}); + clazzMap.put(String.class, new Class[]{String.class, Integer.class, Date.class}); + clazzMap.put(Double.class, new Class[]{Double.class, Long.class, Integer.class, long.class, int.class, short.class, String.class}); + } + private static Predicate isNumber = (t) -> { + return t == Integer.class || t == int.class + || t == Long.class || t == long.class + || t == Double.class || t == double.class + ; + }; + public static T toBean(Map m, Class type) { + try { + Object obj = type.newInstance(); + m.forEach((k, v) -> { + String methodName = "set" + upFirst.apply(k); + Method method = null; + Class[] clazzs = clazzMap.get(v == null ? null : v.getClass()); + if (clazzs == null) { + //doc.set(k, v); + } else { + for (Class clazz : clazzs) { + try { + method = type.getDeclaredMethod(methodName, clazz); + } catch (NoSuchMethodException e) { + } + if (method != null) { + try { + if (v == null || "".equals(v)) { + + } else if (v.getClass() == Long.class && clazz != Long.class) {//多种数值类型的处理 + Object _v; + switch (clazz.getSimpleName()) { + case "int": + case "Long": _v = v; break; + case "Integer": _v = (int)((long) v); break; + case "short": + case "Short": _v = (short)((long) v); break; + default: _v = v; + } + method.invoke(obj, _v); + } else if (v.getClass() == Double.class) { + Object _v = null; + if (isNumber.test(clazz)) { + switch (clazz.getSimpleName()) { + case "long": + case "Long": _v = (long)(double) v; break; + case "int": + case "Integer": _v = (int)((double) v); break; + case "short": + case "Short": _v = (int)(double) v; break; + default: _v = v; + } + } else if (clazz == String.class){ + _v = String.valueOf(v); + } + method.invoke(obj, _v); + } else if (v.getClass() == String.class && clazz == Date.class) { + Date _v = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse((String) v); + method.invoke(obj, _v); + } else if (v.getClass() == String.class && clazz == Integer.class) { + Object _v = (int)Double.parseDouble((String) v); + method.invoke(obj, _v); + } + + else { + method.invoke(obj, v); + } + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (ParseException e) { + e.printStackTrace(); + } + break; + } + } + } + }); + + return (T) obj; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } +} \ No newline at end of file diff --git a/src/main/java/net/tccn/base/PageBean.java b/src/main/java/net/tccn/base/PageBean.java new file mode 100644 index 0000000..b496375 --- /dev/null +++ b/src/main/java/net/tccn/base/PageBean.java @@ -0,0 +1,39 @@ +package net.tccn.base; + +import java.util.List; + +/** + * Created by JUECHENG at 2018/5/7 11:20. + */ +public class PageBean { + private List rows; + private long total; + + public static PageBean by(List rows, long total) { + return new PageBean(rows, total); + } + + public PageBean() { + } + + public PageBean(List rows, long total) { + this.rows = rows; + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public long getTotal() { + return total; + } + + public void setTotal(long total) { + this.total = total; + } +} diff --git a/src/main/java/net/tccn/base/arango/ArangoSource.java b/src/main/java/net/tccn/base/arango/ArangoSource.java new file mode 100644 index 0000000..45d5242 --- /dev/null +++ b/src/main/java/net/tccn/base/arango/ArangoSource.java @@ -0,0 +1,290 @@ +package net.tccn.base.arango; + +import com.arangodb.*; +import com.arangodb.entity.DocumentCreateEntity; +import com.arangodb.entity.DocumentDeleteEntity; +import com.arangodb.entity.MultiDocumentEntity; + +import javax.persistence.Table; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; + +import static java.util.Arrays.asList; + +/** + * 管理 数据源连接对象 + * @author: liangxianyou at 2018/12/15 11:35. + */ +public class ArangoSource { + + public Logger logger = Logger.getLogger(this.getClass().getSimpleName()); + private ArangoDB arangoDb; + + private static Map sources = new HashMap(); + static { + init(); + } + + public static void init() { + sources.put("main", new ArangoSource(new ArangoDB.Builder().host("120.24.230.60", 8529).user("root").password("abc123").build())); + sources.put("abc", new ArangoSource(new ArangoDB.Builder().host("192.168.199.135", 8529).user("root").password("root").build())); + } + + public ArangoSource(ArangoDB arangoDb) { + this.arangoDb = arangoDb; + } + + public static ArangoSource use() { + return use("main"); + } + public static ArangoSource use(String unit) { + if (unit == null || unit.isEmpty()) { + unit = "main"; + } + return sources.get(unit); + } + + public ArangoDB arangoDB() { + return arangoDb; + } + public ArangoDatabase db(String db) { + return arangoDb.db(db); + } + public ArangoCollection collection(Doc doc) { + return collection(doc.getClass()); + } + public ArangoCollection collection(Class type) { + Table table = type.getAnnotation(Table.class); + //createDb(table.catalog()); + return arangoDb.db(table.catalog()).collection(table.name()); + } + + public boolean createDb(String db) { + ArangoDatabase database = arangoDb.db(db); + if (!database.exists()) { + return database.create(); + } + logger.log(Level.INFO, "arango database exists"); + return true; + } + public ArangoCollection createDocument(Doc doc) { + Class type = doc.getClass(); + Table table = type.getAnnotation(Table.class); + + ArangoDatabase database = arangoDb.db(table.catalog()); + if (!database.exists()) { + database.create(); + } + + ArangoCollection collection = database.collection(table.name()); + if (!collection.exists()) { + collection.create(); + } + + return collection; + } + + // 首字母大写 + private static Function upFirst = (s) -> { + return s.substring(0, 1).toUpperCase() + s.substring(1); + }; + + private static Map clazzMap = new HashMap<>(); + static { + clazzMap.put(ArrayList.class, new Class[]{List.class, ArrayList.class, String.class}); + clazzMap.put(HashMap.class, new Class[]{Map.class, HashMap.class, String.class}); + clazzMap.put(Long.class, new Class[]{Long.class, Integer.class, long.class, int.class, short.class, String.class}); + clazzMap.put(String.class, new Class[]{String.class}); + } + /** + * 还原 Doc对象 + * @param map + * @param type + * @param + * @return + */ + public T toDoc1(Map map, Class type) { + try { + Doc doc = type.newInstance(); + map.forEach((k, v) -> { + + String methodName = "set" + upFirst.apply(k); + Method method = null; + Class[] clazzs = clazzMap.get(v == null ? null : v.getClass()); + if (clazzs == null) { + doc.set(k, v); + } else { + for (Class clazz : clazzs) { + try { + method = type.getDeclaredMethod(methodName, clazz); + } catch (NoSuchMethodException e) { + } + if (method != null) { + try { + if (v.getClass() == Long.class && clazz != Long.class) {//多种数值类型的处理 + Object _v; + switch (clazz.getSimpleName()) { + case "int": + case "Integer": _v = (int)((long) v); break; + case "short": + case "Short": _v = (short)((long) v); break; + default: _v = v; + } + System.out.println(clazz.getSimpleName()); + method.invoke(doc, _v); + } else { + method.invoke(doc, v); + } + } catch (IllegalAccessException e) { + e.printStackTrace(); + doc.set(k, v); + } catch (InvocationTargetException e) { + e.printStackTrace(); + doc.set(k, v); + } + break; + } + } + } + + if (method == null) { + doc.set(k, v); + } + }); + + return (T) doc; + } catch (Exception e) { + + } + + return null; + } + + private Predicate isEmpty = (x) -> { + if (x == null) + return true; + if (x instanceof List) + return ((List) x).isEmpty(); + if (x instanceof String) + return ((String) x).isEmpty(); + if (x instanceof Map) + return ((Map) x).isEmpty(); + if (x instanceof Collection) + return ((Collection) x).isEmpty(); + return false; + }; + /** + * Doc 转为查询对象 + * @param t + * @param + * @return + */ + private Function filterBuilder = (t) -> { + Table table = t.getClass().getAnnotation(Table.class); + StringBuilder buf = new StringBuilder(); + + buf.append("for d in ").append(table.name()); + buf.append(" filter 1==1"); + t.toDoc().forEach((k, v) -> { + if (v != null && (v.getClass() == String.class || v instanceof Number)) { + buf.append(" and d.").append(k).append("=="); + } + + if (v.getClass() == String.class) { + buf.append("'").append(v).append("'"); + } else if (v instanceof Number) { + buf.append(v); + } + }); + return buf; + }; + + private Function orderBuilder = (t) -> { + StringBuilder buf = new StringBuilder(); + Map order = t.getOrder(); + if (isEmpty.test(order)) { + return buf; + } + buf.append(" sort "); + order.forEach((k, v) -> { + buf.append("d.").append(k).append(v == 1 ? " desc," : " asc,"); + }); + buf.deleteCharAt(buf.length() - 1); + return buf; + }; + + private Function returnBuilder = (t) -> { + StringBuilder buf = new StringBuilder(); + + if (isEmpty.test(t.get_Shows())) { + return buf.append(" return d"); + } + + buf.append(" return {"); + t.get_Shows().forEach(x -> { + buf.append(x).append(":d.").append(x).append(","); + }); + buf.deleteCharAt(buf.length() - 1).append("}"); + return buf; + }; + + public String parseAqlCount(T t) { + StringBuilder buf = new StringBuilder(); + buf.append(filterBuilder.apply(t)); + buf.append(" COLLECT WITH COUNT INTO total"); + buf.append(" return total"); + //logger.log(Level.INFO, buf.toString()); + return buf.toString(); + } + public String parseAql(T t, int offset, int ps) { + if (offset < 0) offset = 0; + if (ps <= 0) ps = 1000; + StringBuilder buf = new StringBuilder(); + + buf.append(filterBuilder.apply(t)); + buf.append(orderBuilder.apply(t)); + buf.append(" limit ").append(offset).append(",").append(ps); + buf.append(returnBuilder.apply(t)); + //logger.log(Level.INFO, buf.toString()); + return buf.toString(); + } + //---------------------------------------- + //ok + public T save(T doc) { + DocumentCreateEntity tmap = collection(doc).insertDocument(doc.toDoc()); + doc.setKey(tmap.getKey()); + doc.setId(tmap.getId()); + return doc; + } + + //ok + public void update(T doc) { + collection(doc).updateDocument(doc.getKey(), doc.toDoc()); + } + + //ok + public T getDoc(Object key, Class type) { + return collection(type).getDocument(String.valueOf(key), type); + } + + //ok + public DocumentDeleteEntity delete(String key, Class type) { + return collection(type).deleteDocument(key); + } + + //ok + public MultiDocumentEntity> deleteAll(Doc ... docs) { + return collection(docs[0]).deleteDocuments(asList(docs)); + } + + public MultiDocumentEntity find(Collection keys, Class type) { + return collection(type).getDocuments(keys, type); + } +} diff --git a/src/main/java/net/tccn/base/arango/Doc.java b/src/main/java/net/tccn/base/arango/Doc.java new file mode 100644 index 0000000..eed24b6 --- /dev/null +++ b/src/main/java/net/tccn/base/arango/Doc.java @@ -0,0 +1,251 @@ +package net.tccn.base.arango; + +import com.arangodb.ArangoCollection; +import com.arangodb.ArangoDBException; +import com.arangodb.ArangoDatabase; +import com.arangodb.entity.DocumentCreateEntity; + +import javax.persistence.Table; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Function; + +/** + * @author: liangxianyou at 2018/12/1 22:59. + */ +public abstract class Doc { + private HashMap attr = new HashMap(); + + private String _id; + private String _key; + + private Set _shows; + private Map _order; + + public String getId() { + return _id; + } + + public void setId(String id) { + this._id = id; + } + + public String getKey() { + return _key; + } + + public void setKey(String key) { + this._key = key; + } + + public Doc set(String k, Object v) { + attr.put(k, v); + return this; + } + + public V get(String k) { + return (V)attr.get(k); + } + + public T setShows(String... show) { + if (_shows == null) { + _shows = new HashSet<>(); + } + for (String s : show) { + _shows.add(s); + } + return (T) this; + } + + public Set get_Shows() { + return _shows; + } + + public void set_Shows(Set shows) { + this._shows = shows; + } + + public T setOrder(String col, int desc) { + if (_order == null) { + _order = new LinkedHashMap(); + } + + _order.put(col, desc); + return (T) this; + } + + public Map getOrder() { + return _order; + } + + /*public void setOrder(Map order) { + this._order = order; + }*/ + /*@Override + public String toString() { + //convert. + + String doc = convert.convertTo(this); + if (attr.size() == 0) { + return doc; + } + + StringBuilder builder = new StringBuilder(); + if (attr.size() != 0) { + String attrStr = convert.convertTo(attr); + builder.append("{"); + builder.append(attrStr, 1, attrStr.length() - 1); + builder.append(","); + builder.append(doc, 1, doc.length()); //builder.append(doc.substring(1)); + } + + return builder.toString(); + }*/ + + private Function fieldName = (s) -> { + return s.replace("get", "").substring(0, 1).toLowerCase() + s.substring(4); + }; + + /** + * 提取Doc 属性到 Map,用于存贮到Arango中 + * 提取规则: + * 1、将doc中自带非空( !=null )属性提取都map中, + * 2、将attr中属性覆盖到map中(如果attr中存在同名属性,attr为主) + * @return + */ + public Map toDoc() { + HashMap clone = (HashMap) attr.clone(); + + Class type = this.getClass(); + Method[] methods = type.getDeclaredMethods(); + + for (Method method : methods) { + String name = method.getName(); + if (name.startsWith("get") && method.getParameterCount() == 0) { + //Type mt = method.getAnnotatedReturnType().getType(); + try { + //System.out.println(method.getName()); + Object v = method.invoke(this); + if (v != null) { + clone.put(fieldName.apply(name), v); + } + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } + } + } + return clone; + } + + //--------------------------------------------------------------------------------------------------- + + private ArangoSource arangoSource; + private ArangoDatabase db; + private ArangoCollection collection; + + private static ConcurrentHashMap daos = new ConcurrentHashMap(); + public Doc() { + Table table = this.getClass().getAnnotation(Table.class); + String sourceName = null; + Source source = this.getClass().getAnnotation(Source.class); + if (source != null) { + sourceName = source.name(); + } + + arangoSource = ArangoSource.use(sourceName); + this.db = arangoSource.db(table.catalog()); + this.collection = arangoSource.collection(this); + } + public final static T dao(Class type) { + + if (daos.get(type) == null) { + try { + daos.put(type, type.newInstance()); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + + return (T) daos.get(type); + } + + //ok + public T save() { + DocumentCreateEntity tmap = collection.insertDocument(this.toDoc()); + this.setId(tmap.getId()); + this.setKey(tmap.getKey()); + return (T) this; + } + + //ok + public void update() { + collection.updateDocument(this.getKey(), this.toDoc()); + } + + public T findFirst(T t) { + return findFirst(arangoSource.parseAql(t, 0, 1), (Class) t.getClass()); + } + public List find() { + return find((T) this, 0, 1000); + } + public List find(T t) { + return find(t, 0, 1000); + } + public List find(T t, int offset, int pn) { + return find(arangoSource.parseAql(t, offset, pn), (Class)this.getClass()); + } + + public List find(String aql, Class clazz) { + try { + return db.query(aql, clazz).asListRemaining(); + } catch (ArangoDBException e) { + System.out.println(aql); + e.printStackTrace(); + ArangoSource.init(); + } + return db.query(aql, clazz).asListRemaining(); + } + public T findFirst(String aql, Class clazz) { + try { + return db.query(aql, clazz).first(); + } catch (ArangoDBException e) { + System.out.println(aql); + e.printStackTrace(); + ArangoSource.init(); + } + return db.query(aql, clazz).first(); + } + + public long count() { + return count(this); + } + public long count(T t) { + return db.query(arangoSource.parseAqlCount(t), long.class).first(); + } + //ok + public T findByKey(Object key) { + return (T) collection.getDocument(String.valueOf(key), this.getClass()); + } + + //ok + public void delete() { + collection.deleteDocument(getKey()); + } + + public void delete(Collection key) { + collection.deleteDocuments(key); + } + +} diff --git a/src/main/java/net/tccn/base/arango/Source.java b/src/main/java/net/tccn/base/arango/Source.java new file mode 100644 index 0000000..08fd2dc --- /dev/null +++ b/src/main/java/net/tccn/base/arango/Source.java @@ -0,0 +1,15 @@ +package net.tccn.base.arango; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author: liangxianyou at 2018/12/22 0:32. + */ +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +public @interface Source { + String name() default ""; +} diff --git a/src/main/java/net/tccn/dbq/DbPlat.java b/src/main/java/net/tccn/dbq/DbPlat.java new file mode 100644 index 0000000..b3cfa60 --- /dev/null +++ b/src/main/java/net/tccn/dbq/DbPlat.java @@ -0,0 +1,98 @@ +package net.tccn.dbq; + +import net.tccn.base.arango.Doc; +import net.tccn.dbq.jdbc.JdbcAccount; +import org.redkale.convert.json.JsonConvert; + +import javax.persistence.Table; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +/** + * 数据库平台 + * @author: liangxianyou at 2018/11/14 12:58. + */ +@Table(name = "db_plat", catalog = "db_dev") +public class DbPlat extends Doc { + public static DbPlat dao = dao(DbPlat.class); + + private String name; //名称 + private String cate; //类型 mysql|ArangoDb + private String remark; //备注 + private String url; //数据库连接地址 + private String user; //账号 + private String pwd; //密码 + private List catalogs; //库 + + private JdbcAccount jdbcAccount; + //------------- setter/getter --------------- + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCate() { + return cate; + } + + public void setCate(String cate) { + this.cate = cate; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getUser() { + return user; + } + + public void setUser(String user) { + this.user = user; + } + + public String getPwd() { + return pwd; + } + + public void setPwd(String pwd) { + this.pwd = pwd; + } + + public List getCatalogs() { + return catalogs; + } + + public void setCatalogs(List catalogs) { + this.catalogs = catalogs; + } + + @Override + public String toString() { + return JsonConvert.root().convertTo(this); + } + //------------------------------------------------------------------------- + + protected Connection connection() throws SQLException { + if (jdbcAccount == null) { + jdbcAccount = new JdbcAccount(url, user, pwd); + } + return jdbcAccount.getConnection(); + } +} diff --git a/src/main/java/net/tccn/dbq/Field.java b/src/main/java/net/tccn/dbq/Field.java new file mode 100644 index 0000000..e20ab76 --- /dev/null +++ b/src/main/java/net/tccn/dbq/Field.java @@ -0,0 +1,99 @@ +package net.tccn.dbq; + +/** + * @author: liangxianyou at 2018/10/17 17:24. + */ +public class Field { + private String name; + private String label; + private String remark; + private String type; + private String inType; + private String inExt; + + //============== getter/setter ============= + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getInType() { + return inType; + } + + public void setInType(String inType) { + this.inType = inType; + } + + public String getInExt() { + return inExt; + } + + public void setInExt(String inExt) { + this.inExt = inExt; + } + + + //------------------------------------ + public enum InType { + SELECT_EXT("select_ext"), + INPUT_DT("input_dt"); + + String name; + + InType(String name) { + this.name = name; + } + } + + public enum QueryType { + + } + + public String showField() { + if (InType.SELECT_EXT.name.equalsIgnoreCase(inType)) { + return name + "|" + inExt; + } else if (InType.INPUT_DT.name.equalsIgnoreCase(inType)) { + return name + "=dt"; + } + + return name; + } + + public boolean isDict() { + return InType.SELECT_EXT.name.equalsIgnoreCase(inType); + } + + @Override + public boolean equals(Object name) { + return (this.name == null && name == null) || this.name.equals(name); + } +} diff --git a/src/main/java/net/tccn/dbq/fbean/DbType.java b/src/main/java/net/tccn/dbq/fbean/DbType.java new file mode 100644 index 0000000..dab08cc --- /dev/null +++ b/src/main/java/net/tccn/dbq/fbean/DbType.java @@ -0,0 +1,8 @@ +package net.tccn.dbq.fbean; + +/** + * Created by liangxianyou at 2018/12/14 15:34. + */ //数据库类型 +public enum DbType { + MYSQL, ARANGODB +} diff --git a/src/main/java/net/tccn/dbq/fbean/FBean.java b/src/main/java/net/tccn/dbq/fbean/FBean.java new file mode 100644 index 0000000..b922c9e --- /dev/null +++ b/src/main/java/net/tccn/dbq/fbean/FBean.java @@ -0,0 +1,73 @@ +package net.tccn.dbq.fbean; + +import java.util.List; + +/** + * 查询用实体 + * @author: liangxianyou at 2018/10/25 14:49. + */ +public class FBean { + + private String name; + private List filters;//[{f:xx, v: v, type:t}] -- t, + private List orders;//{f1: 1, f2: -1} + private Limit limit;//{pn: 1, ps: 10} + + //---------- getter/setter ------------ + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public List getFilters() { + return filters; + } + + public void setFilters(List filters) { + this.filters = filters; + } + + public List getOrders() { + return orders; + } + + public void setOrders(List orders) { + this.orders = orders; + } + + public Limit getLimit() { + return limit; + } + + public void setLimit(Limit limit) { + this.limit = limit; + } + + //----------------------------------- + //组装查询sql,[list, count] + public String[] buildSqlFilter() { + //where 1=1 and x=1 and y=1 order by x,y limit 1,3; + String where = Filter.filter(filters); + String order = Order.order(orders, DbType.MYSQL); + if (limit == null) { + limit = new Limit(); + } + String limit = this.limit.limit(); + + String list = where + order + limit; + String count = where; + return new String[]{list, count}; + } + + + public void setLimit(int pn, int ps) { + limit.setPn(pn); + limit.setPs(ps); + } + + +} diff --git a/src/main/java/net/tccn/dbq/fbean/Filter.java b/src/main/java/net/tccn/dbq/fbean/Filter.java new file mode 100644 index 0000000..08b2979 --- /dev/null +++ b/src/main/java/net/tccn/dbq/fbean/Filter.java @@ -0,0 +1,89 @@ +package net.tccn.dbq.fbean; + +import java.util.List; + +/** + * 查询条件实体 + * Created by liangxianyou at 2018/12/14 15:34. + */ +public class Filter { + private String col; + private String value; + private String type; + + public static Filter by(String col, Object value) { + return by(col, "==", value + "");//todo: == 不是mysql 语法,不具备通用性 + } + + public static Filter by(String col, String type, String value) { + Filter filter = new Filter(); + filter.setCol(col); + filter.setType(type); + filter.setValue(value); + return filter; + } + + //mysql 查询组装 + public static String filter(List filters) { + if (filters == null || filters.size() == 0) { + return ""; + } + + StringBuilder buf = new StringBuilder(); + buf.append(" where 1=1"); + filters.forEach(x -> { + buf.append(FilterType.buildSql(x)); + }); + return buf.toString(); + } + + public static String filter(List filters, DbType dbType) { + if (DbType.MYSQL == dbType) { + return filter(filters); + } else if (DbType.ARANGODB == dbType) { + StringBuilder buf = new StringBuilder(); + buf.append(" filter 1==1"); + if (filters == null || filters.size() == 0) { + return ""; + } + + filters.forEach(x -> { + buf.append(" and d.").append(x.col).append(" " + (x.type == null ? "==" : x.type) + " "); + //处理数值型字段查询 + if ("sysPlatId".equals(x.col) || "platId".equals(x.col) || "status".equals(x.col) || false) { + buf.append(x.value); + } else { + buf.append("'" + x.value + "'"); + } + }); + return buf.toString(); + } + + return ""; + } + + //---------- getter/setter ------------ + public String getCol() { + return col; + } + + public void setCol(String col) { + this.col = col; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } +} diff --git a/src/main/java/net/tccn/dbq/fbean/FilterType.java b/src/main/java/net/tccn/dbq/fbean/FilterType.java new file mode 100644 index 0000000..7c7af35 --- /dev/null +++ b/src/main/java/net/tccn/dbq/fbean/FilterType.java @@ -0,0 +1,81 @@ +package net.tccn.dbq.fbean; + +import net.tccn.base.Kv; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * Created by liangxianyou at 2018/12/14 15:34. + */ +public enum FilterType { + EQUAL("=", "等于"), + NOTEQUAL("!=", "不等于"), + GREATERTHANOREQUALTO(">=", ">="), + LESSTHAN("<", "小于"), + LIKE("LIKE", "LIKE"), + IN("IN", "包含"); + + private String expre; + private String remark; + + FilterType(String expre, String remark) { + this.expre = expre; + this.remark = remark; + } + + //不同的条件构建过滤语句 + public static String buildSql(Filter filter) { + if (filter.getValue() == null || filter.getValue().length() == 0) { + return ""; + } + FilterType filterType = getFilterType(filter.getType()); + if (filterType == null) { + return ""; + } + + String _sql; + switch (filterType) { + case IN: + _sql = String.format(" AND `%s` IN (%s)", filter.getCol(), filter.getValue()); + break; + case LIKE: + _sql = String.format(" AND `%s` LIKE '%s'", filter.getCol(), "%" + filter.getValue() + "%"); + break; + default: + _sql = String.format(" AND `%s` %s '%s'", filter.getCol(), filterType.expre, filter.getValue()); + break; + } + + return _sql; + } + + public static FilterType getFilterType(String name) { + for (FilterType t : FilterType.values()) { + if (t.name().equalsIgnoreCase(name)) { + return t; + } + } + + return null; + } + + //获取所有的查询类型 + public static List getAllTypes() { + List list = new ArrayList<>(); + for (FilterType type : FilterType.values()) { + Kv kv = Kv.of("name", type.name())/*.set("expre", type.expre)*/.set("remark", type.remark); + list.add(kv); + } + + return list; + } + + public String getExpre() { + return expre; + } + + public String getRemark() { + return remark; + }} diff --git a/src/main/java/net/tccn/dbq/fbean/Limit.java b/src/main/java/net/tccn/dbq/fbean/Limit.java new file mode 100644 index 0000000..c25f465 --- /dev/null +++ b/src/main/java/net/tccn/dbq/fbean/Limit.java @@ -0,0 +1,44 @@ +package net.tccn.dbq.fbean; + +/** + * Created by liangxianyou at 2018/12/14 15:36. + */ +public class Limit { + private int pn; + private int ps; + + public Limit() { + } + + public Limit(int pn, int ps) { + this.pn = pn; + this.ps = ps; + } + + public String limit() { + if (pn < 1) { + pn = 1; + } + if (ps < 1) { + ps = 10; + } + return String.format(" LIMIT %s, %s", (pn - 1) * ps, ps); + } + + //---- getter/setter ----- + public int getPn() { + return pn; + } + + public void setPn(int pn) { + this.pn = pn; + } + + public int getPs() { + return ps; + } + + public void setPs(int ps) { + this.ps = ps; + } +} diff --git a/src/main/java/net/tccn/dbq/fbean/Order.java b/src/main/java/net/tccn/dbq/fbean/Order.java new file mode 100644 index 0000000..56cd62b --- /dev/null +++ b/src/main/java/net/tccn/dbq/fbean/Order.java @@ -0,0 +1,58 @@ +package net.tccn.dbq.fbean; + +import java.util.List; + +/** + * Created by liangxianyou at 2018/12/14 15:36. + */ +public class Order { + private String col; + private int desc;//1 or -1 + + public Order() { + } + + public Order(String col, int desc) { + this.col = col; + this.desc = desc; + } + + public static String order(List orders, DbType dbType) { + if (orders == null || orders.size() == 0) { + return ""; + } + StringBuilder buf = new StringBuilder(); + switch (dbType) { + case MYSQL: + buf.append(" ORDER BY"); + orders.forEach(x -> { + buf.append(String.format(" %s %s,", x.col, (x.desc == 1 ? "desc" : "asc"))); + }); + buf.deleteCharAt(buf.length() - 1); + break; + + case ARANGODB: + // 待实现 + break; + } + + return buf.toString(); + } + + //--- getter/setter --- + public String getCol() { + return col; + } + + public void setCol(String col) { + this.col = col; + } + + public int getDesc() { + return desc; + } + + public void setDesc(int desc) { + this.desc = desc; + } +} diff --git a/src/main/java/net/tccn/dbq/fbean/ParseArango.java b/src/main/java/net/tccn/dbq/fbean/ParseArango.java new file mode 100644 index 0000000..b3b1739 --- /dev/null +++ b/src/main/java/net/tccn/dbq/fbean/ParseArango.java @@ -0,0 +1,29 @@ +package net.tccn.dbq.fbean; + +import net.tccn.meta.MetaService; + +import java.util.Map; + +/** + * Created by liangxianyou at 2018/12/24 15:49. + */ +public class ParseArango implements Parser { + + @Override + public String parse(FBean fBean) { + + + + return null; + } + + @Override + public String parse(Filter filter) { + return null; + } + + @Override + public String parseSave(MetaService ms, Map data) { + return ""; + } +} diff --git a/src/main/java/net/tccn/dbq/fbean/ParseEs.java b/src/main/java/net/tccn/dbq/fbean/ParseEs.java new file mode 100644 index 0000000..80a4be4 --- /dev/null +++ b/src/main/java/net/tccn/dbq/fbean/ParseEs.java @@ -0,0 +1,26 @@ +package net.tccn.dbq.fbean; + +import net.tccn.meta.MetaService; + +import java.util.Map; + +/** + * Created by liangxianyou at 2018/12/24 15:49. + */ +public class ParseEs implements Parser { + + @Override + public String parse(FBean fBean) { + return null; + } + + @Override + public String parse(Filter filter) { + return null; + } + + @Override + public String parseSave(MetaService ms, Map data) { + return ""; + } +} diff --git a/src/main/java/net/tccn/dbq/fbean/ParseMysql.java b/src/main/java/net/tccn/dbq/fbean/ParseMysql.java new file mode 100644 index 0000000..25d852b --- /dev/null +++ b/src/main/java/net/tccn/dbq/fbean/ParseMysql.java @@ -0,0 +1,118 @@ +package net.tccn.dbq.fbean; + +import net.tccn.meta.MetaKit; +import net.tccn.meta.MetaLink; +import net.tccn.meta.MetaService; +import net.tccn.meta.MetaTable; + +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.function.Predicate; + +/** + * Created by liangxianyou at 2018/12/24 15:49. + */ +public class ParseMysql implements Parser { + + private Predicate isEmpty = (x) -> { + if (x == null) + return true; + if (x instanceof List) + return ((List) x).isEmpty(); + if (x instanceof String) + return ((String) x).isEmpty(); + if (x instanceof Map) + return ((Map) x).isEmpty(); + if (x instanceof Collection) + return ((Collection) x).isEmpty(); + return false; + }; + + @Override + public String parse(FBean fBean) { + MetaService metaService = MetaKit.metaService(fBean.getName()); + + //基础属性 + MetaTable metaTable = metaService.getMetaTable();//基础元数据 + List linkTables = metaService.getMetaLinks();//表关联条件 + Map attachTable = metaService.getTables();//用到的关联表 + List shows = metaService.getShows();//查询的属性 + + //查询条件 + List filters = fBean.getFilters(); + Limit limit = fBean.getLimit(); + List orders = fBean.getOrders(); + + StringBuilder buf = new StringBuilder(); + //select + buf.append("select "); + if (!isEmpty.test(shows)) { + shows.forEach(x -> { + //buf.append("`").append("x").append("`").append(","); + buf.append(x).append(","); + }); + buf.deleteCharAt(buf.length() - 1); + } else { + buf.append("*"); + } + + //from + buf.append(" from ").append("`").append(metaTable.getName()).append("` ").append(metaTable.getAlias()); + + //left join + if (!isEmpty.test(linkTables)) { + linkTables.forEach(x -> { + MetaTable leftTable = attachTable.get(metaTable.getAlias().equals(x.getTables()[0]) ? x.getTables()[1] : x.getTables()[0]); + + buf.append(" left join ").append(leftTable.getName()).append(" ").append(leftTable.getAlias()).append(" on "); + int tag = buf.length(); + x.getLink().forEach((k,v) -> { + if (buf.length() > tag) { + buf.append(" and "); + } + buf.append(k).append("=").append(v); + }); + }); + } + + //where + if (!isEmpty.test(filters)) { + buf.append(Filter.filter(filters, DbType.MYSQL)); + } + + //order by + if (!isEmpty.test(orders)) { + buf.append(" ").append(Order.order(orders, DbType.MYSQL)); + } + + //limit + buf.append(" ").append(limit.limit()); + return buf.toString(); + } + + @Override + public String parse(Filter filter) { + return null; + } + + @Override + public String parseSave(MetaService ms, Map data) { + String sqlTpl = "insert %s (%s) value (%s)"; + StringBuilder bufK = new StringBuilder(); + StringBuilder bufV = new StringBuilder(); + data.forEach((k,v) -> { + if (v != null || !String.valueOf(v).isEmpty()) { + bufK.append("`").append(k).append("`,"); + if (v instanceof Number) { + bufV.append(v).append(","); + } else { + bufV.append("'").append(v).append("',"); + } + } + }); + bufK.deleteCharAt(bufK.length() - 1); + bufV.deleteCharAt(bufV.length() - 1); + return String.format(sqlTpl, ms.getMetaTable().getName(), bufK.toString(), bufV.toString()); + } +} diff --git a/src/main/java/net/tccn/dbq/fbean/Parser.java b/src/main/java/net/tccn/dbq/fbean/Parser.java new file mode 100644 index 0000000..31a1467 --- /dev/null +++ b/src/main/java/net/tccn/dbq/fbean/Parser.java @@ -0,0 +1,31 @@ +package net.tccn.dbq.fbean; + +import net.tccn.meta.MetaService; + +import java.util.Map; + +/** + * Created by liangxianyou at 2018/12/24 15:47. + */ +public interface Parser { + + /** + * 组装完整的查询条件 + * @param fBean + */ + String parse(FBean fBean); + + /** + * 解析一个查询条件 + * @param filter + */ + String parse(Filter filter); + + /** + * 解析入库语句 + * @param data + * @return + */ + String parseSave(MetaService ms, Map data); + +} diff --git a/src/main/java/net/tccn/dbq/jdbc/Column.java b/src/main/java/net/tccn/dbq/jdbc/Column.java new file mode 100644 index 0000000..c13b181 --- /dev/null +++ b/src/main/java/net/tccn/dbq/jdbc/Column.java @@ -0,0 +1,55 @@ +package net.tccn.dbq.jdbc; + +/** + * 数据库表的列 + * @author: liangxianyou at 2018/10/8 10:59. + */ +public class Column { + private String name; //列名称 + private String type; //列类型 + private boolean notNull; //不为null + private String comment; //列说明 + + public Column() { + } + + public Column(String name, String type, boolean notNull, String comment) { + this.name = name; + this.type = type; + this.notNull = notNull; + this.comment = comment; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public boolean getNotNull() { + return notNull; + } + + public void setNotNull(boolean notNull) { + this.notNull = notNull; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + +} diff --git a/src/main/java/net/tccn/dbq/jdbc/JdbcAccount.java b/src/main/java/net/tccn/dbq/jdbc/JdbcAccount.java new file mode 100644 index 0000000..a9142d9 --- /dev/null +++ b/src/main/java/net/tccn/dbq/jdbc/JdbcAccount.java @@ -0,0 +1,72 @@ +package net.tccn.dbq.jdbc; + +import java.sql.Connection; + +/** + * @author: liangxianyou at 2018/10/11 17:47. + */ +public class JdbcAccount { + + private String url; + private String user; + private String pwd; + private Integer connectMax = 5;//默认最大连接数5 + + public JdbcAccount() { + } + + public JdbcAccount(String url, String user, String pwd) { + this.url = url; + this.user = user; + this.pwd = pwd; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getUser() { + return user; + } + + public void setUser(String user) { + this.user = user; + } + + public String getPwd() { + return pwd; + } + + public void setPwd(String pwd) { + this.pwd = pwd; + } + + public Integer getConnectMax() { + return connectMax; + } + + public void setConnectMax(Integer connectMax) { + this.connectMax = connectMax; + } + //------------------------------------------------------- + + public String parse() { + int start = url.indexOf("//") + 2; + int end = url.indexOf("/", start); + int endDef = url.indexOf("?", end); + if (endDef == -1) { + endDef = url.length(); + } + String host = url.substring(start, end == -1 ? url.length() : end); + return user + "@" + host; + } + + public Connection getConnection() { + + return null; + } +} diff --git a/src/main/java/net/tccn/dbq/jdbc/JdbcService.java b/src/main/java/net/tccn/dbq/jdbc/JdbcService.java new file mode 100644 index 0000000..6be6aab --- /dev/null +++ b/src/main/java/net/tccn/dbq/jdbc/JdbcService.java @@ -0,0 +1,151 @@ +package net.tccn.dbq.jdbc; + +import org.redkale.util.Comment; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.BiFunction; + +/** + * JdbcService. + * + * @author: liangxianyou at 2018/10/8 10:39. + */ +public class JdbcService { + + private JdbcAccount account; + + private static ConcurrentHashMap jdbcPool = new ConcurrentHashMap<>(); + + public JdbcService(JdbcAccount account) { + this.account = account; + } + //-------------- query ----------------- + private List executeQuery(String sql, Map columns, BiFunction fun) throws SQLException { + try ( + Connection connection = DriverManager.getConnection(account.getUrl(), account.getUser(), account.getPwd()); + PreparedStatement ps = connection.prepareStatement(sql); + ResultSet resultSet = ps.executeQuery()) { + List list = new ArrayList(); + while (resultSet.next()) { + list.add(fun.apply(resultSet, columns)); + } + + return list; + } + } + + public static List getCatalogs(Connection connection) throws SQLException { + List catalogs = new ArrayList<>(); + try ( + PreparedStatement ps = connection.prepareStatement("show databases;"); + ResultSet rs = ps.executeQuery() + ) { + while (rs.next()) { + catalogs.add(rs.getString(1)); + } + } + return catalogs; + } + + public static Connection getConnection(JdbcAccount account) throws SQLException { + Connection connection = jdbcPool.get(account); + if (connection == null) { + connection = DriverManager.getConnection(account.getUrl(), account.getUser(), account.getPwd()); + jdbcPool.put(account, connection); + } + return connection; + } + + @Comment("列表数据查询") + public static List findList(Connection connection, String sql) throws SQLException { + try ( + PreparedStatement ps = connection.prepareStatement(sql); + ResultSet rs = ps.executeQuery()) { + List list = new ArrayList(); + while (rs.next()) { + ResultSetMetaData metaData = rs.getMetaData(); + int count = metaData.getColumnCount(); + + Map row = new HashMap(); + for (int i = 1; i <= count; i++) { + String columnTypeName = metaData.getColumnTypeName(i); + String columnName = metaData.getColumnName(i); + row.put(columnName, null); + + if (rs.getObject(i) != null) { + switch (columnTypeName) { + case "DATETIME": + case "TIMESTAMP": + case "DATE": + row.put(columnName, rs.getTimestamp(i).getTime()); break; + default: + row.put(columnName, rs.getObject(i)); + } + } + } + list.add(row); + } + + return list; + } + } + + @Comment("统计总数") + public static int findNumber(Connection connection, String sql) throws SQLException { + try ( + PreparedStatement ps = connection.prepareStatement(sql); + ResultSet rs = ps.executeQuery()) { + + rs.next(); + return rs.getInt(1); + } + + } + + public static int update(Connection connection, String sql) throws SQLException { + try ( + PreparedStatement ps = connection.prepareStatement(sql); + ){ + return ps.executeUpdate(); + } + } + + // ---------------- DDL --------------------- + public static boolean createTable(Connection connection, Table table) throws SQLException { + if (table.getCatalog() != null && table.getCatalog().length() > 0) { + connection.setCatalog(table.getCatalog()); + } + + String tableDdl = table.getTableDdl(); + System.out.println(tableDdl); + try (PreparedStatement ps = connection.prepareStatement(tableDdl)) { + return ps.execute(); + } + } + + + public static void main(String[] args) throws SQLException { + String url = "jdbc:mysql://192.168.202.11:3306/gxbii_dev"; + String user = "root"; + String pwd = "eversec123098"; + + JdbcAccount account = new JdbcAccount(url, user, pwd); + + Connection connection = account.getConnection(); + + System.out.println(connection); + + String sql = "select * from basic_concat"; + + } +} diff --git a/src/main/java/net/tccn/dbq/jdbc/JdbcSource.java b/src/main/java/net/tccn/dbq/jdbc/JdbcSource.java new file mode 100644 index 0000000..fc35875 --- /dev/null +++ b/src/main/java/net/tccn/dbq/jdbc/JdbcSource.java @@ -0,0 +1,209 @@ +package net.tccn.dbq.jdbc; + +import net.tccn.dbq.qtask.Qtask; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Queue; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Function; + +/** + * Created by liangxianyou at 2018/12/21 17:42. + */ +public class JdbcSource { + + private JdbcAccount account; + private Queue queue = new LinkedBlockingDeque(); + private static ConcurrentHashMap sources = new ConcurrentHashMap<>(); + private List connections = new ArrayList<>(); + private AtomicInteger connectNum = new AtomicInteger(); + + private JdbcSource() { + } + public JdbcSource(JdbcAccount account) { + String key = account.parse(); + synchronized (sources) { + JdbcSource source = sources.get(key); + if (source == null) { + source = new JdbcSource(); + } + source.account = account; + + do { + try { + Connection connection = DriverManager.getConnection(account.getUrl(), account.getUser(), account.getPwd()); + connections.add(connection); + } catch (SQLException e) { + e.printStackTrace(); + break; + } + } while (connectNum.incrementAndGet() < 2);//默认初始化连接数 2 + } + } + + + /** + * 获取连接 + * @return + */ + private Connection getConnection() { + synchronized (connections) { + //有闲置连接,直接返回 + if (connections.size() > 0) { + return connections.remove(0); + } + + //没有闲置连接,总连接数小于最大连接数,创建新连接 + if (connectNum.get() < account.getConnectMax()) { + try { + return DriverManager.getConnection(account.getUrl(), account.getUser(), account.getPwd()); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + //已达最大连接,且没有闲置,等待 + + } + + return null; + } + + /** + * 释放连接 + * @param connection + */ + private void releaseConnection(Connection connection) { + connections.add(connection); + } + + /** + * 通过Account 获取连接 + * 同一个连接对象同一时刻只能被一个线程所使用, + * 两种方案: + * 1、多个连接对象,每次线程得到对应的连接,用完返还连接, + * 2、一到多个连接,每次数据库操作交给执行队列执行,并返回执行结果 + * @param account + * @return + */ + /*public Connection getConnection(JdbcAccount account) { + String key = account.parse(); + + List conns = sources.get(key); + if (conns == null) { + conns = new ArrayList<>(); + } + if (conns.size() == 0) { + try { + Connection connection = DriverManager.getConnection(account.getUrl(), account.getUser(), account.getPwd()); + + } catch (SQLException e) { + e.printStackTrace(); + } + } + + + return null; + }*/ + + + private Function dataToMap = (rs) -> { + Map row = new HashMap(); + try { + ResultSetMetaData metaData = rs.getMetaData(); + int count = metaData.getColumnCount(); + + for (int i = 1; i <= count; i++) { + String columnTypeName = metaData.getColumnTypeName(i); + String columnName = metaData.getColumnName(i); + row.put(columnName, null); + + if (rs.getObject(i) != null) { + switch (columnTypeName) { + case "DATETIME": + case "TIMESTAMP": + case "DATE": + row.put(columnName, rs.getTimestamp(i).getTime()); break; + default: + row.put(columnName, rs.getObject(i)); + } + } + } + } catch (SQLException e) { + e.printStackTrace(); + } + + return row; + }; + + private Function> dataToList = (rs) -> { + List list = new ArrayList<>(); + try { + while (rs.next()) { + list.add(dataToMap.apply(rs)); + } + } catch (SQLException e) { + e.printStackTrace(); + } + return list; + }; + + /** + * 通过sql查询 数据, + * 将每次查询任务加入到查询队列 + * @param sql + * @return + */ + private Queue finds = new LinkedBlockingQueue<>(); + public CompletableFuture> find(String sql) { + return CompletableFuture.supplyAsync(() -> { + List list = null; + Connection connection = getConnection(); + try ( + PreparedStatement ps = connection.prepareStatement(sql); + ResultSet rs = ps.executeQuery(); + ) { + list = dataToList.apply(rs); + } catch (SQLException e) { + e.printStackTrace(); + } + + releaseConnection(connection); + return list; + }); + + /* + Connection connection = getConnection(null); + + + try ( + PreparedStatement ps = connection.prepareStatement(sql); + ) { + + + } catch (SQLException e) { + e.printStackTrace(); + } + + return null; + */ + } + + private void find(String sql, int cate) { + + } + +} diff --git a/src/main/java/net/tccn/dbq/jdbc/Table.java b/src/main/java/net/tccn/dbq/jdbc/Table.java new file mode 100644 index 0000000..628fc74 --- /dev/null +++ b/src/main/java/net/tccn/dbq/jdbc/Table.java @@ -0,0 +1,72 @@ +package net.tccn.dbq.jdbc; + + +import java.util.List; + +/** + * 数据库表. + * @author: liangxianyou at 2018/10/8 10:58. + */ +public class Table { + private String catalog; //库名称 + private String name; //表名称 + private String comment; //表备注 + private List columns; //表的字段列 + + public Table(String name, String comment) { + this.name = name; + this.comment = comment; + } + + //------------ getter/setter ------------- + + public String getCatalog() { + return catalog; + } + + public void setCatalog(String catalog) { + this.catalog = catalog; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + + public List getColumns() { + return columns; + } + + public void setColumns(List columns) { + this.columns = columns; + } + + //------------------------------ + + //Dev + public String getTableDdl() { + StringBuilder buf = new StringBuilder(); + + buf.append("CREATE TABLE " + name + "("); + columns.forEach(x -> { + buf.append("\n " + x.getName() + " " + x.getType() + ","); + }); + + buf.deleteCharAt(buf.length() - 1); + buf.append("\n) COMMENT '" + comment + "';"); + return buf.toString(); + } + //---------- + +} diff --git a/src/main/java/net/tccn/dbq/qtask/Qtask.java b/src/main/java/net/tccn/dbq/qtask/Qtask.java new file mode 100644 index 0000000..abc586e --- /dev/null +++ b/src/main/java/net/tccn/dbq/qtask/Qtask.java @@ -0,0 +1,105 @@ +package net.tccn.dbq.qtask; + +import net.tccn.base.arango.Doc; + +import javax.persistence.Table; + +/** + * @author: liangxianyou at 2018/11/13 14:59. + */ +@Table(name = "qtask", catalog = "db_dev") +public class Qtask extends Doc { + public static Qtask dao = dao(Qtask.class); + + private String queryId; //查询id + private String name; //业务名称 + private String remark; //说明 + private String sql; //SQL + private String para; //默认查询参数 + private String cate; //任务类型 find|update + private Integer sysPlatId; //数据平台id + private Integer platId; //数据平台id + private String catalog; //数据库名 + private Integer status; //状态 1启用|0未启用|-1删除 + + //------------- setter/getter ------------------------ + public String getQueryId() { + return queryId; + } + + public void setQueryId(String queryId) { + this.queryId = queryId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSql() { + return sql; + } + + public void setSql(String sql) { + this.sql = sql; + } + + public String getPara() { + return para; + } + + public void setPara(String para) { + this.para = para; + } + + public String getCate() { + return cate; + } + + public void setCate(String cate) { + this.cate = cate; + } + + public Integer getSysPlatId() { + return sysPlatId; + } + + public void setSysPlatId(Integer sysPlatId) { + this.sysPlatId = sysPlatId; + } + + public Integer getPlatId() { + return platId; + } + + public void setPlatId(Integer platId) { + this.platId = platId; + } + + public String getCatalog() { + return catalog; + } + + public void setCatalog(String catalog) { + this.catalog = catalog; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } +} diff --git a/src/main/java/net/tccn/dbq/qtask/SysPlat.java b/src/main/java/net/tccn/dbq/qtask/SysPlat.java new file mode 100644 index 0000000..655f8cb --- /dev/null +++ b/src/main/java/net/tccn/dbq/qtask/SysPlat.java @@ -0,0 +1,39 @@ +package net.tccn.dbq.qtask; + +import net.tccn.base.arango.Doc; + +import javax.persistence.Table; + +/** + * @author: liangxianyou at 2018/11/26 17:46. + */ +@Table(name = "sys_plat", catalog = "db_dev") +public class SysPlat extends Doc { + public static SysPlat dao = dao(SysPlat.class); + + private String name; + private String token; + + public SysPlat() { + } + + public SysPlat(String token) { + this.token = token; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getToken() { + return token; + } + + public void setToken(String token) { + this.token = token; + } +} diff --git a/src/main/java/net/tccn/meta/MetaKit.java b/src/main/java/net/tccn/meta/MetaKit.java new file mode 100644 index 0000000..9c4aabb --- /dev/null +++ b/src/main/java/net/tccn/meta/MetaKit.java @@ -0,0 +1,236 @@ +package net.tccn.meta; + +import net.tccn.base.Kv; +import net.tccn.dbq.DbPlat; +import net.tccn.dbq.Field; +import net.tccn.dbq.fbean.FilterType; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.function.BiFunction; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * + * Created by liangxianyou at 2019/1/7 13:31. + */ +public class MetaKit { + //基础数据缓存 + private static List metaTables; + private static List metaLinks; + private static List metaServices; + + private static List dbPlats; + + static { + metaTables = MetaTable.dao.find(); + metaLinks = MetaLink.dao.find(); + metaServices = MetaService.dao.find(); + + dbPlats = DbPlat.dao.find(); + } + + //----- get/set ---- + public static List getMetaTables() { + return metaTables; + } + + public static void setMetaTables(List metaTables) { + MetaKit.metaTables = metaTables; + } + + public static List getMetaLinks() { + return metaLinks; + } + + public static void setMetaLinks(List metaLinks) { + MetaKit.metaLinks = metaLinks; + } + + public static List getMetaServices() { + return metaServices; + } + + public static List getDbPlats() { + return dbPlats; + } + + public static void setDbPlats(List dbPlats) { + MetaKit.dbPlats = dbPlats; + } + + //----------------------------------- + public static void setMetaServices(List metaServices) { + MetaKit.metaServices = metaServices; + } + + /** + * 通过 别名 查询 MetaTable + * @param alias + * @return + */ + private static MetaTable metaTableByAlias(String alias) { + Optional table = metaTables.stream().filter(x -> x.getAlias().equals(alias)).findAny(); + return table.orElse(null); + } + + /** + * 通过 MetaLink[] 得到 MetaTable{} + * @param links + * @return {alias:table} + */ + private static Map metaTables(List links) { + Map map = new HashMap(); + List tables = links.stream().map(MetaLink::getTables).flatMap(Arrays::stream).distinct().collect(Collectors.toList());//tables + metaTables.stream().filter(x -> tables.contains(x.getAlias())).forEach(x -> { + map.put(x.getAlias(), x); + }); + return map; + } + + /** + * 通过 link._key 得到 MetaLink[] + * @param links + * @return + */ + private static List metaLinks(List links) { + if (links == null) { + return new ArrayList<>(); + } + return metaLinks.stream().filter(x -> links.contains(x.getKey())).collect(Collectors.toList()); + } + + /** + * 构建完整的 MetaService + * @param name + * @return + */ + public static MetaService metaService(String name) { + Optional service = metaServices.stream().filter(x -> x.getName().equals(name)).findAny(); + //处理业务逻辑 + service.ifPresent(x -> { + x.setMetaTable(metaTableByAlias(x.getTable())); + x.setMetaLinks(metaLinks(x.getLinks())); + x.setTables(metaTables(x.getMetaLinks())); + }); + return service.orElse(null); + } + + //字段特征排序 + public static BiFunction sortItem = (t, arr) -> { + List items = t.getItems(); + + //x 是跨越值 + a:for (int i = 0, x = 0; i < arr.length; i++) { + int inx = i - x; + + if (!items.get(inx).equals(arr[i])) { + Field tmp = items.get(inx); + for (int j = inx + 1; j < items.size(); j++) { + if (items.get(j).equals(arr[i])) { + items.set(inx, items.get(j)); + items.set(j, tmp); + continue a; + } + } + + //运行到这里,说明在 list 中找不到排序标识对应的数据, 让排序角标差值+1 + x ++; + } + } + t.setItems(items); + return t; + }; + + public static Function getField = (n) -> { + String[] arr = n.split("[.]"); + MetaTable metaTable = metaTableByAlias(arr[0]); + return metaTable.getItems().stream().filter(x -> x.getName().equals(arr[1])).findAny().orElse(null); + }; + + //listcfg + public static Function builderCfg = (m) -> { + List shows = m.getShows(); + List filters = m.getFilters(); + + List _filters = new ArrayList<>(); + List _cols = new ArrayList<>(); + + //todo: 优化,批量操作 + //build shows + shows.forEach(x -> { + Field field = getField.apply(x); + if (field != null) { + Kv col = Kv.of(); + col.set("col", x.split("[.]]")[0] + field.showField());//a.createtime=dt + col.set("label", field.getLabel()); + col.set("order", 1);//dev 是否支持排序 + _cols.add(col); + } + }); + + //build filters + filters.forEach(x -> { + Kv filter = Kv.of(); + Field filed = getField.apply(x.get("name") + ""); + + if (filed != null) { + filter.set("name", x.get("name")); + filter.set("label", filed.getLabel()); + } + + filter.set("inType", filed.getInType()); + filter.set("inExt", filed.getInExt()); + + List types = new ArrayList<>(); + List list = (List) x.get("filterType"); + list.forEach(t -> { + FilterType type = FilterType.getFilterType(t); + if (type != null) { + types.add(Kv.of("name", t).set("remark", type.getRemark())); + } + }); + + filter.set("filterType", types); + Object checked = x.getOrDefault("checked", false); + filter.set("checked", checked instanceof Boolean ? checked : false); + _filters.add(filter); + }); + + /*shows.forEach(x -> { + _shows.add(Kv.of("name", x).set("label", getFieldLabel(x))); + });*/ + + Kv cfg = Kv.of(); + cfg.set("title", m.getName())//业务名称 + //.set("url", getUrl()) + .set("cols", _cols)//展示的数据列 + //.set("conditionLabel", "") + .set("filters", _filters);//查询过滤条件 + + return cfg; + }; + + //itemUpdate + public static BiFunction, MetaTable> itemUpdate = (t, fields) -> { + List items = t.getItems(); + for (int i = 0; i < fields.size(); i++) { + for (int j = 0; j < items.size(); j++) { + if (items.get(j).equals(fields.get(i).getName())) { + items.set(j, fields.get(i)); + } + } + } + return t; + }; + + + public static MetaTable getMetaTableByKey(String key) { + return metaTables.stream().filter(x -> x.getKey().equals(key)).findAny().orElse(null); + }; +} diff --git a/src/main/java/net/tccn/meta/MetaLink.java b/src/main/java/net/tccn/meta/MetaLink.java new file mode 100644 index 0000000..c455d37 --- /dev/null +++ b/src/main/java/net/tccn/meta/MetaLink.java @@ -0,0 +1,35 @@ +package net.tccn.meta; + +import net.tccn.base.arango.Doc; + +import javax.persistence.Table; +import java.util.Map; + +/** + * Created by liangxianyou at 2018/12/25 16:22. + */ +@Table(name = "MetaLink", catalog = "db_demo") +public class MetaLink extends Doc { + public static MetaLink dao = Doc.dao(MetaLink.class); + + private String[] tables; + private Map link; + + //------------------------------------------- + + public String[] getTables() { + return tables; + } + + public void setTables(String[] tables) { + this.tables = tables; + } + + public Map getLink() { + return link; + } + + public void setLink(Map link) { + this.link = link; + } +} diff --git a/src/main/java/net/tccn/meta/MetaService.java b/src/main/java/net/tccn/meta/MetaService.java new file mode 100644 index 0000000..fcc458d --- /dev/null +++ b/src/main/java/net/tccn/meta/MetaService.java @@ -0,0 +1,103 @@ +package net.tccn.meta; + +import net.tccn.base.arango.Doc; + +import javax.persistence.Table; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * Created by liangxianyou at 2018/12/24 16:15. + */ +@Table(name = "MetaService", catalog = "db_demo") +public class MetaService extends Doc { + public static MetaService dao = Doc.dao(MetaService.class); + + private String name; //业务标识 + private String table; //主体表别名 + private List links; //["link._key1","link._key2"] + + + private List shows = new ArrayList<>(); + private List edits = new ArrayList<>(); + private List filters = new ArrayList<>(); + + //待组装数据 + private MetaTable metaTable; + private List metaLinks;//[{alias:"b", table:"dept", link:[mk,lk]}, xxxx] + private Map tables; + //------------------------------------------- + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getTable() { + return table; + } + + public void setTable(String table) { + this.table = table; + } + + public List getLinks() { + return links; + } + + public void setLinks(List links) { + this.links = links; + } + + public List getShows() { + return shows; + } + + public void setShows(List shows) { + this.shows = shows; + } + + public List getEdits() { + return edits; + } + + public void setEdits(List edits) { + this.edits = edits; + } + + public List getFilters() { + return filters; + } + + public void setFilters(List filters) { + this.filters = filters; + } + + public MetaTable getMetaTable() { + return metaTable; + } + + public void setMetaTable(MetaTable metaTable) { + this.metaTable = metaTable; + } + + public List getMetaLinks() { + return metaLinks; + } + + public void setMetaLinks(List metaLinks) { + this.metaLinks = metaLinks; + } + + public Map getTables() { + return tables; + } + + public void setTables(Map tables) { + this.tables = tables; + } +} diff --git a/src/main/java/net/tccn/meta/MetaTable.java b/src/main/java/net/tccn/meta/MetaTable.java new file mode 100644 index 0000000..b691663 --- /dev/null +++ b/src/main/java/net/tccn/meta/MetaTable.java @@ -0,0 +1,75 @@ +package net.tccn.meta; + +import net.tccn.base.arango.Doc; +import net.tccn.dbq.Field; + +import javax.persistence.Table; +import java.io.Serializable; +import java.util.List; + +/** + * 元数据 + * + * @author: liangxianyou at 2018/10/17 12:58. + */ +@Table(name = "MetaTable", catalog = "db_demo") +public class MetaTable extends Doc implements Serializable { + public static final MetaTable dao = MetaTable.dao(MetaTable.class); + + private String name; + private String alias; //表别名:全库唯一,程序自动生成 + private String comment; + private List items; + private String dbPlatId; //所属数据平台 + private String catalog; //所在database + + //=============== getter/setter ============ + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + + public List getItems() { + return items; + } + + public void setItems(List items) { + this.items = items; + } + + public String getDbPlatId() { + return dbPlatId; + } + + public void setDbPlatId(String dbPlatId) { + this.dbPlatId = dbPlatId; + } + + public String getCatalog() { + return catalog; + } + + public void setCatalog(String catalog) { + this.catalog = catalog; + } +} diff --git a/qtask/src/main/java/net/tccn/E.java b/src/main/java/net/tccn/qtask/E.java similarity index 97% rename from qtask/src/main/java/net/tccn/E.java rename to src/main/java/net/tccn/qtask/E.java index 3f5bf1d..b76baad 100644 --- a/qtask/src/main/java/net/tccn/E.java +++ b/src/main/java/net/tccn/qtask/E.java @@ -1,4 +1,4 @@ -package net.tccn; +package net.tccn.qtask; import net.tccn.base.Kv; diff --git a/qtask/src/main/java/net/tccn/QRuner.java b/src/main/java/net/tccn/qtask/QRuner.java similarity index 60% rename from qtask/src/main/java/net/tccn/QRuner.java rename to src/main/java/net/tccn/qtask/QRuner.java index b254e7d..5b7be65 100644 --- a/qtask/src/main/java/net/tccn/QRuner.java +++ b/src/main/java/net/tccn/qtask/QRuner.java @@ -1,8 +1,9 @@ -package net.tccn; +package net.tccn.qtask; -import net.tccn.qtask.QTaskHttp; -import net.tccn.qtask.QTaskMethod; -import net.tccn.qtask.QTaskMysql; +import net.tccn.qtask.impl.QTaskEs; +import net.tccn.qtask.impl.QTaskHttp; +import net.tccn.qtask.impl.QTaskMethod; +import net.tccn.qtask.impl.QTaskMysql; public class QRuner { @@ -14,6 +15,8 @@ public class QRuner { return new QTaskMethod(e).execute(); case "http": return new QTaskHttp(e).execute(); + case "es": + return new QTaskEs(e).execute(); } return null; } diff --git a/qtask/src/main/java/net/tccn/qtask/QTask.java b/src/main/java/net/tccn/qtask/QTask.java similarity index 81% rename from qtask/src/main/java/net/tccn/qtask/QTask.java rename to src/main/java/net/tccn/qtask/QTask.java index 6109236..c80dc65 100644 --- a/qtask/src/main/java/net/tccn/qtask/QTask.java +++ b/src/main/java/net/tccn/qtask/QTask.java @@ -1,7 +1,5 @@ package net.tccn.qtask; -import net.tccn.E; - public interface QTask { E getE(); diff --git a/qtask/src/main/java/net/tccn/qtask/QTaskAbs.java b/src/main/java/net/tccn/qtask/impl/QTaskAbs.java similarity index 69% rename from qtask/src/main/java/net/tccn/qtask/QTaskAbs.java rename to src/main/java/net/tccn/qtask/impl/QTaskAbs.java index b228c4a..3d0dafa 100644 --- a/qtask/src/main/java/net/tccn/qtask/QTaskAbs.java +++ b/src/main/java/net/tccn/qtask/impl/QTaskAbs.java @@ -1,6 +1,7 @@ -package net.tccn.qtask; +package net.tccn.qtask.impl; -import net.tccn.E; +import net.tccn.qtask.E; +import net.tccn.qtask.QTask; public abstract class QTaskAbs implements QTask { diff --git a/src/main/java/net/tccn/qtask/impl/QTaskEs.java b/src/main/java/net/tccn/qtask/impl/QTaskEs.java new file mode 100644 index 0000000..61d652f --- /dev/null +++ b/src/main/java/net/tccn/qtask/impl/QTaskEs.java @@ -0,0 +1,24 @@ +package net.tccn.qtask.impl; + +import net.tccn.qtask.E; +import net.tccn.qtask.QRuner; +import net.tccn.base.Kv; + +public class QTaskEs extends QTaskAbs { + + public QTaskEs(E e) { + super(e); + } + + @Override + public Object execute() { + StringBuilder url = new StringBuilder(getE().queryId); + if (!url.toString().contains("?")) url.append("?"); + getE().para.forEach((k, v) -> { + url.append("&" + k + "=" + v); + }); + + String _url = url.toString().replaceAll(" ", "%20"); + return QRuner.query(new E("http", _url, "", Kv.of())); + } +} diff --git a/qtask/src/main/java/net/tccn/qtask/QTaskHttp.java b/src/main/java/net/tccn/qtask/impl/QTaskHttp.java similarity index 63% rename from qtask/src/main/java/net/tccn/qtask/QTaskHttp.java rename to src/main/java/net/tccn/qtask/impl/QTaskHttp.java index 419ffb5..4f85944 100644 --- a/qtask/src/main/java/net/tccn/qtask/QTaskHttp.java +++ b/src/main/java/net/tccn/qtask/impl/QTaskHttp.java @@ -1,9 +1,12 @@ -package net.tccn.qtask; +package net.tccn.qtask.impl; -import net.tccn.E; +import net.tccn.qtask.E; +import net.tccn.qtask.QTask; import java.io.*; import java.net.*; +import java.util.HashMap; +import java.util.Map; /** * @author: liangxianyou at 2019/1/20 11:07. @@ -14,11 +17,12 @@ public class QTaskHttp extends QTaskAbs implements QTask { super(e); } + private static Map connetions = new HashMap(); + private URLConnection getConnection() { try { URI uri = URI.create(getE().queryId); URL url = uri.toURL(); - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); StringBuilder content = new StringBuilder(); @@ -29,14 +33,18 @@ public class QTaskHttp extends QTaskAbs implements QTask { content.deleteCharAt(content.length() - 1); } - connection.setDoOutput(true); - connection.setRequestMethod("POST"); + connection.setRequestMethod("GET"); connection.setRequestProperty("Accept-Charset", "utf-8"); + //connection.setRequestProperty("Connection", "Keep-Alive"); connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); - connection.setRequestProperty("Content-Length", String.valueOf(content.length())); - connection.getOutputStream().write(content.toString().getBytes()); + String encode = content.toString().replaceAll(" ", "%20"); + System.out.println(encode); + //connection.setRequestProperty("Content-Length", String.valueOf(content.length())); + //connection.getOutputStream().write(encode.getBytes()); + + connetions.put(getE().queryId, connection); return connection; } catch (MalformedURLException e) { e.printStackTrace(); @@ -49,10 +57,11 @@ public class QTaskHttp extends QTaskAbs implements QTask { @Override public Object execute() { + URLConnection connection = getConnection(); try ( - InputStream is = getConnection().getInputStream(); - InputStreamReader reader = new InputStreamReader(is); - BufferedReader br = new BufferedReader(reader); + InputStream is = connection.getInputStream(); + InputStreamReader reader = new InputStreamReader(is); + BufferedReader br = new BufferedReader(reader); ){ String content = ""; @@ -65,6 +74,8 @@ public class QTaskHttp extends QTaskAbs implements QTask { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); + } finally { + } return null; } diff --git a/qtask/src/main/java/net/tccn/qtask/QTaskMethod.java b/src/main/java/net/tccn/qtask/impl/QTaskMethod.java similarity index 94% rename from qtask/src/main/java/net/tccn/qtask/QTaskMethod.java rename to src/main/java/net/tccn/qtask/impl/QTaskMethod.java index 59fb8ef..c5c74b7 100644 --- a/qtask/src/main/java/net/tccn/qtask/QTaskMethod.java +++ b/src/main/java/net/tccn/qtask/impl/QTaskMethod.java @@ -1,7 +1,8 @@ -package net.tccn.qtask; +package net.tccn.qtask.impl; -import net.tccn.E; +import net.tccn.qtask.E; import net.tccn.base.Kv; +import net.tccn.qtask.QTask; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; diff --git a/qtask/src/main/java/net/tccn/qtask/QTaskMysql.java b/src/main/java/net/tccn/qtask/impl/QTaskMysql.java similarity index 88% rename from qtask/src/main/java/net/tccn/qtask/QTaskMysql.java rename to src/main/java/net/tccn/qtask/impl/QTaskMysql.java index 1b20718..f2a358e 100644 --- a/qtask/src/main/java/net/tccn/qtask/QTaskMysql.java +++ b/src/main/java/net/tccn/qtask/impl/QTaskMysql.java @@ -1,6 +1,7 @@ -package net.tccn.qtask; +package net.tccn.qtask.impl; -import net.tccn.E; +import net.tccn.qtask.E; +import net.tccn.qtask.QTask; public class QTaskMysql extends QTaskAbs implements QTask { diff --git a/src/main/java/net/tccn/service/BaseService.java b/src/main/java/net/tccn/service/BaseService.java new file mode 100644 index 0000000..76ba392 --- /dev/null +++ b/src/main/java/net/tccn/service/BaseService.java @@ -0,0 +1,88 @@ +package net.tccn.service; + +import com.arangodb.Predicate; +import com.google.gson.Gson; +import org.redkale.net.http.RestMapping; +import org.redkale.service.Service; +import org.redkale.source.CacheSource; +import org.redkale.util.AnyValue; + +import javax.annotation.Resource; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.function.Supplier; +import java.util.logging.Logger; + +/** + * @author: liangxianyou at 2018/10/22 11:49. + */ +public class BaseService implements Service { + + public static Gson gson = new Gson(); + public Logger logger = Logger.getLogger(this.getClass().getSimpleName()); + + public static Predicate isEmpty = (x) -> { + if (x == null) + return true; + if (x instanceof List) + return ((List) x).isEmpty(); + if (x instanceof String) + return ((String) x).isEmpty(); + if (x instanceof Map) + return ((Map) x).isEmpty(); + if (x instanceof Collection) + return ((Collection) x).isEmpty(); + return false; + }; + + public static boolean isWinos = System.getProperty("os.name").contains("Window"); + + @Resource(name = "cacheSource") + protected CacheSource cacheSource; + + @Resource(name = "APP_HOME") + protected File APP_HOME; + + public static Properties prop = new Properties(); + + @Override + public void init(AnyValue config) { + try { + File file = new File(APP_HOME.toPath() + "/conf/config.txt"); + if (file.exists()) { + prop.load(new FileInputStream(file)); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + @RestMapping(ignore = true) + public T getT(String key, Class clazz, Supplier supplier) { + Object obj = cacheSource.getAndRefresh(key, 1000 * 60 * 3, clazz); + if (obj != null) { + return (T) obj; + } + + T t = supplier.get(); + if (t != null) { + cacheSource.set(1000 * 60 * 3, key, clazz, t); + } + return t; + } + + @RestMapping(ignore = true) + public String getProperty(String k, String defaultValue){ + return prop.getProperty(k, defaultValue).replace("${APP_HOME}", APP_HOME.getPath()); + } + @RestMapping(ignore = true) + public String getProperty(String k){ + return prop.getProperty(k); + } + +} diff --git a/src/main/java/net/tccn/service/BaseServlet.java b/src/main/java/net/tccn/service/BaseServlet.java new file mode 100644 index 0000000..8566fc7 --- /dev/null +++ b/src/main/java/net/tccn/service/BaseServlet.java @@ -0,0 +1,79 @@ +package net.tccn.service; + +import com.arangodb.ArangoDBException; +import com.google.gson.Gson; +import net.tccn.base.Kv; +import net.tccn.base.arango.ArangoSource; +import org.redkale.net.http.HttpRequest; +import org.redkale.net.http.HttpResponse; +import org.redkale.net.http.HttpServlet; + +import java.io.IOException; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * @author: liangxianyou at 2018/11/8 17:05. + */ +public class BaseServlet extends HttpServlet { + + public Logger logger = Logger.getLogger(this.getClass().getSimpleName()); + protected static Gson gson = new Gson(); + + @Override + protected void preExecute(HttpRequest request, HttpResponse response) throws IOException { + String sessionid = request.getParameter("token"); + if (sessionid == null) { + sessionid = request.getHeader("token"); + } + if (sessionid == null) { + sessionid = request.getSessionid(true); + } + + if (sessionid != null) { + //User user = userService.current(sessionid); + //request.setCurrentUser(user); + } + + super.preExecute(request, response); + } + + @Override + protected void authenticate(HttpRequest request, HttpResponse response) throws IOException { + /* fixme: 权限拦截 + if (request.currentUser() == null) { + if ("XMLHttpRequest".equals(request.getHeader("X-Requested-With"))){ + response.finish(JBean.by(-2, "未登陆")); + }else { + response.finish(HttpScope.refer("/user/login.html")); + } + return; + }*/ + super.authenticate(request, response); + } + + @Override + public void execute(HttpRequest request, HttpResponse response) throws IOException { + try { + super.execute(request, response); + } catch (ArangoDBException e) { + logger.log(Level.INFO, "arangodb init!", e); + ArangoSource.init(); + } + } + + public Kv getParams(HttpRequest request, String... key) { + Kv kv = Kv.of(); + for (String k : key) { + if (k.contains("=")) { //如果没有值使用默认值 + kv.put(k.split("=")[0], request.getParameter(k.split("=")[0], k.split("=")[1])); + continue; + } else if (k.contains("<")) { //强制使用"<"右侧的值 + kv.put(k.split("<")[0], k.split("<")[1]); + continue; + } + kv.put(k, request.getParameter(k)); + } + return kv; + } +} diff --git a/src/main/java/net/tccn/service/MetadataService.java b/src/main/java/net/tccn/service/MetadataService.java new file mode 100644 index 0000000..3b531c2 --- /dev/null +++ b/src/main/java/net/tccn/service/MetadataService.java @@ -0,0 +1,181 @@ +package net.tccn.service; + +import net.tccn.base.JBean; +import net.tccn.base.Kv; +import net.tccn.dbq.DbPlat; +import net.tccn.dbq.Field; +import net.tccn.dbq.qtask.SysPlat; +import net.tccn.meta.MetaKit; +import net.tccn.meta.MetaService; +import net.tccn.meta.MetaTable; +import org.redkale.net.http.RestMapping; +import org.redkale.net.http.RestParam; +import org.redkale.net.http.RestService; + +import javax.annotation.Resource; +import java.util.Comparator; +import java.util.List; +import java.util.logging.Level; +import java.util.stream.Collectors; + +/** + * @author: liangxianyou at 2018/10/17 16:59. + */ +@RestService(name = "meta", automapping = true, comment = "元数据服务") +public class MetadataService extends BaseService { //arango + + @Resource + private QtaskService qtaskService; + + + public MetaTable findMetaTable(String name, String token) { + return getT("meta_cols_" + name + token, MetaTable.class, () -> { + SysPlat sysPlat = qtaskService.getSysPlat(token); + if (sysPlat == null) { + logger.log(Level.INFO, "平台信息未知"); + throw new IllegalArgumentException("平台信息未知"); + } + + return MetaKit.getMetaTables() + .stream() + .filter(x -> { + //fixme: 平台过滤 + return x.getName().equals(name); + }) + .findAny() + .get(); + }); + } + + @RestMapping(name = "list_cfg", auth = false, comment = "内容列表配置") + public JBean listCfg(String key, @RestParam(name = "platToken") String token) { + JBean jBean = JBean.by(0, ""); + + MetaService metaService = MetaKit.metaService(key); + fixme: jBean.set(0, "", MetaKit.builderCfg.apply(metaService)); + return jBean; + } + + //----------- 数据平台 --------------- + @RestMapping(name = "db_plat_list", comment = "数据平台") + public List dbPlatList() { + return MetaKit.getDbPlats(); + } + + + + + //----------- 元数据管理 --------------- + @RestMapping(name = "tablelist", comment = "table列表") + public JBean tableList(@RestParam(name = "platToken") String token, + String catalog, + String dbPlatId, + String name) { + JBean jBean = JBean.by(0, ""); + SysPlat sysPlat = qtaskService.getSysPlat(token); + if (sysPlat == null) { + return jBean.set(-1, "平台信息未知"); + } + + List list = MetaKit.getMetaTables() + .stream() + .filter(x -> { + return (isEmpty.test(catalog) || catalog.equals(x.getCatalog())) && + (isEmpty.test(dbPlatId) || dbPlatId.equals(x.getDbPlatId())) && + (isEmpty.test(name) || x.getName().contains(name)); + }) + .sorted(Comparator.comparing(MetaTable::getName)) + .map(x -> { + //组装返回的数据 + Kv kv = Kv.of("name", x.getName()) + .set("comment", x.getComment()) + .set("catalog", x.getCatalog()); + MetaKit.getDbPlats().stream().filter(d -> d.getKey().equals(x.getDbPlatId())).findAny().ifPresent(d -> kv.set("dbPlatName", d.getName())); + return kv; + }) + .collect(Collectors.toList()); + + return jBean.setBody(list); + } + + @RestMapping(name = "tableinfo", comment = "table详情") + public JBean tableInfo(@RestParam(name = "platToken") String token, String name) { + return JBean.by(0, "", findMetaTable(name, token)); + } + + //修改item的排序 + @RestMapping(name = "itemsort", comment = "字段排序") + public String[] itemSortSave(String serviceKey , String[] items, @RestParam(name = "platToken") String token) { + + MetaTable metaTable = findMetaTable(serviceKey, token); + MetaKit.sortItem.apply(metaTable, items); + metaTable.update(); + return items; + } + + @RestMapping(name = "itemupdate", comment = "字段修改") + public List itemUpdate(String serviceKey , List items, @RestParam(name = "platToken") String token) { + MetaTable metaTable = findMetaTable(serviceKey, token); + + MetaKit.itemUpdate.apply(metaTable, items); + metaTable.update(); + return items; + } + + @RestMapping(name = "showsort", comment = "展示字段修改") + public List showSort(String serviceKey , List items, @RestParam(name = "platToken") String token) { + if (items == null || items.size() == 0) return null; + + MetaTable metaTable = findMetaTable(serviceKey, token); + //fixme: metaTable.setShows(items); + metaTable.update(); + return items; + } + + @RestMapping(name = "exportsort", comment = "导出字段排序保存") + public List exportSort(String serviceKey , List items, @RestParam(name = "platToken") String token) { + if (items == null || items.size() == 0) return null; + + MetaTable metaTable = findMetaTable(serviceKey, token); + //fixme: metaTable.setExports(items); + metaTable.update(); + return items; + } + + @RestMapping(name = "importsort", comment = "导入字段保存") + public List importSort(String serviceKey , List items, @RestParam(name = "platToken") String token) { + if (isEmpty.test(items)) return null; + + MetaTable metaTable = findMetaTable(serviceKey, token); + //fixme: metaTable.setImports(items); + metaTable.update(); + return items; + } + + @RestMapping(name = "dbplatupdate", comment = "数据平台修改") + public JBean dbPlatUpdate(MetaTable metaTable, @RestParam(name = "platToken") String token) { + + MetaTable _metaTable = MetaKit.getMetaTableByKey(metaTable.getKey()); + _metaTable.setComment(metaTable.getComment()); + _metaTable.setCatalog(metaTable.getCatalog()); + _metaTable.setDbPlatId(metaTable.getDbPlatId()); + _metaTable.setCatalog(metaTable.getCatalog()); + + _metaTable.update(); + return JBean.by(0, ""); + } + + @RestMapping(name = "filter_update", comment = "查询配置修改") + public JBean filterUpdate(@RestParam(name = "serviceKey") String serviceKey, + @RestParam(name = "filters") String filters, + @RestParam(name = "platToken") String token) { + List _filters = gson.fromJson(filters, List.class); + MetaTable metaTable = findMetaTable(serviceKey, token); + + //fixme: metaTable.setFilters(_filters); + metaTable.update(); + + return JBean.by(0, ""); + } + +} diff --git a/src/main/java/net/tccn/service/QtaskService.java b/src/main/java/net/tccn/service/QtaskService.java new file mode 100644 index 0000000..c4dc378 --- /dev/null +++ b/src/main/java/net/tccn/service/QtaskService.java @@ -0,0 +1,122 @@ +package net.tccn.service; + +import net.tccn.base.JBean; +import net.tccn.base.Kv; +import net.tccn.base.arango.ArangoSource; +import net.tccn.dbq.DbPlat; +import net.tccn.dbq.qtask.Qtask; +import net.tccn.dbq.qtask.SysPlat; +import org.redkale.net.http.RestMapping; +import org.redkale.net.http.RestParam; +import org.redkale.net.http.RestService; + +import javax.annotation.Resource; +import java.sql.SQLException; +import java.util.function.Predicate; + +/** + * @author: liangxianyou at 2018/11/13 18:14. + */ +@RestService(name = "qtask", automapping = true, comment = "qtask查询服务") +public class QtaskService extends BaseService { + + private Predicate checkObj = (s) -> s != null && s.startsWith("{") && s.endsWith("}"); + + public SysPlat getSysPlat(String token) { + return getT(token, SysPlat.class, () -> SysPlat.dao.findFirst(new SysPlat(token))); + } + + ///qtask/query?queryId=platform.list¶={id:211} + @RestMapping(name = "call", comment = "qtask查询") + public JBean call(String queryId, String para, @RestParam(name = "platToken") String token) { + JBean jBean = JBean.by(0, ""); + do { + SysPlat sysPlat = getSysPlat(token); + if (sysPlat == null) { + jBean.set(-1, "平台信息未知"); break; + } + + Qtask qtask = getQTask(queryId, sysPlat.getKey()); + if (qtask == null) { + jBean.set(-1, "未知任务"); break; + } + + if (!checkObj.test(para)) { + para = qtask.getPara(); + } + Kv kv = null; + if (checkObj.test(para)) { + kv = BaseService.gson.fromJson(para, Kv.class); + } + try { + jBean.setBody(run(qtask, kv)); + } catch (SQLException e) { + e.printStackTrace(); + return jBean.set(-1, "数据查询失败", e.getMessage()); + } + } while (false); + return jBean; + } + + + @RestMapping(name = "test", comment = "qtask调试") + public JBean test(Qtask qtask) { + JBean jBean = JBean.by(0, ""); + do { + //check data + if (isEmpty.test(qtask.getSql())) { + jBean.set(-1, "查询失败,请设置正确的【SQL】"); break; + } + if (isEmpty.test(qtask.getPlatId()) || isEmpty.test(qtask.getCatalog())) { + jBean.set(-1, "查询失败,请设置正确的【数据平台】"); break; + } + + DbPlat dbPlat = DbPlat.dao.findByKey(qtask.getPlatId());//arangoSource.findById("db_plat/" + qTask.getPlatId(), DbPlat.class); + if (dbPlat == null) { + jBean.set(-1, "查询失败,请设置正确的【数据平台】"); break; + } + Kv kv = null; + if (checkObj.test(qtask.getPara())) { + try { + kv = BaseService.gson.fromJson(qtask.getPara(), Kv.class); + } catch (Exception e) { + jBean.set(-1, "查询失败,请设置正确的【查询参数】"); break; + } + } + + try { + jBean.setBody(run(qtask, kv)); + } catch (SQLException e) { + e.printStackTrace(); + jBean.set(-1, e.getMessage()); + } + } while (false); + return jBean; + } + + // /qtask/query?queryId=platform.list¶={id:211} + @RestMapping(ignore = true, comment = "qtask查询数据") + private Object run(Qtask qTask, Kv kv) throws SQLException { + + + return null; + } + + //----------- Qtask --------------- + + @RestMapping(name = "qsave", comment = "qtask保存") + public JBean qtaskSave(Qtask qtask) { + JBean jBean = JBean.by(0, ""); + + return jBean; + } + + @RestMapping(ignore = true, comment = "qtask获取") + public Qtask getQTask(String queryId, String sysPlatId) { + Qtask qtask = null; + + return qtask; + } + + //------------------------------------------------------- +} diff --git a/qtask/src/test/java/RunTest.java b/src/test/java/RunTest.java similarity index 62% rename from qtask/src/test/java/RunTest.java rename to src/test/java/RunTest.java index a303465..469ce02 100644 --- a/qtask/src/test/java/RunTest.java +++ b/src/test/java/RunTest.java @@ -1,21 +1,23 @@ -import net.tccn.E; -import net.tccn.QRuner; +import net.tccn.qtask.E; +import net.tccn.qtask.QRuner; import net.tccn.base.Kv; import org.junit.Test; /** * @author: liangxianyou at 2019/1/20 12:43. */ -public class RunTest { +public class RunTest { public static E A = new E("mysql", "select * from user where userid=#(userid)", "查询用户列表", Kv.of("userid", 1)); public static E B = new E("method", "User.say", "user调用", Kv.of("name", "张三").set("age", 13)); public static E C = new E("http", "http://127.0.0.1/meta/db_plat_list?platToken=3421432", "查询数据平台列表", Kv.of("abx", "abx111")); + public static E d = new E("es", "http://192.168.91.5:9200/_sql?", "查询数据平台列表", Kv.of("sql", "select * from basic_iotdevice_all limit 10")); + public static E e = new E("http", "http://192.168.91.5:9200/_sql?sql=select%20*%20from%20basic_iotdevice_all%20limit%2010", "查询数据平台列表", Kv.of()); - @Test + //@Test public void t() { long start = System.currentTimeMillis(); - Object query = QRuner.query(C); + Object query = QRuner.query(d); System.out.printf("耗时:%s MS" ,System.currentTimeMillis() - start); System.out.println(); diff --git a/qtask/src/test/java/User.java b/src/test/java/User.java similarity index 51% rename from qtask/src/test/java/User.java rename to src/test/java/User.java index a5f2356..cbb2a2d 100644 --- a/qtask/src/test/java/User.java +++ b/src/test/java/User.java @@ -4,6 +4,24 @@ import net.tccn.base.Kv; * @author: liangxianyou at 2019/1/20 12:52. */ public class User { + private int id; + private String IP; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getIP() { + return IP; + } + + public void setIP(String IP) { + this.IP = IP; + } public String say(Kv kv) { String s = String.format("我叫:%s, 今年:%s岁", kv.get("name"), kv.get("age"));