Showing
66 changed files
with
6935 additions
and
287 deletions
1 | -# 이승민씨를 위한 간단 GIT 설정법 | 1 | +# 시설물 대여 시스템 |
2 | -## 1.설치 | 2 | +## 개요 |
3 | -- 깃을 설치해주세요 | 3 | +- 많은 사람들이 공통적으로 느끼고 있는 강의실 대여 시스템의 불편함을 해소해보고자 유저가 대여 현황 조회와 대여 예약을 할 수 있는 프로그램을 구상했습니다. |
4 | -> https://git-scm.com/downloads | 4 | +- 실제 통합된 시설물 대여 시스템을 구현하였고 실제로 시설물 조회, 예약, 취소 등 필요한 기능을 사용할 수 있습니다. |
5 | - | 5 | + |
6 | -## 2.GIT bash 열기 | 6 | + |
7 | -- 깃을 설치하고 GIT bash를 열어주세요. | 7 | +## 운용환경 및 준비 |
8 | - | 8 | +- Linux환경에서 MySQL, Python Flask로 동작하며 pymsql을 통해 연결됩니다. |
9 | -## 3.GIT 설정하기 | 9 | +- 웹 기반 시스템이며 마이크로소프트 엣지, 구글 크롬 브라우저를 권장합니다. |
10 | -- 깃을 설정해주세요. username과 email을 설정하면 됩니다. | 10 | +- MySQL에 아래와 같은 테이블이 필요합니다. 사전에 준비하시기 바랍니다. |
11 | -- global 옵션은 깃을 설치한 컴퓨터 전체에 대한 설정이라는 뜻입니다. | 11 | + |
12 | -> git config --global user.name "이름" | 12 | +> \<Tables\> |
13 | -> git config --global user.email 메일@khu.ac.kr | 13 | +> - users - reservations_id : int(11), user_id : varchar(45), facility_id : int(11), start_time : datetime, endtime : datetime |
14 | - | 14 | +> - departments - department_id : int(11), department_name : int(45), manager_name : varchar(45), department_location : varchar(45) |
15 | -## 4.Clone하기 | 15 | +> - reservations - reservations_id : int(11), user_id : int(45), facility_id : int(11), start_time : datetime, endtime : datetime |
16 | -- GIT bash에서 적당한 폴더를 만들고 들어가주세요. | 16 | +> - facilities - facility_id : int(11), department_id : int(11), facility_type : varchar(45), capacity : int(11), location : varchar(45), location_detail : varchar(45), equipment : varchar(45) |
17 | -> cd \<만드신 폴더\> | 17 | + |
18 | +- 세부 제약조건과 내용은 최종보고서를 참고해주시기 바랍니다. | ||
19 | + | ||
20 | + | ||
21 | +## 1.설치 및 초기설정 | ||
22 | +- GIT Clone | ||
23 | + | ||
18 | > git clone http://khuhub.khu.ac.kr/2013104043/db-frs.git | 24 | > git clone http://khuhub.khu.ac.kr/2013104043/db-frs.git |
19 | > cd db-frs | 25 | > cd db-frs |
20 | 26 | ||
21 | -## 5.Branch 파기 | 27 | +- 파이썬 가상환경 만들기 |
22 | -- master는 위험하니 님을 위한 브랜치를 하나 만드세요. | 28 | + |
23 | -- git branch "브랜치이름"을 입력하시면 "브랜치이름"이라는 브랜치를 만들겠다는 뜻입니다. | 29 | +> python3 -m venv env |
24 | -- 브랜치 이름은 맘대로 하시고 | 30 | +> source evn/bin/activate |
25 | -- checkout은 뒤에 입력한 브랜치를 사용하겠다는 뜻입니다. | 31 | + |
26 | -- git branch 를 입력하시면 전체 브랜치를 볼 수 있습니다. | 32 | +- 파이썬 패키지 설치 |
27 | -> git branch \<브랜치이름\> | 33 | + |
28 | -> git checkout \<브랜치이름\> | 34 | +> pip install flask |
29 | - | 35 | +> pip install pymysql |
30 | -## 6.Branch push | 36 | + |
31 | -- 만든 브랜치를 khuhub에 올려주세요. | 37 | +- user_info에서 자신의 MySQL 계정과 비밀번호 설정 |
32 | -> git push origin \<브랜치이름\> | 38 | +- ReservationControl.py, Users.py에서 각 함수마다 DB의 호스트 주소와 사용할 DB이름을 설정 |
33 | - | 39 | + |
34 | -## 자 이제 마음대로 가지고 노세요! | 40 | +> db = pymysql.connect(host='host-address', port=3306, user=user_info.user_id, password=user_info.user_passwd, db='dbname', charset='utf8') |
35 | - | 41 | + |
36 | -## 7.ADD와 COMMIT과 PUSH | 42 | +- flask서버 구동 |
37 | -- clone한 폴더를 기준으로(여기서는 db-frs) | 43 | + |
38 | -- Add를 할 수 있습니다. 이왕이면 파일을 지정해서 사용해주세요. 안그러면 설정파일 다 올라가요... | 44 | + |
39 | -> git add .(현재 폴더를 모두 add하겠다는 뜻) | 45 | +## 2.기능 |
40 | -> git add filename.py(filename.py만 add하겠다는 뜻) | 46 | +- 모든 화면에서 로고를 선택하면 처음화면으로 돌아갈 수 있습니다. |
41 | -- Add된 현황을 봅니다. | 47 | + |
42 | -> git status | 48 | +### 1) 첫 로그인 화면 |
43 | -- 마음에 들었으면 커밋을 하죠. 참고로 -m "커밋메시지"는 꼭 들어가야 합니다. | 49 | +- 첫 화면에서는 로그인이 가능하며, 회원가입을 통해 가입한 후 서비스를 사용할 수 있습니다. |
44 | -> git commit -m \<커밋메시지\> | 50 | + |
45 | -- push를 합시다! push는 웹에 업로드 하는 기능입니다. | 51 | +### 2) 메인화면 |
46 | -> git push origin \<브랜치이름\> | 52 | +- 로그인 후 처음으로 보여지는 화면으로 '대여하기', '대여현황', '로그아웃'을 선택할 수 있습니다. |
53 | +- '대여하기'를 선택하면 대여화면으로 이동합니다. | ||
54 | +- '대여현황'을 선택하면 대여현황화면으로 이동합니다. | ||
55 | +- '로그아웃'을 선택하면 로그아웃 후 처음화면으로 돌아갑니다. | ||
56 | + | ||
57 | +### 3-1) 대여화면 | ||
58 | +- 사용자가 원하는 조건으로 시설물을 검색할 수 있는 화면입니다. | ||
59 | +- '건물'에서 사용자가 원하는 건물을 선택할 수 있습니다. | ||
60 | +- '사용 인원 수'에서 사용자가 원하는 규모의 시설물을 선택할 수 있습니다. | ||
61 | +- '시작시간'과 '종료시간'을 설정합니다. | ||
62 | +- '검색'을 선택하여 대여가능한 시설물을 확인할 수 있습니다. | ||
63 | + | ||
64 | +### 3-2) 검색결과화면 | ||
65 | +- 사용자가 선택한 시간에 사용 가능한 시설물이 나타납니다. | ||
66 | +- '예약'을 선택하여 시설물 예약을 완료합니다. | ||
67 | + | ||
68 | +### 4) 대여현황화면 | ||
69 | +- 사용자가 대여한 시설물들을 확인할 수 있습니다. | ||
70 | +- 대여현황 옆의 각각의 버튼을 선택하여 해당 시설물의 대여를 취소할 수 있습니다. | ||
47 | 71 | ||
48 | 72 | ||
73 | + | ||
74 | +##### 기타 문의사항은 2018-2 데이터베이스 'DB아파트209호'로 연락주시고 얼마든지 가져다 쓰시면 감사하겠습니다. | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
ReservationControl.py
0 → 100644
1 | +# -*- coding: utf-8 -*- | ||
2 | +# 한글 인코딩을 위한 주석입니다. | ||
3 | + | ||
4 | +# 사전설정: | ||
5 | +# pymysql 패키지가 있어야 합니다. | ||
6 | +# pip install pymysql | ||
7 | +# 보안상 user_info에서 DB id, password를 가져옵니다. | ||
8 | +# user_info.py에서 DB id, password를 설정하고 사용해주세요. | ||
9 | +# 외부에서 사용법: | ||
10 | +# from ReservationControl import * | ||
11 | + | ||
12 | +import pymysql | ||
13 | +import user_info | ||
14 | +import datetime | ||
15 | + | ||
16 | + | ||
17 | +# getReservations - 대여현황반환 함수 | ||
18 | +# input: | ||
19 | +# string user_id | ||
20 | +# output: | ||
21 | +# 성공시 : tuple형태로 반환 => ( (1 ,"steven123", 7, "전자정보대학", "136호", 10, datetime.datetime(2018,12,5,12,0,0), datetime.datetime(2018,12,5,12,10,0), ), ) | ||
22 | +# 순서 : reservations_id, user_id, facility_id, location, location_detail, capacity, start_time, end_time | ||
23 | + | ||
24 | +# 실패시 : result[0][0]="SQL Error!"인 tuple 반환 => ( ("SQL Error!", ), ) | ||
25 | +# 사용예: | ||
26 | +# result = getReservations("khucse123") | ||
27 | +# reservation_start_time = result[0][3] | ||
28 | + | ||
29 | +def getReservations(user_id): | ||
30 | + try: | ||
31 | + db = pymysql.connect(host='host-address', port=3306, user=user_info.user_id, password=user_info.user_passwd, | ||
32 | + db='dbname', charset='utf8') | ||
33 | + curs = db.cursor() | ||
34 | + | ||
35 | + # curs.execute("select * from reservations where user_id=%s", user_id) | ||
36 | + curs.execute( | ||
37 | + "select r.reservations_id, r.user_id, r.facility_id, f.location, f.location_detail, f.capacity, r.start_time, r.end_time from reservations r, facilities f where r.user_id=%s AND r.facility_id=f.facility_id;", | ||
38 | + user_id) | ||
39 | + result = curs.fetchall() | ||
40 | + print("Fetch Success!") | ||
41 | + return result | ||
42 | + except: | ||
43 | + print("SQL Error!") | ||
44 | + return (("SQL Error!",),) | ||
45 | + | ||
46 | + finally: | ||
47 | + db.close() | ||
48 | + | ||
49 | + | ||
50 | +# deleteReservations - 대여현황삭제 함수 | ||
51 | +# input: | ||
52 | +# int reservations_id | ||
53 | +# output: | ||
54 | +# 성공시 : True | ||
55 | +# 실패시 : False | ||
56 | +# 사용예: | ||
57 | +# deleteReservations(5) | ||
58 | +# 주의사항: | ||
59 | +# 테스트환경에서 없는 reservations_id를 넣으면 에러가 날 수 있음 | ||
60 | + | ||
61 | +def deleteReservations(reservations_id): | ||
62 | + try: | ||
63 | + db = pymysql.connect(host='host-address', port=3306, user=user_info.user_id, password=user_info.user_passwd, | ||
64 | + db='dbname', charset='utf8') | ||
65 | + curs = db.cursor() | ||
66 | + | ||
67 | + curs.execute("delete from reservations where reservations_id=%s", reservations_id) | ||
68 | + db.commit() | ||
69 | + print("Delete Success!") | ||
70 | + return True | ||
71 | + except: | ||
72 | + print("SQL Error!") | ||
73 | + return False | ||
74 | + | ||
75 | + finally: | ||
76 | + db.close() | ||
77 | + | ||
78 | + | ||
79 | +# addReservations - 대여현황추가 함수 | ||
80 | +# input: | ||
81 | +# string user_id | ||
82 | +# int facility_id | ||
83 | +# datetime.datetime start_time | ||
84 | +# datetime.datetime end_time | ||
85 | +# output: | ||
86 | +# 성공시 : True | ||
87 | +# 실패시 : False | ||
88 | +# 사용예: | ||
89 | +# tstart = datetime.datetime(2018,12,5,0,11,12) | ||
90 | +# tend = datetime.datetime(2018,12,5,0,20,12) | ||
91 | +# addReservations("khucse123", 6, tstart, tend) | ||
92 | +# 주의사항: | ||
93 | +# 테스트환경에서 없는 user_id를 넣으면 에러가 날 수 있음 | ||
94 | +# 테스트환경에서 없는 facility_id를 넣으면 에러가 날 수 있음 | ||
95 | + | ||
96 | +def addReservations(user_id, facility_id, start_time, end_time): | ||
97 | + try: | ||
98 | + db = pymysql.connect(host='host-address', port=3306, user=user_info.user_id, password=user_info.user_passwd, | ||
99 | + db='dbname', charset='utf8') | ||
100 | + curs = db.cursor() | ||
101 | + | ||
102 | + curs.execute("insert into reservations (user_id, facility_id, start_time, end_time) values (%s,%s,%s,%s)", | ||
103 | + (user_id, facility_id, start_time, end_time)) | ||
104 | + db.commit() | ||
105 | + print("Add Reservation Success!") | ||
106 | + return True | ||
107 | + except: | ||
108 | + print("SQL Error!") | ||
109 | + return False | ||
110 | + | ||
111 | + finally: | ||
112 | + db.close() | ||
113 | + | ||
114 | + | ||
115 | +# getAvailableFacilities - 사용가능시설물 반환함수 | ||
116 | +# input: | ||
117 | +# string location | ||
118 | +# int capacity | ||
119 | +# datetime.datetime start_time | ||
120 | +# datetime.datetime end_time | ||
121 | +# output: | ||
122 | +# 성공시 : tuple형태로 반환 => ( (1, "전자정보대학", "B01호", 40, "강의실", "빔프로젝터", ), ) | ||
123 | +# 순서 : facility_id, location, location_detail, capacity, facility_type, equipment | ||
124 | +# 사용가능한 시설물이 없을 시 : result[0][0]="NoAvailableFacilites"인 tuple 반환 => ( ("NoAvailableFacilites", ), ) | ||
125 | + | ||
126 | +# 실패시 : result[0][0]="SQL Error!"인 tuple 반환 => ( ("SQL Error!", ), ) | ||
127 | +# 사용예: | ||
128 | +# tstart = datetime.datetime(2018,12,5,12,11,12) | ||
129 | +# tend = datetime.datetime(2018,12,5,14,20,12) | ||
130 | +# result = getAvailableFacilities("전자정보대학", 40, tstart, tend) | ||
131 | +# facility_id = result[0][0] | ||
132 | + | ||
133 | +def getAvailableFacilities(location, capacity, start_time, end_time): | ||
134 | + try: | ||
135 | + db = pymysql.connect(host='host-address', port=3306, user=user_info.user_id, password=user_info.user_passwd, | ||
136 | + db='dbname', charset='utf8') | ||
137 | + curs = db.cursor() | ||
138 | + | ||
139 | + curs.execute( | ||
140 | + "select facility_id, location, location_detail, capacity, facility_type, equipment from facilities where (facility_id not in(select facility_id from reservations where (start_time<=%s AND %s<end_time) OR (start_time<%s AND %s<=end_time) OR (%s<=start_time AND end_time<=%s))) AND location=%s AND %s<=capacity;", | ||
141 | + (start_time, start_time, end_time, end_time, start_time, end_time, location, capacity)) | ||
142 | + | ||
143 | + result = curs.fetchall() | ||
144 | + print("Fetch Success!") | ||
145 | + | ||
146 | + # 사용 가능한 시설물이 있을 경우 | ||
147 | + if (len(result) != 0): | ||
148 | + return result | ||
149 | + # 사용 가능한 시설물이 없을 경우 | ||
150 | + else: | ||
151 | + print("No Available Facilities") | ||
152 | + return (("NoAvailableFacilities",),) | ||
153 | + | ||
154 | + except: | ||
155 | + print("SQL Error!") | ||
156 | + return (("SQL Error!",),) | ||
157 | + | ||
158 | + finally: | ||
159 | + db.close() |
Users.py
0 → 100644
1 | +# -*- coding: utf-8 -*- | ||
2 | +# 한글 인코딩을 위한 주석입니다. | ||
3 | + | ||
4 | +# 사전설정: | ||
5 | +# pymysql 패키지가 있어야 합니다. | ||
6 | +# pip install pymysql | ||
7 | +# 보안상 user_info에서 DB id, password를 가져옵니다. | ||
8 | +# user_info.py에서 DB id, password를 설정하고 사용해주세요. | ||
9 | +# 외부에서 사용법: | ||
10 | +# from Users import * | ||
11 | + | ||
12 | +import pymysql | ||
13 | +import user_info | ||
14 | + | ||
15 | + | ||
16 | +# UserLogin - 유저 로그인 함수 | ||
17 | +# input: | ||
18 | +# string user_id | ||
19 | +# string password | ||
20 | +# output: | ||
21 | +# 성공시 : True | ||
22 | +# 실패시 : False | ||
23 | +# 사용예: | ||
24 | +# UserLogin("khucse124", "steven1234") | ||
25 | + | ||
26 | +def UserLogin(user_id, password): | ||
27 | + try: | ||
28 | + db = pymysql.connect(host='host-address', port=3306, user=user_info.user_id, password=user_info.user_passwd, | ||
29 | + db='dbname', charset='utf8') | ||
30 | + curs = db.cursor() | ||
31 | + | ||
32 | + curs.execute("select exists (select user_name from users where user_id=%s and password=%s) as result", | ||
33 | + (user_id, password)) | ||
34 | + result = curs.fetchall() | ||
35 | + | ||
36 | + if (result[0][0] == 1): | ||
37 | + print("User login Success!") | ||
38 | + return True | ||
39 | + else: | ||
40 | + print("User login Failed!") | ||
41 | + return False | ||
42 | + | ||
43 | + except: | ||
44 | + print("SQL ERROR!!") | ||
45 | + return False | ||
46 | + | ||
47 | + finally: | ||
48 | + db.close() | ||
49 | + | ||
50 | + | ||
51 | +# UserJoin - 유저 회원가입 함수 | ||
52 | +# input: | ||
53 | +# string user_id | ||
54 | +# int dept_id | ||
55 | +# string user_name | ||
56 | +# string pwd | ||
57 | +# string phone | ||
58 | +# string mail | ||
59 | +# output: | ||
60 | +# 성공시 : True | ||
61 | +# 실패시 : False | ||
62 | +# 사용예: | ||
63 | +# UserJoin("khucse124", 7, "Steven", "steven1234", "031-201-2566", "cs@khu.ac.kr") | ||
64 | +# 주의사항: | ||
65 | +# 테스트환경에서 같은 user_id가 있으면 에러가 날 수 있음 | ||
66 | +# 테스트환경에서 dept_id는 departments 테이블에 없는 값을 넣으면 에러가 날 수 있음 | ||
67 | + | ||
68 | +def UserJoin(user_id, dept_id, user_name, pwd, phone, mail): | ||
69 | + try: | ||
70 | + db = pymysql.connect(host='host-address', port=3306, user=user_info.user_id, password=user_info.user_passwd, | ||
71 | + db='dbname', charset='utf8') | ||
72 | + curs = db.cursor() | ||
73 | + | ||
74 | + curs.execute( | ||
75 | + "insert into users (user_id, department_id, user_name, password, phone, mail_address) values (%s,%s,%s,%s,%s,%s)", | ||
76 | + (user_id, dept_id, user_name, pwd, phone, mail)) | ||
77 | + db.commit() | ||
78 | + print("User Join Success!") | ||
79 | + return True | ||
80 | + | ||
81 | + except: | ||
82 | + print("SQL ERROR!!") | ||
83 | + return False | ||
84 | + | ||
85 | + finally: | ||
86 | + db.close() | ||
87 | + |
app.py
0 → 100644
1 | +# -*- coding: utf8 -*- | ||
2 | +from flask import request, render_template, redirect, session, flash, Flask | ||
3 | +from Users import * | ||
4 | +from ReservationControl import * | ||
5 | +from datetime import datetime | ||
6 | + | ||
7 | +app = Flask(__name__) | ||
8 | +app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT' | ||
9 | + | ||
10 | +@app.route('/', redirect_to="/login") | ||
11 | +def http_prepost_response(): | ||
12 | + return "helloworld" | ||
13 | + | ||
14 | + | ||
15 | +@app.route('/login', methods=["GET"]) | ||
16 | +def login(): | ||
17 | + if session.get('ID'): | ||
18 | + return redirect('/myhome') | ||
19 | + elif request.args.get('retry') == 'true': | ||
20 | + return render_template("login.html", retry=True) | ||
21 | + return render_template("login.html", retry=False) | ||
22 | + | ||
23 | + | ||
24 | +@app.route('/join') | ||
25 | +def join(): | ||
26 | + return render_template('join.html') | ||
27 | + | ||
28 | + | ||
29 | +@app.route('/join/confirm', methods=['POST']) | ||
30 | +def join_confirm(): | ||
31 | + join_item = request.form | ||
32 | + print(join_item) | ||
33 | + if UserJoin(join_item.get('id'),join_item.get('deptid'),join_item.get('name'),join_item.get('password'),join_item.get('phone'),join_item.get('email')): | ||
34 | + flash('회원가입 성공!') | ||
35 | + return redirect('/login') | ||
36 | + flash('회원가입 실패!') | ||
37 | + return redirect('/join') | ||
38 | + | ||
39 | + | ||
40 | +@app.route('/logincheck', methods=["POST"]) | ||
41 | +def login_check(): | ||
42 | + IDPW = request.form | ||
43 | + if UserLogin(IDPW.get('id'),IDPW.get('pw')): | ||
44 | + session['ID'] = IDPW.get('id') | ||
45 | + welcome = IDPW.get('id')+" 님 안녕하세요!" | ||
46 | + flash(welcome) | ||
47 | + return redirect('/myhome') | ||
48 | + flash("ID와 비밀번호를 확인해주세요.") | ||
49 | + return redirect('/login?retry=true') | ||
50 | + | ||
51 | + | ||
52 | +@app.route('/myhome') | ||
53 | +def mystat(): | ||
54 | + return render_template("myhome.html", ID=session['ID']) | ||
55 | + | ||
56 | + | ||
57 | +@app.route('/viewresv') | ||
58 | +def view_resv(): | ||
59 | + resv_list = getReservations(session['ID']) | ||
60 | + print(resv_list) | ||
61 | + return render_template('resv_view.html', resv_list=resv_list) | ||
62 | + | ||
63 | +@app.route('/deleteresv', methods=['POST']) | ||
64 | +def delete_resv(): | ||
65 | + resv_id = request.form | ||
66 | + if deleteReservations(resv_id.get('resv_id')): | ||
67 | + flash("예약이 삭제되었습니다") | ||
68 | + else: | ||
69 | + flash("예약 삭제에 실패했습니다") | ||
70 | + return redirect('/viewresv') | ||
71 | + | ||
72 | + | ||
73 | + | ||
74 | +@app.route('/search') | ||
75 | +def book(): | ||
76 | + return render_template("resv_sch.html", ID=session['ID']) | ||
77 | + | ||
78 | + | ||
79 | +@app.route('/search/result', methods=['POST']) | ||
80 | +def search_result(): | ||
81 | + searchdata = request.form | ||
82 | + starttime = datetime.strptime(searchdata.get('starttime'),'%Y-%m-%dT%H:%M') | ||
83 | + endtime = datetime.strptime(searchdata.get('endtime'),'%Y-%m-%dT%H:%M') | ||
84 | + if(starttime.strftime('%Y%m%d') == endtime.strftime('%Y%m%d')): | ||
85 | + result = getAvailableFacilities(searchdata.get('deptid'),searchdata.get('capacity'),starttime,endtime) | ||
86 | + print(result) | ||
87 | + return render_template("searchresult.html", resv_list=result, starttime=starttime, endtime=endtime) | ||
88 | + else: | ||
89 | + flash("2일 이상의 일정으로 예약 불가합니다") | ||
90 | + return redirect("/search") | ||
91 | + | ||
92 | + | ||
93 | + | ||
94 | +@app.route('/search/resv', methods=['POST']) | ||
95 | +def book_confirm(): | ||
96 | + book_query=request.form | ||
97 | + print(book_query) | ||
98 | + starttime = datetime.strptime(book_query.get('start_time'), '%Y-%m-%d%H:%M') | ||
99 | + endtime = datetime.strptime(book_query.get('end_time'), '%Y-%m-%d%H:%M') | ||
100 | + if addReservations(session['ID'],book_query.get('fac_id'),starttime,endtime): | ||
101 | + flash("예약에 성공했습니다") | ||
102 | + return redirect('/myhome') | ||
103 | + else: | ||
104 | + flash("예약에 실패했습니다.") | ||
105 | + return redirect('/search') | ||
106 | + | ||
107 | + | ||
108 | + | ||
109 | + | ||
110 | +@app.route('/logout') | ||
111 | +def logout(): | ||
112 | + session.clear() | ||
113 | + flash("로그아웃 되었습니다.") | ||
114 | + return redirect('/login') | ||
115 | + | ||
116 | + | ||
117 | +if __name__ == '__main__': | ||
118 | + | ||
119 | + print("done") | ||
120 | + app.config['SESSION_TYPE'] = 'filesystem' | ||
121 | + app.run(host="0.0.0.0", port=80) |
dset.txt
0 → 100644
1 | +100 B | ||
2 | +101 B | ||
3 | +102 B | ||
4 | +103 B | ||
5 | +104 B | ||
6 | +105 B | ||
7 | +106 B | ||
8 | +107 B | ||
9 | +108 B | ||
10 | +109 B | ||
11 | +110 B | ||
12 | +120 B | ||
13 | +121 B | ||
14 | +130 B | ||
15 | +140 B | ||
16 | +141 B | ||
17 | +142 B | ||
18 | +143 B | ||
19 | +144 B | ||
20 | +145 B | ||
21 | +146 B | ||
22 | +147 B | ||
23 | +148 B | ||
24 | +150 B | ||
25 | +151 B | ||
26 | +152 B | ||
27 | +153 B | ||
28 | +160 B | ||
29 | +162 B | ||
30 | +171 B | ||
31 | +172 B | ||
32 | +173 B | ||
33 | +201 B | ||
34 | +202 B | ||
35 | +240 B | ||
36 | +241 B | ||
37 | +242 B | ||
38 | +260 B | ||
39 | +261 B | ||
40 | +262 B | ||
41 | +270 B | ||
42 | +271 B | ||
43 | +272 B | ||
44 | +273 B | ||
45 | +301 B | ||
46 | +302 B | ||
47 | +303 B | ||
48 | +320 B | ||
49 | +333 B | ||
50 | +340 B | ||
51 | +341 B | ||
52 | +342 B | ||
53 | +343 B | ||
54 | +350 B | ||
55 | +360 B | ||
56 | +362 B | ||
57 | +370 B | ||
58 | +400 B | ||
59 | +401 B | ||
60 | +402 B | ||
61 | +405 B | ||
62 | +406 B | ||
63 | +420 B | ||
64 | +421 B | ||
65 | +440 B | ||
66 | +441 B | ||
67 | +452 B | ||
68 | +461 B | ||
69 | +463 B | ||
70 | +470 B | ||
71 | +472 B | ||
72 | +500 B | ||
73 | +501 B | ||
74 | +502 B | ||
75 | +503 B | ||
76 | +504 B | ||
77 | +505 B | ||
78 | +506 B | ||
79 | +507 B | ||
80 | +540 B | ||
81 | +541 B | ||
82 | +542 B | ||
83 | +571 B | ||
84 | +600 B | ||
85 | +601 B | ||
86 | +602 B | ||
87 | +603 B | ||
88 | +604 B | ||
89 | +605 B | ||
90 | +606 B | ||
91 | +640 B | ||
92 | +641 B | ||
93 | +643 B | ||
94 | +650 B | ||
95 | +651 B | ||
96 | +652 B | ||
97 | +653 B | ||
98 | +654 B | ||
99 | +661 B | ||
100 | +662 B | ||
101 | +670 B | ||
102 | +672 B | ||
103 | +673 B | ||
104 | +674 B | ||
105 | +700 B | ||
106 | +701 B | ||
107 | +702 B | ||
108 | +704 B | ||
109 | +705 B | ||
110 | +707 B | ||
111 | +708 B | ||
112 | +710 B | ||
113 | +720 B | ||
114 | +721 B | ||
115 | +740 B | ||
116 | +741 B | ||
117 | +750 B | ||
118 | +751 B | ||
119 | +752 B | ||
120 | +753 B | ||
121 | +761 B | ||
122 | +771 B | ||
123 | +773 B | ||
124 | +774 B | ||
125 | +0017 G | ||
126 | +1014 G | ||
127 | +1017 G | ||
128 | +1020 G | ||
129 | +1111 G | ||
130 | +1113 G | ||
131 | +1114 G | ||
132 | +1115 G | ||
133 | +1116 G | ||
134 | +1119 G | ||
135 | +1120 G | ||
136 | +1122 G | ||
137 | +1124 G | ||
138 | +1126 G | ||
139 | +1127 G | ||
140 | +1128 G | ||
141 | +1129 G | ||
142 | +1130 G | ||
143 | +1131 G | ||
144 | +1132 G | ||
145 | +1133 G | ||
146 | +1135 G | ||
147 | +1136 G | ||
148 | +1137 G | ||
149 | +1138 G | ||
150 | +1139 G | ||
151 | +1140 G | ||
152 | +1141 G | ||
153 | +1142 G | ||
154 | +1143 G | ||
155 | +1144 G | ||
156 | +1154 G | ||
157 | +1155 G | ||
158 | +1156 G | ||
159 | +1162 G | ||
160 | +1164 G | ||
161 | +1165 G | ||
162 | +1167 G | ||
163 | +1213 G | ||
164 | +1218 G | ||
165 | +1221 G | ||
166 | +1222 G | ||
167 | +1224 G | ||
168 | +1226 G | ||
169 | +1227 G | ||
170 | +1711 G | ||
171 | +2012 G | ||
172 | +2013 G | ||
173 | +2014 G | ||
174 | +2015 G | ||
175 | +2016 G | ||
176 | +2112 G | ||
177 | +2113 G | ||
178 | +2114 G | ||
179 | +2115 G | ||
180 | +2211 G | ||
181 | +2221 G | ||
182 | +2222 G | ||
183 | +2224 G | ||
184 | +2227 G | ||
185 | +2230 G | ||
186 | +2233 G | ||
187 | +2234 G | ||
188 | +2235 G | ||
189 | +2311 G | ||
190 | +2312 G | ||
191 | +2412 G | ||
192 | +2413 G | ||
193 | +2415 G | ||
194 | +8221 G | ||
195 | +3011 G | ||
196 | +3012 G | ||
197 | +3212 G | ||
198 | +3214 G | ||
199 | +3216 G | ||
200 | +3217 G | ||
201 | +3220 G | ||
202 | +3313 G | ||
203 | +3314 G | ||
204 | +3315 G | ||
205 | +3316 G | ||
206 | +3317 G | ||
207 | +3318 G | ||
208 | +3319 G | ||
209 | +3321 G | ||
210 | +3322 G | ||
211 | +3411 G | ||
212 | +3412 G | ||
213 | +3413 G | ||
214 | +3414 G | ||
215 | +3416 G | ||
216 | +3417 G | ||
217 | +3422 G | ||
218 | +3425 G | ||
219 | +3426 G | ||
220 | +8331 G | ||
221 | +4211 G | ||
222 | +4212 G | ||
223 | +4318 G | ||
224 | +4319 G | ||
225 | +4412 G | ||
226 | +4419 G | ||
227 | +4432 G | ||
228 | +4433 G | ||
229 | +4435 G | ||
230 | +8441 G | ||
231 | +5012 G | ||
232 | +5413 G | ||
233 | +5511 G | ||
234 | +5513 G | ||
235 | +5515 G | ||
236 | +5516 G | ||
237 | +5517 G | ||
238 | +5519 G | ||
239 | +5522 G | ||
240 | +5523 G | ||
241 | +5524 G | ||
242 | +5525 G | ||
243 | +5528 G | ||
244 | +5530 G | ||
245 | +5531 G | ||
246 | +5534 G | ||
247 | +5535 G | ||
248 | +5536 G | ||
249 | +5537 G | ||
250 | +5615 G | ||
251 | +5616 G | ||
252 | +5617 G | ||
253 | +5618 G | ||
254 | +5619 G | ||
255 | +5620 G | ||
256 | +5621 G | ||
257 | +5623 G | ||
258 | +5624 G | ||
259 | +5625 G | ||
260 | +5626 G | ||
261 | +5627 G | ||
262 | +5630 G | ||
263 | +5633 G | ||
264 | +5712 G | ||
265 | +5713 G | ||
266 | +5714 G | ||
267 | +8541 G | ||
268 | +8551 G | ||
269 | +8552 G | ||
270 | +6211 G | ||
271 | +6411 G | ||
272 | +6511 G | ||
273 | +6512 G | ||
274 | +6513 G | ||
275 | +6514 G | ||
276 | +6515 G | ||
277 | +6516 G | ||
278 | +6611 G | ||
279 | +6613 G | ||
280 | +6614 G | ||
281 | +6615 G | ||
282 | +6616 G | ||
283 | +6617 G | ||
284 | +6620 G | ||
285 | +6623 G | ||
286 | +6624 G | ||
287 | +6625 G | ||
288 | +6627 G | ||
289 | +6628 G | ||
290 | +6629 G | ||
291 | +6630 G | ||
292 | +6631 G | ||
293 | +6632 G | ||
294 | +6635 G | ||
295 | +6637 G | ||
296 | +6638 G | ||
297 | +6640 G | ||
298 | +6642 G | ||
299 | +6645 G | ||
300 | +6647 G | ||
301 | +6648 G | ||
302 | +6649 G | ||
303 | +6654 G | ||
304 | +6657 G | ||
305 | +6712 G | ||
306 | +6714 G | ||
307 | +6715 G | ||
308 | +6716 G | ||
309 | +7011 G | ||
310 | +7013 G | ||
311 | +7016 G | ||
312 | +7017 G | ||
313 | +7018 G | ||
314 | +7019 G | ||
315 | +7021 G | ||
316 | +7022 G | ||
317 | +7024 G | ||
318 | +7025 G | ||
319 | +7211 G | ||
320 | +7212 G | ||
321 | +7611 G | ||
322 | +7612 G | ||
323 | +7613 G | ||
324 | +7711 G | ||
325 | +7713 G | ||
326 | +7715 G | ||
327 | +7719 G | ||
328 | +7720 G | ||
329 | +7722 G | ||
330 | +7723 G | ||
331 | +7726 G | ||
332 | +7727 G | ||
333 | +7728 G | ||
334 | +7730 G | ||
335 | +7734 G | ||
336 | +7737 G | ||
337 | +7738 G | ||
338 | +7739 G | ||
339 | +8761 G | ||
340 | +8771 G | ||
341 | +8772 G | ||
342 | +8774 G | ||
343 | +8777 G | ||
344 | +9401 R | ||
345 | +9403 R | ||
346 | +9404 R | ||
347 | +9408 R | ||
348 | +9701 R | ||
349 | +9703 R | ||
350 | +9707 R | ||
351 | +9709 R | ||
352 | +9711A R | ||
353 | +9714 R | ||
354 | +N13 N | ||
355 | +N15 N | ||
356 | +N16 N | ||
357 | +N26 N | ||
358 | +N30 N | ||
359 | +N37 N | ||
360 | +N61 N | ||
361 | +N62 N | ||
362 | +N65 N | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
html/대여화면2.html
deleted
100644 → 0
1 | -<!DOCTYPE html> | ||
2 | -<html> | ||
3 | -<head> | ||
4 | - <title>대여화면2</title> | ||
5 | -</head> | ||
6 | -<style> | ||
7 | -body { | ||
8 | - background-color: rgb(230, 243, 255); | ||
9 | -} | ||
10 | -img { | ||
11 | - display:block; | ||
12 | - margin:auto; | ||
13 | -} | ||
14 | -input[type=text] { | ||
15 | - width: 300px; | ||
16 | - box-sizing: border-box; | ||
17 | - border: 3px solid lightgray; | ||
18 | - border-radius: 4px; | ||
19 | - font-size: 16px; | ||
20 | - background-color: rgb(230, 243, 255); | ||
21 | - background-image: searchicon.png; | ||
22 | - background-position: 10px 10px; | ||
23 | - background-repeat: no-repeat; | ||
24 | - padding: 12px 20px 12px 40px; | ||
25 | - -webkit-transition: width 0.4s ease-in-out; | ||
26 | - transition: width 0.4s ease-in-out; | ||
27 | -} | ||
28 | - | ||
29 | -input[type=text]:focus { | ||
30 | - width: 50%; | ||
31 | -} | ||
32 | -#btn1 { | ||
33 | - width: 300px; | ||
34 | - height: 50px; | ||
35 | - font-size:25px; | ||
36 | - font-family: '배달의민족 도현'; | ||
37 | - color: gray; | ||
38 | - background: white; | ||
39 | - border: solid 5px white; | ||
40 | - border-radius: 5px; | ||
41 | -} | ||
42 | - | ||
43 | -</style> | ||
44 | - | ||
45 | -<body> | ||
46 | - | ||
47 | -<br><br> | ||
48 | -<img style="border-radius:15px;" width="300px;" src="캡처6.png"/> | ||
49 | -<form> | ||
50 | - | ||
51 | -<br> | ||
52 | - | ||
53 | -<center><input type="text" name="search" placeholder="Search.."><image width="30px"src="searchicon.png"></center><br> | ||
54 | - | ||
55 | -<center><button id="btn1">강의실</button></center><br> | ||
56 | -<center><button id="btn1">회의 공간</button></center><br> | ||
57 | -<center><button id="btn1">체육 시설</button></center><br> | ||
58 | -<center><button id="btn1">예술 / 문화 시설</button></center> | ||
59 | - | ||
60 | -<img width="100;" height="70;" align="bottom;" src="khu.png"/> | ||
61 | - | ||
62 | -</form> | ||
63 | - | ||
64 | - | ||
65 | - | ||
66 | -</body> | ||
67 | - | ||
68 | -</html> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
html/처음화면.html
deleted
100644 → 0
1 | -<!DOCTYPE html> | ||
2 | -<html> | ||
3 | -<head> | ||
4 | - <title>처음화면</title> | ||
5 | -</head> | ||
6 | -<style> | ||
7 | -body { | ||
8 | - background-color: rgb(230, 243, 255); | ||
9 | -} | ||
10 | -img { | ||
11 | - display:block; | ||
12 | - margin:auto; | ||
13 | - border-radius: 50%; | ||
14 | - width: 350px; | ||
15 | - height: 340px; | ||
16 | -} | ||
17 | - | ||
18 | -</style> | ||
19 | - | ||
20 | -<body> | ||
21 | - | ||
22 | -<br><br><br><br><br> | ||
23 | -<img src="캡처5.png"/> | ||
24 | - | ||
25 | -</body> | ||
26 | - | ||
27 | -</html> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
static/WebFont.ttf
0 → 100644
No preview for this file type
static/WebFont.woff
0 → 100644
No preview for this file type
static/WebFont.woff2
0 → 100644
No preview for this file type
static/datetimepicker/.travis.yml
0 → 100644
static/datetimepicker/MIT-LICENSE.txt
0 → 100644
1 | +Copyright (c) 2013 http://xdsoft.net | ||
2 | + | ||
3 | +Permission is hereby granted, free of charge, to any person obtaining a copy | ||
4 | +of this software and associated documentation files (the "Software"), to deal | ||
5 | +in the Software without restriction, including without limitation the rights | ||
6 | +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
7 | +copies of the Software, and to permit persons to whom the Software is | ||
8 | +furnished to do so, subject to the following conditions: | ||
9 | + | ||
10 | +The above copyright notice and this permission notice shall be included in | ||
11 | +all copies or substantial portions of the Software. | ||
12 | + | ||
13 | +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
14 | +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
15 | +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
16 | +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
17 | +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
18 | +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
19 | +THE SOFTWARE. | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
static/datetimepicker/README.md
0 → 100644
1 | +# jQuery DateTimePicker | ||
2 | +[Demo and Documentation](https://xdsoft.net/jqplugins/datetimepicker/) | ||
3 | + | ||
4 | +[![Build Status](https://travis-ci.org/xdan/datetimepicker.svg?branch=master)](https://travis-ci.org/xdan/datetimepicker) | ||
5 | +[![npm version](https://badge.fury.io/js/jquery-datetimepicker.svg)](https://badge.fury.io/js/jquery-datetimepicker) | ||
6 | +[![npm](https://img.shields.io/npm/dm/jquery-datetimepicker.svg)](https://www.npmjs.com/package/jquery-datetimepicker) | ||
7 | + | ||
8 | + | ||
9 | + | ||
10 | +PLEASE. Help me update documentation. | ||
11 | +[Doc.tpl](https://github.com/xdan/datetimepicker/blob/master/doc.tpl) | ||
12 | +This file will be automatically displayed on the site | ||
13 | + | ||
14 | +# Installation | ||
15 | + | ||
16 | +```bash | ||
17 | +npm install jquery-datetimepicker | ||
18 | +``` | ||
19 | +OR | ||
20 | +```bash | ||
21 | +yarn add jquery-datetimepicker | ||
22 | +``` | ||
23 | +or download [zip](https://github.com/xdan/datetimepicker/releases) | ||
24 | +# datetimepicker | ||
25 | +============== | ||
26 | + | ||
27 | +**!!! The latest version of the options 'lang' obsolete. The language setting is now global. !!!** | ||
28 | + | ||
29 | +Use this: | ||
30 | +```javascript | ||
31 | +jQuery.datetimepicker.setLocale('en'); | ||
32 | +``` | ||
33 | +[Documentation][doc] | ||
34 | + | ||
35 | +jQuery Plugin Date and Time Picker | ||
36 | + | ||
37 | +DateTimePicker | ||
38 | + | ||
39 | +![ScreenShot](https://raw.github.com/xdan/datetimepicker/master/screen/1.png) | ||
40 | + | ||
41 | +DatePicker | ||
42 | + | ||
43 | +![ScreenShot](https://raw.github.com/xdan/datetimepicker/master/screen/2.png) | ||
44 | + | ||
45 | +TimePicker | ||
46 | + | ||
47 | +![ScreenShot](https://raw.github.com/xdan/datetimepicker/master/screen/3.png) | ||
48 | + | ||
49 | +Options to highlight individual dates or periods | ||
50 | + | ||
51 | +![ScreenShot](https://raw.github.com/Mingpao/datetimepicker/master/screen/4.png) | ||
52 | + | ||
53 | +![ScreenShot](https://raw.github.com/Mingpao/datetimepicker/master/screen/5.png) | ||
54 | + | ||
55 | +![ScreenShot](https://raw.github.com/Mingpao/datetimepicker/master/screen/6.png) | ||
56 | + | ||
57 | +[doc]: https://xdsoft.net/jqplugins/datetimepicker/ | ||
58 | + | ||
59 | +### JS Build help | ||
60 | + | ||
61 | +**Requires Node and NPM** [Download and install node.js](http://nodejs.org/download/). | ||
62 | + | ||
63 | +Install: | ||
64 | + | ||
65 | +1. Install `bower` globally with `npm install -g bower`. | ||
66 | +2. Run `npm install`. npm will look at `package.json` and automatically install the necessary dependencies. | ||
67 | +3. Run `bower install`, which installs front-end packages defined in `bower.json`. | ||
68 | + | ||
69 | +Notice: If you use Bower v1.5.2, you will get error: `The "main" field cannot contain minified files` | ||
70 | +You can regress to version 1.3.12 | ||
71 | + | ||
72 | +1. `npm uninstall bower -g` | ||
73 | +2. `npm install -g bower@1.3.12` | ||
74 | + | ||
75 | +Build: | ||
76 | + | ||
77 | +First install npm requirements: `npm install -g uglifycss concat-cli` | ||
78 | +Then build the files: `npm run build` | ||
79 | + | ||
80 | +When build completed, you'll have the following files: | ||
81 | +- **build/jquery.datetimepicker.full.js** - browser file | ||
82 | +- **build/jquery.datetimepicker.full.min.js** - browser minified file | ||
83 | +- **build/jquery.datetimepicker.min.js** - amd module style minified file |
static/datetimepicker/bower.json
0 → 100644
1 | +{ | ||
2 | + "name": "datetimepicker", | ||
3 | + "version": "2.5.11", | ||
4 | + "main": [ | ||
5 | + "build/jquery.datetimepicker.full.min.js", | ||
6 | + "jquery.datetimepicker.css" | ||
7 | + ], | ||
8 | + "ignore": [ | ||
9 | + "**/screen", | ||
10 | + "**/datetimepicker.jquery.json", | ||
11 | + "**/*.png", | ||
12 | + "**/*.txt", | ||
13 | + "**/*.md", | ||
14 | + "**/*.html", | ||
15 | + "**/*.tpl", | ||
16 | + "**/jquery.js", | ||
17 | + "bower_components", | ||
18 | + "node_modules" | ||
19 | + ], | ||
20 | + "keywords": [ | ||
21 | + "calendar", | ||
22 | + "date", | ||
23 | + "time", | ||
24 | + "form", | ||
25 | + "datetime", | ||
26 | + "datepicker", | ||
27 | + "timepicker", | ||
28 | + "datetimepicker", | ||
29 | + "validation", | ||
30 | + "ui", | ||
31 | + "scroller", | ||
32 | + "picker", | ||
33 | + "i18n", | ||
34 | + "input", | ||
35 | + "jquery", | ||
36 | + "touch" | ||
37 | + ], | ||
38 | + "authors": [ | ||
39 | + { | ||
40 | + "name": "Chupurnov Valeriy", | ||
41 | + "email": "chupurnov@gmail.com", | ||
42 | + "homepage": "http://xdsoft.net/contacts.html" | ||
43 | + } | ||
44 | + ], | ||
45 | + "dependencies": { | ||
46 | + "jquery": ">= 1.7.2", | ||
47 | + "jquery-mousewheel": ">= 3.1.13", | ||
48 | + "php-date-formatter": ">= 1.3.3" | ||
49 | + }, | ||
50 | + "license": "MIT", | ||
51 | + "homepage": "http://xdsoft.net/jqplugins/datetimepicker/", | ||
52 | + "repository": { | ||
53 | + "type": "git", | ||
54 | + "url": "git://github.com:xdan/datetimepicker.git" | ||
55 | + } | ||
56 | +} |
This diff could not be displayed because it is too large.
1 | +var DateFormatter;!function(){"use strict";var e,t,a,r,n,o,i;o=864e5,i=3600,e=function(e,t){return"string"==typeof e&&"string"==typeof t&&e.toLowerCase()===t.toLowerCase()},t=function(e,a,r){var n=r||"0",o=e.toString();return o.length<a?t(n+o,a):o},a=function(e){var t,r;for(e=e||{},t=1;t<arguments.length;t++)if(r=arguments[t])for(var n in r)r.hasOwnProperty(n)&&("object"==typeof r[n]?a(e[n],r[n]):e[n]=r[n]);return e},r=function(e,t){for(var a=0;a<t.length;a++)if(t[a].toLowerCase()===e.toLowerCase())return a;return-1},n={dateSettings:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],meridiem:["AM","PM"],ordinal:function(e){var t=e%10,a={1:"st",2:"nd",3:"rd"};return 1!==Math.floor(e%100/10)&&a[t]?a[t]:"th"}},separators:/[ \-+\/\.T:@]/g,validParts:/[dDjlNSwzWFmMntLoYyaABgGhHisueTIOPZcrU]/g,intParts:/[djwNzmnyYhHgGis]/g,tzParts:/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,tzClip:/[^-+\dA-Z]/g},(DateFormatter=function(e){var t=this,r=a(n,e);t.dateSettings=r.dateSettings,t.separators=r.separators,t.validParts=r.validParts,t.intParts=r.intParts,t.tzParts=r.tzParts,t.tzClip=r.tzClip}).prototype={constructor:DateFormatter,getMonth:function(e){var t,a=this;return 0===(t=r(e,a.dateSettings.monthsShort)+1)&&(t=r(e,a.dateSettings.months)+1),t},parseDate:function(t,a){var r,n,o,i,s,u,d,l,f,c,m=this,h=!1,g=!1,p=m.dateSettings,D={date:null,year:null,month:null,day:null,hour:0,min:0,sec:0};if(!t)return null;if(t instanceof Date)return t;if("U"===a)return(o=parseInt(t))?new Date(1e3*o):t;switch(typeof t){case"number":return new Date(t);case"string":break;default:return null}if(!(r=a.match(m.validParts))||0===r.length)throw new Error("Invalid date format definition.");for(n=t.replace(m.separators,"\0").split("\0"),o=0;o<n.length;o++)switch(i=n[o],s=parseInt(i),r[o]){case"y":case"Y":if(!s)return null;f=i.length,D.year=2===f?parseInt((70>s?"20":"19")+i):s,h=!0;break;case"m":case"n":case"M":case"F":if(isNaN(s)){if(!((u=m.getMonth(i))>0))return null;D.month=u}else{if(!(s>=1&&12>=s))return null;D.month=s}h=!0;break;case"d":case"j":if(!(s>=1&&31>=s))return null;D.day=s,h=!0;break;case"g":case"h":if(d=r.indexOf("a")>-1?r.indexOf("a"):r.indexOf("A")>-1?r.indexOf("A"):-1,c=n[d],d>-1)l=e(c,p.meridiem[0])?0:e(c,p.meridiem[1])?12:-1,s>=1&&12>=s&&l>-1?D.hour=s+l-1:s>=0&&23>=s&&(D.hour=s);else{if(!(s>=0&&23>=s))return null;D.hour=s}g=!0;break;case"G":case"H":if(!(s>=0&&23>=s))return null;D.hour=s,g=!0;break;case"i":if(!(s>=0&&59>=s))return null;D.min=s,g=!0;break;case"s":if(!(s>=0&&59>=s))return null;D.sec=s,g=!0}if(!0===h&&D.year&&D.month&&D.day)D.date=new Date(D.year,D.month-1,D.day,D.hour,D.min,D.sec,0);else{if(!0!==g)return null;D.date=new Date(0,0,0,D.hour,D.min,D.sec,0)}return D.date},guessDate:function(e,t){if("string"!=typeof e)return e;var a,r,n,o,i,s,u=this,d=e.replace(u.separators,"\0").split("\0"),l=/^[djmn]/g,f=t.match(u.validParts),c=new Date,m=0;if(!l.test(f[0]))return e;for(n=0;n<d.length;n++){if(m=2,i=d[n],s=parseInt(i.substr(0,2)),isNaN(s))return null;switch(n){case 0:"m"===f[0]||"n"===f[0]?c.setMonth(s-1):c.setDate(s);break;case 1:"m"===f[0]||"n"===f[0]?c.setDate(s):c.setMonth(s-1);break;case 2:if(r=c.getFullYear(),a=i.length,m=4>a?a:4,!(r=parseInt(4>a?r.toString().substr(0,4-a)+i:i.substr(0,4))))return null;c.setFullYear(r);break;case 3:c.setHours(s);break;case 4:c.setMinutes(s);break;case 5:c.setSeconds(s)}(o=i.substr(m)).length>0&&d.splice(n+1,0,o)}return c},parseFormat:function(e,a){var r,n=this,s=n.dateSettings,u=/\\?(.?)/gi,d=function(e,t){return r[e]?r[e]():t};return r={d:function(){return t(r.j(),2)},D:function(){return s.daysShort[r.w()]},j:function(){return a.getDate()},l:function(){return s.days[r.w()]},N:function(){return r.w()||7},w:function(){return a.getDay()},z:function(){var e=new Date(r.Y(),r.n()-1,r.j()),t=new Date(r.Y(),0,1);return Math.round((e-t)/o)},W:function(){var e=new Date(r.Y(),r.n()-1,r.j()-r.N()+3),a=new Date(e.getFullYear(),0,4);return t(1+Math.round((e-a)/o/7),2)},F:function(){return s.months[a.getMonth()]},m:function(){return t(r.n(),2)},M:function(){return s.monthsShort[a.getMonth()]},n:function(){return a.getMonth()+1},t:function(){return new Date(r.Y(),r.n(),0).getDate()},L:function(){var e=r.Y();return e%4==0&&e%100!=0||e%400==0?1:0},o:function(){var e=r.n(),t=r.W();return r.Y()+(12===e&&9>t?1:1===e&&t>9?-1:0)},Y:function(){return a.getFullYear()},y:function(){return r.Y().toString().slice(-2)},a:function(){return r.A().toLowerCase()},A:function(){var e=r.G()<12?0:1;return s.meridiem[e]},B:function(){var e=a.getUTCHours()*i,r=60*a.getUTCMinutes(),n=a.getUTCSeconds();return t(Math.floor((e+r+n+i)/86.4)%1e3,3)},g:function(){return r.G()%12||12},G:function(){return a.getHours()},h:function(){return t(r.g(),2)},H:function(){return t(r.G(),2)},i:function(){return t(a.getMinutes(),2)},s:function(){return t(a.getSeconds(),2)},u:function(){return t(1e3*a.getMilliseconds(),6)},e:function(){return/\((.*)\)/.exec(String(a))[1]||"Coordinated Universal Time"},I:function(){return new Date(r.Y(),0)-Date.UTC(r.Y(),0)!=new Date(r.Y(),6)-Date.UTC(r.Y(),6)?1:0},O:function(){var e=a.getTimezoneOffset(),r=Math.abs(e);return(e>0?"-":"+")+t(100*Math.floor(r/60)+r%60,4)},P:function(){var e=r.O();return e.substr(0,3)+":"+e.substr(3,2)},T:function(){return(String(a).match(n.tzParts)||[""]).pop().replace(n.tzClip,"")||"UTC"},Z:function(){return 60*-a.getTimezoneOffset()},c:function(){return"Y-m-d\\TH:i:sP".replace(u,d)},r:function(){return"D, d M Y H:i:s O".replace(u,d)},U:function(){return a.getTime()/1e3||0}},d(e,e)},formatDate:function(e,t){var a,r,n,o,i,s=this,u="";if("string"==typeof e&&!(e=s.parseDate(e,t)))return null;if(e instanceof Date){for(n=t.length,a=0;n>a;a++)"S"!==(i=t.charAt(a))&&"\\"!==i&&(a>0&&"\\"===t.charAt(a-1)?u+=i:(o=s.parseFormat(i,e),a!==n-1&&s.intParts.test(i)&&"S"===t.charAt(a+1)&&(r=parseInt(o)||0,o+=s.dateSettings.ordinal(r)),u+=o));return u}return""}}}();var datetimepickerFactory=function(e){"use strict";function t(e,t,a){this.date=e,this.desc=t,this.style=a}var a={i18n:{ar:{months:["كانون الثاني","شباط","آذار","نيسان","مايو","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],dayOfWeekShort:["ن","ث","ع","خ","ج","س","ح"],dayOfWeek:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد"]},ro:{months:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],dayOfWeekShort:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],dayOfWeek:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"]},id:{months:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],dayOfWeekShort:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],dayOfWeek:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"]},is:{months:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],dayOfWeekShort:["Sun","Mán","Þrið","Mið","Fim","Fös","Lau"],dayOfWeek:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"]},bg:{months:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],dayOfWeekShort:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],dayOfWeek:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"]},fa:{months:["فروردین","اردیبهشت","خرداد","تیر","مرداد","شهریور","مهر","آبان","آذر","دی","بهمن","اسفند"],dayOfWeekShort:["یکشنبه","دوشنبه","سه شنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],dayOfWeek:["یکشنبه","دوشنبه","سهشنبه","چهارشنبه","پنجشنبه","جمعه","شنبه","یکشنبه"]},ru:{months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],dayOfWeekShort:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],dayOfWeek:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"]},uk:{months:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],dayOfWeekShort:["Ндл","Пнд","Втр","Срд","Чтв","Птн","Сбт"],dayOfWeek:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"]},en:{months:["January","February","March","April","May","June","July","August","September","October","November","December"],dayOfWeekShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},el:{months:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],dayOfWeekShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],dayOfWeek:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"]},de:{months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],dayOfWeekShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayOfWeek:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]},nl:{months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],dayOfWeekShort:["zo","ma","di","wo","do","vr","za"],dayOfWeek:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"]},tr:{months:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],dayOfWeekShort:["Paz","Pts","Sal","Çar","Per","Cum","Cts"],dayOfWeek:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"]},fr:{months:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],dayOfWeekShort:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],dayOfWeek:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]},es:{months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],dayOfWeekShort:["Dom","Lun","Mar","Mié","Jue","Vie","Sáb"],dayOfWeek:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"]},th:{months:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],dayOfWeekShort:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],dayOfWeek:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัส","ศุกร์","เสาร์","อาทิตย์"]},pl:{months:["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],dayOfWeekShort:["nd","pn","wt","śr","cz","pt","sb"],dayOfWeek:["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"]},pt:{months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],dayOfWeekShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sab"],dayOfWeek:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"]},ch:{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"]},se:{months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],dayOfWeekShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"]},km:{months:["មករា","កុម្ភៈ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],dayOfWeekShort:["អាទិ","ច័ន្ទ","អង្គារ","ពុធ","ព្រហ","សុក្រ","សៅរ៍"],dayOfWeek:["អាទិត្យ","ច័ន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍"]},kr:{months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayOfWeekShort:["일","월","화","수","목","금","토"],dayOfWeek:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"]},it:{months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],dayOfWeekShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayOfWeek:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"]},da:{months:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],dayOfWeekShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayOfWeek:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"]},no:{months:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"],dayOfWeekShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayOfWeek:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"]},ja:{months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayOfWeekShort:["日","月","火","水","木","金","土"],dayOfWeek:["日曜","月曜","火曜","水曜","木曜","金曜","土曜"]},vi:{months:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],dayOfWeekShort:["CN","T2","T3","T4","T5","T6","T7"],dayOfWeek:["Chủ nhật","Thứ hai","Thứ ba","Thứ tư","Thứ năm","Thứ sáu","Thứ bảy"]},sl:{months:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],dayOfWeekShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],dayOfWeek:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"]},cs:{months:["Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],dayOfWeekShort:["Ne","Po","Út","St","Čt","Pá","So"]},hu:{months:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],dayOfWeekShort:["Va","Hé","Ke","Sze","Cs","Pé","Szo"],dayOfWeek:["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"]},az:{months:["Yanvar","Fevral","Mart","Aprel","May","Iyun","Iyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],dayOfWeekShort:["B","Be","Ça","Ç","Ca","C","Ş"],dayOfWeek:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə"]},bs:{months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],dayOfWeekShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayOfWeek:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"]},ca:{months:["Gener","Febrer","Març","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"],dayOfWeekShort:["Dg","Dl","Dt","Dc","Dj","Dv","Ds"],dayOfWeek:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"]},"en-GB":{months:["January","February","March","April","May","June","July","August","September","October","November","December"],dayOfWeekShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},et:{months:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],dayOfWeekShort:["P","E","T","K","N","R","L"],dayOfWeek:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"]},eu:{months:["Urtarrila","Otsaila","Martxoa","Apirila","Maiatza","Ekaina","Uztaila","Abuztua","Iraila","Urria","Azaroa","Abendua"],dayOfWeekShort:["Ig.","Al.","Ar.","Az.","Og.","Or.","La."],dayOfWeek:["Igandea","Astelehena","Asteartea","Asteazkena","Osteguna","Ostirala","Larunbata"]},fi:{months:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],dayOfWeekShort:["Su","Ma","Ti","Ke","To","Pe","La"],dayOfWeek:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"]},gl:{months:["Xan","Feb","Maz","Abr","Mai","Xun","Xul","Ago","Set","Out","Nov","Dec"],dayOfWeekShort:["Dom","Lun","Mar","Mer","Xov","Ven","Sab"],dayOfWeek:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"]},hr:{months:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],dayOfWeekShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayOfWeek:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"]},ko:{months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayOfWeekShort:["일","월","화","수","목","금","토"],dayOfWeek:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"]},lt:{months:["Sausio","Vasario","Kovo","Balandžio","Gegužės","Birželio","Liepos","Rugpjūčio","Rugsėjo","Spalio","Lapkričio","Gruodžio"],dayOfWeekShort:["Sek","Pir","Ant","Tre","Ket","Pen","Šeš"],dayOfWeek:["Sekmadienis","Pirmadienis","Antradienis","Trečiadienis","Ketvirtadienis","Penktadienis","Šeštadienis"]},lv:{months:["Janvāris","Februāris","Marts","Aprīlis ","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],dayOfWeekShort:["Sv","Pr","Ot","Tr","Ct","Pk","St"],dayOfWeek:["Svētdiena","Pirmdiena","Otrdiena","Trešdiena","Ceturtdiena","Piektdiena","Sestdiena"]},mk:{months:["јануари","февруари","март","април","мај","јуни","јули","август","септември","октомври","ноември","декември"],dayOfWeekShort:["нед","пон","вто","сре","чет","пет","саб"],dayOfWeek:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"]},mn:{months:["1-р сар","2-р сар","3-р сар","4-р сар","5-р сар","6-р сар","7-р сар","8-р сар","9-р сар","10-р сар","11-р сар","12-р сар"],dayOfWeekShort:["Дав","Мяг","Лха","Пүр","Бсн","Бям","Ням"],dayOfWeek:["Даваа","Мягмар","Лхагва","Пүрэв","Баасан","Бямба","Ням"]},"pt-BR":{months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],dayOfWeekShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayOfWeek:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"]},sk:{months:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],dayOfWeekShort:["Ne","Po","Ut","St","Št","Pi","So"],dayOfWeek:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"]},sq:{months:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],dayOfWeekShort:["Die","Hën","Mar","Mër","Enj","Pre","Shtu"],dayOfWeek:["E Diel","E Hënë","E Martē","E Mërkurë","E Enjte","E Premte","E Shtunë"]},"sr-YU":{months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],dayOfWeekShort:["Ned","Pon","Uto","Sre","čet","Pet","Sub"],dayOfWeek:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"]},sr:{months:["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],dayOfWeekShort:["нед","пон","уто","сре","чет","пет","суб"],dayOfWeek:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"]},sv:{months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],dayOfWeekShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],dayOfWeek:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"]},"zh-TW":{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},zh:{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},ug:{months:["1-ئاي","2-ئاي","3-ئاي","4-ئاي","5-ئاي","6-ئاي","7-ئاي","8-ئاي","9-ئاي","10-ئاي","11-ئاي","12-ئاي"],dayOfWeek:["يەكشەنبە","دۈشەنبە","سەيشەنبە","چارشەنبە","پەيشەنبە","جۈمە","شەنبە"]},he:{months:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],dayOfWeekShort:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],dayOfWeek:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת","ראשון"]},hy:{months:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],dayOfWeekShort:["Կի","Երկ","Երք","Չոր","Հնգ","Ուրբ","Շբթ"],dayOfWeek:["Կիրակի","Երկուշաբթի","Երեքշաբթի","Չորեքշաբթի","Հինգշաբթի","Ուրբաթ","Շաբաթ"]},kg:{months:["Үчтүн айы","Бирдин айы","Жалган Куран","Чын Куран","Бугу","Кулжа","Теке","Баш Оона","Аяк Оона","Тогуздун айы","Жетинин айы","Бештин айы"],dayOfWeekShort:["Жек","Дүй","Шей","Шар","Бей","Жум","Ише"],dayOfWeek:["Жекшемб","Дүйшөмб","Шейшемб","Шаршемб","Бейшемби","Жума","Ишенб"]},rm:{months:["Schaner","Favrer","Mars","Avrigl","Matg","Zercladur","Fanadur","Avust","Settember","October","November","December"],dayOfWeekShort:["Du","Gli","Ma","Me","Gie","Ve","So"],dayOfWeek:["Dumengia","Glindesdi","Mardi","Mesemna","Gievgia","Venderdi","Sonda"]},ka:{months:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],dayOfWeekShort:["კვ","ორშ","სამშ","ოთხ","ხუთ","პარ","შაბ"],dayOfWeek:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"]}},ownerDocument:document,contentWindow:window,value:"",rtl:!1,format:"Y/m/d H:i",formatTime:"H:i",formatDate:"Y/m/d",startDate:!1,step:60,monthChangeSpinner:!0,closeOnDateSelect:!1,closeOnTimeSelect:!0,closeOnWithoutClick:!0,closeOnInputClick:!0,openOnFocus:!0,timepicker:!0,datepicker:!0,weeks:!1,defaultTime:!1,defaultDate:!1,minDate:!1,maxDate:!1,minTime:!1,maxTime:!1,minDateTime:!1,maxDateTime:!1,allowTimes:[],opened:!1,initTime:!0,inline:!1,theme:"",touchMovedThreshold:5,onSelectDate:function(){},onSelectTime:function(){},onChangeMonth:function(){},onGetWeekOfYear:function(){},onChangeYear:function(){},onChangeDateTime:function(){},onShow:function(){},onClose:function(){},onGenerate:function(){},withoutCopyright:!0,inverseButton:!1,hours12:!1,next:"xdsoft_next",prev:"xdsoft_prev",dayOfWeekStart:0,parentID:"body",timeHeightInTimePicker:25,timepickerScrollbar:!0,todayButton:!0,prevButton:!0,nextButton:!0,defaultSelect:!0,scrollMonth:!0,scrollTime:!0,scrollInput:!0,lazyInit:!1,mask:!1,validateOnBlur:!0,allowBlank:!0,yearStart:1950,yearEnd:2050,monthStart:0,monthEnd:11,style:"",id:"",fixed:!1,roundTime:"round",className:"",weekends:[],highlightedDates:[],highlightedPeriods:[],allowDates:[],allowDateRe:null,disabledDates:[],disabledWeekDays:[],yearOffset:0,beforeShowDay:null,enterLikeTab:!0,showApplyButton:!1},r=null,n=null,o="en",i={meridiem:["AM","PM"]},s=function(){var t=a.i18n[o],s={days:t.dayOfWeek,daysShort:t.dayOfWeekShort,months:t.months,monthsShort:e.map(t.months,function(e){return e.substring(0,3)})};"function"==typeof DateFormatter&&(r=n=new DateFormatter({dateSettings:e.extend({},i,s)}))},u={moment:{default_options:{format:"YYYY/MM/DD HH:mm",formatDate:"YYYY/MM/DD",formatTime:"HH:mm"},formatter:{parseDate:function(e,t){if(l(t))return n.parseDate(e,t);var a=moment(e,t);return!!a.isValid()&&a.toDate()},formatDate:function(e,t){return l(t)?n.formatDate(e,t):moment(e).format(t)},formatMask:function(e){return e.replace(/Y{4}/g,"9999").replace(/Y{2}/g,"99").replace(/M{2}/g,"19").replace(/D{2}/g,"39").replace(/H{2}/g,"29").replace(/m{2}/g,"59").replace(/s{2}/g,"59")}}}};e.datetimepicker={setLocale:function(e){var t=a.i18n[e]?e:"en";o!==t&&(o=t,s())},setDateFormatter:function(t){if("string"==typeof t&&u.hasOwnProperty(t)){var n=u[t];e.extend(a,n.default_options),r=n.formatter}else r=t}};var d={RFC_2822:"D, d M Y H:i:s O",ATOM:"Y-m-dTH:i:sP",ISO_8601:"Y-m-dTH:i:sO",RFC_822:"D, d M y H:i:s O",RFC_850:"l, d-M-y H:i:s T",RFC_1036:"D, d M y H:i:s O",RFC_1123:"D, d M Y H:i:s O",RSS:"D, d M Y H:i:s O",W3C:"Y-m-dTH:i:sP"},l=function(e){return-1!==Object.values(d).indexOf(e)};e.extend(e.datetimepicker,d),s(),window.getComputedStyle||(window.getComputedStyle=function(e){return this.el=e,this.getPropertyValue=function(t){var a=/(-([a-z]))/g;return"float"===t&&(t="styleFloat"),a.test(t)&&(t=t.replace(a,function(e,t,a){return a.toUpperCase()})),e.currentStyle[t]||null},this}),Array.prototype.indexOf||(Array.prototype.indexOf=function(e,t){var a,r;for(a=t||0,r=this.length;a<r;a+=1)if(this[a]===e)return a;return-1}),Date.prototype.countDaysInMonth=function(){return new Date(this.getFullYear(),this.getMonth()+1,0).getDate()},e.fn.xdsoftScroller=function(t,a){return this.each(function(){var r,n,o,i,s,u=e(this),d=function(e){var t,a={x:0,y:0};return"touchstart"===e.type||"touchmove"===e.type||"touchend"===e.type||"touchcancel"===e.type?(t=e.originalEvent.touches[0]||e.originalEvent.changedTouches[0],a.x=t.clientX,a.y=t.clientY):"mousedown"!==e.type&&"mouseup"!==e.type&&"mousemove"!==e.type&&"mouseover"!==e.type&&"mouseout"!==e.type&&"mouseenter"!==e.type&&"mouseleave"!==e.type||(a.x=e.clientX,a.y=e.clientY),a},l=100,f=!1,c=0,m=0,h=0,g=!1,p=0,D=function(){};"hide"!==a?(e(this).hasClass("xdsoft_scroller_box")||(r=u.children().eq(0),n=u[0].clientHeight,o=r[0].offsetHeight,i=e('<div class="xdsoft_scrollbar"></div>'),s=e('<div class="xdsoft_scroller"></div>'),i.append(s),u.addClass("xdsoft_scroller_box").append(i),D=function(e){var t=d(e).y-c+p;t<0&&(t=0),t+s[0].offsetHeight>h&&(t=h-s[0].offsetHeight),u.trigger("scroll_element.xdsoft_scroller",[l?t/l:0])},s.on("touchstart.xdsoft_scroller mousedown.xdsoft_scroller",function(r){n||u.trigger("resize_scroll.xdsoft_scroller",[a]),c=d(r).y,p=parseInt(s.css("margin-top"),10),h=i[0].offsetHeight,"mousedown"===r.type||"touchstart"===r.type?(t.ownerDocument&&e(t.ownerDocument.body).addClass("xdsoft_noselect"),e([t.ownerDocument.body,t.contentWindow]).on("touchend mouseup.xdsoft_scroller",function a(){e([t.ownerDocument.body,t.contentWindow]).off("touchend mouseup.xdsoft_scroller",a).off("mousemove.xdsoft_scroller",D).removeClass("xdsoft_noselect")}),e(t.ownerDocument.body).on("mousemove.xdsoft_scroller",D)):(g=!0,r.stopPropagation(),r.preventDefault())}).on("touchmove",function(e){g&&(e.preventDefault(),D(e))}).on("touchend touchcancel",function(){g=!1,p=0}),u.on("scroll_element.xdsoft_scroller",function(e,t){n||u.trigger("resize_scroll.xdsoft_scroller",[t,!0]),t=t>1?1:t<0||isNaN(t)?0:t,s.css("margin-top",l*t),setTimeout(function(){r.css("marginTop",-parseInt((r[0].offsetHeight-n)*t,10))},10)}).on("resize_scroll.xdsoft_scroller",function(e,t,a){var d,f;n=u[0].clientHeight,o=r[0].offsetHeight,f=(d=n/o)*i[0].offsetHeight,d>1?s.hide():(s.show(),s.css("height",parseInt(f>10?f:10,10)),l=i[0].offsetHeight-s[0].offsetHeight,!0!==a&&u.trigger("scroll_element.xdsoft_scroller",[t||Math.abs(parseInt(r.css("marginTop"),10))/(o-n)]))}),u.on("mousewheel",function(e){var t=Math.abs(parseInt(r.css("marginTop"),10));return(t-=20*e.deltaY)<0&&(t=0),u.trigger("scroll_element.xdsoft_scroller",[t/(o-n)]),e.stopPropagation(),!1}),u.on("touchstart",function(e){f=d(e),m=Math.abs(parseInt(r.css("marginTop"),10))}),u.on("touchmove",function(e){if(f){e.preventDefault();var t=d(e);u.trigger("scroll_element.xdsoft_scroller",[(m-(t.y-f.y))/(o-n)])}}),u.on("touchend touchcancel",function(){f=!1,m=0})),u.trigger("resize_scroll.xdsoft_scroller",[a])):u.find(".xdsoft_scrollbar").hide()})},e.fn.datetimepicker=function(n,i){var s,u,d=this,l=48,f=57,c=96,m=105,h=17,g=46,p=13,D=27,v=8,y=37,b=38,k=39,x=40,T=9,S=116,M=65,w=67,O=86,W=90,_=89,F=!1,C=e.isPlainObject(n)||!n?e.extend(!0,{},a,n):e.extend(!0,{},a),P=0,Y=function(e){e.on("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart",function t(){e.is(":disabled")||e.data("xdsoft_datetimepicker")||(clearTimeout(P),P=setTimeout(function(){e.data("xdsoft_datetimepicker")||s(e),e.off("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart",t).trigger("open.xdsoft")},100))})};return s=function(a){function i(){var e,t=!1;return C.startDate?t=A.strToDate(C.startDate):(t=C.value||(a&&a.val&&a.val()?a.val():""))?(t=A.strToDateTime(t),C.yearOffset&&(t=new Date(t.getFullYear()-C.yearOffset,t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()))):C.defaultDate&&(t=A.strToDateTime(C.defaultDate),C.defaultTime&&(e=A.strtotime(C.defaultTime),t.setHours(e.getHours()),t.setMinutes(e.getMinutes()))),t&&A.isValidDate(t)?j.data("changed",!0):t="",t||0}function s(t){var n=function(e,t){var a=e.replace(/([\[\]\/\{\}\(\)\-\.\+]{1})/g,"\\$1").replace(/_/g,"{digit+}").replace(/([0-9]{1})/g,"{digit$1}").replace(/\{digit([0-9]{1})\}/g,"[0-$1_]{1}").replace(/\{digit[\+]\}/g,"[0-9_]{1}");return new RegExp(a).test(t)},o=function(e,a){if(!(e="string"==typeof e||e instanceof String?t.ownerDocument.getElementById(e):e))return!1;if(e.createTextRange){var r=e.createTextRange();return r.collapse(!0),r.moveEnd("character",a),r.moveStart("character",a),r.select(),!0}return!!e.setSelectionRange&&(e.setSelectionRange(a,a),!0)};t.mask&&a.off("keydown.xdsoft"),!0===t.mask&&(r.formatMask?t.mask=r.formatMask(t.format):t.mask=t.format.replace(/Y/g,"9999").replace(/F/g,"9999").replace(/m/g,"19").replace(/d/g,"39").replace(/H/g,"29").replace(/i/g,"59").replace(/s/g,"59")),"string"===e.type(t.mask)&&(n(t.mask,a.val())||(a.val(t.mask.replace(/[0-9]/g,"_")),o(a[0],0)),a.on("paste.xdsoft",function(r){var i=(r.clipboardData||r.originalEvent.clipboardData||window.clipboardData).getData("text"),s=this.value,u=this.selectionStart;return s=s.substr(0,u)+i+s.substr(u+i.length),u+=i.length,n(t.mask,s)?(this.value=s,o(this,u)):""===e.trim(s)?this.value=t.mask.replace(/[0-9]/g,"_"):a.trigger("error_input.xdsoft"),r.preventDefault(),!1}),a.on("keydown.xdsoft",function(r){var i,s=this.value,u=r.which,d=this.selectionStart,C=this.selectionEnd,P=d!==C;if(u>=l&&u<=f||u>=c&&u<=m||u===v||u===g){for(i=u===v||u===g?"_":String.fromCharCode(c<=u&&u<=m?u-l:u),u===v&&d&&!P&&(d-=1);;){var Y=t.mask.substr(d,1),A=d<t.mask.length,H=d>0;if(!(/[^0-9_]/.test(Y)&&A&&H))break;d+=u!==v||P?1:-1}if(P){var j=C-d,J=t.mask.replace(/[0-9]/g,"_"),z=J.substr(d,j).substr(1);s=s.substr(0,d)+(i+z)+s.substr(d+j)}else s=s.substr(0,d)+i+s.substr(d+1);if(""===e.trim(s))s=J;else if(d===t.mask.length)return r.preventDefault(),!1;for(d+=u===v?0:1;/[^0-9_]/.test(t.mask.substr(d,1))&&d<t.mask.length&&d>0;)d+=u===v?0:1;n(t.mask,s)?(this.value=s,o(this,d)):""===e.trim(s)?this.value=t.mask.replace(/[0-9]/g,"_"):a.trigger("error_input.xdsoft")}else if(-1!==[M,w,O,W,_].indexOf(u)&&F||-1!==[D,b,x,y,k,S,h,T,p].indexOf(u))return!0;return r.preventDefault(),!1}))}var u,d,P,Y,A,H,j=e('<div class="xdsoft_datetimepicker xdsoft_noselect"></div>'),J=e('<div class="xdsoft_copyright"><a target="_blank" href="http://xdsoft.net/jqplugins/datetimepicker/">xdsoft.net</a></div>'),z=e('<div class="xdsoft_datepicker active"></div>'),I=e('<div class="xdsoft_monthpicker"><button type="button" class="xdsoft_prev"></button><button type="button" class="xdsoft_today_button"></button><div class="xdsoft_label xdsoft_month"><span></span><i></i></div><div class="xdsoft_label xdsoft_year"><span></span><i></i></div><button type="button" class="xdsoft_next"></button></div>'),N=e('<div class="xdsoft_calendar"></div>'),L=e('<div class="xdsoft_timepicker active"><button type="button" class="xdsoft_prev"></button><div class="xdsoft_time_box"></div><button type="button" class="xdsoft_next"></button></div>'),E=L.find(".xdsoft_time_box").eq(0),R=e('<div class="xdsoft_time_variant"></div>'),V=e('<button type="button" class="xdsoft_save_selected blue-gradient-button">Save Selected</button>'),B=e('<div class="xdsoft_select xdsoft_monthselect"><div></div></div>'),G=e('<div class="xdsoft_select xdsoft_yearselect"><div></div></div>'),U=!1,q=0;C.id&&j.attr("id",C.id),C.style&&j.attr("style",C.style),C.weeks&&j.addClass("xdsoft_showweeks"),C.rtl&&j.addClass("xdsoft_rtl"),j.addClass("xdsoft_"+C.theme),j.addClass(C.className),I.find(".xdsoft_month span").after(B),I.find(".xdsoft_year span").after(G),I.find(".xdsoft_month,.xdsoft_year").on("touchstart mousedown.xdsoft",function(t){var a,r,n=e(this).find(".xdsoft_select").eq(0),o=0,i=0,s=n.is(":visible");for(I.find(".xdsoft_select").hide(),A.currentTime&&(o=A.currentTime[e(this).hasClass("xdsoft_month")?"getMonth":"getFullYear"]()),n[s?"hide":"show"](),a=n.find("div.xdsoft_option"),r=0;r<a.length&&a.eq(r).data("value")!==o;r+=1)i+=a[0].offsetHeight;return n.xdsoftScroller(C,i/(n.children()[0].offsetHeight-n[0].clientHeight)),t.stopPropagation(),!1});var X=function(e){var t=e.originalEvent,a=t.touches?t.touches[0]:t;this.touchStartPosition=this.touchStartPosition||a;var r=Math.abs(this.touchStartPosition.clientX-a.clientX),n=Math.abs(this.touchStartPosition.clientY-a.clientY);Math.sqrt(r*r+n*n)>C.touchMovedThreshold&&(this.touchMoved=!0)};I.find(".xdsoft_select").xdsoftScroller(C).on("touchstart mousedown.xdsoft",function(e){var t=e.originalEvent;this.touchMoved=!1,this.touchStartPosition=t.touches?t.touches[0]:t,e.stopPropagation(),e.preventDefault()}).on("touchmove",".xdsoft_option",X).on("touchend mousedown.xdsoft",".xdsoft_option",function(){if(!this.touchMoved){void 0!==A.currentTime&&null!==A.currentTime||(A.currentTime=A.now());var t=A.currentTime.getFullYear();A&&A.currentTime&&A.currentTime[e(this).parent().parent().hasClass("xdsoft_monthselect")?"setMonth":"setFullYear"](e(this).data("value")),e(this).parent().parent().hide(),j.trigger("xchange.xdsoft"),C.onChangeMonth&&e.isFunction(C.onChangeMonth)&&C.onChangeMonth.call(j,A.currentTime,j.data("input")),t!==A.currentTime.getFullYear()&&e.isFunction(C.onChangeYear)&&C.onChangeYear.call(j,A.currentTime,j.data("input"))}}),j.getValue=function(){return A.getCurrentTime()},j.setOptions=function(n){var o={};C=e.extend(!0,{},C,n),n.allowTimes&&e.isArray(n.allowTimes)&&n.allowTimes.length&&(C.allowTimes=e.extend(!0,[],n.allowTimes)),n.weekends&&e.isArray(n.weekends)&&n.weekends.length&&(C.weekends=e.extend(!0,[],n.weekends)),n.allowDates&&e.isArray(n.allowDates)&&n.allowDates.length&&(C.allowDates=e.extend(!0,[],n.allowDates)),n.allowDateRe&&"[object String]"===Object.prototype.toString.call(n.allowDateRe)&&(C.allowDateRe=new RegExp(n.allowDateRe)),n.highlightedDates&&e.isArray(n.highlightedDates)&&n.highlightedDates.length&&(e.each(n.highlightedDates,function(a,n){var i,s=e.map(n.split(","),e.trim),u=new t(r.parseDate(s[0],C.formatDate),s[1],s[2]),d=r.formatDate(u.date,C.formatDate);void 0!==o[d]?(i=o[d].desc)&&i.length&&u.desc&&u.desc.length&&(o[d].desc=i+"\n"+u.desc):o[d]=u}),C.highlightedDates=e.extend(!0,[],o)),n.highlightedPeriods&&e.isArray(n.highlightedPeriods)&&n.highlightedPeriods.length&&(o=e.extend(!0,[],C.highlightedDates),e.each(n.highlightedPeriods,function(a,n){var i,s,u,d,l,f,c;if(e.isArray(n))i=n[0],s=n[1],u=n[2],c=n[3];else{var m=e.map(n.split(","),e.trim);i=r.parseDate(m[0],C.formatDate),s=r.parseDate(m[1],C.formatDate),u=m[2],c=m[3]}for(;i<=s;)d=new t(i,u,c),l=r.formatDate(i,C.formatDate),i.setDate(i.getDate()+1),void 0!==o[l]?(f=o[l].desc)&&f.length&&d.desc&&d.desc.length&&(o[l].desc=f+"\n"+d.desc):o[l]=d}),C.highlightedDates=e.extend(!0,[],o)),n.disabledDates&&e.isArray(n.disabledDates)&&n.disabledDates.length&&(C.disabledDates=e.extend(!0,[],n.disabledDates)),n.disabledWeekDays&&e.isArray(n.disabledWeekDays)&&n.disabledWeekDays.length&&(C.disabledWeekDays=e.extend(!0,[],n.disabledWeekDays)),!C.open&&!C.opened||C.inline||a.trigger("open.xdsoft"),C.inline&&(U=!0,j.addClass("xdsoft_inline"),a.after(j).hide()),C.inverseButton&&(C.next="xdsoft_prev",C.prev="xdsoft_next"),C.datepicker?z.addClass("active"):z.removeClass("active"),C.timepicker?L.addClass("active"):L.removeClass("active"),C.value&&(A.setCurrentTime(C.value),a&&a.val&&a.val(A.str)),isNaN(C.dayOfWeekStart)?C.dayOfWeekStart=0:C.dayOfWeekStart=parseInt(C.dayOfWeekStart,10)%7,C.timepickerScrollbar||E.xdsoftScroller(C,"hide"),C.minDate&&/^[\+\-](.*)$/.test(C.minDate)&&(C.minDate=r.formatDate(A.strToDateTime(C.minDate),C.formatDate)),C.maxDate&&/^[\+\-](.*)$/.test(C.maxDate)&&(C.maxDate=r.formatDate(A.strToDateTime(C.maxDate),C.formatDate)),C.minDateTime&&/^\+(.*)$/.test(C.minDateTime)&&(C.minDateTime=A.strToDateTime(C.minDateTime).dateFormat(C.formatDate)),C.maxDateTime&&/^\+(.*)$/.test(C.maxDateTime)&&(C.maxDateTime=A.strToDateTime(C.maxDateTime).dateFormat(C.formatDate)),V.toggle(C.showApplyButton),I.find(".xdsoft_today_button").css("visibility",C.todayButton?"visible":"hidden"),I.find("."+C.prev).css("visibility",C.prevButton?"visible":"hidden"),I.find("."+C.next).css("visibility",C.nextButton?"visible":"hidden"),s(C),C.validateOnBlur&&a.off("blur.xdsoft").on("blur.xdsoft",function(){if(C.allowBlank&&(!e.trim(e(this).val()).length||"string"==typeof C.mask&&e.trim(e(this).val())===C.mask.replace(/[0-9]/g,"_")))e(this).val(null),j.data("xdsoft_datetime").empty();else{var t=r.parseDate(e(this).val(),C.format);if(t)e(this).val(r.formatDate(t,C.format));else{var a=+[e(this).val()[0],e(this).val()[1]].join(""),n=+[e(this).val()[2],e(this).val()[3]].join("");!C.datepicker&&C.timepicker&&a>=0&&a<24&&n>=0&&n<60?e(this).val([a,n].map(function(e){return e>9?e:"0"+e}).join(":")):e(this).val(r.formatDate(A.now(),C.format))}j.data("xdsoft_datetime").setCurrentTime(e(this).val())}j.trigger("changedatetime.xdsoft"),j.trigger("close.xdsoft")}),C.dayOfWeekStartPrev=0===C.dayOfWeekStart?6:C.dayOfWeekStart-1,j.trigger("xchange.xdsoft").trigger("afterOpen.xdsoft")},j.data("options",C).on("touchstart mousedown.xdsoft",function(e){return e.stopPropagation(),e.preventDefault(),G.hide(),B.hide(),!1}),E.append(R),E.xdsoftScroller(C),j.on("afterOpen.xdsoft",function(){E.xdsoftScroller(C)}),j.append(z).append(L),!0!==C.withoutCopyright&&j.append(J),z.append(I).append(N).append(V),e(C.parentID).append(j),A=new function(){var t=this;t.now=function(e){var a,r,n=new Date;return!e&&C.defaultDate&&(a=t.strToDateTime(C.defaultDate),n.setFullYear(a.getFullYear()),n.setMonth(a.getMonth()),n.setDate(a.getDate())),n.setFullYear(n.getFullYear()),!e&&C.defaultTime&&(r=t.strtotime(C.defaultTime),n.setHours(r.getHours()),n.setMinutes(r.getMinutes()),n.setSeconds(r.getSeconds()),n.setMilliseconds(r.getMilliseconds())),n},t.isValidDate=function(e){return"[object Date]"===Object.prototype.toString.call(e)&&!isNaN(e.getTime())},t.setCurrentTime=function(e,a){"string"==typeof e?t.currentTime=t.strToDateTime(e):t.isValidDate(e)?t.currentTime=e:e||a||!C.allowBlank||C.inline?t.currentTime=t.now():t.currentTime=null,j.trigger("xchange.xdsoft")},t.empty=function(){t.currentTime=null},t.getCurrentTime=function(){return t.currentTime},t.nextMonth=function(){void 0!==t.currentTime&&null!==t.currentTime||(t.currentTime=t.now());var a,r=t.currentTime.getMonth()+1;return 12===r&&(t.currentTime.setFullYear(t.currentTime.getFullYear()+1),r=0),a=t.currentTime.getFullYear(),t.currentTime.setDate(Math.min(new Date(t.currentTime.getFullYear(),r+1,0).getDate(),t.currentTime.getDate())),t.currentTime.setMonth(r),C.onChangeMonth&&e.isFunction(C.onChangeMonth)&&C.onChangeMonth.call(j,A.currentTime,j.data("input")),a!==t.currentTime.getFullYear()&&e.isFunction(C.onChangeYear)&&C.onChangeYear.call(j,A.currentTime,j.data("input")),j.trigger("xchange.xdsoft"),r},t.prevMonth=function(){void 0!==t.currentTime&&null!==t.currentTime||(t.currentTime=t.now());var a=t.currentTime.getMonth()-1;return-1===a&&(t.currentTime.setFullYear(t.currentTime.getFullYear()-1),a=11),t.currentTime.setDate(Math.min(new Date(t.currentTime.getFullYear(),a+1,0).getDate(),t.currentTime.getDate())),t.currentTime.setMonth(a),C.onChangeMonth&&e.isFunction(C.onChangeMonth)&&C.onChangeMonth.call(j,A.currentTime,j.data("input")),j.trigger("xchange.xdsoft"),a},t.getWeekOfYear=function(t){if(C.onGetWeekOfYear&&e.isFunction(C.onGetWeekOfYear)){var a=C.onGetWeekOfYear.call(j,t);if(void 0!==a)return a}var r=new Date(t.getFullYear(),0,1);return 4!==r.getDay()&&r.setMonth(0,1+(4-r.getDay()+7)%7),Math.ceil(((t-r)/864e5+r.getDay()+1)/7)},t.strToDateTime=function(e){var a,n,o=[];return e&&e instanceof Date&&t.isValidDate(e)?e:((o=/^([+-]{1})(.*)$/.exec(e))&&(o[2]=r.parseDate(o[2],C.formatDate)),o&&o[2]?(a=o[2].getTime()-6e4*o[2].getTimezoneOffset(),n=new Date(t.now(!0).getTime()+parseInt(o[1]+"1",10)*a)):n=e?r.parseDate(e,C.format):t.now(),t.isValidDate(n)||(n=t.now()),n)},t.strToDate=function(e){if(e&&e instanceof Date&&t.isValidDate(e))return e;var a=e?r.parseDate(e,C.formatDate):t.now(!0);return t.isValidDate(a)||(a=t.now(!0)),a},t.strtotime=function(e){if(e&&e instanceof Date&&t.isValidDate(e))return e;var a=e?r.parseDate(e,C.formatTime):t.now(!0);return t.isValidDate(a)||(a=t.now(!0)),a},t.str=function(){var e=C.format;return C.yearOffset&&(e=(e=e.replace("Y",t.currentTime.getFullYear()+C.yearOffset)).replace("y",String(t.currentTime.getFullYear()+C.yearOffset).substring(2,4))),r.formatDate(t.currentTime,e)},t.currentTime=this.now()},V.on("touchend click",function(e){e.preventDefault(),j.data("changed",!0),A.setCurrentTime(i()),a.val(A.str()),j.trigger("close.xdsoft")}),I.find(".xdsoft_today_button").on("touchend mousedown.xdsoft",function(){j.data("changed",!0),A.setCurrentTime(0,!0),j.trigger("afterOpen.xdsoft")}).on("dblclick.xdsoft",function(){var e,t,r=A.getCurrentTime();r=new Date(r.getFullYear(),r.getMonth(),r.getDate()),e=A.strToDate(C.minDate),r<(e=new Date(e.getFullYear(),e.getMonth(),e.getDate()))||(t=A.strToDate(C.maxDate),r>(t=new Date(t.getFullYear(),t.getMonth(),t.getDate()))||(a.val(A.str()),a.trigger("change"),j.trigger("close.xdsoft")))}),I.find(".xdsoft_prev,.xdsoft_next").on("touchend mousedown.xdsoft",function(){var t=e(this),a=0,r=!1;!function e(n){t.hasClass(C.next)?A.nextMonth():t.hasClass(C.prev)&&A.prevMonth(),C.monthChangeSpinner&&(r||(a=setTimeout(e,n||100)))}(500),e([C.ownerDocument.body,C.contentWindow]).on("touchend mouseup.xdsoft",function t(){clearTimeout(a),r=!0,e([C.ownerDocument.body,C.contentWindow]).off("touchend mouseup.xdsoft",t)})}),L.find(".xdsoft_prev,.xdsoft_next").on("touchend mousedown.xdsoft",function(){var t=e(this),a=0,r=!1,n=110;!function e(o){var i=E[0].clientHeight,s=R[0].offsetHeight,u=Math.abs(parseInt(R.css("marginTop"),10));t.hasClass(C.next)&&s-i-C.timeHeightInTimePicker>=u?R.css("marginTop","-"+(u+C.timeHeightInTimePicker)+"px"):t.hasClass(C.prev)&&u-C.timeHeightInTimePicker>=0&&R.css("marginTop","-"+(u-C.timeHeightInTimePicker)+"px"),E.trigger("scroll_element.xdsoft_scroller",[Math.abs(parseInt(R[0].style.marginTop,10)/(s-i))]),n=n>10?10:n-10,r||(a=setTimeout(e,o||n))}(500),e([C.ownerDocument.body,C.contentWindow]).on("touchend mouseup.xdsoft",function t(){clearTimeout(a),r=!0,e([C.ownerDocument.body,C.contentWindow]).off("touchend mouseup.xdsoft",t)})}),u=0,j.on("xchange.xdsoft",function(t){clearTimeout(u),u=setTimeout(function(){void 0!==A.currentTime&&null!==A.currentTime||(A.currentTime=A.now());for(var t,i,s,u,d,l,f,c,m,h,g="",p=new Date(A.currentTime.getFullYear(),A.currentTime.getMonth(),1,12,0,0),D=0,v=A.now(),y=!1,b=!1,k=!1,x=!1,T=[],S=!0,M="";p.getDay()!==C.dayOfWeekStart;)p.setDate(p.getDate()-1);for(g+="<table><thead><tr>",C.weeks&&(g+="<th></th>"),t=0;t<7;t+=1)g+="<th>"+C.i18n[o].dayOfWeekShort[(t+C.dayOfWeekStart)%7]+"</th>";g+="</tr></thead>",g+="<tbody>",!1!==C.maxDate&&(y=A.strToDate(C.maxDate),y=new Date(y.getFullYear(),y.getMonth(),y.getDate(),23,59,59,999)),!1!==C.minDate&&(b=A.strToDate(C.minDate),b=new Date(b.getFullYear(),b.getMonth(),b.getDate())),!1!==C.minDateTime&&(k=A.strToDate(C.minDateTime),k=new Date(k.getFullYear(),k.getMonth(),k.getDate(),k.getHours(),k.getMinutes(),k.getSeconds())),!1!==C.maxDateTime&&(x=A.strToDate(C.maxDateTime),x=new Date(x.getFullYear(),x.getMonth(),x.getDate(),x.getHours(),x.getMinutes(),x.getSeconds()));var w;for(!1!==x&&(w=31*(12*x.getFullYear()+x.getMonth())+x.getDate());D<A.currentTime.countDaysInMonth()||p.getDay()!==C.dayOfWeekStart||A.currentTime.getMonth()===p.getMonth();){T=[],D+=1,s=p.getDay(),u=p.getDate(),d=p.getFullYear(),l=p.getMonth(),f=A.getWeekOfYear(p),h="",T.push("xdsoft_date"),c=C.beforeShowDay&&e.isFunction(C.beforeShowDay.call)?C.beforeShowDay.call(j,p):null,C.allowDateRe&&"[object RegExp]"===Object.prototype.toString.call(C.allowDateRe)&&(C.allowDateRe.test(r.formatDate(p,C.formatDate))||T.push("xdsoft_disabled")),C.allowDates&&C.allowDates.length>0&&-1===C.allowDates.indexOf(r.formatDate(p,C.formatDate))&&T.push("xdsoft_disabled");var O=31*(12*p.getFullYear()+p.getMonth())+p.getDate();(!1!==y&&p>y||!1!==k&&p<k||!1!==b&&p<b||!1!==x&&O>w||c&&!1===c[0])&&T.push("xdsoft_disabled"),-1!==C.disabledDates.indexOf(r.formatDate(p,C.formatDate))&&T.push("xdsoft_disabled"),-1!==C.disabledWeekDays.indexOf(s)&&T.push("xdsoft_disabled"),a.is("[disabled]")&&T.push("xdsoft_disabled"),c&&""!==c[1]&&T.push(c[1]),A.currentTime.getMonth()!==l&&T.push("xdsoft_other_month"),(C.defaultSelect||j.data("changed"))&&r.formatDate(A.currentTime,C.formatDate)===r.formatDate(p,C.formatDate)&&T.push("xdsoft_current"),r.formatDate(v,C.formatDate)===r.formatDate(p,C.formatDate)&&T.push("xdsoft_today"),0!==p.getDay()&&6!==p.getDay()&&-1===C.weekends.indexOf(r.formatDate(p,C.formatDate))||T.push("xdsoft_weekend"),void 0!==C.highlightedDates[r.formatDate(p,C.formatDate)]&&(i=C.highlightedDates[r.formatDate(p,C.formatDate)],T.push(void 0===i.style?"xdsoft_highlighted_default":i.style),h=void 0===i.desc?"":i.desc),C.beforeShowDay&&e.isFunction(C.beforeShowDay)&&T.push(C.beforeShowDay(p)),S&&(g+="<tr>",S=!1,C.weeks&&(g+="<th>"+f+"</th>")),g+='<td data-date="'+u+'" data-month="'+l+'" data-year="'+d+'" class="xdsoft_date xdsoft_day_of_week'+p.getDay()+" "+T.join(" ")+'" title="'+h+'"><div>'+u+"</div></td>",p.getDay()===C.dayOfWeekStartPrev&&(g+="</tr>",S=!0),p.setDate(u+1)}g+="</tbody></table>",N.html(g),I.find(".xdsoft_label span").eq(0).text(C.i18n[o].months[A.currentTime.getMonth()]),I.find(".xdsoft_label span").eq(1).text(A.currentTime.getFullYear()+C.yearOffset),M="",l="";var W=0;if(!1!==C.minTime){F=A.strtotime(C.minTime);W=60*F.getHours()+F.getMinutes()}var _=1440;if(!1!==C.maxTime){F=A.strtotime(C.maxTime);_=60*F.getHours()+F.getMinutes()}if(!1!==C.minDateTime){F=A.strToDateTime(C.minDateTime);r.formatDate(A.currentTime,C.formatDate)===r.formatDate(F,C.formatDate)&&(l=60*F.getHours()+F.getMinutes())>W&&(W=l)}if(!1!==C.maxDateTime){var F=A.strToDateTime(C.maxDateTime);r.formatDate(A.currentTime,C.formatDate)===r.formatDate(F,C.formatDate)&&(l=60*F.getHours()+F.getMinutes())<_&&(_=l)}if(m=function(t,n){var o,i=A.now(),s=C.allowTimes&&e.isArray(C.allowTimes)&&C.allowTimes.length;i.setHours(t),t=parseInt(i.getHours(),10),i.setMinutes(n),n=parseInt(i.getMinutes(),10),T=[];var u=60*t+n;(a.is("[disabled]")||u>=_||u<W)&&T.push("xdsoft_disabled"),(o=new Date(A.currentTime)).setHours(parseInt(A.currentTime.getHours(),10)),s||o.setMinutes(Math[C.roundTime](A.currentTime.getMinutes()/C.step)*C.step),(C.initTime||C.defaultSelect||j.data("changed"))&&o.getHours()===parseInt(t,10)&&(!s&&C.step>59||o.getMinutes()===parseInt(n,10))&&(C.defaultSelect||j.data("changed")?T.push("xdsoft_current"):C.initTime&&T.push("xdsoft_init_time")),parseInt(v.getHours(),10)===parseInt(t,10)&&parseInt(v.getMinutes(),10)===parseInt(n,10)&&T.push("xdsoft_today"),M+='<div class="xdsoft_time '+T.join(" ")+'" data-hour="'+t+'" data-minute="'+n+'">'+r.formatDate(i,C.formatTime)+"</div>"},C.allowTimes&&e.isArray(C.allowTimes)&&C.allowTimes.length)for(D=0;D<C.allowTimes.length;D+=1)m(A.strtotime(C.allowTimes[D]).getHours(),l=A.strtotime(C.allowTimes[D]).getMinutes());else for(D=0,t=0;D<(C.hours12?12:24);D+=1)for(t=0;t<60;t+=C.step){var P=60*D+t;P<W||(P>=_||m((D<10?"0":"")+D,l=(t<10?"0":"")+t))}for(R.html(M),n="",D=parseInt(C.yearStart,10);D<=parseInt(C.yearEnd,10);D+=1)n+='<div class="xdsoft_option '+(A.currentTime.getFullYear()===D?"xdsoft_current":"")+'" data-value="'+D+'">'+(D+C.yearOffset)+"</div>";for(G.children().eq(0).html(n),D=parseInt(C.monthStart,10),n="";D<=parseInt(C.monthEnd,10);D+=1)n+='<div class="xdsoft_option '+(A.currentTime.getMonth()===D?"xdsoft_current":"")+'" data-value="'+D+'">'+C.i18n[o].months[D]+"</div>";B.children().eq(0).html(n),e(j).trigger("generate.xdsoft")},10),t.stopPropagation()}).on("afterOpen.xdsoft",function(){if(C.timepicker){var e,t,a,r;R.find(".xdsoft_current").length?e=".xdsoft_current":R.find(".xdsoft_init_time").length&&(e=".xdsoft_init_time"),e?(t=E[0].clientHeight,(a=R[0].offsetHeight)-t<(r=R.find(e).index()*C.timeHeightInTimePicker+1)&&(r=a-t),E.trigger("scroll_element.xdsoft_scroller",[parseInt(r,10)/(a-t)])):E.trigger("scroll_element.xdsoft_scroller",[0])}}),d=0,N.on("touchend click.xdsoft","td",function(t){t.stopPropagation(),d+=1;var r=e(this),n=A.currentTime;if(void 0!==n&&null!==n||(A.currentTime=A.now(),n=A.currentTime),r.hasClass("xdsoft_disabled"))return!1;n.setDate(1),n.setFullYear(r.data("year")),n.setMonth(r.data("month")),n.setDate(r.data("date")),j.trigger("select.xdsoft",[n]),a.val(A.str()),C.onSelectDate&&e.isFunction(C.onSelectDate)&&C.onSelectDate.call(j,A.currentTime,j.data("input"),t),j.data("changed",!0),j.trigger("xchange.xdsoft"),j.trigger("changedatetime.xdsoft"),(d>1||!0===C.closeOnDateSelect||!1===C.closeOnDateSelect&&!C.timepicker)&&!C.inline&&j.trigger("close.xdsoft"),setTimeout(function(){d=0},200)}),R.on("touchstart","div",function(e){this.touchMoved=!1}).on("touchmove","div",X).on("touchend click.xdsoft","div",function(t){if(!this.touchMoved){t.stopPropagation();var a=e(this),r=A.currentTime;if(void 0!==r&&null!==r||(A.currentTime=A.now(),r=A.currentTime),a.hasClass("xdsoft_disabled"))return!1;r.setHours(a.data("hour")),r.setMinutes(a.data("minute")),j.trigger("select.xdsoft",[r]),j.data("input").val(A.str()),C.onSelectTime&&e.isFunction(C.onSelectTime)&&C.onSelectTime.call(j,A.currentTime,j.data("input"),t),j.data("changed",!0),j.trigger("xchange.xdsoft"),j.trigger("changedatetime.xdsoft"),!0!==C.inline&&!0===C.closeOnTimeSelect&&j.trigger("close.xdsoft")}}),z.on("mousewheel.xdsoft",function(e){return!C.scrollMonth||(e.deltaY<0?A.nextMonth():A.prevMonth(),!1)}),a.on("mousewheel.xdsoft",function(e){return!C.scrollInput||(!C.datepicker&&C.timepicker?((P=R.find(".xdsoft_current").length?R.find(".xdsoft_current").eq(0).index():0)+e.deltaY>=0&&P+e.deltaY<R.children().length&&(P+=e.deltaY),R.children().eq(P).length&&R.children().eq(P).trigger("mousedown"),!1):C.datepicker&&!C.timepicker?(z.trigger(e,[e.deltaY,e.deltaX,e.deltaY]),a.val&&a.val(A.str()),j.trigger("changedatetime.xdsoft"),!1):void 0)}),j.on("changedatetime.xdsoft",function(t){if(C.onChangeDateTime&&e.isFunction(C.onChangeDateTime)){var a=j.data("input");C.onChangeDateTime.call(j,A.currentTime,a,t),delete C.value,a.trigger("change")}}).on("generate.xdsoft",function(){C.onGenerate&&e.isFunction(C.onGenerate)&&C.onGenerate.call(j,A.currentTime,j.data("input")),U&&(j.trigger("afterOpen.xdsoft"),U=!1)}).on("click.xdsoft",function(e){e.stopPropagation()}),P=0,H=function(e,t){do{if(!(e=e.parentNode)||!1===t(e))break}while("HTML"!==e.nodeName)},Y=function(){var t,a,r,n,o,i,s,u,d,l,f,c,m;if(u=j.data("input"),t=u.offset(),a=u[0],l="top",r=t.top+a.offsetHeight-1,n=t.left,o="absolute",d=e(C.contentWindow).width(),c=e(C.contentWindow).height(),m=e(C.contentWindow).scrollTop(),C.ownerDocument.documentElement.clientWidth-t.left<z.parent().outerWidth(!0)){var h=z.parent().outerWidth(!0)-a.offsetWidth;n-=h}"rtl"===u.parent().css("direction")&&(n-=j.outerWidth()-u.outerWidth()),C.fixed?(r-=m,n-=e(C.contentWindow).scrollLeft(),o="fixed"):(s=!1,H(a,function(e){return null!==e&&("fixed"===C.contentWindow.getComputedStyle(e).getPropertyValue("position")?(s=!0,!1):void 0)}),s?(o="fixed",r+j.outerHeight()>c+m?(l="bottom",r=c+m-t.top):r-=m):r+j[0].offsetHeight>c+m&&(r=t.top-j[0].offsetHeight+1),r<0&&(r=0),n+a.offsetWidth>d&&(n=d-a.offsetWidth)),i=j[0],H(i,function(e){if("relative"===C.contentWindow.getComputedStyle(e).getPropertyValue("position")&&d>=e.offsetWidth)return n-=(d-e.offsetWidth)/2,!1}),(f={position:o,left:n,top:"",bottom:""})[l]=r,j.css(f)},j.on("open.xdsoft",function(t){var a=!0;C.onShow&&e.isFunction(C.onShow)&&(a=C.onShow.call(j,A.currentTime,j.data("input"),t)),!1!==a&&(j.show(),Y(),e(C.contentWindow).off("resize.xdsoft",Y).on("resize.xdsoft",Y),C.closeOnWithoutClick&&e([C.ownerDocument.body,C.contentWindow]).on("touchstart mousedown.xdsoft",function t(){j.trigger("close.xdsoft"),e([C.ownerDocument.body,C.contentWindow]).off("touchstart mousedown.xdsoft",t)}))}).on("close.xdsoft",function(t){var a=!0;I.find(".xdsoft_month,.xdsoft_year").find(".xdsoft_select").hide(),C.onClose&&e.isFunction(C.onClose)&&(a=C.onClose.call(j,A.currentTime,j.data("input"),t)),!1===a||C.opened||C.inline||j.hide(),t.stopPropagation()}).on("toggle.xdsoft",function(){j.is(":visible")?j.trigger("close.xdsoft"):j.trigger("open.xdsoft")}).data("input",a),q=0,j.data("xdsoft_datetime",A),j.setOptions(C),A.setCurrentTime(i()),a.data("xdsoft_datetimepicker",j).on("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart",function(){a.is(":disabled")||a.data("xdsoft_datetimepicker").is(":visible")&&C.closeOnInputClick||C.openOnFocus&&(clearTimeout(q),q=setTimeout(function(){a.is(":disabled")||(U=!0,A.setCurrentTime(i(),!0),C.mask&&s(C),j.trigger("open.xdsoft"))},100))}).on("keydown.xdsoft",function(t){var a,r=t.which;return-1!==[p].indexOf(r)&&C.enterLikeTab?(a=e("input:visible,textarea:visible,button:visible,a:visible"),j.trigger("close.xdsoft"),a.eq(a.index(this)+1).focus(),!1):-1!==[T].indexOf(r)?(j.trigger("close.xdsoft"),!0):void 0}).on("blur.xdsoft",function(){j.trigger("close.xdsoft")})},u=function(t){var a=t.data("xdsoft_datetimepicker");a&&(a.data("xdsoft_datetime",null),a.remove(),t.data("xdsoft_datetimepicker",null).off(".xdsoft"),e(C.contentWindow).off("resize.xdsoft"),e([C.contentWindow,C.ownerDocument.body]).off("mousedown.xdsoft touchstart"),t.unmousewheel&&t.unmousewheel())},e(C.ownerDocument).off("keydown.xdsoftctrl keyup.xdsoftctrl").on("keydown.xdsoftctrl",function(e){e.keyCode===h&&(F=!0)}).on("keyup.xdsoftctrl",function(e){e.keyCode===h&&(F=!1)}),this.each(function(){var t=e(this).data("xdsoft_datetimepicker");if(t){if("string"===e.type(n))switch(n){case"show":e(this).select().focus(),t.trigger("open.xdsoft");break;case"hide":t.trigger("close.xdsoft");break;case"toggle":t.trigger("toggle.xdsoft");break;case"destroy":u(e(this));break;case"reset":this.value=this.defaultValue,this.value&&t.data("xdsoft_datetime").isValidDate(r.parseDate(this.value,C.format))||t.data("changed",!1),t.data("xdsoft_datetime").setCurrentTime(this.value);break;case"validate":t.data("input").trigger("blur.xdsoft");break;default:t[n]&&e.isFunction(t[n])&&(d=t[n](i))}else t.setOptions(n);return 0}"string"!==e.type(n)&&(!C.lazyInit||C.open||C.inline?s(e(this)):Y(e(this)))}),d},e.fn.datetimepicker.defaults=a};!function(e){"function"==typeof define&&define.amd?define(["jquery","jquery-mousewheel"],e):"object"==typeof exports?module.exports=e(require("jquery")):e(jQuery)}(datetimepickerFactory),function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?module.exports=e:e(jQuery)}(function(e){function t(t){var i=t||window.event,s=u.call(arguments,1),d=0,f=0,c=0,m=0,h=0,g=0;if(t=e.event.fix(i),t.type="mousewheel","detail"in i&&(c=-1*i.detail),"wheelDelta"in i&&(c=i.wheelDelta),"wheelDeltaY"in i&&(c=i.wheelDeltaY),"wheelDeltaX"in i&&(f=-1*i.wheelDeltaX),"axis"in i&&i.axis===i.HORIZONTAL_AXIS&&(f=-1*c,c=0),d=0===c?f:c,"deltaY"in i&&(d=c=-1*i.deltaY),"deltaX"in i&&(f=i.deltaX,0===c&&(d=-1*f)),0!==c||0!==f){if(1===i.deltaMode){var p=e.data(this,"mousewheel-line-height");d*=p,c*=p,f*=p}else if(2===i.deltaMode){var D=e.data(this,"mousewheel-page-height");d*=D,c*=D,f*=D}if(m=Math.max(Math.abs(c),Math.abs(f)),(!o||m<o)&&(o=m,r(i,m)&&(o/=40)),r(i,m)&&(d/=40,f/=40,c/=40),d=Math[d>=1?"floor":"ceil"](d/o),f=Math[f>=1?"floor":"ceil"](f/o),c=Math[c>=1?"floor":"ceil"](c/o),l.settings.normalizeOffset&&this.getBoundingClientRect){var v=this.getBoundingClientRect();h=t.clientX-v.left,g=t.clientY-v.top}return t.deltaX=f,t.deltaY=c,t.deltaFactor=o,t.offsetX=h,t.offsetY=g,t.deltaMode=0,s.unshift(t,d,f,c),n&&clearTimeout(n),n=setTimeout(a,200),(e.event.dispatch||e.event.handle).apply(this,s)}}function a(){o=null}function r(e,t){return l.settings.adjustOldDeltas&&"mousewheel"===e.type&&t%120==0}var n,o,i=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],s="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],u=Array.prototype.slice;if(e.event.fixHooks)for(var d=i.length;d;)e.event.fixHooks[i[--d]]=e.event.mouseHooks;var l=e.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var a=s.length;a;)this.addEventListener(s[--a],t,!1);else this.onmousewheel=t;e.data(this,"mousewheel-line-height",l.getLineHeight(this)),e.data(this,"mousewheel-page-height",l.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var a=s.length;a;)this.removeEventListener(s[--a],t,!1);else this.onmousewheel=null;e.removeData(this,"mousewheel-line-height"),e.removeData(this,"mousewheel-page-height")},getLineHeight:function(t){var a=e(t),r=a["offsetParent"in e.fn?"offsetParent":"parent"]();return r.length||(r=e("body")),parseInt(r.css("fontSize"),10)||parseInt(a.css("fontSize"),10)||16},getPageHeight:function(t){return e(t).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};e.fn.extend({mousewheel:function(e){return e?this.bind("mousewheel",e):this.trigger("mousewheel")},unmousewheel:function(e){return this.unbind("mousewheel",e)}})}); | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +.xdsoft_datetimepicker{box-shadow:0 5px 15px -5px rgba(0,0,0,0.506);background:#fff;border-bottom:1px solid #bbb;border-left:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;color:#333;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;padding:8px;padding-left:0;padding-top:2px;position:absolute;z-index:9999;-moz-box-sizing:border-box;box-sizing:border-box;display:none}.xdsoft_datetimepicker.xdsoft_rtl{padding:8px 0 8px 8px}.xdsoft_datetimepicker iframe{position:absolute;left:0;top:0;width:75px;height:210px;background:transparent;border:0}.xdsoft_datetimepicker button{border:none !important}.xdsoft_noselect{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.xdsoft_noselect::selection{background:transparent}.xdsoft_noselect::-moz-selection{background:transparent}.xdsoft_datetimepicker.xdsoft_inline{display:inline-block;position:static;box-shadow:none}.xdsoft_datetimepicker *{-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin:0}.xdsoft_datetimepicker .xdsoft_datepicker,.xdsoft_datetimepicker .xdsoft_timepicker{display:none}.xdsoft_datetimepicker .xdsoft_datepicker.active,.xdsoft_datetimepicker .xdsoft_timepicker.active{display:block}.xdsoft_datetimepicker .xdsoft_datepicker{width:224px;float:left;margin-left:8px}.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_datepicker{float:right;margin-right:8px;margin-left:0}.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_datepicker{width:256px}.xdsoft_datetimepicker .xdsoft_timepicker{width:58px;float:left;text-align:center;margin-left:8px;margin-top:0}.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_timepicker{float:right;margin-right:8px;margin-left:0}.xdsoft_datetimepicker .xdsoft_datepicker.active+.xdsoft_timepicker{margin-top:8px;margin-bottom:3px}.xdsoft_datetimepicker .xdsoft_monthpicker{position:relative;text-align:center}.xdsoft_datetimepicker .xdsoft_label i,.xdsoft_datetimepicker .xdsoft_prev,.xdsoft_datetimepicker .xdsoft_next,.xdsoft_datetimepicker .xdsoft_today_button{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Q0NBRjI1NjM0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Q0NBRjI1NjQ0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDQ0FGMjU2MTQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDQ0FGMjU2MjQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PoNEP54AAAIOSURBVHja7Jq9TsMwEMcxrZD4WpBYeKUCe+kTMCACHZh4BFfHO/AAIHZGFhYkBBsSEqxsLCAgXKhbXYOTxh9pfJVP+qutnZ5s/5Lz2Y5I03QhWji2GIcgAokWgfCxNvcOCCGKqiSqhUp0laHOne05vdEyGMfkdxJDVjgwDlEQgYQBgx+ULJaWSXXS6r/ER5FBVR8VfGftTKcITNs+a1XpcFoExREIDF14AVIFxgQUS+h520cdud6wNkC0UBw6BCO/HoCYwBhD8QCkQ/x1mwDyD4plh4D6DDV0TAGyo4HcawLIBBSLDkHeH0Mg2yVP3l4TQMZQDDsEOl/MgHQqhMNuE0D+oBh0CIr8MAKyazBH9WyBuKxDWgbXfjNf32TZ1KWm/Ap1oSk/R53UtQ5xTh3LUlMmT8gt6g51Q9p+SobxgJQ/qmsfZhWywGFSl0yBjCLJCMgXail3b7+rumdVJ2YRss4cN+r6qAHDkPWjPjdJCF4n9RmAD/V9A/Wp4NQassDjwlB6XBiCxcJQWmZZb8THFilfy/lfrTvLghq2TqTHrRMTKNJ0sIhdo15RT+RpyWwFdY96UZ/LdQKBGjcXpcc1AlSFEfLmouD+1knuxBDUVrvOBmoOC/rEcN7OQxKVeJTCiAdUzUJhA2Oez9QTkp72OTVcxDcXY8iKNkxGAJXmJCOQwOa6dhyXsOa6XwEGAKdeb5ET3rQdAAAAAElFTkSuQmCC)}.xdsoft_datetimepicker .xdsoft_label i{opacity:.5;background-position:-92px -19px;display:inline-block;width:9px;height:20px;vertical-align:middle}.xdsoft_datetimepicker .xdsoft_prev{float:left;background-position:-20px 0}.xdsoft_datetimepicker .xdsoft_today_button{float:left;background-position:-70px 0;margin-left:5px}.xdsoft_datetimepicker .xdsoft_next{float:right;background-position:0 0}.xdsoft_datetimepicker .xdsoft_next,.xdsoft_datetimepicker .xdsoft_prev,.xdsoft_datetimepicker .xdsoft_today_button{background-color:transparent;background-repeat:no-repeat;border:0 none;cursor:pointer;display:block;height:30px;opacity:.5;-ms-filter:"alpha(opacity=50)";outline:medium none;overflow:hidden;padding:0;position:relative;text-indent:100%;white-space:nowrap;width:20px;min-width:0}.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev,.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_next{float:none;background-position:-40px -15px;height:15px;width:30px;display:block;margin-left:14px;margin-top:7px}.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_timepicker .xdsoft_prev,.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_timepicker .xdsoft_next{float:none;margin-left:0;margin-right:14px}.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev{background-position:-40px 0;margin-bottom:7px;margin-top:0}.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box{height:151px;overflow:hidden;border-bottom:1px solid #ddd}.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div{background:#f5f5f5;border-top:1px solid #ddd;color:#666;font-size:12px;text-align:center;border-collapse:collapse;cursor:pointer;border-bottom-width:0;height:25px;line-height:25px}.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div:first-child{border-top-width:0}.xdsoft_datetimepicker .xdsoft_today_button:hover,.xdsoft_datetimepicker .xdsoft_next:hover,.xdsoft_datetimepicker .xdsoft_prev:hover{opacity:1;-ms-filter:"alpha(opacity=100)"}.xdsoft_datetimepicker .xdsoft_label{display:inline;position:relative;z-index:9999;margin:0;padding:5px 3px;font-size:14px;line-height:20px;font-weight:bold;background-color:#fff;float:left;width:182px;text-align:center;cursor:pointer}.xdsoft_datetimepicker .xdsoft_label:hover>span{text-decoration:underline}.xdsoft_datetimepicker .xdsoft_label:hover i{opacity:1.0}.xdsoft_datetimepicker .xdsoft_label>.xdsoft_select{border:1px solid #ccc;position:absolute;right:0;top:30px;z-index:101;display:none;background:#fff;max-height:160px;overflow-y:hidden}.xdsoft_datetimepicker .xdsoft_label>.xdsoft_select.xdsoft_monthselect{right:-7px}.xdsoft_datetimepicker .xdsoft_label>.xdsoft_select.xdsoft_yearselect{right:2px}.xdsoft_datetimepicker .xdsoft_label>.xdsoft_select>div>.xdsoft_option:hover{color:#fff;background:#ff8000}.xdsoft_datetimepicker .xdsoft_label>.xdsoft_select>div>.xdsoft_option{padding:2px 10px 2px 5px;text-decoration:none !important}.xdsoft_datetimepicker .xdsoft_label>.xdsoft_select>div>.xdsoft_option.xdsoft_current{background:#3af;box-shadow:#178fe5 0 1px 3px 0 inset;color:#fff;font-weight:700}.xdsoft_datetimepicker .xdsoft_month{width:100px;text-align:right}.xdsoft_datetimepicker .xdsoft_calendar{clear:both}.xdsoft_datetimepicker .xdsoft_year{width:48px;margin-left:5px}.xdsoft_datetimepicker .xdsoft_calendar table{border-collapse:collapse;width:100%}.xdsoft_datetimepicker .xdsoft_calendar td>div{padding-right:5px}.xdsoft_datetimepicker .xdsoft_calendar th{height:25px}.xdsoft_datetimepicker .xdsoft_calendar td,.xdsoft_datetimepicker .xdsoft_calendar th{width:14.2857142%;background:#f5f5f5;border:1px solid #ddd;color:#666;font-size:12px;text-align:right;vertical-align:middle;padding:0;border-collapse:collapse;cursor:pointer;height:25px}.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar td,.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar th{width:12.5%}.xdsoft_datetimepicker .xdsoft_calendar th{background:#f1f1f1}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_today{color:#3af}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_highlighted_default{background:#ffe9d2;box-shadow:#ffb871 0 1px 4px 0 inset;color:#000}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_highlighted_mint{background:#c1ffc9;box-shadow:#00dd1c 0 1px 4px 0 inset;color:#000}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_default,.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current,.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div.xdsoft_current{background:#3af;box-shadow:#178fe5 0 1px 3px 0 inset;color:#fff;font-weight:700}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month,.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled,.xdsoft_datetimepicker .xdsoft_time_box>div>div.xdsoft_disabled{opacity:.5;-ms-filter:"alpha(opacity=50)";cursor:default}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month.xdsoft_disabled{opacity:.2;-ms-filter:"alpha(opacity=20)"}.xdsoft_datetimepicker .xdsoft_calendar td:hover,.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div:hover{color:#fff !important;background:#ff8000 !important;box-shadow:none !important}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current.xdsoft_disabled:hover,.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div.xdsoft_current.xdsoft_disabled:hover{background:#3af !important;box-shadow:#178fe5 0 1px 3px 0 inset !important;color:#fff !important}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled:hover,.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div.xdsoft_disabled:hover{color:inherit !important;background:inherit !important;box-shadow:inherit !important}.xdsoft_datetimepicker .xdsoft_calendar th{font-weight:700;text-align:center;color:#999;cursor:default}.xdsoft_datetimepicker .xdsoft_copyright{color:#ccc !important;font-size:10px;clear:both;float:none;margin-left:8px}.xdsoft_datetimepicker .xdsoft_copyright a{color:#eee !important}.xdsoft_datetimepicker .xdsoft_copyright a:hover{color:#aaa !important}.xdsoft_time_box{position:relative;border:1px solid #ccc}.xdsoft_scrollbar>.xdsoft_scroller{background:#ccc !important;height:20px;border-radius:3px}.xdsoft_scrollbar{position:absolute;width:7px;right:0;top:0;bottom:0;cursor:pointer}.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_scrollbar{left:0;right:auto}.xdsoft_scroller_box{position:relative}.xdsoft_datetimepicker.xdsoft_dark{box-shadow:0 5px 15px -5px rgba(255,255,255,0.506);background:#000;border-bottom:1px solid #444;border-left:1px solid #333;border-right:1px solid #333;border-top:1px solid #333;color:#ccc}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box{border-bottom:1px solid #222}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box>div>div{background:#0a0a0a;border-top:1px solid #222;color:#999}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label{background-color:#000}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label>.xdsoft_select{border:1px solid #333;background:#000}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label>.xdsoft_select>div>.xdsoft_option:hover{color:#000;background:#007fff}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label>.xdsoft_select>div>.xdsoft_option.xdsoft_current{background:#c50;box-shadow:#b03e00 0 1px 3px 0 inset;color:#000}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label i,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_prev,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_next,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_today_button{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUExQUUzOTA0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUExQUUzOTE0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQTFBRTM4RTQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQTFBRTM4RjQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp0VxGEAAAIASURBVHja7JrNSgMxEMebtgh+3MSLr1T1Xn2CHoSKB08+QmR8Bx9A8e7RixdB9CKCoNdexIugxFlJa7rNZneTbLIpM/CnNLsdMvNjM8l0mRCiQ9Ye61IKCAgZAUnH+mU3MMZaHYChBnJUDzWOFZdVfc5+ZFLbrWDeXPwbxIqrLLfaeS0hEBVGIRQCEiZoHQwtlGSByCCdYBl8g8egTTAWoKQMRBRBcZxYlhzhKegqMOageErsCHVkk3hXIFooDgHB1KkHIHVgzKB4ADJQ/A1jAFmAYhkQqA5TOBtocrKrgXwQA8gcFIuAIO8sQSA7hidvPwaQGZSaAYHOUWJABhWWw2EMIH9QagQERU4SArJXo0ZZL18uvaxejXt/Em8xjVBXmvFr1KVm/AJ10tRe2XnraNqaJvKE3KHuUbfK1E+VHB0q40/y3sdQSxY4FHWeKJCunP8UyDdqJZenT3ntVV5jIYCAh20vT7ioP8tpf6E2lfEMwERe+whV1MHjwZB7PBiCxcGQWwKZKD62lfGNnP/1poFAA60T7rF1UgcKd2id3KDeUS+oLWV8DfWAepOfq00CgQabi9zjcgJVYVD7PVzQUAUGAQkbNJTBICDhgwYTjDYD6XeW08ZKh+A4pYkzenOxXUbvZcWz7E8ykRMnIHGX1XPl+1m2vPYpL+2qdb8CDAARlKFEz/ZVkAAAAABJRU5ErkJggg==)}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th{background:#0a0a0a;border:1px solid #222;color:#999}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th{background:#0e0e0e}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_today{color:#c50}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_highlighted_default{background:#ffe9d2;box-shadow:#ffb871 0 1px 4px 0 inset;color:#000}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_highlighted_mint{background:#c1ffc9;box-shadow:#00dd1c 0 1px 4px 0 inset;color:#000}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_default,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_current,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box>div>div.xdsoft_current{background:#c50;box-shadow:#b03e00 0 1px 3px 0 inset;color:#000}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td:hover,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box>div>div:hover{color:#000 !important;background:#007fff !important}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th{color:#666}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright{color:#333 !important}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a{color:#111 !important}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a:hover{color:#555 !important}.xdsoft_dark .xdsoft_time_box{border:1px solid #333}.xdsoft_dark .xdsoft_scrollbar>.xdsoft_scroller{background:#333 !important}.xdsoft_datetimepicker .xdsoft_save_selected{display:block;border:1px solid #ddd !important;margin-top:5px;width:100%;color:#454551;font-size:13px}.xdsoft_datetimepicker .blue-gradient-button{font-family:"museo-sans","Book Antiqua",sans-serif;font-size:12px;font-weight:300;color:#82878c;height:28px;position:relative;padding:4px 17px 4px 33px;border:1px solid #d7d8da;background:-moz-linear-gradient(top,#fff 0,#f4f8fa 73%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(73%,#f4f8fa));background:-webkit-linear-gradient(top,#fff 0,#f4f8fa 73%);background:-o-linear-gradient(top,#fff 0,#f4f8fa 73%);background:-ms-linear-gradient(top,#fff 0,#f4f8fa 73%);background:linear-gradient(to bottom,#fff 0,#f4f8fa 73%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff',endColorstr='#f4f8fa',GradientType=0)}.xdsoft_datetimepicker .blue-gradient-button:hover,.xdsoft_datetimepicker .blue-gradient-button:focus,.xdsoft_datetimepicker .blue-gradient-button:hover span,.xdsoft_datetimepicker .blue-gradient-button:focus span{color:#454551;background:-moz-linear-gradient(top,#f4f8fa 0,#FFF 73%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f4f8fa),color-stop(73%,#FFF));background:-webkit-linear-gradient(top,#f4f8fa 0,#FFF 73%);background:-o-linear-gradient(top,#f4f8fa 0,#FFF 73%);background:-ms-linear-gradient(top,#f4f8fa 0,#FFF 73%);background:linear-gradient(to bottom,#f4f8fa 0,#FFF 73%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f4f8fa',endColorstr='#FFF',GradientType=0)} |
1 | +var datetimepickerFactory=function(e){"use strict";function t(e,t,a){this.date=e,this.desc=t,this.style=a}var a={i18n:{ar:{months:["كانون الثاني","شباط","آذار","نيسان","مايو","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],dayOfWeekShort:["ن","ث","ع","خ","ج","س","ح"],dayOfWeek:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد"]},ro:{months:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],dayOfWeekShort:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],dayOfWeek:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"]},id:{months:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],dayOfWeekShort:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],dayOfWeek:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"]},is:{months:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],dayOfWeekShort:["Sun","Mán","Þrið","Mið","Fim","Fös","Lau"],dayOfWeek:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"]},bg:{months:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],dayOfWeekShort:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],dayOfWeek:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"]},fa:{months:["فروردین","اردیبهشت","خرداد","تیر","مرداد","شهریور","مهر","آبان","آذر","دی","بهمن","اسفند"],dayOfWeekShort:["یکشنبه","دوشنبه","سه شنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],dayOfWeek:["یکشنبه","دوشنبه","سهشنبه","چهارشنبه","پنجشنبه","جمعه","شنبه","یکشنبه"]},ru:{months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],dayOfWeekShort:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],dayOfWeek:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"]},uk:{months:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],dayOfWeekShort:["Ндл","Пнд","Втр","Срд","Чтв","Птн","Сбт"],dayOfWeek:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"]},en:{months:["January","February","March","April","May","June","July","August","September","October","November","December"],dayOfWeekShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},el:{months:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],dayOfWeekShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],dayOfWeek:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"]},de:{months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],dayOfWeekShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayOfWeek:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]},nl:{months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],dayOfWeekShort:["zo","ma","di","wo","do","vr","za"],dayOfWeek:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"]},tr:{months:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],dayOfWeekShort:["Paz","Pts","Sal","Çar","Per","Cum","Cts"],dayOfWeek:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"]},fr:{months:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],dayOfWeekShort:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],dayOfWeek:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]},es:{months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],dayOfWeekShort:["Dom","Lun","Mar","Mié","Jue","Vie","Sáb"],dayOfWeek:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"]},th:{months:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],dayOfWeekShort:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],dayOfWeek:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัส","ศุกร์","เสาร์","อาทิตย์"]},pl:{months:["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],dayOfWeekShort:["nd","pn","wt","śr","cz","pt","sb"],dayOfWeek:["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"]},pt:{months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],dayOfWeekShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sab"],dayOfWeek:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"]},ch:{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"]},se:{months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],dayOfWeekShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"]},km:{months:["មករា","កុម្ភៈ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],dayOfWeekShort:["អាទិ","ច័ន្ទ","អង្គារ","ពុធ","ព្រហ","សុក្រ","សៅរ៍"],dayOfWeek:["អាទិត្យ","ច័ន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍"]},kr:{months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayOfWeekShort:["일","월","화","수","목","금","토"],dayOfWeek:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"]},it:{months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],dayOfWeekShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayOfWeek:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"]},da:{months:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],dayOfWeekShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayOfWeek:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"]},no:{months:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"],dayOfWeekShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayOfWeek:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"]},ja:{months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayOfWeekShort:["日","月","火","水","木","金","土"],dayOfWeek:["日曜","月曜","火曜","水曜","木曜","金曜","土曜"]},vi:{months:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],dayOfWeekShort:["CN","T2","T3","T4","T5","T6","T7"],dayOfWeek:["Chủ nhật","Thứ hai","Thứ ba","Thứ tư","Thứ năm","Thứ sáu","Thứ bảy"]},sl:{months:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],dayOfWeekShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],dayOfWeek:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"]},cs:{months:["Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],dayOfWeekShort:["Ne","Po","Út","St","Čt","Pá","So"]},hu:{months:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],dayOfWeekShort:["Va","Hé","Ke","Sze","Cs","Pé","Szo"],dayOfWeek:["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"]},az:{months:["Yanvar","Fevral","Mart","Aprel","May","Iyun","Iyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],dayOfWeekShort:["B","Be","Ça","Ç","Ca","C","Ş"],dayOfWeek:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə"]},bs:{months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],dayOfWeekShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayOfWeek:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"]},ca:{months:["Gener","Febrer","Març","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"],dayOfWeekShort:["Dg","Dl","Dt","Dc","Dj","Dv","Ds"],dayOfWeek:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"]},"en-GB":{months:["January","February","March","April","May","June","July","August","September","October","November","December"],dayOfWeekShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},et:{months:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],dayOfWeekShort:["P","E","T","K","N","R","L"],dayOfWeek:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"]},eu:{months:["Urtarrila","Otsaila","Martxoa","Apirila","Maiatza","Ekaina","Uztaila","Abuztua","Iraila","Urria","Azaroa","Abendua"],dayOfWeekShort:["Ig.","Al.","Ar.","Az.","Og.","Or.","La."],dayOfWeek:["Igandea","Astelehena","Asteartea","Asteazkena","Osteguna","Ostirala","Larunbata"]},fi:{months:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],dayOfWeekShort:["Su","Ma","Ti","Ke","To","Pe","La"],dayOfWeek:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"]},gl:{months:["Xan","Feb","Maz","Abr","Mai","Xun","Xul","Ago","Set","Out","Nov","Dec"],dayOfWeekShort:["Dom","Lun","Mar","Mer","Xov","Ven","Sab"],dayOfWeek:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"]},hr:{months:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],dayOfWeekShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayOfWeek:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"]},ko:{months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayOfWeekShort:["일","월","화","수","목","금","토"],dayOfWeek:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"]},lt:{months:["Sausio","Vasario","Kovo","Balandžio","Gegužės","Birželio","Liepos","Rugpjūčio","Rugsėjo","Spalio","Lapkričio","Gruodžio"],dayOfWeekShort:["Sek","Pir","Ant","Tre","Ket","Pen","Šeš"],dayOfWeek:["Sekmadienis","Pirmadienis","Antradienis","Trečiadienis","Ketvirtadienis","Penktadienis","Šeštadienis"]},lv:{months:["Janvāris","Februāris","Marts","Aprīlis ","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],dayOfWeekShort:["Sv","Pr","Ot","Tr","Ct","Pk","St"],dayOfWeek:["Svētdiena","Pirmdiena","Otrdiena","Trešdiena","Ceturtdiena","Piektdiena","Sestdiena"]},mk:{months:["јануари","февруари","март","април","мај","јуни","јули","август","септември","октомври","ноември","декември"],dayOfWeekShort:["нед","пон","вто","сре","чет","пет","саб"],dayOfWeek:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"]},mn:{months:["1-р сар","2-р сар","3-р сар","4-р сар","5-р сар","6-р сар","7-р сар","8-р сар","9-р сар","10-р сар","11-р сар","12-р сар"],dayOfWeekShort:["Дав","Мяг","Лха","Пүр","Бсн","Бям","Ням"],dayOfWeek:["Даваа","Мягмар","Лхагва","Пүрэв","Баасан","Бямба","Ням"]},"pt-BR":{months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],dayOfWeekShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayOfWeek:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"]},sk:{months:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],dayOfWeekShort:["Ne","Po","Ut","St","Št","Pi","So"],dayOfWeek:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"]},sq:{months:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],dayOfWeekShort:["Die","Hën","Mar","Mër","Enj","Pre","Shtu"],dayOfWeek:["E Diel","E Hënë","E Martē","E Mërkurë","E Enjte","E Premte","E Shtunë"]},"sr-YU":{months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],dayOfWeekShort:["Ned","Pon","Uto","Sre","čet","Pet","Sub"],dayOfWeek:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"]},sr:{months:["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],dayOfWeekShort:["нед","пон","уто","сре","чет","пет","суб"],dayOfWeek:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"]},sv:{months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],dayOfWeekShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],dayOfWeek:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"]},"zh-TW":{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},zh:{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},ug:{months:["1-ئاي","2-ئاي","3-ئاي","4-ئاي","5-ئاي","6-ئاي","7-ئاي","8-ئاي","9-ئاي","10-ئاي","11-ئاي","12-ئاي"],dayOfWeek:["يەكشەنبە","دۈشەنبە","سەيشەنبە","چارشەنبە","پەيشەنبە","جۈمە","شەنبە"]},he:{months:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],dayOfWeekShort:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],dayOfWeek:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת","ראשון"]},hy:{months:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],dayOfWeekShort:["Կի","Երկ","Երք","Չոր","Հնգ","Ուրբ","Շբթ"],dayOfWeek:["Կիրակի","Երկուշաբթի","Երեքշաբթի","Չորեքշաբթի","Հինգշաբթի","Ուրբաթ","Շաբաթ"]},kg:{months:["Үчтүн айы","Бирдин айы","Жалган Куран","Чын Куран","Бугу","Кулжа","Теке","Баш Оона","Аяк Оона","Тогуздун айы","Жетинин айы","Бештин айы"],dayOfWeekShort:["Жек","Дүй","Шей","Шар","Бей","Жум","Ише"],dayOfWeek:["Жекшемб","Дүйшөмб","Шейшемб","Шаршемб","Бейшемби","Жума","Ишенб"]},rm:{months:["Schaner","Favrer","Mars","Avrigl","Matg","Zercladur","Fanadur","Avust","Settember","October","November","December"],dayOfWeekShort:["Du","Gli","Ma","Me","Gie","Ve","So"],dayOfWeek:["Dumengia","Glindesdi","Mardi","Mesemna","Gievgia","Venderdi","Sonda"]},ka:{months:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],dayOfWeekShort:["კვ","ორშ","სამშ","ოთხ","ხუთ","პარ","შაბ"],dayOfWeek:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"]}},ownerDocument:document,contentWindow:window,value:"",rtl:!1,format:"Y/m/d H:i",formatTime:"H:i",formatDate:"Y/m/d",startDate:!1,step:60,monthChangeSpinner:!0,closeOnDateSelect:!1,closeOnTimeSelect:!0,closeOnWithoutClick:!0,closeOnInputClick:!0,openOnFocus:!0,timepicker:!0,datepicker:!0,weeks:!1,defaultTime:!1,defaultDate:!1,minDate:!1,maxDate:!1,minTime:!1,maxTime:!1,minDateTime:!1,maxDateTime:!1,allowTimes:[],opened:!1,initTime:!0,inline:!1,theme:"",touchMovedThreshold:5,onSelectDate:function(){},onSelectTime:function(){},onChangeMonth:function(){},onGetWeekOfYear:function(){},onChangeYear:function(){},onChangeDateTime:function(){},onShow:function(){},onClose:function(){},onGenerate:function(){},withoutCopyright:!0,inverseButton:!1,hours12:!1,next:"xdsoft_next",prev:"xdsoft_prev",dayOfWeekStart:0,parentID:"body",timeHeightInTimePicker:25,timepickerScrollbar:!0,todayButton:!0,prevButton:!0,nextButton:!0,defaultSelect:!0,scrollMonth:!0,scrollTime:!0,scrollInput:!0,lazyInit:!1,mask:!1,validateOnBlur:!0,allowBlank:!0,yearStart:1950,yearEnd:2050,monthStart:0,monthEnd:11,style:"",id:"",fixed:!1,roundTime:"round",className:"",weekends:[],highlightedDates:[],highlightedPeriods:[],allowDates:[],allowDateRe:null,disabledDates:[],disabledWeekDays:[],yearOffset:0,beforeShowDay:null,enterLikeTab:!0,showApplyButton:!1},o=null,r=null,n="en",i={meridiem:["AM","PM"]},s=function(){var t=a.i18n[n],s={days:t.dayOfWeek,daysShort:t.dayOfWeekShort,months:t.months,monthsShort:e.map(t.months,function(e){return e.substring(0,3)})};"function"==typeof DateFormatter&&(o=r=new DateFormatter({dateSettings:e.extend({},i,s)}))},d={moment:{default_options:{format:"YYYY/MM/DD HH:mm",formatDate:"YYYY/MM/DD",formatTime:"HH:mm"},formatter:{parseDate:function(e,t){if(l(t))return r.parseDate(e,t);var a=moment(e,t);return!!a.isValid()&&a.toDate()},formatDate:function(e,t){return l(t)?r.formatDate(e,t):moment(e).format(t)},formatMask:function(e){return e.replace(/Y{4}/g,"9999").replace(/Y{2}/g,"99").replace(/M{2}/g,"19").replace(/D{2}/g,"39").replace(/H{2}/g,"29").replace(/m{2}/g,"59").replace(/s{2}/g,"59")}}}};e.datetimepicker={setLocale:function(e){var t=a.i18n[e]?e:"en";n!==t&&(n=t,s())},setDateFormatter:function(t){if("string"==typeof t&&d.hasOwnProperty(t)){var r=d[t];e.extend(a,r.default_options),o=r.formatter}else o=t}};var u={RFC_2822:"D, d M Y H:i:s O",ATOM:"Y-m-dTH:i:sP",ISO_8601:"Y-m-dTH:i:sO",RFC_822:"D, d M y H:i:s O",RFC_850:"l, d-M-y H:i:s T",RFC_1036:"D, d M y H:i:s O",RFC_1123:"D, d M Y H:i:s O",RSS:"D, d M Y H:i:s O",W3C:"Y-m-dTH:i:sP"},l=function(e){return-1!==Object.values(u).indexOf(e)};e.extend(e.datetimepicker,u),s(),window.getComputedStyle||(window.getComputedStyle=function(e){return this.el=e,this.getPropertyValue=function(t){var a=/(-([a-z]))/g;return"float"===t&&(t="styleFloat"),a.test(t)&&(t=t.replace(a,function(e,t,a){return a.toUpperCase()})),e.currentStyle[t]||null},this}),Array.prototype.indexOf||(Array.prototype.indexOf=function(e,t){var a,o;for(a=t||0,o=this.length;a<o;a+=1)if(this[a]===e)return a;return-1}),Date.prototype.countDaysInMonth=function(){return new Date(this.getFullYear(),this.getMonth()+1,0).getDate()},e.fn.xdsoftScroller=function(t,a){return this.each(function(){var o,r,n,i,s,d=e(this),u=function(e){var t,a={x:0,y:0};return"touchstart"===e.type||"touchmove"===e.type||"touchend"===e.type||"touchcancel"===e.type?(t=e.originalEvent.touches[0]||e.originalEvent.changedTouches[0],a.x=t.clientX,a.y=t.clientY):"mousedown"!==e.type&&"mouseup"!==e.type&&"mousemove"!==e.type&&"mouseover"!==e.type&&"mouseout"!==e.type&&"mouseenter"!==e.type&&"mouseleave"!==e.type||(a.x=e.clientX,a.y=e.clientY),a},l=100,f=!1,c=0,m=0,h=0,g=!1,p=0,D=function(){};"hide"!==a?(e(this).hasClass("xdsoft_scroller_box")||(o=d.children().eq(0),r=d[0].clientHeight,n=o[0].offsetHeight,i=e('<div class="xdsoft_scrollbar"></div>'),s=e('<div class="xdsoft_scroller"></div>'),i.append(s),d.addClass("xdsoft_scroller_box").append(i),D=function(e){var t=u(e).y-c+p;t<0&&(t=0),t+s[0].offsetHeight>h&&(t=h-s[0].offsetHeight),d.trigger("scroll_element.xdsoft_scroller",[l?t/l:0])},s.on("touchstart.xdsoft_scroller mousedown.xdsoft_scroller",function(o){r||d.trigger("resize_scroll.xdsoft_scroller",[a]),c=u(o).y,p=parseInt(s.css("margin-top"),10),h=i[0].offsetHeight,"mousedown"===o.type||"touchstart"===o.type?(t.ownerDocument&&e(t.ownerDocument.body).addClass("xdsoft_noselect"),e([t.ownerDocument.body,t.contentWindow]).on("touchend mouseup.xdsoft_scroller",function a(){e([t.ownerDocument.body,t.contentWindow]).off("touchend mouseup.xdsoft_scroller",a).off("mousemove.xdsoft_scroller",D).removeClass("xdsoft_noselect")}),e(t.ownerDocument.body).on("mousemove.xdsoft_scroller",D)):(g=!0,o.stopPropagation(),o.preventDefault())}).on("touchmove",function(e){g&&(e.preventDefault(),D(e))}).on("touchend touchcancel",function(){g=!1,p=0}),d.on("scroll_element.xdsoft_scroller",function(e,t){r||d.trigger("resize_scroll.xdsoft_scroller",[t,!0]),t=t>1?1:t<0||isNaN(t)?0:t,s.css("margin-top",l*t),setTimeout(function(){o.css("marginTop",-parseInt((o[0].offsetHeight-r)*t,10))},10)}).on("resize_scroll.xdsoft_scroller",function(e,t,a){var u,f;r=d[0].clientHeight,n=o[0].offsetHeight,f=(u=r/n)*i[0].offsetHeight,u>1?s.hide():(s.show(),s.css("height",parseInt(f>10?f:10,10)),l=i[0].offsetHeight-s[0].offsetHeight,!0!==a&&d.trigger("scroll_element.xdsoft_scroller",[t||Math.abs(parseInt(o.css("marginTop"),10))/(n-r)]))}),d.on("mousewheel",function(e){var t=Math.abs(parseInt(o.css("marginTop"),10));return(t-=20*e.deltaY)<0&&(t=0),d.trigger("scroll_element.xdsoft_scroller",[t/(n-r)]),e.stopPropagation(),!1}),d.on("touchstart",function(e){f=u(e),m=Math.abs(parseInt(o.css("marginTop"),10))}),d.on("touchmove",function(e){if(f){e.preventDefault();var t=u(e);d.trigger("scroll_element.xdsoft_scroller",[(m-(t.y-f.y))/(n-r)])}}),d.on("touchend touchcancel",function(){f=!1,m=0})),d.trigger("resize_scroll.xdsoft_scroller",[a])):d.find(".xdsoft_scrollbar").hide()})},e.fn.datetimepicker=function(r,i){var s,d,u=this,l=48,f=57,c=96,m=105,h=17,g=46,p=13,D=27,y=8,k=37,v=38,x=39,b=40,T=9,S=116,O=65,M=67,w=86,W=90,_=89,F=!1,C=e.isPlainObject(r)||!r?e.extend(!0,{},a,r):e.extend(!0,{},a),P=0,A=function(e){e.on("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart",function t(){e.is(":disabled")||e.data("xdsoft_datetimepicker")||(clearTimeout(P),P=setTimeout(function(){e.data("xdsoft_datetimepicker")||s(e),e.off("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart",t).trigger("open.xdsoft")},100))})};return s=function(a){function i(){var e,t=!1;return C.startDate?t=Y.strToDate(C.startDate):(t=C.value||(a&&a.val&&a.val()?a.val():""))?(t=Y.strToDateTime(t),C.yearOffset&&(t=new Date(t.getFullYear()-C.yearOffset,t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()))):C.defaultDate&&(t=Y.strToDateTime(C.defaultDate),C.defaultTime&&(e=Y.strtotime(C.defaultTime),t.setHours(e.getHours()),t.setMinutes(e.getMinutes()))),t&&Y.isValidDate(t)?H.data("changed",!0):t="",t||0}function s(t){var r=function(e,t){var a=e.replace(/([\[\]\/\{\}\(\)\-\.\+]{1})/g,"\\$1").replace(/_/g,"{digit+}").replace(/([0-9]{1})/g,"{digit$1}").replace(/\{digit([0-9]{1})\}/g,"[0-$1_]{1}").replace(/\{digit[\+]\}/g,"[0-9_]{1}");return new RegExp(a).test(t)},n=function(e,a){if(!(e="string"==typeof e||e instanceof String?t.ownerDocument.getElementById(e):e))return!1;if(e.createTextRange){var o=e.createTextRange();return o.collapse(!0),o.moveEnd("character",a),o.moveStart("character",a),o.select(),!0}return!!e.setSelectionRange&&(e.setSelectionRange(a,a),!0)};t.mask&&a.off("keydown.xdsoft"),!0===t.mask&&(o.formatMask?t.mask=o.formatMask(t.format):t.mask=t.format.replace(/Y/g,"9999").replace(/F/g,"9999").replace(/m/g,"19").replace(/d/g,"39").replace(/H/g,"29").replace(/i/g,"59").replace(/s/g,"59")),"string"===e.type(t.mask)&&(r(t.mask,a.val())||(a.val(t.mask.replace(/[0-9]/g,"_")),n(a[0],0)),a.on("paste.xdsoft",function(o){var i=(o.clipboardData||o.originalEvent.clipboardData||window.clipboardData).getData("text"),s=this.value,d=this.selectionStart;return s=s.substr(0,d)+i+s.substr(d+i.length),d+=i.length,r(t.mask,s)?(this.value=s,n(this,d)):""===e.trim(s)?this.value=t.mask.replace(/[0-9]/g,"_"):a.trigger("error_input.xdsoft"),o.preventDefault(),!1}),a.on("keydown.xdsoft",function(o){var i,s=this.value,d=o.which,u=this.selectionStart,C=this.selectionEnd,P=u!==C;if(d>=l&&d<=f||d>=c&&d<=m||d===y||d===g){for(i=d===y||d===g?"_":String.fromCharCode(c<=d&&d<=m?d-l:d),d===y&&u&&!P&&(u-=1);;){var A=t.mask.substr(u,1),Y=u<t.mask.length,j=u>0;if(!(/[^0-9_]/.test(A)&&Y&&j))break;u+=d!==y||P?1:-1}if(P){var H=C-u,J=t.mask.replace(/[0-9]/g,"_"),z=J.substr(u,H).substr(1);s=s.substr(0,u)+(i+z)+s.substr(u+H)}else s=s.substr(0,u)+i+s.substr(u+1);if(""===e.trim(s))s=J;else if(u===t.mask.length)return o.preventDefault(),!1;for(u+=d===y?0:1;/[^0-9_]/.test(t.mask.substr(u,1))&&u<t.mask.length&&u>0;)u+=d===y?0:1;r(t.mask,s)?(this.value=s,n(this,u)):""===e.trim(s)?this.value=t.mask.replace(/[0-9]/g,"_"):a.trigger("error_input.xdsoft")}else if(-1!==[O,M,w,W,_].indexOf(d)&&F||-1!==[D,v,b,k,x,S,h,T,p].indexOf(d))return!0;return o.preventDefault(),!1}))}var d,u,P,A,Y,j,H=e('<div class="xdsoft_datetimepicker xdsoft_noselect"></div>'),J=e('<div class="xdsoft_copyright"><a target="_blank" href="http://xdsoft.net/jqplugins/datetimepicker/">xdsoft.net</a></div>'),z=e('<div class="xdsoft_datepicker active"></div>'),N=e('<div class="xdsoft_monthpicker"><button type="button" class="xdsoft_prev"></button><button type="button" class="xdsoft_today_button"></button><div class="xdsoft_label xdsoft_month"><span></span><i></i></div><div class="xdsoft_label xdsoft_year"><span></span><i></i></div><button type="button" class="xdsoft_next"></button></div>'),I=e('<div class="xdsoft_calendar"></div>'),L=e('<div class="xdsoft_timepicker active"><button type="button" class="xdsoft_prev"></button><div class="xdsoft_time_box"></div><button type="button" class="xdsoft_next"></button></div>'),E=L.find(".xdsoft_time_box").eq(0),V=e('<div class="xdsoft_time_variant"></div>'),R=e('<button type="button" class="xdsoft_save_selected blue-gradient-button">Save Selected</button>'),B=e('<div class="xdsoft_select xdsoft_monthselect"><div></div></div>'),G=e('<div class="xdsoft_select xdsoft_yearselect"><div></div></div>'),q=!1,K=0;C.id&&H.attr("id",C.id),C.style&&H.attr("style",C.style),C.weeks&&H.addClass("xdsoft_showweeks"),C.rtl&&H.addClass("xdsoft_rtl"),H.addClass("xdsoft_"+C.theme),H.addClass(C.className),N.find(".xdsoft_month span").after(B),N.find(".xdsoft_year span").after(G),N.find(".xdsoft_month,.xdsoft_year").on("touchstart mousedown.xdsoft",function(t){var a,o,r=e(this).find(".xdsoft_select").eq(0),n=0,i=0,s=r.is(":visible");for(N.find(".xdsoft_select").hide(),Y.currentTime&&(n=Y.currentTime[e(this).hasClass("xdsoft_month")?"getMonth":"getFullYear"]()),r[s?"hide":"show"](),a=r.find("div.xdsoft_option"),o=0;o<a.length&&a.eq(o).data("value")!==n;o+=1)i+=a[0].offsetHeight;return r.xdsoftScroller(C,i/(r.children()[0].offsetHeight-r[0].clientHeight)),t.stopPropagation(),!1});var U=function(e){var t=e.originalEvent,a=t.touches?t.touches[0]:t;this.touchStartPosition=this.touchStartPosition||a;var o=Math.abs(this.touchStartPosition.clientX-a.clientX),r=Math.abs(this.touchStartPosition.clientY-a.clientY);Math.sqrt(o*o+r*r)>C.touchMovedThreshold&&(this.touchMoved=!0)};N.find(".xdsoft_select").xdsoftScroller(C).on("touchstart mousedown.xdsoft",function(e){var t=e.originalEvent;this.touchMoved=!1,this.touchStartPosition=t.touches?t.touches[0]:t,e.stopPropagation(),e.preventDefault()}).on("touchmove",".xdsoft_option",U).on("touchend mousedown.xdsoft",".xdsoft_option",function(){if(!this.touchMoved){void 0!==Y.currentTime&&null!==Y.currentTime||(Y.currentTime=Y.now());var t=Y.currentTime.getFullYear();Y&&Y.currentTime&&Y.currentTime[e(this).parent().parent().hasClass("xdsoft_monthselect")?"setMonth":"setFullYear"](e(this).data("value")),e(this).parent().parent().hide(),H.trigger("xchange.xdsoft"),C.onChangeMonth&&e.isFunction(C.onChangeMonth)&&C.onChangeMonth.call(H,Y.currentTime,H.data("input")),t!==Y.currentTime.getFullYear()&&e.isFunction(C.onChangeYear)&&C.onChangeYear.call(H,Y.currentTime,H.data("input"))}}),H.getValue=function(){return Y.getCurrentTime()},H.setOptions=function(r){var n={};C=e.extend(!0,{},C,r),r.allowTimes&&e.isArray(r.allowTimes)&&r.allowTimes.length&&(C.allowTimes=e.extend(!0,[],r.allowTimes)),r.weekends&&e.isArray(r.weekends)&&r.weekends.length&&(C.weekends=e.extend(!0,[],r.weekends)),r.allowDates&&e.isArray(r.allowDates)&&r.allowDates.length&&(C.allowDates=e.extend(!0,[],r.allowDates)),r.allowDateRe&&"[object String]"===Object.prototype.toString.call(r.allowDateRe)&&(C.allowDateRe=new RegExp(r.allowDateRe)),r.highlightedDates&&e.isArray(r.highlightedDates)&&r.highlightedDates.length&&(e.each(r.highlightedDates,function(a,r){var i,s=e.map(r.split(","),e.trim),d=new t(o.parseDate(s[0],C.formatDate),s[1],s[2]),u=o.formatDate(d.date,C.formatDate);void 0!==n[u]?(i=n[u].desc)&&i.length&&d.desc&&d.desc.length&&(n[u].desc=i+"\n"+d.desc):n[u]=d}),C.highlightedDates=e.extend(!0,[],n)),r.highlightedPeriods&&e.isArray(r.highlightedPeriods)&&r.highlightedPeriods.length&&(n=e.extend(!0,[],C.highlightedDates),e.each(r.highlightedPeriods,function(a,r){var i,s,d,u,l,f,c;if(e.isArray(r))i=r[0],s=r[1],d=r[2],c=r[3];else{var m=e.map(r.split(","),e.trim);i=o.parseDate(m[0],C.formatDate),s=o.parseDate(m[1],C.formatDate),d=m[2],c=m[3]}for(;i<=s;)u=new t(i,d,c),l=o.formatDate(i,C.formatDate),i.setDate(i.getDate()+1),void 0!==n[l]?(f=n[l].desc)&&f.length&&u.desc&&u.desc.length&&(n[l].desc=f+"\n"+u.desc):n[l]=u}),C.highlightedDates=e.extend(!0,[],n)),r.disabledDates&&e.isArray(r.disabledDates)&&r.disabledDates.length&&(C.disabledDates=e.extend(!0,[],r.disabledDates)),r.disabledWeekDays&&e.isArray(r.disabledWeekDays)&&r.disabledWeekDays.length&&(C.disabledWeekDays=e.extend(!0,[],r.disabledWeekDays)),!C.open&&!C.opened||C.inline||a.trigger("open.xdsoft"),C.inline&&(q=!0,H.addClass("xdsoft_inline"),a.after(H).hide()),C.inverseButton&&(C.next="xdsoft_prev",C.prev="xdsoft_next"),C.datepicker?z.addClass("active"):z.removeClass("active"),C.timepicker?L.addClass("active"):L.removeClass("active"),C.value&&(Y.setCurrentTime(C.value),a&&a.val&&a.val(Y.str)),isNaN(C.dayOfWeekStart)?C.dayOfWeekStart=0:C.dayOfWeekStart=parseInt(C.dayOfWeekStart,10)%7,C.timepickerScrollbar||E.xdsoftScroller(C,"hide"),C.minDate&&/^[\+\-](.*)$/.test(C.minDate)&&(C.minDate=o.formatDate(Y.strToDateTime(C.minDate),C.formatDate)),C.maxDate&&/^[\+\-](.*)$/.test(C.maxDate)&&(C.maxDate=o.formatDate(Y.strToDateTime(C.maxDate),C.formatDate)),C.minDateTime&&/^\+(.*)$/.test(C.minDateTime)&&(C.minDateTime=Y.strToDateTime(C.minDateTime).dateFormat(C.formatDate)),C.maxDateTime&&/^\+(.*)$/.test(C.maxDateTime)&&(C.maxDateTime=Y.strToDateTime(C.maxDateTime).dateFormat(C.formatDate)),R.toggle(C.showApplyButton),N.find(".xdsoft_today_button").css("visibility",C.todayButton?"visible":"hidden"),N.find("."+C.prev).css("visibility",C.prevButton?"visible":"hidden"),N.find("."+C.next).css("visibility",C.nextButton?"visible":"hidden"),s(C),C.validateOnBlur&&a.off("blur.xdsoft").on("blur.xdsoft",function(){if(C.allowBlank&&(!e.trim(e(this).val()).length||"string"==typeof C.mask&&e.trim(e(this).val())===C.mask.replace(/[0-9]/g,"_")))e(this).val(null),H.data("xdsoft_datetime").empty();else{var t=o.parseDate(e(this).val(),C.format);if(t)e(this).val(o.formatDate(t,C.format));else{var a=+[e(this).val()[0],e(this).val()[1]].join(""),r=+[e(this).val()[2],e(this).val()[3]].join("");!C.datepicker&&C.timepicker&&a>=0&&a<24&&r>=0&&r<60?e(this).val([a,r].map(function(e){return e>9?e:"0"+e}).join(":")):e(this).val(o.formatDate(Y.now(),C.format))}H.data("xdsoft_datetime").setCurrentTime(e(this).val())}H.trigger("changedatetime.xdsoft"),H.trigger("close.xdsoft")}),C.dayOfWeekStartPrev=0===C.dayOfWeekStart?6:C.dayOfWeekStart-1,H.trigger("xchange.xdsoft").trigger("afterOpen.xdsoft")},H.data("options",C).on("touchstart mousedown.xdsoft",function(e){return e.stopPropagation(),e.preventDefault(),G.hide(),B.hide(),!1}),E.append(V),E.xdsoftScroller(C),H.on("afterOpen.xdsoft",function(){E.xdsoftScroller(C)}),H.append(z).append(L),!0!==C.withoutCopyright&&H.append(J),z.append(N).append(I).append(R),e(C.parentID).append(H),Y=new function(){var t=this;t.now=function(e){var a,o,r=new Date;return!e&&C.defaultDate&&(a=t.strToDateTime(C.defaultDate),r.setFullYear(a.getFullYear()),r.setMonth(a.getMonth()),r.setDate(a.getDate())),r.setFullYear(r.getFullYear()),!e&&C.defaultTime&&(o=t.strtotime(C.defaultTime),r.setHours(o.getHours()),r.setMinutes(o.getMinutes()),r.setSeconds(o.getSeconds()),r.setMilliseconds(o.getMilliseconds())),r},t.isValidDate=function(e){return"[object Date]"===Object.prototype.toString.call(e)&&!isNaN(e.getTime())},t.setCurrentTime=function(e,a){"string"==typeof e?t.currentTime=t.strToDateTime(e):t.isValidDate(e)?t.currentTime=e:e||a||!C.allowBlank||C.inline?t.currentTime=t.now():t.currentTime=null,H.trigger("xchange.xdsoft")},t.empty=function(){t.currentTime=null},t.getCurrentTime=function(){return t.currentTime},t.nextMonth=function(){void 0!==t.currentTime&&null!==t.currentTime||(t.currentTime=t.now());var a,o=t.currentTime.getMonth()+1;return 12===o&&(t.currentTime.setFullYear(t.currentTime.getFullYear()+1),o=0),a=t.currentTime.getFullYear(),t.currentTime.setDate(Math.min(new Date(t.currentTime.getFullYear(),o+1,0).getDate(),t.currentTime.getDate())),t.currentTime.setMonth(o),C.onChangeMonth&&e.isFunction(C.onChangeMonth)&&C.onChangeMonth.call(H,Y.currentTime,H.data("input")),a!==t.currentTime.getFullYear()&&e.isFunction(C.onChangeYear)&&C.onChangeYear.call(H,Y.currentTime,H.data("input")),H.trigger("xchange.xdsoft"),o},t.prevMonth=function(){void 0!==t.currentTime&&null!==t.currentTime||(t.currentTime=t.now());var a=t.currentTime.getMonth()-1;return-1===a&&(t.currentTime.setFullYear(t.currentTime.getFullYear()-1),a=11),t.currentTime.setDate(Math.min(new Date(t.currentTime.getFullYear(),a+1,0).getDate(),t.currentTime.getDate())),t.currentTime.setMonth(a),C.onChangeMonth&&e.isFunction(C.onChangeMonth)&&C.onChangeMonth.call(H,Y.currentTime,H.data("input")),H.trigger("xchange.xdsoft"),a},t.getWeekOfYear=function(t){if(C.onGetWeekOfYear&&e.isFunction(C.onGetWeekOfYear)){var a=C.onGetWeekOfYear.call(H,t);if(void 0!==a)return a}var o=new Date(t.getFullYear(),0,1);return 4!==o.getDay()&&o.setMonth(0,1+(4-o.getDay()+7)%7),Math.ceil(((t-o)/864e5+o.getDay()+1)/7)},t.strToDateTime=function(e){var a,r,n=[];return e&&e instanceof Date&&t.isValidDate(e)?e:((n=/^([+-]{1})(.*)$/.exec(e))&&(n[2]=o.parseDate(n[2],C.formatDate)),n&&n[2]?(a=n[2].getTime()-6e4*n[2].getTimezoneOffset(),r=new Date(t.now(!0).getTime()+parseInt(n[1]+"1",10)*a)):r=e?o.parseDate(e,C.format):t.now(),t.isValidDate(r)||(r=t.now()),r)},t.strToDate=function(e){if(e&&e instanceof Date&&t.isValidDate(e))return e;var a=e?o.parseDate(e,C.formatDate):t.now(!0);return t.isValidDate(a)||(a=t.now(!0)),a},t.strtotime=function(e){if(e&&e instanceof Date&&t.isValidDate(e))return e;var a=e?o.parseDate(e,C.formatTime):t.now(!0);return t.isValidDate(a)||(a=t.now(!0)),a},t.str=function(){var e=C.format;return C.yearOffset&&(e=(e=e.replace("Y",t.currentTime.getFullYear()+C.yearOffset)).replace("y",String(t.currentTime.getFullYear()+C.yearOffset).substring(2,4))),o.formatDate(t.currentTime,e)},t.currentTime=this.now()},R.on("touchend click",function(e){e.preventDefault(),H.data("changed",!0),Y.setCurrentTime(i()),a.val(Y.str()),H.trigger("close.xdsoft")}),N.find(".xdsoft_today_button").on("touchend mousedown.xdsoft",function(){H.data("changed",!0),Y.setCurrentTime(0,!0),H.trigger("afterOpen.xdsoft")}).on("dblclick.xdsoft",function(){var e,t,o=Y.getCurrentTime();o=new Date(o.getFullYear(),o.getMonth(),o.getDate()),e=Y.strToDate(C.minDate),o<(e=new Date(e.getFullYear(),e.getMonth(),e.getDate()))||(t=Y.strToDate(C.maxDate),o>(t=new Date(t.getFullYear(),t.getMonth(),t.getDate()))||(a.val(Y.str()),a.trigger("change"),H.trigger("close.xdsoft")))}),N.find(".xdsoft_prev,.xdsoft_next").on("touchend mousedown.xdsoft",function(){var t=e(this),a=0,o=!1;!function e(r){t.hasClass(C.next)?Y.nextMonth():t.hasClass(C.prev)&&Y.prevMonth(),C.monthChangeSpinner&&(o||(a=setTimeout(e,r||100)))}(500),e([C.ownerDocument.body,C.contentWindow]).on("touchend mouseup.xdsoft",function t(){clearTimeout(a),o=!0,e([C.ownerDocument.body,C.contentWindow]).off("touchend mouseup.xdsoft",t)})}),L.find(".xdsoft_prev,.xdsoft_next").on("touchend mousedown.xdsoft",function(){var t=e(this),a=0,o=!1,r=110;!function e(n){var i=E[0].clientHeight,s=V[0].offsetHeight,d=Math.abs(parseInt(V.css("marginTop"),10));t.hasClass(C.next)&&s-i-C.timeHeightInTimePicker>=d?V.css("marginTop","-"+(d+C.timeHeightInTimePicker)+"px"):t.hasClass(C.prev)&&d-C.timeHeightInTimePicker>=0&&V.css("marginTop","-"+(d-C.timeHeightInTimePicker)+"px"),E.trigger("scroll_element.xdsoft_scroller",[Math.abs(parseInt(V[0].style.marginTop,10)/(s-i))]),r=r>10?10:r-10,o||(a=setTimeout(e,n||r))}(500),e([C.ownerDocument.body,C.contentWindow]).on("touchend mouseup.xdsoft",function t(){clearTimeout(a),o=!0,e([C.ownerDocument.body,C.contentWindow]).off("touchend mouseup.xdsoft",t)})}),d=0,H.on("xchange.xdsoft",function(t){clearTimeout(d),d=setTimeout(function(){void 0!==Y.currentTime&&null!==Y.currentTime||(Y.currentTime=Y.now());for(var t,i,s,d,u,l,f,c,m,h,g="",p=new Date(Y.currentTime.getFullYear(),Y.currentTime.getMonth(),1,12,0,0),D=0,y=Y.now(),k=!1,v=!1,x=!1,b=!1,T=[],S=!0,O="";p.getDay()!==C.dayOfWeekStart;)p.setDate(p.getDate()-1);for(g+="<table><thead><tr>",C.weeks&&(g+="<th></th>"),t=0;t<7;t+=1)g+="<th>"+C.i18n[n].dayOfWeekShort[(t+C.dayOfWeekStart)%7]+"</th>";g+="</tr></thead>",g+="<tbody>",!1!==C.maxDate&&(k=Y.strToDate(C.maxDate),k=new Date(k.getFullYear(),k.getMonth(),k.getDate(),23,59,59,999)),!1!==C.minDate&&(v=Y.strToDate(C.minDate),v=new Date(v.getFullYear(),v.getMonth(),v.getDate())),!1!==C.minDateTime&&(x=Y.strToDate(C.minDateTime),x=new Date(x.getFullYear(),x.getMonth(),x.getDate(),x.getHours(),x.getMinutes(),x.getSeconds())),!1!==C.maxDateTime&&(b=Y.strToDate(C.maxDateTime),b=new Date(b.getFullYear(),b.getMonth(),b.getDate(),b.getHours(),b.getMinutes(),b.getSeconds()));var M;for(!1!==b&&(M=31*(12*b.getFullYear()+b.getMonth())+b.getDate());D<Y.currentTime.countDaysInMonth()||p.getDay()!==C.dayOfWeekStart||Y.currentTime.getMonth()===p.getMonth();){T=[],D+=1,s=p.getDay(),d=p.getDate(),u=p.getFullYear(),l=p.getMonth(),f=Y.getWeekOfYear(p),h="",T.push("xdsoft_date"),c=C.beforeShowDay&&e.isFunction(C.beforeShowDay.call)?C.beforeShowDay.call(H,p):null,C.allowDateRe&&"[object RegExp]"===Object.prototype.toString.call(C.allowDateRe)&&(C.allowDateRe.test(o.formatDate(p,C.formatDate))||T.push("xdsoft_disabled")),C.allowDates&&C.allowDates.length>0&&-1===C.allowDates.indexOf(o.formatDate(p,C.formatDate))&&T.push("xdsoft_disabled");var w=31*(12*p.getFullYear()+p.getMonth())+p.getDate();(!1!==k&&p>k||!1!==x&&p<x||!1!==v&&p<v||!1!==b&&w>M||c&&!1===c[0])&&T.push("xdsoft_disabled"),-1!==C.disabledDates.indexOf(o.formatDate(p,C.formatDate))&&T.push("xdsoft_disabled"),-1!==C.disabledWeekDays.indexOf(s)&&T.push("xdsoft_disabled"),a.is("[disabled]")&&T.push("xdsoft_disabled"),c&&""!==c[1]&&T.push(c[1]),Y.currentTime.getMonth()!==l&&T.push("xdsoft_other_month"),(C.defaultSelect||H.data("changed"))&&o.formatDate(Y.currentTime,C.formatDate)===o.formatDate(p,C.formatDate)&&T.push("xdsoft_current"),o.formatDate(y,C.formatDate)===o.formatDate(p,C.formatDate)&&T.push("xdsoft_today"),0!==p.getDay()&&6!==p.getDay()&&-1===C.weekends.indexOf(o.formatDate(p,C.formatDate))||T.push("xdsoft_weekend"),void 0!==C.highlightedDates[o.formatDate(p,C.formatDate)]&&(i=C.highlightedDates[o.formatDate(p,C.formatDate)],T.push(void 0===i.style?"xdsoft_highlighted_default":i.style),h=void 0===i.desc?"":i.desc),C.beforeShowDay&&e.isFunction(C.beforeShowDay)&&T.push(C.beforeShowDay(p)),S&&(g+="<tr>",S=!1,C.weeks&&(g+="<th>"+f+"</th>")),g+='<td data-date="'+d+'" data-month="'+l+'" data-year="'+u+'" class="xdsoft_date xdsoft_day_of_week'+p.getDay()+" "+T.join(" ")+'" title="'+h+'"><div>'+d+"</div></td>",p.getDay()===C.dayOfWeekStartPrev&&(g+="</tr>",S=!0),p.setDate(d+1)}g+="</tbody></table>",I.html(g),N.find(".xdsoft_label span").eq(0).text(C.i18n[n].months[Y.currentTime.getMonth()]),N.find(".xdsoft_label span").eq(1).text(Y.currentTime.getFullYear()+C.yearOffset),O="",l="";var W=0;if(!1!==C.minTime){F=Y.strtotime(C.minTime);W=60*F.getHours()+F.getMinutes()}var _=1440;if(!1!==C.maxTime){F=Y.strtotime(C.maxTime);_=60*F.getHours()+F.getMinutes()}if(!1!==C.minDateTime){F=Y.strToDateTime(C.minDateTime);o.formatDate(Y.currentTime,C.formatDate)===o.formatDate(F,C.formatDate)&&(l=60*F.getHours()+F.getMinutes())>W&&(W=l)}if(!1!==C.maxDateTime){var F=Y.strToDateTime(C.maxDateTime);o.formatDate(Y.currentTime,C.formatDate)===o.formatDate(F,C.formatDate)&&(l=60*F.getHours()+F.getMinutes())<_&&(_=l)}if(m=function(t,r){var n,i=Y.now(),s=C.allowTimes&&e.isArray(C.allowTimes)&&C.allowTimes.length;i.setHours(t),t=parseInt(i.getHours(),10),i.setMinutes(r),r=parseInt(i.getMinutes(),10),T=[];var d=60*t+r;(a.is("[disabled]")||d>=_||d<W)&&T.push("xdsoft_disabled"),(n=new Date(Y.currentTime)).setHours(parseInt(Y.currentTime.getHours(),10)),s||n.setMinutes(Math[C.roundTime](Y.currentTime.getMinutes()/C.step)*C.step),(C.initTime||C.defaultSelect||H.data("changed"))&&n.getHours()===parseInt(t,10)&&(!s&&C.step>59||n.getMinutes()===parseInt(r,10))&&(C.defaultSelect||H.data("changed")?T.push("xdsoft_current"):C.initTime&&T.push("xdsoft_init_time")),parseInt(y.getHours(),10)===parseInt(t,10)&&parseInt(y.getMinutes(),10)===parseInt(r,10)&&T.push("xdsoft_today"),O+='<div class="xdsoft_time '+T.join(" ")+'" data-hour="'+t+'" data-minute="'+r+'">'+o.formatDate(i,C.formatTime)+"</div>"},C.allowTimes&&e.isArray(C.allowTimes)&&C.allowTimes.length)for(D=0;D<C.allowTimes.length;D+=1)m(Y.strtotime(C.allowTimes[D]).getHours(),l=Y.strtotime(C.allowTimes[D]).getMinutes());else for(D=0,t=0;D<(C.hours12?12:24);D+=1)for(t=0;t<60;t+=C.step){var P=60*D+t;P<W||(P>=_||m((D<10?"0":"")+D,l=(t<10?"0":"")+t))}for(V.html(O),r="",D=parseInt(C.yearStart,10);D<=parseInt(C.yearEnd,10);D+=1)r+='<div class="xdsoft_option '+(Y.currentTime.getFullYear()===D?"xdsoft_current":"")+'" data-value="'+D+'">'+(D+C.yearOffset)+"</div>";for(G.children().eq(0).html(r),D=parseInt(C.monthStart,10),r="";D<=parseInt(C.monthEnd,10);D+=1)r+='<div class="xdsoft_option '+(Y.currentTime.getMonth()===D?"xdsoft_current":"")+'" data-value="'+D+'">'+C.i18n[n].months[D]+"</div>";B.children().eq(0).html(r),e(H).trigger("generate.xdsoft")},10),t.stopPropagation()}).on("afterOpen.xdsoft",function(){if(C.timepicker){var e,t,a,o;V.find(".xdsoft_current").length?e=".xdsoft_current":V.find(".xdsoft_init_time").length&&(e=".xdsoft_init_time"),e?(t=E[0].clientHeight,(a=V[0].offsetHeight)-t<(o=V.find(e).index()*C.timeHeightInTimePicker+1)&&(o=a-t),E.trigger("scroll_element.xdsoft_scroller",[parseInt(o,10)/(a-t)])):E.trigger("scroll_element.xdsoft_scroller",[0])}}),u=0,I.on("touchend click.xdsoft","td",function(t){t.stopPropagation(),u+=1;var o=e(this),r=Y.currentTime;if(void 0!==r&&null!==r||(Y.currentTime=Y.now(),r=Y.currentTime),o.hasClass("xdsoft_disabled"))return!1;r.setDate(1),r.setFullYear(o.data("year")),r.setMonth(o.data("month")),r.setDate(o.data("date")),H.trigger("select.xdsoft",[r]),a.val(Y.str()),C.onSelectDate&&e.isFunction(C.onSelectDate)&&C.onSelectDate.call(H,Y.currentTime,H.data("input"),t),H.data("changed",!0),H.trigger("xchange.xdsoft"),H.trigger("changedatetime.xdsoft"),(u>1||!0===C.closeOnDateSelect||!1===C.closeOnDateSelect&&!C.timepicker)&&!C.inline&&H.trigger("close.xdsoft"),setTimeout(function(){u=0},200)}),V.on("touchstart","div",function(e){this.touchMoved=!1}).on("touchmove","div",U).on("touchend click.xdsoft","div",function(t){if(!this.touchMoved){t.stopPropagation();var a=e(this),o=Y.currentTime;if(void 0!==o&&null!==o||(Y.currentTime=Y.now(),o=Y.currentTime),a.hasClass("xdsoft_disabled"))return!1;o.setHours(a.data("hour")),o.setMinutes(a.data("minute")),H.trigger("select.xdsoft",[o]),H.data("input").val(Y.str()),C.onSelectTime&&e.isFunction(C.onSelectTime)&&C.onSelectTime.call(H,Y.currentTime,H.data("input"),t),H.data("changed",!0),H.trigger("xchange.xdsoft"),H.trigger("changedatetime.xdsoft"),!0!==C.inline&&!0===C.closeOnTimeSelect&&H.trigger("close.xdsoft")}}),z.on("mousewheel.xdsoft",function(e){return!C.scrollMonth||(e.deltaY<0?Y.nextMonth():Y.prevMonth(),!1)}),a.on("mousewheel.xdsoft",function(e){return!C.scrollInput||(!C.datepicker&&C.timepicker?((P=V.find(".xdsoft_current").length?V.find(".xdsoft_current").eq(0).index():0)+e.deltaY>=0&&P+e.deltaY<V.children().length&&(P+=e.deltaY),V.children().eq(P).length&&V.children().eq(P).trigger("mousedown"),!1):C.datepicker&&!C.timepicker?(z.trigger(e,[e.deltaY,e.deltaX,e.deltaY]),a.val&&a.val(Y.str()),H.trigger("changedatetime.xdsoft"),!1):void 0)}),H.on("changedatetime.xdsoft",function(t){if(C.onChangeDateTime&&e.isFunction(C.onChangeDateTime)){var a=H.data("input");C.onChangeDateTime.call(H,Y.currentTime,a,t),delete C.value,a.trigger("change")}}).on("generate.xdsoft",function(){C.onGenerate&&e.isFunction(C.onGenerate)&&C.onGenerate.call(H,Y.currentTime,H.data("input")),q&&(H.trigger("afterOpen.xdsoft"),q=!1)}).on("click.xdsoft",function(e){e.stopPropagation()}),P=0,j=function(e,t){do{if(!(e=e.parentNode)||!1===t(e))break}while("HTML"!==e.nodeName)},A=function(){var t,a,o,r,n,i,s,d,u,l,f,c,m;if(d=H.data("input"),t=d.offset(),a=d[0],l="top",o=t.top+a.offsetHeight-1,r=t.left,n="absolute",u=e(C.contentWindow).width(),c=e(C.contentWindow).height(),m=e(C.contentWindow).scrollTop(),C.ownerDocument.documentElement.clientWidth-t.left<z.parent().outerWidth(!0)){var h=z.parent().outerWidth(!0)-a.offsetWidth;r-=h}"rtl"===d.parent().css("direction")&&(r-=H.outerWidth()-d.outerWidth()),C.fixed?(o-=m,r-=e(C.contentWindow).scrollLeft(),n="fixed"):(s=!1,j(a,function(e){return null!==e&&("fixed"===C.contentWindow.getComputedStyle(e).getPropertyValue("position")?(s=!0,!1):void 0)}),s?(n="fixed",o+H.outerHeight()>c+m?(l="bottom",o=c+m-t.top):o-=m):o+H[0].offsetHeight>c+m&&(o=t.top-H[0].offsetHeight+1),o<0&&(o=0),r+a.offsetWidth>u&&(r=u-a.offsetWidth)),i=H[0],j(i,function(e){if("relative"===C.contentWindow.getComputedStyle(e).getPropertyValue("position")&&u>=e.offsetWidth)return r-=(u-e.offsetWidth)/2,!1}),(f={position:n,left:r,top:"",bottom:""})[l]=o,H.css(f)},H.on("open.xdsoft",function(t){var a=!0;C.onShow&&e.isFunction(C.onShow)&&(a=C.onShow.call(H,Y.currentTime,H.data("input"),t)),!1!==a&&(H.show(),A(),e(C.contentWindow).off("resize.xdsoft",A).on("resize.xdsoft",A),C.closeOnWithoutClick&&e([C.ownerDocument.body,C.contentWindow]).on("touchstart mousedown.xdsoft",function t(){H.trigger("close.xdsoft"),e([C.ownerDocument.body,C.contentWindow]).off("touchstart mousedown.xdsoft",t)}))}).on("close.xdsoft",function(t){var a=!0;N.find(".xdsoft_month,.xdsoft_year").find(".xdsoft_select").hide(),C.onClose&&e.isFunction(C.onClose)&&(a=C.onClose.call(H,Y.currentTime,H.data("input"),t)),!1===a||C.opened||C.inline||H.hide(),t.stopPropagation()}).on("toggle.xdsoft",function(){H.is(":visible")?H.trigger("close.xdsoft"):H.trigger("open.xdsoft")}).data("input",a),K=0,H.data("xdsoft_datetime",Y),H.setOptions(C),Y.setCurrentTime(i()),a.data("xdsoft_datetimepicker",H).on("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart",function(){a.is(":disabled")||a.data("xdsoft_datetimepicker").is(":visible")&&C.closeOnInputClick||C.openOnFocus&&(clearTimeout(K),K=setTimeout(function(){a.is(":disabled")||(q=!0,Y.setCurrentTime(i(),!0),C.mask&&s(C),H.trigger("open.xdsoft"))},100))}).on("keydown.xdsoft",function(t){var a,o=t.which;return-1!==[p].indexOf(o)&&C.enterLikeTab?(a=e("input:visible,textarea:visible,button:visible,a:visible"),H.trigger("close.xdsoft"),a.eq(a.index(this)+1).focus(),!1):-1!==[T].indexOf(o)?(H.trigger("close.xdsoft"),!0):void 0}).on("blur.xdsoft",function(){H.trigger("close.xdsoft")})},d=function(t){var a=t.data("xdsoft_datetimepicker");a&&(a.data("xdsoft_datetime",null),a.remove(),t.data("xdsoft_datetimepicker",null).off(".xdsoft"),e(C.contentWindow).off("resize.xdsoft"),e([C.contentWindow,C.ownerDocument.body]).off("mousedown.xdsoft touchstart"),t.unmousewheel&&t.unmousewheel())},e(C.ownerDocument).off("keydown.xdsoftctrl keyup.xdsoftctrl").on("keydown.xdsoftctrl",function(e){e.keyCode===h&&(F=!0)}).on("keyup.xdsoftctrl",function(e){e.keyCode===h&&(F=!1)}),this.each(function(){var t=e(this).data("xdsoft_datetimepicker");if(t){if("string"===e.type(r))switch(r){case"show":e(this).select().focus(),t.trigger("open.xdsoft");break;case"hide":t.trigger("close.xdsoft");break;case"toggle":t.trigger("toggle.xdsoft");break;case"destroy":d(e(this));break;case"reset":this.value=this.defaultValue,this.value&&t.data("xdsoft_datetime").isValidDate(o.parseDate(this.value,C.format))||t.data("changed",!1),t.data("xdsoft_datetime").setCurrentTime(this.value);break;case"validate":t.data("input").trigger("blur.xdsoft");break;default:t[r]&&e.isFunction(t[r])&&(u=t[r](i))}else t.setOptions(r);return 0}"string"!==e.type(r)&&(!C.lazyInit||C.open||C.inline?s(e(this)):A(e(this)))}),u},e.fn.datetimepicker.defaults=a};!function(e){"function"==typeof define&&define.amd?define(["jquery","jquery-mousewheel"],e):"object"==typeof exports?module.exports=e(require("jquery")):e(jQuery)}(datetimepickerFactory); | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +{ | ||
2 | + "name": "datetimepicker", | ||
3 | + "version": "2.5.4", | ||
4 | + "title": "jQuery Date and Time picker", | ||
5 | + "description": "jQuery plugin for date, time, or datetime manipulation in form", | ||
6 | + "keywords": [ | ||
7 | + "calendar", | ||
8 | + "date", | ||
9 | + "time", | ||
10 | + "form", | ||
11 | + "datetime", | ||
12 | + "datepicker", | ||
13 | + "timepicker", | ||
14 | + "datetimepicker", | ||
15 | + "validation", | ||
16 | + "ui", | ||
17 | + "scroller", | ||
18 | + "picker", | ||
19 | + "i18n", | ||
20 | + "input", | ||
21 | + "jquery", | ||
22 | + "touch" | ||
23 | + ], | ||
24 | + "author": { | ||
25 | + "name": "Chupurnov Valeriy", | ||
26 | + "email": "chupurnov@gmail.com", | ||
27 | + "url": "http://xdsoft.net/contacts.html" | ||
28 | + }, | ||
29 | + "maintainers": [{ | ||
30 | + "name": "Chupurnov Valeriy", | ||
31 | + "email": "chupurnov@gmail.com", | ||
32 | + "url": "http://xdsoft.net" | ||
33 | + }], | ||
34 | + "licenses": [ | ||
35 | + { | ||
36 | + "type": "MIT", | ||
37 | + "url": "https://github.com/xdan/datetimepicker/blob/master/MIT-LICENSE.txt" | ||
38 | + } | ||
39 | + ], | ||
40 | + "bugs": "https://github.com/xdan/datetimepicker/issues", | ||
41 | + "homepage": "http://xdsoft.net/jqplugins/datetimepicker/", | ||
42 | + "docs": "http://xdsoft.net/jqplugins/datetimepicker/", | ||
43 | + "download": "https://github.com/xdan/datetimepicker/archive/master.zip", | ||
44 | + "dependencies": { | ||
45 | + "jquery": ">=1.7" | ||
46 | + } | ||
47 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
static/datetimepicker/doc.tpl
0 → 100644
1 | +<h3>DateTimepicker</h3> | ||
2 | +<p><input id="datetimepicker" type="text" value="2014/03/15 05:06" /></p> | ||
3 | +<h3>Use mask DateTimepicker</h3> | ||
4 | +<p><input id="datetimepicker_mask" type="text" value="" /></p> | ||
5 | +<h3>TimePicker</h3> | ||
6 | +<p><input id="datetimepicker1" type="text" /></p> | ||
7 | +<h3>DatePicker</h3> | ||
8 | +<p><input id="datetimepicker2" type="text" /></p> | ||
9 | +<h3>Inline DateTimePicker</h3> | ||
10 | +<p><input id="datetimepicker3" type="text" /></p> | ||
11 | +<h3>Dark theme</h3> | ||
12 | +<p><input id="datetimepicker_dark" type="text" /></p> | ||
13 | +<script type="text/javascript">// <![CDATA[ | ||
14 | +jQuery(function(){ | ||
15 | +jQuery('#datetimepicker_mask').datetimepicker({ | ||
16 | + mask:'9999/19/39 29:59', | ||
17 | +}); | ||
18 | +jQuery('#datetimepicker').datetimepicker(); | ||
19 | +jQuery('#datetimepicker').datetimepicker({value:'2015/04/15 05:06'}); | ||
20 | +jQuery('#datetimepicker1').datetimepicker({ | ||
21 | + datepicker:false, | ||
22 | + format:'H:i', | ||
23 | + value:'12:00' | ||
24 | +}); | ||
25 | +jQuery('#datetimepicker2').datetimepicker({ | ||
26 | + timepicker:false, | ||
27 | + format:'d/m/Y' | ||
28 | +}); | ||
29 | +jQuery('#datetimepicker3').datetimepicker({ | ||
30 | + inline:true, | ||
31 | + weeks:true | ||
32 | +}); | ||
33 | +jQuery('#datetimepicker_dark').datetimepicker({ | ||
34 | + inline:true, | ||
35 | + theme:'dark' | ||
36 | +}); | ||
37 | +}); | ||
38 | +// ]]></script> | ||
39 | +[include scripts/pp/reklama1.php] | ||
40 | +<h2>How do I use it?</h2> | ||
41 | +<p>First include to page css and js files</p> | ||
42 | +<pre><code class="language-html"><!-- this should go after your </body> --> | ||
43 | +<link rel="stylesheet" type="text/css" href="jquery.datetimepicker.css"/ > | ||
44 | +<script src="jquery.js"></script> | ||
45 | +<script src="build/jquery.datetimepicker.full.min.js"></script></code></pre> | ||
46 | +<h2>Examples</h2> | ||
47 | +<hr id="Simple" /> | ||
48 | +<h4>Simple init DateTimePicker Example <a href="#Simple">#</a></h4> | ||
49 | +<p>HTML</p> | ||
50 | +<pre><code class="language-html"><input id="datetimepicker" type="text" ></code></pre> | ||
51 | +<p><strong>javaScript</strong></p> | ||
52 | +<pre><code class="language-javascript">jQuery('#datetimepicker').datetimepicker();</code></pre> | ||
53 | +<p><strong>Result</strong></p> | ||
54 | +<p><input id="_datetimepicker" type="text" value="2014/03/15 05:06" /></p> | ||
55 | +<script type="text/javascript">// <![CDATA[ | ||
56 | +jQuery(function(){jQuery('#_datetimepicker').datetimepicker();}); | ||
57 | +// ]]></script> | ||
58 | +<hr id="i18n" /> | ||
59 | +<h4>i18n DatePicker Example <a href="#i18n">#</a></h4> | ||
60 | +<p>All supported languages <a href="#lang">here</a></p> | ||
61 | +<p><strong>javaScript</strong></p> | ||
62 | +<pre><code class="language-javascript">jQuery.datetimepicker.setLocale('de'); | ||
63 | + | ||
64 | +jQuery('#datetimepicker1').datetimepicker({ | ||
65 | + i18n:{ | ||
66 | + de:{ | ||
67 | + months:[ | ||
68 | + 'Januar','Februar','März','April', | ||
69 | + 'Mai','Juni','Juli','August', | ||
70 | + 'September','Oktober','November','Dezember', | ||
71 | + ], | ||
72 | + dayOfWeek:[ | ||
73 | + "So.", "Mo", "Di", "Mi", | ||
74 | + "Do", "Fr", "Sa.", | ||
75 | + ] | ||
76 | + } | ||
77 | + }, | ||
78 | + timepicker:false, | ||
79 | + format:'d.m.Y' | ||
80 | +});</code></pre> | ||
81 | +<p><strong>Result</strong></p> | ||
82 | +<p><input id="_datetimepicker1" type="text" value="15.08.2013" /></p> | ||
83 | +<script type="text/javascript">// <![CDATA[ | ||
84 | +jQuery(function(){ | ||
85 | +jQuery('#_datetimepicker1').datetimepicker({ | ||
86 | + lang:'de', | ||
87 | + i18n:{de:{ | ||
88 | + months:[ | ||
89 | + 'Januar','Februar','Marz','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember' | ||
90 | + ], | ||
91 | + dayOfWeek:["So.", "Mo", "Di", "Mi", "Do", "Fr", "Sa."] | ||
92 | + }}, | ||
93 | +timepicker:false, | ||
94 | +format:'d.m.Y' | ||
95 | +}); | ||
96 | +}); | ||
97 | +// ]]></script> | ||
98 | +<hr id="TimePicker" /> | ||
99 | +<h4>Only TimePicker Example <a href="#TimePicker">#</a></h4> | ||
100 | +<p><strong>javaScript</strong></p> | ||
101 | +<pre><code class="language-javascript">jQuery('#datetimepicker2').datetimepicker({ | ||
102 | + datepicker:false, | ||
103 | + format:'H:i' | ||
104 | +});</code></pre> | ||
105 | +<p><strong>Result</strong></p> | ||
106 | +<p><input id="_datetimepicker2" type="text" value="23:16" /></p> | ||
107 | +<script type="text/javascript">// <![CDATA[ | ||
108 | +jQuery(function(){ | ||
109 | +jQuery('#_datetimepicker2').datetimepicker({ | ||
110 | + datepicker:false, | ||
111 | + format:'H:i' | ||
112 | +}); | ||
113 | +}); | ||
114 | +// ]]></script> | ||
115 | +<h3 id="startdateex">Date Time Picker start date <a href="#startdateex">#</a></h3> | ||
116 | +<p><strong>javaScript</strong></p> | ||
117 | +<pre><code class="language-javascript">jQuery('#datetimepicker_start_time').datetimepicker({ | ||
118 | + startDate:'+1971/05/01'//or 1986/12/08 | ||
119 | +});</code></pre> | ||
120 | +<p><strong>Result</strong></p> | ||
121 | +<p><input id="datetimepicker_start_time" type="text" /></p> | ||
122 | +<script type="text/javascript">// <![CDATA[ | ||
123 | +jQuery(function(){ | ||
124 | + jQuery('#datetimepicker_start_time').datetimepicker({ | ||
125 | + startDate:'+1971/05/01' | ||
126 | + }); | ||
127 | +}); | ||
128 | +// ]]></script> | ||
129 | +<h3 id="unixtime">Date Time Picker from unixtime <a href="#unixtime">#</a></h3> | ||
130 | +<p><strong>javaScript</strong></p> | ||
131 | +<pre><code class="language-javascript">jQuery('#datetimepicker_unixtime').datetimepicker({ | ||
132 | + format:'unixtime' | ||
133 | +});</code></pre> | ||
134 | +<p><strong>Result</strong></p> | ||
135 | +<p><input id="datetimepicker_unixtime" type="text" /></p> | ||
136 | +<script type="text/javascript">// <![CDATA[ | ||
137 | +jQuery(function(){ | ||
138 | + jQuery('#datetimepicker_unixtime').datetimepicker({ | ||
139 | + format:'unixtime' | ||
140 | + }); | ||
141 | +}); | ||
142 | +// ]]></script> | ||
143 | +<hr id="Inline" /> | ||
144 | +<h4>Inline DateTimePicker Example <a href="#Inline">#</a></h4> | ||
145 | +<p><strong>javaScript</strong></p> | ||
146 | +<pre><code class="language-javascript">jQuery('#datetimepicker3').datetimepicker({ | ||
147 | + format:'d.m.Y H:i', | ||
148 | + inline:true, | ||
149 | + lang:'ru' | ||
150 | +});</code></pre> | ||
151 | +<p><strong>Result</strong></p> | ||
152 | +<p><input id="_datetimepicker3" type="text" value="10.12.2013 23:45" /></p> | ||
153 | +<script type="text/javascript">// <![CDATA[ | ||
154 | +jQuery(function(){ | ||
155 | +jQuery('#_datetimepicker3').datetimepicker({ | ||
156 | + format:'d.m.Y H:i', | ||
157 | + inline:true, | ||
158 | + lang:'en' | ||
159 | +}); | ||
160 | +}); | ||
161 | +// ]]></script> | ||
162 | +<hr id="trigger" /> | ||
163 | +<h4>Icon trigger <a href="#trigger">#</a></h4> | ||
164 | +<p>Click the icon next to the input field to show the datetimepicker</p> | ||
165 | +<p><strong>javaScript</strong></p> | ||
166 | +<pre><code class="language-javascript">jQuery('#datetimepicker4').datetimepicker({ | ||
167 | + format:'d.m.Y H:i', | ||
168 | + lang:'ru' | ||
169 | +});</code></pre> | ||
170 | +<p>and handler onclick event</p> | ||
171 | +<pre><code class="language-javascript">jQuery('#image_button').click(function(){ | ||
172 | + jQuery('#datetimepicker4').datetimepicker('show'); //support hide,show and destroy command | ||
173 | +});</code></pre> | ||
174 | +<p><strong>Result</strong></p> | ||
175 | +<div class="row"> | ||
176 | +<div class="col-lg-6"> | ||
177 | +<div class="input-group"><input id="_datetimepicker4" class="form-control" type="text" value="10.12.2013 23:45" /></div> | ||
178 | +<!-- /input-group --></div> | ||
179 | +<!-- /.col-lg-6 --></div> | ||
180 | +<!-- /.row --> | ||
181 | +<script type="text/javascript">// <![CDATA[ | ||
182 | +jQuery(function(){ | ||
183 | +jQuery('#_datetimepicker4').datetimepicker({ | ||
184 | + format:'d.m.Y H:i', | ||
185 | + lang:'en' | ||
186 | +}); | ||
187 | +jQuery('#image_button').click(function(){ | ||
188 | + jQuery('#_datetimepicker4').datetimepicker('show'); | ||
189 | +}); | ||
190 | +}); | ||
191 | +// ]]></script> | ||
192 | +<hr id="allowTimes" /> | ||
193 | +<h4>allowTimes options TimePicker Example <a href="#allowTimes">#</a></h4> | ||
194 | +<p><strong>javaScript</strong></p> | ||
195 | +<pre><code class="language-javascript">jQuery('#datetimepicker5').datetimepicker({ | ||
196 | + datepicker:false, | ||
197 | + allowTimes:[ | ||
198 | + '12:00', '13:00', '15:00', | ||
199 | + '17:00', '17:05', '17:20', '19:00', '20:00' | ||
200 | + ] | ||
201 | +});</code></pre> | ||
202 | +<p><strong>Result</strong></p> | ||
203 | +<p><input id="_datetimepicker5" type="text" value="23:45" /></p> | ||
204 | +<script type="text/javascript">// <![CDATA[ | ||
205 | +jQuery(function(){ | ||
206 | +jQuery('#_datetimepicker5').datetimepicker({ | ||
207 | + datepicker:false, | ||
208 | + allowTimes:['12:00','13:00','15:00','17:00','17:05','17:20','19:00','20:00'] | ||
209 | +}); | ||
210 | +}); | ||
211 | +// ]]></script> | ||
212 | +<hr id="onChangeDateTime" /> | ||
213 | +<h4>handler onChangeDateTime Example <a href="#onChangeDateTime">#</a></h4> | ||
214 | +<p><strong>javaScript</strong></p> | ||
215 | +<pre><code class="language-javascript">jQuery('#datetimepicker6').datetimepicker({ | ||
216 | + timepicker:false, | ||
217 | + onChangeDateTime:function(dp,$input){ | ||
218 | + alert($input.val()) | ||
219 | + } | ||
220 | +});</code></pre> | ||
221 | +<p><strong>Result</strong></p> | ||
222 | +<p><input id="_datetimepicker6" type="text" value="" /></p> | ||
223 | +<script type="text/javascript">// <![CDATA[ | ||
224 | +jQuery(function(){ | ||
225 | +jQuery('#_datetimepicker6').datetimepicker({ | ||
226 | + timepicker:false, | ||
227 | + onChangeDateTime:function(current_time,$input){ | ||
228 | + alert($input.val()) | ||
229 | + } | ||
230 | +}); | ||
231 | +}); | ||
232 | +// ]]></script> | ||
233 | +<hr id="mindate" /> | ||
234 | +<h4>minDate and maxDate Example <a href="#mindate">#</a></h4> | ||
235 | +<p><strong>javaScript</strong></p> | ||
236 | +<pre><code class="language-javascript">jQuery('#datetimepicker7').datetimepicker({ | ||
237 | + timepicker:false, | ||
238 | + formatDate:'Y/m/d', | ||
239 | + minDate:'-1970/01/02',//yesterday is minimum date(for today use 0 or -1970/01/01) | ||
240 | + maxDate:'+1970/01/02'//tomorrow is maximum date calendar | ||
241 | +});</code></pre> | ||
242 | +<p><strong>Result</strong></p> | ||
243 | +<p><input id="_datetimepicker7" type="text" value="" /></p> | ||
244 | +<script type="text/javascript">// <![CDATA[ | ||
245 | +jQuery(function(){ | ||
246 | +jQuery('#_datetimepicker7').datetimepicker({ | ||
247 | + timepicker:false, | ||
248 | + formatDate:'Y/m/d', | ||
249 | + minDate:'-1970/01/02', // yesterday is minimum date | ||
250 | + maxDate:'+1970/01/02' // and tomorrow is maximum date calendar | ||
251 | +}); | ||
252 | +}); | ||
253 | +// ]]></script> | ||
254 | +<hr id="mask" /> | ||
255 | +<h4>Use mask input Example <a href="#mask">#</a></h4> | ||
256 | +<p><strong>javaScript</strong></p> | ||
257 | +<pre><code class="language-javascript">jQuery('#datetimepicker_mask').datetimepicker({ | ||
258 | + timepicker:false, | ||
259 | + mask:true, // '9999/19/39 29:59' - digit is the maximum possible for a cell | ||
260 | +});</code></pre> | ||
261 | +<p><strong>Result</strong></p> | ||
262 | +<p><input id="_datetimepicker_mask" type="text" value="" /></p> | ||
263 | +<script type="text/javascript">// <![CDATA[ | ||
264 | +jQuery(function(){ | ||
265 | +jQuery('#_datetimepicker_mask').datetimepicker({ | ||
266 | + timepicker:false, | ||
267 | + mask:'9999/19/39', | ||
268 | + format:'Y/m/d' | ||
269 | +}); | ||
270 | +}); | ||
271 | +// ]]></script> | ||
272 | +<hr id="runtime_options" /> | ||
273 | +<h4>Set options runtime DateTimePicker <a href="#runtime_options">#</a></h4> | ||
274 | +<p>If select day is Saturday, the minimum set 11:00, otherwise 8:00</p> | ||
275 | +<p><strong>javaScript</strong></p> | ||
276 | +<pre><code class="language-javascript">var logic = function( currentDateTime ){ | ||
277 | + // 'this' is jquery object datetimepicker | ||
278 | + if( currentDateTime.getDay()==6 ){ | ||
279 | + this.setOptions({ | ||
280 | + minTime:'11:00' | ||
281 | + }); | ||
282 | + }else | ||
283 | + this.setOptions({ | ||
284 | + minTime:'8:00' | ||
285 | + }); | ||
286 | +}; | ||
287 | +jQuery('#datetimepicker_rantime').datetimepicker({ | ||
288 | + onChangeDateTime:logic, | ||
289 | + onShow:logic | ||
290 | +});</code></pre> | ||
291 | +<p><strong>Result</strong></p> | ||
292 | +<p><input id="_datetimepicker_runtime" type="text" value="" /></p> | ||
293 | +<script type="text/javascript">// <![CDATA[ | ||
294 | +jQuery(function(){ | ||
295 | +var logic = function( currentDateTime ){ | ||
296 | + if( currentDateTime.getDay()==6 ){ | ||
297 | + this.setOptions({ | ||
298 | + minTime:'11:00' | ||
299 | + }); | ||
300 | + }else | ||
301 | + this.setOptions({ | ||
302 | + minTime:'8:00' | ||
303 | + }); | ||
304 | +}; | ||
305 | +jQuery('#_datetimepicker_runtime').datetimepicker({ | ||
306 | + onChangeDateTime:logic, | ||
307 | + onShow:logic | ||
308 | +}); | ||
309 | +}); | ||
310 | +// ]]></script> | ||
311 | +<hr id="ongenerate" /> | ||
312 | +<h4>After generating a calendar called the event onGenerate <a href="#ongenerate">#</a></h4> | ||
313 | +<p>Invert settings minDate and maxDate</p> | ||
314 | +<p><strong>javaScript</strong></p> | ||
315 | +<pre><code class="language-javascript">jQuery('#datetimepicker8').datetimepicker({ | ||
316 | + onGenerate:function( ct ){ | ||
317 | + jQuery(this).find('.xdsoft_date') | ||
318 | + .toggleClass('xdsoft_disabled'); | ||
319 | + }, | ||
320 | + minDate:'-1970/01/2', | ||
321 | + maxDate:'+1970/01/2', | ||
322 | + timepicker:false | ||
323 | +});</code></pre> | ||
324 | +<p><strong>Result</strong></p> | ||
325 | +<p><input id="_datetimepicker_ongenerate" type="text" value="" /></p> | ||
326 | +<script type="text/javascript">// <![CDATA[ | ||
327 | +jQuery(function(){ | ||
328 | +jQuery('#_datetimepicker_ongenerate').datetimepicker({ | ||
329 | + onGenerate:function( ct ){ | ||
330 | + jQuery(this).find('.xdsoft_date') | ||
331 | + .toggleClass('xdsoft_disabled'); | ||
332 | + }, | ||
333 | + minDate:'-1970/01/2', | ||
334 | + maxDate:'+1970/01/2', | ||
335 | + timepicker:false | ||
336 | +}); | ||
337 | +}); | ||
338 | +// ]]></script> | ||
339 | +<hr id="weekends_disable" /> | ||
340 | +<h4>disable all weekend <a href="#weekends_disable">#</a></h4> | ||
341 | +<p><strong>javaScript</strong></p> | ||
342 | +<pre><code class="language-javascript">jQuery('#datetimepicker9').datetimepicker({ | ||
343 | + onGenerate:function( ct ){ | ||
344 | + jQuery(this).find('.xdsoft_date.xdsoft_weekend') | ||
345 | + .addClass('xdsoft_disabled'); | ||
346 | + }, | ||
347 | + weekends:['01.01.2014','02.01.2014','03.01.2014','04.01.2014','05.01.2014','06.01.2014'], | ||
348 | + timepicker:false | ||
349 | +});</code></pre> | ||
350 | +<p><strong>Result</strong></p> | ||
351 | +<p><input id="_datetimepicker_weekends_disable" type="text" value="" /></p> | ||
352 | +<script type="text/javascript">// <![CDATA[ | ||
353 | +jQuery(function(){ | ||
354 | +jQuery('#_datetimepicker_weekends_disable').datetimepicker({ | ||
355 | + onGenerate:function( ct ){ | ||
356 | + jQuery(this).find('.xdsoft_date.xdsoft_weekend') | ||
357 | + .addClass('xdsoft_disabled'); | ||
358 | + }, | ||
359 | + weekends:['01.01.2014','02.01.2014','03.01.2014','04.01.2014','05.01.2014','06.01.2014'], | ||
360 | + timepicker:false | ||
361 | +}); | ||
362 | +}); | ||
363 | +// ]]></script> | ||
364 | +<hr id="use_other_date_parser" /> | ||
365 | +<h4>Use another date parser/formatter<a href="#use_other_date_parser">#</a></h4> | ||
366 | +<p>By default, datetimepicker uses <a href="https://github.com/kartik-v/php-date-formatter">php-date-formatter</a> for parsing and formatting the date and time displayed. You can replace the library by setting a custom DateFormatter. Simply supply an object that implements the <tt>parseDate</tt> and <tt>formatDate</tt> methods. This example uses the popular <a href="http://momentjs.com/">MomentJS</a> library:</p> | ||
367 | +<pre><code class="language-javascript">$.datetimepicker.setDateFormatter({ | ||
368 | + parseDate: function (date, format) { | ||
369 | + var d = moment(date, format); | ||
370 | + return d.isValid() ? d.toDate() : false; | ||
371 | + }, | ||
372 | + | ||
373 | + formatDate: function (date, format) { | ||
374 | + return moment(date).format(format); | ||
375 | + }, | ||
376 | + | ||
377 | + //Optional if using mask input | ||
378 | + formatMask: function(format){ | ||
379 | + return format | ||
380 | + .replace(/Y{4}/g, '9999') | ||
381 | + .replace(/Y{2}/g, '99') | ||
382 | + .replace(/M{2}/g, '19') | ||
383 | + .replace(/D{2}/g, '39') | ||
384 | + .replace(/H{2}/g, '29') | ||
385 | + .replace(/m{2}/g, '59') | ||
386 | + .replace(/s{2}/g, '59'); | ||
387 | + } | ||
388 | +}); | ||
389 | +</code></pre> | ||
390 | +<p>After this, you can init datetimepicker with moment.js <a href="http://momentjs.com/docs/#/parsing/string-format/" target="_blanc" rel="nofollow">format</a></p> | ||
391 | +<pre><code class="language-javascript">jQuery('#datetimepicker').datetimepicker({ | ||
392 | + format:'DD.MM.YYYY h:mm a', | ||
393 | + formatTime:'h:mm a', | ||
394 | + formatDate:'DD.MM.YYYY' | ||
395 | +});</code></pre> | ||
396 | +<p>Because of its popularity, moment.js has a pre-defined configuration that can be enabled with:</p> | ||
397 | +<pre><code class="language-javascript">$.datetimepicker.setDateFormatter('moment');</code></pre> | ||
398 | +<hr id="range" /> | ||
399 | +<h4>Range between date<a href="#range">#</a></h4> | ||
400 | +<p><strong>javaScript</strong></p> | ||
401 | +<pre><code class="language-javascript">jQuery(function(){ | ||
402 | + jQuery('#date_timepicker_start').datetimepicker({ | ||
403 | + format:'Y/m/d', | ||
404 | + onShow:function( ct ){ | ||
405 | + this.setOptions({ | ||
406 | + maxDate:jQuery('#date_timepicker_end').val()?jQuery('#date_timepicker_end').val():false | ||
407 | + }) | ||
408 | + }, | ||
409 | + timepicker:false | ||
410 | + }); | ||
411 | + jQuery('#date_timepicker_end').datetimepicker({ | ||
412 | + format:'Y/m/d', | ||
413 | + onShow:function( ct ){ | ||
414 | + this.setOptions({ | ||
415 | + minDate:jQuery('#date_timepicker_start').val()?jQuery('#date_timepicker_start').val():false | ||
416 | + }) | ||
417 | + }, | ||
418 | + timepicker:false | ||
419 | + }); | ||
420 | +});</code></pre> | ||
421 | +<p><strong>Result</strong></p> | ||
422 | +<p>Start <input id="date_timepicker_start" type="text" value="" /> End <input id="date_timepicker_end" type="text" value="" /></p> | ||
423 | +<script type="text/javascript">// <![CDATA[ | ||
424 | +jQuery(function(){ | ||
425 | + jQuery('#date_timepicker_start').datetimepicker({ | ||
426 | + format:'Y/m/d', | ||
427 | + onShow:function( ct ){ | ||
428 | + this.setOptions({ | ||
429 | + maxDate:jQuery('#date_timepicker_end').val()?jQuery('#date_timepicker_end').val():false | ||
430 | + }) | ||
431 | + }, | ||
432 | + timepicker:false | ||
433 | + }); | ||
434 | + jQuery('#date_timepicker_end').datetimepicker({ | ||
435 | + format:'Y/m/d', | ||
436 | + onShow:function( ct ){ | ||
437 | + this.setOptions({ | ||
438 | + minDate:jQuery('#date_timepicker_start').val()?jQuery('#date_timepicker_start').val():false | ||
439 | + }) | ||
440 | + }, | ||
441 | + timepicker:false | ||
442 | + }); | ||
443 | +}); | ||
444 | +// ]]></script> | ||
445 | +[include scripts/pp/reklama2.php] | ||
446 | +{module 147} | ||
447 | +<h2>Full options list</h2> | ||
448 | +<table class="table table-condensed table-bordered table-striped"> | ||
449 | +<thead> | ||
450 | +<tr><th style="text-align: center;"><strong>Name</strong></th><th style="text-align: center;"><strong> default</strong></th><th style="text-align: center;"><strong>Descr</strong></th><th style="width: 200px; text-align: center;"><strong>Ex.</strong></th></tr> | ||
451 | +</thead> | ||
452 | +<tbody> | ||
453 | +<tr id="lazyInit"> | ||
454 | +<td><a href="#lazyInit">lazyInit</a></td> | ||
455 | +<td>false</td> | ||
456 | +<td>Initializing plugin occurs only when the user interacts. Greatly accelerates plugin work with a large number of fields</td> | ||
457 | +<td> </td> | ||
458 | +</tr> | ||
459 | +<tr id="parentID"> | ||
460 | +<td><a href="#parentID">parentID</a></td> | ||
461 | +<td>'body'</td> | ||
462 | +<td>Attach datetimepicker to this element, which can be either a selector or a DOM/JQuery element</td> | ||
463 | +<td> | ||
464 | +<pre><code class="language-javascript">{parentID:'#parent'}</code></pre> | ||
465 | +</td> | ||
466 | +</tr> | ||
467 | +<tr id="value"> | ||
468 | +<td><a href="#value">value</a></td> | ||
469 | +<td>null</td> | ||
470 | +<td>Current value datetimepicker. If it is set, ignored input.value</td> | ||
471 | +<td> | ||
472 | +<pre><code class="language-javascript">{value:'12.03.2013', | ||
473 | + format:'d.m.Y'}</code></pre> | ||
474 | +</td> | ||
475 | +</tr> | ||
476 | +<tr id="lang"> | ||
477 | +<td><a href="#lang">lang</a></td> | ||
478 | +<td>en</td> | ||
479 | +<td>Language i18n<br /> | ||
480 | + | ||
481 | +<strong>ar</strong> - Arabic | ||
482 | +<br /><strong>az</strong> - Azerbaijanian (Azeri) | ||
483 | +<br /><strong>bg</strong> - Bulgarian | ||
484 | +<br /><strong>bs</strong> - Bosanski | ||
485 | +<br /><strong>ca</strong> - Català | ||
486 | +<br /><strong>ch</strong> - Simplified Chinese | ||
487 | +<br /><strong>cs</strong> - Čeština | ||
488 | +<br /><strong>da</strong> - Dansk | ||
489 | +<br /><strong>de</strong> - German | ||
490 | +<br /><strong>el</strong> - Ελληνικά | ||
491 | +<br /><strong>en</strong> - English | ||
492 | +<br /><strong>en-GB</strong> - English (British) | ||
493 | +<br /><strong>es</strong> - Spanish | ||
494 | +<br /><strong>et</strong> - "Eesti" | ||
495 | +<br /><strong>eu</strong> - Euskara | ||
496 | +<br /><strong>fa</strong> - Persian | ||
497 | +<br /><strong>fi</strong> - Finnish (Suomi) | ||
498 | +<br /><strong>fr</strong> - French | ||
499 | +<br /><strong>gl</strong> - Galego | ||
500 | +<br /><strong>he</strong> - Hebrew (עברית) | ||
501 | +<br /><strong>hr</strong> - Hrvatski | ||
502 | +<br /><strong>hu</strong> - Hungarian | ||
503 | +<br /><strong>id</strong> - Indonesian | ||
504 | +<br /><strong>it</strong> - Italian | ||
505 | +<br /><strong>ja</strong> - Japanese | ||
506 | +<br /><strong>ko</strong> - Korean (한국어) | ||
507 | +<br /><strong>kr</strong> - Korean | ||
508 | +<br /><strong>lt</strong> - Lithuanian (lietuvių) | ||
509 | +<br /><strong>lv</strong> - Latvian (Latviešu) | ||
510 | +<br /><strong>mk</strong> - Macedonian (Македонски) | ||
511 | +<br /><strong>mn</strong> - Mongolian (Монгол) | ||
512 | +<br /><strong>nl</strong> - Dutch | ||
513 | +<br /><strong>no</strong> - Norwegian | ||
514 | +<br /><strong>pl</strong> - Polish | ||
515 | +<br /><strong>pt</strong> - Portuguese | ||
516 | +<br /><strong>pt-BR</strong> - Português(Brasil) | ||
517 | +<br /><strong>ro</strong> - Romanian | ||
518 | +<br /><strong>ru</strong> - Russian | ||
519 | +<br /><strong>se</strong> - Swedish | ||
520 | +<br /><strong>sk</strong> - Slovenčina | ||
521 | +<br /><strong>sl</strong> - Slovenščina | ||
522 | +<br /><strong>sq</strong> - Albanian (Shqip) | ||
523 | +<br /><strong>sr</strong> - Serbian Cyrillic (Српски) | ||
524 | +<br /><strong>sr-YU</strong> - Serbian (Srpski) | ||
525 | +<br /><strong>sv</strong> - Svenska | ||
526 | +<br /><strong>th</strong> - Thai | ||
527 | +<br /><strong>tr</strong> - Turkish | ||
528 | +<br /><strong>uk</strong> - Ukrainian | ||
529 | +<br /><strong>vi</strong> - Vietnamese | ||
530 | +<br /><strong>zh</strong> - Simplified Chinese (简体中文) | ||
531 | +<br /><strong>zh-TW</strong> - Traditional Chinese (繁體中文) | ||
532 | +<br /> | ||
533 | + | ||
534 | + | ||
535 | +</td> | ||
536 | +<td> | ||
537 | +<pre><code class="language-javascript">$.datetimepicker.setLocale('ru');</code></pre> | ||
538 | +</td> | ||
539 | +</tr> | ||
540 | +<tr id="format"> | ||
541 | +<td><a href="#format">format</a></td> | ||
542 | +<td>Y/m/d H:i</td> | ||
543 | +<td>Format datetime. <a href="http://php.net/manual/ru/function.date.php" target="_blank">More</a> Also there is a special type of <a href="#unixtime"><em>«unixtime»</em></a></td> | ||
544 | +<td> | ||
545 | +<pre><code class="language-javascript">{format:'H'} | ||
546 | +{format:'Y'}{format:'unixtime'}</code></pre> | ||
547 | +</td> | ||
548 | +</tr> | ||
549 | +<tr id="formatDate"> | ||
550 | +<td><a href="#formatDate">formatDate</a></td> | ||
551 | +<td>Y/m/d</td> | ||
552 | +<td>Format date for minDate and maxDate</td> | ||
553 | +<td> | ||
554 | +<pre><code class="language-javascript">{formatDate:'d.m.Y'}</code></pre> | ||
555 | +</td> | ||
556 | +</tr> | ||
557 | +<tr id="formatTime"> | ||
558 | +<td><a href="#formatTime">formatTime</a></td> | ||
559 | +<td>H:i</td> | ||
560 | +<td> Similarly, formatDate . But for minTime and maxTime</td> | ||
561 | +<td> | ||
562 | +<pre><code class="language-javascript">{formatTime:'H'}</code></pre> | ||
563 | +</td> | ||
564 | +</tr> | ||
565 | +<tr id="step"> | ||
566 | +<td><a href="#step">step</a></td> | ||
567 | +<td>60</td> | ||
568 | +<td>Step time</td> | ||
569 | +<td> | ||
570 | +<pre><code class="language-javascript">{step:5}</code></pre> | ||
571 | +</td> | ||
572 | +</tr> | ||
573 | +<tr id="closeOnDateSelect"> | ||
574 | +<td><a href="#closeOnDateSelect">closeOnDateSelect</a></td> | ||
575 | +<td>0</td> | ||
576 | +<td> </td> | ||
577 | +<td> | ||
578 | +<pre><code class="language-javascript">{closeOnDateSelect:true}</code></pre> | ||
579 | +</td> | ||
580 | +</tr> | ||
581 | +<tr id="closeOnWithoutClick"> | ||
582 | +<td><a href="#closeOnWithoutClick">closeOnWithoutClick</a></td> | ||
583 | +<td>true</td> | ||
584 | +<td> </td> | ||
585 | +<td> | ||
586 | +<pre><code class="language-javascript">{ closeOnWithoutClick :false}</code></pre> | ||
587 | +</td> | ||
588 | +</tr> | ||
589 | +<tr id="validateOnBlur"> | ||
590 | +<td><a href="#validateOnBlur">validateOnBlur</a></td> | ||
591 | +<td>true</td> | ||
592 | +<td>Verify datetime value from input, when losing focus. If value is not valid datetime, then to value inserts the current datetime</td> | ||
593 | +<td> | ||
594 | +<pre><code class="language-javascript">{ validateOnBlur:false}</code></pre> | ||
595 | +</td> | ||
596 | +</tr> | ||
597 | +<tr id="timepicker"> | ||
598 | +<td><a href="#timepicker">timepicker</a></td> | ||
599 | +<td>true</td> | ||
600 | +<td> </td> | ||
601 | +<td> | ||
602 | +<pre><code class="language-javascript">{timepicker:false}</code></pre> | ||
603 | +</td> | ||
604 | +</tr> | ||
605 | +<tr id="datepicker"> | ||
606 | +<td><a href="#datepicker">datepicker</a></td> | ||
607 | +<td>true</td> | ||
608 | +<td> </td> | ||
609 | +<td> | ||
610 | +<pre><code class="language-javascript">{datepicker:false}</code></pre> | ||
611 | +</td> | ||
612 | +</tr> | ||
613 | +<tr id="weeks"> | ||
614 | +<td><a href="#weeks">weeks</a></td> | ||
615 | +<td>false</td> | ||
616 | +<td>Show week number</td> | ||
617 | +<td> | ||
618 | +<pre><code class="language-javascript">{weeks:true}</code></pre> | ||
619 | +</td> | ||
620 | +</tr> | ||
621 | +<tr id="theme"> | ||
622 | +<td><a href="#theme">theme</a></td> | ||
623 | +<td>'default'</td> | ||
624 | +<td>Setting a color scheme. Now only supported default and dark theme</td> | ||
625 | +<td> | ||
626 | +<pre><code class="language-javascript">{theme:'dark'}</code></pre> | ||
627 | +</td> | ||
628 | +</tr> | ||
629 | +<tr id="minDate"> | ||
630 | +<td><a href="#minDate">minDate</a></td> | ||
631 | +<td>false</td> | ||
632 | +<td> </td> | ||
633 | +<td> | ||
634 | +<pre><code class="language-javascript">{minDate:0} // today | ||
635 | +{minDate:'2013/12/03'} | ||
636 | +{minDate:'-1970/01/02'} // yesterday | ||
637 | +{minDate:'05.12.2013',formatDate:'d.m.Y'}</code></pre> | ||
638 | +</td> | ||
639 | +</tr> | ||
640 | +<tr id="maxDate"> | ||
641 | +<td><a href="#maxDate">maxDate</a></td> | ||
642 | +<td>false</td> | ||
643 | +<td> </td> | ||
644 | +<td> | ||
645 | +<pre><code class="language-javascript">{maxDate:0} | ||
646 | +{maxDate:'2013/12/03'} | ||
647 | +{maxDate:'+1970/01/02'} // tomorrow | ||
648 | +{maxDate:'05.12.2013',formatDate:'d.m.Y'}</code></pre> | ||
649 | +</td> | ||
650 | +</tr> | ||
651 | +<tr id="startDate"> | ||
652 | +<td><a href="#starDate">startDate</a></td> | ||
653 | +<td>false</td> | ||
654 | +<td>calendar set date use starDate</td> | ||
655 | +<td> | ||
656 | +<pre><code class="language-javascript">{startDate:'1987/12/03'} | ||
657 | +{startDate:new Date()} | ||
658 | +{startDate:'+1970/01/02'} // tomorrow | ||
659 | +{startDate:'08.12.1986',formatDate:'d.m.Y'}</code></pre> | ||
660 | +</td> | ||
661 | +</tr> | ||
662 | + | ||
663 | +<tr id="defaultDate"> | ||
664 | +<td><a href="#defaultDate">defaultDate</a></td> | ||
665 | +<td>false</td> | ||
666 | +<td>if input value is empty, calendar set date use defaultDate</td> | ||
667 | +<td> | ||
668 | +<pre><code class="language-javascript">{defaultDate:'1987/12/03'} | ||
669 | +{defaultDate:new Date()} | ||
670 | +{defaultDate:'+1970/01/02'} // tomorrow | ||
671 | +{defaultDate:'08.12.1986',formatDate:'d.m.Y'}</code></pre> | ||
672 | +</td> | ||
673 | +</tr> | ||
674 | + | ||
675 | +<tr id="defaultTime"> | ||
676 | +<td><a href="#defaultTime">defaultTime</a></td> | ||
677 | +<td>false</td> | ||
678 | +<td>if input value is empty, timepicker set time use defaultTime</td> | ||
679 | +<td> | ||
680 | +<pre><code class="language-javascript">{defaultTime:'05:00'} | ||
681 | +{defaultTime:'33-12',formatTime:'i-H'}</code></pre> | ||
682 | +</td> | ||
683 | +</tr> | ||
684 | + | ||
685 | +<tr id="minTime"> | ||
686 | +<td><a href="#minTime">minTime</a></td> | ||
687 | +<td>false</td> | ||
688 | +<td> </td> | ||
689 | +<td> | ||
690 | +<pre><code class="language-javascript">{minTime:0,}// now | ||
691 | +{minTime:new Date()} | ||
692 | +{minTime:'12:00'} | ||
693 | +{minTime:'13:45:34',formatTime:'H:i:s'}</code></pre> | ||
694 | +</td> | ||
695 | +</tr> | ||
696 | +<tr id="maxTime"> | ||
697 | +<td><a href="#maxTime">maxTime</a></td> | ||
698 | +<td>false</td> | ||
699 | +<td> </td> | ||
700 | +<td> | ||
701 | +<pre><code class="language-javascript">{maxTime:0,} | ||
702 | +{maxTime:'12:00'} | ||
703 | +{maxTime:'13:45:34',formatTime:'H:i:s'}</code></pre> | ||
704 | +</td> | ||
705 | +</tr> | ||
706 | +<tr id="allowTimes"> | ||
707 | +<td><a href="#allowTimes">allowTimes</a></td> | ||
708 | +<td>[]</td> | ||
709 | +<td> </td> | ||
710 | +<td> | ||
711 | +<pre><code class="language-javascript">{allowTimes:[ | ||
712 | + '09:00', | ||
713 | + '11:00', | ||
714 | + '12:00', | ||
715 | + '21:00' | ||
716 | +]}</code></pre> | ||
717 | +</td> | ||
718 | +</tr> | ||
719 | +<tr id="mask"> | ||
720 | +<td><a href="#mask">mask</a></td> | ||
721 | +<td>false</td> | ||
722 | +<td>Use mask for input. true - automatically generates a mask on the field 'format', Digit from 0 to 9, set the highest possible digit for the value. For example: the first digit of hours can not be greater than 2, and the first digit of the minutes can not be greater than 5</td> | ||
723 | +<td> | ||
724 | +<pre>{mask:'9999/19/39',format:'Y/m/d'} | ||
725 | +{mask:true,format:'Y/m/d'} // automatically generate a mask 9999/99/99 | ||
726 | +{mask:'29:59',format:'H:i'} // | ||
727 | +{mask:true,format:'H:i'} //automatically generate a mask 99:99</pre> | ||
728 | +</td> | ||
729 | +</tr> | ||
730 | +<tr id="opened"> | ||
731 | +<td><a href="#opened">opened</a></td> | ||
732 | +<td>false</td> | ||
733 | +<td> </td> | ||
734 | +<td> </td> | ||
735 | +</tr> | ||
736 | +<tr id="yearoffset"> | ||
737 | +<td><a href="#yearoffset">yearOffset</a></td> | ||
738 | +<td>0</td> | ||
739 | +<td>Year offset for Buddhist era</td> | ||
740 | +<td> </td> | ||
741 | +</tr> | ||
742 | +<tr id="inline"> | ||
743 | +<td><a href="#inline">inline</a></td> | ||
744 | +<td>false</td> | ||
745 | +<td> </td> | ||
746 | +<td> </td> | ||
747 | +</tr> | ||
748 | +<tr id="todayButton"> | ||
749 | +<td><a href="#todayButton">todayButton</a></td> | ||
750 | +<td>true</td> | ||
751 | +<td>Show button "Go To Today"</td> | ||
752 | +<td> </td> | ||
753 | +</tr> | ||
754 | +<tr id="defaultSelect"> | ||
755 | +<td><a href="#defaultSelect">defaultSelect</a></td> | ||
756 | +<td>true</td> | ||
757 | +<td>Highlight the current date even if the input is empty</td> | ||
758 | +<td> </td> | ||
759 | +</tr> | ||
760 | +<tr id="allowBlank"> | ||
761 | +<td><a href="#allowBlank">allowBlank</a></td> | ||
762 | +<td>false</td> | ||
763 | +<td>Allow field to be empty even with the option <a href="#validateOnBlur">validateOnBlur</a> in true</td> | ||
764 | +<td> </td> | ||
765 | +</tr> | ||
766 | +<tr id="timepickerScrollbar"> | ||
767 | +<td><a href="#timepickerScrollbar">timepickerScrollbar</a></td> | ||
768 | +<td>true</td> | ||
769 | +<td> </td> | ||
770 | +<td> </td> | ||
771 | +</tr> | ||
772 | +<tr id="onSelectDate"> | ||
773 | +<td><a href="#onSelectDate">onSelectDate</a></td> | ||
774 | +<td>function(){}</td> | ||
775 | +<td> </td> | ||
776 | +<td> | ||
777 | +<pre><code class="language-javascript">onSelectDate:function(ct,$i){ | ||
778 | + alert(ct.dateFormat('d/m/Y')) | ||
779 | +}</code></pre> | ||
780 | +</td> | ||
781 | +</tr> | ||
782 | +<tr id="onSelectTime"> | ||
783 | +<td><a href="#onSelectTime">onSelectTime</a></td> | ||
784 | +<td>function(current_time,$input){}</td> | ||
785 | +<td> </td> | ||
786 | +<td> </td> | ||
787 | +</tr> | ||
788 | +<tr id="onChangeMonth"> | ||
789 | +<td><a href="#onChangeMonth">onChangeMonth</a></td> | ||
790 | +<td>function(current_time,$input){}</td> | ||
791 | +<td> </td> | ||
792 | +<td> </td> | ||
793 | +</tr> | ||
794 | + <tr id="onChangeYear"> | ||
795 | +<td><a href="#onChangeYear">onChangeYear</a></td> | ||
796 | +<td>function(current_time,$input){}</td> | ||
797 | +<td> </td> | ||
798 | +<td> </td> | ||
799 | +</tr> | ||
800 | +<tr id="onChangeDateTime"> | ||
801 | +<td><a href="#onChangeDateTime">onChangeDateTime</a></td> | ||
802 | +<td>function(current_time,$input){}</td> | ||
803 | +<td> </td> | ||
804 | +<td> </td> | ||
805 | +</tr> | ||
806 | +<tr id="onShow"> | ||
807 | +<td><a href="#onShow">onShow</a></td> | ||
808 | +<td>function(current_time,$input){}</td> | ||
809 | +<td> </td> | ||
810 | +<td> </td> | ||
811 | +</tr> | ||
812 | +<tr id="onClose"> | ||
813 | +<td><a href="#onClose">onClose</a></td> | ||
814 | +<td>function(current_time,$input){}</td> | ||
815 | +<td> </td> | ||
816 | +<td><pre><code class="language-javascript">onSelectDate:function(ct,$i){ | ||
817 | + $i.datetimepicker('destroy'); | ||
818 | +}</code></pre></td> | ||
819 | +</tr> | ||
820 | +<tr id="onGenerate"> | ||
821 | +<td><a href="#onGenerate">onGenerate</a></td> | ||
822 | +<td>function(current_time,$input){}</td> | ||
823 | +<td>trigger after construct calendar and timepicker</td> | ||
824 | +<td> </td> | ||
825 | +</tr> | ||
826 | +<tr> | ||
827 | +<td>withoutCopyright</td> | ||
828 | +<td>true</td> | ||
829 | +<td> </td> | ||
830 | +<td> </td> | ||
831 | +</tr> | ||
832 | +<tr id="inverseButton"> | ||
833 | +<td><a href="#inverseButton">inverseButton</a></td> | ||
834 | +<td>false</td> | ||
835 | +<td> </td> | ||
836 | +<td> </td> | ||
837 | +</tr> | ||
838 | +<tr id="scrollMonth"> | ||
839 | +<td><a href="#scrollMonth">scrollMonth</a></td> | ||
840 | +<td>true</td> | ||
841 | +<td> </td> | ||
842 | +<td> </td> | ||
843 | +</tr> | ||
844 | +<tr id="scrollTime"> | ||
845 | +<td><a href="#scrollTime">scrollTime</a></td> | ||
846 | +<td>true</td> | ||
847 | +<td> </td> | ||
848 | +<td> </td> | ||
849 | +</tr> | ||
850 | +<tr id="scrollInput"> | ||
851 | +<td><a href="#scrollInput">scrollInput</a></td> | ||
852 | +<td>true</td> | ||
853 | +<td> </td> | ||
854 | +<td> </td> | ||
855 | +</tr> | ||
856 | +<tr id="hours12"> | ||
857 | +<td><a href="#hours12">hours12</a></td> | ||
858 | +<td>false</td> | ||
859 | +<td> </td> | ||
860 | +<td> </td> | ||
861 | +</tr> | ||
862 | +<tr id="yearStart"> | ||
863 | +<td><a href="#yearStart">yearStart</a></td> | ||
864 | +<td>1950</td> | ||
865 | +<td>Start value for fast Year selector</td> | ||
866 | +<td> </td> | ||
867 | +</tr> | ||
868 | +<tr id="yearEnd"> | ||
869 | +<td><a href="#yearEnd">yearEnd</a></td> | ||
870 | +<td>2050</td> | ||
871 | +<td>End value for fast Year selector</td> | ||
872 | +<td> </td> | ||
873 | +</tr> | ||
874 | +<tr id="roundTime"> | ||
875 | +<td><a href="#roundTime">roundTime</a></td> | ||
876 | +<td>round</td> | ||
877 | +<td>Round time in timepicker, possible values: round, ceil, floor</td> | ||
878 | +<td> | ||
879 | +<pre><code class="language-javascript">{roundTime:'floor'}</code></pre> | ||
880 | +</td> | ||
881 | +</tr> | ||
882 | +<tr id="dayOfWeekStart"> | ||
883 | +<td><a href="#dayOfWeekStart">dayOfWeekStart</a></td> | ||
884 | +<td>0</td> | ||
885 | +<td> | ||
886 | +<p>Star week DatePicker. Default Sunday - 0.</p> | ||
887 | +<p>Monday - 1 ...</p> | ||
888 | +</td> | ||
889 | +<td> </td> | ||
890 | +</tr> | ||
891 | +<tr id="className"> | ||
892 | +<td>className</td> | ||
893 | +<td> </td> | ||
894 | +<td> </td> | ||
895 | +<td> </td> | ||
896 | +</tr> | ||
897 | +<tr id="weekends"> | ||
898 | +<td><a href="#weekends">weekends</a></td> | ||
899 | +<td>[]</td> | ||
900 | +<td> </td> | ||
901 | +<td> | ||
902 | +<pre><code class="language-javascript">['01.01.2014','02.01.2014','03.01.2014','04.01.2014','05.01.2014','06.01.2014']</code></pre> | ||
903 | +</td> | ||
904 | +</tr> | ||
905 | +<tr id="disabledDates"> | ||
906 | +<td><a href="#disabledDates">disabledDates</a></td> | ||
907 | +<td>[]</td> | ||
908 | +<td><p>Disbale all dates in list</p></td> | ||
909 | +<td> | ||
910 | +<pre><code class="language-javascript">{disabledDates: ['01.01.2014','02.01.2014','03.01.2014','04.01.2014','05.01.2014','06.01.2014'], formatDate:'d.m.Y'}</code></pre> | ||
911 | +</td> | ||
912 | +</tr> | ||
913 | +<tr id="allowDates"> | ||
914 | +<td><a href="#allowDates">allowDates</a></td> | ||
915 | +<td>[]</td> | ||
916 | +<td><p>Allow all dates in list</p></td> | ||
917 | +<td> | ||
918 | +<pre><code class="language-javascript">{allowDates: ['01.01.2014','02.01.2014','03.01.2014','04.01.2014','05.01.2014','06.01.2014'], formatDate:'d.m.Y'}</code></pre> | ||
919 | +</td> | ||
920 | +</tr> | ||
921 | +<tr id="allowDateRe"> | ||
922 | +<td><a href="#allowDateRe">allowDateRe</a></td> | ||
923 | +<td>[]</td> | ||
924 | +<td><p>Use Regex to check dates</p></td> | ||
925 | +<td> | ||
926 | +<pre><code class="language-javascript">{format:'Y-m-d',allowDateRe:'\d{4}-(03-31|06-30|09-30|12-31)' }</code></pre> | ||
927 | +</td> | ||
928 | +</tr> | ||
929 | +<tr id="disabledWeekDays"> | ||
930 | +<td><a href="#disabledWeekDays">disabledWeekDays</a></td> | ||
931 | +<td>[]</td> | ||
932 | +<td><p>Disable days listed by index</p></td> | ||
933 | +<td> | ||
934 | +<pre><code class="language-javascript">[0, 3, 4]</code></pre> | ||
935 | +</td> | ||
936 | +</tr> | ||
937 | +<tr id="id"> | ||
938 | +<td>id</td> | ||
939 | +<td> </td> | ||
940 | +<td> </td> | ||
941 | +<td> </td> | ||
942 | +</tr> | ||
943 | +<tr id="style"> | ||
944 | +<td>style</td> | ||
945 | +<td> </td> | ||
946 | +<td> </td> | ||
947 | +<td> </td> | ||
948 | +</tr> | ||
949 | +<tr id="ownerDocument"> | ||
950 | +<td>ownerDocument</td> | ||
951 | +<td>document</td> | ||
952 | +<td>The ownerDocument object for the datetimepicker to properly attach events and calc position (iframe support).</td> | ||
953 | +<td> </td> | ||
954 | +</tr> | ||
955 | +<tr id="contentWindow"> | ||
956 | +<td>contentWindow</td> | ||
957 | +<td>window</td> | ||
958 | +<td>The contentWindow object that contains the datetimepicker to properly attach events (iframe support).</td> | ||
959 | +<td> </td> | ||
960 | +</tr> | ||
961 | +</tbody> | ||
962 | +</table> | ||
963 | +<hr> | ||
964 | +<h2 id="methods">Methods</h2> | ||
965 | +<h3>show</h3> | ||
966 | +<p>Show Datetimepicker</p> | ||
967 | +<pre><code class="language-javascript">$('#input').datetimepicker(); | ||
968 | +$('button.somebutton').on('click', function () { | ||
969 | + $('#input').datetimepicker('show'); | ||
970 | +});</code></pre> | ||
971 | +<h3>hide</h3> | ||
972 | +<p>Hide Datetimepicker</p> | ||
973 | +<pre><code class="language-javascript">$('#input').datetimepicker(); | ||
974 | +$(window).on('resize', function () { | ||
975 | + $('#input').datetimepicker('hide'); | ||
976 | +});</code></pre> | ||
977 | +<h3>toggle</h3> | ||
978 | +<p>Sgow/Hide Datetimepicker</p> | ||
979 | +<pre><code class="language-javascript">$('#input').datetimepicker(); | ||
980 | +$('button.trigger').on('click', function () { | ||
981 | + $('#input').datetimepicker('toggle'); | ||
982 | +});</code></pre> | ||
983 | +<h3>destroy</h3> | ||
984 | +<p>Destroy datetimepicker</p> | ||
985 | +<pre><code class="language-javascript">$('#input').datetimepicker(); | ||
986 | +$('#input').datetimepicker('destroy'); | ||
987 | +</code></pre> | ||
988 | +<h3>reset</h3> | ||
989 | +<p>Reset datetimepicker's value</p> | ||
990 | +<pre><code class="language-javascript">$('#input').datetimepicker(); | ||
991 | +$('#input').val('12/01/2006'); | ||
992 | +$('#input') | ||
993 | + .datetimepicker('show') | ||
994 | + .datetimepicker('reset') | ||
995 | +</code></pre> | ||
996 | +<h3>validate</h3> | ||
997 | +<p>Validate datetimepicker's value </p> | ||
998 | +<pre><code class="language-javascript">$('#input').datetimepicker(); | ||
999 | +$('#input').datetimepicker(validate) | ||
1000 | +</code></pre> | ||
1001 | +<h3>setOptions</h3> | ||
1002 | +<p>Set datetimepicker's options </p> | ||
1003 | +<pre><code class="language-javascript">$('#input').datetimepicker({format: 'd.m.Y'}); | ||
1004 | +$('#input').datetimepicker('setOptions', {format: 'd/m/Y'}); | ||
1005 | +//or | ||
1006 | +$('#input').datetimepicker({format: 'd/m/Y'}); | ||
1007 | +</code></pre> | ||
1008 | +<h3>getValue</h3> | ||
1009 | +<p>Get current datetimepicker's value (Date object) </p> | ||
1010 | +<pre><code class="language-javascript">$('#input').datetimepicker(); | ||
1011 | +$('button.somebutton').on('click', function () { | ||
1012 | + var d = $('#input').datetimepicker('getValue'); | ||
1013 | + console.log(d.getFullYear()); | ||
1014 | +}); | ||
1015 | +</code></pre> |
static/datetimepicker/index.html
0 → 100644
1 | +<!DOCTYPE html> | ||
2 | +<html lang="en"> | ||
3 | +<head> | ||
4 | +<meta http-equiv="content-type" content="text/html; charset=utf-8"/> | ||
5 | +<link rel="stylesheet" type="text/css" href="./jquery.datetimepicker.css"/> | ||
6 | +<style type="text/css"> | ||
7 | + | ||
8 | +.custom-date-style { | ||
9 | + background-color: red !important; | ||
10 | +} | ||
11 | + | ||
12 | +.input{ | ||
13 | +} | ||
14 | +.input-wide{ | ||
15 | + width: 500px; | ||
16 | +} | ||
17 | + | ||
18 | +</style> | ||
19 | +</head> | ||
20 | +<body> | ||
21 | + | ||
22 | + <p><a href="http://xdsoft.net/jqplugins/datetimepicker/">Homepage</a></p> | ||
23 | + <h3>DateTimePicker</h3> | ||
24 | + <input type="text" value="" id="datetimepicker"/><br><br> | ||
25 | + <h3>DateTimePickers selected by class</h3> | ||
26 | + <input type="text" class="some_class" value="" id="some_class_1"/> | ||
27 | + <input type="text" class="some_class" value="" id="some_class_2"/> | ||
28 | + <h3>Mask DateTimePicker</h3> | ||
29 | + <input type="text" value="" id="datetimepicker_mask"/><br><br> | ||
30 | + <h3>TimePicker</h3> | ||
31 | + <input type="text" id="datetimepicker1"/><br><br> | ||
32 | + <h3>DatePicker</h3> | ||
33 | + <input type="text" id="datetimepicker2"/><br><br> | ||
34 | + <h3>Inline DateTimePicker</h3> | ||
35 | + <!--<div id="console" style="background-color:#fff;color:red">sdfdsfsdf</div>--> | ||
36 | + <input type="text" id="datetimepicker3"/><input type="button" onclick="$('#datetimepicker3').datetimepicker({value:'2011/12/11 12:00'})" value="set inline value 2011/12/11 12:00"/><br><br> | ||
37 | + <h3>Button Trigger</h3> | ||
38 | + <input type="text" value="2013/12/03 18:00" id="datetimepicker4"/><input id="open" type="button" value="open"/><input id="close" type="button" value="close"/><input id="reset" type="button" value="reset"/> | ||
39 | + <h3>TimePicker allows time</h3> | ||
40 | + <input type="text" id="datetimepicker5"/><br><br> | ||
41 | + <h3>Destroy DateTimePicker</h3> | ||
42 | + <input type="text" id="datetimepicker6"/><input id="destroy" type="button" value="destroy"/> | ||
43 | + <h3>Set options runtime DateTimePicker</h3> | ||
44 | + <input type="text" id="datetimepicker7"/> | ||
45 | + <p>If select day is Saturday, the minimum set 11:00, otherwise 8:00</p> | ||
46 | + <h3>onGenerate</h3> | ||
47 | + <input type="text" id="datetimepicker8"/> | ||
48 | + <h3>disable all weekend</h3> | ||
49 | + <input type="text" id="datetimepicker9"/> | ||
50 | + <h3>Default date and time </h3> | ||
51 | + <input type="text" id="default_datetimepicker"/> | ||
52 | + <h3>Show inline</h3> | ||
53 | + <a href="javascript:void(0)" onclick="var si = document.getElementById('show_inline').style; si.display = (si.display=='none')?'block':'none';return false; ">Show/Hide</a> | ||
54 | + <div id="show_inline" style="display:none"> | ||
55 | + <input type="text" id="datetimepicker10"/> | ||
56 | + </div> | ||
57 | + <h3>Disable Specific Dates</h3> | ||
58 | + <p>Disable the dates 2 days from now.</p> | ||
59 | + <input type="text" id="datetimepicker11"/> | ||
60 | + <h3>Custom Date Styling</h3> | ||
61 | + <p>Make the background of the date 2 days from now bright red.</p> | ||
62 | + <input type="text" id="datetimepicker12"/> | ||
63 | + <h3>Dark theme</h3> | ||
64 | + <p>thank for this <a href="https://github.com/lampslave">https://github.com/lampslave</a></p> | ||
65 | + <input type="text" id="datetimepicker_dark"/> | ||
66 | + <h3>Date time format and locale</h3> | ||
67 | + <p></p> | ||
68 | + <select id="datetimepicker_format_locale"> | ||
69 | + <option value="en">English</option> | ||
70 | + <option value="de">German</option> | ||
71 | + <option value="ru">Russian</option> | ||
72 | + <option value="uk">Ukrainian</option> | ||
73 | + <option value="fr">French</option> | ||
74 | + <option value="es">Spanish</option> | ||
75 | + </select> | ||
76 | + <input type="text" value="D, l, M, F, Y-m-d H:i:s" id="datetimepicker_format_value"/> | ||
77 | + <input type="button" value="applay =>" id="datetimepicker_format_change"/> | ||
78 | + <input type="text" id="datetimepicker_format" class="input input-wide"/> | ||
79 | +</body> | ||
80 | +<script src="./jquery.js"></script> | ||
81 | +<script src="node_modules/php-date-formatter/js/php-date-formatter.min.js"></script> | ||
82 | +<script src="node_modules/jquery-mousewheel/jquery.mousewheel.js"></script> | ||
83 | +<script src="jquery.datetimepicker.js"></script> | ||
84 | +<script>/* | ||
85 | +window.onerror = function(errorMsg) { | ||
86 | + $('#console').html($('#console').html()+'<br>'+errorMsg) | ||
87 | +}*/ | ||
88 | + | ||
89 | +$.datetimepicker.setLocale('en'); | ||
90 | + | ||
91 | +$('#datetimepicker_format').datetimepicker({value:'2015/04/15 05:03', format: $("#datetimepicker_format_value").val()}); | ||
92 | +console.log($('#datetimepicker_format').datetimepicker('getValue')); | ||
93 | + | ||
94 | +$("#datetimepicker_format_change").on("click", function(e){ | ||
95 | + $("#datetimepicker_format").data('xdsoft_datetimepicker').setOptions({format: $("#datetimepicker_format_value").val()}); | ||
96 | +}); | ||
97 | +$("#datetimepicker_format_locale").on("change", function(e){ | ||
98 | + $.datetimepicker.setLocale($(e.currentTarget).val()); | ||
99 | +}); | ||
100 | + | ||
101 | +$('#datetimepicker').datetimepicker({ | ||
102 | +dayOfWeekStart : 1, | ||
103 | +lang:'en', | ||
104 | +disabledDates:['1986/01/08','1986/01/09','1986/01/10'], | ||
105 | +startDate: '1986/01/05' | ||
106 | +}); | ||
107 | +$('#datetimepicker').datetimepicker({value:'2015/04/15 05:03', step:10}); | ||
108 | + | ||
109 | +$('.some_class').datetimepicker(); | ||
110 | + | ||
111 | +$('#default_datetimepicker').datetimepicker({ | ||
112 | + formatTime:'H:i', | ||
113 | + formatDate:'d.m.Y', | ||
114 | + //defaultDate:'8.12.1986', // it's my birthday | ||
115 | + defaultDate:'+03.01.1970', // it's my birthday | ||
116 | + defaultTime:'10:00', | ||
117 | + timepickerScrollbar:false | ||
118 | +}); | ||
119 | + | ||
120 | +$('#datetimepicker10').datetimepicker({ | ||
121 | + step:5, | ||
122 | + inline:true | ||
123 | +}); | ||
124 | +$('#datetimepicker_mask').datetimepicker({ | ||
125 | + mask:'9999/19/39 29:59' | ||
126 | +}); | ||
127 | + | ||
128 | +$('#datetimepicker1').datetimepicker({ | ||
129 | + datepicker:false, | ||
130 | + format:'H:i', | ||
131 | + step:5 | ||
132 | +}); | ||
133 | +$('#datetimepicker2').datetimepicker({ | ||
134 | + yearOffset:222, | ||
135 | + lang:'ch', | ||
136 | + timepicker:false, | ||
137 | + format:'d/m/Y', | ||
138 | + formatDate:'Y/m/d', | ||
139 | + minDate:'-1970/01/02', // yesterday is minimum date | ||
140 | + maxDate:'+1970/01/02' // and tommorow is maximum date calendar | ||
141 | +}); | ||
142 | +$('#datetimepicker3').datetimepicker({ | ||
143 | + inline:true | ||
144 | +}); | ||
145 | +$('#datetimepicker4').datetimepicker(); | ||
146 | +$('#open').click(function(){ | ||
147 | + $('#datetimepicker4').datetimepicker('show'); | ||
148 | +}); | ||
149 | +$('#close').click(function(){ | ||
150 | + $('#datetimepicker4').datetimepicker('hide'); | ||
151 | +}); | ||
152 | +$('#reset').click(function(){ | ||
153 | + $('#datetimepicker4').datetimepicker('reset'); | ||
154 | +}); | ||
155 | +$('#datetimepicker5').datetimepicker({ | ||
156 | + datepicker:false, | ||
157 | + allowTimes:['12:00','13:00','15:00','17:00','17:05','17:20','19:00','20:00'], | ||
158 | + step:5 | ||
159 | +}); | ||
160 | +$('#datetimepicker6').datetimepicker(); | ||
161 | +$('#destroy').click(function(){ | ||
162 | + if( $('#datetimepicker6').data('xdsoft_datetimepicker') ){ | ||
163 | + $('#datetimepicker6').datetimepicker('destroy'); | ||
164 | + this.value = 'create'; | ||
165 | + }else{ | ||
166 | + $('#datetimepicker6').datetimepicker(); | ||
167 | + this.value = 'destroy'; | ||
168 | + } | ||
169 | +}); | ||
170 | +var logic = function( currentDateTime ){ | ||
171 | + if (currentDateTime && currentDateTime.getDay() == 6){ | ||
172 | + this.setOptions({ | ||
173 | + minTime:'11:00' | ||
174 | + }); | ||
175 | + }else | ||
176 | + this.setOptions({ | ||
177 | + minTime:'8:00' | ||
178 | + }); | ||
179 | +}; | ||
180 | +$('#datetimepicker7').datetimepicker({ | ||
181 | + onChangeDateTime:logic, | ||
182 | + onShow:logic | ||
183 | +}); | ||
184 | +$('#datetimepicker8').datetimepicker({ | ||
185 | + onGenerate:function( ct ){ | ||
186 | + $(this).find('.xdsoft_date') | ||
187 | + .toggleClass('xdsoft_disabled'); | ||
188 | + }, | ||
189 | + minDate:'-1970/01/2', | ||
190 | + maxDate:'+1970/01/2', | ||
191 | + timepicker:false | ||
192 | +}); | ||
193 | +$('#datetimepicker9').datetimepicker({ | ||
194 | + onGenerate:function( ct ){ | ||
195 | + $(this).find('.xdsoft_date.xdsoft_weekend') | ||
196 | + .addClass('xdsoft_disabled'); | ||
197 | + }, | ||
198 | + weekends:['01.01.2014','02.01.2014','03.01.2014','04.01.2014','05.01.2014','06.01.2014'], | ||
199 | + timepicker:false | ||
200 | +}); | ||
201 | +var dateToDisable = new Date(); | ||
202 | + dateToDisable.setDate(dateToDisable.getDate() + 2); | ||
203 | +$('#datetimepicker11').datetimepicker({ | ||
204 | + beforeShowDay: function(date) { | ||
205 | + if (date.getMonth() == dateToDisable.getMonth() && date.getDate() == dateToDisable.getDate()) { | ||
206 | + return [false, ""] | ||
207 | + } | ||
208 | + | ||
209 | + return [true, ""]; | ||
210 | + } | ||
211 | +}); | ||
212 | +$('#datetimepicker12').datetimepicker({ | ||
213 | + beforeShowDay: function(date) { | ||
214 | + if (date.getMonth() == dateToDisable.getMonth() && date.getDate() == dateToDisable.getDate()) { | ||
215 | + return [true, "custom-date-style"]; | ||
216 | + } | ||
217 | + | ||
218 | + return [true, ""]; | ||
219 | + } | ||
220 | +}); | ||
221 | +$('#datetimepicker_dark').datetimepicker({theme:'dark'}) | ||
222 | + | ||
223 | + | ||
224 | +</script> | ||
225 | +</html> |
1 | +.xdsoft_datetimepicker { | ||
2 | + box-shadow: 0 5px 15px -5px rgba(0, 0, 0, 0.506); | ||
3 | + background: #fff; | ||
4 | + border-bottom: 1px solid #bbb; | ||
5 | + border-left: 1px solid #ccc; | ||
6 | + border-right: 1px solid #ccc; | ||
7 | + border-top: 1px solid #ccc; | ||
8 | + color: #333; | ||
9 | + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; | ||
10 | + padding: 8px; | ||
11 | + padding-left: 0; | ||
12 | + padding-top: 2px; | ||
13 | + position: absolute; | ||
14 | + z-index: 9999; | ||
15 | + -moz-box-sizing: border-box; | ||
16 | + box-sizing: border-box; | ||
17 | + display: none; | ||
18 | +} | ||
19 | +.xdsoft_datetimepicker.xdsoft_rtl { | ||
20 | + padding: 8px 0 8px 8px; | ||
21 | +} | ||
22 | + | ||
23 | +.xdsoft_datetimepicker iframe { | ||
24 | + position: absolute; | ||
25 | + left: 0; | ||
26 | + top: 0; | ||
27 | + width: 75px; | ||
28 | + height: 210px; | ||
29 | + background: transparent; | ||
30 | + border: none; | ||
31 | +} | ||
32 | + | ||
33 | +/*For IE8 or lower*/ | ||
34 | +.xdsoft_datetimepicker button { | ||
35 | + border: none !important; | ||
36 | +} | ||
37 | + | ||
38 | +.xdsoft_noselect { | ||
39 | + -webkit-touch-callout: none; | ||
40 | + -webkit-user-select: none; | ||
41 | + -khtml-user-select: none; | ||
42 | + -moz-user-select: none; | ||
43 | + -ms-user-select: none; | ||
44 | + -o-user-select: none; | ||
45 | + user-select: none; | ||
46 | +} | ||
47 | + | ||
48 | +.xdsoft_noselect::selection { background: transparent } | ||
49 | +.xdsoft_noselect::-moz-selection { background: transparent } | ||
50 | + | ||
51 | +.xdsoft_datetimepicker.xdsoft_inline { | ||
52 | + display: inline-block; | ||
53 | + position: static; | ||
54 | + box-shadow: none; | ||
55 | +} | ||
56 | + | ||
57 | +.xdsoft_datetimepicker * { | ||
58 | + -moz-box-sizing: border-box; | ||
59 | + box-sizing: border-box; | ||
60 | + padding: 0; | ||
61 | + margin: 0; | ||
62 | +} | ||
63 | + | ||
64 | +.xdsoft_datetimepicker .xdsoft_datepicker, .xdsoft_datetimepicker .xdsoft_timepicker { | ||
65 | + display: none; | ||
66 | +} | ||
67 | + | ||
68 | +.xdsoft_datetimepicker .xdsoft_datepicker.active, .xdsoft_datetimepicker .xdsoft_timepicker.active { | ||
69 | + display: block; | ||
70 | +} | ||
71 | + | ||
72 | +.xdsoft_datetimepicker .xdsoft_datepicker { | ||
73 | + width: 224px; | ||
74 | + float: left; | ||
75 | + margin-left: 8px; | ||
76 | +} | ||
77 | +.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_datepicker { | ||
78 | + float: right; | ||
79 | + margin-right: 8px; | ||
80 | + margin-left: 0; | ||
81 | +} | ||
82 | + | ||
83 | +.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_datepicker { | ||
84 | + width: 256px; | ||
85 | +} | ||
86 | + | ||
87 | +.xdsoft_datetimepicker .xdsoft_timepicker { | ||
88 | + width: 58px; | ||
89 | + float: left; | ||
90 | + text-align: center; | ||
91 | + margin-left: 8px; | ||
92 | + margin-top: 0; | ||
93 | +} | ||
94 | +.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_timepicker { | ||
95 | + float: right; | ||
96 | + margin-right: 8px; | ||
97 | + margin-left: 0; | ||
98 | +} | ||
99 | + | ||
100 | +.xdsoft_datetimepicker .xdsoft_datepicker.active+.xdsoft_timepicker { | ||
101 | + margin-top: 8px; | ||
102 | + margin-bottom: 3px | ||
103 | +} | ||
104 | + | ||
105 | +.xdsoft_datetimepicker .xdsoft_monthpicker { | ||
106 | + position: relative; | ||
107 | + text-align: center; | ||
108 | +} | ||
109 | + | ||
110 | +.xdsoft_datetimepicker .xdsoft_label i, | ||
111 | +.xdsoft_datetimepicker .xdsoft_prev, | ||
112 | +.xdsoft_datetimepicker .xdsoft_next, | ||
113 | +.xdsoft_datetimepicker .xdsoft_today_button { | ||
114 | + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Q0NBRjI1NjM0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Q0NBRjI1NjQ0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDQ0FGMjU2MTQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDQ0FGMjU2MjQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PoNEP54AAAIOSURBVHja7Jq9TsMwEMcxrZD4WpBYeKUCe+kTMCACHZh4BFfHO/AAIHZGFhYkBBsSEqxsLCAgXKhbXYOTxh9pfJVP+qutnZ5s/5Lz2Y5I03QhWji2GIcgAokWgfCxNvcOCCGKqiSqhUp0laHOne05vdEyGMfkdxJDVjgwDlEQgYQBgx+ULJaWSXXS6r/ER5FBVR8VfGftTKcITNs+a1XpcFoExREIDF14AVIFxgQUS+h520cdud6wNkC0UBw6BCO/HoCYwBhD8QCkQ/x1mwDyD4plh4D6DDV0TAGyo4HcawLIBBSLDkHeH0Mg2yVP3l4TQMZQDDsEOl/MgHQqhMNuE0D+oBh0CIr8MAKyazBH9WyBuKxDWgbXfjNf32TZ1KWm/Ap1oSk/R53UtQ5xTh3LUlMmT8gt6g51Q9p+SobxgJQ/qmsfZhWywGFSl0yBjCLJCMgXail3b7+rumdVJ2YRss4cN+r6qAHDkPWjPjdJCF4n9RmAD/V9A/Wp4NQassDjwlB6XBiCxcJQWmZZb8THFilfy/lfrTvLghq2TqTHrRMTKNJ0sIhdo15RT+RpyWwFdY96UZ/LdQKBGjcXpcc1AlSFEfLmouD+1knuxBDUVrvOBmoOC/rEcN7OQxKVeJTCiAdUzUJhA2Oez9QTkp72OTVcxDcXY8iKNkxGAJXmJCOQwOa6dhyXsOa6XwEGAKdeb5ET3rQdAAAAAElFTkSuQmCC); | ||
115 | +} | ||
116 | + | ||
117 | +.xdsoft_datetimepicker .xdsoft_label i { | ||
118 | + opacity: 0.5; | ||
119 | + background-position: -92px -19px; | ||
120 | + display: inline-block; | ||
121 | + width: 9px; | ||
122 | + height: 20px; | ||
123 | + vertical-align: middle; | ||
124 | +} | ||
125 | + | ||
126 | +.xdsoft_datetimepicker .xdsoft_prev { | ||
127 | + float: left; | ||
128 | + background-position: -20px 0; | ||
129 | +} | ||
130 | +.xdsoft_datetimepicker .xdsoft_today_button { | ||
131 | + float: left; | ||
132 | + background-position: -70px 0; | ||
133 | + margin-left: 5px; | ||
134 | +} | ||
135 | + | ||
136 | +.xdsoft_datetimepicker .xdsoft_next { | ||
137 | + float: right; | ||
138 | + background-position: 0 0; | ||
139 | +} | ||
140 | + | ||
141 | +.xdsoft_datetimepicker .xdsoft_next, | ||
142 | +.xdsoft_datetimepicker .xdsoft_prev , | ||
143 | +.xdsoft_datetimepicker .xdsoft_today_button { | ||
144 | + background-color: transparent; | ||
145 | + background-repeat: no-repeat; | ||
146 | + border: 0 none; | ||
147 | + cursor: pointer; | ||
148 | + display: block; | ||
149 | + height: 30px; | ||
150 | + opacity: 0.5; | ||
151 | + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; | ||
152 | + outline: medium none; | ||
153 | + overflow: hidden; | ||
154 | + padding: 0; | ||
155 | + position: relative; | ||
156 | + text-indent: 100%; | ||
157 | + white-space: nowrap; | ||
158 | + width: 20px; | ||
159 | + min-width: 0; | ||
160 | +} | ||
161 | + | ||
162 | +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev, | ||
163 | +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_next { | ||
164 | + float: none; | ||
165 | + background-position: -40px -15px; | ||
166 | + height: 15px; | ||
167 | + width: 30px; | ||
168 | + display: block; | ||
169 | + margin-left: 14px; | ||
170 | + margin-top: 7px; | ||
171 | +} | ||
172 | +.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_timepicker .xdsoft_prev, | ||
173 | +.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_timepicker .xdsoft_next { | ||
174 | + float: none; | ||
175 | + margin-left: 0; | ||
176 | + margin-right: 14px; | ||
177 | +} | ||
178 | + | ||
179 | +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev { | ||
180 | + background-position: -40px 0; | ||
181 | + margin-bottom: 7px; | ||
182 | + margin-top: 0; | ||
183 | +} | ||
184 | + | ||
185 | +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box { | ||
186 | + height: 151px; | ||
187 | + overflow: hidden; | ||
188 | + border-bottom: 1px solid #ddd; | ||
189 | +} | ||
190 | + | ||
191 | +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div { | ||
192 | + background: #f5f5f5; | ||
193 | + border-top: 1px solid #ddd; | ||
194 | + color: #666; | ||
195 | + font-size: 12px; | ||
196 | + text-align: center; | ||
197 | + border-collapse: collapse; | ||
198 | + cursor: pointer; | ||
199 | + border-bottom-width: 0; | ||
200 | + height: 25px; | ||
201 | + line-height: 25px; | ||
202 | +} | ||
203 | + | ||
204 | +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div > div:first-child { | ||
205 | + border-top-width: 0; | ||
206 | +} | ||
207 | + | ||
208 | +.xdsoft_datetimepicker .xdsoft_today_button:hover, | ||
209 | +.xdsoft_datetimepicker .xdsoft_next:hover, | ||
210 | +.xdsoft_datetimepicker .xdsoft_prev:hover { | ||
211 | + opacity: 1; | ||
212 | + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; | ||
213 | +} | ||
214 | + | ||
215 | +.xdsoft_datetimepicker .xdsoft_label { | ||
216 | + display: inline; | ||
217 | + position: relative; | ||
218 | + z-index: 9999; | ||
219 | + margin: 0; | ||
220 | + padding: 5px 3px; | ||
221 | + font-size: 14px; | ||
222 | + line-height: 20px; | ||
223 | + font-weight: bold; | ||
224 | + background-color: #fff; | ||
225 | + float: left; | ||
226 | + width: 182px; | ||
227 | + text-align: center; | ||
228 | + cursor: pointer; | ||
229 | +} | ||
230 | + | ||
231 | +.xdsoft_datetimepicker .xdsoft_label:hover>span { | ||
232 | + text-decoration: underline; | ||
233 | +} | ||
234 | + | ||
235 | +.xdsoft_datetimepicker .xdsoft_label:hover i { | ||
236 | + opacity: 1.0; | ||
237 | +} | ||
238 | + | ||
239 | +.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select { | ||
240 | + border: 1px solid #ccc; | ||
241 | + position: absolute; | ||
242 | + right: 0; | ||
243 | + top: 30px; | ||
244 | + z-index: 101; | ||
245 | + display: none; | ||
246 | + background: #fff; | ||
247 | + max-height: 160px; | ||
248 | + overflow-y: hidden; | ||
249 | +} | ||
250 | + | ||
251 | +.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_monthselect{ right: -7px } | ||
252 | +.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_yearselect{ right: 2px } | ||
253 | +.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover { | ||
254 | + color: #fff; | ||
255 | + background: #ff8000; | ||
256 | +} | ||
257 | + | ||
258 | +.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option { | ||
259 | + padding: 2px 10px 2px 5px; | ||
260 | + text-decoration: none !important; | ||
261 | +} | ||
262 | + | ||
263 | +.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current { | ||
264 | + background: #33aaff; | ||
265 | + box-shadow: #178fe5 0 1px 3px 0 inset; | ||
266 | + color: #fff; | ||
267 | + font-weight: 700; | ||
268 | +} | ||
269 | + | ||
270 | +.xdsoft_datetimepicker .xdsoft_month { | ||
271 | + width: 100px; | ||
272 | + text-align: right; | ||
273 | +} | ||
274 | + | ||
275 | +.xdsoft_datetimepicker .xdsoft_calendar { | ||
276 | + clear: both; | ||
277 | +} | ||
278 | + | ||
279 | +.xdsoft_datetimepicker .xdsoft_year{ | ||
280 | + width: 48px; | ||
281 | + margin-left: 5px; | ||
282 | +} | ||
283 | + | ||
284 | +.xdsoft_datetimepicker .xdsoft_calendar table { | ||
285 | + border-collapse: collapse; | ||
286 | + width: 100%; | ||
287 | + | ||
288 | +} | ||
289 | + | ||
290 | +.xdsoft_datetimepicker .xdsoft_calendar td > div { | ||
291 | + padding-right: 5px; | ||
292 | +} | ||
293 | + | ||
294 | +.xdsoft_datetimepicker .xdsoft_calendar th { | ||
295 | + height: 25px; | ||
296 | +} | ||
297 | + | ||
298 | +.xdsoft_datetimepicker .xdsoft_calendar td,.xdsoft_datetimepicker .xdsoft_calendar th { | ||
299 | + width: 14.2857142%; | ||
300 | + background: #f5f5f5; | ||
301 | + border: 1px solid #ddd; | ||
302 | + color: #666; | ||
303 | + font-size: 12px; | ||
304 | + text-align: right; | ||
305 | + vertical-align: middle; | ||
306 | + padding: 0; | ||
307 | + border-collapse: collapse; | ||
308 | + cursor: pointer; | ||
309 | + height: 25px; | ||
310 | +} | ||
311 | +.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar td,.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar th { | ||
312 | + width: 12.5%; | ||
313 | +} | ||
314 | + | ||
315 | +.xdsoft_datetimepicker .xdsoft_calendar th { | ||
316 | + background: #f1f1f1; | ||
317 | +} | ||
318 | + | ||
319 | +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_today { | ||
320 | + color: #33aaff; | ||
321 | +} | ||
322 | + | ||
323 | +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_highlighted_default { | ||
324 | + background: #ffe9d2; | ||
325 | + box-shadow: #ffb871 0 1px 4px 0 inset; | ||
326 | + color: #000; | ||
327 | +} | ||
328 | +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_highlighted_mint { | ||
329 | + background: #c1ffc9; | ||
330 | + box-shadow: #00dd1c 0 1px 4px 0 inset; | ||
331 | + color: #000; | ||
332 | +} | ||
333 | + | ||
334 | +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_default, | ||
335 | +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current, | ||
336 | +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_current { | ||
337 | + background: #33aaff; | ||
338 | + box-shadow: #178fe5 0 1px 3px 0 inset; | ||
339 | + color: #fff; | ||
340 | + font-weight: 700; | ||
341 | +} | ||
342 | + | ||
343 | +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month, | ||
344 | +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled, | ||
345 | +.xdsoft_datetimepicker .xdsoft_time_box >div >div.xdsoft_disabled { | ||
346 | + opacity: 0.5; | ||
347 | + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; | ||
348 | + cursor: default; | ||
349 | +} | ||
350 | + | ||
351 | +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month.xdsoft_disabled { | ||
352 | + opacity: 0.2; | ||
353 | + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)"; | ||
354 | +} | ||
355 | + | ||
356 | +.xdsoft_datetimepicker .xdsoft_calendar td:hover, | ||
357 | +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div:hover { | ||
358 | + color: #fff !important; | ||
359 | + background: #ff8000 !important; | ||
360 | + box-shadow: none !important; | ||
361 | +} | ||
362 | + | ||
363 | +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current.xdsoft_disabled:hover, | ||
364 | +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div.xdsoft_current.xdsoft_disabled:hover { | ||
365 | + background: #33aaff !important; | ||
366 | + box-shadow: #178fe5 0 1px 3px 0 inset !important; | ||
367 | + color: #fff !important; | ||
368 | +} | ||
369 | + | ||
370 | +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled:hover, | ||
371 | +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_disabled:hover { | ||
372 | + color: inherit !important; | ||
373 | + background: inherit !important; | ||
374 | + box-shadow: inherit !important; | ||
375 | +} | ||
376 | + | ||
377 | +.xdsoft_datetimepicker .xdsoft_calendar th { | ||
378 | + font-weight: 700; | ||
379 | + text-align: center; | ||
380 | + color: #999; | ||
381 | + cursor: default; | ||
382 | +} | ||
383 | + | ||
384 | +.xdsoft_datetimepicker .xdsoft_copyright { | ||
385 | + color: #ccc !important; | ||
386 | + font-size: 10px; | ||
387 | + clear: both; | ||
388 | + float: none; | ||
389 | + margin-left: 8px; | ||
390 | +} | ||
391 | + | ||
392 | +.xdsoft_datetimepicker .xdsoft_copyright a { color: #eee !important } | ||
393 | +.xdsoft_datetimepicker .xdsoft_copyright a:hover { color: #aaa !important } | ||
394 | + | ||
395 | +.xdsoft_time_box { | ||
396 | + position: relative; | ||
397 | + border: 1px solid #ccc; | ||
398 | +} | ||
399 | +.xdsoft_scrollbar >.xdsoft_scroller { | ||
400 | + background: #ccc !important; | ||
401 | + height: 20px; | ||
402 | + border-radius: 3px; | ||
403 | +} | ||
404 | +.xdsoft_scrollbar { | ||
405 | + position: absolute; | ||
406 | + width: 7px; | ||
407 | + right: 0; | ||
408 | + top: 0; | ||
409 | + bottom: 0; | ||
410 | + cursor: pointer; | ||
411 | +} | ||
412 | +.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_scrollbar { | ||
413 | + left: 0; | ||
414 | + right: auto; | ||
415 | +} | ||
416 | +.xdsoft_scroller_box { | ||
417 | + position: relative; | ||
418 | +} | ||
419 | + | ||
420 | +.xdsoft_datetimepicker.xdsoft_dark { | ||
421 | + box-shadow: 0 5px 15px -5px rgba(255, 255, 255, 0.506); | ||
422 | + background: #000; | ||
423 | + border-bottom: 1px solid #444; | ||
424 | + border-left: 1px solid #333; | ||
425 | + border-right: 1px solid #333; | ||
426 | + border-top: 1px solid #333; | ||
427 | + color: #ccc; | ||
428 | +} | ||
429 | + | ||
430 | +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box { | ||
431 | + border-bottom: 1px solid #222; | ||
432 | +} | ||
433 | +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div { | ||
434 | + background: #0a0a0a; | ||
435 | + border-top: 1px solid #222; | ||
436 | + color: #999; | ||
437 | +} | ||
438 | + | ||
439 | +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label { | ||
440 | + background-color: #000; | ||
441 | +} | ||
442 | +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select { | ||
443 | + border: 1px solid #333; | ||
444 | + background: #000; | ||
445 | +} | ||
446 | + | ||
447 | +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover { | ||
448 | + color: #000; | ||
449 | + background: #007fff; | ||
450 | +} | ||
451 | + | ||
452 | +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current { | ||
453 | + background: #cc5500; | ||
454 | + box-shadow: #b03e00 0 1px 3px 0 inset; | ||
455 | + color: #000; | ||
456 | +} | ||
457 | + | ||
458 | +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label i, | ||
459 | +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_prev, | ||
460 | +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_next, | ||
461 | +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_today_button { | ||
462 | + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUExQUUzOTA0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUExQUUzOTE0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQTFBRTM4RTQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQTFBRTM4RjQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp0VxGEAAAIASURBVHja7JrNSgMxEMebtgh+3MSLr1T1Xn2CHoSKB08+QmR8Bx9A8e7RixdB9CKCoNdexIugxFlJa7rNZneTbLIpM/CnNLsdMvNjM8l0mRCiQ9Ye61IKCAgZAUnH+mU3MMZaHYChBnJUDzWOFZdVfc5+ZFLbrWDeXPwbxIqrLLfaeS0hEBVGIRQCEiZoHQwtlGSByCCdYBl8g8egTTAWoKQMRBRBcZxYlhzhKegqMOageErsCHVkk3hXIFooDgHB1KkHIHVgzKB4ADJQ/A1jAFmAYhkQqA5TOBtocrKrgXwQA8gcFIuAIO8sQSA7hidvPwaQGZSaAYHOUWJABhWWw2EMIH9QagQERU4SArJXo0ZZL18uvaxejXt/Em8xjVBXmvFr1KVm/AJ10tRe2XnraNqaJvKE3KHuUbfK1E+VHB0q40/y3sdQSxY4FHWeKJCunP8UyDdqJZenT3ntVV5jIYCAh20vT7ioP8tpf6E2lfEMwERe+whV1MHjwZB7PBiCxcGQWwKZKD62lfGNnP/1poFAA60T7rF1UgcKd2id3KDeUS+oLWV8DfWAepOfq00CgQabi9zjcgJVYVD7PVzQUAUGAQkbNJTBICDhgwYTjDYD6XeW08ZKh+A4pYkzenOxXUbvZcWz7E8ykRMnIHGX1XPl+1m2vPYpL+2qdb8CDAARlKFEz/ZVkAAAAABJRU5ErkJggg==); | ||
463 | +} | ||
464 | + | ||
465 | +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td, | ||
466 | +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th { | ||
467 | + background: #0a0a0a; | ||
468 | + border: 1px solid #222; | ||
469 | + color: #999; | ||
470 | +} | ||
471 | + | ||
472 | +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th { | ||
473 | + background: #0e0e0e; | ||
474 | +} | ||
475 | + | ||
476 | +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_today { | ||
477 | + color: #cc5500; | ||
478 | +} | ||
479 | + | ||
480 | +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_highlighted_default { | ||
481 | + background: #ffe9d2; | ||
482 | + box-shadow: #ffb871 0 1px 4px 0 inset; | ||
483 | + color:#000; | ||
484 | +} | ||
485 | +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_highlighted_mint { | ||
486 | + background: #c1ffc9; | ||
487 | + box-shadow: #00dd1c 0 1px 4px 0 inset; | ||
488 | + color:#000; | ||
489 | +} | ||
490 | + | ||
491 | +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_default, | ||
492 | +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_current, | ||
493 | +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_current { | ||
494 | + background: #cc5500; | ||
495 | + box-shadow: #b03e00 0 1px 3px 0 inset; | ||
496 | + color: #000; | ||
497 | +} | ||
498 | + | ||
499 | +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td:hover, | ||
500 | +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div:hover { | ||
501 | + color: #000 !important; | ||
502 | + background: #007fff !important; | ||
503 | +} | ||
504 | + | ||
505 | +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th { | ||
506 | + color: #666; | ||
507 | +} | ||
508 | + | ||
509 | +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright { color: #333 !important } | ||
510 | +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a { color: #111 !important } | ||
511 | +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a:hover { color: #555 !important } | ||
512 | + | ||
513 | +.xdsoft_dark .xdsoft_time_box { | ||
514 | + border: 1px solid #333; | ||
515 | +} | ||
516 | + | ||
517 | +.xdsoft_dark .xdsoft_scrollbar >.xdsoft_scroller { | ||
518 | + background: #333 !important; | ||
519 | +} | ||
520 | +.xdsoft_datetimepicker .xdsoft_save_selected { | ||
521 | + display: block; | ||
522 | + border: 1px solid #dddddd !important; | ||
523 | + margin-top: 5px; | ||
524 | + width: 100%; | ||
525 | + color: #454551; | ||
526 | + font-size: 13px; | ||
527 | +} | ||
528 | +.xdsoft_datetimepicker .blue-gradient-button { | ||
529 | + font-family: "museo-sans", "Book Antiqua", sans-serif; | ||
530 | + font-size: 12px; | ||
531 | + font-weight: 300; | ||
532 | + color: #82878c; | ||
533 | + height: 28px; | ||
534 | + position: relative; | ||
535 | + padding: 4px 17px 4px 33px; | ||
536 | + border: 1px solid #d7d8da; | ||
537 | + background: -moz-linear-gradient(top, #fff 0%, #f4f8fa 73%); | ||
538 | + /* FF3.6+ */ | ||
539 | + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(73%, #f4f8fa)); | ||
540 | + /* Chrome,Safari4+ */ | ||
541 | + background: -webkit-linear-gradient(top, #fff 0%, #f4f8fa 73%); | ||
542 | + /* Chrome10+,Safari5.1+ */ | ||
543 | + background: -o-linear-gradient(top, #fff 0%, #f4f8fa 73%); | ||
544 | + /* Opera 11.10+ */ | ||
545 | + background: -ms-linear-gradient(top, #fff 0%, #f4f8fa 73%); | ||
546 | + /* IE10+ */ | ||
547 | + background: linear-gradient(to bottom, #fff 0%, #f4f8fa 73%); | ||
548 | + /* W3C */ | ||
549 | + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fff', endColorstr='#f4f8fa',GradientType=0 ); | ||
550 | +/* IE6-9 */ | ||
551 | +} | ||
552 | +.xdsoft_datetimepicker .blue-gradient-button:hover, .xdsoft_datetimepicker .blue-gradient-button:focus, .xdsoft_datetimepicker .blue-gradient-button:hover span, .xdsoft_datetimepicker .blue-gradient-button:focus span { | ||
553 | + color: #454551; | ||
554 | + background: -moz-linear-gradient(top, #f4f8fa 0%, #FFF 73%); | ||
555 | + /* FF3.6+ */ | ||
556 | + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f4f8fa), color-stop(73%, #FFF)); | ||
557 | + /* Chrome,Safari4+ */ | ||
558 | + background: -webkit-linear-gradient(top, #f4f8fa 0%, #FFF 73%); | ||
559 | + /* Chrome10+,Safari5.1+ */ | ||
560 | + background: -o-linear-gradient(top, #f4f8fa 0%, #FFF 73%); | ||
561 | + /* Opera 11.10+ */ | ||
562 | + background: -ms-linear-gradient(top, #f4f8fa 0%, #FFF 73%); | ||
563 | + /* IE10+ */ | ||
564 | + background: linear-gradient(to bottom, #f4f8fa 0%, #FFF 73%); | ||
565 | + /* W3C */ | ||
566 | + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f4f8fa', endColorstr='#FFF',GradientType=0 ); | ||
567 | + /* IE6-9 */ | ||
568 | +} |
1 | +/** | ||
2 | + * @preserve jQuery DateTimePicker | ||
3 | + * @homepage http://xdsoft.net/jqplugins/datetimepicker/ | ||
4 | + * @author Chupurnov Valeriy (<chupurnov@gmail.com>) | ||
5 | + */ | ||
6 | + | ||
7 | +/** | ||
8 | + * @param {jQuery} $ | ||
9 | + */ | ||
10 | +var datetimepickerFactory = function ($) { | ||
11 | + 'use strict'; | ||
12 | + | ||
13 | + var default_options = { | ||
14 | + i18n: { | ||
15 | + ar: { // Arabic | ||
16 | + months: [ | ||
17 | + "كانون الثاني", "شباط", "آذار", "نيسان", "مايو", "حزيران", "تموز", "آب", "أيلول", "تشرين الأول", "تشرين الثاني", "كانون الأول" | ||
18 | + ], | ||
19 | + dayOfWeekShort: [ | ||
20 | + "ن", "ث", "ع", "خ", "ج", "س", "ح" | ||
21 | + ], | ||
22 | + dayOfWeek: ["الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت", "الأحد"] | ||
23 | + }, | ||
24 | + ro: { // Romanian | ||
25 | + months: [ | ||
26 | + "Ianuarie", "Februarie", "Martie", "Aprilie", "Mai", "Iunie", "Iulie", "August", "Septembrie", "Octombrie", "Noiembrie", "Decembrie" | ||
27 | + ], | ||
28 | + dayOfWeekShort: [ | ||
29 | + "Du", "Lu", "Ma", "Mi", "Jo", "Vi", "Sâ" | ||
30 | + ], | ||
31 | + dayOfWeek: ["Duminică", "Luni", "Marţi", "Miercuri", "Joi", "Vineri", "Sâmbătă"] | ||
32 | + }, | ||
33 | + id: { // Indonesian | ||
34 | + months: [ | ||
35 | + "Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember" | ||
36 | + ], | ||
37 | + dayOfWeekShort: [ | ||
38 | + "Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab" | ||
39 | + ], | ||
40 | + dayOfWeek: ["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"] | ||
41 | + }, | ||
42 | + is: { // Icelandic | ||
43 | + months: [ | ||
44 | + "Janúar", "Febrúar", "Mars", "Apríl", "Maí", "Júní", "Júlí", "Ágúst", "September", "Október", "Nóvember", "Desember" | ||
45 | + ], | ||
46 | + dayOfWeekShort: [ | ||
47 | + "Sun", "Mán", "Þrið", "Mið", "Fim", "Fös", "Lau" | ||
48 | + ], | ||
49 | + dayOfWeek: ["Sunnudagur", "Mánudagur", "Þriðjudagur", "Miðvikudagur", "Fimmtudagur", "Föstudagur", "Laugardagur"] | ||
50 | + }, | ||
51 | + bg: { // Bulgarian | ||
52 | + months: [ | ||
53 | + "Януари", "Февруари", "Март", "Април", "Май", "Юни", "Юли", "Август", "Септември", "Октомври", "Ноември", "Декември" | ||
54 | + ], | ||
55 | + dayOfWeekShort: [ | ||
56 | + "Нд", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб" | ||
57 | + ], | ||
58 | + dayOfWeek: ["Неделя", "Понеделник", "Вторник", "Сряда", "Четвъртък", "Петък", "Събота"] | ||
59 | + }, | ||
60 | + fa: { // Persian/Farsi | ||
61 | + months: [ | ||
62 | + 'فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند' | ||
63 | + ], | ||
64 | + dayOfWeekShort: [ | ||
65 | + 'یکشنبه', 'دوشنبه', 'سه شنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه' | ||
66 | + ], | ||
67 | + dayOfWeek: ["یکشنبه", "دوشنبه", "سهشنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه", "یکشنبه"] | ||
68 | + }, | ||
69 | + ru: { // Russian | ||
70 | + months: [ | ||
71 | + 'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь' | ||
72 | + ], | ||
73 | + dayOfWeekShort: [ | ||
74 | + "Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб" | ||
75 | + ], | ||
76 | + dayOfWeek: ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота"] | ||
77 | + }, | ||
78 | + uk: { // Ukrainian | ||
79 | + months: [ | ||
80 | + 'Січень', 'Лютий', 'Березень', 'Квітень', 'Травень', 'Червень', 'Липень', 'Серпень', 'Вересень', 'Жовтень', 'Листопад', 'Грудень' | ||
81 | + ], | ||
82 | + dayOfWeekShort: [ | ||
83 | + "Ндл", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Сбт" | ||
84 | + ], | ||
85 | + dayOfWeek: ["Неділя", "Понеділок", "Вівторок", "Середа", "Четвер", "П'ятниця", "Субота"] | ||
86 | + }, | ||
87 | + en: { // English | ||
88 | + months: [ | ||
89 | + "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" | ||
90 | + ], | ||
91 | + dayOfWeekShort: [ | ||
92 | + "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" | ||
93 | + ], | ||
94 | + dayOfWeek: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] | ||
95 | + }, | ||
96 | + el: { // Ελληνικά | ||
97 | + months: [ | ||
98 | + "Ιανουάριος", "Φεβρουάριος", "Μάρτιος", "Απρίλιος", "Μάιος", "Ιούνιος", "Ιούλιος", "Αύγουστος", "Σεπτέμβριος", "Οκτώβριος", "Νοέμβριος", "Δεκέμβριος" | ||
99 | + ], | ||
100 | + dayOfWeekShort: [ | ||
101 | + "Κυρ", "Δευ", "Τρι", "Τετ", "Πεμ", "Παρ", "Σαβ" | ||
102 | + ], | ||
103 | + dayOfWeek: ["Κυριακή", "Δευτέρα", "Τρίτη", "Τετάρτη", "Πέμπτη", "Παρασκευή", "Σάββατο"] | ||
104 | + }, | ||
105 | + de: { // German | ||
106 | + months: [ | ||
107 | + 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember' | ||
108 | + ], | ||
109 | + dayOfWeekShort: [ | ||
110 | + "So", "Mo", "Di", "Mi", "Do", "Fr", "Sa" | ||
111 | + ], | ||
112 | + dayOfWeek: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"] | ||
113 | + }, | ||
114 | + nl: { // Dutch | ||
115 | + months: [ | ||
116 | + "januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december" | ||
117 | + ], | ||
118 | + dayOfWeekShort: [ | ||
119 | + "zo", "ma", "di", "wo", "do", "vr", "za" | ||
120 | + ], | ||
121 | + dayOfWeek: ["zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag"] | ||
122 | + }, | ||
123 | + tr: { // Turkish | ||
124 | + months: [ | ||
125 | + "Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık" | ||
126 | + ], | ||
127 | + dayOfWeekShort: [ | ||
128 | + "Paz", "Pts", "Sal", "Çar", "Per", "Cum", "Cts" | ||
129 | + ], | ||
130 | + dayOfWeek: ["Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi"] | ||
131 | + }, | ||
132 | + fr: { //French | ||
133 | + months: [ | ||
134 | + "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre" | ||
135 | + ], | ||
136 | + dayOfWeekShort: [ | ||
137 | + "Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam" | ||
138 | + ], | ||
139 | + dayOfWeek: ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"] | ||
140 | + }, | ||
141 | + es: { // Spanish | ||
142 | + months: [ | ||
143 | + "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre" | ||
144 | + ], | ||
145 | + dayOfWeekShort: [ | ||
146 | + "Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb" | ||
147 | + ], | ||
148 | + dayOfWeek: ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"] | ||
149 | + }, | ||
150 | + th: { // Thai | ||
151 | + months: [ | ||
152 | + 'มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม' | ||
153 | + ], | ||
154 | + dayOfWeekShort: [ | ||
155 | + 'อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.' | ||
156 | + ], | ||
157 | + dayOfWeek: ["อาทิตย์", "จันทร์", "อังคาร", "พุธ", "พฤหัส", "ศุกร์", "เสาร์", "อาทิตย์"] | ||
158 | + }, | ||
159 | + pl: { // Polish | ||
160 | + months: [ | ||
161 | + "styczeń", "luty", "marzec", "kwiecień", "maj", "czerwiec", "lipiec", "sierpień", "wrzesień", "październik", "listopad", "grudzień" | ||
162 | + ], | ||
163 | + dayOfWeekShort: [ | ||
164 | + "nd", "pn", "wt", "śr", "cz", "pt", "sb" | ||
165 | + ], | ||
166 | + dayOfWeek: ["niedziela", "poniedziałek", "wtorek", "środa", "czwartek", "piątek", "sobota"] | ||
167 | + }, | ||
168 | + pt: { // Portuguese | ||
169 | + months: [ | ||
170 | + "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro" | ||
171 | + ], | ||
172 | + dayOfWeekShort: [ | ||
173 | + "Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sab" | ||
174 | + ], | ||
175 | + dayOfWeek: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"] | ||
176 | + }, | ||
177 | + ch: { // Simplified Chinese | ||
178 | + months: [ | ||
179 | + "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月" | ||
180 | + ], | ||
181 | + dayOfWeekShort: [ | ||
182 | + "日", "一", "二", "三", "四", "五", "六" | ||
183 | + ] | ||
184 | + }, | ||
185 | + se: { // Swedish | ||
186 | + months: [ | ||
187 | + "Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December" | ||
188 | + ], | ||
189 | + dayOfWeekShort: [ | ||
190 | + "Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör" | ||
191 | + ] | ||
192 | + }, | ||
193 | + km: { // Khmer (ភាសាខ្មែរ) | ||
194 | + months: [ | ||
195 | + "មករា", "កុម្ភៈ", "មិនា", "មេសា", "ឧសភា", "មិថុនា", "កក្កដា", "សីហា", "កញ្ញា", "តុលា", "វិច្ឆិកា", "ធ្នូ" | ||
196 | + ], | ||
197 | + dayOfWeekShort: ["អាទិ", "ច័ន្ទ", "អង្គារ", "ពុធ", "ព្រហ", "សុក្រ", "សៅរ៍"], | ||
198 | + dayOfWeek: ["អាទិត្យ", "ច័ន្ទ", "អង្គារ", "ពុធ", "ព្រហស្បតិ៍", "សុក្រ", "សៅរ៍"] | ||
199 | + }, | ||
200 | + kr: { // Korean | ||
201 | + months: [ | ||
202 | + "1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월" | ||
203 | + ], | ||
204 | + dayOfWeekShort: [ | ||
205 | + "일", "월", "화", "수", "목", "금", "토" | ||
206 | + ], | ||
207 | + dayOfWeek: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"] | ||
208 | + }, | ||
209 | + it: { // Italian | ||
210 | + months: [ | ||
211 | + "Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre" | ||
212 | + ], | ||
213 | + dayOfWeekShort: [ | ||
214 | + "Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab" | ||
215 | + ], | ||
216 | + dayOfWeek: ["Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato"] | ||
217 | + }, | ||
218 | + da: { // Dansk | ||
219 | + months: [ | ||
220 | + "Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December" | ||
221 | + ], | ||
222 | + dayOfWeekShort: [ | ||
223 | + "Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør" | ||
224 | + ], | ||
225 | + dayOfWeek: ["søndag", "mandag", "tirsdag", "onsdag", "torsdag", "fredag", "lørdag"] | ||
226 | + }, | ||
227 | + no: { // Norwegian | ||
228 | + months: [ | ||
229 | + "Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember" | ||
230 | + ], | ||
231 | + dayOfWeekShort: [ | ||
232 | + "Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør" | ||
233 | + ], | ||
234 | + dayOfWeek: ['Søndag', 'Mandag', 'Tirsdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lørdag'] | ||
235 | + }, | ||
236 | + ja: { // Japanese | ||
237 | + months: [ | ||
238 | + "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月" | ||
239 | + ], | ||
240 | + dayOfWeekShort: [ | ||
241 | + "日", "月", "火", "水", "木", "金", "土" | ||
242 | + ], | ||
243 | + dayOfWeek: ["日曜", "月曜", "火曜", "水曜", "木曜", "金曜", "土曜"] | ||
244 | + }, | ||
245 | + vi: { // Vietnamese | ||
246 | + months: [ | ||
247 | + "Tháng 1", "Tháng 2", "Tháng 3", "Tháng 4", "Tháng 5", "Tháng 6", "Tháng 7", "Tháng 8", "Tháng 9", "Tháng 10", "Tháng 11", "Tháng 12" | ||
248 | + ], | ||
249 | + dayOfWeekShort: [ | ||
250 | + "CN", "T2", "T3", "T4", "T5", "T6", "T7" | ||
251 | + ], | ||
252 | + dayOfWeek: ["Chủ nhật", "Thứ hai", "Thứ ba", "Thứ tư", "Thứ năm", "Thứ sáu", "Thứ bảy"] | ||
253 | + }, | ||
254 | + sl: { // Slovenščina | ||
255 | + months: [ | ||
256 | + "Januar", "Februar", "Marec", "April", "Maj", "Junij", "Julij", "Avgust", "September", "Oktober", "November", "December" | ||
257 | + ], | ||
258 | + dayOfWeekShort: [ | ||
259 | + "Ned", "Pon", "Tor", "Sre", "Čet", "Pet", "Sob" | ||
260 | + ], | ||
261 | + dayOfWeek: ["Nedelja", "Ponedeljek", "Torek", "Sreda", "Četrtek", "Petek", "Sobota"] | ||
262 | + }, | ||
263 | + cs: { // Čeština | ||
264 | + months: [ | ||
265 | + "Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec" | ||
266 | + ], | ||
267 | + dayOfWeekShort: [ | ||
268 | + "Ne", "Po", "Út", "St", "Čt", "Pá", "So" | ||
269 | + ] | ||
270 | + }, | ||
271 | + hu: { // Hungarian | ||
272 | + months: [ | ||
273 | + "Január", "Február", "Március", "Április", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December" | ||
274 | + ], | ||
275 | + dayOfWeekShort: [ | ||
276 | + "Va", "Hé", "Ke", "Sze", "Cs", "Pé", "Szo" | ||
277 | + ], | ||
278 | + dayOfWeek: ["vasárnap", "hétfő", "kedd", "szerda", "csütörtök", "péntek", "szombat"] | ||
279 | + }, | ||
280 | + az: { //Azerbaijanian (Azeri) | ||
281 | + months: [ | ||
282 | + "Yanvar", "Fevral", "Mart", "Aprel", "May", "Iyun", "Iyul", "Avqust", "Sentyabr", "Oktyabr", "Noyabr", "Dekabr" | ||
283 | + ], | ||
284 | + dayOfWeekShort: [ | ||
285 | + "B", "Be", "Ça", "Ç", "Ca", "C", "Ş" | ||
286 | + ], | ||
287 | + dayOfWeek: ["Bazar", "Bazar ertəsi", "Çərşənbə axşamı", "Çərşənbə", "Cümə axşamı", "Cümə", "Şənbə"] | ||
288 | + }, | ||
289 | + bs: { //Bosanski | ||
290 | + months: [ | ||
291 | + "Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar" | ||
292 | + ], | ||
293 | + dayOfWeekShort: [ | ||
294 | + "Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub" | ||
295 | + ], | ||
296 | + dayOfWeek: ["Nedjelja","Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota"] | ||
297 | + }, | ||
298 | + ca: { //Català | ||
299 | + months: [ | ||
300 | + "Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre" | ||
301 | + ], | ||
302 | + dayOfWeekShort: [ | ||
303 | + "Dg", "Dl", "Dt", "Dc", "Dj", "Dv", "Ds" | ||
304 | + ], | ||
305 | + dayOfWeek: ["Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte"] | ||
306 | + }, | ||
307 | + 'en-GB': { //English (British) | ||
308 | + months: [ | ||
309 | + "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" | ||
310 | + ], | ||
311 | + dayOfWeekShort: [ | ||
312 | + "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" | ||
313 | + ], | ||
314 | + dayOfWeek: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] | ||
315 | + }, | ||
316 | + et: { //"Eesti" | ||
317 | + months: [ | ||
318 | + "Jaanuar", "Veebruar", "Märts", "Aprill", "Mai", "Juuni", "Juuli", "August", "September", "Oktoober", "November", "Detsember" | ||
319 | + ], | ||
320 | + dayOfWeekShort: [ | ||
321 | + "P", "E", "T", "K", "N", "R", "L" | ||
322 | + ], | ||
323 | + dayOfWeek: ["Pühapäev", "Esmaspäev", "Teisipäev", "Kolmapäev", "Neljapäev", "Reede", "Laupäev"] | ||
324 | + }, | ||
325 | + eu: { //Euskara | ||
326 | + months: [ | ||
327 | + "Urtarrila", "Otsaila", "Martxoa", "Apirila", "Maiatza", "Ekaina", "Uztaila", "Abuztua", "Iraila", "Urria", "Azaroa", "Abendua" | ||
328 | + ], | ||
329 | + dayOfWeekShort: [ | ||
330 | + "Ig.", "Al.", "Ar.", "Az.", "Og.", "Or.", "La." | ||
331 | + ], | ||
332 | + dayOfWeek: ['Igandea', 'Astelehena', 'Asteartea', 'Asteazkena', 'Osteguna', 'Ostirala', 'Larunbata'] | ||
333 | + }, | ||
334 | + fi: { //Finnish (Suomi) | ||
335 | + months: [ | ||
336 | + "Tammikuu", "Helmikuu", "Maaliskuu", "Huhtikuu", "Toukokuu", "Kesäkuu", "Heinäkuu", "Elokuu", "Syyskuu", "Lokakuu", "Marraskuu", "Joulukuu" | ||
337 | + ], | ||
338 | + dayOfWeekShort: [ | ||
339 | + "Su", "Ma", "Ti", "Ke", "To", "Pe", "La" | ||
340 | + ], | ||
341 | + dayOfWeek: ["sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai"] | ||
342 | + }, | ||
343 | + gl: { //Galego | ||
344 | + months: [ | ||
345 | + "Xan", "Feb", "Maz", "Abr", "Mai", "Xun", "Xul", "Ago", "Set", "Out", "Nov", "Dec" | ||
346 | + ], | ||
347 | + dayOfWeekShort: [ | ||
348 | + "Dom", "Lun", "Mar", "Mer", "Xov", "Ven", "Sab" | ||
349 | + ], | ||
350 | + dayOfWeek: ["Domingo", "Luns", "Martes", "Mércores", "Xoves", "Venres", "Sábado"] | ||
351 | + }, | ||
352 | + hr: { //Hrvatski | ||
353 | + months: [ | ||
354 | + "Siječanj", "Veljača", "Ožujak", "Travanj", "Svibanj", "Lipanj", "Srpanj", "Kolovoz", "Rujan", "Listopad", "Studeni", "Prosinac" | ||
355 | + ], | ||
356 | + dayOfWeekShort: [ | ||
357 | + "Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub" | ||
358 | + ], | ||
359 | + dayOfWeek: ["Nedjelja", "Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota"] | ||
360 | + }, | ||
361 | + ko: { //Korean (한국어) | ||
362 | + months: [ | ||
363 | + "1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월" | ||
364 | + ], | ||
365 | + dayOfWeekShort: [ | ||
366 | + "일", "월", "화", "수", "목", "금", "토" | ||
367 | + ], | ||
368 | + dayOfWeek: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"] | ||
369 | + }, | ||
370 | + lt: { //Lithuanian (lietuvių) | ||
371 | + months: [ | ||
372 | + "Sausio", "Vasario", "Kovo", "Balandžio", "Gegužės", "Birželio", "Liepos", "Rugpjūčio", "Rugsėjo", "Spalio", "Lapkričio", "Gruodžio" | ||
373 | + ], | ||
374 | + dayOfWeekShort: [ | ||
375 | + "Sek", "Pir", "Ant", "Tre", "Ket", "Pen", "Šeš" | ||
376 | + ], | ||
377 | + dayOfWeek: ["Sekmadienis", "Pirmadienis", "Antradienis", "Trečiadienis", "Ketvirtadienis", "Penktadienis", "Šeštadienis"] | ||
378 | + }, | ||
379 | + lv: { //Latvian (Latviešu) | ||
380 | + months: [ | ||
381 | + "Janvāris", "Februāris", "Marts", "Aprīlis ", "Maijs", "Jūnijs", "Jūlijs", "Augusts", "Septembris", "Oktobris", "Novembris", "Decembris" | ||
382 | + ], | ||
383 | + dayOfWeekShort: [ | ||
384 | + "Sv", "Pr", "Ot", "Tr", "Ct", "Pk", "St" | ||
385 | + ], | ||
386 | + dayOfWeek: ["Svētdiena", "Pirmdiena", "Otrdiena", "Trešdiena", "Ceturtdiena", "Piektdiena", "Sestdiena"] | ||
387 | + }, | ||
388 | + mk: { //Macedonian (Македонски) | ||
389 | + months: [ | ||
390 | + "јануари", "февруари", "март", "април", "мај", "јуни", "јули", "август", "септември", "октомври", "ноември", "декември" | ||
391 | + ], | ||
392 | + dayOfWeekShort: [ | ||
393 | + "нед", "пон", "вто", "сре", "чет", "пет", "саб" | ||
394 | + ], | ||
395 | + dayOfWeek: ["Недела", "Понеделник", "Вторник", "Среда", "Четврток", "Петок", "Сабота"] | ||
396 | + }, | ||
397 | + mn: { //Mongolian (Монгол) | ||
398 | + months: [ | ||
399 | + "1-р сар", "2-р сар", "3-р сар", "4-р сар", "5-р сар", "6-р сар", "7-р сар", "8-р сар", "9-р сар", "10-р сар", "11-р сар", "12-р сар" | ||
400 | + ], | ||
401 | + dayOfWeekShort: [ | ||
402 | + "Дав", "Мяг", "Лха", "Пүр", "Бсн", "Бям", "Ням" | ||
403 | + ], | ||
404 | + dayOfWeek: ["Даваа", "Мягмар", "Лхагва", "Пүрэв", "Баасан", "Бямба", "Ням"] | ||
405 | + }, | ||
406 | + 'pt-BR': { //Português(Brasil) | ||
407 | + months: [ | ||
408 | + "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro" | ||
409 | + ], | ||
410 | + dayOfWeekShort: [ | ||
411 | + "Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb" | ||
412 | + ], | ||
413 | + dayOfWeek: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"] | ||
414 | + }, | ||
415 | + sk: { //Slovenčina | ||
416 | + months: [ | ||
417 | + "Január", "Február", "Marec", "Apríl", "Máj", "Jún", "Júl", "August", "September", "Október", "November", "December" | ||
418 | + ], | ||
419 | + dayOfWeekShort: [ | ||
420 | + "Ne", "Po", "Ut", "St", "Št", "Pi", "So" | ||
421 | + ], | ||
422 | + dayOfWeek: ["Nedeľa", "Pondelok", "Utorok", "Streda", "Štvrtok", "Piatok", "Sobota"] | ||
423 | + }, | ||
424 | + sq: { //Albanian (Shqip) | ||
425 | + months: [ | ||
426 | + "Janar", "Shkurt", "Mars", "Prill", "Maj", "Qershor", "Korrik", "Gusht", "Shtator", "Tetor", "Nëntor", "Dhjetor" | ||
427 | + ], | ||
428 | + dayOfWeekShort: [ | ||
429 | + "Die", "Hën", "Mar", "Mër", "Enj", "Pre", "Shtu" | ||
430 | + ], | ||
431 | + dayOfWeek: ["E Diel", "E Hënë", "E Martē", "E Mërkurë", "E Enjte", "E Premte", "E Shtunë"] | ||
432 | + }, | ||
433 | + 'sr-YU': { //Serbian (Srpski) | ||
434 | + months: [ | ||
435 | + "Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar" | ||
436 | + ], | ||
437 | + dayOfWeekShort: [ | ||
438 | + "Ned", "Pon", "Uto", "Sre", "čet", "Pet", "Sub" | ||
439 | + ], | ||
440 | + dayOfWeek: ["Nedelja","Ponedeljak", "Utorak", "Sreda", "Četvrtak", "Petak", "Subota"] | ||
441 | + }, | ||
442 | + sr: { //Serbian Cyrillic (Српски) | ||
443 | + months: [ | ||
444 | + "јануар", "фебруар", "март", "април", "мај", "јун", "јул", "август", "септембар", "октобар", "новембар", "децембар" | ||
445 | + ], | ||
446 | + dayOfWeekShort: [ | ||
447 | + "нед", "пон", "уто", "сре", "чет", "пет", "суб" | ||
448 | + ], | ||
449 | + dayOfWeek: ["Недеља","Понедељак", "Уторак", "Среда", "Четвртак", "Петак", "Субота"] | ||
450 | + }, | ||
451 | + sv: { //Svenska | ||
452 | + months: [ | ||
453 | + "Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December" | ||
454 | + ], | ||
455 | + dayOfWeekShort: [ | ||
456 | + "Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör" | ||
457 | + ], | ||
458 | + dayOfWeek: ["Söndag", "Måndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "Lördag"] | ||
459 | + }, | ||
460 | + 'zh-TW': { //Traditional Chinese (繁體中文) | ||
461 | + months: [ | ||
462 | + "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月" | ||
463 | + ], | ||
464 | + dayOfWeekShort: [ | ||
465 | + "日", "一", "二", "三", "四", "五", "六" | ||
466 | + ], | ||
467 | + dayOfWeek: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"] | ||
468 | + }, | ||
469 | + zh: { //Simplified Chinese (简体中文) | ||
470 | + months: [ | ||
471 | + "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月" | ||
472 | + ], | ||
473 | + dayOfWeekShort: [ | ||
474 | + "日", "一", "二", "三", "四", "五", "六" | ||
475 | + ], | ||
476 | + dayOfWeek: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"] | ||
477 | + }, | ||
478 | + ug:{ // Uyghur(ئۇيغۇرچە) | ||
479 | + months: [ | ||
480 | + "1-ئاي","2-ئاي","3-ئاي","4-ئاي","5-ئاي","6-ئاي","7-ئاي","8-ئاي","9-ئاي","10-ئاي","11-ئاي","12-ئاي" | ||
481 | + ], | ||
482 | + dayOfWeek: [ | ||
483 | + "يەكشەنبە", "دۈشەنبە","سەيشەنبە","چارشەنبە","پەيشەنبە","جۈمە","شەنبە" | ||
484 | + ] | ||
485 | + }, | ||
486 | + he: { //Hebrew (עברית) | ||
487 | + months: [ | ||
488 | + 'ינואר', 'פברואר', 'מרץ', 'אפריל', 'מאי', 'יוני', 'יולי', 'אוגוסט', 'ספטמבר', 'אוקטובר', 'נובמבר', 'דצמבר' | ||
489 | + ], | ||
490 | + dayOfWeekShort: [ | ||
491 | + 'א\'', 'ב\'', 'ג\'', 'ד\'', 'ה\'', 'ו\'', 'שבת' | ||
492 | + ], | ||
493 | + dayOfWeek: ["ראשון", "שני", "שלישי", "רביעי", "חמישי", "שישי", "שבת", "ראשון"] | ||
494 | + }, | ||
495 | + hy: { // Armenian | ||
496 | + months: [ | ||
497 | + "Հունվար", "Փետրվար", "Մարտ", "Ապրիլ", "Մայիս", "Հունիս", "Հուլիս", "Օգոստոս", "Սեպտեմբեր", "Հոկտեմբեր", "Նոյեմբեր", "Դեկտեմբեր" | ||
498 | + ], | ||
499 | + dayOfWeekShort: [ | ||
500 | + "Կի", "Երկ", "Երք", "Չոր", "Հնգ", "Ուրբ", "Շբթ" | ||
501 | + ], | ||
502 | + dayOfWeek: ["Կիրակի", "Երկուշաբթի", "Երեքշաբթի", "Չորեքշաբթի", "Հինգշաբթի", "Ուրբաթ", "Շաբաթ"] | ||
503 | + }, | ||
504 | + kg: { // Kyrgyz | ||
505 | + months: [ | ||
506 | + 'Үчтүн айы', 'Бирдин айы', 'Жалган Куран', 'Чын Куран', 'Бугу', 'Кулжа', 'Теке', 'Баш Оона', 'Аяк Оона', 'Тогуздун айы', 'Жетинин айы', 'Бештин айы' | ||
507 | + ], | ||
508 | + dayOfWeekShort: [ | ||
509 | + "Жек", "Дүй", "Шей", "Шар", "Бей", "Жум", "Ише" | ||
510 | + ], | ||
511 | + dayOfWeek: [ | ||
512 | + "Жекшемб", "Дүйшөмб", "Шейшемб", "Шаршемб", "Бейшемби", "Жума", "Ишенб" | ||
513 | + ] | ||
514 | + }, | ||
515 | + rm: { // Romansh | ||
516 | + months: [ | ||
517 | + "Schaner", "Favrer", "Mars", "Avrigl", "Matg", "Zercladur", "Fanadur", "Avust", "Settember", "October", "November", "December" | ||
518 | + ], | ||
519 | + dayOfWeekShort: [ | ||
520 | + "Du", "Gli", "Ma", "Me", "Gie", "Ve", "So" | ||
521 | + ], | ||
522 | + dayOfWeek: [ | ||
523 | + "Dumengia", "Glindesdi", "Mardi", "Mesemna", "Gievgia", "Venderdi", "Sonda" | ||
524 | + ] | ||
525 | + }, | ||
526 | + ka: { // Georgian | ||
527 | + months: [ | ||
528 | + 'იანვარი', 'თებერვალი', 'მარტი', 'აპრილი', 'მაისი', 'ივნისი', 'ივლისი', 'აგვისტო', 'სექტემბერი', 'ოქტომბერი', 'ნოემბერი', 'დეკემბერი' | ||
529 | + ], | ||
530 | + dayOfWeekShort: [ | ||
531 | + "კვ", "ორშ", "სამშ", "ოთხ", "ხუთ", "პარ", "შაბ" | ||
532 | + ], | ||
533 | + dayOfWeek: ["კვირა", "ორშაბათი", "სამშაბათი", "ოთხშაბათი", "ხუთშაბათი", "პარასკევი", "შაბათი"] | ||
534 | + } | ||
535 | + }, | ||
536 | + | ||
537 | + ownerDocument: document, | ||
538 | + contentWindow: window, | ||
539 | + | ||
540 | + value: '', | ||
541 | + rtl: false, | ||
542 | + | ||
543 | + format: 'Y/m/d H:i', | ||
544 | + formatTime: 'H:i', | ||
545 | + formatDate: 'Y/m/d', | ||
546 | + | ||
547 | + startDate: false, // new Date(), '1986/12/08', '-1970/01/05','-1970/01/05', | ||
548 | + step: 60, | ||
549 | + monthChangeSpinner: true, | ||
550 | + | ||
551 | + closeOnDateSelect: false, | ||
552 | + closeOnTimeSelect: true, | ||
553 | + closeOnWithoutClick: true, | ||
554 | + closeOnInputClick: true, | ||
555 | + openOnFocus: true, | ||
556 | + | ||
557 | + timepicker: true, | ||
558 | + datepicker: true, | ||
559 | + weeks: false, | ||
560 | + | ||
561 | + defaultTime: false, // use formatTime format (ex. '10:00' for formatTime: 'H:i') | ||
562 | + defaultDate: false, // use formatDate format (ex new Date() or '1986/12/08' or '-1970/01/05' or '-1970/01/05') | ||
563 | + | ||
564 | + minDate: false, | ||
565 | + maxDate: false, | ||
566 | + minTime: false, | ||
567 | + maxTime: false, | ||
568 | + minDateTime: false, | ||
569 | + maxDateTime: false, | ||
570 | + | ||
571 | + allowTimes: [], | ||
572 | + opened: false, | ||
573 | + initTime: true, | ||
574 | + inline: false, | ||
575 | + theme: '', | ||
576 | + touchMovedThreshold: 5, | ||
577 | + | ||
578 | + onSelectDate: function () {}, | ||
579 | + onSelectTime: function () {}, | ||
580 | + onChangeMonth: function () {}, | ||
581 | + onGetWeekOfYear: function () {}, | ||
582 | + onChangeYear: function () {}, | ||
583 | + onChangeDateTime: function () {}, | ||
584 | + onShow: function () {}, | ||
585 | + onClose: function () {}, | ||
586 | + onGenerate: function () {}, | ||
587 | + | ||
588 | + withoutCopyright: true, | ||
589 | + inverseButton: false, | ||
590 | + hours12: false, | ||
591 | + next: 'xdsoft_next', | ||
592 | + prev : 'xdsoft_prev', | ||
593 | + dayOfWeekStart: 0, | ||
594 | + parentID: 'body', | ||
595 | + timeHeightInTimePicker: 25, | ||
596 | + timepickerScrollbar: true, | ||
597 | + todayButton: true, | ||
598 | + prevButton: true, | ||
599 | + nextButton: true, | ||
600 | + defaultSelect: true, | ||
601 | + | ||
602 | + scrollMonth: true, | ||
603 | + scrollTime: true, | ||
604 | + scrollInput: true, | ||
605 | + | ||
606 | + lazyInit: false, | ||
607 | + mask: false, | ||
608 | + validateOnBlur: true, | ||
609 | + allowBlank: true, | ||
610 | + yearStart: 1950, | ||
611 | + yearEnd: 2050, | ||
612 | + monthStart: 0, | ||
613 | + monthEnd: 11, | ||
614 | + style: '', | ||
615 | + id: '', | ||
616 | + fixed: false, | ||
617 | + roundTime: 'round', // ceil, floor | ||
618 | + className: '', | ||
619 | + weekends: [], | ||
620 | + highlightedDates: [], | ||
621 | + highlightedPeriods: [], | ||
622 | + allowDates : [], | ||
623 | + allowDateRe : null, | ||
624 | + disabledDates : [], | ||
625 | + disabledWeekDays: [], | ||
626 | + yearOffset: 0, | ||
627 | + beforeShowDay: null, | ||
628 | + | ||
629 | + enterLikeTab: true, | ||
630 | + showApplyButton: false | ||
631 | + }; | ||
632 | + | ||
633 | + var dateHelper = null, | ||
634 | + defaultDateHelper = null, | ||
635 | + globalLocaleDefault = 'en', | ||
636 | + globalLocale = 'en'; | ||
637 | + | ||
638 | + var dateFormatterOptionsDefault = { | ||
639 | + meridiem: ['AM', 'PM'] | ||
640 | + }; | ||
641 | + | ||
642 | + var initDateFormatter = function(){ | ||
643 | + var locale = default_options.i18n[globalLocale], | ||
644 | + opts = { | ||
645 | + days: locale.dayOfWeek, | ||
646 | + daysShort: locale.dayOfWeekShort, | ||
647 | + months: locale.months, | ||
648 | + monthsShort: $.map(locale.months, function(n){ return n.substring(0, 3) }) | ||
649 | + }; | ||
650 | + | ||
651 | + if (typeof DateFormatter === 'function') { | ||
652 | + dateHelper = defaultDateHelper = new DateFormatter({ | ||
653 | + dateSettings: $.extend({}, dateFormatterOptionsDefault, opts) | ||
654 | + }); | ||
655 | + } | ||
656 | + }; | ||
657 | + | ||
658 | + var dateFormatters = { | ||
659 | + moment: { | ||
660 | + default_options:{ | ||
661 | + format: 'YYYY/MM/DD HH:mm', | ||
662 | + formatDate: 'YYYY/MM/DD', | ||
663 | + formatTime: 'HH:mm', | ||
664 | + }, | ||
665 | + formatter: { | ||
666 | + parseDate: function (date, format) { | ||
667 | + if(isFormatStandard(format)){ | ||
668 | + return defaultDateHelper.parseDate(date, format); | ||
669 | + } | ||
670 | + var d = moment(date, format); | ||
671 | + return d.isValid() ? d.toDate() : false; | ||
672 | + }, | ||
673 | + | ||
674 | + formatDate: function (date, format) { | ||
675 | + if(isFormatStandard(format)){ | ||
676 | + return defaultDateHelper.formatDate(date, format); | ||
677 | + } | ||
678 | + return moment(date).format(format); | ||
679 | + }, | ||
680 | + | ||
681 | + formatMask: function(format){ | ||
682 | + return format | ||
683 | + .replace(/Y{4}/g, '9999') | ||
684 | + .replace(/Y{2}/g, '99') | ||
685 | + .replace(/M{2}/g, '19') | ||
686 | + .replace(/D{2}/g, '39') | ||
687 | + .replace(/H{2}/g, '29') | ||
688 | + .replace(/m{2}/g, '59') | ||
689 | + .replace(/s{2}/g, '59'); | ||
690 | + }, | ||
691 | + } | ||
692 | + } | ||
693 | + } | ||
694 | + | ||
695 | + // for locale settings | ||
696 | + $.datetimepicker = { | ||
697 | + setLocale: function(locale){ | ||
698 | + var newLocale = default_options.i18n[locale] ? locale : globalLocaleDefault; | ||
699 | + if (globalLocale !== newLocale) { | ||
700 | + globalLocale = newLocale; | ||
701 | + // reinit date formatter | ||
702 | + initDateFormatter(); | ||
703 | + } | ||
704 | + }, | ||
705 | + | ||
706 | + setDateFormatter: function(dateFormatter) { | ||
707 | + if(typeof dateFormatter === 'string' && dateFormatters.hasOwnProperty(dateFormatter)){ | ||
708 | + var df = dateFormatters[dateFormatter]; | ||
709 | + $.extend(default_options, df.default_options); | ||
710 | + dateHelper = df.formatter; | ||
711 | + } | ||
712 | + else { | ||
713 | + dateHelper = dateFormatter; | ||
714 | + } | ||
715 | + }, | ||
716 | + }; | ||
717 | + | ||
718 | + var standardFormats = { | ||
719 | + RFC_2822: 'D, d M Y H:i:s O', | ||
720 | + ATOM: 'Y-m-d\TH:i:sP', | ||
721 | + ISO_8601: 'Y-m-d\TH:i:sO', | ||
722 | + RFC_822: 'D, d M y H:i:s O', | ||
723 | + RFC_850: 'l, d-M-y H:i:s T', | ||
724 | + RFC_1036: 'D, d M y H:i:s O', | ||
725 | + RFC_1123: 'D, d M Y H:i:s O', | ||
726 | + RSS: 'D, d M Y H:i:s O', | ||
727 | + W3C: 'Y-m-d\TH:i:sP' | ||
728 | + } | ||
729 | + | ||
730 | + var isFormatStandard = function(format){ | ||
731 | + return $.map(standardFormats, function (val) { return val }) | ||
732 | + .indexOf(format) === -1 ? false : true; | ||
733 | + } | ||
734 | + | ||
735 | + $.extend($.datetimepicker, standardFormats); | ||
736 | + | ||
737 | + // first init date formatter | ||
738 | + initDateFormatter(); | ||
739 | + | ||
740 | + // fix for ie8 | ||
741 | + if (!window.getComputedStyle) { | ||
742 | + window.getComputedStyle = function (el) { | ||
743 | + this.el = el; | ||
744 | + this.getPropertyValue = function (prop) { | ||
745 | + var re = /(-([a-z]))/g; | ||
746 | + if (prop === 'float') { | ||
747 | + prop = 'styleFloat'; | ||
748 | + } | ||
749 | + if (re.test(prop)) { | ||
750 | + prop = prop.replace(re, function (a, b, c) { | ||
751 | + return c.toUpperCase(); | ||
752 | + }); | ||
753 | + } | ||
754 | + return el.currentStyle[prop] || null; | ||
755 | + }; | ||
756 | + return this; | ||
757 | + }; | ||
758 | + } | ||
759 | + if (!Array.prototype.indexOf) { | ||
760 | + Array.prototype.indexOf = function (obj, start) { | ||
761 | + var i, j; | ||
762 | + for (i = (start || 0), j = this.length; i < j; i += 1) { | ||
763 | + if (this[i] === obj) { return i; } | ||
764 | + } | ||
765 | + return -1; | ||
766 | + }; | ||
767 | + } | ||
768 | + | ||
769 | + Date.prototype.countDaysInMonth = function () { | ||
770 | + return new Date(this.getFullYear(), this.getMonth() + 1, 0).getDate(); | ||
771 | + }; | ||
772 | + | ||
773 | + $.fn.xdsoftScroller = function (options, percent) { | ||
774 | + return this.each(function () { | ||
775 | + var timeboxparent = $(this), | ||
776 | + pointerEventToXY = function (e) { | ||
777 | + var out = {x: 0, y: 0}, | ||
778 | + touch; | ||
779 | + if (e.type === 'touchstart' || e.type === 'touchmove' || e.type === 'touchend' || e.type === 'touchcancel') { | ||
780 | + touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0]; | ||
781 | + out.x = touch.clientX; | ||
782 | + out.y = touch.clientY; | ||
783 | + } else if (e.type === 'mousedown' || e.type === 'mouseup' || e.type === 'mousemove' || e.type === 'mouseover' || e.type === 'mouseout' || e.type === 'mouseenter' || e.type === 'mouseleave') { | ||
784 | + out.x = e.clientX; | ||
785 | + out.y = e.clientY; | ||
786 | + } | ||
787 | + return out; | ||
788 | + }, | ||
789 | + timebox, | ||
790 | + parentHeight, | ||
791 | + height, | ||
792 | + scrollbar, | ||
793 | + scroller, | ||
794 | + maximumOffset = 100, | ||
795 | + start = false, | ||
796 | + startY = 0, | ||
797 | + startTop = 0, | ||
798 | + h1 = 0, | ||
799 | + touchStart = false, | ||
800 | + startTopScroll = 0, | ||
801 | + calcOffset = function () {}; | ||
802 | + | ||
803 | + if (percent === 'hide') { | ||
804 | + timeboxparent.find('.xdsoft_scrollbar').hide(); | ||
805 | + return; | ||
806 | + } | ||
807 | + | ||
808 | + if (!$(this).hasClass('xdsoft_scroller_box')) { | ||
809 | + timebox = timeboxparent.children().eq(0); | ||
810 | + parentHeight = timeboxparent[0].clientHeight; | ||
811 | + height = timebox[0].offsetHeight; | ||
812 | + scrollbar = $('<div class="xdsoft_scrollbar"></div>'); | ||
813 | + scroller = $('<div class="xdsoft_scroller"></div>'); | ||
814 | + scrollbar.append(scroller); | ||
815 | + | ||
816 | + timeboxparent.addClass('xdsoft_scroller_box').append(scrollbar); | ||
817 | + calcOffset = function calcOffset(event) { | ||
818 | + var offset = pointerEventToXY(event).y - startY + startTopScroll; | ||
819 | + if (offset < 0) { | ||
820 | + offset = 0; | ||
821 | + } | ||
822 | + if (offset + scroller[0].offsetHeight > h1) { | ||
823 | + offset = h1 - scroller[0].offsetHeight; | ||
824 | + } | ||
825 | + timeboxparent.trigger('scroll_element.xdsoft_scroller', [maximumOffset ? offset / maximumOffset : 0]); | ||
826 | + }; | ||
827 | + | ||
828 | + scroller | ||
829 | + .on('touchstart.xdsoft_scroller mousedown.xdsoft_scroller', function (event) { | ||
830 | + if (!parentHeight) { | ||
831 | + timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percent]); | ||
832 | + } | ||
833 | + | ||
834 | + startY = pointerEventToXY(event).y; | ||
835 | + startTopScroll = parseInt(scroller.css('margin-top'), 10); | ||
836 | + h1 = scrollbar[0].offsetHeight; | ||
837 | + | ||
838 | + if (event.type === 'mousedown' || event.type === 'touchstart') { | ||
839 | + if (options.ownerDocument) { | ||
840 | + $(options.ownerDocument.body).addClass('xdsoft_noselect'); | ||
841 | + } | ||
842 | + $([options.ownerDocument.body, options.contentWindow]).on('touchend mouseup.xdsoft_scroller', function arguments_callee() { | ||
843 | + $([options.ownerDocument.body, options.contentWindow]).off('touchend mouseup.xdsoft_scroller', arguments_callee) | ||
844 | + .off('mousemove.xdsoft_scroller', calcOffset) | ||
845 | + .removeClass('xdsoft_noselect'); | ||
846 | + }); | ||
847 | + $(options.ownerDocument.body).on('mousemove.xdsoft_scroller', calcOffset); | ||
848 | + } else { | ||
849 | + touchStart = true; | ||
850 | + event.stopPropagation(); | ||
851 | + event.preventDefault(); | ||
852 | + } | ||
853 | + }) | ||
854 | + .on('touchmove', function (event) { | ||
855 | + if (touchStart) { | ||
856 | + event.preventDefault(); | ||
857 | + calcOffset(event); | ||
858 | + } | ||
859 | + }) | ||
860 | + .on('touchend touchcancel', function () { | ||
861 | + touchStart = false; | ||
862 | + startTopScroll = 0; | ||
863 | + }); | ||
864 | + | ||
865 | + timeboxparent | ||
866 | + .on('scroll_element.xdsoft_scroller', function (event, percentage) { | ||
867 | + if (!parentHeight) { | ||
868 | + timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percentage, true]); | ||
869 | + } | ||
870 | + percentage = percentage > 1 ? 1 : (percentage < 0 || isNaN(percentage)) ? 0 : percentage; | ||
871 | + | ||
872 | + scroller.css('margin-top', maximumOffset * percentage); | ||
873 | + | ||
874 | + setTimeout(function () { | ||
875 | + timebox.css('marginTop', -parseInt((timebox[0].offsetHeight - parentHeight) * percentage, 10)); | ||
876 | + }, 10); | ||
877 | + }) | ||
878 | + .on('resize_scroll.xdsoft_scroller', function (event, percentage, noTriggerScroll) { | ||
879 | + var percent, sh; | ||
880 | + parentHeight = timeboxparent[0].clientHeight; | ||
881 | + height = timebox[0].offsetHeight; | ||
882 | + percent = parentHeight / height; | ||
883 | + sh = percent * scrollbar[0].offsetHeight; | ||
884 | + if (percent > 1) { | ||
885 | + scroller.hide(); | ||
886 | + } else { | ||
887 | + scroller.show(); | ||
888 | + scroller.css('height', parseInt(sh > 10 ? sh : 10, 10)); | ||
889 | + maximumOffset = scrollbar[0].offsetHeight - scroller[0].offsetHeight; | ||
890 | + if (noTriggerScroll !== true) { | ||
891 | + timeboxparent.trigger('scroll_element.xdsoft_scroller', [percentage || Math.abs(parseInt(timebox.css('marginTop'), 10)) / (height - parentHeight)]); | ||
892 | + } | ||
893 | + } | ||
894 | + }); | ||
895 | + | ||
896 | + timeboxparent.on('mousewheel', function (event) { | ||
897 | + var top = Math.abs(parseInt(timebox.css('marginTop'), 10)); | ||
898 | + | ||
899 | + top = top - (event.deltaY * 20); | ||
900 | + if (top < 0) { | ||
901 | + top = 0; | ||
902 | + } | ||
903 | + | ||
904 | + timeboxparent.trigger('scroll_element.xdsoft_scroller', [top / (height - parentHeight)]); | ||
905 | + event.stopPropagation(); | ||
906 | + return false; | ||
907 | + }); | ||
908 | + | ||
909 | + timeboxparent.on('touchstart', function (event) { | ||
910 | + start = pointerEventToXY(event); | ||
911 | + startTop = Math.abs(parseInt(timebox.css('marginTop'), 10)); | ||
912 | + }); | ||
913 | + | ||
914 | + timeboxparent.on('touchmove', function (event) { | ||
915 | + if (start) { | ||
916 | + event.preventDefault(); | ||
917 | + var coord = pointerEventToXY(event); | ||
918 | + timeboxparent.trigger('scroll_element.xdsoft_scroller', [(startTop - (coord.y - start.y)) / (height - parentHeight)]); | ||
919 | + } | ||
920 | + }); | ||
921 | + | ||
922 | + timeboxparent.on('touchend touchcancel', function () { | ||
923 | + start = false; | ||
924 | + startTop = 0; | ||
925 | + }); | ||
926 | + } | ||
927 | + timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percent]); | ||
928 | + }); | ||
929 | + }; | ||
930 | + | ||
931 | + $.fn.datetimepicker = function (opt, opt2) { | ||
932 | + var result = this, | ||
933 | + KEY0 = 48, | ||
934 | + KEY9 = 57, | ||
935 | + _KEY0 = 96, | ||
936 | + _KEY9 = 105, | ||
937 | + CTRLKEY = 17, | ||
938 | + DEL = 46, | ||
939 | + ENTER = 13, | ||
940 | + ESC = 27, | ||
941 | + BACKSPACE = 8, | ||
942 | + ARROWLEFT = 37, | ||
943 | + ARROWUP = 38, | ||
944 | + ARROWRIGHT = 39, | ||
945 | + ARROWDOWN = 40, | ||
946 | + TAB = 9, | ||
947 | + F5 = 116, | ||
948 | + AKEY = 65, | ||
949 | + CKEY = 67, | ||
950 | + VKEY = 86, | ||
951 | + ZKEY = 90, | ||
952 | + YKEY = 89, | ||
953 | + ctrlDown = false, | ||
954 | + options = ($.isPlainObject(opt) || !opt) ? $.extend(true, {}, default_options, opt) : $.extend(true, {}, default_options), | ||
955 | + | ||
956 | + lazyInitTimer = 0, | ||
957 | + createDateTimePicker, | ||
958 | + destroyDateTimePicker, | ||
959 | + | ||
960 | + lazyInit = function (input) { | ||
961 | + input | ||
962 | + .on('open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart', function initOnActionCallback() { | ||
963 | + if (input.is(':disabled') || input.data('xdsoft_datetimepicker')) { | ||
964 | + return; | ||
965 | + } | ||
966 | + clearTimeout(lazyInitTimer); | ||
967 | + lazyInitTimer = setTimeout(function () { | ||
968 | + | ||
969 | + if (!input.data('xdsoft_datetimepicker')) { | ||
970 | + createDateTimePicker(input); | ||
971 | + } | ||
972 | + input | ||
973 | + .off('open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart', initOnActionCallback) | ||
974 | + .trigger('open.xdsoft'); | ||
975 | + }, 100); | ||
976 | + }); | ||
977 | + }; | ||
978 | + | ||
979 | + createDateTimePicker = function (input) { | ||
980 | + var datetimepicker = $('<div class="xdsoft_datetimepicker xdsoft_noselect"></div>'), | ||
981 | + xdsoft_copyright = $('<div class="xdsoft_copyright"><a target="_blank" href="http://xdsoft.net/jqplugins/datetimepicker/">xdsoft.net</a></div>'), | ||
982 | + datepicker = $('<div class="xdsoft_datepicker active"></div>'), | ||
983 | + month_picker = $('<div class="xdsoft_monthpicker"><button type="button" class="xdsoft_prev"></button><button type="button" class="xdsoft_today_button"></button>' + | ||
984 | + '<div class="xdsoft_label xdsoft_month"><span></span><i></i></div>' + | ||
985 | + '<div class="xdsoft_label xdsoft_year"><span></span><i></i></div>' + | ||
986 | + '<button type="button" class="xdsoft_next"></button></div>'), | ||
987 | + calendar = $('<div class="xdsoft_calendar"></div>'), | ||
988 | + timepicker = $('<div class="xdsoft_timepicker active"><button type="button" class="xdsoft_prev"></button><div class="xdsoft_time_box"></div><button type="button" class="xdsoft_next"></button></div>'), | ||
989 | + timeboxparent = timepicker.find('.xdsoft_time_box').eq(0), | ||
990 | + timebox = $('<div class="xdsoft_time_variant"></div>'), | ||
991 | + applyButton = $('<button type="button" class="xdsoft_save_selected blue-gradient-button">Save Selected</button>'), | ||
992 | + | ||
993 | + monthselect = $('<div class="xdsoft_select xdsoft_monthselect"><div></div></div>'), | ||
994 | + yearselect = $('<div class="xdsoft_select xdsoft_yearselect"><div></div></div>'), | ||
995 | + triggerAfterOpen = false, | ||
996 | + XDSoft_datetime, | ||
997 | + | ||
998 | + xchangeTimer, | ||
999 | + timerclick, | ||
1000 | + current_time_index, | ||
1001 | + setPos, | ||
1002 | + timer = 0, | ||
1003 | + _xdsoft_datetime, | ||
1004 | + forEachAncestorOf; | ||
1005 | + | ||
1006 | + if (options.id) { | ||
1007 | + datetimepicker.attr('id', options.id); | ||
1008 | + } | ||
1009 | + if (options.style) { | ||
1010 | + datetimepicker.attr('style', options.style); | ||
1011 | + } | ||
1012 | + if (options.weeks) { | ||
1013 | + datetimepicker.addClass('xdsoft_showweeks'); | ||
1014 | + } | ||
1015 | + if (options.rtl) { | ||
1016 | + datetimepicker.addClass('xdsoft_rtl'); | ||
1017 | + } | ||
1018 | + | ||
1019 | + datetimepicker.addClass('xdsoft_' + options.theme); | ||
1020 | + datetimepicker.addClass(options.className); | ||
1021 | + | ||
1022 | + month_picker | ||
1023 | + .find('.xdsoft_month span') | ||
1024 | + .after(monthselect); | ||
1025 | + month_picker | ||
1026 | + .find('.xdsoft_year span') | ||
1027 | + .after(yearselect); | ||
1028 | + | ||
1029 | + month_picker | ||
1030 | + .find('.xdsoft_month,.xdsoft_year') | ||
1031 | + .on('touchstart mousedown.xdsoft', function (event) { | ||
1032 | + var select = $(this).find('.xdsoft_select').eq(0), | ||
1033 | + val = 0, | ||
1034 | + top = 0, | ||
1035 | + visible = select.is(':visible'), | ||
1036 | + items, | ||
1037 | + i; | ||
1038 | + | ||
1039 | + month_picker | ||
1040 | + .find('.xdsoft_select') | ||
1041 | + .hide(); | ||
1042 | + if (_xdsoft_datetime.currentTime) { | ||
1043 | + val = _xdsoft_datetime.currentTime[$(this).hasClass('xdsoft_month') ? 'getMonth' : 'getFullYear'](); | ||
1044 | + } | ||
1045 | + | ||
1046 | + select[visible ? 'hide' : 'show'](); | ||
1047 | + for (items = select.find('div.xdsoft_option'), i = 0; i < items.length; i += 1) { | ||
1048 | + if (items.eq(i).data('value') === val) { | ||
1049 | + break; | ||
1050 | + } else { | ||
1051 | + top += items[0].offsetHeight; | ||
1052 | + } | ||
1053 | + } | ||
1054 | + | ||
1055 | + select.xdsoftScroller(options, top / (select.children()[0].offsetHeight - (select[0].clientHeight))); | ||
1056 | + event.stopPropagation(); | ||
1057 | + return false; | ||
1058 | + }); | ||
1059 | + | ||
1060 | + var handleTouchMoved = function (event) { | ||
1061 | + var evt = event.originalEvent; | ||
1062 | + var touchPosition = evt.touches ? evt.touches[0] : evt; | ||
1063 | + this.touchStartPosition = this.touchStartPosition || touchPosition; | ||
1064 | + var xMovement = Math.abs(this.touchStartPosition.clientX - touchPosition.clientX); | ||
1065 | + var yMovement = Math.abs(this.touchStartPosition.clientY - touchPosition.clientY); | ||
1066 | + var distance = Math.sqrt(xMovement * xMovement + yMovement * yMovement); | ||
1067 | + if(distance > options.touchMovedThreshold) { | ||
1068 | + this.touchMoved = true; | ||
1069 | + } | ||
1070 | + } | ||
1071 | + | ||
1072 | + month_picker | ||
1073 | + .find('.xdsoft_select') | ||
1074 | + .xdsoftScroller(options) | ||
1075 | + .on('touchstart mousedown.xdsoft', function (event) { | ||
1076 | + var evt = event.originalEvent; | ||
1077 | + this.touchMoved = false; | ||
1078 | + this.touchStartPosition = evt.touches ? evt.touches[0] : evt; | ||
1079 | + event.stopPropagation(); | ||
1080 | + event.preventDefault(); | ||
1081 | + }) | ||
1082 | + .on('touchmove', '.xdsoft_option', handleTouchMoved) | ||
1083 | + .on('touchend mousedown.xdsoft', '.xdsoft_option', function () { | ||
1084 | + if (!this.touchMoved) { | ||
1085 | + if (_xdsoft_datetime.currentTime === undefined || _xdsoft_datetime.currentTime === null) { | ||
1086 | + _xdsoft_datetime.currentTime = _xdsoft_datetime.now(); | ||
1087 | + } | ||
1088 | + | ||
1089 | + var year = _xdsoft_datetime.currentTime.getFullYear(); | ||
1090 | + if (_xdsoft_datetime && _xdsoft_datetime.currentTime) { | ||
1091 | + _xdsoft_datetime.currentTime[$(this).parent().parent().hasClass('xdsoft_monthselect') ? 'setMonth' : 'setFullYear']($(this).data('value')); | ||
1092 | + } | ||
1093 | + | ||
1094 | + $(this).parent().parent().hide(); | ||
1095 | + | ||
1096 | + datetimepicker.trigger('xchange.xdsoft'); | ||
1097 | + if (options.onChangeMonth && $.isFunction(options.onChangeMonth)) { | ||
1098 | + options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input')); | ||
1099 | + } | ||
1100 | + | ||
1101 | + if (year !== _xdsoft_datetime.currentTime.getFullYear() && $.isFunction(options.onChangeYear)) { | ||
1102 | + options.onChangeYear.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input')); | ||
1103 | + } | ||
1104 | + } | ||
1105 | + }); | ||
1106 | + | ||
1107 | + datetimepicker.getValue = function () { | ||
1108 | + return _xdsoft_datetime.getCurrentTime(); | ||
1109 | + }; | ||
1110 | + | ||
1111 | + datetimepicker.setOptions = function (_options) { | ||
1112 | + var highlightedDates = {}; | ||
1113 | + | ||
1114 | + options = $.extend(true, {}, options, _options); | ||
1115 | + | ||
1116 | + if (_options.allowTimes && $.isArray(_options.allowTimes) && _options.allowTimes.length) { | ||
1117 | + options.allowTimes = $.extend(true, [], _options.allowTimes); | ||
1118 | + } | ||
1119 | + | ||
1120 | + if (_options.weekends && $.isArray(_options.weekends) && _options.weekends.length) { | ||
1121 | + options.weekends = $.extend(true, [], _options.weekends); | ||
1122 | + } | ||
1123 | + | ||
1124 | + if (_options.allowDates && $.isArray(_options.allowDates) && _options.allowDates.length) { | ||
1125 | + options.allowDates = $.extend(true, [], _options.allowDates); | ||
1126 | + } | ||
1127 | + | ||
1128 | + if (_options.allowDateRe && Object.prototype.toString.call(_options.allowDateRe)==="[object String]") { | ||
1129 | + options.allowDateRe = new RegExp(_options.allowDateRe); | ||
1130 | + } | ||
1131 | + | ||
1132 | + if (_options.highlightedDates && $.isArray(_options.highlightedDates) && _options.highlightedDates.length) { | ||
1133 | + $.each(_options.highlightedDates, function (index, value) { | ||
1134 | + var splitData = $.map(value.split(','), $.trim), | ||
1135 | + exDesc, | ||
1136 | + hDate = new HighlightedDate(dateHelper.parseDate(splitData[0], options.formatDate), splitData[1], splitData[2]), // date, desc, style | ||
1137 | + keyDate = dateHelper.formatDate(hDate.date, options.formatDate); | ||
1138 | + if (highlightedDates[keyDate] !== undefined) { | ||
1139 | + exDesc = highlightedDates[keyDate].desc; | ||
1140 | + if (exDesc && exDesc.length && hDate.desc && hDate.desc.length) { | ||
1141 | + highlightedDates[keyDate].desc = exDesc + "\n" + hDate.desc; | ||
1142 | + } | ||
1143 | + } else { | ||
1144 | + highlightedDates[keyDate] = hDate; | ||
1145 | + } | ||
1146 | + }); | ||
1147 | + | ||
1148 | + options.highlightedDates = $.extend(true, [], highlightedDates); | ||
1149 | + } | ||
1150 | + | ||
1151 | + if (_options.highlightedPeriods && $.isArray(_options.highlightedPeriods) && _options.highlightedPeriods.length) { | ||
1152 | + highlightedDates = $.extend(true, [], options.highlightedDates); | ||
1153 | + $.each(_options.highlightedPeriods, function (index, value) { | ||
1154 | + var dateTest, // start date | ||
1155 | + dateEnd, | ||
1156 | + desc, | ||
1157 | + hDate, | ||
1158 | + keyDate, | ||
1159 | + exDesc, | ||
1160 | + style; | ||
1161 | + if ($.isArray(value)) { | ||
1162 | + dateTest = value[0]; | ||
1163 | + dateEnd = value[1]; | ||
1164 | + desc = value[2]; | ||
1165 | + style = value[3]; | ||
1166 | + } | ||
1167 | + else { | ||
1168 | + var splitData = $.map(value.split(','), $.trim); | ||
1169 | + dateTest = dateHelper.parseDate(splitData[0], options.formatDate); | ||
1170 | + dateEnd = dateHelper.parseDate(splitData[1], options.formatDate); | ||
1171 | + desc = splitData[2]; | ||
1172 | + style = splitData[3]; | ||
1173 | + } | ||
1174 | + | ||
1175 | + while (dateTest <= dateEnd) { | ||
1176 | + hDate = new HighlightedDate(dateTest, desc, style); | ||
1177 | + keyDate = dateHelper.formatDate(dateTest, options.formatDate); | ||
1178 | + dateTest.setDate(dateTest.getDate() + 1); | ||
1179 | + if (highlightedDates[keyDate] !== undefined) { | ||
1180 | + exDesc = highlightedDates[keyDate].desc; | ||
1181 | + if (exDesc && exDesc.length && hDate.desc && hDate.desc.length) { | ||
1182 | + highlightedDates[keyDate].desc = exDesc + "\n" + hDate.desc; | ||
1183 | + } | ||
1184 | + } else { | ||
1185 | + highlightedDates[keyDate] = hDate; | ||
1186 | + } | ||
1187 | + } | ||
1188 | + }); | ||
1189 | + | ||
1190 | + options.highlightedDates = $.extend(true, [], highlightedDates); | ||
1191 | + } | ||
1192 | + | ||
1193 | + if (_options.disabledDates && $.isArray(_options.disabledDates) && _options.disabledDates.length) { | ||
1194 | + options.disabledDates = $.extend(true, [], _options.disabledDates); | ||
1195 | + } | ||
1196 | + | ||
1197 | + if (_options.disabledWeekDays && $.isArray(_options.disabledWeekDays) && _options.disabledWeekDays.length) { | ||
1198 | + options.disabledWeekDays = $.extend(true, [], _options.disabledWeekDays); | ||
1199 | + } | ||
1200 | + | ||
1201 | + if ((options.open || options.opened) && (!options.inline)) { | ||
1202 | + input.trigger('open.xdsoft'); | ||
1203 | + } | ||
1204 | + | ||
1205 | + if (options.inline) { | ||
1206 | + triggerAfterOpen = true; | ||
1207 | + datetimepicker.addClass('xdsoft_inline'); | ||
1208 | + input.after(datetimepicker).hide(); | ||
1209 | + } | ||
1210 | + | ||
1211 | + if (options.inverseButton) { | ||
1212 | + options.next = 'xdsoft_prev'; | ||
1213 | + options.prev = 'xdsoft_next'; | ||
1214 | + } | ||
1215 | + | ||
1216 | + if (options.datepicker) { | ||
1217 | + datepicker.addClass('active'); | ||
1218 | + } else { | ||
1219 | + datepicker.removeClass('active'); | ||
1220 | + } | ||
1221 | + | ||
1222 | + if (options.timepicker) { | ||
1223 | + timepicker.addClass('active'); | ||
1224 | + } else { | ||
1225 | + timepicker.removeClass('active'); | ||
1226 | + } | ||
1227 | + | ||
1228 | + if (options.value) { | ||
1229 | + _xdsoft_datetime.setCurrentTime(options.value); | ||
1230 | + if (input && input.val) { | ||
1231 | + input.val(_xdsoft_datetime.str); | ||
1232 | + } | ||
1233 | + } | ||
1234 | + | ||
1235 | + if (isNaN(options.dayOfWeekStart)) { | ||
1236 | + options.dayOfWeekStart = 0; | ||
1237 | + } else { | ||
1238 | + options.dayOfWeekStart = parseInt(options.dayOfWeekStart, 10) % 7; | ||
1239 | + } | ||
1240 | + | ||
1241 | + if (!options.timepickerScrollbar) { | ||
1242 | + timeboxparent.xdsoftScroller(options, 'hide'); | ||
1243 | + } | ||
1244 | + | ||
1245 | + if (options.minDate && /^[\+\-](.*)$/.test(options.minDate)) { | ||
1246 | + options.minDate = dateHelper.formatDate(_xdsoft_datetime.strToDateTime(options.minDate), options.formatDate); | ||
1247 | + } | ||
1248 | + | ||
1249 | + if (options.maxDate && /^[\+\-](.*)$/.test(options.maxDate)) { | ||
1250 | + options.maxDate = dateHelper.formatDate(_xdsoft_datetime.strToDateTime(options.maxDate), options.formatDate); | ||
1251 | + } | ||
1252 | + | ||
1253 | + if (options.minDateTime && /^\+(.*)$/.test(options.minDateTime)) { | ||
1254 | + options.minDateTime = _xdsoft_datetime.strToDateTime(options.minDateTime).dateFormat(options.formatDate); | ||
1255 | + } | ||
1256 | + | ||
1257 | + if (options.maxDateTime && /^\+(.*)$/.test(options.maxDateTime)) { | ||
1258 | + options.maxDateTime = _xdsoft_datetime.strToDateTime(options.maxDateTime).dateFormat(options.formatDate); | ||
1259 | + } | ||
1260 | + | ||
1261 | + applyButton.toggle(options.showApplyButton); | ||
1262 | + | ||
1263 | + month_picker | ||
1264 | + .find('.xdsoft_today_button') | ||
1265 | + .css('visibility', !options.todayButton ? 'hidden' : 'visible'); | ||
1266 | + | ||
1267 | + month_picker | ||
1268 | + .find('.' + options.prev) | ||
1269 | + .css('visibility', !options.prevButton ? 'hidden' : 'visible'); | ||
1270 | + | ||
1271 | + month_picker | ||
1272 | + .find('.' + options.next) | ||
1273 | + .css('visibility', !options.nextButton ? 'hidden' : 'visible'); | ||
1274 | + | ||
1275 | + setMask(options); | ||
1276 | + | ||
1277 | + if (options.validateOnBlur) { | ||
1278 | + input | ||
1279 | + .off('blur.xdsoft') | ||
1280 | + .on('blur.xdsoft', function () { | ||
1281 | + if (options.allowBlank && (!$.trim($(this).val()).length || | ||
1282 | + (typeof options.mask === "string" && $.trim($(this).val()) === options.mask.replace(/[0-9]/g, '_')))) { | ||
1283 | + $(this).val(null); | ||
1284 | + datetimepicker.data('xdsoft_datetime').empty(); | ||
1285 | + } else { | ||
1286 | + var d = dateHelper.parseDate($(this).val(), options.format); | ||
1287 | + if (d) { // parseDate() may skip some invalid parts like date or time, so make it clear for user: show parsed date/time | ||
1288 | + $(this).val(dateHelper.formatDate(d, options.format)); | ||
1289 | + } else { | ||
1290 | + var splittedHours = +([$(this).val()[0], $(this).val()[1]].join('')), | ||
1291 | + splittedMinutes = +([$(this).val()[2], $(this).val()[3]].join('')); | ||
1292 | + | ||
1293 | + // parse the numbers as 0312 => 03:12 | ||
1294 | + if (!options.datepicker && options.timepicker && splittedHours >= 0 && splittedHours < 24 && splittedMinutes >= 0 && splittedMinutes < 60) { | ||
1295 | + $(this).val([splittedHours, splittedMinutes].map(function (item) { | ||
1296 | + return item > 9 ? item : '0' + item; | ||
1297 | + }).join(':')); | ||
1298 | + } else { | ||
1299 | + $(this).val(dateHelper.formatDate(_xdsoft_datetime.now(), options.format)); | ||
1300 | + } | ||
1301 | + } | ||
1302 | + datetimepicker.data('xdsoft_datetime').setCurrentTime($(this).val()); | ||
1303 | + } | ||
1304 | + | ||
1305 | + datetimepicker.trigger('changedatetime.xdsoft'); | ||
1306 | + datetimepicker.trigger('close.xdsoft'); | ||
1307 | + }); | ||
1308 | + } | ||
1309 | + options.dayOfWeekStartPrev = (options.dayOfWeekStart === 0) ? 6 : options.dayOfWeekStart - 1; | ||
1310 | + | ||
1311 | + datetimepicker | ||
1312 | + .trigger('xchange.xdsoft') | ||
1313 | + .trigger('afterOpen.xdsoft'); | ||
1314 | + }; | ||
1315 | + | ||
1316 | + datetimepicker | ||
1317 | + .data('options', options) | ||
1318 | + .on('touchstart mousedown.xdsoft', function (event) { | ||
1319 | + event.stopPropagation(); | ||
1320 | + event.preventDefault(); | ||
1321 | + yearselect.hide(); | ||
1322 | + monthselect.hide(); | ||
1323 | + return false; | ||
1324 | + }); | ||
1325 | + | ||
1326 | + //scroll_element = timepicker.find('.xdsoft_time_box'); | ||
1327 | + timeboxparent.append(timebox); | ||
1328 | + timeboxparent.xdsoftScroller(options); | ||
1329 | + | ||
1330 | + datetimepicker.on('afterOpen.xdsoft', function () { | ||
1331 | + timeboxparent.xdsoftScroller(options); | ||
1332 | + }); | ||
1333 | + | ||
1334 | + datetimepicker | ||
1335 | + .append(datepicker) | ||
1336 | + .append(timepicker); | ||
1337 | + | ||
1338 | + if (options.withoutCopyright !== true) { | ||
1339 | + datetimepicker | ||
1340 | + .append(xdsoft_copyright); | ||
1341 | + } | ||
1342 | + | ||
1343 | + datepicker | ||
1344 | + .append(month_picker) | ||
1345 | + .append(calendar) | ||
1346 | + .append(applyButton); | ||
1347 | + | ||
1348 | + $(options.parentID) | ||
1349 | + .append(datetimepicker); | ||
1350 | + | ||
1351 | + XDSoft_datetime = function () { | ||
1352 | + var _this = this; | ||
1353 | + _this.now = function (norecursion) { | ||
1354 | + var d = new Date(), | ||
1355 | + date, | ||
1356 | + time; | ||
1357 | + | ||
1358 | + if (!norecursion && options.defaultDate) { | ||
1359 | + date = _this.strToDateTime(options.defaultDate); | ||
1360 | + d.setFullYear(date.getFullYear()); | ||
1361 | + d.setMonth(date.getMonth()); | ||
1362 | + d.setDate(date.getDate()); | ||
1363 | + } | ||
1364 | + | ||
1365 | + d.setFullYear(d.getFullYear()); | ||
1366 | + | ||
1367 | + if (!norecursion && options.defaultTime) { | ||
1368 | + time = _this.strtotime(options.defaultTime); | ||
1369 | + d.setHours(time.getHours()); | ||
1370 | + d.setMinutes(time.getMinutes()); | ||
1371 | + d.setSeconds(time.getSeconds()); | ||
1372 | + d.setMilliseconds(time.getMilliseconds()); | ||
1373 | + } | ||
1374 | + return d; | ||
1375 | + }; | ||
1376 | + | ||
1377 | + _this.isValidDate = function (d) { | ||
1378 | + if (Object.prototype.toString.call(d) !== "[object Date]") { | ||
1379 | + return false; | ||
1380 | + } | ||
1381 | + return !isNaN(d.getTime()); | ||
1382 | + }; | ||
1383 | + | ||
1384 | + _this.setCurrentTime = function (dTime, requireValidDate) { | ||
1385 | + if (typeof dTime === 'string') { | ||
1386 | + _this.currentTime = _this.strToDateTime(dTime); | ||
1387 | + } | ||
1388 | + else if (_this.isValidDate(dTime)) { | ||
1389 | + _this.currentTime = dTime; | ||
1390 | + } | ||
1391 | + else if (!dTime && !requireValidDate && options.allowBlank && !options.inline) { | ||
1392 | + _this.currentTime = null; | ||
1393 | + } | ||
1394 | + else { | ||
1395 | + _this.currentTime = _this.now(); | ||
1396 | + } | ||
1397 | + | ||
1398 | + datetimepicker.trigger('xchange.xdsoft'); | ||
1399 | + }; | ||
1400 | + | ||
1401 | + _this.empty = function () { | ||
1402 | + _this.currentTime = null; | ||
1403 | + }; | ||
1404 | + | ||
1405 | + _this.getCurrentTime = function () { | ||
1406 | + return _this.currentTime; | ||
1407 | + }; | ||
1408 | + | ||
1409 | + _this.nextMonth = function () { | ||
1410 | + | ||
1411 | + if (_this.currentTime === undefined || _this.currentTime === null) { | ||
1412 | + _this.currentTime = _this.now(); | ||
1413 | + } | ||
1414 | + | ||
1415 | + var month = _this.currentTime.getMonth() + 1, | ||
1416 | + year; | ||
1417 | + if (month === 12) { | ||
1418 | + _this.currentTime.setFullYear(_this.currentTime.getFullYear() + 1); | ||
1419 | + month = 0; | ||
1420 | + } | ||
1421 | + | ||
1422 | + year = _this.currentTime.getFullYear(); | ||
1423 | + | ||
1424 | + _this.currentTime.setDate( | ||
1425 | + Math.min( | ||
1426 | + new Date(_this.currentTime.getFullYear(), month + 1, 0).getDate(), | ||
1427 | + _this.currentTime.getDate() | ||
1428 | + ) | ||
1429 | + ); | ||
1430 | + _this.currentTime.setMonth(month); | ||
1431 | + | ||
1432 | + if (options.onChangeMonth && $.isFunction(options.onChangeMonth)) { | ||
1433 | + options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input')); | ||
1434 | + } | ||
1435 | + | ||
1436 | + if (year !== _this.currentTime.getFullYear() && $.isFunction(options.onChangeYear)) { | ||
1437 | + options.onChangeYear.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input')); | ||
1438 | + } | ||
1439 | + | ||
1440 | + datetimepicker.trigger('xchange.xdsoft'); | ||
1441 | + return month; | ||
1442 | + }; | ||
1443 | + | ||
1444 | + _this.prevMonth = function () { | ||
1445 | + | ||
1446 | + if (_this.currentTime === undefined || _this.currentTime === null) { | ||
1447 | + _this.currentTime = _this.now(); | ||
1448 | + } | ||
1449 | + | ||
1450 | + var month = _this.currentTime.getMonth() - 1; | ||
1451 | + if (month === -1) { | ||
1452 | + _this.currentTime.setFullYear(_this.currentTime.getFullYear() - 1); | ||
1453 | + month = 11; | ||
1454 | + } | ||
1455 | + _this.currentTime.setDate( | ||
1456 | + Math.min( | ||
1457 | + new Date(_this.currentTime.getFullYear(), month + 1, 0).getDate(), | ||
1458 | + _this.currentTime.getDate() | ||
1459 | + ) | ||
1460 | + ); | ||
1461 | + _this.currentTime.setMonth(month); | ||
1462 | + if (options.onChangeMonth && $.isFunction(options.onChangeMonth)) { | ||
1463 | + options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input')); | ||
1464 | + } | ||
1465 | + datetimepicker.trigger('xchange.xdsoft'); | ||
1466 | + return month; | ||
1467 | + }; | ||
1468 | + | ||
1469 | + _this.getWeekOfYear = function (datetime) { | ||
1470 | + if (options.onGetWeekOfYear && $.isFunction(options.onGetWeekOfYear)) { | ||
1471 | + var week = options.onGetWeekOfYear.call(datetimepicker, datetime); | ||
1472 | + if (typeof week !== 'undefined') { | ||
1473 | + return week; | ||
1474 | + } | ||
1475 | + } | ||
1476 | + var onejan = new Date(datetime.getFullYear(), 0, 1); | ||
1477 | + | ||
1478 | + //First week of the year is th one with the first Thursday according to ISO8601 | ||
1479 | + if (onejan.getDay() !== 4) { | ||
1480 | + onejan.setMonth(0, 1 + ((4 - onejan.getDay()+ 7) % 7)); | ||
1481 | + } | ||
1482 | + | ||
1483 | + return Math.ceil((((datetime - onejan) / 86400000) + onejan.getDay() + 1) / 7); | ||
1484 | + }; | ||
1485 | + | ||
1486 | + _this.strToDateTime = function (sDateTime) { | ||
1487 | + var tmpDate = [], timeOffset, currentTime; | ||
1488 | + | ||
1489 | + if (sDateTime && sDateTime instanceof Date && _this.isValidDate(sDateTime)) { | ||
1490 | + return sDateTime; | ||
1491 | + } | ||
1492 | + | ||
1493 | + tmpDate = /^([+-]{1})(.*)$/.exec(sDateTime); | ||
1494 | + | ||
1495 | + if (tmpDate) { | ||
1496 | + tmpDate[2] = dateHelper.parseDate(tmpDate[2], options.formatDate); | ||
1497 | + } | ||
1498 | + | ||
1499 | + if (tmpDate && tmpDate[2]) { | ||
1500 | + timeOffset = tmpDate[2].getTime() - (tmpDate[2].getTimezoneOffset()) * 60000; | ||
1501 | + currentTime = new Date((_this.now(true)).getTime() + parseInt(tmpDate[1] + '1', 10) * timeOffset); | ||
1502 | + } else { | ||
1503 | + currentTime = sDateTime ? dateHelper.parseDate(sDateTime, options.format) : _this.now(); | ||
1504 | + } | ||
1505 | + | ||
1506 | + if (!_this.isValidDate(currentTime)) { | ||
1507 | + currentTime = _this.now(); | ||
1508 | + } | ||
1509 | + | ||
1510 | + return currentTime; | ||
1511 | + }; | ||
1512 | + | ||
1513 | + _this.strToDate = function (sDate) { | ||
1514 | + if (sDate && sDate instanceof Date && _this.isValidDate(sDate)) { | ||
1515 | + return sDate; | ||
1516 | + } | ||
1517 | + | ||
1518 | + var currentTime = sDate ? dateHelper.parseDate(sDate, options.formatDate) : _this.now(true); | ||
1519 | + if (!_this.isValidDate(currentTime)) { | ||
1520 | + currentTime = _this.now(true); | ||
1521 | + } | ||
1522 | + return currentTime; | ||
1523 | + }; | ||
1524 | + | ||
1525 | + _this.strtotime = function (sTime) { | ||
1526 | + if (sTime && sTime instanceof Date && _this.isValidDate(sTime)) { | ||
1527 | + return sTime; | ||
1528 | + } | ||
1529 | + var currentTime = sTime ? dateHelper.parseDate(sTime, options.formatTime) : _this.now(true); | ||
1530 | + if (!_this.isValidDate(currentTime)) { | ||
1531 | + currentTime = _this.now(true); | ||
1532 | + } | ||
1533 | + return currentTime; | ||
1534 | + }; | ||
1535 | + | ||
1536 | + _this.str = function () { | ||
1537 | + var format = options.format; | ||
1538 | + if (options.yearOffset) { | ||
1539 | + format = format.replace('Y', _this.currentTime.getFullYear() + options.yearOffset); | ||
1540 | + format = format.replace('y', String(_this.currentTime.getFullYear() + options.yearOffset).substring(2, 4)); | ||
1541 | + } | ||
1542 | + return dateHelper.formatDate(_this.currentTime, format); | ||
1543 | + }; | ||
1544 | + _this.currentTime = this.now(); | ||
1545 | + }; | ||
1546 | + | ||
1547 | + _xdsoft_datetime = new XDSoft_datetime(); | ||
1548 | + | ||
1549 | + applyButton.on('touchend click', function (e) {//pathbrite | ||
1550 | + e.preventDefault(); | ||
1551 | + datetimepicker.data('changed', true); | ||
1552 | + _xdsoft_datetime.setCurrentTime(getCurrentValue()); | ||
1553 | + input.val(_xdsoft_datetime.str()); | ||
1554 | + datetimepicker.trigger('close.xdsoft'); | ||
1555 | + }); | ||
1556 | + month_picker | ||
1557 | + .find('.xdsoft_today_button') | ||
1558 | + .on('touchend mousedown.xdsoft', function () { | ||
1559 | + datetimepicker.data('changed', true); | ||
1560 | + _xdsoft_datetime.setCurrentTime(0, true); | ||
1561 | + datetimepicker.trigger('afterOpen.xdsoft'); | ||
1562 | + }).on('dblclick.xdsoft', function () { | ||
1563 | + var currentDate = _xdsoft_datetime.getCurrentTime(), minDate, maxDate; | ||
1564 | + currentDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate()); | ||
1565 | + minDate = _xdsoft_datetime.strToDate(options.minDate); | ||
1566 | + minDate = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate()); | ||
1567 | + if (currentDate < minDate) { | ||
1568 | + return; | ||
1569 | + } | ||
1570 | + maxDate = _xdsoft_datetime.strToDate(options.maxDate); | ||
1571 | + maxDate = new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate()); | ||
1572 | + if (currentDate > maxDate) { | ||
1573 | + return; | ||
1574 | + } | ||
1575 | + input.val(_xdsoft_datetime.str()); | ||
1576 | + input.trigger('change'); | ||
1577 | + datetimepicker.trigger('close.xdsoft'); | ||
1578 | + }); | ||
1579 | + month_picker | ||
1580 | + .find('.xdsoft_prev,.xdsoft_next') | ||
1581 | + .on('touchend mousedown.xdsoft', function () { | ||
1582 | + var $this = $(this), | ||
1583 | + timer = 0, | ||
1584 | + stop = false; | ||
1585 | + | ||
1586 | + (function arguments_callee1(v) { | ||
1587 | + if ($this.hasClass(options.next)) { | ||
1588 | + _xdsoft_datetime.nextMonth(); | ||
1589 | + } else if ($this.hasClass(options.prev)) { | ||
1590 | + _xdsoft_datetime.prevMonth(); | ||
1591 | + } | ||
1592 | + if (options.monthChangeSpinner) { | ||
1593 | + if (!stop) { | ||
1594 | + timer = setTimeout(arguments_callee1, v || 100); | ||
1595 | + } | ||
1596 | + } | ||
1597 | + }(500)); | ||
1598 | + | ||
1599 | + $([options.ownerDocument.body, options.contentWindow]).on('touchend mouseup.xdsoft', function arguments_callee2() { | ||
1600 | + clearTimeout(timer); | ||
1601 | + stop = true; | ||
1602 | + $([options.ownerDocument.body, options.contentWindow]).off('touchend mouseup.xdsoft', arguments_callee2); | ||
1603 | + }); | ||
1604 | + }); | ||
1605 | + | ||
1606 | + timepicker | ||
1607 | + .find('.xdsoft_prev,.xdsoft_next') | ||
1608 | + .on('touchend mousedown.xdsoft', function () { | ||
1609 | + var $this = $(this), | ||
1610 | + timer = 0, | ||
1611 | + stop = false, | ||
1612 | + period = 110; | ||
1613 | + (function arguments_callee4(v) { | ||
1614 | + var pheight = timeboxparent[0].clientHeight, | ||
1615 | + height = timebox[0].offsetHeight, | ||
1616 | + top = Math.abs(parseInt(timebox.css('marginTop'), 10)); | ||
1617 | + if ($this.hasClass(options.next) && (height - pheight) - options.timeHeightInTimePicker >= top) { | ||
1618 | + timebox.css('marginTop', '-' + (top + options.timeHeightInTimePicker) + 'px'); | ||
1619 | + } else if ($this.hasClass(options.prev) && top - options.timeHeightInTimePicker >= 0) { | ||
1620 | + timebox.css('marginTop', '-' + (top - options.timeHeightInTimePicker) + 'px'); | ||
1621 | + } | ||
1622 | + /** | ||
1623 | + * Fixed bug: | ||
1624 | + * When using css3 transition, it will cause a bug that you cannot scroll the timepicker list. | ||
1625 | + * The reason is that the transition-duration time, if you set it to 0, all things fine, otherwise, this | ||
1626 | + * would cause a bug when you use jquery.css method. | ||
1627 | + * Let's say: * { transition: all .5s ease; } | ||
1628 | + * jquery timebox.css('marginTop') will return the original value which is before you clicking the next/prev button, | ||
1629 | + * meanwhile the timebox[0].style.marginTop will return the right value which is after you clicking the | ||
1630 | + * next/prev button. | ||
1631 | + * | ||
1632 | + * What we should do: | ||
1633 | + * Replace timebox.css('marginTop') with timebox[0].style.marginTop. | ||
1634 | + */ | ||
1635 | + timeboxparent.trigger('scroll_element.xdsoft_scroller', [Math.abs(parseInt(timebox[0].style.marginTop, 10) / (height - pheight))]); | ||
1636 | + period = (period > 10) ? 10 : period - 10; | ||
1637 | + if (!stop) { | ||
1638 | + timer = setTimeout(arguments_callee4, v || period); | ||
1639 | + } | ||
1640 | + }(500)); | ||
1641 | + $([options.ownerDocument.body, options.contentWindow]).on('touchend mouseup.xdsoft', function arguments_callee5() { | ||
1642 | + clearTimeout(timer); | ||
1643 | + stop = true; | ||
1644 | + $([options.ownerDocument.body, options.contentWindow]) | ||
1645 | + .off('touchend mouseup.xdsoft', arguments_callee5); | ||
1646 | + }); | ||
1647 | + }); | ||
1648 | + | ||
1649 | + xchangeTimer = 0; | ||
1650 | + // base handler - generating a calendar and timepicker | ||
1651 | + datetimepicker | ||
1652 | + .on('xchange.xdsoft', function (event) { | ||
1653 | + clearTimeout(xchangeTimer); | ||
1654 | + xchangeTimer = setTimeout(function () { | ||
1655 | + | ||
1656 | + if (_xdsoft_datetime.currentTime === undefined || _xdsoft_datetime.currentTime === null) { | ||
1657 | + _xdsoft_datetime.currentTime = _xdsoft_datetime.now(); | ||
1658 | + } | ||
1659 | + | ||
1660 | + var table = '', | ||
1661 | + start = new Date(_xdsoft_datetime.currentTime.getFullYear(), _xdsoft_datetime.currentTime.getMonth(), 1, 12, 0, 0), | ||
1662 | + i = 0, | ||
1663 | + j, | ||
1664 | + today = _xdsoft_datetime.now(), | ||
1665 | + maxDate = false, | ||
1666 | + minDate = false, | ||
1667 | + minDateTime = false, | ||
1668 | + maxDateTime = false, | ||
1669 | + hDate, | ||
1670 | + day, | ||
1671 | + d, | ||
1672 | + y, | ||
1673 | + m, | ||
1674 | + w, | ||
1675 | + classes = [], | ||
1676 | + customDateSettings, | ||
1677 | + newRow = true, | ||
1678 | + time = '', | ||
1679 | + h, | ||
1680 | + line_time, | ||
1681 | + description; | ||
1682 | + | ||
1683 | + while (start.getDay() !== options.dayOfWeekStart) { | ||
1684 | + start.setDate(start.getDate() - 1); | ||
1685 | + } | ||
1686 | + | ||
1687 | + table += '<table><thead><tr>'; | ||
1688 | + | ||
1689 | + if (options.weeks) { | ||
1690 | + table += '<th></th>'; | ||
1691 | + } | ||
1692 | + | ||
1693 | + for (j = 0; j < 7; j += 1) { | ||
1694 | + table += '<th>' + options.i18n[globalLocale].dayOfWeekShort[(j + options.dayOfWeekStart) % 7] + '</th>'; | ||
1695 | + } | ||
1696 | + | ||
1697 | + table += '</tr></thead>'; | ||
1698 | + table += '<tbody>'; | ||
1699 | + | ||
1700 | + if (options.maxDate !== false) { | ||
1701 | + maxDate = _xdsoft_datetime.strToDate(options.maxDate); | ||
1702 | + maxDate = new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate(), 23, 59, 59, 999); | ||
1703 | + } | ||
1704 | + | ||
1705 | + if (options.minDate !== false) { | ||
1706 | + minDate = _xdsoft_datetime.strToDate(options.minDate); | ||
1707 | + minDate = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate()); | ||
1708 | + } | ||
1709 | + | ||
1710 | + if (options.minDateTime !== false) { | ||
1711 | + minDateTime = _xdsoft_datetime.strToDate(options.minDateTime); | ||
1712 | + minDateTime = new Date(minDateTime.getFullYear(), minDateTime.getMonth(), minDateTime.getDate(), minDateTime.getHours(), minDateTime.getMinutes(), minDateTime.getSeconds()); | ||
1713 | + } | ||
1714 | + | ||
1715 | + if (options.maxDateTime !== false) { | ||
1716 | + maxDateTime = _xdsoft_datetime.strToDate(options.maxDateTime); | ||
1717 | + maxDateTime = new Date(maxDateTime.getFullYear(), maxDateTime.getMonth(), maxDateTime.getDate(), maxDateTime.getHours(), maxDateTime.getMinutes(), maxDateTime.getSeconds()); | ||
1718 | + } | ||
1719 | + | ||
1720 | + var maxDateTimeDay; | ||
1721 | + if (maxDateTime !== false) { | ||
1722 | + maxDateTimeDay = ((maxDateTime.getFullYear() * 12) + maxDateTime.getMonth()) * 31 + maxDateTime.getDate(); | ||
1723 | + } | ||
1724 | + | ||
1725 | + while (i < _xdsoft_datetime.currentTime.countDaysInMonth() || start.getDay() !== options.dayOfWeekStart || _xdsoft_datetime.currentTime.getMonth() === start.getMonth()) { | ||
1726 | + classes = []; | ||
1727 | + i += 1; | ||
1728 | + | ||
1729 | + day = start.getDay(); | ||
1730 | + d = start.getDate(); | ||
1731 | + y = start.getFullYear(); | ||
1732 | + m = start.getMonth(); | ||
1733 | + w = _xdsoft_datetime.getWeekOfYear(start); | ||
1734 | + description = ''; | ||
1735 | + | ||
1736 | + classes.push('xdsoft_date'); | ||
1737 | + | ||
1738 | + if (options.beforeShowDay && $.isFunction(options.beforeShowDay.call)) { | ||
1739 | + customDateSettings = options.beforeShowDay.call(datetimepicker, start); | ||
1740 | + } else { | ||
1741 | + customDateSettings = null; | ||
1742 | + } | ||
1743 | + | ||
1744 | + if(options.allowDateRe && Object.prototype.toString.call(options.allowDateRe) === "[object RegExp]"){ | ||
1745 | + if(!options.allowDateRe.test(dateHelper.formatDate(start, options.formatDate))){ | ||
1746 | + classes.push('xdsoft_disabled'); | ||
1747 | + } | ||
1748 | + } | ||
1749 | + | ||
1750 | + if(options.allowDates && options.allowDates.length>0){ | ||
1751 | + if(options.allowDates.indexOf(dateHelper.formatDate(start, options.formatDate)) === -1){ | ||
1752 | + classes.push('xdsoft_disabled'); | ||
1753 | + } | ||
1754 | + } | ||
1755 | + | ||
1756 | + var currentDay = ((start.getFullYear() * 12) + start.getMonth()) * 31 + start.getDate(); | ||
1757 | + if ((maxDate !== false && start > maxDate) || (minDateTime !== false && start < minDateTime) || (minDate !== false && start < minDate) || (maxDateTime !== false && currentDay > maxDateTimeDay) || (customDateSettings && customDateSettings[0] === false)) { | ||
1758 | + classes.push('xdsoft_disabled'); | ||
1759 | + } | ||
1760 | + | ||
1761 | + if (options.disabledDates.indexOf(dateHelper.formatDate(start, options.formatDate)) !== -1) { | ||
1762 | + classes.push('xdsoft_disabled'); | ||
1763 | + } | ||
1764 | + | ||
1765 | + if (options.disabledWeekDays.indexOf(day) !== -1) { | ||
1766 | + classes.push('xdsoft_disabled'); | ||
1767 | + } | ||
1768 | + | ||
1769 | + if (input.is('[disabled]')) { | ||
1770 | + classes.push('xdsoft_disabled'); | ||
1771 | + } | ||
1772 | + | ||
1773 | + if (customDateSettings && customDateSettings[1] !== "") { | ||
1774 | + classes.push(customDateSettings[1]); | ||
1775 | + } | ||
1776 | + | ||
1777 | + if (_xdsoft_datetime.currentTime.getMonth() !== m) { | ||
1778 | + classes.push('xdsoft_other_month'); | ||
1779 | + } | ||
1780 | + | ||
1781 | + if ((options.defaultSelect || datetimepicker.data('changed')) && dateHelper.formatDate(_xdsoft_datetime.currentTime, options.formatDate) === dateHelper.formatDate(start, options.formatDate)) { | ||
1782 | + classes.push('xdsoft_current'); | ||
1783 | + } | ||
1784 | + | ||
1785 | + if (dateHelper.formatDate(today, options.formatDate) === dateHelper.formatDate(start, options.formatDate)) { | ||
1786 | + classes.push('xdsoft_today'); | ||
1787 | + } | ||
1788 | + | ||
1789 | + if (start.getDay() === 0 || start.getDay() === 6 || options.weekends.indexOf(dateHelper.formatDate(start, options.formatDate)) !== -1) { | ||
1790 | + classes.push('xdsoft_weekend'); | ||
1791 | + } | ||
1792 | + | ||
1793 | + if (options.highlightedDates[dateHelper.formatDate(start, options.formatDate)] !== undefined) { | ||
1794 | + hDate = options.highlightedDates[dateHelper.formatDate(start, options.formatDate)]; | ||
1795 | + classes.push(hDate.style === undefined ? 'xdsoft_highlighted_default' : hDate.style); | ||
1796 | + description = hDate.desc === undefined ? '' : hDate.desc; | ||
1797 | + } | ||
1798 | + | ||
1799 | + if (options.beforeShowDay && $.isFunction(options.beforeShowDay)) { | ||
1800 | + classes.push(options.beforeShowDay(start)); | ||
1801 | + } | ||
1802 | + | ||
1803 | + if (newRow) { | ||
1804 | + table += '<tr>'; | ||
1805 | + newRow = false; | ||
1806 | + if (options.weeks) { | ||
1807 | + table += '<th>' + w + '</th>'; | ||
1808 | + } | ||
1809 | + } | ||
1810 | + | ||
1811 | + table += '<td data-date="' + d + '" data-month="' + m + '" data-year="' + y + '"' + ' class="xdsoft_date xdsoft_day_of_week' + start.getDay() + ' ' + classes.join(' ') + '" title="' + description + '">' + | ||
1812 | + '<div>' + d + '</div>' + | ||
1813 | + '</td>'; | ||
1814 | + | ||
1815 | + if (start.getDay() === options.dayOfWeekStartPrev) { | ||
1816 | + table += '</tr>'; | ||
1817 | + newRow = true; | ||
1818 | + } | ||
1819 | + | ||
1820 | + start.setDate(d + 1); | ||
1821 | + } | ||
1822 | + table += '</tbody></table>'; | ||
1823 | + | ||
1824 | + calendar.html(table); | ||
1825 | + | ||
1826 | + month_picker.find('.xdsoft_label span').eq(0).text(options.i18n[globalLocale].months[_xdsoft_datetime.currentTime.getMonth()]); | ||
1827 | + month_picker.find('.xdsoft_label span').eq(1).text(_xdsoft_datetime.currentTime.getFullYear() + options.yearOffset); | ||
1828 | + | ||
1829 | + // generate timebox | ||
1830 | + time = ''; | ||
1831 | + h = ''; | ||
1832 | + m = ''; | ||
1833 | + | ||
1834 | + var minTimeMinutesOfDay = 0; | ||
1835 | + if (options.minTime !== false) { | ||
1836 | + var t = _xdsoft_datetime.strtotime(options.minTime); | ||
1837 | + minTimeMinutesOfDay = 60 * t.getHours() + t.getMinutes(); | ||
1838 | + } | ||
1839 | + var maxTimeMinutesOfDay = 24 * 60; | ||
1840 | + if (options.maxTime !== false) { | ||
1841 | + var t = _xdsoft_datetime.strtotime(options.maxTime); | ||
1842 | + maxTimeMinutesOfDay = 60 * t.getHours() + t.getMinutes(); | ||
1843 | + } | ||
1844 | + | ||
1845 | + if (options.minDateTime !== false) { | ||
1846 | + var t = _xdsoft_datetime.strToDateTime(options.minDateTime); | ||
1847 | + var currentDayIsMinDateTimeDay = dateHelper.formatDate(_xdsoft_datetime.currentTime, options.formatDate) === dateHelper.formatDate(t, options.formatDate); | ||
1848 | + if (currentDayIsMinDateTimeDay) { | ||
1849 | + var m = 60 * t.getHours() + t.getMinutes(); | ||
1850 | + if (m > minTimeMinutesOfDay) minTimeMinutesOfDay = m; | ||
1851 | + } | ||
1852 | + } | ||
1853 | + | ||
1854 | + if (options.maxDateTime !== false) { | ||
1855 | + var t = _xdsoft_datetime.strToDateTime(options.maxDateTime); | ||
1856 | + var currentDayIsMaxDateTimeDay = dateHelper.formatDate(_xdsoft_datetime.currentTime, options.formatDate) === dateHelper.formatDate(t, options.formatDate); | ||
1857 | + if (currentDayIsMaxDateTimeDay) { | ||
1858 | + var m = 60 * t.getHours() + t.getMinutes(); | ||
1859 | + if (m < maxTimeMinutesOfDay) maxTimeMinutesOfDay = m; | ||
1860 | + } | ||
1861 | + } | ||
1862 | + | ||
1863 | + line_time = function line_time(h, m) { | ||
1864 | + var now = _xdsoft_datetime.now(), current_time, | ||
1865 | + isALlowTimesInit = options.allowTimes && $.isArray(options.allowTimes) && options.allowTimes.length; | ||
1866 | + now.setHours(h); | ||
1867 | + h = parseInt(now.getHours(), 10); | ||
1868 | + now.setMinutes(m); | ||
1869 | + m = parseInt(now.getMinutes(), 10); | ||
1870 | + classes = []; | ||
1871 | + var currentMinutesOfDay = 60 * h + m; | ||
1872 | + if (input.is('[disabled]') || (currentMinutesOfDay >= maxTimeMinutesOfDay) || (currentMinutesOfDay < minTimeMinutesOfDay)) { | ||
1873 | + classes.push('xdsoft_disabled'); | ||
1874 | + } | ||
1875 | + | ||
1876 | + current_time = new Date(_xdsoft_datetime.currentTime); | ||
1877 | + current_time.setHours(parseInt(_xdsoft_datetime.currentTime.getHours(), 10)); | ||
1878 | + | ||
1879 | + if (!isALlowTimesInit) { | ||
1880 | + current_time.setMinutes(Math[options.roundTime](_xdsoft_datetime.currentTime.getMinutes() / options.step) * options.step); | ||
1881 | + } | ||
1882 | + | ||
1883 | + if ((options.initTime || options.defaultSelect || datetimepicker.data('changed')) && current_time.getHours() === parseInt(h, 10) && ((!isALlowTimesInit && options.step > 59) || current_time.getMinutes() === parseInt(m, 10))) { | ||
1884 | + if (options.defaultSelect || datetimepicker.data('changed')) { | ||
1885 | + classes.push('xdsoft_current'); | ||
1886 | + } else if (options.initTime) { | ||
1887 | + classes.push('xdsoft_init_time'); | ||
1888 | + } | ||
1889 | + } | ||
1890 | + if (parseInt(today.getHours(), 10) === parseInt(h, 10) && parseInt(today.getMinutes(), 10) === parseInt(m, 10)) { | ||
1891 | + classes.push('xdsoft_today'); | ||
1892 | + } | ||
1893 | + time += '<div class="xdsoft_time ' + classes.join(' ') + '" data-hour="' + h + '" data-minute="' + m + '">' + dateHelper.formatDate(now, options.formatTime) + '</div>'; | ||
1894 | + }; | ||
1895 | + | ||
1896 | + if (!options.allowTimes || !$.isArray(options.allowTimes) || !options.allowTimes.length) { | ||
1897 | + for (i = 0, j = 0; i < (options.hours12 ? 12 : 24); i += 1) { | ||
1898 | + for (j = 0; j < 60; j += options.step) { | ||
1899 | + var currentMinutesOfDay = i * 60 + j; | ||
1900 | + if (currentMinutesOfDay < minTimeMinutesOfDay) continue; | ||
1901 | + if (currentMinutesOfDay >= maxTimeMinutesOfDay) continue; | ||
1902 | + h = (i < 10 ? '0' : '') + i; | ||
1903 | + m = (j < 10 ? '0' : '') + j; | ||
1904 | + line_time(h, m); | ||
1905 | + } | ||
1906 | + } | ||
1907 | + } else { | ||
1908 | + for (i = 0; i < options.allowTimes.length; i += 1) { | ||
1909 | + h = _xdsoft_datetime.strtotime(options.allowTimes[i]).getHours(); | ||
1910 | + m = _xdsoft_datetime.strtotime(options.allowTimes[i]).getMinutes(); | ||
1911 | + line_time(h, m); | ||
1912 | + } | ||
1913 | + } | ||
1914 | + | ||
1915 | + timebox.html(time); | ||
1916 | + | ||
1917 | + opt = ''; | ||
1918 | + | ||
1919 | + for (i = parseInt(options.yearStart, 10); i <= parseInt(options.yearEnd, 10); i += 1) { | ||
1920 | + opt += '<div class="xdsoft_option ' + (_xdsoft_datetime.currentTime.getFullYear() === i ? 'xdsoft_current' : '') + '" data-value="' + i + '">' + (i + options.yearOffset) + '</div>'; | ||
1921 | + } | ||
1922 | + yearselect.children().eq(0) | ||
1923 | + .html(opt); | ||
1924 | + | ||
1925 | + for (i = parseInt(options.monthStart, 10), opt = ''; i <= parseInt(options.monthEnd, 10); i += 1) { | ||
1926 | + opt += '<div class="xdsoft_option ' + (_xdsoft_datetime.currentTime.getMonth() === i ? 'xdsoft_current' : '') + '" data-value="' + i + '">' + options.i18n[globalLocale].months[i] + '</div>'; | ||
1927 | + } | ||
1928 | + monthselect.children().eq(0).html(opt); | ||
1929 | + $(datetimepicker) | ||
1930 | + .trigger('generate.xdsoft'); | ||
1931 | + }, 10); | ||
1932 | + event.stopPropagation(); | ||
1933 | + }) | ||
1934 | + .on('afterOpen.xdsoft', function () { | ||
1935 | + if (options.timepicker) { | ||
1936 | + var classType, pheight, height, top; | ||
1937 | + if (timebox.find('.xdsoft_current').length) { | ||
1938 | + classType = '.xdsoft_current'; | ||
1939 | + } else if (timebox.find('.xdsoft_init_time').length) { | ||
1940 | + classType = '.xdsoft_init_time'; | ||
1941 | + } | ||
1942 | + if (classType) { | ||
1943 | + pheight = timeboxparent[0].clientHeight; | ||
1944 | + height = timebox[0].offsetHeight; | ||
1945 | + top = timebox.find(classType).index() * options.timeHeightInTimePicker + 1; | ||
1946 | + if ((height - pheight) < top) { | ||
1947 | + top = height - pheight; | ||
1948 | + } | ||
1949 | + timeboxparent.trigger('scroll_element.xdsoft_scroller', [parseInt(top, 10) / (height - pheight)]); | ||
1950 | + } else { | ||
1951 | + timeboxparent.trigger('scroll_element.xdsoft_scroller', [0]); | ||
1952 | + } | ||
1953 | + } | ||
1954 | + }); | ||
1955 | + | ||
1956 | + timerclick = 0; | ||
1957 | + calendar | ||
1958 | + .on('touchend click.xdsoft', 'td', function (xdevent) { | ||
1959 | + xdevent.stopPropagation(); // Prevents closing of Pop-ups, Modals and Flyouts in Bootstrap | ||
1960 | + timerclick += 1; | ||
1961 | + var $this = $(this), | ||
1962 | + currentTime = _xdsoft_datetime.currentTime; | ||
1963 | + | ||
1964 | + if (currentTime === undefined || currentTime === null) { | ||
1965 | + _xdsoft_datetime.currentTime = _xdsoft_datetime.now(); | ||
1966 | + currentTime = _xdsoft_datetime.currentTime; | ||
1967 | + } | ||
1968 | + | ||
1969 | + if ($this.hasClass('xdsoft_disabled')) { | ||
1970 | + return false; | ||
1971 | + } | ||
1972 | + | ||
1973 | + currentTime.setDate(1); | ||
1974 | + currentTime.setFullYear($this.data('year')); | ||
1975 | + currentTime.setMonth($this.data('month')); | ||
1976 | + currentTime.setDate($this.data('date')); | ||
1977 | + | ||
1978 | + datetimepicker.trigger('select.xdsoft', [currentTime]); | ||
1979 | + | ||
1980 | + input.val(_xdsoft_datetime.str()); | ||
1981 | + | ||
1982 | + if (options.onSelectDate && $.isFunction(options.onSelectDate)) { | ||
1983 | + options.onSelectDate.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), xdevent); | ||
1984 | + } | ||
1985 | + | ||
1986 | + datetimepicker.data('changed', true); | ||
1987 | + datetimepicker.trigger('xchange.xdsoft'); | ||
1988 | + datetimepicker.trigger('changedatetime.xdsoft'); | ||
1989 | + if ((timerclick > 1 || (options.closeOnDateSelect === true || (options.closeOnDateSelect === false && !options.timepicker))) && !options.inline) { | ||
1990 | + datetimepicker.trigger('close.xdsoft'); | ||
1991 | + } | ||
1992 | + setTimeout(function () { | ||
1993 | + timerclick = 0; | ||
1994 | + }, 200); | ||
1995 | + }); | ||
1996 | + | ||
1997 | + timebox | ||
1998 | + .on('touchstart', 'div', function (xdevent) { | ||
1999 | + this.touchMoved = false; | ||
2000 | + }) | ||
2001 | + .on('touchmove', 'div', handleTouchMoved) | ||
2002 | + .on('touchend click.xdsoft', 'div', function (xdevent) { | ||
2003 | + if (!this.touchMoved) { | ||
2004 | + xdevent.stopPropagation(); | ||
2005 | + var $this = $(this), | ||
2006 | + currentTime = _xdsoft_datetime.currentTime; | ||
2007 | + | ||
2008 | + if (currentTime === undefined || currentTime === null) { | ||
2009 | + _xdsoft_datetime.currentTime = _xdsoft_datetime.now(); | ||
2010 | + currentTime = _xdsoft_datetime.currentTime; | ||
2011 | + } | ||
2012 | + | ||
2013 | + if ($this.hasClass('xdsoft_disabled')) { | ||
2014 | + return false; | ||
2015 | + } | ||
2016 | + currentTime.setHours($this.data('hour')); | ||
2017 | + currentTime.setMinutes($this.data('minute')); | ||
2018 | + datetimepicker.trigger('select.xdsoft', [currentTime]); | ||
2019 | + | ||
2020 | + datetimepicker.data('input').val(_xdsoft_datetime.str()); | ||
2021 | + | ||
2022 | + if (options.onSelectTime && $.isFunction(options.onSelectTime)) { | ||
2023 | + options.onSelectTime.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), xdevent); | ||
2024 | + } | ||
2025 | + datetimepicker.data('changed', true); | ||
2026 | + datetimepicker.trigger('xchange.xdsoft'); | ||
2027 | + datetimepicker.trigger('changedatetime.xdsoft'); | ||
2028 | + if (options.inline !== true && options.closeOnTimeSelect === true) { | ||
2029 | + datetimepicker.trigger('close.xdsoft'); | ||
2030 | + } | ||
2031 | + } | ||
2032 | + }); | ||
2033 | + | ||
2034 | + datepicker | ||
2035 | + .on('mousewheel.xdsoft', function (event) { | ||
2036 | + if (!options.scrollMonth) { | ||
2037 | + return true; | ||
2038 | + } | ||
2039 | + if (event.deltaY < 0) { | ||
2040 | + _xdsoft_datetime.nextMonth(); | ||
2041 | + } else { | ||
2042 | + _xdsoft_datetime.prevMonth(); | ||
2043 | + } | ||
2044 | + return false; | ||
2045 | + }); | ||
2046 | + | ||
2047 | + input | ||
2048 | + .on('mousewheel.xdsoft', function (event) { | ||
2049 | + if (!options.scrollInput) { | ||
2050 | + return true; | ||
2051 | + } | ||
2052 | + if (!options.datepicker && options.timepicker) { | ||
2053 | + current_time_index = timebox.find('.xdsoft_current').length ? timebox.find('.xdsoft_current').eq(0).index() : 0; | ||
2054 | + if (current_time_index + event.deltaY >= 0 && current_time_index + event.deltaY < timebox.children().length) { | ||
2055 | + current_time_index += event.deltaY; | ||
2056 | + } | ||
2057 | + if (timebox.children().eq(current_time_index).length) { | ||
2058 | + timebox.children().eq(current_time_index).trigger('mousedown'); | ||
2059 | + } | ||
2060 | + return false; | ||
2061 | + } | ||
2062 | + if (options.datepicker && !options.timepicker) { | ||
2063 | + datepicker.trigger(event, [event.deltaY, event.deltaX, event.deltaY]); | ||
2064 | + if (input.val) { | ||
2065 | + input.val(_xdsoft_datetime.str()); | ||
2066 | + } | ||
2067 | + datetimepicker.trigger('changedatetime.xdsoft'); | ||
2068 | + return false; | ||
2069 | + } | ||
2070 | + }); | ||
2071 | + | ||
2072 | + datetimepicker | ||
2073 | + .on('changedatetime.xdsoft', function (event) { | ||
2074 | + if (options.onChangeDateTime && $.isFunction(options.onChangeDateTime)) { | ||
2075 | + var $input = datetimepicker.data('input'); | ||
2076 | + options.onChangeDateTime.call(datetimepicker, _xdsoft_datetime.currentTime, $input, event); | ||
2077 | + delete options.value; | ||
2078 | + $input.trigger('change'); | ||
2079 | + } | ||
2080 | + }) | ||
2081 | + .on('generate.xdsoft', function () { | ||
2082 | + if (options.onGenerate && $.isFunction(options.onGenerate)) { | ||
2083 | + options.onGenerate.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input')); | ||
2084 | + } | ||
2085 | + if (triggerAfterOpen) { | ||
2086 | + datetimepicker.trigger('afterOpen.xdsoft'); | ||
2087 | + triggerAfterOpen = false; | ||
2088 | + } | ||
2089 | + }) | ||
2090 | + .on('click.xdsoft', function (xdevent) { | ||
2091 | + xdevent.stopPropagation(); | ||
2092 | + }); | ||
2093 | + | ||
2094 | + current_time_index = 0; | ||
2095 | + | ||
2096 | + /** | ||
2097 | + * Runs the callback for each of the specified node's ancestors. | ||
2098 | + * | ||
2099 | + * Return FALSE from the callback to stop ascending. | ||
2100 | + * | ||
2101 | + * @param {DOMNode} node | ||
2102 | + * @param {Function} callback | ||
2103 | + * @returns {undefined} | ||
2104 | + */ | ||
2105 | + forEachAncestorOf = function (node, callback) { | ||
2106 | + do { | ||
2107 | + node = node.parentNode; | ||
2108 | + | ||
2109 | + if (!node || callback(node) === false) { | ||
2110 | + break; | ||
2111 | + } | ||
2112 | + } while (node.nodeName !== 'HTML'); | ||
2113 | + }; | ||
2114 | + | ||
2115 | + /** | ||
2116 | + * Sets the position of the picker. | ||
2117 | + * | ||
2118 | + * @returns {undefined} | ||
2119 | + */ | ||
2120 | + setPos = function () { | ||
2121 | + var dateInputOffset, | ||
2122 | + dateInputElem, | ||
2123 | + verticalPosition, | ||
2124 | + left, | ||
2125 | + position, | ||
2126 | + datetimepickerElem, | ||
2127 | + dateInputHasFixedAncestor, | ||
2128 | + $dateInput, | ||
2129 | + windowWidth, | ||
2130 | + verticalAnchorEdge, | ||
2131 | + datetimepickerCss, | ||
2132 | + windowHeight, | ||
2133 | + windowScrollTop; | ||
2134 | + | ||
2135 | + $dateInput = datetimepicker.data('input'); | ||
2136 | + dateInputOffset = $dateInput.offset(); | ||
2137 | + dateInputElem = $dateInput[0]; | ||
2138 | + | ||
2139 | + verticalAnchorEdge = 'top'; | ||
2140 | + verticalPosition = (dateInputOffset.top + dateInputElem.offsetHeight) - 1; | ||
2141 | + left = dateInputOffset.left; | ||
2142 | + position = "absolute"; | ||
2143 | + | ||
2144 | + windowWidth = $(options.contentWindow).width(); | ||
2145 | + windowHeight = $(options.contentWindow).height(); | ||
2146 | + windowScrollTop = $(options.contentWindow).scrollTop(); | ||
2147 | + | ||
2148 | + if ((options.ownerDocument.documentElement.clientWidth - dateInputOffset.left) < datepicker.parent().outerWidth(true)) { | ||
2149 | + var diff = datepicker.parent().outerWidth(true) - dateInputElem.offsetWidth; | ||
2150 | + left = left - diff; | ||
2151 | + } | ||
2152 | + | ||
2153 | + if ($dateInput.parent().css('direction') === 'rtl') { | ||
2154 | + left -= (datetimepicker.outerWidth() - $dateInput.outerWidth()); | ||
2155 | + } | ||
2156 | + | ||
2157 | + if (options.fixed) { | ||
2158 | + verticalPosition -= windowScrollTop; | ||
2159 | + left -= $(options.contentWindow).scrollLeft(); | ||
2160 | + position = "fixed"; | ||
2161 | + } else { | ||
2162 | + dateInputHasFixedAncestor = false; | ||
2163 | + | ||
2164 | + forEachAncestorOf(dateInputElem, function (ancestorNode) { | ||
2165 | + if (ancestorNode === null) { | ||
2166 | + return false; | ||
2167 | + } | ||
2168 | + | ||
2169 | + if (options.contentWindow.getComputedStyle(ancestorNode).getPropertyValue('position') === 'fixed') { | ||
2170 | + dateInputHasFixedAncestor = true; | ||
2171 | + return false; | ||
2172 | + } | ||
2173 | + }); | ||
2174 | + | ||
2175 | + if (dateInputHasFixedAncestor) { | ||
2176 | + position = 'fixed'; | ||
2177 | + | ||
2178 | + //If the picker won't fit entirely within the viewport then display it above the date input. | ||
2179 | + if (verticalPosition + datetimepicker.outerHeight() > windowHeight + windowScrollTop) { | ||
2180 | + verticalAnchorEdge = 'bottom'; | ||
2181 | + verticalPosition = (windowHeight + windowScrollTop) - dateInputOffset.top; | ||
2182 | + } else { | ||
2183 | + verticalPosition -= windowScrollTop; | ||
2184 | + } | ||
2185 | + } else { | ||
2186 | + if (verticalPosition + datetimepicker[0].offsetHeight > windowHeight + windowScrollTop) { | ||
2187 | + verticalPosition = dateInputOffset.top - datetimepicker[0].offsetHeight + 1; | ||
2188 | + } | ||
2189 | + } | ||
2190 | + | ||
2191 | + if (verticalPosition < 0) { | ||
2192 | + verticalPosition = 0; | ||
2193 | + } | ||
2194 | + | ||
2195 | + if (left + dateInputElem.offsetWidth > windowWidth) { | ||
2196 | + left = windowWidth - dateInputElem.offsetWidth; | ||
2197 | + } | ||
2198 | + } | ||
2199 | + | ||
2200 | + datetimepickerElem = datetimepicker[0]; | ||
2201 | + | ||
2202 | + forEachAncestorOf(datetimepickerElem, function (ancestorNode) { | ||
2203 | + var ancestorNodePosition; | ||
2204 | + | ||
2205 | + ancestorNodePosition = options.contentWindow.getComputedStyle(ancestorNode).getPropertyValue('position'); | ||
2206 | + | ||
2207 | + if (ancestorNodePosition === 'relative' && windowWidth >= ancestorNode.offsetWidth) { | ||
2208 | + left = left - ((windowWidth - ancestorNode.offsetWidth) / 2); | ||
2209 | + return false; | ||
2210 | + } | ||
2211 | + }); | ||
2212 | + | ||
2213 | + datetimepickerCss = { | ||
2214 | + position: position, | ||
2215 | + left: left, | ||
2216 | + top: '', //Initialize to prevent previous values interfering with new ones. | ||
2217 | + bottom: '' //Initialize to prevent previous values interfering with new ones. | ||
2218 | + }; | ||
2219 | + | ||
2220 | + datetimepickerCss[verticalAnchorEdge] = verticalPosition; | ||
2221 | + | ||
2222 | + datetimepicker.css(datetimepickerCss); | ||
2223 | + }; | ||
2224 | + | ||
2225 | + datetimepicker | ||
2226 | + .on('open.xdsoft', function (event) { | ||
2227 | + var onShow = true; | ||
2228 | + if (options.onShow && $.isFunction(options.onShow)) { | ||
2229 | + onShow = options.onShow.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), event); | ||
2230 | + } | ||
2231 | + if (onShow !== false) { | ||
2232 | + datetimepicker.show(); | ||
2233 | + setPos(); | ||
2234 | + $(options.contentWindow) | ||
2235 | + .off('resize.xdsoft', setPos) | ||
2236 | + .on('resize.xdsoft', setPos); | ||
2237 | + | ||
2238 | + if (options.closeOnWithoutClick) { | ||
2239 | + $([options.ownerDocument.body, options.contentWindow]).on('touchstart mousedown.xdsoft', function arguments_callee6() { | ||
2240 | + datetimepicker.trigger('close.xdsoft'); | ||
2241 | + $([options.ownerDocument.body, options.contentWindow]).off('touchstart mousedown.xdsoft', arguments_callee6); | ||
2242 | + }); | ||
2243 | + } | ||
2244 | + } | ||
2245 | + }) | ||
2246 | + .on('close.xdsoft', function (event) { | ||
2247 | + var onClose = true; | ||
2248 | + month_picker | ||
2249 | + .find('.xdsoft_month,.xdsoft_year') | ||
2250 | + .find('.xdsoft_select') | ||
2251 | + .hide(); | ||
2252 | + if (options.onClose && $.isFunction(options.onClose)) { | ||
2253 | + onClose = options.onClose.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), event); | ||
2254 | + } | ||
2255 | + if (onClose !== false && !options.opened && !options.inline) { | ||
2256 | + datetimepicker.hide(); | ||
2257 | + } | ||
2258 | + event.stopPropagation(); | ||
2259 | + }) | ||
2260 | + .on('toggle.xdsoft', function () { | ||
2261 | + if (datetimepicker.is(':visible')) { | ||
2262 | + datetimepicker.trigger('close.xdsoft'); | ||
2263 | + } else { | ||
2264 | + datetimepicker.trigger('open.xdsoft'); | ||
2265 | + } | ||
2266 | + }) | ||
2267 | + .data('input', input); | ||
2268 | + | ||
2269 | + timer = 0; | ||
2270 | + | ||
2271 | + datetimepicker.data('xdsoft_datetime', _xdsoft_datetime); | ||
2272 | + datetimepicker.setOptions(options); | ||
2273 | + | ||
2274 | + function getCurrentValue() { | ||
2275 | + var ct = false, time; | ||
2276 | + | ||
2277 | + if (options.startDate) { | ||
2278 | + ct = _xdsoft_datetime.strToDate(options.startDate); | ||
2279 | + } else { | ||
2280 | + ct = options.value || ((input && input.val && input.val()) ? input.val() : ''); | ||
2281 | + if (ct) { | ||
2282 | + ct = _xdsoft_datetime.strToDateTime(ct); | ||
2283 | + if (options.yearOffset) { | ||
2284 | + ct = new Date(ct.getFullYear() - options.yearOffset, ct.getMonth(), ct.getDate(), ct.getHours(), ct.getMinutes(), ct.getSeconds(), ct.getMilliseconds()); | ||
2285 | + } | ||
2286 | + } else if (options.defaultDate) { | ||
2287 | + ct = _xdsoft_datetime.strToDateTime(options.defaultDate); | ||
2288 | + if (options.defaultTime) { | ||
2289 | + time = _xdsoft_datetime.strtotime(options.defaultTime); | ||
2290 | + ct.setHours(time.getHours()); | ||
2291 | + ct.setMinutes(time.getMinutes()); | ||
2292 | + } | ||
2293 | + } | ||
2294 | + } | ||
2295 | + | ||
2296 | + if (ct && _xdsoft_datetime.isValidDate(ct)) { | ||
2297 | + datetimepicker.data('changed', true); | ||
2298 | + } else { | ||
2299 | + ct = ''; | ||
2300 | + } | ||
2301 | + | ||
2302 | + return ct || 0; | ||
2303 | + } | ||
2304 | + | ||
2305 | + function setMask(options) { | ||
2306 | + | ||
2307 | + var isValidValue = function (mask, value) { | ||
2308 | + var reg = mask | ||
2309 | + .replace(/([\[\]\/\{\}\(\)\-\.\+]{1})/g, '\\$1') | ||
2310 | + .replace(/_/g, '{digit+}') | ||
2311 | + .replace(/([0-9]{1})/g, '{digit$1}') | ||
2312 | + .replace(/\{digit([0-9]{1})\}/g, '[0-$1_]{1}') | ||
2313 | + .replace(/\{digit[\+]\}/g, '[0-9_]{1}'); | ||
2314 | + return (new RegExp(reg)).test(value); | ||
2315 | + }, | ||
2316 | + getCaretPos = function (input) { | ||
2317 | + try { | ||
2318 | + if (options.ownerDocument.selection && options.ownerDocument.selection.createRange) { | ||
2319 | + var range = options.ownerDocument.selection.createRange(); | ||
2320 | + return range.getBookmark().charCodeAt(2) - 2; | ||
2321 | + } | ||
2322 | + if (input.setSelectionRange) { | ||
2323 | + return input.selectionStart; | ||
2324 | + } | ||
2325 | + } catch (e) { | ||
2326 | + return 0; | ||
2327 | + } | ||
2328 | + }, | ||
2329 | + setCaretPos = function (node, pos) { | ||
2330 | + node = (typeof node === "string" || node instanceof String) ? options.ownerDocument.getElementById(node) : node; | ||
2331 | + if (!node) { | ||
2332 | + return false; | ||
2333 | + } | ||
2334 | + if (node.createTextRange) { | ||
2335 | + var textRange = node.createTextRange(); | ||
2336 | + textRange.collapse(true); | ||
2337 | + textRange.moveEnd('character', pos); | ||
2338 | + textRange.moveStart('character', pos); | ||
2339 | + textRange.select(); | ||
2340 | + return true; | ||
2341 | + } | ||
2342 | + if (node.setSelectionRange) { | ||
2343 | + node.setSelectionRange(pos, pos); | ||
2344 | + return true; | ||
2345 | + } | ||
2346 | + return false; | ||
2347 | + }; | ||
2348 | + | ||
2349 | + if(options.mask) { | ||
2350 | + input.off('keydown.xdsoft'); | ||
2351 | + } | ||
2352 | + | ||
2353 | + if (options.mask === true) { | ||
2354 | + if (dateHelper.formatMask) { | ||
2355 | + options.mask = dateHelper.formatMask(options.format) | ||
2356 | + } else { | ||
2357 | + options.mask = options.format | ||
2358 | + .replace(/Y/g, '9999') | ||
2359 | + .replace(/F/g, '9999') | ||
2360 | + .replace(/m/g, '19') | ||
2361 | + .replace(/d/g, '39') | ||
2362 | + .replace(/H/g, '29') | ||
2363 | + .replace(/i/g, '59') | ||
2364 | + .replace(/s/g, '59'); | ||
2365 | + } | ||
2366 | + } | ||
2367 | + | ||
2368 | + if ($.type(options.mask) === 'string') { | ||
2369 | + if (!isValidValue(options.mask, input.val())) { | ||
2370 | + input.val(options.mask.replace(/[0-9]/g, '_')); | ||
2371 | + setCaretPos(input[0], 0); | ||
2372 | + } | ||
2373 | + | ||
2374 | + input.off('paste.xdsoft').on('paste.xdsoft', function (event) { | ||
2375 | + // couple options here | ||
2376 | + // 1. return false - tell them they can't paste | ||
2377 | + // 2. insert over current characters - minimal validation | ||
2378 | + // 3. full fledged parsing and validation | ||
2379 | + // let's go option 2 for now | ||
2380 | + | ||
2381 | + // fires multiple times for some reason | ||
2382 | + | ||
2383 | + // https://stackoverflow.com/a/30496488/1366033 | ||
2384 | + var clipboardData = event.clipboardData || event.originalEvent.clipboardData || window.clipboardData, | ||
2385 | + pastedData = clipboardData.getData('text'), | ||
2386 | + val = this.value, | ||
2387 | + pos = this.selectionStart | ||
2388 | + | ||
2389 | + var valueBeforeCursor = val.substr(0, pos); | ||
2390 | + var valueAfterPaste = val.substr(pos + pastedData.length); | ||
2391 | + | ||
2392 | + val = valueBeforeCursor + pastedData + valueAfterPaste; | ||
2393 | + val = val.substring(0, options.mask.length) | ||
2394 | + pos += pastedData.length; | ||
2395 | + | ||
2396 | + if (isValidValue(options.mask, val)) { | ||
2397 | + this.value = val; | ||
2398 | + setCaretPos(this, pos); | ||
2399 | + } else if ($.trim(val) === '') { | ||
2400 | + this.value = options.mask.replace(/[0-9]/g, '_'); | ||
2401 | + } else { | ||
2402 | + input.trigger('error_input.xdsoft'); | ||
2403 | + } | ||
2404 | + | ||
2405 | + event.preventDefault(); | ||
2406 | + return false; | ||
2407 | + }); | ||
2408 | + | ||
2409 | + input.on('keydown.xdsoft', function (event) { | ||
2410 | + var val = this.value, | ||
2411 | + key = event.which, | ||
2412 | + pos = this.selectionStart, | ||
2413 | + selEnd = this.selectionEnd, | ||
2414 | + hasSel = pos !== selEnd, | ||
2415 | + digit; | ||
2416 | + | ||
2417 | + // only alow these characters | ||
2418 | + if (((key >= KEY0 && key <= KEY9) || | ||
2419 | + (key >= _KEY0 && key <= _KEY9)) || | ||
2420 | + (key === BACKSPACE || key === DEL)) { | ||
2421 | + | ||
2422 | + // get char to insert which is new character or placeholder ('_') | ||
2423 | + digit = (key === BACKSPACE || key === DEL) ? '_' : | ||
2424 | + String.fromCharCode((_KEY0 <= key && key <= _KEY9) ? key - KEY0 : key); | ||
2425 | + | ||
2426 | + // we're deleting something, we're not at the start, and have normal cursor, move back one | ||
2427 | + // if we have a selection length, cursor actually sits behind deletable char, not in front | ||
2428 | + if (key === BACKSPACE && pos && !hasSel) { | ||
2429 | + pos -= 1; | ||
2430 | + } | ||
2431 | + | ||
2432 | + // don't stop on a separator, continue whatever direction you were going | ||
2433 | + // value char - keep incrementing position while on separator char and we still have room | ||
2434 | + // del char - keep decrementing position while on separator char and we still have room | ||
2435 | + while (true) { | ||
2436 | + var maskValueAtCurPos = options.mask.substr(pos, 1); | ||
2437 | + var posShorterThanMaskLength = pos < options.mask.length; | ||
2438 | + var posGreaterThanZero = pos > 0; | ||
2439 | + var notNumberOrPlaceholder = /[^0-9_]/; | ||
2440 | + var curPosOnSep = notNumberOrPlaceholder.test(maskValueAtCurPos); | ||
2441 | + var continueMovingPosition = curPosOnSep && posShorterThanMaskLength && posGreaterThanZero | ||
2442 | + | ||
2443 | + // if we hit a real char, stay where we are | ||
2444 | + if (!continueMovingPosition) break; | ||
2445 | + | ||
2446 | + // hitting backspace in a selection, you can possibly go back any further - go forward | ||
2447 | + pos += (key === BACKSPACE && !hasSel) ? -1 : 1; | ||
2448 | + | ||
2449 | + } | ||
2450 | + | ||
2451 | + | ||
2452 | + if (hasSel) { | ||
2453 | + // pos might have moved so re-calc length | ||
2454 | + var selLength = selEnd - pos | ||
2455 | + | ||
2456 | + // if we have a selection length we will wipe out entire selection and replace with default template for that range | ||
2457 | + var defaultBlank = options.mask.replace(/[0-9]/g, '_'); | ||
2458 | + var defaultBlankSelectionReplacement = defaultBlank.substr(pos, selLength); | ||
2459 | + var selReplacementRemainder = defaultBlankSelectionReplacement.substr(1) // might be empty | ||
2460 | + | ||
2461 | + var valueBeforeSel = val.substr(0, pos); | ||
2462 | + var insertChars = digit + selReplacementRemainder; | ||
2463 | + var charsAfterSelection = val.substr(pos + selLength); | ||
2464 | + | ||
2465 | + val = valueBeforeSel + insertChars + charsAfterSelection | ||
2466 | + | ||
2467 | + } else { | ||
2468 | + var valueBeforeCursor = val.substr(0, pos); | ||
2469 | + var insertChar = digit; | ||
2470 | + var valueAfterNextChar = val.substr(pos + 1); | ||
2471 | + | ||
2472 | + val = valueBeforeCursor + insertChar + valueAfterNextChar | ||
2473 | + } | ||
2474 | + | ||
2475 | + if ($.trim(val) === '') { | ||
2476 | + // if empty, set to default | ||
2477 | + val = defaultBlank | ||
2478 | + } else { | ||
2479 | + // if at the last character don't need to do anything | ||
2480 | + if (pos === options.mask.length) { | ||
2481 | + event.preventDefault(); | ||
2482 | + return false; | ||
2483 | + } | ||
2484 | + } | ||
2485 | + | ||
2486 | + // resume cursor location | ||
2487 | + pos += (key === BACKSPACE) ? 0 : 1; | ||
2488 | + // don't stop on a separator, continue whatever direction you were going | ||
2489 | + while (/[^0-9_]/.test(options.mask.substr(pos, 1)) && pos < options.mask.length && pos > 0) { | ||
2490 | + pos += (key === BACKSPACE) ? 0 : 1; | ||
2491 | + } | ||
2492 | + | ||
2493 | + if (isValidValue(options.mask, val)) { | ||
2494 | + this.value = val; | ||
2495 | + setCaretPos(this, pos); | ||
2496 | + } else if ($.trim(val) === '') { | ||
2497 | + this.value = options.mask.replace(/[0-9]/g, '_'); | ||
2498 | + } else { | ||
2499 | + input.trigger('error_input.xdsoft'); | ||
2500 | + } | ||
2501 | + } else { | ||
2502 | + if (([AKEY, CKEY, VKEY, ZKEY, YKEY].indexOf(key) !== -1 && ctrlDown) || [ESC, ARROWUP, ARROWDOWN, ARROWLEFT, ARROWRIGHT, F5, CTRLKEY, TAB, ENTER].indexOf(key) !== -1) { | ||
2503 | + return true; | ||
2504 | + } | ||
2505 | + } | ||
2506 | + | ||
2507 | + event.preventDefault(); | ||
2508 | + return false; | ||
2509 | + }); | ||
2510 | + } | ||
2511 | + } | ||
2512 | + | ||
2513 | + _xdsoft_datetime.setCurrentTime(getCurrentValue()); | ||
2514 | + | ||
2515 | + input | ||
2516 | + .data('xdsoft_datetimepicker', datetimepicker) | ||
2517 | + .on('open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart', function () { | ||
2518 | + if (input.is(':disabled') || (input.data('xdsoft_datetimepicker').is(':visible') && options.closeOnInputClick)) { | ||
2519 | + return; | ||
2520 | + } | ||
2521 | + if (!options.openOnFocus) { | ||
2522 | + return; | ||
2523 | + } | ||
2524 | + clearTimeout(timer); | ||
2525 | + timer = setTimeout(function () { | ||
2526 | + if (input.is(':disabled')) { | ||
2527 | + return; | ||
2528 | + } | ||
2529 | + | ||
2530 | + triggerAfterOpen = true; | ||
2531 | + _xdsoft_datetime.setCurrentTime(getCurrentValue(), true); | ||
2532 | + if(options.mask) { | ||
2533 | + setMask(options); | ||
2534 | + } | ||
2535 | + datetimepicker.trigger('open.xdsoft'); | ||
2536 | + }, 100); | ||
2537 | + }) | ||
2538 | + .on('keydown.xdsoft', function (event) { | ||
2539 | + var elementSelector, | ||
2540 | + key = event.which; | ||
2541 | + if ([ENTER].indexOf(key) !== -1 && options.enterLikeTab) { | ||
2542 | + elementSelector = $("input:visible,textarea:visible,button:visible,a:visible"); | ||
2543 | + datetimepicker.trigger('close.xdsoft'); | ||
2544 | + elementSelector.eq(elementSelector.index(this) + 1).focus(); | ||
2545 | + return false; | ||
2546 | + } | ||
2547 | + if ([TAB].indexOf(key) !== -1) { | ||
2548 | + datetimepicker.trigger('close.xdsoft'); | ||
2549 | + return true; | ||
2550 | + } | ||
2551 | + }) | ||
2552 | + .on('blur.xdsoft', function () { | ||
2553 | + datetimepicker.trigger('close.xdsoft'); | ||
2554 | + }); | ||
2555 | + }; | ||
2556 | + destroyDateTimePicker = function (input) { | ||
2557 | + var datetimepicker = input.data('xdsoft_datetimepicker'); | ||
2558 | + if (datetimepicker) { | ||
2559 | + datetimepicker.data('xdsoft_datetime', null); | ||
2560 | + datetimepicker.remove(); | ||
2561 | + input | ||
2562 | + .data('xdsoft_datetimepicker', null) | ||
2563 | + .off('.xdsoft'); | ||
2564 | + $(options.contentWindow).off('resize.xdsoft'); | ||
2565 | + $([options.contentWindow, options.ownerDocument.body]).off('mousedown.xdsoft touchstart'); | ||
2566 | + if (input.unmousewheel) { | ||
2567 | + input.unmousewheel(); | ||
2568 | + } | ||
2569 | + } | ||
2570 | + }; | ||
2571 | + $(options.ownerDocument) | ||
2572 | + .off('keydown.xdsoftctrl keyup.xdsoftctrl') | ||
2573 | + .on('keydown.xdsoftctrl', function (e) { | ||
2574 | + if (e.keyCode === CTRLKEY) { | ||
2575 | + ctrlDown = true; | ||
2576 | + } | ||
2577 | + }) | ||
2578 | + .on('keyup.xdsoftctrl', function (e) { | ||
2579 | + if (e.keyCode === CTRLKEY) { | ||
2580 | + ctrlDown = false; | ||
2581 | + } | ||
2582 | + }); | ||
2583 | + | ||
2584 | + this.each(function () { | ||
2585 | + var datetimepicker = $(this).data('xdsoft_datetimepicker'), $input; | ||
2586 | + if (datetimepicker) { | ||
2587 | + if ($.type(opt) === 'string') { | ||
2588 | + switch (opt) { | ||
2589 | + case 'show': | ||
2590 | + $(this).select().focus(); | ||
2591 | + datetimepicker.trigger('open.xdsoft'); | ||
2592 | + break; | ||
2593 | + case 'hide': | ||
2594 | + datetimepicker.trigger('close.xdsoft'); | ||
2595 | + break; | ||
2596 | + case 'toggle': | ||
2597 | + datetimepicker.trigger('toggle.xdsoft'); | ||
2598 | + break; | ||
2599 | + case 'destroy': | ||
2600 | + destroyDateTimePicker($(this)); | ||
2601 | + break; | ||
2602 | + case 'reset': | ||
2603 | + this.value = this.defaultValue; | ||
2604 | + if (!this.value || !datetimepicker.data('xdsoft_datetime').isValidDate(dateHelper.parseDate(this.value, options.format))) { | ||
2605 | + datetimepicker.data('changed', false); | ||
2606 | + } | ||
2607 | + datetimepicker.data('xdsoft_datetime').setCurrentTime(this.value); | ||
2608 | + break; | ||
2609 | + case 'validate': | ||
2610 | + $input = datetimepicker.data('input'); | ||
2611 | + $input.trigger('blur.xdsoft'); | ||
2612 | + break; | ||
2613 | + default: | ||
2614 | + if (datetimepicker[opt] && $.isFunction(datetimepicker[opt])) { | ||
2615 | + result = datetimepicker[opt](opt2); | ||
2616 | + } | ||
2617 | + } | ||
2618 | + } else { | ||
2619 | + datetimepicker | ||
2620 | + .setOptions(opt); | ||
2621 | + } | ||
2622 | + return 0; | ||
2623 | + } | ||
2624 | + if ($.type(opt) !== 'string') { | ||
2625 | + if (!options.lazyInit || options.open || options.inline) { | ||
2626 | + createDateTimePicker($(this)); | ||
2627 | + } else { | ||
2628 | + lazyInit($(this)); | ||
2629 | + } | ||
2630 | + } | ||
2631 | + }); | ||
2632 | + | ||
2633 | + return result; | ||
2634 | + }; | ||
2635 | + | ||
2636 | + $.fn.datetimepicker.defaults = default_options; | ||
2637 | + | ||
2638 | + function HighlightedDate(date, desc, style) { | ||
2639 | + "use strict"; | ||
2640 | + this.date = date; | ||
2641 | + this.desc = desc; | ||
2642 | + this.style = style; | ||
2643 | + } | ||
2644 | +}; | ||
2645 | +;(function (factory) { | ||
2646 | + if ( typeof define === 'function' && define.amd ) { | ||
2647 | + // AMD. Register as an anonymous module. | ||
2648 | + define(['jquery', 'jquery-mousewheel'], factory); | ||
2649 | + } else if (typeof exports === 'object') { | ||
2650 | + // Node/CommonJS style for Browserify | ||
2651 | + module.exports = factory(require('jquery'));; | ||
2652 | + } else { | ||
2653 | + // Browser globals | ||
2654 | + factory(jQuery); | ||
2655 | + } | ||
2656 | +}(datetimepickerFactory)); | ||
2657 | + | ||
2658 | + |
static/datetimepicker/jquery.js
0 → 100644
1 | +/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license | ||
2 | +//@ sourceMappingURL=jquery-1.10.2.min.map | ||
3 | +*/ | ||
4 | +(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav></:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t | ||
5 | +}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Ct=/^(?:checkbox|radio)$/i,Nt=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle); | ||
6 | +u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=un(e,t),Pt.detach()),Gt[e]=n),n}function un(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,n){x.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(x.css(e,"display"))?x.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x.support.opacity||(x.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=x.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===x.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,n){return n?x.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,n){x.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?x(e).position()[n]+"px":r):t}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!x.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||x.css(e,"display"))},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(x.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Ct.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),x.param=function(e,n){var r,i=[],o=function(e,t){t=x.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var mn,yn,vn=x.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Cn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Nn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=x.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=o.href}catch(Ln){yn=a.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(T)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(l){var u;return o[l]=!0,x.each(e[l]||[],function(e,l){var c=l(n,r,i);return"string"!=typeof c||a||o[c]?a?!(u=c):t:(n.dataTypes.unshift(c),s(c),!1)}),u}return s(n.dataTypes[0])||!o["*"]&&s("*")}function _n(e,n){var r,i,o=x.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,l=e.indexOf(" ");return l>=0&&(i=e.slice(l,e.length),e=e.slice(0,l)),x.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&x.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?x("<div>").append(x.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Cn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_n(_n(e,x.ajaxSettings),t):_n(x.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,l,u,c,p=x.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),g=x.Callbacks("once memory"),m=p.statusCode||{},y={},v={},b=0,w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),k(0,t),this}};if(h.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=x.trim(p.dataType||"*").toLowerCase().match(T)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(mn[3]||("http:"===mn[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=x.param(p.data,p.traditional)),qn(An,p,n,C),2===b)return C;l=p.global,l&&0===x.active++&&x.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Nn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(x.lastModified[o]&&C.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&C.setRequestHeader("If-None-Match",x.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)C.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,C,p)===!1||2===b))return C.abort();w="abort";for(i in{success:1,error:1,complete:1})C[i](p[i]);if(u=qn(jn,p,n,C)){C.readyState=1,l&&d.trigger("ajaxSend",[C,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){C.abort("timeout")},p.timeout));try{b=1,u.send(y,k)}catch(N){if(!(2>b))throw N;k(-1,N)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&clearTimeout(s),u=t,a=i||"",C.readyState=e>0?4:0,c=e>=200&&300>e||304===e,r&&(w=Mn(p,C,r)),w=On(p,w,C,c),c?(p.ifModified&&(T=C.getResponseHeader("Last-Modified"),T&&(x.lastModified[o]=T),T=C.getResponseHeader("etag"),T&&(x.etag[o]=T)),204===e||"HEAD"===p.type?N="nocontent":304===e?N="notmodified":(N=w.state,y=w.data,v=w.error,c=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),C.status=e,C.statusText=(n||N)+"",c?h.resolveWith(f,[y,N,C]):h.rejectWith(f,[C,N,v]),C.statusCode(m),m=t,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[C,p,c?y:v]),g.fireWith(f,[C,N]),l&&(d.trigger("ajaxComplete",[C,p]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,n){return x.get(e,t,n,"script")}}),x.each(["get","post"],function(e,n){x[n]=function(e,r,i,o){return x.isFunction(r)&&(o=o||i,i=r,r=t),x.ajax({url:e,type:n,dataType:o,data:r,success:i})}});function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in l)if(l[s]&&l[s].test(o)){u.unshift(s);break}if(u[0]in r)a=u[0];else{for(s in r){if(!u[0]||e.converters[s+" "+u[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==u[0]&&u.unshift(a),r[a]):t}function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){a===!0?a=u[i]:u[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),x.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=a.head||x("head")[0]||a.documentElement;return{send:function(t,i){n=a.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Fn=[],Bn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Fn.pop()||x.expando+"_"+vn++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,l=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return l||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=x.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,l?n[l]=n[l].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||x.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Fn.push(o)),s&&x.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}x.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=x.ajaxSettings.xhr(),x.support.cors=!!Rn&&"withCredentials"in Rn,Rn=x.support.ajax=!!Rn,Rn&&x.ajaxTransport(function(n){if(!n.crossDomain||x.support.cors){var r;return{send:function(i,o){var a,s,l=n.xhr();if(n.username?l.open(n.type,n.url,n.async,n.username,n.password):l.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)l[s]=n.xhrFields[s];n.mimeType&&l.overrideMimeType&&l.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)l.setRequestHeader(s,i[s])}catch(u){}l.send(n.hasContent&&n.data||null),r=function(e,i){var s,u,c,p;try{if(r&&(i||4===l.readyState))if(r=t,a&&(l.onreadystatechange=x.noop,$n&&delete Pn[a]),i)4!==l.readyState&&l.abort();else{p={},s=l.status,u=l.getAllResponseHeaders(),"string"==typeof l.responseText&&(p.text=l.responseText);try{c=l.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,u)},n.async?4===l.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},x(e).unload($n)),Pn[a]=r),l.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+w+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Yn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),a=(x.cssNumber[e]||"px"!==o&&+r)&&Yn.exec(x.css(n.elem,e)),s=1,l=20;if(a&&a[3]!==o){o=o||a[3],i=i||[],a=+r||1;do s=s||".5",a/=s,x.style(n.elem,e,a+o);while(s!==(s=n.cur()/r)&&1!==s&&--l)}return i&&(a=n.start=+a||+r||0,n.unit=o,n.end=i[1]?a+(i[1]+1)*i[2]:+i[2]),n}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;for(;a>o;o++)if(r=i[o].call(n,t,e))return r}function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,u.startTime+u.duration-t),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;for(;l>a;a++)u.tweens[a].run(o);return s.notifyWith(e,[u,o,n]),1>o&&l?n:(s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?s.resolveWith(e,[u,t]):s.rejectWith(e,[u,t]),this}}),c=u.props;for(tr(c,u.opts.specialEasing);a>o;o++)if(r=Gn[o].call(u,e,c,u.opts))return r;return x.map(c,Zn,u),x.isFunction(u.opts.start)&&u.opts.start.call(e,u),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always)}function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=x.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(er,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&nn(e),d=x._data(e,"fxshow");n.queue||(s=x._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,x.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(x.support.inlineBlockNeedsLayout&&"inline"!==ln(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",x.support.shrinkWrapBlocks||u.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Vn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show"))continue;c[r]=d&&d[r]||x.style(e,r)}if(!x.isEmptyObject(c)){d?"hidden"in d&&(f=d.hidden):d=x._data(e,"fxshow",{}),o&&(d.hidden=!f),f?x(e).show():u.done(function(){x(e).hide()}),u.done(function(){var t;x._removeData(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)a=Zn(f?d[r]:0,r,u),r in d||(d[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}x.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),a=function(){var t=er(this,x.extend({},e),o);(i||x._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=x.timers,a=x._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=x._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,a=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=rr.prototype.init,x.fx.tick=function(){var e,n=x.timers,r=0;for(Xn=x.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||x.fx.stop(),Xn=t},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){Un||(Un=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(Un),Un=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){x.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,x.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},x.offset={setOffset:function(e,t,n){var r=x.css(e,"position");"static"===r&&(e.style.position="relative");var i=x(e),o=i.offset(),a=x.css(e,"top"),s=x.css(e,"left"),l=("absolute"===r||"fixed"===r)&&x.inArray("auto",[a,s])>-1,u={},c={},p,f;l?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),x.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(u.top=t.top-o.top+p),null!=t.left&&(u.left=t.left-o.left+f),"using"in t?t.using.call(e,u):i.css(u)}},x.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===x.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(n=e.offset()),n.top+=x.css(e[0],"borderTopWidth",!0),n.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-x.css(r,"marginTop",!0),left:t.left-n.left-x.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);x.fn[e]=function(i){return x.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?x(a).scrollLeft():o,r?o:x(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return x.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}x.each({Height:"height",Width:"width"},function(e,n){x.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){x.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return x.access(this,function(n,r,i){var o;return x.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?x.css(n,r,s):x.style(n,r,i,s)},n,a?i:t,a,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:(e.jQuery=e.$=x,"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}))})(window); |
static/datetimepicker/karma.conf.js
0 → 100644
1 | +module.exports = function(config) { | ||
2 | + config.set({ | ||
3 | + basePath: '', | ||
4 | + frameworks: ['mocha', 'chai'], | ||
5 | + files: [ | ||
6 | + 'jquery.datetimepicker.css', | ||
7 | + 'node_modules/php-date-formatter/js/php-date-formatter.js', | ||
8 | + 'jquery.js', | ||
9 | + 'jquery.datetimepicker.js', | ||
10 | + 'tests/bootstrap.js', | ||
11 | + 'tests/tests/*.js' | ||
12 | + ], | ||
13 | + reporters: ['progress'], | ||
14 | + port: 9876, | ||
15 | + colors: true, | ||
16 | + logLevel: config.LOG_INFO, | ||
17 | + browsers: ['Firefox'], | ||
18 | + autoWatch: true, | ||
19 | + singleRun: false, // Karma captures browsers, runs the tests and exits | ||
20 | + concurrency: Infinity, | ||
21 | + plugins: [ | ||
22 | + 'karma-firefox-launcher', | ||
23 | + 'karma-mocha', | ||
24 | + 'karma-chai' | ||
25 | + ], | ||
26 | + client: { | ||
27 | + captureConsole: true | ||
28 | + } | ||
29 | + }) | ||
30 | +}; | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
static/datetimepicker/package-lock.json
0 → 100644
This diff could not be displayed because it is too large.
static/datetimepicker/package.json
0 → 100644
1 | +{ | ||
2 | + "name": "jquery-datetimepicker", | ||
3 | + "version": "2.5.20", | ||
4 | + "description": "jQuery Plugin DateTimePicker it is DatePicker and TimePicker in one", | ||
5 | + "main": "build/jquery.datetimepicker.full.min.js", | ||
6 | + "scripts": { | ||
7 | + "test": "karma start --browsers Firefox karma.conf.js --single-run", | ||
8 | + "concat": "concat-cli -f node_modules/php-date-formatter/js/php-date-formatter.min.js jquery.datetimepicker.js node_modules/jquery-mousewheel/jquery.mousewheel.js -o build/jquery.datetimepicker.full.js", | ||
9 | + "minify": "uglifyjs jquery.datetimepicker.js -c -m -o build/jquery.datetimepicker.min.js && uglifycss jquery.datetimepicker.css > build/jquery.datetimepicker.min.css", | ||
10 | + "minifyconcat": "uglifyjs build/jquery.datetimepicker.full.js -c -m -o build/jquery.datetimepicker.full.min.js", | ||
11 | + "github": "git add --all && git commit -m \"New version %npm_package_version% \" && git tag %npm_package_version% && git push --tags origin HEAD:master && npm publish", | ||
12 | + "build": "npm run minify && npm run concat && npm run minifyconcat", | ||
13 | + "public": "npm run test && npm version patch --no-git-tag-version && npm run build && npm run github" | ||
14 | + }, | ||
15 | + "repository": { | ||
16 | + "type": "git", | ||
17 | + "url": "https://github.com/xdan/datetimepicker.git" | ||
18 | + }, | ||
19 | + "keywords": [ | ||
20 | + "jquery-plugin", | ||
21 | + "calendar", | ||
22 | + "date", | ||
23 | + "time", | ||
24 | + "datetime", | ||
25 | + "datepicker", | ||
26 | + "timepicker" | ||
27 | + ], | ||
28 | + "author": "Chupurnov <chupurnov@gmail.com> (https://xdsoft.net/)", | ||
29 | + "license": "MIT", | ||
30 | + "bugs": { | ||
31 | + "url": "https://github.com/xdan/datetimepicker/issues" | ||
32 | + }, | ||
33 | + "homepage": "https://github.com/xdan/datetimepicker", | ||
34 | + "dependencies": { | ||
35 | + "jquery": ">= 1.7.2", | ||
36 | + "jquery-mousewheel": ">= 3.1.13", | ||
37 | + "php-date-formatter": "^1.3.4" | ||
38 | + }, | ||
39 | + "devDependencies": { | ||
40 | + "chai": "^4.1.2", | ||
41 | + "concat": "azer/concat", | ||
42 | + "concat-cli": "^4.0.0", | ||
43 | + "karma": "^2.0.0", | ||
44 | + "karma-chai": "^0.1.0", | ||
45 | + "karma-firefox-launcher": "^1.1.0", | ||
46 | + "karma-mocha": "^1.3.0", | ||
47 | + "mocha": "^5.0.4", | ||
48 | + "uglifycss": "^0.0.27", | ||
49 | + "uglifyjs": "^2.4.10" | ||
50 | + } | ||
51 | +} |
static/datetimepicker/screen/1.png
0 → 100644
9.48 KB
static/datetimepicker/screen/2.png
0 → 100644
5.02 KB
static/datetimepicker/screen/3.1.png
0 → 100644
4.31 KB
static/datetimepicker/screen/3.png
0 → 100644
2.44 KB
static/datetimepicker/screen/4.png
0 → 100644
12.3 KB
static/datetimepicker/screen/5.png
0 → 100644
13.8 KB
static/datetimepicker/screen/6.png
0 → 100644
16.9 KB
static/datetimepicker/tests/app.css
0 → 100644
File mode changed
static/datetimepicker/tests/index.html
0 → 100644
1 | +<!doctype html> | ||
2 | +<html> | ||
3 | +<head> | ||
4 | + <meta charset="UTF-8"/> | ||
5 | + <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"/> | ||
6 | + <meta http-equiv="X-UA-Compatible" content="ie=edge"/> | ||
7 | + <title>jQuery DateTimepicker Tests </title> | ||
8 | + <link rel="stylesheet" href="../node_modules/mocha/mocha.css" /> | ||
9 | +</head> | ||
10 | +<body> | ||
11 | +<div id="mocha"></div> | ||
12 | + | ||
13 | +<script src="../node_modules/mocha/mocha.js"></script> | ||
14 | +<script src="../node_modules/chai/chai.js"></script> | ||
15 | + | ||
16 | +<script> | ||
17 | + mocha.ui('bdd'); | ||
18 | + mocha.reporter('html'); | ||
19 | +</script> | ||
20 | + | ||
21 | +<link rel="stylesheet" href="./app.css" /> | ||
22 | +<link rel="stylesheet" href="../jquery.datetimepicker.css" /> | ||
23 | +<script src="../jquery.js"></script> | ||
24 | + | ||
25 | +<script src="../node_modules/php-date-formatter/js/php-date-formatter.js"></script> | ||
26 | +<script src="../jquery.datetimepicker.js"></script> | ||
27 | + | ||
28 | +<script src="./tests/bootstrap.js"></script> | ||
29 | +<script src="./tests/init.js"></script> | ||
30 | +<script src="./tests/destroy.js"></script> | ||
31 | +<script src="./tests/options.js"></script> | ||
32 | +<script src="./tests/methods.js"></script> | ||
33 | +<script src="./tests/events.js"></script> | ||
34 | + | ||
35 | +<script> | ||
36 | + window.onload = function() { | ||
37 | + if (window.mochaPhantomJS) { | ||
38 | + mochaPhantomJS.run(); | ||
39 | + } else { | ||
40 | + mocha.run(); | ||
41 | + } | ||
42 | + }; | ||
43 | +</script> | ||
44 | +</body> | ||
45 | +</html> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<!DOCTYPE html> | ||
2 | +<html> | ||
3 | + <head> | ||
4 | + <title>Input In Container Fixed To Bottom Of Viewport | datetimepicker Tests</title> | ||
5 | + <meta charset="UTF-8"> | ||
6 | + <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||
7 | + | ||
8 | + <link rel="stylesheet" type="text/css" href="../jquery.datetimepicker.css"/> | ||
9 | + | ||
10 | + <style> | ||
11 | + body { | ||
12 | + margin: 0; | ||
13 | + padding: 0; | ||
14 | + } | ||
15 | + | ||
16 | + main { | ||
17 | + width: 960px; | ||
18 | + margin: 0 auto; | ||
19 | + } | ||
20 | + | ||
21 | + #search { | ||
22 | + position: fixed; | ||
23 | + bottom: 0; | ||
24 | + z-index: 3; | ||
25 | + width: 100%; | ||
26 | + color: #f0f0f0; | ||
27 | + background-color: #333; | ||
28 | + opacity: 0.9; | ||
29 | + -webkit-opacity: 0.9; | ||
30 | + -moz-opacity: 0.9; | ||
31 | + } | ||
32 | + | ||
33 | + #search form { | ||
34 | + width: 960px; | ||
35 | + margin: 0 auto; | ||
36 | + padding: 0.5em; | ||
37 | + } | ||
38 | + | ||
39 | + #search form > div, | ||
40 | + #filters form > div { | ||
41 | + display: inline; | ||
42 | + } | ||
43 | + </style> | ||
44 | + </head> | ||
45 | + | ||
46 | + <body> | ||
47 | + <main> | ||
48 | + <h1>Input In Container Fixed To Bottom Of Viewport</h1> | ||
49 | + | ||
50 | + <div id="filters"> | ||
51 | + <form method="post" action="?"> | ||
52 | + <div> | ||
53 | + <label for="filter-date">Date</label> | ||
54 | + <input type="text" name="filter-date" id="filter-date"/> | ||
55 | + </div> | ||
56 | + | ||
57 | + <div> | ||
58 | + <input type="submit" value="Filter"/> | ||
59 | + </div> | ||
60 | + </form> | ||
61 | + </div> | ||
62 | + | ||
63 | + <ul> | ||
64 | + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li> | ||
65 | + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li> | ||
66 | + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li> | ||
67 | + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li> | ||
68 | + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li> | ||
69 | + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li> | ||
70 | + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li> | ||
71 | + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li> | ||
72 | + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li> | ||
73 | + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li> | ||
74 | + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li> | ||
75 | + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li> | ||
76 | + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li> | ||
77 | + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li> | ||
78 | + </ul> | ||
79 | + </main> | ||
80 | + | ||
81 | + <footer> | ||
82 | + <div id="search"> | ||
83 | + <form method="post" action="?"> | ||
84 | + <div> | ||
85 | + <label for="search-from-date">Date from</label> | ||
86 | + <input type="text" name="search-from-date" id="search-from-date"/> | ||
87 | + </div> | ||
88 | + | ||
89 | + <div> | ||
90 | + <label for="search-to-date">Date to</label> | ||
91 | + <input type="text" name="search-to-date" id="search-to-date"/> | ||
92 | + </div> | ||
93 | + | ||
94 | + <div> | ||
95 | + <input type="submit" value="Search"/> | ||
96 | + </div> | ||
97 | + </form> | ||
98 | + </div> | ||
99 | + </footer> | ||
100 | + | ||
101 | + <script src="../jquery.js"></script> | ||
102 | + <script src="../build/jquery.datetimepicker.full.js"></script> | ||
103 | + | ||
104 | + <script> | ||
105 | + /*jslint browser:true*/ | ||
106 | + /*global jQuery, document*/ | ||
107 | + | ||
108 | + jQuery(document).ready(function () { | ||
109 | + 'use strict'; | ||
110 | + | ||
111 | + jQuery('#filter-date, #search-from-date, #search-to-date').datetimepicker(); | ||
112 | + }); | ||
113 | + </script> | ||
114 | + </body> | ||
115 | +</html> |
1 | +<!DOCTYPE html> | ||
2 | +<html> | ||
3 | + <head> | ||
4 | + <title>Input In Container Fixed To Top Of Viewport | datetimepicker Tests</title> | ||
5 | + <meta charset="UTF-8"> | ||
6 | + <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||
7 | + | ||
8 | + <link rel="stylesheet" type="text/css" href="../jquery.datetimepicker.css"/> | ||
9 | + | ||
10 | + <style> | ||
11 | + body { | ||
12 | + margin: 0; | ||
13 | + padding: 0; | ||
14 | + } | ||
15 | + | ||
16 | + main { | ||
17 | + width: 960px; | ||
18 | + margin: 0 auto; | ||
19 | + } | ||
20 | + | ||
21 | + #search { | ||
22 | + position: fixed; | ||
23 | + top: 0; | ||
24 | + z-index: 3; | ||
25 | + width: 100%; | ||
26 | + color: #f0f0f0; | ||
27 | + background-color: #333; | ||
28 | + opacity: 0.9; | ||
29 | + -webkit-opacity: 0.9; | ||
30 | + -moz-opacity: 0.9; | ||
31 | + } | ||
32 | + | ||
33 | + #search form { | ||
34 | + width: 960px; | ||
35 | + margin: 0 auto; | ||
36 | + padding: 0.5em; | ||
37 | + } | ||
38 | + | ||
39 | + #search form > div, | ||
40 | + #filters form > div { | ||
41 | + display: inline; | ||
42 | + } | ||
43 | + </style> | ||
44 | + </head> | ||
45 | + | ||
46 | + <body> | ||
47 | + <main> | ||
48 | + <h1>Input In Container Fixed To Top Of Viewport</h1> | ||
49 | + | ||
50 | + <div id="filters"> | ||
51 | + <form method="post" action="?"> | ||
52 | + <div> | ||
53 | + <label for="filter-date">Date</label> | ||
54 | + <input type="text" name="filter-date" id="filter-date"/> | ||
55 | + </div> | ||
56 | + | ||
57 | + <div> | ||
58 | + <input type="submit" value="Filter"/> | ||
59 | + </div> | ||
60 | + </form> | ||
61 | + </div> | ||
62 | + | ||
63 | + <ul> | ||
64 | + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li> | ||
65 | + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li> | ||
66 | + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li> | ||
67 | + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li> | ||
68 | + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li> | ||
69 | + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li> | ||
70 | + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li> | ||
71 | + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li> | ||
72 | + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li> | ||
73 | + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li> | ||
74 | + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li> | ||
75 | + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li> | ||
76 | + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li> | ||
77 | + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li> | ||
78 | + </ul> | ||
79 | + </main> | ||
80 | + | ||
81 | + <footer> | ||
82 | + <div id="search"> | ||
83 | + <form method="post" action="?"> | ||
84 | + <div> | ||
85 | + <label for="search-from-date">Date from</label> | ||
86 | + <input type="text" name="search-from-date" id="search-from-date"/> | ||
87 | + </div> | ||
88 | + | ||
89 | + <div> | ||
90 | + <label for="search-to-date">Date to</label> | ||
91 | + <input type="text" name="search-to-date" id="search-to-date"/> | ||
92 | + </div> | ||
93 | + | ||
94 | + <div> | ||
95 | + <input type="submit" value="Search"/> | ||
96 | + </div> | ||
97 | + </form> | ||
98 | + </div> | ||
99 | + </footer> | ||
100 | + | ||
101 | + <script src="../jquery.js"></script> | ||
102 | + <script src="../build/jquery.datetimepicker.full.js"></script> | ||
103 | + | ||
104 | + <script> | ||
105 | + /*jslint browser:true*/ | ||
106 | + /*global jQuery, document*/ | ||
107 | + | ||
108 | + jQuery(document).ready(function () { | ||
109 | + 'use strict'; | ||
110 | + | ||
111 | + jQuery('#filter-date, #search-from-date, #search-to-date').datetimepicker(); | ||
112 | + }); | ||
113 | + </script> | ||
114 | + </body> | ||
115 | +</html> |
1 | +var inputs = []; | ||
2 | + | ||
3 | +var box = document.createElement('div'); | ||
4 | +document.body.appendChild(box); | ||
5 | + | ||
6 | + | ||
7 | +var getInput = function () { | ||
8 | + var input = document.createElement('input'); | ||
9 | + input.setAttribute('type', 'text'); | ||
10 | + inputs.push(input); | ||
11 | + box.appendChild(input); | ||
12 | + return input; | ||
13 | +}; | ||
14 | + | ||
15 | +var clear = function() { | ||
16 | + inputs.forEach(function (inp) { | ||
17 | + $(inp).datetimepicker('destroy'); | ||
18 | + inp.parentNode && inp.parentNode.removeChild(inp) | ||
19 | + }); | ||
20 | +}; | ||
21 | + | ||
22 | +var PICKER = 'xdsoft_datetimepicker'; | ||
23 | + | ||
24 | +var simulateEvent = function (type, element, keyCodeArg, options) { | ||
25 | + if (!keyCodeArg) { | ||
26 | + keyCodeArg = 0; | ||
27 | + } | ||
28 | + | ||
29 | + if (element instanceof jQuery) { | ||
30 | + element = element[0]; | ||
31 | + } | ||
32 | + | ||
33 | + var evt = (element.ownerDocument || document).createEvent('HTMLEvents') | ||
34 | + evt.initEvent(type, true, true); | ||
35 | + evt.keyCode = keyCodeArg; | ||
36 | + evt.which = keyCodeArg; | ||
37 | + | ||
38 | + if (options) { | ||
39 | + options(evt); | ||
40 | + } | ||
41 | + | ||
42 | + if (type.match(/^mouse/)) { | ||
43 | + ['pageX', 'pageY', 'clientX', 'clientY'].forEach(function (key) { | ||
44 | + if (evt[key] === undefined) { | ||
45 | + evt[key] = 0; | ||
46 | + } | ||
47 | + }) | ||
48 | + } | ||
49 | + | ||
50 | + element.dispatchEvent(evt); | ||
51 | +}; | ||
52 | + | ||
53 | +afterEach(clear); | ||
54 | +var expect = chai.expect; | ||
55 | +chai.config.includeStack = true | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
static/datetimepicker/tests/tests/destroy.js
0 → 100644
1 | +describe('Check destructor', function () { | ||
2 | + describe('Init picker and after this init again with command destroy', function () { | ||
3 | + it('Should remove picker from DOM and remove all listeners from original input', function (done) { | ||
4 | + var input = getInput(); | ||
5 | + $(input).datetimepicker(); | ||
6 | + var dtp = $(input).data('xdsoft_datetimepicker'); | ||
7 | + expect(dtp).to.be.not.equal(null); | ||
8 | + expect(dtp[0].tagName).to.be.equal('DIV'); | ||
9 | + expect(dtp[0].classList.contains('xdsoft_datetimepicker')).to.be.true; | ||
10 | + expect(dtp.is(':hidden')).to.be.true; | ||
11 | + | ||
12 | + $(input).datetimepicker('destroy'); | ||
13 | + expect($(input).data('xdsoft_datetimepicker')).to.be.equal(null); | ||
14 | + | ||
15 | + $(input).trigger('mousedown') | ||
16 | + setTimeout(function () { | ||
17 | + expect(dtp.is(':hidden')).to.be.true; | ||
18 | + done(); | ||
19 | + }, 150) | ||
20 | + }); | ||
21 | + }); | ||
22 | +}); | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
static/datetimepicker/tests/tests/events.js
0 → 100644
1 | +describe('Test events', function () { | ||
2 | + describe('onSelectDate', function () { | ||
3 | + it('Should fired after user selected day', function (done) { | ||
4 | + var input= $(getInput()).val('2011/04/15'); | ||
5 | + | ||
6 | + var picker = input.datetimepicker({ | ||
7 | + onSelectDate: function (time, inp, evt) { | ||
8 | + expect(picker).to.be.equal(this); | ||
9 | + expect(time.getDate()).to.be.equal(17); | ||
10 | + expect(time.getMonth()).to.be.equal(3); | ||
11 | + expect(time.getFullYear()).to.be.equal(2011); | ||
12 | + expect(inp[0]).to.be.equal(input[0]); | ||
13 | + expect(evt.type).to.be.equal('click'); | ||
14 | + done(); | ||
15 | + }, | ||
16 | + format: 'Y/m/d' | ||
17 | + }).trigger('mousedown').data(PICKER); | ||
18 | + | ||
19 | + setTimeout(function () { | ||
20 | + var select = picker.find('td[data-date="17"][data-month="3"][data-year="2011"]'); | ||
21 | + expect(select.length).to.be.equal(1); | ||
22 | + select.trigger('click'); | ||
23 | + }, 100); | ||
24 | + }); | ||
25 | + }); | ||
26 | +}); | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
static/datetimepicker/tests/tests/init.js
0 → 100644
1 | +describe('Init', function () { | ||
2 | + describe('jQuery.fn', function () { | ||
3 | + it('Should have datetimepicker method', function () { | ||
4 | + expect(typeof jQuery.fn.datetimepicker).to.be.equal('function'); | ||
5 | + expect(typeof $.fn.datetimepicker).to.be.equal('function'); | ||
6 | + }); | ||
7 | + }); | ||
8 | + describe('jQuery.fn.datetimepicker', function () { | ||
9 | + it('Should have `defaults` property', function () { | ||
10 | + expect(typeof jQuery.fn.datetimepicker.defaults).to.be.equal('object'); | ||
11 | + expect(jQuery.fn.datetimepicker.defaults.format).to.be.equal('Y/m/d H:i'); | ||
12 | + }); | ||
13 | + }); | ||
14 | + describe('Create datetimepicker', function () { | ||
15 | + describe('Without parameters', function () { | ||
16 | + it('Should create plugin with default options', function (done) { | ||
17 | + var input = getInput(); | ||
18 | + $(input).datetimepicker(); | ||
19 | + var dtp = $(input).data('xdsoft_datetimepicker'); | ||
20 | + expect(dtp).to.be.not.equal(null); | ||
21 | + expect(dtp[0].tagName).to.be.equal('DIV'); | ||
22 | + expect(dtp[0].classList.contains('xdsoft_datetimepicker')).to.be.true; | ||
23 | + expect(dtp.is(':hidden')).to.be.true; | ||
24 | + $(input).trigger('mousedown') | ||
25 | + setTimeout(function () { | ||
26 | + expect(dtp.is(':hidden')).to.be.false; | ||
27 | + done(); | ||
28 | + }, 150) | ||
29 | + }); | ||
30 | + }); | ||
31 | + describe('In inline mode', function () { | ||
32 | + it('Should create picker and replace original input', function () { | ||
33 | + var input = getInput(); | ||
34 | + $(input).datetimepicker({ | ||
35 | + inline: true | ||
36 | + }); | ||
37 | + var dtp = $(input).data('xdsoft_datetimepicker'); | ||
38 | + expect(dtp.is(':hidden')).to.be.false; | ||
39 | + expect($(input).is(':hidden')).to.be.true; | ||
40 | + }); | ||
41 | + }); | ||
42 | + }); | ||
43 | + describe('Set locale', function () { | ||
44 | + describe('Change locale', function () { | ||
45 | + it('Should create different pickers fro all locales', function (done) { | ||
46 | + $.datetimepicker.setLocale('en'); | ||
47 | + var $input = $(getInput()); | ||
48 | + $input.datetimepicker({inline: true}); | ||
49 | + setTimeout(function () { | ||
50 | + var text = $input.data('xdsoft_datetimepicker').text(); | ||
51 | + $input.datetimepicker('destroy'); | ||
52 | + $.datetimepicker.setLocale('ru'); | ||
53 | + $input.datetimepicker({inline: true}); | ||
54 | + setTimeout(function () { | ||
55 | + expect($input.data('xdsoft_datetimepicker').text()).to.be.not.equal(text); | ||
56 | + done(); | ||
57 | + }, 100) | ||
58 | + }, 100) | ||
59 | + }); | ||
60 | + }); | ||
61 | + }); | ||
62 | + describe('Select day', function () { | ||
63 | + it('Should set selected date to input by format', function (done) { | ||
64 | + var input= $(getInput()).val('2011/04/15'); | ||
65 | + | ||
66 | + var picker = input.datetimepicker({ | ||
67 | + format: 'Y/m/d' | ||
68 | + }).trigger('mousedown').data(PICKER); | ||
69 | + | ||
70 | + setTimeout(function () { | ||
71 | + var start = picker.find('td[data-date="15"][data-month="3"][data-year="2011"]'); | ||
72 | + expect(start.length).to.be.equal(1); | ||
73 | + expect(start.hasClass('xdsoft_disabled')).to.be.false; | ||
74 | + expect(start.hasClass('xdsoft_current')).to.be.true; | ||
75 | + var select = picker.find('td[data-date="17"][data-month="3"][data-year="2011"]'); | ||
76 | + expect(start.length).to.be.equal(1); | ||
77 | + select.trigger('click'); | ||
78 | + expect(input.val()).to.be.equal('2011/04/17') | ||
79 | + done(); | ||
80 | + }, 100); | ||
81 | + }); | ||
82 | + }); | ||
83 | +}); | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
static/datetimepicker/tests/tests/methods.js
0 → 100644
1 | +describe('Test methods', function () { | ||
2 | + describe('Show', function () { | ||
3 | + it('Should show picker', function () { | ||
4 | + var input= $(getInput()); | ||
5 | + var picker = input | ||
6 | + .datetimepicker() | ||
7 | + .datetimepicker('show') | ||
8 | + .data(PICKER); | ||
9 | + | ||
10 | + expect(picker.is(':hidden')).to.be.false; | ||
11 | + }); | ||
12 | + }); | ||
13 | + describe('Hide', function () { | ||
14 | + it('Should hide picker', function () { | ||
15 | + var input= $(getInput()); | ||
16 | + var picker = input | ||
17 | + .datetimepicker() | ||
18 | + .datetimepicker('show') | ||
19 | + .data(PICKER); | ||
20 | + | ||
21 | + expect(picker.is(':hidden')).to.be.false; | ||
22 | + input.datetimepicker('hide') | ||
23 | + expect(picker.is(':hidden')).to.be.true; | ||
24 | + }); | ||
25 | + }); | ||
26 | + describe('Toggle', function () { | ||
27 | + it('Should hide/show picker', function () { | ||
28 | + var input= $(getInput()); | ||
29 | + var picker = input | ||
30 | + .datetimepicker() | ||
31 | + .datetimepicker('show') | ||
32 | + .data(PICKER); | ||
33 | + | ||
34 | + expect(picker.is(':hidden')).to.be.false; | ||
35 | + input.datetimepicker('toggle') | ||
36 | + expect(picker.is(':hidden')).to.be.true; | ||
37 | + input.datetimepicker('toggle') | ||
38 | + expect(picker.is(':hidden')).to.be.false; | ||
39 | + }); | ||
40 | + }); | ||
41 | + describe('Reset', function () { | ||
42 | + it('Should restore default value', function (done) { | ||
43 | + var input= $('<input type="text" value="15.12.2008"/>').appendTo(document.body); | ||
44 | + | ||
45 | + var picker = input | ||
46 | + .datetimepicker({format: 'd.m.Y'}) | ||
47 | + .datetimepicker('show') | ||
48 | + .data(PICKER); | ||
49 | + | ||
50 | + setTimeout(function () { | ||
51 | + var select = picker.find('td[data-date="16"][data-month="11"][data-year="2008"]'); | ||
52 | + expect(select.length).to.be.equal(1); | ||
53 | + select.trigger('click'); | ||
54 | + expect(input.val()).to.be.equal('16.12.2008'); | ||
55 | + input.datetimepicker('reset'); | ||
56 | + expect(input.val()).to.be.equal('15.12.2008'); | ||
57 | + input.datetimepicker('destroy').remove(); | ||
58 | + done(); | ||
59 | + }, 100) | ||
60 | + }); | ||
61 | + }); | ||
62 | +}); | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
static/datetimepicker/tests/tests/options.js
0 → 100644
1 | +describe('Test options', function () { | ||
2 | + describe('dayOfWeekStart', function () { | ||
3 | + it('Should change default start of week', function (done) { | ||
4 | + $.datetimepicker.setLocale('en'); | ||
5 | + var input = $(getInput()); | ||
6 | + var picker = input.datetimepicker({inline: true}).trigger('mousedown').data('xdsoft_datetimepicker'); | ||
7 | + setTimeout(function () { | ||
8 | + var day = picker.find('th').eq(0).text(); | ||
9 | + var date = picker.find('td').eq(0).text(); | ||
10 | + input.datetimepicker('destroy'); | ||
11 | + | ||
12 | + var picker2 = $(getInput()).datetimepicker({ | ||
13 | + inline: true, | ||
14 | + dayOfWeekStart: 2 | ||
15 | + }).trigger('mousedown').data(PICKER); | ||
16 | + | ||
17 | + setTimeout(function () { | ||
18 | + expect(picker2.find('th').eq(0).text()).to.be.not.equal(day); | ||
19 | + expect(picker2.find('td').eq(0).text()).to.be.not.equal(date); | ||
20 | + done(); | ||
21 | + }, 100); | ||
22 | + }, 100); | ||
23 | + }); | ||
24 | + }); | ||
25 | + describe('disabledDates and startDate', function () { | ||
26 | + it('Should disable some dates in picker and picker should be open on startDate', function (done) { | ||
27 | + var input= $(getInput()); | ||
28 | + var picker = input.datetimepicker({ | ||
29 | + disabledDates:['1986/01/08','1986/01/09','1986/01/10'], | ||
30 | + startDate: '1986/01/05' | ||
31 | + }).trigger('mousedown').data(PICKER); | ||
32 | + | ||
33 | + setTimeout(function () { | ||
34 | + var day = picker.find('td[data-date="8"][data-month="0"][data-year="1986"]'); | ||
35 | + expect(day.hasClass('xdsoft_disabled')).to.be.true; | ||
36 | + var start = picker.find('td[data-date="5"][data-month="0"][data-year="1986"]'); | ||
37 | + expect(start.length).to.be.equal(1); | ||
38 | + expect(start.hasClass('xdsoft_disabled')).to.be.false; | ||
39 | + done(); | ||
40 | + }, 100); | ||
41 | + }); | ||
42 | + }); | ||
43 | + describe('defaultDate', function () { | ||
44 | + it('Should open picker on some date', function (done) { | ||
45 | + var input= $(getInput()); | ||
46 | + var picker = input.datetimepicker({formatDate:'d.m.Y', defaultDate: '+03.01.1970'}).trigger('mousedown').data(PICKER); | ||
47 | + | ||
48 | + setTimeout(function () { | ||
49 | + var now = new Date(); | ||
50 | + now.setDate(now.getDate() + 2) | ||
51 | + var start = picker.find('td[data-date="' + now.getDate() + '"][data-month="' + now.getMonth() + '"][data-year="' + now.getFullYear() + '"]'); | ||
52 | + expect(start.length).to.be.equal(1); | ||
53 | + expect(start.hasClass('xdsoft_disabled')).to.be.false; | ||
54 | + expect(start.hasClass('xdsoft_current xdsoft_today')).to.be.true; | ||
55 | + done(); | ||
56 | + }, 100); | ||
57 | + }); | ||
58 | + }); | ||
59 | + describe('Value', function () { | ||
60 | + it('Should set value to plugin', function (done) { | ||
61 | + var input= $(getInput()); | ||
62 | + var picker = input.datetimepicker({value: '2011/04/15 05:03'}).trigger('mousedown').data(PICKER); | ||
63 | + | ||
64 | + setTimeout(function () { | ||
65 | + var start = picker.find('td[data-date="15"][data-month="3"][data-year="2011"]'); | ||
66 | + expect(start.length).to.be.equal(1); | ||
67 | + expect(start.hasClass('xdsoft_disabled')).to.be.false; | ||
68 | + done(); | ||
69 | + }, 100); | ||
70 | + }); | ||
71 | + }); | ||
72 | + describe('timepicker = false', function () { | ||
73 | + it('Should create only datepicker', function (done) { | ||
74 | + var input= $(getInput()); | ||
75 | + var picker = input.datetimepicker({ | ||
76 | + timepicker: false | ||
77 | + }).trigger('mousedown').data(PICKER); | ||
78 | + | ||
79 | + setTimeout(function () { | ||
80 | + var timepicker = picker.find('.xdsoft_timepicker'); | ||
81 | + expect(timepicker.length).to.be.equal(1); | ||
82 | + expect(timepicker.is(':hidden')).to.be.true; | ||
83 | + done(); | ||
84 | + }, 100); | ||
85 | + }); | ||
86 | + }); | ||
87 | + describe('datepicker = false', function () { | ||
88 | + it('Should create only timepicker', function (done) { | ||
89 | + var input= $(getInput()); | ||
90 | + var picker = input.datetimepicker({ | ||
91 | + datepicker: false | ||
92 | + }).trigger('mousedown').data(PICKER); | ||
93 | + | ||
94 | + setTimeout(function () { | ||
95 | + var datepicker = picker.find('.xdsoft_datepicker'); | ||
96 | + expect(datepicker.length).to.be.equal(1); | ||
97 | + expect(datepicker.is(':hidden')).to.be.true; | ||
98 | + done(); | ||
99 | + }, 100); | ||
100 | + }); | ||
101 | + }); | ||
102 | +}); | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
static/font.css
0 → 100644
static/khu.PNG
0 → 100644
6.36 KB
static/logo.PNG
0 → 100644
25.5 KB
static/searchicon.png
0 → 100644
653 Bytes
static/toast/index.html
0 → 100644
1 | +<html> | ||
2 | +<head> | ||
3 | + <link rel="stylesheet" href="toast.css"/> | ||
4 | + <script src="toast.js" charset="utf-8"></script> | ||
5 | +</head> | ||
6 | +<script type="text/javascript"> | ||
7 | +function init () { | ||
8 | + drawToast("HTML toast likes Android"); | ||
9 | +} | ||
10 | +</script> | ||
11 | +<body onload="init();"> | ||
12 | +</body> | ||
13 | +</html> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
static/toast/toast.css
0 → 100644
1 | +#toast{ | ||
2 | + position: fixed; | ||
3 | + top: 80%; | ||
4 | + left: 50%; | ||
5 | + width: 200px; | ||
6 | + background-color: black; | ||
7 | + color:white; | ||
8 | + margin-left: -100px; | ||
9 | + border: 1px solid #666; | ||
10 | + padding: 10px 0 ; | ||
11 | + text-align:center; | ||
12 | + opacity: .9; | ||
13 | + | ||
14 | + | ||
15 | + /* opacity time */ | ||
16 | + -webkit-transition: opacity 0.5s ease-out; | ||
17 | + -moz-transition: opacity 0.5s ease-out; | ||
18 | + -ms-transition: opacity 0.5s ease-out; | ||
19 | + -o-transition: opacity 0.5s ease-out; | ||
20 | + transition: opacity 0.5s ease-out; | ||
21 | + | ||
22 | + /* round border */ | ||
23 | + -webkit-border-radius: 10px; | ||
24 | + -moz-border-radius: 10px; | ||
25 | + border-radius: 10px; | ||
26 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
static/toast/toast.js
0 → 100644
1 | +var intervalCounter = 0; | ||
2 | + | ||
3 | +function hideToast(){ | ||
4 | + var alert = document.getElementById("toast"); | ||
5 | + alert.style.opacity = 0; | ||
6 | + clearInterval(intervalCounter); | ||
7 | +} | ||
8 | + | ||
9 | +function drawToast(message){ | ||
10 | + | ||
11 | + var alert = document.getElementById("toast"); | ||
12 | + | ||
13 | + if (alert == null){ | ||
14 | + var toastHTML = '<div id="toast">' + message + '</div>'; | ||
15 | + document.body.insertAdjacentHTML('beforeEnd', toastHTML); | ||
16 | + } | ||
17 | + else{ | ||
18 | + alert.style.opacity = .9; | ||
19 | + } | ||
20 | + | ||
21 | + | ||
22 | + intervalCounter = setInterval("hideToast()", 1000); | ||
23 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
static/로그인.PNG
0 → 100644
2.42 KB
static/캡처2.PNG
0 → 100644
1.03 KB
static/캡처5.PNG
0 → 100644
26.4 KB
static/캡처6.png
0 → 100644
25.5 KB
static/캡처7.PNG
0 → 100644
18.9 KB
static/회원가입.PNG
0 → 100644
3.29 KB
templates/join.html
0 → 100644
1 | +{% extends "main.html" %} | ||
2 | +{% block head %} | ||
3 | + | ||
4 | +{% endblock %} | ||
5 | +{% block style %} | ||
6 | +<style> | ||
7 | +#btn2 { | ||
8 | + width: 150px; | ||
9 | + height: 47px; | ||
10 | + font-size:25px; | ||
11 | + font-family: '배달의민족 도현'; | ||
12 | + color: gray; | ||
13 | + background: white; | ||
14 | + border: solid 5px white; | ||
15 | + border-radius: 5px; | ||
16 | +} | ||
17 | +input[type=text] { | ||
18 | + width: 60%; | ||
19 | + padding: 12px 20px; | ||
20 | + box-sizing: border-box; | ||
21 | + border: 3px solid #ccc; | ||
22 | + -webkit-transition: 0.5s; | ||
23 | + transition: 0.5s; | ||
24 | + outline: none; | ||
25 | + font-family: '배달의민족 도현'; | ||
26 | + display: inline; | ||
27 | + float: right; | ||
28 | +} | ||
29 | +input[type=text]:focus { | ||
30 | + border: 3px solid #555; | ||
31 | +} | ||
32 | +input[type=password] { | ||
33 | + width: 60%; | ||
34 | + padding: 12px 20px; | ||
35 | + box-sizing: border-box; | ||
36 | + border: 3px solid #ccc; | ||
37 | + -webkit-transition: 0.5s; | ||
38 | + transition: 0.5s; | ||
39 | + outline: none; | ||
40 | + display: inline; | ||
41 | + float: right; | ||
42 | +} | ||
43 | +input[type=password]:focus { | ||
44 | + border: 3px solid #555; | ||
45 | +} | ||
46 | +select{ | ||
47 | + width: 60%; | ||
48 | + padding: 12px 20px; | ||
49 | + box-sizing: border-box; | ||
50 | + border: 3px solid #ccc; | ||
51 | + -webkit-transition: 0.5s; | ||
52 | + transition: 0.5s; | ||
53 | + outline: none; | ||
54 | + font-family: '배달의민족 도현'; | ||
55 | + display: inline; | ||
56 | + float: right; | ||
57 | + border-radius: 5px; | ||
58 | +} | ||
59 | +h2 { | ||
60 | + display: inline; | ||
61 | + vertical-align: bottom; | ||
62 | + | ||
63 | +} | ||
64 | +input{ | ||
65 | + | ||
66 | +} | ||
67 | +#wrapper { | ||
68 | + width: 400px; | ||
69 | + | ||
70 | +} | ||
71 | + | ||
72 | +.item{ | ||
73 | + height: 50px; | ||
74 | + | ||
75 | +} | ||
76 | + | ||
77 | +</style> | ||
78 | +{% endblock %} | ||
79 | +{% block content %} | ||
80 | +<a href="/myhome"> <img style="border-radius:15px;" width="300px;" src="{{ url_for('static', filename = 'logo.png') }}"/></a> | ||
81 | +<form action="/join/confirm" method="post"> | ||
82 | + | ||
83 | +<br><br> | ||
84 | + <div id="wrapper"> | ||
85 | + <div class="item"><H2>ID</H2><input style="border-radius:10px;" type="text" name="id" placeholder="ID 입력" required></div> | ||
86 | + <div class="item"><H2>PW</H2><input style="border-radius:10px;" type="password" name="password" placeholder="비밀번호 입력" required><br></div> | ||
87 | + <div class="item"><H2>이름</H2><input style="border-radius:10px;" type="text" name="name" placeholder="사용자 이름 입력" required><br></div> | ||
88 | + <div class="item"><H2>메일주소</H2><input style="border-radius:10px;" type="text" name="email" placeholder="메일주소 입력" required><br></div> | ||
89 | + <div class="item"><H2>전화번호</H2><input style="border-radius:10px;" type="text" name="phone" placeholder="전화번호 입력" required><br></div> | ||
90 | + <div class="item"><H2>부서 ID</H2> | ||
91 | + <select name="deptid" required><option value="1">전자정보대학</option> | ||
92 | + <option value="2">외국어대학</option> | ||
93 | + <option value="3">공과대학</option> | ||
94 | + <option value="4">예술디자인대학</option> | ||
95 | + <option value="5">체육대학</option> | ||
96 | + <option value="6">국제대학</option> | ||
97 | + <option value="7">대학본부</option></select> | ||
98 | + <br></div> | ||
99 | + | ||
100 | +</div> | ||
101 | +<br> | ||
102 | + | ||
103 | +<center><input type="submit" id="btn2" value="회원가입"></center><br> | ||
104 | + | ||
105 | +</form> | ||
106 | +{% endblock %} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
templates/layout.html
0 → 100644
1 | +<!doctype html> | ||
2 | +<html> | ||
3 | + <head> | ||
4 | + {% block head %} | ||
5 | + <link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}"> | ||
6 | + <title>{% block title %}{% endblock %} - My Webpage</title> | ||
7 | + {% endblock %} | ||
8 | + </head> | ||
9 | +<body> | ||
10 | + <div id="content">{% block content %}{% endblock %}</div> | ||
11 | + <div id="footer"> | ||
12 | + {% block footer %} | ||
13 | + © Copyright 2010 by <a href="http://domain.invalid/">you</a>. | ||
14 | + {% endblock %} | ||
15 | + </div> | ||
16 | +</body> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | -<!DOCTYPE html> | ||
2 | -<html> | ||
3 | -<head> | ||
4 | - <title>로그인화면</title> | ||
5 | -</head> | ||
6 | -<style> | ||
7 | -body { | ||
8 | - background-color: rgb(230, 243, 255); | ||
9 | -} | ||
10 | -img { | ||
11 | - display:block; | ||
12 | - margin:auto; | ||
13 | -} | ||
14 | -input[type=text] { | ||
15 | - width: 20%; | ||
16 | - padding: 12px 20px; | ||
17 | - margin: 8px 0; | ||
18 | - box-sizing: border-box; | ||
19 | - border: 3px solid #ccc; | ||
20 | - -webkit-transition: 0.5s; | ||
21 | - transition: 0.5s; | ||
22 | - outline: none; | ||
23 | -} | ||
24 | -input[type=text]:focus { | ||
25 | - border: 3px solid #555; | ||
26 | -} | ||
27 | -input[type=password] { | ||
28 | - width: 20%; | ||
29 | - padding: 12px 20px; | ||
30 | - margin: 8px 0; | ||
31 | - box-sizing: border-box; | ||
32 | - border: 3px solid #ccc; | ||
33 | - -webkit-transition: 0.5s; | ||
34 | - transition: 0.5s; | ||
35 | - outline: none; | ||
36 | - margin-right: 7px; | ||
37 | -} | ||
38 | -input[type=password]:focus { | ||
39 | - border: 3px solid #555; | ||
40 | -} | ||
41 | -#btn1 { | ||
42 | - width: 120px; | ||
43 | - height: 45px; | ||
44 | - font-size:25px; | ||
45 | - font-family: '배달의민족 도현'; | ||
46 | - color: gray; | ||
47 | - background: white; | ||
48 | - border: solid 5px white; | ||
49 | - border-radius: 5px; | ||
50 | -} | ||
51 | -#btn2 { | ||
52 | - width: 150px; | ||
53 | - height: 47px; | ||
54 | - font-size:25px; | ||
55 | - font-family: '배달의민족 도현'; | ||
56 | - color: gray; | ||
57 | - background: white; | ||
58 | - border: solid 5px white; | ||
59 | - border-radius: 5px; | ||
60 | -} | ||
61 | -h2 { | ||
62 | - font-family: '배달의민족 도현'; | ||
63 | -} | ||
64 | - | ||
65 | -</style> | ||
66 | - | ||
67 | - | ||
68 | -<body> | ||
69 | - | ||
70 | -<br><br> | ||
71 | -<img style="border-radius:15px;" width="300px;" src="캡처6.png"/> | ||
72 | -<form> | ||
73 | - | ||
74 | -<br> | ||
75 | -<center><H2>ID <input style="border-radius:10px;" type="text" name="id" placeholder="ID 입력" required><br></H2></center> | ||
76 | -<center><H2>PW <input style="border-radius:10px;" type="password" name="password" placeholder="비밀번호 입력" required><br></H2></center> | ||
77 | -<br> | ||
78 | - | ||
79 | -<center><button id="btn1">로그인</button></center><br> | ||
80 | -<center><button id="btn2">회원가입</button></center><br> | ||
81 | -<!--<center><button class="btn;" id="btn;" type="submit;"><img width="120;" height="45;" class="btn-img" src="로그인.png"></button></center><br> | ||
82 | -<center><button class="btn;" id="btn;" type="submitl"><img width="150;" height="47;" class="btn-img" src="회원가입.png"></button></center><br>--> | ||
83 | -<img width="100;" height="70;" align="bottom;" src="khu.png"/> | ||
84 | - | ||
85 | -</form> | ||
86 | - | ||
87 | - | ||
88 | -</body> | ||
89 | - | ||
90 | -</html> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +{% extends "main.html" %} | ||
2 | +{% block title %}Select Menu{% endblock %} | ||
3 | +{% block head %} | ||
4 | + | ||
5 | +{% endblock %} | ||
6 | +{% block style %} | ||
7 | +<style> | ||
8 | +body { | ||
9 | + background-color: rgb(230, 243, 255); | ||
10 | +} | ||
11 | +img { | ||
12 | + display:block; | ||
13 | + margin:auto; | ||
14 | +} | ||
15 | +input[type=text] { | ||
16 | + width: 20%; | ||
17 | + padding: 12px 20px; | ||
18 | + margin: 8px 0; | ||
19 | + box-sizing: border-box; | ||
20 | + border: 3px solid #ccc; | ||
21 | + -webkit-transition: 0.5s; | ||
22 | + transition: 0.5s; | ||
23 | + outline: none; | ||
24 | + font-family: 'MyWebFont'; | ||
25 | + min-width: 200px; | ||
26 | +} | ||
27 | +input[type=text]:focus { | ||
28 | + border: 3px solid #555; | ||
29 | +} | ||
30 | +input[type=password] { | ||
31 | + width: 20%; | ||
32 | + padding: 12px 20px; | ||
33 | + margin: 8px 0; | ||
34 | + box-sizing: border-box; | ||
35 | + border: 3px solid #ccc; | ||
36 | + -webkit-transition: 0.5s; | ||
37 | + transition: 0.5s; | ||
38 | + outline: none; | ||
39 | + margin-right: 7px; | ||
40 | + font-family: 'MyWebFont'; | ||
41 | + min-width: 200px; | ||
42 | +} | ||
43 | +input[type=password]:focus { | ||
44 | + border: 3px solid #555; | ||
45 | +} | ||
46 | +#btn1 { | ||
47 | + width: 120px; | ||
48 | + height: 45px; | ||
49 | + font-size:25px; | ||
50 | + font-family: 'MyWebFont'; | ||
51 | + color: gray; | ||
52 | + background: white; | ||
53 | + border: solid 5px white; | ||
54 | + border-radius: 5px; | ||
55 | +} | ||
56 | +#btn2 { | ||
57 | + width: 150px; | ||
58 | + height: 47px; | ||
59 | + font-size:25px; | ||
60 | + font-family: 'MyWebFont'; | ||
61 | + color: gray; | ||
62 | + background: white; | ||
63 | + border: solid 5px white; | ||
64 | + border-radius: 5px; | ||
65 | +} | ||
66 | +h2 { | ||
67 | + font-family: 'MyWebFont'; | ||
68 | +} | ||
69 | + | ||
70 | + | ||
71 | +</style> | ||
72 | +{% endblock %} | ||
73 | +{% block content %} | ||
74 | +<br><br> | ||
75 | +<br><br> | ||
76 | +<img style="border-radius:15px;" width="300px;" src="{{ url_for('static', filename = 'logo.png') }}"/> | ||
77 | + | ||
78 | + | ||
79 | +<br> | ||
80 | + <form action="/logincheck" method="post"> | ||
81 | +<center><H2>ID <input style="border-radius:10px;" type="text" name="id" placeholder="ID 입력" required><br></H2></center> | ||
82 | +<center><H2>PW <input style="border-radius:10px;" type="password" name="pw" placeholder="비밀번호 입력" required><br></H2></center> | ||
83 | +<br> | ||
84 | + | ||
85 | +<center><input type="submit" id="btn1" value="로그인" ></center><br></form> | ||
86 | +<center><button id="btn2" onclick="window.location.href='/join'">회원가입</button></center><br> | ||
87 | +{% endblock %} | ... | ... |
1 | -<!DOCTYPE html> | 1 | +<!DOCTYPE html> |
2 | -<html> | 2 | +<html> |
3 | -<head> | 3 | +<head> |
4 | - <title>대여화면1</title> | 4 | + {% block head %} |
5 | -</head> | 5 | + <title>{% block title %}{% endblock %} - My Webpage</title> |
6 | -<style> | 6 | + {% endblock %} |
7 | -body { | 7 | +<link rel="stylesheet" href="{{url_for('static', filename='toast/toast.css')}}"/> |
8 | - background-color: rgb(230, 243, 255); | 8 | + <script src="{{url_for('static', filename='toast/toast.js')}}" charset="utf-8"></script> |
9 | -} | 9 | +</head> |
10 | -img { | 10 | +<script type="text/javascript"> |
11 | - display:block; | 11 | +function init () { |
12 | - margin:auto; | 12 | + drawToast("HTML toast likes Android"); |
13 | -} | 13 | +} |
14 | -#btn1 { | 14 | +</script> |
15 | - width: 150px; | 15 | +<link type="text/css" rel="stylesheet" href="{{url_for('static', filename='font.css')}}"/> |
16 | - height: 150px; | 16 | +<style> |
17 | - font-size:32px; | 17 | +body { |
18 | - font-family: '배달의민족 도현'; | 18 | + background-color: rgb(230, 243, 255); |
19 | - color: rgb(165, 210, 134); | 19 | + font-family: 'MyWebFont'; |
20 | - background: white; | 20 | +} |
21 | - border: solid 5px white; | 21 | +img { |
22 | - border-radius: 50%; | 22 | + display:block; |
23 | - margin-right: 150px; | 23 | + margin:auto; |
24 | - margin-top: 50px; | 24 | +} |
25 | -} | 25 | +#page_title{ |
26 | -#btn2 { | 26 | + font-family : 'MyWebFont'; |
27 | - width: 150px; | 27 | + text-align: center; |
28 | - height: 150px; | 28 | + color: gray; |
29 | - font-size:32px; | 29 | +} |
30 | - font-family: '배달의민족 도현'; | 30 | +#btn1 { |
31 | - color: rgb(251, 199, 205); | 31 | + width: 150px; |
32 | - background: white; | 32 | + height: 150px; |
33 | - border: solid 5px white; | 33 | + font-size:32px; |
34 | - border-radius: 50%; | 34 | + font-family: 'MyWebFont'; |
35 | - margin-left: 150px; | 35 | + color: rgb(165, 210, 134); |
36 | - margin-top: 50px; | 36 | + background: white; |
37 | -} | 37 | + border: solid 5px white; |
38 | - | 38 | + border-radius: 50%; |
39 | -</style> | 39 | + margin-top: 50px; |
40 | - | 40 | +} |
41 | -<body> | 41 | +#btn2 { |
42 | - | 42 | + width: 150px; |
43 | -<br><br> | 43 | + height: 150px; |
44 | -<img style="border-radius:15px;" width="300px;" src="캡처6.png"/><br> | 44 | + font-size:32px; |
45 | -<form> | 45 | + font-family: 'MyWebFont'; |
46 | - | 46 | + color: rgb(251, 199, 205); |
47 | -<br> | 47 | + background: white; |
48 | - | 48 | + border: solid 5px white; |
49 | -<center><button id="btn1">대여하기</button></center> | 49 | + border-radius: 50%; |
50 | -<center><button id="btn2">대여현황</button></center> | 50 | + margin-top: 50px; |
51 | -<br><br><br><br> | 51 | +} |
52 | -<img width="100;" height="70;" align="bottom;" src="khu.png"/> | 52 | + #btn3 { |
53 | - | 53 | + width: 150px; |
54 | -</form> | 54 | + height: 150px; |
55 | - | 55 | + font-size:32px; |
56 | - | 56 | + font-family: 'MyWebFont'; |
57 | - | 57 | + color: rgb(165, 210, 134); |
58 | -</body> | 58 | + background: white; |
59 | - | 59 | + border: solid 5px white; |
60 | + border-radius: 50%; | ||
61 | + margin-top: 50px; | ||
62 | +} | ||
63 | + | ||
64 | +</style> | ||
65 | +{% block style %}{% endblock %} | ||
66 | + | ||
67 | +<body> | ||
68 | +{% with messages = get_flashed_messages(with_categories=true) %} | ||
69 | + {% if messages %} | ||
70 | + {% for category, message in messages %} | ||
71 | + <script type="text/javascript">drawToast("{{ message }}")</script> | ||
72 | + {% endfor %} | ||
73 | + {% endif %} | ||
74 | +{% endwith %} | ||
75 | +<br><br> | ||
76 | + | ||
77 | + | ||
78 | +<br> | ||
79 | + | ||
80 | +<center><div id="content">{% block content %}{% endblock %}</div></center> | ||
81 | +<br><br><br><br> | ||
82 | +<img width="100;" height="70;" align="bottom;" src="{{ url_for('static', filename = 'khu.PNG') }}"/> | ||
83 | + | ||
84 | + | ||
85 | + | ||
86 | + | ||
87 | + | ||
88 | +</body> | ||
89 | + | ||
60 | </html> | 90 | </html> |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
templates/myhome.html
0 → 100644
1 | +{% extends "main.html" %} | ||
2 | +{% block title %}Select Menu{% endblock %} | ||
3 | +{% block head %} | ||
4 | + | ||
5 | +{% endblock %} | ||
6 | +{% block style %} | ||
7 | +<style> | ||
8 | +body { | ||
9 | + background-color: rgb(230, 243, 255); | ||
10 | +} | ||
11 | +img { | ||
12 | + display:block; | ||
13 | + margin:auto; | ||
14 | +} | ||
15 | +#btn1 { | ||
16 | + width: 150px; | ||
17 | + height: 150px; | ||
18 | + font-size:32px; | ||
19 | + font-family: 'MyWebFont'; | ||
20 | + color: rgb(165, 210, 134); | ||
21 | + background: white; | ||
22 | + border: solid 5px white; | ||
23 | + border-radius: 50%; | ||
24 | + margin-top: 50px; | ||
25 | +} | ||
26 | +#btn2 { | ||
27 | + width: 150px; | ||
28 | + height: 150px; | ||
29 | + font-size:32px; | ||
30 | + font-family: 'MyWebFont'; | ||
31 | + color: rgb(251, 199, 205); | ||
32 | + background: white; | ||
33 | + border: solid 5px white; | ||
34 | + border-radius: 50%; | ||
35 | + margin-top: 50px; | ||
36 | +} | ||
37 | + #btn3 { | ||
38 | + width: 150px; | ||
39 | + height: 150px; | ||
40 | + font-size:32px; | ||
41 | + font-family: 'MyWebFont'; | ||
42 | + color: rgb(165, 210, 134); | ||
43 | + background: white; | ||
44 | + border: solid 5px white; | ||
45 | + border-radius: 50%; | ||
46 | + margin-top: 50px; | ||
47 | +} | ||
48 | + | ||
49 | + | ||
50 | +</style> | ||
51 | +{% endblock %} | ||
52 | +{% block content %} | ||
53 | +<br><br> | ||
54 | +<img style="border-radius:15px;" width="300px;" src="{{ url_for('static', filename = 'logo.png') }}"/><br> | ||
55 | + | ||
56 | +<br> | ||
57 | + | ||
58 | +<center><button id="btn1" onclick="window.location.href='/search'">대여하기</button></center> | ||
59 | +<center><button id="btn2" onclick="window.location.href='/viewresv'">대여현황</button></center> | ||
60 | +<center><button id="btn3" onclick="window.location.href='/logout'">로그아웃</button></center> | ||
61 | +{% endblock %} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
templates/resv_sch.html
0 → 100644
1 | +{% extends "main.html" %} | ||
2 | +{% block head %} | ||
3 | + | ||
4 | +{% endblock %} | ||
5 | +{% block style %} | ||
6 | +<style> | ||
7 | +body { | ||
8 | + background-color: rgb(230, 243, 255); | ||
9 | +} | ||
10 | + | ||
11 | +#select1 { | ||
12 | + width: 300px; | ||
13 | + border: 3px solid rgb(191, 191, 191); | ||
14 | + border-radius: 4px; | ||
15 | + font-size: 20px; | ||
16 | + font-family: '배달의민족 도현'; | ||
17 | + background-color: rgb(230, 243, 255); | ||
18 | + background-position: 5px 2.5px; | ||
19 | + -webkit-appearance: none; | ||
20 | + -moz-appearance: none; | ||
21 | + background: url('select-arrow.png') no-repeat 95% 50%; | ||
22 | + padding: 10px 10px 10px 20px; | ||
23 | +} | ||
24 | +select::-ms-expand { | ||
25 | + display: none; | ||
26 | +} | ||
27 | +#select2 { | ||
28 | + width: 150px; | ||
29 | + border: 3px solid rgb(191, 191, 191); | ||
30 | + border-radius: 4px; | ||
31 | + font-size: 20px; | ||
32 | + font-family: '배달의민족 도현'; | ||
33 | + background-color: rgb(230, 243, 255); | ||
34 | + background-position: 5px 2.5px; | ||
35 | + -webkit-appearance: none; | ||
36 | + -moz-appearance: none; | ||
37 | + background: url('select-arrow.png') no-repeat 95% 50%; | ||
38 | + padding: 10px 10px 10px 20px; | ||
39 | + margin-left: 50; | ||
40 | +} | ||
41 | +input[type=number] { | ||
42 | + width: 109px; | ||
43 | + border: 3px solid rgb(191, 191, 191); | ||
44 | + border-radius: 4px; | ||
45 | + font-size: 20px; | ||
46 | + font-family: '배달의민족 도현'; | ||
47 | + background-color: rgb(230, 243, 255); | ||
48 | + background-position: 5px 2.5px; | ||
49 | + padding: 10px 10px 10px 20px; | ||
50 | + margin-left: 50; | ||
51 | +} | ||
52 | +input[type=text] { | ||
53 | + width: 300px; | ||
54 | + box-sizing: border-box; | ||
55 | + border: 3px solid rgb(191, 191, 191); | ||
56 | + border-radius: 4px; | ||
57 | + font-size: 18px; | ||
58 | + font-family: '배달의민족 도현'; | ||
59 | + background-color: rgb(230, 243, 255); | ||
60 | + padding: 10px 10px 10px 20px; | ||
61 | +} | ||
62 | +input[type=submit] { | ||
63 | + width: 300px; | ||
64 | + box-sizing: border-box; | ||
65 | + border: 3px solid rgb(251, 199, 205); | ||
66 | + border-radius: 4px; | ||
67 | + font-size: 25px; | ||
68 | + font-family: '배달의민족 도현'; | ||
69 | + background-color: rgb(251, 199, 205); | ||
70 | + padding: 10px 10px 10px 10px; | ||
71 | +} | ||
72 | +input[type=datetime-local] { | ||
73 | + width: 320px; | ||
74 | + box-sizing: border-box; | ||
75 | + border: 3px solid rgb(191, 191, 191); | ||
76 | + border-radius: 4px; | ||
77 | + font-size: 18px; | ||
78 | + font-family: '배달의민족 도현'; | ||
79 | + background-color: rgb(230, 243, 255); | ||
80 | + padding: 10px 10px 10px 20px; | ||
81 | +} | ||
82 | +#btn1 { | ||
83 | + width: 147px; | ||
84 | + height: 60px; | ||
85 | + font-size:16px; | ||
86 | + font-family: '배달의민족 도현'; | ||
87 | + text-align: left; | ||
88 | + color: gray; | ||
89 | + background: white; | ||
90 | + border: solid 5px white; | ||
91 | + border-radius: 5px; | ||
92 | + vertical-align: bottom; | ||
93 | +} | ||
94 | +#btn2 { | ||
95 | + width: 147px; | ||
96 | + height: 60px; | ||
97 | + font-size:25px; | ||
98 | + font-family: '배달의민족 도현'; | ||
99 | + color: rgb(045, 098, 155); | ||
100 | + background: white; | ||
101 | + border: solid 5px white; | ||
102 | + border-radius: 5px; | ||
103 | +} | ||
104 | +#btn3 { | ||
105 | + width: 147px; | ||
106 | + height: 60px; | ||
107 | + font-size:25px; | ||
108 | + font-family: '배달의민족 도현'; | ||
109 | + color: rgb(164, 025, 018); | ||
110 | + background: white; | ||
111 | + border: solid 5px white; | ||
112 | + border-radius: 5px; | ||
113 | +} | ||
114 | +#btn3 { | ||
115 | + width: 65px; | ||
116 | + height: 65px; | ||
117 | + font-size:25px; | ||
118 | + font-family: '배달의민족 도현'; | ||
119 | + color: rgb(164, 025, 018); | ||
120 | + border-radius: 50%; | ||
121 | + border: solid 5px rgb(230, 243, 255); | ||
122 | + background-image: url('back-arrow.png'); | ||
123 | +} | ||
124 | +form { | ||
125 | + font-family: '배달의민족 도현'; | ||
126 | + font-size:20px; | ||
127 | +} | ||
128 | +#wrapper { | ||
129 | + width: 400px; | ||
130 | + text-align: center; | ||
131 | + display: inline-block; | ||
132 | + | ||
133 | +} | ||
134 | +select{ | ||
135 | + width: 60%; | ||
136 | + padding: 12px 20px; | ||
137 | + box-sizing: border-box; | ||
138 | + border: 3px solid #ccc; | ||
139 | + -webkit-transition: 0.5s; | ||
140 | + transition: 0.5s; | ||
141 | + outline: none; | ||
142 | + font-family: '배달의민족 도현'; | ||
143 | + display: inline; | ||
144 | + float: right; | ||
145 | + border-radius: 5px; | ||
146 | +} | ||
147 | +#maxpeople{ | ||
148 | + width: 60%; | ||
149 | + padding: 12px 20px; | ||
150 | + box-sizing: border-box; | ||
151 | + border: 3px solid #ccc; | ||
152 | + -webkit-transition: 0.5s; | ||
153 | + transition: 0.5s; | ||
154 | + outline: none; | ||
155 | + font-family: '배달의민족 도현'; | ||
156 | + display: inline; | ||
157 | + float: right; | ||
158 | + border-radius: 5px; | ||
159 | +} | ||
160 | +.item{ | ||
161 | + height: 50px; | ||
162 | + margin: 10px; | ||
163 | + | ||
164 | +} | ||
165 | +h3 { | ||
166 | + display: inline-block; | ||
167 | + vertical-align: middle; | ||
168 | +margin-top: 15px; | ||
169 | + | ||
170 | +} | ||
171 | +</style> | ||
172 | +{% endblock %} | ||
173 | +{% block content %} | ||
174 | + | ||
175 | + | ||
176 | + | ||
177 | +<br> | ||
178 | +<a href="/myhome"> <img style="border-radius:15px;" width="300px;" src="{{ url_for('static', filename = 'logo.png') }}"/></a> | ||
179 | +<div id="wrapper"> | ||
180 | +<form action="/search/result" method="post"> | ||
181 | + | ||
182 | +<br><br> | ||
183 | + | ||
184 | +<div class="item"><H3>건물</H3> | ||
185 | + <select name="deptid" required><option value="전자정보대학">전자정보대학</option> | ||
186 | + <option value="외국어대학">외국어대학</option> | ||
187 | + <option value="공과대학">공과대학</option> | ||
188 | + <option value="예술,디자인대학">예술,디자인대학</option> | ||
189 | + <option value="체육대학">체육대학</option> | ||
190 | + <option value="국제대학">국제대학</option> | ||
191 | + <option value="1호관 테니스장">1호관 테니스장</option> | ||
192 | + <option value="3호관 운동장">3호관 운동장</option> | ||
193 | + <option value="3호관 테니스장">3호관 테니스장</option> | ||
194 | + <option value="6호관 야구장">6호관 야구장</option> | ||
195 | + <option value="6호관 운동장">6호관 운동장</option> | ||
196 | + <option value="골프 연습장">골프 연습장</option> | ||
197 | + <option value="6호관 운동장">6호관 운동장</option> | ||
198 | + <option value="수영장">수영장</option> | ||
199 | + <option value="필드 하키장(공과대학 앞)">필드 하키장(공과대학 앞)</option> | ||
200 | + <option value="학생회관">학생회관</option></select> | ||
201 | + <br></div> | ||
202 | + <center><div class="item"><H3>사용 인원 수</H3><input type="number" id="maxpeople" name="capacity" min="1" max="200"></div></center><br> | ||
203 | + | ||
204 | + | ||
205 | +<center>시작 시간<br><br><input type="datetime-local" name="starttime"></center><br> | ||
206 | +<center>종료 시간<br><br><input type="datetime-local" name="endtime"></center><br> | ||
207 | + | ||
208 | + | ||
209 | +<br> | ||
210 | + <center><input type="submit" value="검색"></center></form> | ||
211 | + </div> | ||
212 | +{% endblock %} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
templates/resv_view.html
0 → 100644
1 | +{% extends "main.html" %} | ||
2 | +{% block title %}예약 현황{% endblock %} | ||
3 | +{% block head %} | ||
4 | + | ||
5 | +{% endblock %} | ||
6 | +{% block style %} | ||
7 | +<style> | ||
8 | +#list_item{ | ||
9 | + width: 275px; | ||
10 | + height: 100px; | ||
11 | + font-size:20px; | ||
12 | + font-family: '배달의민족 도현'; | ||
13 | + color: gray; | ||
14 | + background: white; | ||
15 | + border: solid 5px white; | ||
16 | + border-radius: 5px; | ||
17 | + vertical-align: bottom; | ||
18 | + line-height: 150%; | ||
19 | + display: inline-block; | ||
20 | +} | ||
21 | +#delete_btn{ | ||
22 | + width: 47px; | ||
23 | + height: 110px; | ||
24 | + box-sizing: border-box; | ||
25 | + font-size: 20px; | ||
26 | + font-family: '배달의민족 도현'; | ||
27 | + background-color: rgb(255, 101, 101); | ||
28 | + color: white; | ||
29 | + border-radius:5px; | ||
30 | + border: solid 5px rgb(255, 101, 101); | ||
31 | + float: right; | ||
32 | + display: inline-block; | ||
33 | + | ||
34 | +} | ||
35 | + | ||
36 | +</style> | ||
37 | +{% endblock %} | ||
38 | +{% block content %} | ||
39 | + <a href="/myhome"> <img style="border-radius:15px;" width="300px;" src="{{ url_for('static', filename = 'logo.png') }}"/></a> | ||
40 | + <h1>예약 현황</h1> | ||
41 | + {% if not resv_list %} | ||
42 | + <p>예약 데이터가 없습니다.</p> | ||
43 | +{% endif %} | ||
44 | + <table> | ||
45 | + {% for resv_item in resv_list %} | ||
46 | + <tr><td><form method="post" action="/deleteresv"><div id="list_item">{{ resv_item[3] }} {{ resv_item[4] }}<br>{{ resv_item[6].strftime('%Y-%m-%d') }}<br>{{ resv_item[6].strftime('%H:%M') }} ~ {{ resv_item[7].strftime('%H:%M') }}<form method="post" action="/deleteresv"><input type="hidden" name="resv_id" value="{{ resv_item[0] }}"></div><input type="submit" id="delete_btn" value="X"></form></td></tr> | ||
47 | + {% endfor %} | ||
48 | + </table> | ||
49 | +{% endblock %} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
templates/searchresult.html
0 → 100644
1 | +{% extends "main.html" %} | ||
2 | +{% block title %}예약 현황{% endblock %} | ||
3 | +{% block head %} | ||
4 | + | ||
5 | +{% endblock %} | ||
6 | +{% block style %} | ||
7 | +<style> | ||
8 | +#list_item{ | ||
9 | + width: 263px; | ||
10 | + height: 100px; | ||
11 | + font-size:20px; | ||
12 | + font-family: '배달의민족 도현'; | ||
13 | + color: gray; | ||
14 | + background: white; | ||
15 | + border: solid 5px white; | ||
16 | + border-radius: 5px; | ||
17 | + vertical-align: bottom; | ||
18 | + line-height: 150%; | ||
19 | + display: inline-block; | ||
20 | + padding-left: 7px; | ||
21 | +} | ||
22 | +#delete_btn{ | ||
23 | + width: 60px; | ||
24 | + height: 110px; | ||
25 | + box-sizing: border-box; | ||
26 | + font-size: 20px; | ||
27 | + font-family: '배달의민족 도현'; | ||
28 | + background-color: rgb(90, 200, 90); | ||
29 | + color: white; | ||
30 | + border-radius:5px; | ||
31 | + border: solid 5px rgb(90, 200, 90); | ||
32 | + float: right; | ||
33 | + display: inline-block; | ||
34 | + | ||
35 | +} | ||
36 | + | ||
37 | +</style> | ||
38 | +{% endblock %} | ||
39 | +{% block content %} | ||
40 | + <a href="/myhome"> <img style="border-radius:15px;" width="300px;" src="{{ url_for('static', filename = 'logo.png') }}"/></a><br> | ||
41 | + <h1>검색 결과</h1> | ||
42 | + {% if resv_list[0][0] == "NoAvailableFacilities" %} | ||
43 | + <p>가능한 강의실이 없습니다.</p> | ||
44 | +{% else %} | ||
45 | + <table> | ||
46 | + {% for resv_item in resv_list %} | ||
47 | + <tr><td><form method="post" action="/search/resv"><div id="list_item">{{ resv_item[1] }} {{ resv_item[2] }}<br>{{ starttime.strftime('%Y-%m-%d') }}<br>{{ starttime.strftime('%H:%M') }} ~ {{ endtime.strftime('%H:%M') }} | ||
48 | + <input type="hidden" name="fac_id" value="{{ resv_item[0] }}"> | ||
49 | + <input type="hidden" name="start_time" value="{{ starttime.strftime('%Y-%m-%d%H:%M') }}"> | ||
50 | + <input type="hidden" name="end_time" value="{{ endtime.strftime('%Y-%m-%d%H:%M') }}"> | ||
51 | + </div><input type="submit" id="delete_btn" value="예약"></form></td></tr> | ||
52 | + {% endfor %} | ||
53 | + </table> | ||
54 | + {% endif %} | ||
55 | +{% endblock %} | ||
56 | + |
user_info.py
0 → 100644
-
Please register or login to post a comment