정지윤

달력 추가

1 +node_modules
2 +<<<<<<< HEAD
3 +.sass-cache
4 +=======
5 +bower_components
6 +>>>>>>> master
1 +sudo: false
2 +language: node_js
3 +node_js:
4 + - "node"
5 +install: npm install
6 +script:
7 + - npm test
8 + - gulp
9 +cache:
10 + directories:
11 + - node_modules
1 +The MIT License (MIT)
2 +
3 +Copyright (c) 2013-2017 Blackrock Digital LLC
4 +
5 +Permission is hereby granted, free of charge, to any person obtaining a copy
6 +of this software and associated documentation files (the "Software"), to deal
7 +in the Software without restriction, including without limitation the rights
8 +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 +copies of the Software, and to permit persons to whom the Software is
10 +furnished to do so, subject to the following conditions:
11 +
12 +The above copyright notice and this permission notice shall be included in
13 +all copies or substantial portions of the Software.
14 +
15 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 +THE SOFTWARE.
1 +/*!
2 + * Datepicker for Bootstrap
3 + *
4 + * Copyright 2012 Stefan Petre
5 + * Improvements by Andrew Rowls
6 + * Licensed under the Apache License v2.0
7 + * http://www.apache.org/licenses/LICENSE-2.0
8 + *
9 + */
10 +.datepicker {
11 + padding: 4px;
12 + border-radius: 4px;
13 + direction: ltr;
14 + /*.dow {
15 + border-top: 1px solid #ddd !important;
16 + }*/
17 +}
18 +.datepicker-inline {
19 + width: 220px;
20 +}
21 +.datepicker.datepicker-rtl {
22 + direction: rtl;
23 +}
24 +.datepicker.datepicker-rtl table tr td span {
25 + float: right;
26 +}
27 +.datepicker-dropdown {
28 + top: 0;
29 + left: 0;
30 +}
31 +.datepicker-dropdown:before {
32 + content: '';
33 + display: inline-block;
34 + border-left: 7px solid transparent;
35 + border-right: 7px solid transparent;
36 + border-bottom: 7px solid #ccc;
37 + border-top: 0;
38 + border-bottom-color: rgba(0, 0, 0, 0.2);
39 + position: absolute;
40 +}
41 +.datepicker-dropdown:after {
42 + content: '';
43 + display: inline-block;
44 + border-left: 6px solid transparent;
45 + border-right: 6px solid transparent;
46 + border-bottom: 6px solid #fff;
47 + border-top: 0;
48 + position: absolute;
49 +}
50 +.datepicker-dropdown.datepicker-orient-left:before {
51 + left: 6px;
52 +}
53 +.datepicker-dropdown.datepicker-orient-left:after {
54 + left: 7px;
55 +}
56 +.datepicker-dropdown.datepicker-orient-right:before {
57 + right: 6px;
58 +}
59 +.datepicker-dropdown.datepicker-orient-right:after {
60 + right: 7px;
61 +}
62 +.datepicker-dropdown.datepicker-orient-top:before {
63 + top: -7px;
64 +}
65 +.datepicker-dropdown.datepicker-orient-top:after {
66 + top: -6px;
67 +}
68 +.datepicker-dropdown.datepicker-orient-bottom:before {
69 + bottom: -7px;
70 + border-bottom: 0;
71 + border-top: 7px solid #999;
72 +}
73 +.datepicker-dropdown.datepicker-orient-bottom:after {
74 + bottom: -6px;
75 + border-bottom: 0;
76 + border-top: 6px solid #fff;
77 +}
78 +.datepicker > div {
79 + display: none;
80 +}
81 +.datepicker.days div.datepicker-days {
82 + display: block;
83 +}
84 +.datepicker.months div.datepicker-months {
85 + display: block;
86 +}
87 +.datepicker.years div.datepicker-years {
88 + display: block;
89 +}
90 +.datepicker table {
91 + margin: 0;
92 + -webkit-touch-callout: none;
93 + -webkit-user-select: none;
94 + -khtml-user-select: none;
95 + -moz-user-select: none;
96 + -ms-user-select: none;
97 + user-select: none;
98 +}
99 +.datepicker table tr td,
100 +.datepicker table tr th {
101 + text-align: center;
102 + width: 30px;
103 + height: 30px;
104 + border-radius: 4px;
105 + border: none;
106 +}
107 +.table-striped .datepicker table tr td,
108 +.table-striped .datepicker table tr th {
109 + background-color: transparent;
110 +}
111 +.datepicker table tr td.day:hover,
112 +.datepicker table tr td.day.focused {
113 + background: #eeeeee;
114 + cursor: pointer;
115 +}
116 +.datepicker table tr td.old,
117 +.datepicker table tr td.new {
118 + color: #999999;
119 +}
120 +.datepicker table tr td.disabled,
121 +.datepicker table tr td.disabled:hover {
122 + background: none;
123 + color: #999999;
124 + cursor: default;
125 +}
126 +.datepicker table tr td.today,
127 +.datepicker table tr td.today:hover,
128 +.datepicker table tr td.today.disabled,
129 +.datepicker table tr td.today.disabled:hover {
130 + color: #000000;
131 + background-color: #ffdb99;
132 + border-color: #ffb733;
133 +}
134 +.datepicker table tr td.today:hover,
135 +.datepicker table tr td.today:hover:hover,
136 +.datepicker table tr td.today.disabled:hover,
137 +.datepicker table tr td.today.disabled:hover:hover,
138 +.datepicker table tr td.today:focus,
139 +.datepicker table tr td.today:hover:focus,
140 +.datepicker table tr td.today.disabled:focus,
141 +.datepicker table tr td.today.disabled:hover:focus,
142 +.datepicker table tr td.today:active,
143 +.datepicker table tr td.today:hover:active,
144 +.datepicker table tr td.today.disabled:active,
145 +.datepicker table tr td.today.disabled:hover:active,
146 +.datepicker table tr td.today.active,
147 +.datepicker table tr td.today:hover.active,
148 +.datepicker table tr td.today.disabled.active,
149 +.datepicker table tr td.today.disabled:hover.active,
150 +.open .dropdown-toggle.datepicker table tr td.today,
151 +.open .dropdown-toggle.datepicker table tr td.today:hover,
152 +.open .dropdown-toggle.datepicker table tr td.today.disabled,
153 +.open .dropdown-toggle.datepicker table tr td.today.disabled:hover {
154 + color: #000000;
155 + background-color: #ffcd70;
156 + border-color: #f59e00;
157 +}
158 +.datepicker table tr td.today:active,
159 +.datepicker table tr td.today:hover:active,
160 +.datepicker table tr td.today.disabled:active,
161 +.datepicker table tr td.today.disabled:hover:active,
162 +.datepicker table tr td.today.active,
163 +.datepicker table tr td.today:hover.active,
164 +.datepicker table tr td.today.disabled.active,
165 +.datepicker table tr td.today.disabled:hover.active,
166 +.open .dropdown-toggle.datepicker table tr td.today,
167 +.open .dropdown-toggle.datepicker table tr td.today:hover,
168 +.open .dropdown-toggle.datepicker table tr td.today.disabled,
169 +.open .dropdown-toggle.datepicker table tr td.today.disabled:hover {
170 + background-image: none;
171 +}
172 +.datepicker table tr td.today.disabled,
173 +.datepicker table tr td.today:hover.disabled,
174 +.datepicker table tr td.today.disabled.disabled,
175 +.datepicker table tr td.today.disabled:hover.disabled,
176 +.datepicker table tr td.today[disabled],
177 +.datepicker table tr td.today:hover[disabled],
178 +.datepicker table tr td.today.disabled[disabled],
179 +.datepicker table tr td.today.disabled:hover[disabled],
180 +fieldset[disabled] .datepicker table tr td.today,
181 +fieldset[disabled] .datepicker table tr td.today:hover,
182 +fieldset[disabled] .datepicker table tr td.today.disabled,
183 +fieldset[disabled] .datepicker table tr td.today.disabled:hover,
184 +.datepicker table tr td.today.disabled:hover,
185 +.datepicker table tr td.today:hover.disabled:hover,
186 +.datepicker table tr td.today.disabled.disabled:hover,
187 +.datepicker table tr td.today.disabled:hover.disabled:hover,
188 +.datepicker table tr td.today[disabled]:hover,
189 +.datepicker table tr td.today:hover[disabled]:hover,
190 +.datepicker table tr td.today.disabled[disabled]:hover,
191 +.datepicker table tr td.today.disabled:hover[disabled]:hover,
192 +fieldset[disabled] .datepicker table tr td.today:hover,
193 +fieldset[disabled] .datepicker table tr td.today:hover:hover,
194 +fieldset[disabled] .datepicker table tr td.today.disabled:hover,
195 +fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover,
196 +.datepicker table tr td.today.disabled:focus,
197 +.datepicker table tr td.today:hover.disabled:focus,
198 +.datepicker table tr td.today.disabled.disabled:focus,
199 +.datepicker table tr td.today.disabled:hover.disabled:focus,
200 +.datepicker table tr td.today[disabled]:focus,
201 +.datepicker table tr td.today:hover[disabled]:focus,
202 +.datepicker table tr td.today.disabled[disabled]:focus,
203 +.datepicker table tr td.today.disabled:hover[disabled]:focus,
204 +fieldset[disabled] .datepicker table tr td.today:focus,
205 +fieldset[disabled] .datepicker table tr td.today:hover:focus,
206 +fieldset[disabled] .datepicker table tr td.today.disabled:focus,
207 +fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus,
208 +.datepicker table tr td.today.disabled:active,
209 +.datepicker table tr td.today:hover.disabled:active,
210 +.datepicker table tr td.today.disabled.disabled:active,
211 +.datepicker table tr td.today.disabled:hover.disabled:active,
212 +.datepicker table tr td.today[disabled]:active,
213 +.datepicker table tr td.today:hover[disabled]:active,
214 +.datepicker table tr td.today.disabled[disabled]:active,
215 +.datepicker table tr td.today.disabled:hover[disabled]:active,
216 +fieldset[disabled] .datepicker table tr td.today:active,
217 +fieldset[disabled] .datepicker table tr td.today:hover:active,
218 +fieldset[disabled] .datepicker table tr td.today.disabled:active,
219 +fieldset[disabled] .datepicker table tr td.today.disabled:hover:active,
220 +.datepicker table tr td.today.disabled.active,
221 +.datepicker table tr td.today:hover.disabled.active,
222 +.datepicker table tr td.today.disabled.disabled.active,
223 +.datepicker table tr td.today.disabled:hover.disabled.active,
224 +.datepicker table tr td.today[disabled].active,
225 +.datepicker table tr td.today:hover[disabled].active,
226 +.datepicker table tr td.today.disabled[disabled].active,
227 +.datepicker table tr td.today.disabled:hover[disabled].active,
228 +fieldset[disabled] .datepicker table tr td.today.active,
229 +fieldset[disabled] .datepicker table tr td.today:hover.active,
230 +fieldset[disabled] .datepicker table tr td.today.disabled.active,
231 +fieldset[disabled] .datepicker table tr td.today.disabled:hover.active {
232 + background-color: #ffdb99;
233 + border-color: #ffb733;
234 +}
235 +.datepicker table tr td.today:hover:hover {
236 + color: #000;
237 +}
238 +.datepicker table tr td.today.active:hover {
239 + color: #fff;
240 +}
241 +.datepicker table tr td.range,
242 +.datepicker table tr td.range:hover,
243 +.datepicker table tr td.range.disabled,
244 +.datepicker table tr td.range.disabled:hover {
245 + background: #eeeeee;
246 + border-radius: 0;
247 +}
248 +.datepicker table tr td.range.today,
249 +.datepicker table tr td.range.today:hover,
250 +.datepicker table tr td.range.today.disabled,
251 +.datepicker table tr td.range.today.disabled:hover {
252 + color: #000000;
253 + background-color: #f7ca77;
254 + border-color: #f1a417;
255 + border-radius: 0;
256 +}
257 +.datepicker table tr td.range.today:hover,
258 +.datepicker table tr td.range.today:hover:hover,
259 +.datepicker table tr td.range.today.disabled:hover,
260 +.datepicker table tr td.range.today.disabled:hover:hover,
261 +.datepicker table tr td.range.today:focus,
262 +.datepicker table tr td.range.today:hover:focus,
263 +.datepicker table tr td.range.today.disabled:focus,
264 +.datepicker table tr td.range.today.disabled:hover:focus,
265 +.datepicker table tr td.range.today:active,
266 +.datepicker table tr td.range.today:hover:active,
267 +.datepicker table tr td.range.today.disabled:active,
268 +.datepicker table tr td.range.today.disabled:hover:active,
269 +.datepicker table tr td.range.today.active,
270 +.datepicker table tr td.range.today:hover.active,
271 +.datepicker table tr td.range.today.disabled.active,
272 +.datepicker table tr td.range.today.disabled:hover.active,
273 +.open .dropdown-toggle.datepicker table tr td.range.today,
274 +.open .dropdown-toggle.datepicker table tr td.range.today:hover,
275 +.open .dropdown-toggle.datepicker table tr td.range.today.disabled,
276 +.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover {
277 + color: #000000;
278 + background-color: #f4bb51;
279 + border-color: #bf800c;
280 +}
281 +.datepicker table tr td.range.today:active,
282 +.datepicker table tr td.range.today:hover:active,
283 +.datepicker table tr td.range.today.disabled:active,
284 +.datepicker table tr td.range.today.disabled:hover:active,
285 +.datepicker table tr td.range.today.active,
286 +.datepicker table tr td.range.today:hover.active,
287 +.datepicker table tr td.range.today.disabled.active,
288 +.datepicker table tr td.range.today.disabled:hover.active,
289 +.open .dropdown-toggle.datepicker table tr td.range.today,
290 +.open .dropdown-toggle.datepicker table tr td.range.today:hover,
291 +.open .dropdown-toggle.datepicker table tr td.range.today.disabled,
292 +.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover {
293 + background-image: none;
294 +}
295 +.datepicker table tr td.range.today.disabled,
296 +.datepicker table tr td.range.today:hover.disabled,
297 +.datepicker table tr td.range.today.disabled.disabled,
298 +.datepicker table tr td.range.today.disabled:hover.disabled,
299 +.datepicker table tr td.range.today[disabled],
300 +.datepicker table tr td.range.today:hover[disabled],
301 +.datepicker table tr td.range.today.disabled[disabled],
302 +.datepicker table tr td.range.today.disabled:hover[disabled],
303 +fieldset[disabled] .datepicker table tr td.range.today,
304 +fieldset[disabled] .datepicker table tr td.range.today:hover,
305 +fieldset[disabled] .datepicker table tr td.range.today.disabled,
306 +fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,
307 +.datepicker table tr td.range.today.disabled:hover,
308 +.datepicker table tr td.range.today:hover.disabled:hover,
309 +.datepicker table tr td.range.today.disabled.disabled:hover,
310 +.datepicker table tr td.range.today.disabled:hover.disabled:hover,
311 +.datepicker table tr td.range.today[disabled]:hover,
312 +.datepicker table tr td.range.today:hover[disabled]:hover,
313 +.datepicker table tr td.range.today.disabled[disabled]:hover,
314 +.datepicker table tr td.range.today.disabled:hover[disabled]:hover,
315 +fieldset[disabled] .datepicker table tr td.range.today:hover,
316 +fieldset[disabled] .datepicker table tr td.range.today:hover:hover,
317 +fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,
318 +fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover,
319 +.datepicker table tr td.range.today.disabled:focus,
320 +.datepicker table tr td.range.today:hover.disabled:focus,
321 +.datepicker table tr td.range.today.disabled.disabled:focus,
322 +.datepicker table tr td.range.today.disabled:hover.disabled:focus,
323 +.datepicker table tr td.range.today[disabled]:focus,
324 +.datepicker table tr td.range.today:hover[disabled]:focus,
325 +.datepicker table tr td.range.today.disabled[disabled]:focus,
326 +.datepicker table tr td.range.today.disabled:hover[disabled]:focus,
327 +fieldset[disabled] .datepicker table tr td.range.today:focus,
328 +fieldset[disabled] .datepicker table tr td.range.today:hover:focus,
329 +fieldset[disabled] .datepicker table tr td.range.today.disabled:focus,
330 +fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus,
331 +.datepicker table tr td.range.today.disabled:active,
332 +.datepicker table tr td.range.today:hover.disabled:active,
333 +.datepicker table tr td.range.today.disabled.disabled:active,
334 +.datepicker table tr td.range.today.disabled:hover.disabled:active,
335 +.datepicker table tr td.range.today[disabled]:active,
336 +.datepicker table tr td.range.today:hover[disabled]:active,
337 +.datepicker table tr td.range.today.disabled[disabled]:active,
338 +.datepicker table tr td.range.today.disabled:hover[disabled]:active,
339 +fieldset[disabled] .datepicker table tr td.range.today:active,
340 +fieldset[disabled] .datepicker table tr td.range.today:hover:active,
341 +fieldset[disabled] .datepicker table tr td.range.today.disabled:active,
342 +fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active,
343 +.datepicker table tr td.range.today.disabled.active,
344 +.datepicker table tr td.range.today:hover.disabled.active,
345 +.datepicker table tr td.range.today.disabled.disabled.active,
346 +.datepicker table tr td.range.today.disabled:hover.disabled.active,
347 +.datepicker table tr td.range.today[disabled].active,
348 +.datepicker table tr td.range.today:hover[disabled].active,
349 +.datepicker table tr td.range.today.disabled[disabled].active,
350 +.datepicker table tr td.range.today.disabled:hover[disabled].active,
351 +fieldset[disabled] .datepicker table tr td.range.today.active,
352 +fieldset[disabled] .datepicker table tr td.range.today:hover.active,
353 +fieldset[disabled] .datepicker table tr td.range.today.disabled.active,
354 +fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active {
355 + background-color: #f7ca77;
356 + border-color: #f1a417;
357 +}
358 +.datepicker table tr td.selected,
359 +.datepicker table tr td.selected:hover,
360 +.datepicker table tr td.selected.disabled,
361 +.datepicker table tr td.selected.disabled:hover {
362 + color: #ffffff;
363 + background-color: #999999;
364 + border-color: #555555;
365 + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
366 +}
367 +.datepicker table tr td.selected:hover,
368 +.datepicker table tr td.selected:hover:hover,
369 +.datepicker table tr td.selected.disabled:hover,
370 +.datepicker table tr td.selected.disabled:hover:hover,
371 +.datepicker table tr td.selected:focus,
372 +.datepicker table tr td.selected:hover:focus,
373 +.datepicker table tr td.selected.disabled:focus,
374 +.datepicker table tr td.selected.disabled:hover:focus,
375 +.datepicker table tr td.selected:active,
376 +.datepicker table tr td.selected:hover:active,
377 +.datepicker table tr td.selected.disabled:active,
378 +.datepicker table tr td.selected.disabled:hover:active,
379 +.datepicker table tr td.selected.active,
380 +.datepicker table tr td.selected:hover.active,
381 +.datepicker table tr td.selected.disabled.active,
382 +.datepicker table tr td.selected.disabled:hover.active,
383 +.open .dropdown-toggle.datepicker table tr td.selected,
384 +.open .dropdown-toggle.datepicker table tr td.selected:hover,
385 +.open .dropdown-toggle.datepicker table tr td.selected.disabled,
386 +.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover {
387 + color: #ffffff;
388 + background-color: #858585;
389 + border-color: #373737;
390 +}
391 +.datepicker table tr td.selected:active,
392 +.datepicker table tr td.selected:hover:active,
393 +.datepicker table tr td.selected.disabled:active,
394 +.datepicker table tr td.selected.disabled:hover:active,
395 +.datepicker table tr td.selected.active,
396 +.datepicker table tr td.selected:hover.active,
397 +.datepicker table tr td.selected.disabled.active,
398 +.datepicker table tr td.selected.disabled:hover.active,
399 +.open .dropdown-toggle.datepicker table tr td.selected,
400 +.open .dropdown-toggle.datepicker table tr td.selected:hover,
401 +.open .dropdown-toggle.datepicker table tr td.selected.disabled,
402 +.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover {
403 + background-image: none;
404 +}
405 +.datepicker table tr td.selected.disabled,
406 +.datepicker table tr td.selected:hover.disabled,
407 +.datepicker table tr td.selected.disabled.disabled,
408 +.datepicker table tr td.selected.disabled:hover.disabled,
409 +.datepicker table tr td.selected[disabled],
410 +.datepicker table tr td.selected:hover[disabled],
411 +.datepicker table tr td.selected.disabled[disabled],
412 +.datepicker table tr td.selected.disabled:hover[disabled],
413 +fieldset[disabled] .datepicker table tr td.selected,
414 +fieldset[disabled] .datepicker table tr td.selected:hover,
415 +fieldset[disabled] .datepicker table tr td.selected.disabled,
416 +fieldset[disabled] .datepicker table tr td.selected.disabled:hover,
417 +.datepicker table tr td.selected.disabled:hover,
418 +.datepicker table tr td.selected:hover.disabled:hover,
419 +.datepicker table tr td.selected.disabled.disabled:hover,
420 +.datepicker table tr td.selected.disabled:hover.disabled:hover,
421 +.datepicker table tr td.selected[disabled]:hover,
422 +.datepicker table tr td.selected:hover[disabled]:hover,
423 +.datepicker table tr td.selected.disabled[disabled]:hover,
424 +.datepicker table tr td.selected.disabled:hover[disabled]:hover,
425 +fieldset[disabled] .datepicker table tr td.selected:hover,
426 +fieldset[disabled] .datepicker table tr td.selected:hover:hover,
427 +fieldset[disabled] .datepicker table tr td.selected.disabled:hover,
428 +fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover,
429 +.datepicker table tr td.selected.disabled:focus,
430 +.datepicker table tr td.selected:hover.disabled:focus,
431 +.datepicker table tr td.selected.disabled.disabled:focus,
432 +.datepicker table tr td.selected.disabled:hover.disabled:focus,
433 +.datepicker table tr td.selected[disabled]:focus,
434 +.datepicker table tr td.selected:hover[disabled]:focus,
435 +.datepicker table tr td.selected.disabled[disabled]:focus,
436 +.datepicker table tr td.selected.disabled:hover[disabled]:focus,
437 +fieldset[disabled] .datepicker table tr td.selected:focus,
438 +fieldset[disabled] .datepicker table tr td.selected:hover:focus,
439 +fieldset[disabled] .datepicker table tr td.selected.disabled:focus,
440 +fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus,
441 +.datepicker table tr td.selected.disabled:active,
442 +.datepicker table tr td.selected:hover.disabled:active,
443 +.datepicker table tr td.selected.disabled.disabled:active,
444 +.datepicker table tr td.selected.disabled:hover.disabled:active,
445 +.datepicker table tr td.selected[disabled]:active,
446 +.datepicker table tr td.selected:hover[disabled]:active,
447 +.datepicker table tr td.selected.disabled[disabled]:active,
448 +.datepicker table tr td.selected.disabled:hover[disabled]:active,
449 +fieldset[disabled] .datepicker table tr td.selected:active,
450 +fieldset[disabled] .datepicker table tr td.selected:hover:active,
451 +fieldset[disabled] .datepicker table tr td.selected.disabled:active,
452 +fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active,
453 +.datepicker table tr td.selected.disabled.active,
454 +.datepicker table tr td.selected:hover.disabled.active,
455 +.datepicker table tr td.selected.disabled.disabled.active,
456 +.datepicker table tr td.selected.disabled:hover.disabled.active,
457 +.datepicker table tr td.selected[disabled].active,
458 +.datepicker table tr td.selected:hover[disabled].active,
459 +.datepicker table tr td.selected.disabled[disabled].active,
460 +.datepicker table tr td.selected.disabled:hover[disabled].active,
461 +fieldset[disabled] .datepicker table tr td.selected.active,
462 +fieldset[disabled] .datepicker table tr td.selected:hover.active,
463 +fieldset[disabled] .datepicker table tr td.selected.disabled.active,
464 +fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active {
465 + background-color: #999999;
466 + border-color: #555555;
467 +}
468 +.datepicker table tr td.active,
469 +.datepicker table tr td.active:hover,
470 +.datepicker table tr td.active.disabled,
471 +.datepicker table tr td.active.disabled:hover {
472 + color: #ffffff;
473 + background-color: #428bca;
474 + border-color: #357ebd;
475 + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
476 +}
477 +.datepicker table tr td.active:hover,
478 +.datepicker table tr td.active:hover:hover,
479 +.datepicker table tr td.active.disabled:hover,
480 +.datepicker table tr td.active.disabled:hover:hover,
481 +.datepicker table tr td.active:focus,
482 +.datepicker table tr td.active:hover:focus,
483 +.datepicker table tr td.active.disabled:focus,
484 +.datepicker table tr td.active.disabled:hover:focus,
485 +.datepicker table tr td.active:active,
486 +.datepicker table tr td.active:hover:active,
487 +.datepicker table tr td.active.disabled:active,
488 +.datepicker table tr td.active.disabled:hover:active,
489 +.datepicker table tr td.active.active,
490 +.datepicker table tr td.active:hover.active,
491 +.datepicker table tr td.active.disabled.active,
492 +.datepicker table tr td.active.disabled:hover.active,
493 +.open .dropdown-toggle.datepicker table tr td.active,
494 +.open .dropdown-toggle.datepicker table tr td.active:hover,
495 +.open .dropdown-toggle.datepicker table tr td.active.disabled,
496 +.open .dropdown-toggle.datepicker table tr td.active.disabled:hover {
497 + color: #ffffff;
498 + background-color: #3276b1;
499 + border-color: #285e8e;
500 +}
501 +.datepicker table tr td.active:active,
502 +.datepicker table tr td.active:hover:active,
503 +.datepicker table tr td.active.disabled:active,
504 +.datepicker table tr td.active.disabled:hover:active,
505 +.datepicker table tr td.active.active,
506 +.datepicker table tr td.active:hover.active,
507 +.datepicker table tr td.active.disabled.active,
508 +.datepicker table tr td.active.disabled:hover.active,
509 +.open .dropdown-toggle.datepicker table tr td.active,
510 +.open .dropdown-toggle.datepicker table tr td.active:hover,
511 +.open .dropdown-toggle.datepicker table tr td.active.disabled,
512 +.open .dropdown-toggle.datepicker table tr td.active.disabled:hover {
513 + background-image: none;
514 +}
515 +.datepicker table tr td.active.disabled,
516 +.datepicker table tr td.active:hover.disabled,
517 +.datepicker table tr td.active.disabled.disabled,
518 +.datepicker table tr td.active.disabled:hover.disabled,
519 +.datepicker table tr td.active[disabled],
520 +.datepicker table tr td.active:hover[disabled],
521 +.datepicker table tr td.active.disabled[disabled],
522 +.datepicker table tr td.active.disabled:hover[disabled],
523 +fieldset[disabled] .datepicker table tr td.active,
524 +fieldset[disabled] .datepicker table tr td.active:hover,
525 +fieldset[disabled] .datepicker table tr td.active.disabled,
526 +fieldset[disabled] .datepicker table tr td.active.disabled:hover,
527 +.datepicker table tr td.active.disabled:hover,
528 +.datepicker table tr td.active:hover.disabled:hover,
529 +.datepicker table tr td.active.disabled.disabled:hover,
530 +.datepicker table tr td.active.disabled:hover.disabled:hover,
531 +.datepicker table tr td.active[disabled]:hover,
532 +.datepicker table tr td.active:hover[disabled]:hover,
533 +.datepicker table tr td.active.disabled[disabled]:hover,
534 +.datepicker table tr td.active.disabled:hover[disabled]:hover,
535 +fieldset[disabled] .datepicker table tr td.active:hover,
536 +fieldset[disabled] .datepicker table tr td.active:hover:hover,
537 +fieldset[disabled] .datepicker table tr td.active.disabled:hover,
538 +fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover,
539 +.datepicker table tr td.active.disabled:focus,
540 +.datepicker table tr td.active:hover.disabled:focus,
541 +.datepicker table tr td.active.disabled.disabled:focus,
542 +.datepicker table tr td.active.disabled:hover.disabled:focus,
543 +.datepicker table tr td.active[disabled]:focus,
544 +.datepicker table tr td.active:hover[disabled]:focus,
545 +.datepicker table tr td.active.disabled[disabled]:focus,
546 +.datepicker table tr td.active.disabled:hover[disabled]:focus,
547 +fieldset[disabled] .datepicker table tr td.active:focus,
548 +fieldset[disabled] .datepicker table tr td.active:hover:focus,
549 +fieldset[disabled] .datepicker table tr td.active.disabled:focus,
550 +fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus,
551 +.datepicker table tr td.active.disabled:active,
552 +.datepicker table tr td.active:hover.disabled:active,
553 +.datepicker table tr td.active.disabled.disabled:active,
554 +.datepicker table tr td.active.disabled:hover.disabled:active,
555 +.datepicker table tr td.active[disabled]:active,
556 +.datepicker table tr td.active:hover[disabled]:active,
557 +.datepicker table tr td.active.disabled[disabled]:active,
558 +.datepicker table tr td.active.disabled:hover[disabled]:active,
559 +fieldset[disabled] .datepicker table tr td.active:active,
560 +fieldset[disabled] .datepicker table tr td.active:hover:active,
561 +fieldset[disabled] .datepicker table tr td.active.disabled:active,
562 +fieldset[disabled] .datepicker table tr td.active.disabled:hover:active,
563 +.datepicker table tr td.active.disabled.active,
564 +.datepicker table tr td.active:hover.disabled.active,
565 +.datepicker table tr td.active.disabled.disabled.active,
566 +.datepicker table tr td.active.disabled:hover.disabled.active,
567 +.datepicker table tr td.active[disabled].active,
568 +.datepicker table tr td.active:hover[disabled].active,
569 +.datepicker table tr td.active.disabled[disabled].active,
570 +.datepicker table tr td.active.disabled:hover[disabled].active,
571 +fieldset[disabled] .datepicker table tr td.active.active,
572 +fieldset[disabled] .datepicker table tr td.active:hover.active,
573 +fieldset[disabled] .datepicker table tr td.active.disabled.active,
574 +fieldset[disabled] .datepicker table tr td.active.disabled:hover.active {
575 + background-color: #428bca;
576 + border-color: #357ebd;
577 +}
578 +.datepicker table tr td span {
579 + display: block;
580 + width: 23%;
581 + height: 54px;
582 + line-height: 54px;
583 + float: left;
584 + margin: 1%;
585 + cursor: pointer;
586 + border-radius: 4px;
587 +}
588 +.datepicker table tr td span:hover {
589 + background: #eeeeee;
590 +}
591 +.datepicker table tr td span.disabled,
592 +.datepicker table tr td span.disabled:hover {
593 + background: none;
594 + color: #999999;
595 + cursor: default;
596 +}
597 +.datepicker table tr td span.active,
598 +.datepicker table tr td span.active:hover,
599 +.datepicker table tr td span.active.disabled,
600 +.datepicker table tr td span.active.disabled:hover {
601 + color: #ffffff;
602 + background-color: #428bca;
603 + border-color: #357ebd;
604 + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
605 +}
606 +.datepicker table tr td span.active:hover,
607 +.datepicker table tr td span.active:hover:hover,
608 +.datepicker table tr td span.active.disabled:hover,
609 +.datepicker table tr td span.active.disabled:hover:hover,
610 +.datepicker table tr td span.active:focus,
611 +.datepicker table tr td span.active:hover:focus,
612 +.datepicker table tr td span.active.disabled:focus,
613 +.datepicker table tr td span.active.disabled:hover:focus,
614 +.datepicker table tr td span.active:active,
615 +.datepicker table tr td span.active:hover:active,
616 +.datepicker table tr td span.active.disabled:active,
617 +.datepicker table tr td span.active.disabled:hover:active,
618 +.datepicker table tr td span.active.active,
619 +.datepicker table tr td span.active:hover.active,
620 +.datepicker table tr td span.active.disabled.active,
621 +.datepicker table tr td span.active.disabled:hover.active,
622 +.open .dropdown-toggle.datepicker table tr td span.active,
623 +.open .dropdown-toggle.datepicker table tr td span.active:hover,
624 +.open .dropdown-toggle.datepicker table tr td span.active.disabled,
625 +.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover {
626 + color: #ffffff;
627 + background-color: #3276b1;
628 + border-color: #285e8e;
629 +}
630 +.datepicker table tr td span.active:active,
631 +.datepicker table tr td span.active:hover:active,
632 +.datepicker table tr td span.active.disabled:active,
633 +.datepicker table tr td span.active.disabled:hover:active,
634 +.datepicker table tr td span.active.active,
635 +.datepicker table tr td span.active:hover.active,
636 +.datepicker table tr td span.active.disabled.active,
637 +.datepicker table tr td span.active.disabled:hover.active,
638 +.open .dropdown-toggle.datepicker table tr td span.active,
639 +.open .dropdown-toggle.datepicker table tr td span.active:hover,
640 +.open .dropdown-toggle.datepicker table tr td span.active.disabled,
641 +.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover {
642 + background-image: none;
643 +}
644 +.datepicker table tr td span.active.disabled,
645 +.datepicker table tr td span.active:hover.disabled,
646 +.datepicker table tr td span.active.disabled.disabled,
647 +.datepicker table tr td span.active.disabled:hover.disabled,
648 +.datepicker table tr td span.active[disabled],
649 +.datepicker table tr td span.active:hover[disabled],
650 +.datepicker table tr td span.active.disabled[disabled],
651 +.datepicker table tr td span.active.disabled:hover[disabled],
652 +fieldset[disabled] .datepicker table tr td span.active,
653 +fieldset[disabled] .datepicker table tr td span.active:hover,
654 +fieldset[disabled] .datepicker table tr td span.active.disabled,
655 +fieldset[disabled] .datepicker table tr td span.active.disabled:hover,
656 +.datepicker table tr td span.active.disabled:hover,
657 +.datepicker table tr td span.active:hover.disabled:hover,
658 +.datepicker table tr td span.active.disabled.disabled:hover,
659 +.datepicker table tr td span.active.disabled:hover.disabled:hover,
660 +.datepicker table tr td span.active[disabled]:hover,
661 +.datepicker table tr td span.active:hover[disabled]:hover,
662 +.datepicker table tr td span.active.disabled[disabled]:hover,
663 +.datepicker table tr td span.active.disabled:hover[disabled]:hover,
664 +fieldset[disabled] .datepicker table tr td span.active:hover,
665 +fieldset[disabled] .datepicker table tr td span.active:hover:hover,
666 +fieldset[disabled] .datepicker table tr td span.active.disabled:hover,
667 +fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,
668 +.datepicker table tr td span.active.disabled:focus,
669 +.datepicker table tr td span.active:hover.disabled:focus,
670 +.datepicker table tr td span.active.disabled.disabled:focus,
671 +.datepicker table tr td span.active.disabled:hover.disabled:focus,
672 +.datepicker table tr td span.active[disabled]:focus,
673 +.datepicker table tr td span.active:hover[disabled]:focus,
674 +.datepicker table tr td span.active.disabled[disabled]:focus,
675 +.datepicker table tr td span.active.disabled:hover[disabled]:focus,
676 +fieldset[disabled] .datepicker table tr td span.active:focus,
677 +fieldset[disabled] .datepicker table tr td span.active:hover:focus,
678 +fieldset[disabled] .datepicker table tr td span.active.disabled:focus,
679 +fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,
680 +.datepicker table tr td span.active.disabled:active,
681 +.datepicker table tr td span.active:hover.disabled:active,
682 +.datepicker table tr td span.active.disabled.disabled:active,
683 +.datepicker table tr td span.active.disabled:hover.disabled:active,
684 +.datepicker table tr td span.active[disabled]:active,
685 +.datepicker table tr td span.active:hover[disabled]:active,
686 +.datepicker table tr td span.active.disabled[disabled]:active,
687 +.datepicker table tr td span.active.disabled:hover[disabled]:active,
688 +fieldset[disabled] .datepicker table tr td span.active:active,
689 +fieldset[disabled] .datepicker table tr td span.active:hover:active,
690 +fieldset[disabled] .datepicker table tr td span.active.disabled:active,
691 +fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active,
692 +.datepicker table tr td span.active.disabled.active,
693 +.datepicker table tr td span.active:hover.disabled.active,
694 +.datepicker table tr td span.active.disabled.disabled.active,
695 +.datepicker table tr td span.active.disabled:hover.disabled.active,
696 +.datepicker table tr td span.active[disabled].active,
697 +.datepicker table tr td span.active:hover[disabled].active,
698 +.datepicker table tr td span.active.disabled[disabled].active,
699 +.datepicker table tr td span.active.disabled:hover[disabled].active,
700 +fieldset[disabled] .datepicker table tr td span.active.active,
701 +fieldset[disabled] .datepicker table tr td span.active:hover.active,
702 +fieldset[disabled] .datepicker table tr td span.active.disabled.active,
703 +fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active {
704 + background-color: #428bca;
705 + border-color: #357ebd;
706 +}
707 +.datepicker table tr td span.old,
708 +.datepicker table tr td span.new {
709 + color: #999999;
710 +}
711 +.datepicker th.datepicker-switch {
712 + width: 145px;
713 +}
714 +.datepicker thead tr:first-child th,
715 +.datepicker tfoot tr th {
716 + cursor: pointer;
717 +}
718 +.datepicker thead tr:first-child th:hover,
719 +.datepicker tfoot tr th:hover {
720 + background: #eeeeee;
721 +}
722 +.datepicker .cw {
723 + font-size: 10px;
724 + width: 12px;
725 + padding: 0 2px 0 5px;
726 + vertical-align: middle;
727 +}
728 +.datepicker thead tr:first-child th.cw {
729 + cursor: default;
730 + background-color: transparent;
731 +}
732 +.input-group.date .input-group-addon i {
733 + cursor: pointer;
734 + width: 16px;
735 + height: 16px;
736 +}
737 +.input-daterange input {
738 + text-align: center;
739 +}
740 +.input-daterange input:first-child {
741 + border-radius: 3px 0 0 3px;
742 +}
743 +.input-daterange input:last-child {
744 + border-radius: 0 3px 3px 0;
745 +}
746 +.input-daterange .input-group-addon {
747 + width: auto;
748 + min-width: 16px;
749 + padding: 4px 5px;
750 + font-weight: normal;
751 + line-height: 1.428571429;
752 + text-align: center;
753 + text-shadow: 0 1px 0 #fff;
754 + vertical-align: middle;
755 + background-color: #eeeeee;
756 + border: solid #cccccc;
757 + border-width: 1px 0;
758 + margin-left: -5px;
759 + margin-right: -5px;
760 +}
761 +.datepicker.dropdown-menu {
762 + position: absolute;
763 + top: 100%;
764 + left: 0;
765 + z-index: 1000;
766 + float: left;
767 + display: none;
768 + min-width: 160px;
769 + list-style: none;
770 + background-color: #ffffff;
771 + border: 1px solid #ccc;
772 + border: 1px solid rgba(0, 0, 0, 0.2);
773 + border-radius: 5px;
774 + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
775 + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
776 + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
777 + -webkit-background-clip: padding-box;
778 + -moz-background-clip: padding;
779 + background-clip: padding-box;
780 + *border-right-width: 2px;
781 + *border-bottom-width: 2px;
782 + color: #333333;
783 + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
784 + font-size: 13px;
785 + line-height: 1.428571429;
786 +}
787 +.datepicker.dropdown-menu th,
788 +.datepicker.datepicker-inline th,
789 +.datepicker.dropdown-menu td,
790 +.datepicker.datepicker-inline td {
791 + padding: 0px 5px;
792 +}
1 +var gulp = require('gulp');
2 +var sass = require('gulp-sass');
3 +var browserSync = require('browser-sync').create();
4 +var header = require('gulp-header');
5 +var cleanCSS = require('gulp-clean-css');
6 +var rename = require("gulp-rename");
7 +var uglify = require('gulp-uglify');
8 +var pkg = require('./package.json');
9 +
10 +// Set the banner content
11 +var banner = ['/*!\n',
12 + ' * Start Bootstrap - <%= pkg.title %> v<%= pkg.version %> (<%= pkg.homepage %>)\n',
13 + ' * Copyright 2013-' + (new Date()).getFullYear(), ' <%= pkg.author %>\n',
14 + ' * Licensed under <%= pkg.license %> (https://github.com/BlackrockDigital/<%= pkg.name %>/blob/master/LICENSE)\n',
15 + ' */\n',
16 + ''
17 +].join('');
18 +
19 +// Compiles SCSS files from /scss into /css
20 +gulp.task('sass', function() {
21 + return gulp.src('scss/grayscale.scss')
22 + .pipe(sass())
23 + .pipe(header(banner, {
24 + pkg: pkg
25 + }))
26 + .pipe(gulp.dest('css'))
27 + .pipe(browserSync.reload({
28 + stream: true
29 + }))
30 +});
31 +
32 +// Minify compiled CSS
33 +gulp.task('minify-css', ['sass'], function() {
34 + return gulp.src('css/grayscale.css')
35 + .pipe(cleanCSS({
36 + compatibility: 'ie8'
37 + }))
38 + .pipe(rename({
39 + suffix: '.min'
40 + }))
41 + .pipe(gulp.dest('css'))
42 + .pipe(browserSync.reload({
43 + stream: true
44 + }))
45 +});
46 +
47 +// Minify custom JS
48 +gulp.task('minify-js', function() {
49 + return gulp.src('js/grayscale.js')
50 + .pipe(uglify())
51 + .pipe(header(banner, {
52 + pkg: pkg
53 + }))
54 + .pipe(rename({
55 + suffix: '.min'
56 + }))
57 + .pipe(gulp.dest('js'))
58 + .pipe(browserSync.reload({
59 + stream: true
60 + }))
61 +});
62 +
63 +// Copy vendor files from /node_modules into /vendor
64 +// NOTE: requires `npm install` before running!
65 +gulp.task('copy', function() {
66 + gulp.src([
67 + 'node_modules/bootstrap/dist/**/*',
68 + '!**/npm.js',
69 + '!**/bootstrap-theme.*',
70 + '!**/*.map'
71 + ])
72 + .pipe(gulp.dest('vendor/bootstrap'))
73 +
74 + gulp.src(['node_modules/jquery/dist/jquery.js', 'node_modules/jquery/dist/jquery.min.js'])
75 + .pipe(gulp.dest('vendor/jquery'))
76 +
77 + gulp.src(['node_modules/jquery.easing/*.js'])
78 + .pipe(gulp.dest('vendor/jquery-easing'))
79 +
80 + gulp.src([
81 + 'node_modules/font-awesome/**',
82 + '!node_modules/font-awesome/**/*.map',
83 + '!node_modules/font-awesome/.npmignore',
84 + '!node_modules/font-awesome/*.txt',
85 + '!node_modules/font-awesome/*.md',
86 + '!node_modules/font-awesome/*.json'
87 + ])
88 + .pipe(gulp.dest('vendor/font-awesome'))
89 +})
90 +
91 +// Default task
92 +gulp.task('default', ['sass', 'minify-css', 'minify-js', 'copy']);
93 +
94 +// Configure the browserSync task
95 +gulp.task('browserSync', function() {
96 + browserSync.init({
97 + server: {
98 + baseDir: ''
99 + },
100 + })
101 +})
102 +
103 +// Dev task with browserSync
104 +gulp.task('dev', ['browserSync', 'sass', 'minify-css', 'minify-js'], function() {
105 + gulp.watch('scss/*.scss', ['sass']);
106 + gulp.watch('css/*.css', ['minify-css']);
107 + gulp.watch('js/*.js', ['minify-js']);
108 + // Reloads the browser whenever HTML or JS files change
109 + gulp.watch('*.html', browserSync.reload);
110 + gulp.watch('js/**/*.js', browserSync.reload);
111 +});
1 +<!DOCTYPE html>
2 +<html lang="en">
3 +
4 + <head>
5 +
6 + <meta charset="utf-8">
7 + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
8 + <meta name="description" content="">
9 + <meta name="author" content="">
10 +
11 + <title>식당 예약</title>
12 +
13 + <!-- Bootstrap core CSS -->
14 + <link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
15 +
16 + <!-- Custom fonts for this template -->
17 + <link href="vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
18 + <link href="https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic" rel="stylesheet" type="text/css">
19 + <link href='https://fonts.googleapis.com/css?family=Cabin:700' rel='stylesheet' type='text/css'>
20 +
21 + <!-- Custom styles for this template -->
22 + <link href="css/grayscale.min.css" rel="stylesheet">
23 +
24 + </head>
25 +
26 + <body id="page-top">
27 +
28 + <!-- Navigation -->
29 + <nav class="navbar navbar-expand-lg navbar-light fixed-top" id="mainNav">
30 + <div class="container">
31 + <a class="navbar-brand js-scroll-trigger" href="#page-top">그로또 예약 사이트</a>
32 + <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
33 + Menu
34 + <i class="fa fa-bars"></i>
35 + </button>
36 + <div class="collapse navbar-collapse" id="navbarResponsive">
37 + <ul class="navbar-nav ml-auto">
38 + <li class="nav-item">
39 + <a class="nav-link js-scroll-trigger" href="#about">소개</a>
40 + </li>
41 + <li class="nav-item">
42 + <a class="nav-link js-scroll-trigger" href="#download">예약</a>
43 + </li>
44 + <li class="nav-item">
45 + <a class="nav-link js-scroll-trigger" href="#contact">오시는 길</a>
46 + </li>
47 + </ul>
48 + </div>
49 + </div>
50 + </nav>
51 +
52 + <!-- Intro Header -->
53 + <header class="masthead">
54 + <div class="intro-body">
55 + <div class="container">
56 + <div class="row">
57 + <div class="col-lg-8 mx-auto">
58 + <h1 class="brand-heading">GROTTO!</h1>
59 + <p class="intro-text">
60 + <br>정지윤</p>
61 + <a href="#about" class="btn btn-circle js-scroll-trigger">
62 + <i class="fa fa-angle-double-down animated"></i>
63 + </a>
64 + </div>
65 + </div>
66 + </div>
67 + </div>
68 + </header>
69 +
70 + <!-- About Section -->
71 + <section id="about" class=" content-section text-center">
72 + <div class="container">
73 + <div class="row">
74 + <div class="col-lg-8 mx-auto">
75 + <h2>About GROTTO</h2>
76 + <p>
77 + <a href="http://startbootstrap.com/template-overviews/grayscale/">Grotto - Let your senses fly</a>.
78 + <br>당신의 오감을 날려드립니다.</p>
79 +
80 + <p>
81 + <a href="http://gratisography.com/">Coffee - Kona coffee</a>
82 + <br>세계 3대 커피 하와이안 코나 원두를 사용합니다.</p>
83 + <p>
84 + <a href="http://snazzymaps.com/">Wine - Wine expert</a>.
85 + <br>150가지 종류의 와인을 와인을 닮은 공간에서 편하게 즐기세요.</p>
86 + </div>
87 + </div>
88 + </div>
89 + </section>
90 +
91 + <!-- Download Section -->
92 + <section id="download" class="download-section content-section text-center">
93 + <div class="container">
94 + <div class="col-lg-8 mx-auto">
95 + <h2>Reservation</h2>
96 + <p>당일 예약은 전화예약만 가능합니다.</p>
97 + <a href="http://startbootstrap.com/template-overviews/grayscale/" class="btn btn-default btn-lg">예약하기</a>
98 + </div>
99 + </div>
100 + </section>
101 +
102 + <!-- Contact Section -->
103 + <section id="contact" class="content-section text-center">
104 + <div class="container">
105 + <div class="row">
106 + <div class="col-lg-8 mx-auto">
107 + <h2>Contact GROTTO</h2>
108 + <p>전화번호 : 031-205-7220</p>
109 + <p>영업시간 : 매일 10:00 - 23:30 (Last Order 22:00)</p>
110 + <ul class="list-inline banner-social-buttons">
111 + <li class="list-inline-item">
112 + <a href="https://www.facebook.com/grottosuwon/" class="btn btn-default btn-lg">
113 + <i class="fa fa-facebook fa-fw"></i>
114 + <span class="network-name">facebook</span>
115 + </a>
116 + </li>
117 + <li class="list-inline-item">
118 + <a href="https://www.instagram.com/grotto_since2011/" class="btn btn-default btn-lg">
119 + <i class="fa fa-instagram fa-fw"></i>
120 + <span class="network-name">Instagram</span>
121 + </a>
122 + </li>
123 + <li class="list-inline-item">
124 + <a href="https://plus.google.com/+Startbootstrap/posts" class="btn btn-default btn-lg">
125 + <i class="fa fa-google-plus fa-fw"></i>
126 + <span class="network-name">Google+</span>
127 + </a>
128 + </li>
129 + </ul>
130 + </div>
131 + </div>
132 + </div>
133 + </section>
134 +
135 + <!-- Map Section -->
136 + <div id="map"></div>
137 +
138 + <!-- Footer -->
139 + <footer>
140 + <div class="container text-center">
141 + <p>Copyright &copy; Your Website 2017</p>
142 + </div>
143 + </footer>
144 +
145 + <!-- Bootstrap core JavaScript -->
146 + <script src="vendor/jquery/jquery.min.js"></script>
147 + <script src="vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
148 +
149 + <!-- Plugin JavaScript -->
150 + <script src="vendor/jquery-easing/jquery.easing.min.js"></script>
151 +
152 + <!-- Google Maps API Key - Use your own API key to enable the map feature. More information on the Google Maps API can be found at https://developers.google.com/maps/ -->
153 + <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCRngKslUGJTlibkQ3FkfTxj3Xss1UlZDA&sensor=false"></script>
154 +
155 + <!-- Custom scripts for this template -->
156 + <script src="js/grayscale.min.js"></script>
157 +
158 + </body>
159 +
160 +</html>
1 +/* =========================================================
2 + * bootstrap-datepicker.js
3 + * Repo: https://github.com/eternicode/bootstrap-datepicker/
4 + * Demo: http://eternicode.github.io/bootstrap-datepicker/
5 + * Docs: http://bootstrap-datepicker.readthedocs.org/
6 + * Forked from http://www.eyecon.ro/bootstrap-datepicker
7 + * =========================================================
8 + * Started by Stefan Petre; improvements by Andrew Rowls + contributors
9 + *
10 + * Licensed under the Apache License, Version 2.0 (the "License");
11 + * you may not use this file except in compliance with the License.
12 + * You may obtain a copy of the License at
13 + *
14 + * http://www.apache.org/licenses/LICENSE-2.0
15 + *
16 + * Unless required by applicable law or agreed to in writing, software
17 + * distributed under the License is distributed on an "AS IS" BASIS,
18 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19 + * See the License for the specific language governing permissions and
20 + * limitations under the License.
21 + * ========================================================= */
22 +
23 +(function($, undefined){
24 +
25 + var $window = $(window);
26 +
27 + function UTCDate(){
28 + return new Date(Date.UTC.apply(Date, arguments));
29 + }
30 + function UTCToday(){
31 + var today = new Date();
32 + return UTCDate(today.getFullYear(), today.getMonth(), today.getDate());
33 + }
34 + function alias(method){
35 + return function(){
36 + return this[method].apply(this, arguments);
37 + };
38 + }
39 +
40 + var DateArray = (function(){
41 + var extras = {
42 + get: function(i){
43 + return this.slice(i)[0];
44 + },
45 + contains: function(d){
46 + // Array.indexOf is not cross-browser;
47 + // $.inArray doesn't work with Dates
48 + var val = d && d.valueOf();
49 + for (var i=0, l=this.length; i < l; i++)
50 + if (this[i].valueOf() === val)
51 + return i;
52 + return -1;
53 + },
54 + remove: function(i){
55 + this.splice(i,1);
56 + },
57 + replace: function(new_array){
58 + if (!new_array)
59 + return;
60 + if (!$.isArray(new_array))
61 + new_array = [new_array];
62 + this.clear();
63 + this.push.apply(this, new_array);
64 + },
65 + clear: function(){
66 + this.length = 0;
67 + },
68 + copy: function(){
69 + var a = new DateArray();
70 + a.replace(this);
71 + return a;
72 + }
73 + };
74 +
75 + return function(){
76 + var a = [];
77 + a.push.apply(a, arguments);
78 + $.extend(a, extras);
79 + return a;
80 + };
81 + })();
82 +
83 +
84 + // Picker object
85 +
86 + var Datepicker = function(element, options){
87 + this.dates = new DateArray();
88 + this.viewDate = UTCToday();
89 + this.focusDate = null;
90 +
91 + this._process_options(options);
92 +
93 + this.element = $(element);
94 + this.isInline = false;
95 + this.isInput = this.element.is('input');
96 + this.component = this.element.is('.date') ? this.element.find('.add-on, .input-group-addon, .btn') : false;
97 + this.hasInput = this.component && this.element.find('input').length;
98 + if (this.component && this.component.length === 0)
99 + this.component = false;
100 +
101 + this.picker = $(DPGlobal.template);
102 + this._buildEvents();
103 + this._attachEvents();
104 +
105 + if (this.isInline){
106 + this.picker.addClass('datepicker-inline').appendTo(this.element);
107 + }
108 + else {
109 + this.picker.addClass('datepicker-dropdown dropdown-menu');
110 + }
111 +
112 + if (this.o.rtl){
113 + this.picker.addClass('datepicker-rtl');
114 + }
115 +
116 + this.viewMode = this.o.startView;
117 +
118 + if (this.o.calendarWeeks)
119 + this.picker.find('tfoot th.today')
120 + .attr('colspan', function(i, val){
121 + return parseInt(val) + 1;
122 + });
123 +
124 + this._allow_update = false;
125 +
126 + this.setStartDate(this._o.startDate);
127 + this.setEndDate(this._o.endDate);
128 + this.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled);
129 +
130 + this.fillDow();
131 + this.fillMonths();
132 +
133 + this._allow_update = true;
134 +
135 + this.update();
136 + this.showMode();
137 +
138 + if (this.isInline){
139 + this.show();
140 + }
141 + };
142 +
143 + Datepicker.prototype = {
144 + constructor: Datepicker,
145 +
146 + _process_options: function(opts){
147 + // Store raw options for reference
148 + this._o = $.extend({}, this._o, opts);
149 + // Processed options
150 + var o = this.o = $.extend({}, this._o);
151 +
152 + // Check if "de-DE" style date is available, if not language should
153 + // fallback to 2 letter code eg "de"
154 + var lang = o.language;
155 + if (!dates[lang]){
156 + lang = lang.split('-')[0];
157 + if (!dates[lang])
158 + lang = defaults.language;
159 + }
160 + o.language = lang;
161 +
162 + switch (o.startView){
163 + case 2:
164 + case 'decade':
165 + o.startView = 2;
166 + break;
167 + case 1:
168 + case 'year':
169 + o.startView = 1;
170 + break;
171 + default:
172 + o.startView = 0;
173 + }
174 +
175 + switch (o.minViewMode){
176 + case 1:
177 + case 'months':
178 + o.minViewMode = 1;
179 + break;
180 + case 2:
181 + case 'years':
182 + o.minViewMode = 2;
183 + break;
184 + default:
185 + o.minViewMode = 0;
186 + }
187 +
188 + o.startView = Math.max(o.startView, o.minViewMode);
189 +
190 + // true, false, or Number > 0
191 + if (o.multidate !== true){
192 + o.multidate = Number(o.multidate) || false;
193 + if (o.multidate !== false)
194 + o.multidate = Math.max(0, o.multidate);
195 + else
196 + o.multidate = 1;
197 + }
198 + o.multidateSeparator = String(o.multidateSeparator);
199 +
200 + o.weekStart %= 7;
201 + o.weekEnd = ((o.weekStart + 6) % 7);
202 +
203 + var format = DPGlobal.parseFormat(o.format);
204 + if (o.startDate !== -Infinity){
205 + if (!!o.startDate){
206 + if (o.startDate instanceof Date)
207 + o.startDate = this._local_to_utc(this._zero_time(o.startDate));
208 + else
209 + o.startDate = DPGlobal.parseDate(o.startDate, format, o.language);
210 + }
211 + else {
212 + o.startDate = -Infinity;
213 + }
214 + }
215 + if (o.endDate !== Infinity){
216 + if (!!o.endDate){
217 + if (o.endDate instanceof Date)
218 + o.endDate = this._local_to_utc(this._zero_time(o.endDate));
219 + else
220 + o.endDate = DPGlobal.parseDate(o.endDate, format, o.language);
221 + }
222 + else {
223 + o.endDate = Infinity;
224 + }
225 + }
226 +
227 + o.daysOfWeekDisabled = o.daysOfWeekDisabled||[];
228 + if (!$.isArray(o.daysOfWeekDisabled))
229 + o.daysOfWeekDisabled = o.daysOfWeekDisabled.split(/[,\s]*/);
230 + o.daysOfWeekDisabled = $.map(o.daysOfWeekDisabled, function(d){
231 + return parseInt(d, 10);
232 + });
233 +
234 + var plc = String(o.orientation).toLowerCase().split(/\s+/g),
235 + _plc = o.orientation.toLowerCase();
236 + plc = $.grep(plc, function(word){
237 + return (/^auto|left|right|top|bottom$/).test(word);
238 + });
239 + o.orientation = {x: 'auto', y: 'auto'};
240 + if (!_plc || _plc === 'auto')
241 + ; // no action
242 + else if (plc.length === 1){
243 + switch (plc[0]){
244 + case 'top':
245 + case 'bottom':
246 + o.orientation.y = plc[0];
247 + break;
248 + case 'left':
249 + case 'right':
250 + o.orientation.x = plc[0];
251 + break;
252 + }
253 + }
254 + else {
255 + _plc = $.grep(plc, function(word){
256 + return (/^left|right$/).test(word);
257 + });
258 + o.orientation.x = _plc[0] || 'auto';
259 +
260 + _plc = $.grep(plc, function(word){
261 + return (/^top|bottom$/).test(word);
262 + });
263 + o.orientation.y = _plc[0] || 'auto';
264 + }
265 + },
266 + _events: [],
267 + _secondaryEvents: [],
268 + _applyEvents: function(evs){
269 + for (var i=0, el, ch, ev; i < evs.length; i++){
270 + el = evs[i][0];
271 + if (evs[i].length === 2){
272 + ch = undefined;
273 + ev = evs[i][1];
274 + }
275 + else if (evs[i].length === 3){
276 + ch = evs[i][1];
277 + ev = evs[i][2];
278 + }
279 + el.on(ev, ch);
280 + }
281 + },
282 + _unapplyEvents: function(evs){
283 + for (var i=0, el, ev, ch; i < evs.length; i++){
284 + el = evs[i][0];
285 + if (evs[i].length === 2){
286 + ch = undefined;
287 + ev = evs[i][1];
288 + }
289 + else if (evs[i].length === 3){
290 + ch = evs[i][1];
291 + ev = evs[i][2];
292 + }
293 + el.off(ev, ch);
294 + }
295 + },
296 + _buildEvents: function(){
297 + if (this.isInput){ // single input
298 + this._events = [
299 + [this.element, {
300 + focus: $.proxy(this.show, this),
301 + keyup: $.proxy(function(e){
302 + if ($.inArray(e.keyCode, [27,37,39,38,40,32,13,9]) === -1)
303 + this.update();
304 + }, this),
305 + keydown: $.proxy(this.keydown, this)
306 + }]
307 + ];
308 + }
309 + else if (this.component && this.hasInput){ // component: input + button
310 + this._events = [
311 + // For components that are not readonly, allow keyboard nav
312 + [this.element.find('input'), {
313 + focus: $.proxy(this.show, this),
314 + keyup: $.proxy(function(e){
315 + if ($.inArray(e.keyCode, [27,37,39,38,40,32,13,9]) === -1)
316 + this.update();
317 + }, this),
318 + keydown: $.proxy(this.keydown, this)
319 + }],
320 + [this.component, {
321 + click: $.proxy(this.show, this)
322 + }]
323 + ];
324 + }
325 + else if (this.element.is('div')){ // inline datepicker
326 + this.isInline = true;
327 + }
328 + else {
329 + this._events = [
330 + [this.element, {
331 + click: $.proxy(this.show, this)
332 + }]
333 + ];
334 + }
335 + this._events.push(
336 + // Component: listen for blur on element descendants
337 + [this.element, '*', {
338 + blur: $.proxy(function(e){
339 + this._focused_from = e.target;
340 + }, this)
341 + }],
342 + // Input: listen for blur on element
343 + [this.element, {
344 + blur: $.proxy(function(e){
345 + this._focused_from = e.target;
346 + }, this)
347 + }]
348 + );
349 +
350 + this._secondaryEvents = [
351 + [this.picker, {
352 + click: $.proxy(this.click, this)
353 + }],
354 + [$(window), {
355 + resize: $.proxy(this.place, this)
356 + }],
357 + [$(document), {
358 + 'mousedown touchstart': $.proxy(function(e){
359 + // Clicked outside the datepicker, hide it
360 + if (!(
361 + this.element.is(e.target) ||
362 + this.element.find(e.target).length ||
363 + this.picker.is(e.target) ||
364 + this.picker.find(e.target).length
365 + )){
366 + this.hide();
367 + }
368 + }, this)
369 + }]
370 + ];
371 + },
372 + _attachEvents: function(){
373 + this._detachEvents();
374 + this._applyEvents(this._events);
375 + },
376 + _detachEvents: function(){
377 + this._unapplyEvents(this._events);
378 + },
379 + _attachSecondaryEvents: function(){
380 + this._detachSecondaryEvents();
381 + this._applyEvents(this._secondaryEvents);
382 + },
383 + _detachSecondaryEvents: function(){
384 + this._unapplyEvents(this._secondaryEvents);
385 + },
386 + _trigger: function(event, altdate){
387 + var date = altdate || this.dates.get(-1),
388 + local_date = this._utc_to_local(date);
389 +
390 + this.element.trigger({
391 + type: event,
392 + date: local_date,
393 + dates: $.map(this.dates, this._utc_to_local),
394 + format: $.proxy(function(ix, format){
395 + if (arguments.length === 0){
396 + ix = this.dates.length - 1;
397 + format = this.o.format;
398 + }
399 + else if (typeof ix === 'string'){
400 + format = ix;
401 + ix = this.dates.length - 1;
402 + }
403 + format = format || this.o.format;
404 + var date = this.dates.get(ix);
405 + return DPGlobal.formatDate(date, format, this.o.language);
406 + }, this)
407 + });
408 + },
409 +
410 + show: function(){
411 + if (!this.isInline)
412 + this.picker.appendTo('body');
413 + this.picker.show();
414 + this.place();
415 + this._attachSecondaryEvents();
416 + this._trigger('show');
417 + },
418 +
419 + hide: function(){
420 + if (this.isInline)
421 + return;
422 + if (!this.picker.is(':visible'))
423 + return;
424 + this.focusDate = null;
425 + this.picker.hide().detach();
426 + this._detachSecondaryEvents();
427 + this.viewMode = this.o.startView;
428 + this.showMode();
429 +
430 + if (
431 + this.o.forceParse &&
432 + (
433 + this.isInput && this.element.val() ||
434 + this.hasInput && this.element.find('input').val()
435 + )
436 + )
437 + this.setValue();
438 + this._trigger('hide');
439 + },
440 +
441 + remove: function(){
442 + this.hide();
443 + this._detachEvents();
444 + this._detachSecondaryEvents();
445 + this.picker.remove();
446 + delete this.element.data().datepicker;
447 + if (!this.isInput){
448 + delete this.element.data().date;
449 + }
450 + },
451 +
452 + _utc_to_local: function(utc){
453 + return utc && new Date(utc.getTime() + (utc.getTimezoneOffset()*60000));
454 + },
455 + _local_to_utc: function(local){
456 + return local && new Date(local.getTime() - (local.getTimezoneOffset()*60000));
457 + },
458 + _zero_time: function(local){
459 + return local && new Date(local.getFullYear(), local.getMonth(), local.getDate());
460 + },
461 + _zero_utc_time: function(utc){
462 + return utc && new Date(Date.UTC(utc.getUTCFullYear(), utc.getUTCMonth(), utc.getUTCDate()));
463 + },
464 +
465 + getDates: function(){
466 + return $.map(this.dates, this._utc_to_local);
467 + },
468 +
469 + getUTCDates: function(){
470 + return $.map(this.dates, function(d){
471 + return new Date(d);
472 + });
473 + },
474 +
475 + getDate: function(){
476 + return this._utc_to_local(this.getUTCDate());
477 + },
478 +
479 + getUTCDate: function(){
480 + return new Date(this.dates.get(-1));
481 + },
482 +
483 + setDates: function(){
484 + var args = $.isArray(arguments[0]) ? arguments[0] : arguments;
485 + this.update.apply(this, args);
486 + this._trigger('changeDate');
487 + this.setValue();
488 + },
489 +
490 + setUTCDates: function(){
491 + var args = $.isArray(arguments[0]) ? arguments[0] : arguments;
492 + this.update.apply(this, $.map(args, this._utc_to_local));
493 + this._trigger('changeDate');
494 + this.setValue();
495 + },
496 +
497 + setDate: alias('setDates'),
498 + setUTCDate: alias('setUTCDates'),
499 +
500 + setValue: function(){
501 + var formatted = this.getFormattedDate();
502 + if (!this.isInput){
503 + if (this.component){
504 + this.element.find('input').val(formatted).change();
505 + }
506 + }
507 + else {
508 + this.element.val(formatted).change();
509 + }
510 + },
511 +
512 + getFormattedDate: function(format){
513 + if (format === undefined)
514 + format = this.o.format;
515 +
516 + var lang = this.o.language;
517 + return $.map(this.dates, function(d){
518 + return DPGlobal.formatDate(d, format, lang);
519 + }).join(this.o.multidateSeparator);
520 + },
521 +
522 + setStartDate: function(startDate){
523 + this._process_options({startDate: startDate});
524 + this.update();
525 + this.updateNavArrows();
526 + },
527 +
528 + setEndDate: function(endDate){
529 + this._process_options({endDate: endDate});
530 + this.update();
531 + this.updateNavArrows();
532 + },
533 +
534 + setDaysOfWeekDisabled: function(daysOfWeekDisabled){
535 + this._process_options({daysOfWeekDisabled: daysOfWeekDisabled});
536 + this.update();
537 + this.updateNavArrows();
538 + },
539 +
540 + place: function(){
541 + if (this.isInline)
542 + return;
543 + var calendarWidth = this.picker.outerWidth(),
544 + calendarHeight = this.picker.outerHeight(),
545 + visualPadding = 10,
546 + windowWidth = $window.width(),
547 + windowHeight = $window.height(),
548 + scrollTop = $window.scrollTop();
549 +
550 + var zIndex = parseInt(this.element.parents().filter(function(){
551 + return $(this).css('z-index') !== 'auto';
552 + }).first().css('z-index'))+1151;
553 + var offset = this.component ? this.component.parent().offset() : this.element.offset();
554 + var height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false);
555 + var width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false);
556 + var left = offset.left,
557 + top = offset.top;
558 +
559 + this.picker.removeClass(
560 + 'datepicker-orient-top datepicker-orient-bottom '+
561 + 'datepicker-orient-right datepicker-orient-left'
562 + );
563 +
564 + if (this.o.orientation.x !== 'auto'){
565 + this.picker.addClass('datepicker-orient-' + this.o.orientation.x);
566 + if (this.o.orientation.x === 'right')
567 + left -= calendarWidth - width;
568 + }
569 + // auto x orientation is best-placement: if it crosses a window
570 + // edge, fudge it sideways
571 + else {
572 + // Default to left
573 + this.picker.addClass('datepicker-orient-left');
574 + if (offset.left < 0)
575 + left -= offset.left - visualPadding;
576 + else if (offset.left + calendarWidth > windowWidth)
577 + left = windowWidth - calendarWidth - visualPadding;
578 + }
579 +
580 + // auto y orientation is best-situation: top or bottom, no fudging,
581 + // decision based on which shows more of the calendar
582 + var yorient = this.o.orientation.y,
583 + top_overflow, bottom_overflow;
584 + if (yorient === 'auto'){
585 + top_overflow = -scrollTop + offset.top - calendarHeight;
586 + bottom_overflow = scrollTop + windowHeight - (offset.top + height + calendarHeight);
587 + if (Math.max(top_overflow, bottom_overflow) === bottom_overflow)
588 + yorient = 'top';
589 + else
590 + yorient = 'bottom';
591 + }
592 + this.picker.addClass('datepicker-orient-' + yorient);
593 + if (yorient === 'top')
594 + top += height;
595 + else
596 + top -= calendarHeight + parseInt(this.picker.css('padding-top'));
597 +
598 + this.picker.css({
599 + top: top,
600 + left: left,
601 + zIndex: zIndex
602 + });
603 + },
604 +
605 + _allow_update: true,
606 + update: function(){
607 + if (!this._allow_update)
608 + return;
609 +
610 + var oldDates = this.dates.copy(),
611 + dates = [],
612 + fromArgs = false;
613 + if (arguments.length){
614 + $.each(arguments, $.proxy(function(i, date){
615 + if (date instanceof Date)
616 + date = this._local_to_utc(date);
617 + dates.push(date);
618 + }, this));
619 + fromArgs = true;
620 + }
621 + else {
622 + dates = this.isInput
623 + ? this.element.val()
624 + : this.element.data('date') || this.element.find('input').val();
625 + if (dates && this.o.multidate)
626 + dates = dates.split(this.o.multidateSeparator);
627 + else
628 + dates = [dates];
629 + delete this.element.data().date;
630 + }
631 +
632 + dates = $.map(dates, $.proxy(function(date){
633 + return DPGlobal.parseDate(date, this.o.format, this.o.language);
634 + }, this));
635 + dates = $.grep(dates, $.proxy(function(date){
636 + return (
637 + date < this.o.startDate ||
638 + date > this.o.endDate ||
639 + !date
640 + );
641 + }, this), true);
642 + this.dates.replace(dates);
643 +
644 + if (this.dates.length)
645 + this.viewDate = new Date(this.dates.get(-1));
646 + else if (this.viewDate < this.o.startDate)
647 + this.viewDate = new Date(this.o.startDate);
648 + else if (this.viewDate > this.o.endDate)
649 + this.viewDate = new Date(this.o.endDate);
650 +
651 + if (fromArgs){
652 + // setting date by clicking
653 + this.setValue();
654 + }
655 + else if (dates.length){
656 + // setting date by typing
657 + if (String(oldDates) !== String(this.dates))
658 + this._trigger('changeDate');
659 + }
660 + if (!this.dates.length && oldDates.length)
661 + this._trigger('clearDate');
662 +
663 + this.fill();
664 + },
665 +
666 + fillDow: function(){
667 + var dowCnt = this.o.weekStart,
668 + html = '<tr>';
669 + if (this.o.calendarWeeks){
670 + var cell = '<th class="cw">&nbsp;</th>';
671 + html += cell;
672 + this.picker.find('.datepicker-days thead tr:first-child').prepend(cell);
673 + }
674 + while (dowCnt < this.o.weekStart + 7){
675 + html += '<th class="dow">'+dates[this.o.language].daysMin[(dowCnt++)%7]+'</th>';
676 + }
677 + html += '</tr>';
678 + this.picker.find('.datepicker-days thead').append(html);
679 + },
680 +
681 + fillMonths: function(){
682 + var html = '',
683 + i = 0;
684 + while (i < 12){
685 + html += '<span class="month">'+dates[this.o.language].monthsShort[i++]+'</span>';
686 + }
687 + this.picker.find('.datepicker-months td').html(html);
688 + },
689 +
690 + setRange: function(range){
691 + if (!range || !range.length)
692 + delete this.range;
693 + else
694 + this.range = $.map(range, function(d){
695 + return d.valueOf();
696 + });
697 + this.fill();
698 + },
699 +
700 + getClassNames: function(date){
701 + var cls = [],
702 + year = this.viewDate.getUTCFullYear(),
703 + month = this.viewDate.getUTCMonth(),
704 + today = new Date();
705 + if (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)){
706 + cls.push('old');
707 + }
708 + else if (date.getUTCFullYear() > year || (date.getUTCFullYear() === year && date.getUTCMonth() > month)){
709 + cls.push('new');
710 + }
711 + if (this.focusDate && date.valueOf() === this.focusDate.valueOf())
712 + cls.push('focused');
713 + // Compare internal UTC date with local today, not UTC today
714 + if (this.o.todayHighlight &&
715 + date.getUTCFullYear() === today.getFullYear() &&
716 + date.getUTCMonth() === today.getMonth() &&
717 + date.getUTCDate() === today.getDate()){
718 + cls.push('today');
719 + }
720 + if (this.dates.contains(date) !== -1)
721 + cls.push('active');
722 + if (date.valueOf() < this.o.startDate || date.valueOf() > this.o.endDate ||
723 + $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1){
724 + cls.push('disabled');
725 + }
726 + if (this.range){
727 + if (date > this.range[0] && date < this.range[this.range.length-1]){
728 + cls.push('range');
729 + }
730 + if ($.inArray(date.valueOf(), this.range) !== -1){
731 + cls.push('selected');
732 + }
733 + }
734 + return cls;
735 + },
736 +
737 + fill: function(){
738 + var d = new Date(this.viewDate),
739 + year = d.getUTCFullYear(),
740 + month = d.getUTCMonth(),
741 + startYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,
742 + startMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,
743 + endYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,
744 + endMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,
745 + todaytxt = dates[this.o.language].today || dates['en'].today || '',
746 + cleartxt = dates[this.o.language].clear || dates['en'].clear || '',
747 + tooltip;
748 + this.picker.find('.datepicker-days thead th.datepicker-switch')
749 + .text(dates[this.o.language].months[month]+' '+year);
750 + this.picker.find('tfoot th.today')
751 + .text(todaytxt)
752 + .toggle(this.o.todayBtn !== false);
753 + this.picker.find('tfoot th.clear')
754 + .text(cleartxt)
755 + .toggle(this.o.clearBtn !== false);
756 + this.updateNavArrows();
757 + this.fillMonths();
758 + var prevMonth = UTCDate(year, month-1, 28),
759 + day = DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth());
760 + prevMonth.setUTCDate(day);
761 + prevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7)%7);
762 + var nextMonth = new Date(prevMonth);
763 + nextMonth.setUTCDate(nextMonth.getUTCDate() + 42);
764 + nextMonth = nextMonth.valueOf();
765 + var html = [];
766 + var clsName;
767 + while (prevMonth.valueOf() < nextMonth){
768 + if (prevMonth.getUTCDay() === this.o.weekStart){
769 + html.push('<tr>');
770 + if (this.o.calendarWeeks){
771 + // ISO 8601: First week contains first thursday.
772 + // ISO also states week starts on Monday, but we can be more abstract here.
773 + var
774 + // Start of current week: based on weekstart/current date
775 + ws = new Date(+prevMonth + (this.o.weekStart - prevMonth.getUTCDay() - 7) % 7 * 864e5),
776 + // Thursday of this week
777 + th = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5),
778 + // First Thursday of year, year from thursday
779 + yth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay())%7*864e5),
780 + // Calendar week: ms between thursdays, div ms per day, div 7 days
781 + calWeek = (th - yth) / 864e5 / 7 + 1;
782 + html.push('<td class="cw">'+ calWeek +'</td>');
783 +
784 + }
785 + }
786 + clsName = this.getClassNames(prevMonth);
787 + clsName.push('day');
788 +
789 + if (this.o.beforeShowDay !== $.noop){
790 + var before = this.o.beforeShowDay(this._utc_to_local(prevMonth));
791 + if (before === undefined)
792 + before = {};
793 + else if (typeof(before) === 'boolean')
794 + before = {enabled: before};
795 + else if (typeof(before) === 'string')
796 + before = {classes: before};
797 + if (before.enabled === false)
798 + clsName.push('disabled');
799 + if (before.classes)
800 + clsName = clsName.concat(before.classes.split(/\s+/));
801 + if (before.tooltip)
802 + tooltip = before.tooltip;
803 + }
804 +
805 + clsName = $.unique(clsName);
806 + html.push('<td class="'+clsName.join(' ')+'"' + (tooltip ? ' title="'+tooltip+'"' : '') + '>'+prevMonth.getUTCDate() + '</td>');
807 + if (prevMonth.getUTCDay() === this.o.weekEnd){
808 + html.push('</tr>');
809 + }
810 + prevMonth.setUTCDate(prevMonth.getUTCDate()+1);
811 + }
812 + this.picker.find('.datepicker-days tbody').empty().append(html.join(''));
813 +
814 + var months = this.picker.find('.datepicker-months')
815 + .find('th:eq(1)')
816 + .text(year)
817 + .end()
818 + .find('span').removeClass('active');
819 +
820 + $.each(this.dates, function(i, d){
821 + if (d.getUTCFullYear() === year)
822 + months.eq(d.getUTCMonth()).addClass('active');
823 + });
824 +
825 + if (year < startYear || year > endYear){
826 + months.addClass('disabled');
827 + }
828 + if (year === startYear){
829 + months.slice(0, startMonth).addClass('disabled');
830 + }
831 + if (year === endYear){
832 + months.slice(endMonth+1).addClass('disabled');
833 + }
834 +
835 + html = '';
836 + year = parseInt(year/10, 10) * 10;
837 + var yearCont = this.picker.find('.datepicker-years')
838 + .find('th:eq(1)')
839 + .text(year + '-' + (year + 9))
840 + .end()
841 + .find('td');
842 + year -= 1;
843 + var years = $.map(this.dates, function(d){
844 + return d.getUTCFullYear();
845 + }),
846 + classes;
847 + for (var i = -1; i < 11; i++){
848 + classes = ['year'];
849 + if (i === -1)
850 + classes.push('old');
851 + else if (i === 10)
852 + classes.push('new');
853 + if ($.inArray(year, years) !== -1)
854 + classes.push('active');
855 + if (year < startYear || year > endYear)
856 + classes.push('disabled');
857 + html += '<span class="' + classes.join(' ') + '">'+year+'</span>';
858 + year += 1;
859 + }
860 + yearCont.html(html);
861 + },
862 +
863 + updateNavArrows: function(){
864 + if (!this._allow_update)
865 + return;
866 +
867 + var d = new Date(this.viewDate),
868 + year = d.getUTCFullYear(),
869 + month = d.getUTCMonth();
870 + switch (this.viewMode){
871 + case 0:
872 + if (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear() && month <= this.o.startDate.getUTCMonth()){
873 + this.picker.find('.prev').css({visibility: 'hidden'});
874 + }
875 + else {
876 + this.picker.find('.prev').css({visibility: 'visible'});
877 + }
878 + if (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear() && month >= this.o.endDate.getUTCMonth()){
879 + this.picker.find('.next').css({visibility: 'hidden'});
880 + }
881 + else {
882 + this.picker.find('.next').css({visibility: 'visible'});
883 + }
884 + break;
885 + case 1:
886 + case 2:
887 + if (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear()){
888 + this.picker.find('.prev').css({visibility: 'hidden'});
889 + }
890 + else {
891 + this.picker.find('.prev').css({visibility: 'visible'});
892 + }
893 + if (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear()){
894 + this.picker.find('.next').css({visibility: 'hidden'});
895 + }
896 + else {
897 + this.picker.find('.next').css({visibility: 'visible'});
898 + }
899 + break;
900 + }
901 + },
902 +
903 + click: function(e){
904 + e.preventDefault();
905 + var target = $(e.target).closest('span, td, th'),
906 + year, month, day;
907 + if (target.length === 1){
908 + switch (target[0].nodeName.toLowerCase()){
909 + case 'th':
910 + switch (target[0].className){
911 + case 'datepicker-switch':
912 + this.showMode(1);
913 + break;
914 + case 'prev':
915 + case 'next':
916 + var dir = DPGlobal.modes[this.viewMode].navStep * (target[0].className === 'prev' ? -1 : 1);
917 + switch (this.viewMode){
918 + case 0:
919 + this.viewDate = this.moveMonth(this.viewDate, dir);
920 + this._trigger('changeMonth', this.viewDate);
921 + break;
922 + case 1:
923 + case 2:
924 + this.viewDate = this.moveYear(this.viewDate, dir);
925 + if (this.viewMode === 1)
926 + this._trigger('changeYear', this.viewDate);
927 + break;
928 + }
929 + this.fill();
930 + break;
931 + case 'today':
932 + var date = new Date();
933 + date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);
934 +
935 + this.showMode(-2);
936 + var which = this.o.todayBtn === 'linked' ? null : 'view';
937 + this._setDate(date, which);
938 + break;
939 + case 'clear':
940 + var element;
941 + if (this.isInput)
942 + element = this.element;
943 + else if (this.component)
944 + element = this.element.find('input');
945 + if (element)
946 + element.val("").change();
947 + this.update();
948 + this._trigger('changeDate');
949 + if (this.o.autoclose)
950 + this.hide();
951 + break;
952 + }
953 + break;
954 + case 'span':
955 + if (!target.is('.disabled')){
956 + this.viewDate.setUTCDate(1);
957 + if (target.is('.month')){
958 + day = 1;
959 + month = target.parent().find('span').index(target);
960 + year = this.viewDate.getUTCFullYear();
961 + this.viewDate.setUTCMonth(month);
962 + this._trigger('changeMonth', this.viewDate);
963 + if (this.o.minViewMode === 1){
964 + this._setDate(UTCDate(year, month, day));
965 + }
966 + }
967 + else {
968 + day = 1;
969 + month = 0;
970 + year = parseInt(target.text(), 10)||0;
971 + this.viewDate.setUTCFullYear(year);
972 + this._trigger('changeYear', this.viewDate);
973 + if (this.o.minViewMode === 2){
974 + this._setDate(UTCDate(year, month, day));
975 + }
976 + }
977 + this.showMode(-1);
978 + this.fill();
979 + }
980 + break;
981 + case 'td':
982 + if (target.is('.day') && !target.is('.disabled')){
983 + day = parseInt(target.text(), 10)||1;
984 + year = this.viewDate.getUTCFullYear();
985 + month = this.viewDate.getUTCMonth();
986 + if (target.is('.old')){
987 + if (month === 0){
988 + month = 11;
989 + year -= 1;
990 + }
991 + else {
992 + month -= 1;
993 + }
994 + }
995 + else if (target.is('.new')){
996 + if (month === 11){
997 + month = 0;
998 + year += 1;
999 + }
1000 + else {
1001 + month += 1;
1002 + }
1003 + }
1004 + this._setDate(UTCDate(year, month, day));
1005 + }
1006 + break;
1007 + }
1008 + }
1009 + if (this.picker.is(':visible') && this._focused_from){
1010 + $(this._focused_from).focus();
1011 + }
1012 + delete this._focused_from;
1013 + },
1014 +
1015 + _toggle_multidate: function(date){
1016 + var ix = this.dates.contains(date);
1017 + if (!date){
1018 + this.dates.clear();
1019 + }
1020 + else if (ix !== -1){
1021 + this.dates.remove(ix);
1022 + }
1023 + else {
1024 + this.dates.push(date);
1025 + }
1026 + if (typeof this.o.multidate === 'number')
1027 + while (this.dates.length > this.o.multidate)
1028 + this.dates.remove(0);
1029 + },
1030 +
1031 + _setDate: function(date, which){
1032 + if (!which || which === 'date')
1033 + this._toggle_multidate(date && new Date(date));
1034 + if (!which || which === 'view')
1035 + this.viewDate = date && new Date(date);
1036 +
1037 + this.fill();
1038 + this.setValue();
1039 + this._trigger('changeDate');
1040 + var element;
1041 + if (this.isInput){
1042 + element = this.element;
1043 + }
1044 + else if (this.component){
1045 + element = this.element.find('input');
1046 + }
1047 + if (element){
1048 + element.change();
1049 + }
1050 + if (this.o.autoclose && (!which || which === 'date')){
1051 + this.hide();
1052 + }
1053 + },
1054 +
1055 + moveMonth: function(date, dir){
1056 + if (!date)
1057 + return undefined;
1058 + if (!dir)
1059 + return date;
1060 + var new_date = new Date(date.valueOf()),
1061 + day = new_date.getUTCDate(),
1062 + month = new_date.getUTCMonth(),
1063 + mag = Math.abs(dir),
1064 + new_month, test;
1065 + dir = dir > 0 ? 1 : -1;
1066 + if (mag === 1){
1067 + test = dir === -1
1068 + // If going back one month, make sure month is not current month
1069 + // (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)
1070 + ? function(){
1071 + return new_date.getUTCMonth() === month;
1072 + }
1073 + // If going forward one month, make sure month is as expected
1074 + // (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)
1075 + : function(){
1076 + return new_date.getUTCMonth() !== new_month;
1077 + };
1078 + new_month = month + dir;
1079 + new_date.setUTCMonth(new_month);
1080 + // Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11
1081 + if (new_month < 0 || new_month > 11)
1082 + new_month = (new_month + 12) % 12;
1083 + }
1084 + else {
1085 + // For magnitudes >1, move one month at a time...
1086 + for (var i=0; i < mag; i++)
1087 + // ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...
1088 + new_date = this.moveMonth(new_date, dir);
1089 + // ...then reset the day, keeping it in the new month
1090 + new_month = new_date.getUTCMonth();
1091 + new_date.setUTCDate(day);
1092 + test = function(){
1093 + return new_month !== new_date.getUTCMonth();
1094 + };
1095 + }
1096 + // Common date-resetting loop -- if date is beyond end of month, make it
1097 + // end of month
1098 + while (test()){
1099 + new_date.setUTCDate(--day);
1100 + new_date.setUTCMonth(new_month);
1101 + }
1102 + return new_date;
1103 + },
1104 +
1105 + moveYear: function(date, dir){
1106 + return this.moveMonth(date, dir*12);
1107 + },
1108 +
1109 + dateWithinRange: function(date){
1110 + return date >= this.o.startDate && date <= this.o.endDate;
1111 + },
1112 +
1113 + keydown: function(e){
1114 + if (this.picker.is(':not(:visible)')){
1115 + if (e.keyCode === 27) // allow escape to hide and re-show picker
1116 + this.show();
1117 + return;
1118 + }
1119 + var dateChanged = false,
1120 + dir, newDate, newViewDate,
1121 + focusDate = this.focusDate || this.viewDate;
1122 + switch (e.keyCode){
1123 + case 27: // escape
1124 + if (this.focusDate){
1125 + this.focusDate = null;
1126 + this.viewDate = this.dates.get(-1) || this.viewDate;
1127 + this.fill();
1128 + }
1129 + else
1130 + this.hide();
1131 + e.preventDefault();
1132 + break;
1133 + case 37: // left
1134 + case 39: // right
1135 + if (!this.o.keyboardNavigation)
1136 + break;
1137 + dir = e.keyCode === 37 ? -1 : 1;
1138 + if (e.ctrlKey){
1139 + newDate = this.moveYear(this.dates.get(-1) || UTCToday(), dir);
1140 + newViewDate = this.moveYear(focusDate, dir);
1141 + this._trigger('changeYear', this.viewDate);
1142 + }
1143 + else if (e.shiftKey){
1144 + newDate = this.moveMonth(this.dates.get(-1) || UTCToday(), dir);
1145 + newViewDate = this.moveMonth(focusDate, dir);
1146 + this._trigger('changeMonth', this.viewDate);
1147 + }
1148 + else {
1149 + newDate = new Date(this.dates.get(-1) || UTCToday());
1150 + newDate.setUTCDate(newDate.getUTCDate() + dir);
1151 + newViewDate = new Date(focusDate);
1152 + newViewDate.setUTCDate(focusDate.getUTCDate() + dir);
1153 + }
1154 + if (this.dateWithinRange(newDate)){
1155 + this.focusDate = this.viewDate = newViewDate;
1156 + this.setValue();
1157 + this.fill();
1158 + e.preventDefault();
1159 + }
1160 + break;
1161 + case 38: // up
1162 + case 40: // down
1163 + if (!this.o.keyboardNavigation)
1164 + break;
1165 + dir = e.keyCode === 38 ? -1 : 1;
1166 + if (e.ctrlKey){
1167 + newDate = this.moveYear(this.dates.get(-1) || UTCToday(), dir);
1168 + newViewDate = this.moveYear(focusDate, dir);
1169 + this._trigger('changeYear', this.viewDate);
1170 + }
1171 + else if (e.shiftKey){
1172 + newDate = this.moveMonth(this.dates.get(-1) || UTCToday(), dir);
1173 + newViewDate = this.moveMonth(focusDate, dir);
1174 + this._trigger('changeMonth', this.viewDate);
1175 + }
1176 + else {
1177 + newDate = new Date(this.dates.get(-1) || UTCToday());
1178 + newDate.setUTCDate(newDate.getUTCDate() + dir * 7);
1179 + newViewDate = new Date(focusDate);
1180 + newViewDate.setUTCDate(focusDate.getUTCDate() + dir * 7);
1181 + }
1182 + if (this.dateWithinRange(newDate)){
1183 + this.focusDate = this.viewDate = newViewDate;
1184 + this.setValue();
1185 + this.fill();
1186 + e.preventDefault();
1187 + }
1188 + break;
1189 + case 32: // spacebar
1190 + // Spacebar is used in manually typing dates in some formats.
1191 + // As such, its behavior should not be hijacked.
1192 + break;
1193 + case 13: // enter
1194 + focusDate = this.focusDate || this.dates.get(-1) || this.viewDate;
1195 + this._toggle_multidate(focusDate);
1196 + dateChanged = true;
1197 + this.focusDate = null;
1198 + this.viewDate = this.dates.get(-1) || this.viewDate;
1199 + this.setValue();
1200 + this.fill();
1201 + if (this.picker.is(':visible')){
1202 + e.preventDefault();
1203 + if (this.o.autoclose)
1204 + this.hide();
1205 + }
1206 + break;
1207 + case 9: // tab
1208 + this.focusDate = null;
1209 + this.viewDate = this.dates.get(-1) || this.viewDate;
1210 + this.fill();
1211 + this.hide();
1212 + break;
1213 + }
1214 + if (dateChanged){
1215 + if (this.dates.length)
1216 + this._trigger('changeDate');
1217 + else
1218 + this._trigger('clearDate');
1219 + var element;
1220 + if (this.isInput){
1221 + element = this.element;
1222 + }
1223 + else if (this.component){
1224 + element = this.element.find('input');
1225 + }
1226 + if (element){
1227 + element.change();
1228 + }
1229 + }
1230 + },
1231 +
1232 + showMode: function(dir){
1233 + if (dir){
1234 + this.viewMode = Math.max(this.o.minViewMode, Math.min(2, this.viewMode + dir));
1235 + }
1236 + this.picker
1237 + .find('>div')
1238 + .hide()
1239 + .filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName)
1240 + .css('display', 'block');
1241 + this.updateNavArrows();
1242 + }
1243 + };
1244 +
1245 + var DateRangePicker = function(element, options){
1246 + this.element = $(element);
1247 + this.inputs = $.map(options.inputs, function(i){
1248 + return i.jquery ? i[0] : i;
1249 + });
1250 + delete options.inputs;
1251 +
1252 + $(this.inputs)
1253 + .datepicker(options)
1254 + .bind('changeDate', $.proxy(this.dateUpdated, this));
1255 +
1256 + this.pickers = $.map(this.inputs, function(i){
1257 + return $(i).data('datepicker');
1258 + });
1259 + this.updateDates();
1260 + };
1261 + DateRangePicker.prototype = {
1262 + updateDates: function(){
1263 + this.dates = $.map(this.pickers, function(i){
1264 + return i.getUTCDate();
1265 + });
1266 + this.updateRanges();
1267 + },
1268 + updateRanges: function(){
1269 + var range = $.map(this.dates, function(d){
1270 + return d.valueOf();
1271 + });
1272 + $.each(this.pickers, function(i, p){
1273 + p.setRange(range);
1274 + });
1275 + },
1276 + dateUpdated: function(e){
1277 + // `this.updating` is a workaround for preventing infinite recursion
1278 + // between `changeDate` triggering and `setUTCDate` calling. Until
1279 + // there is a better mechanism.
1280 + if (this.updating)
1281 + return;
1282 + this.updating = true;
1283 +
1284 + var dp = $(e.target).data('datepicker'),
1285 + new_date = dp.getUTCDate(),
1286 + i = $.inArray(e.target, this.inputs),
1287 + l = this.inputs.length;
1288 + if (i === -1)
1289 + return;
1290 +
1291 + $.each(this.pickers, function(i, p){
1292 + if (!p.getUTCDate())
1293 + p.setUTCDate(new_date);
1294 + });
1295 +
1296 + if (new_date < this.dates[i]){
1297 + // Date being moved earlier/left
1298 + while (i >= 0 && new_date < this.dates[i]){
1299 + this.pickers[i--].setUTCDate(new_date);
1300 + }
1301 + }
1302 + else if (new_date > this.dates[i]){
1303 + // Date being moved later/right
1304 + while (i < l && new_date > this.dates[i]){
1305 + this.pickers[i++].setUTCDate(new_date);
1306 + }
1307 + }
1308 + this.updateDates();
1309 +
1310 + delete this.updating;
1311 + },
1312 + remove: function(){
1313 + $.map(this.pickers, function(p){ p.remove(); });
1314 + delete this.element.data().datepicker;
1315 + }
1316 + };
1317 +
1318 + function opts_from_el(el, prefix){
1319 + // Derive options from element data-attrs
1320 + var data = $(el).data(),
1321 + out = {}, inkey,
1322 + replace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])');
1323 + prefix = new RegExp('^' + prefix.toLowerCase());
1324 + function re_lower(_,a){
1325 + return a.toLowerCase();
1326 + }
1327 + for (var key in data)
1328 + if (prefix.test(key)){
1329 + inkey = key.replace(replace, re_lower);
1330 + out[inkey] = data[key];
1331 + }
1332 + return out;
1333 + }
1334 +
1335 + function opts_from_locale(lang){
1336 + // Derive options from locale plugins
1337 + var out = {};
1338 + // Check if "de-DE" style date is available, if not language should
1339 + // fallback to 2 letter code eg "de"
1340 + if (!dates[lang]){
1341 + lang = lang.split('-')[0];
1342 + if (!dates[lang])
1343 + return;
1344 + }
1345 + var d = dates[lang];
1346 + $.each(locale_opts, function(i,k){
1347 + if (k in d)
1348 + out[k] = d[k];
1349 + });
1350 + return out;
1351 + }
1352 +
1353 + var old = $.fn.datepicker;
1354 + $.fn.datepicker = function(option){
1355 + var args = Array.apply(null, arguments);
1356 + args.shift();
1357 + var internal_return;
1358 + this.each(function(){
1359 + var $this = $(this),
1360 + data = $this.data('datepicker'),
1361 + options = typeof option === 'object' && option;
1362 + if (!data){
1363 + var elopts = opts_from_el(this, 'date'),
1364 + // Preliminary otions
1365 + xopts = $.extend({}, defaults, elopts, options),
1366 + locopts = opts_from_locale(xopts.language),
1367 + // Options priority: js args, data-attrs, locales, defaults
1368 + opts = $.extend({}, defaults, locopts, elopts, options);
1369 + if ($this.is('.input-daterange') || opts.inputs){
1370 + var ropts = {
1371 + inputs: opts.inputs || $this.find('input').toArray()
1372 + };
1373 + $this.data('datepicker', (data = new DateRangePicker(this, $.extend(opts, ropts))));
1374 + }
1375 + else {
1376 + $this.data('datepicker', (data = new Datepicker(this, opts)));
1377 + }
1378 + }
1379 + if (typeof option === 'string' && typeof data[option] === 'function'){
1380 + internal_return = data[option].apply(data, args);
1381 + if (internal_return !== undefined)
1382 + return false;
1383 + }
1384 + });
1385 + if (internal_return !== undefined)
1386 + return internal_return;
1387 + else
1388 + return this;
1389 + };
1390 +
1391 + var defaults = $.fn.datepicker.defaults = {
1392 + autoclose: false,
1393 + beforeShowDay: $.noop,
1394 + calendarWeeks: false,
1395 + clearBtn: false,
1396 + daysOfWeekDisabled: [],
1397 + endDate: Infinity,
1398 + forceParse: true,
1399 + format: 'mm/dd/yyyy',
1400 + keyboardNavigation: true,
1401 + language: 'en',
1402 + minViewMode: 0,
1403 + multidate: false,
1404 + multidateSeparator: ',',
1405 + orientation: "auto",
1406 + rtl: false,
1407 + startDate: -Infinity,
1408 + startView: 0,
1409 + todayBtn: false,
1410 + todayHighlight: false,
1411 + weekStart: 0
1412 + };
1413 + var locale_opts = $.fn.datepicker.locale_opts = [
1414 + 'format',
1415 + 'rtl',
1416 + 'weekStart'
1417 + ];
1418 + $.fn.datepicker.Constructor = Datepicker;
1419 + var dates = $.fn.datepicker.dates = {
1420 + en: {
1421 + days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
1422 + daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
1423 + daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"],
1424 + months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
1425 + monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
1426 + today: "Today",
1427 + clear: "Clear"
1428 + }
1429 + };
1430 +
1431 + var DPGlobal = {
1432 + modes: [
1433 + {
1434 + clsName: 'days',
1435 + navFnc: 'Month',
1436 + navStep: 1
1437 + },
1438 + {
1439 + clsName: 'months',
1440 + navFnc: 'FullYear',
1441 + navStep: 1
1442 + },
1443 + {
1444 + clsName: 'years',
1445 + navFnc: 'FullYear',
1446 + navStep: 10
1447 + }],
1448 + isLeapYear: function(year){
1449 + return (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0));
1450 + },
1451 + getDaysInMonth: function(year, month){
1452 + return [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];
1453 + },
1454 + validParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,
1455 + nonpunctuation: /[^ -\/:-@\[\u3400-\u9fff-`{-~\t\n\r]+/g,
1456 + parseFormat: function(format){
1457 + // IE treats \0 as a string end in inputs (truncating the value),
1458 + // so it's a bad format delimiter, anyway
1459 + var separators = format.replace(this.validParts, '\0').split('\0'),
1460 + parts = format.match(this.validParts);
1461 + if (!separators || !separators.length || !parts || parts.length === 0){
1462 + throw new Error("Invalid date format.");
1463 + }
1464 + return {separators: separators, parts: parts};
1465 + },
1466 + parseDate: function(date, format, language){
1467 + if (!date)
1468 + return undefined;
1469 + if (date instanceof Date)
1470 + return date;
1471 + if (typeof format === 'string')
1472 + format = DPGlobal.parseFormat(format);
1473 + var part_re = /([\-+]\d+)([dmwy])/,
1474 + parts = date.match(/([\-+]\d+)([dmwy])/g),
1475 + part, dir, i;
1476 + if (/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(date)){
1477 + date = new Date();
1478 + for (i=0; i < parts.length; i++){
1479 + part = part_re.exec(parts[i]);
1480 + dir = parseInt(part[1]);
1481 + switch (part[2]){
1482 + case 'd':
1483 + date.setUTCDate(date.getUTCDate() + dir);
1484 + break;
1485 + case 'm':
1486 + date = Datepicker.prototype.moveMonth.call(Datepicker.prototype, date, dir);
1487 + break;
1488 + case 'w':
1489 + date.setUTCDate(date.getUTCDate() + dir * 7);
1490 + break;
1491 + case 'y':
1492 + date = Datepicker.prototype.moveYear.call(Datepicker.prototype, date, dir);
1493 + break;
1494 + }
1495 + }
1496 + return UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 0, 0, 0);
1497 + }
1498 + parts = date && date.match(this.nonpunctuation) || [];
1499 + date = new Date();
1500 + var parsed = {},
1501 + setters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],
1502 + setters_map = {
1503 + yyyy: function(d,v){
1504 + return d.setUTCFullYear(v);
1505 + },
1506 + yy: function(d,v){
1507 + return d.setUTCFullYear(2000+v);
1508 + },
1509 + m: function(d,v){
1510 + if (isNaN(d))
1511 + return d;
1512 + v -= 1;
1513 + while (v < 0) v += 12;
1514 + v %= 12;
1515 + d.setUTCMonth(v);
1516 + while (d.getUTCMonth() !== v)
1517 + d.setUTCDate(d.getUTCDate()-1);
1518 + return d;
1519 + },
1520 + d: function(d,v){
1521 + return d.setUTCDate(v);
1522 + }
1523 + },
1524 + val, filtered;
1525 + setters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];
1526 + setters_map['dd'] = setters_map['d'];
1527 + date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);
1528 + var fparts = format.parts.slice();
1529 + // Remove noop parts
1530 + if (parts.length !== fparts.length){
1531 + fparts = $(fparts).filter(function(i,p){
1532 + return $.inArray(p, setters_order) !== -1;
1533 + }).toArray();
1534 + }
1535 + // Process remainder
1536 + function match_part(){
1537 + var m = this.slice(0, parts[i].length),
1538 + p = parts[i].slice(0, m.length);
1539 + return m === p;
1540 + }
1541 + if (parts.length === fparts.length){
1542 + var cnt;
1543 + for (i=0, cnt = fparts.length; i < cnt; i++){
1544 + val = parseInt(parts[i], 10);
1545 + part = fparts[i];
1546 + if (isNaN(val)){
1547 + switch (part){
1548 + case 'MM':
1549 + filtered = $(dates[language].months).filter(match_part);
1550 + val = $.inArray(filtered[0], dates[language].months) + 1;
1551 + break;
1552 + case 'M':
1553 + filtered = $(dates[language].monthsShort).filter(match_part);
1554 + val = $.inArray(filtered[0], dates[language].monthsShort) + 1;
1555 + break;
1556 + }
1557 + }
1558 + parsed[part] = val;
1559 + }
1560 + var _date, s;
1561 + for (i=0; i < setters_order.length; i++){
1562 + s = setters_order[i];
1563 + if (s in parsed && !isNaN(parsed[s])){
1564 + _date = new Date(date);
1565 + setters_map[s](_date, parsed[s]);
1566 + if (!isNaN(_date))
1567 + date = _date;
1568 + }
1569 + }
1570 + }
1571 + return date;
1572 + },
1573 + formatDate: function(date, format, language){
1574 + if (!date)
1575 + return '';
1576 + if (typeof format === 'string')
1577 + format = DPGlobal.parseFormat(format);
1578 + var val = {
1579 + d: date.getUTCDate(),
1580 + D: dates[language].daysShort[date.getUTCDay()],
1581 + DD: dates[language].days[date.getUTCDay()],
1582 + m: date.getUTCMonth() + 1,
1583 + M: dates[language].monthsShort[date.getUTCMonth()],
1584 + MM: dates[language].months[date.getUTCMonth()],
1585 + yy: date.getUTCFullYear().toString().substring(2),
1586 + yyyy: date.getUTCFullYear()
1587 + };
1588 + val.dd = (val.d < 10 ? '0' : '') + val.d;
1589 + val.mm = (val.m < 10 ? '0' : '') + val.m;
1590 + date = [];
1591 + var seps = $.extend([], format.separators);
1592 + for (var i=0, cnt = format.parts.length; i <= cnt; i++){
1593 + if (seps.length)
1594 + date.push(seps.shift());
1595 + date.push(val[format.parts[i]]);
1596 + }
1597 + return date.join('');
1598 + },
1599 + headTemplate: '<thead>'+
1600 + '<tr>'+
1601 + '<th class="prev">&laquo;</th>'+
1602 + '<th colspan="5" class="datepicker-switch"></th>'+
1603 + '<th class="next">&raquo;</th>'+
1604 + '</tr>'+
1605 + '</thead>',
1606 + contTemplate: '<tbody><tr><td colspan="7"></td></tr></tbody>',
1607 + footTemplate: '<tfoot>'+
1608 + '<tr>'+
1609 + '<th colspan="7" class="today"></th>'+
1610 + '</tr>'+
1611 + '<tr>'+
1612 + '<th colspan="7" class="clear"></th>'+
1613 + '</tr>'+
1614 + '</tfoot>'
1615 + };
1616 + DPGlobal.template = '<div class="datepicker">'+
1617 + '<div class="datepicker-days">'+
1618 + '<table class=" table-condensed">'+
1619 + DPGlobal.headTemplate+
1620 + '<tbody></tbody>'+
1621 + DPGlobal.footTemplate+
1622 + '</table>'+
1623 + '</div>'+
1624 + '<div class="datepicker-months">'+
1625 + '<table class="table-condensed">'+
1626 + DPGlobal.headTemplate+
1627 + DPGlobal.contTemplate+
1628 + DPGlobal.footTemplate+
1629 + '</table>'+
1630 + '</div>'+
1631 + '<div class="datepicker-years">'+
1632 + '<table class="table-condensed">'+
1633 + DPGlobal.headTemplate+
1634 + DPGlobal.contTemplate+
1635 + DPGlobal.footTemplate+
1636 + '</table>'+
1637 + '</div>'+
1638 + '</div>';
1639 +
1640 + $.fn.datepicker.DPGlobal = DPGlobal;
1641 +
1642 +
1643 + /* DATEPICKER NO CONFLICT
1644 + * =================== */
1645 +
1646 + $.fn.datepicker.noConflict = function(){
1647 + $.fn.datepicker = old;
1648 + return this;
1649 + };
1650 +
1651 +
1652 + /* DATEPICKER DATA-API
1653 + * ================== */
1654 +
1655 + $(document).on(
1656 + 'focus.datepicker.data-api click.datepicker.data-api',
1657 + '[data-provide="datepicker"]',
1658 + function(e){
1659 + var $this = $(this);
1660 + if ($this.data('datepicker'))
1661 + return;
1662 + e.preventDefault();
1663 + // component click requires us to explicitly show it
1664 + $this.datepicker('show');
1665 + }
1666 + );
1667 + $(function(){
1668 + $('[data-provide="datepicker-inline"]').datepicker();
1669 + });
1670 +
1671 +}(window.jQuery));
1 +/**
2 + * Korean translation for bootstrap-datepicker
3 + * Gu Youn <http://github.com/guyoun>
4 + */
5 +;(function($){
6 + $.fn.datepicker.dates['kr'] = {
7 + days: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일", "일요일"],
8 + daysShort: ["일", "월", "화", "수", "목", "금", "토", "일"],
9 + daysMin: ["일", "월", "화", "수", "목", "금", "토", "일"],
10 + months: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"],
11 + monthsShort: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"]
12 + };
13 +}(jQuery));
...@@ -3,9 +3,6 @@ ...@@ -3,9 +3,6 @@
3 3
4 <head> 4 <head>
5 <meta charset="utf-8"> 5 <meta charset="utf-8">
6 - <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
7 - <meta name="description" content="">
8 - <meta name="author" content="">
9 6
10 <title>식당 예약</title> 7 <title>식당 예약</title>
11 8
...@@ -20,6 +17,14 @@ ...@@ -20,6 +17,14 @@
20 <!-- Custom styles for this template --> 17 <!-- Custom styles for this template -->
21 <link href="css/grayscale.min.css" rel="stylesheet"> 18 <link href="css/grayscale.min.css" rel="stylesheet">
22 19
20 + <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.13.0/moment.min.js"></script>
21 + <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.37/js/bootstrap-datetimepicker.min.js"></script>
22 +
23 + <link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
24 + <link rel="stylesheet" href="https://jqueryui.com/resources/demos/style.css">
25 + <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
26 + <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
27 +
23 28
24 29
25 <style type="text/css"> 30 <style type="text/css">
...@@ -98,6 +103,8 @@ ...@@ -98,6 +103,8 @@
98 </div> 103 </div>
99 </div> 104 </div>
100 105
106 +
107 +
101 <!--예약시간--> 108 <!--예약시간-->
102 <div class="form-group"> 109 <div class="form-group">
103 <div class="col-md-4 selectContainer"> 110 <div class="col-md-4 selectContainer">
...@@ -131,28 +138,65 @@ ...@@ -131,28 +138,65 @@
131 </div> 138 </div>
132 </div> 139 </div>
133 140
134 - <!--예약날짜-->
135 <div class="form-group"> 141 <div class="form-group">
136 <div class="col-md-4 selectContainer"> 142 <div class="col-md-4 selectContainer">
137 - <div class="input-group"> 143 + <div class="input-group">
138 - <label class="col-md-4 control-label">예약 날짜</label> 144 +
139 - <input type="text" placeholder = "클릭하여 달력 보기" id="datepicker"></p></p> 145 + <label class="col-md-4 control-label">예약 날짜</label>
140 - <script> 146 + <div class="input-group input-append date" id="dateRangePicker"> </div>
141 - $( function() { 147 + <script>
142 - $( "#datepicker" ).datepicker(); 148 + $('#dateRangePicker').datepicker({
143 - } ); 149 + format: "yyyy-mm-dd",
144 - </script> 150 + language: "kr"
145 - </label> 151 + });
152 + </script>
153 + </div>
154 + </div>
155 + </div>
156 +
157 +
158 +
159 +
160 + <div class="container">
161 + <div class="row">
162 + <div class='col-sm-6'>
163 + <div class="form-group">
164 + <div class='input-group date' id='datetimepicker1'>
165 + <input type='text' class="form-control" />
166 + <span class="input-group-addon">
167 + <span class="glyphicon glyphicon-calendar"></span>
168 + </span>
169 + </div>
170 + </div>
171 + </div>
172 + <script type="text/javascript">
173 + $(document).ready(function(){
174 + $('#datetimepicker1').datetimepicker();
175 + });
176 + </script>
177 + </div>
146 </div> 178 </div>
147 -<br> 179 +
180 +
181 +
182 +
183 +
184 +
185 +
186 +
187 +
188 +
189 +
190 + <br>
148 <div class="form-group"> 191 <div class="form-group">
192 + <div class="col-md-4 selectContainer">
149 <div class="input-group"> 193 <div class="input-group">
150 <label class="col-md-4 control-label">요청사항</label> 194 <label class="col-md-4 control-label">요청사항</label>
151 <i class="glyphicon glyphicon-pencil"></i> 195 <i class="glyphicon glyphicon-pencil"></i>
152 <textarea class="form-control" name="content" placeholder="Project Description" style="width:310px; height:100px;"></textarea> 196 <textarea class="form-control" name="content" placeholder="Project Description" style="width:310px; height:100px;"></textarea>
153 </div> 197 </div>
154 </div> 198 </div>
155 - </div> 199 +
156 200
157 201
158 <br> 202 <br>
......
1 -<!DOCTYPE html> 1 +<!doctype html>
2 -<html> 2 +<html lang="en">
3 <head> 3 <head>
4 - <meta charset = "utf-8"> 4 + <meta charset="utf-8">
5 - <title><%= title %></title> 5 + <meta name="viewport" content="width=device-width, initial-scale=1">
6 - <link rel = 'stylesheet' href='stylesheets/style.css'/> 6 + <title>jQuery UI Datepicker - Default functionality</title>
7 - <meta charset = "utf-8"> 7 + <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
8 - <meta http-equiv="X-UA-Compatible" content = "IE=edge"> 8 + <link rel="stylesheet" href="/resources/demos/style.css">
9 - <meta name = "viewport" content = "width=device-width, initial-scale=1"> 9 + <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
10 - <title><%= title %></title> 10 + <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
11 - <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css"> 11 + <script>
12 - <link rel = 'bootstrap' href = 'javascripts/bootstrap.js'/> 12 + $( function() {
13 - <link rel = 'jquery' href = 'javascripts/jquery-3.3.1.min.js'/> 13 + $( "#datepicker" ).datepicker();
14 + } );
15 + </script>
14 </head> 16 </head>
15 <body> 17 <body>
16 -<h1><%= title %></h1>
17 18
18 -<a href="/board/write">글쓰기로 이동</a> 19 +<p>Date: <input type="text" id="datepicker"></p>
19 -<br>
20 -<br>
21 20
22 -<table class = "table table-striped table-bordered table-hober">
23 - <thead>
24 - <tr class="list-table1 blue">
25 - <td>번호</td>
26 - <td>작성자</td>
27 - <td>제목</td>
28 - <td>조회수</td>
29 - <td>변경일</td>
30 - </tr>
31 -<tbody>
32 -<%
33 - for(var i=0; i<rows.length; i++)
34 - {
35 - var oneItem = rows[i];
36 -%>
37 - <tr>
38 - <td><%=oneItem.idx%></td>
39 - <td><%=oneItem.creater_id%></td>
40 - <td><%=oneItem.title%></td>
41 - <td><%=oneItem.hit%></td>
42 - <td><%=oneItem.modidate%></td>
43 - </tr>
44 -
45 -<%
46 - }
47 -%>
48 -</table>
49 -<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
50 - <!-- 모든 컴파일된 플러그인을 포함합니다 (아래), 원하지 않는다면 필요한 각각의 파일을 포함하세요 -->
51 - <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
52 21
53 </body> 22 </body>
54 </html> 23 </html>
......
...@@ -6,27 +6,14 @@ ...@@ -6,27 +6,14 @@
6 <script src="https://code.jquery.com/jquery-1.12.4.js"></script> 6 <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
7 <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> 7 <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
8 8
9 -
10 -
11 <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet"> 9 <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
12 <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css" rel="stylesheet"> 10 <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css" rel="stylesheet">
11 +<link href="https://cdnjs.cloudflare.com/ajax/libs/jquery.bootstrapvalidator/0.5.0/css/bootstrapValidator.min.css" rel="stylesheet">
13 12
14 <link rel="stylesheet" href="http://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> 13 <link rel="stylesheet" href="http://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
15 <link rel="stylesheet" href="http://resources/demos/style.css"> 14 <link rel="stylesheet" href="http://resources/demos/style.css">
16 15
17 16
18 -
19 - <!-- Custom fonts for this template -->
20 - <link href="vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
21 - <link href="https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic" rel="stylesheet" type="text/css">
22 - <link href='https://fonts.googleapis.com/css?family=Cabin:700' rel='stylesheet' type='text/css'>
23 -
24 - <!-- Custom styles for this template -->
25 - <link href="css/grayscale.min.css" rel="stylesheet">
26 -
27 -
28 -
29 -
30 <div class="container"> 17 <div class="container">
31 <br><br> 18 <br><br>
32 <label class="col-md-4 control-label"><legend>예약하기</legend></label> 19 <label class="col-md-4 control-label"><legend>예약하기</legend></label>
...@@ -37,16 +24,16 @@ ...@@ -37,16 +24,16 @@
37 <form method="POST" action="/res"> 24 <form method="POST" action="/res">
38 <!-- Form Name --> 25 <!-- Form Name -->
39 26
40 - <!-- Text input--> 27 +<!-- 이름-->
41 - <div class="form-group"> 28 +<div class="form-group">
42 - <label class="col-md-4 control-label">이름</label> 29 + <label class="col-md-4 control-label" br>이름</label>
43 - <div class="col-md-4 inputGroupContainer"> 30 + <div class="col-md-4 inputGroupContainer">
44 <div class="input-group"> 31 <div class="input-group">
45 - <span class="input-group-addon"><i class="glyphicon glyphicon-envelope"></i></span> 32 + <span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
46 - <input name="email" placeholder="홍길동" class="form-control" type="text"> 33 + <input name="creater_id" placeholder="이름" class="form-control" type="text">
47 - </div>
48 </div> 34 </div>
49 </div> 35 </div>
36 +</div>
50 37
51 38
52 <!-- 휴대전화--> 39 <!-- 휴대전화-->
...@@ -155,10 +142,10 @@ ...@@ -155,10 +142,10 @@
155 <!-- Text area --> 142 <!-- Text area -->
156 143
157 <div class="form-group"> 144 <div class="form-group">
158 - <div class="col-md-4 inputGroupContainer">
159 - <div class="input-group">
160 <label class="col-md-4 control-label">요청사항</label> 145 <label class="col-md-4 control-label">요청사항</label>
161 -<i class="glyphicon glyphicon-pencil"></i></span> 146 + <div class="col-md-4 inputGroupContainer">
147 + <div class="input-group">
148 + <span class="input-group-addon"><i class="glyphicon glyphicon-pencil"></i></span>
162 <textarea class="form-control" name="content" placeholder="Project Description" style="width:310px; height:100px;"></textarea> 149 <textarea class="form-control" name="content" placeholder="Project Description" style="width:310px; height:100px;"></textarea>
163 </div> 150 </div>
164 </div> 151 </div>
......