강상위

Project Final Commit

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
......
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()
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 +
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)
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
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
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
No preview for this file type
No preview for this file type
No preview for this file type
1 +language: node_js
2 +node_js:
3 + - "8"
4 +before_script:
5 + - "export DISPLAY=:99.0"
6 + - "sh -e /etc/init.d/xvfb start"
7 + - sleep 3 # give xvfb some time to start
...\ No newline at end of file ...\ No newline at end of file
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
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
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
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">&lt;!-- this should go after your &lt;/body&gt; --&gt;
43 +&lt;link rel="stylesheet" type="text/css" href="jquery.datetimepicker.css"/ &gt;
44 +&lt;script src="jquery.js"&gt;&lt;/script&gt;
45 +&lt;script src="build/jquery.datetimepicker.full.min.js"&gt;&lt;/script&gt;</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">&lt;input id="datetimepicker" type="text" &gt;</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>
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 +
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);
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
This diff could not be displayed because it is too large.
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 +}
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
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
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
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
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
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
1 +@font-face{
2 + font-family: 'MyWebFont';
3 + src: url('WebFont.ttf') format('truetype');
4 +}
...\ No newline at end of file ...\ No newline at end of file
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
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
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
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
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 + &copy; 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&nbsp;&nbsp;<input style="border-radius:10px;" type="text" name="id" placeholder="ID 입력" required><br></H2></center>
76 -<center><H2>PW&nbsp;<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&nbsp;&nbsp;<input style="border-radius:10px;" type="text" name="id" placeholder="ID 입력" required><br></H2></center>
82 +<center><H2>PW&nbsp;<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
......
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
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
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
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 +
1 +user_id = ' '
2 +user_passwd = ' '
...\ No newline at end of file ...\ No newline at end of file