Lenovo 6 months ago
parent 37349ea7ae
commit f9a01a4789

@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.11 (pythonProject4)" project-jdk-type="Python SDK" />
</project>

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/pythonProject4.iml" filepath="$PROJECT_DIR$/.idea/pythonProject4.iml" />
</modules>
</component>
</project>

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/venv" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

@ -0,0 +1,106 @@
'''
负责处理入库业务
'''
from Model import DataDB as db
from Controller import DataFetch
import logging
from datetime import datetime
scrawler = DataFetch.Scrawler()
'''入库业务'''
'''1.新闻入库 insertData(tableName,source,ctime,title,url):'''
def newsAdd(id):
if id=='0':
'''工大的地址'''
source="工大新闻"
url = 'http://news.hut.edu.cn/'
count=0
for i in range(0,5):
ctime = scrawler.reqbsGetText(url, cssselector='.news-list .date')[i]
title = scrawler.reqbsGetText(url, cssselector='.news-list .info h2')[i]
urls = url+scrawler.reqbsGetHref(url, cssselector='.news-list .info a')[i]
if db.insertData('news',source,ctime,title,urls):
count=count+1
else:count=0
if count==5:return True
else:return False
elif id=='1':
'''北大新闻'''
source = "北大新闻"
url = 'https://news.pku.edu.cn/ttxw/index.htm'
count = 0
for i in range(0, 5):
ctime = scrawler.reqbsGetText(url, cssselector='.articleList01 .item-date')[i]
title = scrawler.reqbsGetText(url, cssselector='.articleList01 .item-txt h3')[i]
urls = url + scrawler.reqbsGetHref(url, cssselector='.articleList01 .item-txt h3 a')[i]
if db.insertData('news', source, ctime, title, urls):
count = count + 1
else:
count = 0
if count == 5:
return True
else:
return False
pass
'''2.疫情数据入库'''
def yqAdd(source):
if source=='1':
# 来源是新浪疫情
url = 'http://zj.sina.com.cn/zt_d/zjyiqing/?hk=/*'
res = scrawler.reqbsGetJSON(url=url)
ctime = res['data']['mtime']
cnumber = res['data']['gntotal']
gnumber = res['data']['deathtotal']
if db.insertData('yq',source,ctime,cnumber,gnumber):
return True
else:return False
elif source=='0':
# 来源是腾讯疫情
url = 'https://www.qq.com/'
res = scrawler.reqbsGetJSON(url=url)
ctime = res['data']['mtime']
cnumber = res['data']['gntotal']
gnumber = res['data']['deathtotal']
if db.insertData('yq',source,ctime,cnumber,gnumber):
return True
else:return False
'''
日志相关处理方法
'''
class MyLogHandler(logging.Handler, object):
""" 自定义日志handler """
def __init__(self):
logging.Handler.__init__(self)
def emit(self, record):
""" record为一个消息类对象包括nameasctime、lineno、funcname等属性
emit函数为自定义handler类时必重写的函数这里可以根据需要对日志消息做一些处理比如发送日志到服务器
发出记录(Emit a record)"""
try:
db.log2db(str(datetime.now()),record.lineno,
record.funcName,record.getMessage())
except Exception:
self.handleError(record)
def mylog():
# 创建一个日志记录器
log = logging.getLogger("test_logger")
log.setLevel(logging.DEBUG)
# 创建一个日志处理器
logHandler = MyLogHandler()
logHandler.setLevel(logging.INFO)
# 创建一个日志格式器
formats = logging.Formatter('%(asctime)s - %(name)s - %(lineno)d: %(message)s')
# 将日志格式器添加到日志处理器中
logHandler.setFormatter(formats)
# 将日志处理器添加到日志记录器中
log.addHandler(logHandler)
return log
if __name__=='__main__':
print(newsAdd('工大新闻',0))
print(yqAdd('新浪'))
# print(db.getAllData('yq'))

@ -0,0 +1,100 @@
'''
es
'''
from elasticsearch import Elasticsearch
import requests
from bs4 import BeautifulSoup
import datetime
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36',
}
def get_target(url,selector):
try:
response = requests.get(url=url, headers=headers)
response.encoding = 'UTF-8'
bs = BeautifulSoup(response.text,'html.parser')
return [item.text for item in bs.select(selector=selector)]
except Exception as e:
pass
class esController():
def __init__(self,index_name,index_type):
'''
创建连接对象同时给定连接哪个index和哪个type
:param index_name: 相当于哪个库
:param index_type: 相当于哪个表
'''
self.es = Elasticsearch(hosts="localhost:9200") #创建连接对象
self.index_name = index_name
self.index_type = index_type
def create_index(self):
'''
创建一个index如果存在时就先删除然后再重新创建
:return:
'''
if self.es.indices.exists(index=self.index_name):
self.es.indices.delete(index=self.index_name)
self.es.indices.create(index=self.index_name)
def delete_index(self):
'''
删除某一个index
:return:
'''
try:
self.es.indices.delete(index=self.index_name)
except:pass
def search_index(self,keyword,fields,count):
'''
查询index里的内容
:param keyword: 查询内容
:param count: 返回多少个数量
:return:
'''
body = {
"query": {
"multi_match": {
"query": keyword, # 指定查询内容,注意:会被分词
"fields": fields # 指定字段查询
}
}
}
return self.es.search(index=self.index_name,body=body,size=count)
def get_doc(self,id):
'''
获取index里的某个文档内容
:param id:
:return:
'''
return self.es.get(index=self.index_name,id=id)
def insert_one(self,doc:dict):
'''
往index中插入内容
:param doc: 以键值对方式表示的内容
:return:
'''
self.es.index(index=self.index_name,doc_type=self.index_type,body=doc)
def insert_array(self,docs:list):
'''
往index中插入多项内容
:param docs:
:return:
'''
for doc in docs:
self.es.index(index=self.index_name, doc_type=self.index_type, body=doc)
if __name__ == '__main__':
# 搜索获取新闻
es = esController("tust","news")
res =es.search_index("实验",'title',10)
print("共有{}条结果".format(res['hits']['total']['value']))
for item in res['hits']['hits']:
print(item['_score'],item['_source'])

@ -0,0 +1,97 @@
'''
爬虫业务
'''
import requests,re,json
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.by import By
'''基于css选择器来实现目标的获取解析'''
class Scrawler():
def __init__(self):
self.headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36 Edg/100.0.1185.36'
}
def reqbsGetText(self,url=None,cssselector=None):
'''获取文本'''
try:
rs = requests.get(url,headers=self.headers)
rs.encoding=rs.apparent_encoding
bs =BeautifulSoup(rs.text,'html.parser')
return [str(item.text).strip() for item in bs.select(selector=cssselector)]
except:pass
def reqbsGetJSON(self,url=None):
'''获取JSON文本'''
try:
rs = requests.get(url,headers=self.headers).text
rs = str(rs)[13:][:-2]
return dict(json.loads(rs))
except:pass
def reqbsGetImg(self,url=None,cssselector=None):
'''图片获取'''
try:
rs = requests.get(url, headers=self.headers)
rs.encoding = rs.apparent_encoding
bs = BeautifulSoup(rs.text, 'html.parser')
urls = [item.attrs['src'] for item in bs.select(selector=cssselector)]
print(urls)
titles = [item.atrrs['alt'] for item in bs.select(selector=cssselector)]
return urls,titles
except:pass
def reqbsGetHref(self, url=None, cssselector=None):
try:
rs = requests.get(url, headers=self.headers)
rs.encoding = rs.apparent_encoding
bs = BeautifulSoup(rs.text, 'html.parser')
urls = [item.attrs['href'] for item in bs.select(selector=cssselector)]
return urls
except:
pass
def seleniumGetText(self,url,cssselector=None):
chrome = webdriver.Chrome()
chrome.get(url)
chrome.implicitly_wait(3)
res = chrome.find_elements(by=By.CSS_SELECTOR,value=cssselector)
return [str(item.text).strip() for item in res]
# 获取株洲本地的温度
def getWeatherInfo():
url=" http://d1.weather.com.cn/sk_2d/101250304.html?_=1716271809611"
headers={
"Host": "d1.weather.com.cn",
"Referer": "http://www.weather.com.cn/",
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36"
}
str = requests.get(url,headers=headers).text.replace('"','')
for item in str.split(","):
if 'time' in item:
timeinfo=item[5:]
elif 'temp:' in item:temp=item.split(":")[1]
return timeinfo,temp
# 获取期刊名
if __name__=='__main__':
# print(getWeatherInfo())
str='var dataSK={"nameen":"hetang","cityname":"荷塘","city":"101250304","temp":"27.6","tempf":"81.7","WD":"东北风","wde":"NE","WS":"1级","wse":"4km\/h","SD":"69%","sd":"69%","qy":"1002","njd":"12km","time":"14:25","rain":"0","rain24h":"0","aqi":"49","aqi_pm25":"49","weather":"阴","weathere":"Overcast","weathercode":"d02","limitnumber":"","date":"05月21日(星期二)"}'
str1=str.replace('"','')
items=str1.split(",")
for item in items:
if 'time' in item:
timeinfo=item[5:]
elif 'temp:' in item:temp=item.split(":")[1]
print(timeinfo,temp)

@ -0,0 +1,53 @@
import platform,psutil
from datetime import datetime
from Model import DataDB as db
def get_size(bytes, suffix="B"):
"""
Scale bytes to its proper format
e.g:
1253656 => '1.20MB'
1253656678 => '1.17GB'
"""
factor = 1024
for unit in ["", "K", "M", "G", "T", "P"]:
if bytes < factor:
return f"{bytes:.2f}{unit}{suffix}"
bytes /= factor
def getsysInfo():
'''
系统软硬件信息
:return:
'''
#1.运行环境
data={}
data['system']=platform.uname().system
data['node']=platform.uname().node
data['version']=platform.uname().version
#2.启动时间
data['boottime']=datetime.fromtimestamp(psutil.boot_time())
#3.memory
data['memoryused']=get_size(psutil.virtual_memory().used)
data['memoryfree']=get_size(psutil.virtual_memory().free)
data['memorytotal']=get_size(psutil.virtual_memory().total)
data['memorypercent']=psutil.virtual_memory().percent
#4.CPU
data['cpucount']=psutil.cpu_count(logical=False)
data['cpupercent']=psutil.cpu_percent()
data['cpucurrent']=psutil.cpu_freq().current
#5.disk
data['diskdevice']=[item.device for item in psutil.disk_partitions()]
data['diskfstype']=[item.fstype for item in psutil.disk_partitions()]
data['diskusage']=[psutil.disk_usage(item.mountpoint) for item in psutil.disk_partitions()]
data['diskMountpoint'] = [item.mountpoint for item in psutil.disk_partitions()]
data['diskpercent'] = [psutil.disk_usage(item).percent for item in data['diskMountpoint']]
data['disktotal'] = [get_size(psutil.disk_usage(item).total) for item in data['diskMountpoint']]
data['diskfree'] = [get_size(psutil.disk_usage(item).free) for item in data['diskMountpoint']]
data['diskused'] = [get_size(psutil.disk_usage(item).used) for item in data['diskMountpoint']]
return data
# 读取日志函数
def getsysLog(page):
return db.getAllDataByPage("dblog",page)

@ -0,0 +1,59 @@
'''
数据库的业务
'''
import math
from Model.dbModel import dbConnect
db = dbConnect()
''' 针对请求的增删改查业务进行处理'''
'''查询业务'''
'''1.查询所有字段的值'''
def getAllData(tableName):
return db.dbQuery(sql="select * from {} order by id desc".format(tableName))
'''1.1按照指定的数量查询所有字段的值并返回'''
def getAllDataByPage(tableName,page):
return db.dbQuery(sql="select * from {} order by id desc limit {},10".format(tableName,10*page-10))
'''1.2获取共有多少页数据'''
def getAllDataPage(tableName):
totalNumbers = db.dbQuery(sql="select count(id) from {} ".format(tableName))
return math.ceil(int(totalNumbers[0][0])/10)
'''2.根据id来查询对应的值'''
def getDataByID(tableName,id):
return db.dbQuery(sql="select * from {} where id={}".format(tableName,id))[0]
'''3.根据name来查询用户对应的值'''
def getDataByName(name):
return db.dbQuery(sql="select * from user where username='{}'".format(name))[0]
'''插入数据'''
def insertData(tableName,source,ctime,title,url):
sql = "insert into {} values(null,'{}','{}','{}','{}',0)".format(tableName,source,ctime,title,url)
return db.dbManage(sql=sql)
'''删除数据'''
def delData(tableName,id):
return db.dbManage(sql="delete from {} where id={}".format(tableName,id))
'''修改数据'''
def modifyData(tableName,id,status):
return db.dbManage(sql="update {} set status={} where id={}".format(tableName,status,id))
'''魔术查询'''
def searchData(kw):
return db.dbQuery(sql="select * from news where title like '%{}%'".format(kw))
'''日志入库'''
def log2db(ctime,lineno,funname,msg):
return db.dbManage(sql="insert into dblog values(null,'{}','{}','{}','{}')".format(ctime,lineno,funname,msg))
'''测试'''
if __name__=='__main__':
# print(getDataByName('admin'))
print(log2db('111','23','app','ok'))
'''测试'''

@ -0,0 +1,47 @@
'''
数据库连接
'''
import pymysql
class dbConnect():
def __init__(self):
self.conn = pymysql.connect(user='wang123',
password='wang123',
database='myweb',
host='127.0.0.1',
charset='utf8')
self.cursor = self.conn.cursor()
def dbManage(self,sql=None):
'''
实现对数据表里的定义增加删除修改操作
:param sql:
:return:
'''
flag = False
try:
self.cursor.execute(sql)
self.conn.commit()
flag=True
except:pass
return flag
def dbQuery(self,sql):
'''
数据库的查询业务
:param sql:
:return:
'''
try:
self.cursor.execute(sql)
return self.cursor.fetchall()
except:
return None
if __name__=='__main__':
d = dbConnect()
# print(d.dbManage(sql="insert into dblog values(null,'111','2','aap','okdfdfd')"))
print(d.dbQuery(sql="select * from dblog"))

@ -0,0 +1,106 @@
'''后端请求'''
from Model import DataDB as db
from Controller import Data2DB as d2b
from Controller import DataFetch
from Controller import DataMonitor
def login(name,pwd):
'''
登录处理
:param name:
:param pwd:
:return:
'''
status=False
res = db.getDataByName(name=name)
if res:
if pwd==res[2]:status=True
return status
def getDataList(tableName):
'''
获取所有的数据
:param tableName:
:return:
'''
return db.getAllData(tableName=tableName)
def getDataListPage(tableName):
'''
获取数据的分页数量
:param tableName:
:param page:
:return:
'''
return db.getAllDataPage(tableName=tableName)
def getDataListByPage(tableName,page):
'''
获取分页的数据
:param tableName:
:param page:
:return:
'''
return db.getAllDataByPage(tableName=tableName,page=page)
def newsFetch(id):
'''
爬取新闻处理
:param id:
:return:
'''
return d2b.newsAdd(id)
def newsDelete(tableName,id):
'''
删除某一条指定的新闻
:param id:
:return:
'''
return db.delData(tableName,id)
def newsShow(tableName,id):
'''
显示某一条指定的新闻
:param id:
:return:
'''
return db.modifyData(tableName,1,id)
def yqFetch(id):
'''
爬取疫情处理
:param id:
:return:
'''
return d2b.yqAdd(id)
def getTemp():
'''
获取当时的温度
:return:
'''
return DataFetch.getWeatherInfo()
def searchdata(kw):
'''
模糊搜索
:param tablename:
:param kw:
:return:
'''
return db.searchData(kw=kw)
def getsysInfo():
'''
获取硬件信息
:return:
'''
return DataMonitor.getsysInfo()
def getSysLog(page):
'''
获取日志信息
:return:
'''
return DataMonitor.getsysLog(page)

@ -0,0 +1,97 @@
'''
前端业务
'''
from flask import Blueprint,request,render_template,jsonify,redirect,session
import adminProcess
from Controller.Data2DB import mylog
user = Blueprint("user",__name__)
log0=mylog()
# 前端首页
@user.route("/")
def front():
data = {}
data['timeinfo'],data['temp'] = adminProcess.getTemp()
log0.info("获取天气成功")
return render_template("index.html", data=data)
#疫情展示路由
@user.route("/yqShow")
def yq():
data = {}
data['timeinfo'], data['temp'] = adminProcess.getTemp()
return render_template("front/yq.html", data=data)
#疫情展示路由
@user.route("/yqData")
def yqdata():
data = adminProcess.getDataList("yq")
if len(data) > 0:
date = [item[2] for item in data]
qznum = [item[3] for item in data]
zynum = [item[4] for item in data]
log0.info("获取疫情数据成功")
return jsonify({"code": 200, "date": date,"qznum":qznum,"zynum":zynum})
else:
log0.info("获取疫情数据不成功")
return jsonify({"code": 404})
#美图展示路由
@user.route("/mtShow")
def mt():
data = {}
data['mt'] = adminProcess.getDataList("mtData")
return render_template("front/mt.html", data=data)
# 进入新闻首页
@user.route("/news")
def index():
# 获取来源的参数
page = request.args.get('page')
if page is None: page = 1
# 增加获取一共多少页的代码
data = {}
data['totalPage']=adminProcess.getDataListPage(tableName='news')
data['currentPage'] = int(page)
data['news']=adminProcess.getDataListByPage(tableName='news',page=int(page))
data['timeinfo'], data['temp'] = adminProcess.getTemp()
log0.info("进入新闻页面成功")
return render_template("front/news.html",data=data)
''' 后台登录处理'''
@user.route("/admin/login",methods=['POST'])
def adminlogin():
username = request.form['name']
userpwd = request.form['password']
if adminProcess.login(username,userpwd):
session['username']=username
return redirect("/admin/index")
else:
return redirect('/admin')
'''搜索请求'''
@user.route("/search",methods=['POST'])
def search():
kw = request.form['keyword']
# 组转自己的搜索引擎
data={}
data['result']=adminProcess.searchdata(kw)
log0.info("搜索关键词"+kw)
return render_template("front/search.html",data=data)
''' 后台登录注销'''
@user.route("/admin/logout")
def adminlogout():
session.clear()
return jsonify({'code':200,'msg':'注销成功!'})
# 进入系统后台路由,要求登录
@user.route("/admin")
def admin():
return render_template("admin.html")
# 登录成果后进入系统管理首页
@user.route("/admin/index")
def admin_index():
return render_template("admin/index.html")

@ -0,0 +1,15 @@
from flask import Flask,render_template,request,redirect,Blueprint
from newsB import news
from yqB import yq
from front import user
from sysinfo import sysm
app = Flask(__name__)
app.secret_key='****----'
urls=[news,yq,user,sysm] #将三个路由构建数组
for url in urls:
app.register_blueprint(url) #将三个路由均实现蓝图注册到主app应用上
if __name__=='__main__':
app.run(port=3002)

@ -0,0 +1,47 @@
'''
新闻采集模块
'''
from flask import Blueprint,request,render_template,jsonify
import adminProcess
news = Blueprint("news",__name__)
# 新闻的列表页面
@news.route("/admin/result_news")
def result_news():
# 获取来源的参数
page = request.args.get('page')
if page is None: page = 1
# 增加获取一共多少页的代码
data = {}
data['totalPage']=adminProcess.getDataListPage(tableName='news')
data['currentPage'] = int(page)
data['news']=adminProcess.getDataListByPage(tableName='news',page=int(page))
return render_template("admin/news.html",data=data)
'''处理新闻数据采集'''
@news.route("/admin/newsCollect")
def newsCollect():
sourceID = request.args.get('source')
if adminProcess.newsFetch(sourceID):
return jsonify({'code':200,'msg':"爬取成功!"})
else:
return jsonify({'code':200,'msg':'爬取失败!'})
'''处理新闻数据删除'''
@news.route("/admin/newsDelete")
def newsDelete():
id = request.args.get('id')
if adminProcess.newsDelete("news",id):
return jsonify({'code':200,'msg':'删除成功!'})
else:
return jsonify({'code':404,'msg':'删除不成功!'})
'''处理新闻数据显示'''
@news.route("/admin/newsShow")
def newsShow():
id = request.args.get('id')
if adminProcess.newsShow("news",id):
return jsonify({'code':200,'msg':'删除成功!'})
else:
return jsonify({'code':404,'msg':'删除不成功!'})

@ -0,0 +1,23 @@
'''
用户业务
'''
from flask import Blueprint, request, render_template, jsonify, redirect
import adminProcess
admin = Blueprint("admin",__name__)
'''
后台登录处理
'''
@admin.route("/admin/login",methods=['POST'])
def adminlogin():
username = request.form['name']
userpwd = request.form['password']
print(username,userpwd)
if adminProcess.login(username,userpwd):
return redirect("/admin/index")
else:
return redirect('/admin')

@ -0,0 +1,5 @@
@import url("icons/font-awesome/font-awesome.css");
@import url("icons/simple-line-icon/simple-line-icons.css");
@import url("icons/themify-icon/themify-icons.css");
@import url("icons/material-design-icon/materialdesignicons.css");
@import url("icons/ion-icon/ionicons.css");

