Showing
34 changed files
with
4323 additions
and
24 deletions
... | @@ -27,7 +27,7 @@ var Users = require('./models/users'); | ... | @@ -27,7 +27,7 @@ var Users = require('./models/users'); |
27 | var Timetables = require('./models/timetables'); | 27 | var Timetables = require('./models/timetables'); |
28 | 28 | ||
29 | // Client-Browser와의 공유 | 29 | // Client-Browser와의 공유 |
30 | -//app.use("/static", express.static("public")); | 30 | +app.use("/static", express.static("public")); |
31 | 31 | ||
32 | // session | 32 | // session |
33 | app.use(session({ | 33 | app.use(session({ | ... | ... |
server_db/public/.idea/encodings.xml
0 → 100644
server_db/public/.idea/example.iml
0 → 100644
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<module type="WEB_MODULE" version="4"> | ||
3 | + <component name="NewModuleRootManager"> | ||
4 | + <content url="file://$MODULE_DIR$"> | ||
5 | + <excludeFolder url="file://$MODULE_DIR$/.tmp" /> | ||
6 | + <excludeFolder url="file://$MODULE_DIR$/temp" /> | ||
7 | + <excludeFolder url="file://$MODULE_DIR$/tmp" /> | ||
8 | + </content> | ||
9 | + <orderEntry type="inheritedJdk" /> | ||
10 | + <orderEntry type="sourceFolder" forTests="false" /> | ||
11 | + </component> | ||
12 | +</module> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
server_db/public/.idea/misc.xml
0 → 100644
server_db/public/.idea/modules.xml
0 → 100644
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<project version="4"> | ||
3 | + <component name="ProjectModuleManager"> | ||
4 | + <modules> | ||
5 | + <module fileurl="file://$PROJECT_DIR$/.idea/example.iml" filepath="$PROJECT_DIR$/.idea/example.iml" /> | ||
6 | + </modules> | ||
7 | + </component> | ||
8 | +</project> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
server_db/public/.idea/workspace.xml
0 → 100644
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<project version="4"> | ||
3 | + <component name="ChangeListManager"> | ||
4 | + <list default="true" id="ad798993-023f-4135-9cdc-2f2d2c14efcb" name="Default Changelist" comment="" /> | ||
5 | + <ignored path="$PROJECT_DIR$/.tmp/" /> | ||
6 | + <ignored path="$PROJECT_DIR$/temp/" /> | ||
7 | + <ignored path="$PROJECT_DIR$/tmp/" /> | ||
8 | + <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> | ||
9 | + <option name="SHOW_DIALOG" value="false" /> | ||
10 | + <option name="HIGHLIGHT_CONFLICTS" value="true" /> | ||
11 | + <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> | ||
12 | + <option name="LAST_RESOLUTION" value="IGNORE" /> | ||
13 | + </component> | ||
14 | + <component name="FileEditorManager"> | ||
15 | + <leaf> | ||
16 | + <file pinned="false" current-in-tab="false"> | ||
17 | + <entry file="file://$PROJECT_DIR$/index.html"> | ||
18 | + <provider selected="true" editor-type-id="text-editor"> | ||
19 | + <state> | ||
20 | + <caret selection-end-line="8" selection-end-column="7" /> | ||
21 | + </state> | ||
22 | + </provider> | ||
23 | + </entry> | ||
24 | + </file> | ||
25 | + <file pinned="false" current-in-tab="true"> | ||
26 | + <entry file="file://$PROJECT_DIR$/programs.html"> | ||
27 | + <provider selected="true" editor-type-id="text-editor"> | ||
28 | + <state relative-caret-position="494"> | ||
29 | + <caret line="26" column="41" selection-start-line="26" selection-start-column="41" selection-end-line="26" selection-end-column="41" /> | ||
30 | + </state> | ||
31 | + </provider> | ||
32 | + </entry> | ||
33 | + </file> | ||
34 | + <file pinned="false" current-in-tab="false"> | ||
35 | + <entry file="file://$PROJECT_DIR$/mypage.html"> | ||
36 | + <provider selected="true" editor-type-id="text-editor"> | ||
37 | + <state relative-caret-position="285"> | ||
38 | + <caret line="15" column="6" lean-forward="true" selection-start-line="10" selection-end-line="15" selection-end-column="6" /> | ||
39 | + </state> | ||
40 | + </provider> | ||
41 | + </entry> | ||
42 | + </file> | ||
43 | + <file pinned="false" current-in-tab="false"> | ||
44 | + <entry file="file://$PROJECT_DIR$/main.html"> | ||
45 | + <provider selected="true" editor-type-id="text-editor"> | ||
46 | + <state relative-caret-position="266"> | ||
47 | + <caret line="14" column="94" lean-forward="true" selection-start-line="10" selection-start-column="4" selection-end-line="14" selection-end-column="94" /> | ||
48 | + </state> | ||
49 | + </provider> | ||
50 | + </entry> | ||
51 | + </file> | ||
52 | + <file pinned="false" current-in-tab="false"> | ||
53 | + <entry file="file://$PROJECT_DIR$/join.html"> | ||
54 | + <provider selected="true" editor-type-id="text-editor"> | ||
55 | + <state> | ||
56 | + <caret selection-end-line="2" selection-end-column="16" /> | ||
57 | + </state> | ||
58 | + </provider> | ||
59 | + </entry> | ||
60 | + </file> | ||
61 | + </leaf> | ||
62 | + </component> | ||
63 | + <component name="IdeDocumentHistory"> | ||
64 | + <option name="CHANGED_PATHS"> | ||
65 | + <list> | ||
66 | + <option value="$PROJECT_DIR$/join.html" /> | ||
67 | + <option value="$PROJECT_DIR$/index.html" /> | ||
68 | + <option value="$PROJECT_DIR$/main.html" /> | ||
69 | + <option value="$PROJECT_DIR$/mypage.html" /> | ||
70 | + <option value="$PROJECT_DIR$/programs.html" /> | ||
71 | + </list> | ||
72 | + </option> | ||
73 | + </component> | ||
74 | + <component name="ProjectFrameBounds"> | ||
75 | + <option name="x" value="425" /> | ||
76 | + <option name="y" value="39" /> | ||
77 | + <option name="width" value="697" /> | ||
78 | + <option name="height" value="735" /> | ||
79 | + </component> | ||
80 | + <component name="ProjectView"> | ||
81 | + <navigator proportions="" version="1"> | ||
82 | + <foldersAlwaysOnTop value="true" /> | ||
83 | + </navigator> | ||
84 | + <panes> | ||
85 | + <pane id="Scope" /> | ||
86 | + <pane id="ProjectPane"> | ||
87 | + <subPane> | ||
88 | + <expand> | ||
89 | + <path> | ||
90 | + <item name="example" type="b2602c69:ProjectViewProjectNode" /> | ||
91 | + <item name="example" type="462c0819:PsiDirectoryNode" /> | ||
92 | + </path> | ||
93 | + <path> | ||
94 | + <item name="example" type="b2602c69:ProjectViewProjectNode" /> | ||
95 | + <item name="example" type="462c0819:PsiDirectoryNode" /> | ||
96 | + <item name="css" type="462c0819:PsiDirectoryNode" /> | ||
97 | + </path> | ||
98 | + <path> | ||
99 | + <item name="example" type="b2602c69:ProjectViewProjectNode" /> | ||
100 | + <item name="example" type="462c0819:PsiDirectoryNode" /> | ||
101 | + <item name="css" type="462c0819:PsiDirectoryNode" /> | ||
102 | + <item name="bootstrap.css" type="620a8d5e:NestingTreeNode" /> | ||
103 | + </path> | ||
104 | + <path> | ||
105 | + <item name="example" type="b2602c69:ProjectViewProjectNode" /> | ||
106 | + <item name="example" type="462c0819:PsiDirectoryNode" /> | ||
107 | + <item name="css" type="462c0819:PsiDirectoryNode" /> | ||
108 | + <item name="bootstrap-responsive.css" type="620a8d5e:NestingTreeNode" /> | ||
109 | + </path> | ||
110 | + </expand> | ||
111 | + <select /> | ||
112 | + </subPane> | ||
113 | + </pane> | ||
114 | + </panes> | ||
115 | + </component> | ||
116 | + <component name="PropertiesComponent"> | ||
117 | + <property name="WebServerToolWindowFactoryState" value="false" /> | ||
118 | + <property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" /> | ||
119 | + <property name="nodejs_npm_path_reset_for_default_project" value="true" /> | ||
120 | + </component> | ||
121 | + <component name="RecentsManager"> | ||
122 | + <key name="CopyFile.RECENT_KEYS"> | ||
123 | + <recent name="C:\Users\UNI\WebstormProjects\example\css" /> | ||
124 | + </key> | ||
125 | + <key name="MoveFile.RECENT_KEYS"> | ||
126 | + <recent name="C:\Users\UNI\WebstormProjects\example\css" /> | ||
127 | + <recent name="C:\Users\UNI\WebstormProjects\example\js" /> | ||
128 | + <recent name="C:\Users\UNI\WebstormProjects\example" /> | ||
129 | + </key> | ||
130 | + </component> | ||
131 | + <component name="RunDashboard"> | ||
132 | + <option name="ruleStates"> | ||
133 | + <list> | ||
134 | + <RuleState> | ||
135 | + <option name="name" value="ConfigurationTypeDashboardGroupingRule" /> | ||
136 | + </RuleState> | ||
137 | + <RuleState> | ||
138 | + <option name="name" value="StatusDashboardGroupingRule" /> | ||
139 | + </RuleState> | ||
140 | + </list> | ||
141 | + </option> | ||
142 | + </component> | ||
143 | + <component name="SvnConfiguration"> | ||
144 | + <configuration /> | ||
145 | + </component> | ||
146 | + <component name="TaskManager"> | ||
147 | + <task active="true" id="Default" summary="Default task"> | ||
148 | + <changelist id="ad798993-023f-4135-9cdc-2f2d2c14efcb" name="Default Changelist" comment="" /> | ||
149 | + <created>1544532971153</created> | ||
150 | + <option name="number" value="Default" /> | ||
151 | + <option name="presentableId" value="Default" /> | ||
152 | + <updated>1544532971153</updated> | ||
153 | + <workItem from="1544532974007" duration="743000" /> | ||
154 | + <workItem from="1544710275523" duration="2489000" /> | ||
155 | + </task> | ||
156 | + <servers /> | ||
157 | + </component> | ||
158 | + <component name="TimeTrackingManager"> | ||
159 | + <option name="totallyTimeSpent" value="3232000" /> | ||
160 | + </component> | ||
161 | + <component name="ToolWindowManager"> | ||
162 | + <frame x="-7" y="0" width="697" height="735" extended-state="0" /> | ||
163 | + <editor active="true" /> | ||
164 | + <layout> | ||
165 | + <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.24886191" /> | ||
166 | + <window_info id="Structure" order="1" side_tool="true" weight="0.25" /> | ||
167 | + <window_info id="Favorites" order="2" side_tool="true" /> | ||
168 | + <window_info anchor="bottom" id="Message" order="0" /> | ||
169 | + <window_info anchor="bottom" id="Find" order="1" /> | ||
170 | + <window_info anchor="bottom" id="Run" order="2" /> | ||
171 | + <window_info anchor="bottom" id="Debug" order="3" weight="0.4" /> | ||
172 | + <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" /> | ||
173 | + <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" /> | ||
174 | + <window_info anchor="bottom" id="TODO" order="6" /> | ||
175 | + <window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" /> | ||
176 | + <window_info anchor="bottom" id="Version Control" order="8" /> | ||
177 | + <window_info anchor="bottom" id="Terminal" order="9" /> | ||
178 | + <window_info anchor="bottom" id="Event Log" order="10" side_tool="true" /> | ||
179 | + <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" /> | ||
180 | + <window_info anchor="right" id="Ant Build" order="1" weight="0.25" /> | ||
181 | + <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" /> | ||
182 | + </layout> | ||
183 | + </component> | ||
184 | + <component name="TypeScriptGeneratedFilesManager"> | ||
185 | + <option name="version" value="1" /> | ||
186 | + </component> | ||
187 | + <component name="editorHistoryManager"> | ||
188 | + <entry file="file://$PROJECT_DIR$/css/bootstrap.css"> | ||
189 | + <provider selected="true" editor-type-id="text-editor"> | ||
190 | + <state relative-caret-position="209"> | ||
191 | + <caret line="11" column="11" lean-forward="true" selection-start-line="11" selection-start-column="11" selection-end-line="11" selection-end-column="11" /> | ||
192 | + </state> | ||
193 | + </provider> | ||
194 | + </entry> | ||
195 | + <entry file="file://$PROJECT_DIR$/join.html"> | ||
196 | + <provider selected="true" editor-type-id="text-editor"> | ||
197 | + <state> | ||
198 | + <caret selection-end-line="2" selection-end-column="16" /> | ||
199 | + </state> | ||
200 | + </provider> | ||
201 | + </entry> | ||
202 | + <entry file="file://$PROJECT_DIR$/main.html"> | ||
203 | + <provider selected="true" editor-type-id="text-editor"> | ||
204 | + <state relative-caret-position="266"> | ||
205 | + <caret line="14" column="94" lean-forward="true" selection-start-line="10" selection-start-column="4" selection-end-line="14" selection-end-column="94" /> | ||
206 | + </state> | ||
207 | + </provider> | ||
208 | + </entry> | ||
209 | + <entry file="file://$PROJECT_DIR$/index.html"> | ||
210 | + <provider selected="true" editor-type-id="text-editor"> | ||
211 | + <state> | ||
212 | + <caret selection-end-line="8" selection-end-column="7" /> | ||
213 | + </state> | ||
214 | + </provider> | ||
215 | + </entry> | ||
216 | + <entry file="file://$PROJECT_DIR$/mypage.html"> | ||
217 | + <provider selected="true" editor-type-id="text-editor"> | ||
218 | + <state relative-caret-position="285"> | ||
219 | + <caret line="15" column="6" lean-forward="true" selection-start-line="10" selection-end-line="15" selection-end-column="6" /> | ||
220 | + </state> | ||
221 | + </provider> | ||
222 | + </entry> | ||
223 | + <entry file="file://$PROJECT_DIR$/programs.html"> | ||
224 | + <provider selected="true" editor-type-id="text-editor"> | ||
225 | + <state relative-caret-position="494"> | ||
226 | + <caret line="26" column="41" selection-start-line="26" selection-start-column="41" selection-end-line="26" selection-end-column="41" /> | ||
227 | + </state> | ||
228 | + </provider> | ||
229 | + </entry> | ||
230 | + </component> | ||
231 | +</project> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +/*! | ||
2 | + * Bootstrap Responsive v2.3.2 | ||
3 | + * | ||
4 | + * Copyright 2013 Twitter, Inc | ||
5 | + * Licensed under the Apache License v2.0 | ||
6 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
7 | + * | ||
8 | + * Designed and built with all the love in the world by @mdo and @fat. | ||
9 | + */ | ||
10 | + | ||
11 | +.clearfix { | ||
12 | + *zoom: 1; | ||
13 | +} | ||
14 | + | ||
15 | +.clearfix:before, | ||
16 | +.clearfix:after { | ||
17 | + display: table; | ||
18 | + line-height: 0; | ||
19 | + content: ""; | ||
20 | +} | ||
21 | + | ||
22 | +.clearfix:after { | ||
23 | + clear: both; | ||
24 | +} | ||
25 | + | ||
26 | +.hide-text { | ||
27 | + font: 0/0 a; | ||
28 | + color: transparent; | ||
29 | + text-shadow: none; | ||
30 | + background-color: transparent; | ||
31 | + border: 0; | ||
32 | +} | ||
33 | + | ||
34 | +.input-block-level { | ||
35 | + display: block; | ||
36 | + width: 100%; | ||
37 | + min-height: 30px; | ||
38 | + -webkit-box-sizing: border-box; | ||
39 | + -moz-box-sizing: border-box; | ||
40 | + box-sizing: border-box; | ||
41 | +} | ||
42 | + | ||
43 | +@-ms-viewport { | ||
44 | + width: device-width; | ||
45 | +} | ||
46 | + | ||
47 | +.hidden { | ||
48 | + display: none; | ||
49 | + visibility: hidden; | ||
50 | +} | ||
51 | + | ||
52 | +.visible-phone { | ||
53 | + display: none !important; | ||
54 | +} | ||
55 | + | ||
56 | +.visible-tablet { | ||
57 | + display: none !important; | ||
58 | +} | ||
59 | + | ||
60 | +.hidden-desktop { | ||
61 | + display: none !important; | ||
62 | +} | ||
63 | + | ||
64 | +.visible-desktop { | ||
65 | + display: inherit !important; | ||
66 | +} | ||
67 | + | ||
68 | +@media (min-width: 768px) and (max-width: 979px) { | ||
69 | + .hidden-desktop { | ||
70 | + display: inherit !important; | ||
71 | + } | ||
72 | + .visible-desktop { | ||
73 | + display: none !important ; | ||
74 | + } | ||
75 | + .visible-tablet { | ||
76 | + display: inherit !important; | ||
77 | + } | ||
78 | + .hidden-tablet { | ||
79 | + display: none !important; | ||
80 | + } | ||
81 | +} | ||
82 | + | ||
83 | +@media (max-width: 767px) { | ||
84 | + .hidden-desktop { | ||
85 | + display: inherit !important; | ||
86 | + } | ||
87 | + .visible-desktop { | ||
88 | + display: none !important; | ||
89 | + } | ||
90 | + .visible-phone { | ||
91 | + display: inherit !important; | ||
92 | + } | ||
93 | + .hidden-phone { | ||
94 | + display: none !important; | ||
95 | + } | ||
96 | +} | ||
97 | + | ||
98 | +.visible-print { | ||
99 | + display: none !important; | ||
100 | +} | ||
101 | + | ||
102 | +@media print { | ||
103 | + .visible-print { | ||
104 | + display: inherit !important; | ||
105 | + } | ||
106 | + .hidden-print { | ||
107 | + display: none !important; | ||
108 | + } | ||
109 | +} | ||
110 | + | ||
111 | +@media (min-width: 1200px) { | ||
112 | + .row { | ||
113 | + margin-left: -30px; | ||
114 | + *zoom: 1; | ||
115 | + } | ||
116 | + .row:before, | ||
117 | + .row:after { | ||
118 | + display: table; | ||
119 | + line-height: 0; | ||
120 | + content: ""; | ||
121 | + } | ||
122 | + .row:after { | ||
123 | + clear: both; | ||
124 | + } | ||
125 | + [class*="span"] { | ||
126 | + float: left; | ||
127 | + min-height: 1px; | ||
128 | + margin-left: 30px; | ||
129 | + } | ||
130 | + .container, | ||
131 | + .navbar-static-top .container, | ||
132 | + .navbar-fixed-top .container, | ||
133 | + .navbar-fixed-bottom .container { | ||
134 | + width: 1170px; | ||
135 | + } | ||
136 | + .span12 { | ||
137 | + width: 1170px; | ||
138 | + } | ||
139 | + .span11 { | ||
140 | + width: 1070px; | ||
141 | + } | ||
142 | + .span10 { | ||
143 | + width: 970px; | ||
144 | + } | ||
145 | + .span9 { | ||
146 | + width: 870px; | ||
147 | + } | ||
148 | + .span8 { | ||
149 | + width: 770px; | ||
150 | + } | ||
151 | + .span7 { | ||
152 | + width: 670px; | ||
153 | + } | ||
154 | + .span6 { | ||
155 | + width: 570px; | ||
156 | + } | ||
157 | + .span5 { | ||
158 | + width: 470px; | ||
159 | + } | ||
160 | + .span4 { | ||
161 | + width: 370px; | ||
162 | + } | ||
163 | + .span3 { | ||
164 | + width: 270px; | ||
165 | + } | ||
166 | + .span2 { | ||
167 | + width: 170px; | ||
168 | + } | ||
169 | + .span1 { | ||
170 | + width: 70px; | ||
171 | + } | ||
172 | + .offset12 { | ||
173 | + margin-left: 1230px; | ||
174 | + } | ||
175 | + .offset11 { | ||
176 | + margin-left: 1130px; | ||
177 | + } | ||
178 | + .offset10 { | ||
179 | + margin-left: 1030px; | ||
180 | + } | ||
181 | + .offset9 { | ||
182 | + margin-left: 930px; | ||
183 | + } | ||
184 | + .offset8 { | ||
185 | + margin-left: 830px; | ||
186 | + } | ||
187 | + .offset7 { | ||
188 | + margin-left: 730px; | ||
189 | + } | ||
190 | + .offset6 { | ||
191 | + margin-left: 630px; | ||
192 | + } | ||
193 | + .offset5 { | ||
194 | + margin-left: 530px; | ||
195 | + } | ||
196 | + .offset4 { | ||
197 | + margin-left: 430px; | ||
198 | + } | ||
199 | + .offset3 { | ||
200 | + margin-left: 330px; | ||
201 | + } | ||
202 | + .offset2 { | ||
203 | + margin-left: 230px; | ||
204 | + } | ||
205 | + .offset1 { | ||
206 | + margin-left: 130px; | ||
207 | + } | ||
208 | + .row-fluid { | ||
209 | + width: 100%; | ||
210 | + *zoom: 1; | ||
211 | + } | ||
212 | + .row-fluid:before, | ||
213 | + .row-fluid:after { | ||
214 | + display: table; | ||
215 | + line-height: 0; | ||
216 | + content: ""; | ||
217 | + } | ||
218 | + .row-fluid:after { | ||
219 | + clear: both; | ||
220 | + } | ||
221 | + .row-fluid [class*="span"] { | ||
222 | + display: block; | ||
223 | + float: left; | ||
224 | + width: 100%; | ||
225 | + min-height: 30px; | ||
226 | + margin-left: 2.564102564102564%; | ||
227 | + *margin-left: 2.5109110747408616%; | ||
228 | + -webkit-box-sizing: border-box; | ||
229 | + -moz-box-sizing: border-box; | ||
230 | + box-sizing: border-box; | ||
231 | + } | ||
232 | + .row-fluid [class*="span"]:first-child { | ||
233 | + margin-left: 0; | ||
234 | + } | ||
235 | + .row-fluid .controls-row [class*="span"] + [class*="span"] { | ||
236 | + margin-left: 2.564102564102564%; | ||
237 | + } | ||
238 | + .row-fluid .span12 { | ||
239 | + width: 100%; | ||
240 | + *width: 99.94680851063829%; | ||
241 | + } | ||
242 | + .row-fluid .span11 { | ||
243 | + width: 91.45299145299145%; | ||
244 | + *width: 91.39979996362975%; | ||
245 | + } | ||
246 | + .row-fluid .span10 { | ||
247 | + width: 82.90598290598291%; | ||
248 | + *width: 82.8527914166212%; | ||
249 | + } | ||
250 | + .row-fluid .span9 { | ||
251 | + width: 74.35897435897436%; | ||
252 | + *width: 74.30578286961266%; | ||
253 | + } | ||
254 | + .row-fluid .span8 { | ||
255 | + width: 65.81196581196582%; | ||
256 | + *width: 65.75877432260411%; | ||
257 | + } | ||
258 | + .row-fluid .span7 { | ||
259 | + width: 57.26495726495726%; | ||
260 | + *width: 57.21176577559556%; | ||
261 | + } | ||
262 | + .row-fluid .span6 { | ||
263 | + width: 48.717948717948715%; | ||
264 | + *width: 48.664757228587014%; | ||
265 | + } | ||
266 | + .row-fluid .span5 { | ||
267 | + width: 40.17094017094017%; | ||
268 | + *width: 40.11774868157847%; | ||
269 | + } | ||
270 | + .row-fluid .span4 { | ||
271 | + width: 31.623931623931625%; | ||
272 | + *width: 31.570740134569924%; | ||
273 | + } | ||
274 | + .row-fluid .span3 { | ||
275 | + width: 23.076923076923077%; | ||
276 | + *width: 23.023731587561375%; | ||
277 | + } | ||
278 | + .row-fluid .span2 { | ||
279 | + width: 14.52991452991453%; | ||
280 | + *width: 14.476723040552828%; | ||
281 | + } | ||
282 | + .row-fluid .span1 { | ||
283 | + width: 5.982905982905983%; | ||
284 | + *width: 5.929714493544281%; | ||
285 | + } | ||
286 | + .row-fluid .offset12 { | ||
287 | + margin-left: 105.12820512820512%; | ||
288 | + *margin-left: 105.02182214948171%; | ||
289 | + } | ||
290 | + .row-fluid .offset12:first-child { | ||
291 | + margin-left: 102.56410256410257%; | ||
292 | + *margin-left: 102.45771958537915%; | ||
293 | + } | ||
294 | + .row-fluid .offset11 { | ||
295 | + margin-left: 96.58119658119658%; | ||
296 | + *margin-left: 96.47481360247316%; | ||
297 | + } | ||
298 | + .row-fluid .offset11:first-child { | ||
299 | + margin-left: 94.01709401709402%; | ||
300 | + *margin-left: 93.91071103837061%; | ||
301 | + } | ||
302 | + .row-fluid .offset10 { | ||
303 | + margin-left: 88.03418803418803%; | ||
304 | + *margin-left: 87.92780505546462%; | ||
305 | + } | ||
306 | + .row-fluid .offset10:first-child { | ||
307 | + margin-left: 85.47008547008548%; | ||
308 | + *margin-left: 85.36370249136206%; | ||
309 | + } | ||
310 | + .row-fluid .offset9 { | ||
311 | + margin-left: 79.48717948717949%; | ||
312 | + *margin-left: 79.38079650845607%; | ||
313 | + } | ||
314 | + .row-fluid .offset9:first-child { | ||
315 | + margin-left: 76.92307692307693%; | ||
316 | + *margin-left: 76.81669394435352%; | ||
317 | + } | ||
318 | + .row-fluid .offset8 { | ||
319 | + margin-left: 70.94017094017094%; | ||
320 | + *margin-left: 70.83378796144753%; | ||
321 | + } | ||
322 | + .row-fluid .offset8:first-child { | ||
323 | + margin-left: 68.37606837606839%; | ||
324 | + *margin-left: 68.26968539734497%; | ||
325 | + } | ||
326 | + .row-fluid .offset7 { | ||
327 | + margin-left: 62.393162393162385%; | ||
328 | + *margin-left: 62.28677941443899%; | ||
329 | + } | ||
330 | + .row-fluid .offset7:first-child { | ||
331 | + margin-left: 59.82905982905982%; | ||
332 | + *margin-left: 59.72267685033642%; | ||
333 | + } | ||
334 | + .row-fluid .offset6 { | ||
335 | + margin-left: 53.84615384615384%; | ||
336 | + *margin-left: 53.739770867430444%; | ||
337 | + } | ||
338 | + .row-fluid .offset6:first-child { | ||
339 | + margin-left: 51.28205128205128%; | ||
340 | + *margin-left: 51.175668303327875%; | ||
341 | + } | ||
342 | + .row-fluid .offset5 { | ||
343 | + margin-left: 45.299145299145295%; | ||
344 | + *margin-left: 45.1927623204219%; | ||
345 | + } | ||
346 | + .row-fluid .offset5:first-child { | ||
347 | + margin-left: 42.73504273504273%; | ||
348 | + *margin-left: 42.62865975631933%; | ||
349 | + } | ||
350 | + .row-fluid .offset4 { | ||
351 | + margin-left: 36.75213675213675%; | ||
352 | + *margin-left: 36.645753773413354%; | ||
353 | + } | ||
354 | + .row-fluid .offset4:first-child { | ||
355 | + margin-left: 34.18803418803419%; | ||
356 | + *margin-left: 34.081651209310785%; | ||
357 | + } | ||
358 | + .row-fluid .offset3 { | ||
359 | + margin-left: 28.205128205128204%; | ||
360 | + *margin-left: 28.0987452264048%; | ||
361 | + } | ||
362 | + .row-fluid .offset3:first-child { | ||
363 | + margin-left: 25.641025641025642%; | ||
364 | + *margin-left: 25.53464266230224%; | ||
365 | + } | ||
366 | + .row-fluid .offset2 { | ||
367 | + margin-left: 19.65811965811966%; | ||
368 | + *margin-left: 19.551736679396257%; | ||
369 | + } | ||
370 | + .row-fluid .offset2:first-child { | ||
371 | + margin-left: 17.094017094017094%; | ||
372 | + *margin-left: 16.98763411529369%; | ||
373 | + } | ||
374 | + .row-fluid .offset1 { | ||
375 | + margin-left: 11.11111111111111%; | ||
376 | + *margin-left: 11.004728132387708%; | ||
377 | + } | ||
378 | + .row-fluid .offset1:first-child { | ||
379 | + margin-left: 8.547008547008547%; | ||
380 | + *margin-left: 8.440625568285142%; | ||
381 | + } | ||
382 | + input, | ||
383 | + textarea, | ||
384 | + .uneditable-input { | ||
385 | + margin-left: 0; | ||
386 | + } | ||
387 | + .controls-row [class*="span"] + [class*="span"] { | ||
388 | + margin-left: 30px; | ||
389 | + } | ||
390 | + input.span12, | ||
391 | + textarea.span12, | ||
392 | + .uneditable-input.span12 { | ||
393 | + width: 1156px; | ||
394 | + } | ||
395 | + input.span11, | ||
396 | + textarea.span11, | ||
397 | + .uneditable-input.span11 { | ||
398 | + width: 1056px; | ||
399 | + } | ||
400 | + input.span10, | ||
401 | + textarea.span10, | ||
402 | + .uneditable-input.span10 { | ||
403 | + width: 956px; | ||
404 | + } | ||
405 | + input.span9, | ||
406 | + textarea.span9, | ||
407 | + .uneditable-input.span9 { | ||
408 | + width: 856px; | ||
409 | + } | ||
410 | + input.span8, | ||
411 | + textarea.span8, | ||
412 | + .uneditable-input.span8 { | ||
413 | + width: 756px; | ||
414 | + } | ||
415 | + input.span7, | ||
416 | + textarea.span7, | ||
417 | + .uneditable-input.span7 { | ||
418 | + width: 656px; | ||
419 | + } | ||
420 | + input.span6, | ||
421 | + textarea.span6, | ||
422 | + .uneditable-input.span6 { | ||
423 | + width: 556px; | ||
424 | + } | ||
425 | + input.span5, | ||
426 | + textarea.span5, | ||
427 | + .uneditable-input.span5 { | ||
428 | + width: 456px; | ||
429 | + } | ||
430 | + input.span4, | ||
431 | + textarea.span4, | ||
432 | + .uneditable-input.span4 { | ||
433 | + width: 356px; | ||
434 | + } | ||
435 | + input.span3, | ||
436 | + textarea.span3, | ||
437 | + .uneditable-input.span3 { | ||
438 | + width: 256px; | ||
439 | + } | ||
440 | + input.span2, | ||
441 | + textarea.span2, | ||
442 | + .uneditable-input.span2 { | ||
443 | + width: 156px; | ||
444 | + } | ||
445 | + input.span1, | ||
446 | + textarea.span1, | ||
447 | + .uneditable-input.span1 { | ||
448 | + width: 56px; | ||
449 | + } | ||
450 | + .thumbnails { | ||
451 | + margin-left: -30px; | ||
452 | + } | ||
453 | + .thumbnails > li { | ||
454 | + margin-left: 30px; | ||
455 | + } | ||
456 | + .row-fluid .thumbnails { | ||
457 | + margin-left: 0; | ||
458 | + } | ||
459 | +} | ||
460 | + | ||
461 | +@media (min-width: 768px) and (max-width: 979px) { | ||
462 | + .row { | ||
463 | + margin-left: -20px; | ||
464 | + *zoom: 1; | ||
465 | + } | ||
466 | + .row:before, | ||
467 | + .row:after { | ||
468 | + display: table; | ||
469 | + line-height: 0; | ||
470 | + content: ""; | ||
471 | + } | ||
472 | + .row:after { | ||
473 | + clear: both; | ||
474 | + } | ||
475 | + [class*="span"] { | ||
476 | + float: left; | ||
477 | + min-height: 1px; | ||
478 | + margin-left: 20px; | ||
479 | + } | ||
480 | + .container, | ||
481 | + .navbar-static-top .container, | ||
482 | + .navbar-fixed-top .container, | ||
483 | + .navbar-fixed-bottom .container { | ||
484 | + width: 724px; | ||
485 | + } | ||
486 | + .span12 { | ||
487 | + width: 724px; | ||
488 | + } | ||
489 | + .span11 { | ||
490 | + width: 662px; | ||
491 | + } | ||
492 | + .span10 { | ||
493 | + width: 600px; | ||
494 | + } | ||
495 | + .span9 { | ||
496 | + width: 538px; | ||
497 | + } | ||
498 | + .span8 { | ||
499 | + width: 476px; | ||
500 | + } | ||
501 | + .span7 { | ||
502 | + width: 414px; | ||
503 | + } | ||
504 | + .span6 { | ||
505 | + width: 352px; | ||
506 | + } | ||
507 | + .span5 { | ||
508 | + width: 290px; | ||
509 | + } | ||
510 | + .span4 { | ||
511 | + width: 228px; | ||
512 | + } | ||
513 | + .span3 { | ||
514 | + width: 166px; | ||
515 | + } | ||
516 | + .span2 { | ||
517 | + width: 104px; | ||
518 | + } | ||
519 | + .span1 { | ||
520 | + width: 42px; | ||
521 | + } | ||
522 | + .offset12 { | ||
523 | + margin-left: 764px; | ||
524 | + } | ||
525 | + .offset11 { | ||
526 | + margin-left: 702px; | ||
527 | + } | ||
528 | + .offset10 { | ||
529 | + margin-left: 640px; | ||
530 | + } | ||
531 | + .offset9 { | ||
532 | + margin-left: 578px; | ||
533 | + } | ||
534 | + .offset8 { | ||
535 | + margin-left: 516px; | ||
536 | + } | ||
537 | + .offset7 { | ||
538 | + margin-left: 454px; | ||
539 | + } | ||
540 | + .offset6 { | ||
541 | + margin-left: 392px; | ||
542 | + } | ||
543 | + .offset5 { | ||
544 | + margin-left: 330px; | ||
545 | + } | ||
546 | + .offset4 { | ||
547 | + margin-left: 268px; | ||
548 | + } | ||
549 | + .offset3 { | ||
550 | + margin-left: 206px; | ||
551 | + } | ||
552 | + .offset2 { | ||
553 | + margin-left: 144px; | ||
554 | + } | ||
555 | + .offset1 { | ||
556 | + margin-left: 82px; | ||
557 | + } | ||
558 | + .row-fluid { | ||
559 | + width: 100%; | ||
560 | + *zoom: 1; | ||
561 | + } | ||
562 | + .row-fluid:before, | ||
563 | + .row-fluid:after { | ||
564 | + display: table; | ||
565 | + line-height: 0; | ||
566 | + content: ""; | ||
567 | + } | ||
568 | + .row-fluid:after { | ||
569 | + clear: both; | ||
570 | + } | ||
571 | + .row-fluid [class*="span"] { | ||
572 | + display: block; | ||
573 | + float: left; | ||
574 | + width: 100%; | ||
575 | + min-height: 30px; | ||
576 | + margin-left: 2.7624309392265194%; | ||
577 | + *margin-left: 2.709239449864817%; | ||
578 | + -webkit-box-sizing: border-box; | ||
579 | + -moz-box-sizing: border-box; | ||
580 | + box-sizing: border-box; | ||
581 | + } | ||
582 | + .row-fluid [class*="span"]:first-child { | ||
583 | + margin-left: 0; | ||
584 | + } | ||
585 | + .row-fluid .controls-row [class*="span"] + [class*="span"] { | ||
586 | + margin-left: 2.7624309392265194%; | ||
587 | + } | ||
588 | + .row-fluid .span12 { | ||
589 | + width: 100%; | ||
590 | + *width: 99.94680851063829%; | ||
591 | + } | ||
592 | + .row-fluid .span11 { | ||
593 | + width: 91.43646408839778%; | ||
594 | + *width: 91.38327259903608%; | ||
595 | + } | ||
596 | + .row-fluid .span10 { | ||
597 | + width: 82.87292817679558%; | ||
598 | + *width: 82.81973668743387%; | ||
599 | + } | ||
600 | + .row-fluid .span9 { | ||
601 | + width: 74.30939226519337%; | ||
602 | + *width: 74.25620077583166%; | ||
603 | + } | ||
604 | + .row-fluid .span8 { | ||
605 | + width: 65.74585635359117%; | ||
606 | + *width: 65.69266486422946%; | ||
607 | + } | ||
608 | + .row-fluid .span7 { | ||
609 | + width: 57.18232044198895%; | ||
610 | + *width: 57.12912895262725%; | ||
611 | + } | ||
612 | + .row-fluid .span6 { | ||
613 | + width: 48.61878453038674%; | ||
614 | + *width: 48.56559304102504%; | ||
615 | + } | ||
616 | + .row-fluid .span5 { | ||
617 | + width: 40.05524861878453%; | ||
618 | + *width: 40.00205712942283%; | ||
619 | + } | ||
620 | + .row-fluid .span4 { | ||
621 | + width: 31.491712707182323%; | ||
622 | + *width: 31.43852121782062%; | ||
623 | + } | ||
624 | + .row-fluid .span3 { | ||
625 | + width: 22.92817679558011%; | ||
626 | + *width: 22.87498530621841%; | ||
627 | + } | ||
628 | + .row-fluid .span2 { | ||
629 | + width: 14.3646408839779%; | ||
630 | + *width: 14.311449394616199%; | ||
631 | + } | ||
632 | + .row-fluid .span1 { | ||
633 | + width: 5.801104972375691%; | ||
634 | + *width: 5.747913483013988%; | ||
635 | + } | ||
636 | + .row-fluid .offset12 { | ||
637 | + margin-left: 105.52486187845304%; | ||
638 | + *margin-left: 105.41847889972962%; | ||
639 | + } | ||
640 | + .row-fluid .offset12:first-child { | ||
641 | + margin-left: 102.76243093922652%; | ||
642 | + *margin-left: 102.6560479605031%; | ||
643 | + } | ||
644 | + .row-fluid .offset11 { | ||
645 | + margin-left: 96.96132596685082%; | ||
646 | + *margin-left: 96.8549429881274%; | ||
647 | + } | ||
648 | + .row-fluid .offset11:first-child { | ||
649 | + margin-left: 94.1988950276243%; | ||
650 | + *margin-left: 94.09251204890089%; | ||
651 | + } | ||
652 | + .row-fluid .offset10 { | ||
653 | + margin-left: 88.39779005524862%; | ||
654 | + *margin-left: 88.2914070765252%; | ||
655 | + } | ||
656 | + .row-fluid .offset10:first-child { | ||
657 | + margin-left: 85.6353591160221%; | ||
658 | + *margin-left: 85.52897613729868%; | ||
659 | + } | ||
660 | + .row-fluid .offset9 { | ||
661 | + margin-left: 79.8342541436464%; | ||
662 | + *margin-left: 79.72787116492299%; | ||
663 | + } | ||
664 | + .row-fluid .offset9:first-child { | ||
665 | + margin-left: 77.07182320441989%; | ||
666 | + *margin-left: 76.96544022569647%; | ||
667 | + } | ||
668 | + .row-fluid .offset8 { | ||
669 | + margin-left: 71.2707182320442%; | ||
670 | + *margin-left: 71.16433525332079%; | ||
671 | + } | ||
672 | + .row-fluid .offset8:first-child { | ||
673 | + margin-left: 68.50828729281768%; | ||
674 | + *margin-left: 68.40190431409427%; | ||
675 | + } | ||
676 | + .row-fluid .offset7 { | ||
677 | + margin-left: 62.70718232044199%; | ||
678 | + *margin-left: 62.600799341718584%; | ||
679 | + } | ||
680 | + .row-fluid .offset7:first-child { | ||
681 | + margin-left: 59.94475138121547%; | ||
682 | + *margin-left: 59.838368402492065%; | ||
683 | + } | ||
684 | + .row-fluid .offset6 { | ||
685 | + margin-left: 54.14364640883978%; | ||
686 | + *margin-left: 54.037263430116376%; | ||
687 | + } | ||
688 | + .row-fluid .offset6:first-child { | ||
689 | + margin-left: 51.38121546961326%; | ||
690 | + *margin-left: 51.27483249088986%; | ||
691 | + } | ||
692 | + .row-fluid .offset5 { | ||
693 | + margin-left: 45.58011049723757%; | ||
694 | + *margin-left: 45.47372751851417%; | ||
695 | + } | ||
696 | + .row-fluid .offset5:first-child { | ||
697 | + margin-left: 42.81767955801105%; | ||
698 | + *margin-left: 42.71129657928765%; | ||
699 | + } | ||
700 | + .row-fluid .offset4 { | ||
701 | + margin-left: 37.01657458563536%; | ||
702 | + *margin-left: 36.91019160691196%; | ||
703 | + } | ||
704 | + .row-fluid .offset4:first-child { | ||
705 | + margin-left: 34.25414364640884%; | ||
706 | + *margin-left: 34.14776066768544%; | ||
707 | + } | ||
708 | + .row-fluid .offset3 { | ||
709 | + margin-left: 28.45303867403315%; | ||
710 | + *margin-left: 28.346655695309746%; | ||
711 | + } | ||
712 | + .row-fluid .offset3:first-child { | ||
713 | + margin-left: 25.69060773480663%; | ||
714 | + *margin-left: 25.584224756083227%; | ||
715 | + } | ||
716 | + .row-fluid .offset2 { | ||
717 | + margin-left: 19.88950276243094%; | ||
718 | + *margin-left: 19.783119783707537%; | ||
719 | + } | ||
720 | + .row-fluid .offset2:first-child { | ||
721 | + margin-left: 17.12707182320442%; | ||
722 | + *margin-left: 17.02068884448102%; | ||
723 | + } | ||
724 | + .row-fluid .offset1 { | ||
725 | + margin-left: 11.32596685082873%; | ||
726 | + *margin-left: 11.219583872105325%; | ||
727 | + } | ||
728 | + .row-fluid .offset1:first-child { | ||
729 | + margin-left: 8.56353591160221%; | ||
730 | + *margin-left: 8.457152932878806%; | ||
731 | + } | ||
732 | + input, | ||
733 | + textarea, | ||
734 | + .uneditable-input { | ||
735 | + margin-left: 0; | ||
736 | + } | ||
737 | + .controls-row [class*="span"] + [class*="span"] { | ||
738 | + margin-left: 20px; | ||
739 | + } | ||
740 | + input.span12, | ||
741 | + textarea.span12, | ||
742 | + .uneditable-input.span12 { | ||
743 | + width: 710px; | ||
744 | + } | ||
745 | + input.span11, | ||
746 | + textarea.span11, | ||
747 | + .uneditable-input.span11 { | ||
748 | + width: 648px; | ||
749 | + } | ||
750 | + input.span10, | ||
751 | + textarea.span10, | ||
752 | + .uneditable-input.span10 { | ||
753 | + width: 586px; | ||
754 | + } | ||
755 | + input.span9, | ||
756 | + textarea.span9, | ||
757 | + .uneditable-input.span9 { | ||
758 | + width: 524px; | ||
759 | + } | ||
760 | + input.span8, | ||
761 | + textarea.span8, | ||
762 | + .uneditable-input.span8 { | ||
763 | + width: 462px; | ||
764 | + } | ||
765 | + input.span7, | ||
766 | + textarea.span7, | ||
767 | + .uneditable-input.span7 { | ||
768 | + width: 400px; | ||
769 | + } | ||
770 | + input.span6, | ||
771 | + textarea.span6, | ||
772 | + .uneditable-input.span6 { | ||
773 | + width: 338px; | ||
774 | + } | ||
775 | + input.span5, | ||
776 | + textarea.span5, | ||
777 | + .uneditable-input.span5 { | ||
778 | + width: 276px; | ||
779 | + } | ||
780 | + input.span4, | ||
781 | + textarea.span4, | ||
782 | + .uneditable-input.span4 { | ||
783 | + width: 214px; | ||
784 | + } | ||
785 | + input.span3, | ||
786 | + textarea.span3, | ||
787 | + .uneditable-input.span3 { | ||
788 | + width: 152px; | ||
789 | + } | ||
790 | + input.span2, | ||
791 | + textarea.span2, | ||
792 | + .uneditable-input.span2 { | ||
793 | + width: 90px; | ||
794 | + } | ||
795 | + input.span1, | ||
796 | + textarea.span1, | ||
797 | + .uneditable-input.span1 { | ||
798 | + width: 28px; | ||
799 | + } | ||
800 | +} | ||
801 | + | ||
802 | +@media (max-width: 767px) { | ||
803 | + body { | ||
804 | + padding-right: 20px; | ||
805 | + padding-left: 20px; | ||
806 | + } | ||
807 | + .navbar-fixed-top, | ||
808 | + .navbar-fixed-bottom, | ||
809 | + .navbar-static-top { | ||
810 | + margin-right: -20px; | ||
811 | + margin-left: -20px; | ||
812 | + } | ||
813 | + .container-fluid { | ||
814 | + padding: 0; | ||
815 | + } | ||
816 | + .dl-horizontal dt { | ||
817 | + float: none; | ||
818 | + width: auto; | ||
819 | + clear: none; | ||
820 | + text-align: left; | ||
821 | + } | ||
822 | + .dl-horizontal dd { | ||
823 | + margin-left: 0; | ||
824 | + } | ||
825 | + .container { | ||
826 | + width: auto; | ||
827 | + } | ||
828 | + .row-fluid { | ||
829 | + width: 100%; | ||
830 | + } | ||
831 | + .row, | ||
832 | + .thumbnails { | ||
833 | + margin-left: 0; | ||
834 | + } | ||
835 | + .thumbnails > li { | ||
836 | + float: none; | ||
837 | + margin-left: 0; | ||
838 | + } | ||
839 | + [class*="span"], | ||
840 | + .uneditable-input[class*="span"], | ||
841 | + .row-fluid [class*="span"] { | ||
842 | + display: block; | ||
843 | + float: none; | ||
844 | + width: 100%; | ||
845 | + margin-left: 0; | ||
846 | + -webkit-box-sizing: border-box; | ||
847 | + -moz-box-sizing: border-box; | ||
848 | + box-sizing: border-box; | ||
849 | + } | ||
850 | + .span12, | ||
851 | + .row-fluid .span12 { | ||
852 | + width: 100%; | ||
853 | + -webkit-box-sizing: border-box; | ||
854 | + -moz-box-sizing: border-box; | ||
855 | + box-sizing: border-box; | ||
856 | + } | ||
857 | + .row-fluid [class*="offset"]:first-child { | ||
858 | + margin-left: 0; | ||
859 | + } | ||
860 | + .input-large, | ||
861 | + .input-xlarge, | ||
862 | + .input-xxlarge, | ||
863 | + input[class*="span"], | ||
864 | + select[class*="span"], | ||
865 | + textarea[class*="span"], | ||
866 | + .uneditable-input { | ||
867 | + display: block; | ||
868 | + width: 100%; | ||
869 | + min-height: 30px; | ||
870 | + -webkit-box-sizing: border-box; | ||
871 | + -moz-box-sizing: border-box; | ||
872 | + box-sizing: border-box; | ||
873 | + } | ||
874 | + .input-prepend input, | ||
875 | + .input-append input, | ||
876 | + .input-prepend input[class*="span"], | ||
877 | + .input-append input[class*="span"] { | ||
878 | + display: inline-block; | ||
879 | + width: auto; | ||
880 | + } | ||
881 | + .controls-row [class*="span"] + [class*="span"] { | ||
882 | + margin-left: 0; | ||
883 | + } | ||
884 | + .modal { | ||
885 | + position: fixed; | ||
886 | + top: 20px; | ||
887 | + right: 20px; | ||
888 | + left: 20px; | ||
889 | + width: auto; | ||
890 | + margin: 0; | ||
891 | + } | ||
892 | + .modal.fade { | ||
893 | + top: -100px; | ||
894 | + } | ||
895 | + .modal.fade.in { | ||
896 | + top: 20px; | ||
897 | + } | ||
898 | +} | ||
899 | + | ||
900 | +@media (max-width: 480px) { | ||
901 | + .nav-collapse { | ||
902 | + -webkit-transform: translate3d(0, 0, 0); | ||
903 | + } | ||
904 | + .page-header h1 small { | ||
905 | + display: block; | ||
906 | + line-height: 20px; | ||
907 | + } | ||
908 | + input[type="checkbox"], | ||
909 | + input[type="radio"] { | ||
910 | + border: 1px solid #ccc; | ||
911 | + } | ||
912 | + .form-horizontal .control-label { | ||
913 | + float: none; | ||
914 | + width: auto; | ||
915 | + padding-top: 0; | ||
916 | + text-align: left; | ||
917 | + } | ||
918 | + .form-horizontal .controls { | ||
919 | + margin-left: 0; | ||
920 | + } | ||
921 | + .form-horizontal .control-list { | ||
922 | + padding-top: 0; | ||
923 | + } | ||
924 | + .form-horizontal .form-actions { | ||
925 | + padding-right: 10px; | ||
926 | + padding-left: 10px; | ||
927 | + } | ||
928 | + .media .pull-left, | ||
929 | + .media .pull-right { | ||
930 | + display: block; | ||
931 | + float: none; | ||
932 | + margin-bottom: 10px; | ||
933 | + } | ||
934 | + .media-object { | ||
935 | + margin-right: 0; | ||
936 | + margin-left: 0; | ||
937 | + } | ||
938 | + .modal { | ||
939 | + top: 10px; | ||
940 | + right: 10px; | ||
941 | + left: 10px; | ||
942 | + } | ||
943 | + .modal-header .close { | ||
944 | + padding: 10px; | ||
945 | + margin: -10px; | ||
946 | + } | ||
947 | + .carousel-caption { | ||
948 | + position: static; | ||
949 | + } | ||
950 | +} | ||
951 | + | ||
952 | +@media (max-width: 979px) { | ||
953 | + body { | ||
954 | + padding-top: 0; | ||
955 | + } | ||
956 | + .navbar-fixed-top, | ||
957 | + .navbar-fixed-bottom { | ||
958 | + position: static; | ||
959 | + } | ||
960 | + .navbar-fixed-top { | ||
961 | + margin-bottom: 20px; | ||
962 | + } | ||
963 | + .navbar-fixed-bottom { | ||
964 | + margin-top: 20px; | ||
965 | + } | ||
966 | + .navbar-fixed-top .navbar-inner, | ||
967 | + .navbar-fixed-bottom .navbar-inner { | ||
968 | + padding: 5px; | ||
969 | + } | ||
970 | + .navbar .container { | ||
971 | + width: auto; | ||
972 | + padding: 0; | ||
973 | + } | ||
974 | + .navbar .brand { | ||
975 | + padding-right: 10px; | ||
976 | + padding-left: 10px; | ||
977 | + margin: 0 0 0 -5px; | ||
978 | + } | ||
979 | + .nav-collapse { | ||
980 | + clear: both; | ||
981 | + } | ||
982 | + .nav-collapse .nav { | ||
983 | + float: none; | ||
984 | + margin: 0 0 10px; | ||
985 | + } | ||
986 | + .nav-collapse .nav > li { | ||
987 | + float: none; | ||
988 | + } | ||
989 | + .nav-collapse .nav > li > a { | ||
990 | + margin-bottom: 2px; | ||
991 | + } | ||
992 | + .nav-collapse .nav > .divider-vertical { | ||
993 | + display: none; | ||
994 | + } | ||
995 | + .nav-collapse .nav .nav-header { | ||
996 | + color: #777777; | ||
997 | + text-shadow: none; | ||
998 | + } | ||
999 | + .nav-collapse .nav > li > a, | ||
1000 | + .nav-collapse .dropdown-menu a { | ||
1001 | + padding: 9px 15px; | ||
1002 | + font-weight: bold; | ||
1003 | + color: #777777; | ||
1004 | + -webkit-border-radius: 3px; | ||
1005 | + -moz-border-radius: 3px; | ||
1006 | + border-radius: 3px; | ||
1007 | + } | ||
1008 | + .nav-collapse .btn { | ||
1009 | + padding: 4px 10px 4px; | ||
1010 | + font-weight: normal; | ||
1011 | + -webkit-border-radius: 4px; | ||
1012 | + -moz-border-radius: 4px; | ||
1013 | + border-radius: 4px; | ||
1014 | + } | ||
1015 | + .nav-collapse .dropdown-menu li + li a { | ||
1016 | + margin-bottom: 2px; | ||
1017 | + } | ||
1018 | + .nav-collapse .nav > li > a:hover, | ||
1019 | + .nav-collapse .nav > li > a:focus, | ||
1020 | + .nav-collapse .dropdown-menu a:hover, | ||
1021 | + .nav-collapse .dropdown-menu a:focus { | ||
1022 | + background-color: #f2f2f2; | ||
1023 | + } | ||
1024 | + .navbar-inverse .nav-collapse .nav > li > a, | ||
1025 | + .navbar-inverse .nav-collapse .dropdown-menu a { | ||
1026 | + color: #999999; | ||
1027 | + } | ||
1028 | + .navbar-inverse .nav-collapse .nav > li > a:hover, | ||
1029 | + .navbar-inverse .nav-collapse .nav > li > a:focus, | ||
1030 | + .navbar-inverse .nav-collapse .dropdown-menu a:hover, | ||
1031 | + .navbar-inverse .nav-collapse .dropdown-menu a:focus { | ||
1032 | + background-color: #111111; | ||
1033 | + } | ||
1034 | + .nav-collapse.in .btn-group { | ||
1035 | + padding: 0; | ||
1036 | + margin-top: 5px; | ||
1037 | + } | ||
1038 | + .nav-collapse .dropdown-menu { | ||
1039 | + position: static; | ||
1040 | + top: auto; | ||
1041 | + left: auto; | ||
1042 | + display: none; | ||
1043 | + float: none; | ||
1044 | + max-width: none; | ||
1045 | + padding: 0; | ||
1046 | + margin: 0 15px; | ||
1047 | + background-color: transparent; | ||
1048 | + border: none; | ||
1049 | + -webkit-border-radius: 0; | ||
1050 | + -moz-border-radius: 0; | ||
1051 | + border-radius: 0; | ||
1052 | + -webkit-box-shadow: none; | ||
1053 | + -moz-box-shadow: none; | ||
1054 | + box-shadow: none; | ||
1055 | + } | ||
1056 | + .nav-collapse .open > .dropdown-menu { | ||
1057 | + display: block; | ||
1058 | + } | ||
1059 | + .nav-collapse .dropdown-menu:before, | ||
1060 | + .nav-collapse .dropdown-menu:after { | ||
1061 | + display: none; | ||
1062 | + } | ||
1063 | + .nav-collapse .dropdown-menu .divider { | ||
1064 | + display: none; | ||
1065 | + } | ||
1066 | + .nav-collapse .nav > li > .dropdown-menu:before, | ||
1067 | + .nav-collapse .nav > li > .dropdown-menu:after { | ||
1068 | + display: none; | ||
1069 | + } | ||
1070 | + .nav-collapse .navbar-form, | ||
1071 | + .nav-collapse .navbar-search { | ||
1072 | + float: none; | ||
1073 | + padding: 10px 15px; | ||
1074 | + margin: 10px 0; | ||
1075 | + border-top: 1px solid #f2f2f2; | ||
1076 | + border-bottom: 1px solid #f2f2f2; | ||
1077 | + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); | ||
1078 | + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); | ||
1079 | + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); | ||
1080 | + } | ||
1081 | + .navbar-inverse .nav-collapse .navbar-form, | ||
1082 | + .navbar-inverse .nav-collapse .navbar-search { | ||
1083 | + border-top-color: #111111; | ||
1084 | + border-bottom-color: #111111; | ||
1085 | + } | ||
1086 | + .navbar .nav-collapse .nav.pull-right { | ||
1087 | + float: none; | ||
1088 | + margin-left: 0; | ||
1089 | + } | ||
1090 | + .nav-collapse, | ||
1091 | + .nav-collapse.collapse { | ||
1092 | + height: 0; | ||
1093 | + overflow: hidden; | ||
1094 | + } | ||
1095 | + .navbar .btn-navbar { | ||
1096 | + display: block; | ||
1097 | + } | ||
1098 | + .navbar-static .navbar-inner { | ||
1099 | + padding-right: 10px; | ||
1100 | + padding-left: 10px; | ||
1101 | + } | ||
1102 | +} | ||
1103 | + | ||
1104 | +@media (min-width: 980px) { | ||
1105 | + .nav-collapse.collapse { | ||
1106 | + height: auto !important; | ||
1107 | + overflow: visible !important; | ||
1108 | + } | ||
1109 | +} |
1 | +/*! | ||
2 | + * Bootstrap Responsive v2.3.2 | ||
3 | + * | ||
4 | + * Copyright 2013 Twitter, Inc | ||
5 | + * Licensed under the Apache License v2.0 | ||
6 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
7 | + * | ||
8 | + * Designed and built with all the love in the world by @mdo and @fat. | ||
9 | + */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@-ms-viewport{width:device-width}.hidden{display:none;visibility:hidden}.visible-phone{display:none!important}.visible-tablet{display:none!important}.hidden-desktop{display:none!important}.visible-desktop{display:inherit!important}@media(min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-tablet{display:inherit!important}.hidden-tablet{display:none!important}}@media(max-width:767px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-phone{display:inherit!important}.hidden-phone{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:inherit!important}.hidden-print{display:none!important}}@media(min-width:1200px){.row{margin-left:-30px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:30px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px}.span12{width:1170px}.span11{width:1070px}.span10{width:970px}.span9{width:870px}.span8{width:770px}.span7{width:670px}.span6{width:570px}.span5{width:470px}.span4{width:370px}.span3{width:270px}.span2{width:170px}.span1{width:70px}.offset12{margin-left:1230px}.offset11{margin-left:1130px}.offset10{margin-left:1030px}.offset9{margin-left:930px}.offset8{margin-left:830px}.offset7{margin-left:730px}.offset6{margin-left:630px}.offset5{margin-left:530px}.offset4{margin-left:430px}.offset3{margin-left:330px}.offset2{margin-left:230px}.offset1{margin-left:130px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%}.row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%}.row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%}.row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%}.row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%}.row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%}.row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%}.row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%}.row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%}.row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%}.row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%}.row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%}.row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%}.row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%}.row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%}.row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%}.row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%}.row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%}.row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%}.row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%}.row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%}.row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%}.row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%}.row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%}.row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%}.row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%}.row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%}.row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%}.row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%}.row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%}.row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%}.row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%}.row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%}.row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%}.row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:30px}input.span12,textarea.span12,.uneditable-input.span12{width:1156px}input.span11,textarea.span11,.uneditable-input.span11{width:1056px}input.span10,textarea.span10,.uneditable-input.span10{width:956px}input.span9,textarea.span9,.uneditable-input.span9{width:856px}input.span8,textarea.span8,.uneditable-input.span8{width:756px}input.span7,textarea.span7,.uneditable-input.span7{width:656px}input.span6,textarea.span6,.uneditable-input.span6{width:556px}input.span5,textarea.span5,.uneditable-input.span5{width:456px}input.span4,textarea.span4,.uneditable-input.span4{width:356px}input.span3,textarea.span3,.uneditable-input.span3{width:256px}input.span2,textarea.span2,.uneditable-input.span2{width:156px}input.span1,textarea.span1,.uneditable-input.span1{width:56px}.thumbnails{margin-left:-30px}.thumbnails>li{margin-left:30px}.row-fluid .thumbnails{margin-left:0}}@media(min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px}.span12{width:724px}.span11{width:662px}.span10{width:600px}.span9{width:538px}.span8{width:476px}.span7{width:414px}.span6{width:352px}.span5{width:290px}.span4{width:228px}.span3{width:166px}.span2{width:104px}.span1{width:42px}.offset12{margin-left:764px}.offset11{margin-left:702px}.offset10{margin-left:640px}.offset9{margin-left:578px}.offset8{margin-left:516px}.offset7{margin-left:454px}.offset6{margin-left:392px}.offset5{margin-left:330px}.offset4{margin-left:268px}.offset3{margin-left:206px}.offset2{margin-left:144px}.offset1{margin-left:82px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%}.row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%}.row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%}.row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%}.row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%}.row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%}.row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%}.row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%}.row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%}.row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%}.row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%}.row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%}.row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%}.row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%}.row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%}.row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%}.row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%}.row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%}.row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%}.row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%}.row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%}.row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%}.row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%}.row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%}.row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%}.row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%}.row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%}.row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%}.row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%}.row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%}.row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%}.row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%}.row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%}.row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%}.row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:710px}input.span11,textarea.span11,.uneditable-input.span11{width:648px}input.span10,textarea.span10,.uneditable-input.span10{width:586px}input.span9,textarea.span9,.uneditable-input.span9{width:524px}input.span8,textarea.span8,.uneditable-input.span8{width:462px}input.span7,textarea.span7,.uneditable-input.span7{width:400px}input.span6,textarea.span6,.uneditable-input.span6{width:338px}input.span5,textarea.span5,.uneditable-input.span5{width:276px}input.span4,textarea.span4,.uneditable-input.span4{width:214px}input.span3,textarea.span3,.uneditable-input.span3{width:152px}input.span2,textarea.span2,.uneditable-input.span2{width:90px}input.span1,textarea.span1,.uneditable-input.span1{width:28px}}@media(max-width:767px){body{padding-right:20px;padding-left:20px}.navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-right:-20px;margin-left:-20px}.container-fluid{padding:0}.dl-horizontal dt{float:none;width:auto;clear:none;text-align:left}.dl-horizontal dd{margin-left:0}.container{width:auto}.row-fluid{width:100%}.row,.thumbnails{margin-left:0}.thumbnails>li{float:none;margin-left:0}[class*="span"],.uneditable-input[class*="span"],.row-fluid [class*="span"]{display:block;float:none;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="offset"]:first-child{margin-left:0}.input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto}.controls-row [class*="span"]+[class*="span"]{margin-left:0}.modal{position:fixed;top:20px;right:20px;left:20px;width:auto;margin:0}.modal.fade{top:-100px}.modal.fade.in{top:20px}}@media(max-width:480px){.nav-collapse{-webkit-transform:translate3d(0,0,0)}.page-header h1 small{display:block;line-height:20px}input[type="checkbox"],input[type="radio"]{border:1px solid #ccc}.form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left}.form-horizontal .controls{margin-left:0}.form-horizontal .control-list{padding-top:0}.form-horizontal .form-actions{padding-right:10px;padding-left:10px}.media .pull-left,.media .pull-right{display:block;float:none;margin-bottom:10px}.media-object{margin-right:0;margin-left:0}.modal{top:10px;right:10px;left:10px}.modal-header .close{padding:10px;margin:-10px}.carousel-caption{position:static}}@media(max-width:979px){body{padding-top:0}.navbar-fixed-top,.navbar-fixed-bottom{position:static}.navbar-fixed-top{margin-bottom:20px}.navbar-fixed-bottom{margin-top:20px}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px}.navbar .container{width:auto;padding:0}.navbar .brand{padding-right:10px;padding-left:10px;margin:0 0 0 -5px}.nav-collapse{clear:both}.nav-collapse .nav{float:none;margin:0 0 10px}.nav-collapse .nav>li{float:none}.nav-collapse .nav>li>a{margin-bottom:2px}.nav-collapse .nav>.divider-vertical{display:none}.nav-collapse .nav .nav-header{color:#777;text-shadow:none}.nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nav-collapse .dropdown-menu li+li a{margin-bottom:2px}.nav-collapse .nav>li>a:hover,.nav-collapse .nav>li>a:focus,.nav-collapse .dropdown-menu a:hover,.nav-collapse .dropdown-menu a:focus{background-color:#f2f2f2}.navbar-inverse .nav-collapse .nav>li>a,.navbar-inverse .nav-collapse .dropdown-menu a{color:#999}.navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .nav>li>a:focus,.navbar-inverse .nav-collapse .dropdown-menu a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:focus{background-color:#111}.nav-collapse.in .btn-group{padding:0;margin-top:5px}.nav-collapse .dropdown-menu{position:static;top:auto;left:auto;display:none;float:none;max-width:none;padding:0;margin:0 15px;background-color:transparent;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.nav-collapse .open>.dropdown-menu{display:block}.nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none}.nav-collapse .dropdown-menu .divider{display:none}.nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none}.nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}.navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111;border-bottom-color:#111}.navbar .nav-collapse .nav.pull-right{float:none;margin-left:0}.nav-collapse,.nav-collapse.collapse{height:0;overflow:hidden}.navbar .btn-navbar{display:block}.navbar-static .navbar-inner{padding-right:10px;padding-left:10px}}@media(min-width:980px){.nav-collapse.collapse{height:auto!important;overflow:visible!important}} |
server_db/public/css/bootstrap.css
0 → 100644
This diff could not be displayed because it is too large.
server_db/public/css/bootstrap.min.css
0 → 100644
This diff could not be displayed because it is too large.
server_db/public/js/bootstrap.js
0 → 100644
1 | +/* =================================================== | ||
2 | + * bootstrap-transition.js v2.3.2 | ||
3 | + * http://getbootstrap.com/2.3.2/javascript.html#transitions | ||
4 | + * =================================================== | ||
5 | + * Copyright 2013 Twitter, Inc. | ||
6 | + * | ||
7 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
8 | + * you may not use this file except in compliance with the License. | ||
9 | + * You may obtain a copy of the License at | ||
10 | + * | ||
11 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
12 | + * | ||
13 | + * Unless required by applicable law or agreed to in writing, software | ||
14 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
15 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
16 | + * See the License for the specific language governing permissions and | ||
17 | + * limitations under the License. | ||
18 | + * ========================================================== */ | ||
19 | + | ||
20 | + | ||
21 | +!function ($) { | ||
22 | + | ||
23 | + "use strict"; // jshint ;_; | ||
24 | + | ||
25 | + | ||
26 | + /* CSS TRANSITION SUPPORT (http://www.modernizr.com/) | ||
27 | + * ======================================================= */ | ||
28 | + | ||
29 | + $(function () { | ||
30 | + | ||
31 | + $.support.transition = (function () { | ||
32 | + | ||
33 | + var transitionEnd = (function () { | ||
34 | + | ||
35 | + var el = document.createElement('bootstrap') | ||
36 | + , transEndEventNames = { | ||
37 | + 'WebkitTransition' : 'webkitTransitionEnd' | ||
38 | + , 'MozTransition' : 'transitionend' | ||
39 | + , 'OTransition' : 'oTransitionEnd otransitionend' | ||
40 | + , 'transition' : 'transitionend' | ||
41 | + } | ||
42 | + , name | ||
43 | + | ||
44 | + for (name in transEndEventNames){ | ||
45 | + if (el.style[name] !== undefined) { | ||
46 | + return transEndEventNames[name] | ||
47 | + } | ||
48 | + } | ||
49 | + | ||
50 | + }()) | ||
51 | + | ||
52 | + return transitionEnd && { | ||
53 | + end: transitionEnd | ||
54 | + } | ||
55 | + | ||
56 | + })() | ||
57 | + | ||
58 | + }) | ||
59 | + | ||
60 | +}(window.jQuery);/* ========================================================== | ||
61 | + * bootstrap-alert.js v2.3.2 | ||
62 | + * http://getbootstrap.com/2.3.2/javascript.html#alerts | ||
63 | + * ========================================================== | ||
64 | + * Copyright 2013 Twitter, Inc. | ||
65 | + * | ||
66 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
67 | + * you may not use this file except in compliance with the License. | ||
68 | + * You may obtain a copy of the License at | ||
69 | + * | ||
70 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
71 | + * | ||
72 | + * Unless required by applicable law or agreed to in writing, software | ||
73 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
74 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
75 | + * See the License for the specific language governing permissions and | ||
76 | + * limitations under the License. | ||
77 | + * ========================================================== */ | ||
78 | + | ||
79 | + | ||
80 | +!function ($) { | ||
81 | + | ||
82 | + "use strict"; // jshint ;_; | ||
83 | + | ||
84 | + | ||
85 | + /* ALERT CLASS DEFINITION | ||
86 | + * ====================== */ | ||
87 | + | ||
88 | + var dismiss = '[data-dismiss="alert"]' | ||
89 | + , Alert = function (el) { | ||
90 | + $(el).on('click', dismiss, this.close) | ||
91 | + } | ||
92 | + | ||
93 | + Alert.prototype.close = function (e) { | ||
94 | + var $this = $(this) | ||
95 | + , selector = $this.attr('data-target') | ||
96 | + , $parent | ||
97 | + | ||
98 | + if (!selector) { | ||
99 | + selector = $this.attr('href') | ||
100 | + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 | ||
101 | + } | ||
102 | + | ||
103 | + $parent = $(selector) | ||
104 | + | ||
105 | + e && e.preventDefault() | ||
106 | + | ||
107 | + $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent()) | ||
108 | + | ||
109 | + $parent.trigger(e = $.Event('close')) | ||
110 | + | ||
111 | + if (e.isDefaultPrevented()) return | ||
112 | + | ||
113 | + $parent.removeClass('in') | ||
114 | + | ||
115 | + function removeElement() { | ||
116 | + $parent | ||
117 | + .trigger('closed') | ||
118 | + .remove() | ||
119 | + } | ||
120 | + | ||
121 | + $.support.transition && $parent.hasClass('fade') ? | ||
122 | + $parent.on($.support.transition.end, removeElement) : | ||
123 | + removeElement() | ||
124 | + } | ||
125 | + | ||
126 | + | ||
127 | + /* ALERT PLUGIN DEFINITION | ||
128 | + * ======================= */ | ||
129 | + | ||
130 | + var old = $.fn.alert | ||
131 | + | ||
132 | + $.fn.alert = function (option) { | ||
133 | + return this.each(function () { | ||
134 | + var $this = $(this) | ||
135 | + , data = $this.data('alert') | ||
136 | + if (!data) $this.data('alert', (data = new Alert(this))) | ||
137 | + if (typeof option == 'string') data[option].call($this) | ||
138 | + }) | ||
139 | + } | ||
140 | + | ||
141 | + $.fn.alert.Constructor = Alert | ||
142 | + | ||
143 | + | ||
144 | + /* ALERT NO CONFLICT | ||
145 | + * ================= */ | ||
146 | + | ||
147 | + $.fn.alert.noConflict = function () { | ||
148 | + $.fn.alert = old | ||
149 | + return this | ||
150 | + } | ||
151 | + | ||
152 | + | ||
153 | + /* ALERT DATA-API | ||
154 | + * ============== */ | ||
155 | + | ||
156 | + $(document).on('click.alert.data-api', dismiss, Alert.prototype.close) | ||
157 | + | ||
158 | +}(window.jQuery);/* ============================================================ | ||
159 | + * bootstrap-button.js v2.3.2 | ||
160 | + * http://getbootstrap.com/2.3.2/javascript.html#buttons | ||
161 | + * ============================================================ | ||
162 | + * Copyright 2013 Twitter, Inc. | ||
163 | + * | ||
164 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
165 | + * you may not use this file except in compliance with the License. | ||
166 | + * You may obtain a copy of the License at | ||
167 | + * | ||
168 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
169 | + * | ||
170 | + * Unless required by applicable law or agreed to in writing, software | ||
171 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
172 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
173 | + * See the License for the specific language governing permissions and | ||
174 | + * limitations under the License. | ||
175 | + * ============================================================ */ | ||
176 | + | ||
177 | + | ||
178 | +!function ($) { | ||
179 | + | ||
180 | + "use strict"; // jshint ;_; | ||
181 | + | ||
182 | + | ||
183 | + /* BUTTON PUBLIC CLASS DEFINITION | ||
184 | + * ============================== */ | ||
185 | + | ||
186 | + var Button = function (element, options) { | ||
187 | + this.$element = $(element) | ||
188 | + this.options = $.extend({}, $.fn.button.defaults, options) | ||
189 | + } | ||
190 | + | ||
191 | + Button.prototype.setState = function (state) { | ||
192 | + var d = 'disabled' | ||
193 | + , $el = this.$element | ||
194 | + , data = $el.data() | ||
195 | + , val = $el.is('input') ? 'val' : 'html' | ||
196 | + | ||
197 | + state = state + 'Text' | ||
198 | + data.resetText || $el.data('resetText', $el[val]()) | ||
199 | + | ||
200 | + $el[val](data[state] || this.options[state]) | ||
201 | + | ||
202 | + // push to event loop to allow forms to submit | ||
203 | + setTimeout(function () { | ||
204 | + state == 'loadingText' ? | ||
205 | + $el.addClass(d).attr(d, d) : | ||
206 | + $el.removeClass(d).removeAttr(d) | ||
207 | + }, 0) | ||
208 | + } | ||
209 | + | ||
210 | + Button.prototype.toggle = function () { | ||
211 | + var $parent = this.$element.closest('[data-toggle="buttons-radio"]') | ||
212 | + | ||
213 | + $parent && $parent | ||
214 | + .find('.active') | ||
215 | + .removeClass('active') | ||
216 | + | ||
217 | + this.$element.toggleClass('active') | ||
218 | + } | ||
219 | + | ||
220 | + | ||
221 | + /* BUTTON PLUGIN DEFINITION | ||
222 | + * ======================== */ | ||
223 | + | ||
224 | + var old = $.fn.button | ||
225 | + | ||
226 | + $.fn.button = function (option) { | ||
227 | + return this.each(function () { | ||
228 | + var $this = $(this) | ||
229 | + , data = $this.data('button') | ||
230 | + , options = typeof option == 'object' && option | ||
231 | + if (!data) $this.data('button', (data = new Button(this, options))) | ||
232 | + if (option == 'toggle') data.toggle() | ||
233 | + else if (option) data.setState(option) | ||
234 | + }) | ||
235 | + } | ||
236 | + | ||
237 | + $.fn.button.defaults = { | ||
238 | + loadingText: 'loading...' | ||
239 | + } | ||
240 | + | ||
241 | + $.fn.button.Constructor = Button | ||
242 | + | ||
243 | + | ||
244 | + /* BUTTON NO CONFLICT | ||
245 | + * ================== */ | ||
246 | + | ||
247 | + $.fn.button.noConflict = function () { | ||
248 | + $.fn.button = old | ||
249 | + return this | ||
250 | + } | ||
251 | + | ||
252 | + | ||
253 | + /* BUTTON DATA-API | ||
254 | + * =============== */ | ||
255 | + | ||
256 | + $(document).on('click.button.data-api', '[data-toggle^=button]', function (e) { | ||
257 | + var $btn = $(e.target) | ||
258 | + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') | ||
259 | + $btn.button('toggle') | ||
260 | + }) | ||
261 | + | ||
262 | +}(window.jQuery);/* ========================================================== | ||
263 | + * bootstrap-carousel.js v2.3.2 | ||
264 | + * http://getbootstrap.com/2.3.2/javascript.html#carousel | ||
265 | + * ========================================================== | ||
266 | + * Copyright 2013 Twitter, Inc. | ||
267 | + * | ||
268 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
269 | + * you may not use this file except in compliance with the License. | ||
270 | + * You may obtain a copy of the License at | ||
271 | + * | ||
272 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
273 | + * | ||
274 | + * Unless required by applicable law or agreed to in writing, software | ||
275 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
276 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
277 | + * See the License for the specific language governing permissions and | ||
278 | + * limitations under the License. | ||
279 | + * ========================================================== */ | ||
280 | + | ||
281 | + | ||
282 | +!function ($) { | ||
283 | + | ||
284 | + "use strict"; // jshint ;_; | ||
285 | + | ||
286 | + | ||
287 | + /* CAROUSEL CLASS DEFINITION | ||
288 | + * ========================= */ | ||
289 | + | ||
290 | + var Carousel = function (element, options) { | ||
291 | + this.$element = $(element) | ||
292 | + this.$indicators = this.$element.find('.carousel-indicators') | ||
293 | + this.options = options | ||
294 | + this.options.pause == 'hover' && this.$element | ||
295 | + .on('mouseenter', $.proxy(this.pause, this)) | ||
296 | + .on('mouseleave', $.proxy(this.cycle, this)) | ||
297 | + } | ||
298 | + | ||
299 | + Carousel.prototype = { | ||
300 | + | ||
301 | + cycle: function (e) { | ||
302 | + if (!e) this.paused = false | ||
303 | + if (this.interval) clearInterval(this.interval); | ||
304 | + this.options.interval | ||
305 | + && !this.paused | ||
306 | + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) | ||
307 | + return this | ||
308 | + } | ||
309 | + | ||
310 | + , getActiveIndex: function () { | ||
311 | + this.$active = this.$element.find('.item.active') | ||
312 | + this.$items = this.$active.parent().children() | ||
313 | + return this.$items.index(this.$active) | ||
314 | + } | ||
315 | + | ||
316 | + , to: function (pos) { | ||
317 | + var activeIndex = this.getActiveIndex() | ||
318 | + , that = this | ||
319 | + | ||
320 | + if (pos > (this.$items.length - 1) || pos < 0) return | ||
321 | + | ||
322 | + if (this.sliding) { | ||
323 | + return this.$element.one('slid', function () { | ||
324 | + that.to(pos) | ||
325 | + }) | ||
326 | + } | ||
327 | + | ||
328 | + if (activeIndex == pos) { | ||
329 | + return this.pause().cycle() | ||
330 | + } | ||
331 | + | ||
332 | + return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) | ||
333 | + } | ||
334 | + | ||
335 | + , pause: function (e) { | ||
336 | + if (!e) this.paused = true | ||
337 | + if (this.$element.find('.next, .prev').length && $.support.transition.end) { | ||
338 | + this.$element.trigger($.support.transition.end) | ||
339 | + this.cycle(true) | ||
340 | + } | ||
341 | + clearInterval(this.interval) | ||
342 | + this.interval = null | ||
343 | + return this | ||
344 | + } | ||
345 | + | ||
346 | + , next: function () { | ||
347 | + if (this.sliding) return | ||
348 | + return this.slide('next') | ||
349 | + } | ||
350 | + | ||
351 | + , prev: function () { | ||
352 | + if (this.sliding) return | ||
353 | + return this.slide('prev') | ||
354 | + } | ||
355 | + | ||
356 | + , slide: function (type, next) { | ||
357 | + var $active = this.$element.find('.item.active') | ||
358 | + , $next = next || $active[type]() | ||
359 | + , isCycling = this.interval | ||
360 | + , direction = type == 'next' ? 'left' : 'right' | ||
361 | + , fallback = type == 'next' ? 'first' : 'last' | ||
362 | + , that = this | ||
363 | + , e | ||
364 | + | ||
365 | + this.sliding = true | ||
366 | + | ||
367 | + isCycling && this.pause() | ||
368 | + | ||
369 | + $next = $next.length ? $next : this.$element.find('.item')[fallback]() | ||
370 | + | ||
371 | + e = $.Event('slide', { | ||
372 | + relatedTarget: $next[0] | ||
373 | + , direction: direction | ||
374 | + }) | ||
375 | + | ||
376 | + if ($next.hasClass('active')) return | ||
377 | + | ||
378 | + if (this.$indicators.length) { | ||
379 | + this.$indicators.find('.active').removeClass('active') | ||
380 | + this.$element.one('slid', function () { | ||
381 | + var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) | ||
382 | + $nextIndicator && $nextIndicator.addClass('active') | ||
383 | + }) | ||
384 | + } | ||
385 | + | ||
386 | + if ($.support.transition && this.$element.hasClass('slide')) { | ||
387 | + this.$element.trigger(e) | ||
388 | + if (e.isDefaultPrevented()) return | ||
389 | + $next.addClass(type) | ||
390 | + $next[0].offsetWidth // force reflow | ||
391 | + $active.addClass(direction) | ||
392 | + $next.addClass(direction) | ||
393 | + this.$element.one($.support.transition.end, function () { | ||
394 | + $next.removeClass([type, direction].join(' ')).addClass('active') | ||
395 | + $active.removeClass(['active', direction].join(' ')) | ||
396 | + that.sliding = false | ||
397 | + setTimeout(function () { that.$element.trigger('slid') }, 0) | ||
398 | + }) | ||
399 | + } else { | ||
400 | + this.$element.trigger(e) | ||
401 | + if (e.isDefaultPrevented()) return | ||
402 | + $active.removeClass('active') | ||
403 | + $next.addClass('active') | ||
404 | + this.sliding = false | ||
405 | + this.$element.trigger('slid') | ||
406 | + } | ||
407 | + | ||
408 | + isCycling && this.cycle() | ||
409 | + | ||
410 | + return this | ||
411 | + } | ||
412 | + | ||
413 | + } | ||
414 | + | ||
415 | + | ||
416 | + /* CAROUSEL PLUGIN DEFINITION | ||
417 | + * ========================== */ | ||
418 | + | ||
419 | + var old = $.fn.carousel | ||
420 | + | ||
421 | + $.fn.carousel = function (option) { | ||
422 | + return this.each(function () { | ||
423 | + var $this = $(this) | ||
424 | + , data = $this.data('carousel') | ||
425 | + , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option) | ||
426 | + , action = typeof option == 'string' ? option : options.slide | ||
427 | + if (!data) $this.data('carousel', (data = new Carousel(this, options))) | ||
428 | + if (typeof option == 'number') data.to(option) | ||
429 | + else if (action) data[action]() | ||
430 | + else if (options.interval) data.pause().cycle() | ||
431 | + }) | ||
432 | + } | ||
433 | + | ||
434 | + $.fn.carousel.defaults = { | ||
435 | + interval: 5000 | ||
436 | + , pause: 'hover' | ||
437 | + } | ||
438 | + | ||
439 | + $.fn.carousel.Constructor = Carousel | ||
440 | + | ||
441 | + | ||
442 | + /* CAROUSEL NO CONFLICT | ||
443 | + * ==================== */ | ||
444 | + | ||
445 | + $.fn.carousel.noConflict = function () { | ||
446 | + $.fn.carousel = old | ||
447 | + return this | ||
448 | + } | ||
449 | + | ||
450 | + /* CAROUSEL DATA-API | ||
451 | + * ================= */ | ||
452 | + | ||
453 | + $(document).on('click.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { | ||
454 | + var $this = $(this), href | ||
455 | + , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 | ||
456 | + , options = $.extend({}, $target.data(), $this.data()) | ||
457 | + , slideIndex | ||
458 | + | ||
459 | + $target.carousel(options) | ||
460 | + | ||
461 | + if (slideIndex = $this.attr('data-slide-to')) { | ||
462 | + $target.data('carousel').pause().to(slideIndex).cycle() | ||
463 | + } | ||
464 | + | ||
465 | + e.preventDefault() | ||
466 | + }) | ||
467 | + | ||
468 | +}(window.jQuery);/* ============================================================= | ||
469 | + * bootstrap-collapse.js v2.3.2 | ||
470 | + * http://getbootstrap.com/2.3.2/javascript.html#collapse | ||
471 | + * ============================================================= | ||
472 | + * Copyright 2013 Twitter, Inc. | ||
473 | + * | ||
474 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
475 | + * you may not use this file except in compliance with the License. | ||
476 | + * You may obtain a copy of the License at | ||
477 | + * | ||
478 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
479 | + * | ||
480 | + * Unless required by applicable law or agreed to in writing, software | ||
481 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
482 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
483 | + * See the License for the specific language governing permissions and | ||
484 | + * limitations under the License. | ||
485 | + * ============================================================ */ | ||
486 | + | ||
487 | + | ||
488 | +!function ($) { | ||
489 | + | ||
490 | + "use strict"; // jshint ;_; | ||
491 | + | ||
492 | + | ||
493 | + /* COLLAPSE PUBLIC CLASS DEFINITION | ||
494 | + * ================================ */ | ||
495 | + | ||
496 | + var Collapse = function (element, options) { | ||
497 | + this.$element = $(element) | ||
498 | + this.options = $.extend({}, $.fn.collapse.defaults, options) | ||
499 | + | ||
500 | + if (this.options.parent) { | ||
501 | + this.$parent = $(this.options.parent) | ||
502 | + } | ||
503 | + | ||
504 | + this.options.toggle && this.toggle() | ||
505 | + } | ||
506 | + | ||
507 | + Collapse.prototype = { | ||
508 | + | ||
509 | + constructor: Collapse | ||
510 | + | ||
511 | + , dimension: function () { | ||
512 | + var hasWidth = this.$element.hasClass('width') | ||
513 | + return hasWidth ? 'width' : 'height' | ||
514 | + } | ||
515 | + | ||
516 | + , show: function () { | ||
517 | + var dimension | ||
518 | + , scroll | ||
519 | + , actives | ||
520 | + , hasData | ||
521 | + | ||
522 | + if (this.transitioning || this.$element.hasClass('in')) return | ||
523 | + | ||
524 | + dimension = this.dimension() | ||
525 | + scroll = $.camelCase(['scroll', dimension].join('-')) | ||
526 | + actives = this.$parent && this.$parent.find('> .accordion-group > .in') | ||
527 | + | ||
528 | + if (actives && actives.length) { | ||
529 | + hasData = actives.data('collapse') | ||
530 | + if (hasData && hasData.transitioning) return | ||
531 | + actives.collapse('hide') | ||
532 | + hasData || actives.data('collapse', null) | ||
533 | + } | ||
534 | + | ||
535 | + this.$element[dimension](0) | ||
536 | + this.transition('addClass', $.Event('show'), 'shown') | ||
537 | + $.support.transition && this.$element[dimension](this.$element[0][scroll]) | ||
538 | + } | ||
539 | + | ||
540 | + , hide: function () { | ||
541 | + var dimension | ||
542 | + if (this.transitioning || !this.$element.hasClass('in')) return | ||
543 | + dimension = this.dimension() | ||
544 | + this.reset(this.$element[dimension]()) | ||
545 | + this.transition('removeClass', $.Event('hide'), 'hidden') | ||
546 | + this.$element[dimension](0) | ||
547 | + } | ||
548 | + | ||
549 | + , reset: function (size) { | ||
550 | + var dimension = this.dimension() | ||
551 | + | ||
552 | + this.$element | ||
553 | + .removeClass('collapse') | ||
554 | + [dimension](size || 'auto') | ||
555 | + [0].offsetWidth | ||
556 | + | ||
557 | + this.$element[size !== null ? 'addClass' : 'removeClass']('collapse') | ||
558 | + | ||
559 | + return this | ||
560 | + } | ||
561 | + | ||
562 | + , transition: function (method, startEvent, completeEvent) { | ||
563 | + var that = this | ||
564 | + , complete = function () { | ||
565 | + if (startEvent.type == 'show') that.reset() | ||
566 | + that.transitioning = 0 | ||
567 | + that.$element.trigger(completeEvent) | ||
568 | + } | ||
569 | + | ||
570 | + this.$element.trigger(startEvent) | ||
571 | + | ||
572 | + if (startEvent.isDefaultPrevented()) return | ||
573 | + | ||
574 | + this.transitioning = 1 | ||
575 | + | ||
576 | + this.$element[method]('in') | ||
577 | + | ||
578 | + $.support.transition && this.$element.hasClass('collapse') ? | ||
579 | + this.$element.one($.support.transition.end, complete) : | ||
580 | + complete() | ||
581 | + } | ||
582 | + | ||
583 | + , toggle: function () { | ||
584 | + this[this.$element.hasClass('in') ? 'hide' : 'show']() | ||
585 | + } | ||
586 | + | ||
587 | + } | ||
588 | + | ||
589 | + | ||
590 | + /* COLLAPSE PLUGIN DEFINITION | ||
591 | + * ========================== */ | ||
592 | + | ||
593 | + var old = $.fn.collapse | ||
594 | + | ||
595 | + $.fn.collapse = function (option) { | ||
596 | + return this.each(function () { | ||
597 | + var $this = $(this) | ||
598 | + , data = $this.data('collapse') | ||
599 | + , options = $.extend({}, $.fn.collapse.defaults, $this.data(), typeof option == 'object' && option) | ||
600 | + if (!data) $this.data('collapse', (data = new Collapse(this, options))) | ||
601 | + if (typeof option == 'string') data[option]() | ||
602 | + }) | ||
603 | + } | ||
604 | + | ||
605 | + $.fn.collapse.defaults = { | ||
606 | + toggle: true | ||
607 | + } | ||
608 | + | ||
609 | + $.fn.collapse.Constructor = Collapse | ||
610 | + | ||
611 | + | ||
612 | + /* COLLAPSE NO CONFLICT | ||
613 | + * ==================== */ | ||
614 | + | ||
615 | + $.fn.collapse.noConflict = function () { | ||
616 | + $.fn.collapse = old | ||
617 | + return this | ||
618 | + } | ||
619 | + | ||
620 | + | ||
621 | + /* COLLAPSE DATA-API | ||
622 | + * ================= */ | ||
623 | + | ||
624 | + $(document).on('click.collapse.data-api', '[data-toggle=collapse]', function (e) { | ||
625 | + var $this = $(this), href | ||
626 | + , target = $this.attr('data-target') | ||
627 | + || e.preventDefault() | ||
628 | + || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 | ||
629 | + , option = $(target).data('collapse') ? 'toggle' : $this.data() | ||
630 | + $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed') | ||
631 | + $(target).collapse(option) | ||
632 | + }) | ||
633 | + | ||
634 | +}(window.jQuery);/* ============================================================ | ||
635 | + * bootstrap-dropdown.js v2.3.2 | ||
636 | + * http://getbootstrap.com/2.3.2/javascript.html#dropdowns | ||
637 | + * ============================================================ | ||
638 | + * Copyright 2013 Twitter, Inc. | ||
639 | + * | ||
640 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
641 | + * you may not use this file except in compliance with the License. | ||
642 | + * You may obtain a copy of the License at | ||
643 | + * | ||
644 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
645 | + * | ||
646 | + * Unless required by applicable law or agreed to in writing, software | ||
647 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
648 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
649 | + * See the License for the specific language governing permissions and | ||
650 | + * limitations under the License. | ||
651 | + * ============================================================ */ | ||
652 | + | ||
653 | + | ||
654 | +!function ($) { | ||
655 | + | ||
656 | + "use strict"; // jshint ;_; | ||
657 | + | ||
658 | + | ||
659 | + /* DROPDOWN CLASS DEFINITION | ||
660 | + * ========================= */ | ||
661 | + | ||
662 | + var toggle = '[data-toggle=dropdown]' | ||
663 | + , Dropdown = function (element) { | ||
664 | + var $el = $(element).on('click.dropdown.data-api', this.toggle) | ||
665 | + $('html').on('click.dropdown.data-api', function () { | ||
666 | + $el.parent().removeClass('open') | ||
667 | + }) | ||
668 | + } | ||
669 | + | ||
670 | + Dropdown.prototype = { | ||
671 | + | ||
672 | + constructor: Dropdown | ||
673 | + | ||
674 | + , toggle: function (e) { | ||
675 | + var $this = $(this) | ||
676 | + , $parent | ||
677 | + , isActive | ||
678 | + | ||
679 | + if ($this.is('.disabled, :disabled')) return | ||
680 | + | ||
681 | + $parent = getParent($this) | ||
682 | + | ||
683 | + isActive = $parent.hasClass('open') | ||
684 | + | ||
685 | + clearMenus() | ||
686 | + | ||
687 | + if (!isActive) { | ||
688 | + if ('ontouchstart' in document.documentElement) { | ||
689 | + // if mobile we we use a backdrop because click events don't delegate | ||
690 | + $('<div class="dropdown-backdrop"/>').insertBefore($(this)).on('click', clearMenus) | ||
691 | + } | ||
692 | + $parent.toggleClass('open') | ||
693 | + } | ||
694 | + | ||
695 | + $this.focus() | ||
696 | + | ||
697 | + return false | ||
698 | + } | ||
699 | + | ||
700 | + , keydown: function (e) { | ||
701 | + var $this | ||
702 | + , $items | ||
703 | + , $active | ||
704 | + , $parent | ||
705 | + , isActive | ||
706 | + , index | ||
707 | + | ||
708 | + if (!/(38|40|27)/.test(e.keyCode)) return | ||
709 | + | ||
710 | + $this = $(this) | ||
711 | + | ||
712 | + e.preventDefault() | ||
713 | + e.stopPropagation() | ||
714 | + | ||
715 | + if ($this.is('.disabled, :disabled')) return | ||
716 | + | ||
717 | + $parent = getParent($this) | ||
718 | + | ||
719 | + isActive = $parent.hasClass('open') | ||
720 | + | ||
721 | + if (!isActive || (isActive && e.keyCode == 27)) { | ||
722 | + if (e.which == 27) $parent.find(toggle).focus() | ||
723 | + return $this.click() | ||
724 | + } | ||
725 | + | ||
726 | + $items = $('[role=menu] li:not(.divider):visible a', $parent) | ||
727 | + | ||
728 | + if (!$items.length) return | ||
729 | + | ||
730 | + index = $items.index($items.filter(':focus')) | ||
731 | + | ||
732 | + if (e.keyCode == 38 && index > 0) index-- // up | ||
733 | + if (e.keyCode == 40 && index < $items.length - 1) index++ // down | ||
734 | + if (!~index) index = 0 | ||
735 | + | ||
736 | + $items | ||
737 | + .eq(index) | ||
738 | + .focus() | ||
739 | + } | ||
740 | + | ||
741 | + } | ||
742 | + | ||
743 | + function clearMenus() { | ||
744 | + $('.dropdown-backdrop').remove() | ||
745 | + $(toggle).each(function () { | ||
746 | + getParent($(this)).removeClass('open') | ||
747 | + }) | ||
748 | + } | ||
749 | + | ||
750 | + function getParent($this) { | ||
751 | + var selector = $this.attr('data-target') | ||
752 | + , $parent | ||
753 | + | ||
754 | + if (!selector) { | ||
755 | + selector = $this.attr('href') | ||
756 | + selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 | ||
757 | + } | ||
758 | + | ||
759 | + $parent = selector && $(selector) | ||
760 | + | ||
761 | + if (!$parent || !$parent.length) $parent = $this.parent() | ||
762 | + | ||
763 | + return $parent | ||
764 | + } | ||
765 | + | ||
766 | + | ||
767 | + /* DROPDOWN PLUGIN DEFINITION | ||
768 | + * ========================== */ | ||
769 | + | ||
770 | + var old = $.fn.dropdown | ||
771 | + | ||
772 | + $.fn.dropdown = function (option) { | ||
773 | + return this.each(function () { | ||
774 | + var $this = $(this) | ||
775 | + , data = $this.data('dropdown') | ||
776 | + if (!data) $this.data('dropdown', (data = new Dropdown(this))) | ||
777 | + if (typeof option == 'string') data[option].call($this) | ||
778 | + }) | ||
779 | + } | ||
780 | + | ||
781 | + $.fn.dropdown.Constructor = Dropdown | ||
782 | + | ||
783 | + | ||
784 | + /* DROPDOWN NO CONFLICT | ||
785 | + * ==================== */ | ||
786 | + | ||
787 | + $.fn.dropdown.noConflict = function () { | ||
788 | + $.fn.dropdown = old | ||
789 | + return this | ||
790 | + } | ||
791 | + | ||
792 | + | ||
793 | + /* APPLY TO STANDARD DROPDOWN ELEMENTS | ||
794 | + * =================================== */ | ||
795 | + | ||
796 | + $(document) | ||
797 | + .on('click.dropdown.data-api', clearMenus) | ||
798 | + .on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) | ||
799 | + .on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle) | ||
800 | + .on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown) | ||
801 | + | ||
802 | +}(window.jQuery); | ||
803 | +/* ========================================================= | ||
804 | + * bootstrap-modal.js v2.3.2 | ||
805 | + * http://getbootstrap.com/2.3.2/javascript.html#modals | ||
806 | + * ========================================================= | ||
807 | + * Copyright 2013 Twitter, Inc. | ||
808 | + * | ||
809 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
810 | + * you may not use this file except in compliance with the License. | ||
811 | + * You may obtain a copy of the License at | ||
812 | + * | ||
813 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
814 | + * | ||
815 | + * Unless required by applicable law or agreed to in writing, software | ||
816 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
817 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
818 | + * See the License for the specific language governing permissions and | ||
819 | + * limitations under the License. | ||
820 | + * ========================================================= */ | ||
821 | + | ||
822 | + | ||
823 | +!function ($) { | ||
824 | + | ||
825 | + "use strict"; // jshint ;_; | ||
826 | + | ||
827 | + | ||
828 | + /* MODAL CLASS DEFINITION | ||
829 | + * ====================== */ | ||
830 | + | ||
831 | + var Modal = function (element, options) { | ||
832 | + this.options = options | ||
833 | + this.$element = $(element) | ||
834 | + .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this)) | ||
835 | + this.options.remote && this.$element.find('.modal-body').load(this.options.remote) | ||
836 | + } | ||
837 | + | ||
838 | + Modal.prototype = { | ||
839 | + | ||
840 | + constructor: Modal | ||
841 | + | ||
842 | + , toggle: function () { | ||
843 | + return this[!this.isShown ? 'show' : 'hide']() | ||
844 | + } | ||
845 | + | ||
846 | + , show: function () { | ||
847 | + var that = this | ||
848 | + , e = $.Event('show') | ||
849 | + | ||
850 | + this.$element.trigger(e) | ||
851 | + | ||
852 | + if (this.isShown || e.isDefaultPrevented()) return | ||
853 | + | ||
854 | + this.isShown = true | ||
855 | + | ||
856 | + this.escape() | ||
857 | + | ||
858 | + this.backdrop(function () { | ||
859 | + var transition = $.support.transition && that.$element.hasClass('fade') | ||
860 | + | ||
861 | + if (!that.$element.parent().length) { | ||
862 | + that.$element.appendTo(document.body) //don't move modals dom position | ||
863 | + } | ||
864 | + | ||
865 | + that.$element.show() | ||
866 | + | ||
867 | + if (transition) { | ||
868 | + that.$element[0].offsetWidth // force reflow | ||
869 | + } | ||
870 | + | ||
871 | + that.$element | ||
872 | + .addClass('in') | ||
873 | + .attr('aria-hidden', false) | ||
874 | + | ||
875 | + that.enforceFocus() | ||
876 | + | ||
877 | + transition ? | ||
878 | + that.$element.one($.support.transition.end, function () { that.$element.focus().trigger('shown') }) : | ||
879 | + that.$element.focus().trigger('shown') | ||
880 | + | ||
881 | + }) | ||
882 | + } | ||
883 | + | ||
884 | + , hide: function (e) { | ||
885 | + e && e.preventDefault() | ||
886 | + | ||
887 | + var that = this | ||
888 | + | ||
889 | + e = $.Event('hide') | ||
890 | + | ||
891 | + this.$element.trigger(e) | ||
892 | + | ||
893 | + if (!this.isShown || e.isDefaultPrevented()) return | ||
894 | + | ||
895 | + this.isShown = false | ||
896 | + | ||
897 | + this.escape() | ||
898 | + | ||
899 | + $(document).off('focusin.modal') | ||
900 | + | ||
901 | + this.$element | ||
902 | + .removeClass('in') | ||
903 | + .attr('aria-hidden', true) | ||
904 | + | ||
905 | + $.support.transition && this.$element.hasClass('fade') ? | ||
906 | + this.hideWithTransition() : | ||
907 | + this.hideModal() | ||
908 | + } | ||
909 | + | ||
910 | + , enforceFocus: function () { | ||
911 | + var that = this | ||
912 | + $(document).on('focusin.modal', function (e) { | ||
913 | + if (that.$element[0] !== e.target && !that.$element.has(e.target).length) { | ||
914 | + that.$element.focus() | ||
915 | + } | ||
916 | + }) | ||
917 | + } | ||
918 | + | ||
919 | + , escape: function () { | ||
920 | + var that = this | ||
921 | + if (this.isShown && this.options.keyboard) { | ||
922 | + this.$element.on('keyup.dismiss.modal', function ( e ) { | ||
923 | + e.which == 27 && that.hide() | ||
924 | + }) | ||
925 | + } else if (!this.isShown) { | ||
926 | + this.$element.off('keyup.dismiss.modal') | ||
927 | + } | ||
928 | + } | ||
929 | + | ||
930 | + , hideWithTransition: function () { | ||
931 | + var that = this | ||
932 | + , timeout = setTimeout(function () { | ||
933 | + that.$element.off($.support.transition.end) | ||
934 | + that.hideModal() | ||
935 | + }, 500) | ||
936 | + | ||
937 | + this.$element.one($.support.transition.end, function () { | ||
938 | + clearTimeout(timeout) | ||
939 | + that.hideModal() | ||
940 | + }) | ||
941 | + } | ||
942 | + | ||
943 | + , hideModal: function () { | ||
944 | + var that = this | ||
945 | + this.$element.hide() | ||
946 | + this.backdrop(function () { | ||
947 | + that.removeBackdrop() | ||
948 | + that.$element.trigger('hidden') | ||
949 | + }) | ||
950 | + } | ||
951 | + | ||
952 | + , removeBackdrop: function () { | ||
953 | + this.$backdrop && this.$backdrop.remove() | ||
954 | + this.$backdrop = null | ||
955 | + } | ||
956 | + | ||
957 | + , backdrop: function (callback) { | ||
958 | + var that = this | ||
959 | + , animate = this.$element.hasClass('fade') ? 'fade' : '' | ||
960 | + | ||
961 | + if (this.isShown && this.options.backdrop) { | ||
962 | + var doAnimate = $.support.transition && animate | ||
963 | + | ||
964 | + this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />') | ||
965 | + .appendTo(document.body) | ||
966 | + | ||
967 | + this.$backdrop.click( | ||
968 | + this.options.backdrop == 'static' ? | ||
969 | + $.proxy(this.$element[0].focus, this.$element[0]) | ||
970 | + : $.proxy(this.hide, this) | ||
971 | + ) | ||
972 | + | ||
973 | + if (doAnimate) this.$backdrop[0].offsetWidth // force reflow | ||
974 | + | ||
975 | + this.$backdrop.addClass('in') | ||
976 | + | ||
977 | + if (!callback) return | ||
978 | + | ||
979 | + doAnimate ? | ||
980 | + this.$backdrop.one($.support.transition.end, callback) : | ||
981 | + callback() | ||
982 | + | ||
983 | + } else if (!this.isShown && this.$backdrop) { | ||
984 | + this.$backdrop.removeClass('in') | ||
985 | + | ||
986 | + $.support.transition && this.$element.hasClass('fade')? | ||
987 | + this.$backdrop.one($.support.transition.end, callback) : | ||
988 | + callback() | ||
989 | + | ||
990 | + } else if (callback) { | ||
991 | + callback() | ||
992 | + } | ||
993 | + } | ||
994 | + } | ||
995 | + | ||
996 | + | ||
997 | + /* MODAL PLUGIN DEFINITION | ||
998 | + * ======================= */ | ||
999 | + | ||
1000 | + var old = $.fn.modal | ||
1001 | + | ||
1002 | + $.fn.modal = function (option) { | ||
1003 | + return this.each(function () { | ||
1004 | + var $this = $(this) | ||
1005 | + , data = $this.data('modal') | ||
1006 | + , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option) | ||
1007 | + if (!data) $this.data('modal', (data = new Modal(this, options))) | ||
1008 | + if (typeof option == 'string') data[option]() | ||
1009 | + else if (options.show) data.show() | ||
1010 | + }) | ||
1011 | + } | ||
1012 | + | ||
1013 | + $.fn.modal.defaults = { | ||
1014 | + backdrop: true | ||
1015 | + , keyboard: true | ||
1016 | + , show: true | ||
1017 | + } | ||
1018 | + | ||
1019 | + $.fn.modal.Constructor = Modal | ||
1020 | + | ||
1021 | + | ||
1022 | + /* MODAL NO CONFLICT | ||
1023 | + * ================= */ | ||
1024 | + | ||
1025 | + $.fn.modal.noConflict = function () { | ||
1026 | + $.fn.modal = old | ||
1027 | + return this | ||
1028 | + } | ||
1029 | + | ||
1030 | + | ||
1031 | + /* MODAL DATA-API | ||
1032 | + * ============== */ | ||
1033 | + | ||
1034 | + $(document).on('click.modal.data-api', '[data-toggle="modal"]', function (e) { | ||
1035 | + var $this = $(this) | ||
1036 | + , href = $this.attr('href') | ||
1037 | + , $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7 | ||
1038 | + , option = $target.data('modal') ? 'toggle' : $.extend({ remote:!/#/.test(href) && href }, $target.data(), $this.data()) | ||
1039 | + | ||
1040 | + e.preventDefault() | ||
1041 | + | ||
1042 | + $target | ||
1043 | + .modal(option) | ||
1044 | + .one('hide', function () { | ||
1045 | + $this.focus() | ||
1046 | + }) | ||
1047 | + }) | ||
1048 | + | ||
1049 | +}(window.jQuery); | ||
1050 | +/* =========================================================== | ||
1051 | + * bootstrap-tooltip.js v2.3.2 | ||
1052 | + * http://getbootstrap.com/2.3.2/javascript.html#tooltips | ||
1053 | + * Inspired by the original jQuery.tipsy by Jason Frame | ||
1054 | + * =========================================================== | ||
1055 | + * Copyright 2013 Twitter, Inc. | ||
1056 | + * | ||
1057 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
1058 | + * you may not use this file except in compliance with the License. | ||
1059 | + * You may obtain a copy of the License at | ||
1060 | + * | ||
1061 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
1062 | + * | ||
1063 | + * Unless required by applicable law or agreed to in writing, software | ||
1064 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
1065 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
1066 | + * See the License for the specific language governing permissions and | ||
1067 | + * limitations under the License. | ||
1068 | + * ========================================================== */ | ||
1069 | + | ||
1070 | + | ||
1071 | +!function ($) { | ||
1072 | + | ||
1073 | + "use strict"; // jshint ;_; | ||
1074 | + | ||
1075 | + | ||
1076 | + /* TOOLTIP PUBLIC CLASS DEFINITION | ||
1077 | + * =============================== */ | ||
1078 | + | ||
1079 | + var Tooltip = function (element, options) { | ||
1080 | + this.init('tooltip', element, options) | ||
1081 | + } | ||
1082 | + | ||
1083 | + Tooltip.prototype = { | ||
1084 | + | ||
1085 | + constructor: Tooltip | ||
1086 | + | ||
1087 | + , init: function (type, element, options) { | ||
1088 | + var eventIn | ||
1089 | + , eventOut | ||
1090 | + , triggers | ||
1091 | + , trigger | ||
1092 | + , i | ||
1093 | + | ||
1094 | + this.type = type | ||
1095 | + this.$element = $(element) | ||
1096 | + this.options = this.getOptions(options) | ||
1097 | + this.enabled = true | ||
1098 | + | ||
1099 | + triggers = this.options.trigger.split(' ') | ||
1100 | + | ||
1101 | + for (i = triggers.length; i--;) { | ||
1102 | + trigger = triggers[i] | ||
1103 | + if (trigger == 'click') { | ||
1104 | + this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) | ||
1105 | + } else if (trigger != 'manual') { | ||
1106 | + eventIn = trigger == 'hover' ? 'mouseenter' : 'focus' | ||
1107 | + eventOut = trigger == 'hover' ? 'mouseleave' : 'blur' | ||
1108 | + this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) | ||
1109 | + this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) | ||
1110 | + } | ||
1111 | + } | ||
1112 | + | ||
1113 | + this.options.selector ? | ||
1114 | + (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : | ||
1115 | + this.fixTitle() | ||
1116 | + } | ||
1117 | + | ||
1118 | + , getOptions: function (options) { | ||
1119 | + options = $.extend({}, $.fn[this.type].defaults, this.$element.data(), options) | ||
1120 | + | ||
1121 | + if (options.delay && typeof options.delay == 'number') { | ||
1122 | + options.delay = { | ||
1123 | + show: options.delay | ||
1124 | + , hide: options.delay | ||
1125 | + } | ||
1126 | + } | ||
1127 | + | ||
1128 | + return options | ||
1129 | + } | ||
1130 | + | ||
1131 | + , enter: function (e) { | ||
1132 | + var defaults = $.fn[this.type].defaults | ||
1133 | + , options = {} | ||
1134 | + , self | ||
1135 | + | ||
1136 | + this._options && $.each(this._options, function (key, value) { | ||
1137 | + if (defaults[key] != value) options[key] = value | ||
1138 | + }, this) | ||
1139 | + | ||
1140 | + self = $(e.currentTarget)[this.type](options).data(this.type) | ||
1141 | + | ||
1142 | + if (!self.options.delay || !self.options.delay.show) return self.show() | ||
1143 | + | ||
1144 | + clearTimeout(this.timeout) | ||
1145 | + self.hoverState = 'in' | ||
1146 | + this.timeout = setTimeout(function() { | ||
1147 | + if (self.hoverState == 'in') self.show() | ||
1148 | + }, self.options.delay.show) | ||
1149 | + } | ||
1150 | + | ||
1151 | + , leave: function (e) { | ||
1152 | + var self = $(e.currentTarget)[this.type](this._options).data(this.type) | ||
1153 | + | ||
1154 | + if (this.timeout) clearTimeout(this.timeout) | ||
1155 | + if (!self.options.delay || !self.options.delay.hide) return self.hide() | ||
1156 | + | ||
1157 | + self.hoverState = 'out' | ||
1158 | + this.timeout = setTimeout(function() { | ||
1159 | + if (self.hoverState == 'out') self.hide() | ||
1160 | + }, self.options.delay.hide) | ||
1161 | + } | ||
1162 | + | ||
1163 | + , show: function () { | ||
1164 | + var $tip | ||
1165 | + , pos | ||
1166 | + , actualWidth | ||
1167 | + , actualHeight | ||
1168 | + , placement | ||
1169 | + , tp | ||
1170 | + , e = $.Event('show') | ||
1171 | + | ||
1172 | + if (this.hasContent() && this.enabled) { | ||
1173 | + this.$element.trigger(e) | ||
1174 | + if (e.isDefaultPrevented()) return | ||
1175 | + $tip = this.tip() | ||
1176 | + this.setContent() | ||
1177 | + | ||
1178 | + if (this.options.animation) { | ||
1179 | + $tip.addClass('fade') | ||
1180 | + } | ||
1181 | + | ||
1182 | + placement = typeof this.options.placement == 'function' ? | ||
1183 | + this.options.placement.call(this, $tip[0], this.$element[0]) : | ||
1184 | + this.options.placement | ||
1185 | + | ||
1186 | + $tip | ||
1187 | + .detach() | ||
1188 | + .css({ top: 0, left: 0, display: 'block' }) | ||
1189 | + | ||
1190 | + this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) | ||
1191 | + | ||
1192 | + pos = this.getPosition() | ||
1193 | + | ||
1194 | + actualWidth = $tip[0].offsetWidth | ||
1195 | + actualHeight = $tip[0].offsetHeight | ||
1196 | + | ||
1197 | + switch (placement) { | ||
1198 | + case 'bottom': | ||
1199 | + tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2} | ||
1200 | + break | ||
1201 | + case 'top': | ||
1202 | + tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2} | ||
1203 | + break | ||
1204 | + case 'left': | ||
1205 | + tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth} | ||
1206 | + break | ||
1207 | + case 'right': | ||
1208 | + tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width} | ||
1209 | + break | ||
1210 | + } | ||
1211 | + | ||
1212 | + this.applyPlacement(tp, placement) | ||
1213 | + this.$element.trigger('shown') | ||
1214 | + } | ||
1215 | + } | ||
1216 | + | ||
1217 | + , applyPlacement: function(offset, placement){ | ||
1218 | + var $tip = this.tip() | ||
1219 | + , width = $tip[0].offsetWidth | ||
1220 | + , height = $tip[0].offsetHeight | ||
1221 | + , actualWidth | ||
1222 | + , actualHeight | ||
1223 | + , delta | ||
1224 | + , replace | ||
1225 | + | ||
1226 | + $tip | ||
1227 | + .offset(offset) | ||
1228 | + .addClass(placement) | ||
1229 | + .addClass('in') | ||
1230 | + | ||
1231 | + actualWidth = $tip[0].offsetWidth | ||
1232 | + actualHeight = $tip[0].offsetHeight | ||
1233 | + | ||
1234 | + if (placement == 'top' && actualHeight != height) { | ||
1235 | + offset.top = offset.top + height - actualHeight | ||
1236 | + replace = true | ||
1237 | + } | ||
1238 | + | ||
1239 | + if (placement == 'bottom' || placement == 'top') { | ||
1240 | + delta = 0 | ||
1241 | + | ||
1242 | + if (offset.left < 0){ | ||
1243 | + delta = offset.left * -2 | ||
1244 | + offset.left = 0 | ||
1245 | + $tip.offset(offset) | ||
1246 | + actualWidth = $tip[0].offsetWidth | ||
1247 | + actualHeight = $tip[0].offsetHeight | ||
1248 | + } | ||
1249 | + | ||
1250 | + this.replaceArrow(delta - width + actualWidth, actualWidth, 'left') | ||
1251 | + } else { | ||
1252 | + this.replaceArrow(actualHeight - height, actualHeight, 'top') | ||
1253 | + } | ||
1254 | + | ||
1255 | + if (replace) $tip.offset(offset) | ||
1256 | + } | ||
1257 | + | ||
1258 | + , replaceArrow: function(delta, dimension, position){ | ||
1259 | + this | ||
1260 | + .arrow() | ||
1261 | + .css(position, delta ? (50 * (1 - delta / dimension) + "%") : '') | ||
1262 | + } | ||
1263 | + | ||
1264 | + , setContent: function () { | ||
1265 | + var $tip = this.tip() | ||
1266 | + , title = this.getTitle() | ||
1267 | + | ||
1268 | + $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) | ||
1269 | + $tip.removeClass('fade in top bottom left right') | ||
1270 | + } | ||
1271 | + | ||
1272 | + , hide: function () { | ||
1273 | + var that = this | ||
1274 | + , $tip = this.tip() | ||
1275 | + , e = $.Event('hide') | ||
1276 | + | ||
1277 | + this.$element.trigger(e) | ||
1278 | + if (e.isDefaultPrevented()) return | ||
1279 | + | ||
1280 | + $tip.removeClass('in') | ||
1281 | + | ||
1282 | + function removeWithAnimation() { | ||
1283 | + var timeout = setTimeout(function () { | ||
1284 | + $tip.off($.support.transition.end).detach() | ||
1285 | + }, 500) | ||
1286 | + | ||
1287 | + $tip.one($.support.transition.end, function () { | ||
1288 | + clearTimeout(timeout) | ||
1289 | + $tip.detach() | ||
1290 | + }) | ||
1291 | + } | ||
1292 | + | ||
1293 | + $.support.transition && this.$tip.hasClass('fade') ? | ||
1294 | + removeWithAnimation() : | ||
1295 | + $tip.detach() | ||
1296 | + | ||
1297 | + this.$element.trigger('hidden') | ||
1298 | + | ||
1299 | + return this | ||
1300 | + } | ||
1301 | + | ||
1302 | + , fixTitle: function () { | ||
1303 | + var $e = this.$element | ||
1304 | + if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') { | ||
1305 | + $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') | ||
1306 | + } | ||
1307 | + } | ||
1308 | + | ||
1309 | + , hasContent: function () { | ||
1310 | + return this.getTitle() | ||
1311 | + } | ||
1312 | + | ||
1313 | + , getPosition: function () { | ||
1314 | + var el = this.$element[0] | ||
1315 | + return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : { | ||
1316 | + width: el.offsetWidth | ||
1317 | + , height: el.offsetHeight | ||
1318 | + }, this.$element.offset()) | ||
1319 | + } | ||
1320 | + | ||
1321 | + , getTitle: function () { | ||
1322 | + var title | ||
1323 | + , $e = this.$element | ||
1324 | + , o = this.options | ||
1325 | + | ||
1326 | + title = $e.attr('data-original-title') | ||
1327 | + || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) | ||
1328 | + | ||
1329 | + return title | ||
1330 | + } | ||
1331 | + | ||
1332 | + , tip: function () { | ||
1333 | + return this.$tip = this.$tip || $(this.options.template) | ||
1334 | + } | ||
1335 | + | ||
1336 | + , arrow: function(){ | ||
1337 | + return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow") | ||
1338 | + } | ||
1339 | + | ||
1340 | + , validate: function () { | ||
1341 | + if (!this.$element[0].parentNode) { | ||
1342 | + this.hide() | ||
1343 | + this.$element = null | ||
1344 | + this.options = null | ||
1345 | + } | ||
1346 | + } | ||
1347 | + | ||
1348 | + , enable: function () { | ||
1349 | + this.enabled = true | ||
1350 | + } | ||
1351 | + | ||
1352 | + , disable: function () { | ||
1353 | + this.enabled = false | ||
1354 | + } | ||
1355 | + | ||
1356 | + , toggleEnabled: function () { | ||
1357 | + this.enabled = !this.enabled | ||
1358 | + } | ||
1359 | + | ||
1360 | + , toggle: function (e) { | ||
1361 | + var self = e ? $(e.currentTarget)[this.type](this._options).data(this.type) : this | ||
1362 | + self.tip().hasClass('in') ? self.hide() : self.show() | ||
1363 | + } | ||
1364 | + | ||
1365 | + , destroy: function () { | ||
1366 | + this.hide().$element.off('.' + this.type).removeData(this.type) | ||
1367 | + } | ||
1368 | + | ||
1369 | + } | ||
1370 | + | ||
1371 | + | ||
1372 | + /* TOOLTIP PLUGIN DEFINITION | ||
1373 | + * ========================= */ | ||
1374 | + | ||
1375 | + var old = $.fn.tooltip | ||
1376 | + | ||
1377 | + $.fn.tooltip = function ( option ) { | ||
1378 | + return this.each(function () { | ||
1379 | + var $this = $(this) | ||
1380 | + , data = $this.data('tooltip') | ||
1381 | + , options = typeof option == 'object' && option | ||
1382 | + if (!data) $this.data('tooltip', (data = new Tooltip(this, options))) | ||
1383 | + if (typeof option == 'string') data[option]() | ||
1384 | + }) | ||
1385 | + } | ||
1386 | + | ||
1387 | + $.fn.tooltip.Constructor = Tooltip | ||
1388 | + | ||
1389 | + $.fn.tooltip.defaults = { | ||
1390 | + animation: true | ||
1391 | + , placement: 'top' | ||
1392 | + , selector: false | ||
1393 | + , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' | ||
1394 | + , trigger: 'hover focus' | ||
1395 | + , title: '' | ||
1396 | + , delay: 0 | ||
1397 | + , html: false | ||
1398 | + , container: false | ||
1399 | + } | ||
1400 | + | ||
1401 | + | ||
1402 | + /* TOOLTIP NO CONFLICT | ||
1403 | + * =================== */ | ||
1404 | + | ||
1405 | + $.fn.tooltip.noConflict = function () { | ||
1406 | + $.fn.tooltip = old | ||
1407 | + return this | ||
1408 | + } | ||
1409 | + | ||
1410 | +}(window.jQuery); | ||
1411 | +/* =========================================================== | ||
1412 | + * bootstrap-popover.js v2.3.2 | ||
1413 | + * http://getbootstrap.com/2.3.2/javascript.html#popovers | ||
1414 | + * =========================================================== | ||
1415 | + * Copyright 2013 Twitter, Inc. | ||
1416 | + * | ||
1417 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
1418 | + * you may not use this file except in compliance with the License. | ||
1419 | + * You may obtain a copy of the License at | ||
1420 | + * | ||
1421 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
1422 | + * | ||
1423 | + * Unless required by applicable law or agreed to in writing, software | ||
1424 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
1425 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
1426 | + * See the License for the specific language governing permissions and | ||
1427 | + * limitations under the License. | ||
1428 | + * =========================================================== */ | ||
1429 | + | ||
1430 | + | ||
1431 | +!function ($) { | ||
1432 | + | ||
1433 | + "use strict"; // jshint ;_; | ||
1434 | + | ||
1435 | + | ||
1436 | + /* POPOVER PUBLIC CLASS DEFINITION | ||
1437 | + * =============================== */ | ||
1438 | + | ||
1439 | + var Popover = function (element, options) { | ||
1440 | + this.init('popover', element, options) | ||
1441 | + } | ||
1442 | + | ||
1443 | + | ||
1444 | + /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js | ||
1445 | + ========================================== */ | ||
1446 | + | ||
1447 | + Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, { | ||
1448 | + | ||
1449 | + constructor: Popover | ||
1450 | + | ||
1451 | + , setContent: function () { | ||
1452 | + var $tip = this.tip() | ||
1453 | + , title = this.getTitle() | ||
1454 | + , content = this.getContent() | ||
1455 | + | ||
1456 | + $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) | ||
1457 | + $tip.find('.popover-content')[this.options.html ? 'html' : 'text'](content) | ||
1458 | + | ||
1459 | + $tip.removeClass('fade top bottom left right in') | ||
1460 | + } | ||
1461 | + | ||
1462 | + , hasContent: function () { | ||
1463 | + return this.getTitle() || this.getContent() | ||
1464 | + } | ||
1465 | + | ||
1466 | + , getContent: function () { | ||
1467 | + var content | ||
1468 | + , $e = this.$element | ||
1469 | + , o = this.options | ||
1470 | + | ||
1471 | + content = (typeof o.content == 'function' ? o.content.call($e[0]) : o.content) | ||
1472 | + || $e.attr('data-content') | ||
1473 | + | ||
1474 | + return content | ||
1475 | + } | ||
1476 | + | ||
1477 | + , tip: function () { | ||
1478 | + if (!this.$tip) { | ||
1479 | + this.$tip = $(this.options.template) | ||
1480 | + } | ||
1481 | + return this.$tip | ||
1482 | + } | ||
1483 | + | ||
1484 | + , destroy: function () { | ||
1485 | + this.hide().$element.off('.' + this.type).removeData(this.type) | ||
1486 | + } | ||
1487 | + | ||
1488 | + }) | ||
1489 | + | ||
1490 | + | ||
1491 | + /* POPOVER PLUGIN DEFINITION | ||
1492 | + * ======================= */ | ||
1493 | + | ||
1494 | + var old = $.fn.popover | ||
1495 | + | ||
1496 | + $.fn.popover = function (option) { | ||
1497 | + return this.each(function () { | ||
1498 | + var $this = $(this) | ||
1499 | + , data = $this.data('popover') | ||
1500 | + , options = typeof option == 'object' && option | ||
1501 | + if (!data) $this.data('popover', (data = new Popover(this, options))) | ||
1502 | + if (typeof option == 'string') data[option]() | ||
1503 | + }) | ||
1504 | + } | ||
1505 | + | ||
1506 | + $.fn.popover.Constructor = Popover | ||
1507 | + | ||
1508 | + $.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, { | ||
1509 | + placement: 'right' | ||
1510 | + , trigger: 'click' | ||
1511 | + , content: '' | ||
1512 | + , template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>' | ||
1513 | + }) | ||
1514 | + | ||
1515 | + | ||
1516 | + /* POPOVER NO CONFLICT | ||
1517 | + * =================== */ | ||
1518 | + | ||
1519 | + $.fn.popover.noConflict = function () { | ||
1520 | + $.fn.popover = old | ||
1521 | + return this | ||
1522 | + } | ||
1523 | + | ||
1524 | +}(window.jQuery); | ||
1525 | +/* ============================================================= | ||
1526 | + * bootstrap-scrollspy.js v2.3.2 | ||
1527 | + * http://getbootstrap.com/2.3.2/javascript.html#scrollspy | ||
1528 | + * ============================================================= | ||
1529 | + * Copyright 2013 Twitter, Inc. | ||
1530 | + * | ||
1531 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
1532 | + * you may not use this file except in compliance with the License. | ||
1533 | + * You may obtain a copy of the License at | ||
1534 | + * | ||
1535 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
1536 | + * | ||
1537 | + * Unless required by applicable law or agreed to in writing, software | ||
1538 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
1539 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
1540 | + * See the License for the specific language governing permissions and | ||
1541 | + * limitations under the License. | ||
1542 | + * ============================================================== */ | ||
1543 | + | ||
1544 | + | ||
1545 | +!function ($) { | ||
1546 | + | ||
1547 | + "use strict"; // jshint ;_; | ||
1548 | + | ||
1549 | + | ||
1550 | + /* SCROLLSPY CLASS DEFINITION | ||
1551 | + * ========================== */ | ||
1552 | + | ||
1553 | + function ScrollSpy(element, options) { | ||
1554 | + var process = $.proxy(this.process, this) | ||
1555 | + , $element = $(element).is('body') ? $(window) : $(element) | ||
1556 | + , href | ||
1557 | + this.options = $.extend({}, $.fn.scrollspy.defaults, options) | ||
1558 | + this.$scrollElement = $element.on('scroll.scroll-spy.data-api', process) | ||
1559 | + this.selector = (this.options.target | ||
1560 | + || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 | ||
1561 | + || '') + ' .nav li > a' | ||
1562 | + this.$body = $('body') | ||
1563 | + this.refresh() | ||
1564 | + this.process() | ||
1565 | + } | ||
1566 | + | ||
1567 | + ScrollSpy.prototype = { | ||
1568 | + | ||
1569 | + constructor: ScrollSpy | ||
1570 | + | ||
1571 | + , refresh: function () { | ||
1572 | + var self = this | ||
1573 | + , $targets | ||
1574 | + | ||
1575 | + this.offsets = $([]) | ||
1576 | + this.targets = $([]) | ||
1577 | + | ||
1578 | + $targets = this.$body | ||
1579 | + .find(this.selector) | ||
1580 | + .map(function () { | ||
1581 | + var $el = $(this) | ||
1582 | + , href = $el.data('target') || $el.attr('href') | ||
1583 | + , $href = /^#\w/.test(href) && $(href) | ||
1584 | + return ( $href | ||
1585 | + && $href.length | ||
1586 | + && [[ $href.position().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]] ) || null | ||
1587 | + }) | ||
1588 | + .sort(function (a, b) { return a[0] - b[0] }) | ||
1589 | + .each(function () { | ||
1590 | + self.offsets.push(this[0]) | ||
1591 | + self.targets.push(this[1]) | ||
1592 | + }) | ||
1593 | + } | ||
1594 | + | ||
1595 | + , process: function () { | ||
1596 | + var scrollTop = this.$scrollElement.scrollTop() + this.options.offset | ||
1597 | + , scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight | ||
1598 | + , maxScroll = scrollHeight - this.$scrollElement.height() | ||
1599 | + , offsets = this.offsets | ||
1600 | + , targets = this.targets | ||
1601 | + , activeTarget = this.activeTarget | ||
1602 | + , i | ||
1603 | + | ||
1604 | + if (scrollTop >= maxScroll) { | ||
1605 | + return activeTarget != (i = targets.last()[0]) | ||
1606 | + && this.activate ( i ) | ||
1607 | + } | ||
1608 | + | ||
1609 | + for (i = offsets.length; i--;) { | ||
1610 | + activeTarget != targets[i] | ||
1611 | + && scrollTop >= offsets[i] | ||
1612 | + && (!offsets[i + 1] || scrollTop <= offsets[i + 1]) | ||
1613 | + && this.activate( targets[i] ) | ||
1614 | + } | ||
1615 | + } | ||
1616 | + | ||
1617 | + , activate: function (target) { | ||
1618 | + var active | ||
1619 | + , selector | ||
1620 | + | ||
1621 | + this.activeTarget = target | ||
1622 | + | ||
1623 | + $(this.selector) | ||
1624 | + .parent('.active') | ||
1625 | + .removeClass('active') | ||
1626 | + | ||
1627 | + selector = this.selector | ||
1628 | + + '[data-target="' + target + '"],' | ||
1629 | + + this.selector + '[href="' + target + '"]' | ||
1630 | + | ||
1631 | + active = $(selector) | ||
1632 | + .parent('li') | ||
1633 | + .addClass('active') | ||
1634 | + | ||
1635 | + if (active.parent('.dropdown-menu').length) { | ||
1636 | + active = active.closest('li.dropdown').addClass('active') | ||
1637 | + } | ||
1638 | + | ||
1639 | + active.trigger('activate') | ||
1640 | + } | ||
1641 | + | ||
1642 | + } | ||
1643 | + | ||
1644 | + | ||
1645 | + /* SCROLLSPY PLUGIN DEFINITION | ||
1646 | + * =========================== */ | ||
1647 | + | ||
1648 | + var old = $.fn.scrollspy | ||
1649 | + | ||
1650 | + $.fn.scrollspy = function (option) { | ||
1651 | + return this.each(function () { | ||
1652 | + var $this = $(this) | ||
1653 | + , data = $this.data('scrollspy') | ||
1654 | + , options = typeof option == 'object' && option | ||
1655 | + if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options))) | ||
1656 | + if (typeof option == 'string') data[option]() | ||
1657 | + }) | ||
1658 | + } | ||
1659 | + | ||
1660 | + $.fn.scrollspy.Constructor = ScrollSpy | ||
1661 | + | ||
1662 | + $.fn.scrollspy.defaults = { | ||
1663 | + offset: 10 | ||
1664 | + } | ||
1665 | + | ||
1666 | + | ||
1667 | + /* SCROLLSPY NO CONFLICT | ||
1668 | + * ===================== */ | ||
1669 | + | ||
1670 | + $.fn.scrollspy.noConflict = function () { | ||
1671 | + $.fn.scrollspy = old | ||
1672 | + return this | ||
1673 | + } | ||
1674 | + | ||
1675 | + | ||
1676 | + /* SCROLLSPY DATA-API | ||
1677 | + * ================== */ | ||
1678 | + | ||
1679 | + $(window).on('load', function () { | ||
1680 | + $('[data-spy="scroll"]').each(function () { | ||
1681 | + var $spy = $(this) | ||
1682 | + $spy.scrollspy($spy.data()) | ||
1683 | + }) | ||
1684 | + }) | ||
1685 | + | ||
1686 | +}(window.jQuery);/* ======================================================== | ||
1687 | + * bootstrap-tab.js v2.3.2 | ||
1688 | + * http://getbootstrap.com/2.3.2/javascript.html#tabs | ||
1689 | + * ======================================================== | ||
1690 | + * Copyright 2013 Twitter, Inc. | ||
1691 | + * | ||
1692 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
1693 | + * you may not use this file except in compliance with the License. | ||
1694 | + * You may obtain a copy of the License at | ||
1695 | + * | ||
1696 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
1697 | + * | ||
1698 | + * Unless required by applicable law or agreed to in writing, software | ||
1699 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
1700 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
1701 | + * See the License for the specific language governing permissions and | ||
1702 | + * limitations under the License. | ||
1703 | + * ======================================================== */ | ||
1704 | + | ||
1705 | + | ||
1706 | +!function ($) { | ||
1707 | + | ||
1708 | + "use strict"; // jshint ;_; | ||
1709 | + | ||
1710 | + | ||
1711 | + /* TAB CLASS DEFINITION | ||
1712 | + * ==================== */ | ||
1713 | + | ||
1714 | + var Tab = function (element) { | ||
1715 | + this.element = $(element) | ||
1716 | + } | ||
1717 | + | ||
1718 | + Tab.prototype = { | ||
1719 | + | ||
1720 | + constructor: Tab | ||
1721 | + | ||
1722 | + , show: function () { | ||
1723 | + var $this = this.element | ||
1724 | + , $ul = $this.closest('ul:not(.dropdown-menu)') | ||
1725 | + , selector = $this.attr('data-target') | ||
1726 | + , previous | ||
1727 | + , $target | ||
1728 | + , e | ||
1729 | + | ||
1730 | + if (!selector) { | ||
1731 | + selector = $this.attr('href') | ||
1732 | + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 | ||
1733 | + } | ||
1734 | + | ||
1735 | + if ( $this.parent('li').hasClass('active') ) return | ||
1736 | + | ||
1737 | + previous = $ul.find('.active:last a')[0] | ||
1738 | + | ||
1739 | + e = $.Event('show', { | ||
1740 | + relatedTarget: previous | ||
1741 | + }) | ||
1742 | + | ||
1743 | + $this.trigger(e) | ||
1744 | + | ||
1745 | + if (e.isDefaultPrevented()) return | ||
1746 | + | ||
1747 | + $target = $(selector) | ||
1748 | + | ||
1749 | + this.activate($this.parent('li'), $ul) | ||
1750 | + this.activate($target, $target.parent(), function () { | ||
1751 | + $this.trigger({ | ||
1752 | + type: 'shown' | ||
1753 | + , relatedTarget: previous | ||
1754 | + }) | ||
1755 | + }) | ||
1756 | + } | ||
1757 | + | ||
1758 | + , activate: function ( element, container, callback) { | ||
1759 | + var $active = container.find('> .active') | ||
1760 | + , transition = callback | ||
1761 | + && $.support.transition | ||
1762 | + && $active.hasClass('fade') | ||
1763 | + | ||
1764 | + function next() { | ||
1765 | + $active | ||
1766 | + .removeClass('active') | ||
1767 | + .find('> .dropdown-menu > .active') | ||
1768 | + .removeClass('active') | ||
1769 | + | ||
1770 | + element.addClass('active') | ||
1771 | + | ||
1772 | + if (transition) { | ||
1773 | + element[0].offsetWidth // reflow for transition | ||
1774 | + element.addClass('in') | ||
1775 | + } else { | ||
1776 | + element.removeClass('fade') | ||
1777 | + } | ||
1778 | + | ||
1779 | + if ( element.parent('.dropdown-menu') ) { | ||
1780 | + element.closest('li.dropdown').addClass('active') | ||
1781 | + } | ||
1782 | + | ||
1783 | + callback && callback() | ||
1784 | + } | ||
1785 | + | ||
1786 | + transition ? | ||
1787 | + $active.one($.support.transition.end, next) : | ||
1788 | + next() | ||
1789 | + | ||
1790 | + $active.removeClass('in') | ||
1791 | + } | ||
1792 | + } | ||
1793 | + | ||
1794 | + | ||
1795 | + /* TAB PLUGIN DEFINITION | ||
1796 | + * ===================== */ | ||
1797 | + | ||
1798 | + var old = $.fn.tab | ||
1799 | + | ||
1800 | + $.fn.tab = function ( option ) { | ||
1801 | + return this.each(function () { | ||
1802 | + var $this = $(this) | ||
1803 | + , data = $this.data('tab') | ||
1804 | + if (!data) $this.data('tab', (data = new Tab(this))) | ||
1805 | + if (typeof option == 'string') data[option]() | ||
1806 | + }) | ||
1807 | + } | ||
1808 | + | ||
1809 | + $.fn.tab.Constructor = Tab | ||
1810 | + | ||
1811 | + | ||
1812 | + /* TAB NO CONFLICT | ||
1813 | + * =============== */ | ||
1814 | + | ||
1815 | + $.fn.tab.noConflict = function () { | ||
1816 | + $.fn.tab = old | ||
1817 | + return this | ||
1818 | + } | ||
1819 | + | ||
1820 | + | ||
1821 | + /* TAB DATA-API | ||
1822 | + * ============ */ | ||
1823 | + | ||
1824 | + $(document).on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) { | ||
1825 | + e.preventDefault() | ||
1826 | + $(this).tab('show') | ||
1827 | + }) | ||
1828 | + | ||
1829 | +}(window.jQuery);/* ============================================================= | ||
1830 | + * bootstrap-typeahead.js v2.3.2 | ||
1831 | + * http://getbootstrap.com/2.3.2/javascript.html#typeahead | ||
1832 | + * ============================================================= | ||
1833 | + * Copyright 2013 Twitter, Inc. | ||
1834 | + * | ||
1835 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
1836 | + * you may not use this file except in compliance with the License. | ||
1837 | + * You may obtain a copy of the License at | ||
1838 | + * | ||
1839 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
1840 | + * | ||
1841 | + * Unless required by applicable law or agreed to in writing, software | ||
1842 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
1843 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
1844 | + * See the License for the specific language governing permissions and | ||
1845 | + * limitations under the License. | ||
1846 | + * ============================================================ */ | ||
1847 | + | ||
1848 | + | ||
1849 | +!function($){ | ||
1850 | + | ||
1851 | + "use strict"; // jshint ;_; | ||
1852 | + | ||
1853 | + | ||
1854 | + /* TYPEAHEAD PUBLIC CLASS DEFINITION | ||
1855 | + * ================================= */ | ||
1856 | + | ||
1857 | + var Typeahead = function (element, options) { | ||
1858 | + this.$element = $(element) | ||
1859 | + this.options = $.extend({}, $.fn.typeahead.defaults, options) | ||
1860 | + this.matcher = this.options.matcher || this.matcher | ||
1861 | + this.sorter = this.options.sorter || this.sorter | ||
1862 | + this.highlighter = this.options.highlighter || this.highlighter | ||
1863 | + this.updater = this.options.updater || this.updater | ||
1864 | + this.source = this.options.source | ||
1865 | + this.$menu = $(this.options.menu) | ||
1866 | + this.shown = false | ||
1867 | + this.listen() | ||
1868 | + } | ||
1869 | + | ||
1870 | + Typeahead.prototype = { | ||
1871 | + | ||
1872 | + constructor: Typeahead | ||
1873 | + | ||
1874 | + , select: function () { | ||
1875 | + var val = this.$menu.find('.active').attr('data-value') | ||
1876 | + this.$element | ||
1877 | + .val(this.updater(val)) | ||
1878 | + .change() | ||
1879 | + return this.hide() | ||
1880 | + } | ||
1881 | + | ||
1882 | + , updater: function (item) { | ||
1883 | + return item | ||
1884 | + } | ||
1885 | + | ||
1886 | + , show: function () { | ||
1887 | + var pos = $.extend({}, this.$element.position(), { | ||
1888 | + height: this.$element[0].offsetHeight | ||
1889 | + }) | ||
1890 | + | ||
1891 | + this.$menu | ||
1892 | + .insertAfter(this.$element) | ||
1893 | + .css({ | ||
1894 | + top: pos.top + pos.height | ||
1895 | + , left: pos.left | ||
1896 | + }) | ||
1897 | + .show() | ||
1898 | + | ||
1899 | + this.shown = true | ||
1900 | + return this | ||
1901 | + } | ||
1902 | + | ||
1903 | + , hide: function () { | ||
1904 | + this.$menu.hide() | ||
1905 | + this.shown = false | ||
1906 | + return this | ||
1907 | + } | ||
1908 | + | ||
1909 | + , lookup: function (event) { | ||
1910 | + var items | ||
1911 | + | ||
1912 | + this.query = this.$element.val() | ||
1913 | + | ||
1914 | + if (!this.query || this.query.length < this.options.minLength) { | ||
1915 | + return this.shown ? this.hide() : this | ||
1916 | + } | ||
1917 | + | ||
1918 | + items = $.isFunction(this.source) ? this.source(this.query, $.proxy(this.process, this)) : this.source | ||
1919 | + | ||
1920 | + return items ? this.process(items) : this | ||
1921 | + } | ||
1922 | + | ||
1923 | + , process: function (items) { | ||
1924 | + var that = this | ||
1925 | + | ||
1926 | + items = $.grep(items, function (item) { | ||
1927 | + return that.matcher(item) | ||
1928 | + }) | ||
1929 | + | ||
1930 | + items = this.sorter(items) | ||
1931 | + | ||
1932 | + if (!items.length) { | ||
1933 | + return this.shown ? this.hide() : this | ||
1934 | + } | ||
1935 | + | ||
1936 | + return this.render(items.slice(0, this.options.items)).show() | ||
1937 | + } | ||
1938 | + | ||
1939 | + , matcher: function (item) { | ||
1940 | + return ~item.toLowerCase().indexOf(this.query.toLowerCase()) | ||
1941 | + } | ||
1942 | + | ||
1943 | + , sorter: function (items) { | ||
1944 | + var beginswith = [] | ||
1945 | + , caseSensitive = [] | ||
1946 | + , caseInsensitive = [] | ||
1947 | + , item | ||
1948 | + | ||
1949 | + while (item = items.shift()) { | ||
1950 | + if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item) | ||
1951 | + else if (~item.indexOf(this.query)) caseSensitive.push(item) | ||
1952 | + else caseInsensitive.push(item) | ||
1953 | + } | ||
1954 | + | ||
1955 | + return beginswith.concat(caseSensitive, caseInsensitive) | ||
1956 | + } | ||
1957 | + | ||
1958 | + , highlighter: function (item) { | ||
1959 | + var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&') | ||
1960 | + return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) { | ||
1961 | + return '<strong>' + match + '</strong>' | ||
1962 | + }) | ||
1963 | + } | ||
1964 | + | ||
1965 | + , render: function (items) { | ||
1966 | + var that = this | ||
1967 | + | ||
1968 | + items = $(items).map(function (i, item) { | ||
1969 | + i = $(that.options.item).attr('data-value', item) | ||
1970 | + i.find('a').html(that.highlighter(item)) | ||
1971 | + return i[0] | ||
1972 | + }) | ||
1973 | + | ||
1974 | + items.first().addClass('active') | ||
1975 | + this.$menu.html(items) | ||
1976 | + return this | ||
1977 | + } | ||
1978 | + | ||
1979 | + , next: function (event) { | ||
1980 | + var active = this.$menu.find('.active').removeClass('active') | ||
1981 | + , next = active.next() | ||
1982 | + | ||
1983 | + if (!next.length) { | ||
1984 | + next = $(this.$menu.find('li')[0]) | ||
1985 | + } | ||
1986 | + | ||
1987 | + next.addClass('active') | ||
1988 | + } | ||
1989 | + | ||
1990 | + , prev: function (event) { | ||
1991 | + var active = this.$menu.find('.active').removeClass('active') | ||
1992 | + , prev = active.prev() | ||
1993 | + | ||
1994 | + if (!prev.length) { | ||
1995 | + prev = this.$menu.find('li').last() | ||
1996 | + } | ||
1997 | + | ||
1998 | + prev.addClass('active') | ||
1999 | + } | ||
2000 | + | ||
2001 | + , listen: function () { | ||
2002 | + this.$element | ||
2003 | + .on('focus', $.proxy(this.focus, this)) | ||
2004 | + .on('blur', $.proxy(this.blur, this)) | ||
2005 | + .on('keypress', $.proxy(this.keypress, this)) | ||
2006 | + .on('keyup', $.proxy(this.keyup, this)) | ||
2007 | + | ||
2008 | + if (this.eventSupported('keydown')) { | ||
2009 | + this.$element.on('keydown', $.proxy(this.keydown, this)) | ||
2010 | + } | ||
2011 | + | ||
2012 | + this.$menu | ||
2013 | + .on('click', $.proxy(this.click, this)) | ||
2014 | + .on('mouseenter', 'li', $.proxy(this.mouseenter, this)) | ||
2015 | + .on('mouseleave', 'li', $.proxy(this.mouseleave, this)) | ||
2016 | + } | ||
2017 | + | ||
2018 | + , eventSupported: function(eventName) { | ||
2019 | + var isSupported = eventName in this.$element | ||
2020 | + if (!isSupported) { | ||
2021 | + this.$element.setAttribute(eventName, 'return;') | ||
2022 | + isSupported = typeof this.$element[eventName] === 'function' | ||
2023 | + } | ||
2024 | + return isSupported | ||
2025 | + } | ||
2026 | + | ||
2027 | + , move: function (e) { | ||
2028 | + if (!this.shown) return | ||
2029 | + | ||
2030 | + switch(e.keyCode) { | ||
2031 | + case 9: // tab | ||
2032 | + case 13: // enter | ||
2033 | + case 27: // escape | ||
2034 | + e.preventDefault() | ||
2035 | + break | ||
2036 | + | ||
2037 | + case 38: // up arrow | ||
2038 | + e.preventDefault() | ||
2039 | + this.prev() | ||
2040 | + break | ||
2041 | + | ||
2042 | + case 40: // down arrow | ||
2043 | + e.preventDefault() | ||
2044 | + this.next() | ||
2045 | + break | ||
2046 | + } | ||
2047 | + | ||
2048 | + e.stopPropagation() | ||
2049 | + } | ||
2050 | + | ||
2051 | + , keydown: function (e) { | ||
2052 | + this.suppressKeyPressRepeat = ~$.inArray(e.keyCode, [40,38,9,13,27]) | ||
2053 | + this.move(e) | ||
2054 | + } | ||
2055 | + | ||
2056 | + , keypress: function (e) { | ||
2057 | + if (this.suppressKeyPressRepeat) return | ||
2058 | + this.move(e) | ||
2059 | + } | ||
2060 | + | ||
2061 | + , keyup: function (e) { | ||
2062 | + switch(e.keyCode) { | ||
2063 | + case 40: // down arrow | ||
2064 | + case 38: // up arrow | ||
2065 | + case 16: // shift | ||
2066 | + case 17: // ctrl | ||
2067 | + case 18: // alt | ||
2068 | + break | ||
2069 | + | ||
2070 | + case 9: // tab | ||
2071 | + case 13: // enter | ||
2072 | + if (!this.shown) return | ||
2073 | + this.select() | ||
2074 | + break | ||
2075 | + | ||
2076 | + case 27: // escape | ||
2077 | + if (!this.shown) return | ||
2078 | + this.hide() | ||
2079 | + break | ||
2080 | + | ||
2081 | + default: | ||
2082 | + this.lookup() | ||
2083 | + } | ||
2084 | + | ||
2085 | + e.stopPropagation() | ||
2086 | + e.preventDefault() | ||
2087 | + } | ||
2088 | + | ||
2089 | + , focus: function (e) { | ||
2090 | + this.focused = true | ||
2091 | + } | ||
2092 | + | ||
2093 | + , blur: function (e) { | ||
2094 | + this.focused = false | ||
2095 | + if (!this.mousedover && this.shown) this.hide() | ||
2096 | + } | ||
2097 | + | ||
2098 | + , click: function (e) { | ||
2099 | + e.stopPropagation() | ||
2100 | + e.preventDefault() | ||
2101 | + this.select() | ||
2102 | + this.$element.focus() | ||
2103 | + } | ||
2104 | + | ||
2105 | + , mouseenter: function (e) { | ||
2106 | + this.mousedover = true | ||
2107 | + this.$menu.find('.active').removeClass('active') | ||
2108 | + $(e.currentTarget).addClass('active') | ||
2109 | + } | ||
2110 | + | ||
2111 | + , mouseleave: function (e) { | ||
2112 | + this.mousedover = false | ||
2113 | + if (!this.focused && this.shown) this.hide() | ||
2114 | + } | ||
2115 | + | ||
2116 | + } | ||
2117 | + | ||
2118 | + | ||
2119 | + /* TYPEAHEAD PLUGIN DEFINITION | ||
2120 | + * =========================== */ | ||
2121 | + | ||
2122 | + var old = $.fn.typeahead | ||
2123 | + | ||
2124 | + $.fn.typeahead = function (option) { | ||
2125 | + return this.each(function () { | ||
2126 | + var $this = $(this) | ||
2127 | + , data = $this.data('typeahead') | ||
2128 | + , options = typeof option == 'object' && option | ||
2129 | + if (!data) $this.data('typeahead', (data = new Typeahead(this, options))) | ||
2130 | + if (typeof option == 'string') data[option]() | ||
2131 | + }) | ||
2132 | + } | ||
2133 | + | ||
2134 | + $.fn.typeahead.defaults = { | ||
2135 | + source: [] | ||
2136 | + , items: 8 | ||
2137 | + , menu: '<ul class="typeahead dropdown-menu"></ul>' | ||
2138 | + , item: '<li><a href="#"></a></li>' | ||
2139 | + , minLength: 1 | ||
2140 | + } | ||
2141 | + | ||
2142 | + $.fn.typeahead.Constructor = Typeahead | ||
2143 | + | ||
2144 | + | ||
2145 | + /* TYPEAHEAD NO CONFLICT | ||
2146 | + * =================== */ | ||
2147 | + | ||
2148 | + $.fn.typeahead.noConflict = function () { | ||
2149 | + $.fn.typeahead = old | ||
2150 | + return this | ||
2151 | + } | ||
2152 | + | ||
2153 | + | ||
2154 | + /* TYPEAHEAD DATA-API | ||
2155 | + * ================== */ | ||
2156 | + | ||
2157 | + $(document).on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) { | ||
2158 | + var $this = $(this) | ||
2159 | + if ($this.data('typeahead')) return | ||
2160 | + $this.typeahead($this.data()) | ||
2161 | + }) | ||
2162 | + | ||
2163 | +}(window.jQuery); | ||
2164 | +/* ========================================================== | ||
2165 | + * bootstrap-affix.js v2.3.2 | ||
2166 | + * http://getbootstrap.com/2.3.2/javascript.html#affix | ||
2167 | + * ========================================================== | ||
2168 | + * Copyright 2013 Twitter, Inc. | ||
2169 | + * | ||
2170 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
2171 | + * you may not use this file except in compliance with the License. | ||
2172 | + * You may obtain a copy of the License at | ||
2173 | + * | ||
2174 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
2175 | + * | ||
2176 | + * Unless required by applicable law or agreed to in writing, software | ||
2177 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
2178 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
2179 | + * See the License for the specific language governing permissions and | ||
2180 | + * limitations under the License. | ||
2181 | + * ========================================================== */ | ||
2182 | + | ||
2183 | + | ||
2184 | +!function ($) { | ||
2185 | + | ||
2186 | + "use strict"; // jshint ;_; | ||
2187 | + | ||
2188 | + | ||
2189 | + /* AFFIX CLASS DEFINITION | ||
2190 | + * ====================== */ | ||
2191 | + | ||
2192 | + var Affix = function (element, options) { | ||
2193 | + this.options = $.extend({}, $.fn.affix.defaults, options) | ||
2194 | + this.$window = $(window) | ||
2195 | + .on('scroll.affix.data-api', $.proxy(this.checkPosition, this)) | ||
2196 | + .on('click.affix.data-api', $.proxy(function () { setTimeout($.proxy(this.checkPosition, this), 1) }, this)) | ||
2197 | + this.$element = $(element) | ||
2198 | + this.checkPosition() | ||
2199 | + } | ||
2200 | + | ||
2201 | + Affix.prototype.checkPosition = function () { | ||
2202 | + if (!this.$element.is(':visible')) return | ||
2203 | + | ||
2204 | + var scrollHeight = $(document).height() | ||
2205 | + , scrollTop = this.$window.scrollTop() | ||
2206 | + , position = this.$element.offset() | ||
2207 | + , offset = this.options.offset | ||
2208 | + , offsetBottom = offset.bottom | ||
2209 | + , offsetTop = offset.top | ||
2210 | + , reset = 'affix affix-top affix-bottom' | ||
2211 | + , affix | ||
2212 | + | ||
2213 | + if (typeof offset != 'object') offsetBottom = offsetTop = offset | ||
2214 | + if (typeof offsetTop == 'function') offsetTop = offset.top() | ||
2215 | + if (typeof offsetBottom == 'function') offsetBottom = offset.bottom() | ||
2216 | + | ||
2217 | + affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ? | ||
2218 | + false : offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? | ||
2219 | + 'bottom' : offsetTop != null && scrollTop <= offsetTop ? | ||
2220 | + 'top' : false | ||
2221 | + | ||
2222 | + if (this.affixed === affix) return | ||
2223 | + | ||
2224 | + this.affixed = affix | ||
2225 | + this.unpin = affix == 'bottom' ? position.top - scrollTop : null | ||
2226 | + | ||
2227 | + this.$element.removeClass(reset).addClass('affix' + (affix ? '-' + affix : '')) | ||
2228 | + } | ||
2229 | + | ||
2230 | + | ||
2231 | + /* AFFIX PLUGIN DEFINITION | ||
2232 | + * ======================= */ | ||
2233 | + | ||
2234 | + var old = $.fn.affix | ||
2235 | + | ||
2236 | + $.fn.affix = function (option) { | ||
2237 | + return this.each(function () { | ||
2238 | + var $this = $(this) | ||
2239 | + , data = $this.data('affix') | ||
2240 | + , options = typeof option == 'object' && option | ||
2241 | + if (!data) $this.data('affix', (data = new Affix(this, options))) | ||
2242 | + if (typeof option == 'string') data[option]() | ||
2243 | + }) | ||
2244 | + } | ||
2245 | + | ||
2246 | + $.fn.affix.Constructor = Affix | ||
2247 | + | ||
2248 | + $.fn.affix.defaults = { | ||
2249 | + offset: 0 | ||
2250 | + } | ||
2251 | + | ||
2252 | + | ||
2253 | + /* AFFIX NO CONFLICT | ||
2254 | + * ================= */ | ||
2255 | + | ||
2256 | + $.fn.affix.noConflict = function () { | ||
2257 | + $.fn.affix = old | ||
2258 | + return this | ||
2259 | + } | ||
2260 | + | ||
2261 | + | ||
2262 | + /* AFFIX DATA-API | ||
2263 | + * ============== */ | ||
2264 | + | ||
2265 | + $(window).on('load', function () { | ||
2266 | + $('[data-spy="affix"]').each(function () { | ||
2267 | + var $spy = $(this) | ||
2268 | + , data = $spy.data() | ||
2269 | + | ||
2270 | + data.offset = data.offset || {} | ||
2271 | + | ||
2272 | + data.offsetBottom && (data.offset.bottom = data.offsetBottom) | ||
2273 | + data.offsetTop && (data.offset.top = data.offsetTop) | ||
2274 | + | ||
2275 | + $spy.affix(data) | ||
2276 | + }) | ||
2277 | + }) | ||
2278 | + | ||
2279 | + | ||
2280 | +}(window.jQuery); | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
server_db/public/js/bootstrap.min.js
0 → 100644
1 | +/*! | ||
2 | +* Bootstrap.js by @fat & @mdo | ||
3 | +* Copyright 2013 Twitter, Inc. | ||
4 | +* http://www.apache.org/licenses/LICENSE-2.0.txt | ||
5 | +*/ | ||
6 | +!function(e){"use strict";e(function(){e.support.transition=function(){var e=function(){var e=document.createElement("bootstrap"),t={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},n;for(n in t)if(e.style[n]!==undefined)return t[n]}();return e&&{end:e}}()})}(window.jQuery),!function(e){"use strict";var t='[data-dismiss="alert"]',n=function(n){e(n).on("click",t,this.close)};n.prototype.close=function(t){function s(){i.trigger("closed").remove()}var n=e(this),r=n.attr("data-target"),i;r||(r=n.attr("href"),r=r&&r.replace(/.*(?=#[^\s]*$)/,"")),i=e(r),t&&t.preventDefault(),i.length||(i=n.hasClass("alert")?n:n.parent()),i.trigger(t=e.Event("close"));if(t.isDefaultPrevented())return;i.removeClass("in"),e.support.transition&&i.hasClass("fade")?i.on(e.support.transition.end,s):s()};var r=e.fn.alert;e.fn.alert=function(t){return this.each(function(){var r=e(this),i=r.data("alert");i||r.data("alert",i=new n(this)),typeof t=="string"&&i[t].call(r)})},e.fn.alert.Constructor=n,e.fn.alert.noConflict=function(){return e.fn.alert=r,this},e(document).on("click.alert.data-api",t,n.prototype.close)}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.button.defaults,n)};t.prototype.setState=function(e){var t="disabled",n=this.$element,r=n.data(),i=n.is("input")?"val":"html";e+="Text",r.resetText||n.data("resetText",n[i]()),n[i](r[e]||this.options[e]),setTimeout(function(){e=="loadingText"?n.addClass(t).attr(t,t):n.removeClass(t).removeAttr(t)},0)},t.prototype.toggle=function(){var e=this.$element.closest('[data-toggle="buttons-radio"]');e&&e.find(".active").removeClass("active"),this.$element.toggleClass("active")};var n=e.fn.button;e.fn.button=function(n){return this.each(function(){var r=e(this),i=r.data("button"),s=typeof n=="object"&&n;i||r.data("button",i=new t(this,s)),n=="toggle"?i.toggle():n&&i.setState(n)})},e.fn.button.defaults={loadingText:"loading..."},e.fn.button.Constructor=t,e.fn.button.noConflict=function(){return e.fn.button=n,this},e(document).on("click.button.data-api","[data-toggle^=button]",function(t){var n=e(t.target);n.hasClass("btn")||(n=n.closest(".btn")),n.button("toggle")})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.$indicators=this.$element.find(".carousel-indicators"),this.options=n,this.options.pause=="hover"&&this.$element.on("mouseenter",e.proxy(this.pause,this)).on("mouseleave",e.proxy(this.cycle,this))};t.prototype={cycle:function(t){return t||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(e.proxy(this.next,this),this.options.interval)),this},getActiveIndex:function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},to:function(t){var n=this.getActiveIndex(),r=this;if(t>this.$items.length-1||t<0)return;return this.sliding?this.$element.one("slid",function(){r.to(t)}):n==t?this.pause().cycle():this.slide(t>n?"next":"prev",e(this.$items[t]))},pause:function(t){return t||(this.paused=!0),this.$element.find(".next, .prev").length&&e.support.transition.end&&(this.$element.trigger(e.support.transition.end),this.cycle(!0)),clearInterval(this.interval),this.interval=null,this},next:function(){if(this.sliding)return;return this.slide("next")},prev:function(){if(this.sliding)return;return this.slide("prev")},slide:function(t,n){var r=this.$element.find(".item.active"),i=n||r[t](),s=this.interval,o=t=="next"?"left":"right",u=t=="next"?"first":"last",a=this,f;this.sliding=!0,s&&this.pause(),i=i.length?i:this.$element.find(".item")[u](),f=e.Event("slide",{relatedTarget:i[0],direction:o});if(i.hasClass("active"))return;this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var t=e(a.$indicators.children()[a.getActiveIndex()]);t&&t.addClass("active")}));if(e.support.transition&&this.$element.hasClass("slide")){this.$element.trigger(f);if(f.isDefaultPrevented())return;i.addClass(t),i[0].offsetWidth,r.addClass(o),i.addClass(o),this.$element.one(e.support.transition.end,function(){i.removeClass([t,o].join(" ")).addClass("active"),r.removeClass(["active",o].join(" ")),a.sliding=!1,setTimeout(function(){a.$element.trigger("slid")},0)})}else{this.$element.trigger(f);if(f.isDefaultPrevented())return;r.removeClass("active"),i.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return s&&this.cycle(),this}};var n=e.fn.carousel;e.fn.carousel=function(n){return this.each(function(){var r=e(this),i=r.data("carousel"),s=e.extend({},e.fn.carousel.defaults,typeof n=="object"&&n),o=typeof n=="string"?n:s.slide;i||r.data("carousel",i=new t(this,s)),typeof n=="number"?i.to(n):o?i[o]():s.interval&&i.pause().cycle()})},e.fn.carousel.defaults={interval:5e3,pause:"hover"},e.fn.carousel.Constructor=t,e.fn.carousel.noConflict=function(){return e.fn.carousel=n,this},e(document).on("click.carousel.data-api","[data-slide], [data-slide-to]",function(t){var n=e(this),r,i=e(n.attr("data-target")||(r=n.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,"")),s=e.extend({},i.data(),n.data()),o;i.carousel(s),(o=n.attr("data-slide-to"))&&i.data("carousel").pause().to(o).cycle(),t.preventDefault()})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.collapse.defaults,n),this.options.parent&&(this.$parent=e(this.options.parent)),this.options.toggle&&this.toggle()};t.prototype={constructor:t,dimension:function(){var e=this.$element.hasClass("width");return e?"width":"height"},show:function(){var t,n,r,i;if(this.transitioning||this.$element.hasClass("in"))return;t=this.dimension(),n=e.camelCase(["scroll",t].join("-")),r=this.$parent&&this.$parent.find("> .accordion-group > .in");if(r&&r.length){i=r.data("collapse");if(i&&i.transitioning)return;r.collapse("hide"),i||r.data("collapse",null)}this.$element[t](0),this.transition("addClass",e.Event("show"),"shown"),e.support.transition&&this.$element[t](this.$element[0][n])},hide:function(){var t;if(this.transitioning||!this.$element.hasClass("in"))return;t=this.dimension(),this.reset(this.$element[t]()),this.transition("removeClass",e.Event("hide"),"hidden"),this.$element[t](0)},reset:function(e){var t=this.dimension();return this.$element.removeClass("collapse")[t](e||"auto")[0].offsetWidth,this.$element[e!==null?"addClass":"removeClass"]("collapse"),this},transition:function(t,n,r){var i=this,s=function(){n.type=="show"&&i.reset(),i.transitioning=0,i.$element.trigger(r)};this.$element.trigger(n);if(n.isDefaultPrevented())return;this.transitioning=1,this.$element[t]("in"),e.support.transition&&this.$element.hasClass("collapse")?this.$element.one(e.support.transition.end,s):s()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}};var n=e.fn.collapse;e.fn.collapse=function(n){return this.each(function(){var r=e(this),i=r.data("collapse"),s=e.extend({},e.fn.collapse.defaults,r.data(),typeof n=="object"&&n);i||r.data("collapse",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.collapse.defaults={toggle:!0},e.fn.collapse.Constructor=t,e.fn.collapse.noConflict=function(){return e.fn.collapse=n,this},e(document).on("click.collapse.data-api","[data-toggle=collapse]",function(t){var n=e(this),r,i=n.attr("data-target")||t.preventDefault()||(r=n.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,""),s=e(i).data("collapse")?"toggle":n.data();n[e(i).hasClass("in")?"addClass":"removeClass"]("collapsed"),e(i).collapse(s)})}(window.jQuery),!function(e){"use strict";function r(){e(".dropdown-backdrop").remove(),e(t).each(function(){i(e(this)).removeClass("open")})}function i(t){var n=t.attr("data-target"),r;n||(n=t.attr("href"),n=n&&/#/.test(n)&&n.replace(/.*(?=#[^\s]*$)/,"")),r=n&&e(n);if(!r||!r.length)r=t.parent();return r}var t="[data-toggle=dropdown]",n=function(t){var n=e(t).on("click.dropdown.data-api",this.toggle);e("html").on("click.dropdown.data-api",function(){n.parent().removeClass("open")})};n.prototype={constructor:n,toggle:function(t){var n=e(this),s,o;if(n.is(".disabled, :disabled"))return;return s=i(n),o=s.hasClass("open"),r(),o||("ontouchstart"in document.documentElement&&e('<div class="dropdown-backdrop"/>').insertBefore(e(this)).on("click",r),s.toggleClass("open")),n.focus(),!1},keydown:function(n){var r,s,o,u,a,f;if(!/(38|40|27)/.test(n.keyCode))return;r=e(this),n.preventDefault(),n.stopPropagation();if(r.is(".disabled, :disabled"))return;u=i(r),a=u.hasClass("open");if(!a||a&&n.keyCode==27)return n.which==27&&u.find(t).focus(),r.click();s=e("[role=menu] li:not(.divider):visible a",u);if(!s.length)return;f=s.index(s.filter(":focus")),n.keyCode==38&&f>0&&f--,n.keyCode==40&&f<s.length-1&&f++,~f||(f=0),s.eq(f).focus()}};var s=e.fn.dropdown;e.fn.dropdown=function(t){return this.each(function(){var r=e(this),i=r.data("dropdown");i||r.data("dropdown",i=new n(this)),typeof t=="string"&&i[t].call(r)})},e.fn.dropdown.Constructor=n,e.fn.dropdown.noConflict=function(){return e.fn.dropdown=s,this},e(document).on("click.dropdown.data-api",r).on("click.dropdown.data-api",".dropdown form",function(e){e.stopPropagation()}).on("click.dropdown.data-api",t,n.prototype.toggle).on("keydown.dropdown.data-api",t+", [role=menu]",n.prototype.keydown)}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.options=n,this.$element=e(t).delegate('[data-dismiss="modal"]',"click.dismiss.modal",e.proxy(this.hide,this)),this.options.remote&&this.$element.find(".modal-body").load(this.options.remote)};t.prototype={constructor:t,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var t=this,n=e.Event("show");this.$element.trigger(n);if(this.isShown||n.isDefaultPrevented())return;this.isShown=!0,this.escape(),this.backdrop(function(){var n=e.support.transition&&t.$element.hasClass("fade");t.$element.parent().length||t.$element.appendTo(document.body),t.$element.show(),n&&t.$element[0].offsetWidth,t.$element.addClass("in").attr("aria-hidden",!1),t.enforceFocus(),n?t.$element.one(e.support.transition.end,function(){t.$element.focus().trigger("shown")}):t.$element.focus().trigger("shown")})},hide:function(t){t&&t.preventDefault();var n=this;t=e.Event("hide"),this.$element.trigger(t);if(!this.isShown||t.isDefaultPrevented())return;this.isShown=!1,this.escape(),e(document).off("focusin.modal"),this.$element.removeClass("in").attr("aria-hidden",!0),e.support.transition&&this.$element.hasClass("fade")?this.hideWithTransition():this.hideModal()},enforceFocus:function(){var t=this;e(document).on("focusin.modal",function(e){t.$element[0]!==e.target&&!t.$element.has(e.target).length&&t.$element.focus()})},escape:function(){var e=this;this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.modal",function(t){t.which==27&&e.hide()}):this.isShown||this.$element.off("keyup.dismiss.modal")},hideWithTransition:function(){var t=this,n=setTimeout(function(){t.$element.off(e.support.transition.end),t.hideModal()},500);this.$element.one(e.support.transition.end,function(){clearTimeout(n),t.hideModal()})},hideModal:function(){var e=this;this.$element.hide(),this.backdrop(function(){e.removeBackdrop(),e.$element.trigger("hidden")})},removeBackdrop:function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},backdrop:function(t){var n=this,r=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var i=e.support.transition&&r;this.$backdrop=e('<div class="modal-backdrop '+r+'" />').appendTo(document.body),this.$backdrop.click(this.options.backdrop=="static"?e.proxy(this.$element[0].focus,this.$element[0]):e.proxy(this.hide,this)),i&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in");if(!t)return;i?this.$backdrop.one(e.support.transition.end,t):t()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),e.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(e.support.transition.end,t):t()):t&&t()}};var n=e.fn.modal;e.fn.modal=function(n){return this.each(function(){var r=e(this),i=r.data("modal"),s=e.extend({},e.fn.modal.defaults,r.data(),typeof n=="object"&&n);i||r.data("modal",i=new t(this,s)),typeof n=="string"?i[n]():s.show&&i.show()})},e.fn.modal.defaults={backdrop:!0,keyboard:!0,show:!0},e.fn.modal.Constructor=t,e.fn.modal.noConflict=function(){return e.fn.modal=n,this},e(document).on("click.modal.data-api",'[data-toggle="modal"]',function(t){var n=e(this),r=n.attr("href"),i=e(n.attr("data-target")||r&&r.replace(/.*(?=#[^\s]+$)/,"")),s=i.data("modal")?"toggle":e.extend({remote:!/#/.test(r)&&r},i.data(),n.data());t.preventDefault(),i.modal(s).one("hide",function(){n.focus()})})}(window.jQuery),!function(e){"use strict";var t=function(e,t){this.init("tooltip",e,t)};t.prototype={constructor:t,init:function(t,n,r){var i,s,o,u,a;this.type=t,this.$element=e(n),this.options=this.getOptions(r),this.enabled=!0,o=this.options.trigger.split(" ");for(a=o.length;a--;)u=o[a],u=="click"?this.$element.on("click."+this.type,this.options.selector,e.proxy(this.toggle,this)):u!="manual"&&(i=u=="hover"?"mouseenter":"focus",s=u=="hover"?"mouseleave":"blur",this.$element.on(i+"."+this.type,this.options.selector,e.proxy(this.enter,this)),this.$element.on(s+"."+this.type,this.options.selector,e.proxy(this.leave,this)));this.options.selector?this._options=e.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(t){return t=e.extend({},e.fn[this.type].defaults,this.$element.data(),t),t.delay&&typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),t},enter:function(t){var n=e.fn[this.type].defaults,r={},i;this._options&&e.each(this._options,function(e,t){n[e]!=t&&(r[e]=t)},this),i=e(t.currentTarget)[this.type](r).data(this.type);if(!i.options.delay||!i.options.delay.show)return i.show();clearTimeout(this.timeout),i.hoverState="in",this.timeout=setTimeout(function(){i.hoverState=="in"&&i.show()},i.options.delay.show)},leave:function(t){var n=e(t.currentTarget)[this.type](this._options).data(this.type);this.timeout&&clearTimeout(this.timeout);if(!n.options.delay||!n.options.delay.hide)return n.hide();n.hoverState="out",this.timeout=setTimeout(function(){n.hoverState=="out"&&n.hide()},n.options.delay.hide)},show:function(){var t,n,r,i,s,o,u=e.Event("show");if(this.hasContent()&&this.enabled){this.$element.trigger(u);if(u.isDefaultPrevented())return;t=this.tip(),this.setContent(),this.options.animation&&t.addClass("fade"),s=typeof this.options.placement=="function"?this.options.placement.call(this,t[0],this.$element[0]):this.options.placement,t.detach().css({top:0,left:0,display:"block"}),this.options.container?t.appendTo(this.options.container):t.insertAfter(this.$element),n=this.getPosition(),r=t[0].offsetWidth,i=t[0].offsetHeight;switch(s){case"bottom":o={top:n.top+n.height,left:n.left+n.width/2-r/2};break;case"top":o={top:n.top-i,left:n.left+n.width/2-r/2};break;case"left":o={top:n.top+n.height/2-i/2,left:n.left-r};break;case"right":o={top:n.top+n.height/2-i/2,left:n.left+n.width}}this.applyPlacement(o,s),this.$element.trigger("shown")}},applyPlacement:function(e,t){var n=this.tip(),r=n[0].offsetWidth,i=n[0].offsetHeight,s,o,u,a;n.offset(e).addClass(t).addClass("in"),s=n[0].offsetWidth,o=n[0].offsetHeight,t=="top"&&o!=i&&(e.top=e.top+i-o,a=!0),t=="bottom"||t=="top"?(u=0,e.left<0&&(u=e.left*-2,e.left=0,n.offset(e),s=n[0].offsetWidth,o=n[0].offsetHeight),this.replaceArrow(u-r+s,s,"left")):this.replaceArrow(o-i,o,"top"),a&&n.offset(e)},replaceArrow:function(e,t,n){this.arrow().css(n,e?50*(1-e/t)+"%":"")},setContent:function(){var e=this.tip(),t=this.getTitle();e.find(".tooltip-inner")[this.options.html?"html":"text"](t),e.removeClass("fade in top bottom left right")},hide:function(){function i(){var t=setTimeout(function(){n.off(e.support.transition.end).detach()},500);n.one(e.support.transition.end,function(){clearTimeout(t),n.detach()})}var t=this,n=this.tip(),r=e.Event("hide");this.$element.trigger(r);if(r.isDefaultPrevented())return;return n.removeClass("in"),e.support.transition&&this.$tip.hasClass("fade")?i():n.detach(),this.$element.trigger("hidden"),this},fixTitle:function(){var e=this.$element;(e.attr("title")||typeof e.attr("data-original-title")!="string")&&e.attr("data-original-title",e.attr("title")||"").attr("title","")},hasContent:function(){return this.getTitle()},getPosition:function(){var t=this.$element[0];return e.extend({},typeof t.getBoundingClientRect=="function"?t.getBoundingClientRect():{width:t.offsetWidth,height:t.offsetHeight},this.$element.offset())},getTitle:function(){var e,t=this.$element,n=this.options;return e=t.attr("data-original-title")||(typeof n.title=="function"?n.title.call(t[0]):n.title),e},tip:function(){return this.$tip=this.$tip||e(this.options.template)},arrow:function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(t){var n=t?e(t.currentTarget)[this.type](this._options).data(this.type):this;n.tip().hasClass("in")?n.hide():n.show()},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}};var n=e.fn.tooltip;e.fn.tooltip=function(n){return this.each(function(){var r=e(this),i=r.data("tooltip"),s=typeof n=="object"&&n;i||r.data("tooltip",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.tooltip.Constructor=t,e.fn.tooltip.defaults={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},e.fn.tooltip.noConflict=function(){return e.fn.tooltip=n,this}}(window.jQuery),!function(e){"use strict";var t=function(e,t){this.init("popover",e,t)};t.prototype=e.extend({},e.fn.tooltip.Constructor.prototype,{constructor:t,setContent:function(){var e=this.tip(),t=this.getTitle(),n=this.getContent();e.find(".popover-title")[this.options.html?"html":"text"](t),e.find(".popover-content")[this.options.html?"html":"text"](n),e.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var e,t=this.$element,n=this.options;return e=(typeof n.content=="function"?n.content.call(t[0]):n.content)||t.attr("data-content"),e},tip:function(){return this.$tip||(this.$tip=e(this.options.template)),this.$tip},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}});var n=e.fn.popover;e.fn.popover=function(n){return this.each(function(){var r=e(this),i=r.data("popover"),s=typeof n=="object"&&n;i||r.data("popover",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.popover.Constructor=t,e.fn.popover.defaults=e.extend({},e.fn.tooltip.defaults,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),e.fn.popover.noConflict=function(){return e.fn.popover=n,this}}(window.jQuery),!function(e){"use strict";function t(t,n){var r=e.proxy(this.process,this),i=e(t).is("body")?e(window):e(t),s;this.options=e.extend({},e.fn.scrollspy.defaults,n),this.$scrollElement=i.on("scroll.scroll-spy.data-api",r),this.selector=(this.options.target||(s=e(t).attr("href"))&&s.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.$body=e("body"),this.refresh(),this.process()}t.prototype={constructor:t,refresh:function(){var t=this,n;this.offsets=e([]),this.targets=e([]),n=this.$body.find(this.selector).map(function(){var n=e(this),r=n.data("target")||n.attr("href"),i=/^#\w/.test(r)&&e(r);return i&&i.length&&[[i.position().top+(!e.isWindow(t.$scrollElement.get(0))&&t.$scrollElement.scrollTop()),r]]||null}).sort(function(e,t){return e[0]-t[0]}).each(function(){t.offsets.push(this[0]),t.targets.push(this[1])})},process:function(){var e=this.$scrollElement.scrollTop()+this.options.offset,t=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,n=t-this.$scrollElement.height(),r=this.offsets,i=this.targets,s=this.activeTarget,o;if(e>=n)return s!=(o=i.last()[0])&&this.activate(o);for(o=r.length;o--;)s!=i[o]&&e>=r[o]&&(!r[o+1]||e<=r[o+1])&&this.activate(i[o])},activate:function(t){var n,r;this.activeTarget=t,e(this.selector).parent(".active").removeClass("active"),r=this.selector+'[data-target="'+t+'"],'+this.selector+'[href="'+t+'"]',n=e(r).parent("li").addClass("active"),n.parent(".dropdown-menu").length&&(n=n.closest("li.dropdown").addClass("active")),n.trigger("activate")}};var n=e.fn.scrollspy;e.fn.scrollspy=function(n){return this.each(function(){var r=e(this),i=r.data("scrollspy"),s=typeof n=="object"&&n;i||r.data("scrollspy",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.scrollspy.Constructor=t,e.fn.scrollspy.defaults={offset:10},e.fn.scrollspy.noConflict=function(){return e.fn.scrollspy=n,this},e(window).on("load",function(){e('[data-spy="scroll"]').each(function(){var t=e(this);t.scrollspy(t.data())})})}(window.jQuery),!function(e){"use strict";var t=function(t){this.element=e(t)};t.prototype={constructor:t,show:function(){var t=this.element,n=t.closest("ul:not(.dropdown-menu)"),r=t.attr("data-target"),i,s,o;r||(r=t.attr("href"),r=r&&r.replace(/.*(?=#[^\s]*$)/,""));if(t.parent("li").hasClass("active"))return;i=n.find(".active:last a")[0],o=e.Event("show",{relatedTarget:i}),t.trigger(o);if(o.isDefaultPrevented())return;s=e(r),this.activate(t.parent("li"),n),this.activate(s,s.parent(),function(){t.trigger({type:"shown",relatedTarget:i})})},activate:function(t,n,r){function o(){i.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),t.addClass("active"),s?(t[0].offsetWidth,t.addClass("in")):t.removeClass("fade"),t.parent(".dropdown-menu")&&t.closest("li.dropdown").addClass("active"),r&&r()}var i=n.find("> .active"),s=r&&e.support.transition&&i.hasClass("fade");s?i.one(e.support.transition.end,o):o(),i.removeClass("in")}};var n=e.fn.tab;e.fn.tab=function(n){return this.each(function(){var r=e(this),i=r.data("tab");i||r.data("tab",i=new t(this)),typeof n=="string"&&i[n]()})},e.fn.tab.Constructor=t,e.fn.tab.noConflict=function(){return e.fn.tab=n,this},e(document).on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(t){t.preventDefault(),e(this).tab("show")})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.typeahead.defaults,n),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.updater=this.options.updater||this.updater,this.source=this.options.source,this.$menu=e(this.options.menu),this.shown=!1,this.listen()};t.prototype={constructor:t,select:function(){var e=this.$menu.find(".active").attr("data-value");return this.$element.val(this.updater(e)).change(),this.hide()},updater:function(e){return e},show:function(){var t=e.extend({},this.$element.position(),{height:this.$element[0].offsetHeight});return this.$menu.insertAfter(this.$element).css({top:t.top+t.height,left:t.left}).show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(t){var n;return this.query=this.$element.val(),!this.query||this.query.length<this.options.minLength?this.shown?this.hide():this:(n=e.isFunction(this.source)?this.source(this.query,e.proxy(this.process,this)):this.source,n?this.process(n):this)},process:function(t){var n=this;return t=e.grep(t,function(e){return n.matcher(e)}),t=this.sorter(t),t.length?this.render(t.slice(0,this.options.items)).show():this.shown?this.hide():this},matcher:function(e){return~e.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(e){var t=[],n=[],r=[],i;while(i=e.shift())i.toLowerCase().indexOf(this.query.toLowerCase())?~i.indexOf(this.query)?n.push(i):r.push(i):t.push(i);return t.concat(n,r)},highlighter:function(e){var t=this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&");return e.replace(new RegExp("("+t+")","ig"),function(e,t){return"<strong>"+t+"</strong>"})},render:function(t){var n=this;return t=e(t).map(function(t,r){return t=e(n.options.item).attr("data-value",r),t.find("a").html(n.highlighter(r)),t[0]}),t.first().addClass("active"),this.$menu.html(t),this},next:function(t){var n=this.$menu.find(".active").removeClass("active"),r=n.next();r.length||(r=e(this.$menu.find("li")[0])),r.addClass("active")},prev:function(e){var t=this.$menu.find(".active").removeClass("active"),n=t.prev();n.length||(n=this.$menu.find("li").last()),n.addClass("active")},listen:function(){this.$element.on("focus",e.proxy(this.focus,this)).on("blur",e.proxy(this.blur,this)).on("keypress",e.proxy(this.keypress,this)).on("keyup",e.proxy(this.keyup,this)),this.eventSupported("keydown")&&this.$element.on("keydown",e.proxy(this.keydown,this)),this.$menu.on("click",e.proxy(this.click,this)).on("mouseenter","li",e.proxy(this.mouseenter,this)).on("mouseleave","li",e.proxy(this.mouseleave,this))},eventSupported:function(e){var t=e in this.$element;return t||(this.$element.setAttribute(e,"return;"),t=typeof this.$element[e]=="function"),t},move:function(e){if(!this.shown)return;switch(e.keyCode){case 9:case 13:case 27:e.preventDefault();break;case 38:e.preventDefault(),this.prev();break;case 40:e.preventDefault(),this.next()}e.stopPropagation()},keydown:function(t){this.suppressKeyPressRepeat=~e.inArray(t.keyCode,[40,38,9,13,27]),this.move(t)},keypress:function(e){if(this.suppressKeyPressRepeat)return;this.move(e)},keyup:function(e){switch(e.keyCode){case 40:case 38:case 16:case 17:case 18:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.lookup()}e.stopPropagation(),e.preventDefault()},focus:function(e){this.focused=!0},blur:function(e){this.focused=!1,!this.mousedover&&this.shown&&this.hide()},click:function(e){e.stopPropagation(),e.preventDefault(),this.select(),this.$element.focus()},mouseenter:function(t){this.mousedover=!0,this.$menu.find(".active").removeClass("active"),e(t.currentTarget).addClass("active")},mouseleave:function(e){this.mousedover=!1,!this.focused&&this.shown&&this.hide()}};var n=e.fn.typeahead;e.fn.typeahead=function(n){return this.each(function(){var r=e(this),i=r.data("typeahead"),s=typeof n=="object"&&n;i||r.data("typeahead",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.typeahead.defaults={source:[],items:8,menu:'<ul class="typeahead dropdown-menu"></ul>',item:'<li><a href="#"></a></li>',minLength:1},e.fn.typeahead.Constructor=t,e.fn.typeahead.noConflict=function(){return e.fn.typeahead=n,this},e(document).on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(t){var n=e(this);if(n.data("typeahead"))return;n.typeahead(n.data())})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.options=e.extend({},e.fn.affix.defaults,n),this.$window=e(window).on("scroll.affix.data-api",e.proxy(this.checkPosition,this)).on("click.affix.data-api",e.proxy(function(){setTimeout(e.proxy(this.checkPosition,this),1)},this)),this.$element=e(t),this.checkPosition()};t.prototype.checkPosition=function(){if(!this.$element.is(":visible"))return;var t=e(document).height(),n=this.$window.scrollTop(),r=this.$element.offset(),i=this.options.offset,s=i.bottom,o=i.top,u="affix affix-top affix-bottom",a;typeof i!="object"&&(s=o=i),typeof o=="function"&&(o=i.top()),typeof s=="function"&&(s=i.bottom()),a=this.unpin!=null&&n+this.unpin<=r.top?!1:s!=null&&r.top+this.$element.height()>=t-s?"bottom":o!=null&&n<=o?"top":!1;if(this.affixed===a)return;this.affixed=a,this.unpin=a=="bottom"?r.top-n:null,this.$element.removeClass(u).addClass("affix"+(a?"-"+a:""))};var n=e.fn.affix;e.fn.affix=function(n){return this.each(function(){var r=e(this),i=r.data("affix"),s=typeof n=="object"&&n;i||r.data("affix",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.affix.Constructor=t,e.fn.affix.defaults={offset:0},e.fn.affix.noConflict=function(){return e.fn.affix=n,this},e(window).on("load",function(){e('[data-spy="affix"]').each(function(){var t=e(this),n=t.data();n.offset=n.offset||{},n.offsetBottom&&(n.offset.bottom=n.offsetBottom),n.offsetTop&&(n.offset.top=n.offsetTop),t.affix(n)})})}(window.jQuery); | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
... | @@ -94,11 +94,27 @@ module.exports = function(app, Users, Timetables) | ... | @@ -94,11 +94,27 @@ module.exports = function(app, Users, Timetables) |
94 | 94 | ||
95 | 95 | ||
96 | // 동명이인 검색 페이지 | 96 | // 동명이인 검색 페이지 |
97 | - app.get("/samename" ,function(req, res) | 97 | + app.post("/samename" ,function(req, res) |
98 | + { | ||
99 | + // 크롤링으로 samename list 추출 | ||
100 | + var samename_list2 = []; | ||
101 | + function temp(callback) | ||
102 | + { | ||
103 | + var samename_search = require("./selenium-function/same_name_search"); | ||
104 | + samename_search.First_Search(req.body.samename).then(function(resolvedData) | ||
105 | + { | ||
106 | + samename_list2 = resolvedData; | ||
107 | + console.log(resolvedData); | ||
108 | + callback(); | ||
109 | + }); | ||
110 | + } | ||
111 | + | ||
112 | + temp(function() | ||
98 | { | 113 | { |
99 | - var samename_list = [["강호동", "https://search.pstatic.net/common?type=a&size=60x76&quality=95&src=http://sstatic.naver.net/people/portrait/201304/20130403113314207.jpg"], ["강호동", "https://search.pstatic.net/common?type=a&size=60x76&quality=95&src=http://sstatic.naver.net/people/72/201601061648058211.jpg"]]; | ||
100 | console.log("samename page"); | 114 | console.log("samename page"); |
101 | - res.render("samename",{samename : samename_list}); | 115 | + //console.log(samename_list2); |
116 | + res.render("samename",{samename : samename_list2}); | ||
117 | + }); | ||
102 | }); | 118 | }); |
103 | 119 | ||
104 | // 인물-방송정보 페이지 | 120 | // 인물-방송정보 페이지 |
... | @@ -130,10 +146,10 @@ module.exports = function(app, Users, Timetables) | ... | @@ -130,10 +146,10 @@ module.exports = function(app, Users, Timetables) |
130 | // 유저가 선택한 프로그램 정보 입력 | 146 | // 유저가 선택한 프로그램 정보 입력 |
131 | var program = new Timetables(); | 147 | var program = new Timetables(); |
132 | program.user_id = req.user; | 148 | program.user_id = req.user; |
133 | - program.pname = "짠내투어"; | 149 | + program.pname = "아모르파티"; |
134 | - program.pweekday = 6; | 150 | + program.pweekday = 5; |
135 | - program.start_hour = 20; | 151 | + program.start_hour = 10; |
136 | - program.start_min = 20; | 152 | + program.start_min = 50; |
137 | 153 | ||
138 | // DB저장 | 154 | // DB저장 |
139 | program.save(function(err) | 155 | program.save(function(err) | ... | ... |
1 | +var async = require('async'); | ||
2 | +var webdriver = require('selenium-webdriver'); | ||
3 | +var options = {desiredCapabilities: {browserName: 'chrome'}}; | ||
4 | +var JASON = require('jason') | ||
5 | +const {Builder, By, Key, until} = require('selenium-webdriver'); | ||
6 | +var iconv = require('iconv-lite') | ||
7 | +const fs = require('fs') | ||
8 | + | ||
9 | +datalist = [] | ||
10 | + | ||
11 | +module.exports = { | ||
12 | + search_onairanddate : function (driver, url, string, callback) { | ||
13 | + driver | ||
14 | + .get(url).then(() => { | ||
15 | + driver | ||
16 | + .findElements(webdriver.By.className('brcs_detail')) | ||
17 | + .then(broad_info => { | ||
18 | + broad_info[0].findElement(webdriver.By.tagName('dl')) | ||
19 | + .then(more_data => { | ||
20 | + more_data.findElement(webdriver.By.tagName('dd')) | ||
21 | + .then(one_line => { | ||
22 | + one_line.findElement(webdriver.By.className("inline")) | ||
23 | + .then(isbroad => { | ||
24 | + isbroad.findElement(webdriver.By.tagName("a")) | ||
25 | + .then(a => { | ||
26 | + a.getText() | ||
27 | + .then(text=> { | ||
28 | + isbroad.getText() | ||
29 | + .then(day => { | ||
30 | + isbroad.findElement(webdriver.By.className("broad_txt")) | ||
31 | + .then(b => { | ||
32 | + b.getText() | ||
33 | + .then(text2 => { | ||
34 | + if(day.indexOf('(') != -1) { | ||
35 | + var day_ = day[day.indexOf('(')+1] | ||
36 | + } | ||
37 | + datalist.push(text) | ||
38 | + datalist.push(text2) | ||
39 | + datalist[3] = day_ | ||
40 | + setTimeout(() => { | ||
41 | + fs.writeFileSync("./log/"+string+"_br_isonair.txt", datalist, {encoding: 'utf8'}); | ||
42 | + | ||
43 | + callback() | ||
44 | + }, 500); | ||
45 | + }) | ||
46 | + }) | ||
47 | + }) | ||
48 | + }) | ||
49 | + }) | ||
50 | + }) | ||
51 | + }) | ||
52 | + }) | ||
53 | + }) | ||
54 | + }) | ||
55 | + driver.findElement(webdriver.By.className('brcs_thumb')) | ||
56 | + .then(brcs_thumb => { | ||
57 | + brcs_thumb.findElements(webdriver.By.tagName('img')) | ||
58 | + .then( img => { | ||
59 | + img[0].getAttribute('src') | ||
60 | + .then(img_src => { | ||
61 | + datalist[2] = img_src | ||
62 | + }) | ||
63 | + }) | ||
64 | + }) | ||
65 | + } | ||
66 | +} | ||
67 | + | ||
68 | +// | ||
69 | +//var driver = new webdriver.Builder() | ||
70 | +//.forBrowser('chrome') | ||
71 | +//.withCapabilities(webdriver.Capabilities.chrome()) | ||
72 | +//.build(); | ||
73 | +// | ||
74 | +//search_onairanddate(driver,"https://search.naver.com/search.naver?where=nexearch&sm=ppl_cts&mra=bjkw&x_csa=%7B%22pkid%22%3A%2257%22%2C%22os%22%3A%22659910%22%7D&pkid=57&os=659910&query=%EB%AC%B4%ED%95%9C%EB%8F%84%EC%A0%84","무한도전",function() { | ||
75 | +// console.log("B") | ||
76 | +//}) | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +var async = require('async'); | ||
2 | +var webdriver = require('selenium-webdriver'); | ||
3 | +var options = {desiredCapabilities: {browserName: 'chrome'}}; | ||
4 | +var onair = require('./crawling_br_onair_date') | ||
5 | +const {Builder, By, Key, until} = require('selenium-webdriver'); | ||
6 | +const fs = require('fs') | ||
7 | +const screen = { | ||
8 | + width: 640, | ||
9 | + height: 480 | ||
10 | +}; | ||
11 | +var a=8000 | ||
12 | +var img_src_list = [] | ||
13 | +var text_list = [] | ||
14 | +var next_link_list = [] | ||
15 | +var testStartRunTime = 0; | ||
16 | +var testruntime = 0; | ||
17 | +var time = 0; | ||
18 | +module.exports = { | ||
19 | + search_broadcasting : function(driver,url,name,callback) { | ||
20 | + function testRunTimer() { | ||
21 | + var today = new Date(); // 현재시간 얻기 | ||
22 | + var runTime = today.getTime(); // 밀리세컨드 ( 1970/01/01 부터 현재까지의 시간을 밀리세컨드로 나타냄 ) | ||
23 | + var rtn = 0; | ||
24 | + | ||
25 | + if (testStartRunTime == 0) { | ||
26 | + testStartRunTime = runTime; | ||
27 | + } else { | ||
28 | + rtn = (runTime - testStartRunTime) / 1000; | ||
29 | + testStartRunTime = 0; | ||
30 | + } | ||
31 | + return rtn; | ||
32 | + } | ||
33 | + driver | ||
34 | + .get("http://"+url) | ||
35 | + .then(() => { | ||
36 | + driver.findElement(webdriver.By.id('pagination_76')) | ||
37 | + .then ( paginationBtn => { | ||
38 | + paginationBtn.findElements(webdriver.By.className('bt_next')) | ||
39 | + .then(Btn_next => { | ||
40 | + driver.findElement(webdriver.By.id('listUI_76')) | ||
41 | + .then(contentsUI => { | ||
42 | + clickandget(function() { | ||
43 | + Btn_next[0].click() | ||
44 | + setTimeout(() => { | ||
45 | + clickandget(function() { | ||
46 | + Btn_next[0].click() | ||
47 | + setTimeout(() => { | ||
48 | + clickandget(function() { | ||
49 | + Btn_next[0].click() | ||
50 | + setTimeout(() => { | ||
51 | + clickandget(function(){ | ||
52 | + Btn_next[0].click() | ||
53 | + setTimeout(() => { | ||
54 | + clickandget(function(){ | ||
55 | + fs.writeFileSync("./log/"+name+"_img_src_br.txt", '\ufeff' + img_src_list, {encoding: 'utf8'}); | ||
56 | + fs.writeFileSync("./log/"+name+"_title_br.txt", '\ufeff' + text_list, {encoding: 'utf8'}); | ||
57 | + setTimeout(() => { | ||
58 | + callback() | ||
59 | + }, 500); | ||
60 | + }) | ||
61 | + }, testruntime*1000+800); | ||
62 | + }) | ||
63 | + }, testruntime*1000+800); | ||
64 | + | ||
65 | + },testruntime*1000+800) | ||
66 | + }, testruntime*1000+800); | ||
67 | + }) | ||
68 | + }, testruntime*1000+800); | ||
69 | + }) | ||
70 | + function clickandget(_callback) { | ||
71 | + testRunTimer() | ||
72 | + Btn_next[0].isDisplayed().then(function(state) { | ||
73 | + if(state) { | ||
74 | + contentsUI.findElements(webdriver.By.tagName('li')) | ||
75 | + .then(elems => { | ||
76 | + elems.forEach(elem => { | ||
77 | + elem.findElement(webdriver.By.className('thmb')) | ||
78 | + .then(thmb => { | ||
79 | + thmb.getAttribute('href') | ||
80 | + .then(next_link => { | ||
81 | + thmb.findElements(webdriver.By.tagName('img')) | ||
82 | + .then(img => { | ||
83 | + img[0].getAttribute('src') | ||
84 | + .then(img_src => { | ||
85 | + elem.findElements(webdriver.By.className('tit')) | ||
86 | + .then (titles => { | ||
87 | + titles.forEach(title => { | ||
88 | + title.getText() | ||
89 | + .then(text => { | ||
90 | + text_list.push(text) | ||
91 | + img_src_list.push(img_src) | ||
92 | + next_link_list.push(next_link) | ||
93 | + if(text_list.length % 5 == 0) { | ||
94 | + var testruntime = testRunTimer(); | ||
95 | + time = time+testruntime*1000 | ||
96 | + _callback() | ||
97 | + } | ||
98 | + }) | ||
99 | + }) | ||
100 | + }) | ||
101 | + }) | ||
102 | + }) | ||
103 | + }) | ||
104 | + }) | ||
105 | + }) | ||
106 | + }) | ||
107 | + } | ||
108 | + else { | ||
109 | + fs.writeFileSync("./log/"+name+"_img_src_br.txt", '\ufeff' + img_src_list, {encoding: 'utf8'}); | ||
110 | + fs.writeFileSync("./log/"+name+"_title_br.txt", '\ufeff' + text_list, {encoding: 'utf8'}); | ||
111 | + fs.writeFileSync("./log/"+name+"_next_link_br.txt", '\ufeff' + next_link_list, {encoding: 'utf8'}); | ||
112 | + setTimeout(() => { | ||
113 | + callback() | ||
114 | + }, 500); | ||
115 | + } | ||
116 | + },function(err) { | ||
117 | + fs.writeFileSync("./log/"+name+"_img_src_br.txt", '\ufeff' + img_src_list, {encoding: 'utf8'}); | ||
118 | + fs.writeFileSync("./log/"+name+"_title_br.txt", '\ufeff' + text_list, {encoding: 'utf8'}); | ||
119 | + fs.writeFileSync("./log/"+name+"_next_link_br.txt", '\ufeff' + next_link_list, {encoding: 'utf8'}); | ||
120 | + setTimeout(() => { | ||
121 | + callback() | ||
122 | + }, 500); | ||
123 | + }) | ||
124 | + } | ||
125 | + }) | ||
126 | + }) | ||
127 | + }) | ||
128 | + }) | ||
129 | + function sleep (time) { | ||
130 | + return new Promise((resolve) => setTimeout(resolve, time)); | ||
131 | + } | ||
132 | + } | ||
133 | +} | ||
134 | + | ||
135 | +//var driver = new webdriver.Builder() | ||
136 | +//.forBrowser('chrome') | ||
137 | +//.withCapabilities(webdriver.Capabilities.chrome()) | ||
138 | +//.build(); | ||
139 | + | ||
140 | +//search_broadcasting(driver,"people.search.naver.com/search.naver?where=nexearch&sm=tab_ppn&query=유재석&os=94702&ie=utf8&key=PeopleService","유재석",function() { | ||
141 | +// console.log("B") | ||
142 | +//}) | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +var async = require('async'); | ||
2 | +var webdriver = require('selenium-webdriver'); | ||
3 | +var chrome = require('selenium-webdriver/chrome') | ||
4 | +var Options = new chrome.Options(); | ||
5 | +Options.addArguments('headless') | ||
6 | +Options.addArguments('disable-gpu') | ||
7 | +const fs = require('fs') | ||
8 | +var check = 0 | ||
9 | +var testStartRunTime = 0; | ||
10 | +var testruntime = 0; | ||
11 | + | ||
12 | +const {Builder, By, Key, until} = require('selenium-webdriver'); | ||
13 | + | ||
14 | +var next_link_list = [] | ||
15 | +var src_list = [] | ||
16 | +var text_list = [] | ||
17 | +var return_list = [] | ||
18 | + | ||
19 | +module.exports = { | ||
20 | + first_search :function (driver,string,callback) { | ||
21 | + | ||
22 | + function testRunTimer() { | ||
23 | + var today = new Date(); // 현재시간 얻기 | ||
24 | + var runTime = today.getTime(); // 밀리세컨드 ( 1970/01/01 부터 현재까지의 시간을 밀리세컨드로 나타냄 ) | ||
25 | + var rtn = 0; | ||
26 | + | ||
27 | + if (testStartRunTime == 0) { | ||
28 | + testStartRunTime = runTime; | ||
29 | + } else { | ||
30 | + rtn = (runTime - testStartRunTime) / 1000; | ||
31 | + testStartRunTime = 0; | ||
32 | + } | ||
33 | + return rtn; | ||
34 | + } | ||
35 | + let url1 = "https://people.search.naver.com/search.naver?sm=tab_hty&where=nexearch&query="+string+"&ie=utf8&x=0&y=0" | ||
36 | + driver | ||
37 | + .get(url1).then(() => { | ||
38 | + testRunTimer() | ||
39 | + driver | ||
40 | + .findElements(webdriver.By.className('result_profile')) | ||
41 | + .then(profiles => { | ||
42 | + profiles.forEach(profile => { | ||
43 | + profile.findElements(webdriver.By.className('thmb')) | ||
44 | + .then(links=> { | ||
45 | + links.forEach(link => { | ||
46 | + link.getAttribute('href') | ||
47 | + .then(next_link => { | ||
48 | + profile.findElements(webdriver.By.className('thmb_img')) | ||
49 | + .then((imgs) => { | ||
50 | + imgs.forEach(img => { | ||
51 | + img.getAttribute('src') | ||
52 | + .then(src => { | ||
53 | + next_link_list.push(next_link) | ||
54 | + src_list.push(src) | ||
55 | + //text_list.push(text) | ||
56 | + testruntime += testRunTimer() | ||
57 | + setTimeout(function() { | ||
58 | + check++; | ||
59 | + if(check==1) { | ||
60 | + //return_list.push(text_list) | ||
61 | + setTimeout(function() { | ||
62 | + fs.writeFileSync("./log/"+string+"_next_link.txt", next_link_list, {encoding: 'utf8'}); | ||
63 | + fs.writeFileSync("./log/"+string+"_img_src.txt", src_list, {encoding: 'utf8'}); | ||
64 | + callback() | ||
65 | + },500) | ||
66 | + } | ||
67 | + },testruntime*1000+1000) | ||
68 | + }) | ||
69 | + }) | ||
70 | + }) | ||
71 | + }) | ||
72 | + }) | ||
73 | + }) | ||
74 | + }) | ||
75 | + }) | ||
76 | + }) | ||
77 | + } | ||
78 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
server_db/selenium-function/crawling_time.js
0 → 100644
1 | +var webdriver = require('selenium-webdriver'); | ||
2 | +const {Builder, By, Key, until} = require('selenium-webdriver'); | ||
3 | +const fs = require('fs') | ||
4 | + | ||
5 | + var arr = [] | ||
6 | + var result_arr = [] | ||
7 | + var temp = [] | ||
8 | + var i=0 | ||
9 | + var check = 0 | ||
10 | + | ||
11 | + | ||
12 | +//var driver = new webdriver.Builder().forBrowser('chrome').withCapabilities(webdriver.Capabilities.chrome()).build(); | ||
13 | +//search_broadcasting_time(driver,"SBS","일요일","런닝맨",function() {}) | ||
14 | +module.exports = { | ||
15 | + search_broadcasting_time :function (driver,broadcast,day,findtitle, callback) { | ||
16 | + let url1 = "https://search.naver.com/search.naver?sm=top_hty&fbm=1&ie=utf8&query="+broadcast.toLowerCase()+"+"+day+"요일"+"+편성표" | ||
17 | + driver | ||
18 | + .get(url1).then(() => { | ||
19 | + driver | ||
20 | + .findElements(webdriver.By.className('cont_inner type_day _scheduleArea')) | ||
21 | + .then(contentsearch_section=> { | ||
22 | + contentsearch_section[0].findElements(webdriver.By.tagName('tbody')) | ||
23 | + .then(tbody => { | ||
24 | + tbody[0].findElements(webdriver.By.tagName('tr')) | ||
25 | + .then(trs => { | ||
26 | + trs.forEach(tr => { | ||
27 | + tr.getText() | ||
28 | + .then(content => { | ||
29 | + if(content.indexOf(findtitle) != -1) { | ||
30 | + arr = content.toString().split('\n') | ||
31 | + console.log(arr) | ||
32 | + str(function() { | ||
33 | + i++ | ||
34 | + if(i==1) { | ||
35 | + R=[] | ||
36 | + R[0] = result_arr[0] | ||
37 | + R[1] = result_arr[1] | ||
38 | + R[2] = result_arr[2] | ||
39 | + fs.writeFileSync("./log/"+findtitle+"_time_detail.txt", '\ufeff' + R, {encoding: 'utf8'}); | ||
40 | + callback() | ||
41 | + } | ||
42 | + }) | ||
43 | + function str(_callback) { | ||
44 | + temp[0] = arr[0].substr(0,2) | ||
45 | + temp[1] = arr[1].substr(0,2) | ||
46 | + temp[2] = findtitle | ||
47 | + result_arr.push(temp[0],temp[1],temp[2]) | ||
48 | + //if(arr.length == 3) { | ||
49 | + // temp[i+2] = arr[0] + " " + arr[2].substr(0,2) + "분" | ||
50 | + // temp[i+3] = arr[2].substr(3) | ||
51 | + // result_arr.push(temp[i+2],temp[i+3]) | ||
52 | + // i++ | ||
53 | + //} | ||
54 | + setTimeout(() => { | ||
55 | + _callback() | ||
56 | + }, 500); | ||
57 | + | ||
58 | + } | ||
59 | + } | ||
60 | + }) | ||
61 | + }) | ||
62 | + }) | ||
63 | + }) | ||
64 | + }) | ||
65 | + }) | ||
66 | + } | ||
67 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
server_db/selenium-function/last.js
0 → 100644
1 | +var async = require('async'); | ||
2 | +var webdriver = require('selenium-webdriver'); | ||
3 | +//var options = {desiredCapabilities: {browserName: 'chrome'}}; | ||
4 | +var chrome = require('selenium-webdriver/chrome') | ||
5 | +var Options = new chrome.Options(); | ||
6 | +Options.addArguments('headless') | ||
7 | +Options.addArguments('disable-gpu') | ||
8 | +const fs = require('fs') | ||
9 | +const test2 = require('./crawling_broadcasting') | ||
10 | +var EventEmitter = require('events').EventEmitter; | ||
11 | + | ||
12 | + | ||
13 | +var img_src_br_list = [] | ||
14 | +var title_list = [] | ||
15 | +var next_link_list=[] | ||
16 | +var result_arr=[] | ||
17 | +//broadcasting_search('https://people.search.naver.com/search.naver?where=nexearch&sm=tab_ppn&query=%EC%9C%A0%EC%9E%AC%EC%84%9D&os=94702&ie=utf8&key=PeopleService','유재석') | ||
18 | + | ||
19 | +var driver_1 = new webdriver.Builder().forBrowser('chrome').withCapabilities(webdriver.Capabilities.chrome()).setChromeOptions(Options).build() | ||
20 | + | ||
21 | +module.exports = { | ||
22 | + broadcasting_search : function(next_link,name) { | ||
23 | + return new Promise(function(resolve,reject) { | ||
24 | + if(fs.existsSync("./log/"+name+"_img_src_br.txt")) { | ||
25 | + const img_src_br = fs.readFileSync("./log/"+name+"_img_src_br.txt"); | ||
26 | + img_src_br_list = img_src_br.toString().split(','); | ||
27 | + const title_br = fs.readFileSync("./log/"+name+"_title_br.txt"); | ||
28 | + title_list = title_br.toString().split(','); | ||
29 | + const link_br = fs.readFileSync("./log/"+name+"_next_link_br.txt") | ||
30 | + next_link_list = link_br.toString().split(','); | ||
31 | + driver_1.quit() | ||
32 | + result_arr.push(img_src_br_list,title_list,next_link_list) | ||
33 | + resolve(result_arr) | ||
34 | + } | ||
35 | + else { | ||
36 | + test2.search_broadcasting(driver_1,next_link.substr(7),name,function() { | ||
37 | + const img_src_br = fs.readFileSync("./log/"+name+"_img_src_br.txt"); | ||
38 | + img_src_br_list = img_src_br.toString().split(','); | ||
39 | + const title_br = fs.readFileSync("./log/"+name+"_title_br.txt"); | ||
40 | + title_list = title_br.toString().split(','); | ||
41 | + const link_br = fs.readFileSync("./log/"+name+"_next_link_br.txt") | ||
42 | + next_link_list = link_br.toString().split(','); | ||
43 | + | ||
44 | + driver_1.quit() | ||
45 | + result_arr.push(img_src_br_list,title_list,next_link_list) | ||
46 | + resolve(result_arr) | ||
47 | + }) | ||
48 | + } | ||
49 | + }) | ||
50 | + } | ||
51 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
server_db/selenium-function/last_detail.js
0 → 100644
1 | +var async = require('async'); | ||
2 | +var webdriver = require('selenium-webdriver'); | ||
3 | +//var options = {desiredCapabilities: {browserName: 'chrome'}}; | ||
4 | +var chrome = require('selenium-webdriver/chrome') | ||
5 | +var Options = new chrome.Options(); | ||
6 | +Options.addArguments('headless') | ||
7 | +Options.addArguments('disable-gpu') | ||
8 | +const fs = require('fs') | ||
9 | +const test3 = require('./crawling_br_onair_date') | ||
10 | +const test4 = require('./crawling_time') | ||
11 | +var util = require('util') | ||
12 | +var EventEmitter = require('events').EventEmitter; | ||
13 | + | ||
14 | +br_datalist = [] | ||
15 | + | ||
16 | +var driver_2 = new webdriver.Builder() | ||
17 | +.forBrowser('chrome') | ||
18 | +.withCapabilities(webdriver.Capabilities.chrome()).setChromeOptions(Options) | ||
19 | +.build(); | ||
20 | +var returnfunction = function() { | ||
21 | + var self= this | ||
22 | + this.on('ok1',function() { | ||
23 | + return br_datalist | ||
24 | + }) | ||
25 | +} | ||
26 | +var driver_3 = new webdriver.Builder() | ||
27 | +.forBrowser('chrome') | ||
28 | +.withCapabilities(webdriver.Capabilities.chrome()).setChromeOptions(Options) | ||
29 | +.build(); | ||
30 | +//module.exports = { | ||
31 | + var search_detail_time = function (name) { | ||
32 | + var self = this | ||
33 | + this.on('ok',function() { | ||
34 | + if(br_datalist[1] == "방영중") { | ||
35 | + if(fs.existsSync("./log/"+name+"_time_detail.txt")) { | ||
36 | + const detail = fs.readFileSync("./log/"+name+"_time_detail.txt"); | ||
37 | + detail_time_list = detail.toString().split(','); | ||
38 | + br_datalist.push(detail_time_list[0]) | ||
39 | + br_datalist.push(detail_time_list[1]) | ||
40 | + br_datalist.push(detail_time_list[2]) | ||
41 | + } | ||
42 | + else { | ||
43 | + test4.search_broadcasting_time(driver_3,br_datalist[0],br_datalist[3],name,function(){ | ||
44 | + const detail = fs.readFileSync("./log/"+name+"_time_detail.txt"); | ||
45 | + detail_time_list = detail.toString().split(','); | ||
46 | + br_datalist.push(detail_time_list[0]) | ||
47 | + br_datalist.push(detail_time_list[1]) | ||
48 | + br_datalist.push(detail_time_list[2]) | ||
49 | + }) | ||
50 | + } | ||
51 | + } | ||
52 | + }) | ||
53 | + | ||
54 | + } | ||
55 | +//} | ||
56 | + | ||
57 | +util.inherits(returnfunction,EventEmitter); | ||
58 | +util.inherits(search_detail_time,EventEmitter); | ||
59 | +return_ = new returnfunction(); | ||
60 | + | ||
61 | + | ||
62 | +var detail_time_list = [] | ||
63 | + | ||
64 | +//isonair('https://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&query=%EB%9F%B0%EB%8B%9D%EB%A7%A8&oquery=%EB%9F%B0%EB%8B%9D%EB%A7%A8&tqi=UtvQ%2FlpySDVssa%2BpmFNssssstfG-043752',"런닝맨") | ||
65 | +module.exports = { | ||
66 | + isonair : function (url,string) { | ||
67 | + search_detail = new search_detail_time(string) | ||
68 | + | ||
69 | + return new Promise(function(resolve,reject) { | ||
70 | + if(fs.existsSync("./log/"+string+"_br_isonair.txt")) { | ||
71 | + const img_src_br = fs.readFileSync("./log/"+string+"_br_isonair.txt"); | ||
72 | + br_datalist = img_src_br.toString().split(','); | ||
73 | + search_detail.emit('ok') | ||
74 | + setTimeout(() => { | ||
75 | + resolve(br_datalist) | ||
76 | + }, 5000); | ||
77 | + | ||
78 | + } | ||
79 | + | ||
80 | + else { | ||
81 | + test3.search_onairanddate(driver_2,url,string,function() { | ||
82 | + const img_src_br = fs.readFileSync("./log/"+string+"_br_isonair.txt"); | ||
83 | + br_datalist = img_src_br.toString().split(','); | ||
84 | + search_detail.emit('ok') | ||
85 | + setTimeout(() => { | ||
86 | + resolve(br_datalist) | ||
87 | + }, 5000); | ||
88 | + | ||
89 | + }) | ||
90 | + } | ||
91 | + }) | ||
92 | + } | ||
93 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +var async = require('async'); | ||
2 | +var webdriver = require('selenium-webdriver'); | ||
3 | +//var options = {desiredCapabilities: {browserName: 'chrome'}}; | ||
4 | +var chrome = require('selenium-webdriver/chrome') | ||
5 | +var Options = new chrome.Options(); | ||
6 | +Options.addArguments('headless') | ||
7 | +Options.addArguments('disable-gpu') | ||
8 | +var test1 = require('./crawling_samename') | ||
9 | +const fs = require('fs') | ||
10 | +var util = require('util') | ||
11 | +var EventEmitter = require('events').EventEmitter; | ||
12 | + | ||
13 | +var next_link_Array = [] | ||
14 | +var img_src_Array = [] | ||
15 | + | ||
16 | +const {Builder, By, Key, until} = require('selenium-webdriver'); | ||
17 | + | ||
18 | +var result_arr = [] | ||
19 | +module.exports = { | ||
20 | + First_Search :function(name) { | ||
21 | + | ||
22 | + var driver = new webdriver.Builder() | ||
23 | + .forBrowser('chrome') | ||
24 | + .withCapabilities(webdriver.Capabilities.chrome()) | ||
25 | + //.setChromeOptions(Options) | ||
26 | + .build(); | ||
27 | + | ||
28 | + return new Promise(function(resolve,reject) { | ||
29 | + if(fs.existsSync("./log/"+name+"_next_link.txt")) { | ||
30 | + const next_link = fs.readFileSync("./log/"+name+"_next_link.txt"); | ||
31 | + const img_src = fs.readFileSync("./log/"+name+"_img_src.txt"); | ||
32 | + next_link_Array = next_link.toString().split(','); | ||
33 | + img_src_Array = img_src.toString().split(','); | ||
34 | + //driver.quit() | ||
35 | + result_arr.push(next_link_Array) | ||
36 | + result_arr.push(img_src_Array) | ||
37 | + | ||
38 | + resolve(result_arr) | ||
39 | + } | ||
40 | + else { | ||
41 | + test1.first_search(driver,name,function() { | ||
42 | + const next_link = fs.readFileSync("./log/"+name+"_next_link.txt"); | ||
43 | + const img_src = fs.readFileSync("./log/"+name+"_img_src.txt"); | ||
44 | + next_link_Array = next_link.toString().split(','); | ||
45 | + img_src_Array = img_src.toString().split(','); | ||
46 | + result_arr.push(next_link_Array) | ||
47 | + result_arr.push(img_src_Array) | ||
48 | + //driver.quit() | ||
49 | + resolve(result_arr) | ||
50 | + }) | ||
51 | + } | ||
52 | + | ||
53 | + }) | ||
54 | + | ||
55 | + } | ||
56 | +//util.inherits(First_Search,EventEmitter); | ||
57 | +//first_search1 = new First_Search("유재석") | ||
58 | +//first_search1.emit('input') | ||
59 | +} | ||
60 | + | ||
61 | + | ||
62 | + | ||
63 | +//다른 파일에서 호출하는 방법 | ||
64 | +//var a=require("./sane_name_search") | ||
65 | + | ||
66 | +//var arr = [] | ||
67 | + | ||
68 | +//a.First_Search("(검색어 입력)").then(aa => { | ||
69 | +// arr=a | ||
70 | +// console.log(arr) | ||
71 | +//}) | ||
72 | + |
server_db/use.js
0 → 100644
1 | +var a=require("./selenium-function/last_detail") | ||
2 | +var arr = [] | ||
3 | +a.isonair('https://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&query=%EB%9F%B0%EB%8B%9D%EB%A7%A8&oquery=%EB%9F%B0%EB%8B%9D%EB%A7%A8&tqi=UtvQ%2FlpySDVssa%2BpmFNssssstfG-043752','런닝맨').then(function (resolvedData) { | ||
4 | + arr=resolvedData | ||
5 | + console.log(arr) | ||
6 | +}) | ||
7 | + | ||
8 | +var b=require("./selenium-function/last") | ||
9 | +var arr_1 = [] | ||
10 | + | ||
11 | +b.broadcasting_search('https://people.search.naver.com/search.naver?where=nexearch&sm=tab_ppn&query=%EC%9C%A0%EC%9E%AC%EC%84%9D&os=94702&ie=utf8&key=PeopleService','유재석').then(function(resolvedData) { | ||
12 | + arr_1 = resolvedData | ||
13 | + console.log(arr_1) | ||
14 | +}) | ||
15 | + | ||
16 | +var c=require("./selenium-function/same_name_search") | ||
17 | +var arr_2 = [] | ||
18 | +c.First_Search("유재석").then(function(resolvedData) { | ||
19 | + arr_2 = resolvedData | ||
20 | + console.log(arr_2) | ||
21 | +}) | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
... | @@ -2,6 +2,6 @@ | ... | @@ -2,6 +2,6 @@ |
2 | <form method="POST" action="/login"> | 2 | <form method="POST" action="/login"> |
3 | <label>id:</label><input type="text" name="id"><br/> | 3 | <label>id:</label><input type="text" name="id"><br/> |
4 | <label>pwd:</label><input type="password" name="pwd"><br/> | 4 | <label>pwd:</label><input type="password" name="pwd"><br/> |
5 | - <button type="submit">로그인</button> | 5 | + <button type="submit" class="btn btn-info">로그인</button> |
6 | </form> | 6 | </form> |
7 | </div> | 7 | </div> |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
... | @@ -3,7 +3,7 @@ | ... | @@ -3,7 +3,7 @@ |
3 | <label>id:</label><input type="text" name="id"><br/> | 3 | <label>id:</label><input type="text" name="id"><br/> |
4 | <label>pwd:</label><input type="password" name="pwd"><br/> | 4 | <label>pwd:</label><input type="password" name="pwd"><br/> |
5 | <label>name:</label><input type="text" name="name"><br/> | 5 | <label>name:</label><input type="text" name="name"><br/> |
6 | - <button type="submit">가입</button> | 6 | + <button type="submit" class="btn btn-info">가입</button> |
7 | </form> | 7 | </form> |
8 | - <a href='/'><button>취소</button></a> | 8 | + <a href='/'><button type="button" class="btn btn-danger">취소</button></a> |
9 | </div> | 9 | </div> |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | <div class="contents_main"> | 1 | <div class="contents_main"> |
2 | <h1>This is main</h1> | 2 | <h1>This is main</h1> |
3 | - <form method="GET" action="/samename"> | 3 | + <form method="POST" action="/samename"> |
4 | <input type="text" name="samename"> | 4 | <input type="text" name="samename"> |
5 | - <button type="submit">검색</button> | 5 | + <button type="submit" class="btn btn-info">검색</button> |
6 | </form> | 6 | </form> |
7 | </div> | 7 | </div> |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
... | @@ -8,7 +8,7 @@ | ... | @@ -8,7 +8,7 @@ |
8 | <% if(val[3] == true) { %> | 8 | <% if(val[3] == true) { %> |
9 | <li><%= val[4] %></li> | 9 | <li><%= val[4] %></li> |
10 | <li><%= val[5] %></li> | 10 | <li><%= val[5] %></li> |
11 | - <button>추가</button> | 11 | + <a href="/addtt"><button class="btn btn-warning">추가</button></a> |
12 | <% } %> | 12 | <% } %> |
13 | <% }) %> | 13 | <% }) %> |
14 | </div> | 14 | </div> |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | <div class="contents_main"> | 1 | <div class="contents_main"> |
2 | <h1>This is Samename</h1> | 2 | <h1>This is Samename</h1> |
3 | - <% samename.forEach(function(val){ %> | 3 | + |
4 | - <li><%= val[0]%></li> | 4 | + <% samename[1].forEach(function(val){%> |
5 | - <li><img src="<%= val[1]%>"></li> | 5 | + <li><img src="<%-val%>"></li> |
6 | <% }) %> | 6 | <% }) %> |
7 | + | ||
8 | + | ||
7 | </div> | 9 | </div> |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | <html> | 1 | <html> |
2 | <head> | 2 | <head> |
3 | <title>Index</title> | 3 | <title>Index</title> |
4 | + <link rel="stylesheet" href="/static/css/bootstrap.css"> | ||
5 | + <link rel="stylesheet" href="/static/css/site.css"> | ||
4 | </head> | 6 | </head> |
5 | <body> | 7 | <body> |
6 | <% include ./navigation_index.ejs %> | 8 | <% include ./navigation_index.ejs %> |
7 | <% include ./contents_index.ejs %> | 9 | <% include ./contents_index.ejs %> |
10 | +<script src="http://ajax.googleapis.com/ajaz/libs/jquery/1.12.4/jquery.min.js"></script> | ||
11 | +<script type="text/javascript" src="/static/js/bootstrap.js"></script> | ||
8 | </body> | 12 | </body> |
9 | </html> | 13 | </html> |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | <html> | 1 | <html> |
2 | <head> | 2 | <head> |
3 | <title>Join</title> | 3 | <title>Join</title> |
4 | + <link rel="stylesheet" href="/static/css/bootstrap.css"> | ||
5 | + <link rel="stylesheet" href="/static/css/site.css"> | ||
4 | </head> | 6 | </head> |
5 | <body> | 7 | <body> |
6 | <% include ./navigation_index.ejs %> | 8 | <% include ./navigation_index.ejs %> |
7 | <% include ./contents_join.ejs %> | 9 | <% include ./contents_join.ejs %> |
10 | + <script src="http://ajax.googleapis.com/ajaz/libs/jquery/1.12.4/jquery.min.js"></script> | ||
11 | + <script type="text/javascript" src="/static/js/bootstrap.js"></script> | ||
8 | </body> | 12 | </body> |
9 | </html> | 13 | </html> |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | <html> | 1 | <html> |
2 | <head> | 2 | <head> |
3 | <title>Main</title> | 3 | <title>Main</title> |
4 | + <link rel="stylesheet" href="/static/css/bootstrap.css"> | ||
5 | + <link rel="stylesheet" href="/static/css/site.css"> | ||
4 | </head> | 6 | </head> |
5 | <body> | 7 | <body> |
6 | <% include ./navigation_main.ejs %> | 8 | <% include ./navigation_main.ejs %> | ... | ... |
1 | <html> | 1 | <html> |
2 | <head> | 2 | <head> |
3 | <title>MyPage</title> | 3 | <title>MyPage</title> |
4 | + <link rel="stylesheet" href="/static/css/bootstrap.css"> | ||
5 | + <link rel="stylesheet" href="/static/css/site.css"> | ||
4 | </head> | 6 | </head> |
5 | <body> | 7 | <body> |
6 | <% include ./navigation_main.ejs %> | 8 | <% include ./navigation_main.ejs %> | ... | ... |
1 | <div class="navigation_index"> | 1 | <div class="navigation_index"> |
2 | - <a href='/join'><button>회원가입</button></a> | 2 | + <a href='/join' ><button class="btn btn-success">회원가입</button></a> |
3 | - <a href='/'><button>Index</button></a> | 3 | + <a href='/' ><button class="btn btn-success">Index</button></a> |
4 | </div> | 4 | </div> |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | <div class="navigation_main"> | 1 | <div class="navigation_main"> |
2 | - <a href="/logout"><button>로그아웃</button></a> | 2 | + <a href="/logout"><button class="btn btn-primary">로그아웃</button></a> |
3 | - <a href="/main"><button>검색</button></a> | 3 | + <a href="/main"><button class="btn btn-primary">검색</button></a> |
4 | - <a href="/mypage"><button>마이페이지</button></a> | 4 | + <a href="/mypage"><button class="btn btn-primary">마이페이지</button></a> |
5 | - <a href="/timetable"><button>나만의시간표</button></a> | 5 | + <a href="/timetable"><button class="btn btn-primary">나만의시간표</button></a> |
6 | - <a href="/ttlist"><button>시간표수정</button></a> | 6 | + <a href="/ttlist"><button class="btn btn-primary">시간표수정</button></a> |
7 | </div> | 7 | </div> |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
... | @@ -5,5 +5,7 @@ | ... | @@ -5,5 +5,7 @@ |
5 | <body> | 5 | <body> |
6 | <% include ./navigation_main.ejs %> | 6 | <% include ./navigation_main.ejs %> |
7 | <% include ./contents_programs.ejs %> | 7 | <% include ./contents_programs.ejs %> |
8 | + <link rel="stylesheet" href="/static/css/bootstrap.css"> | ||
9 | + <link rel="stylesheet" href="/static/css/site.css"> | ||
8 | </body> | 10 | </body> |
9 | </html> | 11 | </html> |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | <html> | 1 | <html> |
2 | <head> | 2 | <head> |
3 | <title>Samename</title> | 3 | <title>Samename</title> |
4 | + <link rel="stylesheet" href="/static/css/bootstrap.css"> | ||
5 | + <link rel="stylesheet" href="/static/css/site.css"> | ||
4 | </head> | 6 | </head> |
5 | <body> | 7 | <body> |
6 | <% include ./navigation_main.ejs %> | 8 | <% include ./navigation_main.ejs %> | ... | ... |
-
Please register or login to post a comment