@ -0,0 +1,352 @@
@media only screen and (min-width: 1170px) {
#timeline {
margin-bottom: 3em;
margin-top: 3em;
}
#timeline::before {
left: 50%;
margin-left: -2px;
}
.timeline-img {
width: 60px;
height: 60px;
line-height: 60px;
left: 50%;
margin-left: -30px;
-webkit-transform: translateZ(0);
-webkit-backface-visibility: hidden;
}
.timeline-block {
margin: 4em 0;
}
.timeline-block:first-child {
margin-top: 0;
}
.timeline-block:last-child {
margin-bottom: 0;
}
.timeline-content {
margin-left: 0;
padding: 1.6em;
width: 45%;
}
.timeline-content::before {
top: 24px;
left: 100%;
border-color: transparent;
border-left-color: white;
}
.timeline-content .read-more {
float: left;
}
.timeline-content .date {
position: absolute;
width: 100%;
left: 122%;
top: 6px;
}
.timeline-block:nth-child(even) .timeline-content {
float: right;
}
.timeline-block:nth-child(even) .timeline-content::before {
top: 24px;
left: auto;
right: 100%;
border-color: transparent;
border-right-color: white;
}
.timeline-block:nth-child(even) .timeline-content .read-more {
float: right;
}
.timeline-block:nth-child(even) .timeline-content .date {
left: auto;
right: 122%;
text-align: right;
}
.cssanimations .timeline-content.is-hidden {
visibility: hidden;
}
.cssanimations .timeline-content.bounce-in {
visibility: visible;
-webkit-animation: bounce-2 0.6s;
-moz-animation: bounce-2 0.6s;
animation: bounce-2 0.6s;
}
}
@media only screen and (min-width: 1170px) {
.cssanimations .timeline-block:nth-child(even) .timeline-content.bounce-in {
-webkit-animation: bounce-2-inverse 0.6s;
-moz-animation: bounce-2-inverse 0.6s;
animation: bounce-2-inverse 0.6s;
}
}
@media screen and (max-width: 800px) {
body {
position: relative;
}
.left-side {
display: none;
}
.main-content {
margin-left: 0;
width: 100%;
}
.left-side-collapsed .left-side {
display: none;
}
.left-side-collapsed .main-content {
margin-left: 0;
}
.left-side-collapsed .header-section {
margin-left: 0;
}
.left-side-show section {
overflow-x: hidden;
}
.left-side-show .left-side {
display: block;
}
.left-side-show .main-content {
margin-left: 240px;
}
.btn-demo {
margin-bottom: 20px;
}
.left-sideinner {
padding: 5px 10px;
}
.left-sideinner .searchform input {
background: #fff;
border: 0;
}
.sticky-header .header-section, .sticky-header.left-side-collapsed .header-section {
left: 0;
}
.sticky-header.left-side-show .header-section {
left: 240px;
}
.sticky-header .menu-right {
margin-right: 15px;
}
.lock-wrapper {
margin: 25% auto;
}
.sticky-left-side .custom-nav {
margin-top: -5px;
}
.stepy-error {
bottom: 50px;
}
.left-side-collapsed .left-side {
left: 0;
top: 50px;
width: 240px;
}
.sticky-header.left-side-collapsed .menu-right {
margin-right: 15px;
}
.left-side-collapsed .logo-icon {
display: none;
}
.left-side-collapsed .logo {
display: block;
}
.left-side-collapsed .left-side .searchform input {
margin: 5px 0 20px 12px;
}
.wdgt-profile, ul.iconic-list {
margin-bottom: 20px;
}
.sticky-left-side, .sticky-header .header-section {
position:absolute;
}
.left-side .logged-user .media-object {
margin-right: 10px;
}
}
@media screen and (max-width: 767px) {
.searchform {
position: relative;
display:none;
}
.searchform input {
background:#fff;
}
.notification-menu li:nth-child(4) {
display: none;
}
.left-side .searchform,
.left-side .logged-user {
display: block;
}
.breadcrumb-wrapper {
display: none;
}
.notification-menu .dropdown-menu:after {
display: none;
}
.Popovers-wrap, .tooltip-wrap{
text-align:center;
}
}
@media screen and (max-width: 360px) {
.notification-menu li:first-child .dropdown-menu-head {
margin-right: -160px;
}
.notification-menu li:nth-child(2) .dropdown-menu-head {
margin-right: -100px;
}
.notification-menu li:nth-child(3) .dropdown-menu-head {
margin-right: 0px;
}
.nav-tabs.nav-justified.nav-profile > li {
float: none;
display: block;
width: auto;
}
.notification-menu .dropdown-menu-head {
padding: 0;
min-width: 240px !important;
width: 240px !important;
}
}
@media only screen and (min-width:360px) and (max-width:500px){
.notification-menu li:first-child .dropdown-menu-head {
margin-right: -160px;
}
.notification-menu li:nth-child(2) .dropdown-menu-head {
margin-right: -100px;
}
.notification-menu li:nth-child(3) .dropdown-menu-head {
margin-right: 0px;
}
.notification-menu .dropdown-menu-head {
padding: 0;
min-width: 240px !important;
width: 240px !important;
}
}
@media only screen and (max-width:480px){
.page-title-box .page-title {
float: none;
text-align: center;
}
.breadcrumb {
text-align: center;
margin-top: 10px;
list-style: none;
border-radius: 0;
float: none;
width: 100%;
}
.page-title-box {
padding: 20px 0px 10px 20px;
}
.message-attachment {
position: relative;
width: 100px;
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

@ -0,0 +1,778 @@
@font-face {
font-family: 'simple-line-icons';
src: url('fonts/Simple-Line-Icons.eot?v=2.4.0');
src: url('fonts/Simple-Line-Icons.eot?v=2.4.0#iefix') format('embedded-opentype'), url('fonts/Simple-Line-Icons.woff2?v=2.4.0') format('woff2'), url('fonts/Simple-Line-Icons.ttf?v=2.4.0') format('truetype'), url('fonts/Simple-Line-Icons.woff?v=2.4.0') format('woff'), url('fonts/Simple-Line-Icons.svg?v=2.4.0#simple-line-icons') format('svg');
font-weight: normal;
font-style: normal;
}
/*
Use the following CSS code if you want to have a class per icon.
Instead of a list of all class selectors, you can use the generic [class*="icon-"] selector, but it's slower:
*/
.icon-user,
.icon-people,
.icon-user-female,
.icon-user-follow,
.icon-user-following,
.icon-user-unfollow,
.icon-login,
.icon-logout,
.icon-emotsmile,
.icon-phone,
.icon-call-end,
.icon-call-in,
.icon-call-out,
.icon-map,
.icon-location-pin,
.icon-direction,
.icon-directions,
.icon-compass,
.icon-layers,
.icon-menu,
.icon-list,
.icon-options-vertical,
.icon-options,
.icon-arrow-down,
.icon-arrow-left,
.icon-arrow-right,
.icon-arrow-up,
.icon-arrow-up-circle,
.icon-arrow-left-circle,
.icon-arrow-right-circle,
.icon-arrow-down-circle,
.icon-check,
.icon-clock,
.icon-plus,
.icon-minus,
.icon-close,
.icon-event,
.icon-exclamation,
.icon-organization,
.icon-trophy,
.icon-screen-smartphone,
.icon-screen-desktop,
.icon-plane,
.icon-notebook,
.icon-mustache,
.icon-mouse,
.icon-magnet,
.icon-energy,
.icon-disc,
.icon-cursor,
.icon-cursor-move,
.icon-crop,
.icon-chemistry,
.icon-speedometer,
.icon-shield,
.icon-screen-tablet,
.icon-magic-wand,
.icon-hourglass,
.icon-graduation,
.icon-ghost,
.icon-game-controller,
.icon-fire,
.icon-eyeglass,
.icon-envelope-open,
.icon-envelope-letter,
.icon-bell,
.icon-badge,
.icon-anchor,
.icon-wallet,
.icon-vector,
.icon-speech,
.icon-puzzle,
.icon-printer,
.icon-present,
.icon-playlist,
.icon-pin,
.icon-picture,
.icon-handbag,
.icon-globe-alt,
.icon-globe,
.icon-folder-alt,
.icon-folder,
.icon-film,
.icon-feed,
.icon-drop,
.icon-drawer,
.icon-docs,
.icon-doc,
.icon-diamond,
.icon-cup,
.icon-calculator,
.icon-bubbles,
.icon-briefcase,
.icon-book-open,
.icon-basket-loaded,
.icon-basket,
.icon-bag,
.icon-action-undo,
.icon-action-redo,
.icon-wrench,
.icon-umbrella,
.icon-trash,
.icon-tag,
.icon-support,
.icon-frame,
.icon-size-fullscreen,
.icon-size-actual,
.icon-shuffle,
.icon-share-alt,
.icon-share,
.icon-rocket,
.icon-question,
.icon-pie-chart,
.icon-pencil,
.icon-note,
.icon-loop,
.icon-home,
.icon-grid,
.icon-graph,
.icon-microphone,
.icon-music-tone-alt,
.icon-music-tone,
.icon-earphones-alt,
.icon-earphones,
.icon-equalizer,
.icon-like,
.icon-dislike,
.icon-control-start,
.icon-control-rewind,
.icon-control-play,
.icon-control-pause,
.icon-control-forward,
.icon-control-end,
.icon-volume-1,
.icon-volume-2,
.icon-volume-off,
.icon-calendar,
.icon-bulb,
.icon-chart,
.icon-ban,
.icon-bubble,
.icon-camrecorder,
.icon-camera,
.icon-cloud-download,
.icon-cloud-upload,
.icon-envelope,
.icon-eye,
.icon-flag,
.icon-heart,
.icon-info,
.icon-key,
.icon-link,
.icon-lock,
.icon-lock-open,
.icon-magnifier,
.icon-magnifier-add,
.icon-magnifier-remove,
.icon-paper-clip,
.icon-paper-plane,
.icon-power,
.icon-refresh,
.icon-reload,
.icon-settings,
.icon-star,
.icon-symbol-female,
.icon-symbol-male,
.icon-target,
.icon-credit-card,
.icon-paypal,
.icon-social-tumblr,
.icon-social-twitter,
.icon-social-facebook,
.icon-social-instagram,
.icon-social-linkedin,
.icon-social-pinterest,
.icon-social-github,
.icon-social-google,
.icon-social-reddit,
.icon-social-skype,
.icon-social-dribbble,
.icon-social-behance,
.icon-social-foursqare,
.icon-social-soundcloud,
.icon-social-spotify,
.icon-social-stumbleupon,
.icon-social-youtube,
.icon-social-dropbox,
.icon-social-vkontakte,
.icon-social-steam {
font-family: 'simple-line-icons';
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-user:before {
content: "\e005";
}
.icon-people:before {
content: "\e001";
}
.icon-user-female:before {
content: "\e000";
}
.icon-user-follow:before {
content: "\e002";
}
.icon-user-following:before {
content: "\e003";
}
.icon-user-unfollow:before {
content: "\e004";
}
.icon-login:before {
content: "\e066";
}
.icon-logout:before {
content: "\e065";
}
.icon-emotsmile:before {
content: "\e021";
}
.icon-phone:before {
content: "\e600";
}
.icon-call-end:before {
content: "\e048";
}
.icon-call-in:before {
content: "\e047";
}
.icon-call-out:before {
content: "\e046";
}
.icon-map:before {
content: "\e033";
}
.icon-location-pin:before {
content: "\e096";
}
.icon-direction:before {
content: "\e042";
}
.icon-directions:before {
content: "\e041";
}
.icon-compass:before {
content: "\e045";
}
.icon-layers:before {
content: "\e034";
}
.icon-menu:before {
content: "\e601";
}
.icon-list:before {
content: "\e067";
}
.icon-options-vertical:before {
content: "\e602";
}
.icon-options:before {
content: "\e603";
}
.icon-arrow-down:before {
content: "\e604";
}
.icon-arrow-left:before {
content: "\e605";
}
.icon-arrow-right:before {
content: "\e606";
}
.icon-arrow-up:before {
content: "\e607";
}
.icon-arrow-up-circle:before {
content: "\e078";
}
.icon-arrow-left-circle:before {
content: "\e07a";
}
.icon-arrow-right-circle:before {
content: "\e079";
}
.icon-arrow-down-circle:before {
content: "\e07b";
}
.icon-check:before {
content: "\e080";
}
.icon-clock:before {
content: "\e081";
}
.icon-plus:before {
content: "\e095";
}
.icon-minus:before {
content: "\e615";
}
.icon-close:before {
content: "\e082";
}
.icon-event:before {
content: "\e619";
}
.icon-exclamation:before {
content: "\e617";
}
.icon-organization:before {
content: "\e616";
}
.icon-trophy:before {
content: "\e006";
}
.icon-screen-smartphone:before {
content: "\e010";
}
.icon-screen-desktop:before {
content: "\e011";
}
.icon-plane:before {
content: "\e012";
}
.icon-notebook:before {
content: "\e013";
}
.icon-mustache:before {
content: "\e014";
}
.icon-mouse:before {
content: "\e015";
}
.icon-magnet:before {
content: "\e016";
}
.icon-energy:before {
content: "\e020";
}
.icon-disc:before {
content: "\e022";
}
.icon-cursor:before {
content: "\e06e";
}
.icon-cursor-move:before {
content: "\e023";
}
.icon-crop:before {
content: "\e024";
}
.icon-chemistry:before {
content: "\e026";
}
.icon-speedometer:before {
content: "\e007";
}
.icon-shield:before {
content: "\e00e";
}
.icon-screen-tablet:before {
content: "\e00f";
}
.icon-magic-wand:before {
content: "\e017";
}
.icon-hourglass:before {
content: "\e018";
}
.icon-graduation:before {
content: "\e019";
}
.icon-ghost:before {
content: "\e01a";
}
.icon-game-controller:before {
content: "\e01b";
}
.icon-fire:before {
content: "\e01c";
}
.icon-eyeglass:before {
content: "\e01d";
}
.icon-envelope-open:before {
content: "\e01e";
}
.icon-envelope-letter:before {
content: "\e01f";
}
.icon-bell:before {
content: "\e027";
}
.icon-badge:before {
content: "\e028";
}
.icon-anchor:before {
content: "\e029";
}
.icon-wallet:before {
content: "\e02a";
}
.icon-vector:before {
content: "\e02b";
}
.icon-speech:before {
content: "\e02c";
}
.icon-puzzle:before {
content: "\e02d";
}
.icon-printer:before {
content: "\e02e";
}
.icon-present:before {
content: "\e02f";
}
.icon-playlist:before {
content: "\e030";
}
.icon-pin:before {
content: "\e031";
}
.icon-picture:before {
content: "\e032";
}
.icon-handbag:before {
content: "\e035";
}
.icon-globe-alt:before {
content: "\e036";
}
.icon-globe:before {
content: "\e037";
}
.icon-folder-alt:before {
content: "\e039";
}
.icon-folder:before {
content: "\e089";
}
.icon-film:before {
content: "\e03a";
}
.icon-feed:before {
content: "\e03b";
}
.icon-drop:before {
content: "\e03e";
}
.icon-drawer:before {
content: "\e03f";
}
.icon-docs:before {
content: "\e040";
}
.icon-doc:before {
content: "\e085";
}
.icon-diamond:before {
content: "\e043";
}
.icon-cup:before {
content: "\e044";
}
.icon-calculator:before {
content: "\e049";
}
.icon-bubbles:before {
content: "\e04a";
}
.icon-briefcase:before {
content: "\e04b";
}
.icon-book-open:before {
content: "\e04c";
}
.icon-basket-loaded:before {
content: "\e04d";
}
.icon-basket:before {
content: "\e04e";
}
.icon-bag:before {
content: "\e04f";
}
.icon-action-undo:before {
content: "\e050";
}
.icon-action-redo:before {
content: "\e051";
}
.icon-wrench:before {
content: "\e052";
}
.icon-umbrella:before {
content: "\e053";
}
.icon-trash:before {
content: "\e054";
}
.icon-tag:before {
content: "\e055";
}
.icon-support:before {
content: "\e056";
}
.icon-frame:before {
content: "\e038";
}
.icon-size-fullscreen:before {
content: "\e057";
}
.icon-size-actual:before {
content: "\e058";
}
.icon-shuffle:before {
content: "\e059";
}
.icon-share-alt:before {
content: "\e05a";
}
.icon-share:before {
content: "\e05b";
}
.icon-rocket:before {
content: "\e05c";
}
.icon-question:before {
content: "\e05d";
}
.icon-pie-chart:before {
content: "\e05e";
}
.icon-pencil:before {
content: "\e05f";
}
.icon-note:before {
content: "\e060";
}
.icon-loop:before {
content: "\e064";
}
.icon-home:before {
content: "\e069";
}
.icon-grid:before {
content: "\e06a";
}
.icon-graph:before {
content: "\e06b";
}
.icon-microphone:before {
content: "\e063";
}
.icon-music-tone-alt:before {
content: "\e061";
}
.icon-music-tone:before {
content: "\e062";
}
.icon-earphones-alt:before {
content: "\e03c";
}
.icon-earphones:before {
content: "\e03d";
}
.icon-equalizer:before {
content: "\e06c";
}
.icon-like:before {
content: "\e068";
}
.icon-dislike:before {
content: "\e06d";
}
.icon-control-start:before {
content: "\e06f";
}
.icon-control-rewind:before {
content: "\e070";
}
.icon-control-play:before {
content: "\e071";
}
.icon-control-pause:before {
content: "\e072";
}
.icon-control-forward:before {
content: "\e073";
}
.icon-control-end:before {
content: "\e074";
}
.icon-volume-1:before {
content: "\e09f";
}
.icon-volume-2:before {
content: "\e0a0";
}
.icon-volume-off:before {
content: "\e0a1";
}
.icon-calendar:before {
content: "\e075";
}
.icon-bulb:before {
content: "\e076";
}
.icon-chart:before {
content: "\e077";
}
.icon-ban:before {
content: "\e07c";
}
.icon-bubble:before {
content: "\e07d";
}
.icon-camrecorder:before {
content: "\e07e";
}
.icon-camera:before {
content: "\e07f";
}
.icon-cloud-download:before {
content: "\e083";
}
.icon-cloud-upload:before {
content: "\e084";
}
.icon-envelope:before {
content: "\e086";
}
.icon-eye:before {
content: "\e087";
}
.icon-flag:before {
content: "\e088";
}
.icon-heart:before {
content: "\e08a";
}
.icon-info:before {
content: "\e08b";
}
.icon-key:before {
content: "\e08c";
}
.icon-link:before {
content: "\e08d";
}
.icon-lock:before {
content: "\e08e";
}
.icon-lock-open:before {
content: "\e08f";
}
.icon-magnifier:before {
content: "\e090";
}
.icon-magnifier-add:before {
content: "\e091";
}
.icon-magnifier-remove:before {
content: "\e092";
}
.icon-paper-clip:before {
content: "\e093";
}
.icon-paper-plane:before {
content: "\e094";
}
.icon-power:before {
content: "\e097";
}
.icon-refresh:before {
content: "\e098";
}
.icon-reload:before {
content: "\e099";
}
.icon-settings:before {
content: "\e09a";
}
.icon-star:before {
content: "\e09b";
}
.icon-symbol-female:before {
content: "\e09c";
}
.icon-symbol-male:before {
content: "\e09d";
}
.icon-target:before {
content: "\e09e";
}
.icon-credit-card:before {
content: "\e025";
}
.icon-paypal:before {
content: "\e608";
}
.icon-social-tumblr:before {
content: "\e00a";
}
.icon-social-twitter:before {
content: "\e009";
}
.icon-social-facebook:before {
content: "\e00b";
}
.icon-social-instagram:before {
content: "\e609";
}
.icon-social-linkedin:before {
content: "\e60a";
}
.icon-social-pinterest:before {
content: "\e60b";
}
.icon-social-github:before {
content: "\e60c";
}
.icon-social-google:before {
content: "\e60d";
}
.icon-social-reddit:before {
content: "\e60e";
}
.icon-social-skype:before {
content: "\e60f";
}
.icon-social-dribbble:before {
content: "\e00d";
}
.icon-social-behance:before {
content: "\e610";
}
.icon-social-foursqare:before {
content: "\e611";
}
.icon-social-soundcloud:before {
content: "\e612";
}
.icon-social-spotify:before {
content: "\e613";
}
.icon-social-stumbleupon:before {
content: "\e614";
}
.icon-social-youtube:before {
content: "\e008";
}
.icon-social-dropbox:before {
content: "\e00c";
}
.icon-social-vkontakte:before {
content: "\e618";
}
.icon-social-steam:before {
content: "\e620";
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

@ -0,0 +1,88 @@
body{margin:0;padding:0;color:#333;}
.container{
min-width:1200px;
min-height:1000px;
margin:0 auto;
}
.box_l{
width:20%;
min-height:800px;
float:left;
background:#333;
color:#ccc;
border:1px solid #aaa;
}
.box_l .logo{
height:120px;
border:2px solid #eee;
text-align:center;
}
.box_l .menu{
font-size:18px;
text-align:center;
line-height:68px;
padding:10px;
}
.menu span{
margin-right:6px;
}
.box_r{
width:79.6%;
height:100%;
float:left;
}
a{
text-decoration:none;
color:#f0ad4e;
}
a:visited{
color:#f0ad4e;
}
a:hover{
color:#f90;
}
.box_r .header{
width:100%;
height:110px;
background:#333;
color:#fff;
padding-top:20px;
}
.box_r .content{
width:100%;
height:100%;
}
li{
display:inline-block;
list-style:none;
width:14%;
margin:18px 20px;
}
.mn,.menu{
border-bottom:2px solid #fc5531;
}
.clear-fix{clear:both;
}
.header .hbox1{text-align:center;
width:80%;
float:left;
color:#fff;
line-height:48px;
padding:16px 8px;
font-size:32px;
}
.header .hbox2{
width:15%;
float:right;
line-height:68px;
text-align:right;
padding:16px 8px;
color:#eee;
}
.hbox2 span{
cursor:pointer;
}

File diff suppressed because one or more lines are too long

@ -0,0 +1,72 @@
.container{
border-left:1px solid #f0f0f0;
border-right:1px solid #f0f0f0;
background:#f5f5f5;
}
header{
height:80px;
line-height:60px;
padding:10px 16px;
}
.headerl{
float:left;
width:60%;
margin-left:30px;
}
.headerl a{
display:inline-block;
width:60px;
height:100%;
}
.headerl span{
width:80px;
padding:0 5px;
}
.active{
color:#ee660b;
}
.headerr{
float:right;
width:20%;
margin-right:30px;
}
.box{
width:100%;
min-height:600px;
text-align:center;
}
.searchbox{
width:66%;
margin:30px auto;
}
.banner{
width:80%;
margin:40px auto;
}
.sbox{
height: 16px;
padding: 12px 16px;
font-size: 16px;
margin: 0;
vertical-align: top;
outline: 0;
box-shadow: none;
border-radius: 10px 0 0 10px;
border: 2px solid #c4c7ce;
background: #fff;
color: #222;
overflow: hidden;
box-sizing: content-box;
-webkit-tap-highlight-color: transparent;
}
footer{
height:80px;
line-height:60px;
text-align:center;
color:#fff;
padding:10px 16px;
background:#555;
}

@ -0,0 +1,5 @@
@import url("icons/font-awesome/font-awesome.css");
@import url("icons/simple-line-icon/simple-line-icons.css");
@import url("icons/themify-icon/themify-icons.css");
@import url("icons/material-design-icon/materialdesignicons.css");
@import url("icons/ion-icon/ionicons.css");

@ -0,0 +1,5 @@
.inter{
width:400px;
height:200px;
border:1px solid #f30;
}

@ -0,0 +1,366 @@
/*-- Reset-Code --*/
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,dl,dt,dd,ol,nav ul,nav li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline;}
article, aside, details, figcaption, figure,footer, header, hgroup, menu, nav, section {display: block;}
ol,ul{list-style:none;margin:0px;padding:0px;}
blockquote,q{quotes:none;}
blockquote:before,blockquote:after,q:before,q:after{content:'';content:none;}
table{border-collapse:collapse;border-spacing:0;}
/* start editing from here */
a{text-decoration:none;}
.txt-rt{text-align:right;}/* text align right */
.txt-lt{text-align:left;}/* text align left */
.txt-center{text-align:center;}/* text align center */
.float-rt{float:right;}/* float right */
.float-lt{float:left;}/* float left */
.clear{clear:both;}/* clear float */
.pos-relative{position:relative;}/* Position Relative */
.pos-absolute{position:absolute;}/* Position Absolute */
.vertical-base{vertical-align:baseline;}/* vertical align baseline */
.vertical-top{vertical-align:top;}/* vertical align top */
nav.vertical ul li{display:block;}/* vertical menu */
nav.horizontal ul li{display: inline-block;}/* horizontal menu */
img{max-width:100%;}
/*-- //Reset-Code --*/
body {
font-family:Verdana;
background:url('../img/2.jpg') no-repeat 0px 0px;
background-size: cover;
background-attachment: fixed;
background-position: center;
}
body a {
transition: 0.5s all;
-webkit-transition: 0.5s all;
-moz-transition: 0.5s all;
-o-transition: 0.5s all;
-ms-transition: 0.5s all;
}
h1 {
color: #FFF;
text-align: center;
letter-spacing: 6px;
font-size: 40px;
margin-top: 175px;
}
.container {
width: 32%;
margin: 50px auto;
text-align: center;
background:rgba(0, 0, 0, 0.43);
-webkit-box-shadow: 10px 10px 5px 0px rgba(0,0,0,0.75);
-moz-box-shadow: 10px 10px 5px 0px rgba(0,0,0,0.75);
box-shadow: 10px 10px 5px 0px rgba(0,0,0,0.75);
}
h2 {
font-size: 30px;
color: #FFF;
padding-top: 45px;
letter-spacing:3px;
}
form {
padding: 65px;
}
form span {
width: 23%;
float: left;
background: #fed14e;
padding: 10.2px 10px;
position: relative;
color: #005377;
font-size: 15px;
letter-spacing: 1px;
}
form span:after {
content: '';
position: absolute;
width: 0;
height: 0;
right: -11px;
border-top: 6px solid rgba(0, 0, 0, 0);
border-left: 11px solid #fed14e;
border-bottom: 6px solid rgba(0, 0, 0, 0);
top: 14px;
}
input.name {
width: 65%;
padding:10px 10px 10px 15px;
border: none;
outline: none;
font-size: 17px;
letter-spacing: 1px;
margin-bottom: 35px;
float:left;
}
input.password {
width: 65%;
padding:10px 10px 10px 15px;
border: none;
outline: none;
font-size: 17px;
letter-spacing: 1px;
margin-bottom: 35px;
float:left;
}
.rem-for-agile{
width:50%;
float:left;
text-align:left;
font-size:13px;
color:rgb(238, 223, 179);
}
.rem-for-agile a{
color:rgb(238, 223, 179);
margin-top:3px;
display:inline-block;
padding-left:18px;
}
.rem-for-agile a:hover{
color: #fff;
}
input[type="checkbox"] {
margin: 10px 5px 0px 0px;
vertical-align: sub;
}
.login-w3{
width:50%;
float:right;
}
input[type="submit"]{
background-color:#005377;
color:#fff;
padding:11px;
outline: none;
border:none;
font-size: 17px;
width:50%;
cursor:pointer;
margin-top:5px;
transition: 0.5s all;
-webkit-transition: 0.5s all;
-moz-transition: 0.5s all;
-o-transition: 0.5s all;
-ms-transition: 0.5s all;
}
input[type="submit"]:hover{
background:#fed14e;
color:#000;
}
.footer-w3l{
margin-top: 150px;
margin-bottom: 20px;
}
.footer-w3l p {
color:white;
text-align:center;
font-size:13px;
letter-spacing:1px;
}
.footer-w3l a{
color:white;
text-decoration:none;
}
.footer-w3l a:hover{
text-decoration:underline;
}
@media screen and (max-width: 1440px) {
form span {
font-size:14px;
padding:10.5px 10px;
}
input.name{
width: 63%;
}
input.password {
width: 63%;
}
}
@media screen and (max-width: 1366px) {
.container {
width: 37%;
}
}
@media screen and (max-width: 1080px) {
.container {
width: 46%;
}
}
@media screen and (max-width: 991px) {
h1{
margin-top:50px;
}
.container {
width: 52%;
}
}
@media screen and (max-width: 800px) {
.container {
width: 63%;
}
form {
padding: 55px;
}
}
@media screen and (max-width: 736px) {
h1 {
letter-spacing: 4px;
font-size: 35px;
}
h2 {
font-size: 28px;
padding-top: 35px;
letter-spacing: 2px;
}
}
@media screen and (max-width: 667px) {
.container {
width: 66%;
}
form {
padding: 53px;
}
}
@media screen and (max-width: 640px) {
form {
padding: 42px;
}
}
@media screen and (max-width: 600px) {
.container {
width: 70%;
}
}
@media screen and (max-width: 568px) {
.container {
width: 74%;
}
}
@media screen and (max-width: 480px) {
h1 {
letter-spacing: 2px;
font-size: 31px;
}
.container {
width: 78%;
}
form {
padding: 30px;
}
input.name {
width: 62%;
}
input.password{
width: 62%;
}
input[type="submit"] {
margin-top:8px;
}
}
@media screen and (max-width: 414px) {
.container {
width: 85%;
}
form span {
font-size: 12px;
}
input.name {
width: 58.5%;
padding: 9px 9px 9px 15px;
}
input.password{
width: 58.5%;
padding: 9px 9px 9px 15px;
}
.footer-w3l p {
letter-spacing:0;
}
}
@media screen and (max-width: 384px) {
form span {
width: 25%;
}
input.name {
width: 57.5%;
}
input.password{
width: 57.5%;
}
}
@media screen and (max-width: 375px) {
h1 {
font-size: 27px;
}
h2 {
font-size: 24px;
}
input.name {
width: 57%;
}
input.password{
width: 57%;
}
form span{
padding-left:5px;
}
}
@media screen and (max-width: 320px) {
h1 {
font-size: 23px;
letter-spacing:1px;
}
h2 {
font-size: 19px;
letter-spacing:1px;
padding-top:25px;
}
form {
padding: 20px;
}
form span {
font-size: 11px;
width:27%;
}
input.name {
padding: 8px 9px 8px 15px;
width:55%;
}
input.password {
padding: 8px 9px 8px 15px;
width:55%;
}
.rem-for-agile{
font-size:11px;
}
input[type="submit"] {
padding: 9px;
font-size: 16px;
width: 60%;
margin-top:10px;
}
}

@ -0,0 +1,352 @@
@media only screen and (min-width: 1170px) {
#timeline {
margin-bottom: 3em;
margin-top: 3em;
}
#timeline::before {
left: 50%;
margin-left: -2px;
}
.timeline-img {
width: 60px;
height: 60px;
line-height: 60px;
left: 50%;
margin-left: -30px;
-webkit-transform: translateZ(0);
-webkit-backface-visibility: hidden;
}
.timeline-block {
margin: 4em 0;
}
.timeline-block:first-child {
margin-top: 0;
}
.timeline-block:last-child {
margin-bottom: 0;
}
.timeline-content {
margin-left: 0;
padding: 1.6em;
width: 45%;
}
.timeline-content::before {
top: 24px;
left: 100%;
border-color: transparent;
border-left-color: white;
}
.timeline-content .read-more {
float: left;
}
.timeline-content .date {
position: absolute;
width: 100%;
left: 122%;
top: 6px;
}
.timeline-block:nth-child(even) .timeline-content {
float: right;
}
.timeline-block:nth-child(even) .timeline-content::before {
top: 24px;
left: auto;
right: 100%;
border-color: transparent;
border-right-color: white;
}
.timeline-block:nth-child(even) .timeline-content .read-more {
float: right;
}
.timeline-block:nth-child(even) .timeline-content .date {
left: auto;
right: 122%;
text-align: right;
}
.cssanimations .timeline-content.is-hidden {
visibility: hidden;
}
.cssanimations .timeline-content.bounce-in {
visibility: visible;
-webkit-animation: bounce-2 0.6s;
-moz-animation: bounce-2 0.6s;
animation: bounce-2 0.6s;
}
}
@media only screen and (min-width: 1170px) {
.cssanimations .timeline-block:nth-child(even) .timeline-content.bounce-in {
-webkit-animation: bounce-2-inverse 0.6s;
-moz-animation: bounce-2-inverse 0.6s;
animation: bounce-2-inverse 0.6s;
}
}
@media screen and (max-width: 800px) {
body {
position: relative;
}
.left-side {
display: none;
}
.main-content {
margin-left: 0;
width: 100%;
}
.left-side-collapsed .left-side {
display: none;
}
.left-side-collapsed .main-content {
margin-left: 0;
}
.left-side-collapsed .header-section {
margin-left: 0;
}
.left-side-show section {
overflow-x: hidden;
}
.left-side-show .left-side {
display: block;
}
.left-side-show .main-content {
margin-left: 240px;
}
.btn-demo {
margin-bottom: 20px;
}
.left-sideinner {
padding: 5px 10px;
}
.left-sideinner .searchform input {
background: #fff;
border: 0;
}
.sticky-header .header-section, .sticky-header.left-side-collapsed .header-section {
left: 0;
}
.sticky-header.left-side-show .header-section {
left: 240px;
}
.sticky-header .menu-right {
margin-right: 15px;
}
.lock-wrapper {
margin: 25% auto;
}
.sticky-left-side .custom-nav {
margin-top: -5px;
}
.stepy-error {
bottom: 50px;
}
.left-side-collapsed .left-side {
left: 0;
top: 50px;
width: 240px;
}
.sticky-header.left-side-collapsed .menu-right {
margin-right: 15px;
}
.left-side-collapsed .logo-icon {
display: none;
}
.left-side-collapsed .logo {
display: block;
}
.left-side-collapsed .left-side .searchform input {
margin: 5px 0 20px 12px;
}
.wdgt-profile, ul.iconic-list {
margin-bottom: 20px;
}
.sticky-left-side, .sticky-header .header-section {
position:absolute;
}
.left-side .logged-user .media-object {
margin-right: 10px;
}
}
@media screen and (max-width: 767px) {
.searchform {
position: relative;
display:none;
}
.searchform input {
background:#fff;
}
.notification-menu li:nth-child(4) {
display: none;
}
.left-side .searchform,
.left-side .logged-user {
display: block;
}
.breadcrumb-wrapper {
display: none;
}
.notification-menu .dropdown-menu:after {
display: none;
}
.Popovers-wrap, .tooltip-wrap{
text-align:center;
}
}
@media screen and (max-width: 360px) {
.notification-menu li:first-child .dropdown-menu-head {
margin-right: -160px;
}
.notification-menu li:nth-child(2) .dropdown-menu-head {
margin-right: -100px;
}
.notification-menu li:nth-child(3) .dropdown-menu-head {
margin-right: 0px;
}
.nav-tabs.nav-justified.nav-profile > li {
float: none;
display: block;
width: auto;
}
.notification-menu .dropdown-menu-head {
padding: 0;
min-width: 240px !important;
width: 240px !important;
}
}
@media only screen and (min-width:360px) and (max-width:500px){
.notification-menu li:first-child .dropdown-menu-head {
margin-right: -160px;
}
.notification-menu li:nth-child(2) .dropdown-menu-head {
margin-right: -100px;
}
.notification-menu li:nth-child(3) .dropdown-menu-head {
margin-right: 0px;
}
.notification-menu .dropdown-menu-head {
padding: 0;
min-width: 240px !important;
width: 240px !important;
}
}
@media only screen and (max-width:480px){
.page-title-box .page-title {
float: none;
text-align: center;
}
.breadcrumb {
text-align: center;
margin-top: 10px;
list-style: none;
border-radius: 0;
float: none;
width: 100%;
}
.page-title-box {
padding: 20px 0px 10px 20px;
}
.message-attachment {
position: relative;
width: 100px;
}
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 390 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

File diff suppressed because one or more lines are too long

@ -0,0 +1,180 @@
(function() {
"use strict";
// custom scrollbar
$(".left-side").niceScroll({styler:"fb",cursorcolor:"#ccc", cursorwidth: '5', cursorborderradius: '0px', background: '#ccc', spacebarenabled:false, cursorborder: '2'});
$(".left-side").getNiceScroll();
if ($('body').hasClass('left-side-collapsed')) {
$(".left-side").getNiceScroll().hide();
}
// Toggle Left Menu
jQuery('.menu-list > a').click(function() {
var parent = jQuery(this).parent();
var sub = parent.find('> ul');
if(!jQuery('body').hasClass('left-side-collapsed')) {
if(sub.is(':visible')) {
sub.slideUp(200, function(){
parent.removeClass('nav-active');
jQuery('.main-content').css({height: ''});
mainContentHeightAdjust();
});
} else {
visibleSubMenuClose();
parent.addClass('nav-active');
sub.slideDown(200, function(){
mainContentHeightAdjust();
});
}
}
return false;
});
function visibleSubMenuClose() {
jQuery('.menu-list').each(function() {
var t = jQuery(this);
if(t.hasClass('nav-active')) {
t.find('> ul').slideUp(200, function(){
t.removeClass('nav-active');
});
}
});
}
function mainContentHeightAdjust() {
// Adjust main content height
var docHeight = jQuery(document).height();
if(docHeight > jQuery('.main-content').height())
jQuery('.main-content').height(docHeight);
}
// class add mouse hover
jQuery('.custom-nav > li').hover(function(){
jQuery(this).addClass('nav-hover');
}, function(){
jQuery(this).removeClass('nav-hover');
});
// Menu Toggle
jQuery('.toggle-btn').click(function(){
$(".left-side").getNiceScroll().hide();
if ($('body').hasClass('left-side-collapsed')) {
$(".left-side").getNiceScroll().hide();
}
var body = jQuery('body');
var bodyposition = body.css('position');
if(bodyposition != 'relative') {
if(!body.hasClass('left-side-collapsed')) {
body.addClass('left-side-collapsed');
jQuery('.custom-nav ul').attr('style','');
jQuery(this).addClass('menu-collapsed');
} else {
body.removeClass('left-side-collapsed chat-view');
jQuery('.custom-nav li.active ul').css({display: 'block'});
jQuery(this).removeClass('menu-collapsed');
}
} else {
if(body.hasClass('left-side-show'))
body.removeClass('left-side-show');
else
body.addClass('left-side-show');
mainContentHeightAdjust();
}
});
/*searchform_reposition();*/
jQuery(window).resize(function(){
if(jQuery('body').css('position') == 'relative') {
jQuery('body').removeClass('left-side-collapsed');
} else {
jQuery('body').css({left: '', marginRight: ''});
}
});
})(jQuery);
$(function(){
$('.notification-scroll-list').slimScroll({
height: '220px',
allowPageScroll: true,
alwaysVisible: true
});
});
$(function(){
$('.message-scroll-list').slimScroll({
height: '220px',
allowPageScroll: true,
alwaysVisible: true
});
});
$(".inbox-scroll-list").niceScroll({styler:"fb",cursorcolor:"#ccc", cursorwidth: '5', cursorborderradius: '0px', background: '#ccc', spacebarenabled:false, cursorborder: '2'});
$(".chat-scroll-list").niceScroll({styler:"fb",cursorcolor:"#ccc", cursorwidth: '5', cursorborderradius: '0px', background: '#ccc', spacebarenabled:false, cursorborder: '2'});
//tooltip
$(function() {
$('[data-toggle="tooltip"]').tooltip()
})
// Initialize Popovers
jQuery('[data-toggle="popover"], .js-popover').popover({
container: 'body',
animation: true,
trigger: 'hover'
});
$(document).ready(function () {
function setHeight() {
windowHeight = $(window).innerHeight()-100;
$('.wrapper').css('min-height', windowHeight);
};
setHeight();
$(window).resize(function () {
setHeight();
});
});

File diff suppressed because one or more lines are too long

@ -0,0 +1,120 @@
/* jquery.nicescroll 3.6.8 InuYaksa*2015 MIT http://nicescroll.areaaperta.com */(function(f){"function"===typeof define&&define.amd?define(["jquery"],f):"object"===typeof exports?module.exports=f(require("jquery")):f(jQuery)})(function(f){var B=!1,F=!1,O=0,P=2E3,A=0,J=["webkit","ms","moz","o"],v=window.requestAnimationFrame||!1,w=window.cancelAnimationFrame||!1;if(!v)for(var Q in J){var G=J[Q];if(v=window[G+"RequestAnimationFrame"]){w=window[G+"CancelAnimationFrame"]||window[G+"CancelRequestAnimationFrame"];break}}var x=window.MutationObserver||window.WebKitMutationObserver||
!1,K={zindex:"auto",cursoropacitymin:0,cursoropacitymax:1,cursorcolor:"#424242",cursorwidth:"6px",cursorborder:"1px solid #fff",cursorborderradius:"5px",scrollspeed:60,mousescrollstep:24,touchbehavior:!1,hwacceleration:!0,usetransition:!0,boxzoom:!1,dblclickzoom:!0,gesturezoom:!0,grabcursorenabled:!0,autohidemode:!0,background:"",iframeautoresize:!0,cursorminheight:32,preservenativescrolling:!0,railoffset:!1,railhoffset:!1,bouncescroll:!0,spacebarenabled:!0,railpadding:{top:0,right:0,left:0,bottom:0},
disableoutline:!0,horizrailenabled:!0,railalign:"right",railvalign:"bottom",enabletranslate3d:!0,enablemousewheel:!0,enablekeyboard:!0,smoothscroll:!0,sensitiverail:!0,enablemouselockapi:!0,cursorfixedheight:!1,directionlockdeadzone:6,hidecursordelay:400,nativeparentscrolling:!0,enablescrollonselection:!0,overflowx:!0,overflowy:!0,cursordragspeed:.3,rtlmode:"auto",cursordragontouch:!1,oneaxismousemode:"auto",scriptpath:function(){var f=document.getElementsByTagName("script"),f=f.length?f[f.length-
1].src.split("?")[0]:"";return 0<f.split("/").length?f.split("/").slice(0,-1).join("/")+"/":""}(),preventmultitouchscrolling:!0,disablemutationobserver:!1},H=!1,R=function(){if(H)return H;var f=document.createElement("DIV"),c=f.style,k=navigator.userAgent,l=navigator.platform,d={haspointerlock:"pointerLockElement"in document||"webkitPointerLockElement"in document||"mozPointerLockElement"in document};d.isopera="opera"in window;d.isopera12=d.isopera&&"getUserMedia"in navigator;d.isoperamini="[object OperaMini]"===
Object.prototype.toString.call(window.operamini);d.isie="all"in document&&"attachEvent"in f&&!d.isopera;d.isieold=d.isie&&!("msInterpolationMode"in c);d.isie7=d.isie&&!d.isieold&&(!("documentMode"in document)||7==document.documentMode);d.isie8=d.isie&&"documentMode"in document&&8==document.documentMode;d.isie9=d.isie&&"performance"in window&&9==document.documentMode;d.isie10=d.isie&&"performance"in window&&10==document.documentMode;d.isie11="msRequestFullscreen"in f&&11<=document.documentMode;d.isieedge12=
navigator.userAgent.match(/Edge\/12\./);d.isieedge="msOverflowStyle"in f;d.ismodernie=d.isie11||d.isieedge;d.isie9mobile=/iemobile.9/i.test(k);d.isie9mobile&&(d.isie9=!1);d.isie7mobile=!d.isie9mobile&&d.isie7&&/iemobile/i.test(k);d.ismozilla="MozAppearance"in c;d.iswebkit="WebkitAppearance"in c;d.ischrome="chrome"in window;d.ischrome38=d.ischrome&&"touchAction"in c;d.ischrome22=!d.ischrome38&&d.ischrome&&d.haspointerlock;d.ischrome26=!d.ischrome38&&d.ischrome&&"transition"in c;d.cantouch="ontouchstart"in
document.documentElement||"ontouchstart"in window;d.hasw3ctouch=(window.PointerEvent||!1)&&(0<navigator.MaxTouchPoints||0<navigator.msMaxTouchPoints);d.hasmstouch=!d.hasw3ctouch&&(window.MSPointerEvent||!1);d.ismac=/^mac$/i.test(l);d.isios=d.cantouch&&/iphone|ipad|ipod/i.test(l);d.isios4=d.isios&&!("seal"in Object);d.isios7=d.isios&&"webkitHidden"in document;d.isios8=d.isios&&"hidden"in document;d.isandroid=/android/i.test(k);d.haseventlistener="addEventListener"in f;d.trstyle=!1;d.hastransform=!1;
d.hastranslate3d=!1;d.transitionstyle=!1;d.hastransition=!1;d.transitionend=!1;l=["transform","msTransform","webkitTransform","MozTransform","OTransform"];for(k=0;k<l.length;k++)if(void 0!==c[l[k]]){d.trstyle=l[k];break}d.hastransform=!!d.trstyle;d.hastransform&&(c[d.trstyle]="translate3d(1px,2px,3px)",d.hastranslate3d=/translate3d/.test(c[d.trstyle]));d.transitionstyle=!1;d.prefixstyle="";d.transitionend=!1;for(var l="transition webkitTransition msTransition MozTransition OTransition OTransition KhtmlTransition".split(" "),
q=" -webkit- -ms- -moz- -o- -o -khtml-".split(" "),t="transitionend webkitTransitionEnd msTransitionEnd transitionend otransitionend oTransitionEnd KhtmlTransitionEnd".split(" "),k=0;k<l.length;k++)if(l[k]in c){d.transitionstyle=l[k];d.prefixstyle=q[k];d.transitionend=t[k];break}d.ischrome26&&(d.prefixstyle=q[1]);d.hastransition=d.transitionstyle;a:{k=["grab","-webkit-grab","-moz-grab"];if(d.ischrome&&!d.ischrome38||d.isie)k=[];for(l=0;l<k.length;l++)if(q=k[l],c.cursor=q,c.cursor==q){c=q;break a}c=
"url(//patriciaportfolio.googlecode.com/files/openhand.cur),n-resize"}d.cursorgrabvalue=c;d.hasmousecapture="setCapture"in f;d.hasMutationObserver=!1!==x;return H=d},S=function(h,c){function k(){var b=a.doc.css(e.trstyle);return b&&"matrix"==b.substr(0,6)?b.replace(/^.*\((.*)\)$/g,"$1").replace(/px/g,"").split(/, +/):!1}function l(){var b=a.win;if("zIndex"in b)return b.zIndex();for(;0<b.length&&9!=b[0].nodeType;){var g=b.css("zIndex");if(!isNaN(g)&&0!=g)return parseInt(g);b=b.parent()}return!1}function d(b,
g,u){g=b.css(g);b=parseFloat(g);return isNaN(b)?(b=z[g]||0,u=3==b?u?a.win.outerHeight()-a.win.innerHeight():a.win.outerWidth()-a.win.innerWidth():1,a.isie8&&b&&(b+=1),u?b:0):b}function q(b,g,u,c){a._bind(b,g,function(a){a=a?a:window.event;var c={original:a,target:a.target||a.srcElement,type:"wheel",deltaMode:"MozMousePixelScroll"==a.type?0:1,deltaX:0,deltaZ:0,preventDefault:function(){a.preventDefault?a.preventDefault():a.returnValue=!1;return!1},stopImmediatePropagation:function(){a.stopImmediatePropagation?
a.stopImmediatePropagation():a.cancelBubble=!0}};"mousewheel"==g?(a.wheelDeltaX&&(c.deltaX=-.025*a.wheelDeltaX),a.wheelDeltaY&&(c.deltaY=-.025*a.wheelDeltaY),c.deltaY||c.deltaX||(c.deltaY=-.025*a.wheelDelta)):c.deltaY=a.detail;return u.call(b,c)},c)}function t(b,g,c){var d,e;0==b.deltaMode?(d=-Math.floor(a.opt.mousescrollstep/54*b.deltaX),e=-Math.floor(a.opt.mousescrollstep/54*b.deltaY)):1==b.deltaMode&&(d=-Math.floor(b.deltaX*a.opt.mousescrollstep),e=-Math.floor(b.deltaY*a.opt.mousescrollstep));
g&&a.opt.oneaxismousemode&&0==d&&e&&(d=e,e=0,c&&(0>d?a.getScrollLeft()>=a.page.maxw:0>=a.getScrollLeft())&&(e=d,d=0));a.isrtlmode&&(d=-d);d&&(a.scrollmom&&a.scrollmom.stop(),a.lastdeltax+=d,a.debounced("mousewheelx",function(){var b=a.lastdeltax;a.lastdeltax=0;a.rail.drag||a.doScrollLeftBy(b)},15));if(e){if(a.opt.nativeparentscrolling&&c&&!a.ispage&&!a.zoomactive)if(0>e){if(a.getScrollTop()>=a.page.maxh)return!0}else if(0>=a.getScrollTop())return!0;a.scrollmom&&a.scrollmom.stop();a.lastdeltay+=e;
a.synched("mousewheely",function(){var b=a.lastdeltay;a.lastdeltay=0;a.rail.drag||a.doScrollBy(b)},15)}b.stopImmediatePropagation();return b.preventDefault()}var a=this;this.version="3.6.8";this.name="nicescroll";this.me=c;this.opt={doc:f("body"),win:!1};f.extend(this.opt,K);this.opt.snapbackspeed=80;if(h)for(var r in a.opt)void 0!==h[r]&&(a.opt[r]=h[r]);a.opt.disablemutationobserver&&(x=!1);this.iddoc=(this.doc=a.opt.doc)&&this.doc[0]?this.doc[0].id||"":"";this.ispage=/^BODY|HTML/.test(a.opt.win?
a.opt.win[0].nodeName:this.doc[0].nodeName);this.haswrapper=!1!==a.opt.win;this.win=a.opt.win||(this.ispage?f(window):this.doc);this.docscroll=this.ispage&&!this.haswrapper?f(window):this.win;this.body=f("body");this.iframe=this.isfixed=this.viewport=!1;this.isiframe="IFRAME"==this.doc[0].nodeName&&"IFRAME"==this.win[0].nodeName;this.istextarea="TEXTAREA"==this.win[0].nodeName;this.forcescreen=!1;this.canshowonmouseevent="scroll"!=a.opt.autohidemode;this.page=this.view=this.onzoomout=this.onzoomin=
this.onscrollcancel=this.onscrollend=this.onscrollstart=this.onclick=this.ongesturezoom=this.onkeypress=this.onmousewheel=this.onmousemove=this.onmouseup=this.onmousedown=!1;this.scroll={x:0,y:0};this.scrollratio={x:0,y:0};this.cursorheight=20;this.scrollvaluemax=0;if("auto"==this.opt.rtlmode){r=this.win[0]==window?this.body:this.win;var p=r.css("writing-mode")||r.css("-webkit-writing-mode")||r.css("-ms-writing-mode")||r.css("-moz-writing-mode");"horizontal-tb"==p||"lr-tb"==p||""==p?(this.isrtlmode=
"rtl"==r.css("direction"),this.isvertical=!1):(this.isrtlmode="vertical-rl"==p||"tb"==p||"tb-rl"==p||"rl-tb"==p,this.isvertical="vertical-rl"==p||"tb"==p||"tb-rl"==p)}else this.isrtlmode=!0===this.opt.rtlmode,this.isvertical=!1;this.observerbody=this.observerremover=this.observer=this.scrollmom=this.scrollrunning=!1;do this.id="ascrail"+P++;while(document.getElementById(this.id));this.hasmousefocus=this.hasfocus=this.zoomactive=this.zoom=this.selectiondrag=this.cursorfreezed=this.cursor=this.rail=
!1;this.visibility=!0;this.hidden=this.locked=this.railslocked=!1;this.cursoractive=!0;this.wheelprevented=!1;this.overflowx=a.opt.overflowx;this.overflowy=a.opt.overflowy;this.nativescrollingarea=!1;this.checkarea=0;this.events=[];this.saved={};this.delaylist={};this.synclist={};this.lastdeltay=this.lastdeltax=0;this.detected=R();var e=f.extend({},this.detected);this.ishwscroll=(this.canhwscroll=e.hastransform&&a.opt.hwacceleration)&&a.haswrapper;this.hasreversehr=this.isrtlmode?this.isvertical?
!(e.iswebkit||e.isie||e.isie11):!(e.iswebkit||e.isie&&!e.isie10&&!e.isie11):!1;this.istouchcapable=!1;e.cantouch||!e.hasw3ctouch&&!e.hasmstouch?!e.cantouch||e.isios||e.isandroid||!e.iswebkit&&!e.ismozilla||(this.istouchcapable=!0):this.istouchcapable=!0;a.opt.enablemouselockapi||(e.hasmousecapture=!1,e.haspointerlock=!1);this.debounced=function(b,g,c){a&&(a.delaylist[b]||(g.call(a),a.delaylist[b]={h:v(function(){a.delaylist[b].fn.call(a);a.delaylist[b]=!1},c)}),a.delaylist[b].fn=g)};var I=!1;this.synched=
function(b,g){a.synclist[b]=g;(function(){I||(v(function(){if(a){I=!1;for(var b in a.synclist){var g=a.synclist[b];g&&g.call(a);a.synclist[b]=!1}}}),I=!0)})();return b};this.unsynched=function(b){a.synclist[b]&&(a.synclist[b]=!1)};this.css=function(b,g){for(var c in g)a.saved.css.push([b,c,b.css(c)]),b.css(c,g[c])};this.scrollTop=function(b){return void 0===b?a.getScrollTop():a.setScrollTop(b)};this.scrollLeft=function(b){return void 0===b?a.getScrollLeft():a.setScrollLeft(b)};var D=function(a,g,
c,d,e,f,k){this.st=a;this.ed=g;this.spd=c;this.p1=d||0;this.p2=e||1;this.p3=f||0;this.p4=k||1;this.ts=(new Date).getTime();this.df=this.ed-this.st};D.prototype={B2:function(a){return 3*a*a*(1-a)},B3:function(a){return 3*a*(1-a)*(1-a)},B4:function(a){return(1-a)*(1-a)*(1-a)},getNow:function(){var a=1-((new Date).getTime()-this.ts)/this.spd,g=this.B2(a)+this.B3(a)+this.B4(a);return 0>a?this.ed:this.st+Math.round(this.df*g)},update:function(a,g){this.st=this.getNow();this.ed=a;this.spd=g;this.ts=(new Date).getTime();
this.df=this.ed-this.st;return this}};if(this.ishwscroll){this.doc.translate={x:0,y:0,tx:"0px",ty:"0px"};e.hastranslate3d&&e.isios&&this.doc.css("-webkit-backface-visibility","hidden");this.getScrollTop=function(b){if(!b){if(b=k())return 16==b.length?-b[13]:-b[5];if(a.timerscroll&&a.timerscroll.bz)return a.timerscroll.bz.getNow()}return a.doc.translate.y};this.getScrollLeft=function(b){if(!b){if(b=k())return 16==b.length?-b[12]:-b[4];if(a.timerscroll&&a.timerscroll.bh)return a.timerscroll.bh.getNow()}return a.doc.translate.x};
this.notifyScrollEvent=function(a){var g=document.createEvent("UIEvents");g.initUIEvent("scroll",!1,!0,window,1);g.niceevent=!0;a.dispatchEvent(g)};var y=this.isrtlmode?1:-1;e.hastranslate3d&&a.opt.enabletranslate3d?(this.setScrollTop=function(b,g){a.doc.translate.y=b;a.doc.translate.ty=-1*b+"px";a.doc.css(e.trstyle,"translate3d("+a.doc.translate.tx+","+a.doc.translate.ty+",0px)");g||a.notifyScrollEvent(a.win[0])},this.setScrollLeft=function(b,g){a.doc.translate.x=b;a.doc.translate.tx=b*y+"px";a.doc.css(e.trstyle,
"translate3d("+a.doc.translate.tx+","+a.doc.translate.ty+",0px)");g||a.notifyScrollEvent(a.win[0])}):(this.setScrollTop=function(b,g){a.doc.translate.y=b;a.doc.translate.ty=-1*b+"px";a.doc.css(e.trstyle,"translate("+a.doc.translate.tx+","+a.doc.translate.ty+")");g||a.notifyScrollEvent(a.win[0])},this.setScrollLeft=function(b,g){a.doc.translate.x=b;a.doc.translate.tx=b*y+"px";a.doc.css(e.trstyle,"translate("+a.doc.translate.tx+","+a.doc.translate.ty+")");g||a.notifyScrollEvent(a.win[0])})}else this.getScrollTop=
function(){return a.docscroll.scrollTop()},this.setScrollTop=function(b){return setTimeout(function(){a&&a.docscroll.scrollTop(b)},1)},this.getScrollLeft=function(){return a.hasreversehr?a.detected.ismozilla?a.page.maxw-Math.abs(a.docscroll.scrollLeft()):a.page.maxw-a.docscroll.scrollLeft():a.docscroll.scrollLeft()},this.setScrollLeft=function(b){return setTimeout(function(){if(a)return a.hasreversehr&&(b=a.detected.ismozilla?-(a.page.maxw-b):a.page.maxw-b),a.docscroll.scrollLeft(b)},1)};this.getTarget=
function(a){return a?a.target?a.target:a.srcElement?a.srcElement:!1:!1};this.hasParent=function(a,g){if(!a)return!1;for(var c=a.target||a.srcElement||a||!1;c&&c.id!=g;)c=c.parentNode||!1;return!1!==c};var z={thin:1,medium:3,thick:5};this.getDocumentScrollOffset=function(){return{top:window.pageYOffset||document.documentElement.scrollTop,left:window.pageXOffset||document.documentElement.scrollLeft}};this.getOffset=function(){if(a.isfixed){var b=a.win.offset(),g=a.getDocumentScrollOffset();b.top-=g.top;
b.left-=g.left;return b}b=a.win.offset();if(!a.viewport)return b;g=a.viewport.offset();return{top:b.top-g.top,left:b.left-g.left}};this.updateScrollBar=function(b){var g,c,e;if(a.ishwscroll)a.rail.css({height:a.win.innerHeight()-(a.opt.railpadding.top+a.opt.railpadding.bottom)}),a.railh&&a.railh.css({width:a.win.innerWidth()-(a.opt.railpadding.left+a.opt.railpadding.right)});else{var f=a.getOffset();g=f.top;c=f.left-(a.opt.railpadding.left+a.opt.railpadding.right);g+=d(a.win,"border-top-width",!0);
c+=a.rail.align?a.win.outerWidth()-d(a.win,"border-right-width")-a.rail.width:d(a.win,"border-left-width");if(e=a.opt.railoffset)e.top&&(g+=e.top),e.left&&(c+=e.left);a.railslocked||a.rail.css({top:g,left:c,height:(b?b.h:a.win.innerHeight())-(a.opt.railpadding.top+a.opt.railpadding.bottom)});a.zoom&&a.zoom.css({top:g+1,left:1==a.rail.align?c-20:c+a.rail.width+4});if(a.railh&&!a.railslocked){g=f.top;c=f.left;if(e=a.opt.railhoffset)e.top&&(g+=e.top),e.left&&(c+=e.left);b=a.railh.align?g+d(a.win,"border-top-width",
!0)+a.win.innerHeight()-a.railh.height:g+d(a.win,"border-top-width",!0);c+=d(a.win,"border-left-width");a.railh.css({top:b-(a.opt.railpadding.top+a.opt.railpadding.bottom),left:c,width:a.railh.width})}}};this.doRailClick=function(b,g,c){var d;a.railslocked||(a.cancelEvent(b),g?(g=c?a.doScrollLeft:a.doScrollTop,d=c?(b.pageX-a.railh.offset().left-a.cursorwidth/2)*a.scrollratio.x:(b.pageY-a.rail.offset().top-a.cursorheight/2)*a.scrollratio.y,g(d)):(g=c?a.doScrollLeftBy:a.doScrollBy,d=c?a.scroll.x:a.scroll.y,
b=c?b.pageX-a.railh.offset().left:b.pageY-a.rail.offset().top,c=c?a.view.w:a.view.h,g(d>=b?c:-c)))};a.hasanimationframe=v;a.hascancelanimationframe=w;a.hasanimationframe?a.hascancelanimationframe||(w=function(){a.cancelAnimationFrame=!0}):(v=function(a){return setTimeout(a,15-Math.floor(+new Date/1E3)%16)},w=clearTimeout);this.init=function(){a.saved.css=[];if(e.isie7mobile||e.isoperamini)return!0;e.hasmstouch&&a.css(a.ispage?f("html"):a.win,{_touchaction:"none"});var b=e.ismodernie||e.isie10?{"-ms-overflow-style":"none"}:
{"overflow-y":"hidden"};a.zindex="auto";a.zindex=a.ispage||"auto"!=a.opt.zindex?a.opt.zindex:l()||"auto";!a.ispage&&"auto"!=a.zindex&&a.zindex>A&&(A=a.zindex);a.isie&&0==a.zindex&&"auto"==a.opt.zindex&&(a.zindex="auto");if(!a.ispage||!e.cantouch&&!e.isieold&&!e.isie9mobile){var c=a.docscroll;a.ispage&&(c=a.haswrapper?a.win:a.doc);e.isie9mobile||a.css(c,b);a.ispage&&e.isie7&&("BODY"==a.doc[0].nodeName?a.css(f("html"),{"overflow-y":"hidden"}):"HTML"==a.doc[0].nodeName&&a.css(f("body"),b));!e.isios||
a.ispage||a.haswrapper||a.css(f("body"),{"-webkit-overflow-scrolling":"touch"});var d=f(document.createElement("div"));d.css({position:"relative",top:0,"float":"right",width:a.opt.cursorwidth,height:0,"background-color":a.opt.cursorcolor,border:a.opt.cursorborder,"background-clip":"padding-box","-webkit-border-radius":a.opt.cursorborderradius,"-moz-border-radius":a.opt.cursorborderradius,"border-radius":a.opt.cursorborderradius});d.hborder=parseFloat(d.outerHeight()-d.innerHeight());d.addClass("nicescroll-cursors");
a.cursor=d;var m=f(document.createElement("div"));m.attr("id",a.id);m.addClass("nicescroll-rails nicescroll-rails-vr");var k,h,p=["left","right","top","bottom"],L;for(L in p)h=p[L],(k=a.opt.railpadding[h])?m.css("padding-"+h,k+"px"):a.opt.railpadding[h]=0;m.append(d);m.width=Math.max(parseFloat(a.opt.cursorwidth),d.outerWidth());m.css({width:m.width+"px",zIndex:a.zindex,background:a.opt.background,cursor:"default"});m.visibility=!0;m.scrollable=!0;m.align="left"==a.opt.railalign?0:1;a.rail=m;d=a.rail.drag=
!1;!a.opt.boxzoom||a.ispage||e.isieold||(d=document.createElement("div"),a.bind(d,"click",a.doZoom),a.bind(d,"mouseenter",function(){a.zoom.css("opacity",a.opt.cursoropacitymax)}),a.bind(d,"mouseleave",function(){a.zoom.css("opacity",a.opt.cursoropacitymin)}),a.zoom=f(d),a.zoom.css({cursor:"pointer",zIndex:a.zindex,backgroundImage:"url("+a.opt.scriptpath+"zoomico.png)",height:18,width:18,backgroundPosition:"0px 0px"}),a.opt.dblclickzoom&&a.bind(a.win,"dblclick",a.doZoom),e.cantouch&&a.opt.gesturezoom&&
(a.ongesturezoom=function(b){1.5<b.scale&&a.doZoomIn(b);.8>b.scale&&a.doZoomOut(b);return a.cancelEvent(b)},a.bind(a.win,"gestureend",a.ongesturezoom)));a.railh=!1;var n;a.opt.horizrailenabled&&(a.css(c,{overflowX:"hidden"}),d=f(document.createElement("div")),d.css({position:"absolute",top:0,height:a.opt.cursorwidth,width:0,backgroundColor:a.opt.cursorcolor,border:a.opt.cursorborder,backgroundClip:"padding-box","-webkit-border-radius":a.opt.cursorborderradius,"-moz-border-radius":a.opt.cursorborderradius,
"border-radius":a.opt.cursorborderradius}),e.isieold&&d.css("overflow","hidden"),d.wborder=parseFloat(d.outerWidth()-d.innerWidth()),d.addClass("nicescroll-cursors"),a.cursorh=d,n=f(document.createElement("div")),n.attr("id",a.id+"-hr"),n.addClass("nicescroll-rails nicescroll-rails-hr"),n.height=Math.max(parseFloat(a.opt.cursorwidth),d.outerHeight()),n.css({height:n.height+"px",zIndex:a.zindex,background:a.opt.background}),n.append(d),n.visibility=!0,n.scrollable=!0,n.align="top"==a.opt.railvalign?
0:1,a.railh=n,a.railh.drag=!1);a.ispage?(m.css({position:"fixed",top:0,height:"100%"}),m.align?m.css({right:0}):m.css({left:0}),a.body.append(m),a.railh&&(n.css({position:"fixed",left:0,width:"100%"}),n.align?n.css({bottom:0}):n.css({top:0}),a.body.append(n))):(a.ishwscroll?("static"==a.win.css("position")&&a.css(a.win,{position:"relative"}),c="HTML"==a.win[0].nodeName?a.body:a.win,f(c).scrollTop(0).scrollLeft(0),a.zoom&&(a.zoom.css({position:"absolute",top:1,right:0,"margin-right":m.width+4}),c.append(a.zoom)),
m.css({position:"absolute",top:0}),m.align?m.css({right:0}):m.css({left:0}),c.append(m),n&&(n.css({position:"absolute",left:0,bottom:0}),n.align?n.css({bottom:0}):n.css({top:0}),c.append(n))):(a.isfixed="fixed"==a.win.css("position"),c=a.isfixed?"fixed":"absolute",a.isfixed||(a.viewport=a.getViewport(a.win[0])),a.viewport&&(a.body=a.viewport,0==/fixed|absolute/.test(a.viewport.css("position"))&&a.css(a.viewport,{position:"relative"})),m.css({position:c}),a.zoom&&a.zoom.css({position:c}),a.updateScrollBar(),
a.body.append(m),a.zoom&&a.body.append(a.zoom),a.railh&&(n.css({position:c}),a.body.append(n))),e.isios&&a.css(a.win,{"-webkit-tap-highlight-color":"rgba(0,0,0,0)","-webkit-touch-callout":"none"}),e.isie&&a.opt.disableoutline&&a.win.attr("hideFocus","true"),e.iswebkit&&a.opt.disableoutline&&a.win.css("outline","none"));!1===a.opt.autohidemode?(a.autohidedom=!1,a.rail.css({opacity:a.opt.cursoropacitymax}),a.railh&&a.railh.css({opacity:a.opt.cursoropacitymax})):!0===a.opt.autohidemode||"leave"===a.opt.autohidemode?
(a.autohidedom=f().add(a.rail),e.isie8&&(a.autohidedom=a.autohidedom.add(a.cursor)),a.railh&&(a.autohidedom=a.autohidedom.add(a.railh)),a.railh&&e.isie8&&(a.autohidedom=a.autohidedom.add(a.cursorh))):"scroll"==a.opt.autohidemode?(a.autohidedom=f().add(a.rail),a.railh&&(a.autohidedom=a.autohidedom.add(a.railh))):"cursor"==a.opt.autohidemode?(a.autohidedom=f().add(a.cursor),a.railh&&(a.autohidedom=a.autohidedom.add(a.cursorh))):"hidden"==a.opt.autohidemode&&(a.autohidedom=!1,a.hide(),a.railslocked=
!1);if(e.isie9mobile)a.scrollmom=new M(a),a.onmangotouch=function(){var b=a.getScrollTop(),c=a.getScrollLeft();if(b==a.scrollmom.lastscrolly&&c==a.scrollmom.lastscrollx)return!0;var g=b-a.mangotouch.sy,d=c-a.mangotouch.sx;if(0!=Math.round(Math.sqrt(Math.pow(d,2)+Math.pow(g,2)))){var e=0>g?-1:1,f=0>d?-1:1,u=+new Date;a.mangotouch.lazy&&clearTimeout(a.mangotouch.lazy);80<u-a.mangotouch.tm||a.mangotouch.dry!=e||a.mangotouch.drx!=f?(a.scrollmom.stop(),a.scrollmom.reset(c,b),a.mangotouch.sy=b,a.mangotouch.ly=
b,a.mangotouch.sx=c,a.mangotouch.lx=c,a.mangotouch.dry=e,a.mangotouch.drx=f,a.mangotouch.tm=u):(a.scrollmom.stop(),a.scrollmom.update(a.mangotouch.sx-d,a.mangotouch.sy-g),a.mangotouch.tm=u,g=Math.max(Math.abs(a.mangotouch.ly-b),Math.abs(a.mangotouch.lx-c)),a.mangotouch.ly=b,a.mangotouch.lx=c,2<g&&(a.mangotouch.lazy=setTimeout(function(){a.mangotouch.lazy=!1;a.mangotouch.dry=0;a.mangotouch.drx=0;a.mangotouch.tm=0;a.scrollmom.doMomentum(30)},100)))}},m=a.getScrollTop(),n=a.getScrollLeft(),a.mangotouch=
{sy:m,ly:m,dry:0,sx:n,lx:n,drx:0,lazy:!1,tm:0},a.bind(a.docscroll,"scroll",a.onmangotouch);else{if(e.cantouch||a.istouchcapable||a.opt.touchbehavior||e.hasmstouch){a.scrollmom=new M(a);a.ontouchstart=function(b){if(b.pointerType&&2!=b.pointerType&&"touch"!=b.pointerType)return!1;a.hasmoving=!1;if(!a.railslocked){var c;if(e.hasmstouch)for(c=b.target?b.target:!1;c;){var g=f(c).getNiceScroll();if(0<g.length&&g[0].me==a.me)break;if(0<g.length)return!1;if("DIV"==c.nodeName&&c.id==a.id)break;c=c.parentNode?
c.parentNode:!1}a.cancelScroll();if((c=a.getTarget(b))&&/INPUT/i.test(c.nodeName)&&/range/i.test(c.type))return a.stopPropagation(b);!("clientX"in b)&&"changedTouches"in b&&(b.clientX=b.changedTouches[0].clientX,b.clientY=b.changedTouches[0].clientY);a.forcescreen&&(g=b,b={original:b.original?b.original:b},b.clientX=g.screenX,b.clientY=g.screenY);a.rail.drag={x:b.clientX,y:b.clientY,sx:a.scroll.x,sy:a.scroll.y,st:a.getScrollTop(),sl:a.getScrollLeft(),pt:2,dl:!1};if(a.ispage||!a.opt.directionlockdeadzone)a.rail.drag.dl=
"f";else{var g=f(window).width(),d=f(window).height(),d=Math.max(0,Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-d),g=Math.max(0,Math.max(document.body.scrollWidth,document.documentElement.scrollWidth)-g);a.rail.drag.ck=!a.rail.scrollable&&a.railh.scrollable?0<d?"v":!1:a.rail.scrollable&&!a.railh.scrollable?0<g?"h":!1:!1;a.rail.drag.ck||(a.rail.drag.dl="f")}a.opt.touchbehavior&&a.isiframe&&e.isie&&(g=a.win.position(),a.rail.drag.x+=g.left,a.rail.drag.y+=g.top);a.hasmoving=
!1;a.lastmouseup=!1;a.scrollmom.reset(b.clientX,b.clientY);if(!e.cantouch&&!this.istouchcapable&&!b.pointerType){if(!c||!/INPUT|SELECT|TEXTAREA/i.test(c.nodeName))return!a.ispage&&e.hasmousecapture&&c.setCapture(),a.opt.touchbehavior?(c.onclick&&!c._onclick&&(c._onclick=c.onclick,c.onclick=function(b){if(a.hasmoving)return!1;c._onclick.call(this,b)}),a.cancelEvent(b)):a.stopPropagation(b);/SUBMIT|CANCEL|BUTTON/i.test(f(c).attr("type"))&&(pc={tg:c,click:!1},a.preventclick=pc)}}};a.ontouchend=function(b){if(!a.rail.drag)return!0;
if(2==a.rail.drag.pt){if(b.pointerType&&2!=b.pointerType&&"touch"!=b.pointerType)return!1;a.scrollmom.doMomentum();a.rail.drag=!1;if(a.hasmoving&&(a.lastmouseup=!0,a.hideCursor(),e.hasmousecapture&&document.releaseCapture(),!e.cantouch))return a.cancelEvent(b)}else if(1==a.rail.drag.pt)return a.onmouseup(b)};var q=a.opt.touchbehavior&&a.isiframe&&!e.hasmousecapture;a.ontouchmove=function(b,c){if(!a.rail.drag||b.targetTouches&&a.opt.preventmultitouchscrolling&&1<b.targetTouches.length||b.pointerType&&
2!=b.pointerType&&"touch"!=b.pointerType)return!1;if(2==a.rail.drag.pt){if(e.cantouch&&e.isios&&void 0===b.original)return!0;a.hasmoving=!0;a.preventclick&&!a.preventclick.click&&(a.preventclick.click=a.preventclick.tg.onclick||!1,a.preventclick.tg.onclick=a.onpreventclick);b=f.extend({original:b},b);"changedTouches"in b&&(b.clientX=b.changedTouches[0].clientX,b.clientY=b.changedTouches[0].clientY);if(a.forcescreen){var g=b;b={original:b.original?b.original:b};b.clientX=g.screenX;b.clientY=g.screenY}var d,
g=d=0;q&&!c&&(d=a.win.position(),g=-d.left,d=-d.top);var u=b.clientY+d;d=u-a.rail.drag.y;var m=b.clientX+g,k=m-a.rail.drag.x,h=a.rail.drag.st-d;a.ishwscroll&&a.opt.bouncescroll?0>h?h=Math.round(h/2):h>a.page.maxh&&(h=a.page.maxh+Math.round((h-a.page.maxh)/2)):(0>h&&(u=h=0),h>a.page.maxh&&(h=a.page.maxh,u=0));var l;a.railh&&a.railh.scrollable&&(l=a.isrtlmode?k-a.rail.drag.sl:a.rail.drag.sl-k,a.ishwscroll&&a.opt.bouncescroll?0>l?l=Math.round(l/2):l>a.page.maxw&&(l=a.page.maxw+Math.round((l-a.page.maxw)/
2)):(0>l&&(m=l=0),l>a.page.maxw&&(l=a.page.maxw,m=0)));g=!1;if(a.rail.drag.dl)g=!0,"v"==a.rail.drag.dl?l=a.rail.drag.sl:"h"==a.rail.drag.dl&&(h=a.rail.drag.st);else{d=Math.abs(d);var k=Math.abs(k),C=a.opt.directionlockdeadzone;if("v"==a.rail.drag.ck){if(d>C&&k<=.3*d)return a.rail.drag=!1,!0;k>C&&(a.rail.drag.dl="f",f("body").scrollTop(f("body").scrollTop()))}else if("h"==a.rail.drag.ck){if(k>C&&d<=.3*k)return a.rail.drag=!1,!0;d>C&&(a.rail.drag.dl="f",f("body").scrollLeft(f("body").scrollLeft()))}}a.synched("touchmove",
function(){a.rail.drag&&2==a.rail.drag.pt&&(a.prepareTransition&&a.prepareTransition(0),a.rail.scrollable&&a.setScrollTop(h),a.scrollmom.update(m,u),a.railh&&a.railh.scrollable?(a.setScrollLeft(l),a.showCursor(h,l)):a.showCursor(h),e.isie10&&document.selection.clear())});e.ischrome&&a.istouchcapable&&(g=!1);if(g)return a.cancelEvent(b)}else if(1==a.rail.drag.pt)return a.onmousemove(b)}}a.onmousedown=function(b,c){if(!a.rail.drag||1==a.rail.drag.pt){if(a.railslocked)return a.cancelEvent(b);a.cancelScroll();
a.rail.drag={x:b.clientX,y:b.clientY,sx:a.scroll.x,sy:a.scroll.y,pt:1,hr:!!c};var g=a.getTarget(b);!a.ispage&&e.hasmousecapture&&g.setCapture();a.isiframe&&!e.hasmousecapture&&(a.saved.csspointerevents=a.doc.css("pointer-events"),a.css(a.doc,{"pointer-events":"none"}));a.hasmoving=!1;return a.cancelEvent(b)}};a.onmouseup=function(b){if(a.rail.drag){if(1!=a.rail.drag.pt)return!0;e.hasmousecapture&&document.releaseCapture();a.isiframe&&!e.hasmousecapture&&a.doc.css("pointer-events",a.saved.csspointerevents);
a.rail.drag=!1;a.hasmoving&&a.triggerScrollEnd();return a.cancelEvent(b)}};a.onmousemove=function(b){if(a.rail.drag){if(1==a.rail.drag.pt){if(e.ischrome&&0==b.which)return a.onmouseup(b);a.cursorfreezed=!0;a.hasmoving=!0;if(a.rail.drag.hr){a.scroll.x=a.rail.drag.sx+(b.clientX-a.rail.drag.x);0>a.scroll.x&&(a.scroll.x=0);var c=a.scrollvaluemaxw;a.scroll.x>c&&(a.scroll.x=c)}else a.scroll.y=a.rail.drag.sy+(b.clientY-a.rail.drag.y),0>a.scroll.y&&(a.scroll.y=0),c=a.scrollvaluemax,a.scroll.y>c&&(a.scroll.y=
c);a.synched("mousemove",function(){a.rail.drag&&1==a.rail.drag.pt&&(a.showCursor(),a.rail.drag.hr?a.hasreversehr?a.doScrollLeft(a.scrollvaluemaxw-Math.round(a.scroll.x*a.scrollratio.x),a.opt.cursordragspeed):a.doScrollLeft(Math.round(a.scroll.x*a.scrollratio.x),a.opt.cursordragspeed):a.doScrollTop(Math.round(a.scroll.y*a.scrollratio.y),a.opt.cursordragspeed))});return a.cancelEvent(b)}}else a.checkarea=0};if(e.cantouch||a.opt.touchbehavior)a.onpreventclick=function(b){if(a.preventclick)return a.preventclick.tg.onclick=
a.preventclick.click,a.preventclick=!1,a.cancelEvent(b)},a.bind(a.win,"mousedown",a.ontouchstart),a.onclick=e.isios?!1:function(b){return a.lastmouseup?(a.lastmouseup=!1,a.cancelEvent(b)):!0},a.opt.grabcursorenabled&&e.cursorgrabvalue&&(a.css(a.ispage?a.doc:a.win,{cursor:e.cursorgrabvalue}),a.css(a.rail,{cursor:e.cursorgrabvalue}));else{var r=function(b){if(a.selectiondrag){if(b){var c=a.win.outerHeight();b=b.pageY-a.selectiondrag.top;0<b&&b<c&&(b=0);b>=c&&(b-=c);a.selectiondrag.df=b}0!=a.selectiondrag.df&&
(a.doScrollBy(2*-Math.floor(a.selectiondrag.df/6)),a.debounced("doselectionscroll",function(){r()},50))}};a.hasTextSelected="getSelection"in document?function(){return 0<document.getSelection().rangeCount}:"selection"in document?function(){return"None"!=document.selection.type}:function(){return!1};a.onselectionstart=function(b){a.ispage||(a.selectiondrag=a.win.offset())};a.onselectionend=function(b){a.selectiondrag=!1};a.onselectiondrag=function(b){a.selectiondrag&&a.hasTextSelected()&&a.debounced("selectionscroll",
function(){r(b)},250)}}e.hasw3ctouch?(a.css(a.rail,{"touch-action":"none"}),a.css(a.cursor,{"touch-action":"none"}),a.bind(a.win,"pointerdown",a.ontouchstart),a.bind(document,"pointerup",a.ontouchend),a.bind(document,"pointermove",a.ontouchmove)):e.hasmstouch?(a.css(a.rail,{"-ms-touch-action":"none"}),a.css(a.cursor,{"-ms-touch-action":"none"}),a.bind(a.win,"MSPointerDown",a.ontouchstart),a.bind(document,"MSPointerUp",a.ontouchend),a.bind(document,"MSPointerMove",a.ontouchmove),a.bind(a.cursor,"MSGestureHold",
function(a){a.preventDefault()}),a.bind(a.cursor,"contextmenu",function(a){a.preventDefault()})):this.istouchcapable&&(a.bind(a.win,"touchstart",a.ontouchstart),a.bind(document,"touchend",a.ontouchend),a.bind(document,"touchcancel",a.ontouchend),a.bind(document,"touchmove",a.ontouchmove));if(a.opt.cursordragontouch||!e.cantouch&&!a.opt.touchbehavior)a.rail.css({cursor:"default"}),a.railh&&a.railh.css({cursor:"default"}),a.jqbind(a.rail,"mouseenter",function(){if(!a.ispage&&!a.win.is(":visible"))return!1;
a.canshowonmouseevent&&a.showCursor();a.rail.active=!0}),a.jqbind(a.rail,"mouseleave",function(){a.rail.active=!1;a.rail.drag||a.hideCursor()}),a.opt.sensitiverail&&(a.bind(a.rail,"click",function(b){a.doRailClick(b,!1,!1)}),a.bind(a.rail,"dblclick",function(b){a.doRailClick(b,!0,!1)}),a.bind(a.cursor,"click",function(b){a.cancelEvent(b)}),a.bind(a.cursor,"dblclick",function(b){a.cancelEvent(b)})),a.railh&&(a.jqbind(a.railh,"mouseenter",function(){if(!a.ispage&&!a.win.is(":visible"))return!1;a.canshowonmouseevent&&
a.showCursor();a.rail.active=!0}),a.jqbind(a.railh,"mouseleave",function(){a.rail.active=!1;a.rail.drag||a.hideCursor()}),a.opt.sensitiverail&&(a.bind(a.railh,"click",function(b){a.doRailClick(b,!1,!0)}),a.bind(a.railh,"dblclick",function(b){a.doRailClick(b,!0,!0)}),a.bind(a.cursorh,"click",function(b){a.cancelEvent(b)}),a.bind(a.cursorh,"dblclick",function(b){a.cancelEvent(b)})));e.cantouch||a.opt.touchbehavior?(a.bind(e.hasmousecapture?a.win:document,"mouseup",a.ontouchend),a.bind(document,"mousemove",
a.ontouchmove),a.onclick&&a.bind(document,"click",a.onclick),a.opt.cursordragontouch?(a.bind(a.cursor,"mousedown",a.onmousedown),a.bind(a.cursor,"mouseup",a.onmouseup),a.cursorh&&a.bind(a.cursorh,"mousedown",function(b){a.onmousedown(b,!0)}),a.cursorh&&a.bind(a.cursorh,"mouseup",a.onmouseup)):(a.bind(a.rail,"mousedown",function(a){a.preventDefault()}),a.railh&&a.bind(a.railh,"mousedown",function(a){a.preventDefault()}))):(a.bind(e.hasmousecapture?a.win:document,"mouseup",a.onmouseup),a.bind(document,
"mousemove",a.onmousemove),a.onclick&&a.bind(document,"click",a.onclick),a.bind(a.cursor,"mousedown",a.onmousedown),a.bind(a.cursor,"mouseup",a.onmouseup),a.railh&&(a.bind(a.cursorh,"mousedown",function(b){a.onmousedown(b,!0)}),a.bind(a.cursorh,"mouseup",a.onmouseup)),!a.ispage&&a.opt.enablescrollonselection&&(a.bind(a.win[0],"mousedown",a.onselectionstart),a.bind(document,"mouseup",a.onselectionend),a.bind(a.cursor,"mouseup",a.onselectionend),a.cursorh&&a.bind(a.cursorh,"mouseup",a.onselectionend),
a.bind(document,"mousemove",a.onselectiondrag)),a.zoom&&(a.jqbind(a.zoom,"mouseenter",function(){a.canshowonmouseevent&&a.showCursor();a.rail.active=!0}),a.jqbind(a.zoom,"mouseleave",function(){a.rail.active=!1;a.rail.drag||a.hideCursor()})));a.opt.enablemousewheel&&(a.isiframe||a.mousewheel(e.isie&&a.ispage?document:a.win,a.onmousewheel),a.mousewheel(a.rail,a.onmousewheel),a.railh&&a.mousewheel(a.railh,a.onmousewheelhr));a.ispage||e.cantouch||/HTML|^BODY/.test(a.win[0].nodeName)||(a.win.attr("tabindex")||
a.win.attr({tabindex:O++}),a.jqbind(a.win,"focus",function(b){B=a.getTarget(b).id||!0;a.hasfocus=!0;a.canshowonmouseevent&&a.noticeCursor()}),a.jqbind(a.win,"blur",function(b){B=!1;a.hasfocus=!1}),a.jqbind(a.win,"mouseenter",function(b){F=a.getTarget(b).id||!0;a.hasmousefocus=!0;a.canshowonmouseevent&&a.noticeCursor()}),a.jqbind(a.win,"mouseleave",function(){F=!1;a.hasmousefocus=!1;a.rail.drag||a.hideCursor()}))}a.onkeypress=function(b){if(a.railslocked&&0==a.page.maxh)return!0;b=b?b:window.e;var c=
a.getTarget(b);if(c&&/INPUT|TEXTAREA|SELECT|OPTION/.test(c.nodeName)&&(!c.getAttribute("type")&&!c.type||!/submit|button|cancel/i.tp)||f(c).attr("contenteditable"))return!0;if(a.hasfocus||a.hasmousefocus&&!B||a.ispage&&!B&&!F){c=b.keyCode;if(a.railslocked&&27!=c)return a.cancelEvent(b);var g=b.ctrlKey||!1,d=b.shiftKey||!1,e=!1;switch(c){case 38:case 63233:a.doScrollBy(72);e=!0;break;case 40:case 63235:a.doScrollBy(-72);e=!0;break;case 37:case 63232:a.railh&&(g?a.doScrollLeft(0):a.doScrollLeftBy(72),
e=!0);break;case 39:case 63234:a.railh&&(g?a.doScrollLeft(a.page.maxw):a.doScrollLeftBy(-72),e=!0);break;case 33:case 63276:a.doScrollBy(a.view.h);e=!0;break;case 34:case 63277:a.doScrollBy(-a.view.h);e=!0;break;case 36:case 63273:a.railh&&g?a.doScrollPos(0,0):a.doScrollTo(0);e=!0;break;case 35:case 63275:a.railh&&g?a.doScrollPos(a.page.maxw,a.page.maxh):a.doScrollTo(a.page.maxh);e=!0;break;case 32:a.opt.spacebarenabled&&(d?a.doScrollBy(a.view.h):a.doScrollBy(-a.view.h),e=!0);break;case 27:a.zoomactive&&
(a.doZoom(),e=!0)}if(e)return a.cancelEvent(b)}};a.opt.enablekeyboard&&a.bind(document,e.isopera&&!e.isopera12?"keypress":"keydown",a.onkeypress);a.bind(document,"keydown",function(b){b.ctrlKey&&(a.wheelprevented=!0)});a.bind(document,"keyup",function(b){b.ctrlKey||(a.wheelprevented=!1)});a.bind(window,"blur",function(b){a.wheelprevented=!1});a.bind(window,"resize",a.lazyResize);a.bind(window,"orientationchange",a.lazyResize);a.bind(window,"load",a.lazyResize);if(e.ischrome&&!a.ispage&&!a.haswrapper){var t=
a.win.attr("style"),m=parseFloat(a.win.css("width"))+1;a.win.css("width",m);a.synched("chromefix",function(){a.win.attr("style",t)})}a.onAttributeChange=function(b){a.lazyResize(a.isieold?250:30)};a.isie11||!1===x||(a.observerbody=new x(function(b){b.forEach(function(b){if("attributes"==b.type)return f("body").hasClass("modal-open")&&f("body").hasClass("modal-dialog")&&!f.contains(f(".modal-dialog")[0],a.doc[0])?a.hide():a.show()});if(document.body.scrollHeight!=a.page.maxh)return a.lazyResize(30)}),
a.observerbody.observe(document.body,{childList:!0,subtree:!0,characterData:!1,attributes:!0,attributeFilter:["class"]}));a.ispage||a.haswrapper||(!1!==x?(a.observer=new x(function(b){b.forEach(a.onAttributeChange)}),a.observer.observe(a.win[0],{childList:!0,characterData:!1,attributes:!0,subtree:!1}),a.observerremover=new x(function(b){b.forEach(function(b){if(0<b.removedNodes.length)for(var c in b.removedNodes)if(a&&b.removedNodes[c]==a.win[0])return a.remove()})}),a.observerremover.observe(a.win[0].parentNode,
{childList:!0,characterData:!1,attributes:!1,subtree:!1})):(a.bind(a.win,e.isie&&!e.isie9?"propertychange":"DOMAttrModified",a.onAttributeChange),e.isie9&&a.win[0].attachEvent("onpropertychange",a.onAttributeChange),a.bind(a.win,"DOMNodeRemoved",function(b){b.target==a.win[0]&&a.remove()})));!a.ispage&&a.opt.boxzoom&&a.bind(window,"resize",a.resizeZoom);a.istextarea&&(a.bind(a.win,"keydown",a.lazyResize),a.bind(a.win,"mouseup",a.lazyResize));a.lazyResize(30)}if("IFRAME"==this.doc[0].nodeName){var N=
function(){a.iframexd=!1;var c;try{c="contentDocument"in this?this.contentDocument:this.contentWindow.document}catch(g){a.iframexd=!0,c=!1}if(a.iframexd)return"console"in window&&console.log("NiceScroll error: policy restriced iframe"),!0;a.forcescreen=!0;a.isiframe&&(a.iframe={doc:f(c),html:a.doc.contents().find("html")[0],body:a.doc.contents().find("body")[0]},a.getContentSize=function(){return{w:Math.max(a.iframe.html.scrollWidth,a.iframe.body.scrollWidth),h:Math.max(a.iframe.html.scrollHeight,
a.iframe.body.scrollHeight)}},a.docscroll=f(a.iframe.body));if(!e.isios&&a.opt.iframeautoresize&&!a.isiframe){a.win.scrollTop(0);a.doc.height("");var d=Math.max(c.getElementsByTagName("html")[0].scrollHeight,c.body.scrollHeight);a.doc.height(d)}a.lazyResize(30);e.isie7&&a.css(f(a.iframe.html),b);a.css(f(a.iframe.body),b);e.isios&&a.haswrapper&&a.css(f(c.body),{"-webkit-transform":"translate3d(0,0,0)"});"contentWindow"in this?a.bind(this.contentWindow,"scroll",a.onscroll):a.bind(c,"scroll",a.onscroll);
a.opt.enablemousewheel&&a.mousewheel(c,a.onmousewheel);a.opt.enablekeyboard&&a.bind(c,e.isopera?"keypress":"keydown",a.onkeypress);if(e.cantouch||a.opt.touchbehavior)a.bind(c,"mousedown",a.ontouchstart),a.bind(c,"mousemove",function(b){return a.ontouchmove(b,!0)}),a.opt.grabcursorenabled&&e.cursorgrabvalue&&a.css(f(c.body),{cursor:e.cursorgrabvalue});a.bind(c,"mouseup",a.ontouchend);a.zoom&&(a.opt.dblclickzoom&&a.bind(c,"dblclick",a.doZoom),a.ongesturezoom&&a.bind(c,"gestureend",a.ongesturezoom))};
this.doc[0].readyState&&"complete"==this.doc[0].readyState&&setTimeout(function(){N.call(a.doc[0],!1)},500);a.bind(this.doc,"load",N)}};this.showCursor=function(b,c){a.cursortimeout&&(clearTimeout(a.cursortimeout),a.cursortimeout=0);if(a.rail){a.autohidedom&&(a.autohidedom.stop().css({opacity:a.opt.cursoropacitymax}),a.cursoractive=!0);a.rail.drag&&1==a.rail.drag.pt||(void 0!==b&&!1!==b&&(a.scroll.y=Math.round(1*b/a.scrollratio.y)),void 0!==c&&(a.scroll.x=Math.round(1*c/a.scrollratio.x)));a.cursor.css({height:a.cursorheight,
top:a.scroll.y});if(a.cursorh){var d=a.hasreversehr?a.scrollvaluemaxw-a.scroll.x:a.scroll.x;!a.rail.align&&a.rail.visibility?a.cursorh.css({width:a.cursorwidth,left:d+a.rail.width}):a.cursorh.css({width:a.cursorwidth,left:d});a.cursoractive=!0}a.zoom&&a.zoom.stop().css({opacity:a.opt.cursoropacitymax})}};this.hideCursor=function(b){a.cursortimeout||!a.rail||!a.autohidedom||a.hasmousefocus&&"leave"==a.opt.autohidemode||(a.cursortimeout=setTimeout(function(){a.rail.active&&a.showonmouseevent||(a.autohidedom.stop().animate({opacity:a.opt.cursoropacitymin}),
a.zoom&&a.zoom.stop().animate({opacity:a.opt.cursoropacitymin}),a.cursoractive=!1);a.cursortimeout=0},b||a.opt.hidecursordelay))};this.noticeCursor=function(b,c,d){a.showCursor(c,d);a.rail.active||a.hideCursor(b)};this.getContentSize=a.ispage?function(){return{w:Math.max(document.body.scrollWidth,document.documentElement.scrollWidth),h:Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}}:a.haswrapper?function(){return{w:a.doc.outerWidth()+parseInt(a.win.css("paddingLeft"))+
parseInt(a.win.css("paddingRight")),h:a.doc.outerHeight()+parseInt(a.win.css("paddingTop"))+parseInt(a.win.css("paddingBottom"))}}:function(){return{w:a.docscroll[0].scrollWidth,h:a.docscroll[0].scrollHeight}};this.onResize=function(b,c){if(!a||!a.win)return!1;if(!a.haswrapper&&!a.ispage){if("none"==a.win.css("display"))return a.visibility&&a.hideRail().hideRailHr(),!1;a.hidden||a.visibility||a.showRail().showRailHr()}var d=a.page.maxh,e=a.page.maxw,f=a.view.h,k=a.view.w;a.view={w:a.ispage?a.win.width():
parseInt(a.win[0].clientWidth),h:a.ispage?a.win.height():parseInt(a.win[0].clientHeight)};a.page=c?c:a.getContentSize();a.page.maxh=Math.max(0,a.page.h-a.view.h);a.page.maxw=Math.max(0,a.page.w-a.view.w);if(a.page.maxh==d&&a.page.maxw==e&&a.view.w==k&&a.view.h==f){if(a.ispage)return a;d=a.win.offset();if(a.lastposition&&(e=a.lastposition,e.top==d.top&&e.left==d.left))return a;a.lastposition=d}0==a.page.maxh?(a.hideRail(),a.scrollvaluemax=0,a.scroll.y=0,a.scrollratio.y=0,a.cursorheight=0,a.setScrollTop(0),
a.rail&&(a.rail.scrollable=!1)):(a.page.maxh-=a.opt.railpadding.top+a.opt.railpadding.bottom,a.rail.scrollable=!0);0==a.page.maxw?(a.hideRailHr(),a.scrollvaluemaxw=0,a.scroll.x=0,a.scrollratio.x=0,a.cursorwidth=0,a.setScrollLeft(0),a.railh&&(a.railh.scrollable=!1)):(a.page.maxw-=a.opt.railpadding.left+a.opt.railpadding.right,a.railh&&(a.railh.scrollable=a.opt.horizrailenabled));a.railslocked=a.locked||0==a.page.maxh&&0==a.page.maxw;if(a.railslocked)return a.ispage||a.updateScrollBar(a.view),!1;a.hidden||
a.visibility?!a.railh||a.hidden||a.railh.visibility||a.showRailHr():a.showRail().showRailHr();a.istextarea&&a.win.css("resize")&&"none"!=a.win.css("resize")&&(a.view.h-=20);a.cursorheight=Math.min(a.view.h,Math.round(a.view.h/a.page.h*a.view.h));a.cursorheight=a.opt.cursorfixedheight?a.opt.cursorfixedheight:Math.max(a.opt.cursorminheight,a.cursorheight);a.cursorwidth=Math.min(a.view.w,Math.round(a.view.w/a.page.w*a.view.w));a.cursorwidth=a.opt.cursorfixedheight?a.opt.cursorfixedheight:Math.max(a.opt.cursorminheight,
a.cursorwidth);a.scrollvaluemax=a.view.h-a.cursorheight-a.cursor.hborder-(a.opt.railpadding.top+a.opt.railpadding.bottom);a.railh&&(a.railh.width=0<a.page.maxh?a.view.w-a.rail.width:a.view.w,a.scrollvaluemaxw=a.railh.width-a.cursorwidth-a.cursorh.wborder-(a.opt.railpadding.left+a.opt.railpadding.right));a.ispage||a.updateScrollBar(a.view);a.scrollratio={x:a.page.maxw/a.scrollvaluemaxw,y:a.page.maxh/a.scrollvaluemax};a.getScrollTop()>a.page.maxh?a.doScrollTop(a.page.maxh):(a.scroll.y=Math.round(a.getScrollTop()*
(1/a.scrollratio.y)),a.scroll.x=Math.round(a.getScrollLeft()*(1/a.scrollratio.x)),a.cursoractive&&a.noticeCursor());a.scroll.y&&0==a.getScrollTop()&&a.doScrollTo(Math.floor(a.scroll.y*a.scrollratio.y));return a};this.resize=a.onResize;this.hlazyresize=0;this.lazyResize=function(b){a.haswrapper||a.hide();a.hlazyresize&&clearTimeout(a.hlazyresize);a.hlazyresize=setTimeout(function(){a&&a.show().resize()},240);return a};this.jqbind=function(b,c,d){a.events.push({e:b,n:c,f:d,q:!0});f(b).bind(c,d)};this.mousewheel=
function(b,c,d){b="jquery"in b?b[0]:b;if("onwheel"in document.createElement("div"))a._bind(b,"wheel",c,d||!1);else{var e=void 0!==document.onmousewheel?"mousewheel":"DOMMouseScroll";q(b,e,c,d||!1);"DOMMouseScroll"==e&&q(b,"MozMousePixelScroll",c,d||!1)}};e.haseventlistener?(this.bind=function(b,c,d,e){a._bind("jquery"in b?b[0]:b,c,d,e||!1)},this._bind=function(b,c,d,e){a.events.push({e:b,n:c,f:d,b:e,q:!1});b.addEventListener(c,d,e||!1)},this.cancelEvent=function(a){if(!a)return!1;a=a.original?a.original:
a;a.cancelable&&a.preventDefault();a.stopPropagation();a.preventManipulation&&a.preventManipulation();return!1},this.stopPropagation=function(a){if(!a)return!1;a=a.original?a.original:a;a.stopPropagation();return!1},this._unbind=function(a,c,d,e){a.removeEventListener(c,d,e)}):(this.bind=function(b,c,d,e){var f="jquery"in b?b[0]:b;a._bind(f,c,function(b){(b=b||window.event||!1)&&b.srcElement&&(b.target=b.srcElement);"pageY"in b||(b.pageX=b.clientX+document.documentElement.scrollLeft,b.pageY=b.clientY+
document.documentElement.scrollTop);return!1===d.call(f,b)||!1===e?a.cancelEvent(b):!0})},this._bind=function(b,c,d,e){a.events.push({e:b,n:c,f:d,b:e,q:!1});b.attachEvent?b.attachEvent("on"+c,d):b["on"+c]=d},this.cancelEvent=function(a){a=window.event||!1;if(!a)return!1;a.cancelBubble=!0;a.cancel=!0;return a.returnValue=!1},this.stopPropagation=function(a){a=window.event||!1;if(!a)return!1;a.cancelBubble=!0;return!1},this._unbind=function(a,c,d,e){a.detachEvent?a.detachEvent("on"+c,d):a["on"+c]=!1});
this.unbindAll=function(){for(var b=0;b<a.events.length;b++){var c=a.events[b];c.q?c.e.unbind(c.n,c.f):a._unbind(c.e,c.n,c.f,c.b)}};this.showRail=function(){0==a.page.maxh||!a.ispage&&"none"==a.win.css("display")||(a.visibility=!0,a.rail.visibility=!0,a.rail.css("display","block"));return a};this.showRailHr=function(){if(!a.railh)return a;0==a.page.maxw||!a.ispage&&"none"==a.win.css("display")||(a.railh.visibility=!0,a.railh.css("display","block"));return a};this.hideRail=function(){a.visibility=
!1;a.rail.visibility=!1;a.rail.css("display","none");return a};this.hideRailHr=function(){if(!a.railh)return a;a.railh.visibility=!1;a.railh.css("display","none");return a};this.show=function(){a.hidden=!1;a.railslocked=!1;return a.showRail().showRailHr()};this.hide=function(){a.hidden=!0;a.railslocked=!0;return a.hideRail().hideRailHr()};this.toggle=function(){return a.hidden?a.show():a.hide()};this.remove=function(){a.stop();a.cursortimeout&&clearTimeout(a.cursortimeout);for(var b in a.delaylist)a.delaylist[b]&&
w(a.delaylist[b].h);a.doZoomOut();a.unbindAll();e.isie9&&a.win[0].detachEvent("onpropertychange",a.onAttributeChange);!1!==a.observer&&a.observer.disconnect();!1!==a.observerremover&&a.observerremover.disconnect();!1!==a.observerbody&&a.observerbody.disconnect();a.events=null;a.cursor&&a.cursor.remove();a.cursorh&&a.cursorh.remove();a.rail&&a.rail.remove();a.railh&&a.railh.remove();a.zoom&&a.zoom.remove();for(b=0;b<a.saved.css.length;b++){var c=a.saved.css[b];c[0].css(c[1],void 0===c[2]?"":c[2])}a.saved=
!1;a.me.data("__nicescroll","");var d=f.nicescroll;d.each(function(b){if(this&&this.id===a.id){delete d[b];for(var c=++b;c<d.length;c++,b++)d[b]=d[c];d.length--;d.length&&delete d[d.length]}});for(var k in a)a[k]=null,delete a[k];a=null};this.scrollstart=function(b){this.onscrollstart=b;return a};this.scrollend=function(b){this.onscrollend=b;return a};this.scrollcancel=function(b){this.onscrollcancel=b;return a};this.zoomin=function(b){this.onzoomin=b;return a};this.zoomout=function(b){this.onzoomout=
b;return a};this.isScrollable=function(a){a=a.target?a.target:a;if("OPTION"==a.nodeName)return!0;for(;a&&1==a.nodeType&&!/^BODY|HTML/.test(a.nodeName);){var c=f(a),c=c.css("overflowY")||c.css("overflowX")||c.css("overflow")||"";if(/scroll|auto/.test(c))return a.clientHeight!=a.scrollHeight;a=a.parentNode?a.parentNode:!1}return!1};this.getViewport=function(a){for(a=a&&a.parentNode?a.parentNode:!1;a&&1==a.nodeType&&!/^BODY|HTML/.test(a.nodeName);){var c=f(a);if(/fixed|absolute/.test(c.css("position")))return c;
var d=c.css("overflowY")||c.css("overflowX")||c.css("overflow")||"";if(/scroll|auto/.test(d)&&a.clientHeight!=a.scrollHeight||0<c.getNiceScroll().length)return c;a=a.parentNode?a.parentNode:!1}return!1};this.triggerScrollEnd=function(){if(a.onscrollend){var b=a.getScrollLeft(),c=a.getScrollTop();a.onscrollend.call(a,{type:"scrollend",current:{x:b,y:c},end:{x:b,y:c}})}};this.onmousewheel=function(b){if(!a.wheelprevented){if(a.railslocked)return a.debounced("checkunlock",a.resize,250),!0;if(a.rail.drag)return a.cancelEvent(b);
"auto"==a.opt.oneaxismousemode&&0!=b.deltaX&&(a.opt.oneaxismousemode=!1);if(a.opt.oneaxismousemode&&0==b.deltaX&&!a.rail.scrollable)return a.railh&&a.railh.scrollable?a.onmousewheelhr(b):!0;var c=+new Date,d=!1;a.opt.preservenativescrolling&&a.checkarea+600<c&&(a.nativescrollingarea=a.isScrollable(b),d=!0);a.checkarea=c;if(a.nativescrollingarea)return!0;if(b=t(b,!1,d))a.checkarea=0;return b}};this.onmousewheelhr=function(b){if(!a.wheelprevented){if(a.railslocked||!a.railh.scrollable)return!0;if(a.rail.drag)return a.cancelEvent(b);
var c=+new Date,d=!1;a.opt.preservenativescrolling&&a.checkarea+600<c&&(a.nativescrollingarea=a.isScrollable(b),d=!0);a.checkarea=c;return a.nativescrollingarea?!0:a.railslocked?a.cancelEvent(b):t(b,!0,d)}};this.stop=function(){a.cancelScroll();a.scrollmon&&a.scrollmon.stop();a.cursorfreezed=!1;a.scroll.y=Math.round(a.getScrollTop()*(1/a.scrollratio.y));a.noticeCursor();return a};this.getTransitionSpeed=function(b){b=Math.min(Math.round(10*a.opt.scrollspeed),Math.round(b/20*a.opt.scrollspeed));return 20<
b?b:0};a.opt.smoothscroll?a.ishwscroll&&e.hastransition&&a.opt.usetransition&&a.opt.smoothscroll?(this.prepareTransition=function(b,c){var d=c?20<b?b:0:a.getTransitionSpeed(b),f=d?e.prefixstyle+"transform "+d+"ms ease-out":"";a.lasttransitionstyle&&a.lasttransitionstyle==f||(a.lasttransitionstyle=f,a.doc.css(e.transitionstyle,f));return d},this.doScrollLeft=function(b,c){var d=a.scrollrunning?a.newscrolly:a.getScrollTop();a.doScrollPos(b,d,c)},this.doScrollTop=function(b,c){var d=a.scrollrunning?
a.newscrollx:a.getScrollLeft();a.doScrollPos(d,b,c)},this.doScrollPos=function(b,c,d){var f=a.getScrollTop(),k=a.getScrollLeft();(0>(a.newscrolly-f)*(c-f)||0>(a.newscrollx-k)*(b-k))&&a.cancelScroll();0==a.opt.bouncescroll&&(0>c?c=0:c>a.page.maxh&&(c=a.page.maxh),0>b?b=0:b>a.page.maxw&&(b=a.page.maxw));if(a.scrollrunning&&b==a.newscrollx&&c==a.newscrolly)return!1;a.newscrolly=c;a.newscrollx=b;a.newscrollspeed=d||!1;if(a.timer)return!1;a.timer=setTimeout(function(){var d=a.getScrollTop(),f=a.getScrollLeft(),
k=Math.round(Math.sqrt(Math.pow(b-f,2)+Math.pow(c-d,2))),k=a.newscrollspeed&&1<a.newscrollspeed?a.newscrollspeed:a.getTransitionSpeed(k);a.newscrollspeed&&1>=a.newscrollspeed&&(k*=a.newscrollspeed);a.prepareTransition(k,!0);a.timerscroll&&a.timerscroll.tm&&clearInterval(a.timerscroll.tm);0<k&&(!a.scrollrunning&&a.onscrollstart&&a.onscrollstart.call(a,{type:"scrollstart",current:{x:f,y:d},request:{x:b,y:c},end:{x:a.newscrollx,y:a.newscrolly},speed:k}),e.transitionend?a.scrollendtrapped||(a.scrollendtrapped=
!0,a.bind(a.doc,e.transitionend,a.onScrollTransitionEnd,!1)):(a.scrollendtrapped&&clearTimeout(a.scrollendtrapped),a.scrollendtrapped=setTimeout(a.onScrollTransitionEnd,k)),a.timerscroll={bz:new D(d,a.newscrolly,k,0,0,.58,1),bh:new D(f,a.newscrollx,k,0,0,.58,1)},a.cursorfreezed||(a.timerscroll.tm=setInterval(function(){a.showCursor(a.getScrollTop(),a.getScrollLeft())},60)));a.synched("doScroll-set",function(){a.timer=0;a.scrollendtrapped&&(a.scrollrunning=!0);a.setScrollTop(a.newscrolly);a.setScrollLeft(a.newscrollx);
if(!a.scrollendtrapped)a.onScrollTransitionEnd()})},50)},this.cancelScroll=function(){if(!a.scrollendtrapped)return!0;var b=a.getScrollTop(),c=a.getScrollLeft();a.scrollrunning=!1;e.transitionend||clearTimeout(e.transitionend);a.scrollendtrapped=!1;a._unbind(a.doc[0],e.transitionend,a.onScrollTransitionEnd);a.prepareTransition(0);a.setScrollTop(b);a.railh&&a.setScrollLeft(c);a.timerscroll&&a.timerscroll.tm&&clearInterval(a.timerscroll.tm);a.timerscroll=!1;a.cursorfreezed=!1;a.showCursor(b,c);return a},
this.onScrollTransitionEnd=function(){a.scrollendtrapped&&a._unbind(a.doc[0],e.transitionend,a.onScrollTransitionEnd);a.scrollendtrapped=!1;a.prepareTransition(0);a.timerscroll&&a.timerscroll.tm&&clearInterval(a.timerscroll.tm);a.timerscroll=!1;var b=a.getScrollTop(),c=a.getScrollLeft();a.setScrollTop(b);a.railh&&a.setScrollLeft(c);a.noticeCursor(!1,b,c);a.cursorfreezed=!1;0>b?b=0:b>a.page.maxh&&(b=a.page.maxh);0>c?c=0:c>a.page.maxw&&(c=a.page.maxw);if(b!=a.newscrolly||c!=a.newscrollx)return a.doScrollPos(c,
b,a.opt.snapbackspeed);a.onscrollend&&a.scrollrunning&&a.triggerScrollEnd();a.scrollrunning=!1}):(this.doScrollLeft=function(b,c){var d=a.scrollrunning?a.newscrolly:a.getScrollTop();a.doScrollPos(b,d,c)},this.doScrollTop=function(b,c){var d=a.scrollrunning?a.newscrollx:a.getScrollLeft();a.doScrollPos(d,b,c)},this.doScrollPos=function(b,c,d){function e(){if(a.cancelAnimationFrame)return!0;a.scrollrunning=!0;if(p=1-p)return a.timer=v(e)||1;var b=0,c,d,f=d=a.getScrollTop();if(a.dst.ay){f=a.bzscroll?
a.dst.py+a.bzscroll.getNow()*a.dst.ay:a.newscrolly;c=f-d;if(0>c&&f<a.newscrolly||0<c&&f>a.newscrolly)f=a.newscrolly;a.setScrollTop(f);f==a.newscrolly&&(b=1)}else b=1;d=c=a.getScrollLeft();if(a.dst.ax){d=a.bzscroll?a.dst.px+a.bzscroll.getNow()*a.dst.ax:a.newscrollx;c=d-c;if(0>c&&d<a.newscrollx||0<c&&d>a.newscrollx)d=a.newscrollx;a.setScrollLeft(d);d==a.newscrollx&&(b+=1)}else b+=1;2==b?(a.timer=0,a.cursorfreezed=!1,a.bzscroll=!1,a.scrollrunning=!1,0>f?f=0:f>a.page.maxh&&(f=Math.max(0,a.page.maxh)),
0>d?d=0:d>a.page.maxw&&(d=a.page.maxw),d!=a.newscrollx||f!=a.newscrolly?a.doScrollPos(d,f):a.onscrollend&&a.triggerScrollEnd()):a.timer=v(e)||1}c=void 0===c||!1===c?a.getScrollTop(!0):c;if(a.timer&&a.newscrolly==c&&a.newscrollx==b)return!0;a.timer&&w(a.timer);a.timer=0;var f=a.getScrollTop(),k=a.getScrollLeft();(0>(a.newscrolly-f)*(c-f)||0>(a.newscrollx-k)*(b-k))&&a.cancelScroll();a.newscrolly=c;a.newscrollx=b;a.bouncescroll&&a.rail.visibility||(0>a.newscrolly?a.newscrolly=0:a.newscrolly>a.page.maxh&&
(a.newscrolly=a.page.maxh));a.bouncescroll&&a.railh.visibility||(0>a.newscrollx?a.newscrollx=0:a.newscrollx>a.page.maxw&&(a.newscrollx=a.page.maxw));a.dst={};a.dst.x=b-k;a.dst.y=c-f;a.dst.px=k;a.dst.py=f;var h=Math.round(Math.sqrt(Math.pow(a.dst.x,2)+Math.pow(a.dst.y,2)));a.dst.ax=a.dst.x/h;a.dst.ay=a.dst.y/h;var l=0,n=h;0==a.dst.x?(l=f,n=c,a.dst.ay=1,a.dst.py=0):0==a.dst.y&&(l=k,n=b,a.dst.ax=1,a.dst.px=0);h=a.getTransitionSpeed(h);d&&1>=d&&(h*=d);a.bzscroll=0<h?a.bzscroll?a.bzscroll.update(n,h):
new D(l,n,h,0,1,0,1):!1;if(!a.timer){(f==a.page.maxh&&c>=a.page.maxh||k==a.page.maxw&&b>=a.page.maxw)&&a.checkContentSize();var p=1;a.cancelAnimationFrame=!1;a.timer=1;a.onscrollstart&&!a.scrollrunning&&a.onscrollstart.call(a,{type:"scrollstart",current:{x:k,y:f},request:{x:b,y:c},end:{x:a.newscrollx,y:a.newscrolly},speed:h});e();(f==a.page.maxh&&c>=f||k==a.page.maxw&&b>=k)&&a.checkContentSize();a.noticeCursor()}},this.cancelScroll=function(){a.timer&&w(a.timer);a.timer=0;a.bzscroll=!1;a.scrollrunning=
!1;return a}):(this.doScrollLeft=function(b,c){var d=a.getScrollTop();a.doScrollPos(b,d,c)},this.doScrollTop=function(b,c){var d=a.getScrollLeft();a.doScrollPos(d,b,c)},this.doScrollPos=function(b,c,d){var e=b>a.page.maxw?a.page.maxw:b;0>e&&(e=0);var f=c>a.page.maxh?a.page.maxh:c;0>f&&(f=0);a.synched("scroll",function(){a.setScrollTop(f);a.setScrollLeft(e)})},this.cancelScroll=function(){});this.doScrollBy=function(b,c){var d=0,d=c?Math.floor((a.scroll.y-b)*a.scrollratio.y):(a.timer?a.newscrolly:
a.getScrollTop(!0))-b;if(a.bouncescroll){var e=Math.round(a.view.h/2);d<-e?d=-e:d>a.page.maxh+e&&(d=a.page.maxh+e)}a.cursorfreezed=!1;e=a.getScrollTop(!0);if(0>d&&0>=e)return a.noticeCursor();if(d>a.page.maxh&&e>=a.page.maxh)return a.checkContentSize(),a.noticeCursor();a.doScrollTop(d)};this.doScrollLeftBy=function(b,c){var d=0,d=c?Math.floor((a.scroll.x-b)*a.scrollratio.x):(a.timer?a.newscrollx:a.getScrollLeft(!0))-b;if(a.bouncescroll){var e=Math.round(a.view.w/2);d<-e?d=-e:d>a.page.maxw+e&&(d=a.page.maxw+
e)}a.cursorfreezed=!1;e=a.getScrollLeft(!0);if(0>d&&0>=e||d>a.page.maxw&&e>=a.page.maxw)return a.noticeCursor();a.doScrollLeft(d)};this.doScrollTo=function(b,c){a.cursorfreezed=!1;a.doScrollTop(b)};this.checkContentSize=function(){var b=a.getContentSize();b.h==a.page.h&&b.w==a.page.w||a.resize(!1,b)};a.onscroll=function(b){a.rail.drag||a.cursorfreezed||a.synched("scroll",function(){a.scroll.y=Math.round(a.getScrollTop()*(1/a.scrollratio.y));a.railh&&(a.scroll.x=Math.round(a.getScrollLeft()*(1/a.scrollratio.x)));
a.noticeCursor()})};a.bind(a.docscroll,"scroll",a.onscroll);this.doZoomIn=function(b){if(!a.zoomactive){a.zoomactive=!0;a.zoomrestore={style:{}};var c="position top left zIndex backgroundColor marginTop marginBottom marginLeft marginRight".split(" "),d=a.win[0].style,k;for(k in c){var h=c[k];a.zoomrestore.style[h]=void 0!==d[h]?d[h]:""}a.zoomrestore.style.width=a.win.css("width");a.zoomrestore.style.height=a.win.css("height");a.zoomrestore.padding={w:a.win.outerWidth()-a.win.width(),h:a.win.outerHeight()-
a.win.height()};e.isios4&&(a.zoomrestore.scrollTop=f(window).scrollTop(),f(window).scrollTop(0));a.win.css({position:e.isios4?"absolute":"fixed",top:0,left:0,zIndex:A+100,margin:0});c=a.win.css("backgroundColor");(""==c||/transparent|rgba\(0, 0, 0, 0\)|rgba\(0,0,0,0\)/.test(c))&&a.win.css("backgroundColor","#fff");a.rail.css({zIndex:A+101});a.zoom.css({zIndex:A+102});a.zoom.css("backgroundPosition","0px -18px");a.resizeZoom();a.onzoomin&&a.onzoomin.call(a);return a.cancelEvent(b)}};this.doZoomOut=
function(b){if(a.zoomactive)return a.zoomactive=!1,a.win.css("margin",""),a.win.css(a.zoomrestore.style),e.isios4&&f(window).scrollTop(a.zoomrestore.scrollTop),a.rail.css({"z-index":a.zindex}),a.zoom.css({"z-index":a.zindex}),a.zoomrestore=!1,a.zoom.css("backgroundPosition","0px 0px"),a.onResize(),a.onzoomout&&a.onzoomout.call(a),a.cancelEvent(b)};this.doZoom=function(b){return a.zoomactive?a.doZoomOut(b):a.doZoomIn(b)};this.resizeZoom=function(){if(a.zoomactive){var b=a.getScrollTop();a.win.css({width:f(window).width()-
a.zoomrestore.padding.w+"px",height:f(window).height()-a.zoomrestore.padding.h+"px"});a.onResize();a.setScrollTop(Math.min(a.page.maxh,b))}};this.init();f.nicescroll.push(this)},M=function(f){var c=this;this.nc=f;this.steptime=this.lasttime=this.speedy=this.speedx=this.lasty=this.lastx=0;this.snapy=this.snapx=!1;this.demuly=this.demulx=0;this.lastscrolly=this.lastscrollx=-1;this.timer=this.chky=this.chkx=0;this.time=function(){return+new Date};this.reset=function(f,h){c.stop();var d=c.time();c.steptime=
0;c.lasttime=d;c.speedx=0;c.speedy=0;c.lastx=f;c.lasty=h;c.lastscrollx=-1;c.lastscrolly=-1};this.update=function(f,h){var d=c.time();c.steptime=d-c.lasttime;c.lasttime=d;var d=h-c.lasty,q=f-c.lastx,t=c.nc.getScrollTop(),a=c.nc.getScrollLeft(),t=t+d,a=a+q;c.snapx=0>a||a>c.nc.page.maxw;c.snapy=0>t||t>c.nc.page.maxh;c.speedx=q;c.speedy=d;c.lastx=f;c.lasty=h};this.stop=function(){c.nc.unsynched("domomentum2d");c.timer&&clearTimeout(c.timer);c.timer=0;c.lastscrollx=-1;c.lastscrolly=-1};this.doSnapy=function(f,
h){var d=!1;0>h?(h=0,d=!0):h>c.nc.page.maxh&&(h=c.nc.page.maxh,d=!0);0>f?(f=0,d=!0):f>c.nc.page.maxw&&(f=c.nc.page.maxw,d=!0);d?c.nc.doScrollPos(f,h,c.nc.opt.snapbackspeed):c.nc.triggerScrollEnd()};this.doMomentum=function(f){var h=c.time(),d=f?h+f:c.lasttime;f=c.nc.getScrollLeft();var q=c.nc.getScrollTop(),t=c.nc.page.maxh,a=c.nc.page.maxw;c.speedx=0<a?Math.min(60,c.speedx):0;c.speedy=0<t?Math.min(60,c.speedy):0;d=d&&60>=h-d;if(0>q||q>t||0>f||f>a)d=!1;f=c.speedx&&d?c.speedx:!1;if(c.speedy&&d&&c.speedy||
f){var r=Math.max(16,c.steptime);50<r&&(f=r/50,c.speedx*=f,c.speedy*=f,r=50);c.demulxy=0;c.lastscrollx=c.nc.getScrollLeft();c.chkx=c.lastscrollx;c.lastscrolly=c.nc.getScrollTop();c.chky=c.lastscrolly;var p=c.lastscrollx,e=c.lastscrolly,v=function(){var d=600<c.time()-h?.04:.02;c.speedx&&(p=Math.floor(c.lastscrollx-c.speedx*(1-c.demulxy)),c.lastscrollx=p,0>p||p>a)&&(d=.1);c.speedy&&(e=Math.floor(c.lastscrolly-c.speedy*(1-c.demulxy)),c.lastscrolly=e,0>e||e>t)&&(d=.1);c.demulxy=Math.min(1,c.demulxy+
d);c.nc.synched("domomentum2d",function(){c.speedx&&(c.nc.getScrollLeft(),c.chkx=p,c.nc.setScrollLeft(p));c.speedy&&(c.nc.getScrollTop(),c.chky=e,c.nc.setScrollTop(e));c.timer||(c.nc.hideCursor(),c.doSnapy(p,e))});1>c.demulxy?c.timer=setTimeout(v,r):(c.stop(),c.nc.hideCursor(),c.doSnapy(p,e))};v()}else c.doSnapy(c.nc.getScrollLeft(),c.nc.getScrollTop())}},y=f.fn.scrollTop;f.cssHooks.pageYOffset={get:function(h,c,k){return(c=f.data(h,"__nicescroll")||!1)&&c.ishwscroll?c.getScrollTop():y.call(h)},set:function(h,
c){var k=f.data(h,"__nicescroll")||!1;k&&k.ishwscroll?k.setScrollTop(parseInt(c)):y.call(h,c);return this}};f.fn.scrollTop=function(h){if(void 0===h){var c=this[0]?f.data(this[0],"__nicescroll")||!1:!1;return c&&c.ishwscroll?c.getScrollTop():y.call(this)}return this.each(function(){var c=f.data(this,"__nicescroll")||!1;c&&c.ishwscroll?c.setScrollTop(parseInt(h)):y.call(f(this),h)})};var z=f.fn.scrollLeft;f.cssHooks.pageXOffset={get:function(h,c,k){return(c=f.data(h,"__nicescroll")||!1)&&c.ishwscroll?
c.getScrollLeft():z.call(h)},set:function(h,c){var k=f.data(h,"__nicescroll")||!1;k&&k.ishwscroll?k.setScrollLeft(parseInt(c)):z.call(h,c);return this}};f.fn.scrollLeft=function(h){if(void 0===h){var c=this[0]?f.data(this[0],"__nicescroll")||!1:!1;return c&&c.ishwscroll?c.getScrollLeft():z.call(this)}return this.each(function(){var c=f.data(this,"__nicescroll")||!1;c&&c.ishwscroll?c.setScrollLeft(parseInt(h)):z.call(f(this),h)})};var E=function(h){var c=this;this.length=0;this.name="nicescrollarray";
this.each=function(d){f.each(c,d);return c};this.push=function(d){c[c.length]=d;c.length++};this.eq=function(d){return c[d]};if(h)for(var k=0;k<h.length;k++){var l=f.data(h[k],"__nicescroll")||!1;l&&(this[this.length]=l,this.length++)}return this};(function(f,c,k){for(var l=0;l<c.length;l++)k(f,c[l])})(E.prototype,"show hide toggle onResize resize remove stop doScrollPos".split(" "),function(f,c){f[c]=function(){var f=arguments;return this.each(function(){this[c].apply(this,f)})}});f.fn.getNiceScroll=
function(h){return void 0===h?new E(this):this[h]&&f.data(this[h],"__nicescroll")||!1};f.expr[":"].nicescroll=function(h){return void 0!==f.data(h,"__nicescroll")};f.fn.niceScroll=function(h,c){void 0!==c||"object"!=typeof h||"jquery"in h||(c=h,h=!1);c=f.extend({},c);var k=new E;void 0===c&&(c={});h&&(c.doc=f(h),c.win=f(this));var l=!("doc"in c);l||"win"in c||(c.win=f(this));this.each(function(){var d=f(this).data("__nicescroll")||!1;d||(c.doc=l?f(this):c.doc,d=new S(c,f(this)),f(this).data("__nicescroll",
d));k.push(d)});return 1==k.length?k[0]:k};window.NiceScroll={getjQuery:function(){return f}};f.nicescroll||(f.nicescroll=new E,f.nicescroll.options=K)});

@ -0,0 +1,474 @@
/*! Copyright (c) 2011 Piotr Rochala (http://rocha.la)
* Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
* and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
*
* Version: 1.3.8
*
*/
(function($) {
$.fn.extend({
slimScroll: function(options) {
var defaults = {
// width in pixels of the visible scroll area
width : 'auto',
// height in pixels of the visible scroll area
height : '250px',
// width in pixels of the scrollbar and rail
size : '7px',
// scrollbar color, accepts any hex/color value
color: '#000',
// scrollbar position - left/right
position : 'right',
// distance in pixels between the side edge and the scrollbar
distance : '1px',
// default scroll position on load - top / bottom / $('selector')
start : 'top',
// sets scrollbar opacity
opacity : .4,
// enables always-on mode for the scrollbar
alwaysVisible : false,
// check if we should hide the scrollbar when user is hovering over
disableFadeOut : false,
// sets visibility of the rail
railVisible : false,
// sets rail color
railColor : '#333',
// sets rail opacity
railOpacity : .2,
// whether we should use jQuery UI Draggable to enable bar dragging
railDraggable : true,
// defautlt CSS class of the slimscroll rail
railClass : 'slimScrollRail',
// defautlt CSS class of the slimscroll bar
barClass : 'slimScrollBar',
// defautlt CSS class of the slimscroll wrapper
wrapperClass : 'slimScrollDiv',
// check if mousewheel should scroll the window if we reach top/bottom
allowPageScroll : false,
// scroll amount applied to each mouse wheel step
wheelStep : 20,
// scroll amount applied when user is using gestures
touchScrollStep : 200,
// sets border radius
borderRadius: '7px',
// sets border radius of the rail
railBorderRadius : '7px'
};
var o = $.extend(defaults, options);
// do it for every element that matches selector
this.each(function(){
var isOverPanel, isOverBar, isDragg, queueHide, touchDif,
barHeight, percentScroll, lastScroll,
divS = '<div></div>',
minBarHeight = 30,
releaseScroll = false;
// used in event handlers and for better minification
var me = $(this);
// ensure we are not binding it again
if (me.parent().hasClass(o.wrapperClass))
{
// start from last bar position
var offset = me.scrollTop();
// find bar and rail
bar = me.siblings('.' + o.barClass);
rail = me.siblings('.' + o.railClass);
getBarHeight();
// check if we should scroll existing instance
if ($.isPlainObject(options))
{
// Pass height: auto to an existing slimscroll object to force a resize after contents have changed
if ( 'height' in options && options.height == 'auto' ) {
me.parent().css('height', 'auto');
me.css('height', 'auto');
var height = me.parent().parent().height();
me.parent().css('height', height);
me.css('height', height);
} else if ('height' in options) {
var h = options.height;
me.parent().css('height', h);
me.css('height', h);
}
if ('scrollTo' in options)
{
// jump to a static point
offset = parseInt(o.scrollTo);
}
else if ('scrollBy' in options)
{
// jump by value pixels
offset += parseInt(o.scrollBy);
}
else if ('destroy' in options)
{
// remove slimscroll elements
bar.remove();
rail.remove();
me.unwrap();
return;
}
// scroll content by the given offset
scrollContent(offset, false, true);
}
return;
}
else if ($.isPlainObject(options))
{
if ('destroy' in options)
{
return;
}
}
// optionally set height to the parent's height
o.height = (o.height == 'auto') ? me.parent().height() : o.height;
// wrap content
var wrapper = $(divS)
.addClass(o.wrapperClass)
.css({
position: 'relative',
overflow: 'hidden',
width: o.width,
height: o.height
});
// update style for the div
me.css({
overflow: 'hidden',
width: o.width,
height: o.height
});
// create scrollbar rail
var rail = $(divS)
.addClass(o.railClass)
.css({
width: o.size,
height: '100%',
position: 'absolute',
top: 0,
display: (o.alwaysVisible && o.railVisible) ? 'block' : 'none',
'border-radius': o.railBorderRadius,
background: o.railColor,
opacity: o.railOpacity,
zIndex: 90
});
// create scrollbar
var bar = $(divS)
.addClass(o.barClass)
.css({
background: o.color,
width: o.size,
position: 'absolute',
top: 0,
opacity: o.opacity,
display: o.alwaysVisible ? 'block' : 'none',
'border-radius' : o.borderRadius,
BorderRadius: o.borderRadius,
MozBorderRadius: o.borderRadius,
WebkitBorderRadius: o.borderRadius,
zIndex: 99
});
// set position
var posCss = (o.position == 'right') ? { right: o.distance } : { left: o.distance };
rail.css(posCss);
bar.css(posCss);
// wrap it
me.wrap(wrapper);
// append to parent div
me.parent().append(bar);
me.parent().append(rail);
// make it draggable and no longer dependent on the jqueryUI
if (o.railDraggable){
bar.bind("mousedown", function(e) {
var $doc = $(document);
isDragg = true;
t = parseFloat(bar.css('top'));
pageY = e.pageY;
$doc.bind("mousemove.slimscroll", function(e){
currTop = t + e.pageY - pageY;
bar.css('top', currTop);
scrollContent(0, bar.position().top, false);// scroll content
});
$doc.bind("mouseup.slimscroll", function(e) {
isDragg = false;hideBar();
$doc.unbind('.slimscroll');
});
return false;
}).bind("selectstart.slimscroll", function(e){
e.stopPropagation();
e.preventDefault();
return false;
});
}
// on rail over
rail.hover(function(){
showBar();
}, function(){
hideBar();
});
// on bar over
bar.hover(function(){
isOverBar = true;
}, function(){
isOverBar = false;
});
// show on parent mouseover
me.hover(function(){
isOverPanel = true;
showBar();
hideBar();
}, function(){
isOverPanel = false;
hideBar();
});
// support for mobile
me.bind('touchstart', function(e,b){
if (e.originalEvent.touches.length)
{
// record where touch started
touchDif = e.originalEvent.touches[0].pageY;
}
});
me.bind('touchmove', function(e){
// prevent scrolling the page if necessary
if(!releaseScroll)
{
e.originalEvent.preventDefault();
}
if (e.originalEvent.touches.length)
{
// see how far user swiped
var diff = (touchDif - e.originalEvent.touches[0].pageY) / o.touchScrollStep;
// scroll content
scrollContent(diff, true);
touchDif = e.originalEvent.touches[0].pageY;
}
});
// set up initial height
getBarHeight();
// check start position
if (o.start === 'bottom')
{
// scroll content to bottom
bar.css({ top: me.outerHeight() - bar.outerHeight() });
scrollContent(0, true);
}
else if (o.start !== 'top')
{
// assume jQuery selector
scrollContent($(o.start).position().top, null, true);
// make sure bar stays hidden
if (!o.alwaysVisible) { bar.hide(); }
}
// attach scroll events
attachWheel(this);
function _onWheel(e)
{
// use mouse wheel only when mouse is over
if (!isOverPanel) { return; }
var e = e || window.event;
var delta = 0;
if (e.wheelDelta) { delta = -e.wheelDelta/120; }
if (e.detail) { delta = e.detail / 3; }
var target = e.target || e.srcTarget || e.srcElement;
if ($(target).closest('.' + o.wrapperClass).is(me.parent())) {
// scroll content
scrollContent(delta, true);
}
// stop window scroll
if (e.preventDefault && !releaseScroll) { e.preventDefault(); }
if (!releaseScroll) { e.returnValue = false; }
}
function scrollContent(y, isWheel, isJump)
{
releaseScroll = false;
var delta = y;
var maxTop = me.outerHeight() - bar.outerHeight();
if (isWheel)
{
// move bar with mouse wheel
delta = parseInt(bar.css('top')) + y * parseInt(o.wheelStep) / 100 * bar.outerHeight();
// move bar, make sure it doesn't go out
delta = Math.min(Math.max(delta, 0), maxTop);
// if scrolling down, make sure a fractional change to the
// scroll position isn't rounded away when the scrollbar's CSS is set
// this flooring of delta would happened automatically when
// bar.css is set below, but we floor here for clarity
delta = (y > 0) ? Math.ceil(delta) : Math.floor(delta);
// scroll the scrollbar
bar.css({ top: delta + 'px' });
}
// calculate actual scroll amount
percentScroll = parseInt(bar.css('top')) / (me.outerHeight() - bar.outerHeight());
delta = percentScroll * (me[0].scrollHeight - me.outerHeight());
if (isJump)
{
delta = y;
var offsetTop = delta / me[0].scrollHeight * me.outerHeight();
offsetTop = Math.min(Math.max(offsetTop, 0), maxTop);
bar.css({ top: offsetTop + 'px' });
}
// scroll content
me.scrollTop(delta);
// fire scrolling event
me.trigger('slimscrolling', ~~delta);
// ensure bar is visible
showBar();
// trigger hide when scroll is stopped
hideBar();
}
function attachWheel(target)
{
if (window.addEventListener)
{
target.addEventListener('DOMMouseScroll', _onWheel, false );
target.addEventListener('mousewheel', _onWheel, false );
}
else
{
document.attachEvent("onmousewheel", _onWheel)
}
}
function getBarHeight()
{
// calculate scrollbar height and make sure it is not too small
barHeight = Math.max((me.outerHeight() / me[0].scrollHeight) * me.outerHeight(), minBarHeight);
bar.css({ height: barHeight + 'px' });
// hide scrollbar if content is not long enough
var display = barHeight == me.outerHeight() ? 'none' : 'block';
bar.css({ display: display });
}
function showBar()
{
// recalculate bar height
getBarHeight();
clearTimeout(queueHide);
// when bar reached top or bottom
if (percentScroll == ~~percentScroll)
{
//release wheel
releaseScroll = o.allowPageScroll;
// publish approporiate event
if (lastScroll != percentScroll)
{
var msg = (~~percentScroll == 0) ? 'top' : 'bottom';
me.trigger('slimscroll', msg);
}
}
else
{
releaseScroll = false;
}
lastScroll = percentScroll;
// show only when required
if(barHeight >= me.outerHeight()) {
//allow window scroll
releaseScroll = true;
return;
}
bar.stop(true,true).fadeIn('fast');
if (o.railVisible) { rail.stop(true,true).fadeIn('fast'); }
}
function hideBar()
{
// only hide when options allow it
if (!o.alwaysVisible)
{
queueHide = setTimeout(function(){
if (!(o.disableFadeOut && isOverPanel) && !isOverBar && !isDragg)
{
bar.fadeOut('slow');
rail.fadeOut('slow');
}
}, 1000);
}
}
});
// maintain chainability
return this;
}
});
$.fn.extend({
slimscroll: $.fn.slimScroll
});
})(jQuery);

File diff suppressed because one or more lines are too long

@ -0,0 +1,32 @@
'''
实现系统的监控
'''
from flask import Blueprint,render_template,jsonify,request
import adminProcess
sysm=Blueprint("sysm",__name__)
@sysm.route('/admin/systeminfo')
def systeminfo():
'''
获取系统信息
:return:
'''
return render_template('/admin/sysmonitor.html')
# 获取系统监控信息
@sysm.route('/admin/systeminfoj')
def systeminfoj():
return jsonify({"data":adminProcess.getsysInfo(),"code":200})
#设定日志路由
@sysm.route('/admin/systemlog')
def systemlog():
page = request.args.get('page')
if not page:page=1
data={}
data['log']=adminProcess.getSysLog(page=int(page))
data['currentPage']=int(page)
data['totalPage']=adminProcess.getDataListPage(tableName='dblog')
return render_template("admin/syslog.html",data=data)

@ -0,0 +1,38 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>爬虫系统的后台</title>
<link rel="stylesheet" href="static/css/login.css">
</head>
<body>
<h1> </h1>
<div class="container w3">
<h2>爬虫系统后台登录</h2>
<form action="/admin/login" method="post">
<div class="username">
<span class="username">用户名:</span>
<input type="text" name="name" class="name" placeholder="" required="">
<div class="clear"></div>
</div>
<div class="password-agileits">
<span class="username">密码:</span>
<input type="password" name="password" class="password" placeholder="" required="">
<div class="clear"></div>
</div>
<div class="rem-for-agile">
<input type="checkbox" name="remember" class="remember">保存密码<br>
<a href="#">忘记密码</a><br>
</div>
<div class="login-w3">
<input type="submit" class="login" value="登录">
</div>
<div class="clear"></div>
</form>
</div>
</div>
</body>
</html>

@ -0,0 +1,78 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>爬虫系统后台管理</title>
<link rel="stylesheet" href="../static/css/base.css">
{% block css %}
{# 修改css #}
{% endblock %}
<!-- 新 Bootstrap 核心 CSS 文件 -->
<link href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
<script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>
</head>
<body>
<div class="container">
<div class="box_l">
<div class="logo">
<img src="../static/img/logo.png" alt="" width="100%" height="110px;">
</div>
<div class="nav">
<div class="menu"> <span class="glyphicon glyphicon-th-large"></span> <a href="/admin/index">爬虫作业管理</a></div>
<div class="menu"><span class="glyphicon glyphicon-cog"></span><a href="/admin/result_news">爬虫数据管理</a></div>
<div class="menu"><span class="glyphicon glyphicon-tree-conifer"></span><a href="/admin/systeminfo" >爬虫系统监控</a></div>
<div class="menu"><span class="glyphicon glyphicon-tasks"></span><a href="/admin/systemlog">爬虫系统日志</a></div>
<div class="menu"><span class="glyphicon glyphicon-cloud-download"></span><a href="/admin/system_backup">爬虫系统备份</a></div>
</div>
</div>
<div class="box_r">
<div class="header">
<div class="hbox1">全业务爬虫系统管理后台</div>
<div class="hbox2">
<span><span class="glyphicon glyphicon-user"></span>&nbsp;{{session['username']}}</span> &nbsp;|
<span onclick="logout()">退出</span>
</div>
</div>
<div class="content clear-fix" id="content">
{% block content %}
内容
{% endblock %}
</div>
</div>
<div class="clear"></div>
</div>
</body>
</html>
<script>
function logout(){
$.get('/admin/logout',function(res){
if(res.code==200){
swal({
title: '提示',
text: '注销成功!',
type: 'success',
confirmButtonText: '确定'
}).then(function(){
location.href='/admin'
})
}
})
}
$('#sysmonitor').click(function(){
$.get('/admin/system_monitor',function(res){
console.log(res);
$('#content').html("ok");
})
})
</script>

@ -0,0 +1,121 @@
{% extends 'admin/base.html' %}
{% block content %}
<table class="table table-bordered" style="margin-top:40px;text-align:center;">
<thead>
<tr>
<th class="text-center">业务种类</th>
<th class="text-center">数据来源</th>
<th class="text-center">管理状态</th>
</tr>
</thead>
<tbody>
<tr class="active">
<td>新闻类</td>
<td>
<select name="newsSource" id="newsSource">
<option value="0">工大新闻</option>
<option value="1">北大新闻</option>
<option value="2">腾讯新闻</option>
</select>
</td>
<td>
<button class="btn btn-info" onclick="startNews()" id="newbtn">启动</button>
<button class="btn btn-danger">定时</button>
</td>
</tr>
<tr class="warning">
<td>疫情类</td>
<td>
<select name="yqSource" id="yqSource">
<option value="0">腾讯疫情</option>
<option value="1">新浪疫情</option>
<option value="2">丁香园疫情</option>
</select>
</td>
<td>
<button class="btn btn-info" onclick="startYq()" id="yqbtn">启动</button>
<button class="btn btn-danger">定时</button>
</td>
</tr>
<tr class="danger">
<td>热榜类</td>
<td>
<select name="rbSource" id="rbSource">
<option value="0">知乎热榜</option>
<option value="1">头条热榜</option>
<option value="2">电商热榜</option>
</select>
</td>
<td>
<button class="btn btn-info" onclick="startRb()" id="rbbtn">启动</button>
<button class="btn btn-danger">定时</button>
</td>
</tr>
<tr class="success">
<td>美图类</td>
<td>
<select name="mtSource" id="mtSource">
<option value="0">美图秀秀</option>
<option value="1">宠物类图</option>
<option value="2">新闻类图</option>
</select>
</td>
<td>
<button class="btn btn-info" onclick="startMt()" id="mtbtn">启动</button>
<button class="btn btn-danger">定时</button>
</td>
</tr>
</tbody>
</table>
<script>
function startNews(){
swal({
title: '开始爬取了',
text: '正在努力爬取中。。。!',
type: 'info',
confirmButtonText: '确定',
}).then(function(){
var sourceID=$('#newsSource').val();
$('newbtn').attr("disabled",true);
$.get('/admin/newsCollect?source='+sourceID,function(res){
if(res.code==200){
swal({
title: '恭喜',
text: '爬取完毕!',
type: 'success',
confirmButtonText: '确定',
}).then(function() {
$('newbtn').attr("disabled",false);
location.href="/admin/result_news";
})
}
})
})
}
function startYq(){
swal({
title: '开始爬取了',
text: '新浪疫情。。。!',
type: 'info',
confirmButtonText: '确定',
}).then(function(){
var sourceID=$('#yqSource').val();
$('yqbtn').attr("disabled",true);
$.get('/admin/yqCollect?source='+sourceID,function(res){
if(res.code==200){
swal({
title: '恭喜',
text: '爬取完毕!',
type: 'success',
confirmButtonText: '确定',
}).then(function() {
$('yqbtn').attr("disabled",false);
location.href="/admin/result_yq";
})
}
})
})
}
</script>
{% endblock %}

@ -0,0 +1,117 @@
{% extends 'admin/base.html' %}
{% block content %}
<style>
.top{height:40px;margin:10px 10px 20px 10px;}
.top .active{color:#fff;background:#115012;}
.top span{cursor:pointer;color:#115012;display:inline-block;width:100px;line-height:40px;margin:5px 10px;border:1px solid #eee;text-align:center;border:1px solid #58c25a;}
.tb{width:100%;}
th,td{
width:15%;
text-align:center;
}
a{color:none;}
.url{width:10% !important}
</style>
<div class="top">
<span class="active"><a href="/admin/result_news">工大新闻</a></span>
<span><a href="/admin/result_yq">疫情数据</a></span>
<span><a href="/admin/result_rb">榜单数据</a></span>
<span><a href="/admin/result_mt">美图</a></span>
</div>
<div class="tb">
<table class="table table-hover table-bordered">
<thead>
<tr>
<th>序号</th>
<th>新闻来源</th>
<th>新闻时间</th>
<th>新闻标题</th>
<th>管理</th>
</tr>
</thead>
<tbody>
{% for item in data['news'] %}
<tr>
<td>{{item[0]}}</td>
<td>{{item[1]}}</td>
<td>{{item[2]}}</td>
<td><a href="{{item[4]}}"></a>{{item[3]}}</td>
<td>
<button onclick="toDel({{item[0]}})" class="btn btn-warning">删除</button>
<button onclick="toShow({{item[0]}})" class="btn btn-primary">显示</button>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<ul class="pagination">
<!-- {% for page in range(0,data['totalPage']) %}-->
<!-- <li class="">-->
<!-- <a href="/admin/result?page={{page+1}}">{{page+1}}</a>-->
<!-- </li>-->
<!-- {% endfor %}-->
<li class="">
<a href="/admin/result?page={{data['currentPage']-1}}">前一页</a>
</li>
<li class="active"><span>当前页:{{data['currentPage']}},共有{{data['totalPage']}}页</span></li>
<li class="">
<a href="/admin/result?page={{data['currentPage']+1}}">后一页</a>
</li>
</ul>
</div>
<script>
$('.top').on('click','span',function(){
$(this).addClass('active');
$(this).siblings().removeClass('active');
})
function toDel(id){
$.get('/admin/newsDelete?id='+id,function(res){
if(res.code==200){
swal({
title: '确定删除?',
text: '即将删除',
type: 'warning',
showCancelButton: true,
confirmButtonText: '删除!',
cancelButtonText: '取消',
}).then(function(isConfirm) {
if (isConfirm === true) {
location.href="/admin/result_news";
} else if (isConfirm === false) {
}
});
}
})
}
function toShow(id){
$.get('/admin/newsShow?id='+id,function(res){
if(res.code==200){
swal({
title: '确定显示?',
text: '即将显示到前端!',
type: 'warning',
showCancelButton: true,
confirmButtonText: '显示!',
cancelButtonText: '取消',
}).then(function(isConfirm) {
if (isConfirm === true) {
location.href="/admin/result_news";
} else if (isConfirm === false) {
}
});
}
})
}
</script>
{% endblock %}

@ -0,0 +1,118 @@
{% extends 'admin/base.html' %}
{% block content %}
<style>
.top{height:40px;margin:10px 10px 20px 10px;}
.top .active{color:#fff;background:#115012;}
.top span{cursor:pointer;color:#115012;display:inline-block;width:100px;line-height:40px;margin:5px 10px;border:1px solid #eee;text-align:center;border:1px solid #58c25a;}
.tb{width:100%;}
th,td{
width:15%;
text-align:center;
}
a{color:none;}
.url{width:10% !important}
</style>
<div class="top">
<span><a href="/admin/result_news">我大新闻</a></span>
<span ><a href="/admin/result_yq">疫情数据</a></span>
<span class="active"><a href="/admin/result_rb">榜单数据</a></span>
<span><a href="/admin/result_mt">美图</a></span>
</div>
<div class="tb">
<table class="table table-hover table-bordered">
<thead>
<tr>
<th>序号</th>
<th>热榜来源</th>
<th>采集时间</th>
<th>热榜标题</th>
<th class="url">热榜链接url</th>
<th>管理</th>
</tr>
</thead>
<tbody>
{% for item in data['rb'] %}
<tr>
<td>{{item[0]}}</td>
<td>{{item[1]}}</td>
<td>{{item[2]}}</td>
<td>{{item[3]}}</td>
<td class="url">{{item[4]}}</td>
<td>
<button onclick="toDel({{item[0]}})" class="btn btn-warning">删除</button>
<button onclick="toShow({{item[0]}})" class="btn btn-primary">显示</button>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<ul class="pagination">
<!-- {% for page in range(0,data['totalPage']) %}-->
<!-- <li class="">-->
<!-- <a href="/admin/result?page={{page+1}}">{{page+1}}</a>-->
<!-- </li>-->
<!-- {% endfor %}-->
<li class="">
<a href="/admin/result?page={{data['currentPage']-1}}">前一页</a>
</li>
<li class="active"><span>当前页:{{data['currentPage']}},共有{{data['totalPage']}}页</span></li>
<li class="">
<a href="/admin/result?page={{data['currentPage']+1}}">后一页</a>
</li>
</ul>
</div>
<script>
$('.top').on('click','span',function(){
$(this).addClass('active');
$(this).siblings().removeClass('active');
})
function toDel(id){
$.get('/admin/newsDelete?id='+id,function(res){
if(res.code==200){
swal({
title: '确定删除?',
text: '即将删除',
type: 'warning',
showCancelButton: true,
confirmButtonText: '删除!',
cancelButtonText: '取消',
}).then(function(isConfirm) {
if (isConfirm === true) {
location.href="/admin/result";
} else if (isConfirm === false) {
}
});
}
})
}
function toShow(id){
$.get('/admin/newsShow?id='+id,function(res){
if(res.code==200){
swal({
title: '确定显示?',
text: '即将显示到前端!',
type: 'warning',
showCancelButton: true,
confirmButtonText: '显示!',
cancelButtonText: '取消',
}).then(function(isConfirm) {
if (isConfirm === true) {
location.href="/admin/result";
} else if (isConfirm === false) {
}
});
}
})
}
</script>
{% endblock %}

@ -0,0 +1,117 @@
{% extends 'admin/base.html' %}
{% block content %}
<style>
.top{height:40px;margin:10px 10px 20px 10px;}
.top .active{color:#fff;background:#115012;}
.top span{cursor:pointer;color:#115012;display:inline-block;width:100px;line-height:40px;margin:5px 10px;border:1px solid #eee;text-align:center;border:1px solid #58c25a;}
.tb{width:100%;}
th,td{
width:15%;
text-align:center;
}
a{color:none;}
.url{width:10% !important}
</style>
<div class="top">
<span class="active"><a href="/admin/result?source=0">我大新闻</a></span>
<span><a href="/admin/result?source=1">疫情数据</a></span>
<span><a href="/admin/result?source=2">榜单数据</a></span>
<span><a href="/admin/result?source=3">美图</a></span>
</div>
<div class="tb">
<table class="table table-hover table-bordered">
<thead>
<tr>
<th>序号</th>
<th>新闻来源</th>
<th>新闻时间</th>
<th>新闻标题</th>
<th>管理</th>
</tr>
</thead>
<tbody>
{% for item in data['news'] %}
<tr>
<td>{{item[0]}}</td>
<td>{{item[1]}}</td>
<td>{{item[2]}}</td>
<td><a href="{{item[4]}}"></a>{{item[3]}}</td>
<td>
<button onclick="toDel({{item[0]}})" class="btn btn-warning">删除</button>
<button onclick="toShow({{item[0]}})" class="btn btn-primary">显示</button>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<ul class="pagination">
<!-- {% for page in range(0,data['totalPage']) %}-->
<!-- <li class="">-->
<!-- <a href="/admin/result?page={{page+1}}">{{page+1}}</a>-->
<!-- </li>-->
<!-- {% endfor %}-->
<li class="">
<a href="/admin/result?page={{data['currentPage']-1}}">前一页</a>
</li>
<li class="active"><span>当前页:{{data['currentPage']}},共有{{data['totalPage']}}页</span></li>
<li class="">
<a href="/admin/result?page={{data['currentPage']+1}}">后一页</a>
</li>
</ul>
</div>
<script>
$('.top').on('click','span',function(){
$(this).addClass('active');
$(this).siblings().removeClass('active');
})
function toDel(id){
$.get('/admin/newsDelete?id='+id,function(res){
if(res.code==200){
swal({
title: '确定删除?',
text: '即将删除',
type: 'warning',
showCancelButton: true,
confirmButtonText: '删除!',
cancelButtonText: '取消',
}).then(function(isConfirm) {
if (isConfirm === true) {
location.href="/admin/result";
} else if (isConfirm === false) {
}
});
}
})
}
function toShow(id){
$.get('/admin/newsShow?id='+id,function(res){
if(res.code==200){
swal({
title: '确定显示?',
text: '即将显示到前端!',
type: 'warning',
showCancelButton: true,
confirmButtonText: '显示!',
cancelButtonText: '取消',
}).then(function(isConfirm) {
if (isConfirm === true) {
location.href="/admin/result";
} else if (isConfirm === false) {
}
});
}
})
}
</script>
{% endblock %}

@ -0,0 +1,39 @@
{% extends 'admin/base.html' %}
{% block content %}
<table class="table table-hover table-bordered">
<thead>
<tr>
<th>序号</th>
<th>记录时间</th>
<th>记录程序行号</th>
<th>记录程序名称</th>
<th>消息</th>
</tr>
</thead>
<tbody>
{% for item in data['log'] %}
<tr>
<td>{{item[0]}}</td>
<td>{{item[1]}}</td>
<td>{{item[2]}}</td>
<td>{{item[3]}}</td>
<td>{{item[4]}}</td>
</tr>
{% endfor %}
</tbody>
</table>
<ul class="pagination">
<li class="">
<a href="/admin/systemlog?page={{data['currentPage']-1}}">前一页</a>
</li>
<li class="active"><span>当前页:{{data['currentPage']}},共有{{data['totalPage']}}页</span></li>
<li class="">
<a href="/admin/systemlog?page={{data['currentPage']+1}}">后一页</a>
</li>
</ul>
{% endblock %}

@ -0,0 +1,125 @@
{% extends 'admin/base.html' %}
{% block content %}
<script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
<style>
.ilist{
margin-left:50px;
line-height:40px;
margin-right:12px;
}
.ttitle{
color:#f40;
font-size:18px;
font-weight:500;
}
.et{
border-top:3px solid #999;
margin-top:10px;
}
</style>
<div>
<div class="tt">
列表数据
</div>
<div class="et">
<li style="display:inline-block;width:320px;height:320px;text-align:center;">
<span>cpu使用率</span>
<div id="cpu" style="width:300px;height:300px;"></div>
</li>
<li style="display:inline-block;width:320px;height:320px;text-align:center;">
<span>memory使用率</span>
<div id="memory" style="width:300px;height:300px;"></div>
</li>
</div>
</div>
<script>
$.get('/admin/systeminfoj',function(res){
console.log(res.data)
if(res.code==200){
html="";
data=res.data;
html+="<div class='ilist'><span class='ttitle'>系统信息:</span>"+data['system']+"</div>";
html+="<div class='ilist'><span class='ttitle'>系统名称:</span>"+data['node']+"</div>";
html+="<div class='ilist'><span class='ttitle'>当前版本:</span>"+data['version']+"</div>";
html+="<div class='ilist'><span class='ttitle'>启动时间:</span>"+data['boottime']+"</div>";
html+="<div class='ilist'><span class='ttitle'>cpu个数:</span>"+data['cpucount']+"</div>";
$('.tt').html(html);
var data=res.data;
echartsGauge('cpu',data['cpupercent'],'cpu使用率');
echartsGauge('memory',data['memorypercent'],'内存使用率');
}
})
function echartsGauge(dom,datapercent,title){
// 基于准备好的dom初始化echarts实例
var myChart = echarts.init(document.getElementById(dom));
var option = {
series: [
{
type: 'gauge',
progress: {
show: true,
width: 28
},
axisLine: {
lineStyle: {
width: 18
}
},
axisTick: {
show: true
},
splitLine: {
length: 25,
lineStyle: {
width: 2,
color: '#999'
}
},
axisLabel: {
distance: 25,
color: '#999',
fontSize: 16
},
anchor: {
show: true,
showAbove: true,
size: 25,
itemStyle: {
borderWidth: 8
}
},
title: {
text: title,
show:true,
textStyle: { // 标题文本样式
fontSize: 30
}
},
detail: {
valueAnimation: true,
fontSize: 40,
formatter: '{value} %',
offsetCenter: [0, '70%']
},
data: [
{
value: datapercent
}
]
}
]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
}
</script>
{% endblock %}

@ -0,0 +1,118 @@
{% extends 'admin/base.html' %}
{% block content %}
<style>
.top{height:40px;margin:10px 10px 20px 10px;}
.top .active{color:#fff;background:#115012;}
.top span{cursor:pointer;color:#115012;display:inline-block;width:100px;line-height:40px;margin:5px 10px;border:1px solid #eee;text-align:center;border:1px solid #58c25a;}
.tb{width:100%;}
th,td{
width:15%;
text-align:center;
}
a{color:none;}
.url{width:10% !important}
</style>
<div class="top">
<span><a href="/admin/result_news">我大新闻</a></span>
<span class="active"><a href="/admin/result_yq">疫情数据</a></span>
<span><a href="/admin/result_rb">榜单数据</a></span>
<span><a href="/admin/result_mt">美图</a></span>
</div>
<div class="tb">
<table class="table table-hover table-bordered">
<thead>
<tr>
<th>序号</th>
<th>疫情来源</th>
<th>采集时间</th>
<th>国内确诊人数</th>
<th>国际确认人数</th>
<th>管理</th>
</tr>
</thead>
<tbody>
{% for item in data['yq'] %}
<tr>
<td>{{item[0]}}</td>
<td>{{item[1]}}</td>
<td>{{item[2]}}</td>
<td>{{item[3]}}</td>
<td >{{item[4]}}</td>
<td>
<button onclick="toDel({{item[0]}})" class="btn btn-warning">删除</button>
<button onclick="toShow({{item[0]}})" class="btn btn-primary">显示</button>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<ul class="pagination">
<!-- {% for page in range(0,data['totalPage']) %}-->
<!-- <li class="">-->
<!-- <a href="/admin/result?page={{page+1}}">{{page+1}}</a>-->
<!-- </li>-->
<!-- {% endfor %}-->
<li class="">
<a href="/admin/result?page={{data['currentPage']-1}}">前一页</a>
</li>
<li class="active"><span>当前页:{{data['currentPage']}},共有{{data['totalPage']}}页</span></li>
<li class="">
<a href="/admin/result?page={{data['currentPage']+1}}">后一页</a>
</li>
</ul>
</div>
<script>
$('.top').on('click','span',function(){
$(this).addClass('active');
$(this).siblings().removeClass('active');
})
function toDel(id){
$.get('/admin/newsDelete?id='+id,function(res){
if(res.code==200){
swal({
title: '确定删除?',
text: '即将删除',
type: 'warning',
showCancelButton: true,
confirmButtonText: '删除!',
cancelButtonText: '取消',
}).then(function(isConfirm) {
if (isConfirm === true) {
location.href="/admin/result";
} else if (isConfirm === false) {
}
});
}
})
}
function toShow(id){
$.get('/admin/newsShow?id='+id,function(res){
if(res.code==200){
swal({
title: '确定显示?',
text: '即将显示到前端!',
type: 'warning',
showCancelButton: true,
confirmButtonText: '显示!',
cancelButtonText: '取消',
}).then(function(isConfirm) {
if (isConfirm === true) {
location.href="/admin/result";
} else if (isConfirm === false) {
}
});
}
})
}
</script>
{% endblock %}

@ -0,0 +1,45 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>大度检索系统</title>
<link rel="stylesheet" href="../static/css/front.css">
<link href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
<script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>
</head>
<body>
<!--头部-->
<div class="container">
<header>
<div class="headerl">
<span class=""><a href="/">首页</a></span>
<span class="active"><a href="/news">新闻</a></span>
<span><a href="/yqShow">疫情</a></span>
<span><a href="/rbShow">热榜</a></span>
<span><a href="/mtShow">美图</a></span>
</div>
<div class="headerr">
<span>荷塘区</span>
<span style="color:#f90">北京时间:{{data['timeinfo']}} {{data['temp']}}°</span>
</div>
</header>
{% block main %}
aa
{% endblock %}
<!--底部-->
<footer>
copyright@2022-2030 京ICP88888888 技术支持:曹鉴华
</footer>
</div>
</body>
</html>
<script>
$('.headerl').on('click','span',function(){
$(this).addClass('active');
$(this).siblings().removeClass('active');
})
</script>

@ -0,0 +1,33 @@
{% extends 'front/base.html' %}
{% block main %}
<style>
.box{
border-top:2px solid #f0f0f0;
background:#fff;
padding-top:15px;
}
li{
display:block;
margin:20px 6px;
}
</style>
<div class="boxcontent">
<li style="border-bottom:2px solid #2f63ba;margin:20px;">热点新闻</li>
<div class="tb">
<ul>
{% for item in data['news'] %}
<li> <a href="{{item[4]}}">{{item[3]}}</a> (<span>来源:{{item[1]}}-{{item[2]}}</span>) </li>
{% endfor %}
</ul>
<ul class="pagination">
<li class="">
<a href="/news?page={{data['currentPage']-1}}">前一页</a>
</li>
<li class="active"><span>当前页:{{data['currentPage']}},共有{{data['totalPage']}}页</span></li>
<li class="">
<a href="/news?page={{data['currentPage']+1}}">后一页</a>
</li>
</ul>
</div>
</div>
{% endblock %}

@ -0,0 +1,25 @@
{% extends 'front/base.html' %}
{% block main %}
<style>
.box{
border-top:2px solid #f0f0f0;
background:#fff;
padding-top:15px;
}
li{
display:block;
margin:20px 6px;
}
</style>
<div class="boxcontent">
<li style="border-bottom:2px solid #2f63ba;margin:20px;">所搜结果</li>
<div class="tb">
<ul>
{% for item in data['result'] %}
<li> <a href="{{item[4]}}">{{item[3]}}</a> (<span>来源:{{item[1]}}-{{item[2]}}</span>) </li>
{% endfor %}
</ul>
</div>
</div>
{% endblock %}

@ -0,0 +1,58 @@
{% extends 'front/base.html' %}
{% block main %}
<script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
<style>
.box{
border-top:2px solid #f0f0f0;
background:#fff;
padding-top:15px;
}
li{
display:block;
margin:20px 6px;
}
</style>
<div class="boxcontent">
<li style="border-bottom:2px solid #2f63ba;margin:20px;">疫情可视化</li>
</div>
<div id="main" style="width: 600px;height:400px;"></div>
<div id="main2" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
$.get('/yqData',function(data){
if(data.code==200){
getEchartsDraw(data,'main',data.qznum,'bar');
getEchartsDraw(data,'main2',data.zynum,'line');
}else{
swal("未能请求到数据!");
}
})
function getEchartsDraw(data,dom,ydata,ttype){
// 基于准备好的dom初始化echarts实例
var myChart = echarts.init(document.getElementById(dom));
// 指定图表的配置项和数据
var option = {
title: {
text: '疫情国内确诊人数柱状图'
},
tooltip: {},
legend: {
data:['人数']
},
xAxis: {
data: data.date
},
yAxis: {},
series: [{
name: '人数',
type: ttype,
data: ydata
}]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
}
</script>
{% endblock %}

@ -0,0 +1,49 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>大度检索系统</title>
<link rel="stylesheet" href="../static/css/front.css">
<link href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
<script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>
</head>
<body>
<!--头部-->
<div class="container">
<header>
<div class="headerl">
<span class=""><a href="/">首页</a></span>
<span><a href="/news">新闻</a></span>
<span><a href="/yqShow">疫情</a></span>
<span><a href="/rbShow">热榜</a></span>
<span><a href="/mtShow">美图</a></span>
</div>
<div class="headerr">
<span>荷塘区</span>
<span style="color:#f90">北京时间:{{data['timeinfo']}} {{data['temp']}}°</span>
</div>
</header>
<!--中部-->
<div class="box">
<div class="banner">
<img src="../static/img/bg.png" alt="" style="height:180px;">
</div>
<h2>爬虫永在路上,一直不停歇</h2>
<div class="searchbox">
<form action="/search" method="post">
<input type="text" class="sbox" name="keyword" style="width:480px;">
<input type="submit" class="btn btn-primary" style="padding:11px 16px" id="btndu" value="大度一下">
</form>
</div>
</div>
<!--底部-->
<footer>
计科2104王旭琪 21412030418
</footer>
</div>
</body>
</html>

@ -0,0 +1,47 @@
'''
疫情数据模块
'''
from flask import Blueprint,request,render_template,jsonify
import adminProcess
yq = Blueprint("yq",__name__)
# 数据管理部分
@yq.route("/admin/result_yq")
def result_yq():
# 获取来源的参数
page = request.args.get('page')
if page is None: page = 1
# 增加获取一共多少页的代码
data = {}
data['totalPage']=adminProcess.getDataListPage(tableName='yq')
data['currentPage'] = int(page)
data['yq']=adminProcess.getDataListByPage(tableName='yq',page=int(page))
return render_template("admin/yq.html",data=data)
'''处理疫情数据采集'''
@yq.route("/admin/yqCollect")
def yqCollect():
sourceID = request.args.get('source')
if adminProcess.yqFetch(sourceID):
return jsonify({'code':200,'msg':"爬取成功!"})
else:
return jsonify({'code':200,'msg':'爬取失败!'})
'''处理疫情数据删除'''
@yq.route("/admin/yqDelete")
def yqDelete():
id = request.args.get('id')
if adminProcess.newsDelete("yq",id):
return jsonify({'code':200,'msg':'删除成功!'})
else:
return jsonify({'code':404,'msg':'删除不成功!'})
'''处理疫情数据显示'''
@yq.route("/admin/yqShow")
def yqShow():
id = request.args.get('id')
if adminProcess.newsShow("yq",id):
return jsonify({'code':200,'msg':'删除成功!'})
else:
return jsonify({'code':404,'msg':'删除不成功!'})
Loading…
Cancel
Save