WP VR – 360 Panorama and virtual tour creator for WordPress - Version 1.0.0

Version Description

Download this release

Release Info

Developer rextheme
Plugin Icon 128x128 WP VR – 360 Panorama and virtual tour creator for WordPress
Version 1.0.0
Comparing to
See all releases

Version 1.0.0

LICENSE.txt ADDED
@@ -0,0 +1,339 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ GNU GENERAL PUBLIC LICENSE
2
+ Version 2, June 1991
3
+
4
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
5
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
6
+ Everyone is permitted to copy and distribute verbatim copies
7
+ of this license document, but changing it is not allowed.
8
+
9
+ Preamble
10
+
11
+ The licenses for most software are designed to take away your
12
+ freedom to share and change it. By contrast, the GNU General Public
13
+ License is intended to guarantee your freedom to share and change free
14
+ software--to make sure the software is free for all its users. This
15
+ General Public License applies to most of the Free Software
16
+ Foundation's software and to any other program whose authors commit to
17
+ using it. (Some other Free Software Foundation software is covered by
18
+ the GNU Lesser General Public License instead.) You can apply it to
19
+ your programs, too.
20
+
21
+ When we speak of free software, we are referring to freedom, not
22
+ price. Our General Public Licenses are designed to make sure that you
23
+ have the freedom to distribute copies of free software (and charge for
24
+ this service if you wish), that you receive source code or can get it
25
+ if you want it, that you can change the software or use pieces of it
26
+ in new free programs; and that you know you can do these things.
27
+
28
+ To protect your rights, we need to make restrictions that forbid
29
+ anyone to deny you these rights or to ask you to surrender the rights.
30
+ These restrictions translate to certain responsibilities for you if you
31
+ distribute copies of the software, or if you modify it.
32
+
33
+ For example, if you distribute copies of such a program, whether
34
+ gratis or for a fee, you must give the recipients all the rights that
35
+ you have. You must make sure that they, too, receive or can get the
36
+ source code. And you must show them these terms so they know their
37
+ rights.
38
+
39
+ We protect your rights with two steps: (1) copyright the software, and
40
+ (2) offer you this license which gives you legal permission to copy,
41
+ distribute and/or modify the software.
42
+
43
+ Also, for each author's protection and ours, we want to make certain
44
+ that everyone understands that there is no warranty for this free
45
+ software. If the software is modified by someone else and passed on, we
46
+ want its recipients to know that what they have is not the original, so
47
+ that any problems introduced by others will not reflect on the original
48
+ authors' reputations.
49
+
50
+ Finally, any free program is threatened constantly by software
51
+ patents. We wish to avoid the danger that redistributors of a free
52
+ program will individually obtain patent licenses, in effect making the
53
+ program proprietary. To prevent this, we have made it clear that any
54
+ patent must be licensed for everyone's free use or not licensed at all.
55
+
56
+ The precise terms and conditions for copying, distribution and
57
+ modification follow.
58
+
59
+ GNU GENERAL PUBLIC LICENSE
60
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
61
+
62
+ 0. This License applies to any program or other work which contains
63
+ a notice placed by the copyright holder saying it may be distributed
64
+ under the terms of this General Public License. The "Program", below,
65
+ refers to any such program or work, and a "work based on the Program"
66
+ means either the Program or any derivative work under copyright law:
67
+ that is to say, a work containing the Program or a portion of it,
68
+ either verbatim or with modifications and/or translated into another
69
+ language. (Hereinafter, translation is included without limitation in
70
+ the term "modification".) Each licensee is addressed as "you".
71
+
72
+ Activities other than copying, distribution and modification are not
73
+ covered by this License; they are outside its scope. The act of
74
+ running the Program is not restricted, and the output from the Program
75
+ is covered only if its contents constitute a work based on the
76
+ Program (independent of having been made by running the Program).
77
+ Whether that is true depends on what the Program does.
78
+
79
+ 1. You may copy and distribute verbatim copies of the Program's
80
+ source code as you receive it, in any medium, provided that you
81
+ conspicuously and appropriately publish on each copy an appropriate
82
+ copyright notice and disclaimer of warranty; keep intact all the
83
+ notices that refer to this License and to the absence of any warranty;
84
+ and give any other recipients of the Program a copy of this License
85
+ along with the Program.
86
+
87
+ You may charge a fee for the physical act of transferring a copy, and
88
+ you may at your option offer warranty protection in exchange for a fee.
89
+
90
+ 2. You may modify your copy or copies of the Program or any portion
91
+ of it, thus forming a work based on the Program, and copy and
92
+ distribute such modifications or work under the terms of Section 1
93
+ above, provided that you also meet all of these conditions:
94
+
95
+ a) You must cause the modified files to carry prominent notices
96
+ stating that you changed the files and the date of any change.
97
+
98
+ b) You must cause any work that you distribute or publish, that in
99
+ whole or in part contains or is derived from the Program or any
100
+ part thereof, to be licensed as a whole at no charge to all third
101
+ parties under the terms of this License.
102
+
103
+ c) If the modified program normally reads commands interactively
104
+ when run, you must cause it, when started running for such
105
+ interactive use in the most ordinary way, to print or display an
106
+ announcement including an appropriate copyright notice and a
107
+ notice that there is no warranty (or else, saying that you provide
108
+ a warranty) and that users may redistribute the program under
109
+ these conditions, and telling the user how to view a copy of this
110
+ License. (Exception: if the Program itself is interactive but
111
+ does not normally print such an announcement, your work based on
112
+ the Program is not required to print an announcement.)
113
+
114
+ These requirements apply to the modified work as a whole. If
115
+ identifiable sections of that work are not derived from the Program,
116
+ and can be reasonably considered independent and separate works in
117
+ themselves, then this License, and its terms, do not apply to those
118
+ sections when you distribute them as separate works. But when you
119
+ distribute the same sections as part of a whole which is a work based
120
+ on the Program, the distribution of the whole must be on the terms of
121
+ this License, whose permissions for other licensees extend to the
122
+ entire whole, and thus to each and every part regardless of who wrote it.
123
+
124
+ Thus, it is not the intent of this section to claim rights or contest
125
+ your rights to work written entirely by you; rather, the intent is to
126
+ exercise the right to control the distribution of derivative or
127
+ collective works based on the Program.
128
+
129
+ In addition, mere aggregation of another work not based on the Program
130
+ with the Program (or with a work based on the Program) on a volume of
131
+ a storage or distribution medium does not bring the other work under
132
+ the scope of this License.
133
+
134
+ 3. You may copy and distribute the Program (or a work based on it,
135
+ under Section 2) in object code or executable form under the terms of
136
+ Sections 1 and 2 above provided that you also do one of the following:
137
+
138
+ a) Accompany it with the complete corresponding machine-readable
139
+ source code, which must be distributed under the terms of Sections
140
+ 1 and 2 above on a medium customarily used for software interchange; or,
141
+
142
+ b) Accompany it with a written offer, valid for at least three
143
+ years, to give any third party, for a charge no more than your
144
+ cost of physically performing source distribution, a complete
145
+ machine-readable copy of the corresponding source code, to be
146
+ distributed under the terms of Sections 1 and 2 above on a medium
147
+ customarily used for software interchange; or,
148
+
149
+ c) Accompany it with the information you received as to the offer
150
+ to distribute corresponding source code. (This alternative is
151
+ allowed only for noncommercial distribution and only if you
152
+ received the program in object code or executable form with such
153
+ an offer, in accord with Subsection b above.)
154
+
155
+ The source code for a work means the preferred form of the work for
156
+ making modifications to it. For an executable work, complete source
157
+ code means all the source code for all modules it contains, plus any
158
+ associated interface definition files, plus the scripts used to
159
+ control compilation and installation of the executable. However, as a
160
+ special exception, the source code distributed need not include
161
+ anything that is normally distributed (in either source or binary
162
+ form) with the major components (compiler, kernel, and so on) of the
163
+ operating system on which the executable runs, unless that component
164
+ itself accompanies the executable.
165
+
166
+ If distribution of executable or object code is made by offering
167
+ access to copy from a designated place, then offering equivalent
168
+ access to copy the source code from the same place counts as
169
+ distribution of the source code, even though third parties are not
170
+ compelled to copy the source along with the object code.
171
+
172
+ 4. You may not copy, modify, sublicense, or distribute the Program
173
+ except as expressly provided under this License. Any attempt
174
+ otherwise to copy, modify, sublicense or distribute the Program is
175
+ void, and will automatically terminate your rights under this License.
176
+ However, parties who have received copies, or rights, from you under
177
+ this License will not have their licenses terminated so long as such
178
+ parties remain in full compliance.
179
+
180
+ 5. You are not required to accept this License, since you have not
181
+ signed it. However, nothing else grants you permission to modify or
182
+ distribute the Program or its derivative works. These actions are
183
+ prohibited by law if you do not accept this License. Therefore, by
184
+ modifying or distributing the Program (or any work based on the
185
+ Program), you indicate your acceptance of this License to do so, and
186
+ all its terms and conditions for copying, distributing or modifying
187
+ the Program or works based on it.
188
+
189
+ 6. Each time you redistribute the Program (or any work based on the
190
+ Program), the recipient automatically receives a license from the
191
+ original licensor to copy, distribute or modify the Program subject to
192
+ these terms and conditions. You may not impose any further
193
+ restrictions on the recipients' exercise of the rights granted herein.
194
+ You are not responsible for enforcing compliance by third parties to
195
+ this License.
196
+
197
+ 7. If, as a consequence of a court judgment or allegation of patent
198
+ infringement or for any other reason (not limited to patent issues),
199
+ conditions are imposed on you (whether by court order, agreement or
200
+ otherwise) that contradict the conditions of this License, they do not
201
+ excuse you from the conditions of this License. If you cannot
202
+ distribute so as to satisfy simultaneously your obligations under this
203
+ License and any other pertinent obligations, then as a consequence you
204
+ may not distribute the Program at all. For example, if a patent
205
+ license would not permit royalty-free redistribution of the Program by
206
+ all those who receive copies directly or indirectly through you, then
207
+ the only way you could satisfy both it and this License would be to
208
+ refrain entirely from distribution of the Program.
209
+
210
+ If any portion of this section is held invalid or unenforceable under
211
+ any particular circumstance, the balance of the section is intended to
212
+ apply and the section as a whole is intended to apply in other
213
+ circumstances.
214
+
215
+ It is not the purpose of this section to induce you to infringe any
216
+ patents or other property right claims or to contest validity of any
217
+ such claims; this section has the sole purpose of protecting the
218
+ integrity of the free software distribution system, which is
219
+ implemented by public license practices. Many people have made
220
+ generous contributions to the wide range of software distributed
221
+ through that system in reliance on consistent application of that
222
+ system; it is up to the author/donor to decide if he or she is willing
223
+ to distribute software through any other system and a licensee cannot
224
+ impose that choice.
225
+
226
+ This section is intended to make thoroughly clear what is believed to
227
+ be a consequence of the rest of this License.
228
+
229
+ 8. If the distribution and/or use of the Program is restricted in
230
+ certain countries either by patents or by copyrighted interfaces, the
231
+ original copyright holder who places the Program under this License
232
+ may add an explicit geographical distribution limitation excluding
233
+ those countries, so that distribution is permitted only in or among
234
+ countries not thus excluded. In such case, this License incorporates
235
+ the limitation as if written in the body of this License.
236
+
237
+ 9. The Free Software Foundation may publish revised and/or new versions
238
+ of the General Public License from time to time. Such new versions will
239
+ be similar in spirit to the present version, but may differ in detail to
240
+ address new problems or concerns.
241
+
242
+ Each version is given a distinguishing version number. If the Program
243
+ specifies a version number of this License which applies to it and "any
244
+ later version", you have the option of following the terms and conditions
245
+ either of that version or of any later version published by the Free
246
+ Software Foundation. If the Program does not specify a version number of
247
+ this License, you may choose any version ever published by the Free Software
248
+ Foundation.
249
+
250
+ 10. If you wish to incorporate parts of the Program into other free
251
+ programs whose distribution conditions are different, write to the author
252
+ to ask for permission. For software which is copyrighted by the Free
253
+ Software Foundation, write to the Free Software Foundation; we sometimes
254
+ make exceptions for this. Our decision will be guided by the two goals
255
+ of preserving the free status of all derivatives of our free software and
256
+ of promoting the sharing and reuse of software generally.
257
+
258
+ NO WARRANTY
259
+
260
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
261
+ FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
262
+ OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
263
+ PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
264
+ OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
265
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
266
+ TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
267
+ PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
268
+ REPAIR OR CORRECTION.
269
+
270
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
271
+ WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
272
+ REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
273
+ INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
274
+ OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
275
+ TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
276
+ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
277
+ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
278
+ POSSIBILITY OF SUCH DAMAGES.
279
+
280
+ END OF TERMS AND CONDITIONS
281
+
282
+ How to Apply These Terms to Your New Programs
283
+
284
+ If you develop a new program, and you want it to be of the greatest
285
+ possible use to the public, the best way to achieve this is to make it
286
+ free software which everyone can redistribute and change under these terms.
287
+
288
+ To do so, attach the following notices to the program. It is safest
289
+ to attach them to the start of each source file to most effectively
290
+ convey the exclusion of warranty; and each file should have at least
291
+ the "copyright" line and a pointer to where the full notice is found.
292
+
293
+ <one line to give the program's name and a brief idea of what it does.>
294
+ Copyright (C) <year> <name of author>
295
+
296
+ This program is free software; you can redistribute it and/or modify
297
+ it under the terms of the GNU General Public License as published by
298
+ the Free Software Foundation; either version 2 of the License, or
299
+ (at your option) any later version.
300
+
301
+ This program is distributed in the hope that it will be useful,
302
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
303
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
304
+ GNU General Public License for more details.
305
+
306
+ You should have received a copy of the GNU General Public License along
307
+ with this program; if not, write to the Free Software Foundation, Inc.,
308
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
309
+
310
+ Also add information on how to contact you by electronic and paper mail.
311
+
312
+ If the program is interactive, make it output a short notice like this
313
+ when it starts in an interactive mode:
314
+
315
+ Gnomovision version 69, Copyright (C) year name of author
316
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
317
+ This is free software, and you are welcome to redistribute it
318
+ under certain conditions; type `show c' for details.
319
+
320
+ The hypothetical commands `show w' and `show c' should show the appropriate
321
+ parts of the General Public License. Of course, the commands you use may
322
+ be called something other than `show w' and `show c'; they could even be
323
+ mouse-clicks or menu items--whatever suits your program.
324
+
325
+ You should also get your employer (if you work as a programmer) or your
326
+ school, if any, to sign a "copyright disclaimer" for the program, if
327
+ necessary. Here is a sample; alter the names:
328
+
329
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
330
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
331
+
332
+ <signature of Ty Coon>, 1 April 1989
333
+ Ty Coon, President of Vice
334
+
335
+ This General Public License does not permit incorporating your program into
336
+ proprietary programs. If your program is a subroutine library, you may
337
+ consider it more useful to permit linking proprietary applications with the
338
+ library. If this is what you want to do, use the GNU Lesser General
339
+ Public License instead of this License.
README.txt ADDED
@@ -0,0 +1,99 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ === WP VR - 360 Panorama and virtual tour creator for WordPress ===
2
+ Contributors: rextheme, coderexco
3
+ Donate link: https://rextheme.com/wp-vr-360-panorama-and-virtual-tour-creator-for-wordpress/
4
+ Tags: VR, virtual reality, panorama, virtual tour, 3d panorama, 360 panorama, real estate tour, interactive tour, panorama viewer
5
+ Requires at least: 4.0
6
+ Tested up to: 5.0
7
+ Stable tag: 1.0.0
8
+ Requires PHP: 5.6
9
+ License: GPLv2 or later
10
+ License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
+
12
+ Let customers take a virtual tour and get them excited!! Let them experience the glimpse of a live tour of your place.
13
+
14
+ == Description ==
15
+ With the WPVR, set up a virtual tour for your customer where they can navigate a 360 view of your location, switch between several spots (or rooms), get information on items on the location, zoom in and out to get better view, and get an overall idea about how your place may look in reality.
16
+
17
+
18
+ > Get your customers hooked by giving them a tour that makes them realize how amazing your place is.
19
+
20
+ **Easy and simple interface** 
21
+ Simple, easy and straight forward options to add your images and create a tour.
22
+
23
+ **Easy direction and navigation tools**
24
+ Create multiple hotspots for each scene at your own will. You can add hotspot type: info to get on-click or hover information or add URL. You can use hotspot type: scene and connect it to visit other scenes.
25
+
26
+ **Customize style easily**
27
+ You can implement your own custom style class and, alter the design and display of content from hotspot easily.
28
+
29
+ **Easy to embed your virtual tour:**
30
+ Creating every tour location generates a shortcode. You can simply apply this shorcode on your page along with proper width and height, and your website will include the virtual tour just the way you want.
31
+
32
+
33
+ = Features: =
34
+ = Free Version =
35
+ * Responsive default design
36
+ * Preview tour on back-end
37
+ * Default Zoom Control
38
+ * Option to set scene fade animation duration
39
+ * Customization freedom of hotspot contents
40
+ * Supports Equiretangular Panaromic Image type
41
+ * Extensive keyboard and move navigation: Use direction keys or click and drag to navigate
42
+ * Mouse scroll or keyboard buttons to zoom in and out
43
+ * Generates shortcodes to embed item on webpage
44
+ * Supports full screen
45
+ * Support from support forum
46
+
47
+ = Premium Version =
48
+ * Unlimited scenes
49
+ * Unlimited hotspots
50
+ * Personalized support on both support forum and our support e-mail.
51
+
52
+
53
+ **Upcoming Features**
54
+ - Panoramic image type support: Cubemap, Multiresolution
55
+ - Target scene angle of view.
56
+ - Target scene default zoom level.
57
+ - Horizontal and vertical grab control.
58
+ - Gutenberg block support.
59
+ - Auto rotation
60
+ - Rotational angle (in seconds)
61
+ - On screen control button.
62
+
63
+
64
+ == Frequently Asked Questions ==
65
+ = 1. Why should I use WPVR? =
66
+ You can easily create a Virtual Tour for your place using WPVR. You simply need to provide a 360 degree panoramic photo, and this plugin will create a virtual tour which customers can navigate easily. You can further add hotspots to include information or add more scenes to navigate to.
67
+
68
+ = 2. Installation =
69
+ You can download the plugin either from wordpress.org or from rextheme.com. Once you have downloaded the file, you can then go to your dashboard, under plugin, select Add New and upload the file. Then Install and activate the plugin. Once activated, on the left side under your dashboard, you will find the option WPVR at the bottom.
70
+
71
+ = 3. What kind of pictures should I take to use in WPVR? =
72
+ To make a perfect equirectangular image, you need to use a 360 degree panoramic photo of the area you want to preview.
73
+
74
+ = 4. Can I embed images and videos on hotspot? =
75
+ Yes, you can include image source or video embed link on the section On Click Content in a hotspot, which will view the image or video when clicked on.
76
+
77
+ = 5. Can I Customize the Content on the hotspot? =
78
+ Yes. You can create a custom class on your theme, stating whatever style you want. Then you can input the class name on the Hotspot Custom Class section in a hotspot, and the content displayed will be customized according to the style you set.
79
+
80
+
81
+ **[Documentation](https://rextheme.com/docs/wpvr-360-panorama-and-virtual-tour-creator-for-wordpress/)** 
82
+
83
+
84
+
85
+ == Screenshots ==
86
+ 1. General settings window.
87
+ 2. Scene setup window.
88
+ 3. Hotspot setup window.
89
+ 4. Preview window.
90
+ 5. Front-end view.
91
+
92
+ == Changelog ==
93
+
94
+ = 1.0 =
95
+ * Hotspot custom icon support.
96
+ * On screen control available.
97
+
98
+ == Upgrade Notice ==
99
+ Please do update the WP VR to the latest version. Each update makes it sure your plugin is supporting all tour features.  
admin/class-wpvr-admin-pages.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
3
+ /**
4
+ * The admin-specific functionality of the plugin.
5
+ *
6
+ * @link http://rextheme.com/
7
+ * @since 1.0.0
8
+ *
9
+ * @package Wpvr
10
+ * @subpackage Wpvr/admin
11
+ */
12
+
13
+ class Wpvr_Admin_Pages {
14
+
15
+ /**
16
+ * Admin page setup is specified in this area.
17
+ */
18
+ function wpvr_add_admin_pages() {
19
+
20
+ add_menu_page( 'Wpvr', 'Wpvr', 'manage_options', 'wpvr', array( $this, 'wpvr_admin_doc'),plugins_url(). '/wpvr/images/icon.png' , 110);
21
+
22
+ add_submenu_page( 'wpvr', 'Wpvr', 'Get Started','manage_options', 'wpvr', array( $this, 'wpvr_admin_doc'));
23
+
24
+ add_submenu_page( 'wpvr', 'Wpvr', 'Tours','manage_options', 'edit.php?post_type=wpvr_item', NULL);
25
+
26
+ add_submenu_page( 'wpvr', 'Wpvr', 'Add New Tour','manage_options', 'post-new.php?post_type=wpvr_item', NULL);
27
+
28
+ }
29
+
30
+ function wpvr_admin_doc() {
31
+
32
+ require_once plugin_dir_path(__FILE__) . '/partials/wpvr_documentation.php';
33
+ }
34
+ }
35
+
admin/class-wpvr-admin.php ADDED
@@ -0,0 +1,1364 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
3
+ /**
4
+ * The admin-specific functionality of the plugin.
5
+ *
6
+ * @link http://rextheme.com/
7
+ * @since 1.0.0
8
+ *
9
+ * @package Wpvr
10
+ * @subpackage Wpvr/admin
11
+ */
12
+
13
+ /**
14
+ * The admin-specific functionality of the plugin.
15
+ *
16
+ * Defines the plugin name, version, and two examples hooks for how to
17
+ * enqueue the admin-specific stylesheet and JavaScript.
18
+ *
19
+ * @package Wpvr
20
+ * @subpackage Wpvr/admin
21
+ * @author Rextheme <sakib@coderex.co>
22
+ */
23
+ class Wpvr_Admin {
24
+
25
+ /**
26
+ * The ID of this plugin.
27
+ *
28
+ * @since 1.0.0
29
+ * @access private
30
+ * @var string $plugin_name The ID of this plugin.
31
+ */
32
+ private $plugin_name;
33
+
34
+ /**
35
+ * The version of this plugin.
36
+ *
37
+ * @since 1.0.0
38
+ * @access private
39
+ * @var string $version The current version of this plugin.
40
+ */
41
+ private $version;
42
+
43
+ /**
44
+ * The post type of this plugin.
45
+ *
46
+ * @since 1.0.0
47
+ */
48
+ private $post_type;
49
+
50
+ /**
51
+ * Initialize the class and set its properties.
52
+ *
53
+ * @since 1.0.0
54
+ * @param string $plugin_name The name of this plugin.
55
+ * @param string $version The version of this plugin.
56
+ */
57
+ public function __construct( $plugin_name, $version, $post_type ) {
58
+
59
+ $this->plugin_name = $plugin_name;
60
+ $this->version = $version;
61
+ $this->post_type = $post_type;
62
+ }
63
+
64
+ /**
65
+ * Register the stylesheets for the admin area.
66
+ *
67
+ * @since 1.0.0
68
+ */
69
+ public function enqueue_styles() {
70
+
71
+ /**
72
+ * This function is provided for demonstration purposes only.
73
+ *
74
+ * An instance of this class should be passed to the run() function
75
+ * defined in Wpvr_Loader as all of the hooks are defined
76
+ * in that particular class.
77
+ *
78
+ * The Wpvr_Loader will then create the relationship
79
+ * between the defined hooks and the functions defined in this
80
+ * class.
81
+ */
82
+ wp_enqueue_style( $this->plugin_name . 'fontawesome', 'https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css', array(), $this->version, 'all' );
83
+ wp_enqueue_style( 'materialize-icons', 'https://fonts.googleapis.com/icon?family=Material+Icons', array(), $this->version, 'all' );
84
+ // wp_enqueue_style( 'materialize-css', plugin_dir_url( __FILE__ ) . 'css/materialize.min.css', array(), $this->version, 'all' );
85
+ // wp_enqueue_style( 'materialize-icons', 'https://fonts.googleapis.com/icon?family=Material+Icons', array(), $this->version, 'all' );
86
+
87
+ $screen = get_current_screen();
88
+
89
+ if ($screen->id=="toplevel_page_wpvr") {
90
+ wp_enqueue_style( 'materialize-css', plugin_dir_url( __FILE__ ) . 'css/materialize.min.css', array(), $this->version, 'all' );
91
+ }
92
+ // wp_enqueue_style( 'materialize-css', plugin_dir_url( __FILE__ ) . 'css/materialize.min.css', array(), $this->version, 'all' );
93
+ wp_enqueue_style('panellium-css', plugin_dir_url( __FILE__ ) . 'lib/pannellum/src/css/pannellum.css', array(), true);
94
+ wp_enqueue_style( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'css/wpvr-admin.css', array(), $this->version, 'all' );
95
+
96
+ }
97
+
98
+ /**
99
+ * Register the JavaScript for the admin area.
100
+ *
101
+ * @since 1.0.0
102
+ */
103
+ public function enqueue_scripts() {
104
+
105
+ /**
106
+ * This function is provided for demonstration purposes only.
107
+ *
108
+ * An instance of this class should be passed to the run() function
109
+ * defined in Wpvr_Loader as all of the hooks are defined
110
+ * in that particular class.
111
+ *
112
+ * The Wpvr_Loader will then create the relationship
113
+ * between the defined hooks and the functions defined in this
114
+ * class.
115
+ */
116
+ wp_enqueue_media();
117
+ wp_enqueue_script('panellium-js', plugin_dir_url( __FILE__ ) . 'lib/pannellum/src/js/pannellum.js', array(), true);
118
+ wp_enqueue_script('panelliumlib-js', plugin_dir_url( __FILE__ ) . 'lib/pannellum/src/js/libpannellum.js', array(), true);
119
+ wp_enqueue_script( 'materialize-js', plugin_dir_url( __FILE__ ) . 'js/materialize.min.js', array( 'jquery' ), $this->version, false );
120
+ wp_enqueue_script( 'jquery-repeater', plugin_dir_url( __FILE__ ) .'js/jquery.repeater.min.js', array('jquery'), true);
121
+ wp_enqueue_script( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'js/wpvr-admin.js', array( 'jquery' ), $this->version, false );
122
+ wp_localize_script( $this->plugin_name, 'wpvr_obj', array(
123
+ 'ajaxurl' => admin_url( 'admin-ajax.php' ),
124
+ 'ajax_nonce' => wp_create_nonce('wpvr'),
125
+ ) );
126
+
127
+ }
128
+
129
+ /**
130
+ * Init the edit screen of the plugin post type item
131
+ *
132
+ * @since 1.0.0
133
+ */
134
+ public function wpvr_admin_init() {
135
+ /*
136
+ * Documentation : https://developer.wordpress.org/reference/functions/add_meta_box/
137
+ */
138
+
139
+ add_meta_box(
140
+ $this->post_type . '_builder_box',
141
+ __('Preview', $this->plugin_name),
142
+ array($this, 'wpvr_display_meta_box_builder'),
143
+ $this->post_type,
144
+ 'advanced',
145
+ 'high'
146
+ );
147
+
148
+ add_meta_box(
149
+ $this->post_type . '_shortcode_box',
150
+ __('Using this VR', $this->plugin_name),
151
+ array($this, 'wpvr_display_meta_box_shortcode'),
152
+ $this->post_type,
153
+ 'side'
154
+ );
155
+ }
156
+
157
+ /**
158
+ * Register the custom post type
159
+ *
160
+ * @since 1.0.0
161
+ */
162
+ public function wpvr_add_plugin_custom_post_type() {
163
+ $labels = array(
164
+ 'name' => __( 'Tour', $this->plugin_name ),
165
+ 'singular_name' => __( 'Tour', $this->plugin_name ),
166
+ 'add_new' => __( 'Add New Tour', $this->plugin_name ),
167
+ 'add_new_item' => __( 'Add New Tour', $this->plugin_name ),
168
+ 'edit_item' => __( 'Edit Tour', $this->plugin_name ),
169
+ 'new_item' => __( 'New Tour', $this->plugin_name ),
170
+ 'view_item' => __( 'View Tour', $this->plugin_name ),
171
+ 'search_items' => __( 'Search Wpvr Tour', $this->plugin_name ),
172
+ 'not_found' => __( 'No Wpvr Tour found', $this->plugin_name ),
173
+ 'not_found_in_trash'=> __( 'No Wpvr Tour found in Trash', $this->plugin_name ),
174
+ 'parent_item_colon' => '',
175
+ 'all_items' => __( 'All Tours', $this->plugin_name ),
176
+ 'menu_name' => __( 'Wpvr', $this->plugin_name ),
177
+ );
178
+
179
+ $args = array(
180
+ 'labels' => $labels,
181
+ 'public' => false,
182
+ 'show_ui' => true,
183
+ 'show_in_menu' => false,
184
+ 'menu_position' => 100,
185
+ 'supports' => array( 'title' ),
186
+ );
187
+
188
+ /**
189
+ * Documentation : https://codex.wordpress.org/Function_Reference/register_post_type
190
+ */
191
+ register_post_type( $this->post_type, $args );
192
+ }
193
+
194
+ /**
195
+ * Populates the data in the custom columns
196
+ *
197
+ * @since 1.0.0
198
+ */
199
+ function wpvr_manage_posts_custom_column( $column_name ){
200
+ $post = get_post();
201
+
202
+ switch( $column_name ) {
203
+ case 'shortcode' :
204
+ echo '<code>[wpvr id="' . $post->ID . '"]</code>';
205
+ break;
206
+ default:
207
+ break;
208
+ }
209
+ }
210
+
211
+ /**
212
+ * Adds the custom columns to the post type admin screen
213
+ *
214
+ * @since 1.0.0
215
+ */
216
+ public function wpvr_manage_post_columns() {
217
+ $columns = array(
218
+ 'cb' => '<input type="checkbox" />',
219
+ 'title' => __( 'Title', $this->plugin_name),
220
+ 'shortcode' => __( 'Shortcodes', $this->plugin_name),
221
+ 'author' => __( 'Author', $this->plugin_name),
222
+ 'date' => __( 'Date', $this->plugin_name)
223
+ );
224
+ return $columns;
225
+ }
226
+
227
+ /**
228
+ * Sets the messages for the custom post type
229
+ *
230
+ * @since 1.0.0
231
+ */
232
+ public function wpvr_post_updated_messages( $messages ) {
233
+ $messages[$this->post_type][1] = __( 'Wpvr item updated.', $this->plugin_name);
234
+ $messages[$this->post_type][4] = __( 'Wpvr item updated.', $this->plugin_name);
235
+
236
+ return $messages;
237
+ }
238
+
239
+ /**
240
+ * Render the shortcode box for this plugin.
241
+ *
242
+ * @since 1.0.0
243
+ */
244
+ public function wpvr_display_meta_box_shortcode() {
245
+
246
+ include_once( 'partials/wpvr-meta-box-shortcode-display.php' );
247
+ }
248
+
249
+ /**
250
+ * Render the builder box for this plugin.
251
+ *
252
+ * @since 1.0.0
253
+ */
254
+ public function wpvr_display_meta_box_builder() {
255
+ include_once( 'partials/wpvr-meta-box-builder-display.php' );
256
+ }
257
+
258
+ /**
259
+ * Custom Metabox
260
+ */
261
+ public function wpvr_add_setup_metabox(){
262
+ add_meta_box( 'setup', __( 'Setup' ), array($this, 'wpvr_setup'), 'wpvr_item', 'normal', 'low' );
263
+ }
264
+ public function wpvr_setup($post) {
265
+ $postdata = get_post_meta( $post->ID, 'panodata', true );
266
+ $autoload = false;
267
+ if (isset($postdata["autoLoad"])) {
268
+ $autoload = $postdata["autoLoad"];
269
+ }
270
+
271
+ $control = false;
272
+ if (isset($postdata["showControls"])) {
273
+ $control = $postdata["showControls"];
274
+ }
275
+
276
+ $default_scene = '';
277
+ if (isset($postdata["defaultscene"])) {
278
+ $default_scene = $postdata["defaultscene"];
279
+ }
280
+
281
+ $scene_fade_duration = '';
282
+ if (isset($postdata["scenefadeduration"])) {
283
+ $scene_fade_duration = $postdata["scenefadeduration"];
284
+ }
285
+
286
+ $pano_data = '';
287
+ if (isset($postdata["panodata"])) {
288
+ $pano_data = $postdata["panodata"];
289
+ }
290
+
291
+ $html = '';
292
+
293
+ $html .= '<div class="pano-setup">';
294
+
295
+ $html .= '<div class="pano-alert scene-alert">';
296
+ $html .= '<span class="destroy"><i class="fa fa-times"></i></span>';
297
+ $html .= '<p></p>';
298
+ $html .= '</div>';
299
+
300
+ $html .='<div class="rex-pano-tabs">';
301
+ $html .='<nav class="rex-pano-tab-nav rex-pano-nav-menu main-nav">';
302
+ $html .='<ul>';
303
+ $html .='<li class="general active"><span data-href="#general"><i class="fa fa-cogs"></i> general</span></li>';
304
+ $html .='<li class="scene"><span data-href="#scenes"><i class="fa fa-photo"></i> Scenes</span></li>';
305
+ $html .='<li class="hotspot"><span data-href="#scenes"><i class="fa fa-dot-circle-o"></i> hotspot</span></li>';
306
+ $html .='</ul>';
307
+ $html .='</nav>';
308
+
309
+ $html .='<div class="rex-pano-tab-content">';
310
+ $html .='<div class="rex-pano-tab general active" id="general">';
311
+
312
+ $html .= '<h6 class="title"> General Settings : </h6>';
313
+ //=Autoload setup=
314
+ if ($autoload == true) {
315
+ $html .= '<div class="single-settings autoload">';
316
+ $html .= '<span>Autoload: </span>';
317
+ $html .= '<ul>';
318
+ $html .= '<li class="radio-btn">';
319
+ $html .= '<input class="styled-radio" id="styled-radio-1" type="radio" name="autoload" value="off">';
320
+ $html .= '<label for="styled-radio-1">Off</label>';
321
+ $html .= '</li>';
322
+
323
+ $html .= '<li class="radio-btn">';
324
+ $html .= '<input class="styled-radio" id="styled-radio-2" type="radio" name="autoload" value="on" checked >';
325
+ $html .= '<label for="styled-radio-2">On</label>';
326
+ $html .= '</li>';
327
+ $html .= '</ul>';
328
+ $html .= '</div>';
329
+ }
330
+ else {
331
+ $html .= '<div class="single-settings autoload">';
332
+ $html .= '<span>Autoload: </span>';
333
+ $html .= '<ul>';
334
+ $html .= '<li class="radio-btn">';
335
+ $html .= '<input class="styled-radio" id="styled-radio-1" type="radio" name="autoload" value="off" checked >';
336
+ $html .= '<label for="styled-radio-1">Off</label>';
337
+ $html .= '</li>';
338
+
339
+ $html .= '<li class="radio-btn">';
340
+ $html .= '<input class="styled-radio" id="styled-radio-2" type="radio" name="autoload" value="on">';
341
+ $html .= '<label for="styled-radio-2">On</label>';
342
+ $html .= '</li>';
343
+ $html .= '</ul>';
344
+ $html .= '</div>';
345
+ }
346
+ //=Autoload setup End=
347
+
348
+ //=Control Setup=
349
+ if ($control == true) {
350
+ $html .= '<div class="single-settings controls">';
351
+ $html .= '<span>Show Controls: </span>';
352
+ $html .= '<ul>';
353
+ $html .= '<li class="radio-btn">';
354
+ $html .= '<input class="styled-radio" id="styled-radio-3" type="radio" name="controls" value="off">';
355
+ $html .= '<label for="styled-radio-3">Off</label>';
356
+ $html .= '</li>';
357
+
358
+ $html .= '<li class="radio-btn">';
359
+ $html .= '<input class="styled-radio" id="styled-radio-4" type="radio" name="controls" value="on" checked >';
360
+ $html .= '<label for="styled-radio-4">On</label>';
361
+ $html .= '</li>';
362
+ $html .= '</ul>';
363
+ $html .= '</div>';
364
+ }
365
+ else {
366
+ $html .= '<div class="single-settings controls">';
367
+ $html .= '<span>Show Controls: </span>';
368
+ $html .= '<ul>';
369
+ $html .= '<li class="radio-btn">';
370
+ $html .= '<input class="styled-radio" id="styled-radio-3" type="radio" name="controls" value="off" checked >';
371
+ $html .= '<label for="styled-radio-3">Off</label>';
372
+ $html .= '</li>';
373
+
374
+ $html .= '<li class="radio-btn">';
375
+ $html .= '<input class="styled-radio" id="styled-radio-4" type="radio" name="controls" value="on">';
376
+ $html .= '<label for="styled-radio-4">On</label>';
377
+ $html .= '</li>';
378
+ $html .= '</ul>';
379
+ $html .= '</div>';
380
+ }
381
+ //=Control setup End=
382
+
383
+ //=Default scene=
384
+ $html .= '<div class="single-settings default-scene">';
385
+ $html .= '<span>Default Scene ID: </span>';
386
+ $html .= '<input type="text" name="default-scene-id" value="'.$default_scene.'" />';
387
+ $html .= '</div>';
388
+ //=Default scene End=
389
+
390
+ //=scene fade duration=
391
+ $html .= '<div class="single-settings scene-fade-duration">';
392
+ $html .= '<span>Scene Fade Duration: </span>';
393
+ $html .= '<input type="number" name="scene-fade-duration" value="'.$scene_fade_duration.'" />';
394
+ $html .= '</div>';
395
+ //=scene fade duration End=
396
+
397
+ $html .='</div>';
398
+ //---end general tab----
399
+
400
+ $html .='<div class="rex-pano-tab" id="scenes">';
401
+
402
+ //=Scene and Hotspot repeater=//
403
+ if (empty($pano_data)) {
404
+ $html .= '<div class="scene-setup rex-pano-sub-tabs" data-limit="5">';
405
+
406
+ $html .= '<nav class="rex-pano-tab-nav rex-pano-nav-menu scene-nav">';
407
+ $html .= '<ul>';
408
+ $html .= '<li class="active"><span data-index="1" data-href="#scene-1">Scene 1</span></li>';
409
+ $html .= '<li class="add" data-repeater-create><span><i class="fa fa-plus-circle"></i> Add</span></li>';
410
+ $html .= '</ul>';
411
+ $html .= '</nav>';
412
+
413
+ $html .= '<div data-repeater-list="scene-list" class="rex-pano-tab-content">';
414
+ $html .= '<div data-repeater-item class="single-scene rex-pano-tab active" data-title="1" id="scene-1">';
415
+
416
+ $html .= '<div class="scene-content">';
417
+ $html .= '<h6 class="title"><i class="fa fa-cog"></i> Scene <span class="scene-num">1</span> Setting </h6>';
418
+
419
+ $html .= '<div class=scene-setting>';
420
+ $html .= '<label for="scene-id">Scene ID : </label>';
421
+ $html .= '<input type="text" name="scene-id"/>';
422
+ $html .= '</div>';
423
+
424
+ $html .= '<div class=scene-setting>';
425
+ $html .= '<label for="scene-type">Scene Type : </label>';
426
+ $html .= '<input type="text" name="scene-type" value="equirectangular" disabled/>';
427
+ $html .= '</div>';
428
+
429
+ $html .= '<div class=scene-setting>';
430
+ $html .= '<label for="scene-upload">Scene Upload: </label>';
431
+ $html .= '<div class="form-group">';
432
+ $html .= '<img src="" style="display: none;"><br>';
433
+ $html .= '<input type="button" class="scene-upload" data-info="" value="Upload"/>';
434
+ $html .= '<input type="hidden" name="scene-attachment-url" class="scene-attachment-url" value="">';
435
+ $html .= '</div>';
436
+ $html .= '</div>';
437
+ $html .= '</div>';
438
+
439
+ //--hotspot setup--
440
+ $html .= '<div class="hotspot-setup rex-pano-sub-tabs" data-limit="5">';
441
+
442
+ $html .= '<nav class="rex-pano-tab-nav rex-pano-nav-menu hotspot-nav">';
443
+ $html .= '<ul>';
444
+ $html .= '<li class="active"><span data-index="1" data-href="#scene-1-hotspot-1">Hotspot 1</span></li>';
445
+ $html .= '<li class="add" data-repeater-create><span><i class="fa fa-plus-circle"></i> Add</span></li>';
446
+ $html .= '</ul>';
447
+ $html .= '</nav>';
448
+
449
+ $html .= '<div data-repeater-list="hotspot-list" class="rex-pano-tab-content">';
450
+ $html .= '<div data-repeater-item class="single-hotspot rex-pano-tab active clearfix" id="scene-1-hotspot-1">';
451
+
452
+ $html .= '<h6 class="title"><i class="fa fa-cog"></i> Hotspot <span class="hotspot-num">1</span> Setting for <span>Scene <span class="scene-num">1</span></span> </h6>';
453
+
454
+ $html .= '<div class="wrapper">';
455
+ $html .= '<div class="hotspot-setting">';
456
+ $html .= '<label for="hotspot-title">Hotspot ID : </label>';
457
+ $html .= '<input type="text" id="hotspot-title" name="hotspot-title"/>';
458
+ $html .= '</div>';
459
+
460
+ $html .= '<div class="hotspot-setting">';
461
+ $html .= '<label for="hotspot-pitch"> Pitch: </label>';
462
+ $html .= '<input type="text" id="hotspot-pitch" name="hotspot-pitch"/>';
463
+ $html .= '</div>';
464
+
465
+ $html .= '<div class="hotspot-setting">';
466
+ $html .= '<label for="hotspot-yaw"> Yaw: </label>';
467
+ $html .= '<input type="text" id="hotspot-yaw" name="hotspot-yaw"/>';
468
+ $html .= '</div>';
469
+
470
+ $html .= '<div class="hotspot-setting">';
471
+ $html .= '<label for="hotspot-customclass">Hotspot custom class: </label>';
472
+ $html .= '<input type="text" id="hotspot-customclass" name="hotspot-customclass"/>';
473
+ $html .= '</div>';
474
+ $html .= '</div>';
475
+
476
+ $html .= '<div class="hotspot-type hotspot-setting">';
477
+ $html .= '<label for="hotspot-type">Hotspot-Type: </label>';
478
+ $html .= '<select name="hotspot-type">';
479
+ $html .= '<option value="info" selected> Info</option>';
480
+ $html .= '<option value="scene"> Scene</option>';
481
+ $html .= '</select>';
482
+
483
+ $html .= '<div class="hotspot-url">';
484
+ $html .= '<label for="hotspot-url"> URL: </label>';
485
+ $html .= '<input type="url" name="hotspot-url" value="" />';
486
+ $html .= '</div>';
487
+
488
+ $html .= '<div class="hotspot-content">';
489
+ $html .= '<label for="hotspot-content"> On click Content: </label>';
490
+ $html .= '<textarea name="hotspot-content"></textarea>';
491
+ $html .= '</div>';
492
+
493
+ $html .= '<div class="hotspot-hover">';
494
+ $html .= '<label for="hotspot-hover"> On hover Content: </label>';
495
+ $html .= '<textarea name="hotspot-hover"></textarea>';
496
+ $html .= '</div>';
497
+
498
+ $html .= '<div class="hotspot-scene" style="display:none;" >';
499
+ $html .= '<label for="hotspot-scene"> Target Scene ID: </label>';
500
+ $html .= '<input type="text" name="hotspot-scene"/>';
501
+ $html .= '</div>';
502
+
503
+ $html .= '</div>';
504
+ //=Hotspot type End=//
505
+ $html .= '<button data-repeater-delete title="Delete Hotspot" type="button" class="delete-hotspot"><i class="fa fa-trash-o"></i></button>';
506
+ $html .= '</div>';
507
+ $html .= '</div>';
508
+
509
+ $html .= '</div>';
510
+ $html .= '<button data-repeater-delete type="button" title="Delete Scene" class="delete-scene"><i class="fa fa-trash-o"></i></button>';
511
+ $html .= '</div>';
512
+ $html .= '</div>';
513
+
514
+ $html .= '</div>';
515
+ }
516
+ else {
517
+ $html .= '<div class="scene-setup rex-pano-sub-tabs" data-limit="5">';
518
+
519
+ $html .= '<nav class="rex-pano-tab-nav rex-pano-nav-menu scene-nav">';
520
+ $html .= '<ul>';
521
+ $html .= '<li><span data-index="0" data-href="#scene-0">Scene 0</span></li>';
522
+ // var_dump($pano_data['scene-list'][0]['scene-id']);
523
+ $i = 1;
524
+ foreach ($pano_data["scene-list"] as $pano_scenes) {
525
+ if ($pano_scenes['scene-id'] == $pano_data['scene-list'][0]['scene-id']) {
526
+ $html .= '<li class="active"><span data-index="'.$i.'" data-href="#scene-'.$i.'">Scene '.$i.'</span></li>';
527
+ }
528
+ else {
529
+ $html .= '<li><span data-index="'.$i.'" data-href="#scene-'.$i.'">Scene '.$i.'</span></li>';
530
+ }
531
+ $i++;
532
+ }
533
+ // $html .= '<li class="active"><span data-index="1" data-href="#scene-1">Scene 1</span></li>';
534
+ $html .= '<li class="add" data-repeater-create><span><i class="fa fa-plus-circle"></i> Add</span></li>';
535
+ $html .= '</ul>';
536
+ $html .= '</nav>';
537
+
538
+
539
+ $html .= '<div data-repeater-list="scene-list" class="rex-pano-tab-content">';
540
+
541
+ //test
542
+ $html .= '<div data-repeater-item class="single-scene rex-pano-tab" data-title="0" id="scene-0">';
543
+
544
+ $html .= '<div class="scene-content">';
545
+ $html .= '<h6 class="title"><i class="fa fa-cog"></i> Scene <span class="scene-num">0</span> Setting </h6>';
546
+
547
+ $html .= '<div class=scene-setting>';
548
+ $html .= '<label for="scene-id">Scene ID : </label>';
549
+ $html .= '<input type="text" name="scene-id"/>';
550
+ $html .= '</div>';
551
+
552
+ $html .= '<div class=scene-setting>';
553
+ $html .= '<label for="scene-type">Scene Type : </label>';
554
+ $html .= '<input type="text" name="scene-type" value="equirectangular" disabled/>';
555
+ $html .= '</div>';
556
+
557
+ $html .= '<div class=scene-setting>';
558
+ $html .= '<label for="scene-upload">Scene Upload: </label>';
559
+ $html .= '<div class="form-group">';
560
+ $html .= '<img src="" style="display: none;"><br>';
561
+ $html .= '<input type="button" class="scene-upload" data-info="" value="Upload"/>';
562
+ $html .= '<input type="hidden" name="scene-attachment-url" class="scene-attachment-url" value="">';
563
+ $html .= '</div>';
564
+ $html .= '</div>';
565
+ $html .= '</div>';
566
+
567
+ //--hotspot setup--
568
+ $html .= '<div class="hotspot-setup rex-pano-sub-tabs" data-limit="5">';
569
+
570
+ $html .= '<nav class="rex-pano-tab-nav rex-pano-nav-menu hotspot-nav">';
571
+ $html .= '<ul>';
572
+ $html .= '<li class="active"><span data-index="1" data-href="#scene-0-hotspot-1">Hotspot 1</span></li>';
573
+ $html .= '<li class="add" data-repeater-create><span><i class="fa fa-plus-circle"></i> Add</span></li>';
574
+ $html .= '</ul>';
575
+ $html .= '</nav>';
576
+
577
+ $html .= '<div data-repeater-list="hotspot-list" class="rex-pano-tab-content">';
578
+ $html .= '<div data-repeater-item class="single-hotspot rex-pano-tab active clearfix" id="scene-0-hotspot-1">';
579
+
580
+ $html .= '<h6 class="title"><i class="fa fa-cog"></i> Hotspot <span class="hotspot-num">1</span> Setting for <span>Scene <span class="scene-num">0</span></span> </h6>';
581
+
582
+ $html .= '<div class="wrapper">';
583
+ $html .= '<div class="hotspot-setting">';
584
+ $html .= '<label for="hotspot-title">Hotspot ID : </label>';
585
+ $html .= '<input type="text" id="hotspot-title" name="hotspot-title"/>';
586
+ $html .= '</div>';
587
+
588
+ $html .= '<div class="hotspot-setting">';
589
+ $html .= '<label for="hotspot-pitch"> Pitch: </label>';
590
+ $html .= '<input type="text" id="hotspot-pitch" name="hotspot-pitch"/>';
591
+ $html .= '</div>';
592
+
593
+ $html .= '<div class="hotspot-setting">';
594
+ $html .= '<label for="hotspot-yaw"> Yaw: </label>';
595
+ $html .= '<input type="text" id="hotspot-yaw" name="hotspot-yaw"/>';
596
+ $html .= '</div>';
597
+
598
+ $html .= '<div class="hotspot-setting">';
599
+ $html .= '<label for="hotspot-customclass">Hotspot custom class: </label>';
600
+ $html .= '<input type="text" id="hotspot-customclass" name="hotspot-customclass"/>';
601
+ $html .= '</div>';
602
+ $html .= '</div>';
603
+
604
+ $html .= '<div class="hotspot-type hotspot-setting">';
605
+ $html .= '<label for="hotspot-type">Hotspot-Type: </label>';
606
+ $html .= '<select name="hotspot-type">';
607
+ $html .= '<option value="info" selected> Info</option>';
608
+ $html .= '<option value="scene"> Scene</option>';
609
+ $html .= '</select>';
610
+
611
+ $html .= '<div class="hotspot-url">';
612
+ $html .= '<label for="hotspot-url"> URL: </label>';
613
+ $html .= '<input type="url" name="hotspot-url" value="" />';
614
+ $html .= '</div>';
615
+
616
+ $html .= '<div class="hotspot-content">';
617
+ $html .= '<label for="hotspot-content"> On click Content: </label>';
618
+ $html .= '<textarea name="hotspot-content"></textarea>';
619
+ $html .= '</div>';
620
+
621
+ $html .= '<div class="hotspot-hover">';
622
+ $html .= '<label for="hotspot-hover"> On hover Content: </label>';
623
+ $html .= '<textarea name="hotspot-hover"></textarea>';
624
+ $html .= '</div>';
625
+
626
+ $html .= '<div class="hotspot-scene" style="display:none;" >';
627
+ $html .= '<label for="hotspot-scene"> Target Scene ID: </label>';
628
+ $html .= '<input type="text" name="hotspot-scene"/>';
629
+ $html .= '</div>';
630
+
631
+ $html .= '</div>';
632
+ //=Hotspot type End=//
633
+ $html .= '<button data-repeater-delete title="Delete Hotspot" type="button" class="delete-hotspot"><i class="fa fa-trash-o"></i></button>';
634
+ $html .= '</div>';
635
+ $html .= '</div>';
636
+
637
+ $html .= '</div>';
638
+ $html .= '<button data-repeater-delete type="button" title="Delete Scene" class="delete-scene"><i class="fa fa-trash-o"></i></button>';
639
+ $html .= '</div>';
640
+ //test
641
+
642
+ $s = 1;
643
+ foreach ($pano_data["scene-list"] as $pano_scenes) {
644
+ $scene_id = '';
645
+ $scene_id = $pano_scenes["scene-id"];
646
+ $scene_type = 'equirectangular';
647
+ $scene_type = $pano_scenes["scene-type"];
648
+ $scene_photo = '';
649
+ $scene_photo = $pano_scenes["scene-attachment-url"];
650
+ $pano_hotspots = array();
651
+ $pano_hotspots = $pano_scenes["hotspot-list"];
652
+
653
+ if ($pano_scenes['scene-id'] == $pano_data['scene-list'][0]['scene-id']) {
654
+ $html .= '<div data-repeater-item class="single-scene rex-pano-tab active" data-title="1" id="scene-'.$s.'">';
655
+
656
+ $html .= '<div class="scene-content">';
657
+ $html .= '<h6 class="title"><i class="fa fa-cog"></i> Scene <span class="scene-num">'.$s.'</span> Setting </h6>';
658
+
659
+ $html .= '<div class=scene-setting>';
660
+ $html .= '<label for="scene-id">Scene ID : </label>';
661
+ $html .= '<input type="text" name="scene-id" value="'.$scene_id.'" />';
662
+ $html .= '</div>';
663
+
664
+ $html .= '<div class=scene-setting>';
665
+ $html .= '<label for="scene-type">Scene Type : </label>';
666
+ $html .= '<input type="text" name="scene-type" value="equirectangular" disabled/>';
667
+ $html .= '</div>';
668
+
669
+ $html .= '<div class=scene-setting>';
670
+ $html .= '<label for="scene-upload">Scene Upload: </label>';
671
+ $html .= '<div class="form-group">';
672
+ $html .= '<img name ="scene-photo" src="'.$scene_photo.'"> <br/>';
673
+ $html .= '<input type="button" class="scene-upload" data-info="" value="Upload"/>';
674
+ $html .= '<input type="hidden" name="scene-attachment-url" class="scene-attachment-url" value="'.$scene_photo.'">';
675
+ $html .= '</div>';
676
+ $html .= '</div>';
677
+ $html .= '</div>';
678
+
679
+ if (!empty($pano_hotspots)) {
680
+ $html .= '<div class="hotspot-setup rex-pano-sub-tabs" data-limit="5">';
681
+
682
+ $html .= '<nav class="rex-pano-tab-nav rex-pano-nav-menu hotspot-nav">';
683
+ $html .= '<ul>';
684
+ $j = 1;
685
+ foreach ($pano_hotspots as $pano_hotspot) {
686
+ if ($pano_hotspot['hotspot-title'] == $pano_hotspots[0]['hotspot-title']) {
687
+ $html .= '<li class="active"><span data-index="'.$j.'" data-href="#scene-'.$s.'-hotspot-'.$j.'">Hotspot '.$j.'</span></li>';
688
+ }
689
+ else {
690
+ $html .= '<li><span data-index="'.$j.'" data-href="#scene-'.$s.'-hotspot-'.$j.'">Hotspot '.$j.'</span></li>';
691
+ }
692
+ $j++;
693
+ }
694
+ //$html .= '<li class="active"><span data-index="1" data-href="#scene-1-hotspot-1">Hotspot 1</span></li>';
695
+ $html .= '<li class="add" data-repeater-create><span><i class="fa fa-plus-circle"></i> Add</span></li>';
696
+ $html .= '</ul>';
697
+ $html .= '</nav>';
698
+
699
+ $html .= '<div data-repeater-list="hotspot-list" class="rex-pano-tab-content">';
700
+
701
+ $h = 1;
702
+ foreach ($pano_hotspots as $pano_hotspot) {
703
+ $hotspot_title = '';
704
+ $hotspot_title = $pano_hotspot['hotspot-title'];
705
+ $hotspot_pitch = '';
706
+ $hotspot_pitch = $pano_hotspot['hotspot-pitch'];
707
+ $hotspot_yaw = '';
708
+ $hotspot_yaw = $pano_hotspot['hotspot-yaw'];
709
+ $hotspot_type = '';
710
+ $hotspot_type = $pano_hotspot['hotspot-type'];
711
+ $hotspot_url = '';
712
+ $hotspot_url = $pano_hotspot['hotspot-url'];
713
+ $hotspot_content = '';
714
+ $hotspot_content = $pano_hotspot['hotspot-content'];
715
+ $hotspot_hover = '';
716
+ $hotspot_hover = $pano_hotspot['hotspot-hover'];
717
+ $hotspot_target_scene = '';
718
+ $hotspot_target_scene = $pano_hotspot['hotspot-scene'];
719
+ $hotspot_custom_class = '';
720
+ $hotspot_custom_class = $pano_hotspot['hotspot-customclass'];
721
+ if ($pano_hotspot['hotspot-title'] == $pano_hotspots[0]['hotspot-title']) {
722
+ $html .= '<div data-repeater-item class="single-hotspot rex-pano-tab active clearfix" id="scene-'.$s.'-hotspot-'.$h.'">';
723
+
724
+ $html .= '<h6 class="title"><i class="fa fa-cog"></i> Hotspot <span class="hotspot-num">'.$h.'</span> Setting for <span>Scene <span class="scene-num">'.$s.'</span></span> </h6>';
725
+
726
+ $html .= '<div class="wrapper">';
727
+ $html .= '<div class="hotspot-setting">';
728
+ $html .= '<label for="hotspot-title">Hotspot ID : </label>';
729
+ $html .= '<input type="text" id="hotspot-title" name="hotspot-title" value="'.$hotspot_title.'" />';
730
+ $html .= '</div>';
731
+
732
+ $html .= '<div class="hotspot-setting">';
733
+ $html .= '<label for="hotspot-pitch"> Pitch: </label>';
734
+ $html .= '<input type="text" id="hotspot-pitch" name="hotspot-pitch" value="'.$hotspot_pitch.'" />';
735
+ $html .= '</div>';
736
+
737
+ $html .= '<div class="hotspot-setting">';
738
+ $html .= '<label for="hotspot-yaw"> Yaw: </label>';
739
+ $html .= '<input type="text" id="hotspot-yaw" name="hotspot-yaw" value="'.$hotspot_yaw.'" />';
740
+ $html .= '</div>';
741
+
742
+ $html .= '<div class="hotspot-setting">';
743
+ $html .= '<label for="hotspot-customclass">Hotspot custom class: </label>';
744
+ $html .= '<input type="text" id="hotspot-customclass" name="hotspot-customclass" value="'.$hotspot_custom_class.'"/>';
745
+ $html .= '</div>';
746
+ $html .= '</div>';
747
+
748
+ //=Hotspot type=//
749
+ if ($hotspot_type == "info") {
750
+
751
+ $html .= '<div class="hotspot-type hotspot-setting">';
752
+ $html .= '<label for="hotspot-type">Hotspot-Type: </label>';
753
+ $html .= '<select name="hotspot-type">';
754
+ $html .= '<option value="info" selected> Info</option>';
755
+ $html .= '<option value="scene"> Scene</option>';
756
+ $html .= '</select>';
757
+
758
+ $html .= '<div class="hotspot-url">';
759
+ $html .= '<label for="hotspot-url"> URL: </label>';
760
+ $html .= '<input type="url" name="hotspot-url" value="'.$hotspot_url.'" />';
761
+ $html .= '</div>';
762
+
763
+ $html .= '<div class="hotspot-content">';
764
+ $html .= '<label for="hotspot-content"> On click Content: </label>';
765
+ $html .= '<textarea name="hotspot-content">'.$hotspot_content.'</textarea>';
766
+ $html .= '</div>';
767
+
768
+ $html .= '<div class="hotspot-hover">';
769
+ $html .= '<label for="hotspot-hover"> On hover Content: </label>';
770
+ $html .= '<textarea name="hotspot-hover">'.$hotspot_hover.'</textarea>';
771
+ $html .= '</div>';
772
+
773
+ $html .= '<div class="hotspot-scene" style="display:none;" >';
774
+ $html .= '<label for="hotspot-scene"> Target Scene ID: </label>';
775
+ $html .= '<input type="text" name="hotspot-scene"/>';
776
+ $html .= '</div>';
777
+
778
+ $html .= '</div>';
779
+
780
+ }
781
+ else {
782
+
783
+ $html .= '<div class="hotspot-type hotspot-setting">';
784
+ $html .= '<label for="hotspot-type">Hotspot-Type: </label>';
785
+ $html .= '<select name="hotspot-type">';
786
+ $html .= '<option value="info"> Info</option>';
787
+ $html .= '<option value="scene" selected> Scene</option>';
788
+ $html .= '</select>';
789
+
790
+ $html .= '<div class="hotspot-url" style="display:none;">';
791
+ $html .= '<label for="hotspot-url"> URL: </label>';
792
+ $html .= '<input type="url" name="hotspot-url" />';
793
+ $html .= '</div>';
794
+
795
+ $html .= '<div class="hotspot-content" style="display:none;>';
796
+ $html .= '<label for="hotspot-content"> On click Content: </label>';
797
+ $html .= '<textarea name="hotspot-content"></textarea>';
798
+ $html .= '</div>';
799
+
800
+ $html .= '<div class="hotspot-hover">';
801
+ $html .= '<label for="hotspot-hover"> On hover Content: </label>';
802
+ $html .= '<textarea name="hotspot-hover">'.$hotspot_hover.'</textarea>';
803
+ $html .= '</div>';
804
+
805
+ $html .= '<div class="hotspot-scene">';
806
+ $html .= '<label for="hotspot-scene"> Target Scene ID: </label>';
807
+ $html .= '<input type="text" name="hotspot-scene" value="'.$hotspot_target_scene.'" />';
808
+ $html .= '</div>';
809
+
810
+ $html .= '</div>';
811
+
812
+ }
813
+ //=Hotspot type End=//
814
+ $html .= '<button data-repeater-delete type="button" title="Delete Hotspot" class="delete-hotspot"><i class="fa fa-trash-o"></i></button>';
815
+ $html .= '</div>';
816
+ }
817
+ else {
818
+ $html .= '<div data-repeater-item class="single-hotspot rex-pano-tab clearfix" id="scene-'.$s.'-hotspot-'.$h.'">';
819
+
820
+ $html .= '<h6 class="title"><i class="fa fa-cog"></i> Hotspot <span class="hotspot-num">'.$h.'</span> Setting for <span>Scene <span class="scene-num">'.$s.'</span></span> </h6>';
821
+
822
+ $html .= '<div class="wrapper">';
823
+ $html .= '<div class="hotspot-setting">';
824
+ $html .= '<label for="hotspot-title">Hotspot ID : </label>';
825
+ $html .= '<input type="text" id="hotspot-title" name="hotspot-title" value="'.$hotspot_title.'" />';
826
+ $html .= '</div>';
827
+
828
+ $html .= '<div class="hotspot-setting">';
829
+ $html .= '<label for="hotspot-pitch"> Pitch: </label>';
830
+ $html .= '<input type="text" id="hotspot-pitch" name="hotspot-pitch" value="'.$hotspot_pitch.'" />';
831
+ $html .= '</div>';
832
+
833
+ $html .= '<div class="hotspot-setting">';
834
+ $html .= '<label for="hotspot-yaw"> Yaw: </label>';
835
+ $html .= '<input type="text" id="hotspot-yaw" name="hotspot-yaw" value="'.$hotspot_yaw.'" />';
836
+ $html .= '</div>';
837
+
838
+ $html .= '<div class="hotspot-setting">';
839
+ $html .= '<label for="hotspot-customclass">Hotspot custom class: </label>';
840
+ $html .= '<input type="text" id="hotspot-customclass" name="hotspot-customclass" value="'.$hotspot_custom_class.'"/>';
841
+ $html .= '</div>';
842
+ $html .= '</div>';
843
+
844
+ //=Hotspot type=//
845
+ if ($hotspot_type == "info") {
846
+
847
+ $html .= '<div class="hotspot-type hotspot-setting">';
848
+ $html .= '<label for="hotspot-type">Hotspot-Type: </label>';
849
+ $html .= '<select name="hotspot-type">';
850
+ $html .= '<option value="info" selected> Info</option>';
851
+ $html .= '<option value="scene"> Scene</option>';
852
+ $html .= '</select>';
853
+
854
+ $html .= '<div class="hotspot-url">';
855
+ $html .= '<label for="hotspot-url"> URL: </label>';
856
+ $html .= '<input type="url" name="hotspot-url" value="'.$hotspot_url.'" />';
857
+ $html .= '</div>';
858
+
859
+ $html .= '<div class="hotspot-content">';
860
+ $html .= '<label for="hotspot-content"> On click Content: </label>';
861
+ $html .= '<textarea name="hotspot-content">'.$hotspot_content.'</textarea>';
862
+ $html .= '</div>';
863
+
864
+ $html .= '<div class="hotspot-hover">';
865
+ $html .= '<label for="hotspot-hover"> On hover Content: </label>';
866
+ $html .= '<textarea name="hotspot-hover">'.$hotspot_hover.'</textarea>';
867
+ $html .= '</div>';
868
+
869
+ $html .= '<div class="hotspot-scene" style="display:none;" >';
870
+ $html .= '<label for="hotspot-scene"> Target Scene ID: </label>';
871
+ $html .= '<input type="text" name="hotspot-scene"/>';
872
+ $html .= '</div>';
873
+
874
+ $html .= '</div>';
875
+
876
+ }
877
+ else {
878
+
879
+ $html .= '<div class="hotspot-type hotspot-setting">';
880
+ $html .= '<label for="hotspot-type">Hotspot-Type: </label>';
881
+ $html .= '<select name="hotspot-type">';
882
+ $html .= '<option value="info"> Info</option>';
883
+ $html .= '<option value="scene" selected> Scene</option>';
884
+ $html .= '</select>';
885
+
886
+ $html .= '<div class="hotspot-url" style="display:none;">';
887
+ $html .= '<label for="hotspot-url"> URL: </label>';
888
+ $html .= '<input type="url" name="hotspot-url" />';
889
+ $html .= '</div>';
890
+
891
+ $html .= '<div class="hotspot-content" style="display:none;>';
892
+ $html .= '<label for="hotspot-content"> On click Content: </label>';
893
+ $html .= '<textarea name="hotspot-content"></textarea>';
894
+ $html .= '</div>';
895
+
896
+ $html .= '<div class="hotspot-hover">';
897
+ $html .= '<label for="hotspot-hover"> On hover Content: </label>';
898
+ $html .= '<textarea name="hotspot-hover">'.$hotspot_hover.'</textarea>';
899
+ $html .= '</div>';
900
+
901
+ $html .= '<div class="hotspot-scene">';
902
+ $html .= '<label for="hotspot-scene"> Target Scene ID: </label>';
903
+ $html .= '<input type="text" name="hotspot-scene" value="'.$hotspot_target_scene.'" />';
904
+ $html .= '</div>';
905
+
906
+ $html .= '</div>';
907
+
908
+ }
909
+ //=Hotspot type End=//
910
+ $html .= '<button data-repeater-delete type="button" title="Delete Hotspot" class="delete-hotspot"><i class="fa fa-trash-o"></i></button>';
911
+ $html .= '</div>';
912
+ }
913
+ $h++;
914
+ }
915
+ $html .= '</div>';
916
+ //$html .= '<input data-repeater-create type="button" value="Add Hotspot"/>';
917
+ $html .= '</div>';
918
+ }
919
+ else {
920
+ $html .= '<div class="hotspot-setup rex-pano-sub-tabs" data-limit="5">';
921
+
922
+ $html .= '<nav class="rex-pano-tab-nav rex-pano-nav-menu hotspot-nav">';
923
+ $html .= '<ul>';
924
+ $html .= '<li class="active"><span data-index="0" data-href="#scene-'.$s.'-hotspot-1">Hotspot 1</span></li>';
925
+ $html .= '<li class="add" data-repeater-create><span><i class="fa fa-plus-circle"></i> Add</span></li>';
926
+ $html .= '</ul>';
927
+ $html .= '</nav>';
928
+
929
+ $html .= '<div data-repeater-list="hotspot-list" class="rex-pano-tab-content>';
930
+
931
+ $html .= '<div data-repeater-item class="single-hotspot rex-pano-tab active clearfix" id="scene-'.$s.'-hotspot-1">';
932
+
933
+ $html .= '<h6 class="title"><i class="fa fa-cog"></i> Hotspot <span class="hotspot-num">1</span> Setting for <span>Scene <span class="scene-num">'.$s.'</span></span> </h6>';
934
+
935
+ $html .= '<div class="wrapper">';
936
+ $html .= '<div class="hotspot-setting">';
937
+ $html .= '<label for="hotspot-title">Hotspot ID : </label>';
938
+ $html .= '<input type="text" id="hotspot-title" name="hotspot-title"/>';
939
+ $html .= '</div>';
940
+
941
+ $html .= '<div class="hotspot-setting">';
942
+ $html .= '<label for="hotspot-pitch"> Pitch: </label>';
943
+ $html .= '<input type="text" id="hotspot-pitch" name="hotspot-pitch"/>';
944
+ $html .= '</div>';
945
+
946
+ $html .= '<div class="hotspot-setting">';
947
+ $html .= '<label for="hotspot-yaw"> Yaw: </label>';
948
+ $html .= '<input type="text" id="hotspot-yaw" name="hotspot-yaw"/>';
949
+ $html .= '</div>';
950
+
951
+ $html .= '<div class="hotspot-setting">';
952
+ $html .= '<label for="hotspot-customclass">Hotspot custom class: </label>';
953
+ $html .= '<input type="text" id="hotspot-customclass" name="hotspot-customclass"/>';
954
+ $html .= '</div>';
955
+ $html .= '</div>';
956
+
957
+ $html .= '<div class="hotspot-type hotspot-setting">';
958
+ $html .= '<label for="hotspot-type">Hotspot-Type: </label>';
959
+ $html .= '<select name="hotspot-type">';
960
+ $html .= '<option value="info" selected> Info</option>';
961
+ $html .= '<option value="scene"> Scene</option>';
962
+ $html .= '</select>';
963
+
964
+ $html .= '<div class="hotspot-url">';
965
+ $html .= '<label for="hotspot-url"> URL: </label>';
966
+ $html .= '<input type="url" name="hotspot-url" />';
967
+ $html .= '</div>';
968
+
969
+ $html .= '<div class="hotspot-content">';
970
+ $html .= '<label for="hotspot-content"> On click Content: </label>';
971
+ $html .= '<textarea name="hotspot-content"></textarea>';
972
+ $html .= '</div>';
973
+
974
+ $html .= '<div class="hotspot-hover">';
975
+ $html .= '<label for="hotspot-hover"> On hover Content: </label>';
976
+ $html .= '<textarea name="hotspot-hover"></textarea>';
977
+ $html .= '</div>';
978
+
979
+ $html .= '<div class="hotspot-scene" style="display:none;" >';
980
+ $html .= '<label for="hotspot-scene"> Target Scene ID: </label>';
981
+ $html .= '<input type="text" name="hotspot-scene"/>';
982
+ $html .= '</div>';
983
+
984
+ $html .= '</div>';
985
+ //=Hotspot type End=//
986
+ $html .= '<button data-repeater-delete type="button" title="Delete Hotspot" class="delete-hotspot"><i class="fa fa-trash-o"></i></button>';
987
+ $html .= '</div>';
988
+
989
+ $html .= '</div>';
990
+ //$html .= '<input data-repeater-create type="button" value="Add Hotspot"/>';
991
+ $html .= '</div>';
992
+ }
993
+ $html .= '<button data-repeater-delete type="button" title="Delete Scene" class="delete-scene"><i class="fa fa-trash-o"></i></button>';
994
+ $html .= '</div>';
995
+ }
996
+ else {
997
+ $html .= '<div data-repeater-item class="single-scene rex-pano-tab" data-title="1" id="scene-'.$s.'">';
998
+
999
+ $html .= '<div class="scene-content">';
1000
+ $html .= '<h6 class="title"><i class="fa fa-cog"></i> Scene <span class="scene-num">'.$s.'</span> Setting </h6>';
1001
+
1002
+ $html .= '<div class=scene-setting>';
1003
+ $html .= '<label for="scene-id">Scene ID : </label>';
1004
+ $html .= '<input type="text" name="scene-id" value="'.$scene_id.'" />';
1005
+ $html .= '</div>';
1006
+
1007
+ $html .= '<div class=scene-setting>';
1008
+ $html .= '<label for="scene-type">Scene Type : </label>';
1009
+ $html .= '<input type="text" name="scene-type" value="equirectangular" disabled/>';
1010
+ $html .= '</div>';
1011
+
1012
+ $html .= '<div class=scene-setting>';
1013
+ $html .= '<label for="scene-upload">Scene Upload: </label>';
1014
+ $html .= '<div class="form-group">';
1015
+ $html .= '<img name ="scene-photo" src="'.$scene_photo.'"> <br/>';
1016
+ $html .= '<input type="button" class="scene-upload" data-info="" value="Upload"/>';
1017
+ $html .= '<input type="hidden" name="scene-attachment-url" class="scene-attachment-url" value="'.$scene_photo.'">';
1018
+ $html .= '</div>';
1019
+ $html .= '</div>';
1020
+ $html .= '</div>';
1021
+
1022
+ if (!empty($pano_hotspots)) {
1023
+ $html .= '<div class="hotspot-setup rex-pano-sub-tabs" data-limit="5">';
1024
+
1025
+ $html .= '<nav class="rex-pano-tab-nav rex-pano-nav-menu hotspot-nav">';
1026
+ $html .= '<ul>';
1027
+ $j = 1;
1028
+ foreach ($pano_hotspots as $pano_hotspot) {
1029
+ if ($pano_hotspot['hotspot-title'] == $pano_hotspots[0]['hotspot-title']) {
1030
+ $html .= '<li class="active"><span data-index="'.$j.'" data-href="#scene-'.$s.'-hotspot-'.$j.'">Hotspot '.$j.'</span></li>';
1031
+ }
1032
+ else {
1033
+ $html .= '<li><span data-index="'.$j.'" data-href="#scene-'.$s.'-hotspot-'.$j.'">Hotspot '.$j.'</span></li>';
1034
+ }
1035
+ $j++;
1036
+ }
1037
+ //$html .= '<li class="active"><span data-index="1" data-href="#scene-1-hotspot-1">Hotspot 1</span></li>';
1038
+ $html .= '<li class="add" data-repeater-create><span><i class="fa fa-plus-circle"></i> Add</span></li>';
1039
+ $html .= '</ul>';
1040
+ $html .= '</nav>';
1041
+
1042
+ $html .= '<div data-repeater-list="hotspot-list" class="rex-pano-tab-content">';
1043
+
1044
+ $h = 1;
1045
+ foreach ($pano_hotspots as $pano_hotspot) {
1046
+ $hotspot_title = '';
1047
+ $hotspot_title = $pano_hotspot['hotspot-title'];
1048
+ $hotspot_pitch = '';
1049
+ $hotspot_pitch = $pano_hotspot['hotspot-pitch'];
1050
+ $hotspot_yaw = '';
1051
+ $hotspot_yaw = $pano_hotspot['hotspot-yaw'];
1052
+ $hotspot_type = '';
1053
+ $hotspot_type = $pano_hotspot['hotspot-type'];
1054
+ $hotspot_url = '';
1055
+ $hotspot_url = $pano_hotspot['hotspot-url'];
1056
+ $hotspot_content = '';
1057
+ $hotspot_content = $pano_hotspot['hotspot-content'];
1058
+ $hotspot_hover = '';
1059
+ $hotspot_hover = $pano_hotspot['hotspot-hover'];
1060
+ $hotspot_target_scene = '';
1061
+ $hotspot_target_scene = $pano_hotspot['hotspot-scene'];
1062
+ $hotspot_custom_class = '';
1063
+ $hotspot_custom_class = $pano_hotspot['hotspot-customclass'];
1064
+ if ($pano_hotspot['hotspot-title'] == $pano_hotspots[0]['hotspot-title']) {
1065
+ $html .= '<div data-repeater-item class="single-hotspot rex-pano-tab active clearfix" id="scene-'.$s.'-hotspot-'.$h.'">';
1066
+
1067
+ $html .= '<h6 class="title"><i class="fa fa-cog"></i> Hotspot <span class="hotspot-num">'.$h.'</span> Setting for <span>Scene <span class="scene-num">'.$s.'</span></span> </h6>';
1068
+
1069
+ $html .= '<div class="wrapper">';
1070
+ $html .= '<div class="hotspot-setting">';
1071
+ $html .= '<label for="hotspot-title">Hotspot ID : </label>';
1072
+ $html .= '<input type="text" id="hotspot-title" name="hotspot-title" value="'.$hotspot_title.'" />';
1073
+ $html .= '</div>';
1074
+
1075
+ $html .= '<div class="hotspot-setting">';
1076
+ $html .= '<label for="hotspot-pitch"> Pitch: </label>';
1077
+ $html .= '<input type="text" id="hotspot-pitch" name="hotspot-pitch" value="'.$hotspot_pitch.'" />';
1078
+ $html .= '</div>';
1079
+
1080
+ $html .= '<div class="hotspot-setting">';
1081
+ $html .= '<label for="hotspot-yaw"> Yaw: </label>';
1082
+ $html .= '<input type="text" id="hotspot-yaw" name="hotspot-yaw" value="'.$hotspot_yaw.'" />';
1083
+ $html .= '</div>';
1084
+
1085
+ $html .= '<div class="hotspot-setting">';
1086
+ $html .= '<label for="hotspot-customclass">Hotspot custom class: </label>';
1087
+ $html .= '<input type="text" id="hotspot-customclass" name="hotspot-customclass" value="'.$hotspot_custom_class.'"/>';
1088
+ $html .= '</div>';
1089
+ $html .= '</div>';
1090
+
1091
+ //=Hotspot type=//
1092
+ if ($hotspot_type == "info") {
1093
+
1094
+ $html .= '<div class="hotspot-type hotspot-setting">';
1095
+ $html .= '<label for="hotspot-type">Hotspot-Type: </label>';
1096
+ $html .= '<select name="hotspot-type">';
1097
+ $html .= '<option value="info" selected> Info</option>';
1098
+ $html .= '<option value="scene"> Scene</option>';
1099
+ $html .= '</select>';
1100
+
1101
+ $html .= '<div class="hotspot-url">';
1102
+ $html .= '<label for="hotspot-url"> URL: </label>';
1103
+ $html .= '<input type="url" name="hotspot-url" value="'.$hotspot_url.'" />';
1104
+ $html .= '</div>';
1105
+
1106
+ $html .= '<div class="hotspot-content">';
1107
+ $html .= '<label for="hotspot-content"> On click Content: </label>';
1108
+ $html .= '<textarea name="hotspot-content">'.$hotspot_content.'</textarea>';
1109
+ $html .= '</div>';
1110
+
1111
+ $html .= '<div class="hotspot-hover">';
1112
+ $html .= '<label for="hotspot-hover"> On hover Content: </label>';
1113
+ $html .= '<textarea name="hotspot-hover">'.$hotspot_hover.'</textarea>';
1114
+ $html .= '</div>';
1115
+
1116
+ $html .= '<div class="hotspot-scene" style="display:none;" >';
1117
+ $html .= '<label for="hotspot-scene"> Target Scene ID: </label>';
1118
+ $html .= '<input type="text" name="hotspot-scene"/>';
1119
+ $html .= '</div>';
1120
+
1121
+ $html .= '</div>';
1122
+
1123
+ }
1124
+ else {
1125
+
1126
+ $html .= '<div class="hotspot-type hotspot-setting">';
1127
+ $html .= '<label for="hotspot-type">Hotspot-Type: </label>';
1128
+ $html .= '<select name="hotspot-type">';
1129
+ $html .= '<option value="info"> Info</option>';
1130
+ $html .= '<option value="scene" selected> Scene</option>';
1131
+ $html .= '</select>';
1132
+
1133
+ $html .= '<div class="hotspot-url" style="display:none;">';
1134
+ $html .= '<label for="hotspot-url"> URL: </label>';
1135
+ $html .= '<input type="url" name="hotspot-url" />';
1136
+ $html .= '</div>';
1137
+
1138
+ $html .= '<div class="hotspot-content" style="display:none;>';
1139
+ $html .= '<label for="hotspot-content"> On click Content: </label>';
1140
+ $html .= '<textarea name="hotspot-content"></textarea>';
1141
+ $html .= '</div>';
1142
+
1143
+ $html .= '<div class="hotspot-hover">';
1144
+ $html .= '<label for="hotspot-hover"> On hover Content: </label>';
1145
+ $html .= '<textarea name="hotspot-hover">'.$hotspot_hover.'</textarea>';
1146
+ $html .= '</div>';
1147
+
1148
+ $html .= '<div class="hotspot-scene">';
1149
+ $html .= '<label for="hotspot-scene"> Target Scene ID: </label>';
1150
+ $html .= '<input type="text" name="hotspot-scene" value="'.$hotspot_target_scene.'" />';
1151
+ $html .= '</div>';
1152
+
1153
+ $html .= '</div>';
1154
+
1155
+ }
1156
+ //=Hotspot type End=//
1157
+ $html .= '<button data-repeater-delete type="button" title="Delete Hotspot" class="delete-hotspot"><i class="fa fa-trash-o"></i></button>';
1158
+ $html .= '</div>';
1159
+ }
1160
+ else {
1161
+ $html .= '<div data-repeater-item class="single-hotspot rex-pano-tab clearfix" id="scene-'.$s.'-hotspot-'.$h.'">';
1162
+
1163
+ $html .= '<h6 class="title"><i class="fa fa-cog"></i> Hotspot <span class="hotspot-num">'.$h.'</span> Setting for <span>Scene <span class="scene-num">'.$s.'</span></span> </h6>';
1164
+
1165
+ $html .= '<div class="wrapper">';
1166
+ $html .= '<div class="hotspot-setting">';
1167
+ $html .= '<label for="hotspot-title">Hotspot ID : </label>';
1168
+ $html .= '<input type="text" id="hotspot-title" name="hotspot-title" value="'.$hotspot_title.'" />';
1169
+ $html .= '</div>';
1170
+
1171
+ $html .= '<div class="hotspot-setting">';
1172
+ $html .= '<label for="hotspot-pitch"> Pitch: </label>';
1173
+ $html .= '<input type="text" id="hotspot-pitch" name="hotspot-pitch" value="'.$hotspot_pitch.'" />';
1174
+ $html .= '</div>';
1175
+
1176
+ $html .= '<div class="hotspot-setting">';
1177
+ $html .= '<label for="hotspot-yaw"> Yaw: </label>';
1178
+ $html .= '<input type="text" id="hotspot-yaw" name="hotspot-yaw" value="'.$hotspot_yaw.'" />';
1179
+ $html .= '</div>';
1180
+
1181
+ $html .= '<div class="hotspot-setting">';
1182
+ $html .= '<label for="hotspot-customclass">Hotspot custom class: </label>';
1183
+ $html .= '<input type="text" id="hotspot-customclass" name="hotspot-customclass" value="'.$hotspot_custom_class.'"/>';
1184
+ $html .= '</div>';
1185
+ $html .= '</div>';
1186
+
1187
+ //=Hotspot type=//
1188
+ if ($hotspot_type == "info") {
1189
+
1190
+ $html .= '<div class="hotspot-type hotspot-setting">';
1191
+ $html .= '<label for="hotspot-type">Hotspot-Type: </label>';
1192
+ $html .= '<select name="hotspot-type">';
1193
+ $html .= '<option value="info" selected> Info</option>';
1194
+ $html .= '<option value="scene"> Scene</option>';
1195
+ $html .= '</select>';
1196
+
1197
+ $html .= '<div class="hotspot-url">';
1198
+ $html .= '<label for="hotspot-url"> URL: </label>';
1199
+ $html .= '<input type="url" name="hotspot-url" value="'.$hotspot_url.'" />';
1200
+ $html .= '</div>';
1201
+
1202
+ $html .= '<div class="hotspot-content">';
1203
+ $html .= '<label for="hotspot-content"> On click Content: </label>';
1204
+ $html .= '<textarea name="hotspot-content">'.$hotspot_content.'</textarea>';
1205
+ $html .= '</div>';
1206
+
1207
+ $html .= '<div class="hotspot-hover">';
1208
+ $html .= '<label for="hotspot-hover"> On hover Content: </label>';
1209
+ $html .= '<textarea name="hotspot-hover">'.$hotspot_hover.'</textarea>';
1210
+ $html .= '</div>';
1211
+
1212
+ $html .= '<div class="hotspot-scene" style="display:none;" >';
1213
+ $html .= '<label for="hotspot-scene"> Target Scene ID: </label>';
1214
+ $html .= '<input type="text" name="hotspot-scene"/>';
1215
+ $html .= '</div>';
1216
+
1217
+ $html .= '</div>';
1218
+
1219
+ }
1220
+ else {
1221
+
1222
+ $html .= '<div class="hotspot-type hotspot-setting">';
1223
+ $html .= '<label for="hotspot-type">Hotspot-Type: </label>';
1224
+ $html .= '<select name="hotspot-type">';
1225
+ $html .= '<option value="info"> Info</option>';
1226
+ $html .= '<option value="scene" selected> Scene</option>';
1227
+ $html .= '</select>';
1228
+
1229
+ $html .= '<div class="hotspot-url" style="display:none;">';
1230
+ $html .= '<label for="hotspot-url"> URL: </label>';
1231
+ $html .= '<input type="url" name="hotspot-url" />';
1232
+ $html .= '</div>';
1233
+
1234
+ $html .= '<div class="hotspot-content" style="display:none;>';
1235
+ $html .= '<label for="hotspot-content"> On click Content: </label>';
1236
+ $html .= '<textarea name="hotspot-content"></textarea>';
1237
+ $html .= '</div>';
1238
+
1239
+ $html .= '<div class="hotspot-hover">';
1240
+ $html .= '<label for="hotspot-hover"> On hover Content: </label>';
1241
+ $html .= '<textarea name="hotspot-hover">'.$hotspot_hover.'</textarea>';
1242
+ $html .= '</div>';
1243
+
1244
+ $html .= '<div class="hotspot-scene">';
1245
+ $html .= '<label for="hotspot-scene"> Target Scene ID: </label>';
1246
+ $html .= '<input type="text" name="hotspot-scene" value="'.$hotspot_target_scene.'" />';
1247
+ $html .= '</div>';
1248
+
1249
+ $html .= '</div>';
1250
+
1251
+ }
1252
+ //=Hotspot type End=//
1253
+ $html .= '<button data-repeater-delete type="button" title="Delete Hotspot" class="delete-hotspot"><i class="fa fa-trash-o"></i></button>';
1254
+ $html .= '</div>';
1255
+ }
1256
+ $h++;
1257
+ }
1258
+ $html .= '</div>';
1259
+ //$html .= '<input data-repeater-create type="button" value="Add Hotspot"/>';
1260
+ $html .= '</div>';
1261
+ }
1262
+ else {
1263
+ $html .= '<div class="hotspot-setup rex-pano-sub-tabs" data-limit="5">';
1264
+
1265
+ $html .= '<nav class="rex-pano-tab-nav rex-pano-nav-menu hotspot-nav">';
1266
+ $html .= '<ul>';
1267
+ $html .= '<li class="active"><span data-index="1" data-href="#scene-'.$s.'-hotspot-1">Hotspot 1</span></li>';
1268
+ $html .= '<li class="add" data-repeater-create><span><i class="fa fa-plus-circle"></i> Add</span></li>';
1269
+ $html .= '</ul>';
1270
+ $html .= '</nav>';
1271
+
1272
+ $html .= '<div data-repeater-list="hotspot-list" class="rex-pano-tab-content>';
1273
+
1274
+ $html .= '<div data-repeater-item class="single-hotspot rex-pano-tab active clearfix" id="scene-'.$s.'-hotspot-1">';
1275
+
1276
+ $html .= '<h6 class="title"><i class="fa fa-cog"></i> Hotspot <span class="hotspot-num">1</span> Setting for <span>Scene <span class="scene-num">'.$s.'</span></span> </h6>';
1277
+
1278
+ $html .= '<div class="wrapper">';
1279
+ $html .= '<div class="hotspot-setting">';
1280
+ $html .= '<label for="hotspot-title">Hotspot ID : </label>';
1281
+ $html .= '<input type="text" id="hotspot-title" name="hotspot-title"/>';
1282
+ $html .= '</div>';
1283
+
1284
+ $html .= '<div class="hotspot-setting">';
1285
+ $html .= '<label for="hotspot-pitch"> Pitch: </label>';
1286
+ $html .= '<input type="text" id="hotspot-pitch" name="hotspot-pitch"/>';
1287
+ $html .= '</div>';
1288
+
1289
+ $html .= '<div class="hotspot-setting">';
1290
+ $html .= '<label for="hotspot-yaw"> Yaw: </label>';
1291
+ $html .= '<input type="text" id="hotspot-yaw" name="hotspot-yaw"/>';
1292
+ $html .= '</div>';
1293
+
1294
+ $html .= '<div class="hotspot-setting">';
1295
+ $html .= '<label for="hotspot-customclass">Hotspot custom class: </label>';
1296
+ $html .= '<input type="text" id="hotspot-customclass" name="hotspot-customclass"/>';
1297
+ $html .= '</div>';
1298
+ $html .= '</div>';
1299
+
1300
+ $html .= '<div class="hotspot-type hotspot-setting">';
1301
+ $html .= '<label for="hotspot-type">Hotspot-Type: </label>';
1302
+ $html .= '<select name="hotspot-type">';
1303
+ $html .= '<option value="info" selected> Info</option>';
1304
+ $html .= '<option value="scene"> Scene</option>';
1305
+ $html .= '</select>';
1306
+
1307
+ $html .= '<div class="hotspot-url">';
1308
+ $html .= '<label for="hotspot-url"> URL: </label>';
1309
+ $html .= '<input type="url" name="hotspot-url" />';
1310
+ $html .= '</div>';
1311
+
1312
+ $html .= '<div class="hotspot-content">';
1313
+ $html .= '<label for="hotspot-content"> On click Content: </label>';
1314
+ $html .= '<textarea name="hotspot-content"></textarea>';
1315
+ $html .= '</div>';
1316
+
1317
+ $html .= '<div class="hotspot-hover">';
1318
+ $html .= '<label for="hotspot-hover"> On hover Content: </label>';
1319
+ $html .= '<textarea name="hotspot-hover"></textarea>';
1320
+ $html .= '</div>';
1321
+
1322
+ $html .= '<div class="hotspot-scene" style="display:none;" >';
1323
+ $html .= '<label for="hotspot-scene"> Target Scene ID: </label>';
1324
+ $html .= '<input type="text" name="hotspot-scene"/>';
1325
+ $html .= '</div>';
1326
+
1327
+ $html .= '</div>';
1328
+ //=Hotspot type End=//
1329
+ $html .= '<button data-repeater-delete type="button" title="Delete Hotspot" class="delete-hotspot"><i class="fa fa-trash-o"></i></button>';
1330
+ $html .= '</div>';
1331
+
1332
+ $html .= '</div>';
1333
+ //$html .= '<input data-repeater-create type="button" value="Add Hotspot"/>';
1334
+ $html .= '</div>';
1335
+ }
1336
+ $html .= '<button data-repeater-delete type="button" title="Delete Scene" class="delete-scene"><i class="fa fa-trash-o"></i></button>';
1337
+ $html .= '</div>';
1338
+ }
1339
+ $s++;
1340
+ }
1341
+ $html .= '</div>';
1342
+
1343
+ $html .= '</div>';
1344
+ }
1345
+
1346
+ $html .= '<div class="preview-btn-wrapper">';
1347
+ $html .= '<div class="preview-btn-area clearfix">';
1348
+ $html .= '<div id="error_occured"></div>';
1349
+ $html .= '<button id="panolenspreview">Preview</button>';
1350
+ $html .= '</div>';
1351
+ $html .= '</div>';
1352
+ $html .='</div>';
1353
+ //---end scenes tab----
1354
+
1355
+ $html .='</div>';
1356
+ //---end rex-pano-tab-content----
1357
+
1358
+ $html .='</div>';
1359
+ //---end rex-pano-tabs---
1360
+ $html .= '</div>';
1361
+ echo $html;
1362
+ }
1363
+
1364
+ }
admin/class-wpvr-ajax.php ADDED
@@ -0,0 +1,353 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
3
+ /**
4
+ * The admin-specific Ajax files.
5
+ *
6
+ * @link http://rextheme.com/
7
+ * @since 1.0.0
8
+ *
9
+ * @package Wpvr
10
+ * @subpackage Wpvr/admin
11
+ */
12
+
13
+ class Wpvr_Ajax {
14
+
15
+ /**
16
+ * Preview show ajax function
17
+ */
18
+ function wpvr_show_preview() {
19
+ $panoid ='';
20
+ $postid = sanitize_text_field($_POST['postid']);
21
+ $post_type = get_post_type( $postid );
22
+
23
+ $panoid = 'pano'.$postid;
24
+
25
+ $control = sanitize_text_field($_POST['control']);
26
+ if ($control == 'on') {
27
+ $control = true;
28
+ }
29
+ else {
30
+ $control = false;
31
+ }
32
+
33
+ $autoload = sanitize_text_field($_POST['autoload']);
34
+ if ($autoload == 'on') {
35
+ $autoload = true;
36
+ }
37
+ else {
38
+ $autoload = false;
39
+ }
40
+
41
+ $default_scene = '';
42
+ $default_scene = sanitize_text_field($_POST['defaultscene']);
43
+ if (empty($default_scene)) {
44
+ wp_send_json_error('<p><span>Warning:</span> Default scene id required. Go to general setting\'s tab & check.</p>');
45
+ die();
46
+ }
47
+
48
+ $scene_fade_duration = '';
49
+ $scene_fade_duration = sanitize_text_field($_POST['scenefadeduration']);
50
+
51
+ $panodata = $_POST['panodata'];
52
+
53
+ //===Error Control and Validation===//
54
+ if (!wpvr_in_array_r($default_scene, $panodata)) {
55
+ wp_send_json_error('<p><span>Warning:</span> Default scene id is invalid. Go to general setting\'s tab & check.</p>');
56
+ die();
57
+ }
58
+
59
+ if ($panodata["scene-list"] != "") {
60
+ foreach ($panodata["scene-list"] as $scenes_val) {
61
+ $scene_id_validate = $scenes_val["scene-id"];
62
+ if (!empty($scene_id_validate)) {
63
+ $scene_id_validated = preg_replace('/[^0-9a-zA-Z_]/',"",$scene_id_validate);
64
+ if ($scene_id_validated != $scene_id_validate) {
65
+ wp_send_json_error('<p><span>Warning:</span> The scene id can only contain letters and numbers</p>');
66
+ die();
67
+ }
68
+ }
69
+
70
+ if (empty($scene_id_validate)) {
71
+ wp_send_json_error('<p><span>Warning:</span> Scene Id is required for every scene.</p>');
72
+ die();
73
+ }
74
+
75
+ if (empty($scenes_val["scene-attachment-url"])) {
76
+ wp_send_json_error('<p><span>Warning:</span> A scene image is required for every scene.</p>');
77
+ die();
78
+ }
79
+
80
+ if ($scenes_val["hotspot-list"] != "") {
81
+ foreach ($scenes_val["hotspot-list"] as $hotspot_val) {
82
+ $hotspot_title_validate = $hotspot_val["hotspot-title"];
83
+ // if (empty($hotspot_title_validate)) {
84
+ // wp_send_json_error('<p><span>Warning:</span> Hotspot title is required for every hotspot.</p>');
85
+ // die();
86
+ // }
87
+
88
+ if (!empty($hotspot_title_validate)) {
89
+ $hotspot_title_validated = preg_replace('/[^0-9a-zA-Z_]/',"",$hotspot_title_validate);
90
+ if ($hotspot_title_validated != $hotspot_title_validate) {
91
+ wp_send_json_error('<p><span>Warning:</span> Hotspot title can only contain letters and numbers</p>');
92
+ die();
93
+ }
94
+ }
95
+
96
+ $hotspot_pitch_validate = $hotspot_val["hotspot-pitch"];
97
+ // if (empty($hotspot_pitch_validate)) {
98
+ // wp_send_json_error('<p><span>Warning:</span> Hotspot pitch is required for every hotspot.</p>');
99
+ // die();
100
+ // }
101
+ if (!empty($hotspot_pitch_validate)) {
102
+ $hotspot_pitch_validated = preg_replace('/[^0-9.-]/','',$hotspot_pitch_validate);
103
+ if ($hotspot_pitch_validated != $hotspot_pitch_validate) {
104
+ wp_send_json_error('<p><span>Warning:</span> Hotspot pitch can only contain float numbers</p>');
105
+ die();
106
+ }
107
+ }
108
+
109
+ $hotspot_yaw_validate = $hotspot_val["hotspot-yaw"];
110
+ // if (empty($hotspot_yaw_validate)) {
111
+ // wp_send_json_error('<p><span>Warning:</span> Hotspot yaw is required for every hotspot.</p>');
112
+ // die();
113
+ // }
114
+ if (!empty($hotspot_yaw_validate)) {
115
+ $hotspot_yaw_validated = preg_replace('/[^0-9.-]/','',$hotspot_yaw_validate);
116
+ if ($hotspot_yaw_validated != $hotspot_yaw_validate) {
117
+ wp_send_json_error('<p><span>Warning:</span> Hotspot yaw can only contain float numbers</p>');
118
+ die();
119
+ }
120
+ }
121
+ $hotspot_type_validate = $hotspot_val["hotspot-type"];
122
+ $hotspot_url_validate = $hotspot_val["hotspot-url"];
123
+ if (!empty($hotspot_url_validate)) {
124
+ $hotspot_url_validated = esc_url($hotspot_url_validate);
125
+ if ($hotspot_url_validated != $hotspot_url_validate) {
126
+ wp_send_json_error('<p><span>Warning:</span> Hotspot Url is invalid</p>');
127
+ die();
128
+ }
129
+ }
130
+ $hotspot_content_validate = $hotspot_val["hotspot-content"];
131
+
132
+ $hotspot_scene_validate = $hotspot_val["hotspot-scene"];
133
+
134
+ if ($hotspot_type_validate == "info") {
135
+ if (!empty($hotspot_scene_validate)) {
136
+ wp_send_json_error('<p><span>Warning:</span> Don\'t add Target Scene ID on info type hotspot</p>');
137
+ die();
138
+ }
139
+ if (!empty($hotspot_url_validate) && !empty($hotspot_content_validate)) {
140
+ wp_send_json_error('<p><span>Warning:</span> Don\'t add Url and On click content both on same hotspot.</p>');
141
+ die();
142
+ }
143
+ }
144
+
145
+ if ($hotspot_type_validate == "scene") {
146
+ if (empty($hotspot_scene_validate)) {
147
+ wp_send_json_error('<p><span>Warning:</span> Target scene id is required for scene type hotspot.</p>');
148
+ die();
149
+ }
150
+ if (!empty($hotspot_url_validate) || !empty($hotspot_content_validate)) {
151
+ wp_send_json_error('<p><span>Warning:</span> Don\'t add Url or On click content on scene type hotspot.</p>');
152
+ die();
153
+ }
154
+ }
155
+ }
156
+ }
157
+ }
158
+ }
159
+ //===Error Control and Validation===//
160
+
161
+ $default_data = array();
162
+ $default_data = array(__( "firstScene" )=>$default_scene,__( "sceneFadeDuration" )=>$scene_fade_duration);
163
+ $scene_data = array();
164
+
165
+ foreach ($panodata["scene-list"] as $panoscenes) {
166
+
167
+ $hotspot_datas = $panoscenes["hotspot-list"];
168
+ $hotspots = array();
169
+ foreach ($hotspot_datas as $hotspot_data) {
170
+
171
+ $hotspot_info = array(
172
+ __( "text" )=>$hotspot_data["hotspot-title"],
173
+ __( "pitch" )=>$hotspot_data["hotspot-pitch"],
174
+ __( "yaw" )=>$hotspot_data["hotspot-yaw"],
175
+ __( "type" )=>$hotspot_data["hotspot-type"],
176
+ // __( "cssClass" )=>$hotspot_data["hotspot-customclass"],
177
+ __( "URL" )=>$hotspot_data["hotspot-url"],
178
+ __( "clickHandlerArgs" )=>$hotspot_data["hotspot-content"],
179
+ __( "createTooltipArgs" )=>$hotspot_data["hotspot-hover"],
180
+ __( "sceneId" )=>$hotspot_data["hotspot-scene"]);
181
+ array_push($hotspots, $hotspot_info);
182
+ }
183
+
184
+ $scene_info = array();
185
+ $scene_info = array(__( "type" )=>$panoscenes["scene-type"],__( "panorama" )=>$panoscenes["scene-attachment-url"],__( "hotSpots" )=>$hotspots);
186
+ $scene_array = array();
187
+ $scene_array = array(
188
+ __($panoscenes["scene-id"])=>$scene_info
189
+ );
190
+ $scene_data[$panoscenes["scene-id"]] = $scene_info;
191
+ }
192
+
193
+ $pano_id_array = array();
194
+ $pano_id_array = array(__( "panoid" )=>$panoid);
195
+ $pano_response = array();
196
+ $pano_response = array(__( "autoLoad" )=>$autoload,__( "showControls" )=>$control,__( "default" )=>$default_data,__( "scenes" )=>$scene_data);
197
+ $response = array();
198
+ $response = array($pano_id_array,$pano_response);
199
+
200
+ wp_send_json_success( $response );
201
+ }
202
+
203
+ function wpvr_save_data() {
204
+ $panoid ='';
205
+ $postid = sanitize_text_field($_POST['postid']);
206
+ $post_type = get_post_type( $postid );
207
+ if ($post_type != 'wpvr_item') {
208
+ die();
209
+ }
210
+ $panoid = 'pano'.$postid;
211
+
212
+ $control = sanitize_text_field($_POST['control']);
213
+ if ($control == 'on') {
214
+ $control = true;
215
+ }
216
+ else {
217
+ $control = false;
218
+ }
219
+
220
+ $autoload = sanitize_text_field($_POST['autoload']);
221
+ if ($autoload == 'on') {
222
+ $autoload = true;
223
+ }
224
+ else {
225
+ $autoload = false;
226
+ }
227
+
228
+ $default_scene = '';
229
+ $default_scene = sanitize_text_field($_POST['defaultscene']);
230
+ if (empty($default_scene)) {
231
+ wp_send_json_error('<p>Default scene id required. Go to general setting\'s tab & check. </p>');
232
+ die();
233
+ }
234
+
235
+ $scene_fade_duration = '';
236
+ $scene_fade_duration = $_POST['scenefadeduration'];
237
+
238
+ $panodata = $_POST['panodata'];
239
+
240
+ //===Error Control and Validation===//
241
+ if (!wpvr_in_array_r($default_scene, $panodata)) {
242
+ wp_send_json_error('<p><span>Warning:</span> Default scene id is invalid. Go to general setting\'s tab & check.</p>');
243
+ die();
244
+ }
245
+
246
+ if ($panodata["scene-list"] != "") {
247
+ foreach ($panodata["scene-list"] as $scenes_val) {
248
+ $scene_id_validate = $scenes_val["scene-id"];
249
+ if (!empty($scene_id_validate)) {
250
+ $scene_id_validated = preg_replace('/[^0-9a-zA-Z_]/',"",$scene_id_validate);
251
+ if ($scene_id_validated != $scene_id_validate) {
252
+ wp_send_json_error('<p><span>Warning:</span> The scene id can only contain letters and numbers.</p>');
253
+ die();
254
+ }
255
+ }
256
+
257
+ if (empty($scene_id_validate)) {
258
+ wp_send_json_error('<p>Scene Id is required</p>');
259
+ die();
260
+ }
261
+
262
+ if (empty($scenes_val["scene-attachment-url"])) {
263
+ wp_send_json_error('<p><span>Warning:</span> A scene image is required for every scene.</p>');
264
+ die();
265
+ }
266
+
267
+ if ($scenes_val["hotspot-list"] != "") {
268
+ foreach ($scenes_val["hotspot-list"] as $hotspot_val) {
269
+ $hotspot_title_validate = $hotspot_val["hotspot-title"];
270
+ if (empty($hotspot_title_validate)) {
271
+ wp_send_json_error('<p><span>Warning:</span> Hotspot title is required for every hotspot.</p>');
272
+ die();
273
+ }
274
+
275
+ if (!empty($hotspot_title_validate)) {
276
+ $hotspot_title_validated = preg_replace('/[^0-9a-zA-Z_]/',"",$hotspot_title_validate);
277
+ if ($hotspot_title_validated != $hotspot_title_validate) {
278
+ wp_send_json_error('<p><span>Warning:</span> Hotspot title can only contain letters and numbers.</p>');
279
+ die();
280
+ }
281
+ }
282
+
283
+ $hotspot_pitch_validate = $hotspot_val["hotspot-pitch"];
284
+ if (empty($hotspot_pitch_validate)) {
285
+ wp_send_json_error('<p><span>Warning:</span> Hotspot pitch is required for every hotspot.</p>');
286
+ die();
287
+ }
288
+ if (!empty($hotspot_pitch_validate)) {
289
+ $hotspot_pitch_validated = preg_replace('/[^0-9.-]/','',$hotspot_pitch_validate);
290
+ if ($hotspot_pitch_validated != $hotspot_pitch_validate) {
291
+ wp_send_json_error('<p><span>Warning:</span> Hotspot pitch can only contain float numbers.</p>');
292
+ die();
293
+ }
294
+ }
295
+
296
+ $hotspot_yaw_validate = $hotspot_val["hotspot-yaw"];
297
+ if (empty($hotspot_yaw_validate)) {
298
+ wp_send_json_error('<p><span>Warning:</span> Hotspot yaw is required for every hotspot.</p>');
299
+ die();
300
+ }
301
+ if (!empty($hotspot_yaw_validate)) {
302
+ $hotspot_yaw_validated = preg_replace('/[^0-9.-]/','',$hotspot_yaw_validate);
303
+ if ($hotspot_yaw_validated != $hotspot_yaw_validate) {
304
+ wp_send_json_error('<p><span>Warning:</span> Hotspot yaw can only contain float numbers.</p>');
305
+ die();
306
+ }
307
+ }
308
+ $hotspot_type_validate = $hotspot_val["hotspot-type"];
309
+ $hotspot_url_validate = $hotspot_val["hotspot-url"];
310
+ if (!empty($hotspot_url_validate)) {
311
+ $hotspot_url_validated = esc_url($hotspot_url_validate);
312
+ if ($hotspot_url_validated != $hotspot_url_validate) {
313
+ wp_send_json_error('<p><span>Warning:</span> Hotspot Url is invalid.</p>');
314
+ die();
315
+ }
316
+ }
317
+ $hotspot_content_validate = $hotspot_val["hotspot-content"];
318
+
319
+ $hotspot_scene_validate = $hotspot_val["hotspot-scene"];
320
+
321
+ if ($hotspot_type_validate == "info") {
322
+ if (!empty($hotspot_scene_validate)) {
323
+ wp_send_json_error('<p><span>Warning:</span> Don\'t add Target Scene ID on info type hotspot.</p>');
324
+ die();
325
+ }
326
+ if (!empty($hotspot_url_validate) && !empty($hotspot_content_validate)) {
327
+ wp_send_json_error('<p><span>Warning:</span> Don\'t add Url and On click content both on same hotspot.</p>');
328
+ die();
329
+ }
330
+ }
331
+
332
+ if ($hotspot_type_validate == "scene") {
333
+ if (empty($hotspot_scene_validate)) {
334
+ wp_send_json_error('<p><span>Warning:</span> Targer scene id is required for scene type hotspot.</p>');
335
+ die();
336
+ }
337
+ if (!empty($hotspot_url_validate) || !empty($hotspot_content_validate)) {
338
+ wp_send_json_error('<p><span>Warning:</span> Don\'t add Url or On click content on scene type hotspot.</p>');
339
+ die();
340
+ }
341
+ }
342
+ }
343
+ }
344
+ }
345
+ }
346
+ //===Error Control and Validation===//
347
+
348
+ $pano_array = array();
349
+ $pano_array = array(__( "panoid" )=>$panoid,__( "autoLoad" )=>$autoload,__( "showControls" )=>$control,__( "defaultscene" )=>$default_scene,__( "scenefadeduration" )=>$scene_fade_duration,__( "panodata" )=>$panodata);
350
+ update_post_meta( $postid, 'panodata', $pano_array );
351
+ die();
352
+ }
353
+ }
admin/css/font-awesome.min.css ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ /*!
2
+ * Font Awesome 4.6.1 by @davegandy - http://fontawesome.io - @fontawesome
3
+ * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
4
+ */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.6.1');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.6.1') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.6.1') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.6.1') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.6.1') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.6.1#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}
admin/css/materialize.css ADDED
@@ -0,0 +1,8582 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Materialize v0.98.0 (http://materializecss.com)
3
+ * Copyright 2014-2015 Materialize
4
+ * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE)
5
+ */
6
+ .materialize-red {
7
+ background-color: #e51c23 !important;
8
+ }
9
+
10
+ .materialize-red-text {
11
+ color: #e51c23 !important;
12
+ }
13
+
14
+ .materialize-red.lighten-5 {
15
+ background-color: #fdeaeb !important;
16
+ }
17
+
18
+ .materialize-red-text.text-lighten-5 {
19
+ color: #fdeaeb !important;
20
+ }
21
+
22
+ .materialize-red.lighten-4 {
23
+ background-color: #f8c1c3 !important;
24
+ }
25
+
26
+ .materialize-red-text.text-lighten-4 {
27
+ color: #f8c1c3 !important;
28
+ }
29
+
30
+ .materialize-red.lighten-3 {
31
+ background-color: #f3989b !important;
32
+ }
33
+
34
+ .materialize-red-text.text-lighten-3 {
35
+ color: #f3989b !important;
36
+ }
37
+
38
+ .materialize-red.lighten-2 {
39
+ background-color: #ee6e73 !important;
40
+ }
41
+
42
+ .materialize-red-text.text-lighten-2 {
43
+ color: #ee6e73 !important;
44
+ }
45
+
46
+ .materialize-red.lighten-1 {
47
+ background-color: #ea454b !important;
48
+ }
49
+
50
+ .materialize-red-text.text-lighten-1 {
51
+ color: #ea454b !important;
52
+ }
53
+
54
+ .materialize-red.darken-1 {
55
+ background-color: #d0181e !important;
56
+ }
57
+
58
+ .materialize-red-text.text-darken-1 {
59
+ color: #d0181e !important;
60
+ }
61
+
62
+ .materialize-red.darken-2 {
63
+ background-color: #b9151b !important;
64
+ }
65
+
66
+ .materialize-red-text.text-darken-2 {
67
+ color: #b9151b !important;
68
+ }
69
+
70
+ .materialize-red.darken-3 {
71
+ background-color: #a21318 !important;
72
+ }
73
+
74
+ .materialize-red-text.text-darken-3 {
75
+ color: #a21318 !important;
76
+ }
77
+
78
+ .materialize-red.darken-4 {
79
+ background-color: #8b1014 !important;
80
+ }
81
+
82
+ .materialize-red-text.text-darken-4 {
83
+ color: #8b1014 !important;
84
+ }
85
+
86
+ .red {
87
+ background-color: #F44336 !important;
88
+ }
89
+
90
+ .red-text {
91
+ color: #F44336 !important;
92
+ }
93
+
94
+ .red.lighten-5 {
95
+ background-color: #FFEBEE !important;
96
+ }
97
+
98
+ .red-text.text-lighten-5 {
99
+ color: #FFEBEE !important;
100
+ }
101
+
102
+ .red.lighten-4 {
103
+ background-color: #FFCDD2 !important;
104
+ }
105
+
106
+ .red-text.text-lighten-4 {
107
+ color: #FFCDD2 !important;
108
+ }
109
+
110
+ .red.lighten-3 {
111
+ background-color: #EF9A9A !important;
112
+ }
113
+
114
+ .red-text.text-lighten-3 {
115
+ color: #EF9A9A !important;
116
+ }
117
+
118
+ .red.lighten-2 {
119
+ background-color: #E57373 !important;
120
+ }
121
+
122
+ .red-text.text-lighten-2 {
123
+ color: #E57373 !important;
124
+ }
125
+
126
+ .red.lighten-1 {
127
+ background-color: #EF5350 !important;
128
+ }
129
+
130
+ .red-text.text-lighten-1 {
131
+ color: #EF5350 !important;
132
+ }
133
+
134
+ .red.darken-1 {
135
+ background-color: #E53935 !important;
136
+ }
137
+
138
+ .red-text.text-darken-1 {
139
+ color: #E53935 !important;
140
+ }
141
+
142
+ .red.darken-2 {
143
+ background-color: #D32F2F !important;
144
+ }
145
+
146
+ .red-text.text-darken-2 {
147
+ color: #D32F2F !important;
148
+ }
149
+
150
+ .red.darken-3 {
151
+ background-color: #C62828 !important;
152
+ }
153
+
154
+ .red-text.text-darken-3 {
155
+ color: #C62828 !important;
156
+ }
157
+
158
+ .red.darken-4 {
159
+ background-color: #B71C1C !important;
160
+ }
161
+
162
+ .red-text.text-darken-4 {
163
+ color: #B71C1C !important;
164
+ }
165
+
166
+ .red.accent-1 {
167
+ background-color: #FF8A80 !important;
168
+ }
169
+
170
+ .red-text.text-accent-1 {
171
+ color: #FF8A80 !important;
172
+ }
173
+
174
+ .red.accent-2 {
175
+ background-color: #FF5252 !important;
176
+ }
177
+
178
+ .red-text.text-accent-2 {
179
+ color: #FF5252 !important;
180
+ }
181
+
182
+ .red.accent-3 {
183
+ background-color: #FF1744 !important;
184
+ }
185
+
186
+ .red-text.text-accent-3 {
187
+ color: #FF1744 !important;
188
+ }
189
+
190
+ .red.accent-4 {
191
+ background-color: #D50000 !important;
192
+ }
193
+
194
+ .red-text.text-accent-4 {
195
+ color: #D50000 !important;
196
+ }
197
+
198
+ .pink {
199
+ background-color: #e91e63 !important;
200
+ }
201
+
202
+ .pink-text {
203
+ color: #e91e63 !important;
204
+ }
205
+
206
+ .pink.lighten-5 {
207
+ background-color: #fce4ec !important;
208
+ }
209
+
210
+ .pink-text.text-lighten-5 {
211
+ color: #fce4ec !important;
212
+ }
213
+
214
+ .pink.lighten-4 {
215
+ background-color: #f8bbd0 !important;
216
+ }
217
+
218
+ .pink-text.text-lighten-4 {
219
+ color: #f8bbd0 !important;
220
+ }
221
+
222
+ .pink.lighten-3 {
223
+ background-color: #f48fb1 !important;
224
+ }
225
+
226
+ .pink-text.text-lighten-3 {
227
+ color: #f48fb1 !important;
228
+ }
229
+
230
+ .pink.lighten-2 {
231
+ background-color: #f06292 !important;
232
+ }
233
+
234
+ .pink-text.text-lighten-2 {
235
+ color: #f06292 !important;
236
+ }
237
+
238
+ .pink.lighten-1 {
239
+ background-color: #ec407a !important;
240
+ }
241
+
242
+ .pink-text.text-lighten-1 {
243
+ color: #ec407a !important;
244
+ }
245
+
246
+ .pink.darken-1 {
247
+ background-color: #d81b60 !important;
248
+ }
249
+
250
+ .pink-text.text-darken-1 {
251
+ color: #d81b60 !important;
252
+ }
253
+
254
+ .pink.darken-2 {
255
+ background-color: #c2185b !important;
256
+ }
257
+
258
+ .pink-text.text-darken-2 {
259
+ color: #c2185b !important;
260
+ }
261
+
262
+ .pink.darken-3 {
263
+ background-color: #ad1457 !important;
264
+ }
265
+
266
+ .pink-text.text-darken-3 {
267
+ color: #ad1457 !important;
268
+ }
269
+
270
+ .pink.darken-4 {
271
+ background-color: #880e4f !important;
272
+ }
273
+
274
+ .pink-text.text-darken-4 {
275
+ color: #880e4f !important;
276
+ }
277
+
278
+ .pink.accent-1 {
279
+ background-color: #ff80ab !important;
280
+ }
281
+
282
+ .pink-text.text-accent-1 {
283
+ color: #ff80ab !important;
284
+ }
285
+
286
+ .pink.accent-2 {
287
+ background-color: #ff4081 !important;
288
+ }
289
+
290
+ .pink-text.text-accent-2 {
291
+ color: #ff4081 !important;
292
+ }
293
+
294
+ .pink.accent-3 {
295
+ background-color: #f50057 !important;
296
+ }
297
+
298
+ .pink-text.text-accent-3 {
299
+ color: #f50057 !important;
300
+ }
301
+
302
+ .pink.accent-4 {
303
+ background-color: #c51162 !important;
304
+ }
305
+
306
+ .pink-text.text-accent-4 {
307
+ color: #c51162 !important;
308
+ }
309
+
310
+ .purple {
311
+ background-color: #9c27b0 !important;
312
+ }
313
+
314
+ .purple-text {
315
+ color: #9c27b0 !important;
316
+ }
317
+
318
+ .purple.lighten-5 {
319
+ background-color: #f3e5f5 !important;
320
+ }
321
+
322
+ .purple-text.text-lighten-5 {
323
+ color: #f3e5f5 !important;
324
+ }
325
+
326
+ .purple.lighten-4 {
327
+ background-color: #e1bee7 !important;
328
+ }
329
+
330
+ .purple-text.text-lighten-4 {
331
+ color: #e1bee7 !important;
332
+ }
333
+
334
+ .purple.lighten-3 {
335
+ background-color: #ce93d8 !important;
336
+ }
337
+
338
+ .purple-text.text-lighten-3 {
339
+ color: #ce93d8 !important;
340
+ }
341
+
342
+ .purple.lighten-2 {
343
+ background-color: #ba68c8 !important;
344
+ }
345
+
346
+ .purple-text.text-lighten-2 {
347
+ color: #ba68c8 !important;
348
+ }
349
+
350
+ .purple.lighten-1 {
351
+ background-color: #ab47bc !important;
352
+ }
353
+
354
+ .purple-text.text-lighten-1 {
355
+ color: #ab47bc !important;
356
+ }
357
+
358
+ .purple.darken-1 {
359
+ background-color: #8e24aa !important;
360
+ }
361
+
362
+ .purple-text.text-darken-1 {
363
+ color: #8e24aa !important;
364
+ }
365
+
366
+ .purple.darken-2 {
367
+ background-color: #7b1fa2 !important;
368
+ }
369
+
370
+ .purple-text.text-darken-2 {
371
+ color: #7b1fa2 !important;
372
+ }
373
+
374
+ .purple.darken-3 {
375
+ background-color: #6a1b9a !important;
376
+ }
377
+
378
+ .purple-text.text-darken-3 {
379
+ color: #6a1b9a !important;
380
+ }
381
+
382
+ .purple.darken-4 {
383
+ background-color: #4a148c !important;
384
+ }
385
+
386
+ .purple-text.text-darken-4 {
387
+ color: #4a148c !important;
388
+ }
389
+
390
+ .purple.accent-1 {
391
+ background-color: #ea80fc !important;
392
+ }
393
+
394
+ .purple-text.text-accent-1 {
395
+ color: #ea80fc !important;
396
+ }
397
+
398
+ .purple.accent-2 {
399
+ background-color: #e040fb !important;
400
+ }
401
+
402
+ .purple-text.text-accent-2 {
403
+ color: #e040fb !important;
404
+ }
405
+
406
+ .purple.accent-3 {
407
+ background-color: #d500f9 !important;
408
+ }
409
+
410
+ .purple-text.text-accent-3 {
411
+ color: #d500f9 !important;
412
+ }
413
+
414
+ .purple.accent-4 {
415
+ background-color: #aa00ff !important;
416
+ }
417
+
418
+ .purple-text.text-accent-4 {
419
+ color: #aa00ff !important;
420
+ }
421
+
422
+ .deep-purple {
423
+ background-color: #673ab7 !important;
424
+ }
425
+
426
+ .deep-purple-text {
427
+ color: #673ab7 !important;
428
+ }
429
+
430
+ .deep-purple.lighten-5 {
431
+ background-color: #ede7f6 !important;
432
+ }
433
+
434
+ .deep-purple-text.text-lighten-5 {
435
+ color: #ede7f6 !important;
436
+ }
437
+
438
+ .deep-purple.lighten-4 {
439
+ background-color: #d1c4e9 !important;
440
+ }
441
+
442
+ .deep-purple-text.text-lighten-4 {
443
+ color: #d1c4e9 !important;
444
+ }
445
+
446
+ .deep-purple.lighten-3 {
447
+ background-color: #b39ddb !important;
448
+ }
449
+
450
+ .deep-purple-text.text-lighten-3 {
451
+ color: #b39ddb !important;
452
+ }
453
+
454
+ .deep-purple.lighten-2 {
455
+ background-color: #9575cd !important;
456
+ }
457
+
458
+ .deep-purple-text.text-lighten-2 {
459
+ color: #9575cd !important;
460
+ }
461
+
462
+ .deep-purple.lighten-1 {
463
+ background-color: #7e57c2 !important;
464
+ }
465
+
466
+ .deep-purple-text.text-lighten-1 {
467
+ color: #7e57c2 !important;
468
+ }
469
+
470
+ .deep-purple.darken-1 {
471
+ background-color: #5e35b1 !important;
472
+ }
473
+
474
+ .deep-purple-text.text-darken-1 {
475
+ color: #5e35b1 !important;
476
+ }
477
+
478
+ .deep-purple.darken-2 {
479
+ background-color: #512da8 !important;
480
+ }
481
+
482
+ .deep-purple-text.text-darken-2 {
483
+ color: #512da8 !important;
484
+ }
485
+
486
+ .deep-purple.darken-3 {
487
+ background-color: #4527a0 !important;
488
+ }
489
+
490
+ .deep-purple-text.text-darken-3 {
491
+ color: #4527a0 !important;
492
+ }
493
+
494
+ .deep-purple.darken-4 {
495
+ background-color: #311b92 !important;
496
+ }
497
+
498
+ .deep-purple-text.text-darken-4 {
499
+ color: #311b92 !important;
500
+ }
501
+
502
+ .deep-purple.accent-1 {
503
+ background-color: #b388ff !important;
504
+ }
505
+
506
+ .deep-purple-text.text-accent-1 {
507
+ color: #b388ff !important;
508
+ }
509
+
510
+ .deep-purple.accent-2 {
511
+ background-color: #7c4dff !important;
512
+ }
513
+
514
+ .deep-purple-text.text-accent-2 {
515
+ color: #7c4dff !important;
516
+ }
517
+
518
+ .deep-purple.accent-3 {
519
+ background-color: #651fff !important;
520
+ }
521
+
522
+ .deep-purple-text.text-accent-3 {
523
+ color: #651fff !important;
524
+ }
525
+
526
+ .deep-purple.accent-4 {
527
+ background-color: #6200ea !important;
528
+ }
529
+
530
+ .deep-purple-text.text-accent-4 {
531
+ color: #6200ea !important;
532
+ }
533
+
534
+ .indigo {
535
+ background-color: #3f51b5 !important;
536
+ }
537
+
538
+ .indigo-text {
539
+ color: #3f51b5 !important;
540
+ }
541
+
542
+ .indigo.lighten-5 {
543
+ background-color: #e8eaf6 !important;
544
+ }
545
+
546
+ .indigo-text.text-lighten-5 {
547
+ color: #e8eaf6 !important;
548
+ }
549
+
550
+ .indigo.lighten-4 {
551
+ background-color: #c5cae9 !important;
552
+ }
553
+
554
+ .indigo-text.text-lighten-4 {
555
+ color: #c5cae9 !important;
556
+ }
557
+
558
+ .indigo.lighten-3 {
559
+ background-color: #9fa8da !important;
560
+ }
561
+
562
+ .indigo-text.text-lighten-3 {
563
+ color: #9fa8da !important;
564
+ }
565
+
566
+ .indigo.lighten-2 {
567
+ background-color: #7986cb !important;
568
+ }
569
+
570
+ .indigo-text.text-lighten-2 {
571
+ color: #7986cb !important;
572
+ }
573
+
574
+ .indigo.lighten-1 {
575
+ background-color: #5c6bc0 !important;
576
+ }
577
+
578
+ .indigo-text.text-lighten-1 {
579
+ color: #5c6bc0 !important;
580
+ }
581
+
582
+ .indigo.darken-1 {
583
+ background-color: #3949ab !important;
584
+ }
585
+
586
+ .indigo-text.text-darken-1 {
587
+ color: #3949ab !important;
588
+ }
589
+
590
+ .indigo.darken-2 {
591
+ background-color: #303f9f !important;
592
+ }
593
+
594
+ .indigo-text.text-darken-2 {
595
+ color: #303f9f !important;
596
+ }
597
+
598
+ .indigo.darken-3 {
599
+ background-color: #283593 !important;
600
+ }
601
+
602
+ .indigo-text.text-darken-3 {
603
+ color: #283593 !important;
604
+ }
605
+
606
+ .indigo.darken-4 {
607
+ background-color: #1a237e !important;
608
+ }
609
+
610
+ .indigo-text.text-darken-4 {
611
+ color: #1a237e !important;
612
+ }
613
+
614
+ .indigo.accent-1 {
615
+ background-color: #8c9eff !important;
616
+ }
617
+
618
+ .indigo-text.text-accent-1 {
619
+ color: #8c9eff !important;
620
+ }
621
+
622
+ .indigo.accent-2 {
623
+ background-color: #536dfe !important;
624
+ }
625
+
626
+ .indigo-text.text-accent-2 {
627
+ color: #536dfe !important;
628
+ }
629
+
630
+ .indigo.accent-3 {
631
+ background-color: #3d5afe !important;
632
+ }
633
+
634
+ .indigo-text.text-accent-3 {
635
+ color: #3d5afe !important;
636
+ }
637
+
638
+ .indigo.accent-4 {
639
+ background-color: #304ffe !important;
640
+ }
641
+
642
+ .indigo-text.text-accent-4 {
643
+ color: #304ffe !important;
644
+ }
645
+
646
+ .blue {
647
+ background-color: #2196F3 !important;
648
+ }
649
+
650
+ .blue-text {
651
+ color: #2196F3 !important;
652
+ }
653
+
654
+ .blue.lighten-5 {
655
+ background-color: #E3F2FD !important;
656
+ }
657
+
658
+ .blue-text.text-lighten-5 {
659
+ color: #E3F2FD !important;
660
+ }
661
+
662
+ .blue.lighten-4 {
663
+ background-color: #BBDEFB !important;
664
+ }
665
+
666
+ .blue-text.text-lighten-4 {
667
+ color: #BBDEFB !important;
668
+ }
669
+
670
+ .blue.lighten-3 {
671
+ background-color: #90CAF9 !important;
672
+ }
673
+
674
+ .blue-text.text-lighten-3 {
675
+ color: #90CAF9 !important;
676
+ }
677
+
678
+ .blue.lighten-2 {
679
+ background-color: #64B5F6 !important;
680
+ }
681
+
682
+ .blue-text.text-lighten-2 {
683
+ color: #64B5F6 !important;
684
+ }
685
+
686
+ .blue.lighten-1 {
687
+ background-color: #42A5F5 !important;
688
+ }
689
+
690
+ .blue-text.text-lighten-1 {
691
+ color: #42A5F5 !important;
692
+ }
693
+
694
+ .blue.darken-1 {
695
+ background-color: #1E88E5 !important;
696
+ }
697
+
698
+ .blue-text.text-darken-1 {
699
+ color: #1E88E5 !important;
700
+ }
701
+
702
+ .blue.darken-2 {
703
+ background-color: #1976D2 !important;
704
+ }
705
+
706
+ .blue-text.text-darken-2 {
707
+ color: #1976D2 !important;
708
+ }
709
+
710
+ .blue.darken-3 {
711
+ background-color: #1565C0 !important;
712
+ }
713
+
714
+ .blue-text.text-darken-3 {
715
+ color: #1565C0 !important;
716
+ }
717
+
718
+ .blue.darken-4 {
719
+ background-color: #0D47A1 !important;
720
+ }
721
+
722
+ .blue-text.text-darken-4 {
723
+ color: #0D47A1 !important;
724
+ }
725
+
726
+ .blue.accent-1 {
727
+ background-color: #82B1FF !important;
728
+ }
729
+
730
+ .blue-text.text-accent-1 {
731
+ color: #82B1FF !important;
732
+ }
733
+
734
+ .blue.accent-2 {
735
+ background-color: #448AFF !important;
736
+ }
737
+
738
+ .blue-text.text-accent-2 {
739
+ color: #448AFF !important;
740
+ }
741
+
742
+ .blue.accent-3 {
743
+ background-color: #2979FF !important;
744
+ }
745
+
746
+ .blue-text.text-accent-3 {
747
+ color: #2979FF !important;
748
+ }
749
+
750
+ .blue.accent-4 {
751
+ background-color: #2962FF !important;
752
+ }
753
+
754
+ .blue-text.text-accent-4 {
755
+ color: #2962FF !important;
756
+ }
757
+
758
+ .light-blue {
759
+ background-color: #03a9f4 !important;
760
+ }
761
+
762
+ .light-blue-text {
763
+ color: #03a9f4 !important;
764
+ }
765
+
766
+ .light-blue.lighten-5 {
767
+ background-color: #e1f5fe !important;
768
+ }
769
+
770
+ .light-blue-text.text-lighten-5 {
771
+ color: #e1f5fe !important;
772
+ }
773
+
774
+ .light-blue.lighten-4 {
775
+ background-color: #b3e5fc !important;
776
+ }
777
+
778
+ .light-blue-text.text-lighten-4 {
779
+ color: #b3e5fc !important;
780
+ }
781
+
782
+ .light-blue.lighten-3 {
783
+ background-color: #81d4fa !important;
784
+ }
785
+
786
+ .light-blue-text.text-lighten-3 {
787
+ color: #81d4fa !important;
788
+ }
789
+
790
+ .light-blue.lighten-2 {
791
+ background-color: #4fc3f7 !important;
792
+ }
793
+
794
+ .light-blue-text.text-lighten-2 {
795
+ color: #4fc3f7 !important;
796
+ }
797
+
798
+ .light-blue.lighten-1 {
799
+ background-color: #29b6f6 !important;
800
+ }
801
+
802
+ .light-blue-text.text-lighten-1 {
803
+ color: #29b6f6 !important;
804
+ }
805
+
806
+ .light-blue.darken-1 {
807
+ background-color: #039be5 !important;
808
+ }
809
+
810
+ .light-blue-text.text-darken-1 {
811
+ color: #039be5 !important;
812
+ }
813
+
814
+ .light-blue.darken-2 {
815
+ background-color: #0288d1 !important;
816
+ }
817
+
818
+ .light-blue-text.text-darken-2 {
819
+ color: #0288d1 !important;
820
+ }
821
+
822
+ .light-blue.darken-3 {
823
+ background-color: #0277bd !important;
824
+ }
825
+
826
+ .light-blue-text.text-darken-3 {
827
+ color: #0277bd !important;
828
+ }
829
+
830
+ .light-blue.darken-4 {
831
+ background-color: #01579b !important;
832
+ }
833
+
834
+ .light-blue-text.text-darken-4 {
835
+ color: #01579b !important;
836
+ }
837
+
838
+ .light-blue.accent-1 {
839
+ background-color: #80d8ff !important;
840
+ }
841
+
842
+ .light-blue-text.text-accent-1 {
843
+ color: #80d8ff !important;
844
+ }
845
+
846
+ .light-blue.accent-2 {
847
+ background-color: #40c4ff !important;
848
+ }
849
+
850
+ .light-blue-text.text-accent-2 {
851
+ color: #40c4ff !important;
852
+ }
853
+
854
+ .light-blue.accent-3 {
855
+ background-color: #00b0ff !important;
856
+ }
857
+
858
+ .light-blue-text.text-accent-3 {
859
+ color: #00b0ff !important;
860
+ }
861
+
862
+ .light-blue.accent-4 {
863
+ background-color: #0091ea !important;
864
+ }
865
+
866
+ .light-blue-text.text-accent-4 {
867
+ color: #0091ea !important;
868
+ }
869
+
870
+ .cyan {
871
+ background-color: #00bcd4 !important;
872
+ }
873
+
874
+ .cyan-text {
875
+ color: #00bcd4 !important;
876
+ }
877
+
878
+ .cyan.lighten-5 {
879
+ background-color: #e0f7fa !important;
880
+ }
881
+
882
+ .cyan-text.text-lighten-5 {
883
+ color: #e0f7fa !important;
884
+ }
885
+
886
+ .cyan.lighten-4 {
887
+ background-color: #b2ebf2 !important;
888
+ }
889
+
890
+ .cyan-text.text-lighten-4 {
891
+ color: #b2ebf2 !important;
892
+ }
893
+
894
+ .cyan.lighten-3 {
895
+ background-color: #80deea !important;
896
+ }
897
+
898
+ .cyan-text.text-lighten-3 {
899
+ color: #80deea !important;
900
+ }
901
+
902
+ .cyan.lighten-2 {
903
+ background-color: #4dd0e1 !important;
904
+ }
905
+
906
+ .cyan-text.text-lighten-2 {
907
+ color: #4dd0e1 !important;
908
+ }
909
+
910
+ .cyan.lighten-1 {
911
+ background-color: #26c6da !important;
912
+ }
913
+
914
+ .cyan-text.text-lighten-1 {
915
+ color: #26c6da !important;
916
+ }
917
+
918
+ .cyan.darken-1 {
919
+ background-color: #00acc1 !important;
920
+ }
921
+
922
+ .cyan-text.text-darken-1 {
923
+ color: #00acc1 !important;
924
+ }
925
+
926
+ .cyan.darken-2 {
927
+ background-color: #0097a7 !important;
928
+ }
929
+
930
+ .cyan-text.text-darken-2 {
931
+ color: #0097a7 !important;
932
+ }
933
+
934
+ .cyan.darken-3 {
935
+ background-color: #00838f !important;
936
+ }
937
+
938
+ .cyan-text.text-darken-3 {
939
+ color: #00838f !important;
940
+ }
941
+
942
+ .cyan.darken-4 {
943
+ background-color: #006064 !important;
944
+ }
945
+
946
+ .cyan-text.text-darken-4 {
947
+ color: #006064 !important;
948
+ }
949
+
950
+ .cyan.accent-1 {
951
+ background-color: #84ffff !important;
952
+ }
953
+
954
+ .cyan-text.text-accent-1 {
955
+ color: #84ffff !important;
956
+ }
957
+
958
+ .cyan.accent-2 {
959
+ background-color: #18ffff !important;
960
+ }
961
+
962
+ .cyan-text.text-accent-2 {
963
+ color: #18ffff !important;
964
+ }
965
+
966
+ .cyan.accent-3 {
967
+ background-color: #00e5ff !important;
968
+ }
969
+
970
+ .cyan-text.text-accent-3 {
971
+ color: #00e5ff !important;
972
+ }
973
+
974
+ .cyan.accent-4 {
975
+ background-color: #00b8d4 !important;
976
+ }
977
+
978
+ .cyan-text.text-accent-4 {
979
+ color: #00b8d4 !important;
980
+ }
981
+
982
+ .teal {
983
+ background-color: #009688 !important;
984
+ }
985
+
986
+ .teal-text {
987
+ color: #009688 !important;
988
+ }
989
+
990
+ .teal.lighten-5 {
991
+ background-color: #e0f2f1 !important;
992
+ }
993
+
994
+ .teal-text.text-lighten-5 {
995
+ color: #e0f2f1 !important;
996
+ }
997
+
998
+ .teal.lighten-4 {
999
+ background-color: #b2dfdb !important;
1000
+ }
1001
+
1002
+ .teal-text.text-lighten-4 {
1003
+ color: #b2dfdb !important;
1004
+ }
1005
+
1006
+ .teal.lighten-3 {
1007
+ background-color: #80cbc4 !important;
1008
+ }
1009
+
1010
+ .teal-text.text-lighten-3 {
1011
+ color: #80cbc4 !important;
1012
+ }
1013
+
1014
+ .teal.lighten-2 {
1015
+ background-color: #4db6ac !important;
1016
+ }
1017
+
1018
+ .teal-text.text-lighten-2 {
1019
+ color: #4db6ac !important;
1020
+ }
1021
+
1022
+ .teal.lighten-1 {
1023
+ background-color: #26a69a !important;
1024
+ }
1025
+
1026
+ .teal-text.text-lighten-1 {
1027
+ color: #26a69a !important;
1028
+ }
1029
+
1030
+ .teal.darken-1 {
1031
+ background-color: #00897b !important;
1032
+ }
1033
+
1034
+ .teal-text.text-darken-1 {
1035
+ color: #00897b !important;
1036
+ }
1037
+
1038
+ .teal.darken-2 {
1039
+ background-color: #00796b !important;
1040
+ }
1041
+
1042
+ .teal-text.text-darken-2 {
1043
+ color: #00796b !important;
1044
+ }
1045
+
1046
+ .teal.darken-3 {
1047
+ background-color: #00695c !important;
1048
+ }
1049
+
1050
+ .teal-text.text-darken-3 {
1051
+ color: #00695c !important;
1052
+ }
1053
+
1054
+ .teal.darken-4 {
1055
+ background-color: #004d40 !important;
1056
+ }
1057
+
1058
+ .teal-text.text-darken-4 {
1059
+ color: #004d40 !important;
1060
+ }
1061
+
1062
+ .teal.accent-1 {
1063
+ background-color: #a7ffeb !important;
1064
+ }
1065
+
1066
+ .teal-text.text-accent-1 {
1067
+ color: #a7ffeb !important;
1068
+ }
1069
+
1070
+ .teal.accent-2 {
1071
+ background-color: #64ffda !important;
1072
+ }
1073
+
1074
+ .teal-text.text-accent-2 {
1075
+ color: #64ffda !important;
1076
+ }
1077
+
1078
+ .teal.accent-3 {
1079
+ background-color: #1de9b6 !important;
1080
+ }
1081
+
1082
+ .teal-text.text-accent-3 {
1083
+ color: #1de9b6 !important;
1084
+ }
1085
+
1086
+ .teal.accent-4 {
1087
+ background-color: #00bfa5 !important;
1088
+ }
1089
+
1090
+ .teal-text.text-accent-4 {
1091
+ color: #00bfa5 !important;
1092
+ }
1093
+
1094
+ .green {
1095
+ background-color: #4CAF50 !important;
1096
+ }
1097
+
1098
+ .green-text {
1099
+ color: #4CAF50 !important;
1100
+ }
1101
+
1102
+ .green.lighten-5 {
1103
+ background-color: #E8F5E9 !important;
1104
+ }
1105
+
1106
+ .green-text.text-lighten-5 {
1107
+ color: #E8F5E9 !important;
1108
+ }
1109
+
1110
+ .green.lighten-4 {
1111
+ background-color: #C8E6C9 !important;
1112
+ }
1113
+
1114
+ .green-text.text-lighten-4 {
1115
+ color: #C8E6C9 !important;
1116
+ }
1117
+
1118
+ .green.lighten-3 {
1119
+ background-color: #A5D6A7 !important;
1120
+ }
1121
+
1122
+ .green-text.text-lighten-3 {
1123
+ color: #A5D6A7 !important;
1124
+ }
1125
+
1126
+ .green.lighten-2 {
1127
+ background-color: #81C784 !important;
1128
+ }
1129
+
1130
+ .green-text.text-lighten-2 {
1131
+ color: #81C784 !important;
1132
+ }
1133
+
1134
+ .green.lighten-1 {
1135
+ background-color: #66BB6A !important;
1136
+ }
1137
+
1138
+ .green-text.text-lighten-1 {
1139
+ color: #66BB6A !important;
1140
+ }
1141
+
1142
+ .green.darken-1 {
1143
+ background-color: #43A047 !important;
1144
+ }
1145
+
1146
+ .green-text.text-darken-1 {
1147
+ color: #43A047 !important;
1148
+ }
1149
+
1150
+ .green.darken-2 {
1151
+ background-color: #388E3C !important;
1152
+ }
1153
+
1154
+ .green-text.text-darken-2 {
1155
+ color: #388E3C !important;
1156
+ }
1157
+
1158
+ .green.darken-3 {
1159
+ background-color: #2E7D32 !important;
1160
+ }
1161
+
1162
+ .green-text.text-darken-3 {
1163
+ color: #2E7D32 !important;
1164
+ }
1165
+
1166
+ .green.darken-4 {
1167
+ background-color: #1B5E20 !important;
1168
+ }
1169
+
1170
+ .green-text.text-darken-4 {
1171
+ color: #1B5E20 !important;
1172
+ }
1173
+
1174
+ .green.accent-1 {
1175
+ background-color: #B9F6CA !important;
1176
+ }
1177
+
1178
+ .green-text.text-accent-1 {
1179
+ color: #B9F6CA !important;
1180
+ }
1181
+
1182
+ .green.accent-2 {
1183
+ background-color: #69F0AE !important;
1184
+ }
1185
+
1186
+ .green-text.text-accent-2 {
1187
+ color: #69F0AE !important;
1188
+ }
1189
+
1190
+ .green.accent-3 {
1191
+ background-color: #00E676 !important;
1192
+ }
1193
+
1194
+ .green-text.text-accent-3 {
1195
+ color: #00E676 !important;
1196
+ }
1197
+
1198
+ .green.accent-4 {
1199
+ background-color: #00C853 !important;
1200
+ }
1201
+
1202
+ .green-text.text-accent-4 {
1203
+ color: #00C853 !important;
1204
+ }
1205
+
1206
+ .light-green {
1207
+ background-color: #8bc34a !important;
1208
+ }
1209
+
1210
+ .light-green-text {
1211
+ color: #8bc34a !important;
1212
+ }
1213
+
1214
+ .light-green.lighten-5 {
1215
+ background-color: #f1f8e9 !important;
1216
+ }
1217
+
1218
+ .light-green-text.text-lighten-5 {
1219
+ color: #f1f8e9 !important;
1220
+ }
1221
+
1222
+ .light-green.lighten-4 {
1223
+ background-color: #dcedc8 !important;
1224
+ }
1225
+
1226
+ .light-green-text.text-lighten-4 {
1227
+ color: #dcedc8 !important;
1228
+ }
1229
+
1230
+ .light-green.lighten-3 {
1231
+ background-color: #c5e1a5 !important;
1232
+ }
1233
+
1234
+ .light-green-text.text-lighten-3 {
1235
+ color: #c5e1a5 !important;
1236
+ }
1237
+
1238
+ .light-green.lighten-2 {
1239
+ background-color: #aed581 !important;
1240
+ }
1241
+
1242
+ .light-green-text.text-lighten-2 {
1243
+ color: #aed581 !important;
1244
+ }
1245
+
1246
+ .light-green.lighten-1 {
1247
+ background-color: #9ccc65 !important;
1248
+ }
1249
+
1250
+ .light-green-text.text-lighten-1 {
1251
+ color: #9ccc65 !important;
1252
+ }
1253
+
1254
+ .light-green.darken-1 {
1255
+ background-color: #7cb342 !important;
1256
+ }
1257
+
1258
+ .light-green-text.text-darken-1 {
1259
+ color: #7cb342 !important;
1260
+ }
1261
+
1262
+ .light-green.darken-2 {
1263
+ background-color: #689f38 !important;
1264
+ }
1265
+
1266
+ .light-green-text.text-darken-2 {
1267
+ color: #689f38 !important;
1268
+ }
1269
+
1270
+ .light-green.darken-3 {
1271
+ background-color: #558b2f !important;
1272
+ }
1273
+
1274
+ .light-green-text.text-darken-3 {
1275
+ color: #558b2f !important;
1276
+ }
1277
+
1278
+ .light-green.darken-4 {
1279
+ background-color: #33691e !important;
1280
+ }
1281
+
1282
+ .light-green-text.text-darken-4 {
1283
+ color: #33691e !important;
1284
+ }
1285
+
1286
+ .light-green.accent-1 {
1287
+ background-color: #ccff90 !important;
1288
+ }
1289
+
1290
+ .light-green-text.text-accent-1 {
1291
+ color: #ccff90 !important;
1292
+ }
1293
+
1294
+ .light-green.accent-2 {
1295
+ background-color: #b2ff59 !important;
1296
+ }
1297
+
1298
+ .light-green-text.text-accent-2 {
1299
+ color: #b2ff59 !important;
1300
+ }
1301
+
1302
+ .light-green.accent-3 {
1303
+ background-color: #76ff03 !important;
1304
+ }
1305
+
1306
+ .light-green-text.text-accent-3 {
1307
+ color: #76ff03 !important;
1308
+ }
1309
+
1310
+ .light-green.accent-4 {
1311
+ background-color: #64dd17 !important;
1312
+ }
1313
+
1314
+ .light-green-text.text-accent-4 {
1315
+ color: #64dd17 !important;
1316
+ }
1317
+
1318
+ .lime {
1319
+ background-color: #cddc39 !important;
1320
+ }
1321
+
1322
+ .lime-text {
1323
+ color: #cddc39 !important;
1324
+ }
1325
+
1326
+ .lime.lighten-5 {
1327
+ background-color: #f9fbe7 !important;
1328
+ }
1329
+
1330
+ .lime-text.text-lighten-5 {
1331
+ color: #f9fbe7 !important;
1332
+ }
1333
+
1334
+ .lime.lighten-4 {
1335
+ background-color: #f0f4c3 !important;
1336
+ }
1337
+
1338
+ .lime-text.text-lighten-4 {
1339
+ color: #f0f4c3 !important;
1340
+ }
1341
+
1342
+ .lime.lighten-3 {
1343
+ background-color: #e6ee9c !important;
1344
+ }
1345
+
1346
+ .lime-text.text-lighten-3 {
1347
+ color: #e6ee9c !important;
1348
+ }
1349
+
1350
+ .lime.lighten-2 {
1351
+ background-color: #dce775 !important;
1352
+ }
1353
+
1354
+ .lime-text.text-lighten-2 {
1355
+ color: #dce775 !important;
1356
+ }
1357
+
1358
+ .lime.lighten-1 {
1359
+ background-color: #d4e157 !important;
1360
+ }
1361
+
1362
+ .lime-text.text-lighten-1 {
1363
+ color: #d4e157 !important;
1364
+ }
1365
+
1366
+ .lime.darken-1 {
1367
+ background-color: #c0ca33 !important;
1368
+ }
1369
+
1370
+ .lime-text.text-darken-1 {
1371
+ color: #c0ca33 !important;
1372
+ }
1373
+
1374
+ .lime.darken-2 {
1375
+ background-color: #afb42b !important;
1376
+ }
1377
+
1378
+ .lime-text.text-darken-2 {
1379
+ color: #afb42b !important;
1380
+ }
1381
+
1382
+ .lime.darken-3 {
1383
+ background-color: #9e9d24 !important;
1384
+ }
1385
+
1386
+ .lime-text.text-darken-3 {
1387
+ color: #9e9d24 !important;
1388
+ }
1389
+
1390
+ .lime.darken-4 {
1391
+ background-color: #827717 !important;
1392
+ }
1393
+
1394
+ .lime-text.text-darken-4 {
1395
+ color: #827717 !important;
1396
+ }
1397
+
1398
+ .lime.accent-1 {
1399
+ background-color: #f4ff81 !important;
1400
+ }
1401
+
1402
+ .lime-text.text-accent-1 {
1403
+ color: #f4ff81 !important;
1404
+ }
1405
+
1406
+ .lime.accent-2 {
1407
+ background-color: #eeff41 !important;
1408
+ }
1409
+
1410
+ .lime-text.text-accent-2 {
1411
+ color: #eeff41 !important;
1412
+ }
1413
+
1414
+ .lime.accent-3 {
1415
+ background-color: #c6ff00 !important;
1416
+ }
1417
+
1418
+ .lime-text.text-accent-3 {
1419
+ color: #c6ff00 !important;
1420
+ }
1421
+
1422
+ .lime.accent-4 {
1423
+ background-color: #aeea00 !important;
1424
+ }
1425
+
1426
+ .lime-text.text-accent-4 {
1427
+ color: #aeea00 !important;
1428
+ }
1429
+
1430
+ .yellow {
1431
+ background-color: #ffeb3b !important;
1432
+ }
1433
+
1434
+ .yellow-text {
1435
+ color: #ffeb3b !important;
1436
+ }
1437
+
1438
+ .yellow.lighten-5 {
1439
+ background-color: #fffde7 !important;
1440
+ }
1441
+
1442
+ .yellow-text.text-lighten-5 {
1443
+ color: #fffde7 !important;
1444
+ }
1445
+
1446
+ .yellow.lighten-4 {
1447
+ background-color: #fff9c4 !important;
1448
+ }
1449
+
1450
+ .yellow-text.text-lighten-4 {
1451
+ color: #fff9c4 !important;
1452
+ }
1453
+
1454
+ .yellow.lighten-3 {
1455
+ background-color: #fff59d !important;
1456
+ }
1457
+
1458
+ .yellow-text.text-lighten-3 {
1459
+ color: #fff59d !important;
1460
+ }
1461
+
1462
+ .yellow.lighten-2 {
1463
+ background-color: #fff176 !important;
1464
+ }
1465
+
1466
+ .yellow-text.text-lighten-2 {
1467
+ color: #fff176 !important;
1468
+ }
1469
+
1470
+ .yellow.lighten-1 {
1471
+ background-color: #ffee58 !important;
1472
+ }
1473
+
1474
+ .yellow-text.text-lighten-1 {
1475
+ color: #ffee58 !important;
1476
+ }
1477
+
1478
+ .yellow.darken-1 {
1479
+ background-color: #fdd835 !important;
1480
+ }
1481
+
1482
+ .yellow-text.text-darken-1 {
1483
+ color: #fdd835 !important;
1484
+ }
1485
+
1486
+ .yellow.darken-2 {
1487
+ background-color: #fbc02d !important;
1488
+ }
1489
+
1490
+ .yellow-text.text-darken-2 {
1491
+ color: #fbc02d !important;
1492
+ }
1493
+
1494
+ .yellow.darken-3 {
1495
+ background-color: #f9a825 !important;
1496
+ }
1497
+
1498
+ .yellow-text.text-darken-3 {
1499
+ color: #f9a825 !important;
1500
+ }
1501
+
1502
+ .yellow.darken-4 {
1503
+ background-color: #f57f17 !important;
1504
+ }
1505
+
1506
+ .yellow-text.text-darken-4 {
1507
+ color: #f57f17 !important;
1508
+ }
1509
+
1510
+ .yellow.accent-1 {
1511
+ background-color: #ffff8d !important;
1512
+ }
1513
+
1514
+ .yellow-text.text-accent-1 {
1515
+ color: #ffff8d !important;
1516
+ }
1517
+
1518
+ .yellow.accent-2 {
1519
+ background-color: #ffff00 !important;
1520
+ }
1521
+
1522
+ .yellow-text.text-accent-2 {
1523
+ color: #ffff00 !important;
1524
+ }
1525
+
1526
+ .yellow.accent-3 {
1527
+ background-color: #ffea00 !important;
1528
+ }
1529
+
1530
+ .yellow-text.text-accent-3 {
1531
+ color: #ffea00 !important;
1532
+ }
1533
+
1534
+ .yellow.accent-4 {
1535
+ background-color: #ffd600 !important;
1536
+ }
1537
+
1538
+ .yellow-text.text-accent-4 {
1539
+ color: #ffd600 !important;
1540
+ }
1541
+
1542
+ .amber {
1543
+ background-color: #ffc107 !important;
1544
+ }
1545
+
1546
+ .amber-text {
1547
+ color: #ffc107 !important;
1548
+ }
1549
+
1550
+ .amber.lighten-5 {
1551
+ background-color: #fff8e1 !important;
1552
+ }
1553
+
1554
+ .amber-text.text-lighten-5 {
1555
+ color: #fff8e1 !important;
1556
+ }
1557
+
1558
+ .amber.lighten-4 {
1559
+ background-color: #ffecb3 !important;
1560
+ }
1561
+
1562
+ .amber-text.text-lighten-4 {
1563
+ color: #ffecb3 !important;
1564
+ }
1565
+
1566
+ .amber.lighten-3 {
1567
+ background-color: #ffe082 !important;
1568
+ }
1569
+
1570
+ .amber-text.text-lighten-3 {
1571
+ color: #ffe082 !important;
1572
+ }
1573
+
1574
+ .amber.lighten-2 {
1575
+ background-color: #ffd54f !important;
1576
+ }
1577
+
1578
+ .amber-text.text-lighten-2 {
1579
+ color: #ffd54f !important;
1580
+ }
1581
+
1582
+ .amber.lighten-1 {
1583
+ background-color: #ffca28 !important;
1584
+ }
1585
+
1586
+ .amber-text.text-lighten-1 {
1587
+ color: #ffca28 !important;
1588
+ }
1589
+
1590
+ .amber.darken-1 {
1591
+ background-color: #ffb300 !important;
1592
+ }
1593
+
1594
+ .amber-text.text-darken-1 {
1595
+ color: #ffb300 !important;
1596
+ }
1597
+
1598
+ .amber.darken-2 {
1599
+ background-color: #ffa000 !important;
1600
+ }
1601
+
1602
+ .amber-text.text-darken-2 {
1603
+ color: #ffa000 !important;
1604
+ }
1605
+
1606
+ .amber.darken-3 {
1607
+ background-color: #ff8f00 !important;
1608
+ }
1609
+
1610
+ .amber-text.text-darken-3 {
1611
+ color: #ff8f00 !important;
1612
+ }
1613
+
1614
+ .amber.darken-4 {
1615
+ background-color: #ff6f00 !important;
1616
+ }
1617
+
1618
+ .amber-text.text-darken-4 {
1619
+ color: #ff6f00 !important;
1620
+ }
1621
+
1622
+ .amber.accent-1 {
1623
+ background-color: #ffe57f !important;
1624
+ }
1625
+
1626
+ .amber-text.text-accent-1 {
1627
+ color: #ffe57f !important;
1628
+ }
1629
+
1630
+ .amber.accent-2 {
1631
+ background-color: #ffd740 !important;
1632
+ }
1633
+
1634
+ .amber-text.text-accent-2 {
1635
+ color: #ffd740 !important;
1636
+ }
1637
+
1638
+ .amber.accent-3 {
1639
+ background-color: #ffc400 !important;
1640
+ }
1641
+
1642
+ .amber-text.text-accent-3 {
1643
+ color: #ffc400 !important;
1644
+ }
1645
+
1646
+ .amber.accent-4 {
1647
+ background-color: #ffab00 !important;
1648
+ }
1649
+
1650
+ .amber-text.text-accent-4 {
1651
+ color: #ffab00 !important;
1652
+ }
1653
+
1654
+ .orange {
1655
+ background-color: #ff9800 !important;
1656
+ }
1657
+
1658
+ .orange-text {
1659
+ color: #ff9800 !important;
1660
+ }
1661
+
1662
+ .orange.lighten-5 {
1663
+ background-color: #fff3e0 !important;
1664
+ }
1665
+
1666
+ .orange-text.text-lighten-5 {
1667
+ color: #fff3e0 !important;
1668
+ }
1669
+
1670
+ .orange.lighten-4 {
1671
+ background-color: #ffe0b2 !important;
1672
+ }
1673
+
1674
+ .orange-text.text-lighten-4 {
1675
+ color: #ffe0b2 !important;
1676
+ }
1677
+
1678
+ .orange.lighten-3 {
1679
+ background-color: #ffcc80 !important;
1680
+ }
1681
+
1682
+ .orange-text.text-lighten-3 {
1683
+ color: #ffcc80 !important;
1684
+ }
1685
+
1686
+ .orange.lighten-2 {
1687
+ background-color: #ffb74d !important;
1688
+ }
1689
+
1690
+ .orange-text.text-lighten-2 {
1691
+ color: #ffb74d !important;
1692
+ }
1693
+
1694
+ .orange.lighten-1 {
1695
+ background-color: #ffa726 !important;
1696
+ }
1697
+
1698
+ .orange-text.text-lighten-1 {
1699
+ color: #ffa726 !important;
1700
+ }
1701
+
1702
+ .orange.darken-1 {
1703
+ background-color: #fb8c00 !important;
1704
+ }
1705
+
1706
+ .orange-text.text-darken-1 {
1707
+ color: #fb8c00 !important;
1708
+ }
1709
+
1710
+ .orange.darken-2 {
1711
+ background-color: #f57c00 !important;
1712
+ }
1713
+
1714
+ .orange-text.text-darken-2 {
1715
+ color: #f57c00 !important;
1716
+ }
1717
+
1718
+ .orange.darken-3 {
1719
+ background-color: #ef6c00 !important;
1720
+ }
1721
+
1722
+ .orange-text.text-darken-3 {
1723
+ color: #ef6c00 !important;
1724
+ }
1725
+
1726
+ .orange.darken-4 {
1727
+ background-color: #e65100 !important;
1728
+ }
1729
+
1730
+ .orange-text.text-darken-4 {
1731
+ color: #e65100 !important;
1732
+ }
1733
+
1734
+ .orange.accent-1 {
1735
+ background-color: #ffd180 !important;
1736
+ }
1737
+
1738
+ .orange-text.text-accent-1 {
1739
+ color: #ffd180 !important;
1740
+ }
1741
+
1742
+ .orange.accent-2 {
1743
+ background-color: #ffab40 !important;
1744
+ }
1745
+
1746
+ .orange-text.text-accent-2 {
1747
+ color: #ffab40 !important;
1748
+ }
1749
+
1750
+ .orange.accent-3 {
1751
+ background-color: #ff9100 !important;
1752
+ }
1753
+
1754
+ .orange-text.text-accent-3 {
1755
+ color: #ff9100 !important;
1756
+ }
1757
+
1758
+ .orange.accent-4 {
1759
+ background-color: #ff6d00 !important;
1760
+ }
1761
+
1762
+ .orange-text.text-accent-4 {
1763
+ color: #ff6d00 !important;
1764
+ }
1765
+
1766
+ .deep-orange {
1767
+ background-color: #ff5722 !important;
1768
+ }
1769
+
1770
+ .deep-orange-text {
1771
+ color: #ff5722 !important;
1772
+ }
1773
+
1774
+ .deep-orange.lighten-5 {
1775
+ background-color: #fbe9e7 !important;
1776
+ }
1777
+
1778
+ .deep-orange-text.text-lighten-5 {
1779
+ color: #fbe9e7 !important;
1780
+ }
1781
+
1782
+ .deep-orange.lighten-4 {
1783
+ background-color: #ffccbc !important;
1784
+ }
1785
+
1786
+ .deep-orange-text.text-lighten-4 {
1787
+ color: #ffccbc !important;
1788
+ }
1789
+
1790
+ .deep-orange.lighten-3 {
1791
+ background-color: #ffab91 !important;
1792
+ }
1793
+
1794
+ .deep-orange-text.text-lighten-3 {
1795
+ color: #ffab91 !important;
1796
+ }
1797
+
1798
+ .deep-orange.lighten-2 {
1799
+ background-color: #ff8a65 !important;
1800
+ }
1801
+
1802
+ .deep-orange-text.text-lighten-2 {
1803
+ color: #ff8a65 !important;
1804
+ }
1805
+
1806
+ .deep-orange.lighten-1 {
1807
+ background-color: #ff7043 !important;
1808
+ }
1809
+
1810
+ .deep-orange-text.text-lighten-1 {
1811
+ color: #ff7043 !important;
1812
+ }
1813
+
1814
+ .deep-orange.darken-1 {
1815
+ background-color: #f4511e !important;
1816
+ }
1817
+
1818
+ .deep-orange-text.text-darken-1 {
1819
+ color: #f4511e !important;
1820
+ }
1821
+
1822
+ .deep-orange.darken-2 {
1823
+ background-color: #e64a19 !important;
1824
+ }
1825
+
1826
+ .deep-orange-text.text-darken-2 {
1827
+ color: #e64a19 !important;
1828
+ }
1829
+
1830
+ .deep-orange.darken-3 {
1831
+ background-color: #d84315 !important;
1832
+ }
1833
+
1834
+ .deep-orange-text.text-darken-3 {
1835
+ color: #d84315 !important;
1836
+ }
1837
+
1838
+ .deep-orange.darken-4 {
1839
+ background-color: #bf360c !important;
1840
+ }
1841
+
1842
+ .deep-orange-text.text-darken-4 {
1843
+ color: #bf360c !important;
1844
+ }
1845
+
1846
+ .deep-orange.accent-1 {
1847
+ background-color: #ff9e80 !important;
1848
+ }
1849
+
1850
+ .deep-orange-text.text-accent-1 {
1851
+ color: #ff9e80 !important;
1852
+ }
1853
+
1854
+ .deep-orange.accent-2 {
1855
+ background-color: #ff6e40 !important;
1856
+ }
1857
+
1858
+ .deep-orange-text.text-accent-2 {
1859
+ color: #ff6e40 !important;
1860
+ }
1861
+
1862
+ .deep-orange.accent-3 {
1863
+ background-color: #ff3d00 !important;
1864
+ }
1865
+
1866
+ .deep-orange-text.text-accent-3 {
1867
+ color: #ff3d00 !important;
1868
+ }
1869
+
1870
+ .deep-orange.accent-4 {
1871
+ background-color: #dd2c00 !important;
1872
+ }
1873
+
1874
+ .deep-orange-text.text-accent-4 {
1875
+ color: #dd2c00 !important;
1876
+ }
1877
+
1878
+ .brown {
1879
+ background-color: #795548 !important;
1880
+ }
1881
+
1882
+ .brown-text {
1883
+ color: #795548 !important;
1884
+ }
1885
+
1886
+ .brown.lighten-5 {
1887
+ background-color: #efebe9 !important;
1888
+ }
1889
+
1890
+ .brown-text.text-lighten-5 {
1891
+ color: #efebe9 !important;
1892
+ }
1893
+
1894
+ .brown.lighten-4 {
1895
+ background-color: #d7ccc8 !important;
1896
+ }
1897
+
1898
+ .brown-text.text-lighten-4 {
1899
+ color: #d7ccc8 !important;
1900
+ }
1901
+
1902
+ .brown.lighten-3 {
1903
+ background-color: #bcaaa4 !important;
1904
+ }
1905
+
1906
+ .brown-text.text-lighten-3 {
1907
+ color: #bcaaa4 !important;
1908
+ }
1909
+
1910
+ .brown.lighten-2 {
1911
+ background-color: #a1887f !important;
1912
+ }
1913
+
1914
+ .brown-text.text-lighten-2 {
1915
+ color: #a1887f !important;
1916
+ }
1917
+
1918
+ .brown.lighten-1 {
1919
+ background-color: #8d6e63 !important;
1920
+ }
1921
+
1922
+ .brown-text.text-lighten-1 {
1923
+ color: #8d6e63 !important;
1924
+ }
1925
+
1926
+ .brown.darken-1 {
1927
+ background-color: #6d4c41 !important;
1928
+ }
1929
+
1930
+ .brown-text.text-darken-1 {
1931
+ color: #6d4c41 !important;
1932
+ }
1933
+
1934
+ .brown.darken-2 {
1935
+ background-color: #5d4037 !important;
1936
+ }
1937
+
1938
+ .brown-text.text-darken-2 {
1939
+ color: #5d4037 !important;
1940
+ }
1941
+
1942
+ .brown.darken-3 {
1943
+ background-color: #4e342e !important;
1944
+ }
1945
+
1946
+ .brown-text.text-darken-3 {
1947
+ color: #4e342e !important;
1948
+ }
1949
+
1950
+ .brown.darken-4 {
1951
+ background-color: #3e2723 !important;
1952
+ }
1953
+
1954
+ .brown-text.text-darken-4 {
1955
+ color: #3e2723 !important;
1956
+ }
1957
+
1958
+ .blue-grey {
1959
+ background-color: #607d8b !important;
1960
+ }
1961
+
1962
+ .blue-grey-text {
1963
+ color: #607d8b !important;
1964
+ }
1965
+
1966
+ .blue-grey.lighten-5 {
1967
+ background-color: #eceff1 !important;
1968
+ }
1969
+
1970
+ .blue-grey-text.text-lighten-5 {
1971
+ color: #eceff1 !important;
1972
+ }
1973
+
1974
+ .blue-grey.lighten-4 {
1975
+ background-color: #cfd8dc !important;
1976
+ }
1977
+
1978
+ .blue-grey-text.text-lighten-4 {
1979
+ color: #cfd8dc !important;
1980
+ }
1981
+
1982
+ .blue-grey.lighten-3 {
1983
+ background-color: #b0bec5 !important;
1984
+ }
1985
+
1986
+ .blue-grey-text.text-lighten-3 {
1987
+ color: #b0bec5 !important;
1988
+ }
1989
+
1990
+ .blue-grey.lighten-2 {
1991
+ background-color: #90a4ae !important;
1992
+ }
1993
+
1994
+ .blue-grey-text.text-lighten-2 {
1995
+ color: #90a4ae !important;
1996
+ }
1997
+
1998
+ .blue-grey.lighten-1 {
1999
+ background-color: #78909c !important;
2000
+ }
2001
+
2002
+ .blue-grey-text.text-lighten-1 {
2003
+ color: #78909c !important;
2004
+ }
2005
+
2006
+ .blue-grey.darken-1 {
2007
+ background-color: #546e7a !important;
2008
+ }
2009
+
2010
+ .blue-grey-text.text-darken-1 {
2011
+ color: #546e7a !important;
2012
+ }
2013
+
2014
+ .blue-grey.darken-2 {
2015
+ background-color: #455a64 !important;
2016
+ }
2017
+
2018
+ .blue-grey-text.text-darken-2 {
2019
+ color: #455a64 !important;
2020
+ }
2021
+
2022
+ .blue-grey.darken-3 {
2023
+ background-color: #37474f !important;
2024
+ }
2025
+
2026
+ .blue-grey-text.text-darken-3 {
2027
+ color: #37474f !important;
2028
+ }
2029
+
2030
+ .blue-grey.darken-4 {
2031
+ background-color: #263238 !important;
2032
+ }
2033
+
2034
+ .blue-grey-text.text-darken-4 {
2035
+ color: #263238 !important;
2036
+ }
2037
+
2038
+ .grey {
2039
+ background-color: #9e9e9e !important;
2040
+ }
2041
+
2042
+ .grey-text {
2043
+ color: #9e9e9e !important;
2044
+ }
2045
+
2046
+ .grey.lighten-5 {
2047
+ background-color: #fafafa !important;
2048
+ }
2049
+
2050
+ .grey-text.text-lighten-5 {
2051
+ color: #fafafa !important;
2052
+ }
2053
+
2054
+ .grey.lighten-4 {
2055
+ background-color: #f5f5f5 !important;
2056
+ }
2057
+
2058
+ .grey-text.text-lighten-4 {
2059
+ color: #f5f5f5 !important;
2060
+ }
2061
+
2062
+ .grey.lighten-3 {
2063
+ background-color: #eeeeee !important;
2064
+ }
2065
+
2066
+ .grey-text.text-lighten-3 {
2067
+ color: #eeeeee !important;
2068
+ }
2069
+
2070
+ .grey.lighten-2 {
2071
+ background-color: #e0e0e0 !important;
2072
+ }
2073
+
2074
+ .grey-text.text-lighten-2 {
2075
+ color: #e0e0e0 !important;
2076
+ }
2077
+
2078
+ .grey.lighten-1 {
2079
+ background-color: #bdbdbd !important;
2080
+ }
2081
+
2082
+ .grey-text.text-lighten-1 {
2083
+ color: #bdbdbd !important;
2084
+ }
2085
+
2086
+ .grey.darken-1 {
2087
+ background-color: #757575 !important;
2088
+ }
2089
+
2090
+ .grey-text.text-darken-1 {
2091
+ color: #757575 !important;
2092
+ }
2093
+
2094
+ .grey.darken-2 {
2095
+ background-color: #616161 !important;
2096
+ }
2097
+
2098
+ .grey-text.text-darken-2 {
2099
+ color: #616161 !important;
2100
+ }
2101
+
2102
+ .grey.darken-3 {
2103
+ background-color: #424242 !important;
2104
+ }
2105
+
2106
+ .grey-text.text-darken-3 {
2107
+ color: #424242 !important;
2108
+ }
2109
+
2110
+ .grey.darken-4 {
2111
+ background-color: #212121 !important;
2112
+ }
2113
+
2114
+ .grey-text.text-darken-4 {
2115
+ color: #212121 !important;
2116
+ }
2117
+
2118
+ .black {
2119
+ background-color: #000000 !important;
2120
+ }
2121
+
2122
+ .black-text {
2123
+ color: #000000 !important;
2124
+ }
2125
+
2126
+ .white {
2127
+ background-color: #FFFFFF !important;
2128
+ }
2129
+
2130
+ .white-text {
2131
+ color: #FFFFFF !important;
2132
+ }
2133
+
2134
+ .transparent {
2135
+ background-color: transparent !important;
2136
+ }
2137
+
2138
+ .transparent-text {
2139
+ color: transparent !important;
2140
+ }
2141
+
2142
+ /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
2143
+ /**
2144
+ * 1. Set default font family to sans-serif.
2145
+ * 2. Prevent iOS and IE text size adjust after device orientation change,
2146
+ * without disabling user zoom.
2147
+ */
2148
+ html {
2149
+ font-family: sans-serif;
2150
+ /* 1 */
2151
+ -ms-text-size-adjust: 100%;
2152
+ /* 2 */
2153
+ -webkit-text-size-adjust: 100%;
2154
+ /* 2 */
2155
+ }
2156
+
2157
+ /**
2158
+ * Remove default margin.
2159
+ */
2160
+ body {
2161
+ margin: 0;
2162
+ }
2163
+
2164
+ /* HTML5 display definitions
2165
+ ========================================================================== */
2166
+ /**
2167
+ * Correct `block` display not defined for any HTML5 element in IE 8/9.
2168
+ * Correct `block` display not defined for `details` or `summary` in IE 10/11
2169
+ * and Firefox.
2170
+ * Correct `block` display not defined for `main` in IE 11.
2171
+ */
2172
+ article,
2173
+ aside,
2174
+ details,
2175
+ figcaption,
2176
+ figure,
2177
+ footer,
2178
+ header,
2179
+ hgroup,
2180
+ main,
2181
+ menu,
2182
+ nav,
2183
+ section,
2184
+ summary {
2185
+ display: block;
2186
+ }
2187
+
2188
+ /**
2189
+ * 1. Correct `inline-block` display not defined in IE 8/9.
2190
+ * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
2191
+ */
2192
+ audio,
2193
+ canvas,
2194
+ progress,
2195
+ video {
2196
+ display: inline-block;
2197
+ /* 1 */
2198
+ vertical-align: baseline;
2199
+ /* 2 */
2200
+ }
2201
+
2202
+ /**
2203
+ * Prevent modern browsers from displaying `audio` without controls.
2204
+ * Remove excess height in iOS 5 devices.
2205
+ */
2206
+ audio:not([controls]) {
2207
+ display: none;
2208
+ height: 0;
2209
+ }
2210
+
2211
+ /**
2212
+ * Address `[hidden]` styling not present in IE 8/9/10.
2213
+ * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
2214
+ */
2215
+ [hidden],
2216
+ template {
2217
+ display: none;
2218
+ }
2219
+
2220
+ /* Links
2221
+ ========================================================================== */
2222
+ /**
2223
+ * Remove the gray background color from active links in IE 10.
2224
+ */
2225
+ a {
2226
+ background-color: transparent;
2227
+ }
2228
+
2229
+ /**
2230
+ * Improve readability of focused elements when they are also in an
2231
+ * active/hover state.
2232
+ */
2233
+ a:active,
2234
+ a:hover {
2235
+ outline: 0;
2236
+ }
2237
+
2238
+ /* Text-level semantics
2239
+ ========================================================================== */
2240
+ /**
2241
+ * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
2242
+ */
2243
+ abbr[title] {
2244
+ border-bottom: 1px dotted;
2245
+ }
2246
+
2247
+ /**
2248
+ * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
2249
+ */
2250
+ b,
2251
+ strong {
2252
+ font-weight: bold;
2253
+ }
2254
+
2255
+ /**
2256
+ * Address styling not present in Safari and Chrome.
2257
+ */
2258
+ dfn {
2259
+ font-style: italic;
2260
+ }
2261
+
2262
+ /**
2263
+ * Address variable `h1` font-size and margin within `section` and `article`
2264
+ * contexts in Firefox 4+, Safari, and Chrome.
2265
+ */
2266
+ h1 {
2267
+ font-size: 2em;
2268
+ margin: 0.67em 0;
2269
+ }
2270
+
2271
+ /**
2272
+ * Address styling not present in IE 8/9.
2273
+ */
2274
+ mark {
2275
+ background: #ff0;
2276
+ color: #000;
2277
+ }
2278
+
2279
+ /**
2280
+ * Address inconsistent and variable font size in all browsers.
2281
+ */
2282
+ small {
2283
+ font-size: 80%;
2284
+ }
2285
+
2286
+ /**
2287
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
2288
+ */
2289
+ sub,
2290
+ sup {
2291
+ font-size: 75%;
2292
+ line-height: 0;
2293
+ position: relative;
2294
+ vertical-align: baseline;
2295
+ }
2296
+
2297
+ sup {
2298
+ top: -0.5em;
2299
+ }
2300
+
2301
+ sub {
2302
+ bottom: -0.25em;
2303
+ }
2304
+
2305
+ /* Embedded content
2306
+ ========================================================================== */
2307
+ /**
2308
+ * Remove border when inside `a` element in IE 8/9/10.
2309
+ */
2310
+ img {
2311
+ border: 0;
2312
+ }
2313
+
2314
+ /**
2315
+ * Correct overflow not hidden in IE 9/10/11.
2316
+ */
2317
+ svg:not(:root) {
2318
+ overflow: hidden;
2319
+ }
2320
+
2321
+ /* Grouping content
2322
+ ========================================================================== */
2323
+ /**
2324
+ * Address margin not present in IE 8/9 and Safari.
2325
+ */
2326
+ figure {
2327
+ margin: 1em 40px;
2328
+ }
2329
+
2330
+ /**
2331
+ * Address differences between Firefox and other browsers.
2332
+ */
2333
+ hr {
2334
+ box-sizing: content-box;
2335
+ height: 0;
2336
+ }
2337
+
2338
+ /**
2339
+ * Contain overflow in all browsers.
2340
+ */
2341
+ pre {
2342
+ overflow: auto;
2343
+ }
2344
+
2345
+ /**
2346
+ * Address odd `em`-unit font size rendering in all browsers.
2347
+ */
2348
+ code,
2349
+ kbd,
2350
+ pre,
2351
+ samp {
2352
+ font-family: monospace, monospace;
2353
+ font-size: 1em;
2354
+ }
2355
+
2356
+ /* Forms
2357
+ ========================================================================== */
2358
+ /**
2359
+ * Known limitation: by default, Chrome and Safari on OS X allow very limited
2360
+ * styling of `select`, unless a `border` property is set.
2361
+ */
2362
+ /**
2363
+ * 1. Correct color not being inherited.
2364
+ * Known issue: affects color of disabled elements.
2365
+ * 2. Correct font properties not being inherited.
2366
+ * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
2367
+ */
2368
+ button,
2369
+ input,
2370
+ optgroup,
2371
+ select,
2372
+ textarea {
2373
+ color: inherit;
2374
+ /* 1 */
2375
+ font: inherit;
2376
+ /* 2 */
2377
+ margin: 0;
2378
+ /* 3 */
2379
+ }
2380
+
2381
+ /**
2382
+ * Address `overflow` set to `hidden` in IE 8/9/10/11.
2383
+ */
2384
+ button {
2385
+ overflow: visible;
2386
+ }
2387
+
2388
+ /**
2389
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
2390
+ * All other form control elements do not inherit `text-transform` values.
2391
+ * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
2392
+ * Correct `select` style inheritance in Firefox.
2393
+ */
2394
+ button,
2395
+ select {
2396
+ text-transform: none;
2397
+ }
2398
+
2399
+ /**
2400
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
2401
+ * and `video` controls.
2402
+ * 2. Correct inability to style clickable `input` types in iOS.
2403
+ * 3. Improve usability and consistency of cursor style between image-type
2404
+ * `input` and others.
2405
+ */
2406
+ button,
2407
+ html input[type="button"],
2408
+ input[type="reset"],
2409
+ input[type="submit"] {
2410
+ -webkit-appearance: button;
2411
+ /* 2 */
2412
+ cursor: pointer;
2413
+ /* 3 */
2414
+ }
2415
+
2416
+ /**
2417
+ * Re-set default cursor for disabled elements.
2418
+ */
2419
+ button[disabled],
2420
+ html input[disabled] {
2421
+ cursor: default;
2422
+ }
2423
+
2424
+ /**
2425
+ * Remove inner padding and border in Firefox 4+.
2426
+ */
2427
+ button::-moz-focus-inner,
2428
+ input::-moz-focus-inner {
2429
+ border: 0;
2430
+ padding: 0;
2431
+ }
2432
+
2433
+ /**
2434
+ * Address Firefox 4+ setting `line-height` on `input` using `!important` in
2435
+ * the UA stylesheet.
2436
+ */
2437
+ input {
2438
+ line-height: normal;
2439
+ }
2440
+
2441
+ /**
2442
+ * It's recommended that you don't attempt to style these elements.
2443
+ * Firefox's implementation doesn't respect box-sizing, padding, or width.
2444
+ *
2445
+ * 1. Address box sizing set to `content-box` in IE 8/9/10.
2446
+ * 2. Remove excess padding in IE 8/9/10.
2447
+ */
2448
+ input[type="checkbox"],
2449
+ input[type="radio"] {
2450
+ box-sizing: border-box;
2451
+ /* 1 */
2452
+ padding: 0;
2453
+ /* 2 */
2454
+ }
2455
+
2456
+ /**
2457
+ * Fix the cursor style for Chrome's increment/decrement buttons. For certain
2458
+ * `font-size` values of the `input`, it causes the cursor style of the
2459
+ * decrement button to change from `default` to `text`.
2460
+ */
2461
+ input[type="number"]::-webkit-inner-spin-button,
2462
+ input[type="number"]::-webkit-outer-spin-button {
2463
+ height: auto;
2464
+ }
2465
+
2466
+ /**
2467
+ * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
2468
+ * 2. Address `box-sizing` set to `border-box` in Safari and Chrome.
2469
+ */
2470
+ input[type="search"] {
2471
+ -webkit-appearance: textfield;
2472
+ /* 1 */
2473
+ box-sizing: content-box;
2474
+ /* 2 */
2475
+ }
2476
+
2477
+ /**
2478
+ * Remove inner padding and search cancel button in Safari and Chrome on OS X.
2479
+ * Safari (but not Chrome) clips the cancel button when the search input has
2480
+ * padding (and `textfield` appearance).
2481
+ */
2482
+ input[type="search"]::-webkit-search-cancel-button,
2483
+ input[type="search"]::-webkit-search-decoration {
2484
+ -webkit-appearance: none;
2485
+ }
2486
+
2487
+ /**
2488
+ * Define consistent border, margin, and padding.
2489
+ */
2490
+ fieldset {
2491
+ border: 1px solid #c0c0c0;
2492
+ margin: 0 2px;
2493
+ padding: 0.35em 0.625em 0.75em;
2494
+ }
2495
+
2496
+ /**
2497
+ * 1. Correct `color` not being inherited in IE 8/9/10/11.
2498
+ * 2. Remove padding so people aren't caught out if they zero out fieldsets.
2499
+ */
2500
+ legend {
2501
+ border: 0;
2502
+ /* 1 */
2503
+ padding: 0;
2504
+ /* 2 */
2505
+ }
2506
+
2507
+ /**
2508
+ * Remove default vertical scrollbar in IE 8/9/10/11.
2509
+ */
2510
+ textarea {
2511
+ overflow: auto;
2512
+ }
2513
+
2514
+ /**
2515
+ * Don't inherit the `font-weight` (applied by a rule above).
2516
+ * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
2517
+ */
2518
+ optgroup {
2519
+ font-weight: bold;
2520
+ }
2521
+
2522
+ /* Tables
2523
+ ========================================================================== */
2524
+ /**
2525
+ * Remove most spacing between table cells.
2526
+ */
2527
+ table {
2528
+ border-collapse: collapse;
2529
+ border-spacing: 0;
2530
+ }
2531
+
2532
+ td,
2533
+ th {
2534
+ padding: 0;
2535
+ }
2536
+
2537
+ html {
2538
+ box-sizing: border-box;
2539
+ }
2540
+
2541
+ *, *:before, *:after {
2542
+ box-sizing: inherit;
2543
+ }
2544
+
2545
+ ul:not(.browser-default) {
2546
+ padding-left: 0;
2547
+ list-style-type: none;
2548
+ }
2549
+
2550
+ ul:not(.browser-default) li {
2551
+ list-style-type: none;
2552
+ }
2553
+
2554
+ a {
2555
+ color: #039be5;
2556
+ text-decoration: none;
2557
+ -webkit-tap-highlight-color: transparent;
2558
+ }
2559
+
2560
+ .valign-wrapper {
2561
+ display: -webkit-flex;
2562
+ display: -ms-flexbox;
2563
+ display: flex;
2564
+ -webkit-align-items: center;
2565
+ -ms-flex-align: center;
2566
+ align-items: center;
2567
+ }
2568
+
2569
+ .valign-wrapper .valign {
2570
+ display: block;
2571
+ }
2572
+
2573
+ .clearfix {
2574
+ clear: both;
2575
+ }
2576
+
2577
+ .z-depth-0 {
2578
+ box-shadow: none !important;
2579
+ }
2580
+
2581
+ .z-depth-1, nav, .card-panel, .card, .toast, .btn, .btn-large, .btn-floating, .dropdown-content, .collapsible, .side-nav {
2582
+ box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2);
2583
+ }
2584
+
2585
+ .z-depth-1-half, .btn:hover, .btn-large:hover, .btn-floating:hover {
2586
+ box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 7px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -1px rgba(0, 0, 0, 0.2);
2587
+ }
2588
+
2589
+ .z-depth-2 {
2590
+ box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.3);
2591
+ }
2592
+
2593
+ .z-depth-3 {
2594
+ box-shadow: 0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12), 0 3px 5px -1px rgba(0, 0, 0, 0.3);
2595
+ }
2596
+
2597
+ .z-depth-4, .modal {
2598
+ box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.3);
2599
+ }
2600
+
2601
+ .z-depth-5 {
2602
+ box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.3);
2603
+ }
2604
+
2605
+ .hoverable {
2606
+ transition: box-shadow .25s;
2607
+ box-shadow: 0;
2608
+ }
2609
+
2610
+ .hoverable:hover {
2611
+ transition: box-shadow .25s;
2612
+ box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
2613
+ }
2614
+
2615
+ .divider {
2616
+ height: 1px;
2617
+ overflow: hidden;
2618
+ background-color: #e0e0e0;
2619
+ }
2620
+
2621
+ blockquote {
2622
+ margin: 20px 0;
2623
+ padding-left: 1.5rem;
2624
+ border-left: 5px solid #ee6e73;
2625
+ }
2626
+
2627
+ i {
2628
+ line-height: inherit;
2629
+ }
2630
+
2631
+ i.left {
2632
+ float: left;
2633
+ margin-right: 15px;
2634
+ }
2635
+
2636
+ i.right {
2637
+ float: right;
2638
+ margin-left: 15px;
2639
+ }
2640
+
2641
+ i.tiny {
2642
+ font-size: 1rem;
2643
+ }
2644
+
2645
+ i.small {
2646
+ font-size: 2rem;
2647
+ }
2648
+
2649
+ i.medium {
2650
+ font-size: 4rem;
2651
+ }
2652
+
2653
+ i.large {
2654
+ font-size: 6rem;
2655
+ }
2656
+
2657
+ img.responsive-img,
2658
+ video.responsive-video {
2659
+ max-width: 100%;
2660
+ height: auto;
2661
+ }
2662
+
2663
+ .pagination li {
2664
+ display: inline-block;
2665
+ border-radius: 2px;
2666
+ text-align: center;
2667
+ vertical-align: top;
2668
+ height: 30px;
2669
+ }
2670
+
2671
+ .pagination li a {
2672
+ color: #444;
2673
+ display: inline-block;
2674
+ font-size: 1.2rem;
2675
+ padding: 0 10px;
2676
+ line-height: 30px;
2677
+ }
2678
+
2679
+ .pagination li.active a {
2680
+ color: #fff;
2681
+ }
2682
+
2683
+ .pagination li.active {
2684
+ background-color: #ee6e73;
2685
+ }
2686
+
2687
+ .pagination li.disabled a {
2688
+ cursor: default;
2689
+ color: #999;
2690
+ }
2691
+
2692
+ .pagination li i {
2693
+ font-size: 2rem;
2694
+ }
2695
+
2696
+ .pagination li.pages ul li {
2697
+ display: inline-block;
2698
+ float: none;
2699
+ }
2700
+
2701
+ @media only screen and (max-width: 992px) {
2702
+ .pagination {
2703
+ width: 100%;
2704
+ }
2705
+ .pagination li.prev,
2706
+ .pagination li.next {
2707
+ width: 10%;
2708
+ }
2709
+ .pagination li.pages {
2710
+ width: 80%;
2711
+ overflow: hidden;
2712
+ white-space: nowrap;
2713
+ }
2714
+ }
2715
+
2716
+ .breadcrumb {
2717
+ font-size: 18px;
2718
+ color: rgba(255, 255, 255, 0.7);
2719
+ }
2720
+
2721
+ .breadcrumb i,
2722
+ .breadcrumb [class^="mdi-"], .breadcrumb [class*="mdi-"],
2723
+ .breadcrumb i.material-icons {
2724
+ display: inline-block;
2725
+ float: left;
2726
+ font-size: 24px;
2727
+ }
2728
+
2729
+ .breadcrumb:before {
2730
+ content: '\E5CC';
2731
+ color: rgba(255, 255, 255, 0.7);
2732
+ vertical-align: top;
2733
+ display: inline-block;
2734
+ font-family: 'Material Icons';
2735
+ font-weight: normal;
2736
+ font-style: normal;
2737
+ font-size: 25px;
2738
+ margin: 0 10px 0 8px;
2739
+ -webkit-font-smoothing: antialiased;
2740
+ }
2741
+
2742
+ .breadcrumb:first-child:before {
2743
+ display: none;
2744
+ }
2745
+
2746
+ .breadcrumb:last-child {
2747
+ color: #fff;
2748
+ }
2749
+
2750
+ .parallax-container {
2751
+ position: relative;
2752
+ overflow: hidden;
2753
+ height: 500px;
2754
+ }
2755
+
2756
+ .parallax {
2757
+ position: absolute;
2758
+ top: 0;
2759
+ left: 0;
2760
+ right: 0;
2761
+ bottom: 0;
2762
+ z-index: -1;
2763
+ }
2764
+
2765
+ .parallax img {
2766
+ display: none;
2767
+ position: absolute;
2768
+ left: 50%;
2769
+ bottom: 0;
2770
+ min-width: 100%;
2771
+ min-height: 100%;
2772
+ -webkit-transform: translate3d(0, 0, 0);
2773
+ transform: translate3d(0, 0, 0);
2774
+ -webkit-transform: translateX(-50%);
2775
+ transform: translateX(-50%);
2776
+ }
2777
+
2778
+ .pin-top, .pin-bottom {
2779
+ position: relative;
2780
+ }
2781
+
2782
+ .pinned {
2783
+ position: fixed !important;
2784
+ }
2785
+
2786
+ /*********************
2787
+ Transition Classes
2788
+ **********************/
2789
+ ul.staggered-list li {
2790
+ opacity: 0;
2791
+ }
2792
+
2793
+ .fade-in {
2794
+ opacity: 0;
2795
+ -webkit-transform-origin: 0 50%;
2796
+ transform-origin: 0 50%;
2797
+ }
2798
+
2799
+ /*********************
2800
+ Media Query Classes
2801
+ **********************/
2802
+ @media only screen and (max-width: 600px) {
2803
+ .hide-on-small-only, .hide-on-small-and-down {
2804
+ display: none !important;
2805
+ }
2806
+ }
2807
+
2808
+ @media only screen and (max-width: 992px) {
2809
+ .hide-on-med-and-down {
2810
+ display: none !important;
2811
+ }
2812
+ }
2813
+
2814
+ @media only screen and (min-width: 601px) {
2815
+ .hide-on-med-and-up {
2816
+ display: none !important;
2817
+ }
2818
+ }
2819
+
2820
+ @media only screen and (min-width: 600px) and (max-width: 992px) {
2821
+ .hide-on-med-only {
2822
+ display: none !important;
2823
+ }
2824
+ }
2825
+
2826
+ @media only screen and (min-width: 993px) {
2827
+ .hide-on-large-only {
2828
+ display: none !important;
2829
+ }
2830
+ }
2831
+
2832
+ @media only screen and (min-width: 993px) {
2833
+ .show-on-large {
2834
+ display: block !important;
2835
+ }
2836
+ }
2837
+
2838
+ @media only screen and (min-width: 600px) and (max-width: 992px) {
2839
+ .show-on-medium {
2840
+ display: block !important;
2841
+ }
2842
+ }
2843
+
2844
+ @media only screen and (max-width: 600px) {
2845
+ .show-on-small {
2846
+ display: block !important;
2847
+ }
2848
+ }
2849
+
2850
+ @media only screen and (min-width: 601px) {
2851
+ .show-on-medium-and-up {
2852
+ display: block !important;
2853
+ }
2854
+ }
2855
+
2856
+ @media only screen and (max-width: 992px) {
2857
+ .show-on-medium-and-down {
2858
+ display: block !important;
2859
+ }
2860
+ }
2861
+
2862
+ @media only screen and (max-width: 600px) {
2863
+ .center-on-small-only {
2864
+ text-align: center;
2865
+ }
2866
+ }
2867
+
2868
+ footer.page-footer {
2869
+ padding-top: 20px;
2870
+ background-color: #ee6e73;
2871
+ }
2872
+
2873
+ footer.page-footer .footer-copyright {
2874
+ overflow: hidden;
2875
+ min-height: 50px;
2876
+ display: -webkit-flex;
2877
+ display: -ms-flexbox;
2878
+ display: flex;
2879
+ -webkit-align-items: center;
2880
+ -ms-flex-align: center;
2881
+ align-items: center;
2882
+ padding: 10px 0px;
2883
+ color: rgba(255, 255, 255, 0.8);
2884
+ background-color: rgba(51, 51, 51, 0.08);
2885
+ }
2886
+
2887
+ table, th, td {
2888
+ border: none;
2889
+ }
2890
+
2891
+ table {
2892
+ width: 100%;
2893
+ display: table;
2894
+ }
2895
+
2896
+ table.bordered > thead > tr,
2897
+ table.bordered > tbody > tr {
2898
+ border-bottom: 1px solid #d0d0d0;
2899
+ }
2900
+
2901
+ table.striped > tbody > tr:nth-child(odd) {
2902
+ background-color: #f2f2f2;
2903
+ }
2904
+
2905
+ table.striped > tbody > tr > td {
2906
+ border-radius: 0;
2907
+ }
2908
+
2909
+ table.highlight > tbody > tr {
2910
+ transition: background-color .25s ease;
2911
+ }
2912
+
2913
+ table.highlight > tbody > tr:hover {
2914
+ background-color: #f2f2f2;
2915
+ }
2916
+
2917
+ table.centered thead tr th, table.centered tbody tr td {
2918
+ text-align: center;
2919
+ }
2920
+
2921
+ thead {
2922
+ border-bottom: 1px solid #d0d0d0;
2923
+ }
2924
+
2925
+ td, th {
2926
+ padding: 15px 5px;
2927
+ display: table-cell;
2928
+ text-align: left;
2929
+ vertical-align: middle;
2930
+ border-radius: 2px;
2931
+ }
2932
+
2933
+ @media only screen and (max-width: 992px) {
2934
+ table.responsive-table {
2935
+ width: 100%;
2936
+ border-collapse: collapse;
2937
+ border-spacing: 0;
2938
+ display: block;
2939
+ position: relative;
2940
+ /* sort out borders */
2941
+ }
2942
+ table.responsive-table td:empty:before {
2943
+ content: '\00a0';
2944
+ }
2945
+ table.responsive-table th,
2946
+ table.responsive-table td {
2947
+ margin: 0;
2948
+ vertical-align: top;
2949
+ }
2950
+ table.responsive-table th {
2951
+ text-align: left;
2952
+ }
2953
+ table.responsive-table thead {
2954
+ display: block;
2955
+ float: left;
2956
+ }
2957
+ table.responsive-table thead tr {
2958
+ display: block;
2959
+ padding: 0 10px 0 0;
2960
+ }
2961
+ table.responsive-table thead tr th::before {
2962
+ content: "\00a0";
2963
+ }
2964
+ table.responsive-table tbody {
2965
+ display: block;
2966
+ width: auto;
2967
+ position: relative;
2968
+ overflow-x: auto;
2969
+ white-space: nowrap;
2970
+ }
2971
+ table.responsive-table tbody tr {
2972
+ display: inline-block;
2973
+ vertical-align: top;
2974
+ }
2975
+ table.responsive-table th {
2976
+ display: block;
2977
+ text-align: right;
2978
+ }
2979
+ table.responsive-table td {
2980
+ display: block;
2981
+ min-height: 1.25em;
2982
+ text-align: left;
2983
+ }
2984
+ table.responsive-table tr {
2985
+ padding: 0 10px;
2986
+ }
2987
+ table.responsive-table thead {
2988
+ border: 0;
2989
+ border-right: 1px solid #d0d0d0;
2990
+ }
2991
+ table.responsive-table.bordered th {
2992
+ border-bottom: 0;
2993
+ border-left: 0;
2994
+ }
2995
+ table.responsive-table.bordered td {
2996
+ border-left: 0;
2997
+ border-right: 0;
2998
+ border-bottom: 0;
2999
+ }
3000
+ table.responsive-table.bordered tr {
3001
+ border: 0;
3002
+ }
3003
+ table.responsive-table.bordered tbody tr {
3004
+ border-right: 1px solid #d0d0d0;
3005
+ }
3006
+ }
3007
+
3008
+ .collection {
3009
+ margin: 0.5rem 0 1rem 0;
3010
+ border: 1px solid #e0e0e0;
3011
+ border-radius: 2px;
3012
+ overflow: hidden;
3013
+ position: relative;
3014
+ }
3015
+
3016
+ .collection .collection-item {
3017
+ background-color: #fff;
3018
+ line-height: 1.5rem;
3019
+ padding: 10px 20px;
3020
+ margin: 0;
3021
+ border-bottom: 1px solid #e0e0e0;
3022
+ }
3023
+
3024
+ .collection .collection-item.avatar {
3025
+ min-height: 84px;
3026
+ padding-left: 72px;
3027
+ position: relative;
3028
+ }
3029
+
3030
+ .collection .collection-item.avatar .circle {
3031
+ position: absolute;
3032
+ width: 42px;
3033
+ height: 42px;
3034
+ overflow: hidden;
3035
+ left: 15px;
3036
+ display: inline-block;
3037
+ vertical-align: middle;
3038
+ }
3039
+
3040
+ .collection .collection-item.avatar i.circle {
3041
+ font-size: 18px;
3042
+ line-height: 42px;
3043
+ color: #fff;
3044
+ background-color: #999;
3045
+ text-align: center;
3046
+ }
3047
+
3048
+ .collection .collection-item.avatar .title {
3049
+ font-size: 16px;
3050
+ }
3051
+
3052
+ .collection .collection-item.avatar p {
3053
+ margin: 0;
3054
+ }
3055
+
3056
+ .collection .collection-item.avatar .secondary-content {
3057
+ position: absolute;
3058
+ top: 16px;
3059
+ right: 16px;
3060
+ }
3061
+
3062
+ .collection .collection-item:last-child {
3063
+ border-bottom: none;
3064
+ }
3065
+
3066
+ .collection .collection-item.active {
3067
+ background-color: #26a69a;
3068
+ color: #eafaf9;
3069
+ }
3070
+
3071
+ .collection .collection-item.active .secondary-content {
3072
+ color: #fff;
3073
+ }
3074
+
3075
+ .collection a.collection-item {
3076
+ display: block;
3077
+ transition: .25s;
3078
+ color: #26a69a;
3079
+ }
3080
+
3081
+ .collection a.collection-item:not(.active):hover {
3082
+ background-color: #ddd;
3083
+ }
3084
+
3085
+ .collection.with-header .collection-header {
3086
+ background-color: #fff;
3087
+ border-bottom: 1px solid #e0e0e0;
3088
+ padding: 10px 20px;
3089
+ }
3090
+
3091
+ .collection.with-header .collection-item {
3092
+ padding-left: 30px;
3093
+ }
3094
+
3095
+ .collection.with-header .collection-item.avatar {
3096
+ padding-left: 72px;
3097
+ }
3098
+
3099
+ .secondary-content {
3100
+ float: right;
3101
+ color: #26a69a;
3102
+ }
3103
+
3104
+ .collapsible .collection {
3105
+ margin: 0;
3106
+ border: none;
3107
+ }
3108
+
3109
+ .video-container {
3110
+ position: relative;
3111
+ padding-bottom: 56.25%;
3112
+ height: 0;
3113
+ overflow: hidden;
3114
+ }
3115
+
3116
+ .video-container iframe, .video-container object, .video-container embed {
3117
+ position: absolute;
3118
+ top: 0;
3119
+ left: 0;
3120
+ width: 100%;
3121
+ height: 100%;
3122
+ }
3123
+
3124
+ .progress {
3125
+ position: relative;
3126
+ height: 4px;
3127
+ display: block;
3128
+ width: 100%;
3129
+ background-color: #acece6;
3130
+ border-radius: 2px;
3131
+ margin: 0.5rem 0 1rem 0;
3132
+ overflow: hidden;
3133
+ }
3134
+
3135
+ .progress .determinate {
3136
+ position: absolute;
3137
+ top: 0;
3138
+ left: 0;
3139
+ bottom: 0;
3140
+ background-color: #26a69a;
3141
+ transition: width .3s linear;
3142
+ }
3143
+
3144
+ .progress .indeterminate {
3145
+ background-color: #26a69a;
3146
+ }
3147
+
3148
+ .progress .indeterminate:before {
3149
+ content: '';
3150
+ position: absolute;
3151
+ background-color: inherit;
3152
+ top: 0;
3153
+ left: 0;
3154
+ bottom: 0;
3155
+ will-change: left, right;
3156
+ -webkit-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;
3157
+ animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;
3158
+ }
3159
+
3160
+ .progress .indeterminate:after {
3161
+ content: '';
3162
+ position: absolute;
3163
+ background-color: inherit;
3164
+ top: 0;
3165
+ left: 0;
3166
+ bottom: 0;
3167
+ will-change: left, right;
3168
+ -webkit-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;
3169
+ animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;
3170
+ -webkit-animation-delay: 1.15s;
3171
+ animation-delay: 1.15s;
3172
+ }
3173
+
3174
+ @-webkit-keyframes indeterminate {
3175
+ 0% {
3176
+ left: -35%;
3177
+ right: 100%;
3178
+ }
3179
+ 60% {
3180
+ left: 100%;
3181
+ right: -90%;
3182
+ }
3183
+ 100% {
3184
+ left: 100%;
3185
+ right: -90%;
3186
+ }
3187
+ }
3188
+
3189
+ @keyframes indeterminate {
3190
+ 0% {
3191
+ left: -35%;
3192
+ right: 100%;
3193
+ }
3194
+ 60% {
3195
+ left: 100%;
3196
+ right: -90%;
3197
+ }
3198
+ 100% {
3199
+ left: 100%;
3200
+ right: -90%;
3201
+ }
3202
+ }
3203
+
3204
+ @-webkit-keyframes indeterminate-short {
3205
+ 0% {
3206
+ left: -200%;
3207
+ right: 100%;
3208
+ }
3209
+ 60% {
3210
+ left: 107%;
3211
+ right: -8%;
3212
+ }
3213
+ 100% {
3214
+ left: 107%;
3215
+ right: -8%;
3216
+ }
3217
+ }
3218
+
3219
+ @keyframes indeterminate-short {
3220
+ 0% {
3221
+ left: -200%;
3222
+ right: 100%;
3223
+ }
3224
+ 60% {
3225
+ left: 107%;
3226
+ right: -8%;
3227
+ }
3228
+ 100% {
3229
+ left: 107%;
3230
+ right: -8%;
3231
+ }
3232
+ }
3233
+
3234
+ /*******************
3235
+ Utility Classes
3236
+ *******************/
3237
+ .hide {
3238
+ display: none !important;
3239
+ }
3240
+
3241
+ .left-align {
3242
+ text-align: left;
3243
+ }
3244
+
3245
+ .right-align {
3246
+ text-align: right;
3247
+ }
3248
+
3249
+ .center, .center-align {
3250
+ text-align: center;
3251
+ }
3252
+
3253
+ .left {
3254
+ float: left !important;
3255
+ }
3256
+
3257
+ .right {
3258
+ float: right !important;
3259
+ }
3260
+
3261
+ .no-select, input[type=range],
3262
+ input[type=range] + .thumb {
3263
+ -webkit-touch-callout: none;
3264
+ -webkit-user-select: none;
3265
+ -moz-user-select: none;
3266
+ -ms-user-select: none;
3267
+ user-select: none;
3268
+ }
3269
+
3270
+ .circle {
3271
+ border-radius: 50%;
3272
+ }
3273
+
3274
+ .center-block {
3275
+ display: block;
3276
+ margin-left: auto;
3277
+ margin-right: auto;
3278
+ }
3279
+
3280
+ .truncate {
3281
+ display: block;
3282
+ white-space: nowrap;
3283
+ overflow: hidden;
3284
+ text-overflow: ellipsis;
3285
+ }
3286
+
3287
+ .no-padding {
3288
+ padding: 0 !important;
3289
+ }
3290
+
3291
+ span.badge {
3292
+ min-width: 3rem;
3293
+ padding: 0 6px;
3294
+ margin-left: 14px;
3295
+ text-align: center;
3296
+ font-size: 1rem;
3297
+ line-height: 22px;
3298
+ height: 22px;
3299
+ color: #757575;
3300
+ float: right;
3301
+ box-sizing: border-box;
3302
+ }
3303
+
3304
+ span.badge.new {
3305
+ font-weight: 300;
3306
+ font-size: 0.8rem;
3307
+ color: #fff;
3308
+ background-color: #26a69a;
3309
+ border-radius: 2px;
3310
+ }
3311
+
3312
+ span.badge.new:after {
3313
+ content: " new";
3314
+ }
3315
+
3316
+ span.badge[data-badge-caption]::after {
3317
+ content: " " attr(data-badge-caption);
3318
+ }
3319
+
3320
+ nav ul a span.badge {
3321
+ display: inline-block;
3322
+ float: none;
3323
+ margin-left: 4px;
3324
+ line-height: 22px;
3325
+ height: 22px;
3326
+ }
3327
+
3328
+ .collection-item span.badge {
3329
+ margin-top: calc(0.75rem - 11px);
3330
+ }
3331
+
3332
+ .collapsible span.badge {
3333
+ margin-top: calc(1.5rem - 11px);
3334
+ }
3335
+
3336
+ .side-nav span.badge {
3337
+ margin-top: calc(24px - 11px);
3338
+ }
3339
+
3340
+ /* This is needed for some mobile phones to display the Google Icon font properly */
3341
+ .material-icons {
3342
+ text-rendering: optimizeLegibility;
3343
+ -webkit-font-feature-settings: 'liga';
3344
+ -moz-font-feature-settings: 'liga';
3345
+ font-feature-settings: 'liga';
3346
+ }
3347
+
3348
+ .container {
3349
+ margin: 0 auto;
3350
+ max-width: 1280px;
3351
+ width: 90%;
3352
+ }
3353
+
3354
+ @media only screen and (min-width: 601px) {
3355
+ .container {
3356
+ width: 85%;
3357
+ }
3358
+ }
3359
+
3360
+ @media only screen and (min-width: 993px) {
3361
+ .container {
3362
+ width: 70%;
3363
+ }
3364
+ }
3365
+
3366
+ .container .row {
3367
+ margin-left: -0.75rem;
3368
+ margin-right: -0.75rem;
3369
+ }
3370
+
3371
+ .section {
3372
+ padding-top: 1rem;
3373
+ padding-bottom: 1rem;
3374
+ }
3375
+
3376
+ .section.no-pad {
3377
+ padding: 0;
3378
+ }
3379
+
3380
+ .section.no-pad-bot {
3381
+ padding-bottom: 0;
3382
+ }
3383
+
3384
+ .section.no-pad-top {
3385
+ padding-top: 0;
3386
+ }
3387
+
3388
+ .row {
3389
+ margin-left: auto;
3390
+ margin-right: auto;
3391
+ margin-bottom: 20px;
3392
+ }
3393
+
3394
+ .row:after {
3395
+ content: "";
3396
+ display: table;
3397
+ clear: both;
3398
+ }
3399
+
3400
+ .row .col {
3401
+ float: left;
3402
+ box-sizing: border-box;
3403
+ padding: 0 0.75rem;
3404
+ min-height: 1px;
3405
+ }
3406
+
3407
+ .row .col[class*="push-"], .row .col[class*="pull-"] {
3408
+ position: relative;
3409
+ }
3410
+
3411
+ .row .col.s1 {
3412
+ width: 8.3333333333%;
3413
+ margin-left: auto;
3414
+ left: auto;
3415
+ right: auto;
3416
+ }
3417
+
3418
+ .row .col.s2 {
3419
+ width: 16.6666666667%;
3420
+ margin-left: auto;
3421
+ left: auto;
3422
+ right: auto;
3423
+ }
3424
+
3425
+ .row .col.s3 {
3426
+ width: 25%;
3427
+ margin-left: auto;
3428
+ left: auto;
3429
+ right: auto;
3430
+ }
3431
+
3432
+ .row .col.s4 {
3433
+ width: 33.3333333333%;
3434
+ margin-left: auto;
3435
+ left: auto;
3436
+ right: auto;
3437
+ }
3438
+
3439
+ .row .col.s5 {
3440
+ width: 41.6666666667%;
3441
+ margin-left: auto;
3442
+ left: auto;
3443
+ right: auto;
3444
+ }
3445
+
3446
+ .row .col.s6 {
3447
+ width: 50%;
3448
+ margin-left: auto;
3449
+ left: auto;
3450
+ right: auto;
3451
+ }
3452
+
3453
+ .row .col.s7 {
3454
+ width: 58.3333333333%;
3455
+ margin-left: auto;
3456
+ left: auto;
3457
+ right: auto;
3458
+ }
3459
+
3460
+ .row .col.s8 {
3461
+ width: 66.6666666667%;
3462
+ margin-left: auto;
3463
+ left: auto;
3464
+ right: auto;
3465
+ }
3466
+
3467
+ .row .col.s9 {
3468
+ width: 75%;
3469
+ margin-left: auto;
3470
+ left: auto;
3471
+ right: auto;
3472
+ }
3473
+
3474
+ .row .col.s10 {
3475
+ width: 83.3333333333%;
3476
+ margin-left: auto;
3477
+ left: auto;
3478
+ right: auto;
3479
+ }
3480
+
3481
+ .row .col.s11 {
3482
+ width: 91.6666666667%;
3483
+ margin-left: auto;
3484
+ left: auto;
3485
+ right: auto;
3486
+ }
3487
+
3488
+ .row .col.s12 {
3489
+ width: 100%;
3490
+ margin-left: auto;
3491
+ left: auto;
3492
+ right: auto;
3493
+ }
3494
+
3495
+ .row .col.offset-s1 {
3496
+ margin-left: 8.3333333333%;
3497
+ }
3498
+
3499
+ .row .col.pull-s1 {
3500
+ right: 8.3333333333%;
3501
+ }
3502
+
3503
+ .row .col.push-s1 {
3504
+ left: 8.3333333333%;
3505
+ }
3506
+
3507
+ .row .col.offset-s2 {
3508
+ margin-left: 16.6666666667%;
3509
+ }
3510
+
3511
+ .row .col.pull-s2 {
3512
+ right: 16.6666666667%;
3513
+ }
3514
+
3515
+ .row .col.push-s2 {
3516
+ left: 16.6666666667%;
3517
+ }
3518
+
3519
+ .row .col.offset-s3 {
3520
+ margin-left: 25%;
3521
+ }
3522
+
3523
+ .row .col.pull-s3 {
3524
+ right: 25%;
3525
+ }
3526
+
3527
+ .row .col.push-s3 {
3528
+ left: 25%;
3529
+ }
3530
+
3531
+ .row .col.offset-s4 {
3532
+ margin-left: 33.3333333333%;
3533
+ }
3534
+
3535
+ .row .col.pull-s4 {
3536
+ right: 33.3333333333%;
3537
+ }
3538
+
3539
+ .row .col.push-s4 {
3540
+ left: 33.3333333333%;
3541
+ }
3542
+
3543
+ .row .col.offset-s5 {
3544
+ margin-left: 41.6666666667%;
3545
+ }
3546
+
3547
+ .row .col.pull-s5 {
3548
+ right: 41.6666666667%;
3549
+ }
3550
+
3551
+ .row .col.push-s5 {
3552
+ left: 41.6666666667%;
3553
+ }
3554
+
3555
+ .row .col.offset-s6 {
3556
+ margin-left: 50%;
3557
+ }
3558
+
3559
+ .row .col.pull-s6 {
3560
+ right: 50%;
3561
+ }
3562
+
3563
+ .row .col.push-s6 {
3564
+ left: 50%;
3565
+ }
3566
+
3567
+ .row .col.offset-s7 {
3568
+ margin-left: 58.3333333333%;
3569
+ }
3570
+
3571
+ .row .col.pull-s7 {
3572
+ right: 58.3333333333%;
3573
+ }
3574
+
3575
+ .row .col.push-s7 {
3576
+ left: 58.3333333333%;
3577
+ }
3578
+
3579
+ .row .col.offset-s8 {
3580
+ margin-left: 66.6666666667%;
3581
+ }
3582
+
3583
+ .row .col.pull-s8 {
3584
+ right: 66.6666666667%;
3585
+ }
3586
+
3587
+ .row .col.push-s8 {
3588
+ left: 66.6666666667%;
3589
+ }
3590
+
3591
+ .row .col.offset-s9 {
3592
+ margin-left: 75%;
3593
+ }
3594
+
3595
+ .row .col.pull-s9 {
3596
+ right: 75%;
3597
+ }
3598
+
3599
+ .row .col.push-s9 {
3600
+ left: 75%;
3601
+ }
3602
+
3603
+ .row .col.offset-s10 {
3604
+ margin-left: 83.3333333333%;
3605
+ }
3606
+
3607
+ .row .col.pull-s10 {
3608
+ right: 83.3333333333%;
3609
+ }
3610
+
3611
+ .row .col.push-s10 {
3612
+ left: 83.3333333333%;
3613
+ }
3614
+
3615
+ .row .col.offset-s11 {
3616
+ margin-left: 91.6666666667%;
3617
+ }
3618
+
3619
+ .row .col.pull-s11 {
3620
+ right: 91.6666666667%;
3621
+ }
3622
+
3623
+ .row .col.push-s11 {
3624
+ left: 91.6666666667%;
3625
+ }
3626
+
3627
+ .row .col.offset-s12 {
3628
+ margin-left: 100%;
3629
+ }
3630
+
3631
+ .row .col.pull-s12 {
3632
+ right: 100%;
3633
+ }
3634
+
3635
+ .row .col.push-s12 {
3636
+ left: 100%;
3637
+ }
3638
+
3639
+ @media only screen and (min-width: 601px) {
3640
+ .row .col.m1 {
3641
+ width: 8.3333333333%;
3642
+ margin-left: auto;
3643
+ left: auto;
3644
+ right: auto;
3645
+ }
3646
+ .row .col.m2 {
3647
+ width: 16.6666666667%;
3648
+ margin-left: auto;
3649
+ left: auto;
3650
+ right: auto;
3651
+ }
3652
+ .row .col.m3 {
3653
+ width: 25%;
3654
+ margin-left: auto;
3655
+ left: auto;
3656
+ right: auto;
3657
+ }
3658
+ .row .col.m4 {
3659
+ width: 33.3333333333%;
3660
+ margin-left: auto;
3661
+ left: auto;
3662
+ right: auto;
3663
+ }
3664
+ .row .col.m5 {
3665
+ width: 41.6666666667%;
3666
+ margin-left: auto;
3667
+ left: auto;
3668
+ right: auto;
3669
+ }
3670
+ .row .col.m6 {
3671
+ width: 50%;
3672
+ margin-left: auto;
3673
+ left: auto;
3674
+ right: auto;
3675
+ }
3676
+ .row .col.m7 {
3677
+ width: 58.3333333333%;
3678
+ margin-left: auto;
3679
+ left: auto;
3680
+ right: auto;
3681
+ }
3682
+ .row .col.m8 {
3683
+ width: 66.6666666667%;
3684
+ margin-left: auto;
3685
+ left: auto;
3686
+ right: auto;
3687
+ }
3688
+ .row .col.m9 {
3689
+ width: 75%;
3690
+ margin-left: auto;
3691
+ left: auto;
3692
+ right: auto;
3693
+ }
3694
+ .row .col.m10 {
3695
+ width: 83.3333333333%;
3696
+ margin-left: auto;
3697
+ left: auto;
3698
+ right: auto;
3699
+ }
3700
+ .row .col.m11 {
3701
+ width: 91.6666666667%;
3702
+ margin-left: auto;
3703
+ left: auto;
3704
+ right: auto;
3705
+ }
3706
+ .row .col.m12 {
3707
+ width: 100%;
3708
+ margin-left: auto;
3709
+ left: auto;
3710
+ right: auto;
3711
+ }
3712
+ .row .col.offset-m1 {
3713
+ margin-left: 8.3333333333%;
3714
+ }
3715
+ .row .col.pull-m1 {
3716
+ right: 8.3333333333%;
3717
+ }
3718
+ .row .col.push-m1 {
3719
+ left: 8.3333333333%;
3720
+ }
3721
+ .row .col.offset-m2 {
3722
+ margin-left: 16.6666666667%;
3723
+ }
3724
+ .row .col.pull-m2 {
3725
+ right: 16.6666666667%;
3726
+ }
3727
+ .row .col.push-m2 {
3728
+ left: 16.6666666667%;
3729
+ }
3730
+ .row .col.offset-m3 {
3731
+ margin-left: 25%;
3732
+ }
3733
+ .row .col.pull-m3 {
3734
+ right: 25%;
3735
+ }
3736
+ .row .col.push-m3 {
3737
+ left: 25%;
3738
+ }
3739
+ .row .col.offset-m4 {
3740
+ margin-left: 33.3333333333%;
3741
+ }
3742
+ .row .col.pull-m4 {
3743
+ right: 33.3333333333%;
3744
+ }
3745
+ .row .col.push-m4 {
3746
+ left: 33.3333333333%;
3747
+ }
3748
+ .row .col.offset-m5 {
3749
+ margin-left: 41.6666666667%;
3750
+ }
3751
+ .row .col.pull-m5 {
3752
+ right: 41.6666666667%;
3753
+ }
3754
+ .row .col.push-m5 {
3755
+ left: 41.6666666667%;
3756
+ }
3757
+ .row .col.offset-m6 {
3758
+ margin-left: 50%;
3759
+ }
3760
+ .row .col.pull-m6 {
3761
+ right: 50%;
3762
+ }
3763
+ .row .col.push-m6 {
3764
+ left: 50%;
3765
+ }
3766
+ .row .col.offset-m7 {
3767
+ margin-left: 58.3333333333%;
3768
+ }
3769
+ .row .col.pull-m7 {
3770
+ right: 58.3333333333%;
3771
+ }
3772
+ .row .col.push-m7 {
3773
+ left: 58.3333333333%;
3774
+ }
3775
+ .row .col.offset-m8 {
3776
+ margin-left: 66.6666666667%;
3777
+ }
3778
+ .row .col.pull-m8 {
3779
+ right: 66.6666666667%;
3780
+ }
3781
+ .row .col.push-m8 {
3782
+ left: 66.6666666667%;
3783
+ }
3784
+ .row .col.offset-m9 {
3785
+ margin-left: 75%;
3786
+ }
3787
+ .row .col.pull-m9 {
3788
+ right: 75%;
3789
+ }
3790
+ .row .col.push-m9 {
3791
+ left: 75%;
3792
+ }
3793
+ .row .col.offset-m10 {
3794
+ margin-left: 83.3333333333%;
3795
+ }
3796
+ .row .col.pull-m10 {
3797
+ right: 83.3333333333%;
3798
+ }
3799
+ .row .col.push-m10 {
3800
+ left: 83.3333333333%;
3801
+ }
3802
+ .row .col.offset-m11 {
3803
+ margin-left: 91.6666666667%;
3804
+ }
3805
+ .row .col.pull-m11 {
3806
+ right: 91.6666666667%;
3807
+ }
3808
+ .row .col.push-m11 {
3809
+ left: 91.6666666667%;
3810
+ }
3811
+ .row .col.offset-m12 {
3812
+ margin-left: 100%;
3813
+ }
3814
+ .row .col.pull-m12 {
3815
+ right: 100%;
3816
+ }
3817
+ .row .col.push-m12 {
3818
+ left: 100%;
3819
+ }
3820
+ }
3821
+
3822
+ @media only screen and (min-width: 993px) {
3823
+ .row .col.l1 {
3824
+ width: 8.3333333333%;
3825
+ margin-left: auto;
3826
+ left: auto;
3827
+ right: auto;
3828
+ }
3829
+ .row .col.l2 {
3830
+ width: 16.6666666667%;
3831
+ margin-left: auto;
3832
+ left: auto;
3833
+ right: auto;
3834
+ }
3835
+ .row .col.l3 {
3836
+ width: 25%;
3837
+ margin-left: auto;
3838
+ left: auto;
3839
+ right: auto;
3840
+ }
3841
+ .row .col.l4 {
3842
+ width: 33.3333333333%;
3843
+ margin-left: auto;
3844
+ left: auto;
3845
+ right: auto;
3846
+ }
3847
+ .row .col.l5 {
3848
+ width: 41.6666666667%;
3849
+ margin-left: auto;
3850
+ left: auto;
3851
+ right: auto;
3852
+ }
3853
+ .row .col.l6 {
3854
+ width: 50%;
3855
+ margin-left: auto;
3856
+ left: auto;
3857
+ right: auto;
3858
+ }
3859
+ .row .col.l7 {
3860
+ width: 58.3333333333%;
3861
+ margin-left: auto;
3862
+ left: auto;
3863
+ right: auto;
3864
+ }
3865
+ .row .col.l8 {
3866
+ width: 66.6666666667%;
3867
+ margin-left: auto;
3868
+ left: auto;
3869
+ right: auto;
3870
+ }
3871
+ .row .col.l9 {
3872
+ width: 75%;
3873
+ margin-left: auto;
3874
+ left: auto;
3875
+ right: auto;
3876
+ }
3877
+ .row .col.l10 {
3878
+ width: 83.3333333333%;
3879
+ margin-left: auto;
3880
+ left: auto;
3881
+ right: auto;
3882
+ }
3883
+ .row .col.l11 {
3884
+ width: 91.6666666667%;
3885
+ margin-left: auto;
3886
+ left: auto;
3887
+ right: auto;
3888
+ }
3889
+ .row .col.l12 {
3890
+ width: 100%;
3891
+ margin-left: auto;
3892
+ left: auto;
3893
+ right: auto;
3894
+ }
3895
+ .row .col.offset-l1 {
3896
+ margin-left: 8.3333333333%;
3897
+ }
3898
+ .row .col.pull-l1 {
3899
+ right: 8.3333333333%;
3900
+ }
3901
+ .row .col.push-l1 {
3902
+ left: 8.3333333333%;
3903
+ }
3904
+ .row .col.offset-l2 {
3905
+ margin-left: 16.6666666667%;
3906
+ }
3907
+ .row .col.pull-l2 {
3908
+ right: 16.6666666667%;
3909
+ }
3910
+ .row .col.push-l2 {
3911
+ left: 16.6666666667%;
3912
+ }
3913
+ .row .col.offset-l3 {
3914
+ margin-left: 25%;
3915
+ }
3916
+ .row .col.pull-l3 {
3917
+ right: 25%;
3918
+ }
3919
+ .row .col.push-l3 {
3920
+ left: 25%;
3921
+ }
3922
+ .row .col.offset-l4 {
3923
+ margin-left: 33.3333333333%;
3924
+ }
3925
+ .row .col.pull-l4 {
3926
+ right: 33.3333333333%;
3927
+ }
3928
+ .row .col.push-l4 {
3929
+ left: 33.3333333333%;
3930
+ }
3931
+ .row .col.offset-l5 {
3932
+ margin-left: 41.6666666667%;
3933
+ }
3934
+ .row .col.pull-l5 {
3935
+ right: 41.6666666667%;
3936
+ }
3937
+ .row .col.push-l5 {
3938
+ left: 41.6666666667%;
3939
+ }
3940
+ .row .col.offset-l6 {
3941
+ margin-left: 50%;
3942
+ }
3943
+ .row .col.pull-l6 {
3944
+ right: 50%;
3945
+ }
3946
+ .row .col.push-l6 {
3947
+ left: 50%;
3948
+ }
3949
+ .row .col.offset-l7 {
3950
+ margin-left: 58.3333333333%;
3951
+ }
3952
+ .row .col.pull-l7 {
3953
+ right: 58.3333333333%;
3954
+ }
3955
+ .row .col.push-l7 {
3956
+ left: 58.3333333333%;
3957
+ }
3958
+ .row .col.offset-l8 {
3959
+ margin-left: 66.6666666667%;
3960
+ }
3961
+ .row .col.pull-l8 {
3962
+ right: 66.6666666667%;
3963
+ }
3964
+ .row .col.push-l8 {
3965
+ left: 66.6666666667%;
3966
+ }
3967
+ .row .col.offset-l9 {
3968
+ margin-left: 75%;
3969
+ }
3970
+ .row .col.pull-l9 {
3971
+ right: 75%;
3972
+ }
3973
+ .row .col.push-l9 {
3974
+ left: 75%;
3975
+ }
3976
+ .row .col.offset-l10 {
3977
+ margin-left: 83.3333333333%;
3978
+ }
3979
+ .row .col.pull-l10 {
3980
+ right: 83.3333333333%;
3981
+ }
3982
+ .row .col.push-l10 {
3983
+ left: 83.3333333333%;
3984
+ }
3985
+ .row .col.offset-l11 {
3986
+ margin-left: 91.6666666667%;
3987
+ }
3988
+ .row .col.pull-l11 {
3989
+ right: 91.6666666667%;
3990
+ }
3991
+ .row .col.push-l11 {
3992
+ left: 91.6666666667%;
3993
+ }
3994
+ .row .col.offset-l12 {
3995
+ margin-left: 100%;
3996
+ }
3997
+ .row .col.pull-l12 {
3998
+ right: 100%;
3999
+ }
4000
+ .row .col.push-l12 {
4001
+ left: 100%;
4002
+ }
4003
+ }
4004
+
4005
+ nav {
4006
+ color: #fff;
4007
+ background-color: #ee6e73;
4008
+ width: 100%;
4009
+ height: 56px;
4010
+ line-height: 56px;
4011
+ }
4012
+
4013
+ nav.nav-extended {
4014
+ height: auto;
4015
+ }
4016
+
4017
+ nav.nav-extended .nav-wrapper {
4018
+ min-height: 56px;
4019
+ height: auto;
4020
+ }
4021
+
4022
+ nav.nav-extended .nav-content {
4023
+ position: relative;
4024
+ line-height: normal;
4025
+ }
4026
+
4027
+ nav a {
4028
+ color: #fff;
4029
+ }
4030
+
4031
+ nav i,
4032
+ nav [class^="mdi-"], nav [class*="mdi-"],
4033
+ nav i.material-icons {
4034
+ display: block;
4035
+ font-size: 24px;
4036
+ height: 56px;
4037
+ line-height: 56px;
4038
+ }
4039
+
4040
+ nav .nav-wrapper {
4041
+ position: relative;
4042
+ height: 100%;
4043
+ }
4044
+
4045
+ @media only screen and (min-width: 993px) {
4046
+ nav a.button-collapse {
4047
+ display: none;
4048
+ }
4049
+ }
4050
+
4051
+ nav .button-collapse {
4052
+ float: left;
4053
+ position: relative;
4054
+ z-index: 1;
4055
+ height: 56px;
4056
+ margin: 0 18px;
4057
+ }
4058
+
4059
+ nav .button-collapse i {
4060
+ height: 56px;
4061
+ line-height: 56px;
4062
+ }
4063
+
4064
+ nav .brand-logo {
4065
+ position: absolute;
4066
+ color: #fff;
4067
+ display: inline-block;
4068
+ font-size: 2.1rem;
4069
+ padding: 0;
4070
+ white-space: nowrap;
4071
+ }
4072
+
4073
+ nav .brand-logo.center {
4074
+ left: 50%;
4075
+ -webkit-transform: translateX(-50%);
4076
+ transform: translateX(-50%);
4077
+ }
4078
+
4079
+ @media only screen and (max-width: 992px) {
4080
+ nav .brand-logo {
4081
+ left: 50%;
4082
+ -webkit-transform: translateX(-50%);
4083
+ transform: translateX(-50%);
4084
+ }
4085
+ nav .brand-logo.left, nav .brand-logo.right {
4086
+ padding: 0;
4087
+ -webkit-transform: none;
4088
+ transform: none;
4089
+ }
4090
+ nav .brand-logo.left {
4091
+ left: 0.5rem;
4092
+ }
4093
+ nav .brand-logo.right {
4094
+ right: 0.5rem;
4095
+ left: auto;
4096
+ }
4097
+ }
4098
+
4099
+ nav .brand-logo.right {
4100
+ right: 0.5rem;
4101
+ padding: 0;
4102
+ }
4103
+
4104
+ nav .brand-logo i,
4105
+ nav .brand-logo [class^="mdi-"], nav .brand-logo [class*="mdi-"],
4106
+ nav .brand-logo i.material-icons {
4107
+ float: left;
4108
+ margin-right: 15px;
4109
+ }
4110
+
4111
+ nav .nav-title {
4112
+ display: inline-block;
4113
+ font-size: 32px;
4114
+ padding: 28px 0;
4115
+ }
4116
+
4117
+ nav ul {
4118
+ margin: 0;
4119
+ }
4120
+
4121
+ nav ul li {
4122
+ transition: background-color .3s;
4123
+ float: left;
4124
+ padding: 0;
4125
+ }
4126
+
4127
+ nav ul li.active {
4128
+ background-color: rgba(0, 0, 0, 0.1);
4129
+ }
4130
+
4131
+ nav ul a {
4132
+ transition: background-color .3s;
4133
+ font-size: 1rem;
4134
+ color: #fff;
4135
+ display: block;
4136
+ padding: 0 15px;
4137
+ cursor: pointer;
4138
+ }
4139
+
4140
+ nav ul a.btn, nav ul a.btn-large, nav ul a.btn-large, nav ul a.btn-flat, nav ul a.btn-floating {
4141
+ margin-top: -2px;
4142
+ margin-left: 15px;
4143
+ margin-right: 15px;
4144
+ }
4145
+
4146
+ nav ul a.btn > .material-icons, nav ul a.btn-large > .material-icons, nav ul a.btn-large > .material-icons, nav ul a.btn-flat > .material-icons, nav ul a.btn-floating > .material-icons {
4147
+ height: inherit;
4148
+ line-height: inherit;
4149
+ }
4150
+
4151
+ nav ul a:hover {
4152
+ background-color: rgba(0, 0, 0, 0.1);
4153
+ }
4154
+
4155
+ nav ul.left {
4156
+ float: left;
4157
+ }
4158
+
4159
+ nav form {
4160
+ height: 100%;
4161
+ }
4162
+
4163
+ nav .input-field {
4164
+ margin: 0;
4165
+ height: 100%;
4166
+ }
4167
+
4168
+ nav .input-field input {
4169
+ height: 100%;
4170
+ font-size: 1.2rem;
4171
+ border: none;
4172
+ padding-left: 2rem;
4173
+ }
4174
+
4175
+ nav .input-field input:focus, nav .input-field input[type=text]:valid, nav .input-field input[type=password]:valid, nav .input-field input[type=email]:valid, nav .input-field input[type=url]:valid, nav .input-field input[type=date]:valid {
4176
+ border: none;
4177
+ box-shadow: none;
4178
+ }
4179
+
4180
+ nav .input-field label {
4181
+ top: 0;
4182
+ left: 0;
4183
+ }
4184
+
4185
+ nav .input-field label i {
4186
+ color: rgba(255, 255, 255, 0.7);
4187
+ transition: color .3s;
4188
+ }
4189
+
4190
+ nav .input-field label.active i {
4191
+ color: #fff;
4192
+ }
4193
+
4194
+ .navbar-fixed {
4195
+ position: relative;
4196
+ height: 56px;
4197
+ z-index: 997;
4198
+ }
4199
+
4200
+ .navbar-fixed nav {
4201
+ position: fixed;
4202
+ }
4203
+
4204
+ @media only screen and (min-width: 601px) {
4205
+ nav.nav-extended .nav-wrapper {
4206
+ min-height: 64px;
4207
+ }
4208
+ nav, nav .nav-wrapper i, nav a.button-collapse, nav a.button-collapse i {
4209
+ height: 64px;
4210
+ line-height: 64px;
4211
+ }
4212
+ .navbar-fixed {
4213
+ height: 64px;
4214
+ }
4215
+ }
4216
+
4217
+ @font-face {
4218
+ font-family: "Roboto";
4219
+ src: local(Roboto Thin), url("../fonts/roboto/Roboto-Thin.eot");
4220
+ src: url("../fonts/roboto/Roboto-Thin.eot?#iefix") format("embedded-opentype"), url("../fonts/roboto/Roboto-Thin.woff2") format("woff2"), url("../fonts/roboto/Roboto-Thin.woff") format("woff"), url("../fonts/roboto/Roboto-Thin.ttf") format("truetype");
4221
+ font-weight: 200;
4222
+ }
4223
+
4224
+ @font-face {
4225
+ font-family: "Roboto";
4226
+ src: local(Roboto Light), url("../fonts/roboto/Roboto-Light.eot");
4227
+ src: url("../fonts/roboto/Roboto-Light.eot?#iefix") format("embedded-opentype"), url("../fonts/roboto/Roboto-Light.woff2") format("woff2"), url("../fonts/roboto/Roboto-Light.woff") format("woff"), url("../fonts/roboto/Roboto-Light.ttf") format("truetype");
4228
+ font-weight: 300;
4229
+ }
4230
+
4231
+ @font-face {
4232
+ font-family: "Roboto";
4233
+ src: local(Roboto Regular), url("../fonts/roboto/Roboto-Regular.eot");
4234
+ src: url("../fonts/roboto/Roboto-Regular.eot?#iefix") format("embedded-opentype"), url("../fonts/roboto/Roboto-Regular.woff2") format("woff2"), url("../fonts/roboto/Roboto-Regular.woff") format("woff"), url("../fonts/roboto/Roboto-Regular.ttf") format("truetype");
4235
+ font-weight: 400;
4236
+ }
4237
+
4238
+ @font-face {
4239
+ font-family: "Roboto";
4240
+ src: url("../fonts/roboto/Roboto-Medium.eot");
4241
+ src: url("../fonts/roboto/Roboto-Medium.eot?#iefix") format("embedded-opentype"), url("../fonts/roboto/Roboto-Medium.woff2") format("woff2"), url("../fonts/roboto/Roboto-Medium.woff") format("woff"), url("../fonts/roboto/Roboto-Medium.ttf") format("truetype");
4242
+ font-weight: 500;
4243
+ }
4244
+
4245
+ @font-face {
4246
+ font-family: "Roboto";
4247
+ src: url("../fonts/roboto/Roboto-Bold.eot");
4248
+ src: url("../fonts/roboto/Roboto-Bold.eot?#iefix") format("embedded-opentype"), url("../fonts/roboto/Roboto-Bold.woff2") format("woff2"), url("../fonts/roboto/Roboto-Bold.woff") format("woff"), url("../fonts/roboto/Roboto-Bold.ttf") format("truetype");
4249
+ font-weight: 700;
4250
+ }
4251
+
4252
+ a {
4253
+ text-decoration: none;
4254
+ }
4255
+
4256
+ html {
4257
+ line-height: 1.5;
4258
+ font-family: "Roboto", sans-serif;
4259
+ font-weight: normal;
4260
+ color: rgba(0, 0, 0, 0.87);
4261
+ }
4262
+
4263
+ @media only screen and (min-width: 0) {
4264
+ html {
4265
+ font-size: 14px;
4266
+ }
4267
+ }
4268
+
4269
+ @media only screen and (min-width: 992px) {
4270
+ html {
4271
+ font-size: 14.5px;
4272
+ }
4273
+ }
4274
+
4275
+ @media only screen and (min-width: 1200px) {
4276
+ html {
4277
+ font-size: 15px;
4278
+ }
4279
+ }
4280
+
4281
+ h1, h2, h3, h4, h5, h6 {
4282
+ font-weight: 400;
4283
+ line-height: 1.1;
4284
+ }
4285
+
4286
+ h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {
4287
+ font-weight: inherit;
4288
+ }
4289
+
4290
+ h1 {
4291
+ font-size: 4.2rem;
4292
+ line-height: 110%;
4293
+ margin: 2.1rem 0 1.68rem 0;
4294
+ }
4295
+
4296
+ h2 {
4297
+ font-size: 3.56rem;
4298
+ line-height: 110%;
4299
+ margin: 1.78rem 0 1.424rem 0;
4300
+ }
4301
+
4302
+ h3 {
4303
+ font-size: 2.92rem;
4304
+ line-height: 110%;
4305
+ margin: 1.46rem 0 1.168rem 0;
4306
+ }
4307
+
4308
+ h4 {
4309
+ font-size: 2.28rem;
4310
+ line-height: 110%;
4311
+ margin: 1.14rem 0 0.912rem 0;
4312
+ }
4313
+
4314
+ h5 {
4315
+ font-size: 1.64rem;
4316
+ line-height: 110%;
4317
+ margin: 0.82rem 0 0.656rem 0;
4318
+ }
4319
+
4320
+ h6 {
4321
+ font-size: 1rem;
4322
+ line-height: 110%;
4323
+ margin: 0.5rem 0 0.4rem 0;
4324
+ }
4325
+
4326
+ em {
4327
+ font-style: italic;
4328
+ }
4329
+
4330
+ strong {
4331
+ font-weight: 500;
4332
+ }
4333
+
4334
+ small {
4335
+ font-size: 75%;
4336
+ }
4337
+
4338
+ .light, footer.page-footer .footer-copyright {
4339
+ font-weight: 300;
4340
+ }
4341
+
4342
+ .thin {
4343
+ font-weight: 200;
4344
+ }
4345
+
4346
+ .flow-text {
4347
+ font-weight: 300;
4348
+ }
4349
+
4350
+ @media only screen and (min-width: 360px) {
4351
+ .flow-text {
4352
+ font-size: 1.2rem;
4353
+ }
4354
+ }
4355
+
4356
+ @media only screen and (min-width: 390px) {
4357
+ .flow-text {
4358
+ font-size: 1.224rem;
4359
+ }
4360
+ }
4361
+
4362
+ @media only screen and (min-width: 420px) {
4363
+ .flow-text {
4364
+ font-size: 1.248rem;
4365
+ }
4366
+ }
4367
+
4368
+ @media only screen and (min-width: 450px) {
4369
+ .flow-text {
4370
+ font-size: 1.272rem;
4371
+ }
4372
+ }
4373
+
4374
+ @media only screen and (min-width: 480px) {
4375
+ .flow-text {
4376
+ font-size: 1.296rem;
4377
+ }
4378
+ }
4379
+
4380
+ @media only screen and (min-width: 510px) {
4381
+ .flow-text {
4382
+ font-size: 1.32rem;
4383
+ }
4384
+ }
4385
+
4386
+ @media only screen and (min-width: 540px) {
4387
+ .flow-text {
4388
+ font-size: 1.344rem;
4389
+ }
4390
+ }
4391
+
4392
+ @media only screen and (min-width: 570px) {
4393
+ .flow-text {
4394
+ font-size: 1.368rem;
4395
+ }
4396
+ }
4397
+
4398
+ @media only screen and (min-width: 600px) {
4399
+ .flow-text {
4400
+ font-size: 1.392rem;
4401
+ }
4402
+ }
4403
+
4404
+ @media only screen and (min-width: 630px) {
4405
+ .flow-text {
4406
+ font-size: 1.416rem;
4407
+ }
4408
+ }
4409
+
4410
+ @media only screen and (min-width: 660px) {
4411
+ .flow-text {
4412
+ font-size: 1.44rem;
4413
+ }
4414
+ }
4415
+
4416
+ @media only screen and (min-width: 690px) {
4417
+ .flow-text {
4418
+ font-size: 1.464rem;
4419
+ }
4420
+ }
4421
+
4422
+ @media only screen and (min-width: 720px) {
4423
+ .flow-text {
4424
+ font-size: 1.488rem;
4425
+ }
4426
+ }
4427
+
4428
+ @media only screen and (min-width: 750px) {
4429
+ .flow-text {
4430
+ font-size: 1.512rem;
4431
+ }
4432
+ }
4433
+
4434
+ @media only screen and (min-width: 780px) {
4435
+ .flow-text {
4436
+ font-size: 1.536rem;
4437
+ }
4438
+ }
4439
+
4440
+ @media only screen and (min-width: 810px) {
4441
+ .flow-text {
4442
+ font-size: 1.56rem;
4443
+ }
4444
+ }
4445
+
4446
+ @media only screen and (min-width: 840px) {
4447
+ .flow-text {
4448
+ font-size: 1.584rem;
4449
+ }
4450
+ }
4451
+
4452
+ @media only screen and (min-width: 870px) {
4453
+ .flow-text {
4454
+ font-size: 1.608rem;
4455
+ }
4456
+ }
4457
+
4458
+ @media only screen and (min-width: 900px) {
4459
+ .flow-text {
4460
+ font-size: 1.632rem;
4461
+ }
4462
+ }
4463
+
4464
+ @media only screen and (min-width: 930px) {
4465
+ .flow-text {
4466
+ font-size: 1.656rem;
4467
+ }
4468
+ }
4469
+
4470
+ @media only screen and (min-width: 960px) {
4471
+ .flow-text {
4472
+ font-size: 1.68rem;
4473
+ }
4474
+ }
4475
+
4476
+ @media only screen and (max-width: 360px) {
4477
+ .flow-text {
4478
+ font-size: 1.2rem;
4479
+ }
4480
+ }
4481
+
4482
+ .scale-transition {
4483
+ transition: -webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important;
4484
+ transition: transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important;
4485
+ transition: transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63), -webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important;
4486
+ }
4487
+
4488
+ .scale-transition.scale-out {
4489
+ -webkit-transform: scale(0);
4490
+ transform: scale(0);
4491
+ transition: -webkit-transform .2s !important;
4492
+ transition: transform .2s !important;
4493
+ transition: transform .2s, -webkit-transform .2s !important;
4494
+ }
4495
+
4496
+ .scale-transition.scale-in {
4497
+ -webkit-transform: scale(1);
4498
+ transform: scale(1);
4499
+ }
4500
+
4501
+ .card-panel {
4502
+ transition: box-shadow .25s;
4503
+ padding: 24px;
4504
+ margin: 0.5rem 0 1rem 0;
4505
+ border-radius: 2px;
4506
+ background-color: #fff;
4507
+ }
4508
+
4509
+ .card {
4510
+ position: relative;
4511
+ margin: 0.5rem 0 1rem 0;
4512
+ background-color: #fff;
4513
+ transition: box-shadow .25s;
4514
+ border-radius: 2px;
4515
+ }
4516
+
4517
+ .card .card-title {
4518
+ font-size: 24px;
4519
+ font-weight: 300;
4520
+ }
4521
+
4522
+ .card .card-title.activator {
4523
+ cursor: pointer;
4524
+ }
4525
+
4526
+ .card.small, .card.medium, .card.large {
4527
+ position: relative;
4528
+ }
4529
+
4530
+ .card.small .card-image, .card.medium .card-image, .card.large .card-image {
4531
+ max-height: 60%;
4532
+ overflow: hidden;
4533
+ }
4534
+
4535
+ .card.small .card-image + .card-content, .card.medium .card-image + .card-content, .card.large .card-image + .card-content {
4536
+ max-height: 40%;
4537
+ }
4538
+
4539
+ .card.small .card-content, .card.medium .card-content, .card.large .card-content {
4540
+ max-height: 100%;
4541
+ overflow: hidden;
4542
+ }
4543
+
4544
+ .card.small .card-action, .card.medium .card-action, .card.large .card-action {
4545
+ position: absolute;
4546
+ bottom: 0;
4547
+ left: 0;
4548
+ right: 0;
4549
+ }
4550
+
4551
+ .card.small {
4552
+ height: 300px;
4553
+ }
4554
+
4555
+ .card.medium {
4556
+ height: 400px;
4557
+ }
4558
+
4559
+ .card.large {
4560
+ height: 500px;
4561
+ }
4562
+
4563
+ .card.horizontal {
4564
+ display: -webkit-flex;
4565
+ display: -ms-flexbox;
4566
+ display: flex;
4567
+ }
4568
+
4569
+ .card.horizontal.small .card-image, .card.horizontal.medium .card-image, .card.horizontal.large .card-image {
4570
+ height: 100%;
4571
+ max-height: none;
4572
+ overflow: visible;
4573
+ }
4574
+
4575
+ .card.horizontal.small .card-image img, .card.horizontal.medium .card-image img, .card.horizontal.large .card-image img {
4576
+ height: 100%;
4577
+ }
4578
+
4579
+ .card.horizontal .card-image {
4580
+ max-width: 50%;
4581
+ }
4582
+
4583
+ .card.horizontal .card-image img {
4584
+ border-radius: 2px 0 0 2px;
4585
+ max-width: 100%;
4586
+ width: auto;
4587
+ }
4588
+
4589
+ .card.horizontal .card-stacked {
4590
+ display: -webkit-flex;
4591
+ display: -ms-flexbox;
4592
+ display: flex;
4593
+ -webkit-flex-direction: column;
4594
+ -ms-flex-direction: column;
4595
+ flex-direction: column;
4596
+ -webkit-flex: 1;
4597
+ -ms-flex: 1;
4598
+ flex: 1;
4599
+ position: relative;
4600
+ }
4601
+
4602
+ .card.horizontal .card-stacked .card-content {
4603
+ -webkit-flex-grow: 1;
4604
+ -ms-flex-positive: 1;
4605
+ flex-grow: 1;
4606
+ }
4607
+
4608
+ .card.sticky-action .card-action {
4609
+ z-index: 2;
4610
+ }
4611
+
4612
+ .card.sticky-action .card-reveal {
4613
+ z-index: 1;
4614
+ padding-bottom: 64px;
4615
+ }
4616
+
4617
+ .card .card-image {
4618
+ position: relative;
4619
+ }
4620
+
4621
+ .card .card-image img {
4622
+ display: block;
4623
+ border-radius: 2px 2px 0 0;
4624
+ position: relative;
4625
+ left: 0;
4626
+ right: 0;
4627
+ top: 0;
4628
+ bottom: 0;
4629
+ width: 100%;
4630
+ }
4631
+
4632
+ .card .card-image .card-title {
4633
+ color: #fff;
4634
+ position: absolute;
4635
+ bottom: 0;
4636
+ left: 0;
4637
+ max-width: 100%;
4638
+ padding: 24px;
4639
+ }
4640
+
4641
+ .card .card-content {
4642
+ padding: 24px;
4643
+ border-radius: 0 0 2px 2px;
4644
+ }
4645
+
4646
+ .card .card-content p {
4647
+ margin: 0;
4648
+ color: inherit;
4649
+ }
4650
+
4651
+ .card .card-content .card-title {
4652
+ display: block;
4653
+ line-height: 32px;
4654
+ margin-bottom: 8px;
4655
+ }
4656
+
4657
+ .card .card-content .card-title i {
4658
+ line-height: 32px;
4659
+ }
4660
+
4661
+ .card .card-action {
4662
+ position: relative;
4663
+ background-color: inherit;
4664
+ border-top: 1px solid rgba(160, 160, 160, 0.2);
4665
+ padding: 16px 24px;
4666
+ }
4667
+
4668
+ .card .card-action a:not(.btn):not(.btn-large):not(.btn-large):not(.btn-floating) {
4669
+ color: #ffab40;
4670
+ margin-right: 24px;
4671
+ transition: color .3s ease;
4672
+ text-transform: uppercase;
4673
+ }
4674
+
4675
+ .card .card-action a:not(.btn):not(.btn-large):not(.btn-large):not(.btn-floating):hover {
4676
+ color: #ffd8a6;
4677
+ }
4678
+
4679
+ .card .card-reveal {
4680
+ padding: 24px;
4681
+ position: absolute;
4682
+ background-color: #fff;
4683
+ width: 100%;
4684
+ overflow-y: auto;
4685
+ left: 0;
4686
+ top: 100%;
4687
+ height: 100%;
4688
+ z-index: 3;
4689
+ display: none;
4690
+ }
4691
+
4692
+ .card .card-reveal .card-title {
4693
+ cursor: pointer;
4694
+ display: block;
4695
+ }
4696
+
4697
+ #toast-container {
4698
+ display: block;
4699
+ position: fixed;
4700
+ z-index: 10000;
4701
+ }
4702
+
4703
+ @media only screen and (max-width: 600px) {
4704
+ #toast-container {
4705
+ min-width: 100%;
4706
+ bottom: 0%;
4707
+ }
4708
+ }
4709
+
4710
+ @media only screen and (min-width: 601px) and (max-width: 992px) {
4711
+ #toast-container {
4712
+ left: 5%;
4713
+ bottom: 7%;
4714
+ max-width: 90%;
4715
+ }
4716
+ }
4717
+
4718
+ @media only screen and (min-width: 993px) {
4719
+ #toast-container {
4720
+ top: 10%;
4721
+ right: 7%;
4722
+ max-width: 86%;
4723
+ }
4724
+ }
4725
+
4726
+ .toast {
4727
+ border-radius: 2px;
4728
+ top: 35px;
4729
+ width: auto;
4730
+ clear: both;
4731
+ margin-top: 10px;
4732
+ position: relative;
4733
+ max-width: 100%;
4734
+ height: auto;
4735
+ min-height: 48px;
4736
+ line-height: 1.5em;
4737
+ word-break: break-all;
4738
+ background-color: #323232;
4739
+ padding: 10px 25px;
4740
+ font-size: 1.1rem;
4741
+ font-weight: 300;
4742
+ color: #fff;
4743
+ display: -webkit-flex;
4744
+ display: -ms-flexbox;
4745
+ display: flex;
4746
+ -webkit-align-items: center;
4747
+ -ms-flex-align: center;
4748
+ align-items: center;
4749
+ -webkit-justify-content: space-between;
4750
+ -ms-flex-pack: justify;
4751
+ justify-content: space-between;
4752
+ }
4753
+
4754
+ .toast .btn, .toast .btn-large, .toast .btn-flat {
4755
+ margin: 0;
4756
+ margin-left: 3rem;
4757
+ }
4758
+
4759
+ .toast.rounded {
4760
+ border-radius: 24px;
4761
+ }
4762
+
4763
+ @media only screen and (max-width: 600px) {
4764
+ .toast {
4765
+ width: 100%;
4766
+ border-radius: 0;
4767
+ }
4768
+ }
4769
+
4770
+ @media only screen and (min-width: 601px) and (max-width: 992px) {
4771
+ .toast {
4772
+ float: left;
4773
+ }
4774
+ }
4775
+
4776
+ @media only screen and (min-width: 993px) {
4777
+ .toast {
4778
+ float: right;
4779
+ }
4780
+ }
4781
+
4782
+ .tabs {
4783
+ position: relative;
4784
+ overflow-x: auto;
4785
+ overflow-y: hidden;
4786
+ height: 48px;
4787
+ width: 100%;
4788
+ background-color: #fff;
4789
+ margin: 0 auto;
4790
+ white-space: nowrap;
4791
+ }
4792
+
4793
+ .tabs.tabs-transparent {
4794
+ background-color: transparent;
4795
+ }
4796
+
4797
+ .tabs.tabs-transparent .tab a,
4798
+ .tabs.tabs-transparent .tab.disabled a,
4799
+ .tabs.tabs-transparent .tab.disabled a:hover {
4800
+ color: rgba(255, 255, 255, 0.7);
4801
+ }
4802
+
4803
+ .tabs.tabs-transparent .tab a:hover,
4804
+ .tabs.tabs-transparent .tab a.active {
4805
+ color: #fff;
4806
+ }
4807
+
4808
+ .tabs.tabs-transparent .indicator {
4809
+ background-color: #fff;
4810
+ }
4811
+
4812
+ .tabs.tabs-fixed-width {
4813
+ display: -webkit-flex;
4814
+ display: -ms-flexbox;
4815
+ display: flex;
4816
+ }
4817
+
4818
+ .tabs.tabs-fixed-width .tab {
4819
+ -webkit-flex-grow: 1;
4820
+ -ms-flex-positive: 1;
4821
+ flex-grow: 1;
4822
+ }
4823
+
4824
+ .tabs .tab {
4825
+ display: inline-block;
4826
+ text-align: center;
4827
+ line-height: 48px;
4828
+ height: 48px;
4829
+ padding: 0;
4830
+ margin: 0;
4831
+ text-transform: uppercase;
4832
+ }
4833
+
4834
+ .tabs .tab a {
4835
+ color: rgba(238, 110, 115, 0.7);
4836
+ display: block;
4837
+ width: 100%;
4838
+ height: 100%;
4839
+ padding: 0 24px;
4840
+ font-size: 14px;
4841
+ text-overflow: ellipsis;
4842
+ overflow: hidden;
4843
+ transition: color .28s ease;
4844
+ }
4845
+
4846
+ .tabs .tab a:hover, .tabs .tab a.active {
4847
+ background-color: transparent;
4848
+ color: #ee6e73;
4849
+ }
4850
+
4851
+ .tabs .tab.disabled a,
4852
+ .tabs .tab.disabled a:hover {
4853
+ color: rgba(238, 110, 115, 0.7);
4854
+ cursor: default;
4855
+ }
4856
+
4857
+ .tabs .indicator {
4858
+ position: absolute;
4859
+ bottom: 0;
4860
+ height: 2px;
4861
+ background-color: #f6b2b5;
4862
+ will-change: left, right;
4863
+ }
4864
+
4865
+ @media only screen and (max-width: 992px) {
4866
+ .tabs {
4867
+ display: -webkit-flex;
4868
+ display: -ms-flexbox;
4869
+ display: flex;
4870
+ }
4871
+ .tabs .tab {
4872
+ -webkit-flex-grow: 1;
4873
+ -ms-flex-positive: 1;
4874
+ flex-grow: 1;
4875
+ }
4876
+ .tabs .tab a {
4877
+ padding: 0 12px;
4878
+ }
4879
+ }
4880
+
4881
+ .material-tooltip {
4882
+ padding: 10px 8px;
4883
+ font-size: 1rem;
4884
+ z-index: 2000;
4885
+ background-color: transparent;
4886
+ border-radius: 2px;
4887
+ color: #fff;
4888
+ min-height: 36px;
4889
+ line-height: 120%;
4890
+ opacity: 0;
4891
+ position: absolute;
4892
+ text-align: center;
4893
+ max-width: calc(100% - 4px);
4894
+ overflow: hidden;
4895
+ left: 0;
4896
+ top: 0;
4897
+ pointer-events: none;
4898
+ visibility: hidden;
4899
+ }
4900
+
4901
+ .backdrop {
4902
+ position: absolute;
4903
+ opacity: 0;
4904
+ height: 7px;
4905
+ width: 14px;
4906
+ border-radius: 0 0 50% 50%;
4907
+ background-color: #323232;
4908
+ z-index: -1;
4909
+ -webkit-transform-origin: 50% 0%;
4910
+ transform-origin: 50% 0%;
4911
+ visibility: hidden;
4912
+ }
4913
+
4914
+ .btn, .btn-large,
4915
+ .btn-flat {
4916
+ border: none;
4917
+ border-radius: 2px;
4918
+ display: inline-block;
4919
+ height: 36px;
4920
+ line-height: 36px;
4921
+ padding: 0 2rem;
4922
+ text-transform: uppercase;
4923
+ vertical-align: middle;
4924
+ -webkit-tap-highlight-color: transparent;
4925
+ }
4926
+
4927
+ .btn.disabled, .disabled.btn-large,
4928
+ .btn-floating.disabled,
4929
+ .btn-large.disabled,
4930
+ .btn-flat.disabled,
4931
+ .btn:disabled,
4932
+ .btn-large:disabled,
4933
+ .btn-floating:disabled,
4934
+ .btn-large:disabled,
4935
+ .btn-flat:disabled,
4936
+ .btn[disabled],
4937
+ [disabled].btn-large,
4938
+ .btn-floating[disabled],
4939
+ .btn-large[disabled],
4940
+ .btn-flat[disabled] {
4941
+ pointer-events: none;
4942
+ background-color: #DFDFDF !important;
4943
+ box-shadow: none;
4944
+ color: #9F9F9F !important;
4945
+ cursor: default;
4946
+ }
4947
+
4948
+ .btn.disabled:hover, .disabled.btn-large:hover,
4949
+ .btn-floating.disabled:hover,
4950
+ .btn-large.disabled:hover,
4951
+ .btn-flat.disabled:hover,
4952
+ .btn:disabled:hover,
4953
+ .btn-large:disabled:hover,
4954
+ .btn-floating:disabled:hover,
4955
+ .btn-large:disabled:hover,
4956
+ .btn-flat:disabled:hover,
4957
+ .btn[disabled]:hover,
4958
+ [disabled].btn-large:hover,
4959
+ .btn-floating[disabled]:hover,
4960
+ .btn-large[disabled]:hover,
4961
+ .btn-flat[disabled]:hover {
4962
+ background-color: #DFDFDF !important;
4963
+ color: #9F9F9F !important;
4964
+ }
4965
+
4966
+ .btn, .btn-large,
4967
+ .btn-floating,
4968
+ .btn-large,
4969
+ .btn-flat {
4970
+ outline: 0;
4971
+ }
4972
+
4973
+ .btn i, .btn-large i,
4974
+ .btn-floating i,
4975
+ .btn-large i,
4976
+ .btn-flat i {
4977
+ font-size: 1.3rem;
4978
+ line-height: inherit;
4979
+ }
4980
+
4981
+ .btn:focus, .btn-large:focus,
4982
+ .btn-floating:focus {
4983
+ background-color: #1d7d74;
4984
+ }
4985
+
4986
+ .btn, .btn-large {
4987
+ text-decoration: none;
4988
+ color: #fff;
4989
+ background-color: #26a69a;
4990
+ text-align: center;
4991
+ letter-spacing: .5px;
4992
+ transition: .2s ease-out;
4993
+ cursor: pointer;
4994
+ }
4995
+
4996
+ .btn:hover, .btn-large:hover {
4997
+ background-color: #2bbbad;
4998
+ }
4999
+
5000
+ .btn-floating {
5001
+ display: inline-block;
5002
+ color: #fff;
5003
+ position: relative;
5004
+ overflow: hidden;
5005
+ z-index: 1;
5006
+ width: 40px;
5007
+ height: 40px;
5008
+ line-height: 40px;
5009
+ padding: 0;
5010
+ background-color: #26a69a;
5011
+ border-radius: 50%;
5012
+ transition: .3s;
5013
+ cursor: pointer;
5014
+ vertical-align: middle;
5015
+ }
5016
+
5017
+ .btn-floating:hover {
5018
+ background-color: #26a69a;
5019
+ }
5020
+
5021
+ .btn-floating:before {
5022
+ border-radius: 0;
5023
+ }
5024
+
5025
+ .btn-floating.btn-large {
5026
+ width: 56px;
5027
+ height: 56px;
5028
+ }
5029
+
5030
+ .btn-floating.btn-large i {
5031
+ line-height: 56px;
5032
+ }
5033
+
5034
+ .btn-floating.halfway-fab {
5035
+ position: absolute;
5036
+ right: 24px;
5037
+ bottom: 0;
5038
+ -webkit-transform: translateY(50%);
5039
+ transform: translateY(50%);
5040
+ }
5041
+
5042
+ .btn-floating.halfway-fab.left {
5043
+ right: auto;
5044
+ left: 24px;
5045
+ }
5046
+
5047
+ .btn-floating i {
5048
+ width: inherit;
5049
+ display: inline-block;
5050
+ text-align: center;
5051
+ color: #fff;
5052
+ font-size: 1.6rem;
5053
+ line-height: 40px;
5054
+ }
5055
+
5056
+ button.btn-floating {
5057
+ border: none;
5058
+ }
5059
+
5060
+ .fixed-action-btn {
5061
+ position: fixed;
5062
+ right: 23px;
5063
+ bottom: 23px;
5064
+ padding-top: 15px;
5065
+ margin-bottom: 0;
5066
+ z-index: 998;
5067
+ }
5068
+
5069
+ .fixed-action-btn.active ul {
5070
+ visibility: visible;
5071
+ }
5072
+
5073
+ .fixed-action-btn.horizontal {
5074
+ padding: 0 0 0 15px;
5075
+ }
5076
+
5077
+ .fixed-action-btn.horizontal ul {
5078
+ text-align: right;
5079
+ right: 64px;
5080
+ top: 50%;
5081
+ -webkit-transform: translateY(-50%);
5082
+ transform: translateY(-50%);
5083
+ height: 100%;
5084
+ left: auto;
5085
+ width: 500px;
5086
+ /*width 100% only goes to width of button container */
5087
+ }
5088
+
5089
+ .fixed-action-btn.horizontal ul li {
5090
+ display: inline-block;
5091
+ margin: 15px 15px 0 0;
5092
+ }
5093
+
5094
+ .fixed-action-btn.toolbar {
5095
+ padding: 0;
5096
+ height: 56px;
5097
+ }
5098
+
5099
+ .fixed-action-btn.toolbar.active > a i {
5100
+ opacity: 0;
5101
+ }
5102
+
5103
+ .fixed-action-btn.toolbar ul {
5104
+ display: -webkit-flex;
5105
+ display: -ms-flexbox;
5106
+ display: flex;
5107
+ top: 0;
5108
+ bottom: 0;
5109
+ }
5110
+
5111
+ .fixed-action-btn.toolbar ul li {
5112
+ -webkit-flex: 1;
5113
+ -ms-flex: 1;
5114
+ flex: 1;
5115
+ display: inline-block;
5116
+ margin: 0;
5117
+ height: 100%;
5118
+ transition: none;
5119
+ }
5120
+
5121
+ .fixed-action-btn.toolbar ul li a {
5122
+ display: block;
5123
+ overflow: hidden;
5124
+ position: relative;
5125
+ width: 100%;
5126
+ height: 100%;
5127
+ background-color: transparent;
5128
+ box-shadow: none;
5129
+ color: #fff;
5130
+ line-height: 56px;
5131
+ z-index: 1;
5132
+ }
5133
+
5134
+ .fixed-action-btn.toolbar ul li a i {
5135
+ line-height: inherit;
5136
+ }
5137
+
5138
+ .fixed-action-btn ul {
5139
+ left: 0;
5140
+ right: 0;
5141
+ text-align: center;
5142
+ position: absolute;
5143
+ bottom: 64px;
5144
+ margin: 0;
5145
+ visibility: hidden;
5146
+ }
5147
+
5148
+ .fixed-action-btn ul li {
5149
+ margin-bottom: 15px;
5150
+ }
5151
+
5152
+ .fixed-action-btn ul a.btn-floating {
5153
+ opacity: 0;
5154
+ }
5155
+
5156
+ .fixed-action-btn .fab-backdrop {
5157
+ position: absolute;
5158
+ top: 0;
5159
+ left: 0;
5160
+ z-index: -1;
5161
+ width: 40px;
5162
+ height: 40px;
5163
+ background-color: #26a69a;
5164
+ border-radius: 50%;
5165
+ -webkit-transform: scale(0);
5166
+ transform: scale(0);
5167
+ }
5168
+
5169
+ .btn-flat {
5170
+ box-shadow: none;
5171
+ background-color: transparent;
5172
+ color: #343434;
5173
+ cursor: pointer;
5174
+ transition: background-color .2s;
5175
+ }
5176
+
5177
+ .btn-flat:focus, .btn-flat:active {
5178
+ background-color: transparent;
5179
+ }
5180
+
5181
+ .btn-flat:focus, .btn-flat:hover {
5182
+ background-color: rgba(0, 0, 0, 0.1);
5183
+ box-shadow: none;
5184
+ }
5185
+
5186
+ .btn-flat:active {
5187
+ background-color: rgba(0, 0, 0, 0.2);
5188
+ }
5189
+
5190
+ .btn-flat.disabled {
5191
+ background-color: transparent !important;
5192
+ color: #b3b3b3 !important;
5193
+ cursor: default;
5194
+ }
5195
+
5196
+ .btn-large {
5197
+ height: 54px;
5198
+ line-height: 54px;
5199
+ }
5200
+
5201
+ .btn-large i {
5202
+ font-size: 1.6rem;
5203
+ }
5204
+
5205
+ .btn-block {
5206
+ display: block;
5207
+ }
5208
+
5209
+ .dropdown-content {
5210
+ background-color: #fff;
5211
+ margin: 0;
5212
+ display: none;
5213
+ min-width: 100px;
5214
+ max-height: 650px;
5215
+ overflow-y: auto;
5216
+ opacity: 0;
5217
+ position: absolute;
5218
+ z-index: 999;
5219
+ will-change: width, height;
5220
+ }
5221
+
5222
+ .dropdown-content li {
5223
+ clear: both;
5224
+ color: rgba(0, 0, 0, 0.87);
5225
+ cursor: pointer;
5226
+ min-height: 50px;
5227
+ line-height: 1.5rem;
5228
+ width: 100%;
5229
+ text-align: left;
5230
+ text-transform: none;
5231
+ }
5232
+
5233
+ .dropdown-content li:hover, .dropdown-content li.active, .dropdown-content li.selected {
5234
+ background-color: #eee;
5235
+ }
5236
+
5237
+ .dropdown-content li.active.selected {
5238
+ background-color: #e1e1e1;
5239
+ }
5240
+
5241
+ .dropdown-content li.divider {
5242
+ min-height: 0;
5243
+ height: 1px;
5244
+ }
5245
+
5246
+ .dropdown-content li > a, .dropdown-content li > span {
5247
+ font-size: 16px;
5248
+ color: #26a69a;
5249
+ display: block;
5250
+ line-height: 22px;
5251
+ padding: 14px 16px;
5252
+ }
5253
+
5254
+ .dropdown-content li > span > label {
5255
+ top: 1px;
5256
+ left: 0;
5257
+ height: 18px;
5258
+ }
5259
+
5260
+ .dropdown-content li > a > i {
5261
+ height: inherit;
5262
+ line-height: inherit;
5263
+ }
5264
+
5265
+ .input-field.col .dropdown-content [type="checkbox"] + label {
5266
+ top: 1px;
5267
+ left: 0;
5268
+ height: 18px;
5269
+ }
5270
+
5271
+ /*!
5272
+ * Waves v0.6.0
5273
+ * http://fian.my.id/Waves
5274
+ *
5275
+ * Copyright 2014 Alfiana E. Sibuea and other contributors
5276
+ * Released under the MIT license
5277
+ * https://github.com/fians/Waves/blob/master/LICENSE
5278
+ */
5279
+ .waves-effect {
5280
+ position: relative;
5281
+ cursor: pointer;
5282
+ display: inline-block;
5283
+ overflow: hidden;
5284
+ -webkit-user-select: none;
5285
+ -moz-user-select: none;
5286
+ -ms-user-select: none;
5287
+ user-select: none;
5288
+ -webkit-tap-highlight-color: transparent;
5289
+ vertical-align: middle;
5290
+ z-index: 1;
5291
+ transition: .3s ease-out;
5292
+ }
5293
+
5294
+ .waves-effect .waves-ripple {
5295
+ position: absolute;
5296
+ border-radius: 50%;
5297
+ width: 20px;
5298
+ height: 20px;
5299
+ margin-top: -10px;
5300
+ margin-left: -10px;
5301
+ opacity: 0;
5302
+ background: rgba(0, 0, 0, 0.2);
5303
+ transition: all 0.7s ease-out;
5304
+ transition-property: opacity, -webkit-transform;
5305
+ transition-property: transform, opacity;
5306
+ transition-property: transform, opacity, -webkit-transform;
5307
+ -webkit-transform: scale(0);
5308
+ transform: scale(0);
5309
+ pointer-events: none;
5310
+ }
5311
+
5312
+ .waves-effect.waves-light .waves-ripple {
5313
+ background-color: rgba(255, 255, 255, 0.45);
5314
+ }
5315
+
5316
+ .waves-effect.waves-red .waves-ripple {
5317
+ background-color: rgba(244, 67, 54, 0.7);
5318
+ }
5319
+
5320
+ .waves-effect.waves-yellow .waves-ripple {
5321
+ background-color: rgba(255, 235, 59, 0.7);
5322
+ }
5323
+
5324
+ .waves-effect.waves-orange .waves-ripple {
5325
+ background-color: rgba(255, 152, 0, 0.7);
5326
+ }
5327
+
5328
+ .waves-effect.waves-purple .waves-ripple {
5329
+ background-color: rgba(156, 39, 176, 0.7);
5330
+ }
5331
+
5332
+ .waves-effect.waves-green .waves-ripple {
5333
+ background-color: rgba(76, 175, 80, 0.7);
5334
+ }
5335
+
5336
+ .waves-effect.waves-teal .waves-ripple {
5337
+ background-color: rgba(0, 150, 136, 0.7);
5338
+ }
5339
+
5340
+ .waves-effect input[type="button"], .waves-effect input[type="reset"], .waves-effect input[type="submit"] {
5341
+ border: 0;
5342
+ font-style: normal;
5343
+ font-size: inherit;
5344
+ text-transform: inherit;
5345
+ background: none;
5346
+ }
5347
+
5348
+ .waves-effect img {
5349
+ position: relative;
5350
+ z-index: -1;
5351
+ }
5352
+
5353
+ .waves-notransition {
5354
+ transition: none !important;
5355
+ }
5356
+
5357
+ .waves-circle {
5358
+ -webkit-transform: translateZ(0);
5359
+ transform: translateZ(0);
5360
+ -webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%);
5361
+ }
5362
+
5363
+ .waves-input-wrapper {
5364
+ border-radius: 0.2em;
5365
+ vertical-align: bottom;
5366
+ }
5367
+
5368
+ .waves-input-wrapper .waves-button-input {
5369
+ position: relative;
5370
+ top: 0;
5371
+ left: 0;
5372
+ z-index: 1;
5373
+ }
5374
+
5375
+ .waves-circle {
5376
+ text-align: center;
5377
+ width: 2.5em;
5378
+ height: 2.5em;
5379
+ line-height: 2.5em;
5380
+ border-radius: 50%;
5381
+ -webkit-mask-image: none;
5382
+ }
5383
+
5384
+ .waves-block {
5385
+ display: block;
5386
+ }
5387
+
5388
+ /* Firefox Bug: link not triggered */
5389
+ .waves-effect .waves-ripple {
5390
+ z-index: -1;
5391
+ }
5392
+
5393
+ .modal {
5394
+ display: none;
5395
+ position: fixed;
5396
+ left: 0;
5397
+ right: 0;
5398
+ background-color: #fafafa;
5399
+ padding: 0;
5400
+ max-height: 70%;
5401
+ width: 55%;
5402
+ margin: auto;
5403
+ overflow-y: auto;
5404
+ border-radius: 2px;
5405
+ will-change: top, opacity;
5406
+ }
5407
+
5408
+ @media only screen and (max-width: 992px) {
5409
+ .modal {
5410
+ width: 80%;
5411
+ }
5412
+ }
5413
+
5414
+ .modal h1, .modal h2, .modal h3, .modal h4 {
5415
+ margin-top: 0;
5416
+ }
5417
+
5418
+ .modal .modal-content {
5419
+ padding: 24px;
5420
+ }
5421
+
5422
+ .modal .modal-close {
5423
+ cursor: pointer;
5424
+ }
5425
+
5426
+ .modal .modal-footer {
5427
+ border-radius: 0 0 2px 2px;
5428
+ background-color: #fafafa;
5429
+ padding: 4px 6px;
5430
+ height: 56px;
5431
+ width: 100%;
5432
+ }
5433
+
5434
+ .modal .modal-footer .btn, .modal .modal-footer .btn-large, .modal .modal-footer .btn-flat {
5435
+ float: right;
5436
+ margin: 6px 0;
5437
+ }
5438
+
5439
+ .modal-overlay {
5440
+ position: fixed;
5441
+ z-index: 999;
5442
+ top: -100px;
5443
+ left: 0;
5444
+ bottom: 0;
5445
+ right: 0;
5446
+ height: 125%;
5447
+ width: 100%;
5448
+ background: #000;
5449
+ display: none;
5450
+ will-change: opacity;
5451
+ }
5452
+
5453
+ .modal.modal-fixed-footer {
5454
+ padding: 0;
5455
+ height: 70%;
5456
+ }
5457
+
5458
+ .modal.modal-fixed-footer .modal-content {
5459
+ position: absolute;
5460
+ height: calc(100% - 56px);
5461
+ max-height: 100%;
5462
+ width: 100%;
5463
+ overflow-y: auto;
5464
+ }
5465
+
5466
+ .modal.modal-fixed-footer .modal-footer {
5467
+ border-top: 1px solid rgba(0, 0, 0, 0.1);
5468
+ position: absolute;
5469
+ bottom: 0;
5470
+ }
5471
+
5472
+ .modal.bottom-sheet {
5473
+ top: auto;
5474
+ bottom: -100%;
5475
+ margin: 0;
5476
+ width: 100%;
5477
+ max-height: 45%;
5478
+ border-radius: 0;
5479
+ will-change: bottom, opacity;
5480
+ }
5481
+
5482
+ .collapsible {
5483
+ border-top: 1px solid #ddd;
5484
+ border-right: 1px solid #ddd;
5485
+ border-left: 1px solid #ddd;
5486
+ margin: 0.5rem 0 1rem 0;
5487
+ }
5488
+
5489
+ .collapsible-header {
5490
+ display: block;
5491
+ cursor: pointer;
5492
+ min-height: 3rem;
5493
+ line-height: 3rem;
5494
+ padding: 0 1rem;
5495
+ background-color: #fff;
5496
+ border-bottom: 1px solid #ddd;
5497
+ }
5498
+
5499
+ .collapsible-header i {
5500
+ width: 2rem;
5501
+ font-size: 1.6rem;
5502
+ line-height: 3rem;
5503
+ display: block;
5504
+ float: left;
5505
+ text-align: center;
5506
+ margin-right: 1rem;
5507
+ }
5508
+
5509
+ .collapsible-body {
5510
+ display: none;
5511
+ border-bottom: 1px solid #ddd;
5512
+ box-sizing: border-box;
5513
+ padding: 2rem;
5514
+ }
5515
+
5516
+ .side-nav .collapsible,
5517
+ .side-nav.fixed .collapsible {
5518
+ border: none;
5519
+ box-shadow: none;
5520
+ }
5521
+
5522
+ .side-nav .collapsible li,
5523
+ .side-nav.fixed .collapsible li {
5524
+ padding: 0;
5525
+ }
5526
+
5527
+ .side-nav .collapsible-header,
5528
+ .side-nav.fixed .collapsible-header {
5529
+ background-color: transparent;
5530
+ border: none;
5531
+ line-height: inherit;
5532
+ height: inherit;
5533
+ padding: 0 16px;
5534
+ }
5535
+
5536
+ .side-nav .collapsible-header:hover,
5537
+ .side-nav.fixed .collapsible-header:hover {
5538
+ background-color: rgba(0, 0, 0, 0.05);
5539
+ }
5540
+
5541
+ .side-nav .collapsible-header i,
5542
+ .side-nav.fixed .collapsible-header i {
5543
+ line-height: inherit;
5544
+ }
5545
+
5546
+ .side-nav .collapsible-body,
5547
+ .side-nav.fixed .collapsible-body {
5548
+ border: 0;
5549
+ background-color: #fff;
5550
+ }
5551
+
5552
+ .side-nav .collapsible-body li a,
5553
+ .side-nav.fixed .collapsible-body li a {
5554
+ padding: 0 23.5px 0 31px;
5555
+ }
5556
+
5557
+ .collapsible.popout {
5558
+ border: none;
5559
+ box-shadow: none;
5560
+ }
5561
+
5562
+ .collapsible.popout > li {
5563
+ box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
5564
+ margin: 0 24px;
5565
+ transition: margin 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94);
5566
+ }
5567
+
5568
+ .collapsible.popout > li.active {
5569
+ box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15);
5570
+ margin: 16px 0;
5571
+ }
5572
+
5573
+ .chip {
5574
+ display: inline-block;
5575
+ height: 32px;
5576
+ font-size: 13px;
5577
+ font-weight: 500;
5578
+ color: rgba(0, 0, 0, 0.6);
5579
+ line-height: 32px;
5580
+ padding: 0 12px;
5581
+ border-radius: 16px;
5582
+ background-color: #e4e4e4;
5583
+ margin-bottom: 5px;
5584
+ margin-right: 5px;
5585
+ }
5586
+
5587
+ .chip img {
5588
+ float: left;
5589
+ margin: 0 8px 0 -12px;
5590
+ height: 32px;
5591
+ width: 32px;
5592
+ border-radius: 50%;
5593
+ }
5594
+
5595
+ .chip .close {
5596
+ cursor: pointer;
5597
+ float: right;
5598
+ font-size: 16px;
5599
+ line-height: 32px;
5600
+ padding-left: 8px;
5601
+ }
5602
+
5603
+ .chips {
5604
+ border: none;
5605
+ border-bottom: 1px solid #9e9e9e;
5606
+ box-shadow: none;
5607
+ margin: 0 0 20px 0;
5608
+ min-height: 45px;
5609
+ outline: none;
5610
+ transition: all .3s;
5611
+ }
5612
+
5613
+ .chips.focus {
5614
+ border-bottom: 1px solid #26a69a;
5615
+ box-shadow: 0 1px 0 0 #26a69a;
5616
+ }
5617
+
5618
+ .chips:hover {
5619
+ cursor: text;
5620
+ }
5621
+
5622
+ .chips .chip.selected {
5623
+ background-color: #26a69a;
5624
+ color: #fff;
5625
+ }
5626
+
5627
+ .chips .input {
5628
+ background: none;
5629
+ border: 0;
5630
+ color: rgba(0, 0, 0, 0.6);
5631
+ display: inline-block;
5632
+ font-size: 1rem;
5633
+ height: 3rem;
5634
+ line-height: 32px;
5635
+ outline: 0;
5636
+ margin: 0;
5637
+ padding: 0 !important;
5638
+ width: 120px !important;
5639
+ }
5640
+
5641
+ .chips .input:focus {
5642
+ border: 0 !important;
5643
+ box-shadow: none !important;
5644
+ }
5645
+
5646
+ .prefix ~ .chips {
5647
+ margin-left: 3rem;
5648
+ width: 92%;
5649
+ width: calc(100% - 3rem);
5650
+ }
5651
+
5652
+ .chips:empty ~ label {
5653
+ font-size: 0.8rem;
5654
+ -webkit-transform: translateY(-140%);
5655
+ transform: translateY(-140%);
5656
+ }
5657
+
5658
+ .materialboxed {
5659
+ display: block;
5660
+ cursor: -webkit-zoom-in;
5661
+ cursor: zoom-in;
5662
+ position: relative;
5663
+ transition: opacity .4s;
5664
+ -webkit-backface-visibility: hidden;
5665
+ }
5666
+
5667
+ .materialboxed:hover:not(.active) {
5668
+ opacity: .8;
5669
+ }
5670
+
5671
+ .materialboxed.active {
5672
+ cursor: -webkit-zoom-out;
5673
+ cursor: zoom-out;
5674
+ }
5675
+
5676
+ #materialbox-overlay {
5677
+ position: fixed;
5678
+ top: 0;
5679
+ right: 0;
5680
+ bottom: 0;
5681
+ left: 0;
5682
+ background-color: #292929;
5683
+ z-index: 1000;
5684
+ will-change: opacity;
5685
+ }
5686
+
5687
+ .materialbox-caption {
5688
+ position: fixed;
5689
+ display: none;
5690
+ color: #fff;
5691
+ line-height: 50px;
5692
+ bottom: 0;
5693
+ left: 0;
5694
+ width: 100%;
5695
+ text-align: center;
5696
+ padding: 0% 15%;
5697
+ height: 50px;
5698
+ z-index: 1000;
5699
+ -webkit-font-smoothing: antialiased;
5700
+ }
5701
+
5702
+ select:focus {
5703
+ outline: 1px solid #c9f3ef;
5704
+ }
5705
+
5706
+ button:focus {
5707
+ outline: none;
5708
+ background-color: #2ab7a9;
5709
+ }
5710
+
5711
+ label {
5712
+ font-size: 0.8rem;
5713
+ color: #9e9e9e;
5714
+ }
5715
+
5716
+ /* Text Inputs + Textarea
5717
+ ========================================================================== */
5718
+ /* Style Placeholders */
5719
+ ::-webkit-input-placeholder {
5720
+ color: #d1d1d1;
5721
+ }
5722
+
5723
+ :-moz-placeholder {
5724
+ /* Firefox 18- */
5725
+ color: #d1d1d1;
5726
+ }
5727
+
5728
+ ::-moz-placeholder {
5729
+ /* Firefox 19+ */
5730
+ color: #d1d1d1;
5731
+ }
5732
+
5733
+ :-ms-input-placeholder {
5734
+ color: #d1d1d1;
5735
+ }
5736
+
5737
+ /* Text inputs */
5738
+ input:not([type]),
5739
+ input[type=text],
5740
+ input[type=password],
5741
+ input[type=email],
5742
+ input[type=url],
5743
+ input[type=time],
5744
+ input[type=date],
5745
+ input[type=datetime],
5746
+ input[type=datetime-local],
5747
+ input[type=tel],
5748
+ input[type=number],
5749
+ input[type=search],
5750
+ textarea.materialize-textarea {
5751
+ background-color: transparent;
5752
+ border: none;
5753
+ border-bottom: 1px solid #9e9e9e;
5754
+ border-radius: 0;
5755
+ outline: none;
5756
+ height: 3rem;
5757
+ width: 100%;
5758
+ font-size: 1rem;
5759
+ margin: 0 0 20px 0;
5760
+ padding: 0;
5761
+ box-shadow: none;
5762
+ box-sizing: content-box;
5763
+ transition: all 0.3s;
5764
+ }
5765
+
5766
+ input:not([type]):disabled, input:not([type])[readonly="readonly"],
5767
+ input[type=text]:disabled,
5768
+ input[type=text][readonly="readonly"],
5769
+ input[type=password]:disabled,
5770
+ input[type=password][readonly="readonly"],
5771
+ input[type=email]:disabled,
5772
+ input[type=email][readonly="readonly"],
5773
+ input[type=url]:disabled,
5774
+ input[type=url][readonly="readonly"],
5775
+ input[type=time]:disabled,
5776
+ input[type=time][readonly="readonly"],
5777
+ input[type=date]:disabled,
5778
+ input[type=date][readonly="readonly"],
5779
+ input[type=datetime]:disabled,
5780
+ input[type=datetime][readonly="readonly"],
5781
+ input[type=datetime-local]:disabled,
5782
+ input[type=datetime-local][readonly="readonly"],
5783
+ input[type=tel]:disabled,
5784
+ input[type=tel][readonly="readonly"],
5785
+ input[type=number]:disabled,
5786
+ input[type=number][readonly="readonly"],
5787
+ input[type=search]:disabled,
5788
+ input[type=search][readonly="readonly"],
5789
+ textarea.materialize-textarea:disabled,
5790
+ textarea.materialize-textarea[readonly="readonly"] {
5791
+ color: rgba(0, 0, 0, 0.26);
5792
+ border-bottom: 1px dotted rgba(0, 0, 0, 0.26);
5793
+ }
5794
+
5795
+ input:not([type]):disabled + label,
5796
+ input:not([type])[readonly="readonly"] + label,
5797
+ input[type=text]:disabled + label,
5798
+ input[type=text][readonly="readonly"] + label,
5799
+ input[type=password]:disabled + label,
5800
+ input[type=password][readonly="readonly"] + label,
5801
+ input[type=email]:disabled + label,
5802
+ input[type=email][readonly="readonly"] + label,
5803
+ input[type=url]:disabled + label,
5804
+ input[type=url][readonly="readonly"] + label,
5805
+ input[type=time]:disabled + label,
5806
+ input[type=time][readonly="readonly"] + label,
5807
+ input[type=date]:disabled + label,
5808
+ input[type=date][readonly="readonly"] + label,
5809
+ input[type=datetime]:disabled + label,
5810
+ input[type=datetime][readonly="readonly"] + label,
5811
+ input[type=datetime-local]:disabled + label,
5812
+ input[type=datetime-local][readonly="readonly"] + label,
5813
+ input[type=tel]:disabled + label,
5814
+ input[type=tel][readonly="readonly"] + label,
5815
+ input[type=number]:disabled + label,
5816
+ input[type=number][readonly="readonly"] + label,
5817
+ input[type=search]:disabled + label,
5818
+ input[type=search][readonly="readonly"] + label,
5819
+ textarea.materialize-textarea:disabled + label,
5820
+ textarea.materialize-textarea[readonly="readonly"] + label {
5821
+ color: rgba(0, 0, 0, 0.26);
5822
+ }
5823
+
5824
+ input:not([type]):focus:not([readonly]),
5825
+ input[type=text]:focus:not([readonly]),
5826
+ input[type=password]:focus:not([readonly]),
5827
+ input[type=email]:focus:not([readonly]),
5828
+ input[type=url]:focus:not([readonly]),
5829
+ input[type=time]:focus:not([readonly]),
5830
+ input[type=date]:focus:not([readonly]),
5831
+ input[type=datetime]:focus:not([readonly]),
5832
+ input[type=datetime-local]:focus:not([readonly]),
5833
+ input[type=tel]:focus:not([readonly]),
5834
+ input[type=number]:focus:not([readonly]),
5835
+ input[type=search]:focus:not([readonly]),
5836
+ textarea.materialize-textarea:focus:not([readonly]) {
5837
+ border-bottom: 1px solid #26a69a;
5838
+ box-shadow: 0 1px 0 0 #26a69a;
5839
+ }
5840
+
5841
+ input:not([type]):focus:not([readonly]) + label,
5842
+ input[type=text]:focus:not([readonly]) + label,
5843
+ input[type=password]:focus:not([readonly]) + label,
5844
+ input[type=email]:focus:not([readonly]) + label,
5845
+ input[type=url]:focus:not([readonly]) + label,
5846
+ input[type=time]:focus:not([readonly]) + label,
5847
+ input[type=date]:focus:not([readonly]) + label,
5848
+ input[type=datetime]:focus:not([readonly]) + label,
5849
+ input[type=datetime-local]:focus:not([readonly]) + label,
5850
+ input[type=tel]:focus:not([readonly]) + label,
5851
+ input[type=number]:focus:not([readonly]) + label,
5852
+ input[type=search]:focus:not([readonly]) + label,
5853
+ textarea.materialize-textarea:focus:not([readonly]) + label {
5854
+ color: #26a69a;
5855
+ }
5856
+
5857
+ input:not([type]).valid, input:not([type]):focus.valid,
5858
+ input[type=text].valid,
5859
+ input[type=text]:focus.valid,
5860
+ input[type=password].valid,
5861
+ input[type=password]:focus.valid,
5862
+ input[type=email].valid,
5863
+ input[type=email]:focus.valid,
5864
+ input[type=url].valid,
5865
+ input[type=url]:focus.valid,
5866
+ input[type=time].valid,
5867
+ input[type=time]:focus.valid,
5868
+ input[type=date].valid,
5869
+ input[type=date]:focus.valid,
5870
+ input[type=datetime].valid,
5871
+ input[type=datetime]:focus.valid,
5872
+ input[type=datetime-local].valid,
5873
+ input[type=datetime-local]:focus.valid,
5874
+ input[type=tel].valid,
5875
+ input[type=tel]:focus.valid,
5876
+ input[type=number].valid,
5877
+ input[type=number]:focus.valid,
5878
+ input[type=search].valid,
5879
+ input[type=search]:focus.valid,
5880
+ textarea.materialize-textarea.valid,
5881
+ textarea.materialize-textarea:focus.valid {
5882
+ border-bottom: 1px solid #4CAF50;
5883
+ box-shadow: 0 1px 0 0 #4CAF50;
5884
+ }
5885
+
5886
+ input:not([type]).valid + label:after,
5887
+ input:not([type]):focus.valid + label:after,
5888
+ input[type=text].valid + label:after,
5889
+ input[type=text]:focus.valid + label:after,
5890
+ input[type=password].valid + label:after,
5891
+ input[type=password]:focus.valid + label:after,
5892
+ input[type=email].valid + label:after,
5893
+ input[type=email]:focus.valid + label:after,
5894
+ input[type=url].valid + label:after,
5895
+ input[type=url]:focus.valid + label:after,
5896
+ input[type=time].valid + label:after,
5897
+ input[type=time]:focus.valid + label:after,
5898
+ input[type=date].valid + label:after,
5899
+ input[type=date]:focus.valid + label:after,
5900
+ input[type=datetime].valid + label:after,
5901
+ input[type=datetime]:focus.valid + label:after,
5902
+ input[type=datetime-local].valid + label:after,
5903
+ input[type=datetime-local]:focus.valid + label:after,
5904
+ input[type=tel].valid + label:after,
5905
+ input[type=tel]:focus.valid + label:after,
5906
+ input[type=number].valid + label:after,
5907
+ input[type=number]:focus.valid + label:after,
5908
+ input[type=search].valid + label:after,
5909
+ input[type=search]:focus.valid + label:after,
5910
+ textarea.materialize-textarea.valid + label:after,
5911
+ textarea.materialize-textarea:focus.valid + label:after {
5912
+ content: attr(data-success);
5913
+ color: #4CAF50;
5914
+ opacity: 1;
5915
+ }
5916
+
5917
+ input:not([type]).invalid, input:not([type]):focus.invalid,
5918
+ input[type=text].invalid,
5919
+ input[type=text]:focus.invalid,
5920
+ input[type=password].invalid,
5921
+ input[type=password]:focus.invalid,
5922
+ input[type=email].invalid,
5923
+ input[type=email]:focus.invalid,
5924
+ input[type=url].invalid,
5925
+ input[type=url]:focus.invalid,
5926
+ input[type=time].invalid,
5927
+ input[type=time]:focus.invalid,
5928
+ input[type=date].invalid,
5929
+ input[type=date]:focus.invalid,
5930
+ input[type=datetime].invalid,
5931
+ input[type=datetime]:focus.invalid,
5932
+ input[type=datetime-local].invalid,
5933
+ input[type=datetime-local]:focus.invalid,
5934
+ input[type=tel].invalid,
5935
+ input[type=tel]:focus.invalid,
5936
+ input[type=number].invalid,
5937
+ input[type=number]:focus.invalid,
5938
+ input[type=search].invalid,
5939
+ input[type=search]:focus.invalid,
5940
+ textarea.materialize-textarea.invalid,
5941
+ textarea.materialize-textarea:focus.invalid {
5942
+ border-bottom: 1px solid #F44336;
5943
+ box-shadow: 0 1px 0 0 #F44336;
5944
+ }
5945
+
5946
+ input:not([type]).invalid + label:after,
5947
+ input:not([type]):focus.invalid + label:after,
5948
+ input[type=text].invalid + label:after,
5949
+ input[type=text]:focus.invalid + label:after,
5950
+ input[type=password].invalid + label:after,
5951
+ input[type=password]:focus.invalid + label:after,
5952
+ input[type=email].invalid + label:after,
5953
+ input[type=email]:focus.invalid + label:after,
5954
+ input[type=url].invalid + label:after,
5955
+ input[type=url]:focus.invalid + label:after,
5956
+ input[type=time].invalid + label:after,
5957
+ input[type=time]:focus.invalid + label:after,
5958
+ input[type=date].invalid + label:after,
5959
+ input[type=date]:focus.invalid + label:after,
5960
+ input[type=datetime].invalid + label:after,
5961
+ input[type=datetime]:focus.invalid + label:after,
5962
+ input[type=datetime-local].invalid + label:after,
5963
+ input[type=datetime-local]:focus.invalid + label:after,
5964
+ input[type=tel].invalid + label:after,
5965
+ input[type=tel]:focus.invalid + label:after,
5966
+ input[type=number].invalid + label:after,
5967
+ input[type=number]:focus.invalid + label:after,
5968
+ input[type=search].invalid + label:after,
5969
+ input[type=search]:focus.invalid + label:after,
5970
+ textarea.materialize-textarea.invalid + label:after,
5971
+ textarea.materialize-textarea:focus.invalid + label:after {
5972
+ content: attr(data-error);
5973
+ color: #F44336;
5974
+ opacity: 1;
5975
+ }
5976
+
5977
+ input:not([type]).validate + label,
5978
+ input[type=text].validate + label,
5979
+ input[type=password].validate + label,
5980
+ input[type=email].validate + label,
5981
+ input[type=url].validate + label,
5982
+ input[type=time].validate + label,
5983
+ input[type=date].validate + label,
5984
+ input[type=datetime].validate + label,
5985
+ input[type=datetime-local].validate + label,
5986
+ input[type=tel].validate + label,
5987
+ input[type=number].validate + label,
5988
+ input[type=search].validate + label,
5989
+ textarea.materialize-textarea.validate + label {
5990
+ width: 100%;
5991
+ pointer-events: none;
5992
+ }
5993
+
5994
+ input:not([type]) + label:after,
5995
+ input[type=text] + label:after,
5996
+ input[type=password] + label:after,
5997
+ input[type=email] + label:after,
5998
+ input[type=url] + label:after,
5999
+ input[type=time] + label:after,
6000
+ input[type=date] + label:after,
6001
+ input[type=datetime] + label:after,
6002
+ input[type=datetime-local] + label:after,
6003
+ input[type=tel] + label:after,
6004
+ input[type=number] + label:after,
6005
+ input[type=search] + label:after,
6006
+ textarea.materialize-textarea + label:after {
6007
+ display: block;
6008
+ content: "";
6009
+ position: absolute;
6010
+ top: 60px;
6011
+ opacity: 0;
6012
+ transition: .2s opacity ease-out, .2s color ease-out;
6013
+ }
6014
+
6015
+ .input-field {
6016
+ position: relative;
6017
+ margin-top: 1rem;
6018
+ }
6019
+
6020
+ .input-field.inline {
6021
+ display: inline-block;
6022
+ vertical-align: middle;
6023
+ margin-left: 5px;
6024
+ }
6025
+
6026
+ .input-field.inline input,
6027
+ .input-field.inline .select-dropdown {
6028
+ margin-bottom: 1rem;
6029
+ }
6030
+
6031
+ .input-field.col label {
6032
+ left: 0.75rem;
6033
+ }
6034
+
6035
+ .input-field.col .prefix ~ label,
6036
+ .input-field.col .prefix ~ .validate ~ label {
6037
+ width: calc(100% - 3rem - 1.5rem);
6038
+ }
6039
+
6040
+ .input-field label {
6041
+ color: #9e9e9e;
6042
+ position: absolute;
6043
+ top: 0.8rem;
6044
+ left: 0;
6045
+ font-size: 1rem;
6046
+ cursor: text;
6047
+ transition: .2s ease-out;
6048
+ }
6049
+
6050
+ .input-field label:not(.label-icon).active {
6051
+ font-size: 0.8rem;
6052
+ -webkit-transform: translateY(-140%);
6053
+ transform: translateY(-140%);
6054
+ }
6055
+
6056
+ .input-field .prefix {
6057
+ position: absolute;
6058
+ width: 3rem;
6059
+ font-size: 2rem;
6060
+ transition: color .2s;
6061
+ }
6062
+
6063
+ .input-field .prefix.active {
6064
+ color: #26a69a;
6065
+ }
6066
+
6067
+ .input-field .prefix ~ input,
6068
+ .input-field .prefix ~ textarea,
6069
+ .input-field .prefix ~ label,
6070
+ .input-field .prefix ~ .validate ~ label,
6071
+ .input-field .prefix ~ .autocomplete-content {
6072
+ margin-left: 3rem;
6073
+ width: 92%;
6074
+ width: calc(100% - 3rem);
6075
+ }
6076
+
6077
+ .input-field .prefix ~ label {
6078
+ margin-left: 3rem;
6079
+ }
6080
+
6081
+ @media only screen and (max-width: 992px) {
6082
+ .input-field .prefix ~ input {
6083
+ width: 86%;
6084
+ width: calc(100% - 3rem);
6085
+ }
6086
+ }
6087
+
6088
+ @media only screen and (max-width: 600px) {
6089
+ .input-field .prefix ~ input {
6090
+ width: 80%;
6091
+ width: calc(100% - 3rem);
6092
+ }
6093
+ }
6094
+
6095
+ /* Search Field */
6096
+ .input-field input[type=search] {
6097
+ display: block;
6098
+ line-height: inherit;
6099
+ padding-left: 4rem;
6100
+ width: calc(100% - 4rem);
6101
+ }
6102
+
6103
+ .input-field input[type=search]:focus {
6104
+ background-color: #fff;
6105
+ border: 0;
6106
+ box-shadow: none;
6107
+ color: #444;
6108
+ }
6109
+
6110
+ .input-field input[type=search]:focus + label i,
6111
+ .input-field input[type=search]:focus ~ .mdi-navigation-close,
6112
+ .input-field input[type=search]:focus ~ .material-icons {
6113
+ color: #444;
6114
+ }
6115
+
6116
+ .input-field input[type=search] + label {
6117
+ left: 1rem;
6118
+ }
6119
+
6120
+ .input-field input[type=search] ~ .mdi-navigation-close,
6121
+ .input-field input[type=search] ~ .material-icons {
6122
+ position: absolute;
6123
+ top: 0;
6124
+ right: 1rem;
6125
+ color: transparent;
6126
+ cursor: pointer;
6127
+ font-size: 2rem;
6128
+ transition: .3s color;
6129
+ }
6130
+
6131
+ /* Textarea */
6132
+ textarea {
6133
+ width: 100%;
6134
+ height: 3rem;
6135
+ background-color: transparent;
6136
+ }
6137
+
6138
+ textarea.materialize-textarea {
6139
+ overflow-y: hidden;
6140
+ /* prevents scroll bar flash */
6141
+ padding: .8rem 0 1.6rem 0;
6142
+ /* prevents text jump on Enter keypress */
6143
+ resize: none;
6144
+ min-height: 3rem;
6145
+ }
6146
+
6147
+ .hiddendiv {
6148
+ display: none;
6149
+ white-space: pre-wrap;
6150
+ word-wrap: break-word;
6151
+ overflow-wrap: break-word;
6152
+ /* future version of deprecated 'word-wrap' */
6153
+ padding-top: 1.2rem;
6154
+ /* prevents text jump on Enter keypress */
6155
+ }
6156
+
6157
+ /* Autocomplete */
6158
+ .autocomplete-content {
6159
+ margin-top: -15px;
6160
+ display: block;
6161
+ opacity: 1;
6162
+ position: static;
6163
+ }
6164
+
6165
+ .autocomplete-content li .highlight {
6166
+ color: #444;
6167
+ }
6168
+
6169
+ .autocomplete-content li img {
6170
+ height: 40px;
6171
+ width: 40px;
6172
+ margin: 5px 15px;
6173
+ }
6174
+
6175
+ /* Radio Buttons
6176
+ ========================================================================== */
6177
+ [type="radio"]:not(:checked),
6178
+ [type="radio"]:checked {
6179
+ position: absolute;
6180
+ left: -9999px;
6181
+ opacity: 0;
6182
+ }
6183
+
6184
+ [type="radio"]:not(:checked) + label,
6185
+ [type="radio"]:checked + label {
6186
+ position: relative;
6187
+ padding-left: 35px;
6188
+ cursor: pointer;
6189
+ display: inline-block;
6190
+ height: 25px;
6191
+ line-height: 25px;
6192
+ font-size: 1rem;
6193
+ transition: .28s ease;
6194
+ /* webkit (konqueror) browsers */
6195
+ -webkit-user-select: none;
6196
+ -moz-user-select: none;
6197
+ -ms-user-select: none;
6198
+ user-select: none;
6199
+ }
6200
+
6201
+ [type="radio"] + label:before,
6202
+ [type="radio"] + label:after {
6203
+ content: '';
6204
+ position: absolute;
6205
+ left: 0;
6206
+ top: 0;
6207
+ margin: 4px;
6208
+ width: 16px;
6209
+ height: 16px;
6210
+ z-index: 0;
6211
+ transition: .28s ease;
6212
+ }
6213
+
6214
+ /* Unchecked styles */
6215
+ [type="radio"]:not(:checked) + label:before,
6216
+ [type="radio"]:not(:checked) + label:after,
6217
+ [type="radio"]:checked + label:before,
6218
+ [type="radio"]:checked + label:after,
6219
+ [type="radio"].with-gap:checked + label:before,
6220
+ [type="radio"].with-gap:checked + label:after {
6221
+ border-radius: 50%;
6222
+ }
6223
+
6224
+ [type="radio"]:not(:checked) + label:before,
6225
+ [type="radio"]:not(:checked) + label:after {
6226
+ border: 2px solid #5a5a5a;
6227
+ }
6228
+
6229
+ [type="radio"]:not(:checked) + label:after {
6230
+ -webkit-transform: scale(0);
6231
+ transform: scale(0);
6232
+ }
6233
+
6234
+ /* Checked styles */
6235
+ [type="radio"]:checked + label:before {
6236
+ border: 2px solid transparent;
6237
+ }
6238
+
6239
+ [type="radio"]:checked + label:after,
6240
+ [type="radio"].with-gap:checked + label:before,
6241
+ [type="radio"].with-gap:checked + label:after {
6242
+ border: 2px solid #26a69a;
6243
+ }
6244
+
6245
+ [type="radio"]:checked + label:after,
6246
+ [type="radio"].with-gap:checked + label:after {
6247
+ background-color: #26a69a;
6248
+ }
6249
+
6250
+ [type="radio"]:checked + label:after {
6251
+ -webkit-transform: scale(1.02);
6252
+ transform: scale(1.02);
6253
+ }
6254
+
6255
+ /* Radio With gap */
6256
+ [type="radio"].with-gap:checked + label:after {
6257
+ -webkit-transform: scale(0.5);
6258
+ transform: scale(0.5);
6259
+ }
6260
+
6261
+ /* Focused styles */
6262
+ [type="radio"].tabbed:focus + label:before {
6263
+ box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1);
6264
+ }
6265
+
6266
+ /* Disabled Radio With gap */
6267
+ [type="radio"].with-gap:disabled:checked + label:before {
6268
+ border: 2px solid rgba(0, 0, 0, 0.26);
6269
+ }
6270
+
6271
+ [type="radio"].with-gap:disabled:checked + label:after {
6272
+ border: none;
6273
+ background-color: rgba(0, 0, 0, 0.26);
6274
+ }
6275
+
6276
+ /* Disabled style */
6277
+ [type="radio"]:disabled:not(:checked) + label:before,
6278
+ [type="radio"]:disabled:checked + label:before {
6279
+ background-color: transparent;
6280
+ border-color: rgba(0, 0, 0, 0.26);
6281
+ }
6282
+
6283
+ [type="radio"]:disabled + label {
6284
+ color: rgba(0, 0, 0, 0.26);
6285
+ }
6286
+
6287
+ [type="radio"]:disabled:not(:checked) + label:before {
6288
+ border-color: rgba(0, 0, 0, 0.26);
6289
+ }
6290
+
6291
+ [type="radio"]:disabled:checked + label:after {
6292
+ background-color: rgba(0, 0, 0, 0.26);
6293
+ border-color: #BDBDBD;
6294
+ }
6295
+
6296
+ /* Checkboxes
6297
+ ========================================================================== */
6298
+ /* CUSTOM CSS CHECKBOXES */
6299
+ form p {
6300
+ margin-bottom: 10px;
6301
+ text-align: left;
6302
+ }
6303
+
6304
+ form p:last-child {
6305
+ margin-bottom: 0;
6306
+ }
6307
+
6308
+ /* Remove default checkbox */
6309
+ [type="checkbox"]:not(:checked),
6310
+ [type="checkbox"]:checked {
6311
+ position: absolute;
6312
+ left: -9999px;
6313
+ opacity: 0;
6314
+ }
6315
+
6316
+ [type="checkbox"] {
6317
+ /* checkbox aspect */
6318
+ }
6319
+
6320
+ [type="checkbox"] + label {
6321
+ position: relative;
6322
+ padding-left: 35px;
6323
+ cursor: pointer;
6324
+ display: inline-block;
6325
+ height: 25px;
6326
+ line-height: 25px;
6327
+ font-size: 1rem;
6328
+ -webkit-user-select: none;
6329
+ /* webkit (safari, chrome) browsers */
6330
+ -moz-user-select: none;
6331
+ /* mozilla browsers */
6332
+ -khtml-user-select: none;
6333
+ /* webkit (konqueror) browsers */
6334
+ -ms-user-select: none;
6335
+ /* IE10+ */
6336
+ }
6337
+
6338
+ [type="checkbox"] + label:before,
6339
+ [type="checkbox"]:not(.filled-in) + label:after {
6340
+ content: '';
6341
+ position: absolute;
6342
+ top: 0;
6343
+ left: 0;
6344
+ width: 18px;
6345
+ height: 18px;
6346
+ z-index: 0;
6347
+ border: 2px solid #5a5a5a;
6348
+ border-radius: 1px;
6349
+ margin-top: 2px;
6350
+ transition: .2s;
6351
+ }
6352
+
6353
+ [type="checkbox"]:not(.filled-in) + label:after {
6354
+ border: 0;
6355
+ -webkit-transform: scale(0);
6356
+ transform: scale(0);
6357
+ }
6358
+
6359
+ [type="checkbox"]:not(:checked):disabled + label:before {
6360
+ border: none;
6361
+ background-color: rgba(0, 0, 0, 0.26);
6362
+ }
6363
+
6364
+ [type="checkbox"].tabbed:focus + label:after {
6365
+ -webkit-transform: scale(1);
6366
+ transform: scale(1);
6367
+ border: 0;
6368
+ border-radius: 50%;
6369
+ box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1);
6370
+ background-color: rgba(0, 0, 0, 0.1);
6371
+ }
6372
+
6373
+ [type="checkbox"]:checked + label:before {
6374
+ top: -4px;
6375
+ left: -5px;
6376
+ width: 12px;
6377
+ height: 22px;
6378
+ border-top: 2px solid transparent;
6379
+ border-left: 2px solid transparent;
6380
+ border-right: 2px solid #26a69a;
6381
+ border-bottom: 2px solid #26a69a;
6382
+ -webkit-transform: rotate(40deg);
6383
+ transform: rotate(40deg);
6384
+ -webkit-backface-visibility: hidden;
6385
+ backface-visibility: hidden;
6386
+ -webkit-transform-origin: 100% 100%;
6387
+ transform-origin: 100% 100%;
6388
+ }
6389
+
6390
+ [type="checkbox"]:checked:disabled + label:before {
6391
+ border-right: 2px solid rgba(0, 0, 0, 0.26);
6392
+ border-bottom: 2px solid rgba(0, 0, 0, 0.26);
6393
+ }
6394
+
6395
+ /* Indeterminate checkbox */
6396
+ [type="checkbox"]:indeterminate + label:before {
6397
+ top: -11px;
6398
+ left: -12px;
6399
+ width: 10px;
6400
+ height: 22px;
6401
+ border-top: none;
6402
+ border-left: none;
6403
+ border-right: 2px solid #26a69a;
6404
+ border-bottom: none;
6405
+ -webkit-transform: rotate(90deg);
6406
+ transform: rotate(90deg);
6407
+ -webkit-backface-visibility: hidden;
6408
+ backface-visibility: hidden;
6409
+ -webkit-transform-origin: 100% 100%;
6410
+ transform-origin: 100% 100%;
6411
+ }
6412
+
6413
+ [type="checkbox"]:indeterminate:disabled + label:before {
6414
+ border-right: 2px solid rgba(0, 0, 0, 0.26);
6415
+ background-color: transparent;
6416
+ }
6417
+
6418
+ [type="checkbox"].filled-in + label:after {
6419
+ border-radius: 2px;
6420
+ }
6421
+
6422
+ [type="checkbox"].filled-in + label:before,
6423
+ [type="checkbox"].filled-in + label:after {
6424
+ content: '';
6425
+ left: 0;
6426
+ position: absolute;
6427
+ /* .1s delay is for check animation */
6428
+ transition: border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s;
6429
+ z-index: 1;
6430
+ }
6431
+
6432
+ [type="checkbox"].filled-in:not(:checked) + label:before {
6433
+ width: 0;
6434
+ height: 0;
6435
+ border: 3px solid transparent;
6436
+ left: 6px;
6437
+ top: 10px;
6438
+ -webkit-transform: rotateZ(37deg);
6439
+ transform: rotateZ(37deg);
6440
+ -webkit-transform-origin: 20% 40%;
6441
+ transform-origin: 100% 100%;
6442
+ }
6443
+
6444
+ [type="checkbox"].filled-in:not(:checked) + label:after {
6445
+ height: 20px;
6446
+ width: 20px;
6447
+ background-color: transparent;
6448
+ border: 2px solid #5a5a5a;
6449
+ top: 0px;
6450
+ z-index: 0;
6451
+ }
6452
+
6453
+ [type="checkbox"].filled-in:checked + label:before {
6454
+ top: 0;
6455
+ left: 1px;
6456
+ width: 8px;
6457
+ height: 13px;
6458
+ border-top: 2px solid transparent;
6459
+ border-left: 2px solid transparent;
6460
+ border-right: 2px solid #fff;
6461
+ border-bottom: 2px solid #fff;
6462
+ -webkit-transform: rotateZ(37deg);
6463
+ transform: rotateZ(37deg);
6464
+ -webkit-transform-origin: 100% 100%;
6465
+ transform-origin: 100% 100%;
6466
+ }
6467
+
6468
+ [type="checkbox"].filled-in:checked + label:after {
6469
+ top: 0;
6470
+ width: 20px;
6471
+ height: 20px;
6472
+ border: 2px solid #26a69a;
6473
+ background-color: #26a69a;
6474
+ z-index: 0;
6475
+ }
6476
+
6477
+ [type="checkbox"].filled-in.tabbed:focus + label:after {
6478
+ border-radius: 2px;
6479
+ border-color: #5a5a5a;
6480
+ background-color: rgba(0, 0, 0, 0.1);
6481
+ }
6482
+
6483
+ [type="checkbox"].filled-in.tabbed:checked:focus + label:after {
6484
+ border-radius: 2px;
6485
+ background-color: #26a69a;
6486
+ border-color: #26a69a;
6487
+ }
6488
+
6489
+ [type="checkbox"].filled-in:disabled:not(:checked) + label:before {
6490
+ background-color: transparent;
6491
+ border: 2px solid transparent;
6492
+ }
6493
+
6494
+ [type="checkbox"].filled-in:disabled:not(:checked) + label:after {
6495
+ border-color: transparent;
6496
+ background-color: #BDBDBD;
6497
+ }
6498
+
6499
+ [type="checkbox"].filled-in:disabled:checked + label:before {
6500
+ background-color: transparent;
6501
+ }
6502
+
6503
+ [type="checkbox"].filled-in:disabled:checked + label:after {
6504
+ background-color: #BDBDBD;
6505
+ border-color: #BDBDBD;
6506
+ }
6507
+
6508
+ /* Switch
6509
+ ========================================================================== */
6510
+ .switch,
6511
+ .switch * {
6512
+ -webkit-user-select: none;
6513
+ -moz-user-select: none;
6514
+ -khtml-user-select: none;
6515
+ -ms-user-select: none;
6516
+ }
6517
+
6518
+ .switch label {
6519
+ cursor: pointer;
6520
+ }
6521
+
6522
+ .switch label input[type=checkbox] {
6523
+ opacity: 0;
6524
+ width: 0;
6525
+ height: 0;
6526
+ }
6527
+
6528
+ .switch label input[type=checkbox]:checked + .lever {
6529
+ background-color: #84c7c1;
6530
+ }
6531
+
6532
+ .switch label input[type=checkbox]:checked + .lever:after {
6533
+ background-color: #26a69a;
6534
+ left: 24px;
6535
+ }
6536
+
6537
+ .switch label .lever {
6538
+ content: "";
6539
+ display: inline-block;
6540
+ position: relative;
6541
+ width: 40px;
6542
+ height: 15px;
6543
+ background-color: #818181;
6544
+ border-radius: 15px;
6545
+ margin-right: 10px;
6546
+ transition: background 0.3s ease;
6547
+ vertical-align: middle;
6548
+ margin: 0 16px;
6549
+ }
6550
+
6551
+ .switch label .lever:after {
6552
+ content: "";
6553
+ position: absolute;
6554
+ display: inline-block;
6555
+ width: 21px;
6556
+ height: 21px;
6557
+ background-color: #F1F1F1;
6558
+ border-radius: 21px;
6559
+ box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4);
6560
+ left: -5px;
6561
+ top: -3px;
6562
+ transition: left 0.3s ease, background .3s ease, box-shadow 0.1s ease;
6563
+ }
6564
+
6565
+ input[type=checkbox]:checked:not(:disabled) ~ .lever:active::after,
6566
+ input[type=checkbox]:checked:not(:disabled).tabbed:focus ~ .lever::after {
6567
+ box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(38, 166, 154, 0.1);
6568
+ }
6569
+
6570
+ input[type=checkbox]:not(:disabled) ~ .lever:active:after,
6571
+ input[type=checkbox]:not(:disabled).tabbed:focus ~ .lever::after {
6572
+ box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(0, 0, 0, 0.08);
6573
+ }
6574
+
6575
+ .switch input[type=checkbox][disabled] + .lever {
6576
+ cursor: default;
6577
+ }
6578
+
6579
+ .switch label input[type=checkbox][disabled] + .lever:after,
6580
+ .switch label input[type=checkbox][disabled]:checked + .lever:after {
6581
+ background-color: #BDBDBD;
6582
+ }
6583
+
6584
+ /* Select Field
6585
+ ========================================================================== */
6586
+ select {
6587
+ display: none;
6588
+ }
6589
+
6590
+ select.browser-default {
6591
+ display: block;
6592
+ }
6593
+
6594
+ select {
6595
+ background-color: rgba(255, 255, 255, 0.9);
6596
+ width: 100%;
6597
+ padding: 5px;
6598
+ border: 1px solid #f2f2f2;
6599
+ border-radius: 2px;
6600
+ height: 3rem;
6601
+ }
6602
+
6603
+ .select-label {
6604
+ position: absolute;
6605
+ }
6606
+
6607
+ .select-wrapper {
6608
+ position: relative;
6609
+ }
6610
+
6611
+ .select-wrapper input.select-dropdown {
6612
+ position: relative;
6613
+ cursor: pointer;
6614
+ background-color: transparent;
6615
+ border: none;
6616
+ border-bottom: 1px solid #9e9e9e;
6617
+ outline: none;
6618
+ height: 3rem;
6619
+ line-height: 3rem;
6620
+ width: 100%;
6621
+ font-size: 1rem;
6622
+ margin: 0 0 20px 0;
6623
+ padding: 0;
6624
+ display: block;
6625
+ }
6626
+
6627
+ .select-wrapper span.caret {
6628
+ color: initial;
6629
+ position: absolute;
6630
+ right: 0;
6631
+ top: 0;
6632
+ bottom: 0;
6633
+ height: 10px;
6634
+ margin: auto 0;
6635
+ font-size: 10px;
6636
+ line-height: 10px;
6637
+ }
6638
+
6639
+ .select-wrapper span.caret.disabled {
6640
+ color: rgba(0, 0, 0, 0.26);
6641
+ }
6642
+
6643
+ .select-wrapper + label {
6644
+ position: absolute;
6645
+ top: -14px;
6646
+ font-size: 0.8rem;
6647
+ }
6648
+
6649
+ select:disabled {
6650
+ color: rgba(0, 0, 0, 0.3);
6651
+ }
6652
+
6653
+ .select-wrapper input.select-dropdown:disabled {
6654
+ color: rgba(0, 0, 0, 0.3);
6655
+ cursor: default;
6656
+ -webkit-user-select: none;
6657
+ /* webkit (safari, chrome) browsers */
6658
+ -moz-user-select: none;
6659
+ /* mozilla browsers */
6660
+ -ms-user-select: none;
6661
+ /* IE10+ */
6662
+ border-bottom: 1px solid rgba(0, 0, 0, 0.3);
6663
+ }
6664
+
6665
+ .select-wrapper i {
6666
+ color: rgba(0, 0, 0, 0.3);
6667
+ }
6668
+
6669
+ .select-dropdown li.disabled,
6670
+ .select-dropdown li.disabled > span,
6671
+ .select-dropdown li.optgroup {
6672
+ color: rgba(0, 0, 0, 0.3);
6673
+ background-color: transparent;
6674
+ }
6675
+
6676
+ .prefix ~ .select-wrapper {
6677
+ margin-left: 3rem;
6678
+ width: 92%;
6679
+ width: calc(100% - 3rem);
6680
+ }
6681
+
6682
+ .prefix ~ label {
6683
+ margin-left: 3rem;
6684
+ }
6685
+
6686
+ .select-dropdown li img {
6687
+ height: 40px;
6688
+ width: 40px;
6689
+ margin: 5px 15px;
6690
+ float: right;
6691
+ }
6692
+
6693
+ .select-dropdown li.optgroup {
6694
+ border-top: 1px solid #eee;
6695
+ }
6696
+
6697
+ .select-dropdown li.optgroup.selected > span {
6698
+ color: rgba(0, 0, 0, 0.7);
6699
+ }
6700
+
6701
+ .select-dropdown li.optgroup > span {
6702
+ color: rgba(0, 0, 0, 0.4);
6703
+ }
6704
+
6705
+ .select-dropdown li.optgroup ~ li.optgroup-option {
6706
+ padding-left: 1rem;
6707
+ }
6708
+
6709
+ /* File Input
6710
+ ========================================================================== */
6711
+ .file-field {
6712
+ position: relative;
6713
+ }
6714
+
6715
+ .file-field .file-path-wrapper {
6716
+ overflow: hidden;
6717
+ padding-left: 10px;
6718
+ }
6719
+
6720
+ .file-field input.file-path {
6721
+ width: 100%;
6722
+ }
6723
+
6724
+ .file-field .btn, .file-field .btn-large {
6725
+ float: left;
6726
+ height: 3rem;
6727
+ line-height: 3rem;
6728
+ }
6729
+
6730
+ .file-field span {
6731
+ cursor: pointer;
6732
+ }
6733
+
6734
+ .file-field input[type=file] {
6735
+ position: absolute;
6736
+ top: 0;
6737
+ right: 0;
6738
+ left: 0;
6739
+ bottom: 0;
6740
+ width: 100%;
6741
+ margin: 0;
6742
+ padding: 0;
6743
+ font-size: 20px;
6744
+ cursor: pointer;
6745
+ opacity: 0;
6746
+ filter: alpha(opacity=0);
6747
+ }
6748
+
6749
+ /* Range
6750
+ ========================================================================== */
6751
+ .range-field {
6752
+ position: relative;
6753
+ }
6754
+
6755
+ input[type=range],
6756
+ input[type=range] + .thumb {
6757
+ cursor: pointer;
6758
+ }
6759
+
6760
+ input[type=range] {
6761
+ position: relative;
6762
+ background-color: transparent;
6763
+ border: none;
6764
+ outline: none;
6765
+ width: 100%;
6766
+ margin: 15px 0;
6767
+ padding: 0;
6768
+ }
6769
+
6770
+ input[type=range]:focus {
6771
+ outline: none;
6772
+ }
6773
+
6774
+ input[type=range] + .thumb {
6775
+ position: absolute;
6776
+ border: none;
6777
+ height: 0;
6778
+ width: 0;
6779
+ border-radius: 50%;
6780
+ background-color: #26a69a;
6781
+ top: 10px;
6782
+ margin-left: -6px;
6783
+ -webkit-transform-origin: 50% 50%;
6784
+ transform-origin: 50% 50%;
6785
+ -webkit-transform: rotate(-45deg);
6786
+ transform: rotate(-45deg);
6787
+ }
6788
+
6789
+ input[type=range] + .thumb .value {
6790
+ display: block;
6791
+ width: 30px;
6792
+ text-align: center;
6793
+ color: #26a69a;
6794
+ font-size: 0;
6795
+ -webkit-transform: rotate(45deg);
6796
+ transform: rotate(45deg);
6797
+ }
6798
+
6799
+ input[type=range] + .thumb.active {
6800
+ border-radius: 50% 50% 50% 0;
6801
+ }
6802
+
6803
+ input[type=range] + .thumb.active .value {
6804
+ color: #fff;
6805
+ margin-left: -1px;
6806
+ margin-top: 8px;
6807
+ font-size: 10px;
6808
+ }
6809
+
6810
+ input[type=range] {
6811
+ -webkit-appearance: none;
6812
+ }
6813
+
6814
+ input[type=range]::-webkit-slider-runnable-track {
6815
+ height: 3px;
6816
+ background: #c2c0c2;
6817
+ border: none;
6818
+ }
6819
+
6820
+ input[type=range]::-webkit-slider-thumb {
6821
+ -webkit-appearance: none;
6822
+ border: none;
6823
+ height: 14px;
6824
+ width: 14px;
6825
+ border-radius: 50%;
6826
+ background-color: #26a69a;
6827
+ -webkit-transform-origin: 50% 50%;
6828
+ transform-origin: 50% 50%;
6829
+ margin: -5px 0 0 0;
6830
+ transition: .3s;
6831
+ }
6832
+
6833
+ input[type=range]:focus::-webkit-slider-runnable-track {
6834
+ background: #ccc;
6835
+ }
6836
+
6837
+ input[type=range] {
6838
+ /* fix for FF unable to apply focus style bug */
6839
+ border: 1px solid white;
6840
+ /*required for proper track sizing in FF*/
6841
+ }
6842
+
6843
+ input[type=range]::-moz-range-track {
6844
+ height: 3px;
6845
+ background: #ddd;
6846
+ border: none;
6847
+ }
6848
+
6849
+ input[type=range]::-moz-range-thumb {
6850
+ border: none;
6851
+ height: 14px;
6852
+ width: 14px;
6853
+ border-radius: 50%;
6854
+ background: #26a69a;
6855
+ margin-top: -5px;
6856
+ }
6857
+
6858
+ input[type=range]:-moz-focusring {
6859
+ outline: 1px solid #fff;
6860
+ outline-offset: -1px;
6861
+ }
6862
+
6863
+ input[type=range]:focus::-moz-range-track {
6864
+ background: #ccc;
6865
+ }
6866
+
6867
+ input[type=range]::-ms-track {
6868
+ height: 3px;
6869
+ background: transparent;
6870
+ border-color: transparent;
6871
+ border-width: 6px 0;
6872
+ /*remove default tick marks*/
6873
+ color: transparent;
6874
+ }
6875
+
6876
+ input[type=range]::-ms-fill-lower {
6877
+ background: #777;
6878
+ }
6879
+
6880
+ input[type=range]::-ms-fill-upper {
6881
+ background: #ddd;
6882
+ }
6883
+
6884
+ input[type=range]::-ms-thumb {
6885
+ border: none;
6886
+ height: 14px;
6887
+ width: 14px;
6888
+ border-radius: 50%;
6889
+ background: #26a69a;
6890
+ }
6891
+
6892
+ input[type=range]:focus::-ms-fill-lower {
6893
+ background: #888;
6894
+ }
6895
+
6896
+ input[type=range]:focus::-ms-fill-upper {
6897
+ background: #ccc;
6898
+ }
6899
+
6900
+ /***************
6901
+ Nav List
6902
+ ***************/
6903
+ .table-of-contents.fixed {
6904
+ position: fixed;
6905
+ }
6906
+
6907
+ .table-of-contents li {
6908
+ padding: 2px 0;
6909
+ }
6910
+
6911
+ .table-of-contents a {
6912
+ display: inline-block;
6913
+ font-weight: 300;
6914
+ color: #757575;
6915
+ padding-left: 20px;
6916
+ height: 1.5rem;
6917
+ line-height: 1.5rem;
6918
+ letter-spacing: .4;
6919
+ display: inline-block;
6920
+ }
6921
+
6922
+ .table-of-contents a:hover {
6923
+ color: #a8a8a8;
6924
+ padding-left: 19px;
6925
+ border-left: 1px solid #ee6e73;
6926
+ }
6927
+
6928
+ .table-of-contents a.active {
6929
+ font-weight: 500;
6930
+ padding-left: 18px;
6931
+ border-left: 2px solid #ee6e73;
6932
+ }
6933
+
6934
+ .side-nav {
6935
+ position: fixed;
6936
+ width: 300px;
6937
+ left: 0;
6938
+ top: 0;
6939
+ margin: 0;
6940
+ -webkit-transform: translateX(-100%);
6941
+ transform: translateX(-100%);
6942
+ height: 100%;
6943
+ height: calc(100% + 60px);
6944
+ height: -moz-calc(100%);
6945
+ padding-bottom: 60px;
6946
+ background-color: #fff;
6947
+ z-index: 999;
6948
+ overflow-y: auto;
6949
+ will-change: transform;
6950
+ -webkit-backface-visibility: hidden;
6951
+ backface-visibility: hidden;
6952
+ -webkit-transform: translateX(-105%);
6953
+ transform: translateX(-105%);
6954
+ }
6955
+
6956
+ .side-nav.right-aligned {
6957
+ right: 0;
6958
+ -webkit-transform: translateX(105%);
6959
+ transform: translateX(105%);
6960
+ left: auto;
6961
+ -webkit-transform: translateX(100%);
6962
+ transform: translateX(100%);
6963
+ }
6964
+
6965
+ .side-nav .collapsible {
6966
+ margin: 0;
6967
+ }
6968
+
6969
+ .side-nav li {
6970
+ float: none;
6971
+ line-height: 48px;
6972
+ }
6973
+
6974
+ .side-nav li.active {
6975
+ background-color: rgba(0, 0, 0, 0.05);
6976
+ }
6977
+
6978
+ .side-nav a {
6979
+ color: rgba(0, 0, 0, 0.87);
6980
+ display: block;
6981
+ font-size: 14px;
6982
+ font-weight: 500;
6983
+ height: 48px;
6984
+ line-height: 48px;
6985
+ padding: 0 32px;
6986
+ }
6987
+
6988
+ .side-nav a:hover {
6989
+ background-color: rgba(0, 0, 0, 0.05);
6990
+ }
6991
+
6992
+ .side-nav a.btn, .side-nav a.btn-large, .side-nav a.btn-large, .side-nav a.btn-flat, .side-nav a.btn-floating {
6993
+ margin: 10px 15px;
6994
+ }
6995
+
6996
+ .side-nav a.btn, .side-nav a.btn-large, .side-nav a.btn-large, .side-nav a.btn-floating {
6997
+ color: #fff;
6998
+ }
6999
+
7000
+ .side-nav a.btn-flat {
7001
+ color: #343434;
7002
+ }
7003
+
7004
+ .side-nav a.btn:hover, .side-nav a.btn-large:hover, .side-nav a.btn-large:hover {
7005
+ background-color: #2bbbad;
7006
+ }
7007
+
7008
+ .side-nav a.btn-floating:hover {
7009
+ background-color: #26a69a;
7010
+ }
7011
+
7012
+ .side-nav li > a > i,
7013
+ .side-nav li > a > [class^="mdi-"], .side-nav li > a > [class*="mdi-"],
7014
+ .side-nav li > a > i.material-icons {
7015
+ float: left;
7016
+ height: 48px;
7017
+ line-height: 48px;
7018
+ margin: 0 32px 0 0;
7019
+ width: 24px;
7020
+ color: rgba(0, 0, 0, 0.54);
7021
+ }
7022
+
7023
+ .side-nav .divider {
7024
+ margin: 8px 0 0 0;
7025
+ }
7026
+
7027
+ .side-nav .subheader {
7028
+ cursor: initial;
7029
+ pointer-events: none;
7030
+ color: rgba(0, 0, 0, 0.54);
7031
+ font-size: 14px;
7032
+ font-weight: 500;
7033
+ line-height: 48px;
7034
+ }
7035
+
7036
+ .side-nav .subheader:hover {
7037
+ background-color: transparent;
7038
+ }
7039
+
7040
+ .side-nav .userView {
7041
+ position: relative;
7042
+ padding: 32px 32px 0;
7043
+ margin-bottom: 8px;
7044
+ }
7045
+
7046
+ .side-nav .userView > a {
7047
+ height: auto;
7048
+ padding: 0;
7049
+ }
7050
+
7051
+ .side-nav .userView > a:hover {
7052
+ background-color: transparent;
7053
+ }
7054
+
7055
+ .side-nav .userView .background {
7056
+ overflow: hidden;
7057
+ position: absolute;
7058
+ top: 0;
7059
+ right: 0;
7060
+ bottom: 0;
7061
+ left: 0;
7062
+ z-index: -1;
7063
+ }
7064
+
7065
+ .side-nav .userView .circle, .side-nav .userView .name, .side-nav .userView .email {
7066
+ display: block;
7067
+ }
7068
+
7069
+ .side-nav .userView .circle {
7070
+ height: 64px;
7071
+ width: 64px;
7072
+ }
7073
+
7074
+ .side-nav .userView .name,
7075
+ .side-nav .userView .email {
7076
+ font-size: 14px;
7077
+ line-height: 24px;
7078
+ }
7079
+
7080
+ .side-nav .userView .name {
7081
+ margin-top: 16px;
7082
+ font-weight: 500;
7083
+ }
7084
+
7085
+ .side-nav .userView .email {
7086
+ padding-bottom: 16px;
7087
+ font-weight: 400;
7088
+ }
7089
+
7090
+ .drag-target {
7091
+ height: 100%;
7092
+ width: 10px;
7093
+ position: fixed;
7094
+ top: 0;
7095
+ z-index: 998;
7096
+ }
7097
+
7098
+ .side-nav.fixed {
7099
+ left: 0;
7100
+ -webkit-transform: translateX(0);
7101
+ transform: translateX(0);
7102
+ position: fixed;
7103
+ }
7104
+
7105
+ .side-nav.fixed.right-aligned {
7106
+ right: 0;
7107
+ left: auto;
7108
+ }
7109
+
7110
+ @media only screen and (max-width: 992px) {
7111
+ .side-nav.fixed {
7112
+ -webkit-transform: translateX(-105%);
7113
+ transform: translateX(-105%);
7114
+ }
7115
+ .side-nav.fixed.right-aligned {
7116
+ -webkit-transform: translateX(105%);
7117
+ transform: translateX(105%);
7118
+ }
7119
+ .side-nav a {
7120
+ padding: 0 16px;
7121
+ }
7122
+ .side-nav .userView {
7123
+ padding: 16px 16px 0;
7124
+ }
7125
+ }
7126
+
7127
+ .side-nav .collapsible-body > ul:not(.collapsible) > li.active,
7128
+ .side-nav.fixed .collapsible-body > ul:not(.collapsible) > li.active {
7129
+ background-color: #ee6e73;
7130
+ }
7131
+
7132
+ .side-nav .collapsible-body > ul:not(.collapsible) > li.active a,
7133
+ .side-nav.fixed .collapsible-body > ul:not(.collapsible) > li.active a {
7134
+ color: #fff;
7135
+ }
7136
+
7137
+ #sidenav-overlay {
7138
+ position: fixed;
7139
+ top: 0;
7140
+ left: 0;
7141
+ right: 0;
7142
+ height: 120vh;
7143
+ background-color: rgba(0, 0, 0, 0.5);
7144
+ z-index: 997;
7145
+ will-change: opacity;
7146
+ }
7147
+
7148
+ /*
7149
+ @license
7150
+ Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
7151
+ This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
7152
+ The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
7153
+ The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
7154
+ Code distributed by Google as part of the polymer project is also
7155
+ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
7156
+ */
7157
+ /**************************/
7158
+ /* STYLES FOR THE SPINNER */
7159
+ /**************************/
7160
+ /*
7161
+ * Constants:
7162
+ * STROKEWIDTH = 3px
7163
+ * ARCSIZE = 270 degrees (amount of circle the arc takes up)
7164
+ * ARCTIME = 1333ms (time it takes to expand and contract arc)
7165
+ * ARCSTARTROT = 216 degrees (how much the start location of the arc
7166
+ * should rotate each time, 216 gives us a
7167
+ * 5 pointed star shape (it's 360/5 * 3).
7168
+ * For a 7 pointed star, we might do
7169
+ * 360/7 * 3 = 154.286)
7170
+ * CONTAINERWIDTH = 28px
7171
+ * SHRINK_TIME = 400ms
7172
+ */
7173
+ .preloader-wrapper {
7174
+ display: inline-block;
7175
+ position: relative;
7176
+ width: 48px;
7177
+ height: 48px;
7178
+ }
7179
+
7180
+ .preloader-wrapper.small {
7181
+ width: 36px;
7182
+ height: 36px;
7183
+ }
7184
+
7185
+ .preloader-wrapper.big {
7186
+ width: 64px;
7187
+ height: 64px;
7188
+ }
7189
+
7190
+ .preloader-wrapper.active {
7191
+ /* duration: 360 * ARCTIME / (ARCSTARTROT + (360-ARCSIZE)) */
7192
+ -webkit-animation: container-rotate 1568ms linear infinite;
7193
+ animation: container-rotate 1568ms linear infinite;
7194
+ }
7195
+
7196
+ @-webkit-keyframes container-rotate {
7197
+ to {
7198
+ -webkit-transform: rotate(360deg);
7199
+ }
7200
+ }
7201
+
7202
+ @keyframes container-rotate {
7203
+ to {
7204
+ -webkit-transform: rotate(360deg);
7205
+ transform: rotate(360deg);
7206
+ }
7207
+ }
7208
+
7209
+ .spinner-layer {
7210
+ position: absolute;
7211
+ width: 100%;
7212
+ height: 100%;
7213
+ opacity: 0;
7214
+ border-color: #26a69a;
7215
+ }
7216
+
7217
+ .spinner-blue,
7218
+ .spinner-blue-only {
7219
+ border-color: #4285f4;
7220
+ }
7221
+
7222
+ .spinner-red,
7223
+ .spinner-red-only {
7224
+ border-color: #db4437;
7225
+ }
7226
+
7227
+ .spinner-yellow,
7228
+ .spinner-yellow-only {
7229
+ border-color: #f4b400;
7230
+ }
7231
+
7232
+ .spinner-green,
7233
+ .spinner-green-only {
7234
+ border-color: #0f9d58;
7235
+ }
7236
+
7237
+ /**
7238
+ * IMPORTANT NOTE ABOUT CSS ANIMATION PROPERTIES (keanulee):
7239
+ *
7240
+ * iOS Safari (tested on iOS 8.1) does not handle animation-delay very well - it doesn't
7241
+ * guarantee that the animation will start _exactly_ after that value. So we avoid using
7242
+ * animation-delay and instead set custom keyframes for each color (as redundant as it
7243
+ * seems).
7244
+ *
7245
+ * We write out each animation in full (instead of separating animation-name,
7246
+ * animation-duration, etc.) because under the polyfill, Safari does not recognize those
7247
+ * specific properties properly, treats them as -webkit-animation, and overrides the
7248
+ * other animation rules. See https://github.com/Polymer/platform/issues/53.
7249
+ */
7250
+ .active .spinner-layer.spinner-blue {
7251
+ /* durations: 4 * ARCTIME */
7252
+ -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
7253
+ animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
7254
+ }
7255
+
7256
+ .active .spinner-layer.spinner-red {
7257
+ /* durations: 4 * ARCTIME */
7258
+ -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
7259
+ animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
7260
+ }
7261
+
7262
+ .active .spinner-layer.spinner-yellow {
7263
+ /* durations: 4 * ARCTIME */
7264
+ -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
7265
+ animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
7266
+ }
7267
+
7268
+ .active .spinner-layer.spinner-green {
7269
+ /* durations: 4 * ARCTIME */
7270
+ -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
7271
+ animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
7272
+ }
7273
+
7274
+ .active .spinner-layer,
7275
+ .active .spinner-layer.spinner-blue-only,
7276
+ .active .spinner-layer.spinner-red-only,
7277
+ .active .spinner-layer.spinner-yellow-only,
7278
+ .active .spinner-layer.spinner-green-only {
7279
+ /* durations: 4 * ARCTIME */
7280
+ opacity: 1;
7281
+ -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
7282
+ animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
7283
+ }
7284
+
7285
+ @-webkit-keyframes fill-unfill-rotate {
7286
+ 12.5% {
7287
+ -webkit-transform: rotate(135deg);
7288
+ }
7289
+ /* 0.5 * ARCSIZE */
7290
+ 25% {
7291
+ -webkit-transform: rotate(270deg);
7292
+ }
7293
+ /* 1 * ARCSIZE */
7294
+ 37.5% {
7295
+ -webkit-transform: rotate(405deg);
7296
+ }
7297
+ /* 1.5 * ARCSIZE */
7298
+ 50% {
7299
+ -webkit-transform: rotate(540deg);
7300
+ }
7301
+ /* 2 * ARCSIZE */
7302
+ 62.5% {
7303
+ -webkit-transform: rotate(675deg);
7304
+ }
7305
+ /* 2.5 * ARCSIZE */
7306
+ 75% {
7307
+ -webkit-transform: rotate(810deg);
7308
+ }
7309
+ /* 3 * ARCSIZE */
7310
+ 87.5% {
7311
+ -webkit-transform: rotate(945deg);
7312
+ }
7313
+ /* 3.5 * ARCSIZE */
7314
+ to {
7315
+ -webkit-transform: rotate(1080deg);
7316
+ }
7317
+ /* 4 * ARCSIZE */
7318
+ }
7319
+
7320
+ @keyframes fill-unfill-rotate {
7321
+ 12.5% {
7322
+ -webkit-transform: rotate(135deg);
7323
+ transform: rotate(135deg);
7324
+ }
7325
+ /* 0.5 * ARCSIZE */
7326
+ 25% {
7327
+ -webkit-transform: rotate(270deg);
7328
+ transform: rotate(270deg);
7329
+ }
7330
+ /* 1 * ARCSIZE */
7331
+ 37.5% {
7332
+ -webkit-transform: rotate(405deg);
7333
+ transform: rotate(405deg);
7334
+ }
7335
+ /* 1.5 * ARCSIZE */
7336
+ 50% {
7337
+ -webkit-transform: rotate(540deg);
7338
+ transform: rotate(540deg);
7339
+ }
7340
+ /* 2 * ARCSIZE */
7341
+ 62.5% {
7342
+ -webkit-transform: rotate(675deg);
7343
+ transform: rotate(675deg);
7344
+ }
7345
+ /* 2.5 * ARCSIZE */
7346
+ 75% {
7347
+ -webkit-transform: rotate(810deg);
7348
+ transform: rotate(810deg);
7349
+ }
7350
+ /* 3 * ARCSIZE */
7351
+ 87.5% {
7352
+ -webkit-transform: rotate(945deg);
7353
+ transform: rotate(945deg);
7354
+ }
7355
+ /* 3.5 * ARCSIZE */
7356
+ to {
7357
+ -webkit-transform: rotate(1080deg);
7358
+ transform: rotate(1080deg);
7359
+ }
7360
+ /* 4 * ARCSIZE */
7361
+ }
7362
+
7363
+ @-webkit-keyframes blue-fade-in-out {
7364
+ from {
7365
+ opacity: 1;
7366
+ }
7367
+ 25% {
7368
+ opacity: 1;
7369
+ }
7370
+ 26% {
7371
+ opacity: 0;
7372
+ }
7373
+ 89% {
7374
+ opacity: 0;
7375
+ }
7376
+ 90% {
7377
+ opacity: 1;
7378
+ }
7379
+ 100% {
7380
+ opacity: 1;
7381
+ }
7382
+ }
7383
+
7384
+ @keyframes blue-fade-in-out {
7385
+ from {
7386
+ opacity: 1;
7387
+ }
7388
+ 25% {
7389
+ opacity: 1;
7390
+ }
7391
+ 26% {
7392
+ opacity: 0;
7393
+ }
7394
+ 89% {
7395
+ opacity: 0;
7396
+ }
7397
+ 90% {
7398
+ opacity: 1;
7399
+ }
7400
+ 100% {
7401
+ opacity: 1;
7402
+ }
7403
+ }
7404
+
7405
+ @-webkit-keyframes red-fade-in-out {
7406
+ from {
7407
+ opacity: 0;
7408
+ }
7409
+ 15% {
7410
+ opacity: 0;
7411
+ }
7412
+ 25% {
7413
+ opacity: 1;
7414
+ }
7415
+ 50% {
7416
+ opacity: 1;
7417
+ }
7418
+ 51% {
7419
+ opacity: 0;
7420
+ }
7421
+ }
7422
+
7423
+ @keyframes red-fade-in-out {
7424
+ from {
7425
+ opacity: 0;
7426
+ }
7427
+ 15% {
7428
+ opacity: 0;
7429
+ }
7430
+ 25% {
7431
+ opacity: 1;
7432
+ }
7433
+ 50% {
7434
+ opacity: 1;
7435
+ }
7436
+ 51% {
7437
+ opacity: 0;
7438
+ }
7439
+ }
7440
+
7441
+ @-webkit-keyframes yellow-fade-in-out {
7442
+ from {
7443
+ opacity: 0;
7444
+ }
7445
+ 40% {
7446
+ opacity: 0;
7447
+ }
7448
+ 50% {
7449
+ opacity: 1;
7450
+ }
7451
+ 75% {
7452
+ opacity: 1;
7453
+ }
7454
+ 76% {
7455
+ opacity: 0;
7456
+ }
7457
+ }
7458
+
7459
+ @keyframes yellow-fade-in-out {
7460
+ from {
7461
+ opacity: 0;
7462
+ }
7463
+ 40% {
7464
+ opacity: 0;
7465
+ }
7466
+ 50% {
7467
+ opacity: 1;
7468
+ }
7469
+ 75% {
7470
+ opacity: 1;
7471
+ }
7472
+ 76% {
7473
+ opacity: 0;
7474
+ }
7475
+ }
7476
+
7477
+ @-webkit-keyframes green-fade-in-out {
7478
+ from {
7479
+ opacity: 0;
7480
+ }
7481
+ 65% {
7482
+ opacity: 0;
7483
+ }
7484
+ 75% {
7485
+ opacity: 1;
7486
+ }
7487
+ 90% {
7488
+ opacity: 1;
7489
+ }
7490
+ 100% {
7491
+ opacity: 0;
7492
+ }
7493
+ }
7494
+
7495
+ @keyframes green-fade-in-out {
7496
+ from {
7497
+ opacity: 0;
7498
+ }
7499
+ 65% {
7500
+ opacity: 0;
7501
+ }
7502
+ 75% {
7503
+ opacity: 1;
7504
+ }
7505
+ 90% {
7506
+ opacity: 1;
7507
+ }
7508
+ 100% {
7509
+ opacity: 0;
7510
+ }
7511
+ }
7512
+
7513
+ /**
7514
+ * Patch the gap that appear between the two adjacent div.circle-clipper while the
7515
+ * spinner is rotating (appears on Chrome 38, Safari 7.1, and IE 11).
7516
+ */
7517
+ .gap-patch {
7518
+ position: absolute;
7519
+ top: 0;
7520
+ left: 45%;
7521
+ width: 10%;
7522
+ height: 100%;
7523
+ overflow: hidden;
7524
+ border-color: inherit;
7525
+ }
7526
+
7527
+ .gap-patch .circle {
7528
+ width: 1000%;
7529
+ left: -450%;
7530
+ }
7531
+
7532
+ .circle-clipper {
7533
+ display: inline-block;
7534
+ position: relative;
7535
+ width: 50%;
7536
+ height: 100%;
7537
+ overflow: hidden;
7538
+ border-color: inherit;
7539
+ }
7540
+
7541
+ .circle-clipper .circle {
7542
+ width: 200%;
7543
+ height: 100%;
7544
+ border-width: 3px;
7545
+ /* STROKEWIDTH */
7546
+ border-style: solid;
7547
+ border-color: inherit;
7548
+ border-bottom-color: transparent !important;
7549
+ border-radius: 50%;
7550
+ -webkit-animation: none;
7551
+ animation: none;
7552
+ position: absolute;
7553
+ top: 0;
7554
+ right: 0;
7555
+ bottom: 0;
7556
+ }
7557
+
7558
+ .circle-clipper.left .circle {
7559
+ left: 0;
7560
+ border-right-color: transparent !important;
7561
+ -webkit-transform: rotate(129deg);
7562
+ transform: rotate(129deg);
7563
+ }
7564
+
7565
+ .circle-clipper.right .circle {
7566
+ left: -100%;
7567
+ border-left-color: transparent !important;
7568
+ -webkit-transform: rotate(-129deg);
7569
+ transform: rotate(-129deg);
7570
+ }
7571
+
7572
+ .active .circle-clipper.left .circle {
7573
+ /* duration: ARCTIME */
7574
+ -webkit-animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
7575
+ animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
7576
+ }
7577
+
7578
+ .active .circle-clipper.right .circle {
7579
+ /* duration: ARCTIME */
7580
+ -webkit-animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
7581
+ animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
7582
+ }
7583
+
7584
+ @-webkit-keyframes left-spin {
7585
+ from {
7586
+ -webkit-transform: rotate(130deg);
7587
+ }
7588
+ 50% {
7589
+ -webkit-transform: rotate(-5deg);
7590
+ }
7591
+ to {
7592
+ -webkit-transform: rotate(130deg);
7593
+ }
7594
+ }
7595
+
7596
+ @keyframes left-spin {
7597
+ from {
7598
+ -webkit-transform: rotate(130deg);
7599
+ transform: rotate(130deg);
7600
+ }
7601
+ 50% {
7602
+ -webkit-transform: rotate(-5deg);
7603
+ transform: rotate(-5deg);
7604
+ }
7605
+ to {
7606
+ -webkit-transform: rotate(130deg);
7607
+ transform: rotate(130deg);
7608
+ }
7609
+ }
7610
+
7611
+ @-webkit-keyframes right-spin {
7612
+ from {
7613
+ -webkit-transform: rotate(-130deg);
7614
+ }
7615
+ 50% {
7616
+ -webkit-transform: rotate(5deg);
7617
+ }
7618
+ to {
7619
+ -webkit-transform: rotate(-130deg);
7620
+ }
7621
+ }
7622
+
7623
+ @keyframes right-spin {
7624
+ from {
7625
+ -webkit-transform: rotate(-130deg);
7626
+ transform: rotate(-130deg);
7627
+ }
7628
+ 50% {
7629
+ -webkit-transform: rotate(5deg);
7630
+ transform: rotate(5deg);
7631
+ }
7632
+ to {
7633
+ -webkit-transform: rotate(-130deg);
7634
+ transform: rotate(-130deg);
7635
+ }
7636
+ }
7637
+
7638
+ #spinnerContainer.cooldown {
7639
+ /* duration: SHRINK_TIME */
7640
+ -webkit-animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1);
7641
+ animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1);
7642
+ }
7643
+
7644
+ @-webkit-keyframes fade-out {
7645
+ from {
7646
+ opacity: 1;
7647
+ }
7648
+ to {
7649
+ opacity: 0;
7650
+ }
7651
+ }
7652
+
7653
+ @keyframes fade-out {
7654
+ from {
7655
+ opacity: 1;
7656
+ }
7657
+ to {
7658
+ opacity: 0;
7659
+ }
7660
+ }
7661
+
7662
+ .slider {
7663
+ position: relative;
7664
+ height: 400px;
7665
+ width: 100%;
7666
+ }
7667
+
7668
+ .slider.fullscreen {
7669
+ height: 100%;
7670
+ width: 100%;
7671
+ position: absolute;
7672
+ top: 0;
7673
+ left: 0;
7674
+ right: 0;
7675
+ bottom: 0;
7676
+ }
7677
+
7678
+ .slider.fullscreen ul.slides {
7679
+ height: 100%;
7680
+ }
7681
+
7682
+ .slider.fullscreen ul.indicators {
7683
+ z-index: 2;
7684
+ bottom: 30px;
7685
+ }
7686
+
7687
+ .slider .slides {
7688
+ background-color: #9e9e9e;
7689
+ margin: 0;
7690
+ height: 400px;
7691
+ }
7692
+
7693
+ .slider .slides li {
7694
+ opacity: 0;
7695
+ position: absolute;
7696
+ top: 0;
7697
+ left: 0;
7698
+ z-index: 1;
7699
+ width: 100%;
7700
+ height: inherit;
7701
+ overflow: hidden;
7702
+ }
7703
+
7704
+ .slider .slides li img {
7705
+ height: 100%;
7706
+ width: 100%;
7707
+ background-size: cover;
7708
+ background-position: center;
7709
+ }
7710
+
7711
+ .slider .slides li .caption {
7712
+ color: #fff;
7713
+ position: absolute;
7714
+ top: 15%;
7715
+ left: 15%;
7716
+ width: 70%;
7717
+ opacity: 0;
7718
+ }
7719
+
7720
+ .slider .slides li .caption p {
7721
+ color: #e0e0e0;
7722
+ }
7723
+
7724
+ .slider .slides li.active {
7725
+ z-index: 2;
7726
+ }
7727
+
7728
+ .slider .indicators {
7729
+ position: absolute;
7730
+ text-align: center;
7731
+ left: 0;
7732
+ right: 0;
7733
+ bottom: 0;
7734
+ margin: 0;
7735
+ }
7736
+
7737
+ .slider .indicators .indicator-item {
7738
+ display: inline-block;
7739
+ position: relative;
7740
+ cursor: pointer;
7741
+ height: 16px;
7742
+ width: 16px;
7743
+ margin: 0 12px;
7744
+ background-color: #e0e0e0;
7745
+ transition: background-color .3s;
7746
+ border-radius: 50%;
7747
+ }
7748
+
7749
+ .slider .indicators .indicator-item.active {
7750
+ background-color: #4CAF50;
7751
+ }
7752
+
7753
+ .carousel {
7754
+ overflow: hidden;
7755
+ position: relative;
7756
+ width: 100%;
7757
+ height: 400px;
7758
+ -webkit-perspective: 500px;
7759
+ perspective: 500px;
7760
+ -webkit-transform-style: preserve-3d;
7761
+ transform-style: preserve-3d;
7762
+ -webkit-transform-origin: 0% 50%;
7763
+ transform-origin: 0% 50%;
7764
+ }
7765
+
7766
+ .carousel.carousel-slider {
7767
+ top: 0;
7768
+ left: 0;
7769
+ height: 0;
7770
+ }
7771
+
7772
+ .carousel.carousel-slider .carousel-fixed-item {
7773
+ position: absolute;
7774
+ left: 0;
7775
+ right: 0;
7776
+ bottom: 20px;
7777
+ z-index: 1;
7778
+ }
7779
+
7780
+ .carousel.carousel-slider .carousel-fixed-item.with-indicators {
7781
+ bottom: 68px;
7782
+ }
7783
+
7784
+ .carousel.carousel-slider .carousel-item {
7785
+ width: 100%;
7786
+ height: 100%;
7787
+ min-height: 400px;
7788
+ position: absolute;
7789
+ top: 0;
7790
+ left: 0;
7791
+ }
7792
+
7793
+ .carousel.carousel-slider .carousel-item h2 {
7794
+ font-size: 24px;
7795
+ font-weight: 500;
7796
+ line-height: 32px;
7797
+ }
7798
+
7799
+ .carousel.carousel-slider .carousel-item p {
7800
+ font-size: 15px;
7801
+ }
7802
+
7803
+ .carousel .carousel-item {
7804
+ display: none;
7805
+ width: 200px;
7806
+ height: 200px;
7807
+ position: absolute;
7808
+ top: 0;
7809
+ left: 0;
7810
+ }
7811
+
7812
+ .carousel .carousel-item img {
7813
+ width: 100%;
7814
+ }
7815
+
7816
+ .carousel .indicators {
7817
+ position: absolute;
7818
+ text-align: center;
7819
+ left: 0;
7820
+ right: 0;
7821
+ bottom: 0;
7822
+ margin: 0;
7823
+ }
7824
+
7825
+ .carousel .indicators .indicator-item {
7826
+ display: inline-block;
7827
+ position: relative;
7828
+ cursor: pointer;
7829
+ height: 8px;
7830
+ width: 8px;
7831
+ margin: 24px 4px;
7832
+ background-color: rgba(255, 255, 255, 0.5);
7833
+ transition: background-color .3s;
7834
+ border-radius: 50%;
7835
+ }
7836
+
7837
+ .carousel .indicators .indicator-item.active {
7838
+ background-color: #fff;
7839
+ }
7840
+
7841
+ /* ==========================================================================
7842
+ $BASE-PICKER
7843
+ ========================================================================== */
7844
+ /**
7845
+ * Note: the root picker element should *NOT* be styled more than what's here.
7846
+ */
7847
+ .picker {
7848
+ font-size: 16px;
7849
+ text-align: left;
7850
+ line-height: 1.2;
7851
+ color: #000000;
7852
+ position: absolute;
7853
+ z-index: 10000;
7854
+ -webkit-user-select: none;
7855
+ -moz-user-select: none;
7856
+ -ms-user-select: none;
7857
+ user-select: none;
7858
+ }
7859
+
7860
+ /**
7861
+ * The picker input element.
7862
+ */
7863
+ .picker__input {
7864
+ cursor: default;
7865
+ }
7866
+
7867
+ /**
7868
+ * When the picker is opened, the input element is "activated".
7869
+ */
7870
+ .picker__input.picker__input--active {
7871
+ border-color: #0089ec;
7872
+ }
7873
+
7874
+ /**
7875
+ * The holder is the only "scrollable" top-level container element.
7876
+ */
7877
+ .picker__holder {
7878
+ width: 100%;
7879
+ overflow-y: auto;
7880
+ -webkit-overflow-scrolling: touch;
7881
+ }
7882
+
7883
+ /*!
7884
+ * Default mobile-first, responsive styling for pickadate.js
7885
+ * Demo: http://amsul.github.io/pickadate.js
7886
+ */
7887
+ /**
7888
+ * Note: the root picker element should *NOT* be styled more than what's here.
7889
+ */
7890
+ /**
7891
+ * Make the holder and frame fullscreen.
7892
+ */
7893
+ .picker__holder,
7894
+ .picker__frame {
7895
+ bottom: 0;
7896
+ left: 0;
7897
+ right: 0;
7898
+ top: 100%;
7899
+ }
7900
+
7901
+ /**
7902
+ * The holder should overlay the entire screen.
7903
+ */
7904
+ .picker__holder {
7905
+ position: fixed;
7906
+ transition: background 0.15s ease-out, top 0s 0.15s;
7907
+ -webkit-backface-visibility: hidden;
7908
+ }
7909
+
7910
+ /**
7911
+ * The frame that bounds the box contents of the picker.
7912
+ */
7913
+ .picker__frame {
7914
+ position: absolute;
7915
+ margin: 0 auto;
7916
+ min-width: 256px;
7917
+ width: 300px;
7918
+ max-height: 350px;
7919
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
7920
+ filter: alpha(opacity=0);
7921
+ -moz-opacity: 0;
7922
+ opacity: 0;
7923
+ transition: all 0.15s ease-out;
7924
+ }
7925
+
7926
+ @media (min-height: 28.875em) {
7927
+ .picker__frame {
7928
+ overflow: visible;
7929
+ top: auto;
7930
+ bottom: -100%;
7931
+ max-height: 80%;
7932
+ }
7933
+ }
7934
+
7935
+ @media (min-height: 40.125em) {
7936
+ .picker__frame {
7937
+ margin-bottom: 7.5%;
7938
+ }
7939
+ }
7940
+
7941
+ /**
7942
+ * The wrapper sets the stage to vertically align the box contents.
7943
+ */
7944
+ .picker__wrap {
7945
+ display: table;
7946
+ width: 100%;
7947
+ height: 100%;
7948
+ }
7949
+
7950
+ @media (min-height: 28.875em) {
7951
+ .picker__wrap {
7952
+ display: block;
7953
+ }
7954
+ }
7955
+
7956
+ /**
7957
+ * The box contains all the picker contents.
7958
+ */
7959
+ .picker__box {
7960
+ background: #ffffff;
7961
+ display: table-cell;
7962
+ vertical-align: middle;
7963
+ }
7964
+
7965
+ @media (min-height: 28.875em) {
7966
+ .picker__box {
7967
+ display: block;
7968
+ border: 1px solid #777777;
7969
+ border-top-color: #898989;
7970
+ border-bottom-width: 0;
7971
+ border-radius: 5px 5px 0 0;
7972
+ box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24);
7973
+ }
7974
+ }
7975
+
7976
+ /**
7977
+ * When the picker opens...
7978
+ */
7979
+ .picker--opened .picker__holder {
7980
+ top: 0;
7981
+ background: transparent;
7982
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#1E000000,endColorstr=#1E000000)";
7983
+ zoom: 1;
7984
+ background: rgba(0, 0, 0, 0.32);
7985
+ transition: background 0.15s ease-out;
7986
+ }
7987
+
7988
+ .picker--opened .picker__frame {
7989
+ top: 0;
7990
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
7991
+ filter: alpha(opacity=100);
7992
+ -moz-opacity: 1;
7993
+ opacity: 1;
7994
+ }
7995
+
7996
+ @media (min-height: 35.875em) {
7997
+ .picker--opened .picker__frame {
7998
+ top: 10%;
7999
+ bottom: auto;
8000
+ }
8001
+ }
8002
+
8003
+ /**
8004
+ * For `large` screens, transform into an inline picker.
8005
+ */
8006
+ /* ==========================================================================
8007
+ CUSTOM MATERIALIZE STYLES
8008
+ ========================================================================== */
8009
+ .picker__input.picker__input--active {
8010
+ border-color: #E3F2FD;
8011
+ }
8012
+
8013
+ .picker__frame {
8014
+ margin: 0 auto;
8015
+ max-width: 325px;
8016
+ }
8017
+
8018
+ @media (min-height: 38.875em) {
8019
+ .picker--opened .picker__frame {
8020
+ top: 10%;
8021
+ bottom: auto;
8022
+ }
8023
+ }
8024
+
8025
+ /* ==========================================================================
8026
+ $BASE-DATE-PICKER
8027
+ ========================================================================== */
8028
+ /**
8029
+ * The picker box.
8030
+ */
8031
+ .picker__box {
8032
+ padding: 0 1em;
8033
+ }
8034
+
8035
+ /**
8036
+ * The header containing the month and year stuff.
8037
+ */
8038
+ .picker__header {
8039
+ text-align: center;
8040
+ position: relative;
8041
+ margin-top: .75em;
8042
+ }
8043
+
8044
+ /**
8045
+ * The month and year labels.
8046
+ */
8047
+ .picker__month,
8048
+ .picker__year {
8049
+ display: inline-block;
8050
+ margin-left: .25em;
8051
+ margin-right: .25em;
8052
+ }
8053
+
8054
+ /**
8055
+ * The month and year selectors.
8056
+ */
8057
+ .picker__select--month,
8058
+ .picker__select--year {
8059
+ height: 2em;
8060
+ padding: 0;
8061
+ margin-left: .25em;
8062
+ margin-right: .25em;
8063
+ }
8064
+
8065
+ .picker__select--month.browser-default {
8066
+ display: inline;
8067
+ background-color: #FFFFFF;
8068
+ width: 40%;
8069
+ }
8070
+
8071
+ .picker__select--year.browser-default {
8072
+ display: inline;
8073
+ background-color: #FFFFFF;
8074
+ width: 26%;
8075
+ }
8076
+
8077
+ .picker__select--month:focus,
8078
+ .picker__select--year:focus {
8079
+ border-color: rgba(0, 0, 0, 0.05);
8080
+ }
8081
+
8082
+ /**
8083
+ * The month navigation buttons.
8084
+ */
8085
+ .picker__nav--prev,
8086
+ .picker__nav--next {
8087
+ position: absolute;
8088
+ padding: .5em 1.25em;
8089
+ width: 1em;
8090
+ height: 1em;
8091
+ box-sizing: content-box;
8092
+ top: -0.25em;
8093
+ }
8094
+
8095
+ .picker__nav--prev {
8096
+ left: -1em;
8097
+ padding-right: 1.25em;
8098
+ }
8099
+
8100
+ .picker__nav--next {
8101
+ right: -1em;
8102
+ padding-left: 1.25em;
8103
+ }
8104
+
8105
+ .picker__nav--disabled,
8106
+ .picker__nav--disabled:hover,
8107
+ .picker__nav--disabled:before,
8108
+ .picker__nav--disabled:before:hover {
8109
+ cursor: default;
8110
+ background: none;
8111
+ border-right-color: #f5f5f5;
8112
+ border-left-color: #f5f5f5;
8113
+ }
8114
+
8115
+ /**
8116
+ * The calendar table of dates
8117
+ */
8118
+ .picker__table {
8119
+ text-align: center;
8120
+ border-collapse: collapse;
8121
+ border-spacing: 0;
8122
+ table-layout: fixed;
8123
+ font-size: 1rem;
8124
+ width: 100%;
8125
+ margin-top: .75em;
8126
+ margin-bottom: .5em;
8127
+ }
8128
+
8129
+ .picker__table th, .picker__table td {
8130
+ text-align: center;
8131
+ }
8132
+
8133
+ .picker__table td {
8134
+ margin: 0;
8135
+ padding: 0;
8136
+ }
8137
+
8138
+ /**
8139
+ * The weekday labels
8140
+ */
8141
+ .picker__weekday {
8142
+ width: 14.285714286%;
8143
+ font-size: .75em;
8144
+ padding-bottom: .25em;
8145
+ color: #999999;
8146
+ font-weight: 500;
8147
+ /* Increase the spacing a tad */
8148
+ }
8149
+
8150
+ @media (min-height: 33.875em) {
8151
+ .picker__weekday {
8152
+ padding-bottom: .5em;
8153
+ }
8154
+ }
8155
+
8156
+ /**
8157
+ * The days on the calendar
8158
+ */
8159
+ .picker__day--today {
8160
+ position: relative;
8161
+ color: #595959;
8162
+ letter-spacing: -.3;
8163
+ padding: .75rem 0;
8164
+ font-weight: 400;
8165
+ border: 1px solid transparent;
8166
+ }
8167
+
8168
+ .picker__day--disabled:before {
8169
+ border-top-color: #aaaaaa;
8170
+ }
8171
+
8172
+ .picker__day--infocus:hover {
8173
+ cursor: pointer;
8174
+ color: #000;
8175
+ font-weight: 500;
8176
+ }
8177
+
8178
+ .picker__day--outfocus {
8179
+ display: none;
8180
+ padding: .75rem 0;
8181
+ color: #fff;
8182
+ }
8183
+
8184
+ .picker__day--outfocus:hover {
8185
+ cursor: pointer;
8186
+ color: #dddddd;
8187
+ font-weight: 500;
8188
+ }
8189
+
8190
+ .picker__day--highlighted:hover,
8191
+ .picker--focused .picker__day--highlighted {
8192
+ cursor: pointer;
8193
+ }
8194
+
8195
+ .picker__day--selected,
8196
+ .picker__day--selected:hover,
8197
+ .picker--focused .picker__day--selected {
8198
+ border-radius: 50%;
8199
+ -webkit-transform: scale(0.75);
8200
+ transform: scale(0.75);
8201
+ background: #0089ec;
8202
+ color: #ffffff;
8203
+ }
8204
+
8205
+ .picker__day--disabled,
8206
+ .picker__day--disabled:hover,
8207
+ .picker--focused .picker__day--disabled {
8208
+ background: #f5f5f5;
8209
+ border-color: #f5f5f5;
8210
+ color: #dddddd;
8211
+ cursor: default;
8212
+ }
8213
+
8214
+ .picker__day--highlighted.picker__day--disabled,
8215
+ .picker__day--highlighted.picker__day--disabled:hover {
8216
+ background: #bbbbbb;
8217
+ }
8218
+
8219
+ /**
8220
+ * The footer containing the "today", "clear", and "close" buttons.
8221
+ */
8222
+ .picker__footer {
8223
+ text-align: center;
8224
+ display: -webkit-flex;
8225
+ display: -ms-flexbox;
8226
+ display: flex;
8227
+ -webkit-align-items: center;
8228
+ -ms-flex-align: center;
8229
+ align-items: center;
8230
+ -webkit-justify-content: space-between;
8231
+ -ms-flex-pack: justify;
8232
+ justify-content: space-between;
8233
+ }
8234
+
8235
+ .picker__button--today,
8236
+ .picker__button--clear,
8237
+ .picker__button--close {
8238
+ border: 1px solid #ffffff;
8239
+ background: #ffffff;
8240
+ font-size: .8em;
8241
+ padding: .66em 0;
8242
+ font-weight: bold;
8243
+ width: 33%;
8244
+ display: inline-block;
8245
+ vertical-align: bottom;
8246
+ }
8247
+
8248
+ .picker__button--today:hover,
8249
+ .picker__button--clear:hover,
8250
+ .picker__button--close:hover {
8251
+ cursor: pointer;
8252
+ color: #000000;
8253
+ background: #b1dcfb;
8254
+ border-bottom-color: #b1dcfb;
8255
+ }
8256
+
8257
+ .picker__button--today:focus,
8258
+ .picker__button--clear:focus,
8259
+ .picker__button--close:focus {
8260
+ background: #b1dcfb;
8261
+ border-color: rgba(0, 0, 0, 0.05);
8262
+ outline: none;
8263
+ }
8264
+
8265
+ .picker__button--today:before,
8266
+ .picker__button--clear:before,
8267
+ .picker__button--close:before {
8268
+ position: relative;
8269
+ display: inline-block;
8270
+ height: 0;
8271
+ }
8272
+
8273
+ .picker__button--today:before,
8274
+ .picker__button--clear:before {
8275
+ content: " ";
8276
+ margin-right: .45em;
8277
+ }
8278
+
8279
+ .picker__button--today:before {
8280
+ top: -0.05em;
8281
+ width: 0;
8282
+ border-top: 0.66em solid #0059bc;
8283
+ border-left: .66em solid transparent;
8284
+ }
8285
+
8286
+ .picker__button--clear:before {
8287
+ top: -0.25em;
8288
+ width: .66em;
8289
+ border-top: 3px solid #ee2200;
8290
+ }
8291
+
8292
+ .picker__button--close:before {
8293
+ content: "\D7";
8294
+ top: -0.1em;
8295
+ vertical-align: top;
8296
+ font-size: 1.1em;
8297
+ margin-right: .35em;
8298
+ color: #777777;
8299
+ }
8300
+
8301
+ .picker__button--today[disabled],
8302
+ .picker__button--today[disabled]:hover {
8303
+ background: #f5f5f5;
8304
+ border-color: #f5f5f5;
8305
+ color: #dddddd;
8306
+ cursor: default;
8307
+ }
8308
+
8309
+ .picker__button--today[disabled]:before {
8310
+ border-top-color: #aaaaaa;
8311
+ }
8312
+
8313
+ /* ==========================================================================
8314
+ CUSTOM MATERIALIZE STYLES
8315
+ ========================================================================== */
8316
+ .picker__box {
8317
+ border-radius: 2px;
8318
+ overflow: hidden;
8319
+ }
8320
+
8321
+ .picker__date-display {
8322
+ text-align: center;
8323
+ background-color: #26a69a;
8324
+ color: #fff;
8325
+ padding-bottom: 15px;
8326
+ font-weight: 300;
8327
+ }
8328
+
8329
+ .picker__nav--prev:hover,
8330
+ .picker__nav--next:hover {
8331
+ cursor: pointer;
8332
+ color: #000000;
8333
+ background: #a1ded8;
8334
+ }
8335
+
8336
+ .picker__weekday-display {
8337
+ background-color: #1f897f;
8338
+ padding: 10px;
8339
+ font-weight: 200;
8340
+ letter-spacing: .5;
8341
+ font-size: 1rem;
8342
+ margin-bottom: 15px;
8343
+ }
8344
+
8345
+ .picker__month-display {
8346
+ text-transform: uppercase;
8347
+ font-size: 2rem;
8348
+ }
8349
+
8350
+ .picker__day-display {
8351
+ font-size: 4.5rem;
8352
+ font-weight: 400;
8353
+ }
8354
+
8355
+ .picker__year-display {
8356
+ font-size: 1.8rem;
8357
+ color: rgba(255, 255, 255, 0.4);
8358
+ }
8359
+
8360
+ .picker__box {
8361
+ padding: 0;
8362
+ }
8363
+
8364
+ .picker__calendar-container {
8365
+ padding: 0 1rem;
8366
+ }
8367
+
8368
+ .picker__calendar-container thead {
8369
+ border: none;
8370
+ }
8371
+
8372
+ .picker__table {
8373
+ margin-top: 0;
8374
+ margin-bottom: .5em;
8375
+ }
8376
+
8377
+ .picker__day--infocus {
8378
+ color: #595959;
8379
+ letter-spacing: -.3;
8380
+ padding: .75rem 0;
8381
+ font-weight: 400;
8382
+ border: 1px solid transparent;
8383
+ }
8384
+
8385
+ .picker__day.picker__day--today {
8386
+ color: #26a69a;
8387
+ }
8388
+
8389
+ .picker__day.picker__day--today.picker__day--selected {
8390
+ color: #fff;
8391
+ }
8392
+
8393
+ .picker__weekday {
8394
+ font-size: .9rem;
8395
+ }
8396
+
8397
+ .picker__day--selected,
8398
+ .picker__day--selected:hover,
8399
+ .picker--focused .picker__day--selected {
8400
+ border-radius: 50%;
8401
+ -webkit-transform: scale(0.9);
8402
+ transform: scale(0.9);
8403
+ background-color: #26a69a;
8404
+ color: #ffffff;
8405
+ }
8406
+
8407
+ .picker__day--selected.picker__day--outfocus,
8408
+ .picker__day--selected:hover.picker__day--outfocus,
8409
+ .picker--focused .picker__day--selected.picker__day--outfocus {
8410
+ background-color: #a1ded8;
8411
+ }
8412
+
8413
+ .picker__footer {
8414
+ text-align: right;
8415
+ padding: 5px 10px;
8416
+ }
8417
+
8418
+ .picker__close, .picker__today {
8419
+ font-size: 1.1rem;
8420
+ padding: 0 1rem;
8421
+ color: #26a69a;
8422
+ }
8423
+
8424
+ .picker__nav--prev:before,
8425
+ .picker__nav--next:before {
8426
+ content: " ";
8427
+ border-top: .5em solid transparent;
8428
+ border-bottom: .5em solid transparent;
8429
+ border-right: 0.75em solid #676767;
8430
+ width: 0;
8431
+ height: 0;
8432
+ display: block;
8433
+ margin: 0 auto;
8434
+ }
8435
+
8436
+ .picker__nav--next:before {
8437
+ border-right: 0;
8438
+ border-left: 0.75em solid #676767;
8439
+ }
8440
+
8441
+ button.picker__today:focus, button.picker__clear:focus, button.picker__close:focus {
8442
+ background-color: #a1ded8;
8443
+ }
8444
+
8445
+ /* ==========================================================================
8446
+ $BASE-TIME-PICKER
8447
+ ========================================================================== */
8448
+ /**
8449
+ * The list of times.
8450
+ */
8451
+ .picker__list {
8452
+ list-style: none;
8453
+ padding: 0.75em 0 4.2em;
8454
+ margin: 0;
8455
+ }
8456
+
8457
+ /**
8458
+ * The times on the clock.
8459
+ */
8460
+ .picker__list-item {
8461
+ border-bottom: 1px solid #dddddd;
8462
+ border-top: 1px solid #dddddd;
8463
+ margin-bottom: -1px;
8464
+ position: relative;
8465
+ background: #ffffff;
8466
+ padding: .75em 1.25em;
8467
+ }
8468
+
8469
+ @media (min-height: 46.75em) {
8470
+ .picker__list-item {
8471
+ padding: .5em 1em;
8472
+ }
8473
+ }
8474
+
8475
+ /* Hovered time */
8476
+ .picker__list-item:hover {
8477
+ cursor: pointer;
8478
+ color: #000000;
8479
+ background: #b1dcfb;
8480
+ border-color: #0089ec;
8481
+ z-index: 10;
8482
+ }
8483
+
8484
+ /* Highlighted and hovered/focused time */
8485
+ .picker__list-item--highlighted {
8486
+ border-color: #0089ec;
8487
+ z-index: 10;
8488
+ }
8489
+
8490
+ .picker__list-item--highlighted:hover,
8491
+ .picker--focused .picker__list-item--highlighted {
8492
+ cursor: pointer;
8493
+ color: #000000;
8494
+ background: #b1dcfb;
8495
+ }
8496
+
8497
+ /* Selected and hovered/focused time */
8498
+ .picker__list-item--selected,
8499
+ .picker__list-item--selected:hover,
8500
+ .picker--focused .picker__list-item--selected {
8501
+ background: #0089ec;
8502
+ color: #ffffff;
8503
+ z-index: 10;
8504
+ }
8505
+
8506
+ /* Disabled time */
8507
+ .picker__list-item--disabled,
8508
+ .picker__list-item--disabled:hover,
8509
+ .picker--focused .picker__list-item--disabled {
8510
+ background: #f5f5f5;
8511
+ border-color: #f5f5f5;
8512
+ color: #dddddd;
8513
+ cursor: default;
8514
+ border-color: #dddddd;
8515
+ z-index: auto;
8516
+ }
8517
+
8518
+ /**
8519
+ * The clear button
8520
+ */
8521
+ .picker--time .picker__button--clear {
8522
+ display: block;
8523
+ width: 80%;
8524
+ margin: 1em auto 0;
8525
+ padding: 1em 1.25em;
8526
+ background: none;
8527
+ border: 0;
8528
+ font-weight: 500;
8529
+ font-size: .67em;
8530
+ text-align: center;
8531
+ text-transform: uppercase;
8532
+ color: #666;
8533
+ }
8534
+
8535
+ .picker--time .picker__button--clear:hover,
8536
+ .picker--time .picker__button--clear:focus {
8537
+ color: #000000;
8538
+ background: #b1dcfb;
8539
+ background: #ee2200;
8540
+ border-color: #ee2200;
8541
+ cursor: pointer;
8542
+ color: #ffffff;
8543
+ outline: none;
8544
+ }
8545
+
8546
+ .picker--time .picker__button--clear:before {
8547
+ top: -0.25em;
8548
+ color: #666;
8549
+ font-size: 1.25em;
8550
+ font-weight: bold;
8551
+ }
8552
+
8553
+ .picker--time .picker__button--clear:hover:before,
8554
+ .picker--time .picker__button--clear:focus:before {
8555
+ color: #ffffff;
8556
+ }
8557
+
8558
+ /* ==========================================================================
8559
+ $DEFAULT-TIME-PICKER
8560
+ ========================================================================== */
8561
+ /**
8562
+ * The frame the bounds the time picker.
8563
+ */
8564
+ .picker--time .picker__frame {
8565
+ min-width: 256px;
8566
+ max-width: 320px;
8567
+ }
8568
+
8569
+ /**
8570
+ * The picker box.
8571
+ */
8572
+ .picker--time .picker__box {
8573
+ font-size: 1em;
8574
+ background: #f2f2f2;
8575
+ padding: 0;
8576
+ }
8577
+
8578
+ @media (min-height: 40.125em) {
8579
+ .picker--time .picker__box {
8580
+ margin-bottom: 5em;
8581
+ }
8582
+ }
admin/css/materialize.min.css ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Materialize v0.98.0 (http://materializecss.com)
3
+ * Copyright 2014-2015 Materialize
4
+ * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE)
5
+ */
6
+ .materialize-red{background-color:#e51c23 !important}.materialize-red-text{color:#e51c23 !important}.materialize-red.lighten-5{background-color:#fdeaeb !important}.materialize-red-text.text-lighten-5{color:#fdeaeb !important}.materialize-red.lighten-4{background-color:#f8c1c3 !important}.materialize-red-text.text-lighten-4{color:#f8c1c3 !important}.materialize-red.lighten-3{background-color:#f3989b !important}.materialize-red-text.text-lighten-3{color:#f3989b !important}.materialize-red.lighten-2{background-color:#ee6e73 !important}.materialize-red-text.text-lighten-2{color:#ee6e73 !important}.materialize-red.lighten-1{background-color:#ea454b !important}.materialize-red-text.text-lighten-1{color:#ea454b !important}.materialize-red.darken-1{background-color:#d0181e !important}.materialize-red-text.text-darken-1{color:#d0181e !important}.materialize-red.darken-2{background-color:#b9151b !important}.materialize-red-text.text-darken-2{color:#b9151b !important}.materialize-red.darken-3{background-color:#a21318 !important}.materialize-red-text.text-darken-3{color:#a21318 !important}.materialize-red.darken-4{background-color:#8b1014 !important}.materialize-red-text.text-darken-4{color:#8b1014 !important}.red{background-color:#F44336 !important}.red-text{color:#F44336 !important}.red.lighten-5{background-color:#FFEBEE !important}.red-text.text-lighten-5{color:#FFEBEE !important}.red.lighten-4{background-color:#FFCDD2 !important}.red-text.text-lighten-4{color:#FFCDD2 !important}.red.lighten-3{background-color:#EF9A9A !important}.red-text.text-lighten-3{color:#EF9A9A !important}.red.lighten-2{background-color:#E57373 !important}.red-text.text-lighten-2{color:#E57373 !important}.red.lighten-1{background-color:#EF5350 !important}.red-text.text-lighten-1{color:#EF5350 !important}.red.darken-1{background-color:#E53935 !important}.red-text.text-darken-1{color:#E53935 !important}.red.darken-2{background-color:#D32F2F !important}.red-text.text-darken-2{color:#D32F2F !important}.red.darken-3{background-color:#C62828 !important}.red-text.text-darken-3{color:#C62828 !important}.red.darken-4{background-color:#B71C1C !important}.red-text.text-darken-4{color:#B71C1C !important}.red.accent-1{background-color:#FF8A80 !important}.red-text.text-accent-1{color:#FF8A80 !important}.red.accent-2{background-color:#FF5252 !important}.red-text.text-accent-2{color:#FF5252 !important}.red.accent-3{background-color:#FF1744 !important}.red-text.text-accent-3{color:#FF1744 !important}.red.accent-4{background-color:#D50000 !important}.red-text.text-accent-4{color:#D50000 !important}.pink{background-color:#e91e63 !important}.pink-text{color:#e91e63 !important}.pink.lighten-5{background-color:#fce4ec !important}.pink-text.text-lighten-5{color:#fce4ec !important}.pink.lighten-4{background-color:#f8bbd0 !important}.pink-text.text-lighten-4{color:#f8bbd0 !important}.pink.lighten-3{background-color:#f48fb1 !important}.pink-text.text-lighten-3{color:#f48fb1 !important}.pink.lighten-2{background-color:#f06292 !important}.pink-text.text-lighten-2{color:#f06292 !important}.pink.lighten-1{background-color:#ec407a !important}.pink-text.text-lighten-1{color:#ec407a !important}.pink.darken-1{background-color:#d81b60 !important}.pink-text.text-darken-1{color:#d81b60 !important}.pink.darken-2{background-color:#c2185b !important}.pink-text.text-darken-2{color:#c2185b !important}.pink.darken-3{background-color:#ad1457 !important}.pink-text.text-darken-3{color:#ad1457 !important}.pink.darken-4{background-color:#880e4f !important}.pink-text.text-darken-4{color:#880e4f !important}.pink.accent-1{background-color:#ff80ab !important}.pink-text.text-accent-1{color:#ff80ab !important}.pink.accent-2{background-color:#ff4081 !important}.pink-text.text-accent-2{color:#ff4081 !important}.pink.accent-3{background-color:#f50057 !important}.pink-text.text-accent-3{color:#f50057 !important}.pink.accent-4{background-color:#c51162 !important}.pink-text.text-accent-4{color:#c51162 !important}.purple{background-color:#9c27b0 !important}.purple-text{color:#9c27b0 !important}.purple.lighten-5{background-color:#f3e5f5 !important}.purple-text.text-lighten-5{color:#f3e5f5 !important}.purple.lighten-4{background-color:#e1bee7 !important}.purple-text.text-lighten-4{color:#e1bee7 !important}.purple.lighten-3{background-color:#ce93d8 !important}.purple-text.text-lighten-3{color:#ce93d8 !important}.purple.lighten-2{background-color:#ba68c8 !important}.purple-text.text-lighten-2{color:#ba68c8 !important}.purple.lighten-1{background-color:#ab47bc !important}.purple-text.text-lighten-1{color:#ab47bc !important}.purple.darken-1{background-color:#8e24aa !important}.purple-text.text-darken-1{color:#8e24aa !important}.purple.darken-2{background-color:#7b1fa2 !important}.purple-text.text-darken-2{color:#7b1fa2 !important}.purple.darken-3{background-color:#6a1b9a !important}.purple-text.text-darken-3{color:#6a1b9a !important}.purple.darken-4{background-color:#4a148c !important}.purple-text.text-darken-4{color:#4a148c !important}.purple.accent-1{background-color:#ea80fc !important}.purple-text.text-accent-1{color:#ea80fc !important}.purple.accent-2{background-color:#e040fb !important}.purple-text.text-accent-2{color:#e040fb !important}.purple.accent-3{background-color:#d500f9 !important}.purple-text.text-accent-3{color:#d500f9 !important}.purple.accent-4{background-color:#a0f !important}.purple-text.text-accent-4{color:#a0f !important}.deep-purple{background-color:#673ab7 !important}.deep-purple-text{color:#673ab7 !important}.deep-purple.lighten-5{background-color:#ede7f6 !important}.deep-purple-text.text-lighten-5{color:#ede7f6 !important}.deep-purple.lighten-4{background-color:#d1c4e9 !important}.deep-purple-text.text-lighten-4{color:#d1c4e9 !important}.deep-purple.lighten-3{background-color:#b39ddb !important}.deep-purple-text.text-lighten-3{color:#b39ddb !important}.deep-purple.lighten-2{background-color:#9575cd !important}.deep-purple-text.text-lighten-2{color:#9575cd !important}.deep-purple.lighten-1{background-color:#7e57c2 !important}.deep-purple-text.text-lighten-1{color:#7e57c2 !important}.deep-purple.darken-1{background-color:#5e35b1 !important}.deep-purple-text.text-darken-1{color:#5e35b1 !important}.deep-purple.darken-2{background-color:#512da8 !important}.deep-purple-text.text-darken-2{color:#512da8 !important}.deep-purple.darken-3{background-color:#4527a0 !important}.deep-purple-text.text-darken-3{color:#4527a0 !important}.deep-purple.darken-4{background-color:#311b92 !important}.deep-purple-text.text-darken-4{color:#311b92 !important}.deep-purple.accent-1{background-color:#b388ff !important}.deep-purple-text.text-accent-1{color:#b388ff !important}.deep-purple.accent-2{background-color:#7c4dff !important}.deep-purple-text.text-accent-2{color:#7c4dff !important}.deep-purple.accent-3{background-color:#651fff !important}.deep-purple-text.text-accent-3{color:#651fff !important}.deep-purple.accent-4{background-color:#6200ea !important}.deep-purple-text.text-accent-4{color:#6200ea !important}.indigo{background-color:#3f51b5 !important}.indigo-text{color:#3f51b5 !important}.indigo.lighten-5{background-color:#e8eaf6 !important}.indigo-text.text-lighten-5{color:#e8eaf6 !important}.indigo.lighten-4{background-color:#c5cae9 !important}.indigo-text.text-lighten-4{color:#c5cae9 !important}.indigo.lighten-3{background-color:#9fa8da !important}.indigo-text.text-lighten-3{color:#9fa8da !important}.indigo.lighten-2{background-color:#7986cb !important}.indigo-text.text-lighten-2{color:#7986cb !important}.indigo.lighten-1{background-color:#5c6bc0 !important}.indigo-text.text-lighten-1{color:#5c6bc0 !important}.indigo.darken-1{background-color:#3949ab !important}.indigo-text.text-darken-1{color:#3949ab !important}.indigo.darken-2{background-color:#303f9f !important}.indigo-text.text-darken-2{color:#303f9f !important}.indigo.darken-3{background-color:#283593 !important}.indigo-text.text-darken-3{color:#283593 !important}.indigo.darken-4{background-color:#1a237e !important}.indigo-text.text-darken-4{color:#1a237e !important}.indigo.accent-1{background-color:#8c9eff !important}.indigo-text.text-accent-1{color:#8c9eff !important}.indigo.accent-2{background-color:#536dfe !important}.indigo-text.text-accent-2{color:#536dfe !important}.indigo.accent-3{background-color:#3d5afe !important}.indigo-text.text-accent-3{color:#3d5afe !important}.indigo.accent-4{background-color:#304ffe !important}.indigo-text.text-accent-4{color:#304ffe !important}.blue{background-color:#2196F3 !important}.blue-text{color:#2196F3 !important}.blue.lighten-5{background-color:#E3F2FD !important}.blue-text.text-lighten-5{color:#E3F2FD !important}.blue.lighten-4{background-color:#BBDEFB !important}.blue-text.text-lighten-4{color:#BBDEFB !important}.blue.lighten-3{background-color:#90CAF9 !important}.blue-text.text-lighten-3{color:#90CAF9 !important}.blue.lighten-2{background-color:#64B5F6 !important}.blue-text.text-lighten-2{color:#64B5F6 !important}.blue.lighten-1{background-color:#42A5F5 !important}.blue-text.text-lighten-1{color:#42A5F5 !important}.blue.darken-1{background-color:#1E88E5 !important}.blue-text.text-darken-1{color:#1E88E5 !important}.blue.darken-2{background-color:#1976D2 !important}.blue-text.text-darken-2{color:#1976D2 !important}.blue.darken-3{background-color:#1565C0 !important}.blue-text.text-darken-3{color:#1565C0 !important}.blue.darken-4{background-color:#0D47A1 !important}.blue-text.text-darken-4{color:#0D47A1 !important}.blue.accent-1{background-color:#82B1FF !important}.blue-text.text-accent-1{color:#82B1FF !important}.blue.accent-2{background-color:#448AFF !important}.blue-text.text-accent-2{color:#448AFF !important}.blue.accent-3{background-color:#2979FF !important}.blue-text.text-accent-3{color:#2979FF !important}.blue.accent-4{background-color:#2962FF !important}.blue-text.text-accent-4{color:#2962FF !important}.light-blue{background-color:#03a9f4 !important}.light-blue-text{color:#03a9f4 !important}.light-blue.lighten-5{background-color:#e1f5fe !important}.light-blue-text.text-lighten-5{color:#e1f5fe !important}.light-blue.lighten-4{background-color:#b3e5fc !important}.light-blue-text.text-lighten-4{color:#b3e5fc !important}.light-blue.lighten-3{background-color:#81d4fa !important}.light-blue-text.text-lighten-3{color:#81d4fa !important}.light-blue.lighten-2{background-color:#4fc3f7 !important}.light-blue-text.text-lighten-2{color:#4fc3f7 !important}.light-blue.lighten-1{background-color:#29b6f6 !important}.light-blue-text.text-lighten-1{color:#29b6f6 !important}.light-blue.darken-1{background-color:#039be5 !important}.light-blue-text.text-darken-1{color:#039be5 !important}.light-blue.darken-2{background-color:#0288d1 !important}.light-blue-text.text-darken-2{color:#0288d1 !important}.light-blue.darken-3{background-color:#0277bd !important}.light-blue-text.text-darken-3{color:#0277bd !important}.light-blue.darken-4{background-color:#01579b !important}.light-blue-text.text-darken-4{color:#01579b !important}.light-blue.accent-1{background-color:#80d8ff !important}.light-blue-text.text-accent-1{color:#80d8ff !important}.light-blue.accent-2{background-color:#40c4ff !important}.light-blue-text.text-accent-2{color:#40c4ff !important}.light-blue.accent-3{background-color:#00b0ff !important}.light-blue-text.text-accent-3{color:#00b0ff !important}.light-blue.accent-4{background-color:#0091ea !important}.light-blue-text.text-accent-4{color:#0091ea !important}.cyan{background-color:#00bcd4 !important}.cyan-text{color:#00bcd4 !important}.cyan.lighten-5{background-color:#e0f7fa !important}.cyan-text.text-lighten-5{color:#e0f7fa !important}.cyan.lighten-4{background-color:#b2ebf2 !important}.cyan-text.text-lighten-4{color:#b2ebf2 !important}.cyan.lighten-3{background-color:#80deea !important}.cyan-text.text-lighten-3{color:#80deea !important}.cyan.lighten-2{background-color:#4dd0e1 !important}.cyan-text.text-lighten-2{color:#4dd0e1 !important}.cyan.lighten-1{background-color:#26c6da !important}.cyan-text.text-lighten-1{color:#26c6da !important}.cyan.darken-1{background-color:#00acc1 !important}.cyan-text.text-darken-1{color:#00acc1 !important}.cyan.darken-2{background-color:#0097a7 !important}.cyan-text.text-darken-2{color:#0097a7 !important}.cyan.darken-3{background-color:#00838f !important}.cyan-text.text-darken-3{color:#00838f !important}.cyan.darken-4{background-color:#006064 !important}.cyan-text.text-darken-4{color:#006064 !important}.cyan.accent-1{background-color:#84ffff !important}.cyan-text.text-accent-1{color:#84ffff !important}.cyan.accent-2{background-color:#18ffff !important}.cyan-text.text-accent-2{color:#18ffff !important}.cyan.accent-3{background-color:#00e5ff !important}.cyan-text.text-accent-3{color:#00e5ff !important}.cyan.accent-4{background-color:#00b8d4 !important}.cyan-text.text-accent-4{color:#00b8d4 !important}.teal{background-color:#009688 !important}.teal-text{color:#009688 !important}.teal.lighten-5{background-color:#e0f2f1 !important}.teal-text.text-lighten-5{color:#e0f2f1 !important}.teal.lighten-4{background-color:#b2dfdb !important}.teal-text.text-lighten-4{color:#b2dfdb !important}.teal.lighten-3{background-color:#80cbc4 !important}.teal-text.text-lighten-3{color:#80cbc4 !important}.teal.lighten-2{background-color:#4db6ac !important}.teal-text.text-lighten-2{color:#4db6ac !important}.teal.lighten-1{background-color:#26a69a !important}.teal-text.text-lighten-1{color:#26a69a !important}.teal.darken-1{background-color:#00897b !important}.teal-text.text-darken-1{color:#00897b !important}.teal.darken-2{background-color:#00796b !important}.teal-text.text-darken-2{color:#00796b !important}.teal.darken-3{background-color:#00695c !important}.teal-text.text-darken-3{color:#00695c !important}.teal.darken-4{background-color:#004d40 !important}.teal-text.text-darken-4{color:#004d40 !important}.teal.accent-1{background-color:#a7ffeb !important}.teal-text.text-accent-1{color:#a7ffeb !important}.teal.accent-2{background-color:#64ffda !important}.teal-text.text-accent-2{color:#64ffda !important}.teal.accent-3{background-color:#1de9b6 !important}.teal-text.text-accent-3{color:#1de9b6 !important}.teal.accent-4{background-color:#00bfa5 !important}.teal-text.text-accent-4{color:#00bfa5 !important}.green{background-color:#4CAF50 !important}.green-text{color:#4CAF50 !important}.green.lighten-5{background-color:#E8F5E9 !important}.green-text.text-lighten-5{color:#E8F5E9 !important}.green.lighten-4{background-color:#C8E6C9 !important}.green-text.text-lighten-4{color:#C8E6C9 !important}.green.lighten-3{background-color:#A5D6A7 !important}.green-text.text-lighten-3{color:#A5D6A7 !important}.green.lighten-2{background-color:#81C784 !important}.green-text.text-lighten-2{color:#81C784 !important}.green.lighten-1{background-color:#66BB6A !important}.green-text.text-lighten-1{color:#66BB6A !important}.green.darken-1{background-color:#43A047 !important}.green-text.text-darken-1{color:#43A047 !important}.green.darken-2{background-color:#388E3C !important}.green-text.text-darken-2{color:#388E3C !important}.green.darken-3{background-color:#2E7D32 !important}.green-text.text-darken-3{color:#2E7D32 !important}.green.darken-4{background-color:#1B5E20 !important}.green-text.text-darken-4{color:#1B5E20 !important}.green.accent-1{background-color:#B9F6CA !important}.green-text.text-accent-1{color:#B9F6CA !important}.green.accent-2{background-color:#69F0AE !important}.green-text.text-accent-2{color:#69F0AE !important}.green.accent-3{background-color:#00E676 !important}.green-text.text-accent-3{color:#00E676 !important}.green.accent-4{background-color:#00C853 !important}.green-text.text-accent-4{color:#00C853 !important}.light-green{background-color:#8bc34a !important}.light-green-text{color:#8bc34a !important}.light-green.lighten-5{background-color:#f1f8e9 !important}.light-green-text.text-lighten-5{color:#f1f8e9 !important}.light-green.lighten-4{background-color:#dcedc8 !important}.light-green-text.text-lighten-4{color:#dcedc8 !important}.light-green.lighten-3{background-color:#c5e1a5 !important}.light-green-text.text-lighten-3{color:#c5e1a5 !important}.light-green.lighten-2{background-color:#aed581 !important}.light-green-text.text-lighten-2{color:#aed581 !important}.light-green.lighten-1{background-color:#9ccc65 !important}.light-green-text.text-lighten-1{color:#9ccc65 !important}.light-green.darken-1{background-color:#7cb342 !important}.light-green-text.text-darken-1{color:#7cb342 !important}.light-green.darken-2{background-color:#689f38 !important}.light-green-text.text-darken-2{color:#689f38 !important}.light-green.darken-3{background-color:#558b2f !important}.light-green-text.text-darken-3{color:#558b2f !important}.light-green.darken-4{background-color:#33691e !important}.light-green-text.text-darken-4{color:#33691e !important}.light-green.accent-1{background-color:#ccff90 !important}.light-green-text.text-accent-1{color:#ccff90 !important}.light-green.accent-2{background-color:#b2ff59 !important}.light-green-text.text-accent-2{color:#b2ff59 !important}.light-green.accent-3{background-color:#76ff03 !important}.light-green-text.text-accent-3{color:#76ff03 !important}.light-green.accent-4{background-color:#64dd17 !important}.light-green-text.text-accent-4{color:#64dd17 !important}.lime{background-color:#cddc39 !important}.lime-text{color:#cddc39 !important}.lime.lighten-5{background-color:#f9fbe7 !important}.lime-text.text-lighten-5{color:#f9fbe7 !important}.lime.lighten-4{background-color:#f0f4c3 !important}.lime-text.text-lighten-4{color:#f0f4c3 !important}.lime.lighten-3{background-color:#e6ee9c !important}.lime-text.text-lighten-3{color:#e6ee9c !important}.lime.lighten-2{background-color:#dce775 !important}.lime-text.text-lighten-2{color:#dce775 !important}.lime.lighten-1{background-color:#d4e157 !important}.lime-text.text-lighten-1{color:#d4e157 !important}.lime.darken-1{background-color:#c0ca33 !important}.lime-text.text-darken-1{color:#c0ca33 !important}.lime.darken-2{background-color:#afb42b !important}.lime-text.text-darken-2{color:#afb42b !important}.lime.darken-3{background-color:#9e9d24 !important}.lime-text.text-darken-3{color:#9e9d24 !important}.lime.darken-4{background-color:#827717 !important}.lime-text.text-darken-4{color:#827717 !important}.lime.accent-1{background-color:#f4ff81 !important}.lime-text.text-accent-1{color:#f4ff81 !important}.lime.accent-2{background-color:#eeff41 !important}.lime-text.text-accent-2{color:#eeff41 !important}.lime.accent-3{background-color:#c6ff00 !important}.lime-text.text-accent-3{color:#c6ff00 !important}.lime.accent-4{background-color:#aeea00 !important}.lime-text.text-accent-4{color:#aeea00 !important}.yellow{background-color:#ffeb3b !important}.yellow-text{color:#ffeb3b !important}.yellow.lighten-5{background-color:#fffde7 !important}.yellow-text.text-lighten-5{color:#fffde7 !important}.yellow.lighten-4{background-color:#fff9c4 !important}.yellow-text.text-lighten-4{color:#fff9c4 !important}.yellow.lighten-3{background-color:#fff59d !important}.yellow-text.text-lighten-3{color:#fff59d !important}.yellow.lighten-2{background-color:#fff176 !important}.yellow-text.text-lighten-2{color:#fff176 !important}.yellow.lighten-1{background-color:#ffee58 !important}.yellow-text.text-lighten-1{color:#ffee58 !important}.yellow.darken-1{background-color:#fdd835 !important}.yellow-text.text-darken-1{color:#fdd835 !important}.yellow.darken-2{background-color:#fbc02d !important}.yellow-text.text-darken-2{color:#fbc02d !important}.yellow.darken-3{background-color:#f9a825 !important}.yellow-text.text-darken-3{color:#f9a825 !important}.yellow.darken-4{background-color:#f57f17 !important}.yellow-text.text-darken-4{color:#f57f17 !important}.yellow.accent-1{background-color:#ffff8d !important}.yellow-text.text-accent-1{color:#ffff8d !important}.yellow.accent-2{background-color:#ff0 !important}.yellow-text.text-accent-2{color:#ff0 !important}.yellow.accent-3{background-color:#ffea00 !important}.yellow-text.text-accent-3{color:#ffea00 !important}.yellow.accent-4{background-color:#ffd600 !important}.yellow-text.text-accent-4{color:#ffd600 !important}.amber{background-color:#ffc107 !important}.amber-text{color:#ffc107 !important}.amber.lighten-5{background-color:#fff8e1 !important}.amber-text.text-lighten-5{color:#fff8e1 !important}.amber.lighten-4{background-color:#ffecb3 !important}.amber-text.text-lighten-4{color:#ffecb3 !important}.amber.lighten-3{background-color:#ffe082 !important}.amber-text.text-lighten-3{color:#ffe082 !important}.amber.lighten-2{background-color:#ffd54f !important}.amber-text.text-lighten-2{color:#ffd54f !important}.amber.lighten-1{background-color:#ffca28 !important}.amber-text.text-lighten-1{color:#ffca28 !important}.amber.darken-1{background-color:#ffb300 !important}.amber-text.text-darken-1{color:#ffb300 !important}.amber.darken-2{background-color:#ffa000 !important}.amber-text.text-darken-2{color:#ffa000 !important}.amber.darken-3{background-color:#ff8f00 !important}.amber-text.text-darken-3{color:#ff8f00 !important}.amber.darken-4{background-color:#ff6f00 !important}.amber-text.text-darken-4{color:#ff6f00 !important}.amber.accent-1{background-color:#ffe57f !important}.amber-text.text-accent-1{color:#ffe57f !important}.amber.accent-2{background-color:#ffd740 !important}.amber-text.text-accent-2{color:#ffd740 !important}.amber.accent-3{background-color:#ffc400 !important}.amber-text.text-accent-3{color:#ffc400 !important}.amber.accent-4{background-color:#ffab00 !important}.amber-text.text-accent-4{color:#ffab00 !important}.orange{background-color:#ff9800 !important}.orange-text{color:#ff9800 !important}.orange.lighten-5{background-color:#fff3e0 !important}.orange-text.text-lighten-5{color:#fff3e0 !important}.orange.lighten-4{background-color:#ffe0b2 !important}.orange-text.text-lighten-4{color:#ffe0b2 !important}.orange.lighten-3{background-color:#ffcc80 !important}.orange-text.text-lighten-3{color:#ffcc80 !important}.orange.lighten-2{background-color:#ffb74d !important}.orange-text.text-lighten-2{color:#ffb74d !important}.orange.lighten-1{background-color:#ffa726 !important}.orange-text.text-lighten-1{color:#ffa726 !important}.orange.darken-1{background-color:#fb8c00 !important}.orange-text.text-darken-1{color:#fb8c00 !important}.orange.darken-2{background-color:#f57c00 !important}.orange-text.text-darken-2{color:#f57c00 !important}.orange.darken-3{background-color:#ef6c00 !important}.orange-text.text-darken-3{color:#ef6c00 !important}.orange.darken-4{background-color:#e65100 !important}.orange-text.text-darken-4{color:#e65100 !important}.orange.accent-1{background-color:#ffd180 !important}.orange-text.text-accent-1{color:#ffd180 !important}.orange.accent-2{background-color:#ffab40 !important}.orange-text.text-accent-2{color:#ffab40 !important}.orange.accent-3{background-color:#ff9100 !important}.orange-text.text-accent-3{color:#ff9100 !important}.orange.accent-4{background-color:#ff6d00 !important}.orange-text.text-accent-4{color:#ff6d00 !important}.deep-orange{background-color:#ff5722 !important}.deep-orange-text{color:#ff5722 !important}.deep-orange.lighten-5{background-color:#fbe9e7 !important}.deep-orange-text.text-lighten-5{color:#fbe9e7 !important}.deep-orange.lighten-4{background-color:#ffccbc !important}.deep-orange-text.text-lighten-4{color:#ffccbc !important}.deep-orange.lighten-3{background-color:#ffab91 !important}.deep-orange-text.text-lighten-3{color:#ffab91 !important}.deep-orange.lighten-2{background-color:#ff8a65 !important}.deep-orange-text.text-lighten-2{color:#ff8a65 !important}.deep-orange.lighten-1{background-color:#ff7043 !important}.deep-orange-text.text-lighten-1{color:#ff7043 !important}.deep-orange.darken-1{background-color:#f4511e !important}.deep-orange-text.text-darken-1{color:#f4511e !important}.deep-orange.darken-2{background-color:#e64a19 !important}.deep-orange-text.text-darken-2{color:#e64a19 !important}.deep-orange.darken-3{background-color:#d84315 !important}.deep-orange-text.text-darken-3{color:#d84315 !important}.deep-orange.darken-4{background-color:#bf360c !important}.deep-orange-text.text-darken-4{color:#bf360c !important}.deep-orange.accent-1{background-color:#ff9e80 !important}.deep-orange-text.text-accent-1{color:#ff9e80 !important}.deep-orange.accent-2{background-color:#ff6e40 !important}.deep-orange-text.text-accent-2{color:#ff6e40 !important}.deep-orange.accent-3{background-color:#ff3d00 !important}.deep-orange-text.text-accent-3{color:#ff3d00 !important}.deep-orange.accent-4{background-color:#dd2c00 !important}.deep-orange-text.text-accent-4{color:#dd2c00 !important}.brown{background-color:#795548 !important}.brown-text{color:#795548 !important}.brown.lighten-5{background-color:#efebe9 !important}.brown-text.text-lighten-5{color:#efebe9 !important}.brown.lighten-4{background-color:#d7ccc8 !important}.brown-text.text-lighten-4{color:#d7ccc8 !important}.brown.lighten-3{background-color:#bcaaa4 !important}.brown-text.text-lighten-3{color:#bcaaa4 !important}.brown.lighten-2{background-color:#a1887f !important}.brown-text.text-lighten-2{color:#a1887f !important}.brown.lighten-1{background-color:#8d6e63 !important}.brown-text.text-lighten-1{color:#8d6e63 !important}.brown.darken-1{background-color:#6d4c41 !important}.brown-text.text-darken-1{color:#6d4c41 !important}.brown.darken-2{background-color:#5d4037 !important}.brown-text.text-darken-2{color:#5d4037 !important}.brown.darken-3{background-color:#4e342e !important}.brown-text.text-darken-3{color:#4e342e !important}.brown.darken-4{background-color:#3e2723 !important}.brown-text.text-darken-4{color:#3e2723 !important}.blue-grey{background-color:#607d8b !important}.blue-grey-text{color:#607d8b !important}.blue-grey.lighten-5{background-color:#eceff1 !important}.blue-grey-text.text-lighten-5{color:#eceff1 !important}.blue-grey.lighten-4{background-color:#cfd8dc !important}.blue-grey-text.text-lighten-4{color:#cfd8dc !important}.blue-grey.lighten-3{background-color:#b0bec5 !important}.blue-grey-text.text-lighten-3{color:#b0bec5 !important}.blue-grey.lighten-2{background-color:#90a4ae !important}.blue-grey-text.text-lighten-2{color:#90a4ae !important}.blue-grey.lighten-1{background-color:#78909c !important}.blue-grey-text.text-lighten-1{color:#78909c !important}.blue-grey.darken-1{background-color:#546e7a !important}.blue-grey-text.text-darken-1{color:#546e7a !important}.blue-grey.darken-2{background-color:#455a64 !important}.blue-grey-text.text-darken-2{color:#455a64 !important}.blue-grey.darken-3{background-color:#37474f !important}.blue-grey-text.text-darken-3{color:#37474f !important}.blue-grey.darken-4{background-color:#263238 !important}.blue-grey-text.text-darken-4{color:#263238 !important}.grey{background-color:#9e9e9e !important}.grey-text{color:#9e9e9e !important}.grey.lighten-5{background-color:#fafafa !important}.grey-text.text-lighten-5{color:#fafafa !important}.grey.lighten-4{background-color:#f5f5f5 !important}.grey-text.text-lighten-4{color:#f5f5f5 !important}.grey.lighten-3{background-color:#eee !important}.grey-text.text-lighten-3{color:#eee !important}.grey.lighten-2{background-color:#e0e0e0 !important}.grey-text.text-lighten-2{color:#e0e0e0 !important}.grey.lighten-1{background-color:#bdbdbd !important}.grey-text.text-lighten-1{color:#bdbdbd !important}.grey.darken-1{background-color:#757575 !important}.grey-text.text-darken-1{color:#757575 !important}.grey.darken-2{background-color:#616161 !important}.grey-text.text-darken-2{color:#616161 !important}.grey.darken-3{background-color:#424242 !important}.grey-text.text-darken-3{color:#424242 !important}.grey.darken-4{background-color:#212121 !important}.grey-text.text-darken-4{color:#212121 !important}.black{background-color:#000 !important}.black-text{color:#000 !important}.white{background-color:#fff !important}.white-text{color:#fff !important}.transparent{background-color:transparent !important}.transparent-text{color:transparent !important}/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}ul:not(.browser-default){padding-left:0;list-style-type:none}ul:not(.browser-default) li{list-style-type:none}a{color:#039be5;text-decoration:none;-webkit-tap-highlight-color:transparent}.valign-wrapper{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.valign-wrapper .valign{display:block}.clearfix{clear:both}.z-depth-0{box-shadow:none !important}.z-depth-1,nav,.card-panel,.card,.toast,.btn,.btn-large,.btn-floating,.dropdown-content,.collapsible,.side-nav{box-shadow:0 2px 2px 0 rgba(0,0,0,0.14),0 1px 5px 0 rgba(0,0,0,0.12),0 3px 1px -2px rgba(0,0,0,0.2)}.z-depth-1-half,.btn:hover,.btn-large:hover,.btn-floating:hover{box-shadow:0 3px 3px 0 rgba(0,0,0,0.14),0 1px 7px 0 rgba(0,0,0,0.12),0 3px 1px -1px rgba(0,0,0,0.2)}.z-depth-2{box-shadow:0 4px 5px 0 rgba(0,0,0,0.14),0 1px 10px 0 rgba(0,0,0,0.12),0 2px 4px -1px rgba(0,0,0,0.3)}.z-depth-3{box-shadow:0 6px 10px 0 rgba(0,0,0,0.14),0 1px 18px 0 rgba(0,0,0,0.12),0 3px 5px -1px rgba(0,0,0,0.3)}.z-depth-4,.modal{box-shadow:0 8px 10px 1px rgba(0,0,0,0.14),0 3px 14px 2px rgba(0,0,0,0.12),0 5px 5px -3px rgba(0,0,0,0.3)}.z-depth-5{box-shadow:0 16px 24px 2px rgba(0,0,0,0.14),0 6px 30px 5px rgba(0,0,0,0.12),0 8px 10px -5px rgba(0,0,0,0.3)}.hoverable{transition:box-shadow .25s;box-shadow:0}.hoverable:hover{transition:box-shadow .25s;box-shadow:0 8px 17px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}.divider{height:1px;overflow:hidden;background-color:#e0e0e0}blockquote{margin:20px 0;padding-left:1.5rem;border-left:5px solid #ee6e73}i{line-height:inherit}i.left{float:left;margin-right:15px}i.right{float:right;margin-left:15px}i.tiny{font-size:1rem}i.small{font-size:2rem}i.medium{font-size:4rem}i.large{font-size:6rem}img.responsive-img,video.responsive-video{max-width:100%;height:auto}.pagination li{display:inline-block;border-radius:2px;text-align:center;vertical-align:top;height:30px}.pagination li a{color:#444;display:inline-block;font-size:1.2rem;padding:0 10px;line-height:30px}.pagination li.active a{color:#fff}.pagination li.active{background-color:#ee6e73}.pagination li.disabled a{cursor:default;color:#999}.pagination li i{font-size:2rem}.pagination li.pages ul li{display:inline-block;float:none}@media only screen and (max-width: 992px){.pagination{width:100%}.pagination li.prev,.pagination li.next{width:10%}.pagination li.pages{width:80%;overflow:hidden;white-space:nowrap}}.breadcrumb{font-size:18px;color:rgba(255,255,255,0.7)}.breadcrumb i,.breadcrumb [class^="mdi-"],.breadcrumb [class*="mdi-"],.breadcrumb i.material-icons{display:inline-block;float:left;font-size:24px}.breadcrumb:before{content:'\E5CC';color:rgba(255,255,255,0.7);vertical-align:top;display:inline-block;font-family:'Material Icons';font-weight:normal;font-style:normal;font-size:25px;margin:0 10px 0 8px;-webkit-font-smoothing:antialiased}.breadcrumb:first-child:before{display:none}.breadcrumb:last-child{color:#fff}.parallax-container{position:relative;overflow:hidden;height:500px}.parallax{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1}.parallax img{display:none;position:absolute;left:50%;bottom:0;min-width:100%;min-height:100%;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);-webkit-transform:translateX(-50%);transform:translateX(-50%)}.pin-top,.pin-bottom{position:relative}.pinned{position:fixed !important}ul.staggered-list li{opacity:0}.fade-in{opacity:0;-webkit-transform-origin:0 50%;transform-origin:0 50%}@media only screen and (max-width: 600px){.hide-on-small-only,.hide-on-small-and-down{display:none !important}}@media only screen and (max-width: 992px){.hide-on-med-and-down{display:none !important}}@media only screen and (min-width: 601px){.hide-on-med-and-up{display:none !important}}@media only screen and (min-width: 600px) and (max-width: 992px){.hide-on-med-only{display:none !important}}@media only screen and (min-width: 993px){.hide-on-large-only{display:none !important}}@media only screen and (min-width: 993px){.show-on-large{display:block !important}}@media only screen and (min-width: 600px) and (max-width: 992px){.show-on-medium{display:block !important}}@media only screen and (max-width: 600px){.show-on-small{display:block !important}}@media only screen and (min-width: 601px){.show-on-medium-and-up{display:block !important}}@media only screen and (max-width: 992px){.show-on-medium-and-down{display:block !important}}@media only screen and (max-width: 600px){.center-on-small-only{text-align:center}}footer.page-footer{padding-top:20px;background-color:#ee6e73}footer.page-footer .footer-copyright{overflow:hidden;min-height:50px;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;padding:10px 0px;color:rgba(255,255,255,0.8);background-color:rgba(51,51,51,0.08)}table,th,td{border:none}table{width:100%;display:table}table.bordered>thead>tr,table.bordered>tbody>tr{border-bottom:1px solid #d0d0d0}table.striped>tbody>tr:nth-child(odd){background-color:#f2f2f2}table.striped>tbody>tr>td{border-radius:0}table.highlight>tbody>tr{transition:background-color .25s ease}table.highlight>tbody>tr:hover{background-color:#f2f2f2}table.centered thead tr th,table.centered tbody tr td{text-align:center}thead{border-bottom:1px solid #d0d0d0}td,th{padding:15px 5px;display:table-cell;text-align:left;vertical-align:middle;border-radius:2px}@media only screen and (max-width: 992px){table.responsive-table{width:100%;border-collapse:collapse;border-spacing:0;display:block;position:relative}table.responsive-table td:empty:before{content:'\00a0'}table.responsive-table th,table.responsive-table td{margin:0;vertical-align:top}table.responsive-table th{text-align:left}table.responsive-table thead{display:block;float:left}table.responsive-table thead tr{display:block;padding:0 10px 0 0}table.responsive-table thead tr th::before{content:"\00a0"}table.responsive-table tbody{display:block;width:auto;position:relative;overflow-x:auto;white-space:nowrap}table.responsive-table tbody tr{display:inline-block;vertical-align:top}table.responsive-table th{display:block;text-align:right}table.responsive-table td{display:block;min-height:1.25em;text-align:left}table.responsive-table tr{padding:0 10px}table.responsive-table thead{border:0;border-right:1px solid #d0d0d0}table.responsive-table.bordered th{border-bottom:0;border-left:0}table.responsive-table.bordered td{border-left:0;border-right:0;border-bottom:0}table.responsive-table.bordered tr{border:0}table.responsive-table.bordered tbody tr{border-right:1px solid #d0d0d0}}.collection{margin:.5rem 0 1rem 0;border:1px solid #e0e0e0;border-radius:2px;overflow:hidden;position:relative}.collection .collection-item{background-color:#fff;line-height:1.5rem;padding:10px 20px;margin:0;border-bottom:1px solid #e0e0e0}.collection .collection-item.avatar{min-height:84px;padding-left:72px;position:relative}.collection .collection-item.avatar .circle{position:absolute;width:42px;height:42px;overflow:hidden;left:15px;display:inline-block;vertical-align:middle}.collection .collection-item.avatar i.circle{font-size:18px;line-height:42px;color:#fff;background-color:#999;text-align:center}.collection .collection-item.avatar .title{font-size:16px}.collection .collection-item.avatar p{margin:0}.collection .collection-item.avatar .secondary-content{position:absolute;top:16px;right:16px}.collection .collection-item:last-child{border-bottom:none}.collection .collection-item.active{background-color:#26a69a;color:#eafaf9}.collection .collection-item.active .secondary-content{color:#fff}.collection a.collection-item{display:block;transition:.25s;color:#26a69a}.collection a.collection-item:not(.active):hover{background-color:#ddd}.collection.with-header .collection-header{background-color:#fff;border-bottom:1px solid #e0e0e0;padding:10px 20px}.collection.with-header .collection-item{padding-left:30px}.collection.with-header .collection-item.avatar{padding-left:72px}.secondary-content{float:right;color:#26a69a}.collapsible .collection{margin:0;border:none}.video-container{position:relative;padding-bottom:56.25%;height:0;overflow:hidden}.video-container iframe,.video-container object,.video-container embed{position:absolute;top:0;left:0;width:100%;height:100%}.progress{position:relative;height:4px;display:block;width:100%;background-color:#acece6;border-radius:2px;margin:.5rem 0 1rem 0;overflow:hidden}.progress .determinate{position:absolute;top:0;left:0;bottom:0;background-color:#26a69a;transition:width .3s linear}.progress .indeterminate{background-color:#26a69a}.progress .indeterminate:before{content:'';position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left, right;-webkit-animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite}.progress .indeterminate:after{content:'';position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left, right;-webkit-animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;-webkit-animation-delay:1.15s;animation-delay:1.15s}@-webkit-keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}100%{left:100%;right:-90%}}@keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}100%{left:100%;right:-90%}}@-webkit-keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}100%{left:107%;right:-8%}}@keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}100%{left:107%;right:-8%}}.hide{display:none !important}.left-align{text-align:left}.right-align{text-align:right}.center,.center-align{text-align:center}.left{float:left !important}.right{float:right !important}.no-select,input[type=range],input[type=range]+.thumb{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.circle{border-radius:50%}.center-block{display:block;margin-left:auto;margin-right:auto}.truncate{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.no-padding{padding:0 !important}span.badge{min-width:3rem;padding:0 6px;margin-left:14px;text-align:center;font-size:1rem;line-height:22px;height:22px;color:#757575;float:right;box-sizing:border-box}span.badge.new{font-weight:300;font-size:0.8rem;color:#fff;background-color:#26a69a;border-radius:2px}span.badge.new:after{content:" new"}span.badge[data-badge-caption]::after{content:" " attr(data-badge-caption)}nav ul a span.badge{display:inline-block;float:none;margin-left:4px;line-height:22px;height:22px}.collection-item span.badge{margin-top:calc(.75rem - 11px)}.collapsible span.badge{margin-top:calc(1.5rem - 11px)}.side-nav span.badge{margin-top:calc(24px - 11px)}.material-icons{text-rendering:optimizeLegibility;-webkit-font-feature-settings:'liga';-moz-font-feature-settings:'liga';font-feature-settings:'liga'}.container{margin:0 auto;max-width:1280px;width:90%}@media only screen and (min-width: 601px){.container{width:85%}}@media only screen and (min-width: 993px){.container{width:70%}}.container .row{margin-left:-.75rem;margin-right:-.75rem}.section{padding-top:1rem;padding-bottom:1rem}.section.no-pad{padding:0}.section.no-pad-bot{padding-bottom:0}.section.no-pad-top{padding-top:0}.row{margin-left:auto;margin-right:auto;margin-bottom:20px}.row:after{content:"";display:table;clear:both}.row .col{float:left;box-sizing:border-box;padding:0 .75rem;min-height:1px}.row .col[class*="push-"],.row .col[class*="pull-"]{position:relative}.row .col.s1{width:8.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s2{width:16.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s3{width:25%;margin-left:auto;left:auto;right:auto}.row .col.s4{width:33.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s5{width:41.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s6{width:50%;margin-left:auto;left:auto;right:auto}.row .col.s7{width:58.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s8{width:66.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s9{width:75%;margin-left:auto;left:auto;right:auto}.row .col.s10{width:83.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s11{width:91.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s12{width:100%;margin-left:auto;left:auto;right:auto}.row .col.offset-s1{margin-left:8.3333333333%}.row .col.pull-s1{right:8.3333333333%}.row .col.push-s1{left:8.3333333333%}.row .col.offset-s2{margin-left:16.6666666667%}.row .col.pull-s2{right:16.6666666667%}.row .col.push-s2{left:16.6666666667%}.row .col.offset-s3{margin-left:25%}.row .col.pull-s3{right:25%}.row .col.push-s3{left:25%}.row .col.offset-s4{margin-left:33.3333333333%}.row .col.pull-s4{right:33.3333333333%}.row .col.push-s4{left:33.3333333333%}.row .col.offset-s5{margin-left:41.6666666667%}.row .col.pull-s5{right:41.6666666667%}.row .col.push-s5{left:41.6666666667%}.row .col.offset-s6{margin-left:50%}.row .col.pull-s6{right:50%}.row .col.push-s6{left:50%}.row .col.offset-s7{margin-left:58.3333333333%}.row .col.pull-s7{right:58.3333333333%}.row .col.push-s7{left:58.3333333333%}.row .col.offset-s8{margin-left:66.6666666667%}.row .col.pull-s8{right:66.6666666667%}.row .col.push-s8{left:66.6666666667%}.row .col.offset-s9{margin-left:75%}.row .col.pull-s9{right:75%}.row .col.push-s9{left:75%}.row .col.offset-s10{margin-left:83.3333333333%}.row .col.pull-s10{right:83.3333333333%}.row .col.push-s10{left:83.3333333333%}.row .col.offset-s11{margin-left:91.6666666667%}.row .col.pull-s11{right:91.6666666667%}.row .col.push-s11{left:91.6666666667%}.row .col.offset-s12{margin-left:100%}.row .col.pull-s12{right:100%}.row .col.push-s12{left:100%}@media only screen and (min-width: 601px){.row .col.m1{width:8.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m2{width:16.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m3{width:25%;margin-left:auto;left:auto;right:auto}.row .col.m4{width:33.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m5{width:41.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m6{width:50%;margin-left:auto;left:auto;right:auto}.row .col.m7{width:58.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m8{width:66.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m9{width:75%;margin-left:auto;left:auto;right:auto}.row .col.m10{width:83.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m11{width:91.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m12{width:100%;margin-left:auto;left:auto;right:auto}.row .col.offset-m1{margin-left:8.3333333333%}.row .col.pull-m1{right:8.3333333333%}.row .col.push-m1{left:8.3333333333%}.row .col.offset-m2{margin-left:16.6666666667%}.row .col.pull-m2{right:16.6666666667%}.row .col.push-m2{left:16.6666666667%}.row .col.offset-m3{margin-left:25%}.row .col.pull-m3{right:25%}.row .col.push-m3{left:25%}.row .col.offset-m4{margin-left:33.3333333333%}.row .col.pull-m4{right:33.3333333333%}.row .col.push-m4{left:33.3333333333%}.row .col.offset-m5{margin-left:41.6666666667%}.row .col.pull-m5{right:41.6666666667%}.row .col.push-m5{left:41.6666666667%}.row .col.offset-m6{margin-left:50%}.row .col.pull-m6{right:50%}.row .col.push-m6{left:50%}.row .col.offset-m7{margin-left:58.3333333333%}.row .col.pull-m7{right:58.3333333333%}.row .col.push-m7{left:58.3333333333%}.row .col.offset-m8{margin-left:66.6666666667%}.row .col.pull-m8{right:66.6666666667%}.row .col.push-m8{left:66.6666666667%}.row .col.offset-m9{margin-left:75%}.row .col.pull-m9{right:75%}.row .col.push-m9{left:75%}.row .col.offset-m10{margin-left:83.3333333333%}.row .col.pull-m10{right:83.3333333333%}.row .col.push-m10{left:83.3333333333%}.row .col.offset-m11{margin-left:91.6666666667%}.row .col.pull-m11{right:91.6666666667%}.row .col.push-m11{left:91.6666666667%}.row .col.offset-m12{margin-left:100%}.row .col.pull-m12{right:100%}.row .col.push-m12{left:100%}}@media only screen and (min-width: 993px){.row .col.l1{width:8.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l2{width:16.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l3{width:25%;margin-left:auto;left:auto;right:auto}.row .col.l4{width:33.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l5{width:41.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l6{width:50%;margin-left:auto;left:auto;right:auto}.row .col.l7{width:58.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l8{width:66.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l9{width:75%;margin-left:auto;left:auto;right:auto}.row .col.l10{width:83.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l11{width:91.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l12{width:100%;margin-left:auto;left:auto;right:auto}.row .col.offset-l1{margin-left:8.3333333333%}.row .col.pull-l1{right:8.3333333333%}.row .col.push-l1{left:8.3333333333%}.row .col.offset-l2{margin-left:16.6666666667%}.row .col.pull-l2{right:16.6666666667%}.row .col.push-l2{left:16.6666666667%}.row .col.offset-l3{margin-left:25%}.row .col.pull-l3{right:25%}.row .col.push-l3{left:25%}.row .col.offset-l4{margin-left:33.3333333333%}.row .col.pull-l4{right:33.3333333333%}.row .col.push-l4{left:33.3333333333%}.row .col.offset-l5{margin-left:41.6666666667%}.row .col.pull-l5{right:41.6666666667%}.row .col.push-l5{left:41.6666666667%}.row .col.offset-l6{margin-left:50%}.row .col.pull-l6{right:50%}.row .col.push-l6{left:50%}.row .col.offset-l7{margin-left:58.3333333333%}.row .col.pull-l7{right:58.3333333333%}.row .col.push-l7{left:58.3333333333%}.row .col.offset-l8{margin-left:66.6666666667%}.row .col.pull-l8{right:66.6666666667%}.row .col.push-l8{left:66.6666666667%}.row .col.offset-l9{margin-left:75%}.row .col.pull-l9{right:75%}.row .col.push-l9{left:75%}.row .col.offset-l10{margin-left:83.3333333333%}.row .col.pull-l10{right:83.3333333333%}.row .col.push-l10{left:83.3333333333%}.row .col.offset-l11{margin-left:91.6666666667%}.row .col.pull-l11{right:91.6666666667%}.row .col.push-l11{left:91.6666666667%}.row .col.offset-l12{margin-left:100%}.row .col.pull-l12{right:100%}.row .col.push-l12{left:100%}}nav{color:#fff;background-color:#ee6e73;width:100%;height:56px;line-height:56px}nav.nav-extended{height:auto}nav.nav-extended .nav-wrapper{min-height:56px;height:auto}nav.nav-extended .nav-content{position:relative;line-height:normal}nav a{color:#fff}nav i,nav [class^="mdi-"],nav [class*="mdi-"],nav i.material-icons{display:block;font-size:24px;height:56px;line-height:56px}nav .nav-wrapper{position:relative;height:100%}@media only screen and (min-width: 993px){nav a.button-collapse{display:none}}nav .button-collapse{float:left;position:relative;z-index:1;height:56px;margin:0 18px}nav .button-collapse i{height:56px;line-height:56px}nav .brand-logo{position:absolute;color:#fff;display:inline-block;font-size:2.1rem;padding:0;white-space:nowrap}nav .brand-logo.center{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}@media only screen and (max-width: 992px){nav .brand-logo{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}nav .brand-logo.left,nav .brand-logo.right{padding:0;-webkit-transform:none;transform:none}nav .brand-logo.left{left:0.5rem}nav .brand-logo.right{right:0.5rem;left:auto}}nav .brand-logo.right{right:0.5rem;padding:0}nav .brand-logo i,nav .brand-logo [class^="mdi-"],nav .brand-logo [class*="mdi-"],nav .brand-logo i.material-icons{float:left;margin-right:15px}nav .nav-title{display:inline-block;font-size:32px;padding:28px 0}nav ul{margin:0}nav ul li{transition:background-color .3s;float:left;padding:0}nav ul li.active{background-color:rgba(0,0,0,0.1)}nav ul a{transition:background-color .3s;font-size:1rem;color:#fff;display:block;padding:0 15px;cursor:pointer}nav ul a.btn,nav ul a.btn-large,nav ul a.btn-large,nav ul a.btn-flat,nav ul a.btn-floating{margin-top:-2px;margin-left:15px;margin-right:15px}nav ul a.btn>.material-icons,nav ul a.btn-large>.material-icons,nav ul a.btn-large>.material-icons,nav ul a.btn-flat>.material-icons,nav ul a.btn-floating>.material-icons{height:inherit;line-height:inherit}nav ul a:hover{background-color:rgba(0,0,0,0.1)}nav ul.left{float:left}nav form{height:100%}nav .input-field{margin:0;height:100%}nav .input-field input{height:100%;font-size:1.2rem;border:none;padding-left:2rem}nav .input-field input:focus,nav .input-field input[type=text]:valid,nav .input-field input[type=password]:valid,nav .input-field input[type=email]:valid,nav .input-field input[type=url]:valid,nav .input-field input[type=date]:valid{border:none;box-shadow:none}nav .input-field label{top:0;left:0}nav .input-field label i{color:rgba(255,255,255,0.7);transition:color .3s}nav .input-field label.active i{color:#fff}.navbar-fixed{position:relative;height:56px;z-index:997}.navbar-fixed nav{position:fixed}@media only screen and (min-width: 601px){nav.nav-extended .nav-wrapper{min-height:64px}nav,nav .nav-wrapper i,nav a.button-collapse,nav a.button-collapse i{height:64px;line-height:64px}.navbar-fixed{height:64px}}@font-face{font-family:"Roboto";src:local(Roboto Thin),url("../fonts/roboto/Roboto-Thin.eot");src:url("../fonts/roboto/Roboto-Thin.eot?#iefix") format("embedded-opentype"),url("../fonts/roboto/Roboto-Thin.woff2") format("woff2"),url("../fonts/roboto/Roboto-Thin.woff") format("woff"),url("../fonts/roboto/Roboto-Thin.ttf") format("truetype");font-weight:200}@font-face{font-family:"Roboto";src:local(Roboto Light),url("../fonts/roboto/Roboto-Light.eot");src:url("../fonts/roboto/Roboto-Light.eot?#iefix") format("embedded-opentype"),url("../fonts/roboto/Roboto-Light.woff2") format("woff2"),url("../fonts/roboto/Roboto-Light.woff") format("woff"),url("../fonts/roboto/Roboto-Light.ttf") format("truetype");font-weight:300}@font-face{font-family:"Roboto";src:local(Roboto Regular),url("../fonts/roboto/Roboto-Regular.eot");src:url("../fonts/roboto/Roboto-Regular.eot?#iefix") format("embedded-opentype"),url("../fonts/roboto/Roboto-Regular.woff2") format("woff2"),url("../fonts/roboto/Roboto-Regular.woff") format("woff"),url("../fonts/roboto/Roboto-Regular.ttf") format("truetype");font-weight:400}@font-face{font-family:"Roboto";src:url("../fonts/roboto/Roboto-Medium.eot");src:url("../fonts/roboto/Roboto-Medium.eot?#iefix") format("embedded-opentype"),url("../fonts/roboto/Roboto-Medium.woff2") format("woff2"),url("../fonts/roboto/Roboto-Medium.woff") format("woff"),url("../fonts/roboto/Roboto-Medium.ttf") format("truetype");font-weight:500}@font-face{font-family:"Roboto";src:url("../fonts/roboto/Roboto-Bold.eot");src:url("../fonts/roboto/Roboto-Bold.eot?#iefix") format("embedded-opentype"),url("../fonts/roboto/Roboto-Bold.woff2") format("woff2"),url("../fonts/roboto/Roboto-Bold.woff") format("woff"),url("../fonts/roboto/Roboto-Bold.ttf") format("truetype");font-weight:700} a{text-decoration:none} html{line-height:1.5;font-family:"Roboto", sans-serif;font-weight:normal;color:rgba(0,0,0,0.87)}@media only screen and (min-width: 0){html{font-size:14px}}@media only screen and (min-width: 992px){html{font-size:14.5px}}@media only screen and (min-width: 1200px){html{font-size:15px}} h1,h2,h3,h4,h5,h6{font-weight:400;line-height:1.1} h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{font-weight:inherit} h1{font-size:4.2rem;line-height:110%;margin:2.1rem 0 1.68rem 0} h2{font-size:3.56rem;line-height:110%;margin:1.78rem 0 1.424rem 0} h3{font-size:2.92rem;line-height:110%;margin:1.46rem 0 1.168rem 0} h4{font-size:2.28rem;line-height:110%;margin:1.14rem 0 .912rem 0} h5{font-size:1.64rem;line-height:110%;margin:.82rem 0 .656rem 0} h6{font-size:1rem;line-height:110%;margin:.5rem 0 .4rem 0} em{font-style:italic} strong{font-weight:500} small{font-size:75%} .light,footer.page-footer .footer-copyright{font-weight:300} .thin{font-weight:200} .flow-text{font-weight:300}@media only screen and (min-width: 360px){.flow-text{font-size:1.2rem}}@media only screen and (min-width: 390px){.flow-text{font-size:1.224rem}}@media only screen and (min-width: 420px){.flow-text{font-size:1.248rem}}@media only screen and (min-width: 450px){.flow-text{font-size:1.272rem}}@media only screen and (min-width: 480px){.flow-text{font-size:1.296rem}}@media only screen and (min-width: 510px){.flow-text{font-size:1.32rem}}@media only screen and (min-width: 540px){.flow-text{font-size:1.344rem}}@media only screen and (min-width: 570px){.flow-text{font-size:1.368rem}}@media only screen and (min-width: 600px){.flow-text{font-size:1.392rem}}@media only screen and (min-width: 630px){.flow-text{font-size:1.416rem}}@media only screen and (min-width: 660px){.flow-text{font-size:1.44rem}}@media only screen and (min-width: 690px){.flow-text{font-size:1.464rem}}@media only screen and (min-width: 720px){.flow-text{font-size:1.488rem}}@media only screen and (min-width: 750px){.flow-text{font-size:1.512rem}}@media only screen and (min-width: 780px){.flow-text{font-size:1.536rem}}@media only screen and (min-width: 810px){.flow-text{font-size:1.56rem}}@media only screen and (min-width: 840px){.flow-text{font-size:1.584rem}}@media only screen and (min-width: 870px){.flow-text{font-size:1.608rem}}@media only screen and (min-width: 900px){.flow-text{font-size:1.632rem}}@media only screen and (min-width: 930px){.flow-text{font-size:1.656rem}}@media only screen and (min-width: 960px){.flow-text{font-size:1.68rem}}@media only screen and (max-width: 360px){.flow-text{font-size:1.2rem}} .scale-transition{transition:-webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important;transition:transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important;transition:transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63), -webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important} .scale-transition.scale-out{-webkit-transform:scale(0);transform:scale(0);transition:-webkit-transform .2s !important;transition:transform .2s !important;transition:transform .2s, -webkit-transform .2s !important} .scale-transition.scale-in{-webkit-transform:scale(1);transform:scale(1)} .card-panel{transition:box-shadow .25s;padding:24px;margin:.5rem 0 1rem 0;border-radius:2px;background-color:#fff} .card{position:relative;margin:.5rem 0 1rem 0;background-color:#fff;transition:box-shadow .25s;border-radius:2px} .card .card-title{font-size:24px;font-weight:300} .card .card-title.activator{cursor:pointer} .card.small,.card.medium,.card.large{position:relative} .card.small .card-image,.card.medium .card-image,.card.large .card-image{max-height:60%;overflow:hidden} .card.small .card-image+.card-content,.card.medium .card-image+.card-content,.card.large .card-image+.card-content{max-height:40%} .card.small .card-content,.card.medium .card-content,.card.large .card-content{max-height:100%;overflow:hidden} .card.small .card-action,.card.medium .card-action,.card.large .card-action{position:absolute;bottom:0;left:0;right:0} .card.small{height:300px} .card.medium{height:400px} .card.large{height:500px} .card.horizontal{display:-webkit-flex;display:-ms-flexbox;display:flex} .card.horizontal.small .card-image,.card.horizontal.medium .card-image,.card.horizontal.large .card-image{height:100%;max-height:none;overflow:visible} .card.horizontal.small .card-image img,.card.horizontal.medium .card-image img,.card.horizontal.large .card-image img{height:100%} .card.horizontal .card-image{max-width:50%} .card.horizontal .card-image img{border-radius:2px 0 0 2px;max-width:100%;width:auto} .card.horizontal .card-stacked{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-flex:1;-ms-flex:1;flex:1;position:relative} .card.horizontal .card-stacked .card-content{-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1} .card.sticky-action .card-action{z-index:2} .card.sticky-action .card-reveal{z-index:1;padding-bottom:64px} .card .card-image{position:relative} .card .card-image img{display:block;border-radius:2px 2px 0 0;position:relative;left:0;right:0;top:0;bottom:0;width:100%} .card .card-image .card-title{color:#fff;position:absolute;bottom:0;left:0;max-width:100%;padding:24px} .card .card-content{padding:24px;border-radius:0 0 2px 2px} .card .card-content p{margin:0;color:inherit} .card .card-content .card-title{display:block;line-height:32px;margin-bottom:8px} .card .card-content .card-title i{line-height:32px} .card .card-action{position:relative;background-color:inherit;border-top:1px solid rgba(160,160,160,0.2);padding:16px 24px} .card .card-action a:not(.btn):not(.btn-large):not(.btn-large):not(.btn-floating){color:#ffab40;margin-right:24px;transition:color .3s ease;text-transform:uppercase} .card .card-action a:not(.btn):not(.btn-large):not(.btn-large):not(.btn-floating):hover{color:#ffd8a6} .card .card-reveal{padding:24px;position:absolute;background-color:#fff;width:100%;overflow-y:auto;left:0;top:100%;height:100%;z-index:3;display:none} .card .card-reveal .card-title{cursor:pointer;display:block} #toast-container{display:block;position:fixed;z-index:10000}@media only screen and (max-width: 600px){#toast-container{min-width:100%;bottom:0%}}@media only screen and (min-width: 601px) and (max-width: 992px){#toast-container{left:5%;bottom:7%;max-width:90%}}@media only screen and (min-width: 993px){#toast-container{top:10%;right:7%;max-width:86%}} .toast{border-radius:2px;top:35px;width:auto;clear:both;margin-top:10px;position:relative;max-width:100%;height:auto;min-height:48px;line-height:1.5em;word-break:break-all;background-color:#323232;padding:10px 25px;font-size:1.1rem;font-weight:300;color:#fff;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between} .toast .btn,.toast .btn-large,.toast .btn-flat{margin:0;margin-left:3rem} .toast.rounded{border-radius:24px}@media only screen and (max-width: 600px){.toast{width:100%;border-radius:0}}@media only screen and (min-width: 601px) and (max-width: 992px){.toast{float:left}}@media only screen and (min-width: 993px){.toast{float:right}} .tabs{position:relative;overflow-x:auto;overflow-y:hidden;height:48px;width:100%;background-color:#fff;margin:0 auto;white-space:nowrap} .tabs.tabs-transparent{background-color:transparent} .tabs.tabs-transparent .tab a,.tabs.tabs-transparent .tab.disabled a,.tabs.tabs-transparent .tab.disabled a:hover{color:rgba(255,255,255,0.7)} .tabs.tabs-transparent .tab a:hover,.tabs.tabs-transparent .tab a.active{color:#fff} .tabs.tabs-transparent .indicator{background-color:#fff} .tabs.tabs-fixed-width{display:-webkit-flex;display:-ms-flexbox;display:flex} .tabs.tabs-fixed-width .tab{-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1} .tabs .tab{display:inline-block;text-align:center;line-height:48px;height:48px;padding:0;margin:0;text-transform:uppercase} .tabs .tab a{color:rgba(238,110,115,0.7);display:block;width:100%;height:100%;padding:0 24px;font-size:14px;text-overflow:ellipsis;overflow:hidden;transition:color .28s ease} .tabs .tab a:hover,.tabs .tab a.active{background-color:transparent;color:#ee6e73} .tabs .tab.disabled a,.tabs .tab.disabled a:hover{color:rgba(238,110,115,0.7);cursor:default} .tabs .indicator{position:absolute;bottom:0;height:2px;background-color:#f6b2b5;will-change:left, right}@media only screen and (max-width: 992px){.tabs{display:-webkit-flex;display:-ms-flexbox;display:flex}.tabs .tab{-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.tabs .tab a{padding:0 12px}} .material-tooltip{padding:10px 8px;font-size:1rem;z-index:2000;background-color:transparent;border-radius:2px;color:#fff;min-height:36px;line-height:120%;opacity:0;position:absolute;text-align:center;max-width:calc(100% - 4px);overflow:hidden;left:0;top:0;pointer-events:none;visibility:hidden} .backdrop{position:absolute;opacity:0;height:7px;width:14px;border-radius:0 0 50% 50%;background-color:#323232;z-index:-1;-webkit-transform-origin:50% 0%;transform-origin:50% 0%;visibility:hidden} .btn,.btn-large,.btn-flat{border:none;border-radius:2px;display:inline-block;height:36px;line-height:36px;padding:0 2rem;text-transform:uppercase;vertical-align:middle;-webkit-tap-highlight-color:transparent} .btn.disabled,.disabled.btn-large,.btn-floating.disabled,.btn-large.disabled,.btn-flat.disabled,.btn:disabled,.btn-large:disabled,.btn-floating:disabled,.btn-large:disabled,.btn-flat:disabled,.btn[disabled],[disabled].btn-large,.btn-floating[disabled],.btn-large[disabled],.btn-flat[disabled]{pointer-events:none;background-color:#DFDFDF !important;box-shadow:none;color:#9F9F9F !important;cursor:default} .btn.disabled:hover,.disabled.btn-large:hover,.btn-floating.disabled:hover,.btn-large.disabled:hover,.btn-flat.disabled:hover,.btn:disabled:hover,.btn-large:disabled:hover,.btn-floating:disabled:hover,.btn-large:disabled:hover,.btn-flat:disabled:hover,.btn[disabled]:hover,[disabled].btn-large:hover,.btn-floating[disabled]:hover,.btn-large[disabled]:hover,.btn-flat[disabled]:hover{background-color:#DFDFDF !important;color:#9F9F9F !important} .btn,.btn-large,.btn-floating,.btn-large,.btn-flat{outline:0} .btn i,.btn-large i,.btn-floating i,.btn-large i,.btn-flat i{font-size:1.3rem;line-height:inherit} .btn:focus,.btn-large:focus,.btn-floating:focus{background-color:#1d7d74} .btn,.btn-large{text-decoration:none;color:#fff;background-color:#26a69a;text-align:center;letter-spacing:.5px;transition:.2s ease-out;cursor:pointer} .btn:hover,.btn-large:hover{background-color:#2bbbad} .btn-floating{display:inline-block;color:#fff;position:relative;overflow:hidden;z-index:1;width:40px;height:40px;line-height:40px;padding:0;background-color:#26a69a;border-radius:50%;transition:.3s;cursor:pointer;vertical-align:middle} .btn-floating:hover{background-color:#26a69a} .btn-floating:before{border-radius:0} .btn-floating.btn-large{width:56px;height:56px} .btn-floating.btn-large i{line-height:56px} .btn-floating.halfway-fab{position:absolute;right:24px;bottom:0;-webkit-transform:translateY(50%);transform:translateY(50%)} .btn-floating.halfway-fab.left{right:auto;left:24px} .btn-floating i{width:inherit;display:inline-block;text-align:center;color:#fff;font-size:1.6rem;line-height:40px} button.btn-floating{border:none} .fixed-action-btn{position:fixed;right:23px;bottom:23px;padding-top:15px;margin-bottom:0;z-index:998} .fixed-action-btn.active ul{visibility:visible} .fixed-action-btn.horizontal{padding:0 0 0 15px} .fixed-action-btn.horizontal ul{text-align:right;right:64px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);height:100%;left:auto;width:500px} .fixed-action-btn.horizontal ul li{display:inline-block;margin:15px 15px 0 0} .fixed-action-btn.toolbar{padding:0;height:56px} .fixed-action-btn.toolbar.active>a i{opacity:0} .fixed-action-btn.toolbar ul{display:-webkit-flex;display:-ms-flexbox;display:flex;top:0;bottom:0} .fixed-action-btn.toolbar ul li{-webkit-flex:1;-ms-flex:1;flex:1;display:inline-block;margin:0;height:100%;transition:none} .fixed-action-btn.toolbar ul li a{display:block;overflow:hidden;position:relative;width:100%;height:100%;background-color:transparent;box-shadow:none;color:#fff;line-height:56px;z-index:1} .fixed-action-btn.toolbar ul li a i{line-height:inherit} .fixed-action-btn ul{left:0;right:0;text-align:center;position:absolute;bottom:64px;margin:0;visibility:hidden} .fixed-action-btn ul li{margin-bottom:15px} .fixed-action-btn ul a.btn-floating{opacity:0} .fixed-action-btn .fab-backdrop{position:absolute;top:0;left:0;z-index:-1;width:40px;height:40px;background-color:#26a69a;border-radius:50%;-webkit-transform:scale(0);transform:scale(0)} .btn-flat{box-shadow:none;background-color:transparent;color:#343434;cursor:pointer;transition:background-color .2s} .btn-flat:focus,.btn-flat:active{background-color:transparent} .btn-flat:focus,.btn-flat:hover{background-color:rgba(0,0,0,0.1);box-shadow:none} .btn-flat:active{background-color:rgba(0,0,0,0.2)} .btn-flat.disabled{background-color:transparent !important;color:#b3b3b3 !important;cursor:default} .btn-large{height:54px;line-height:54px} .btn-large i{font-size:1.6rem} .btn-block{display:block} .dropdown-content{background-color:#fff;margin:0;display:none;min-width:100px;max-height:650px;overflow-y:auto;opacity:0;position:absolute;z-index:999;will-change:width, height} .dropdown-content li{clear:both;color:rgba(0,0,0,0.87);cursor:pointer;min-height:50px;line-height:1.5rem;width:100%;text-align:left;text-transform:none} .dropdown-content li:hover,.dropdown-content li.active,.dropdown-content li.selected{background-color:#eee} .dropdown-content li.active.selected{background-color:#e1e1e1} .dropdown-content li.divider{min-height:0;height:1px} .dropdown-content li>a,.dropdown-content li>span{font-size:16px;color:#26a69a;display:block;line-height:22px;padding:14px 16px} .dropdown-content li>span>label{top:1px;left:0;height:18px} .dropdown-content li>a>i{height:inherit;line-height:inherit} .input-field.col .dropdown-content [type="checkbox"]+label{top:1px;left:0;height:18px}/*!
7
+ * Waves v0.6.0
8
+ * http://fian.my.id/Waves
9
+ *
10
+ * Copyright 2014 Alfiana E. Sibuea and other contributors
11
+ * Released under the MIT license
12
+ * https://github.com/fians/Waves/blob/master/LICENSE
13
+ */.waves-effect{position:relative;cursor:pointer;display:inline-block;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;vertical-align:middle;z-index:1;transition:.3s ease-out}.waves-effect .waves-ripple{position:absolute;border-radius:50%;width:20px;height:20px;margin-top:-10px;margin-left:-10px;opacity:0;background:rgba(0,0,0,0.2);transition:all 0.7s ease-out;transition-property:opacity, -webkit-transform;transition-property:transform, opacity;transition-property:transform, opacity, -webkit-transform;-webkit-transform:scale(0);transform:scale(0);pointer-events:none}.waves-effect.waves-light .waves-ripple{background-color:rgba(255,255,255,0.45)}.waves-effect.waves-red .waves-ripple{background-color:rgba(244,67,54,0.7)}.waves-effect.waves-yellow .waves-ripple{background-color:rgba(255,235,59,0.7)}.waves-effect.waves-orange .waves-ripple{background-color:rgba(255,152,0,0.7)}.waves-effect.waves-purple .waves-ripple{background-color:rgba(156,39,176,0.7)}.waves-effect.waves-green .waves-ripple{background-color:rgba(76,175,80,0.7)}.waves-effect.waves-teal .waves-ripple{background-color:rgba(0,150,136,0.7)}.waves-effect input[type="button"],.waves-effect input[type="reset"],.waves-effect input[type="submit"]{border:0;font-style:normal;font-size:inherit;text-transform:inherit;background:none}.waves-effect img{position:relative;z-index:-1}.waves-notransition{transition:none !important}.waves-circle{-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-mask-image:-webkit-radial-gradient(circle, #fff 100%, #000 100%)}.waves-input-wrapper{border-radius:0.2em;vertical-align:bottom}.waves-input-wrapper .waves-button-input{position:relative;top:0;left:0;z-index:1}.waves-circle{text-align:center;width:2.5em;height:2.5em;line-height:2.5em;border-radius:50%;-webkit-mask-image:none}.waves-block{display:block}.waves-effect .waves-ripple{z-index:-1}.modal{display:none;position:fixed;left:0;right:0;background-color:#fafafa;padding:0;max-height:70%;width:55%;margin:auto;overflow-y:auto;border-radius:2px;will-change:top, opacity}@media only screen and (max-width: 992px){.modal{width:80%}}.modal h1,.modal h2,.modal h3,.modal h4{margin-top:0}.modal .modal-content{padding:24px}.modal .modal-close{cursor:pointer}.modal .modal-footer{border-radius:0 0 2px 2px;background-color:#fafafa;padding:4px 6px;height:56px;width:100%}.modal .modal-footer .btn,.modal .modal-footer .btn-large,.modal .modal-footer .btn-flat{float:right;margin:6px 0}.modal-overlay{position:fixed;z-index:999;top:-100px;left:0;bottom:0;right:0;height:125%;width:100%;background:#000;display:none;will-change:opacity}.modal.modal-fixed-footer{padding:0;height:70%}.modal.modal-fixed-footer .modal-content{position:absolute;height:calc(100% - 56px);max-height:100%;width:100%;overflow-y:auto}.modal.modal-fixed-footer .modal-footer{border-top:1px solid rgba(0,0,0,0.1);position:absolute;bottom:0}.modal.bottom-sheet{top:auto;bottom:-100%;margin:0;width:100%;max-height:45%;border-radius:0;will-change:bottom, opacity}.collapsible{border-top:1px solid #ddd;border-right:1px solid #ddd;border-left:1px solid #ddd;margin:.5rem 0 1rem 0}.collapsible-header{display:block;cursor:pointer;min-height:3rem;line-height:3rem;padding:0 1rem;background-color:#fff;border-bottom:1px solid #ddd}.collapsible-header i{width:2rem;font-size:1.6rem;line-height:3rem;display:block;float:left;text-align:center;margin-right:1rem}.collapsible-body{display:none;border-bottom:1px solid #ddd;box-sizing:border-box;padding:2rem}.side-nav .collapsible,.side-nav.fixed .collapsible{border:none;box-shadow:none}.side-nav .collapsible li,.side-nav.fixed .collapsible li{padding:0}.side-nav .collapsible-header,.side-nav.fixed .collapsible-header{background-color:transparent;border:none;line-height:inherit;height:inherit;padding:0 16px}.side-nav .collapsible-header:hover,.side-nav.fixed .collapsible-header:hover{background-color:rgba(0,0,0,0.05)}.side-nav .collapsible-header i,.side-nav.fixed .collapsible-header i{line-height:inherit}.side-nav .collapsible-body,.side-nav.fixed .collapsible-body{border:0;background-color:#fff}.side-nav .collapsible-body li a,.side-nav.fixed .collapsible-body li a{padding:0 23.5px 0 31px}.collapsible.popout{border:none;box-shadow:none}.collapsible.popout>li{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);margin:0 24px;transition:margin 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94)}.collapsible.popout>li.active{box-shadow:0 5px 11px 0 rgba(0,0,0,0.18),0 4px 15px 0 rgba(0,0,0,0.15);margin:16px 0}.chip{display:inline-block;height:32px;font-size:13px;font-weight:500;color:rgba(0,0,0,0.6);line-height:32px;padding:0 12px;border-radius:16px;background-color:#e4e4e4;margin-bottom:5px;margin-right:5px}.chip img{float:left;margin:0 8px 0 -12px;height:32px;width:32px;border-radius:50%}.chip .close{cursor:pointer;float:right;font-size:16px;line-height:32px;padding-left:8px}.chips{border:none;border-bottom:1px solid #9e9e9e;box-shadow:none;margin:0 0 20px 0;min-height:45px;outline:none;transition:all .3s}.chips.focus{border-bottom:1px solid #26a69a;box-shadow:0 1px 0 0 #26a69a}.chips:hover{cursor:text}.chips .chip.selected{background-color:#26a69a;color:#fff}.chips .input{background:none;border:0;color:rgba(0,0,0,0.6);display:inline-block;font-size:1rem;height:3rem;line-height:32px;outline:0;margin:0;padding:0 !important;width:120px !important}.chips .input:focus{border:0 !important;box-shadow:none !important}.prefix ~ .chips{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.chips:empty ~ label{font-size:0.8rem;-webkit-transform:translateY(-140%);transform:translateY(-140%)}.materialboxed{display:block;cursor:-webkit-zoom-in;cursor:zoom-in;position:relative;transition:opacity .4s;-webkit-backface-visibility:hidden}.materialboxed:hover:not(.active){opacity:.8}.materialboxed.active{cursor:-webkit-zoom-out;cursor:zoom-out}#materialbox-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#292929;z-index:1000;will-change:opacity}.materialbox-caption{position:fixed;display:none;color:#fff;line-height:50px;bottom:0;left:0;width:100%;text-align:center;padding:0% 15%;height:50px;z-index:1000;-webkit-font-smoothing:antialiased}select:focus{outline:1px solid #c9f3ef}button:focus{outline:none;background-color:#2ab7a9}label{font-size:.8rem;color:#9e9e9e}::-webkit-input-placeholder{color:#d1d1d1}:-moz-placeholder{color:#d1d1d1}::-moz-placeholder{color:#d1d1d1}:-ms-input-placeholder{color:#d1d1d1}input:not([type]),input[type=text],input[type=password],input[type=email],input[type=url],input[type=time],input[type=date],input[type=datetime],input[type=datetime-local],input[type=tel],input[type=number],input[type=search],textarea.materialize-textarea{background-color:transparent;border:none;border-bottom:1px solid #9e9e9e;border-radius:0;outline:none;height:3rem;width:100%;font-size:1rem;margin:0 0 20px 0;padding:0;box-shadow:none;box-sizing:content-box;transition:all 0.3s}input:not([type]):disabled,input:not([type])[readonly="readonly"],input[type=text]:disabled,input[type=text][readonly="readonly"],input[type=password]:disabled,input[type=password][readonly="readonly"],input[type=email]:disabled,input[type=email][readonly="readonly"],input[type=url]:disabled,input[type=url][readonly="readonly"],input[type=time]:disabled,input[type=time][readonly="readonly"],input[type=date]:disabled,input[type=date][readonly="readonly"],input[type=datetime]:disabled,input[type=datetime][readonly="readonly"],input[type=datetime-local]:disabled,input[type=datetime-local][readonly="readonly"],input[type=tel]:disabled,input[type=tel][readonly="readonly"],input[type=number]:disabled,input[type=number][readonly="readonly"],input[type=search]:disabled,input[type=search][readonly="readonly"],textarea.materialize-textarea:disabled,textarea.materialize-textarea[readonly="readonly"]{color:rgba(0,0,0,0.26);border-bottom:1px dotted rgba(0,0,0,0.26)}input:not([type]):disabled+label,input:not([type])[readonly="readonly"]+label,input[type=text]:disabled+label,input[type=text][readonly="readonly"]+label,input[type=password]:disabled+label,input[type=password][readonly="readonly"]+label,input[type=email]:disabled+label,input[type=email][readonly="readonly"]+label,input[type=url]:disabled+label,input[type=url][readonly="readonly"]+label,input[type=time]:disabled+label,input[type=time][readonly="readonly"]+label,input[type=date]:disabled+label,input[type=date][readonly="readonly"]+label,input[type=datetime]:disabled+label,input[type=datetime][readonly="readonly"]+label,input[type=datetime-local]:disabled+label,input[type=datetime-local][readonly="readonly"]+label,input[type=tel]:disabled+label,input[type=tel][readonly="readonly"]+label,input[type=number]:disabled+label,input[type=number][readonly="readonly"]+label,input[type=search]:disabled+label,input[type=search][readonly="readonly"]+label,textarea.materialize-textarea:disabled+label,textarea.materialize-textarea[readonly="readonly"]+label{color:rgba(0,0,0,0.26)}input:not([type]):focus:not([readonly]),input[type=text]:focus:not([readonly]),input[type=password]:focus:not([readonly]),input[type=email]:focus:not([readonly]),input[type=url]:focus:not([readonly]),input[type=time]:focus:not([readonly]),input[type=date]:focus:not([readonly]),input[type=datetime]:focus:not([readonly]),input[type=datetime-local]:focus:not([readonly]),input[type=tel]:focus:not([readonly]),input[type=number]:focus:not([readonly]),input[type=search]:focus:not([readonly]),textarea.materialize-textarea:focus:not([readonly]){border-bottom:1px solid #26a69a;box-shadow:0 1px 0 0 #26a69a}input:not([type]):focus:not([readonly])+label,input[type=text]:focus:not([readonly])+label,input[type=password]:focus:not([readonly])+label,input[type=email]:focus:not([readonly])+label,input[type=url]:focus:not([readonly])+label,input[type=time]:focus:not([readonly])+label,input[type=date]:focus:not([readonly])+label,input[type=datetime]:focus:not([readonly])+label,input[type=datetime-local]:focus:not([readonly])+label,input[type=tel]:focus:not([readonly])+label,input[type=number]:focus:not([readonly])+label,input[type=search]:focus:not([readonly])+label,textarea.materialize-textarea:focus:not([readonly])+label{color:#26a69a}input:not([type]).valid,input:not([type]):focus.valid,input[type=text].valid,input[type=text]:focus.valid,input[type=password].valid,input[type=password]:focus.valid,input[type=email].valid,input[type=email]:focus.valid,input[type=url].valid,input[type=url]:focus.valid,input[type=time].valid,input[type=time]:focus.valid,input[type=date].valid,input[type=date]:focus.valid,input[type=datetime].valid,input[type=datetime]:focus.valid,input[type=datetime-local].valid,input[type=datetime-local]:focus.valid,input[type=tel].valid,input[type=tel]:focus.valid,input[type=number].valid,input[type=number]:focus.valid,input[type=search].valid,input[type=search]:focus.valid,textarea.materialize-textarea.valid,textarea.materialize-textarea:focus.valid{border-bottom:1px solid #4CAF50;box-shadow:0 1px 0 0 #4CAF50}input:not([type]).valid+label:after,input:not([type]):focus.valid+label:after,input[type=text].valid+label:after,input[type=text]:focus.valid+label:after,input[type=password].valid+label:after,input[type=password]:focus.valid+label:after,input[type=email].valid+label:after,input[type=email]:focus.valid+label:after,input[type=url].valid+label:after,input[type=url]:focus.valid+label:after,input[type=time].valid+label:after,input[type=time]:focus.valid+label:after,input[type=date].valid+label:after,input[type=date]:focus.valid+label:after,input[type=datetime].valid+label:after,input[type=datetime]:focus.valid+label:after,input[type=datetime-local].valid+label:after,input[type=datetime-local]:focus.valid+label:after,input[type=tel].valid+label:after,input[type=tel]:focus.valid+label:after,input[type=number].valid+label:after,input[type=number]:focus.valid+label:after,input[type=search].valid+label:after,input[type=search]:focus.valid+label:after,textarea.materialize-textarea.valid+label:after,textarea.materialize-textarea:focus.valid+label:after{content:attr(data-success);color:#4CAF50;opacity:1}input:not([type]).invalid,input:not([type]):focus.invalid,input[type=text].invalid,input[type=text]:focus.invalid,input[type=password].invalid,input[type=password]:focus.invalid,input[type=email].invalid,input[type=email]:focus.invalid,input[type=url].invalid,input[type=url]:focus.invalid,input[type=time].invalid,input[type=time]:focus.invalid,input[type=date].invalid,input[type=date]:focus.invalid,input[type=datetime].invalid,input[type=datetime]:focus.invalid,input[type=datetime-local].invalid,input[type=datetime-local]:focus.invalid,input[type=tel].invalid,input[type=tel]:focus.invalid,input[type=number].invalid,input[type=number]:focus.invalid,input[type=search].invalid,input[type=search]:focus.invalid,textarea.materialize-textarea.invalid,textarea.materialize-textarea:focus.invalid{border-bottom:1px solid #F44336;box-shadow:0 1px 0 0 #F44336}input:not([type]).invalid+label:after,input:not([type]):focus.invalid+label:after,input[type=text].invalid+label:after,input[type=text]:focus.invalid+label:after,input[type=password].invalid+label:after,input[type=password]:focus.invalid+label:after,input[type=email].invalid+label:after,input[type=email]:focus.invalid+label:after,input[type=url].invalid+label:after,input[type=url]:focus.invalid+label:after,input[type=time].invalid+label:after,input[type=time]:focus.invalid+label:after,input[type=date].invalid+label:after,input[type=date]:focus.invalid+label:after,input[type=datetime].invalid+label:after,input[type=datetime]:focus.invalid+label:after,input[type=datetime-local].invalid+label:after,input[type=datetime-local]:focus.invalid+label:after,input[type=tel].invalid+label:after,input[type=tel]:focus.invalid+label:after,input[type=number].invalid+label:after,input[type=number]:focus.invalid+label:after,input[type=search].invalid+label:after,input[type=search]:focus.invalid+label:after,textarea.materialize-textarea.invalid+label:after,textarea.materialize-textarea:focus.invalid+label:after{content:attr(data-error);color:#F44336;opacity:1}input:not([type]).validate+label,input[type=text].validate+label,input[type=password].validate+label,input[type=email].validate+label,input[type=url].validate+label,input[type=time].validate+label,input[type=date].validate+label,input[type=datetime].validate+label,input[type=datetime-local].validate+label,input[type=tel].validate+label,input[type=number].validate+label,input[type=search].validate+label,textarea.materialize-textarea.validate+label{width:100%;pointer-events:none}input:not([type])+label:after,input[type=text]+label:after,input[type=password]+label:after,input[type=email]+label:after,input[type=url]+label:after,input[type=time]+label:after,input[type=date]+label:after,input[type=datetime]+label:after,input[type=datetime-local]+label:after,input[type=tel]+label:after,input[type=number]+label:after,input[type=search]+label:after,textarea.materialize-textarea+label:after{display:block;content:"";position:absolute;top:60px;opacity:0;transition:.2s opacity ease-out, .2s color ease-out}.input-field{position:relative;margin-top:1rem}.input-field.inline{display:inline-block;vertical-align:middle;margin-left:5px}.input-field.inline input,.input-field.inline .select-dropdown{margin-bottom:1rem}.input-field.col label{left:.75rem}.input-field.col .prefix ~ label,.input-field.col .prefix ~ .validate ~ label{width:calc(100% - 3rem - 1.5rem)}.input-field label{color:#9e9e9e;position:absolute;top:0.8rem;left:0;font-size:1rem;cursor:text;transition:.2s ease-out}.input-field label:not(.label-icon).active{font-size:.8rem;-webkit-transform:translateY(-140%);transform:translateY(-140%)}.input-field .prefix{position:absolute;width:3rem;font-size:2rem;transition:color .2s}.input-field .prefix.active{color:#26a69a}.input-field .prefix ~ input,.input-field .prefix ~ textarea,.input-field .prefix ~ label,.input-field .prefix ~ .validate ~ label,.input-field .prefix ~ .autocomplete-content{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.input-field .prefix ~ label{margin-left:3rem}@media only screen and (max-width: 992px){.input-field .prefix ~ input{width:86%;width:calc(100% - 3rem)}}@media only screen and (max-width: 600px){.input-field .prefix ~ input{width:80%;width:calc(100% - 3rem)}}.input-field input[type=search]{display:block;line-height:inherit;padding-left:4rem;width:calc(100% - 4rem)}.input-field input[type=search]:focus{background-color:#fff;border:0;box-shadow:none;color:#444}.input-field input[type=search]:focus+label i,.input-field input[type=search]:focus ~ .mdi-navigation-close,.input-field input[type=search]:focus ~ .material-icons{color:#444}.input-field input[type=search]+label{left:1rem}.input-field input[type=search] ~ .mdi-navigation-close,.input-field input[type=search] ~ .material-icons{position:absolute;top:0;right:1rem;color:transparent;cursor:pointer;font-size:2rem;transition:.3s color}textarea{width:100%;height:3rem;background-color:transparent}textarea.materialize-textarea{overflow-y:hidden;padding:.8rem 0 1.6rem 0;resize:none;min-height:3rem}.hiddendiv{display:none;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word;padding-top:1.2rem}.autocomplete-content{margin-top:-15px;display:block;opacity:1;position:static}.autocomplete-content li .highlight{color:#444}.autocomplete-content li img{height:40px;width:40px;margin:5px 15px}[type="radio"]:not(:checked),[type="radio"]:checked{position:absolute;left:-9999px;opacity:0}[type="radio"]:not(:checked)+label,[type="radio"]:checked+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;transition:.28s ease;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}[type="radio"]+label:before,[type="radio"]+label:after{content:'';position:absolute;left:0;top:0;margin:4px;width:16px;height:16px;z-index:0;transition:.28s ease}[type="radio"]:not(:checked)+label:before,[type="radio"]:not(:checked)+label:after,[type="radio"]:checked+label:before,[type="radio"]:checked+label:after,[type="radio"].with-gap:checked+label:before,[type="radio"].with-gap:checked+label:after{border-radius:50%}[type="radio"]:not(:checked)+label:before,[type="radio"]:not(:checked)+label:after{border:2px solid #5a5a5a}[type="radio"]:not(:checked)+label:after{-webkit-transform:scale(0);transform:scale(0)}[type="radio"]:checked+label:before{border:2px solid transparent}[type="radio"]:checked+label:after,[type="radio"].with-gap:checked+label:before,[type="radio"].with-gap:checked+label:after{border:2px solid #26a69a}[type="radio"]:checked+label:after,[type="radio"].with-gap:checked+label:after{background-color:#26a69a}[type="radio"]:checked+label:after{-webkit-transform:scale(1.02);transform:scale(1.02)}[type="radio"].with-gap:checked+label:after{-webkit-transform:scale(0.5);transform:scale(0.5)}[type="radio"].tabbed:focus+label:before{box-shadow:0 0 0 10px rgba(0,0,0,0.1)}[type="radio"].with-gap:disabled:checked+label:before{border:2px solid rgba(0,0,0,0.26)}[type="radio"].with-gap:disabled:checked+label:after{border:none;background-color:rgba(0,0,0,0.26)}[type="radio"]:disabled:not(:checked)+label:before,[type="radio"]:disabled:checked+label:before{background-color:transparent;border-color:rgba(0,0,0,0.26)}[type="radio"]:disabled+label{color:rgba(0,0,0,0.26)}[type="radio"]:disabled:not(:checked)+label:before{border-color:rgba(0,0,0,0.26)}[type="radio"]:disabled:checked+label:after{background-color:rgba(0,0,0,0.26);border-color:#BDBDBD}form p{margin-bottom:10px;text-align:left}form p:last-child{margin-bottom:0}[type="checkbox"]:not(:checked),[type="checkbox"]:checked{position:absolute;left:-9999px;opacity:0}[type="checkbox"]+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}[type="checkbox"]+label:before,[type="checkbox"]:not(.filled-in)+label:after{content:'';position:absolute;top:0;left:0;width:18px;height:18px;z-index:0;border:2px solid #5a5a5a;border-radius:1px;margin-top:2px;transition:.2s}[type="checkbox"]:not(.filled-in)+label:after{border:0;-webkit-transform:scale(0);transform:scale(0)}[type="checkbox"]:not(:checked):disabled+label:before{border:none;background-color:rgba(0,0,0,0.26)}[type="checkbox"].tabbed:focus+label:after{-webkit-transform:scale(1);transform:scale(1);border:0;border-radius:50%;box-shadow:0 0 0 10px rgba(0,0,0,0.1);background-color:rgba(0,0,0,0.1)}[type="checkbox"]:checked+label:before{top:-4px;left:-5px;width:12px;height:22px;border-top:2px solid transparent;border-left:2px solid transparent;border-right:2px solid #26a69a;border-bottom:2px solid #26a69a;-webkit-transform:rotate(40deg);transform:rotate(40deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"]:checked:disabled+label:before{border-right:2px solid rgba(0,0,0,0.26);border-bottom:2px solid rgba(0,0,0,0.26)}[type="checkbox"]:indeterminate+label:before{top:-11px;left:-12px;width:10px;height:22px;border-top:none;border-left:none;border-right:2px solid #26a69a;border-bottom:none;-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"]:indeterminate:disabled+label:before{border-right:2px solid rgba(0,0,0,0.26);background-color:transparent}[type="checkbox"].filled-in+label:after{border-radius:2px}[type="checkbox"].filled-in+label:before,[type="checkbox"].filled-in+label:after{content:'';left:0;position:absolute;transition:border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s;z-index:1}[type="checkbox"].filled-in:not(:checked)+label:before{width:0;height:0;border:3px solid transparent;left:6px;top:10px;-webkit-transform:rotateZ(37deg);transform:rotateZ(37deg);-webkit-transform-origin:20% 40%;transform-origin:100% 100%}[type="checkbox"].filled-in:not(:checked)+label:after{height:20px;width:20px;background-color:transparent;border:2px solid #5a5a5a;top:0px;z-index:0}[type="checkbox"].filled-in:checked+label:before{top:0;left:1px;width:8px;height:13px;border-top:2px solid transparent;border-left:2px solid transparent;border-right:2px solid #fff;border-bottom:2px solid #fff;-webkit-transform:rotateZ(37deg);transform:rotateZ(37deg);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"].filled-in:checked+label:after{top:0;width:20px;height:20px;border:2px solid #26a69a;background-color:#26a69a;z-index:0}[type="checkbox"].filled-in.tabbed:focus+label:after{border-radius:2px;border-color:#5a5a5a;background-color:rgba(0,0,0,0.1)}[type="checkbox"].filled-in.tabbed:checked:focus+label:after{border-radius:2px;background-color:#26a69a;border-color:#26a69a}[type="checkbox"].filled-in:disabled:not(:checked)+label:before{background-color:transparent;border:2px solid transparent}[type="checkbox"].filled-in:disabled:not(:checked)+label:after{border-color:transparent;background-color:#BDBDBD}[type="checkbox"].filled-in:disabled:checked+label:before{background-color:transparent}[type="checkbox"].filled-in:disabled:checked+label:after{background-color:#BDBDBD;border-color:#BDBDBD}.switch,.switch *{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.switch label{cursor:pointer}.switch label input[type=checkbox]{opacity:0;width:0;height:0}.switch label input[type=checkbox]:checked+.lever{background-color:#84c7c1}.switch label input[type=checkbox]:checked+.lever:after{background-color:#26a69a;left:24px}.switch label .lever{content:"";display:inline-block;position:relative;width:40px;height:15px;background-color:#818181;border-radius:15px;margin-right:10px;transition:background 0.3s ease;vertical-align:middle;margin:0 16px}.switch label .lever:after{content:"";position:absolute;display:inline-block;width:21px;height:21px;background-color:#F1F1F1;border-radius:21px;box-shadow:0 1px 3px 1px rgba(0,0,0,0.4);left:-5px;top:-3px;transition:left 0.3s ease, background .3s ease, box-shadow 0.1s ease}input[type=checkbox]:checked:not(:disabled) ~ .lever:active::after,input[type=checkbox]:checked:not(:disabled).tabbed:focus ~ .lever::after{box-shadow:0 1px 3px 1px rgba(0,0,0,0.4),0 0 0 15px rgba(38,166,154,0.1)}input[type=checkbox]:not(:disabled) ~ .lever:active:after,input[type=checkbox]:not(:disabled).tabbed:focus ~ .lever::after{box-shadow:0 1px 3px 1px rgba(0,0,0,0.4),0 0 0 15px rgba(0,0,0,0.08)}.switch input[type=checkbox][disabled]+.lever{cursor:default}.switch label input[type=checkbox][disabled]+.lever:after,.switch label input[type=checkbox][disabled]:checked+.lever:after{background-color:#BDBDBD}select{display:none}select.browser-default{display:block}select{background-color:rgba(255,255,255,0.9);width:100%;padding:5px;border:1px solid #f2f2f2;border-radius:2px;height:3rem}.select-label{position:absolute}.select-wrapper{position:relative}.select-wrapper input.select-dropdown{position:relative;cursor:pointer;background-color:transparent;border:none;border-bottom:1px solid #9e9e9e;outline:none;height:3rem;line-height:3rem;width:100%;font-size:1rem;margin:0 0 20px 0;padding:0;display:block}.select-wrapper span.caret{color:initial;position:absolute;right:0;top:0;bottom:0;height:10px;margin:auto 0;font-size:10px;line-height:10px}.select-wrapper span.caret.disabled{color:rgba(0,0,0,0.26)}.select-wrapper+label{position:absolute;top:-14px;font-size:.8rem}select:disabled{color:rgba(0,0,0,0.3)}.select-wrapper input.select-dropdown:disabled{color:rgba(0,0,0,0.3);cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;border-bottom:1px solid rgba(0,0,0,0.3)}.select-wrapper i{color:rgba(0,0,0,0.3)}.select-dropdown li.disabled,.select-dropdown li.disabled>span,.select-dropdown li.optgroup{color:rgba(0,0,0,0.3);background-color:transparent}.prefix ~ .select-wrapper{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.prefix ~ label{margin-left:3rem}.select-dropdown li img{height:40px;width:40px;margin:5px 15px;float:right}.select-dropdown li.optgroup{border-top:1px solid #eee}.select-dropdown li.optgroup.selected>span{color:rgba(0,0,0,0.7)}.select-dropdown li.optgroup>span{color:rgba(0,0,0,0.4)}.select-dropdown li.optgroup ~ li.optgroup-option{padding-left:1rem}.file-field{position:relative}.file-field .file-path-wrapper{overflow:hidden;padding-left:10px}.file-field input.file-path{width:100%}.file-field .btn,.file-field .btn-large{float:left;height:3rem;line-height:3rem}.file-field span{cursor:pointer}.file-field input[type=file]{position:absolute;top:0;right:0;left:0;bottom:0;width:100%;margin:0;padding:0;font-size:20px;cursor:pointer;opacity:0;filter:alpha(opacity=0)}.range-field{position:relative}input[type=range],input[type=range]+.thumb{cursor:pointer}input[type=range]{position:relative;background-color:transparent;border:none;outline:none;width:100%;margin:15px 0;padding:0}input[type=range]:focus{outline:none}input[type=range]+.thumb{position:absolute;border:none;height:0;width:0;border-radius:50%;background-color:#26a69a;top:10px;margin-left:-6px;-webkit-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}input[type=range]+.thumb .value{display:block;width:30px;text-align:center;color:#26a69a;font-size:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}input[type=range]+.thumb.active{border-radius:50% 50% 50% 0}input[type=range]+.thumb.active .value{color:#fff;margin-left:-1px;margin-top:8px;font-size:10px}input[type=range]{-webkit-appearance:none}input[type=range]::-webkit-slider-runnable-track{height:3px;background:#c2c0c2;border:none}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;border:none;height:14px;width:14px;border-radius:50%;background-color:#26a69a;-webkit-transform-origin:50% 50%;transform-origin:50% 50%;margin:-5px 0 0 0;transition:.3s}input[type=range]:focus::-webkit-slider-runnable-track{background:#ccc}input[type=range]{border:1px solid white}input[type=range]::-moz-range-track{height:3px;background:#ddd;border:none}input[type=range]::-moz-range-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#26a69a;margin-top:-5px}input[type=range]:-moz-focusring{outline:1px solid #fff;outline-offset:-1px}input[type=range]:focus::-moz-range-track{background:#ccc}input[type=range]::-ms-track{height:3px;background:transparent;border-color:transparent;border-width:6px 0;color:transparent}input[type=range]::-ms-fill-lower{background:#777}input[type=range]::-ms-fill-upper{background:#ddd}input[type=range]::-ms-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#26a69a}input[type=range]:focus::-ms-fill-lower{background:#888}input[type=range]:focus::-ms-fill-upper{background:#ccc}.table-of-contents.fixed{position:fixed}.table-of-contents li{padding:2px 0}.table-of-contents a{display:inline-block;font-weight:300;color:#757575;padding-left:20px;height:1.5rem;line-height:1.5rem;letter-spacing:.4;display:inline-block}.table-of-contents a:hover{color:#a8a8a8;padding-left:19px;border-left:1px solid #ee6e73}.table-of-contents a.active{font-weight:500;padding-left:18px;border-left:2px solid #ee6e73}.side-nav{position:fixed;width:300px;left:0;top:0;margin:0;-webkit-transform:translateX(-100%);transform:translateX(-100%);height:100%;height:calc(100% + 60px);height:-moz-calc(100%);padding-bottom:60px;background-color:#fff;z-index:999;overflow-y:auto;will-change:transform;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateX(-105%);transform:translateX(-105%)}.side-nav.right-aligned{right:0;-webkit-transform:translateX(105%);transform:translateX(105%);left:auto;-webkit-transform:translateX(100%);transform:translateX(100%)}.side-nav .collapsible{margin:0}.side-nav li{float:none;line-height:48px}.side-nav li.active{background-color:rgba(0,0,0,0.05)}.side-nav a{color:rgba(0,0,0,0.87);display:block;font-size:14px;font-weight:500;height:48px;line-height:48px;padding:0 32px}.side-nav a:hover{background-color:rgba(0,0,0,0.05)}.side-nav a.btn,.side-nav a.btn-large,.side-nav a.btn-large,.side-nav a.btn-flat,.side-nav a.btn-floating{margin:10px 15px}.side-nav a.btn,.side-nav a.btn-large,.side-nav a.btn-large,.side-nav a.btn-floating{color:#fff}.side-nav a.btn-flat{color:#343434}.side-nav a.btn:hover,.side-nav a.btn-large:hover,.side-nav a.btn-large:hover{background-color:#2bbbad}.side-nav a.btn-floating:hover{background-color:#26a69a}.side-nav li>a>i,.side-nav li>a>[class^="mdi-"],.side-nav li>a>[class*="mdi-"],.side-nav li>a>i.material-icons{float:left;height:48px;line-height:48px;margin:0 32px 0 0;width:24px;color:rgba(0,0,0,0.54)}.side-nav .divider{margin:8px 0 0 0}.side-nav .subheader{cursor:initial;pointer-events:none;color:rgba(0,0,0,0.54);font-size:14px;font-weight:500;line-height:48px}.side-nav .subheader:hover{background-color:transparent}.side-nav .userView{position:relative;padding:32px 32px 0;margin-bottom:8px}.side-nav .userView>a{height:auto;padding:0}.side-nav .userView>a:hover{background-color:transparent}.side-nav .userView .background{overflow:hidden;position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1}.side-nav .userView .circle,.side-nav .userView .name,.side-nav .userView .email{display:block}.side-nav .userView .circle{height:64px;width:64px}.side-nav .userView .name,.side-nav .userView .email{font-size:14px;line-height:24px}.side-nav .userView .name{margin-top:16px;font-weight:500}.side-nav .userView .email{padding-bottom:16px;font-weight:400}.drag-target{height:100%;width:10px;position:fixed;top:0;z-index:998}.side-nav.fixed{left:0;-webkit-transform:translateX(0);transform:translateX(0);position:fixed}.side-nav.fixed.right-aligned{right:0;left:auto}@media only screen and (max-width: 992px){.side-nav.fixed{-webkit-transform:translateX(-105%);transform:translateX(-105%)}.side-nav.fixed.right-aligned{-webkit-transform:translateX(105%);transform:translateX(105%)}.side-nav a{padding:0 16px}.side-nav .userView{padding:16px 16px 0}}.side-nav .collapsible-body>ul:not(.collapsible)>li.active,.side-nav.fixed .collapsible-body>ul:not(.collapsible)>li.active{background-color:#ee6e73}.side-nav .collapsible-body>ul:not(.collapsible)>li.active a,.side-nav.fixed .collapsible-body>ul:not(.collapsible)>li.active a{color:#fff}#sidenav-overlay{position:fixed;top:0;left:0;right:0;height:120vh;background-color:rgba(0,0,0,0.5);z-index:997;will-change:opacity}.preloader-wrapper{display:inline-block;position:relative;width:48px;height:48px}.preloader-wrapper.small{width:36px;height:36px}.preloader-wrapper.big{width:64px;height:64px}.preloader-wrapper.active{-webkit-animation:container-rotate 1568ms linear infinite;animation:container-rotate 1568ms linear infinite}@-webkit-keyframes container-rotate{to{-webkit-transform:rotate(360deg)}}@keyframes container-rotate{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-layer{position:absolute;width:100%;height:100%;opacity:0;border-color:#26a69a}.spinner-blue,.spinner-blue-only{border-color:#4285f4}.spinner-red,.spinner-red-only{border-color:#db4437}.spinner-yellow,.spinner-yellow-only{border-color:#f4b400}.spinner-green,.spinner-green-only{border-color:#0f9d58}.active .spinner-layer.spinner-blue{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-red{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-yellow{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-green{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer,.active .spinner-layer.spinner-blue-only,.active .spinner-layer.spinner-red-only,.active .spinner-layer.spinner-yellow-only,.active .spinner-layer.spinner-green-only{opacity:1;-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}@-webkit-keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg)}}@keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg);transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg);transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg);transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg);transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg);transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg);transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg);transform:rotate(1080deg)}}@-webkit-keyframes blue-fade-in-out{from{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}100%{opacity:1}}@keyframes blue-fade-in-out{from{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}100%{opacity:1}}@-webkit-keyframes red-fade-in-out{from{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}}@keyframes red-fade-in-out{from{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}}@-webkit-keyframes yellow-fade-in-out{from{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}}@keyframes yellow-fade-in-out{from{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}}@-webkit-keyframes green-fade-in-out{from{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}100%{opacity:0}}@keyframes green-fade-in-out{from{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}100%{opacity:0}}.gap-patch{position:absolute;top:0;left:45%;width:10%;height:100%;overflow:hidden;border-color:inherit}.gap-patch .circle{width:1000%;left:-450%}.circle-clipper{display:inline-block;position:relative;width:50%;height:100%;overflow:hidden;border-color:inherit}.circle-clipper .circle{width:200%;height:100%;border-width:3px;border-style:solid;border-color:inherit;border-bottom-color:transparent !important;border-radius:50%;-webkit-animation:none;animation:none;position:absolute;top:0;right:0;bottom:0}.circle-clipper.left .circle{left:0;border-right-color:transparent !important;-webkit-transform:rotate(129deg);transform:rotate(129deg)}.circle-clipper.right .circle{left:-100%;border-left-color:transparent !important;-webkit-transform:rotate(-129deg);transform:rotate(-129deg)}.active .circle-clipper.left .circle{-webkit-animation:left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .circle-clipper.right .circle{-webkit-animation:right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}@-webkit-keyframes left-spin{from{-webkit-transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg)}}@keyframes left-spin{from{-webkit-transform:rotate(130deg);transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg);transform:rotate(130deg)}}@-webkit-keyframes right-spin{from{-webkit-transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg)}}@keyframes right-spin{from{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}}#spinnerContainer.cooldown{-webkit-animation:container-rotate 1568ms linear infinite,fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1);animation:container-rotate 1568ms linear infinite,fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1)}@-webkit-keyframes fade-out{from{opacity:1}to{opacity:0}}@keyframes fade-out{from{opacity:1}to{opacity:0}}.slider{position:relative;height:400px;width:100%}.slider.fullscreen{height:100%;width:100%;position:absolute;top:0;left:0;right:0;bottom:0}.slider.fullscreen ul.slides{height:100%}.slider.fullscreen ul.indicators{z-index:2;bottom:30px}.slider .slides{background-color:#9e9e9e;margin:0;height:400px}.slider .slides li{opacity:0;position:absolute;top:0;left:0;z-index:1;width:100%;height:inherit;overflow:hidden}.slider .slides li img{height:100%;width:100%;background-size:cover;background-position:center}.slider .slides li .caption{color:#fff;position:absolute;top:15%;left:15%;width:70%;opacity:0}.slider .slides li .caption p{color:#e0e0e0}.slider .slides li.active{z-index:2}.slider .indicators{position:absolute;text-align:center;left:0;right:0;bottom:0;margin:0}.slider .indicators .indicator-item{display:inline-block;position:relative;cursor:pointer;height:16px;width:16px;margin:0 12px;background-color:#e0e0e0;transition:background-color .3s;border-radius:50%}.slider .indicators .indicator-item.active{background-color:#4CAF50}.carousel{overflow:hidden;position:relative;width:100%;height:400px;-webkit-perspective:500px;perspective:500px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform-origin:0% 50%;transform-origin:0% 50%}.carousel.carousel-slider{top:0;left:0;height:0}.carousel.carousel-slider .carousel-fixed-item{position:absolute;left:0;right:0;bottom:20px;z-index:1}.carousel.carousel-slider .carousel-fixed-item.with-indicators{bottom:68px}.carousel.carousel-slider .carousel-item{width:100%;height:100%;min-height:400px;position:absolute;top:0;left:0}.carousel.carousel-slider .carousel-item h2{font-size:24px;font-weight:500;line-height:32px}.carousel.carousel-slider .carousel-item p{font-size:15px}.carousel .carousel-item{display:none;width:200px;height:200px;position:absolute;top:0;left:0}.carousel .carousel-item img{width:100%}.carousel .indicators{position:absolute;text-align:center;left:0;right:0;bottom:0;margin:0}.carousel .indicators .indicator-item{display:inline-block;position:relative;cursor:pointer;height:8px;width:8px;margin:24px 4px;background-color:rgba(255,255,255,0.5);transition:background-color .3s;border-radius:50%}.carousel .indicators .indicator-item.active{background-color:#fff}.picker{font-size:16px;text-align:left;line-height:1.2;color:#000000;position:absolute;z-index:10000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.picker__input{cursor:default}.picker__input.picker__input--active{border-color:#0089ec}.picker__holder{width:100%;overflow-y:auto;-webkit-overflow-scrolling:touch}/*!
14
+ * Default mobile-first, responsive styling for pickadate.js
15
+ * Demo: http://amsul.github.io/pickadate.js
16
+ */.picker__holder,.picker__frame{bottom:0;left:0;right:0;top:100%}.picker__holder{position:fixed;transition:background 0.15s ease-out, top 0s 0.15s;-webkit-backface-visibility:hidden}.picker__frame{position:absolute;margin:0 auto;min-width:256px;width:300px;max-height:350px;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);-moz-opacity:0;opacity:0;transition:all 0.15s ease-out}@media (min-height: 28.875em){.picker__frame{overflow:visible;top:auto;bottom:-100%;max-height:80%}}@media (min-height: 40.125em){.picker__frame{margin-bottom:7.5%}}.picker__wrap{display:table;width:100%;height:100%}@media (min-height: 28.875em){.picker__wrap{display:block}}.picker__box{background:#ffffff;display:table-cell;vertical-align:middle}@media (min-height: 28.875em){.picker__box{display:block;border:1px solid #777777;border-top-color:#898989;border-bottom-width:0;border-radius:5px 5px 0 0;box-shadow:0 12px 36px 16px rgba(0,0,0,0.24)}}.picker--opened .picker__holder{top:0;background:transparent;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#1E000000,endColorstr=#1E000000)";zoom:1;background:rgba(0,0,0,0.32);transition:background 0.15s ease-out}.picker--opened .picker__frame{top:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100);-moz-opacity:1;opacity:1}@media (min-height: 35.875em){.picker--opened .picker__frame{top:10%;bottom:auto}}.picker__input.picker__input--active{border-color:#E3F2FD}.picker__frame{margin:0 auto;max-width:325px}@media (min-height: 38.875em){.picker--opened .picker__frame{top:10%;bottom:auto}}.picker__box{padding:0 1em}.picker__header{text-align:center;position:relative;margin-top:.75em}.picker__month,.picker__year{display:inline-block;margin-left:.25em;margin-right:.25em}.picker__select--month,.picker__select--year{height:2em;padding:0;margin-left:.25em;margin-right:.25em}.picker__select--month.browser-default{display:inline;background-color:#FFFFFF;width:40%}.picker__select--year.browser-default{display:inline;background-color:#FFFFFF;width:26%}.picker__select--month:focus,.picker__select--year:focus{border-color:rgba(0,0,0,0.05)}.picker__nav--prev,.picker__nav--next{position:absolute;padding:.5em 1.25em;width:1em;height:1em;box-sizing:content-box;top:-0.25em}.picker__nav--prev{left:-1em;padding-right:1.25em}.picker__nav--next{right:-1em;padding-left:1.25em}.picker__nav--disabled,.picker__nav--disabled:hover,.picker__nav--disabled:before,.picker__nav--disabled:before:hover{cursor:default;background:none;border-right-color:#f5f5f5;border-left-color:#f5f5f5}.picker__table{text-align:center;border-collapse:collapse;border-spacing:0;table-layout:fixed;font-size:1rem;width:100%;margin-top:.75em;margin-bottom:.5em}.picker__table th,.picker__table td{text-align:center}.picker__table td{margin:0;padding:0}.picker__weekday{width:14.285714286%;font-size:.75em;padding-bottom:.25em;color:#999999;font-weight:500}@media (min-height: 33.875em){.picker__weekday{padding-bottom:.5em}}.picker__day--today{position:relative;color:#595959;letter-spacing:-.3;padding:.75rem 0;font-weight:400;border:1px solid transparent}.picker__day--disabled:before{border-top-color:#aaaaaa}.picker__day--infocus:hover{cursor:pointer;color:#000;font-weight:500}.picker__day--outfocus{display:none;padding:.75rem 0;color:#fff}.picker__day--outfocus:hover{cursor:pointer;color:#dddddd;font-weight:500}.picker__day--highlighted:hover,.picker--focused .picker__day--highlighted{cursor:pointer}.picker__day--selected,.picker__day--selected:hover,.picker--focused .picker__day--selected{border-radius:50%;-webkit-transform:scale(0.75);transform:scale(0.75);background:#0089ec;color:#ffffff}.picker__day--disabled,.picker__day--disabled:hover,.picker--focused .picker__day--disabled{background:#f5f5f5;border-color:#f5f5f5;color:#dddddd;cursor:default}.picker__day--highlighted.picker__day--disabled,.picker__day--highlighted.picker__day--disabled:hover{background:#bbbbbb}.picker__footer{text-align:center;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.picker__button--today,.picker__button--clear,.picker__button--close{border:1px solid #ffffff;background:#ffffff;font-size:.8em;padding:.66em 0;font-weight:bold;width:33%;display:inline-block;vertical-align:bottom}.picker__button--today:hover,.picker__button--clear:hover,.picker__button--close:hover{cursor:pointer;color:#000000;background:#b1dcfb;border-bottom-color:#b1dcfb}.picker__button--today:focus,.picker__button--clear:focus,.picker__button--close:focus{background:#b1dcfb;border-color:rgba(0,0,0,0.05);outline:none}.picker__button--today:before,.picker__button--clear:before,.picker__button--close:before{position:relative;display:inline-block;height:0}.picker__button--today:before,.picker__button--clear:before{content:" ";margin-right:.45em}.picker__button--today:before{top:-0.05em;width:0;border-top:0.66em solid #0059bc;border-left:.66em solid transparent}.picker__button--clear:before{top:-0.25em;width:.66em;border-top:3px solid #ee2200}.picker__button--close:before{content:"\D7";top:-0.1em;vertical-align:top;font-size:1.1em;margin-right:.35em;color:#777777}.picker__button--today[disabled],.picker__button--today[disabled]:hover{background:#f5f5f5;border-color:#f5f5f5;color:#dddddd;cursor:default}.picker__button--today[disabled]:before{border-top-color:#aaaaaa}.picker__box{border-radius:2px;overflow:hidden}.picker__date-display{text-align:center;background-color:#26a69a;color:#fff;padding-bottom:15px;font-weight:300}.picker__nav--prev:hover,.picker__nav--next:hover{cursor:pointer;color:#000000;background:#a1ded8}.picker__weekday-display{background-color:#1f897f;padding:10px;font-weight:200;letter-spacing:.5;font-size:1rem;margin-bottom:15px}.picker__month-display{text-transform:uppercase;font-size:2rem}.picker__day-display{font-size:4.5rem;font-weight:400}.picker__year-display{font-size:1.8rem;color:rgba(255,255,255,0.4)}.picker__box{padding:0}.picker__calendar-container{padding:0 1rem}.picker__calendar-container thead{border:none}.picker__table{margin-top:0;margin-bottom:.5em}.picker__day--infocus{color:#595959;letter-spacing:-.3;padding:.75rem 0;font-weight:400;border:1px solid transparent}.picker__day.picker__day--today{color:#26a69a}.picker__day.picker__day--today.picker__day--selected{color:#fff}.picker__weekday{font-size:.9rem}.picker__day--selected,.picker__day--selected:hover,.picker--focused .picker__day--selected{border-radius:50%;-webkit-transform:scale(0.9);transform:scale(0.9);background-color:#26a69a;color:#ffffff}.picker__day--selected.picker__day--outfocus,.picker__day--selected:hover.picker__day--outfocus,.picker--focused .picker__day--selected.picker__day--outfocus{background-color:#a1ded8}.picker__footer{text-align:right;padding:5px 10px}.picker__close,.picker__today{font-size:1.1rem;padding:0 1rem;color:#26a69a}.picker__nav--prev:before,.picker__nav--next:before{content:" ";border-top:.5em solid transparent;border-bottom:.5em solid transparent;border-right:0.75em solid #676767;width:0;height:0;display:block;margin:0 auto}.picker__nav--next:before{border-right:0;border-left:0.75em solid #676767}button.picker__today:focus,button.picker__clear:focus,button.picker__close:focus{background-color:#a1ded8}.picker__list{list-style:none;padding:0.75em 0 4.2em;margin:0}.picker__list-item{border-bottom:1px solid #dddddd;border-top:1px solid #dddddd;margin-bottom:-1px;position:relative;background:#ffffff;padding:.75em 1.25em}@media (min-height: 46.75em){.picker__list-item{padding:.5em 1em}}.picker__list-item:hover{cursor:pointer;color:#000000;background:#b1dcfb;border-color:#0089ec;z-index:10}.picker__list-item--highlighted{border-color:#0089ec;z-index:10}.picker__list-item--highlighted:hover,.picker--focused .picker__list-item--highlighted{cursor:pointer;color:#000000;background:#b1dcfb}.picker__list-item--selected,.picker__list-item--selected:hover,.picker--focused .picker__list-item--selected{background:#0089ec;color:#ffffff;z-index:10}.picker__list-item--disabled,.picker__list-item--disabled:hover,.picker--focused .picker__list-item--disabled{background:#f5f5f5;border-color:#f5f5f5;color:#dddddd;cursor:default;border-color:#dddddd;z-index:auto}.picker--time .picker__button--clear{display:block;width:80%;margin:1em auto 0;padding:1em 1.25em;background:none;border:0;font-weight:500;font-size:.67em;text-align:center;text-transform:uppercase;color:#666}.picker--time .picker__button--clear:hover,.picker--time .picker__button--clear:focus{color:#000000;background:#b1dcfb;background:#ee2200;border-color:#ee2200;cursor:pointer;color:#ffffff;outline:none}.picker--time .picker__button--clear:before{top:-0.25em;color:#666;font-size:1.25em;font-weight:bold}.picker--time .picker__button--clear:hover:before,.picker--time .picker__button--clear:focus:before{color:#ffffff}.picker--time .picker__frame{min-width:256px;max-width:320px}.picker--time .picker__box{font-size:1em;background:#f2f2f2;padding:0}@media (min-height: 40.125em){.picker--time .picker__box{margin-bottom:5em}}
admin/css/wpvr-admin.css ADDED
@@ -0,0 +1,1222 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * All of the CSS for your admin-specific functionality should be
3
+ * included in this file.
4
+ */
5
+
6
+ @import url('https://fonts.googleapis.com/css?family=Roboto:300,300i,400,500,700,900');
7
+
8
+ div.custom-tooltip span {
9
+ visibility: hidden;
10
+ position: absolute;
11
+ border-radius: 3px;
12
+ background-color: #fff;
13
+ color: #000;
14
+ text-align: center;
15
+ padding: 5px 10px;
16
+ cursor: default;
17
+ margin: 0 0px 0px 12px !important;
18
+ bottom: 40px;
19
+ transform: translateX(-50%);
20
+ }
21
+ div.custom-tooltip:hover span{
22
+ visibility: visible;
23
+ }
24
+ div.custom-tooltip:hover span:after {
25
+ content: '';
26
+ position: absolute;
27
+ width: 0;
28
+ height: 0;
29
+ border-width: 10px;
30
+ border-style: solid;
31
+ border-color: #fff transparent transparent transparent;
32
+ bottom: -20px;
33
+ left: -10px;
34
+ margin: 0 50%;
35
+ }
36
+
37
+ #custom-ifram {
38
+ position: absolute;
39
+ top: 12%;
40
+ left: 50%;
41
+ transform: translateX(-50%);
42
+ z-index: 99;
43
+ width: 90%;
44
+ }
45
+
46
+ .iframe-wrapper {
47
+ max-width: 600px;
48
+ position: relative;
49
+ margin: 0 auto;
50
+ width: 100%;
51
+ height: 400px;
52
+ }
53
+ .iframe-wrapper .pnlm-container{
54
+ height: 100%;
55
+ width: 100%;
56
+ }
57
+ .pano-wrap:before {
58
+ content: "";
59
+ position: absolute;
60
+ left: 0;
61
+ top: 0;
62
+ background: rgba(0,0,0,0.4);
63
+ width: 100%;
64
+ height: 100%;
65
+ z-index: 99;
66
+ opacity: 0;
67
+ visibility: hidden;
68
+ transition: all 0.4s linear;
69
+ }
70
+ .iframe-wrapper.show-modal .pano-wrap:before {
71
+ opacity: 1;
72
+ visibility: visible;
73
+ }
74
+
75
+ .iframe-wrapper #cross {
76
+ background: #fff;
77
+ width: 30px;
78
+ height: 30px;
79
+ color: red;
80
+ line-height: 30px;
81
+ position: absolute;
82
+ top: 6px;
83
+ z-index: 99;
84
+ text-align: center;
85
+ right: 6px;
86
+ border-radius: 100%;
87
+ cursor: pointer;
88
+ opacity: 0;
89
+ visibility: hidden;
90
+ transition: all 0.4s linear;
91
+ }
92
+ .iframe-wrapper.show-modal #cross {
93
+ opacity: 1;
94
+ visibility: visible;
95
+ }
96
+
97
+ #custom-ifram p {
98
+ background-color: #fff;
99
+ padding: 10px;
100
+ margin: auto;
101
+ border-radius: 5px;
102
+ }
103
+
104
+ .custom-tooltip p {
105
+ background-color: #fff;
106
+ padding: 10px 0;
107
+ margin: auto;
108
+ border-radius: 5px;
109
+ width: 500px;
110
+ font-size: 16px;
111
+ line-height: 26px;
112
+ }
113
+
114
+ #custom-ifram img {
115
+ max-width: 100%;
116
+ margin: 0 auto;
117
+ display: block;
118
+ }
119
+
120
+ #custom-ifram iframe {
121
+ max-width: 100%;
122
+ margin: 0 auto;
123
+ display: block;
124
+ }
125
+
126
+ .custom-tooltip span img {
127
+ height: 220px;
128
+ width: 400px;
129
+ }
130
+
131
+ @media (max-width: 1199px){
132
+ .pnlm-container {
133
+ width: 100%!important;
134
+ }
135
+ div.custom-tooltip span {
136
+ width: 420px!important;
137
+ }
138
+ .custom-tooltip p {
139
+ width: 420px;
140
+ }
141
+
142
+ .custom-tooltip span img {
143
+ height: 230px;
144
+ width: 420px;
145
+ }
146
+
147
+ }
148
+ @media (max-width: 991px){
149
+ div.custom-tooltip span {
150
+ width: 540px!important;
151
+ }
152
+ .custom-tooltip p {
153
+ width: 530px;
154
+ }
155
+ .custom-tooltip span img {
156
+ height: 310px;
157
+ width: 540px;
158
+ }
159
+
160
+ }
161
+
162
+
163
+ /*------------------------------panolens tab style-----------------------------*/
164
+ .pano-setup *{
165
+ box-sizing: border-box;
166
+ }
167
+ .pano-setup {
168
+ position: relative;
169
+ font-family: 'Roboto', sans-serif;
170
+ }
171
+ .rex-pano-tabs {
172
+ position: relative;
173
+ display: flex;
174
+ flex-flow: row;
175
+ align-items: flex-start;
176
+ justify-content: flex-start;
177
+ background: #f5f5f5;
178
+ }
179
+ .rex-pano-tabs .rex-pano-tab-nav {
180
+ text-align: left;
181
+ width: 22%;
182
+ padding: 50px 40px;
183
+ }
184
+ .rex-pano-tabs .rex-pano-tab-nav ul {
185
+ margin: 0;
186
+ }
187
+ .rex-pano-tabs .rex-pano-tab-nav li {
188
+ display: block;
189
+ margin: 0 auto;
190
+ width: 220px;
191
+ }
192
+ .rex-pano-tabs .rex-pano-tab-nav li span {
193
+ text-transform: uppercase;
194
+ color: #555555;
195
+ cursor: pointer;
196
+ font-weight: 500;
197
+ font-size: 16px;
198
+ -webkit-user-select: none;
199
+ -moz-user-select: none;
200
+ -ms-user-select: none;
201
+ user-select: none;
202
+ border: 1px solid #c3d3fc;
203
+ display: block;
204
+ height: 55px;
205
+ text-align: center;
206
+ line-height: 55px;
207
+ padding: 0 20px;
208
+ border-radius: 5px;
209
+ margin-bottom: 20px;
210
+ position: relative;
211
+ transition: all 0.25s ease-in-out;
212
+ }
213
+ .rex-pano-tabs .rex-pano-tab-nav li span:after {
214
+ content: "";
215
+ position: absolute;
216
+ right: -9px;
217
+ top: 50%;
218
+ width: 20px;
219
+ height: 20px;
220
+ background: #4775f6;
221
+ opacity: 0;
222
+ visibility: hidden;
223
+ border-radius: 2px;
224
+ transform-origin: center;
225
+ -webkit-transform: translateY(-50%) rotate(45deg);
226
+ -ms-transform: translateY(-50%) rotate(45deg);
227
+ -o-transform: translateY(-50%) rotate(45deg);
228
+ transform: translateY(-50%) rotate(45deg);
229
+ transition: all 0.2s ease-in-out;
230
+
231
+ }
232
+
233
+ .rex-pano-tabs .rex-pano-tab-nav li.active > span:after{
234
+ opacity: 1;
235
+ visibility: visible;
236
+ }
237
+ .rex-pano-tabs .rex-pano-tab-nav li span i {
238
+ font-size: 20px;
239
+ margin-right: 5px;
240
+ }
241
+ .rex-pano-tabs .rex-pano-tab-nav li.scene span i {
242
+ margin-right: 18px;
243
+ }
244
+ .rex-pano-tabs .rex-pano-tab-nav li:hover > span,
245
+ .rex-pano-tabs .rex-pano-tab-nav li.active > span {
246
+ color: #fff;
247
+ background: #4775f6;
248
+ box-shadow: 0px 7px 25px 0px rgba(56, 84, 163, 0.2);
249
+ }
250
+ .rex-pano-sub-tabs .rex-pano-tab,
251
+ .rex-pano-tabs .rex-pano-tab {
252
+ display: none;
253
+ }
254
+ .rex-pano-sub-tabs .rex-pano-tab.active,
255
+ .rex-pano-tabs .rex-pano-tab.active {
256
+ display: block !important;
257
+ }
258
+
259
+ .pano-alert {
260
+ position: absolute;
261
+ top: 50%;
262
+ left: 62%;
263
+ display: none;
264
+ -webkit-transform: translate(-50%, -50%);
265
+ -ms-transform: translate(-50%, -50%);
266
+ -o-transform: translate(-50%, -50%);
267
+ transform: translate(-50%, -50%);
268
+ z-index: 9;
269
+ padding: 30px 20px;
270
+ background-color: #f7e0e2;
271
+ border: 1px solid #f5c6cb;
272
+ width: 500px;
273
+ }
274
+ .pano-alert p {
275
+ color: #d85964;
276
+ font-size: 14px;
277
+ margin: 0;
278
+ font-weight: 500;
279
+ text-align: center;
280
+ border-radius: 3px;
281
+ }
282
+ .pano-alert span {
283
+ position: absolute;
284
+ right: -12px;
285
+ top: -15px;
286
+ color: #d85964;
287
+ height: 23px;
288
+ line-height: normal;
289
+ text-align: center;
290
+ font-size: 13px;
291
+ padding: 2px 6px;
292
+ cursor: pointer;
293
+ border: 1px solid #f5c6cb;
294
+ width: 23px;
295
+ border-radius: 100%;
296
+ background: #f7e0e2;
297
+ }
298
+
299
+ /*--------------tab content style----------------*/
300
+ .rex-pano-tab-content {
301
+ background: #fff;
302
+ width: 78%;
303
+ border-left: 1px solid #d5e0fd;
304
+ }
305
+ .rex-pano-tab-content .title {
306
+ font-size: 18px;
307
+ font-weight: 600;
308
+ color: #4775f6;
309
+ margin: 0 0 40px 0;
310
+ text-transform: capitalize;
311
+ background: #f9fbff;
312
+ border: 1px solid #ecf1fe;
313
+ padding: 15px 30px;
314
+ margin-bottom: x;
315
+ }
316
+
317
+ .rex-pano-tab-content .single-hotspot .title span {
318
+ color: #252525;
319
+ }
320
+
321
+ .rex-pano-tab-content .title .scene-num,
322
+ .rex-pano-tab-content .single-hotspot .title .hotspot-num {
323
+ color: #4775f6;
324
+ }
325
+
326
+ .rex-pano-tab-content .title i {
327
+ margin-right: 10px;
328
+ }
329
+ .rex-pano-tab-content .rex-pano-tab.general {
330
+ padding: 50px 40px;
331
+ }
332
+
333
+ /*----checkbox style----*/
334
+ .rex-pano-tab .radio-btn {
335
+ position: relative;
336
+ margin: 0;
337
+ }
338
+ .rex-pano-tab .styled-radio {
339
+ position: absolute;
340
+ opacity: 0;
341
+ visibility: hidden;
342
+ }
343
+ .rex-pano-tab .styled-radio + label {
344
+ position: relative;
345
+ cursor: pointer;
346
+ padding: 0;
347
+ color: #555555;
348
+ font-size: 15px;
349
+ margin-bottom: 3px;
350
+ letter-spacing: 0;
351
+ width: 30px;
352
+ margin: 0 auto;
353
+ }
354
+ .rex-pano-tab .styled-radio + label:before {
355
+ border: 1px solid #ddd;
356
+ border-radius: 100%;
357
+ content: "";
358
+ display: inline-block;
359
+ height: 18px;
360
+ margin-right: 6px;
361
+ vertical-align: text-top;
362
+ width: 18px;
363
+
364
+ -webkit-transition: all 0.3s ease;
365
+ -o-transition: all 0.3s ease;
366
+ transition: all 0.3s ease;
367
+ }
368
+ .rex-pano-tab .styled-radio:focus + label:before {
369
+ box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.12);
370
+ }
371
+ .rex-pano-tab .styled-radio:disabled + label {
372
+ color: #b8b8b8;
373
+ cursor: auto;
374
+ }
375
+ .rex-pano-tab .styled-radio:disabled + label:before {
376
+ box-shadow: none;
377
+ background: #ddd;
378
+ }
379
+ .rex-pano-tab .styled-radio:checked + label:before {
380
+ border-color:#4775f6;
381
+ }
382
+ .rex-pano-tab .styled-radio + label:after {
383
+ content: "";
384
+ color: #000;
385
+ left: 5px;
386
+ position: absolute;
387
+ top: 5px;
388
+ font-size: 18px;
389
+ opacity: 0;
390
+ visibility: hidden;
391
+ width: 10px;
392
+ height: 10px;
393
+ background: #4775f6;
394
+ border-radius: 100%;
395
+
396
+ -webkit-transition: all 0.3s ease;;
397
+ -o-transition: all 0.3s ease;;
398
+ transition: all 0.3s ease;;
399
+ }
400
+ .rex-pano-tab .styled-radio:checked + label:after {
401
+ opacity: 1;
402
+ visibility: visible;
403
+ }
404
+ /*--------end checkbox style-------*/
405
+
406
+
407
+ .rex-pano-tab .single-settings {
408
+ display: flex;
409
+ flex-flow: row;
410
+ align-items: center;
411
+ justify-content: flex-start;
412
+ margin-bottom: 30px;
413
+ }
414
+ .rex-pano-tab .single-settings:last-child {
415
+ margin-bottom: 0px;
416
+ }
417
+ .rex-pano-tab .single-settings span {
418
+ min-width: 170px;
419
+ font-size: 16px;
420
+ display: block;
421
+ color: #555555;
422
+ font-weight: 600;
423
+ }
424
+ .rex-pano-tab .single-settings ul{
425
+ margin: 0;
426
+ }
427
+ .rex-pano-tab .single-settings ul li {
428
+ display: inline-block;
429
+ margin-right: 20px;
430
+ }
431
+
432
+ .rex-pano-tab input[type="password"],
433
+ .rex-pano-tab input[type="email"],
434
+ .rex-pano-tab input[type="number"],
435
+ .rex-pano-tab input[type="text"] {
436
+ border: 1px solid #dae3fd;
437
+ box-shadow: none;
438
+ width: 100%;
439
+ max-width: 400px;
440
+ height: 46px;
441
+ padding: 10px 20px;
442
+ font-size: 16px;
443
+ color: #454545;
444
+ border-radius: 3px;
445
+ }
446
+
447
+
448
+ /*------------sub tab style----------*/
449
+ .rex-pano-sub-tabs {
450
+
451
+ }
452
+ .rex-pano-sub-tabs .rex-pano-tab-nav {
453
+ width: auto;
454
+ padding: 50px 40px 30px;
455
+ border-bottom: 1px solid #c3d3fc;
456
+ }
457
+ .rex-pano-sub-tabs .rex-pano-tab-nav ul li {
458
+ display: inline-block;
459
+ margin-right: 17px;
460
+ margin-bottom: 10px;
461
+ width: auto;
462
+ }
463
+ .rex-pano-sub-tabs .rex-pano-tab-nav ul li:last-child {
464
+ margin-right: 0;
465
+ }
466
+ .rex-pano-sub-tabs .rex-pano-tab-nav li span {
467
+ text-transform: capitalize;
468
+ color: #494b51;
469
+ font-size: 16px;
470
+ border: 1px solid #c3d3fc;
471
+ height: 45px;
472
+ margin-bottom: 0;
473
+ line-height: 45px;
474
+ padding: 0 30px;
475
+ transition: all 0.25s ease-in-out;
476
+ }
477
+ .rex-pano-sub-tabs .rex-pano-tab-nav li span:after {
478
+ right: 50%;
479
+ top: inherit;
480
+ bottom: -6px;
481
+ width: 14px;
482
+ height: 14px;
483
+ -webkit-transform: translateX(50%) rotate(45deg);
484
+ -ms-transform: translateX(50%) rotate(45deg);
485
+ -o-transform: translateX(50%) rotate(45deg);
486
+ transform: translateX(50%) rotate(45deg);
487
+ transition: all 0.2s ease-in-out 0.1s;
488
+ }
489
+ .rex-pano-sub-tabs .rex-pano-tab-nav li.add > span,
490
+ .rex-pano-sub-tabs .rex-pano-tab-nav li:not(.active):hover > span {
491
+ border-color: #4775f6;
492
+ box-shadow: none;
493
+ color: #4775f6;
494
+ background: transparent;
495
+ }
496
+
497
+ .rex-pano-sub-tabs .rex-pano-tab-nav li span .delete {
498
+ color: #4775f6;
499
+ border: 1px solid #4775f6;
500
+ font-size: 12px;
501
+ display: block;
502
+ position: absolute;
503
+ top: -12px;
504
+ right: -8px;
505
+ background: #fff;
506
+ width: 26px;
507
+ height: 26px;
508
+ border-radius: 100%;
509
+ cursor: pointer;
510
+ opacity: 0;
511
+ visibility: hidden;
512
+ transition: all 0.25s ease-in-out;
513
+ }
514
+ .rex-pano-sub-tabs .rex-pano-tab-nav li span .delete:focus{
515
+ box-shadow: none;
516
+ outline: none;
517
+ }
518
+ .rex-pano-sub-tabs .rex-pano-tab-nav li span .delete i {
519
+ font-size: 14px;
520
+ margin: 0;
521
+ }
522
+ .rex-pano-sub-tabs .rex-pano-tab-nav li:hover span .delete,
523
+ .rex-pano-sub-tabs .rex-pano-tab-nav li.active span .delete {
524
+ visibility: visible;
525
+ opacity: 1;
526
+ }
527
+
528
+ .rex-pano-sub-tabs .rex-pano-tab-nav li.add span:after{
529
+ display: none;
530
+ }
531
+ .rex-pano-sub-tabs .rex-pano-tab-nav li.add span > i {
532
+ font-size: 17px;
533
+ margin-right: 0;
534
+ }
535
+
536
+
537
+ /*-----------sub tab content style-----------*/
538
+ .rex-pano-sub-tabs .rex-pano-tab-content {
539
+ width: 100%;
540
+ padding: 30px 40px;
541
+ border-left: none;
542
+ position: relative;
543
+ }
544
+ .single-hotspot .hotspot-setting,
545
+ .single-scene .scene-setting {
546
+ margin-bottom: 21px;
547
+ }
548
+ .single-hotspot .hotspot-setting label,
549
+ .single-scene .scene-setting label {
550
+ color: #494b51;
551
+ font-size: 18px;
552
+ font-weight: 500;
553
+ display: block;
554
+ margin-bottom: 10px;
555
+ }
556
+ .single-hotspot .hotspot-setting select,
557
+ .single-hotspot .hotspot-setting textarea,
558
+ .single-hotspot .hotspot-setting input,
559
+ .single-scene .scene-setting input{
560
+ border: 1px solid #dae3fd;
561
+ box-shadow: none;
562
+ width: 100%;
563
+ max-width: 400px;
564
+ height: 46px;
565
+ padding: 10px 20px;
566
+ font-size: 16px;
567
+ color: #454545;
568
+ border-radius: 3px;
569
+ }
570
+ .single-scene .scene-setting .form-group img {
571
+ max-width: 400px;
572
+ width: 100%;
573
+ margin-bottom: 15px;
574
+ }
575
+ .single-scene .scene-setting input.scene-upload {
576
+ text-transform: uppercase;
577
+ font-weight: 500;
578
+ color: #fff;
579
+ background: #4775f6;
580
+ border: none;
581
+ cursor: pointer;
582
+ transition: all 0.3s ease;
583
+ }
584
+ .single-scene .scene-setting input.scene-upload:hover {
585
+ background: #3869f3;
586
+ }
587
+ .single-scene .scene-setting input.scene-upload:focus {
588
+ box-shadow: none;
589
+ outline: inherit;
590
+ }
591
+
592
+
593
+
594
+
595
+
596
+ /*--------------------hotspot style-------------------*/
597
+ .clearfix::before,
598
+ .clearfix::after {
599
+ content: " ";
600
+ display: table;
601
+ clear: both;
602
+ }
603
+ .hotspot-setup .rex-pano-tab-nav {
604
+ padding: 20px 0px 30px;
605
+ }
606
+ .hotspot-setup .rex-pano-tab-content {
607
+ padding: 30px 0px;
608
+ }
609
+ .hotspot-setup .single-hotspot > .wrapper,
610
+ .hotspot-setup .single-hotspot .hotspot-type {
611
+ float: left;
612
+ width: 50%;
613
+ }
614
+ .hotspot-setup .single-hotspot > .wrapper{
615
+ padding-right: 30px;
616
+ }
617
+ .single-hotspot .hotspot-setting textarea {
618
+ height: auto;
619
+ resize: none;
620
+ min-height: 110px;
621
+ }
622
+ .single-hotspot .hotspot-setting select,
623
+ .single-hotspot .hotspot-setting textarea,
624
+ .single-hotspot .hotspot-setting input{
625
+ max-width: 100%;
626
+ }
627
+ .single-hotspot .hotspot-type .hotspot-scene,
628
+ .single-hotspot .hotspot-type .hotspot-hover,
629
+ .single-hotspot .hotspot-type .hotspot-content,
630
+ .single-hotspot .hotspot-type .hotspot-url,
631
+ .single-hotspot .hotspot-type select {
632
+ margin-bottom: 21px;
633
+ }
634
+
635
+ button.delete-hotspot,
636
+ button.delete-scene {
637
+ position: absolute;
638
+ top: 36px;
639
+ right: 46px;
640
+ text-transform: capitalize;
641
+ color: #fff;
642
+ font-size: 20px;
643
+ border: 1px solid #c3d3fc;
644
+ height: 38px;
645
+ margin-bottom: 0;
646
+ line-height: 38px;
647
+ padding: 0 15px;
648
+ transition: all 0.25s ease-in-out;
649
+ background: #4775f6;
650
+ cursor: pointer;
651
+ border-radius: 5px;
652
+ }
653
+ button.delete-hotspot:hover,
654
+ button.delete-scene:hover {
655
+ background: #3869f3;
656
+ }
657
+ button#panolenspreview:focus,
658
+ button.delete-hotspot:focus,
659
+ button.delete-scene:focus {
660
+ outline: none;
661
+ }
662
+ button.delete-hotspot{
663
+ right: 5px;
664
+ }
665
+
666
+
667
+ /*--------preview-btn-area---------*/
668
+ .preview-btn-wrapper{
669
+ padding: 0px 40px;
670
+ }
671
+ .preview-btn-area {
672
+ padding: 55px 0px;
673
+ border-top: 1px solid #e4eafe;
674
+ }
675
+ .preview-btn-area #panolenspreview {
676
+ text-transform: capitalize;
677
+ color: #fff;
678
+ font-size: 16px;
679
+ border: 1px solid #c3d3fc;
680
+ height: 45px;
681
+ font-weight: 500;
682
+ margin-bottom: 0;
683
+ line-height: 45px;
684
+ padding: 0 30px;
685
+ transition: all 0.25s ease-in-out;
686
+ background: #4775f6;
687
+ cursor: pointer;
688
+ border-radius: 5px;
689
+ box-shadow: 0px 7px 25px 0px rgba(56, 84, 163, 0.2);
690
+ float: right;
691
+ }
692
+ .preview-btn-area #panolenspreview:hover {
693
+ background: #3869f3;
694
+ box-shadow: none;
695
+ }
696
+
697
+ .preview-btn-area #error_occured {
698
+ display: block;
699
+ min-width: 150px;
700
+ min-height: 15px;
701
+ float: left;
702
+ }
703
+ .preview-btn-area #error_occured p {
704
+ background: #fffbfb;
705
+ padding: 10px 25px;
706
+ margin: 0;
707
+ border: 1px solid #ffd9de;
708
+ color: #f93333;
709
+ border-radius: 5px;
710
+ font-size: 16px;
711
+ }
712
+ .preview-btn-area #error_occured p span{
713
+ font-weight: 500;
714
+ }
715
+
716
+
717
+ .hotspot-setup.rex-pano-sub-tabs {
718
+ display: none;
719
+ }
720
+
721
+
722
+
723
+ /*-----------------responsive style------------------*/
724
+ @media (max-width: 1700px){
725
+ .rex-pano-tabs .main-nav li {
726
+ width: 170px;
727
+ }
728
+ .rex-pano-tabs .main-nav li span {
729
+ font-size: 15px;
730
+ height: 50px;
731
+ line-height: 50px;
732
+ }
733
+ .rex-pano-tabs .main-nav li span i {
734
+ font-size: 18px;
735
+ }
736
+ .rex-pano-tabs .main-nav li span:after {
737
+ right: -7px;
738
+ width: 16px;
739
+ height: 16px;
740
+ }
741
+
742
+ }
743
+
744
+ @media (max-width: 1500px){
745
+ .rex-pano-tabs {
746
+ display: block;
747
+ }
748
+ .rex-pano-tabs .main-nav {
749
+ padding: 30px 30px;
750
+ width: 100%;
751
+ }
752
+ .rex-pano-tabs .main-nav li {
753
+ display: inline-block;
754
+ margin-right: 25px;
755
+ }
756
+ .rex-pano-tabs .main-nav li:last-child {
757
+ margin-right: 0px;
758
+ }
759
+ .rex-pano-tabs .main-nav li span {
760
+ margin-bottom: 0;
761
+ }
762
+
763
+ .rex-pano-tab-content {
764
+ width: 100%;
765
+ }
766
+ .rex-pano-tabs .main-nav li span:after {
767
+ right: 50%;
768
+ width: 16px;
769
+ height: 16px;
770
+ top: inherit;
771
+ -webkit-transform: translateX(-50%) rotate(45deg);
772
+ -ms-transform: translateX(-50%) rotate(45deg);
773
+ -o-transform: translateX(-50%) rotate(45deg);
774
+ transform: translateX(50%) rotate(45deg);
775
+ bottom: -8px;
776
+ }
777
+
778
+ }
779
+
780
+ @media (max-width: 1199px){
781
+ .rex-pano-tab-content {
782
+ border-left: none;
783
+ }
784
+ .rex-pano-tabs .main-nav {
785
+ padding: 20px 20px;
786
+ }
787
+ .rex-pano-tabs .main-nav li {
788
+ width: 144px;
789
+ margin-right: 12px;
790
+ margin-bottom: 12px;
791
+ }
792
+ .rex-pano-tabs .main-nav li span {
793
+ padding: 0 10px;
794
+ }
795
+ .rex-pano-tab-content .rex-pano-tab.general {
796
+ padding: 20px 20px;
797
+ }
798
+ .rex-pano-sub-tabs .rex-pano-tab-nav {
799
+ padding: 20px 20px 20px;
800
+ }
801
+ .rex-pano-sub-tabs .rex-pano-tab-content {
802
+ padding: 20px 20px;
803
+ }
804
+ .hotspot-setup .single-hotspot > .wrapper,
805
+ .hotspot-setup .single-hotspot .hotspot-type {
806
+ float: none;
807
+ width: 100%;
808
+ }
809
+ .hotspot-setup .single-hotspot > .wrapper {
810
+ padding-right: 0;
811
+ }
812
+ .hotspot-setup .rex-pano-tab-content {
813
+ padding: 30px 0px 0;
814
+ }
815
+
816
+
817
+ .preview-btn-area {
818
+ padding: 0 0 55px 0px;
819
+ border-top: none;
820
+ }
821
+ .preview-btn-wrapper {
822
+ padding: 0px 20px;
823
+ }
824
+ input.delete-hotspot,
825
+ input.delete-scene {
826
+ position: absolute;
827
+ top: 25px;
828
+ right: 25px;
829
+ }
830
+ input.delete-hotspot {
831
+ right: 5px;
832
+ top: 35px;
833
+ }
834
+ }
835
+
836
+ /**
837
+ * On Boarding Page
838
+ */
839
+
840
+
841
+ .row {
842
+ width: 100%;
843
+ height: auto;
844
+ padding: 15px;
845
+ }
846
+
847
+ .rex-onboarding {
848
+ background: #fff;
849
+ padding: 15px 25px;
850
+ margin-top: -8px;
851
+ border: 1px solid rgba( 0,0,0,0.1 );
852
+ border-top: none;
853
+ position: relative;
854
+ display: flex;
855
+ min-height: 840px;
856
+ width: 100%;
857
+ flex-flow: row;
858
+ justify-content: flex-start;
859
+ }
860
+
861
+ .rex-onboarding .banner-block img {
862
+ width: 100%;
863
+ }
864
+ .rex-onboarding .left {
865
+ float: none!important;
866
+ width: 60%;
867
+ }
868
+
869
+ .rex-onboarding .right {
870
+ width: 40%;
871
+ float: none!important;
872
+ display: flex;
873
+ flex-flow: column;
874
+ align-items: center;
875
+ justify-content: center;
876
+ }
877
+
878
+
879
+ /*.rex-onboarding .wrapper {
880
+ display: flex;
881
+ flex-wrap: wrap;
882
+ flex-flow: row;
883
+ }*/
884
+
885
+
886
+ .onboarding-block {
887
+ background-color: #fff;
888
+ height: 210px;
889
+ box-shadow: 0 1px 4px rgba(0,0,0,0.1);
890
+ }
891
+
892
+
893
+ .onboarding-block .header {
894
+ position: relative;
895
+ padding-left: 65px!important;
896
+ }
897
+ .onboarding-block .header:before {
898
+ content: "";
899
+ position: absolute;
900
+ left: 63px;
901
+ top: 0;
902
+ height: 100%;
903
+ width: 1px;
904
+ background: #eee;
905
+ }
906
+ .onboarding-block .header .title-icon {
907
+ position: absolute;
908
+ left: 15px;
909
+ top: 50%;
910
+ transform: translateY(-50%);
911
+ }
912
+
913
+ .banner-block {
914
+ padding: 8px;
915
+ }
916
+
917
+ .onboarding-block .header {
918
+ overflow: hidden;
919
+ border-bottom: 1px solid rgba(0,0,0,0.1);
920
+ background-color: #fff;
921
+ box-shadow: 0 1px 4px rgba(0,0,0,0.065);
922
+ padding: 0 10px;
923
+ }
924
+
925
+
926
+ .onboarding-block p {
927
+ font-size: 14px;
928
+ }
929
+
930
+ .onboarding-block .body {
931
+ padding: 18px 15px;
932
+ }
933
+
934
+
935
+
936
+
937
+
938
+ .tabs-icon {
939
+ font-size: 10px;
940
+ overflow: hidden;
941
+ }
942
+ .tabs-icon i {
943
+ display: block;
944
+ margin-top: 5px;
945
+ margin-bottom: -15px;
946
+ font-size: 24px;
947
+ }
948
+ .tabs-icon a.active {
949
+ background-color: #F3F3F3;
950
+ }
951
+ .tabs-icon a:focus {
952
+ box-shadow: none;
953
+ outline: none;
954
+ }
955
+ /* OVERWRITE MATERIAL CSS MIN WIDTH FOR MOBILE */
956
+ .tabs .tab {
957
+ min-width: 50px !important
958
+ }
959
+ .tabs .tab-hide {
960
+ display: none;
961
+ }
962
+ .no-pd {
963
+ padding: 0 !important
964
+ }
965
+
966
+
967
+
968
+
969
+
970
+ .rex-onboarding .block-wrapper{
971
+ /*display: flex;
972
+ flex-flow: row;
973
+ justify-content: space-between;
974
+ align-items: flex-start;*/
975
+ }
976
+
977
+ .rex-onboarding .wrapper {
978
+ padding-right: 30px;
979
+ }
980
+ .rex-onboarding .block-wrapper{
981
+ clear: both;
982
+ padding-top: 30px;
983
+ }
984
+ .rex-onboarding .single-block {
985
+ width: 48.4%;
986
+ float: left;
987
+ margin-left: 30px;
988
+ margin-bottom: 30px;
989
+ }
990
+ .rex-onboarding .single-block:nth-child(odd){
991
+ margin-left: 0;
992
+ }
993
+ .rex-onboarding .single-block-full {
994
+ width: 100%;
995
+ clear: left;
996
+ float: none;
997
+ }
998
+
999
+ .rex-onboarding .onboarding-block .header h4 {
1000
+ margin: 1em 0;
1001
+ padding: 0 1.26582em;
1002
+ font-size: 1.185em;
1003
+ font-weight: 600;
1004
+ text-overflow: ellipsis;
1005
+ white-space: nowrap;
1006
+ }
1007
+
1008
+ .rex-onboarding .right .rex-banner {
1009
+ text-align: center;
1010
+ }
1011
+ .rex-onboarding .right .rex-banner img {
1012
+ max-width: 100%;
1013
+ height: auto;
1014
+ }
1015
+ .rex-onboarding .right .rex-banner img.banner-logo {
1016
+ width: auto;
1017
+ }
1018
+ .rex-onboarding .right .rex-banner .update-btn {
1019
+ font-size: 1em;
1020
+ color: #23282d;
1021
+ text-decoration: none;
1022
+ text-transform: uppercase;
1023
+ letter-spacing: .065em;
1024
+ text-align: center;
1025
+ margin: 20px auto 100px;
1026
+ display: block;
1027
+ border: 1px solid rgb(232, 232, 232);
1028
+ border-radius: 4px;
1029
+ padding: 15px;
1030
+ width: 200px;
1031
+ outline: none;
1032
+ box-shadow: none;
1033
+ transition: all .3s;
1034
+ }
1035
+ .rex-onboarding .right .rex-banner .update-btn:hover {
1036
+ border-color: rgb(232, 232, 232);
1037
+ box-shadow: 0 4px 7px 0 rgba(0, 0, 0, 0.10);
1038
+ }
1039
+
1040
+
1041
+ .rex-upgrade h4 {
1042
+ font-size: 22px;
1043
+ font-weight: 600;
1044
+ }
1045
+
1046
+
1047
+ .rex-upgrade .parent {
1048
+ font-family: 'Roboto';
1049
+ counter-reset: my-counter;
1050
+ width: 400px;
1051
+ margin-bottom: 30px;
1052
+ }
1053
+
1054
+ .rex-upgrade .item {
1055
+ position: relative;
1056
+ padding-left: 30px;
1057
+ font-size: 14px;
1058
+ line-height: 20px;
1059
+ margin-bottom: 5px;
1060
+ }
1061
+ .rex-upgrade .item:before {
1062
+ color: white;
1063
+ background-color: #1FB3FB;
1064
+ border-radius: 50%;
1065
+ counter-increment: my-counter;
1066
+ content: counter(my-counter);
1067
+ display: inline-block;
1068
+ height: 20px;
1069
+ line-height: 20px;
1070
+ left: 0;
1071
+ margin-right: 10px;
1072
+ position: absolute;
1073
+ text-align: center;
1074
+ width: 20px;
1075
+ }
1076
+
1077
+
1078
+ .rex-onboarding .tabs {
1079
+ height: 55px;
1080
+ }
1081
+
1082
+ .bwf-btn {
1083
+ background: #1FB3FB;
1084
+ }
1085
+
1086
+ .bwf-btn:hover {
1087
+ background-color: #47CCCF;
1088
+ }
1089
+
1090
+ .rex-onboarding .tabs .tab a{
1091
+ color: #47CCCF;
1092
+ }
1093
+ .rex-onboarding .tabs .tab a:hover, .rex-onboarding .tabs .tab a.active {
1094
+ color: #1FB3FB;
1095
+ }
1096
+
1097
+
1098
+ .rex-onboarding .tabs .indicator{
1099
+
1100
+ background-color: #1FB3FB;
1101
+ }
1102
+
1103
+
1104
+
1105
+
1106
+ /*------------responsive style------------*/
1107
+ @media (max-width: 1700px) {
1108
+ .rex-onboarding .single-block {
1109
+ width: 48%;
1110
+ }
1111
+ .onboarding-block {
1112
+ height: 195px;
1113
+ }
1114
+ .onboarding-block .body {
1115
+ padding: 12px 15px;
1116
+ }
1117
+ .rex-onboarding .left {
1118
+ width: 65%;
1119
+ }
1120
+ .rex-onboarding .right {
1121
+ width: 35%;
1122
+ }
1123
+
1124
+ } /*media 1501px-1700px*/
1125
+
1126
+ @media (max-width: 1500px) {
1127
+ .rex-onboarding {
1128
+ min-height: 730px;
1129
+ }
1130
+ .left {
1131
+ width: 70%;
1132
+ }
1133
+ .right {
1134
+ width: 30%;
1135
+ }
1136
+ .onboarding-block {
1137
+ height: 174px;
1138
+ }
1139
+ .onboarding-block p {
1140
+ font-size: 12px;
1141
+ }
1142
+
1143
+ }
1144
+ @media (max-width: 1400px) {
1145
+ .rex-onboarding {
1146
+ display: block;
1147
+ padding-bottom: 40px;
1148
+ }
1149
+ .left {
1150
+ width: 100%;
1151
+ }
1152
+ .right {
1153
+ width: 100%;
1154
+ padding-top: 30px;
1155
+ }
1156
+ .rex-onboarding .wrapper {
1157
+ padding-right: 0;
1158
+ }
1159
+ .onboarding-block .body {
1160
+ padding: 20px 15px;
1161
+ }
1162
+ .onboarding-block {
1163
+ height: 222px;
1164
+ }
1165
+ .onboarding-block p {
1166
+ font-size: 14px;
1167
+ }
1168
+ .rex-onboarding .right .rex-banner .update-btn {
1169
+ margin: 20px auto 60px;
1170
+ }
1171
+
1172
+ } /*--media 1200px-1400px */
1173
+
1174
+ @media (min-width: 1300px) and (max-width: 1370px) {
1175
+ .onboarding-block {
1176
+ height: 239px;
1177
+ }
1178
+ .onboarding-block .body {
1179
+ padding: 26px 15px;
1180
+ }
1181
+ .onboarding-block p {
1182
+ font-size: 16px;
1183
+ }
1184
+
1185
+ } /*media 1300px to 1370px*/
1186
+
1187
+ @media (max-width: 1199px) {
1188
+ .rex-onboarding .single-block {
1189
+ width: 48.666%;
1190
+ margin-left: 20px;
1191
+ margin-bottom: 20px;
1192
+ }
1193
+ .onboarding-block .body {
1194
+ padding: 3px 15px;
1195
+ }
1196
+ .onboarding-block p {
1197
+ font-size: 12px;
1198
+ }
1199
+ .onboarding-block {
1200
+ height: 171px;
1201
+ }
1202
+ .onboarding-block .bwf-btn {
1203
+ font-size: 12px;
1204
+ height: 30px;
1205
+ line-height: 31px;
1206
+ padding: 0 14px;
1207
+ }
1208
+
1209
+ }
1210
+
1211
+
1212
+
1213
+ @media only screen and (max-width : 992px) {
1214
+ .rex-onboarding .single-block {
1215
+ width: 100%;
1216
+ margin-left: 0;
1217
+ }
1218
+
1219
+ .onboarding-block {
1220
+ height: 200px;
1221
+ }
1222
+ }
admin/icon/Document.png ADDED
Binary file
admin/icon/Feedback.png ADDED
Binary file
admin/icon/Heart.png ADDED
Binary file
admin/icon/Rating.png ADDED
Binary file
admin/icon/Social_Booster_Banner.png ADDED
Binary file
admin/icon/Support.png ADDED
Binary file
admin/icon/banner.png ADDED
Binary file
admin/icon/icon-128x128.png ADDED
Binary file
admin/icon/icon.png ADDED
Binary file
admin/index.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php // Silence is golden
admin/js/jquery.repeater.min.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ // jquery.repeater version 1.2.1
2
+ // https://github.com/DubFriend/jquery.repeater
3
+ // (MIT) 09-10-2016
4
+ // Brian Detering <BDeterin@gmail.com> (http://www.briandetering.net/)
5
+ !function(a){"use strict";var b=function(a){return a},c=function(b){return a.isArray(b)},d=function(a){return!c(a)&&a instanceof Object},e=function(b,c){return a.inArray(c,b)},f=function(a,b){return e(a,b)!==-1},g=function(a,b){for(var c in a)a.hasOwnProperty(c)&&b(a[c],c,a)},h=function(a){return a[a.length-1]},i=function(a){return Array.prototype.slice.call(a)},j=function(){var a={};return g(i(arguments),function(b){g(b,function(b,c){a[c]=b})}),a},k=function(a,b){var c=[];return g(a,function(a,d,e){c.push(b(a,d,e))}),c},l=function(a,b,c){var d={};return g(a,function(a,e,f){e=c?c(e,a):e,d[e]=b(a,e,f)}),d},m=function(a,b,d){return c(a)?k(a,b):l(a,b,d)},n=function(a,b){return m(a,function(a){return a[b]})},o=function(a,b){var d;return c(a)?(d=[],g(a,function(a,c,e){b(a,c,e)&&d.push(a)})):(d={},g(a,function(a,c,e){b(a,c,e)&&(d[c]=a)})),d},p=function(a,b,c){return m(a,function(a,d){return a[b].apply(a,c||[])})},q=function(a){a=a||{};var b={};return a.publish=function(a,c){g(b[a],function(a){a(c)})},a.subscribe=function(a,c){b[a]=b[a]||[],b[a].push(c)},a.unsubscribe=function(a){g(b,function(b){var c=e(b,a);c!==-1&&b.splice(c,1)})},a};!function(a){var b=function(a,b){var c=q(),d=a.$;return c.getType=function(){throw'implement me (return type. "text", "radio", etc.)'},c.$=function(a){return a?d.find(a):d},c.disable=function(){c.$().prop("disabled",!0),c.publish("isEnabled",!1)},c.enable=function(){c.$().prop("disabled",!1),c.publish("isEnabled",!0)},b.equalTo=function(a,b){return a===b},b.publishChange=function(){var a;return function(d,e){var f=c.get();b.equalTo(f,a)||c.publish("change",{e:d,domElement:e}),a=f}}(),c},i=function(a,c){var d=b(a,c);return d.get=function(){return d.$().val()},d.set=function(a){d.$().val(a)},d.clear=function(){d.set("")},c.buildSetter=function(a){return function(b){a.call(d,b)}},d},j=function(a,b){a=c(a)?a:[a],b=c(b)?b:[b];var d=!0;return a.length!==b.length?d=!1:g(a,function(a){f(b,a)||(d=!1)}),d},k=function(a){var b={},c=i(a,b);return c.getType=function(){return"button"},c.$().on("change",function(a){b.publishChange(a,this)}),c},l=function(b){var d={},e=i(b,d);return e.getType=function(){return"checkbox"},e.get=function(){var b=[];return e.$().filter(":checked").each(function(){b.push(a(this).val())}),b},e.set=function(b){b=c(b)?b:[b],e.$().each(function(){a(this).prop("checked",!1)}),g(b,function(a){e.$().filter('[value="'+a+'"]').prop("checked",!0)})},d.equalTo=j,e.$().change(function(a){d.publishChange(a,this)}),e},m=function(a){var b={},c=x(a,b);return c.getType=function(){return"email"},c},n=function(c){var d={},e=b(c,d);return e.getType=function(){return"file"},e.get=function(){return h(e.$().val().split("\\"))},e.clear=function(){this.$().each(function(){a(this).wrap("<form>").closest("form").get(0).reset(),a(this).unwrap()})},e.$().change(function(a){d.publishChange(a,this)}),e},o=function(a){var b={},c=i(a,b);return c.getType=function(){return"hidden"},c.$().change(function(a){b.publishChange(a,this)}),c},r=function(c){var d={},e=b(c,d);return e.getType=function(){return"file[multiple]"},e.get=function(){var a,b=e.$().get(0).files||[],c=[];for(a=0;a<(b.length||0);a+=1)c.push(b[a].name);return c},e.clear=function(){this.$().each(function(){a(this).wrap("<form>").closest("form").get(0).reset(),a(this).unwrap()})},e.$().change(function(a){d.publishChange(a,this)}),e},s=function(a){var b={},d=i(a,b);return d.getType=function(){return"select[multiple]"},d.get=function(){return d.$().val()||[]},d.set=function(a){d.$().val(""===a?[]:c(a)?a:[a])},b.equalTo=j,d.$().change(function(a){b.publishChange(a,this)}),d},t=function(a){var b={},c=x(a,b);return c.getType=function(){return"password"},c},u=function(b){var c={},d=i(b,c);return d.getType=function(){return"radio"},d.get=function(){return d.$().filter(":checked").val()||null},d.set=function(b){b?d.$().filter('[value="'+b+'"]').prop("checked",!0):d.$().each(function(){a(this).prop("checked",!1)})},d.$().change(function(a){c.publishChange(a,this)}),d},v=function(a){var b={},c=i(a,b);return c.getType=function(){return"range"},c.$().change(function(a){b.publishChange(a,this)}),c},w=function(a){var b={},c=i(a,b);return c.getType=function(){return"select"},c.$().change(function(a){b.publishChange(a,this)}),c},x=function(a){var b={},c=i(a,b);return c.getType=function(){return"text"},c.$().on("change keyup keydown",function(a){b.publishChange(a,this)}),c},y=function(a){var b={},c=i(a,b);return c.getType=function(){return"textarea"},c.$().on("change keyup keydown",function(a){b.publishChange(a,this)}),c},z=function(a){var b={},c=x(a,b);return c.getType=function(){return"url"},c},A=function(b){var c={},f=b.$,h=b.constructorOverride||{button:k,text:x,url:z,email:m,password:t,range:v,textarea:y,select:w,"select[multiple]":s,radio:u,checkbox:l,file:n,"file[multiple]":r,hidden:o},i=function(b,e){var g=d(e)?e:f.find(e);g.each(function(){var d=a(this).attr("name");c[d]=h[b]({$:a(this)})})},j=function(b,i){var j=[],k=d(i)?i:f.find(i);d(i)?c[k.attr("name")]=h[b]({$:k}):(k.each(function(){e(j,a(this).attr("name"))===-1&&j.push(a(this).attr("name"))}),g(j,function(a){c[a]=h[b]({$:f.find('input[name="'+a+'"]')})}))};return f.is("input, select, textarea")?f.is('input[type="button"], button, input[type="submit"]')?i("button",f):f.is("textarea")?i("textarea",f):f.is('input[type="text"]')||f.is("input")&&!f.attr("type")?i("text",f):f.is('input[type="password"]')?i("password",f):f.is('input[type="email"]')?i("email",f):f.is('input[type="url"]')?i("url",f):f.is('input[type="range"]')?i("range",f):f.is("select")?f.is("[multiple]")?i("select[multiple]",f):i("select",f):f.is('input[type="file"]')?f.is("[multiple]")?i("file[multiple]",f):i("file",f):f.is('input[type="hidden"]')?i("hidden",f):f.is('input[type="radio"]')?j("radio",f):f.is('input[type="checkbox"]')?j("checkbox",f):i("text",f):(i("button",'input[type="button"], button, input[type="submit"]'),i("text",'input[type="text"]'),i("password",'input[type="password"]'),i("email",'input[type="email"]'),i("url",'input[type="url"]'),i("range",'input[type="range"]'),i("textarea","textarea"),i("select","select:not([multiple])"),i("select[multiple]","select[multiple]"),i("file",'input[type="file"]:not([multiple])'),i("file[multiple]",'input[type="file"][multiple]'),i("hidden",'input[type="hidden"]'),j("radio",'input[type="radio"]'),j("checkbox",'input[type="checkbox"]')),c};a.fn.inputVal=function(b){var c=a(this),d=A({$:c});return c.is("input, textarea, select")?"undefined"==typeof b?d[c.attr("name")].get():(d[c.attr("name")].set(b),c):"undefined"==typeof b?p(d,"get"):(g(b,function(a,b){d[b].set(a)}),c)},a.fn.inputOnChange=function(b){var c=a(this),d=A({$:c});return g(d,function(a){a.subscribe("change",function(a){b.call(a.domElement,a.e)})}),c},a.fn.inputDisable=function(){var b=a(this);return p(A({$:b}),"disable"),b},a.fn.inputEnable=function(){var b=a(this);return p(A({$:b}),"enable"),b},a.fn.inputClear=function(){var b=a(this);return p(A({$:b}),"clear"),b}}(jQuery),a.fn.repeaterVal=function(){var b=function(a){var b=[];return g(a,function(a,c){var d=[];"undefined"!==c&&(d.push(c.match(/^[^\[]*/)[0]),d=d.concat(m(c.match(/\[[^\]]*\]/g),function(a){return a.replace(/[\[\]]/g,"")})),b.push({val:a,key:d}))}),b},c=function(a){if(1===a.length&&(0===a[0].key.length||1===a[0].key.length&&!a[0].key[0]))return a[0].val;g(a,function(a){a.head=a.key.shift()});var b,d=function(){var b={};return g(a,function(a){b[a.head]||(b[a.head]=[]),b[a.head].push(a)}),b}();return/^[0-9]+$/.test(a[0].head)?(b=[],g(d,function(a){b.push(c(a))})):(b={},g(d,function(a,d){b[d]=c(a)})),b};return c(b(a(this).inputVal()))},a.fn.repeater=function(c){c=c||{};var d;return a(this).each(function(){var e=a(this),f=c.show||function(){a(this).show()},i=c.hide||function(a){a()},k=e.find("[data-repeater-list]").first(),l=function(b,c){return b.filter(function(){return!c||0===a(this).closest(n(c,"selector").join(",")).length})},p=function(){return l(k.find("[data-repeater-item]"),c.repeaters)},q=k.find("[data-repeater-item]").first().clone().hide(),r=l(l(a(this).find("[data-repeater-item]"),c.repeaters).first().find("[data-repeater-delete]"),c.repeaters);c.isFirstItemUndeletable&&r&&r.remove();var s=function(){var a=k.data("repeater-list");return c.$parent?c.$parent.data("item-name")+"["+a+"]":a},t=function(b){c.repeaters&&b.each(function(){var b=a(this);g(c.repeaters,function(a){b.find(a.selector).repeater(j(a,{$parent:b}))})})},u=function(a,b,c){a&&g(a,function(a){c.call(b.find(a.selector)[0],a)})},v=function(b,c,d){b.each(function(b){var e=a(this);e.data("item-name",c+"["+b+"]"),l(e.find("[name]"),d).each(function(){var f=a(this),g=f.attr("name").match(/\[[^\]]+\]/g),i=g?h(g).replace(/\[|\]/g,""):f.attr("name"),j=c+"["+b+"]["+i+"]"+(f.is(":checkbox")||f.attr("multiple")?"[]":"");f.attr("name",j),u(d,e,function(d){var e=a(this);v(l(e.find("[data-repeater-item]"),d.repeaters||[]),c+"["+b+"]["+e.find("[data-repeater-list]").first().data("repeater-list")+"]",d.repeaters)})})}),k.find("input[name][checked]").removeAttr("checked").prop("checked",!0)};v(p(),s(),c.repeaters),t(p()),c.initEmpty&&p().remove(),c.ready&&c.ready(function(){v(p(),s(),c.repeaters)});var w=function(){var d=function(e,f,h){if(f||c.defaultValues){var i={};l(e.find("[name]"),h).each(function(){var b=a(this).attr("name").match(/\[([^\]]*)(\]|\]\[\])$/)[1];i[b]=a(this).attr("name")}),e.inputVal(m(o(f||c.defaultValues,function(a,b){return i[b]}),b,function(a){return i[a]}))}u(h,e,function(b){var c=a(this);l(c.find("[data-repeater-item]"),b.repeaters).each(function(){var e=c.find("[data-repeater-list]").data("repeater-list");if(f&&f[e]){var h=a(this).clone();c.find("[data-repeater-item]").remove(),g(f[e],function(a){var e=h.clone();d(e,a,b.repeaters||[]),c.find("[data-repeater-list]").append(e)})}else d(a(this),b.defaultValues,b.repeaters||[])})})};return function(b,e){k.append(b),v(p(),s(),c.repeaters),b.find("[name]").each(function(){a(this).inputClear()}),d(b,e||c.defaultValues,c.repeaters)}}(),x=function(a){var b=q.clone();w(b,a),c.repeaters&&t(b),f.call(b.get(0))};d=function(a){p().remove(),g(a,x)},l(e.find("[data-repeater-create]"),c.repeaters).click(function(){x()}),k.on("click","[data-repeater-delete]",function(){var b=a(this).closest("[data-repeater-item]").get(0);i.call(b,function(){a(b).remove(),v(p(),s(),c.repeaters)})})}),this.setList=d,this}}(jQuery);
admin/js/materialize.js ADDED
@@ -0,0 +1,8031 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Materialize v0.98.0 (http://materializecss.com)
3
+ * Copyright 2014-2015 Materialize
4
+ * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE)
5
+ */
6
+ // Check for jQuery.
7
+ if (typeof(jQuery) === 'undefined') {
8
+ var jQuery;
9
+ // Check if require is a defined function.
10
+ if (typeof(require) === 'function') {
11
+ jQuery = $ = require('jquery');
12
+ // Else use the dollar sign alias.
13
+ } else {
14
+ jQuery = $;
15
+ }
16
+ }
17
+ ;/*
18
+ * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
19
+ *
20
+ * Uses the built in easing capabilities added In jQuery 1.1
21
+ * to offer multiple easing options
22
+ *
23
+ * TERMS OF USE - jQuery Easing
24
+ *
25
+ * Open source under the BSD License.
26
+ *
27
+ * Copyright © 2008 George McGinley Smith
28
+ * All rights reserved.
29
+ *
30
+ * Redistribution and use in source and binary forms, with or without modification,
31
+ * are permitted provided that the following conditions are met:
32
+ *
33
+ * Redistributions of source code must retain the above copyright notice, this list of
34
+ * conditions and the following disclaimer.
35
+ * Redistributions in binary form must reproduce the above copyright notice, this list
36
+ * of conditions and the following disclaimer in the documentation and/or other materials
37
+ * provided with the distribution.
38
+ *
39
+ * Neither the name of the author nor the names of contributors may be used to endorse
40
+ * or promote products derived from this software without specific prior written permission.
41
+ *
42
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
43
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
44
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
45
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
46
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
47
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
48
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
49
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
50
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
51
+ *
52
+ */
53
+
54
+ // t: current time, b: begInnIng value, c: change In value, d: duration
55
+ jQuery.easing['jswing'] = jQuery.easing['swing'];
56
+
57
+ jQuery.extend( jQuery.easing,
58
+ {
59
+ def: 'easeOutQuad',
60
+ swing: function (x, t, b, c, d) {
61
+ //alert(jQuery.easing.default);
62
+ return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
63
+ },
64
+ easeInQuad: function (x, t, b, c, d) {
65
+ return c*(t/=d)*t + b;
66
+ },
67
+ easeOutQuad: function (x, t, b, c, d) {
68
+ return -c *(t/=d)*(t-2) + b;
69
+ },
70
+ easeInOutQuad: function (x, t, b, c, d) {
71
+ if ((t/=d/2) < 1) return c/2*t*t + b;
72
+ return -c/2 * ((--t)*(t-2) - 1) + b;
73
+ },
74
+ easeInCubic: function (x, t, b, c, d) {
75
+ return c*(t/=d)*t*t + b;
76
+ },
77
+ easeOutCubic: function (x, t, b, c, d) {
78
+ return c*((t=t/d-1)*t*t + 1) + b;
79
+ },
80
+ easeInOutCubic: function (x, t, b, c, d) {
81
+ if ((t/=d/2) < 1) return c/2*t*t*t + b;
82
+ return c/2*((t-=2)*t*t + 2) + b;
83
+ },
84
+ easeInQuart: function (x, t, b, c, d) {
85
+ return c*(t/=d)*t*t*t + b;
86
+ },
87
+ easeOutQuart: function (x, t, b, c, d) {
88
+ return -c * ((t=t/d-1)*t*t*t - 1) + b;
89
+ },
90
+ easeInOutQuart: function (x, t, b, c, d) {
91
+ if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
92
+ return -c/2 * ((t-=2)*t*t*t - 2) + b;
93
+ },
94
+ easeInQuint: function (x, t, b, c, d) {
95
+ return c*(t/=d)*t*t*t*t + b;
96
+ },
97
+ easeOutQuint: function (x, t, b, c, d) {
98
+ return c*((t=t/d-1)*t*t*t*t + 1) + b;
99
+ },
100
+ easeInOutQuint: function (x, t, b, c, d) {
101
+ if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
102
+ return c/2*((t-=2)*t*t*t*t + 2) + b;
103
+ },
104
+ easeInSine: function (x, t, b, c, d) {
105
+ return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
106
+ },
107
+ easeOutSine: function (x, t, b, c, d) {
108
+ return c * Math.sin(t/d * (Math.PI/2)) + b;
109
+ },
110
+ easeInOutSine: function (x, t, b, c, d) {
111
+ return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
112
+ },
113
+ easeInExpo: function (x, t, b, c, d) {
114
+ return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
115
+ },
116
+ easeOutExpo: function (x, t, b, c, d) {
117
+ return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
118
+ },
119
+ easeInOutExpo: function (x, t, b, c, d) {
120
+ if (t==0) return b;
121
+ if (t==d) return b+c;
122
+ if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
123
+ return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
124
+ },
125
+ easeInCirc: function (x, t, b, c, d) {
126
+ return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
127
+ },
128
+ easeOutCirc: function (x, t, b, c, d) {
129
+ return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
130
+ },
131
+ easeInOutCirc: function (x, t, b, c, d) {
132
+ if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
133
+ return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
134
+ },
135
+ easeInElastic: function (x, t, b, c, d) {
136
+ var s=1.70158;var p=0;var a=c;
137
+ if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
138
+ if (a < Math.abs(c)) { a=c; var s=p/4; }
139
+ else var s = p/(2*Math.PI) * Math.asin (c/a);
140
+ return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
141
+ },
142
+ easeOutElastic: function (x, t, b, c, d) {
143
+ var s=1.70158;var p=0;var a=c;
144
+ if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
145
+ if (a < Math.abs(c)) { a=c; var s=p/4; }
146
+ else var s = p/(2*Math.PI) * Math.asin (c/a);
147
+ return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
148
+ },
149
+ easeInOutElastic: function (x, t, b, c, d) {
150
+ var s=1.70158;var p=0;var a=c;
151
+ if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);
152
+ if (a < Math.abs(c)) { a=c; var s=p/4; }
153
+ else var s = p/(2*Math.PI) * Math.asin (c/a);
154
+ if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
155
+ return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
156
+ },
157
+ easeInBack: function (x, t, b, c, d, s) {
158
+ if (s == undefined) s = 1.70158;
159
+ return c*(t/=d)*t*((s+1)*t - s) + b;
160
+ },
161
+ easeOutBack: function (x, t, b, c, d, s) {
162
+ if (s == undefined) s = 1.70158;
163
+ return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
164
+ },
165
+ easeInOutBack: function (x, t, b, c, d, s) {
166
+ if (s == undefined) s = 1.70158;
167
+ if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
168
+ return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
169
+ },
170
+ easeInBounce: function (x, t, b, c, d) {
171
+ return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
172
+ },
173
+ easeOutBounce: function (x, t, b, c, d) {
174
+ if ((t/=d) < (1/2.75)) {
175
+ return c*(7.5625*t*t) + b;
176
+ } else if (t < (2/2.75)) {
177
+ return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
178
+ } else if (t < (2.5/2.75)) {
179
+ return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
180
+ } else {
181
+ return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
182
+ }
183
+ },
184
+ easeInOutBounce: function (x, t, b, c, d) {
185
+ if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
186
+ return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
187
+ }
188
+ });
189
+
190
+ /*
191
+ *
192
+ * TERMS OF USE - EASING EQUATIONS
193
+ *
194
+ * Open source under the BSD License.
195
+ *
196
+ * Copyright © 2001 Robert Penner
197
+ * All rights reserved.
198
+ *
199
+ * Redistribution and use in source and binary forms, with or without modification,
200
+ * are permitted provided that the following conditions are met:
201
+ *
202
+ * Redistributions of source code must retain the above copyright notice, this list of
203
+ * conditions and the following disclaimer.
204
+ * Redistributions in binary form must reproduce the above copyright notice, this list
205
+ * of conditions and the following disclaimer in the documentation and/or other materials
206
+ * provided with the distribution.
207
+ *
208
+ * Neither the name of the author nor the names of contributors may be used to endorse
209
+ * or promote products derived from this software without specific prior written permission.
210
+ *
211
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
212
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
213
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
214
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
215
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
216
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
217
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
218
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
219
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
220
+ *
221
+ */;// Custom Easing
222
+ jQuery.extend( jQuery.easing,
223
+ {
224
+ easeInOutMaterial: function (x, t, b, c, d) {
225
+ if ((t/=d/2) < 1) return c/2*t*t + b;
226
+ return c/4*((t-=2)*t*t + 2) + b;
227
+ }
228
+ });;/*! VelocityJS.org (1.2.3). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License */
229
+ /*! VelocityJS.org jQuery Shim (1.0.1). (C) 2014 The jQuery Foundation. MIT @license: en.wikipedia.org/wiki/MIT_License. */
230
+ /*! Note that this has been modified by Materialize to confirm that Velocity is not already being imported. */
231
+ jQuery.Velocity?console.log("Velocity is already loaded. You may be needlessly importing Velocity again; note that Materialize includes Velocity."):(!function(e){function t(e){var t=e.length,a=r.type(e);return"function"===a||r.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===a||0===t||"number"==typeof t&&t>0&&t-1 in e}if(!e.jQuery){var r=function(e,t){return new r.fn.init(e,t)};r.isWindow=function(e){return null!=e&&e==e.window},r.type=function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e},r.isArray=Array.isArray||function(e){return"array"===r.type(e)},r.isPlainObject=function(e){var t;if(!e||"object"!==r.type(e)||e.nodeType||r.isWindow(e))return!1;try{if(e.constructor&&!o.call(e,"constructor")&&!o.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(a){return!1}for(t in e);return void 0===t||o.call(e,t)},r.each=function(e,r,a){var n,o=0,i=e.length,s=t(e);if(a){if(s)for(;i>o&&(n=r.apply(e[o],a),n!==!1);o++);else for(o in e)if(n=r.apply(e[o],a),n===!1)break}else if(s)for(;i>o&&(n=r.call(e[o],o,e[o]),n!==!1);o++);else for(o in e)if(n=r.call(e[o],o,e[o]),n===!1)break;return e},r.data=function(e,t,n){if(void 0===n){var o=e[r.expando],i=o&&a[o];if(void 0===t)return i;if(i&&t in i)return i[t]}else if(void 0!==t){var o=e[r.expando]||(e[r.expando]=++r.uuid);return a[o]=a[o]||{},a[o][t]=n,n}},r.removeData=function(e,t){var n=e[r.expando],o=n&&a[n];o&&r.each(t,function(e,t){delete o[t]})},r.extend=function(){var e,t,a,n,o,i,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[l]||{},l++),"object"!=typeof s&&"function"!==r.type(s)&&(s={}),l===u&&(s=this,l--);u>l;l++)if(null!=(o=arguments[l]))for(n in o)e=s[n],a=o[n],s!==a&&(c&&a&&(r.isPlainObject(a)||(t=r.isArray(a)))?(t?(t=!1,i=e&&r.isArray(e)?e:[]):i=e&&r.isPlainObject(e)?e:{},s[n]=r.extend(c,i,a)):void 0!==a&&(s[n]=a));return s},r.queue=function(e,a,n){function o(e,r){var a=r||[];return null!=e&&(t(Object(e))?!function(e,t){for(var r=+t.length,a=0,n=e.length;r>a;)e[n++]=t[a++];if(r!==r)for(;void 0!==t[a];)e[n++]=t[a++];return e.length=n,e}(a,"string"==typeof e?[e]:e):[].push.call(a,e)),a}if(e){a=(a||"fx")+"queue";var i=r.data(e,a);return n?(!i||r.isArray(n)?i=r.data(e,a,o(n)):i.push(n),i):i||[]}},r.dequeue=function(e,t){r.each(e.nodeType?[e]:e,function(e,a){t=t||"fx";var n=r.queue(a,t),o=n.shift();"inprogress"===o&&(o=n.shift()),o&&("fx"===t&&n.unshift("inprogress"),o.call(a,function(){r.dequeue(a,t)}))})},r.fn=r.prototype={init:function(e){if(e.nodeType)return this[0]=e,this;throw new Error("Not a DOM node.")},offset:function(){var t=this[0].getBoundingClientRect?this[0].getBoundingClientRect():{top:0,left:0};return{top:t.top+(e.pageYOffset||document.scrollTop||0)-(document.clientTop||0),left:t.left+(e.pageXOffset||document.scrollLeft||0)-(document.clientLeft||0)}},position:function(){function e(){for(var e=this.offsetParent||document;e&&"html"===!e.nodeType.toLowerCase&&"static"===e.style.position;)e=e.offsetParent;return e||document}var t=this[0],e=e.apply(t),a=this.offset(),n=/^(?:body|html)$/i.test(e.nodeName)?{top:0,left:0}:r(e).offset();return a.top-=parseFloat(t.style.marginTop)||0,a.left-=parseFloat(t.style.marginLeft)||0,e.style&&(n.top+=parseFloat(e.style.borderTopWidth)||0,n.left+=parseFloat(e.style.borderLeftWidth)||0),{top:a.top-n.top,left:a.left-n.left}}};var a={};r.expando="velocity"+(new Date).getTime(),r.uuid=0;for(var n={},o=n.hasOwnProperty,i=n.toString,s="Boolean Number String Function Array Date RegExp Object Error".split(" "),l=0;l<s.length;l++)n["[object "+s[l]+"]"]=s[l].toLowerCase();r.fn.init.prototype=r.fn,e.Velocity={Utilities:r}}}(window),function(e){"object"==typeof module&&"object"==typeof module.exports?module.exports=e():"function"==typeof define&&define.amd?define(e):e()}(function(){return function(e,t,r,a){function n(e){for(var t=-1,r=e?e.length:0,a=[];++t<r;){var n=e[t];n&&a.push(n)}return a}function o(e){return m.isWrapped(e)?e=[].slice.call(e):m.isNode(e)&&(e=[e]),e}function i(e){var t=f.data(e,"velocity");return null===t?a:t}function s(e){return function(t){return Math.round(t*e)*(1/e)}}function l(e,r,a,n){function o(e,t){return 1-3*t+3*e}function i(e,t){return 3*t-6*e}function s(e){return 3*e}function l(e,t,r){return((o(t,r)*e+i(t,r))*e+s(t))*e}function u(e,t,r){return 3*o(t,r)*e*e+2*i(t,r)*e+s(t)}function c(t,r){for(var n=0;m>n;++n){var o=u(r,e,a);if(0===o)return r;var i=l(r,e,a)-t;r-=i/o}return r}function p(){for(var t=0;b>t;++t)w[t]=l(t*x,e,a)}function f(t,r,n){var o,i,s=0;do i=r+(n-r)/2,o=l(i,e,a)-t,o>0?n=i:r=i;while(Math.abs(o)>h&&++s<v);return i}function d(t){for(var r=0,n=1,o=b-1;n!=o&&w[n]<=t;++n)r+=x;--n;var i=(t-w[n])/(w[n+1]-w[n]),s=r+i*x,l=u(s,e,a);return l>=y?c(t,s):0==l?s:f(t,r,r+x)}function g(){V=!0,(e!=r||a!=n)&&p()}var m=4,y=.001,h=1e-7,v=10,b=11,x=1/(b-1),S="Float32Array"in t;if(4!==arguments.length)return!1;for(var P=0;4>P;++P)if("number"!=typeof arguments[P]||isNaN(arguments[P])||!isFinite(arguments[P]))return!1;e=Math.min(e,1),a=Math.min(a,1),e=Math.max(e,0),a=Math.max(a,0);var w=S?new Float32Array(b):new Array(b),V=!1,C=function(t){return V||g(),e===r&&a===n?t:0===t?0:1===t?1:l(d(t),r,n)};C.getControlPoints=function(){return[{x:e,y:r},{x:a,y:n}]};var T="generateBezier("+[e,r,a,n]+")";return C.toString=function(){return T},C}function u(e,t){var r=e;return m.isString(e)?b.Easings[e]||(r=!1):r=m.isArray(e)&&1===e.length?s.apply(null,e):m.isArray(e)&&2===e.length?x.apply(null,e.concat([t])):m.isArray(e)&&4===e.length?l.apply(null,e):!1,r===!1&&(r=b.Easings[b.defaults.easing]?b.defaults.easing:v),r}function c(e){if(e){var t=(new Date).getTime(),r=b.State.calls.length;r>1e4&&(b.State.calls=n(b.State.calls));for(var o=0;r>o;o++)if(b.State.calls[o]){var s=b.State.calls[o],l=s[0],u=s[2],d=s[3],g=!!d,y=null;d||(d=b.State.calls[o][3]=t-16);for(var h=Math.min((t-d)/u.duration,1),v=0,x=l.length;x>v;v++){var P=l[v],V=P.element;if(i(V)){var C=!1;if(u.display!==a&&null!==u.display&&"none"!==u.display){if("flex"===u.display){var T=["-webkit-box","-moz-box","-ms-flexbox","-webkit-flex"];f.each(T,function(e,t){S.setPropertyValue(V,"display",t)})}S.setPropertyValue(V,"display",u.display)}u.visibility!==a&&"hidden"!==u.visibility&&S.setPropertyValue(V,"visibility",u.visibility);for(var k in P)if("element"!==k){var A,F=P[k],j=m.isString(F.easing)?b.Easings[F.easing]:F.easing;if(1===h)A=F.endValue;else{var E=F.endValue-F.startValue;if(A=F.startValue+E*j(h,u,E),!g&&A===F.currentValue)continue}if(F.currentValue=A,"tween"===k)y=A;else{if(S.Hooks.registered[k]){var H=S.Hooks.getRoot(k),N=i(V).rootPropertyValueCache[H];N&&(F.rootPropertyValue=N)}var L=S.setPropertyValue(V,k,F.currentValue+(0===parseFloat(A)?"":F.unitType),F.rootPropertyValue,F.scrollData);S.Hooks.registered[k]&&(i(V).rootPropertyValueCache[H]=S.Normalizations.registered[H]?S.Normalizations.registered[H]("extract",null,L[1]):L[1]),"transform"===L[0]&&(C=!0)}}u.mobileHA&&i(V).transformCache.translate3d===a&&(i(V).transformCache.translate3d="(0px, 0px, 0px)",C=!0),C&&S.flushTransformCache(V)}}u.display!==a&&"none"!==u.display&&(b.State.calls[o][2].display=!1),u.visibility!==a&&"hidden"!==u.visibility&&(b.State.calls[o][2].visibility=!1),u.progress&&u.progress.call(s[1],s[1],h,Math.max(0,d+u.duration-t),d,y),1===h&&p(o)}}b.State.isTicking&&w(c)}function p(e,t){if(!b.State.calls[e])return!1;for(var r=b.State.calls[e][0],n=b.State.calls[e][1],o=b.State.calls[e][2],s=b.State.calls[e][4],l=!1,u=0,c=r.length;c>u;u++){var p=r[u].element;if(t||o.loop||("none"===o.display&&S.setPropertyValue(p,"display",o.display),"hidden"===o.visibility&&S.setPropertyValue(p,"visibility",o.visibility)),o.loop!==!0&&(f.queue(p)[1]===a||!/\.velocityQueueEntryFlag/i.test(f.queue(p)[1]))&&i(p)){i(p).isAnimating=!1,i(p).rootPropertyValueCache={};var d=!1;f.each(S.Lists.transforms3D,function(e,t){var r=/^scale/.test(t)?1:0,n=i(p).transformCache[t];i(p).transformCache[t]!==a&&new RegExp("^\\("+r+"[^.]").test(n)&&(d=!0,delete i(p).transformCache[t])}),o.mobileHA&&(d=!0,delete i(p).transformCache.translate3d),d&&S.flushTransformCache(p),S.Values.removeClass(p,"velocity-animating")}if(!t&&o.complete&&!o.loop&&u===c-1)try{o.complete.call(n,n)}catch(g){setTimeout(function(){throw g},1)}s&&o.loop!==!0&&s(n),i(p)&&o.loop===!0&&!t&&(f.each(i(p).tweensContainer,function(e,t){/^rotate/.test(e)&&360===parseFloat(t.endValue)&&(t.endValue=0,t.startValue=360),/^backgroundPosition/.test(e)&&100===parseFloat(t.endValue)&&"%"===t.unitType&&(t.endValue=0,t.startValue=100)}),b(p,"reverse",{loop:!0,delay:o.delay})),o.queue!==!1&&f.dequeue(p,o.queue)}b.State.calls[e]=!1;for(var m=0,y=b.State.calls.length;y>m;m++)if(b.State.calls[m]!==!1){l=!0;break}l===!1&&(b.State.isTicking=!1,delete b.State.calls,b.State.calls=[])}var f,d=function(){if(r.documentMode)return r.documentMode;for(var e=7;e>4;e--){var t=r.createElement("div");if(t.innerHTML="<!--[if IE "+e+"]><span></span><![endif]-->",t.getElementsByTagName("span").length)return t=null,e}return a}(),g=function(){var e=0;return t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||function(t){var r,a=(new Date).getTime();return r=Math.max(0,16-(a-e)),e=a+r,setTimeout(function(){t(a+r)},r)}}(),m={isString:function(e){return"string"==typeof e},isArray:Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},isFunction:function(e){return"[object Function]"===Object.prototype.toString.call(e)},isNode:function(e){return e&&e.nodeType},isNodeList:function(e){return"object"==typeof e&&/^\[object (HTMLCollection|NodeList|Object)\]$/.test(Object.prototype.toString.call(e))&&e.length!==a&&(0===e.length||"object"==typeof e[0]&&e[0].nodeType>0)},isWrapped:function(e){return e&&(e.jquery||t.Zepto&&t.Zepto.zepto.isZ(e))},isSVG:function(e){return t.SVGElement&&e instanceof t.SVGElement},isEmptyObject:function(e){for(var t in e)return!1;return!0}},y=!1;if(e.fn&&e.fn.jquery?(f=e,y=!0):f=t.Velocity.Utilities,8>=d&&!y)throw new Error("Velocity: IE8 and below require jQuery to be loaded before Velocity.");if(7>=d)return void(jQuery.fn.velocity=jQuery.fn.animate);var h=400,v="swing",b={State:{isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),isAndroid:/Android/i.test(navigator.userAgent),isGingerbread:/Android 2\.3\.[3-7]/i.test(navigator.userAgent),isChrome:t.chrome,isFirefox:/Firefox/i.test(navigator.userAgent),prefixElement:r.createElement("div"),prefixMatches:{},scrollAnchor:null,scrollPropertyLeft:null,scrollPropertyTop:null,isTicking:!1,calls:[]},CSS:{},Utilities:f,Redirects:{},Easings:{},Promise:t.Promise,defaults:{queue:"",duration:h,easing:v,begin:a,complete:a,progress:a,display:a,visibility:a,loop:!1,delay:!1,mobileHA:!0,_cacheValues:!0},init:function(e){f.data(e,"velocity",{isSVG:m.isSVG(e),isAnimating:!1,computedStyle:null,tweensContainer:null,rootPropertyValueCache:{},transformCache:{}})},hook:null,mock:!1,version:{major:1,minor:2,patch:2},debug:!1};t.pageYOffset!==a?(b.State.scrollAnchor=t,b.State.scrollPropertyLeft="pageXOffset",b.State.scrollPropertyTop="pageYOffset"):(b.State.scrollAnchor=r.documentElement||r.body.parentNode||r.body,b.State.scrollPropertyLeft="scrollLeft",b.State.scrollPropertyTop="scrollTop");var x=function(){function e(e){return-e.tension*e.x-e.friction*e.v}function t(t,r,a){var n={x:t.x+a.dx*r,v:t.v+a.dv*r,tension:t.tension,friction:t.friction};return{dx:n.v,dv:e(n)}}function r(r,a){var n={dx:r.v,dv:e(r)},o=t(r,.5*a,n),i=t(r,.5*a,o),s=t(r,a,i),l=1/6*(n.dx+2*(o.dx+i.dx)+s.dx),u=1/6*(n.dv+2*(o.dv+i.dv)+s.dv);return r.x=r.x+l*a,r.v=r.v+u*a,r}return function a(e,t,n){var o,i,s,l={x:-1,v:0,tension:null,friction:null},u=[0],c=0,p=1e-4,f=.016;for(e=parseFloat(e)||500,t=parseFloat(t)||20,n=n||null,l.tension=e,l.friction=t,o=null!==n,o?(c=a(e,t),i=c/n*f):i=f;s=r(s||l,i),u.push(1+s.x),c+=16,Math.abs(s.x)>p&&Math.abs(s.v)>p;);return o?function(e){return u[e*(u.length-1)|0]}:c}}();b.Easings={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},spring:function(e){return 1-Math.cos(4.5*e*Math.PI)*Math.exp(6*-e)}},f.each([["ease",[.25,.1,.25,1]],["ease-in",[.42,0,1,1]],["ease-out",[0,0,.58,1]],["ease-in-out",[.42,0,.58,1]],["easeInSine",[.47,0,.745,.715]],["easeOutSine",[.39,.575,.565,1]],["easeInOutSine",[.445,.05,.55,.95]],["easeInQuad",[.55,.085,.68,.53]],["easeOutQuad",[.25,.46,.45,.94]],["easeInOutQuad",[.455,.03,.515,.955]],["easeInCubic",[.55,.055,.675,.19]],["easeOutCubic",[.215,.61,.355,1]],["easeInOutCubic",[.645,.045,.355,1]],["easeInQuart",[.895,.03,.685,.22]],["easeOutQuart",[.165,.84,.44,1]],["easeInOutQuart",[.77,0,.175,1]],["easeInQuint",[.755,.05,.855,.06]],["easeOutQuint",[.23,1,.32,1]],["easeInOutQuint",[.86,0,.07,1]],["easeInExpo",[.95,.05,.795,.035]],["easeOutExpo",[.19,1,.22,1]],["easeInOutExpo",[1,0,0,1]],["easeInCirc",[.6,.04,.98,.335]],["easeOutCirc",[.075,.82,.165,1]],["easeInOutCirc",[.785,.135,.15,.86]]],function(e,t){b.Easings[t[0]]=l.apply(null,t[1])});var S=b.CSS={RegEx:{isHex:/^#([A-f\d]{3}){1,2}$/i,valueUnwrap:/^[A-z]+\((.*)\)$/i,wrappedValueAlreadyExtracted:/[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,valueSplit:/([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/gi},Lists:{colors:["fill","stroke","stopColor","color","backgroundColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outlineColor"],transformsBase:["translateX","translateY","scale","scaleX","scaleY","skewX","skewY","rotateZ"],transforms3D:["transformPerspective","translateZ","scaleZ","rotateX","rotateY"]},Hooks:{templates:{textShadow:["Color X Y Blur","black 0px 0px 0px"],boxShadow:["Color X Y Blur Spread","black 0px 0px 0px 0px"],clip:["Top Right Bottom Left","0px 0px 0px 0px"],backgroundPosition:["X Y","0% 0%"],transformOrigin:["X Y Z","50% 50% 0px"],perspectiveOrigin:["X Y","50% 50%"]},registered:{},register:function(){for(var e=0;e<S.Lists.colors.length;e++){var t="color"===S.Lists.colors[e]?"0 0 0 1":"255 255 255 1";S.Hooks.templates[S.Lists.colors[e]]=["Red Green Blue Alpha",t]}var r,a,n;if(d)for(r in S.Hooks.templates){a=S.Hooks.templates[r],n=a[0].split(" ");var o=a[1].match(S.RegEx.valueSplit);"Color"===n[0]&&(n.push(n.shift()),o.push(o.shift()),S.Hooks.templates[r]=[n.join(" "),o.join(" ")])}for(r in S.Hooks.templates){a=S.Hooks.templates[r],n=a[0].split(" ");for(var e in n){var i=r+n[e],s=e;S.Hooks.registered[i]=[r,s]}}},getRoot:function(e){var t=S.Hooks.registered[e];return t?t[0]:e},cleanRootPropertyValue:function(e,t){return S.RegEx.valueUnwrap.test(t)&&(t=t.match(S.RegEx.valueUnwrap)[1]),S.Values.isCSSNullValue(t)&&(t=S.Hooks.templates[e][1]),t},extractValue:function(e,t){var r=S.Hooks.registered[e];if(r){var a=r[0],n=r[1];return t=S.Hooks.cleanRootPropertyValue(a,t),t.toString().match(S.RegEx.valueSplit)[n]}return t},injectValue:function(e,t,r){var a=S.Hooks.registered[e];if(a){var n,o,i=a[0],s=a[1];return r=S.Hooks.cleanRootPropertyValue(i,r),n=r.toString().match(S.RegEx.valueSplit),n[s]=t,o=n.join(" ")}return r}},Normalizations:{registered:{clip:function(e,t,r){switch(e){case"name":return"clip";case"extract":var a;return S.RegEx.wrappedValueAlreadyExtracted.test(r)?a=r:(a=r.toString().match(S.RegEx.valueUnwrap),a=a?a[1].replace(/,(\s+)?/g," "):r),a;case"inject":return"rect("+r+")"}},blur:function(e,t,r){switch(e){case"name":return b.State.isFirefox?"filter":"-webkit-filter";case"extract":var a=parseFloat(r);if(!a&&0!==a){var n=r.toString().match(/blur\(([0-9]+[A-z]+)\)/i);a=n?n[1]:0}return a;case"inject":return parseFloat(r)?"blur("+r+")":"none"}},opacity:function(e,t,r){if(8>=d)switch(e){case"name":return"filter";case"extract":var a=r.toString().match(/alpha\(opacity=(.*)\)/i);return r=a?a[1]/100:1;case"inject":return t.style.zoom=1,parseFloat(r)>=1?"":"alpha(opacity="+parseInt(100*parseFloat(r),10)+")"}else switch(e){case"name":return"opacity";case"extract":return r;case"inject":return r}}},register:function(){9>=d||b.State.isGingerbread||(S.Lists.transformsBase=S.Lists.transformsBase.concat(S.Lists.transforms3D));for(var e=0;e<S.Lists.transformsBase.length;e++)!function(){var t=S.Lists.transformsBase[e];S.Normalizations.registered[t]=function(e,r,n){switch(e){case"name":return"transform";case"extract":return i(r)===a||i(r).transformCache[t]===a?/^scale/i.test(t)?1:0:i(r).transformCache[t].replace(/[()]/g,"");case"inject":var o=!1;switch(t.substr(0,t.length-1)){case"translate":o=!/(%|px|em|rem|vw|vh|\d)$/i.test(n);break;case"scal":case"scale":b.State.isAndroid&&i(r).transformCache[t]===a&&1>n&&(n=1),o=!/(\d)$/i.test(n);break;case"skew":o=!/(deg|\d)$/i.test(n);break;case"rotate":o=!/(deg|\d)$/i.test(n)}return o||(i(r).transformCache[t]="("+n+")"),i(r).transformCache[t]}}}();for(var e=0;e<S.Lists.colors.length;e++)!function(){var t=S.Lists.colors[e];S.Normalizations.registered[t]=function(e,r,n){switch(e){case"name":return t;case"extract":var o;if(S.RegEx.wrappedValueAlreadyExtracted.test(n))o=n;else{var i,s={black:"rgb(0, 0, 0)",blue:"rgb(0, 0, 255)",gray:"rgb(128, 128, 128)",green:"rgb(0, 128, 0)",red:"rgb(255, 0, 0)",white:"rgb(255, 255, 255)"};/^[A-z]+$/i.test(n)?i=s[n]!==a?s[n]:s.black:S.RegEx.isHex.test(n)?i="rgb("+S.Values.hexToRgb(n).join(" ")+")":/^rgba?\(/i.test(n)||(i=s.black),o=(i||n).toString().match(S.RegEx.valueUnwrap)[1].replace(/,(\s+)?/g," ")}return 8>=d||3!==o.split(" ").length||(o+=" 1"),o;case"inject":return 8>=d?4===n.split(" ").length&&(n=n.split(/\s+/).slice(0,3).join(" ")):3===n.split(" ").length&&(n+=" 1"),(8>=d?"rgb":"rgba")+"("+n.replace(/\s+/g,",").replace(/\.(\d)+(?=,)/g,"")+")"}}}()}},Names:{camelCase:function(e){return e.replace(/-(\w)/g,function(e,t){return t.toUpperCase()})},SVGAttribute:function(e){var t="width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2";return(d||b.State.isAndroid&&!b.State.isChrome)&&(t+="|transform"),new RegExp("^("+t+")$","i").test(e)},prefixCheck:function(e){if(b.State.prefixMatches[e])return[b.State.prefixMatches[e],!0];for(var t=["","Webkit","Moz","ms","O"],r=0,a=t.length;a>r;r++){var n;if(n=0===r?e:t[r]+e.replace(/^\w/,function(e){return e.toUpperCase()}),m.isString(b.State.prefixElement.style[n]))return b.State.prefixMatches[e]=n,[n,!0]}return[e,!1]}},Values:{hexToRgb:function(e){var t,r=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,a=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i;return e=e.replace(r,function(e,t,r,a){return t+t+r+r+a+a}),t=a.exec(e),t?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]:[0,0,0]},isCSSNullValue:function(e){return 0==e||/^(none|auto|transparent|(rgba\(0, ?0, ?0, ?0\)))$/i.test(e)},getUnitType:function(e){return/^(rotate|skew)/i.test(e)?"deg":/(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(e)?"":"px"},getDisplayType:function(e){var t=e&&e.tagName.toString().toLowerCase();return/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(t)?"inline":/^(li)$/i.test(t)?"list-item":/^(tr)$/i.test(t)?"table-row":/^(table)$/i.test(t)?"table":/^(tbody)$/i.test(t)?"table-row-group":"block"},addClass:function(e,t){e.classList?e.classList.add(t):e.className+=(e.className.length?" ":"")+t},removeClass:function(e,t){e.classList?e.classList.remove(t):e.className=e.className.toString().replace(new RegExp("(^|\\s)"+t.split(" ").join("|")+"(\\s|$)","gi")," ")}},getPropertyValue:function(e,r,n,o){function s(e,r){function n(){u&&S.setPropertyValue(e,"display","none")}var l=0;if(8>=d)l=f.css(e,r);else{var u=!1;if(/^(width|height)$/.test(r)&&0===S.getPropertyValue(e,"display")&&(u=!0,S.setPropertyValue(e,"display",S.Values.getDisplayType(e))),!o){if("height"===r&&"border-box"!==S.getPropertyValue(e,"boxSizing").toString().toLowerCase()){var c=e.offsetHeight-(parseFloat(S.getPropertyValue(e,"borderTopWidth"))||0)-(parseFloat(S.getPropertyValue(e,"borderBottomWidth"))||0)-(parseFloat(S.getPropertyValue(e,"paddingTop"))||0)-(parseFloat(S.getPropertyValue(e,"paddingBottom"))||0);return n(),c}if("width"===r&&"border-box"!==S.getPropertyValue(e,"boxSizing").toString().toLowerCase()){var p=e.offsetWidth-(parseFloat(S.getPropertyValue(e,"borderLeftWidth"))||0)-(parseFloat(S.getPropertyValue(e,"borderRightWidth"))||0)-(parseFloat(S.getPropertyValue(e,"paddingLeft"))||0)-(parseFloat(S.getPropertyValue(e,"paddingRight"))||0);return n(),p}}var g;g=i(e)===a?t.getComputedStyle(e,null):i(e).computedStyle?i(e).computedStyle:i(e).computedStyle=t.getComputedStyle(e,null),"borderColor"===r&&(r="borderTopColor"),l=9===d&&"filter"===r?g.getPropertyValue(r):g[r],(""===l||null===l)&&(l=e.style[r]),n()}if("auto"===l&&/^(top|right|bottom|left)$/i.test(r)){var m=s(e,"position");("fixed"===m||"absolute"===m&&/top|left/i.test(r))&&(l=f(e).position()[r]+"px")}return l}var l;if(S.Hooks.registered[r]){var u=r,c=S.Hooks.getRoot(u);n===a&&(n=S.getPropertyValue(e,S.Names.prefixCheck(c)[0])),S.Normalizations.registered[c]&&(n=S.Normalizations.registered[c]("extract",e,n)),l=S.Hooks.extractValue(u,n)}else if(S.Normalizations.registered[r]){var p,g;p=S.Normalizations.registered[r]("name",e),"transform"!==p&&(g=s(e,S.Names.prefixCheck(p)[0]),S.Values.isCSSNullValue(g)&&S.Hooks.templates[r]&&(g=S.Hooks.templates[r][1])),l=S.Normalizations.registered[r]("extract",e,g)}if(!/^[\d-]/.test(l))if(i(e)&&i(e).isSVG&&S.Names.SVGAttribute(r))if(/^(height|width)$/i.test(r))try{l=e.getBBox()[r]}catch(m){l=0}else l=e.getAttribute(r);else l=s(e,S.Names.prefixCheck(r)[0]);return S.Values.isCSSNullValue(l)&&(l=0),b.debug>=2&&console.log("Get "+r+": "+l),l},setPropertyValue:function(e,r,a,n,o){var s=r;if("scroll"===r)o.container?o.container["scroll"+o.direction]=a:"Left"===o.direction?t.scrollTo(a,o.alternateValue):t.scrollTo(o.alternateValue,a);else if(S.Normalizations.registered[r]&&"transform"===S.Normalizations.registered[r]("name",e))S.Normalizations.registered[r]("inject",e,a),s="transform",a=i(e).transformCache[r];else{if(S.Hooks.registered[r]){var l=r,u=S.Hooks.getRoot(r);n=n||S.getPropertyValue(e,u),a=S.Hooks.injectValue(l,a,n),r=u}if(S.Normalizations.registered[r]&&(a=S.Normalizations.registered[r]("inject",e,a),r=S.Normalizations.registered[r]("name",e)),s=S.Names.prefixCheck(r)[0],8>=d)try{e.style[s]=a}catch(c){b.debug&&console.log("Browser does not support ["+a+"] for ["+s+"]")}else i(e)&&i(e).isSVG&&S.Names.SVGAttribute(r)?e.setAttribute(r,a):e.style[s]=a;b.debug>=2&&console.log("Set "+r+" ("+s+"): "+a)}return[s,a]},flushTransformCache:function(e){function t(t){return parseFloat(S.getPropertyValue(e,t))}var r="";if((d||b.State.isAndroid&&!b.State.isChrome)&&i(e).isSVG){var a={translate:[t("translateX"),t("translateY")],skewX:[t("skewX")],skewY:[t("skewY")],scale:1!==t("scale")?[t("scale"),t("scale")]:[t("scaleX"),t("scaleY")],rotate:[t("rotateZ"),0,0]};f.each(i(e).transformCache,function(e){/^translate/i.test(e)?e="translate":/^scale/i.test(e)?e="scale":/^rotate/i.test(e)&&(e="rotate"),a[e]&&(r+=e+"("+a[e].join(" ")+") ",delete a[e])})}else{var n,o;f.each(i(e).transformCache,function(t){return n=i(e).transformCache[t],"transformPerspective"===t?(o=n,!0):(9===d&&"rotateZ"===t&&(t="rotate"),void(r+=t+n+" "))}),o&&(r="perspective"+o+" "+r)}S.setPropertyValue(e,"transform",r)}};S.Hooks.register(),S.Normalizations.register(),b.hook=function(e,t,r){var n=a;return e=o(e),f.each(e,function(e,o){if(i(o)===a&&b.init(o),r===a)n===a&&(n=b.CSS.getPropertyValue(o,t));else{var s=b.CSS.setPropertyValue(o,t,r);"transform"===s[0]&&b.CSS.flushTransformCache(o),n=s}}),n};var P=function(){function e(){return s?k.promise||null:l}function n(){function e(e){function p(e,t){var r=a,n=a,i=a;return m.isArray(e)?(r=e[0],!m.isArray(e[1])&&/^[\d-]/.test(e[1])||m.isFunction(e[1])||S.RegEx.isHex.test(e[1])?i=e[1]:(m.isString(e[1])&&!S.RegEx.isHex.test(e[1])||m.isArray(e[1]))&&(n=t?e[1]:u(e[1],s.duration),e[2]!==a&&(i=e[2]))):r=e,t||(n=n||s.easing),m.isFunction(r)&&(r=r.call(o,V,w)),m.isFunction(i)&&(i=i.call(o,V,w)),[r||0,n,i]}function d(e,t){var r,a;return a=(t||"0").toString().toLowerCase().replace(/[%A-z]+$/,function(e){return r=e,""}),r||(r=S.Values.getUnitType(e)),[a,r]}function h(){var e={myParent:o.parentNode||r.body,position:S.getPropertyValue(o,"position"),fontSize:S.getPropertyValue(o,"fontSize")},a=e.position===L.lastPosition&&e.myParent===L.lastParent,n=e.fontSize===L.lastFontSize;L.lastParent=e.myParent,L.lastPosition=e.position,L.lastFontSize=e.fontSize;var s=100,l={};if(n&&a)l.emToPx=L.lastEmToPx,l.percentToPxWidth=L.lastPercentToPxWidth,l.percentToPxHeight=L.lastPercentToPxHeight;else{var u=i(o).isSVG?r.createElementNS("http://www.w3.org/2000/svg","rect"):r.createElement("div");b.init(u),e.myParent.appendChild(u),f.each(["overflow","overflowX","overflowY"],function(e,t){b.CSS.setPropertyValue(u,t,"hidden")}),b.CSS.setPropertyValue(u,"position",e.position),b.CSS.setPropertyValue(u,"fontSize",e.fontSize),b.CSS.setPropertyValue(u,"boxSizing","content-box"),f.each(["minWidth","maxWidth","width","minHeight","maxHeight","height"],function(e,t){b.CSS.setPropertyValue(u,t,s+"%")}),b.CSS.setPropertyValue(u,"paddingLeft",s+"em"),l.percentToPxWidth=L.lastPercentToPxWidth=(parseFloat(S.getPropertyValue(u,"width",null,!0))||1)/s,l.percentToPxHeight=L.lastPercentToPxHeight=(parseFloat(S.getPropertyValue(u,"height",null,!0))||1)/s,l.emToPx=L.lastEmToPx=(parseFloat(S.getPropertyValue(u,"paddingLeft"))||1)/s,e.myParent.removeChild(u)}return null===L.remToPx&&(L.remToPx=parseFloat(S.getPropertyValue(r.body,"fontSize"))||16),null===L.vwToPx&&(L.vwToPx=parseFloat(t.innerWidth)/100,L.vhToPx=parseFloat(t.innerHeight)/100),l.remToPx=L.remToPx,l.vwToPx=L.vwToPx,l.vhToPx=L.vhToPx,b.debug>=1&&console.log("Unit ratios: "+JSON.stringify(l),o),l}if(s.begin&&0===V)try{s.begin.call(g,g)}catch(x){setTimeout(function(){throw x},1)}if("scroll"===A){var P,C,T,F=/^x$/i.test(s.axis)?"Left":"Top",j=parseFloat(s.offset)||0;s.container?m.isWrapped(s.container)||m.isNode(s.container)?(s.container=s.container[0]||s.container,P=s.container["scroll"+F],T=P+f(o).position()[F.toLowerCase()]+j):s.container=null:(P=b.State.scrollAnchor[b.State["scrollProperty"+F]],C=b.State.scrollAnchor[b.State["scrollProperty"+("Left"===F?"Top":"Left")]],T=f(o).offset()[F.toLowerCase()]+j),l={scroll:{rootPropertyValue:!1,startValue:P,currentValue:P,endValue:T,unitType:"",easing:s.easing,scrollData:{container:s.container,direction:F,alternateValue:C}},element:o},b.debug&&console.log("tweensContainer (scroll): ",l.scroll,o)}else if("reverse"===A){if(!i(o).tweensContainer)return void f.dequeue(o,s.queue);"none"===i(o).opts.display&&(i(o).opts.display="auto"),"hidden"===i(o).opts.visibility&&(i(o).opts.visibility="visible"),i(o).opts.loop=!1,i(o).opts.begin=null,i(o).opts.complete=null,v.easing||delete s.easing,v.duration||delete s.duration,s=f.extend({},i(o).opts,s);var E=f.extend(!0,{},i(o).tweensContainer);for(var H in E)if("element"!==H){var N=E[H].startValue;E[H].startValue=E[H].currentValue=E[H].endValue,E[H].endValue=N,m.isEmptyObject(v)||(E[H].easing=s.easing),b.debug&&console.log("reverse tweensContainer ("+H+"): "+JSON.stringify(E[H]),o)}l=E}else if("start"===A){var E;i(o).tweensContainer&&i(o).isAnimating===!0&&(E=i(o).tweensContainer),f.each(y,function(e,t){if(RegExp("^"+S.Lists.colors.join("$|^")+"$").test(e)){var r=p(t,!0),n=r[0],o=r[1],i=r[2];if(S.RegEx.isHex.test(n)){for(var s=["Red","Green","Blue"],l=S.Values.hexToRgb(n),u=i?S.Values.hexToRgb(i):a,c=0;c<s.length;c++){var f=[l[c]];o&&f.push(o),u!==a&&f.push(u[c]),y[e+s[c]]=f}delete y[e]}}});for(var z in y){var O=p(y[z]),q=O[0],$=O[1],M=O[2];z=S.Names.camelCase(z);var I=S.Hooks.getRoot(z),B=!1;if(i(o).isSVG||"tween"===I||S.Names.prefixCheck(I)[1]!==!1||S.Normalizations.registered[I]!==a){(s.display!==a&&null!==s.display&&"none"!==s.display||s.visibility!==a&&"hidden"!==s.visibility)&&/opacity|filter/.test(z)&&!M&&0!==q&&(M=0),s._cacheValues&&E&&E[z]?(M===a&&(M=E[z].endValue+E[z].unitType),B=i(o).rootPropertyValueCache[I]):S.Hooks.registered[z]?M===a?(B=S.getPropertyValue(o,I),M=S.getPropertyValue(o,z,B)):B=S.Hooks.templates[I][1]:M===a&&(M=S.getPropertyValue(o,z));var W,G,Y,D=!1;if(W=d(z,M),M=W[0],Y=W[1],W=d(z,q),q=W[0].replace(/^([+-\/*])=/,function(e,t){return D=t,""}),G=W[1],M=parseFloat(M)||0,q=parseFloat(q)||0,"%"===G&&(/^(fontSize|lineHeight)$/.test(z)?(q/=100,G="em"):/^scale/.test(z)?(q/=100,G=""):/(Red|Green|Blue)$/i.test(z)&&(q=q/100*255,G="")),/[\/*]/.test(D))G=Y;else if(Y!==G&&0!==M)if(0===q)G=Y;else{n=n||h();var Q=/margin|padding|left|right|width|text|word|letter/i.test(z)||/X$/.test(z)||"x"===z?"x":"y";switch(Y){case"%":M*="x"===Q?n.percentToPxWidth:n.percentToPxHeight;break;case"px":break;default:M*=n[Y+"ToPx"]}switch(G){case"%":M*=1/("x"===Q?n.percentToPxWidth:n.percentToPxHeight);break;case"px":break;default:M*=1/n[G+"ToPx"]}}switch(D){case"+":q=M+q;break;case"-":q=M-q;break;case"*":q=M*q;break;case"/":q=M/q}l[z]={rootPropertyValue:B,startValue:M,currentValue:M,endValue:q,unitType:G,easing:$},b.debug&&console.log("tweensContainer ("+z+"): "+JSON.stringify(l[z]),o)}else b.debug&&console.log("Skipping ["+I+"] due to a lack of browser support.")}l.element=o}l.element&&(S.Values.addClass(o,"velocity-animating"),R.push(l),""===s.queue&&(i(o).tweensContainer=l,i(o).opts=s),i(o).isAnimating=!0,V===w-1?(b.State.calls.push([R,g,s,null,k.resolver]),b.State.isTicking===!1&&(b.State.isTicking=!0,c())):V++)}var n,o=this,s=f.extend({},b.defaults,v),l={};switch(i(o)===a&&b.init(o),parseFloat(s.delay)&&s.queue!==!1&&f.queue(o,s.queue,function(e){b.velocityQueueEntryFlag=!0,i(o).delayTimer={setTimeout:setTimeout(e,parseFloat(s.delay)),next:e}}),s.duration.toString().toLowerCase()){case"fast":s.duration=200;break;case"normal":s.duration=h;break;case"slow":s.duration=600;break;default:s.duration=parseFloat(s.duration)||1}b.mock!==!1&&(b.mock===!0?s.duration=s.delay=1:(s.duration*=parseFloat(b.mock)||1,s.delay*=parseFloat(b.mock)||1)),s.easing=u(s.easing,s.duration),s.begin&&!m.isFunction(s.begin)&&(s.begin=null),s.progress&&!m.isFunction(s.progress)&&(s.progress=null),s.complete&&!m.isFunction(s.complete)&&(s.complete=null),s.display!==a&&null!==s.display&&(s.display=s.display.toString().toLowerCase(),"auto"===s.display&&(s.display=b.CSS.Values.getDisplayType(o))),s.visibility!==a&&null!==s.visibility&&(s.visibility=s.visibility.toString().toLowerCase()),s.mobileHA=s.mobileHA&&b.State.isMobile&&!b.State.isGingerbread,s.queue===!1?s.delay?setTimeout(e,s.delay):e():f.queue(o,s.queue,function(t,r){return r===!0?(k.promise&&k.resolver(g),!0):(b.velocityQueueEntryFlag=!0,void e(t))}),""!==s.queue&&"fx"!==s.queue||"inprogress"===f.queue(o)[0]||f.dequeue(o)}var s,l,d,g,y,v,x=arguments[0]&&(arguments[0].p||f.isPlainObject(arguments[0].properties)&&!arguments[0].properties.names||m.isString(arguments[0].properties));if(m.isWrapped(this)?(s=!1,d=0,g=this,l=this):(s=!0,d=1,g=x?arguments[0].elements||arguments[0].e:arguments[0]),g=o(g)){x?(y=arguments[0].properties||arguments[0].p,v=arguments[0].options||arguments[0].o):(y=arguments[d],v=arguments[d+1]);var w=g.length,V=0;if(!/^(stop|finish)$/i.test(y)&&!f.isPlainObject(v)){var C=d+1;v={};for(var T=C;T<arguments.length;T++)m.isArray(arguments[T])||!/^(fast|normal|slow)$/i.test(arguments[T])&&!/^\d/.test(arguments[T])?m.isString(arguments[T])||m.isArray(arguments[T])?v.easing=arguments[T]:m.isFunction(arguments[T])&&(v.complete=arguments[T]):v.duration=arguments[T]}var k={promise:null,resolver:null,rejecter:null};s&&b.Promise&&(k.promise=new b.Promise(function(e,t){k.resolver=e,k.rejecter=t}));var A;switch(y){case"scroll":A="scroll";break;case"reverse":A="reverse";break;case"finish":case"stop":f.each(g,function(e,t){i(t)&&i(t).delayTimer&&(clearTimeout(i(t).delayTimer.setTimeout),i(t).delayTimer.next&&i(t).delayTimer.next(),delete i(t).delayTimer)});var F=[];return f.each(b.State.calls,function(e,t){t&&f.each(t[1],function(r,n){var o=v===a?"":v;return o===!0||t[2].queue===o||v===a&&t[2].queue===!1?void f.each(g,function(r,a){a===n&&((v===!0||m.isString(v))&&(f.each(f.queue(a,m.isString(v)?v:""),function(e,t){
232
+ m.isFunction(t)&&t(null,!0)}),f.queue(a,m.isString(v)?v:"",[])),"stop"===y?(i(a)&&i(a).tweensContainer&&o!==!1&&f.each(i(a).tweensContainer,function(e,t){t.endValue=t.currentValue}),F.push(e)):"finish"===y&&(t[2].duration=1))}):!0})}),"stop"===y&&(f.each(F,function(e,t){p(t,!0)}),k.promise&&k.resolver(g)),e();default:if(!f.isPlainObject(y)||m.isEmptyObject(y)){if(m.isString(y)&&b.Redirects[y]){var j=f.extend({},v),E=j.duration,H=j.delay||0;return j.backwards===!0&&(g=f.extend(!0,[],g).reverse()),f.each(g,function(e,t){parseFloat(j.stagger)?j.delay=H+parseFloat(j.stagger)*e:m.isFunction(j.stagger)&&(j.delay=H+j.stagger.call(t,e,w)),j.drag&&(j.duration=parseFloat(E)||(/^(callout|transition)/.test(y)?1e3:h),j.duration=Math.max(j.duration*(j.backwards?1-e/w:(e+1)/w),.75*j.duration,200)),b.Redirects[y].call(t,t,j||{},e,w,g,k.promise?k:a)}),e()}var N="Velocity: First argument ("+y+") was not a property map, a known action, or a registered redirect. Aborting.";return k.promise?k.rejecter(new Error(N)):console.log(N),e()}A="start"}var L={lastParent:null,lastPosition:null,lastFontSize:null,lastPercentToPxWidth:null,lastPercentToPxHeight:null,lastEmToPx:null,remToPx:null,vwToPx:null,vhToPx:null},R=[];f.each(g,function(e,t){m.isNode(t)&&n.call(t)});var z,j=f.extend({},b.defaults,v);if(j.loop=parseInt(j.loop),z=2*j.loop-1,j.loop)for(var O=0;z>O;O++){var q={delay:j.delay,progress:j.progress};O===z-1&&(q.display=j.display,q.visibility=j.visibility,q.complete=j.complete),P(g,"reverse",q)}return e()}};b=f.extend(P,b),b.animate=P;var w=t.requestAnimationFrame||g;return b.State.isMobile||r.hidden===a||r.addEventListener("visibilitychange",function(){r.hidden?(w=function(e){return setTimeout(function(){e(!0)},16)},c()):w=t.requestAnimationFrame||g}),e.Velocity=b,e!==t&&(e.fn.velocity=P,e.fn.velocity.defaults=b.defaults),f.each(["Down","Up"],function(e,t){b.Redirects["slide"+t]=function(e,r,n,o,i,s){var l=f.extend({},r),u=l.begin,c=l.complete,p={height:"",marginTop:"",marginBottom:"",paddingTop:"",paddingBottom:""},d={};l.display===a&&(l.display="Down"===t?"inline"===b.CSS.Values.getDisplayType(e)?"inline-block":"block":"none"),l.begin=function(){u&&u.call(i,i);for(var r in p){d[r]=e.style[r];var a=b.CSS.getPropertyValue(e,r);p[r]="Down"===t?[a,0]:[0,a]}d.overflow=e.style.overflow,e.style.overflow="hidden"},l.complete=function(){for(var t in d)e.style[t]=d[t];c&&c.call(i,i),s&&s.resolver(i)},b(e,p,l)}}),f.each(["In","Out"],function(e,t){b.Redirects["fade"+t]=function(e,r,n,o,i,s){var l=f.extend({},r),u={opacity:"In"===t?1:0},c=l.complete;l.complete=n!==o-1?l.begin=null:function(){c&&c.call(i,i),s&&s.resolver(i)},l.display===a&&(l.display="In"===t?"auto":"none"),b(this,u,l)}}),b}(window.jQuery||window.Zepto||window,window,document)}));
233
+ ;!function(a,b,c,d){"use strict";function k(a,b,c){return setTimeout(q(a,c),b)}function l(a,b,c){return Array.isArray(a)?(m(a,c[b],c),!0):!1}function m(a,b,c){var e;if(a)if(a.forEach)a.forEach(b,c);else if(a.length!==d)for(e=0;e<a.length;)b.call(c,a[e],e,a),e++;else for(e in a)a.hasOwnProperty(e)&&b.call(c,a[e],e,a)}function n(a,b,c){for(var e=Object.keys(b),f=0;f<e.length;)(!c||c&&a[e[f]]===d)&&(a[e[f]]=b[e[f]]),f++;return a}function o(a,b){return n(a,b,!0)}function p(a,b,c){var e,d=b.prototype;e=a.prototype=Object.create(d),e.constructor=a,e._super=d,c&&n(e,c)}function q(a,b){return function(){return a.apply(b,arguments)}}function r(a,b){return typeof a==g?a.apply(b?b[0]||d:d,b):a}function s(a,b){return a===d?b:a}function t(a,b,c){m(x(b),function(b){a.addEventListener(b,c,!1)})}function u(a,b,c){m(x(b),function(b){a.removeEventListener(b,c,!1)})}function v(a,b){for(;a;){if(a==b)return!0;a=a.parentNode}return!1}function w(a,b){return a.indexOf(b)>-1}function x(a){return a.trim().split(/\s+/g)}function y(a,b,c){if(a.indexOf&&!c)return a.indexOf(b);for(var d=0;d<a.length;){if(c&&a[d][c]==b||!c&&a[d]===b)return d;d++}return-1}function z(a){return Array.prototype.slice.call(a,0)}function A(a,b,c){for(var d=[],e=[],f=0;f<a.length;){var g=b?a[f][b]:a[f];y(e,g)<0&&d.push(a[f]),e[f]=g,f++}return c&&(d=b?d.sort(function(a,c){return a[b]>c[b]}):d.sort()),d}function B(a,b){for(var c,f,g=b[0].toUpperCase()+b.slice(1),h=0;h<e.length;){if(c=e[h],f=c?c+g:b,f in a)return f;h++}return d}function D(){return C++}function E(a){var b=a.ownerDocument;return b.defaultView||b.parentWindow}function ab(a,b){var c=this;this.manager=a,this.callback=b,this.element=a.element,this.target=a.options.inputTarget,this.domHandler=function(b){r(a.options.enable,[a])&&c.handler(b)},this.init()}function bb(a){var b,c=a.options.inputClass;return b=c?c:H?wb:I?Eb:G?Gb:rb,new b(a,cb)}function cb(a,b,c){var d=c.pointers.length,e=c.changedPointers.length,f=b&O&&0===d-e,g=b&(Q|R)&&0===d-e;c.isFirst=!!f,c.isFinal=!!g,f&&(a.session={}),c.eventType=b,db(a,c),a.emit("hammer.input",c),a.recognize(c),a.session.prevInput=c}function db(a,b){var c=a.session,d=b.pointers,e=d.length;c.firstInput||(c.firstInput=gb(b)),e>1&&!c.firstMultiple?c.firstMultiple=gb(b):1===e&&(c.firstMultiple=!1);var f=c.firstInput,g=c.firstMultiple,h=g?g.center:f.center,i=b.center=hb(d);b.timeStamp=j(),b.deltaTime=b.timeStamp-f.timeStamp,b.angle=lb(h,i),b.distance=kb(h,i),eb(c,b),b.offsetDirection=jb(b.deltaX,b.deltaY),b.scale=g?nb(g.pointers,d):1,b.rotation=g?mb(g.pointers,d):0,fb(c,b);var k=a.element;v(b.srcEvent.target,k)&&(k=b.srcEvent.target),b.target=k}function eb(a,b){var c=b.center,d=a.offsetDelta||{},e=a.prevDelta||{},f=a.prevInput||{};(b.eventType===O||f.eventType===Q)&&(e=a.prevDelta={x:f.deltaX||0,y:f.deltaY||0},d=a.offsetDelta={x:c.x,y:c.y}),b.deltaX=e.x+(c.x-d.x),b.deltaY=e.y+(c.y-d.y)}function fb(a,b){var f,g,h,j,c=a.lastInterval||b,e=b.timeStamp-c.timeStamp;if(b.eventType!=R&&(e>N||c.velocity===d)){var k=c.deltaX-b.deltaX,l=c.deltaY-b.deltaY,m=ib(e,k,l);g=m.x,h=m.y,f=i(m.x)>i(m.y)?m.x:m.y,j=jb(k,l),a.lastInterval=b}else f=c.velocity,g=c.velocityX,h=c.velocityY,j=c.direction;b.velocity=f,b.velocityX=g,b.velocityY=h,b.direction=j}function gb(a){for(var b=[],c=0;c<a.pointers.length;)b[c]={clientX:h(a.pointers[c].clientX),clientY:h(a.pointers[c].clientY)},c++;return{timeStamp:j(),pointers:b,center:hb(b),deltaX:a.deltaX,deltaY:a.deltaY}}function hb(a){var b=a.length;if(1===b)return{x:h(a[0].clientX),y:h(a[0].clientY)};for(var c=0,d=0,e=0;b>e;)c+=a[e].clientX,d+=a[e].clientY,e++;return{x:h(c/b),y:h(d/b)}}function ib(a,b,c){return{x:b/a||0,y:c/a||0}}function jb(a,b){return a===b?S:i(a)>=i(b)?a>0?T:U:b>0?V:W}function kb(a,b,c){c||(c=$);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return Math.sqrt(d*d+e*e)}function lb(a,b,c){c||(c=$);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return 180*Math.atan2(e,d)/Math.PI}function mb(a,b){return lb(b[1],b[0],_)-lb(a[1],a[0],_)}function nb(a,b){return kb(b[0],b[1],_)/kb(a[0],a[1],_)}function rb(){this.evEl=pb,this.evWin=qb,this.allow=!0,this.pressed=!1,ab.apply(this,arguments)}function wb(){this.evEl=ub,this.evWin=vb,ab.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function Ab(){this.evTarget=yb,this.evWin=zb,this.started=!1,ab.apply(this,arguments)}function Bb(a,b){var c=z(a.touches),d=z(a.changedTouches);return b&(Q|R)&&(c=A(c.concat(d),"identifier",!0)),[c,d]}function Eb(){this.evTarget=Db,this.targetIds={},ab.apply(this,arguments)}function Fb(a,b){var c=z(a.touches),d=this.targetIds;if(b&(O|P)&&1===c.length)return d[c[0].identifier]=!0,[c,c];var e,f,g=z(a.changedTouches),h=[],i=this.target;if(f=c.filter(function(a){return v(a.target,i)}),b===O)for(e=0;e<f.length;)d[f[e].identifier]=!0,e++;for(e=0;e<g.length;)d[g[e].identifier]&&h.push(g[e]),b&(Q|R)&&delete d[g[e].identifier],e++;return h.length?[A(f.concat(h),"identifier",!0),h]:void 0}function Gb(){ab.apply(this,arguments);var a=q(this.handler,this);this.touch=new Eb(this.manager,a),this.mouse=new rb(this.manager,a)}function Pb(a,b){this.manager=a,this.set(b)}function Qb(a){if(w(a,Mb))return Mb;var b=w(a,Nb),c=w(a,Ob);return b&&c?Nb+" "+Ob:b||c?b?Nb:Ob:w(a,Lb)?Lb:Kb}function Yb(a){this.id=D(),this.manager=null,this.options=o(a||{},this.defaults),this.options.enable=s(this.options.enable,!0),this.state=Rb,this.simultaneous={},this.requireFail=[]}function Zb(a){return a&Wb?"cancel":a&Ub?"end":a&Tb?"move":a&Sb?"start":""}function $b(a){return a==W?"down":a==V?"up":a==T?"left":a==U?"right":""}function _b(a,b){var c=b.manager;return c?c.get(a):a}function ac(){Yb.apply(this,arguments)}function bc(){ac.apply(this,arguments),this.pX=null,this.pY=null}function cc(){ac.apply(this,arguments)}function dc(){Yb.apply(this,arguments),this._timer=null,this._input=null}function ec(){ac.apply(this,arguments)}function fc(){ac.apply(this,arguments)}function gc(){Yb.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function hc(a,b){return b=b||{},b.recognizers=s(b.recognizers,hc.defaults.preset),new kc(a,b)}function kc(a,b){b=b||{},this.options=o(b,hc.defaults),this.options.inputTarget=this.options.inputTarget||a,this.handlers={},this.session={},this.recognizers=[],this.element=a,this.input=bb(this),this.touchAction=new Pb(this,this.options.touchAction),lc(this,!0),m(b.recognizers,function(a){var b=this.add(new a[0](a[1]));a[2]&&b.recognizeWith(a[2]),a[3]&&b.requireFailure(a[3])},this)}function lc(a,b){var c=a.element;m(a.options.cssProps,function(a,d){c.style[B(c.style,d)]=b?a:""})}function mc(a,c){var d=b.createEvent("Event");d.initEvent(a,!0,!0),d.gesture=c,c.target.dispatchEvent(d)}var e=["","webkit","moz","MS","ms","o"],f=b.createElement("div"),g="function",h=Math.round,i=Math.abs,j=Date.now,C=1,F=/mobile|tablet|ip(ad|hone|od)|android/i,G="ontouchstart"in a,H=B(a,"PointerEvent")!==d,I=G&&F.test(navigator.userAgent),J="touch",K="pen",L="mouse",M="kinect",N=25,O=1,P=2,Q=4,R=8,S=1,T=2,U=4,V=8,W=16,X=T|U,Y=V|W,Z=X|Y,$=["x","y"],_=["clientX","clientY"];ab.prototype={handler:function(){},init:function(){this.evEl&&t(this.element,this.evEl,this.domHandler),this.evTarget&&t(this.target,this.evTarget,this.domHandler),this.evWin&&t(E(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&u(this.element,this.evEl,this.domHandler),this.evTarget&&u(this.target,this.evTarget,this.domHandler),this.evWin&&u(E(this.element),this.evWin,this.domHandler)}};var ob={mousedown:O,mousemove:P,mouseup:Q},pb="mousedown",qb="mousemove mouseup";p(rb,ab,{handler:function(a){var b=ob[a.type];b&O&&0===a.button&&(this.pressed=!0),b&P&&1!==a.which&&(b=Q),this.pressed&&this.allow&&(b&Q&&(this.pressed=!1),this.callback(this.manager,b,{pointers:[a],changedPointers:[a],pointerType:L,srcEvent:a}))}});var sb={pointerdown:O,pointermove:P,pointerup:Q,pointercancel:R,pointerout:R},tb={2:J,3:K,4:L,5:M},ub="pointerdown",vb="pointermove pointerup pointercancel";a.MSPointerEvent&&(ub="MSPointerDown",vb="MSPointerMove MSPointerUp MSPointerCancel"),p(wb,ab,{handler:function(a){var b=this.store,c=!1,d=a.type.toLowerCase().replace("ms",""),e=sb[d],f=tb[a.pointerType]||a.pointerType,g=f==J,h=y(b,a.pointerId,"pointerId");e&O&&(0===a.button||g)?0>h&&(b.push(a),h=b.length-1):e&(Q|R)&&(c=!0),0>h||(b[h]=a,this.callback(this.manager,e,{pointers:b,changedPointers:[a],pointerType:f,srcEvent:a}),c&&b.splice(h,1))}});var xb={touchstart:O,touchmove:P,touchend:Q,touchcancel:R},yb="touchstart",zb="touchstart touchmove touchend touchcancel";p(Ab,ab,{handler:function(a){var b=xb[a.type];if(b===O&&(this.started=!0),this.started){var c=Bb.call(this,a,b);b&(Q|R)&&0===c[0].length-c[1].length&&(this.started=!1),this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:J,srcEvent:a})}}});var Cb={touchstart:O,touchmove:P,touchend:Q,touchcancel:R},Db="touchstart touchmove touchend touchcancel";p(Eb,ab,{handler:function(a){var b=Cb[a.type],c=Fb.call(this,a,b);c&&this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:J,srcEvent:a})}}),p(Gb,ab,{handler:function(a,b,c){var d=c.pointerType==J,e=c.pointerType==L;if(d)this.mouse.allow=!1;else if(e&&!this.mouse.allow)return;b&(Q|R)&&(this.mouse.allow=!0),this.callback(a,b,c)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var Hb=B(f.style,"touchAction"),Ib=Hb!==d,Jb="compute",Kb="auto",Lb="manipulation",Mb="none",Nb="pan-x",Ob="pan-y";Pb.prototype={set:function(a){a==Jb&&(a=this.compute()),Ib&&(this.manager.element.style[Hb]=a),this.actions=a.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var a=[];return m(this.manager.recognizers,function(b){r(b.options.enable,[b])&&(a=a.concat(b.getTouchAction()))}),Qb(a.join(" "))},preventDefaults:function(a){if(!Ib){var b=a.srcEvent,c=a.offsetDirection;if(this.manager.session.prevented)return b.preventDefault(),void 0;var d=this.actions,e=w(d,Mb),f=w(d,Ob),g=w(d,Nb);return e||f&&c&X||g&&c&Y?this.preventSrc(b):void 0}},preventSrc:function(a){this.manager.session.prevented=!0,a.preventDefault()}};var Rb=1,Sb=2,Tb=4,Ub=8,Vb=Ub,Wb=16,Xb=32;Yb.prototype={defaults:{},set:function(a){return n(this.options,a),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(a){if(l(a,"recognizeWith",this))return this;var b=this.simultaneous;return a=_b(a,this),b[a.id]||(b[a.id]=a,a.recognizeWith(this)),this},dropRecognizeWith:function(a){return l(a,"dropRecognizeWith",this)?this:(a=_b(a,this),delete this.simultaneous[a.id],this)},requireFailure:function(a){if(l(a,"requireFailure",this))return this;var b=this.requireFail;return a=_b(a,this),-1===y(b,a)&&(b.push(a),a.requireFailure(this)),this},dropRequireFailure:function(a){if(l(a,"dropRequireFailure",this))return this;a=_b(a,this);var b=y(this.requireFail,a);return b>-1&&this.requireFail.splice(b,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(a){return!!this.simultaneous[a.id]},emit:function(a){function d(d){b.manager.emit(b.options.event+(d?Zb(c):""),a)}var b=this,c=this.state;Ub>c&&d(!0),d(),c>=Ub&&d(!0)},tryEmit:function(a){return this.canEmit()?this.emit(a):(this.state=Xb,void 0)},canEmit:function(){for(var a=0;a<this.requireFail.length;){if(!(this.requireFail[a].state&(Xb|Rb)))return!1;a++}return!0},recognize:function(a){var b=n({},a);return r(this.options.enable,[this,b])?(this.state&(Vb|Wb|Xb)&&(this.state=Rb),this.state=this.process(b),this.state&(Sb|Tb|Ub|Wb)&&this.tryEmit(b),void 0):(this.reset(),this.state=Xb,void 0)},process:function(){},getTouchAction:function(){},reset:function(){}},p(ac,Yb,{defaults:{pointers:1},attrTest:function(a){var b=this.options.pointers;return 0===b||a.pointers.length===b},process:function(a){var b=this.state,c=a.eventType,d=b&(Sb|Tb),e=this.attrTest(a);return d&&(c&R||!e)?b|Wb:d||e?c&Q?b|Ub:b&Sb?b|Tb:Sb:Xb}}),p(bc,ac,{defaults:{event:"pan",threshold:10,pointers:1,direction:Z},getTouchAction:function(){var a=this.options.direction,b=[];return a&X&&b.push(Ob),a&Y&&b.push(Nb),b},directionTest:function(a){var b=this.options,c=!0,d=a.distance,e=a.direction,f=a.deltaX,g=a.deltaY;return e&b.direction||(b.direction&X?(e=0===f?S:0>f?T:U,c=f!=this.pX,d=Math.abs(a.deltaX)):(e=0===g?S:0>g?V:W,c=g!=this.pY,d=Math.abs(a.deltaY))),a.direction=e,c&&d>b.threshold&&e&b.direction},attrTest:function(a){return ac.prototype.attrTest.call(this,a)&&(this.state&Sb||!(this.state&Sb)&&this.directionTest(a))},emit:function(a){this.pX=a.deltaX,this.pY=a.deltaY;var b=$b(a.direction);b&&this.manager.emit(this.options.event+b,a),this._super.emit.call(this,a)}}),p(cc,ac,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[Mb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.scale-1)>this.options.threshold||this.state&Sb)},emit:function(a){if(this._super.emit.call(this,a),1!==a.scale){var b=a.scale<1?"in":"out";this.manager.emit(this.options.event+b,a)}}}),p(dc,Yb,{defaults:{event:"press",pointers:1,time:500,threshold:5},getTouchAction:function(){return[Kb]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,e=a.deltaTime>b.time;if(this._input=a,!d||!c||a.eventType&(Q|R)&&!e)this.reset();else if(a.eventType&O)this.reset(),this._timer=k(function(){this.state=Vb,this.tryEmit()},b.time,this);else if(a.eventType&Q)return Vb;return Xb},reset:function(){clearTimeout(this._timer)},emit:function(a){this.state===Vb&&(a&&a.eventType&Q?this.manager.emit(this.options.event+"up",a):(this._input.timeStamp=j(),this.manager.emit(this.options.event,this._input)))}}),p(ec,ac,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[Mb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.rotation)>this.options.threshold||this.state&Sb)}}),p(fc,ac,{defaults:{event:"swipe",threshold:10,velocity:.65,direction:X|Y,pointers:1},getTouchAction:function(){return bc.prototype.getTouchAction.call(this)},attrTest:function(a){var c,b=this.options.direction;return b&(X|Y)?c=a.velocity:b&X?c=a.velocityX:b&Y&&(c=a.velocityY),this._super.attrTest.call(this,a)&&b&a.direction&&a.distance>this.options.threshold&&i(c)>this.options.velocity&&a.eventType&Q},emit:function(a){var b=$b(a.direction);b&&this.manager.emit(this.options.event+b,a),this.manager.emit(this.options.event,a)}}),p(gc,Yb,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:2,posThreshold:10},getTouchAction:function(){return[Lb]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,e=a.deltaTime<b.time;if(this.reset(),a.eventType&O&&0===this.count)return this.failTimeout();if(d&&e&&c){if(a.eventType!=Q)return this.failTimeout();var f=this.pTime?a.timeStamp-this.pTime<b.interval:!0,g=!this.pCenter||kb(this.pCenter,a.center)<b.posThreshold;this.pTime=a.timeStamp,this.pCenter=a.center,g&&f?this.count+=1:this.count=1,this._input=a;var h=this.count%b.taps;if(0===h)return this.hasRequireFailures()?(this._timer=k(function(){this.state=Vb,this.tryEmit()},b.interval,this),Sb):Vb}return Xb},failTimeout:function(){return this._timer=k(function(){this.state=Xb},this.options.interval,this),Xb},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==Vb&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}}),hc.VERSION="2.0.4",hc.defaults={domEvents:!1,touchAction:Jb,enable:!0,inputTarget:null,inputClass:null,preset:[[ec,{enable:!1}],[cc,{enable:!1},["rotate"]],[fc,{direction:X}],[bc,{direction:X},["swipe"]],[gc],[gc,{event:"doubletap",taps:2},["tap"]],[dc]],cssProps:{userSelect:"default",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}};var ic=1,jc=2;kc.prototype={set:function(a){return n(this.options,a),a.touchAction&&this.touchAction.update(),a.inputTarget&&(this.input.destroy(),this.input.target=a.inputTarget,this.input.init()),this},stop:function(a){this.session.stopped=a?jc:ic},recognize:function(a){var b=this.session;if(!b.stopped){this.touchAction.preventDefaults(a);var c,d=this.recognizers,e=b.curRecognizer;(!e||e&&e.state&Vb)&&(e=b.curRecognizer=null);for(var f=0;f<d.length;)c=d[f],b.stopped===jc||e&&c!=e&&!c.canRecognizeWith(e)?c.reset():c.recognize(a),!e&&c.state&(Sb|Tb|Ub)&&(e=b.curRecognizer=c),f++}},get:function(a){if(a instanceof Yb)return a;for(var b=this.recognizers,c=0;c<b.length;c++)if(b[c].options.event==a)return b[c];return null},add:function(a){if(l(a,"add",this))return this;var b=this.get(a.options.event);return b&&this.remove(b),this.recognizers.push(a),a.manager=this,this.touchAction.update(),a},remove:function(a){if(l(a,"remove",this))return this;var b=this.recognizers;return a=this.get(a),b.splice(y(b,a),1),this.touchAction.update(),this},on:function(a,b){var c=this.handlers;return m(x(a),function(a){c[a]=c[a]||[],c[a].push(b)}),this},off:function(a,b){var c=this.handlers;return m(x(a),function(a){b?c[a].splice(y(c[a],b),1):delete c[a]}),this},emit:function(a,b){this.options.domEvents&&mc(a,b);var c=this.handlers[a]&&this.handlers[a].slice();if(c&&c.length){b.type=a,b.preventDefault=function(){b.srcEvent.preventDefault()};for(var d=0;d<c.length;)c[d](b),d++}},destroy:function(){this.element&&lc(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}},n(hc,{INPUT_START:O,INPUT_MOVE:P,INPUT_END:Q,INPUT_CANCEL:R,STATE_POSSIBLE:Rb,STATE_BEGAN:Sb,STATE_CHANGED:Tb,STATE_ENDED:Ub,STATE_RECOGNIZED:Vb,STATE_CANCELLED:Wb,STATE_FAILED:Xb,DIRECTION_NONE:S,DIRECTION_LEFT:T,DIRECTION_RIGHT:U,DIRECTION_UP:V,DIRECTION_DOWN:W,DIRECTION_HORIZONTAL:X,DIRECTION_VERTICAL:Y,DIRECTION_ALL:Z,Manager:kc,Input:ab,TouchAction:Pb,TouchInput:Eb,MouseInput:rb,PointerEventInput:wb,TouchMouseInput:Gb,SingleTouchInput:Ab,Recognizer:Yb,AttrRecognizer:ac,Tap:gc,Pan:bc,Swipe:fc,Pinch:cc,Rotate:ec,Press:dc,on:t,off:u,each:m,merge:o,extend:n,inherit:p,bindFn:q,prefixed:B}),typeof define==g&&define.amd?define(function(){return hc}):"undefined"!=typeof module&&module.exports?module.exports=hc:a[c]=hc}(window,document,"Hammer");;(function(factory) {
234
+ if (typeof define === 'function' && define.amd) {
235
+ define(['jquery', 'hammerjs'], factory);
236
+ } else if (typeof exports === 'object') {
237
+ factory(require('jquery'), require('hammerjs'));
238
+ } else {
239
+ factory(jQuery, Hammer);
240
+ }
241
+ }(function($, Hammer) {
242
+ function hammerify(el, options) {
243
+ var $el = $(el);
244
+ if(!$el.data("hammer")) {
245
+ $el.data("hammer", new Hammer($el[0], options));
246
+ }
247
+ }
248
+
249
+ $.fn.hammer = function(options) {
250
+ return this.each(function() {
251
+ hammerify(this, options);
252
+ });
253
+ };
254
+
255
+ // extend the emit method to also trigger jQuery events
256
+ Hammer.Manager.prototype.emit = (function(originalEmit) {
257
+ return function(type, data) {
258
+ originalEmit.call(this, type, data);
259
+ $(this.element).trigger({
260
+ type: type,
261
+ gesture: data
262
+ });
263
+ };
264
+ })(Hammer.Manager.prototype.emit);
265
+ }));
266
+ ;// Required for Meteor package, the use of window prevents export by Meteor
267
+ (function(window){
268
+ if(window.Package){
269
+ Materialize = {};
270
+ } else {
271
+ window.Materialize = {};
272
+ }
273
+ })(window);
274
+
275
+
276
+ /*
277
+ * raf.js
278
+ * https://github.com/ngryman/raf.js
279
+ *
280
+ * original requestAnimationFrame polyfill by Erik Möller
281
+ * inspired from paul_irish gist and post
282
+ *
283
+ * Copyright (c) 2013 ngryman
284
+ * Licensed under the MIT license.
285
+ */
286
+ (function(window) {
287
+ var lastTime = 0,
288
+ vendors = ['webkit', 'moz'],
289
+ requestAnimationFrame = window.requestAnimationFrame,
290
+ cancelAnimationFrame = window.cancelAnimationFrame,
291
+ i = vendors.length;
292
+
293
+ // try to un-prefix existing raf
294
+ while (--i >= 0 && !requestAnimationFrame) {
295
+ requestAnimationFrame = window[vendors[i] + 'RequestAnimationFrame'];
296
+ cancelAnimationFrame = window[vendors[i] + 'CancelRequestAnimationFrame'];
297
+ }
298
+
299
+ // polyfill with setTimeout fallback
300
+ // heavily inspired from @darius gist mod: https://gist.github.com/paulirish/1579671#comment-837945
301
+ if (!requestAnimationFrame || !cancelAnimationFrame) {
302
+ requestAnimationFrame = function(callback) {
303
+ var now = +Date.now(),
304
+ nextTime = Math.max(lastTime + 16, now);
305
+ return setTimeout(function() {
306
+ callback(lastTime = nextTime);
307
+ }, nextTime - now);
308
+ };
309
+
310
+ cancelAnimationFrame = clearTimeout;
311
+ }
312
+
313
+ // export to window
314
+ window.requestAnimationFrame = requestAnimationFrame;
315
+ window.cancelAnimationFrame = cancelAnimationFrame;
316
+ }(window));
317
+
318
+
319
+ // Unique ID
320
+ Materialize.guid = (function() {
321
+ function s4() {
322
+ return Math.floor((1 + Math.random()) * 0x10000)
323
+ .toString(16)
324
+ .substring(1);
325
+ }
326
+ return function() {
327
+ return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
328
+ s4() + '-' + s4() + s4() + s4();
329
+ };
330
+ })();
331
+
332
+ /**
333
+ * Escapes hash from special characters
334
+ * @param {string} hash String returned from this.hash
335
+ * @returns {string}
336
+ */
337
+ Materialize.escapeHash = function(hash) {
338
+ return hash.replace( /(:|\.|\[|\]|,|=)/g, "\\$1" );
339
+ };
340
+
341
+ Materialize.elementOrParentIsFixed = function(element) {
342
+ var $element = $(element);
343
+ var $checkElements = $element.add($element.parents());
344
+ var isFixed = false;
345
+ $checkElements.each(function(){
346
+ if ($(this).css("position") === "fixed") {
347
+ isFixed = true;
348
+ return false;
349
+ }
350
+ });
351
+ return isFixed;
352
+ };
353
+
354
+
355
+ /**
356
+ * Get time in ms
357
+ * @license https://raw.github.com/jashkenas/underscore/master/LICENSE
358
+ * @type {function}
359
+ * @return {number}
360
+ */
361
+ var getTime = (Date.now || function () {
362
+ return new Date().getTime();
363
+ });
364
+
365
+
366
+ /**
367
+ * Returns a function, that, when invoked, will only be triggered at most once
368
+ * during a given window of time. Normally, the throttled function will run
369
+ * as much as it can, without ever going more than once per `wait` duration;
370
+ * but if you'd like to disable the execution on the leading edge, pass
371
+ * `{leading: false}`. To disable execution on the trailing edge, ditto.
372
+ * @license https://raw.github.com/jashkenas/underscore/master/LICENSE
373
+ * @param {function} func
374
+ * @param {number} wait
375
+ * @param {Object=} options
376
+ * @returns {Function}
377
+ */
378
+ Materialize.throttle = function(func, wait, options) {
379
+ var context, args, result;
380
+ var timeout = null;
381
+ var previous = 0;
382
+ options || (options = {});
383
+ var later = function () {
384
+ previous = options.leading === false ? 0 : getTime();
385
+ timeout = null;
386
+ result = func.apply(context, args);
387
+ context = args = null;
388
+ };
389
+ return function () {
390
+ var now = getTime();
391
+ if (!previous && options.leading === false) previous = now;
392
+ var remaining = wait - (now - previous);
393
+ context = this;
394
+ args = arguments;
395
+ if (remaining <= 0) {
396
+ clearTimeout(timeout);
397
+ timeout = null;
398
+ previous = now;
399
+ result = func.apply(context, args);
400
+ context = args = null;
401
+ } else if (!timeout && options.trailing !== false) {
402
+ timeout = setTimeout(later, remaining);
403
+ }
404
+ return result;
405
+ };
406
+ };
407
+
408
+
409
+ // Velocity has conflicts when loaded with jQuery, this will check for it
410
+ // First, check if in noConflict mode
411
+ var Vel;
412
+ if (jQuery) {
413
+ Vel = jQuery.Velocity;
414
+ } else if ($) {
415
+ Vel = $.Velocity;
416
+ } else {
417
+ Vel = Velocity;
418
+ }
419
+ ;(function ($) {
420
+ $.fn.collapsible = function(options) {
421
+ var defaults = {
422
+ accordion: undefined,
423
+ onOpen: undefined,
424
+ onClose: undefined
425
+ };
426
+
427
+ options = $.extend(defaults, options);
428
+
429
+
430
+ return this.each(function() {
431
+
432
+ var $this = $(this);
433
+
434
+ var $panel_headers = $(this).find('> li > .collapsible-header');
435
+
436
+ var collapsible_type = $this.data("collapsible");
437
+
438
+ // Turn off any existing event handlers
439
+ $this.off('click.collapse', '> li > .collapsible-header');
440
+ $panel_headers.off('click.collapse');
441
+
442
+
443
+ /****************
444
+ Helper Functions
445
+ ****************/
446
+
447
+ // Accordion Open
448
+ function accordionOpen(object) {
449
+ $panel_headers = $this.find('> li > .collapsible-header');
450
+ if (object.hasClass('active')) {
451
+ object.parent().addClass('active');
452
+ }
453
+ else {
454
+ object.parent().removeClass('active');
455
+ }
456
+ if (object.parent().hasClass('active')){
457
+ object.siblings('.collapsible-body').stop(true,false).slideDown({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}});
458
+ }
459
+ else{
460
+ object.siblings('.collapsible-body').stop(true,false).slideUp({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}});
461
+ }
462
+
463
+ $panel_headers.not(object).removeClass('active').parent().removeClass('active');
464
+
465
+ // Close previously open accordion elements.
466
+ $panel_headers.not(object).parent().children('.collapsible-body').stop(true,false).each(function() {
467
+ if ($(this).is(':visible')) {
468
+ $(this).slideUp({
469
+ duration: 350,
470
+ easing: "easeOutQuart",
471
+ queue: false,
472
+ complete:
473
+ function() {
474
+ $(this).css('height', '');
475
+ execCallbacks($(this).siblings('.collapsible-header'));
476
+ }
477
+ });
478
+ }
479
+ });
480
+ }
481
+
482
+ // Expandable Open
483
+ function expandableOpen(object) {
484
+ if (object.hasClass('active')) {
485
+ object.parent().addClass('active');
486
+ }
487
+ else {
488
+ object.parent().removeClass('active');
489
+ }
490
+ if (object.parent().hasClass('active')){
491
+ object.siblings('.collapsible-body').stop(true,false).slideDown({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}});
492
+ }
493
+ else {
494
+ object.siblings('.collapsible-body').stop(true,false).slideUp({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}});
495
+ }
496
+ }
497
+
498
+ // Open collapsible. object: .collapsible-header
499
+ function collapsibleOpen(object) {
500
+ if (options.accordion || collapsible_type === "accordion" || collapsible_type === undefined) { // Handle Accordion
501
+ accordionOpen(object);
502
+ } else { // Handle Expandables
503
+ expandableOpen(object);
504
+ }
505
+
506
+ execCallbacks(object);
507
+ }
508
+
509
+ // Handle callbacks
510
+ function execCallbacks(object) {
511
+ if (object.hasClass('active')) {
512
+ if (typeof(options.onOpen) === "function") {
513
+ options.onOpen.call(this, object.parent());
514
+ }
515
+ } else {
516
+ if (typeof(options.onClose) === "function") {
517
+ options.onClose.call(this, object.parent());
518
+ }
519
+ }
520
+ }
521
+
522
+ /**
523
+ * Check if object is children of panel header
524
+ * @param {Object} object Jquery object
525
+ * @return {Boolean} true if it is children
526
+ */
527
+ function isChildrenOfPanelHeader(object) {
528
+
529
+ var panelHeader = getPanelHeader(object);
530
+
531
+ return panelHeader.length > 0;
532
+ }
533
+
534
+ /**
535
+ * Get panel header from a children element
536
+ * @param {Object} object Jquery object
537
+ * @return {Object} panel header object
538
+ */
539
+ function getPanelHeader(object) {
540
+
541
+ return object.closest('li > .collapsible-header');
542
+ }
543
+
544
+ /***** End Helper Functions *****/
545
+
546
+
547
+
548
+ // Add click handler to only direct collapsible header children
549
+ $this.on('click.collapse', '> li > .collapsible-header', function(e) {
550
+ var element = $(e.target);
551
+
552
+ if (isChildrenOfPanelHeader(element)) {
553
+ element = getPanelHeader(element);
554
+ }
555
+
556
+ element.toggleClass('active');
557
+
558
+ collapsibleOpen(element);
559
+ });
560
+
561
+
562
+ // Open first active
563
+ if (options.accordion || collapsible_type === "accordion" || collapsible_type === undefined) { // Handle Accordion
564
+ collapsibleOpen($panel_headers.filter('.active').first());
565
+
566
+ } else { // Handle Expandables
567
+ $panel_headers.filter('.active').each(function() {
568
+ collapsibleOpen($(this));
569
+ });
570
+ }
571
+
572
+ });
573
+ };
574
+
575
+ $(document).ready(function(){
576
+ $('.collapsible').collapsible();
577
+ });
578
+ }( jQuery ));;(function ($) {
579
+
580
+ // Add posibility to scroll to selected option
581
+ // usefull for select for example
582
+ $.fn.scrollTo = function(elem) {
583
+ $(this).scrollTop($(this).scrollTop() - $(this).offset().top + $(elem).offset().top);
584
+ return this;
585
+ };
586
+
587
+ $.fn.dropdown = function (options) {
588
+ var defaults = {
589
+ inDuration: 300,
590
+ outDuration: 225,
591
+ constrainWidth: true, // Constrains width of dropdown to the activator
592
+ hover: false,
593
+ gutter: 0, // Spacing from edge
594
+ belowOrigin: false,
595
+ alignment: 'left',
596
+ stopPropagation: false
597
+ };
598
+
599
+ // Open dropdown.
600
+ if (options === "open") {
601
+ this.each(function() {
602
+ $(this).trigger('open');
603
+ });
604
+ return false;
605
+ }
606
+
607
+ // Close dropdown.
608
+ if (options === "close") {
609
+ this.each(function() {
610
+ $(this).trigger('close');
611
+ });
612
+ return false;
613
+ }
614
+
615
+ this.each(function(){
616
+ var origin = $(this);
617
+ var curr_options = $.extend({}, defaults, options);
618
+ var isFocused = false;
619
+
620
+ // Dropdown menu
621
+ var activates = $("#"+ origin.attr('data-activates'));
622
+
623
+ function updateOptions() {
624
+ if (origin.data('induration') !== undefined)
625
+ curr_options.inDuration = origin.data('induration');
626
+ if (origin.data('outduration') !== undefined)
627
+ curr_options.outDuration = origin.data('outduration');
628
+ if (origin.data('constrainwidth') !== undefined)
629
+ curr_options.constrainWidth = origin.data('constrainwidth');
630
+ if (origin.data('hover') !== undefined)
631
+ curr_options.hover = origin.data('hover');
632
+ if (origin.data('gutter') !== undefined)
633
+ curr_options.gutter = origin.data('gutter');
634
+ if (origin.data('beloworigin') !== undefined)
635
+ curr_options.belowOrigin = origin.data('beloworigin');
636
+ if (origin.data('alignment') !== undefined)
637
+ curr_options.alignment = origin.data('alignment');
638
+ if (origin.data('stoppropagation') !== undefined)
639
+ curr_options.stopPropagation = origin.data('stoppropagation');
640
+ }
641
+
642
+ updateOptions();
643
+
644
+ // Attach dropdown to its activator
645
+ origin.after(activates);
646
+
647
+ /*
648
+ Helper function to position and resize dropdown.
649
+ Used in hover and click handler.
650
+ */
651
+ function placeDropdown(eventType) {
652
+ // Check for simultaneous focus and click events.
653
+ if (eventType === 'focus') {
654
+ isFocused = true;
655
+ }
656
+
657
+ // Check html data attributes
658
+ updateOptions();
659
+
660
+ // Set Dropdown state
661
+ activates.addClass('active');
662
+ origin.addClass('active');
663
+
664
+ // Constrain width
665
+ if (curr_options.constrainWidth === true) {
666
+ activates.css('width', origin.outerWidth());
667
+
668
+ } else {
669
+ activates.css('white-space', 'nowrap');
670
+ }
671
+
672
+ // Offscreen detection
673
+ var windowHeight = window.innerHeight;
674
+ var originHeight = origin.innerHeight();
675
+ var offsetLeft = origin.offset().left;
676
+ var offsetTop = origin.offset().top - $(window).scrollTop();
677
+ var currAlignment = curr_options.alignment;
678
+ var gutterSpacing = 0;
679
+ var leftPosition = 0;
680
+
681
+ // Below Origin
682
+ var verticalOffset = 0;
683
+ if (curr_options.belowOrigin === true) {
684
+ verticalOffset = originHeight;
685
+ }
686
+
687
+ // Check for scrolling positioned container.
688
+ var scrollYOffset = 0;
689
+ var scrollXOffset = 0;
690
+ var wrapper = origin.parent();
691
+ if (!wrapper.is('body')) {
692
+ if (wrapper[0].scrollHeight > wrapper[0].clientHeight) {
693
+ scrollYOffset = wrapper[0].scrollTop;
694
+ }
695
+ if (wrapper[0].scrollWidth > wrapper[0].clientWidth) {
696
+ scrollXOffset = wrapper[0].scrollLeft;
697
+ }
698
+ }
699
+
700
+
701
+ if (offsetLeft + activates.innerWidth() > $(window).width()) {
702
+ // Dropdown goes past screen on right, force right alignment
703
+ currAlignment = 'right';
704
+
705
+ } else if (offsetLeft - activates.innerWidth() + origin.innerWidth() < 0) {
706
+ // Dropdown goes past screen on left, force left alignment
707
+ currAlignment = 'left';
708
+ }
709
+ // Vertical bottom offscreen detection
710
+ if (offsetTop + activates.innerHeight() > windowHeight) {
711
+ // If going upwards still goes offscreen, just crop height of dropdown.
712
+ if (offsetTop + originHeight - activates.innerHeight() < 0) {
713
+ var adjustedHeight = windowHeight - offsetTop - verticalOffset;
714
+ activates.css('max-height', adjustedHeight);
715
+ } else {
716
+ // Flow upwards.
717
+ if (!verticalOffset) {
718
+ verticalOffset += originHeight;
719
+ }
720
+ verticalOffset -= activates.innerHeight();
721
+ }
722
+ }
723
+
724
+ // Handle edge alignment
725
+ if (currAlignment === 'left') {
726
+ gutterSpacing = curr_options.gutter;
727
+ leftPosition = origin.position().left + gutterSpacing;
728
+ }
729
+ else if (currAlignment === 'right') {
730
+ var offsetRight = origin.position().left + origin.outerWidth() - activates.outerWidth();
731
+ gutterSpacing = -curr_options.gutter;
732
+ leftPosition = offsetRight + gutterSpacing;
733
+ }
734
+
735
+ // Position dropdown
736
+ activates.css({
737
+ position: 'absolute',
738
+ top: origin.position().top + verticalOffset + scrollYOffset,
739
+ left: leftPosition + scrollXOffset
740
+ });
741
+
742
+
743
+ // Show dropdown
744
+ activates.stop(true, true).css('opacity', 0)
745
+ .slideDown({
746
+ queue: false,
747
+ duration: curr_options.inDuration,
748
+ easing: 'easeOutCubic',
749
+ complete: function() {
750
+ $(this).css('height', '');
751
+ }
752
+ })
753
+ .animate( {opacity: 1}, {queue: false, duration: curr_options.inDuration, easing: 'easeOutSine'});
754
+
755
+ // Add click close handler to document
756
+ $(document).bind('click.'+ activates.attr('id') + ' touchstart.' + activates.attr('id'), function (e) {
757
+ if (!activates.is(e.target) && !origin.is(e.target) && (!origin.find(e.target).length) ) {
758
+ hideDropdown();
759
+ $(document).unbind('click.'+ activates.attr('id') + ' touchstart.' + activates.attr('id'));
760
+ }
761
+ });
762
+ }
763
+
764
+ function hideDropdown() {
765
+ // Check for simultaneous focus and click events.
766
+ isFocused = false;
767
+ activates.fadeOut(curr_options.outDuration);
768
+ activates.removeClass('active');
769
+ origin.removeClass('active');
770
+ $(document).unbind('click.'+ activates.attr('id') + ' touchstart.' + activates.attr('id'));
771
+ setTimeout(function() { activates.css('max-height', ''); }, curr_options.outDuration);
772
+ }
773
+
774
+ // Hover
775
+ if (curr_options.hover) {
776
+ var open = false;
777
+ origin.unbind('click.' + origin.attr('id'));
778
+ // Hover handler to show dropdown
779
+ origin.on('mouseenter', function(e){ // Mouse over
780
+ if (open === false) {
781
+ placeDropdown();
782
+ open = true;
783
+ }
784
+ });
785
+ origin.on('mouseleave', function(e){
786
+ // If hover on origin then to something other than dropdown content, then close
787
+ var toEl = e.toElement || e.relatedTarget; // added browser compatibility for target element
788
+ if(!$(toEl).closest('.dropdown-content').is(activates)) {
789
+ activates.stop(true, true);
790
+ hideDropdown();
791
+ open = false;
792
+ }
793
+ });
794
+
795
+ activates.on('mouseleave', function(e){ // Mouse out
796
+ var toEl = e.toElement || e.relatedTarget;
797
+ if(!$(toEl).closest('.dropdown-button').is(origin)) {
798
+ activates.stop(true, true);
799
+ hideDropdown();
800
+ open = false;
801
+ }
802
+ });
803
+
804
+ // Click
805
+ } else {
806
+ // Click handler to show dropdown
807
+ origin.unbind('click.' + origin.attr('id'));
808
+ origin.bind('click.'+origin.attr('id'), function(e){
809
+ if (!isFocused) {
810
+ if ( origin[0] == e.currentTarget &&
811
+ !origin.hasClass('active') &&
812
+ ($(e.target).closest('.dropdown-content').length === 0)) {
813
+ e.preventDefault(); // Prevents button click from moving window
814
+ if (curr_options.stopPropagation) {
815
+ e.stopPropagation();
816
+ }
817
+ placeDropdown('click');
818
+ }
819
+ // If origin is clicked and menu is open, close menu
820
+ else if (origin.hasClass('active')) {
821
+ hideDropdown();
822
+ $(document).unbind('click.'+ activates.attr('id') + ' touchstart.' + activates.attr('id'));
823
+ }
824
+ }
825
+ });
826
+
827
+ } // End else
828
+
829
+ // Listen to open and close event - useful for select component
830
+ origin.on('open', function(e, eventType) {
831
+ placeDropdown(eventType);
832
+ });
833
+ origin.on('close', hideDropdown);
834
+
835
+
836
+ });
837
+ }; // End dropdown plugin
838
+
839
+ $(document).ready(function(){
840
+ $('.dropdown-button').dropdown();
841
+ });
842
+ }( jQuery ));
843
+ ;(function($) {
844
+ var _stack = 0,
845
+ _lastID = 0,
846
+ _generateID = function() {
847
+ _lastID++;
848
+ return 'materialize-modal-overlay-' + _lastID;
849
+ };
850
+
851
+ var methods = {
852
+ init : function(options) {
853
+ var defaults = {
854
+ opacity: 0.5,
855
+ inDuration: 350,
856
+ outDuration: 250,
857
+ ready: undefined,
858
+ complete: undefined,
859
+ dismissible: true,
860
+ startingTop: '4%',
861
+ endingTop: '10%'
862
+ };
863
+
864
+ // Override defaults
865
+ options = $.extend(defaults, options);
866
+
867
+ return this.each(function() {
868
+ var $modal = $(this);
869
+ var modal_id = $(this).attr("id") || '#' + $(this).data('target');
870
+
871
+ var closeModal = function() {
872
+ var overlayID = $modal.data('overlay-id');
873
+ var $overlay = $('#' + overlayID);
874
+ $modal.removeClass('open');
875
+
876
+ // Enable scrolling
877
+ $('body').css({
878
+ overflow: '',
879
+ width: ''
880
+ });
881
+
882
+ $modal.find('.modal-close').off('click.close');
883
+ $(document).off('keyup.modal' + overlayID);
884
+
885
+ $overlay.velocity( { opacity: 0}, {duration: options.outDuration, queue: false, ease: "easeOutQuart"});
886
+
887
+
888
+ // Define Bottom Sheet animation
889
+ var exitVelocityOptions = {
890
+ duration: options.outDuration,
891
+ queue: false,
892
+ ease: "easeOutCubic",
893
+ // Handle modal ready callback
894
+ complete: function() {
895
+ $(this).css({display:"none"});
896
+
897
+ // Call complete callback
898
+ if (typeof(options.complete) === "function") {
899
+ options.complete.call(this, $modal);
900
+ }
901
+ $overlay.remove();
902
+ _stack--;
903
+ }
904
+ };
905
+ if ($modal.hasClass('bottom-sheet')) {
906
+ $modal.velocity({bottom: "-100%", opacity: 0}, exitVelocityOptions);
907
+ }
908
+ else {
909
+ $modal.velocity(
910
+ { top: options.startingTop, opacity: 0, scaleX: 0.7},
911
+ exitVelocityOptions
912
+ );
913
+ }
914
+ };
915
+
916
+ var openModal = function($trigger) {
917
+ var $body = $('body');
918
+ var oldWidth = $body.innerWidth();
919
+ $body.css('overflow', 'hidden');
920
+ $body.width(oldWidth);
921
+
922
+ if ($modal.hasClass('open')) {
923
+ return;
924
+ }
925
+
926
+ var overlayID = _generateID();
927
+ var $overlay = $('<div class="modal-overlay"></div>');
928
+ lStack = (++_stack);
929
+
930
+ // Store a reference of the overlay
931
+ $overlay.attr('id', overlayID).css('z-index', 1000 + lStack * 2);
932
+ $modal.data('overlay-id', overlayID).css('z-index', 1000 + lStack * 2 + 1);
933
+ $modal.addClass('open');
934
+
935
+ $("body").append($overlay);
936
+
937
+ if (options.dismissible) {
938
+ $overlay.click(function() {
939
+ closeModal();
940
+ });
941
+ // Return on ESC
942
+ $(document).on('keyup.modal' + overlayID, function(e) {
943
+ if (e.keyCode === 27) { // ESC key
944
+ closeModal();
945
+ }
946
+ });
947
+ }
948
+
949
+ $modal.find(".modal-close").on('click.close', function(e) {
950
+ closeModal();
951
+ });
952
+
953
+ $overlay.css({ display : "block", opacity : 0 });
954
+
955
+ $modal.css({
956
+ display : "block",
957
+ opacity: 0
958
+ });
959
+
960
+ $overlay.velocity({opacity: options.opacity}, {duration: options.inDuration, queue: false, ease: "easeOutCubic"});
961
+ $modal.data('associated-overlay', $overlay[0]);
962
+
963
+ // Define Bottom Sheet animation
964
+ var enterVelocityOptions = {
965
+ duration: options.inDuration,
966
+ queue: false,
967
+ ease: "easeOutCubic",
968
+ // Handle modal ready callback
969
+ complete: function() {
970
+ if (typeof(options.ready) === "function") {
971
+ options.ready.call(this, $modal, $trigger);
972
+ }
973
+ }
974
+ };
975
+ if ($modal.hasClass('bottom-sheet')) {
976
+ $modal.velocity({bottom: "0", opacity: 1}, enterVelocityOptions);
977
+ }
978
+ else {
979
+ $.Velocity.hook($modal, "scaleX", 0.7);
980
+ $modal.css({ top: options.startingTop });
981
+ $modal.velocity({top: options.endingTop, opacity: 1, scaleX: '1'}, enterVelocityOptions);
982
+ }
983
+
984
+ };
985
+
986
+ // Reset handlers
987
+ $(document).off('click.modalTrigger', 'a[href="#' + modal_id + '"], [data-target="' + modal_id + '"]');
988
+ $(this).off('openModal');
989
+ $(this).off('closeModal');
990
+
991
+ // Close Handlers
992
+ $(document).on('click.modalTrigger', 'a[href="#' + modal_id + '"], [data-target="' + modal_id + '"]', function(e) {
993
+ options.startingTop = ($(this).offset().top - $(window).scrollTop()) /1.15;
994
+ openModal($(this));
995
+ e.preventDefault();
996
+ }); // done set on click
997
+
998
+ $(this).on('openModal', function() {
999
+ var modal_id = $(this).attr("href") || '#' + $(this).data('target');
1000
+ openModal();
1001
+ });
1002
+
1003
+ $(this).on('closeModal', function() {
1004
+ closeModal();
1005
+ });
1006
+ }); // done return
1007
+ },
1008
+ open : function() {
1009
+ $(this).trigger('openModal');
1010
+ },
1011
+ close : function() {
1012
+ $(this).trigger('closeModal');
1013
+ }
1014
+ };
1015
+
1016
+ $.fn.modal = function(methodOrOptions) {
1017
+ if ( methods[methodOrOptions] ) {
1018
+ return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 ));
1019
+ } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) {
1020
+ // Default to "init"
1021
+ return methods.init.apply( this, arguments );
1022
+ } else {
1023
+ $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.modal' );
1024
+ }
1025
+ };
1026
+ })(jQuery);
1027
+ ;(function ($) {
1028
+
1029
+ $.fn.materialbox = function () {
1030
+
1031
+ return this.each(function() {
1032
+
1033
+ if ($(this).hasClass('initialized')) {
1034
+ return;
1035
+ }
1036
+
1037
+ $(this).addClass('initialized');
1038
+
1039
+ var overlayActive = false;
1040
+ var doneAnimating = true;
1041
+ var inDuration = 275;
1042
+ var outDuration = 200;
1043
+ var origin = $(this);
1044
+ var placeholder = $('<div></div>').addClass('material-placeholder');
1045
+ var originalWidth = 0;
1046
+ var originalHeight = 0;
1047
+ var ancestorsChanged;
1048
+ var ancestor;
1049
+ origin.wrap(placeholder);
1050
+
1051
+
1052
+ origin.on('click', function(){
1053
+ var placeholder = origin.parent('.material-placeholder');
1054
+ var windowWidth = window.innerWidth;
1055
+ var windowHeight = window.innerHeight;
1056
+ var originalWidth = origin.width();
1057
+ var originalHeight = origin.height();
1058
+
1059
+
1060
+ // If already modal, return to original
1061
+ if (doneAnimating === false) {
1062
+ returnToOriginal();
1063
+ return false;
1064
+ }
1065
+ else if (overlayActive && doneAnimating===true) {
1066
+ returnToOriginal();
1067
+ return false;
1068
+ }
1069
+
1070
+
1071
+ // Set states
1072
+ doneAnimating = false;
1073
+ origin.addClass('active');
1074
+ overlayActive = true;
1075
+
1076
+ // Set positioning for placeholder
1077
+ placeholder.css({
1078
+ width: placeholder[0].getBoundingClientRect().width,
1079
+ height: placeholder[0].getBoundingClientRect().height,
1080
+ position: 'relative',
1081
+ top: 0,
1082
+ left: 0
1083
+ });
1084
+
1085
+ // Find ancestor with overflow: hidden; and remove it
1086
+ ancestorsChanged = undefined;
1087
+ ancestor = placeholder[0].parentNode;
1088
+ var count = 0;
1089
+ while (ancestor !== null && !$(ancestor).is(document)) {
1090
+ var curr = $(ancestor);
1091
+ if (curr.css('overflow') !== 'visible') {
1092
+ curr.css('overflow', 'visible');
1093
+ if (ancestorsChanged === undefined) {
1094
+ ancestorsChanged = curr;
1095
+ }
1096
+ else {
1097
+ ancestorsChanged = ancestorsChanged.add(curr);
1098
+ }
1099
+ }
1100
+ ancestor = ancestor.parentNode;
1101
+ }
1102
+
1103
+ // Set css on origin
1104
+ origin.css({
1105
+ position: 'absolute',
1106
+ 'z-index': 1000,
1107
+ 'will-change': 'left, top, width, height'
1108
+ })
1109
+ .data('width', originalWidth)
1110
+ .data('height', originalHeight);
1111
+
1112
+ // Add overlay
1113
+ var overlay = $('<div id="materialbox-overlay"></div>')
1114
+ .css({
1115
+ opacity: 0
1116
+ })
1117
+ .click(function(){
1118
+ if (doneAnimating === true)
1119
+ returnToOriginal();
1120
+ });
1121
+
1122
+ // Put before in origin image to preserve z-index layering.
1123
+ origin.before(overlay);
1124
+
1125
+ // Set dimensions if needed
1126
+ var overlayOffset = overlay[0].getBoundingClientRect();
1127
+ overlay.css({
1128
+ width: windowWidth,
1129
+ height: windowHeight,
1130
+ left: -1 * overlayOffset.left,
1131
+ top: -1 * overlayOffset.top
1132
+ })
1133
+
1134
+ // Animate Overlay
1135
+ overlay.velocity({opacity: 1},
1136
+ {duration: inDuration, queue: false, easing: 'easeOutQuad'} );
1137
+
1138
+ // Add and animate caption if it exists
1139
+ if (origin.data('caption') !== "") {
1140
+ var $photo_caption = $('<div class="materialbox-caption"></div>');
1141
+ $photo_caption.text(origin.data('caption'));
1142
+ $('body').append($photo_caption);
1143
+ $photo_caption.css({ "display": "inline" });
1144
+ $photo_caption.velocity({opacity: 1}, {duration: inDuration, queue: false, easing: 'easeOutQuad'});
1145
+ }
1146
+
1147
+ // Resize Image
1148
+ var ratio = 0;
1149
+ var widthPercent = originalWidth / windowWidth;
1150
+ var heightPercent = originalHeight / windowHeight;
1151
+ var newWidth = 0;
1152
+ var newHeight = 0;
1153
+
1154
+ if (widthPercent > heightPercent) {
1155
+ ratio = originalHeight / originalWidth;
1156
+ newWidth = windowWidth * 0.9;
1157
+ newHeight = windowWidth * 0.9 * ratio;
1158
+ }
1159
+ else {
1160
+ ratio = originalWidth / originalHeight;
1161
+ newWidth = (windowHeight * 0.9) * ratio;
1162
+ newHeight = windowHeight * 0.9;
1163
+ }
1164
+
1165
+ // Animate image + set z-index
1166
+ if(origin.hasClass('responsive-img')) {
1167
+ origin.velocity({'max-width': newWidth, 'width': originalWidth}, {duration: 0, queue: false,
1168
+ complete: function(){
1169
+ origin.css({left: 0, top: 0})
1170
+ .velocity(
1171
+ {
1172
+ height: newHeight,
1173
+ width: newWidth,
1174
+ left: $(document).scrollLeft() + windowWidth/2 - origin.parent('.material-placeholder').offset().left - newWidth/2,
1175
+ top: $(document).scrollTop() + windowHeight/2 - origin.parent('.material-placeholder').offset().top - newHeight/ 2
1176
+ },
1177
+ {
1178
+ duration: inDuration,
1179
+ queue: false,
1180
+ easing: 'easeOutQuad',
1181
+ complete: function(){doneAnimating = true;}
1182
+ }
1183
+ );
1184
+ } // End Complete
1185
+ }); // End Velocity
1186
+ }
1187
+ else {
1188
+ origin.css('left', 0)
1189
+ .css('top', 0)
1190
+ .velocity(
1191
+ {
1192
+ height: newHeight,
1193
+ width: newWidth,
1194
+ left: $(document).scrollLeft() + windowWidth/2 - origin.parent('.material-placeholder').offset().left - newWidth/2,
1195
+ top: $(document).scrollTop() + windowHeight/2 - origin.parent('.material-placeholder').offset().top - newHeight/ 2
1196
+ },
1197
+ {
1198
+ duration: inDuration,
1199
+ queue: false,
1200
+ easing: 'easeOutQuad',
1201
+ complete: function(){doneAnimating = true;}
1202
+ }
1203
+ ); // End Velocity
1204
+ }
1205
+
1206
+ }); // End origin on click
1207
+
1208
+
1209
+ // Return on scroll
1210
+ $(window).scroll(function() {
1211
+ if (overlayActive) {
1212
+ returnToOriginal();
1213
+ }
1214
+ });
1215
+
1216
+ // Return on ESC
1217
+ $(document).keyup(function(e) {
1218
+
1219
+ if (e.keyCode === 27 && doneAnimating === true) { // ESC key
1220
+ if (overlayActive) {
1221
+ returnToOriginal();
1222
+ }
1223
+ }
1224
+ });
1225
+
1226
+
1227
+ // This function returns the modaled image to the original spot
1228
+ function returnToOriginal() {
1229
+
1230
+ doneAnimating = false;
1231
+
1232
+ var placeholder = origin.parent('.material-placeholder');
1233
+ var windowWidth = window.innerWidth;
1234
+ var windowHeight = window.innerHeight;
1235
+ var originalWidth = origin.data('width');
1236
+ var originalHeight = origin.data('height');
1237
+
1238
+ origin.velocity("stop", true);
1239
+ $('#materialbox-overlay').velocity("stop", true);
1240
+ $('.materialbox-caption').velocity("stop", true);
1241
+
1242
+
1243
+ $('#materialbox-overlay').velocity({opacity: 0}, {
1244
+ duration: outDuration, // Delay prevents animation overlapping
1245
+ queue: false, easing: 'easeOutQuad',
1246
+ complete: function(){
1247
+ // Remove Overlay
1248
+ overlayActive = false;
1249
+ $(this).remove();
1250
+ }
1251
+ });
1252
+
1253
+ // Resize Image
1254
+ origin.velocity(
1255
+ {
1256
+ width: originalWidth,
1257
+ height: originalHeight,
1258
+ left: 0,
1259
+ top: 0
1260
+ },
1261
+ {
1262
+ duration: outDuration,
1263
+ queue: false, easing: 'easeOutQuad'
1264
+ }
1265
+ );
1266
+
1267
+ // Remove Caption + reset css settings on image
1268
+ $('.materialbox-caption').velocity({opacity: 0}, {
1269
+ duration: outDuration, // Delay prevents animation overlapping
1270
+ queue: false, easing: 'easeOutQuad',
1271
+ complete: function(){
1272
+ placeholder.css({
1273
+ height: '',
1274
+ width: '',
1275
+ position: '',
1276
+ top: '',
1277
+ left: ''
1278
+ });
1279
+
1280
+ origin.css({
1281
+ height: '',
1282
+ top: '',
1283
+ left: '',
1284
+ width: '',
1285
+ 'max-width': '',
1286
+ position: '',
1287
+ 'z-index': '',
1288
+ 'will-change': ''
1289
+ });
1290
+
1291
+ // Remove class
1292
+ origin.removeClass('active');
1293
+ doneAnimating = true;
1294
+ $(this).remove();
1295
+
1296
+ // Remove overflow overrides on ancestors
1297
+ if (ancestorsChanged) {
1298
+ ancestorsChanged.css('overflow', '');
1299
+ }
1300
+ }
1301
+ });
1302
+
1303
+ }
1304
+ });
1305
+ };
1306
+
1307
+ $(document).ready(function(){
1308
+ $('.materialboxed').materialbox();
1309
+ });
1310
+
1311
+ }( jQuery ));
1312
+ ;(function ($) {
1313
+
1314
+ $.fn.parallax = function () {
1315
+ var window_width = $(window).width();
1316
+ // Parallax Scripts
1317
+ return this.each(function(i) {
1318
+ var $this = $(this);
1319
+ $this.addClass('parallax');
1320
+
1321
+ function updateParallax(initial) {
1322
+ var container_height;
1323
+ if (window_width < 601) {
1324
+ container_height = ($this.height() > 0) ? $this.height() : $this.children("img").height();
1325
+ }
1326
+ else {
1327
+ container_height = ($this.height() > 0) ? $this.height() : 500;
1328
+ }
1329
+ var $img = $this.children("img").first();
1330
+ var img_height = $img.height();
1331
+ var parallax_dist = img_height - container_height;
1332
+ var bottom = $this.offset().top + container_height;
1333
+ var top = $this.offset().top;
1334
+ var scrollTop = $(window).scrollTop();
1335
+ var windowHeight = window.innerHeight;
1336
+ var windowBottom = scrollTop + windowHeight;
1337
+ var percentScrolled = (windowBottom - top) / (container_height + windowHeight);
1338
+ var parallax = Math.round((parallax_dist * percentScrolled));
1339
+
1340
+ if (initial) {
1341
+ $img.css('display', 'block');
1342
+ }
1343
+ if ((bottom > scrollTop) && (top < (scrollTop + windowHeight))) {
1344
+ $img.css('transform', "translate3D(-50%," + parallax + "px, 0)");
1345
+ }
1346
+
1347
+ }
1348
+
1349
+ // Wait for image load
1350
+ $this.children("img").one("load", function() {
1351
+ updateParallax(true);
1352
+ }).each(function() {
1353
+ if (this.complete) $(this).trigger("load");
1354
+ });
1355
+
1356
+ $(window).scroll(function() {
1357
+ window_width = $(window).width();
1358
+ updateParallax(false);
1359
+ });
1360
+
1361
+ $(window).resize(function() {
1362
+ window_width = $(window).width();
1363
+ updateParallax(false);
1364
+ });
1365
+
1366
+ });
1367
+
1368
+ };
1369
+ }( jQuery ));
1370
+ ;(function ($) {
1371
+
1372
+ var methods = {
1373
+ init : function(options) {
1374
+ var defaults = {
1375
+ onShow: null,
1376
+ swipeable: false,
1377
+ responsiveThreshold: Infinity, // breakpoint for swipeable
1378
+ };
1379
+ options = $.extend(defaults, options);
1380
+
1381
+ return this.each(function() {
1382
+
1383
+ // For each set of tabs, we want to keep track of
1384
+ // which tab is active and its associated content
1385
+ var $this = $(this),
1386
+ window_width = $(window).width();
1387
+
1388
+ var $active, $content, $links = $this.find('li.tab a'),
1389
+ $tabs_width = $this.width(),
1390
+ $tabs_content = $(),
1391
+ $tabs_wrapper,
1392
+ $tab_width = Math.max($tabs_width, $this[0].scrollWidth) / $links.length,
1393
+ $indicator,
1394
+ index = prev_index = 0,
1395
+ clicked = false,
1396
+ clickedTimeout,
1397
+ transition = 300;
1398
+
1399
+
1400
+ // Finds right attribute for indicator based on active tab.
1401
+ // el: jQuery Object
1402
+ var calcRightPos = function(el) {
1403
+ return $tabs_width - el.position().left - el.outerWidth() - $this.scrollLeft();
1404
+ };
1405
+
1406
+ // Finds left attribute for indicator based on active tab.
1407
+ // el: jQuery Object
1408
+ var calcLeftPos = function(el) {
1409
+ return el.position().left + $this.scrollLeft();
1410
+ };
1411
+
1412
+ // Animates Indicator to active tab.
1413
+ // prev_index: Number
1414
+ var animateIndicator = function(prev_index) {
1415
+ if ((index - prev_index) >= 0) {
1416
+ $indicator.velocity({"right": calcRightPos($active) }, { duration: transition, queue: false, easing: 'easeOutQuad'});
1417
+ $indicator.velocity({"left": calcLeftPos($active) }, {duration: transition, queue: false, easing: 'easeOutQuad', delay: 90});
1418
+
1419
+ } else {
1420
+ $indicator.velocity({"left": calcLeftPos($active) }, { duration: transition, queue: false, easing: 'easeOutQuad'});
1421
+ $indicator.velocity({"right": calcRightPos($active) }, {duration: transition, queue: false, easing: 'easeOutQuad', delay: 90});
1422
+ }
1423
+ };
1424
+
1425
+ // Change swipeable according to responsive threshold
1426
+ if (options.swipeable) {
1427
+ if (window_width > options.responsiveThreshold) {
1428
+ options.swipeable = false;
1429
+ }
1430
+ }
1431
+
1432
+
1433
+ // If the location.hash matches one of the links, use that as the active tab.
1434
+ $active = $($links.filter('[href="'+location.hash+'"]'));
1435
+
1436
+ // If no match is found, use the first link or any with class 'active' as the initial active tab.
1437
+ if ($active.length === 0) {
1438
+ $active = $(this).find('li.tab a.active').first();
1439
+ }
1440
+ if ($active.length === 0) {
1441
+ $active = $(this).find('li.tab a').first();
1442
+ }
1443
+
1444
+ $active.addClass('active');
1445
+ index = $links.index($active);
1446
+ if (index < 0) {
1447
+ index = 0;
1448
+ }
1449
+
1450
+ if ($active[0] !== undefined) {
1451
+ $content = $($active[0].hash);
1452
+ $content.addClass('active');
1453
+ }
1454
+
1455
+ // append indicator then set indicator width to tab width
1456
+ if (!$this.find('.indicator').length) {
1457
+ $this.append('<div class="indicator"></div>');
1458
+ }
1459
+ $indicator = $this.find('.indicator');
1460
+
1461
+ // we make sure that the indicator is at the end of the tabs
1462
+ $this.append($indicator);
1463
+
1464
+ if ($this.is(":visible")) {
1465
+ // $indicator.css({"right": $tabs_width - ((index + 1) * $tab_width)});
1466
+ // $indicator.css({"left": index * $tab_width});
1467
+ setTimeout(function() {
1468
+ $indicator.css({"right": calcRightPos($active) });
1469
+ $indicator.css({"left": calcLeftPos($active) });
1470
+ }, 0);
1471
+ }
1472
+ $(window).resize(function () {
1473
+ $tabs_width = $this.width();
1474
+ $tab_width = Math.max($tabs_width, $this[0].scrollWidth) / $links.length;
1475
+ if (index < 0) {
1476
+ index = 0;
1477
+ }
1478
+ if ($tab_width !== 0 && $tabs_width !== 0) {
1479
+ $indicator.css({"right": calcRightPos($active) });
1480
+ $indicator.css({"left": calcLeftPos($active) });
1481
+ }
1482
+ });
1483
+
1484
+ // Initialize Tabs Content.
1485
+ if (options.swipeable) {
1486
+ // TODO: Duplicate calls with swipeable? handle multiple div wrapping.
1487
+ $links.each(function () {
1488
+ var $curr_content = $(Materialize.escapeHash(this.hash));
1489
+ $curr_content.addClass('carousel-item');
1490
+ $tabs_content = $tabs_content.add($curr_content);
1491
+ });
1492
+ $tabs_wrapper = $tabs_content.wrapAll('<div class="tabs-content carousel"></div>');
1493
+ $tabs_content.css('display', '');
1494
+ $('.tabs-content.carousel').carousel({
1495
+ fullWidth: true,
1496
+ noWrap: true,
1497
+ onCycleTo: function(item) {
1498
+ if (!clicked) {
1499
+ var prev_index = index;
1500
+ index = $tabs_wrapper.index(item);
1501
+ $active = $links.eq(index);
1502
+ animateIndicator(prev_index);
1503
+ }
1504
+ },
1505
+ });
1506
+ } else {
1507
+ // Hide the remaining content
1508
+ $links.not($active).each(function () {
1509
+ $(Materialize.escapeHash(this.hash)).hide();
1510
+ });
1511
+ }
1512
+
1513
+
1514
+ // Bind the click event handler
1515
+ $this.on('click', 'a', function(e) {
1516
+ if ($(this).parent().hasClass('disabled')) {
1517
+ e.preventDefault();
1518
+ return;
1519
+ }
1520
+
1521
+ // Act as regular link if target attribute is specified.
1522
+ if (!!$(this).attr("target")) {
1523
+ return;
1524
+ }
1525
+
1526
+ clicked = true;
1527
+ $tabs_width = $this.width();
1528
+ $tab_width = Math.max($tabs_width, $this[0].scrollWidth) / $links.length;
1529
+
1530
+ // Make the old tab inactive.
1531
+ $active.removeClass('active');
1532
+ var $oldContent = $content
1533
+
1534
+ // Update the variables with the new link and content
1535
+ $active = $(this);
1536
+ $content = $(Materialize.escapeHash(this.hash));
1537
+ $links = $this.find('li.tab a');
1538
+ var activeRect = $active.position();
1539
+
1540
+ // Make the tab active.
1541
+ $active.addClass('active');
1542
+ prev_index = index;
1543
+ index = $links.index($(this));
1544
+ if (index < 0) {
1545
+ index = 0;
1546
+ }
1547
+ // Change url to current tab
1548
+ // window.location.hash = $active.attr('href');
1549
+
1550
+ // Swap content
1551
+ if (options.swipeable) {
1552
+ if ($tabs_content.length) {
1553
+ $tabs_content.carousel('set', index);
1554
+ }
1555
+ } else {
1556
+ if ($content !== undefined) {
1557
+ $content.show();
1558
+ $content.addClass('active');
1559
+ if (typeof(options.onShow) === "function") {
1560
+ options.onShow.call(this, $content);
1561
+ }
1562
+ }
1563
+
1564
+ if ($oldContent !== undefined &&
1565
+ !$oldContent.is($content)) {
1566
+ $oldContent.hide();
1567
+ $oldContent.removeClass('active');
1568
+ }
1569
+ }
1570
+
1571
+ // Reset clicked state
1572
+ clickedTimeout = setTimeout(function(){ clicked = false; }, transition);
1573
+
1574
+ // Update indicator
1575
+ animateIndicator(prev_index);
1576
+
1577
+ // Prevent the anchor's default click action
1578
+ e.preventDefault();
1579
+ });
1580
+ });
1581
+
1582
+ },
1583
+ select_tab : function( id ) {
1584
+ this.find('a[href="#' + id + '"]').trigger('click');
1585
+ }
1586
+ };
1587
+
1588
+ $.fn.tabs = function(methodOrOptions) {
1589
+ if ( methods[methodOrOptions] ) {
1590
+ return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 ));
1591
+ } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) {
1592
+ // Default to "init"
1593
+ return methods.init.apply( this, arguments );
1594
+ } else {
1595
+ $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.tabs' );
1596
+ }
1597
+ };
1598
+
1599
+ $(document).ready(function(){
1600
+ $('ul.tabs').tabs();
1601
+ });
1602
+ }( jQuery ));
1603
+ ;(function ($) {
1604
+ $.fn.tooltip = function (options) {
1605
+ var timeout = null,
1606
+ margin = 5;
1607
+
1608
+ // Defaults
1609
+ var defaults = {
1610
+ delay: 350,
1611
+ tooltip: '',
1612
+ position: 'bottom',
1613
+ html: false
1614
+ };
1615
+
1616
+ // Remove tooltip from the activator
1617
+ if (options === "remove") {
1618
+ this.each(function() {
1619
+ $('#' + $(this).attr('data-tooltip-id')).remove();
1620
+ $(this).off('mouseenter.tooltip mouseleave.tooltip');
1621
+ });
1622
+ return false;
1623
+ }
1624
+
1625
+ options = $.extend(defaults, options);
1626
+
1627
+ return this.each(function() {
1628
+ var tooltipId = Materialize.guid();
1629
+ var origin = $(this);
1630
+
1631
+ // Destroy old tooltip
1632
+ if (origin.attr('data-tooltip-id')) {
1633
+ $('#' + origin.attr('data-tooltip-id')).remove();
1634
+ }
1635
+
1636
+ origin.attr('data-tooltip-id', tooltipId);
1637
+
1638
+ // Get attributes.
1639
+ var allowHtml,
1640
+ tooltipDelay,
1641
+ tooltipPosition,
1642
+ tooltipText,
1643
+ tooltipEl,
1644
+ backdrop;
1645
+ var setAttributes = function() {
1646
+ allowHtml = origin.attr('data-html') ? origin.attr('data-html') === 'true' : options.html;
1647
+ tooltipDelay = origin.attr('data-delay');
1648
+ tooltipDelay = (tooltipDelay === undefined || tooltipDelay === '') ?
1649
+ options.delay : tooltipDelay;
1650
+ tooltipPosition = origin.attr('data-position');
1651
+ tooltipPosition = (tooltipPosition === undefined || tooltipPosition === '') ?
1652
+ options.position : tooltipPosition;
1653
+ tooltipText = origin.attr('data-tooltip');
1654
+ tooltipText = (tooltipText === undefined || tooltipText === '') ?
1655
+ options.tooltip : tooltipText;
1656
+ };
1657
+ setAttributes();
1658
+
1659
+ var renderTooltipEl = function() {
1660
+ var tooltip = $('<div class="material-tooltip"></div>');
1661
+
1662
+ // Create Text span
1663
+ if (allowHtml) {
1664
+ tooltipText = $('<span></span>').html(tooltipText);
1665
+ } else{
1666
+ tooltipText = $('<span></span>').text(tooltipText);
1667
+ }
1668
+
1669
+ // Create tooltip
1670
+ tooltip.append(tooltipText)
1671
+ .appendTo($('body'))
1672
+ .attr('id', tooltipId);
1673
+
1674
+ // Create backdrop
1675
+ backdrop = $('<div class="backdrop"></div>');
1676
+ backdrop.appendTo(tooltip);
1677
+ return tooltip;
1678
+ };
1679
+ tooltipEl = renderTooltipEl();
1680
+
1681
+ // Destroy previously binded events
1682
+ origin.off('mouseenter.tooltip mouseleave.tooltip');
1683
+ // Mouse In
1684
+ var started = false, timeoutRef;
1685
+ origin.on({'mouseenter.tooltip': function(e) {
1686
+ var showTooltip = function() {
1687
+ setAttributes();
1688
+ started = true;
1689
+ tooltipEl.velocity('stop');
1690
+ backdrop.velocity('stop');
1691
+ tooltipEl.css({ visibility: 'visible', left: '0px', top: '0px' });
1692
+
1693
+ // Tooltip positioning
1694
+ var originWidth = origin.outerWidth();
1695
+ var originHeight = origin.outerHeight();
1696
+ var tooltipHeight = tooltipEl.outerHeight();
1697
+ var tooltipWidth = tooltipEl.outerWidth();
1698
+ var tooltipVerticalMovement = '0px';
1699
+ var tooltipHorizontalMovement = '0px';
1700
+ var backdropOffsetWidth = backdrop[0].offsetWidth;
1701
+ var backdropOffsetHeight = backdrop[0].offsetHeight;
1702
+ var scaleXFactor = 8;
1703
+ var scaleYFactor = 8;
1704
+ var scaleFactor = 0;
1705
+ var targetTop, targetLeft, newCoordinates;
1706
+
1707
+ if (tooltipPosition === "top") {
1708
+ // Top Position
1709
+ targetTop = origin.offset().top - tooltipHeight - margin;
1710
+ targetLeft = origin.offset().left + originWidth/2 - tooltipWidth/2;
1711
+ newCoordinates = repositionWithinScreen(targetLeft, targetTop, tooltipWidth, tooltipHeight);
1712
+ tooltipVerticalMovement = '-10px';
1713
+ backdrop.css({
1714
+ bottom: 0,
1715
+ left: 0,
1716
+ borderRadius: '14px 14px 0 0',
1717
+ transformOrigin: '50% 100%',
1718
+ marginTop: tooltipHeight,
1719
+ marginLeft: (tooltipWidth/2) - (backdropOffsetWidth/2)
1720
+ });
1721
+ }
1722
+ // Left Position
1723
+ else if (tooltipPosition === "left") {
1724
+ targetTop = origin.offset().top + originHeight/2 - tooltipHeight/2;
1725
+ targetLeft = origin.offset().left - tooltipWidth - margin;
1726
+ newCoordinates = repositionWithinScreen(targetLeft, targetTop, tooltipWidth, tooltipHeight);
1727
+
1728
+ tooltipHorizontalMovement = '-10px';
1729
+ backdrop.css({
1730
+ top: '-7px',
1731
+ right: 0,
1732
+ width: '14px',
1733
+ height: '14px',
1734
+ borderRadius: '14px 0 0 14px',
1735
+ transformOrigin: '95% 50%',
1736
+ marginTop: tooltipHeight/2,
1737
+ marginLeft: tooltipWidth
1738
+ });
1739
+ }
1740
+ // Right Position
1741
+ else if (tooltipPosition === "right") {
1742
+ targetTop = origin.offset().top + originHeight/2 - tooltipHeight/2;
1743
+ targetLeft = origin.offset().left + originWidth + margin;
1744
+ newCoordinates = repositionWithinScreen(targetLeft, targetTop, tooltipWidth, tooltipHeight);
1745
+
1746
+ tooltipHorizontalMovement = '+10px';
1747
+ backdrop.css({
1748
+ top: '-7px',
1749
+ left: 0,
1750
+ width: '14px',
1751
+ height: '14px',
1752
+ borderRadius: '0 14px 14px 0',
1753
+ transformOrigin: '5% 50%',
1754
+ marginTop: tooltipHeight/2,
1755
+ marginLeft: '0px'
1756
+ });
1757
+ }
1758
+ else {
1759
+ // Bottom Position
1760
+ targetTop = origin.offset().top + origin.outerHeight() + margin;
1761
+ targetLeft = origin.offset().left + originWidth/2 - tooltipWidth/2;
1762
+ newCoordinates = repositionWithinScreen(targetLeft, targetTop, tooltipWidth, tooltipHeight);
1763
+ tooltipVerticalMovement = '+10px';
1764
+ backdrop.css({
1765
+ top: 0,
1766
+ left: 0,
1767
+ marginLeft: (tooltipWidth/2) - (backdropOffsetWidth/2)
1768
+ });
1769
+ }
1770
+
1771
+ // Set tooptip css placement
1772
+ tooltipEl.css({
1773
+ top: newCoordinates.y,
1774
+ left: newCoordinates.x
1775
+ });
1776
+
1777
+ // Calculate Scale to fill
1778
+ scaleXFactor = Math.SQRT2 * tooltipWidth / parseInt(backdropOffsetWidth);
1779
+ scaleYFactor = Math.SQRT2 * tooltipHeight / parseInt(backdropOffsetHeight);
1780
+ scaleFactor = Math.max(scaleXFactor, scaleYFactor);
1781
+
1782
+ tooltipEl.velocity({ translateY: tooltipVerticalMovement, translateX: tooltipHorizontalMovement}, { duration: 350, queue: false })
1783
+ .velocity({opacity: 1}, {duration: 300, delay: 50, queue: false});
1784
+ backdrop.css({ visibility: 'visible' })
1785
+ .velocity({opacity:1},{duration: 55, delay: 0, queue: false})
1786
+ .velocity({scaleX: scaleFactor, scaleY: scaleFactor}, {duration: 300, delay: 0, queue: false, easing: 'easeInOutQuad'});
1787
+ };
1788
+
1789
+ timeoutRef = setTimeout(showTooltip, tooltipDelay); // End Interval
1790
+
1791
+ // Mouse Out
1792
+ },
1793
+ 'mouseleave.tooltip': function(){
1794
+ // Reset State
1795
+ started = false;
1796
+ clearTimeout(timeoutRef);
1797
+
1798
+ // Animate back
1799
+ setTimeout(function() {
1800
+ if (started !== true) {
1801
+ tooltipEl.velocity({
1802
+ opacity: 0, translateY: 0, translateX: 0}, { duration: 225, queue: false});
1803
+ backdrop.velocity({opacity: 0, scaleX: 1, scaleY: 1}, {
1804
+ duration:225,
1805
+ queue: false,
1806
+ complete: function(){
1807
+ backdrop.css({ visibility: 'hidden' });
1808
+ tooltipEl.css({ visibility: 'hidden' });
1809
+ started = false;}
1810
+ });
1811
+ }
1812
+ },225);
1813
+ }
1814
+ });
1815
+ });
1816
+ };
1817
+
1818
+ var repositionWithinScreen = function(x, y, width, height) {
1819
+ var newX = x;
1820
+ var newY = y;
1821
+
1822
+ if (newX < 0) {
1823
+ newX = 4;
1824
+ } else if (newX + width > window.innerWidth) {
1825
+ newX -= newX + width - window.innerWidth;
1826
+ }
1827
+
1828
+ if (newY < 0) {
1829
+ newY = 4;
1830
+ } else if (newY + height > window.innerHeight + $(window).scrollTop) {
1831
+ newY -= newY + height - window.innerHeight;
1832
+ }
1833
+
1834
+ return {x: newX, y: newY};
1835
+ };
1836
+
1837
+ $(document).ready(function(){
1838
+ $('.tooltipped').tooltip();
1839
+ });
1840
+ }( jQuery ));
1841
+ ;/*!
1842
+ * Waves v0.6.4
1843
+ * http://fian.my.id/Waves
1844
+ *
1845
+ * Copyright 2014 Alfiana E. Sibuea and other contributors
1846
+ * Released under the MIT license
1847
+ * https://github.com/fians/Waves/blob/master/LICENSE
1848
+ */
1849
+
1850
+ ;(function(window) {
1851
+ 'use strict';
1852
+
1853
+ var Waves = Waves || {};
1854
+ var $$ = document.querySelectorAll.bind(document);
1855
+
1856
+ // Find exact position of element
1857
+ function isWindow(obj) {
1858
+ return obj !== null && obj === obj.window;
1859
+ }
1860
+
1861
+ function getWindow(elem) {
1862
+ return isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView;
1863
+ }
1864
+
1865
+ function offset(elem) {
1866
+ var docElem, win,
1867
+ box = {top: 0, left: 0},
1868
+ doc = elem && elem.ownerDocument;
1869
+
1870
+ docElem = doc.documentElement;
1871
+
1872
+ if (typeof elem.getBoundingClientRect !== typeof undefined) {
1873
+ box = elem.getBoundingClientRect();
1874
+ }
1875
+ win = getWindow(doc);
1876
+ return {
1877
+ top: box.top + win.pageYOffset - docElem.clientTop,
1878
+ left: box.left + win.pageXOffset - docElem.clientLeft
1879
+ };
1880
+ }
1881
+
1882
+ function convertStyle(obj) {
1883
+ var style = '';
1884
+
1885
+ for (var a in obj) {
1886
+ if (obj.hasOwnProperty(a)) {
1887
+ style += (a + ':' + obj[a] + ';');
1888
+ }
1889
+ }
1890
+
1891
+ return style;
1892
+ }
1893
+
1894
+ var Effect = {
1895
+
1896
+ // Effect delay
1897
+ duration: 750,
1898
+
1899
+ show: function(e, element) {
1900
+
1901
+ // Disable right click
1902
+ if (e.button === 2) {
1903
+ return false;
1904
+ }
1905
+
1906
+ var el = element || this;
1907
+
1908
+ // Create ripple
1909
+ var ripple = document.createElement('div');
1910
+ ripple.className = 'waves-ripple';
1911
+ el.appendChild(ripple);
1912
+
1913
+ // Get click coordinate and element witdh
1914
+ var pos = offset(el);
1915
+ var relativeY = (e.pageY - pos.top);
1916
+ var relativeX = (e.pageX - pos.left);
1917
+ var scale = 'scale('+((el.clientWidth / 100) * 10)+')';
1918
+
1919
+ // Support for touch devices
1920
+ if ('touches' in e) {
1921
+ relativeY = (e.touches[0].pageY - pos.top);
1922
+ relativeX = (e.touches[0].pageX - pos.left);
1923
+ }
1924
+
1925
+ // Attach data to element
1926
+ ripple.setAttribute('data-hold', Date.now());
1927
+ ripple.setAttribute('data-scale', scale);
1928
+ ripple.setAttribute('data-x', relativeX);
1929
+ ripple.setAttribute('data-y', relativeY);
1930
+
1931
+ // Set ripple position
1932
+ var rippleStyle = {
1933
+ 'top': relativeY+'px',
1934
+ 'left': relativeX+'px'
1935
+ };
1936
+
1937
+ ripple.className = ripple.className + ' waves-notransition';
1938
+ ripple.setAttribute('style', convertStyle(rippleStyle));
1939
+ ripple.className = ripple.className.replace('waves-notransition', '');
1940
+
1941
+ // Scale the ripple
1942
+ rippleStyle['-webkit-transform'] = scale;
1943
+ rippleStyle['-moz-transform'] = scale;
1944
+ rippleStyle['-ms-transform'] = scale;
1945
+ rippleStyle['-o-transform'] = scale;
1946
+ rippleStyle.transform = scale;
1947
+ rippleStyle.opacity = '1';
1948
+
1949
+ rippleStyle['-webkit-transition-duration'] = Effect.duration + 'ms';
1950
+ rippleStyle['-moz-transition-duration'] = Effect.duration + 'ms';
1951
+ rippleStyle['-o-transition-duration'] = Effect.duration + 'ms';
1952
+ rippleStyle['transition-duration'] = Effect.duration + 'ms';
1953
+
1954
+ rippleStyle['-webkit-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)';
1955
+ rippleStyle['-moz-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)';
1956
+ rippleStyle['-o-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)';
1957
+ rippleStyle['transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)';
1958
+
1959
+ ripple.setAttribute('style', convertStyle(rippleStyle));
1960
+ },
1961
+
1962
+ hide: function(e) {
1963
+ TouchHandler.touchup(e);
1964
+
1965
+ var el = this;
1966
+ var width = el.clientWidth * 1.4;
1967
+
1968
+ // Get first ripple
1969
+ var ripple = null;
1970
+ var ripples = el.getElementsByClassName('waves-ripple');
1971
+ if (ripples.length > 0) {
1972
+ ripple = ripples[ripples.length - 1];
1973
+ } else {
1974
+ return false;
1975
+ }
1976
+
1977
+ var relativeX = ripple.getAttribute('data-x');
1978
+ var relativeY = ripple.getAttribute('data-y');
1979
+ var scale = ripple.getAttribute('data-scale');
1980
+
1981
+ // Get delay beetween mousedown and mouse leave
1982
+ var diff = Date.now() - Number(ripple.getAttribute('data-hold'));
1983
+ var delay = 350 - diff;
1984
+
1985
+ if (delay < 0) {
1986
+ delay = 0;
1987
+ }
1988
+
1989
+ // Fade out ripple after delay
1990
+ setTimeout(function() {
1991
+ var style = {
1992
+ 'top': relativeY+'px',
1993
+ 'left': relativeX+'px',
1994
+ 'opacity': '0',
1995
+
1996
+ // Duration
1997
+ '-webkit-transition-duration': Effect.duration + 'ms',
1998
+ '-moz-transition-duration': Effect.duration + 'ms',
1999
+ '-o-transition-duration': Effect.duration + 'ms',
2000
+ 'transition-duration': Effect.duration + 'ms',
2001
+ '-webkit-transform': scale,
2002
+ '-moz-transform': scale,
2003
+ '-ms-transform': scale,
2004
+ '-o-transform': scale,
2005
+ 'transform': scale,
2006
+ };
2007
+
2008
+ ripple.setAttribute('style', convertStyle(style));
2009
+
2010
+ setTimeout(function() {
2011
+ try {
2012
+ el.removeChild(ripple);
2013
+ } catch(e) {
2014
+ return false;
2015
+ }
2016
+ }, Effect.duration);
2017
+ }, delay);
2018
+ },
2019
+
2020
+ // Little hack to make <input> can perform waves effect
2021
+ wrapInput: function(elements) {
2022
+ for (var a = 0; a < elements.length; a++) {
2023
+ var el = elements[a];
2024
+
2025
+ if (el.tagName.toLowerCase() === 'input') {
2026
+ var parent = el.parentNode;
2027
+
2028
+ // If input already have parent just pass through
2029
+ if (parent.tagName.toLowerCase() === 'i' && parent.className.indexOf('waves-effect') !== -1) {
2030
+ continue;
2031
+ }
2032
+
2033
+ // Put element class and style to the specified parent
2034
+ var wrapper = document.createElement('i');
2035
+ wrapper.className = el.className + ' waves-input-wrapper';
2036
+
2037
+ var elementStyle = el.getAttribute('style');
2038
+
2039
+ if (!elementStyle) {
2040
+ elementStyle = '';
2041
+ }
2042
+
2043
+ wrapper.setAttribute('style', elementStyle);
2044
+
2045
+ el.className = 'waves-button-input';
2046
+ el.removeAttribute('style');
2047
+
2048
+ // Put element as child
2049
+ parent.replaceChild(wrapper, el);
2050
+ wrapper.appendChild(el);
2051
+ }
2052
+ }
2053
+ }
2054
+ };
2055
+
2056
+
2057
+ /**
2058
+ * Disable mousedown event for 500ms during and after touch
2059
+ */
2060
+ var TouchHandler = {
2061
+ /* uses an integer rather than bool so there's no issues with
2062
+ * needing to clear timeouts if another touch event occurred
2063
+ * within the 500ms. Cannot mouseup between touchstart and
2064
+ * touchend, nor in the 500ms after touchend. */
2065
+ touches: 0,
2066
+ allowEvent: function(e) {
2067
+ var allow = true;
2068
+
2069
+ if (e.type === 'touchstart') {
2070
+ TouchHandler.touches += 1; //push
2071
+ } else if (e.type === 'touchend' || e.type === 'touchcancel') {
2072
+ setTimeout(function() {
2073
+ if (TouchHandler.touches > 0) {
2074
+ TouchHandler.touches -= 1; //pop after 500ms
2075
+ }
2076
+ }, 500);
2077
+ } else if (e.type === 'mousedown' && TouchHandler.touches > 0) {
2078
+ allow = false;
2079
+ }
2080
+
2081
+ return allow;
2082
+ },
2083
+ touchup: function(e) {
2084
+ TouchHandler.allowEvent(e);
2085
+ }
2086
+ };
2087
+
2088
+
2089
+ /**
2090
+ * Delegated click handler for .waves-effect element.
2091
+ * returns null when .waves-effect element not in "click tree"
2092
+ */
2093
+ function getWavesEffectElement(e) {
2094
+ if (TouchHandler.allowEvent(e) === false) {
2095
+ return null;
2096
+ }
2097
+
2098
+ var element = null;
2099
+ var target = e.target || e.srcElement;
2100
+
2101
+ while (target.parentElement !== null) {
2102
+ if (!(target instanceof SVGElement) && target.className.indexOf('waves-effect') !== -1) {
2103
+ element = target;
2104
+ break;
2105
+ } else if (target.classList.contains('waves-effect')) {
2106
+ element = target;
2107
+ break;
2108
+ }
2109
+ target = target.parentElement;
2110
+ }
2111
+
2112
+ return element;
2113
+ }
2114
+
2115
+ /**
2116
+ * Bubble the click and show effect if .waves-effect elem was found
2117
+ */
2118
+ function showEffect(e) {
2119
+ var element = getWavesEffectElement(e);
2120
+
2121
+ if (element !== null) {
2122
+ Effect.show(e, element);
2123
+
2124
+ if ('ontouchstart' in window) {
2125
+ element.addEventListener('touchend', Effect.hide, false);
2126
+ element.addEventListener('touchcancel', Effect.hide, false);
2127
+ }
2128
+
2129
+ element.addEventListener('mouseup', Effect.hide, false);
2130
+ element.addEventListener('mouseleave', Effect.hide, false);
2131
+ }
2132
+ }
2133
+
2134
+ Waves.displayEffect = function(options) {
2135
+ options = options || {};
2136
+
2137
+ if ('duration' in options) {
2138
+ Effect.duration = options.duration;
2139
+ }
2140
+
2141
+ //Wrap input inside <i> tag
2142
+ Effect.wrapInput($$('.waves-effect'));
2143
+
2144
+ if ('ontouchstart' in window) {
2145
+ document.body.addEventListener('touchstart', showEffect, false);
2146
+ }
2147
+
2148
+ document.body.addEventListener('mousedown', showEffect, false);
2149
+ };
2150
+
2151
+ /**
2152
+ * Attach Waves to an input element (or any element which doesn't
2153
+ * bubble mouseup/mousedown events).
2154
+ * Intended to be used with dynamically loaded forms/inputs, or
2155
+ * where the user doesn't want a delegated click handler.
2156
+ */
2157
+ Waves.attach = function(element) {
2158
+ //FUTURE: automatically add waves classes and allow users
2159
+ // to specify them with an options param? Eg. light/classic/button
2160
+ if (element.tagName.toLowerCase() === 'input') {
2161
+ Effect.wrapInput([element]);
2162
+ element = element.parentElement;
2163
+ }
2164
+
2165
+ if ('ontouchstart' in window) {
2166
+ element.addEventListener('touchstart', showEffect, false);
2167
+ }
2168
+
2169
+ element.addEventListener('mousedown', showEffect, false);
2170
+ };
2171
+
2172
+ window.Waves = Waves;
2173
+
2174
+ document.addEventListener('DOMContentLoaded', function() {
2175
+ Waves.displayEffect();
2176
+ }, false);
2177
+
2178
+ })(window);
2179
+ ;Materialize.toast = function (message, displayLength, className, completeCallback) {
2180
+ className = className || "";
2181
+
2182
+ var container = document.getElementById('toast-container');
2183
+
2184
+ // Create toast container if it does not exist
2185
+ if (container === null) {
2186
+ // create notification container
2187
+ container = document.createElement('div');
2188
+ container.id = 'toast-container';
2189
+ document.body.appendChild(container);
2190
+ }
2191
+
2192
+ // Select and append toast
2193
+ var newToast = createToast(message);
2194
+
2195
+ // only append toast if message is not undefined
2196
+ if(message){
2197
+ container.appendChild(newToast);
2198
+ }
2199
+
2200
+ newToast.style.opacity = 0;
2201
+
2202
+ // Animate toast in
2203
+ Vel(newToast, {translateY: '-35px', opacity: 1 }, {duration: 300,
2204
+ easing: 'easeOutCubic',
2205
+ queue: false});
2206
+
2207
+ // Allows timer to be pause while being panned
2208
+ var timeLeft = displayLength;
2209
+ var counterInterval;
2210
+ if (timeLeft != null) {
2211
+ counterInterval = setInterval (function(){
2212
+ if (newToast.parentNode === null)
2213
+ window.clearInterval(counterInterval);
2214
+
2215
+ // If toast is not being dragged, decrease its time remaining
2216
+ if (!newToast.classList.contains('panning')) {
2217
+ timeLeft -= 20;
2218
+ }
2219
+
2220
+ if (timeLeft <= 0) {
2221
+ // Animate toast out
2222
+ Vel(newToast, {"opacity": 0, marginTop: '-40px'}, { duration: 375,
2223
+ easing: 'easeOutExpo',
2224
+ queue: false,
2225
+ complete: function(){
2226
+ // Call the optional callback
2227
+ if(typeof(completeCallback) === "function")
2228
+ completeCallback();
2229
+ // Remove toast after it times out
2230
+ this[0].parentNode.removeChild(this[0]);
2231
+ }
2232
+ });
2233
+ window.clearInterval(counterInterval);
2234
+ }
2235
+ }, 20);
2236
+ }
2237
+
2238
+
2239
+
2240
+ function createToast(html) {
2241
+
2242
+ // Create toast
2243
+ var toast = document.createElement('div');
2244
+ toast.classList.add('toast');
2245
+ if (className) {
2246
+ var classes = className.split(' ');
2247
+
2248
+ for (var i = 0, count = classes.length; i < count; i++) {
2249
+ toast.classList.add(classes[i]);
2250
+ }
2251
+ }
2252
+ // If type of parameter is HTML Element
2253
+ if ( typeof HTMLElement === "object" ? html instanceof HTMLElement : html && typeof html === "object" && html !== null && html.nodeType === 1 && typeof html.nodeName==="string"
2254
+ ) {
2255
+ toast.appendChild(html);
2256
+ }
2257
+ else if (html instanceof jQuery) {
2258
+ // Check if it is jQuery object
2259
+ toast.appendChild(html[0]);
2260
+ }
2261
+ else {
2262
+ // Insert as text;
2263
+ toast.innerHTML = html;
2264
+ }
2265
+ // Bind hammer
2266
+ var hammerHandler = new Hammer(toast, {prevent_default: false});
2267
+ hammerHandler.on('pan', function(e) {
2268
+ var deltaX = e.deltaX;
2269
+ var activationDistance = 80;
2270
+
2271
+ // Change toast state
2272
+ if (!toast.classList.contains('panning')){
2273
+ toast.classList.add('panning');
2274
+ }
2275
+
2276
+ var opacityPercent = 1-Math.abs(deltaX / activationDistance);
2277
+ if (opacityPercent < 0)
2278
+ opacityPercent = 0;
2279
+
2280
+ Vel(toast, {left: deltaX, opacity: opacityPercent }, {duration: 50, queue: false, easing: 'easeOutQuad'});
2281
+
2282
+ });
2283
+
2284
+ hammerHandler.on('panend', function(e) {
2285
+ var deltaX = e.deltaX;
2286
+ var activationDistance = 80;
2287
+
2288
+ // If toast dragged past activation point
2289
+ if (Math.abs(deltaX) > activationDistance) {
2290
+ Vel(toast, {marginTop: '-40px'}, { duration: 375,
2291
+ easing: 'easeOutExpo',
2292
+ queue: false,
2293
+ complete: function(){
2294
+ if(typeof(completeCallback) === "function") {
2295
+ completeCallback();
2296
+ }
2297
+ toast.parentNode.removeChild(toast);
2298
+ }
2299
+ });
2300
+
2301
+ } else {
2302
+ toast.classList.remove('panning');
2303
+ // Put toast back into original position
2304
+ Vel(toast, { left: 0, opacity: 1 }, { duration: 300,
2305
+ easing: 'easeOutExpo',
2306
+ queue: false
2307
+ });
2308
+
2309
+ }
2310
+ });
2311
+
2312
+ return toast;
2313
+ }
2314
+ };
2315
+ ;(function ($) {
2316
+
2317
+ var methods = {
2318
+ init : function(options) {
2319
+ var defaults = {
2320
+ menuWidth: 300,
2321
+ edge: 'left',
2322
+ closeOnClick: false,
2323
+ draggable: true
2324
+ };
2325
+ options = $.extend(defaults, options);
2326
+
2327
+ $(this).each(function(){
2328
+ var $this = $(this);
2329
+ var menuId = $this.attr('data-activates');
2330
+ var menu = $("#"+ menuId);
2331
+
2332
+ // Set to width
2333
+ if (options.menuWidth != 300) {
2334
+ menu.css('width', options.menuWidth);
2335
+ }
2336
+
2337
+ // Add Touch Area
2338
+ var $dragTarget = $('.drag-target[data-sidenav="' + menuId + '"]');
2339
+ if (options.draggable) {
2340
+ // Regenerate dragTarget
2341
+ if ($dragTarget.length) {
2342
+ $dragTarget.remove();
2343
+ }
2344
+
2345
+ $dragTarget = $('<div class="drag-target"></div>').attr('data-sidenav', menuId);
2346
+ $('body').append($dragTarget);
2347
+ } else {
2348
+ $dragTarget = $();
2349
+ }
2350
+
2351
+ if (options.edge == 'left') {
2352
+ menu.css('transform', 'translateX(-100%)');
2353
+ $dragTarget.css({'left': 0}); // Add Touch Area
2354
+ }
2355
+ else {
2356
+ menu.addClass('right-aligned') // Change text-alignment to right
2357
+ .css('transform', 'translateX(100%)');
2358
+ $dragTarget.css({'right': 0}); // Add Touch Area
2359
+ }
2360
+
2361
+ // If fixed sidenav, bring menu out
2362
+ if (menu.hasClass('fixed')) {
2363
+ if (window.innerWidth > 992) {
2364
+ menu.css('transform', 'translateX(0)');
2365
+ }
2366
+ }
2367
+
2368
+ // Window resize to reset on large screens fixed
2369
+ if (menu.hasClass('fixed')) {
2370
+ $(window).resize( function() {
2371
+ if (window.innerWidth > 992) {
2372
+ // Close menu if window is resized bigger than 992 and user has fixed sidenav
2373
+ if ($('#sidenav-overlay').length !== 0 && menuOut) {
2374
+ removeMenu(true);
2375
+ }
2376
+ else {
2377
+ // menu.removeAttr('style');
2378
+ menu.css('transform', 'translateX(0%)');
2379
+ // menu.css('width', options.menuWidth);
2380
+ }
2381
+ }
2382
+ else if (menuOut === false){
2383
+ if (options.edge === 'left') {
2384
+ menu.css('transform', 'translateX(-100%)');
2385
+ } else {
2386
+ menu.css('transform', 'translateX(100%)');
2387
+ }
2388
+
2389
+ }
2390
+
2391
+ });
2392
+ }
2393
+
2394
+ // if closeOnClick, then add close event for all a tags in side sideNav
2395
+ if (options.closeOnClick === true) {
2396
+ menu.on("click.itemclick", "a:not(.collapsible-header)", function(){
2397
+ removeMenu();
2398
+ });
2399
+ }
2400
+
2401
+ var removeMenu = function(restoreNav) {
2402
+ panning = false;
2403
+ menuOut = false;
2404
+ // Reenable scrolling
2405
+ $('body').css({
2406
+ overflow: '',
2407
+ width: ''
2408
+ });
2409
+
2410
+ $('#sidenav-overlay').velocity({opacity: 0}, {duration: 200,
2411
+ queue: false, easing: 'easeOutQuad',
2412
+ complete: function() {
2413
+ $(this).remove();
2414
+ } });
2415
+ if (options.edge === 'left') {
2416
+ // Reset phantom div
2417
+ $dragTarget.css({width: '', right: '', left: '0'});
2418
+ menu.velocity(
2419
+ {'translateX': '-100%'},
2420
+ { duration: 200,
2421
+ queue: false,
2422
+ easing: 'easeOutCubic',
2423
+ complete: function() {
2424
+ if (restoreNav === true) {
2425
+ // Restore Fixed sidenav
2426
+ menu.removeAttr('style');
2427
+ menu.css('width', options.menuWidth);
2428
+ }
2429
+ }
2430
+
2431
+ });
2432
+ }
2433
+ else {
2434
+ // Reset phantom div
2435
+ $dragTarget.css({width: '', right: '0', left: ''});
2436
+ menu.velocity(
2437
+ {'translateX': '100%'},
2438
+ { duration: 200,
2439
+ queue: false,
2440
+ easing: 'easeOutCubic',
2441
+ complete: function() {
2442
+ if (restoreNav === true) {
2443
+ // Restore Fixed sidenav
2444
+ menu.removeAttr('style');
2445
+ menu.css('width', options.menuWidth);
2446
+ }
2447
+ }
2448
+ });
2449
+ }
2450
+ };
2451
+
2452
+
2453
+
2454
+ // Touch Event
2455
+ var panning = false;
2456
+ var menuOut = false;
2457
+
2458
+ if (options.draggable) {
2459
+ $dragTarget.on('click', function(){
2460
+ if (menuOut) {
2461
+ removeMenu();
2462
+ }
2463
+ });
2464
+
2465
+ $dragTarget.hammer({
2466
+ prevent_default: false
2467
+ }).bind('pan', function(e) {
2468
+
2469
+ if (e.gesture.pointerType == "touch") {
2470
+
2471
+ var direction = e.gesture.direction;
2472
+ var x = e.gesture.center.x;
2473
+ var y = e.gesture.center.y;
2474
+ var velocityX = e.gesture.velocityX;
2475
+
2476
+ // Disable Scrolling
2477
+ var $body = $('body');
2478
+ var $overlay = $('#sidenav-overlay');
2479
+ var oldWidth = $body.innerWidth();
2480
+ $body.css('overflow', 'hidden');
2481
+ $body.width(oldWidth);
2482
+
2483
+ // If overlay does not exist, create one and if it is clicked, close menu
2484
+ if ($overlay.length === 0) {
2485
+ $overlay = $('<div id="sidenav-overlay"></div>');
2486
+ $overlay.css('opacity', 0).click( function(){
2487
+ removeMenu();
2488
+ });
2489
+ $('body').append($overlay);
2490
+ }
2491
+
2492
+ // Keep within boundaries
2493
+ if (options.edge === 'left') {
2494
+ if (x > options.menuWidth) { x = options.menuWidth; }
2495
+ else if (x < 0) { x = 0; }
2496
+ }
2497
+
2498
+ if (options.edge === 'left') {
2499
+ // Left Direction
2500
+ if (x < (options.menuWidth / 2)) { menuOut = false; }
2501
+ // Right Direction
2502
+ else if (x >= (options.menuWidth / 2)) { menuOut = true; }
2503
+ menu.css('transform', 'translateX(' + (x - options.menuWidth) + 'px)');
2504
+ }
2505
+ else {
2506
+ // Left Direction
2507
+ if (x < (window.innerWidth - options.menuWidth / 2)) {
2508
+ menuOut = true;
2509
+ }
2510
+ // Right Direction
2511
+ else if (x >= (window.innerWidth - options.menuWidth / 2)) {
2512
+ menuOut = false;
2513
+ }
2514
+ var rightPos = (x - options.menuWidth / 2);
2515
+ if (rightPos < 0) {
2516
+ rightPos = 0;
2517
+ }
2518
+
2519
+ menu.css('transform', 'translateX(' + rightPos + 'px)');
2520
+ }
2521
+
2522
+
2523
+ // Percentage overlay
2524
+ var overlayPerc;
2525
+ if (options.edge === 'left') {
2526
+ overlayPerc = x / options.menuWidth;
2527
+ $overlay.velocity({opacity: overlayPerc }, {duration: 10, queue: false, easing: 'easeOutQuad'});
2528
+ }
2529
+ else {
2530
+ overlayPerc = Math.abs((x - window.innerWidth) / options.menuWidth);
2531
+ $overlay.velocity({opacity: overlayPerc }, {duration: 10, queue: false, easing: 'easeOutQuad'});
2532
+ }
2533
+ }
2534
+
2535
+ }).bind('panend', function(e) {
2536
+
2537
+ if (e.gesture.pointerType == "touch") {
2538
+ var $overlay = $('<div id="sidenav-overlay"></div>');
2539
+ var velocityX = e.gesture.velocityX;
2540
+ var x = e.gesture.center.x;
2541
+ var leftPos = x - options.menuWidth;
2542
+ var rightPos = x - options.menuWidth / 2;
2543
+ if (leftPos > 0 ) {
2544
+ leftPos = 0;
2545
+ }
2546
+ if (rightPos < 0) {
2547
+ rightPos = 0;
2548
+ }
2549
+ panning = false;
2550
+
2551
+ if (options.edge === 'left') {
2552
+ // If velocityX <= 0.3 then the user is flinging the menu closed so ignore menuOut
2553
+ if ((menuOut && velocityX <= 0.3) || velocityX < -0.5) {
2554
+ // Return menu to open
2555
+ if (leftPos !== 0) {
2556
+ menu.velocity({'translateX': [0, leftPos]}, {duration: 300, queue: false, easing: 'easeOutQuad'});
2557
+ }
2558
+
2559
+ $overlay.velocity({opacity: 1 }, {duration: 50, queue: false, easing: 'easeOutQuad'});
2560
+ $dragTarget.css({width: '50%', right: 0, left: ''});
2561
+ menuOut = true;
2562
+ }
2563
+ else if (!menuOut || velocityX > 0.3) {
2564
+ // Enable Scrolling
2565
+ $('body').css({
2566
+ overflow: '',
2567
+ width: ''
2568
+ });
2569
+ // Slide menu closed
2570
+ menu.velocity({'translateX': [-1 * options.menuWidth - 10, leftPos]}, {duration: 200, queue: false, easing: 'easeOutQuad'});
2571
+ $overlay.velocity({opacity: 0 }, {duration: 200, queue: false, easing: 'easeOutQuad',
2572
+ complete: function () {
2573
+ $(this).remove();
2574
+ }});
2575
+ $dragTarget.css({width: '10px', right: '', left: 0});
2576
+ }
2577
+ }
2578
+ else {
2579
+ if ((menuOut && velocityX >= -0.3) || velocityX > 0.5) {
2580
+ // Return menu to open
2581
+ if (rightPos !== 0) {
2582
+ menu.velocity({'translateX': [0, rightPos]}, {duration: 300, queue: false, easing: 'easeOutQuad'});
2583
+ }
2584
+
2585
+ $overlay.velocity({opacity: 1 }, {duration: 50, queue: false, easing: 'easeOutQuad'});
2586
+ $dragTarget.css({width: '50%', right: '', left: 0});
2587
+ menuOut = true;
2588
+ }
2589
+ else if (!menuOut || velocityX < -0.3) {
2590
+ // Enable Scrolling
2591
+ $('body').css({
2592
+ overflow: '',
2593
+ width: ''
2594
+ });
2595
+
2596
+ // Slide menu closed
2597
+ menu.velocity({'translateX': [options.menuWidth + 10, rightPos]}, {duration: 200, queue: false, easing: 'easeOutQuad'});
2598
+ $overlay.velocity({opacity: 0 }, {duration: 200, queue: false, easing: 'easeOutQuad',
2599
+ complete: function () {
2600
+ $(this).remove();
2601
+ }});
2602
+ $dragTarget.css({width: '10px', right: 0, left: ''});
2603
+ }
2604
+ }
2605
+
2606
+ }
2607
+ });
2608
+ }
2609
+
2610
+ $this.off('click.sidenav').on('click.sidenav', function() {
2611
+ if (menuOut === true) {
2612
+ menuOut = false;
2613
+ panning = false;
2614
+ removeMenu();
2615
+ }
2616
+ else {
2617
+
2618
+ // Disable Scrolling
2619
+ var $body = $('body');
2620
+ var $overlay = $('<div id="sidenav-overlay"></div>');
2621
+ var oldWidth = $body.innerWidth();
2622
+ $body.css('overflow', 'hidden');
2623
+ $body.width(oldWidth);
2624
+
2625
+ // Push current drag target on top of DOM tree
2626
+ $('body').append($dragTarget);
2627
+
2628
+ if (options.edge === 'left') {
2629
+ $dragTarget.css({width: '50%', right: 0, left: ''});
2630
+ menu.velocity({'translateX': [0, -1 * options.menuWidth]}, {duration: 300, queue: false, easing: 'easeOutQuad'});
2631
+ }
2632
+ else {
2633
+ $dragTarget.css({width: '50%', right: '', left: 0});
2634
+ menu.velocity({'translateX': [0, options.menuWidth]}, {duration: 300, queue: false, easing: 'easeOutQuad'});
2635
+ }
2636
+
2637
+ $overlay.css('opacity', 0)
2638
+ .click(function(){
2639
+ menuOut = false;
2640
+ panning = false;
2641
+ removeMenu();
2642
+ $overlay.velocity({opacity: 0}, {duration: 300, queue: false, easing: 'easeOutQuad',
2643
+ complete: function() {
2644
+ $(this).remove();
2645
+ } });
2646
+
2647
+ });
2648
+ $('body').append($overlay);
2649
+ $overlay.velocity({opacity: 1}, {duration: 300, queue: false, easing: 'easeOutQuad',
2650
+ complete: function () {
2651
+ menuOut = true;
2652
+ panning = false;
2653
+ }
2654
+ });
2655
+ }
2656
+
2657
+ return false;
2658
+ });
2659
+ });
2660
+
2661
+
2662
+ },
2663
+ destroy: function () {
2664
+ var $overlay = $('#sidenav-overlay');
2665
+ var $dragTarget = $('.drag-target[data-sidenav="' + $(this).attr('data-activates') + '"]');
2666
+ $overlay.trigger('click');
2667
+ $dragTarget.remove();
2668
+ $(this).off('click');
2669
+ $overlay.remove();
2670
+ },
2671
+ show : function() {
2672
+ this.trigger('click');
2673
+ },
2674
+ hide : function() {
2675
+ $('#sidenav-overlay').trigger('click');
2676
+ }
2677
+ };
2678
+
2679
+
2680
+ $.fn.sideNav = function(methodOrOptions) {
2681
+ if ( methods[methodOrOptions] ) {
2682
+ return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 ));
2683
+ } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) {
2684
+ // Default to "init"
2685
+ return methods.init.apply( this, arguments );
2686
+ } else {
2687
+ $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.sideNav' );
2688
+ }
2689
+ }; // Plugin end
2690
+ }( jQuery ));
2691
+ ;/**
2692
+ * Extend jquery with a scrollspy plugin.
2693
+ * This watches the window scroll and fires events when elements are scrolled into viewport.
2694
+ *
2695
+ * throttle() and getTime() taken from Underscore.js
2696
+ * https://github.com/jashkenas/underscore
2697
+ *
2698
+ * @author Copyright 2013 John Smart
2699
+ * @license https://raw.github.com/thesmart/jquery-scrollspy/master/LICENSE
2700
+ * @see https://github.com/thesmart
2701
+ * @version 0.1.2
2702
+ */
2703
+ (function($) {
2704
+
2705
+ var jWindow = $(window);
2706
+ var elements = [];
2707
+ var elementsInView = [];
2708
+ var isSpying = false;
2709
+ var ticks = 0;
2710
+ var unique_id = 1;
2711
+ var offset = {
2712
+ top : 0,
2713
+ right : 0,
2714
+ bottom : 0,
2715
+ left : 0,
2716
+ }
2717
+
2718
+ /**
2719
+ * Find elements that are within the boundary
2720
+ * @param {number} top
2721
+ * @param {number} right
2722
+ * @param {number} bottom
2723
+ * @param {number} left
2724
+ * @return {jQuery} A collection of elements
2725
+ */
2726
+ function findElements(top, right, bottom, left) {
2727
+ var hits = $();
2728
+ $.each(elements, function(i, element) {
2729
+ if (element.height() > 0) {
2730
+ var elTop = element.offset().top,
2731
+ elLeft = element.offset().left,
2732
+ elRight = elLeft + element.width(),
2733
+ elBottom = elTop + element.height();
2734
+
2735
+ var isIntersect = !(elLeft > right ||
2736
+ elRight < left ||
2737
+ elTop > bottom ||
2738
+ elBottom < top);
2739
+
2740
+ if (isIntersect) {
2741
+ hits.push(element);
2742
+ }
2743
+ }
2744
+ });
2745
+
2746
+ return hits;
2747
+ }
2748
+
2749
+
2750
+ /**
2751
+ * Called when the user scrolls the window
2752
+ */
2753
+ function onScroll(scrollOffset) {
2754
+ // unique tick id
2755
+ ++ticks;
2756
+
2757
+ // viewport rectangle
2758
+ var top = jWindow.scrollTop(),
2759
+ left = jWindow.scrollLeft(),
2760
+ right = left + jWindow.width(),
2761
+ bottom = top + jWindow.height();
2762
+
2763
+ // determine which elements are in view
2764
+ var intersections = findElements(top+offset.top + scrollOffset || 200, right+offset.right, bottom+offset.bottom, left+offset.left);
2765
+ $.each(intersections, function(i, element) {
2766
+
2767
+ var lastTick = element.data('scrollSpy:ticks');
2768
+ if (typeof lastTick != 'number') {
2769
+ // entered into view
2770
+ element.triggerHandler('scrollSpy:enter');
2771
+ }
2772
+
2773
+ // update tick id
2774
+ element.data('scrollSpy:ticks', ticks);
2775
+ });
2776
+
2777
+ // determine which elements are no longer in view
2778
+ $.each(elementsInView, function(i, element) {
2779
+ var lastTick = element.data('scrollSpy:ticks');
2780
+ if (typeof lastTick == 'number' && lastTick !== ticks) {
2781
+ // exited from view
2782
+ element.triggerHandler('scrollSpy:exit');
2783
+ element.data('scrollSpy:ticks', null);
2784
+ }
2785
+ });
2786
+
2787
+ // remember elements in view for next tick
2788
+ elementsInView = intersections;
2789
+ }
2790
+
2791
+ /**
2792
+ * Called when window is resized
2793
+ */
2794
+ function onWinSize() {
2795
+ jWindow.trigger('scrollSpy:winSize');
2796
+ }
2797
+
2798
+
2799
+ /**
2800
+ * Enables ScrollSpy using a selector
2801
+ * @param {jQuery|string} selector The elements collection, or a selector
2802
+ * @param {Object=} options Optional.
2803
+ throttle : number -> scrollspy throttling. Default: 100 ms
2804
+ offsetTop : number -> offset from top. Default: 0
2805
+ offsetRight : number -> offset from right. Default: 0
2806
+ offsetBottom : number -> offset from bottom. Default: 0
2807
+ offsetLeft : number -> offset from left. Default: 0
2808
+ * @returns {jQuery}
2809
+ */
2810
+ $.scrollSpy = function(selector, options) {
2811
+ var defaults = {
2812
+ throttle: 100,
2813
+ scrollOffset: 200 // offset - 200 allows elements near bottom of page to scroll
2814
+ };
2815
+ options = $.extend(defaults, options);
2816
+
2817
+ var visible = [];
2818
+ selector = $(selector);
2819
+ selector.each(function(i, element) {
2820
+ elements.push($(element));
2821
+ $(element).data("scrollSpy:id", i);
2822
+ // Smooth scroll to section
2823
+ $('a[href="#' + $(element).attr('id') + '"]').click(function(e) {
2824
+ e.preventDefault();
2825
+ var offset = $(Materialize.escapeHash(this.hash)).offset().top + 1;
2826
+ $('html, body').animate({ scrollTop: offset - options.scrollOffset }, {duration: 400, queue: false, easing: 'easeOutCubic'});
2827
+ });
2828
+ });
2829
+
2830
+ offset.top = options.offsetTop || 0;
2831
+ offset.right = options.offsetRight || 0;
2832
+ offset.bottom = options.offsetBottom || 0;
2833
+ offset.left = options.offsetLeft || 0;
2834
+
2835
+ var throttledScroll = Materialize.throttle(function() {
2836
+ onScroll(options.scrollOffset);
2837
+ }, options.throttle || 100);
2838
+ var readyScroll = function(){
2839
+ $(document).ready(throttledScroll);
2840
+ };
2841
+
2842
+ if (!isSpying) {
2843
+ jWindow.on('scroll', readyScroll);
2844
+ jWindow.on('resize', readyScroll);
2845
+ isSpying = true;
2846
+ }
2847
+
2848
+ // perform a scan once, after current execution context, and after dom is ready
2849
+ setTimeout(readyScroll, 0);
2850
+
2851
+
2852
+ selector.on('scrollSpy:enter', function() {
2853
+ visible = $.grep(visible, function(value) {
2854
+ return value.height() != 0;
2855
+ });
2856
+
2857
+ var $this = $(this);
2858
+
2859
+ if (visible[0]) {
2860
+ $('a[href="#' + visible[0].attr('id') + '"]').removeClass('active');
2861
+ if ($this.data('scrollSpy:id') < visible[0].data('scrollSpy:id')) {
2862
+ visible.unshift($(this));
2863
+ }
2864
+ else {
2865
+ visible.push($(this));
2866
+ }
2867
+ }
2868
+ else {
2869
+ visible.push($(this));
2870
+ }
2871
+
2872
+
2873
+ $('a[href="#' + visible[0].attr('id') + '"]').addClass('active');
2874
+ });
2875
+ selector.on('scrollSpy:exit', function() {
2876
+ visible = $.grep(visible, function(value) {
2877
+ return value.height() != 0;
2878
+ });
2879
+
2880
+ if (visible[0]) {
2881
+ $('a[href="#' + visible[0].attr('id') + '"]').removeClass('active');
2882
+ var $this = $(this);
2883
+ visible = $.grep(visible, function(value) {
2884
+ return value.attr('id') != $this.attr('id');
2885
+ });
2886
+ if (visible[0]) { // Check if empty
2887
+ $('a[href="#' + visible[0].attr('id') + '"]').addClass('active');
2888
+ }
2889
+ }
2890
+ });
2891
+
2892
+ return selector;
2893
+ };
2894
+
2895
+ /**
2896
+ * Listen for window resize events
2897
+ * @param {Object=} options Optional. Set { throttle: number } to change throttling. Default: 100 ms
2898
+ * @returns {jQuery} $(window)
2899
+ */
2900
+ $.winSizeSpy = function(options) {
2901
+ $.winSizeSpy = function() { return jWindow; }; // lock from multiple calls
2902
+ options = options || {
2903
+ throttle: 100
2904
+ };
2905
+ return jWindow.on('resize', Materialize.throttle(onWinSize, options.throttle || 100));
2906
+ };
2907
+
2908
+ /**
2909
+ * Enables ScrollSpy on a collection of elements
2910
+ * e.g. $('.scrollSpy').scrollSpy()
2911
+ * @param {Object=} options Optional.
2912
+ throttle : number -> scrollspy throttling. Default: 100 ms
2913
+ offsetTop : number -> offset from top. Default: 0
2914
+ offsetRight : number -> offset from right. Default: 0
2915
+ offsetBottom : number -> offset from bottom. Default: 0
2916
+ offsetLeft : number -> offset from left. Default: 0
2917
+ * @returns {jQuery}
2918
+ */
2919
+ $.fn.scrollSpy = function(options) {
2920
+ return $.scrollSpy($(this), options);
2921
+ };
2922
+
2923
+ })(jQuery);
2924
+ ;(function ($) {
2925
+ $(document).ready(function() {
2926
+
2927
+ // Function to update labels of text fields
2928
+ Materialize.updateTextFields = function() {
2929
+ var input_selector = 'input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], textarea';
2930
+ $(input_selector).each(function(index, element) {
2931
+ var $this = $(this);
2932
+ if ($(element).val().length > 0 || element.autofocus || $this.attr('placeholder') !== undefined) {
2933
+ $this.siblings('label').addClass('active');
2934
+ } else if ($(element)[0].validity) {
2935
+ $this.siblings('label').toggleClass('active', $(element)[0].validity.badInput === true);
2936
+ } else {
2937
+ $this.siblings('label').removeClass('active');
2938
+ }
2939
+ });
2940
+ };
2941
+
2942
+ // Text based inputs
2943
+ var input_selector = 'input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], textarea';
2944
+
2945
+ // Add active if form auto complete
2946
+ $(document).on('change', input_selector, function () {
2947
+ if($(this).val().length !== 0 || $(this).attr('placeholder') !== undefined) {
2948
+ $(this).siblings('label').addClass('active');
2949
+ }
2950
+ validate_field($(this));
2951
+ });
2952
+
2953
+ // Add active if input element has been pre-populated on document ready
2954
+ $(document).ready(function() {
2955
+ Materialize.updateTextFields();
2956
+ });
2957
+
2958
+ // HTML DOM FORM RESET handling
2959
+ $(document).on('reset', function(e) {
2960
+ var formReset = $(e.target);
2961
+ if (formReset.is('form')) {
2962
+ formReset.find(input_selector).removeClass('valid').removeClass('invalid');
2963
+ formReset.find(input_selector).each(function () {
2964
+ if ($(this).attr('value') === '') {
2965
+ $(this).siblings('label').removeClass('active');
2966
+ }
2967
+ });
2968
+
2969
+ // Reset select
2970
+ formReset.find('select.initialized').each(function () {
2971
+ var reset_text = formReset.find('option[selected]').text();
2972
+ formReset.siblings('input.select-dropdown').val(reset_text);
2973
+ });
2974
+ }
2975
+ });
2976
+
2977
+ // Add active when element has focus
2978
+ $(document).on('focus', input_selector, function () {
2979
+ $(this).siblings('label, .prefix').addClass('active');
2980
+ });
2981
+
2982
+ $(document).on('blur', input_selector, function () {
2983
+ var $inputElement = $(this);
2984
+ var selector = ".prefix";
2985
+
2986
+ if ($inputElement.val().length === 0 && $inputElement[0].validity.badInput !== true && $inputElement.attr('placeholder') === undefined) {
2987
+ selector += ", label";
2988
+ }
2989
+
2990
+ $inputElement.siblings(selector).removeClass('active');
2991
+
2992
+ validate_field($inputElement);
2993
+ });
2994
+
2995
+ window.validate_field = function(object) {
2996
+ var hasLength = object.attr('data-length') !== undefined;
2997
+ var lenAttr = parseInt(object.attr('data-length'));
2998
+ var len = object.val().length;
2999
+
3000
+ if (object.val().length === 0 && object[0].validity.badInput === false) {
3001
+ if (object.hasClass('validate')) {
3002
+ object.removeClass('valid');
3003
+ object.removeClass('invalid');
3004
+ }
3005
+ }
3006
+ else {
3007
+ if (object.hasClass('validate')) {
3008
+ // Check for character counter attributes
3009
+ if ((object.is(':valid') && hasLength && (len <= lenAttr)) || (object.is(':valid') && !hasLength)) {
3010
+ object.removeClass('invalid');
3011
+ object.addClass('valid');
3012
+ }
3013
+ else {
3014
+ object.removeClass('valid');
3015
+ object.addClass('invalid');
3016
+ }
3017
+ }
3018
+ }
3019
+ };
3020
+
3021
+ // Radio and Checkbox focus class
3022
+ var radio_checkbox = 'input[type=radio], input[type=checkbox]';
3023
+ $(document).on('keyup.radio', radio_checkbox, function(e) {
3024
+ // TAB, check if tabbing to radio or checkbox.
3025
+ if (e.which === 9) {
3026
+ $(this).addClass('tabbed');
3027
+ var $this = $(this);
3028
+ $this.one('blur', function(e) {
3029
+
3030
+ $(this).removeClass('tabbed');
3031
+ });
3032
+ return;
3033
+ }
3034
+ });
3035
+
3036
+ // Textarea Auto Resize
3037
+ var hiddenDiv = $('.hiddendiv').first();
3038
+ if (!hiddenDiv.length) {
3039
+ hiddenDiv = $('<div class="hiddendiv common"></div>');
3040
+ $('body').append(hiddenDiv);
3041
+ }
3042
+ var text_area_selector = '.materialize-textarea';
3043
+
3044
+ function textareaAutoResize($textarea) {
3045
+ // Set font properties of hiddenDiv
3046
+
3047
+ var fontFamily = $textarea.css('font-family');
3048
+ var fontSize = $textarea.css('font-size');
3049
+ var lineHeight = $textarea.css('line-height');
3050
+
3051
+ if (fontSize) { hiddenDiv.css('font-size', fontSize); }
3052
+ if (fontFamily) { hiddenDiv.css('font-family', fontFamily); }
3053
+ if (lineHeight) { hiddenDiv.css('line-height', lineHeight); }
3054
+
3055
+ if ($textarea.attr('wrap') === "off") {
3056
+ hiddenDiv.css('overflow-wrap', "normal")
3057
+ .css('white-space', "pre");
3058
+ }
3059
+
3060
+ hiddenDiv.text($textarea.val() + '\n');
3061
+ var content = hiddenDiv.html().replace(/\n/g, '<br>');
3062
+ hiddenDiv.html(content);
3063
+
3064
+
3065
+ // When textarea is hidden, width goes crazy.
3066
+ // Approximate with half of window size
3067
+
3068
+ if ($textarea.is(':visible')) {
3069
+ hiddenDiv.css('width', $textarea.width());
3070
+ }
3071
+ else {
3072
+ hiddenDiv.css('width', $(window).width()/2);
3073
+ }
3074
+
3075
+ $textarea.css('height', hiddenDiv.height());
3076
+ }
3077
+
3078
+ $(text_area_selector).each(function () {
3079
+ var $textarea = $(this);
3080
+ if ($textarea.val().length) {
3081
+ textareaAutoResize($textarea);
3082
+ }
3083
+ });
3084
+
3085
+ $('body').on('keyup keydown autoresize', text_area_selector, function () {
3086
+ textareaAutoResize($(this));
3087
+ });
3088
+
3089
+ // File Input Path
3090
+ $(document).on('change', '.file-field input[type="file"]', function () {
3091
+ var file_field = $(this).closest('.file-field');
3092
+ var path_input = file_field.find('input.file-path');
3093
+ var files = $(this)[0].files;
3094
+ var file_names = [];
3095
+ for (var i = 0; i < files.length; i++) {
3096
+ file_names.push(files[i].name);
3097
+ }
3098
+ path_input.val(file_names.join(", "));
3099
+ path_input.trigger('change');
3100
+ });
3101
+
3102
+ /****************
3103
+ * Range Input *
3104
+ ****************/
3105
+
3106
+ var range_type = 'input[type=range]';
3107
+ var range_mousedown = false;
3108
+ var left;
3109
+
3110
+ $(range_type).each(function () {
3111
+ var thumb = $('<span class="thumb"><span class="value"></span></span>');
3112
+ $(this).after(thumb);
3113
+ });
3114
+
3115
+ var range_wrapper = '.range-field';
3116
+ $(document).on('change', range_type, function(e) {
3117
+ var thumb = $(this).siblings('.thumb');
3118
+ thumb.find('.value').html($(this).val());
3119
+ });
3120
+
3121
+ $(document).on('input mousedown touchstart', range_type, function(e) {
3122
+ var thumb = $(this).siblings('.thumb');
3123
+ var width = $(this).outerWidth();
3124
+
3125
+ // If thumb indicator does not exist yet, create it
3126
+ if (thumb.length <= 0) {
3127
+ thumb = $('<span class="thumb"><span class="value"></span></span>');
3128
+ $(this).after(thumb);
3129
+ }
3130
+
3131
+ // Set indicator value
3132
+ thumb.find('.value').html($(this).val());
3133
+
3134
+ range_mousedown = true;
3135
+ $(this).addClass('active');
3136
+
3137
+ if (!thumb.hasClass('active')) {
3138
+ thumb.velocity({ height: "30px", width: "30px", top: "-20px", marginLeft: "-15px"}, { duration: 300, easing: 'easeOutExpo' });
3139
+ }
3140
+
3141
+ if (e.type !== 'input') {
3142
+ if(e.pageX === undefined || e.pageX === null){//mobile
3143
+ left = e.originalEvent.touches[0].pageX - $(this).offset().left;
3144
+ }
3145
+ else{ // desktop
3146
+ left = e.pageX - $(this).offset().left;
3147
+ }
3148
+ if (left < 0) {
3149
+ left = 0;
3150
+ }
3151
+ else if (left > width) {
3152
+ left = width;
3153
+ }
3154
+ thumb.addClass('active').css('left', left);
3155
+ }
3156
+
3157
+ thumb.find('.value').html($(this).val());
3158
+ });
3159
+
3160
+ $(document).on('mouseup touchend', range_wrapper, function() {
3161
+ range_mousedown = false;
3162
+ $(this).removeClass('active');
3163
+ });
3164
+
3165
+ $(document).on('mousemove touchmove', range_wrapper, function(e) {
3166
+ var thumb = $(this).children('.thumb');
3167
+ var left;
3168
+ if (range_mousedown) {
3169
+ if (!thumb.hasClass('active')) {
3170
+ thumb.velocity({ height: '30px', width: '30px', top: '-20px', marginLeft: '-15px'}, { duration: 300, easing: 'easeOutExpo' });
3171
+ }
3172
+ if (e.pageX === undefined || e.pageX === null) { //mobile
3173
+ left = e.originalEvent.touches[0].pageX - $(this).offset().left;
3174
+ }
3175
+ else{ // desktop
3176
+ left = e.pageX - $(this).offset().left;
3177
+ }
3178
+ var width = $(this).outerWidth();
3179
+
3180
+ if (left < 0) {
3181
+ left = 0;
3182
+ }
3183
+ else if (left > width) {
3184
+ left = width;
3185
+ }
3186
+ thumb.addClass('active').css('left', left);
3187
+ thumb.find('.value').html(thumb.siblings(range_type).val());
3188
+ }
3189
+ });
3190
+
3191
+ $(document).on('mouseout touchleave', range_wrapper, function() {
3192
+ if (!range_mousedown) {
3193
+
3194
+ var thumb = $(this).children('.thumb');
3195
+
3196
+ if (thumb.hasClass('active')) {
3197
+ thumb.velocity({ height: '0', width: '0', top: '10px', marginLeft: '-6px'}, { duration: 100 });
3198
+ }
3199
+ thumb.removeClass('active');
3200
+ }
3201
+ });
3202
+
3203
+ /**************************
3204
+ * Auto complete plugin *
3205
+ *************************/
3206
+ $.fn.autocomplete = function (options) {
3207
+ // Defaults
3208
+ var defaults = {
3209
+ data: {},
3210
+ limit: Infinity,
3211
+ onAutocomplete: null
3212
+ };
3213
+
3214
+ options = $.extend(defaults, options);
3215
+
3216
+ return this.each(function() {
3217
+ var $input = $(this);
3218
+ var data = options.data,
3219
+ count = 0,
3220
+ activeIndex = 0,
3221
+ oldVal,
3222
+ $inputDiv = $input.closest('.input-field'); // Div to append on
3223
+
3224
+ // Check if data isn't empty
3225
+ if (!$.isEmptyObject(data)) {
3226
+ var $autocomplete = $('<ul class="autocomplete-content dropdown-content"></ul>');
3227
+ var $oldAutocomplete;
3228
+
3229
+ // Append autocomplete element.
3230
+ // Prevent double structure init.
3231
+ if ($inputDiv.length) {
3232
+ $oldAutocomplete = $inputDiv.children('.autocomplete-content.dropdown-content').first();
3233
+ if (!$oldAutocomplete.length) {
3234
+ $inputDiv.append($autocomplete); // Set ul in body
3235
+ }
3236
+ } else {
3237
+ $oldAutocomplete = $input.next('.autocomplete-content.dropdown-content');
3238
+ if (!$oldAutocomplete.length) {
3239
+ $input.after($autocomplete);
3240
+ }
3241
+ }
3242
+ if ($oldAutocomplete.length) {
3243
+ $autocomplete = $oldAutocomplete;
3244
+ }
3245
+
3246
+ // Highlight partial match.
3247
+ var highlight = function(string, $el) {
3248
+ var img = $el.find('img');
3249
+ var matchStart = $el.text().toLowerCase().indexOf("" + string.toLowerCase() + ""),
3250
+ matchEnd = matchStart + string.length - 1,
3251
+ beforeMatch = $el.text().slice(0, matchStart),
3252
+ matchText = $el.text().slice(matchStart, matchEnd + 1),
3253
+ afterMatch = $el.text().slice(matchEnd + 1);
3254
+ $el.html("<span>" + beforeMatch + "<span class='highlight'>" + matchText + "</span>" + afterMatch + "</span>");
3255
+ if (img.length) {
3256
+ $el.prepend(img);
3257
+ }
3258
+ };
3259
+
3260
+ // Reset current element position
3261
+ var resetCurrentElement = function() {
3262
+ activeIndex = 0;
3263
+ $autocomplete.find('.active').removeClass('active');
3264
+ }
3265
+
3266
+ // Perform search
3267
+ $input.off('keyup.autocomplete').on('keyup.autocomplete', function (e) {
3268
+ // Reset count.
3269
+ count = 0;
3270
+
3271
+ // Don't capture enter or arrow key usage.
3272
+ if (e.which === 13 ||
3273
+ e.which === 38 ||
3274
+ e.which === 40) {
3275
+ return;
3276
+ }
3277
+
3278
+ var val = $input.val().toLowerCase();
3279
+
3280
+ // Check if the input isn't empty
3281
+ if (oldVal !== val) {
3282
+ $autocomplete.empty();
3283
+ resetCurrentElement();
3284
+
3285
+ if (val !== '') {
3286
+ for(var key in data) {
3287
+ if (data.hasOwnProperty(key) &&
3288
+ key.toLowerCase().indexOf(val) !== -1 &&
3289
+ key.toLowerCase() !== val) {
3290
+ // Break if past limit
3291
+ if (count >= options.limit) {
3292
+ break;
3293
+ }
3294
+
3295
+ var autocompleteOption = $('<li></li>');
3296
+ if (!!data[key]) {
3297
+ autocompleteOption.append('<img src="'+ data[key] +'" class="right circle"><span>'+ key +'</span>');
3298
+ } else {
3299
+ autocompleteOption.append('<span>'+ key +'</span>');
3300
+ }
3301
+
3302
+ $autocomplete.append(autocompleteOption);
3303
+ highlight(val, autocompleteOption);
3304
+ count++;
3305
+ }
3306
+ }
3307
+ }
3308
+ }
3309
+
3310
+ // Update oldVal
3311
+ oldVal = val;
3312
+ });
3313
+
3314
+ $input.off('keydown.autocomplete').on('keydown.autocomplete', function (e) {
3315
+ // Arrow keys and enter key usage
3316
+ var keyCode = e.which,
3317
+ liElement,
3318
+ numItems = $autocomplete.children('li').length,
3319
+ $active = $autocomplete.children('.active').first();
3320
+
3321
+ // select element on Enter
3322
+ if (keyCode === 13) {
3323
+ liElement = $autocomplete.children('li').eq(activeIndex);
3324
+ if (liElement.length) {
3325
+ liElement.click();
3326
+ e.preventDefault();
3327
+ }
3328
+ return;
3329
+ }
3330
+
3331
+ // Capture up and down key
3332
+ if ( keyCode === 38 || keyCode === 40 ) {
3333
+ e.preventDefault();
3334
+
3335
+ if (keyCode === 38 &&
3336
+ activeIndex > 0) {
3337
+ activeIndex--;
3338
+ }
3339
+
3340
+ if (keyCode === 40 &&
3341
+ activeIndex < (numItems - 1) &&
3342
+ $active.length) {
3343
+ activeIndex++;
3344
+ }
3345
+
3346
+ $active.removeClass('active');
3347
+ $autocomplete.children('li').eq(activeIndex).addClass('active');
3348
+ }
3349
+ });
3350
+
3351
+ // Set input value
3352
+ $autocomplete.on('click', 'li', function () {
3353
+ var text = $(this).text().trim();
3354
+ $input.val(text);
3355
+ $input.trigger('change');
3356
+ $autocomplete.empty();
3357
+ resetCurrentElement();
3358
+
3359
+ // Handle onAutocomplete callback.
3360
+ if (typeof(options.onAutocomplete) === "function") {
3361
+ options.onAutocomplete.call(this, text);
3362
+ }
3363
+ });
3364
+ }
3365
+ });
3366
+ };
3367
+
3368
+ }); // End of $(document).ready
3369
+
3370
+ /*******************
3371
+ * Select Plugin *
3372
+ ******************/
3373
+ $.fn.material_select = function (callback) {
3374
+ $(this).each(function(){
3375
+ var $select = $(this);
3376
+
3377
+ if ($select.hasClass('browser-default')) {
3378
+ return; // Continue to next (return false breaks out of entire loop)
3379
+ }
3380
+
3381
+ var multiple = $select.attr('multiple') ? true : false,
3382
+ lastID = $select.data('select-id'); // Tear down structure if Select needs to be rebuilt
3383
+
3384
+ if (lastID) {
3385
+ $select.parent().find('span.caret').remove();
3386
+ $select.parent().find('input').remove();
3387
+
3388
+ $select.unwrap();
3389
+ $('ul#select-options-'+lastID).remove();
3390
+ }
3391
+
3392
+ // If destroying the select, remove the selelct-id and reset it to it's uninitialized state.
3393
+ if(callback === 'destroy') {
3394
+ $select.data('select-id', null).removeClass('initialized');
3395
+ return;
3396
+ }
3397
+
3398
+ var uniqueID = Materialize.guid();
3399
+ $select.data('select-id', uniqueID);
3400
+ var wrapper = $('<div class="select-wrapper"></div>');
3401
+ wrapper.addClass($select.attr('class'));
3402
+ var options = $('<ul id="select-options-' + uniqueID +'" class="dropdown-content select-dropdown ' + (multiple ? 'multiple-select-dropdown' : '') + '"></ul>'),
3403
+ selectChildren = $select.children('option, optgroup'),
3404
+ valuesSelected = [],
3405
+ optionsHover = false;
3406
+
3407
+ var label = $select.find('option:selected').html() || $select.find('option:first').html() || "";
3408
+
3409
+ // Function that renders and appends the option taking into
3410
+ // account type and possible image icon.
3411
+ var appendOptionWithIcon = function(select, option, type) {
3412
+ // Add disabled attr if disabled
3413
+ var disabledClass = (option.is(':disabled')) ? 'disabled ' : '';
3414
+ var optgroupClass = (type === 'optgroup-option') ? 'optgroup-option ' : '';
3415
+
3416
+ // add icons
3417
+ var icon_url = option.data('icon');
3418
+ var classes = option.attr('class');
3419
+ if (!!icon_url) {
3420
+ var classString = '';
3421
+ if (!!classes) classString = ' class="' + classes + '"';
3422
+
3423
+ // Check for multiple type.
3424
+ if (type === 'multiple') {
3425
+ options.append($('<li class="' + disabledClass + '"><img alt="" src="' + icon_url + '"' + classString + '><span><input type="checkbox"' + disabledClass + '/><label></label>' + option.html() + '</span></li>'));
3426
+ } else {
3427
+ options.append($('<li class="' + disabledClass + optgroupClass + '"><img alt="" src="' + icon_url + '"' + classString + '><span>' + option.html() + '</span></li>'));
3428
+ }
3429
+ return true;
3430
+ }
3431
+
3432
+ // Check for multiple type.
3433
+ if (type === 'multiple') {
3434
+ options.append($('<li class="' + disabledClass + '"><span><input type="checkbox"' + disabledClass + '/><label></label>' + option.html() + '</span></li>'));
3435
+ } else {
3436
+ options.append($('<li class="' + disabledClass + optgroupClass + '"><span>' + option.html() + '</span></li>'));
3437
+ }
3438
+ };
3439
+
3440
+ /* Create dropdown structure. */
3441
+ if (selectChildren.length) {
3442
+ selectChildren.each(function() {
3443
+ if ($(this).is('option')) {
3444
+ // Direct descendant option.
3445
+ if (multiple) {
3446
+ appendOptionWithIcon($select, $(this), 'multiple');
3447
+
3448
+ } else {
3449
+ appendOptionWithIcon($select, $(this));
3450
+ }
3451
+ } else if ($(this).is('optgroup')) {
3452
+ // Optgroup.
3453
+ var selectOptions = $(this).children('option');
3454
+ options.append($('<li class="optgroup"><span>' + $(this).attr('label') + '</span></li>'));
3455
+
3456
+ selectOptions.each(function() {
3457
+ appendOptionWithIcon($select, $(this), 'optgroup-option');
3458
+ });
3459
+ }
3460
+ });
3461
+ }
3462
+
3463
+ options.find('li:not(.optgroup)').each(function (i) {
3464
+ $(this).click(function (e) {
3465
+ // Check if option element is disabled
3466
+ if (!$(this).hasClass('disabled') && !$(this).hasClass('optgroup')) {
3467
+ var selected = true;
3468
+
3469
+ if (multiple) {
3470
+ $('input[type="checkbox"]', this).prop('checked', function(i, v) { return !v; });
3471
+ selected = toggleEntryFromArray(valuesSelected, $(this).index(), $select);
3472
+ $newSelect.trigger('focus');
3473
+ } else {
3474
+ options.find('li').removeClass('active');
3475
+ $(this).toggleClass('active');
3476
+ $newSelect.val($(this).text());
3477
+ }
3478
+
3479
+ activateOption(options, $(this));
3480
+ $select.find('option').eq(i).prop('selected', selected);
3481
+ // Trigger onchange() event
3482
+ $select.trigger('change');
3483
+ if (typeof callback !== 'undefined') callback();
3484
+ }
3485
+
3486
+ e.stopPropagation();
3487
+ });
3488
+ });
3489
+
3490
+ // Wrap Elements
3491
+ $select.wrap(wrapper);
3492
+ // Add Select Display Element
3493
+ var dropdownIcon = $('<span class="caret">&#9660;</span>');
3494
+ if ($select.is(':disabled'))
3495
+ dropdownIcon.addClass('disabled');
3496
+
3497
+ // escape double quotes
3498
+ var sanitizedLabelHtml = label.replace(/"/g, '&quot;');
3499
+
3500
+ var $newSelect = $('<input type="text" class="select-dropdown" readonly="true" ' + (($select.is(':disabled')) ? 'disabled' : '') + ' data-activates="select-options-' + uniqueID +'" value="'+ sanitizedLabelHtml +'"/>');
3501
+ $select.before($newSelect);
3502
+ $newSelect.before(dropdownIcon);
3503
+
3504
+ $newSelect.after(options);
3505
+ // Check if section element is disabled
3506
+ if (!$select.is(':disabled')) {
3507
+ $newSelect.dropdown({'hover': false, 'closeOnClick': false});
3508
+ }
3509
+
3510
+ // Copy tabindex
3511
+ if ($select.attr('tabindex')) {
3512
+ $($newSelect[0]).attr('tabindex', $select.attr('tabindex'));
3513
+ }
3514
+
3515
+ $select.addClass('initialized');
3516
+
3517
+ $newSelect.on({
3518
+ 'focus': function (){
3519
+ if ($('ul.select-dropdown').not(options[0]).is(':visible')) {
3520
+ $('input.select-dropdown').trigger('close');
3521
+ }
3522
+ if (!options.is(':visible')) {
3523
+ $(this).trigger('open', ['focus']);
3524
+ var label = $(this).val();
3525
+ if (multiple && label.indexOf(',') >= 0) {
3526
+ label = label.split(',')[0];
3527
+ }
3528
+
3529
+ var selectedOption = options.find('li').filter(function() {
3530
+ return $(this).text().toLowerCase() === label.toLowerCase();
3531
+ })[0];
3532
+ activateOption(options, selectedOption, true);
3533
+ }
3534
+ },
3535
+ 'click': function (e){
3536
+ e.stopPropagation();
3537
+ }
3538
+ });
3539
+
3540
+ $newSelect.on('blur', function() {
3541
+ if (!multiple) {
3542
+ $(this).trigger('close');
3543
+ }
3544
+ options.find('li.selected').removeClass('selected');
3545
+ });
3546
+
3547
+ options.hover(function() {
3548
+ optionsHover = true;
3549
+ }, function () {
3550
+ optionsHover = false;
3551
+ });
3552
+
3553
+ $(window).on({
3554
+ 'click': function () {
3555
+ multiple && (optionsHover || $newSelect.trigger('close'));
3556
+ }
3557
+ });
3558
+
3559
+ // Add initial multiple selections.
3560
+ if (multiple) {
3561
+ $select.find("option:selected:not(:disabled)").each(function () {
3562
+ var index = $(this).index();
3563
+
3564
+ toggleEntryFromArray(valuesSelected, index, $select);
3565
+ options.find("li").eq(index).find(":checkbox").prop("checked", true);
3566
+ });
3567
+ }
3568
+
3569
+ /**
3570
+ * Make option as selected and scroll to selected position
3571
+ * @param {jQuery} collection Select options jQuery element
3572
+ * @param {Element} newOption element of the new option
3573
+ * @param {Boolean} firstActivation If on first activation of select
3574
+ */
3575
+ var activateOption = function(collection, newOption, firstActivation) {
3576
+ if (newOption) {
3577
+ collection.find('li.selected').removeClass('selected');
3578
+ var option = $(newOption);
3579
+ option.addClass('selected');
3580
+ if (!multiple || !!firstActivation) {
3581
+ options.scrollTo(option);
3582
+ }
3583
+ }
3584
+ };
3585
+
3586
+ // Allow user to search by typing
3587
+ // this array is cleared after 1 second
3588
+ var filterQuery = [],
3589
+ onKeyDown = function(e){
3590
+ // TAB - switch to another input
3591
+ if(e.which == 9){
3592
+ $newSelect.trigger('close');
3593
+ return;
3594
+ }
3595
+
3596
+ // ARROW DOWN WHEN SELECT IS CLOSED - open select options
3597
+ if(e.which == 40 && !options.is(':visible')){
3598
+ $newSelect.trigger('open');
3599
+ return;
3600
+ }
3601
+
3602
+ // ENTER WHEN SELECT IS CLOSED - submit form
3603
+ if(e.which == 13 && !options.is(':visible')){
3604
+ return;
3605
+ }
3606
+
3607
+ e.preventDefault();
3608
+
3609
+ // CASE WHEN USER TYPE LETTERS
3610
+ var letter = String.fromCharCode(e.which).toLowerCase(),
3611
+ nonLetters = [9,13,27,38,40];
3612
+ if (letter && (nonLetters.indexOf(e.which) === -1)) {
3613
+ filterQuery.push(letter);
3614
+
3615
+ var string = filterQuery.join(''),
3616
+ newOption = options.find('li').filter(function() {
3617
+ return $(this).text().toLowerCase().indexOf(string) === 0;
3618
+ })[0];
3619
+
3620
+ if (newOption) {
3621
+ activateOption(options, newOption);
3622
+ }
3623
+ }
3624
+
3625
+ // ENTER - select option and close when select options are opened
3626
+ if (e.which == 13) {
3627
+ var activeOption = options.find('li.selected:not(.disabled)')[0];
3628
+ if(activeOption){
3629
+ $(activeOption).trigger('click');
3630
+ if (!multiple) {
3631
+ $newSelect.trigger('close');
3632
+ }
3633
+ }
3634
+ }
3635
+
3636
+ // ARROW DOWN - move to next not disabled option
3637
+ if (e.which == 40) {
3638
+ if (options.find('li.selected').length) {
3639
+ newOption = options.find('li.selected').next('li:not(.disabled)')[0];
3640
+ } else {
3641
+ newOption = options.find('li:not(.disabled)')[0];
3642
+ }
3643
+ activateOption(options, newOption);
3644
+ }
3645
+
3646
+ // ESC - close options
3647
+ if (e.which == 27) {
3648
+ $newSelect.trigger('close');
3649
+ }
3650
+
3651
+ // ARROW UP - move to previous not disabled option
3652
+ if (e.which == 38) {
3653
+ newOption = options.find('li.selected').prev('li:not(.disabled)')[0];
3654
+ if(newOption)
3655
+ activateOption(options, newOption);
3656
+ }
3657
+
3658
+ // Automaticaly clean filter query so user can search again by starting letters
3659
+ setTimeout(function(){ filterQuery = []; }, 1000);
3660
+ };
3661
+
3662
+ $newSelect.on('keydown', onKeyDown);
3663
+ });
3664
+
3665
+ function toggleEntryFromArray(entriesArray, entryIndex, select) {
3666
+ var index = entriesArray.indexOf(entryIndex),
3667
+ notAdded = index === -1;
3668
+
3669
+ if (notAdded) {
3670
+ entriesArray.push(entryIndex);
3671
+ } else {
3672
+ entriesArray.splice(index, 1);
3673
+ }
3674
+
3675
+ select.siblings('ul.dropdown-content').find('li').eq(entryIndex).toggleClass('active');
3676
+
3677
+ // use notAdded instead of true (to detect if the option is selected or not)
3678
+ select.find('option').eq(entryIndex).prop('selected', notAdded);
3679
+ setValueToInput(entriesArray, select);
3680
+
3681
+ return notAdded;
3682
+ }
3683
+
3684
+ function setValueToInput(entriesArray, select) {
3685
+ var value = '';
3686
+
3687
+ for (var i = 0, count = entriesArray.length; i < count; i++) {
3688
+ var text = select.find('option').eq(entriesArray[i]).text();
3689
+
3690
+ i === 0 ? value += text : value += ', ' + text;
3691
+ }
3692
+
3693
+ if (value === '') {
3694
+ value = select.find('option:disabled').eq(0).text();
3695
+ }
3696
+
3697
+ select.siblings('input.select-dropdown').val(value);
3698
+ }
3699
+ };
3700
+
3701
+ }( jQuery ));
3702
+ ;(function ($) {
3703
+
3704
+ var methods = {
3705
+
3706
+ init : function(options) {
3707
+ var defaults = {
3708
+ indicators: true,
3709
+ height: 400,
3710
+ transition: 500,
3711
+ interval: 6000
3712
+ };
3713
+ options = $.extend(defaults, options);
3714
+
3715
+ return this.each(function() {
3716
+
3717
+ // For each slider, we want to keep track of
3718
+ // which slide is active and its associated content
3719
+ var $this = $(this);
3720
+ var $slider = $this.find('ul.slides').first();
3721
+ var $slides = $slider.find('> li');
3722
+ var $active_index = $slider.find('.active').index();
3723
+ var $active, $indicators, $interval;
3724
+ if ($active_index != -1) { $active = $slides.eq($active_index); }
3725
+
3726
+ // Transitions the caption depending on alignment
3727
+ function captionTransition(caption, duration) {
3728
+ if (caption.hasClass("center-align")) {
3729
+ caption.velocity({opacity: 0, translateY: -100}, {duration: duration, queue: false});
3730
+ }
3731
+ else if (caption.hasClass("right-align")) {
3732
+ caption.velocity({opacity: 0, translateX: 100}, {duration: duration, queue: false});
3733
+ }
3734
+ else if (caption.hasClass("left-align")) {
3735
+ caption.velocity({opacity: 0, translateX: -100}, {duration: duration, queue: false});
3736
+ }
3737
+ }
3738
+
3739
+ // This function will transition the slide to any index of the next slide
3740
+ function moveToSlide(index) {
3741
+ // Wrap around indices.
3742
+ if (index >= $slides.length) index = 0;
3743
+ else if (index < 0) index = $slides.length -1;
3744
+
3745
+ $active_index = $slider.find('.active').index();
3746
+
3747
+ // Only do if index changes
3748
+ if ($active_index != index) {
3749
+ $active = $slides.eq($active_index);
3750
+ $caption = $active.find('.caption');
3751
+
3752
+ $active.removeClass('active');
3753
+ $active.velocity({opacity: 0}, {duration: options.transition, queue: false, easing: 'easeOutQuad',
3754
+ complete: function() {
3755
+ $slides.not('.active').velocity({opacity: 0, translateX: 0, translateY: 0}, {duration: 0, queue: false});
3756
+ } });
3757
+ captionTransition($caption, options.transition);
3758
+
3759
+
3760
+ // Update indicators
3761
+ if (options.indicators) {
3762
+ $indicators.eq($active_index).removeClass('active');
3763
+ }
3764
+
3765
+ $slides.eq(index).velocity({opacity: 1}, {duration: options.transition, queue: false, easing: 'easeOutQuad'});
3766
+ $slides.eq(index).find('.caption').velocity({opacity: 1, translateX: 0, translateY: 0}, {duration: options.transition, delay: options.transition, queue: false, easing: 'easeOutQuad'});
3767
+ $slides.eq(index).addClass('active');
3768
+
3769
+
3770
+ // Update indicators
3771
+ if (options.indicators) {
3772
+ $indicators.eq(index).addClass('active');
3773
+ }
3774
+ }
3775
+ }
3776
+
3777
+ // Set height of slider
3778
+ // If fullscreen, do nothing
3779
+ if (!$this.hasClass('fullscreen')) {
3780
+ if (options.indicators) {
3781
+ // Add height if indicators are present
3782
+ $this.height(options.height + 40);
3783
+ }
3784
+ else {
3785
+ $this.height(options.height);
3786
+ }
3787
+ $slider.height(options.height);
3788
+ }
3789
+
3790
+
3791
+ // Set initial positions of captions
3792
+ $slides.find('.caption').each(function () {
3793
+ captionTransition($(this), 0);
3794
+ });
3795
+
3796
+ // Move img src into background-image
3797
+ $slides.find('img').each(function () {
3798
+ var placeholderBase64 = 'data:image/gif;base64,R0lGODlhAQABAIABAP///wAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';
3799
+ if ($(this).attr('src') !== placeholderBase64) {
3800
+ $(this).css('background-image', 'url(' + $(this).attr('src') + ')' );
3801
+ $(this).attr('src', placeholderBase64);
3802
+ }
3803
+ });
3804
+
3805
+ // dynamically add indicators
3806
+ if (options.indicators) {
3807
+ $indicators = $('<ul class="indicators"></ul>');
3808
+ $slides.each(function( index ) {
3809
+ var $indicator = $('<li class="indicator-item"></li>');
3810
+
3811
+ // Handle clicks on indicators
3812
+ $indicator.click(function () {
3813
+ var $parent = $slider.parent();
3814
+ var curr_index = $parent.find($(this)).index();
3815
+ moveToSlide(curr_index);
3816
+
3817
+ // reset interval
3818
+ clearInterval($interval);
3819
+ $interval = setInterval(
3820
+ function(){
3821
+ $active_index = $slider.find('.active').index();
3822
+ if ($slides.length == $active_index + 1) $active_index = 0; // loop to start
3823
+ else $active_index += 1;
3824
+
3825
+ moveToSlide($active_index);
3826
+
3827
+ }, options.transition + options.interval
3828
+ );
3829
+ });
3830
+ $indicators.append($indicator);
3831
+ });
3832
+ $this.append($indicators);
3833
+ $indicators = $this.find('ul.indicators').find('li.indicator-item');
3834
+ }
3835
+
3836
+ if ($active) {
3837
+ $active.show();
3838
+ }
3839
+ else {
3840
+ $slides.first().addClass('active').velocity({opacity: 1}, {duration: options.transition, queue: false, easing: 'easeOutQuad'});
3841
+
3842
+ $active_index = 0;
3843
+ $active = $slides.eq($active_index);
3844
+
3845
+ // Update indicators
3846
+ if (options.indicators) {
3847
+ $indicators.eq($active_index).addClass('active');
3848
+ }
3849
+ }
3850
+
3851
+ // Adjust height to current slide
3852
+ $active.find('img').each(function() {
3853
+ $active.find('.caption').velocity({opacity: 1, translateX: 0, translateY: 0}, {duration: options.transition, queue: false, easing: 'easeOutQuad'});
3854
+ });
3855
+
3856
+ // auto scroll
3857
+ $interval = setInterval(
3858
+ function(){
3859
+ $active_index = $slider.find('.active').index();
3860
+ moveToSlide($active_index + 1);
3861
+
3862
+ }, options.transition + options.interval
3863
+ );
3864
+
3865
+
3866
+ // HammerJS, Swipe navigation
3867
+
3868
+ // Touch Event
3869
+ var panning = false;
3870
+ var swipeLeft = false;
3871
+ var swipeRight = false;
3872
+
3873
+ $this.hammer({
3874
+ prevent_default: false
3875
+ }).bind('pan', function(e) {
3876
+ if (e.gesture.pointerType === "touch") {
3877
+
3878
+ // reset interval
3879
+ clearInterval($interval);
3880
+
3881
+ var direction = e.gesture.direction;
3882
+ var x = e.gesture.deltaX;
3883
+ var velocityX = e.gesture.velocityX;
3884
+ var velocityY = e.gesture.velocityY;
3885
+
3886
+ $curr_slide = $slider.find('.active');
3887
+ if (Math.abs(velocityX) > Math.abs(velocityY)) {
3888
+ $curr_slide.velocity({ translateX: x
3889
+ }, {duration: 50, queue: false, easing: 'easeOutQuad'});
3890
+ }
3891
+
3892
+ // Swipe Left
3893
+ if (direction === 4 && (x > ($this.innerWidth() / 2) || velocityX < -0.65)) {
3894
+ swipeRight = true;
3895
+ }
3896
+ // Swipe Right
3897
+ else if (direction === 2 && (x < (-1 * $this.innerWidth() / 2) || velocityX > 0.65)) {
3898
+ swipeLeft = true;
3899
+ }
3900
+
3901
+ // Make Slide Behind active slide visible
3902
+ var next_slide;
3903
+ if (swipeLeft) {
3904
+ next_slide = $curr_slide.next();
3905
+ if (next_slide.length === 0) {
3906
+ next_slide = $slides.first();
3907
+ }
3908
+ next_slide.velocity({ opacity: 1
3909
+ }, {duration: 300, queue: false, easing: 'easeOutQuad'});
3910
+ }
3911
+ if (swipeRight) {
3912
+ next_slide = $curr_slide.prev();
3913
+ if (next_slide.length === 0) {
3914
+ next_slide = $slides.last();
3915
+ }
3916
+ next_slide.velocity({ opacity: 1
3917
+ }, {duration: 300, queue: false, easing: 'easeOutQuad'});
3918
+ }
3919
+
3920
+
3921
+ }
3922
+
3923
+ }).bind('panend', function(e) {
3924
+ if (e.gesture.pointerType === "touch") {
3925
+
3926
+ $curr_slide = $slider.find('.active');
3927
+ panning = false;
3928
+ curr_index = $slider.find('.active').index();
3929
+
3930
+ if (!swipeRight && !swipeLeft || $slides.length <=1) {
3931
+ // Return to original spot
3932
+ $curr_slide.velocity({ translateX: 0
3933
+ }, {duration: 300, queue: false, easing: 'easeOutQuad'});
3934
+ }
3935
+ else if (swipeLeft) {
3936
+ moveToSlide(curr_index + 1);
3937
+ $curr_slide.velocity({translateX: -1 * $this.innerWidth() }, {duration: 300, queue: false, easing: 'easeOutQuad',
3938
+ complete: function() {
3939
+ $curr_slide.velocity({opacity: 0, translateX: 0}, {duration: 0, queue: false});
3940
+ } });
3941
+ }
3942
+ else if (swipeRight) {
3943
+ moveToSlide(curr_index - 1);
3944
+ $curr_slide.velocity({translateX: $this.innerWidth() }, {duration: 300, queue: false, easing: 'easeOutQuad',
3945
+ complete: function() {
3946
+ $curr_slide.velocity({opacity: 0, translateX: 0}, {duration: 0, queue: false});
3947
+ } });
3948
+ }
3949
+ swipeLeft = false;
3950
+ swipeRight = false;
3951
+
3952
+ // Restart interval
3953
+ clearInterval($interval);
3954
+ $interval = setInterval(
3955
+ function(){
3956
+ $active_index = $slider.find('.active').index();
3957
+ if ($slides.length == $active_index + 1) $active_index = 0; // loop to start
3958
+ else $active_index += 1;
3959
+
3960
+ moveToSlide($active_index);
3961
+
3962
+ }, options.transition + options.interval
3963
+ );
3964
+ }
3965
+ });
3966
+
3967
+ $this.on('sliderPause', function() {
3968
+ clearInterval($interval);
3969
+ });
3970
+
3971
+ $this.on('sliderStart', function() {
3972
+ clearInterval($interval);
3973
+ $interval = setInterval(
3974
+ function(){
3975
+ $active_index = $slider.find('.active').index();
3976
+ if ($slides.length == $active_index + 1) $active_index = 0; // loop to start
3977
+ else $active_index += 1;
3978
+
3979
+ moveToSlide($active_index);
3980
+
3981
+ }, options.transition + options.interval
3982
+ );
3983
+ });
3984
+
3985
+ $this.on('sliderNext', function() {
3986
+ $active_index = $slider.find('.active').index();
3987
+ moveToSlide($active_index + 1);
3988
+ });
3989
+
3990
+ $this.on('sliderPrev', function() {
3991
+ $active_index = $slider.find('.active').index();
3992
+ moveToSlide($active_index - 1);
3993
+ });
3994
+
3995
+ });
3996
+
3997
+
3998
+
3999
+ },
4000
+ pause : function() {
4001
+ $(this).trigger('sliderPause');
4002
+ },
4003
+ start : function() {
4004
+ $(this).trigger('sliderStart');
4005
+ },
4006
+ next : function() {
4007
+ $(this).trigger('sliderNext');
4008
+ },
4009
+ prev : function() {
4010
+ $(this).trigger('sliderPrev');
4011
+ }
4012
+ };
4013
+
4014
+
4015
+ $.fn.slider = function(methodOrOptions) {
4016
+ if ( methods[methodOrOptions] ) {
4017
+ return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 ));
4018
+ } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) {
4019
+ // Default to "init"
4020
+ return methods.init.apply( this, arguments );
4021
+ } else {
4022
+ $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.tooltip' );
4023
+ }
4024
+ }; // Plugin end
4025
+ }( jQuery ));
4026
+ ;(function ($) {
4027
+ $(document).ready(function() {
4028
+
4029
+ $(document).on('click.card', '.card', function (e) {
4030
+ if ($(this).find('> .card-reveal').length) {
4031
+ if ($(e.target).is($('.card-reveal .card-title')) || $(e.target).is($('.card-reveal .card-title i'))) {
4032
+ // Make Reveal animate down and display none
4033
+ $(this).find('.card-reveal').velocity(
4034
+ {translateY: 0}, {
4035
+ duration: 225,
4036
+ queue: false,
4037
+ easing: 'easeInOutQuad',
4038
+ complete: function() { $(this).css({ display: 'none'}); }
4039
+ }
4040
+ );
4041
+ }
4042
+ else if ($(e.target).is($('.card .activator')) ||
4043
+ $(e.target).is($('.card .activator i')) ) {
4044
+ $(e.target).closest('.card').css('overflow', 'hidden');
4045
+ $(this).find('.card-reveal').css({ display: 'block'}).velocity("stop", false).velocity({translateY: '-100%'}, {duration: 300, queue: false, easing: 'easeInOutQuad'});
4046
+ }
4047
+ }
4048
+ });
4049
+
4050
+ });
4051
+ }( jQuery ));;(function ($) {
4052
+ var materialChipsDefaults = {
4053
+ data: [],
4054
+ placeholder: '',
4055
+ secondaryPlaceholder: '',
4056
+ autocompleteData: {},
4057
+ autocompleteLimit: Infinity,
4058
+ };
4059
+
4060
+ $(document).ready(function() {
4061
+ // Handle removal of static chips.
4062
+ $(document).on('click', '.chip .close', function(e){
4063
+ var $chips = $(this).closest('.chips');
4064
+ if ($chips.attr('data-initialized')) {
4065
+ return;
4066
+ }
4067
+ $(this).closest('.chip').remove();
4068
+ });
4069
+ });
4070
+
4071
+ $.fn.material_chip = function (options) {
4072
+ var self = this;
4073
+ this.$el = $(this);
4074
+ this.$document = $(document);
4075
+ this.SELS = {
4076
+ CHIPS: '.chips',
4077
+ CHIP: '.chip',
4078
+ INPUT: 'input',
4079
+ DELETE: '.material-icons',
4080
+ SELECTED_CHIP: '.selected',
4081
+ };
4082
+
4083
+ if ('data' === options) {
4084
+ return this.$el.data('chips');
4085
+ }
4086
+
4087
+ var curr_options = $.extend({}, materialChipsDefaults, options);
4088
+ self.hasAutocomplete = !$.isEmptyObject(curr_options.autocompleteData);
4089
+
4090
+ // Initialize
4091
+ this.init = function() {
4092
+ var i = 0;
4093
+ var chips;
4094
+ self.$el.each(function(){
4095
+ var $chips = $(this);
4096
+ var chipId = Materialize.guid();
4097
+ self.chipId = chipId;
4098
+
4099
+ if (!curr_options.data || !(curr_options.data instanceof Array)) {
4100
+ curr_options.data = [];
4101
+ }
4102
+ $chips.data('chips', curr_options.data);
4103
+ $chips.attr('data-index', i);
4104
+ $chips.attr('data-initialized', true);
4105
+
4106
+ if (!$chips.hasClass(self.SELS.CHIPS)) {
4107
+ $chips.addClass('chips');
4108
+ }
4109
+
4110
+ self.chips($chips, chipId);
4111
+ i++;
4112
+ });
4113
+ };
4114
+
4115
+ this.handleEvents = function() {
4116
+ var SELS = self.SELS;
4117
+
4118
+ self.$document.off('click.chips-focus', SELS.CHIPS).on('click.chips-focus', SELS.CHIPS, function(e){
4119
+ $(e.target).find(SELS.INPUT).focus();
4120
+ });
4121
+
4122
+ self.$document.off('click.chips-select', SELS.CHIP).on('click.chips-select', SELS.CHIP, function(e){
4123
+ var $chip = $(e.target);
4124
+ if ($chip.length) {
4125
+ var wasSelected = $chip.hasClass('selected');
4126
+ var $chips = $chip.closest(SELS.CHIPS);
4127
+ $(SELS.CHIP).removeClass('selected');
4128
+
4129
+ if (!wasSelected) {
4130
+ self.selectChip($chip.index(), $chips);
4131
+ }
4132
+ }
4133
+ });
4134
+
4135
+ self.$document.off('keydown.chips').on('keydown.chips', function(e){
4136
+ if ($(e.target).is('input, textarea')) {
4137
+ return;
4138
+ }
4139
+
4140
+ // delete
4141
+ var $chip = self.$document.find(SELS.CHIP + SELS.SELECTED_CHIP);
4142
+ var $chips = $chip.closest(SELS.CHIPS);
4143
+ var length = $chip.siblings(SELS.CHIP).length;
4144
+ var index;
4145
+
4146
+ if (!$chip.length) {
4147
+ return;
4148
+ }
4149
+
4150
+ if (e.which === 8 || e.which === 46) {
4151
+ e.preventDefault();
4152
+
4153
+ index = $chip.index();
4154
+ self.deleteChip(index, $chips);
4155
+
4156
+ var selectIndex = null;
4157
+ if ((index + 1) < length) {
4158
+ selectIndex = index;
4159
+ } else if (index === length || (index + 1) === length) {
4160
+ selectIndex = length - 1;
4161
+ }
4162
+
4163
+ if (selectIndex < 0) selectIndex = null;
4164
+
4165
+ if (null !== selectIndex) {
4166
+ self.selectChip(selectIndex, $chips);
4167
+ }
4168
+ if (!length) $chips.find('input').focus();
4169
+
4170
+ // left
4171
+ } else if (e.which === 37) {
4172
+ index = $chip.index() - 1;
4173
+ if (index < 0) {
4174
+ return;
4175
+ }
4176
+ $(SELS.CHIP).removeClass('selected');
4177
+ self.selectChip(index, $chips);
4178
+
4179
+ // right
4180
+ } else if (e.which === 39) {
4181
+ index = $chip.index() + 1;
4182
+ $(SELS.CHIP).removeClass('selected');
4183
+ if (index > length) {
4184
+ $chips.find('input').focus();
4185
+ return;
4186
+ }
4187
+ self.selectChip(index, $chips);
4188
+ }
4189
+ });
4190
+
4191
+ self.$document.off('focusin.chips', SELS.CHIPS + ' ' + SELS.INPUT).on('focusin.chips', SELS.CHIPS + ' ' + SELS.INPUT, function(e){
4192
+ var $currChips = $(e.target).closest(SELS.CHIPS);
4193
+ $currChips.addClass('focus');
4194
+ $currChips.siblings('label, .prefix').addClass('active');
4195
+ $(SELS.CHIP).removeClass('selected');
4196
+ });
4197
+
4198
+ self.$document.off('focusout.chips', SELS.CHIPS + ' ' + SELS.INPUT).on('focusout.chips', SELS.CHIPS + ' ' + SELS.INPUT, function(e){
4199
+ var $currChips = $(e.target).closest(SELS.CHIPS);
4200
+ $currChips.removeClass('focus');
4201
+
4202
+ // Remove active if empty
4203
+ if (!$currChips.data('chips').length) {
4204
+ $currChips.siblings('label').removeClass('active');
4205
+ }
4206
+ $currChips.siblings('.prefix').removeClass('active');
4207
+ });
4208
+
4209
+ self.$document.off('keydown.chips-add', SELS.CHIPS + ' ' + SELS.INPUT).on('keydown.chips-add', SELS.CHIPS + ' ' + SELS.INPUT, function(e){
4210
+ var $target = $(e.target);
4211
+ var $chips = $target.closest(SELS.CHIPS);
4212
+ var chipsLength = $chips.children(SELS.CHIP).length;
4213
+
4214
+ // enter
4215
+ if (13 === e.which) {
4216
+ // Override enter if autocompleting.
4217
+ if (self.hasAutocomplete &&
4218
+ $chips.find('.autocomplete-content.dropdown-content').length &&
4219
+ $chips.find('.autocomplete-content.dropdown-content').children().length) {
4220
+ return;
4221
+ }
4222
+
4223
+ e.preventDefault();
4224
+ self.addChip({tag: $target.val()}, $chips);
4225
+ $target.val('');
4226
+ return;
4227
+ }
4228
+
4229
+ // delete or left
4230
+ if ((8 === e.keyCode || 37 === e.keyCode) && '' === $target.val() && chipsLength) {
4231
+ e.preventDefault();
4232
+ self.selectChip(chipsLength - 1, $chips);
4233
+ $target.blur();
4234
+ return;
4235
+ }
4236
+ });
4237
+
4238
+ // Click on delete icon in chip.
4239
+ self.$document.off('click.chips-delete', SELS.CHIPS + ' ' + SELS.DELETE).on('click.chips-delete', SELS.CHIPS + ' ' + SELS.DELETE, function(e) {
4240
+ var $target = $(e.target);
4241
+ var $chips = $target.closest(SELS.CHIPS);
4242
+ var $chip = $target.closest(SELS.CHIP);
4243
+ e.stopPropagation();
4244
+ self.deleteChip($chip.index(), $chips);
4245
+ $chips.find('input').focus();
4246
+ });
4247
+ };
4248
+
4249
+ this.chips = function($chips, chipId) {
4250
+ var html = '';
4251
+ $chips.data('chips').forEach(function(elem){
4252
+ html += self.renderChip(elem);
4253
+ });
4254
+ html += '<input id="' + chipId +'" class="input" placeholder="">';
4255
+ $chips.html(html);
4256
+ self.setPlaceholder($chips);
4257
+
4258
+ // Set for attribute for label
4259
+ var label = $chips.next('label');
4260
+ if (label.length) {
4261
+ label.attr('for', chipId);
4262
+
4263
+ if ($chips.data('chips').length) {
4264
+ label.addClass('active');
4265
+ }
4266
+ }
4267
+
4268
+ // Setup autocomplete if needed.
4269
+ var input = $('#' + chipId);
4270
+ if (self.hasAutocomplete) {
4271
+ input.autocomplete({
4272
+ data: curr_options.autocompleteData,
4273
+ limit: curr_options.autocompleteLimit,
4274
+ onAutocomplete: function(val) {
4275
+ self.addChip({tag: val}, $chips);
4276
+ input.val('');
4277
+ input.focus();
4278
+ },
4279
+ })
4280
+ }
4281
+ };
4282
+
4283
+ this.renderChip = function(elem) {
4284
+ if (!elem.tag) return;
4285
+
4286
+ var html = '<div class="chip">' + elem.tag;
4287
+ if (elem.image) {
4288
+ html += ' <img src="' + elem.image + '"> ';
4289
+ }
4290
+ html += '<i class="material-icons close">close</i>';
4291
+ html += '</div>';
4292
+ return html;
4293
+ };
4294
+
4295
+ this.setPlaceholder = function($chips) {
4296
+ if ($chips.data('chips').length && curr_options.placeholder) {
4297
+ $chips.find('input').prop('placeholder', curr_options.placeholder);
4298
+
4299
+ } else if (!$chips.data('chips').length && curr_options.secondaryPlaceholder) {
4300
+ $chips.find('input').prop('placeholder', curr_options.secondaryPlaceholder);
4301
+ }
4302
+ };
4303
+
4304
+ this.isValid = function($chips, elem) {
4305
+ var chips = $chips.data('chips');
4306
+ var exists = false;
4307
+ for (var i=0; i < chips.length; i++) {
4308
+ if (chips[i].tag === elem.tag) {
4309
+ exists = true;
4310
+ return;
4311
+ }
4312
+ }
4313
+ return '' !== elem.tag && !exists;
4314
+ };
4315
+
4316
+ this.addChip = function(elem, $chips) {
4317
+ if (!self.isValid($chips, elem)) {
4318
+ return;
4319
+ }
4320
+ var chipHtml = self.renderChip(elem);
4321
+ var newData = [];
4322
+ var oldData = $chips.data('chips');
4323
+ for (var i = 0; i < oldData.length; i++) {
4324
+ newData.push(oldData[i]);
4325
+ }
4326
+ newData.push(elem);
4327
+
4328
+ $chips.data('chips', newData);
4329
+ $(chipHtml).insertBefore($chips.find('input'));
4330
+ $chips.trigger('chip.add', elem);
4331
+ self.setPlaceholder($chips);
4332
+ };
4333
+
4334
+ this.deleteChip = function(chipIndex, $chips) {
4335
+ var chip = $chips.data('chips')[chipIndex];
4336
+ $chips.find('.chip').eq(chipIndex).remove();
4337
+
4338
+ var newData = [];
4339
+ var oldData = $chips.data('chips');
4340
+ for (var i = 0; i < oldData.length; i++) {
4341
+ if (i !== chipIndex) {
4342
+ newData.push(oldData[i]);
4343
+ }
4344
+ }
4345
+
4346
+ $chips.data('chips', newData);
4347
+ $chips.trigger('chip.delete', chip);
4348
+ self.setPlaceholder($chips);
4349
+ };
4350
+
4351
+ this.selectChip = function(chipIndex, $chips) {
4352
+ var $chip = $chips.find('.chip').eq(chipIndex);
4353
+ if ($chip && false === $chip.hasClass('selected')) {
4354
+ $chip.addClass('selected');
4355
+ $chips.trigger('chip.select', $chips.data('chips')[chipIndex]);
4356
+ }
4357
+ };
4358
+
4359
+ this.getChipsElement = function(index, $chips) {
4360
+ return $chips.eq(index);
4361
+ };
4362
+
4363
+ // init
4364
+ this.init();
4365
+
4366
+ this.handleEvents();
4367
+ };
4368
+ }( jQuery ));
4369
+ ;(function ($) {
4370
+ $.fn.pushpin = function (options) {
4371
+ // Defaults
4372
+ var defaults = {
4373
+ top: 0,
4374
+ bottom: Infinity,
4375
+ offset: 0
4376
+ };
4377
+
4378
+ // Remove pushpin event and classes
4379
+ if (options === "remove") {
4380
+ this.each(function () {
4381
+ if (id = $(this).data('pushpin-id')) {
4382
+ $(window).off('scroll.' + id);
4383
+ $(this).removeData('pushpin-id').removeClass('pin-top pinned pin-bottom').removeAttr('style');
4384
+ }
4385
+ });
4386
+ return false;
4387
+ }
4388
+
4389
+ options = $.extend(defaults, options);
4390
+
4391
+
4392
+ $index = 0;
4393
+ return this.each(function() {
4394
+ var $uniqueId = Materialize.guid(),
4395
+ $this = $(this),
4396
+ $original_offset = $(this).offset().top;
4397
+
4398
+ function removePinClasses(object) {
4399
+ object.removeClass('pin-top');
4400
+ object.removeClass('pinned');
4401
+ object.removeClass('pin-bottom');
4402
+ }
4403
+
4404
+ function updateElements(objects, scrolled) {
4405
+ objects.each(function () {
4406
+ // Add position fixed (because its between top and bottom)
4407
+ if (options.top <= scrolled && options.bottom >= scrolled && !$(this).hasClass('pinned')) {
4408
+ removePinClasses($(this));
4409
+ $(this).css('top', options.offset);
4410
+ $(this).addClass('pinned');
4411
+ }
4412
+
4413
+ // Add pin-top (when scrolled position is above top)
4414
+ if (scrolled < options.top && !$(this).hasClass('pin-top')) {
4415
+ removePinClasses($(this));
4416
+ $(this).css('top', 0);
4417
+ $(this).addClass('pin-top');
4418
+ }
4419
+
4420
+ // Add pin-bottom (when scrolled position is below bottom)
4421
+ if (scrolled > options.bottom && !$(this).hasClass('pin-bottom')) {
4422
+ removePinClasses($(this));
4423
+ $(this).addClass('pin-bottom');
4424
+ $(this).css('top', options.bottom - $original_offset);
4425
+ }
4426
+ });
4427
+ }
4428
+
4429
+ $(this).data('pushpin-id', $uniqueId);
4430
+ updateElements($this, $(window).scrollTop());
4431
+ $(window).on('scroll.' + $uniqueId, function () {
4432
+ var $scrolled = $(window).scrollTop() + options.offset;
4433
+ updateElements($this, $scrolled);
4434
+ });
4435
+
4436
+ });
4437
+
4438
+ };
4439
+ }( jQuery ));;(function ($) {
4440
+ $(document).ready(function() {
4441
+
4442
+ // jQuery reverse
4443
+ $.fn.reverse = [].reverse;
4444
+
4445
+ // Hover behaviour: make sure this doesn't work on .click-to-toggle FABs!
4446
+ $(document).on('mouseenter.fixedActionBtn', '.fixed-action-btn:not(.click-to-toggle):not(.toolbar)', function(e) {
4447
+ var $this = $(this);
4448
+ openFABMenu($this);
4449
+ });
4450
+ $(document).on('mouseleave.fixedActionBtn', '.fixed-action-btn:not(.click-to-toggle):not(.toolbar)', function(e) {
4451
+ var $this = $(this);
4452
+ closeFABMenu($this);
4453
+ });
4454
+
4455
+ // Toggle-on-click behaviour.
4456
+ $(document).on('click.fabClickToggle', '.fixed-action-btn.click-to-toggle > a', function(e) {
4457
+ var $this = $(this);
4458
+ var $menu = $this.parent();
4459
+ if ($menu.hasClass('active')) {
4460
+ closeFABMenu($menu);
4461
+ } else {
4462
+ openFABMenu($menu);
4463
+ }
4464
+ });
4465
+
4466
+ // Toolbar transition behaviour.
4467
+ $(document).on('click.fabToolbar', '.fixed-action-btn.toolbar > a', function(e) {
4468
+ var $this = $(this);
4469
+ var $menu = $this.parent();
4470
+ FABtoToolbar($menu);
4471
+ });
4472
+
4473
+ });
4474
+
4475
+ $.fn.extend({
4476
+ openFAB: function() {
4477
+ openFABMenu($(this));
4478
+ },
4479
+ closeFAB: function() {
4480
+ closeFABMenu($(this));
4481
+ },
4482
+ openToolbar: function() {
4483
+ FABtoToolbar($(this));
4484
+ },
4485
+ closeToolbar: function() {
4486
+ toolbarToFAB($(this));
4487
+ }
4488
+ });
4489
+
4490
+
4491
+ var openFABMenu = function (btn) {
4492
+ var $this = btn;
4493
+ if ($this.hasClass('active') === false) {
4494
+
4495
+ // Get direction option
4496
+ var horizontal = $this.hasClass('horizontal');
4497
+ var offsetY, offsetX;
4498
+
4499
+ if (horizontal === true) {
4500
+ offsetX = 40;
4501
+ } else {
4502
+ offsetY = 40;
4503
+ }
4504
+
4505
+ $this.addClass('active');
4506
+ $this.find('ul .btn-floating').velocity(
4507
+ { scaleY: ".4", scaleX: ".4", translateY: offsetY + 'px', translateX: offsetX + 'px'},
4508
+ { duration: 0 });
4509
+
4510
+ var time = 0;
4511
+ $this.find('ul .btn-floating').reverse().each( function () {
4512
+ $(this).velocity(
4513
+ { opacity: "1", scaleX: "1", scaleY: "1", translateY: "0", translateX: '0'},
4514
+ { duration: 80, delay: time });
4515
+ time += 40;
4516
+ });
4517
+ }
4518
+ };
4519
+
4520
+ var closeFABMenu = function (btn) {
4521
+ var $this = btn;
4522
+ // Get direction option
4523
+ var horizontal = $this.hasClass('horizontal');
4524
+ var offsetY, offsetX;
4525
+
4526
+ if (horizontal === true) {
4527
+ offsetX = 40;
4528
+ } else {
4529
+ offsetY = 40;
4530
+ }
4531
+
4532
+ $this.removeClass('active');
4533
+ var time = 0;
4534
+ $this.find('ul .btn-floating').velocity("stop", true);
4535
+ $this.find('ul .btn-floating').velocity(
4536
+ { opacity: "0", scaleX: ".4", scaleY: ".4", translateY: offsetY + 'px', translateX: offsetX + 'px'},
4537
+ { duration: 80 }
4538
+ );
4539
+ };
4540
+
4541
+
4542
+ /**
4543
+ * Transform FAB into toolbar
4544
+ * @param {Object} object jQuery object
4545
+ */
4546
+ var FABtoToolbar = function(btn) {
4547
+ if (btn.attr('data-open') === "true") {
4548
+ return;
4549
+ }
4550
+
4551
+ var offsetX, offsetY, scaleFactor;
4552
+ var windowWidth = window.innerWidth;
4553
+ var windowHeight = window.innerHeight;
4554
+ var btnRect = btn[0].getBoundingClientRect();
4555
+ var anchor = btn.find('> a').first();
4556
+ var menu = btn.find('> ul').first();
4557
+ var backdrop = $('<div class="fab-backdrop"></div>');
4558
+ var fabColor = anchor.css('background-color');
4559
+ anchor.append(backdrop);
4560
+
4561
+ offsetX = btnRect.left - (windowWidth / 2) + (btnRect.width / 2);
4562
+ offsetY = windowHeight - btnRect.bottom;
4563
+ scaleFactor = windowWidth / backdrop.width();
4564
+ btn.attr('data-origin-bottom', btnRect.bottom);
4565
+ btn.attr('data-origin-left', btnRect.left);
4566
+ btn.attr('data-origin-width', btnRect.width);
4567
+
4568
+ // Set initial state
4569
+ btn.addClass('active');
4570
+ btn.attr('data-open', true);
4571
+ btn.css({
4572
+ 'text-align': 'center',
4573
+ width: '100%',
4574
+ bottom: 0,
4575
+ left: 0,
4576
+ transform: 'translateX(' + offsetX + 'px)',
4577
+ transition: 'none'
4578
+ });
4579
+ anchor.css({
4580
+ transform: 'translateY(' + -offsetY + 'px)',
4581
+ transition: 'none'
4582
+ });
4583
+ backdrop.css({
4584
+ 'background-color': fabColor
4585
+ });
4586
+
4587
+
4588
+ setTimeout(function() {
4589
+ btn.css({
4590
+ transform: '',
4591
+ transition: 'transform .2s cubic-bezier(0.550, 0.085, 0.680, 0.530), background-color 0s linear .2s'
4592
+ });
4593
+ anchor.css({
4594
+ overflow: 'visible',
4595
+ transform: '',
4596
+ transition: 'transform .2s'
4597
+ });
4598
+
4599
+ setTimeout(function() {
4600
+ btn.css({
4601
+ overflow: 'hidden',
4602
+ 'background-color': fabColor
4603
+ });
4604
+ backdrop.css({
4605
+ transform: 'scale(' + scaleFactor + ')',
4606
+ transition: 'transform .2s cubic-bezier(0.550, 0.055, 0.675, 0.190)'
4607
+ });
4608
+ menu.find('> li > a').css({
4609
+ opacity: 1
4610
+ });
4611
+
4612
+ // Scroll to close.
4613
+ $(window).on('scroll.fabToolbarClose', function() {
4614
+ toolbarToFAB(btn);
4615
+ $(window).off('scroll.fabToolbarClose');
4616
+ $(document).off('click.fabToolbarClose');
4617
+ });
4618
+
4619
+ $(document).on('click.fabToolbarClose', function(e) {
4620
+ if (!$(e.target).closest(menu).length) {
4621
+ toolbarToFAB(btn);
4622
+ $(window).off('scroll.fabToolbarClose');
4623
+ $(document).off('click.fabToolbarClose');
4624
+ }
4625
+ });
4626
+ }, 100);
4627
+ }, 0);
4628
+ };
4629
+
4630
+ /**
4631
+ * Transform toolbar back into FAB
4632
+ * @param {Object} object jQuery object
4633
+ */
4634
+ var toolbarToFAB = function(btn) {
4635
+ if (btn.attr('data-open') !== "true") {
4636
+ return;
4637
+ }
4638
+
4639
+ var offsetX, offsetY, scaleFactor;
4640
+ var windowWidth = window.innerWidth;
4641
+ var windowHeight = window.innerHeight;
4642
+ var btnWidth = btn.attr('data-origin-width');
4643
+ var btnBottom = btn.attr('data-origin-bottom');
4644
+ var btnLeft = btn.attr('data-origin-left');
4645
+ var anchor = btn.find('> .btn-floating').first();
4646
+ var menu = btn.find('> ul').first();
4647
+ var backdrop = btn.find('.fab-backdrop');
4648
+ var fabColor = anchor.css('background-color');
4649
+
4650
+ offsetX = btnLeft - (windowWidth / 2) + (btnWidth / 2);
4651
+ offsetY = windowHeight - btnBottom;
4652
+ scaleFactor = windowWidth / backdrop.width();
4653
+
4654
+
4655
+ // Hide backdrop
4656
+ btn.removeClass('active');
4657
+ btn.attr('data-open', false);
4658
+ btn.css({
4659
+ 'background-color': 'transparent',
4660
+ transition: 'none'
4661
+ });
4662
+ anchor.css({
4663
+ transition: 'none'
4664
+ });
4665
+ backdrop.css({
4666
+ transform: 'scale(0)',
4667
+ 'background-color': fabColor
4668
+ });
4669
+ menu.find('> li > a').css({
4670
+ opacity: ''
4671
+ });
4672
+
4673
+ setTimeout(function() {
4674
+ backdrop.remove();
4675
+
4676
+ // Set initial state.
4677
+ btn.css({
4678
+ 'text-align': '',
4679
+ width: '',
4680
+ bottom: '',
4681
+ left: '',
4682
+ overflow: '',
4683
+ 'background-color': '',
4684
+ transform: 'translate3d(' + -offsetX + 'px,0,0)'
4685
+ });
4686
+ anchor.css({
4687
+ overflow: '',
4688
+ transform: 'translate3d(0,' + offsetY + 'px,0)'
4689
+ });
4690
+
4691
+ setTimeout(function() {
4692
+ btn.css({
4693
+ transform: 'translate3d(0,0,0)',
4694
+ transition: 'transform .2s'
4695
+ });
4696
+ anchor.css({
4697
+ transform: 'translate3d(0,0,0)',
4698
+ transition: 'transform .2s cubic-bezier(0.550, 0.055, 0.675, 0.190)'
4699
+ });
4700
+ }, 20);
4701
+ }, 200);
4702
+ };
4703
+
4704
+
4705
+ }( jQuery ));
4706
+ ;(function ($) {
4707
+ // Image transition function
4708
+ Materialize.fadeInImage = function(selectorOrEl) {
4709
+ var element;
4710
+ if (typeof(selectorOrEl) === 'string') {
4711
+ element = $(selectorOrEl);
4712
+ } else if (typeof(selectorOrEl) === 'object') {
4713
+ element = selectorOrEl;
4714
+ } else {
4715
+ return;
4716
+ }
4717
+ element.css({opacity: 0});
4718
+ $(element).velocity({opacity: 1}, {
4719
+ duration: 650,
4720
+ queue: false,
4721
+ easing: 'easeOutSine'
4722
+ });
4723
+ $(element).velocity({opacity: 1}, {
4724
+ duration: 1300,
4725
+ queue: false,
4726
+ easing: 'swing',
4727
+ step: function(now, fx) {
4728
+ fx.start = 100;
4729
+ var grayscale_setting = now/100;
4730
+ var brightness_setting = 150 - (100 - now)/1.75;
4731
+
4732
+ if (brightness_setting < 100) {
4733
+ brightness_setting = 100;
4734
+ }
4735
+ if (now >= 0) {
4736
+ $(this).css({
4737
+ "-webkit-filter": "grayscale("+grayscale_setting+")" + "brightness("+brightness_setting+"%)",
4738
+ "filter": "grayscale("+grayscale_setting+")" + "brightness("+brightness_setting+"%)"
4739
+ });
4740
+ }
4741
+ }
4742
+ });
4743
+ };
4744
+
4745
+ // Horizontal staggered list
4746
+ Materialize.showStaggeredList = function(selectorOrEl) {
4747
+ var element;
4748
+ if (typeof(selectorOrEl) === 'string') {
4749
+ element = $(selectorOrEl);
4750
+ } else if (typeof(selectorOrEl) === 'object') {
4751
+ element = selectorOrEl;
4752
+ } else {
4753
+ return;
4754
+ }
4755
+ var time = 0;
4756
+ element.find('li').velocity(
4757
+ { translateX: "-100px"},
4758
+ { duration: 0 });
4759
+
4760
+ element.find('li').each(function() {
4761
+ $(this).velocity(
4762
+ { opacity: "1", translateX: "0"},
4763
+ { duration: 800, delay: time, easing: [60, 10] });
4764
+ time += 120;
4765
+ });
4766
+ };
4767
+
4768
+
4769
+ $(document).ready(function() {
4770
+ // Hardcoded .staggered-list scrollFire
4771
+ // var staggeredListOptions = [];
4772
+ // $('ul.staggered-list').each(function (i) {
4773
+
4774
+ // var label = 'scrollFire-' + i;
4775
+ // $(this).addClass(label);
4776
+ // staggeredListOptions.push(
4777
+ // {selector: 'ul.staggered-list.' + label,
4778
+ // offset: 200,
4779
+ // callback: 'showStaggeredList("ul.staggered-list.' + label + '")'});
4780
+ // });
4781
+ // scrollFire(staggeredListOptions);
4782
+
4783
+ // HammerJS, Swipe navigation
4784
+
4785
+ // Touch Event
4786
+ var swipeLeft = false;
4787
+ var swipeRight = false;
4788
+
4789
+
4790
+ // Dismissible Collections
4791
+ $('.dismissable').each(function() {
4792
+ $(this).hammer({
4793
+ prevent_default: false
4794
+ }).bind('pan', function(e) {
4795
+ if (e.gesture.pointerType === "touch") {
4796
+ var $this = $(this);
4797
+ var direction = e.gesture.direction;
4798
+ var x = e.gesture.deltaX;
4799
+ var velocityX = e.gesture.velocityX;
4800
+
4801
+ $this.velocity({ translateX: x
4802
+ }, {duration: 50, queue: false, easing: 'easeOutQuad'});
4803
+
4804
+ // Swipe Left
4805
+ if (direction === 4 && (x > ($this.innerWidth() / 2) || velocityX < -0.75)) {
4806
+ swipeLeft = true;
4807
+ }
4808
+
4809
+ // Swipe Right
4810
+ if (direction === 2 && (x < (-1 * $this.innerWidth() / 2) || velocityX > 0.75)) {
4811
+ swipeRight = true;
4812
+ }
4813
+ }
4814
+ }).bind('panend', function(e) {
4815
+ // Reset if collection is moved back into original position
4816
+ if (Math.abs(e.gesture.deltaX) < ($(this).innerWidth() / 2)) {
4817
+ swipeRight = false;
4818
+ swipeLeft = false;
4819
+ }
4820
+
4821
+ if (e.gesture.pointerType === "touch") {
4822
+ var $this = $(this);
4823
+ if (swipeLeft || swipeRight) {
4824
+ var fullWidth;
4825
+ if (swipeLeft) { fullWidth = $this.innerWidth(); }
4826
+ else { fullWidth = -1 * $this.innerWidth(); }
4827
+
4828
+ $this.velocity({ translateX: fullWidth,
4829
+ }, {duration: 100, queue: false, easing: 'easeOutQuad', complete:
4830
+ function() {
4831
+ $this.css('border', 'none');
4832
+ $this.velocity({ height: 0, padding: 0,
4833
+ }, {duration: 200, queue: false, easing: 'easeOutQuad', complete:
4834
+ function() { $this.remove(); }
4835
+ });
4836
+ }
4837
+ });
4838
+ }
4839
+ else {
4840
+ $this.velocity({ translateX: 0,
4841
+ }, {duration: 100, queue: false, easing: 'easeOutQuad'});
4842
+ }
4843
+ swipeLeft = false;
4844
+ swipeRight = false;
4845
+ }
4846
+ });
4847
+
4848
+ });
4849
+
4850
+
4851
+ // time = 0
4852
+ // // Vertical Staggered list
4853
+ // $('ul.staggered-list.vertical li').velocity(
4854
+ // { translateY: "100px"},
4855
+ // { duration: 0 });
4856
+
4857
+ // $('ul.staggered-list.vertical li').each(function() {
4858
+ // $(this).velocity(
4859
+ // { opacity: "1", translateY: "0"},
4860
+ // { duration: 800, delay: time, easing: [60, 25] });
4861
+ // time += 120;
4862
+ // });
4863
+
4864
+ // // Fade in and Scale
4865
+ // $('.fade-in.scale').velocity(
4866
+ // { scaleX: .4, scaleY: .4, translateX: -600},
4867
+ // { duration: 0});
4868
+ // $('.fade-in').each(function() {
4869
+ // $(this).velocity(
4870
+ // { opacity: "1", scaleX: 1, scaleY: 1, translateX: 0},
4871
+ // { duration: 800, easing: [60, 10] });
4872
+ // });
4873
+ });
4874
+ }( jQuery ));
4875
+ ;(function($) {
4876
+
4877
+ var scrollFireEventsHandled = false;
4878
+
4879
+ // Input: Array of JSON objects {selector, offset, callback}
4880
+ Materialize.scrollFire = function(options) {
4881
+ var onScroll = function() {
4882
+ var windowScroll = window.pageYOffset + window.innerHeight;
4883
+
4884
+ for (var i = 0 ; i < options.length; i++) {
4885
+ // Get options from each line
4886
+ var value = options[i];
4887
+ var selector = value.selector,
4888
+ offset = value.offset,
4889
+ callback = value.callback;
4890
+
4891
+ var currentElement = document.querySelector(selector);
4892
+ if ( currentElement !== null) {
4893
+ var elementOffset = currentElement.getBoundingClientRect().top + window.pageYOffset;
4894
+
4895
+ if (windowScroll > (elementOffset + offset)) {
4896
+ if (value.done !== true) {
4897
+ if (typeof(callback) === 'function') {
4898
+ callback.call(this, currentElement);
4899
+ } else if (typeof(callback) === 'string') {
4900
+ var callbackFunc = new Function(callback);
4901
+ callbackFunc(currentElement);
4902
+ }
4903
+ value.done = true;
4904
+ }
4905
+ }
4906
+ }
4907
+ }
4908
+ };
4909
+
4910
+
4911
+ var throttledScroll = Materialize.throttle(function() {
4912
+ onScroll();
4913
+ }, options.throttle || 100);
4914
+
4915
+ if (!scrollFireEventsHandled) {
4916
+ window.addEventListener("scroll", throttledScroll);
4917
+ window.addEventListener("resize", throttledScroll);
4918
+ scrollFireEventsHandled = true;
4919
+ }
4920
+
4921
+ // perform a scan once, after current execution context, and after dom is ready
4922
+ setTimeout(throttledScroll, 0);
4923
+ };
4924
+
4925
+ })(jQuery);
4926
+ ;/*!
4927
+ * pickadate.js v3.5.0, 2014/04/13
4928
+ * By Amsul, http://amsul.ca
4929
+ * Hosted on http://amsul.github.io/pickadate.js
4930
+ * Licensed under MIT
4931
+ */
4932
+
4933
+ (function ( factory ) {
4934
+
4935
+ // AMD.
4936
+ if ( typeof define == 'function' && define.amd )
4937
+ define( 'picker', ['jquery'], factory )
4938
+
4939
+ // Node.js/browserify.
4940
+ else if ( typeof exports == 'object' )
4941
+ module.exports = factory( require('jquery') )
4942
+
4943
+ // Browser globals.
4944
+ else this.Picker = factory( jQuery )
4945
+
4946
+ }(function( $ ) {
4947
+
4948
+ var $window = $( window )
4949
+ var $document = $( document )
4950
+ var $html = $( document.documentElement )
4951
+
4952
+
4953
+ /**
4954
+ * The picker constructor that creates a blank picker.
4955
+ */
4956
+ function PickerConstructor( ELEMENT, NAME, COMPONENT, OPTIONS ) {
4957
+
4958
+ // If there’s no element, return the picker constructor.
4959
+ if ( !ELEMENT ) return PickerConstructor
4960
+
4961
+
4962
+ var
4963
+ IS_DEFAULT_THEME = false,
4964
+
4965
+
4966
+ // The state of the picker.
4967
+ STATE = {
4968
+ id: ELEMENT.id || 'P' + Math.abs( ~~(Math.random() * new Date()) )
4969
+ },
4970
+
4971
+
4972
+ // Merge the defaults and options passed.
4973
+ SETTINGS = COMPONENT ? $.extend( true, {}, COMPONENT.defaults, OPTIONS ) : OPTIONS || {},
4974
+
4975
+
4976
+ // Merge the default classes with the settings classes.
4977
+ CLASSES = $.extend( {}, PickerConstructor.klasses(), SETTINGS.klass ),
4978
+
4979
+
4980
+ // The element node wrapper into a jQuery object.
4981
+ $ELEMENT = $( ELEMENT ),
4982
+
4983
+
4984
+ // Pseudo picker constructor.
4985
+ PickerInstance = function() {
4986
+ return this.start()
4987
+ },
4988
+
4989
+
4990
+ // The picker prototype.
4991
+ P = PickerInstance.prototype = {
4992
+
4993
+ constructor: PickerInstance,
4994
+
4995
+ $node: $ELEMENT,
4996
+
4997
+
4998
+ /**
4999
+ * Initialize everything
5000
+ */
5001
+ start: function() {
5002
+
5003
+ // If it’s already started, do nothing.
5004
+ if ( STATE && STATE.start ) return P
5005
+
5006
+
5007
+ // Update the picker states.
5008
+ STATE.methods = {}
5009
+ STATE.start = true
5010
+ STATE.open = false
5011
+ STATE.type = ELEMENT.type
5012
+
5013
+
5014
+ // Confirm focus state, convert into text input to remove UA stylings,
5015
+ // and set as readonly to prevent keyboard popup.
5016
+ ELEMENT.autofocus = ELEMENT == getActiveElement()
5017
+ ELEMENT.readOnly = !SETTINGS.editable
5018
+ ELEMENT.id = ELEMENT.id || STATE.id
5019
+ if ( ELEMENT.type != 'text' ) {
5020
+ ELEMENT.type = 'text'
5021
+ }
5022
+
5023
+
5024
+ // Create a new picker component with the settings.
5025
+ P.component = new COMPONENT(P, SETTINGS)
5026
+
5027
+
5028
+ // Create the picker root with a holder and then prepare it.
5029
+ P.$root = $( PickerConstructor._.node('div', createWrappedComponent(), CLASSES.picker, 'id="' + ELEMENT.id + '_root" tabindex="0"') )
5030
+ prepareElementRoot()
5031
+
5032
+
5033
+ // If there’s a format for the hidden input element, create the element.
5034
+ if ( SETTINGS.formatSubmit ) {
5035
+ prepareElementHidden()
5036
+ }
5037
+
5038
+
5039
+ // Prepare the input element.
5040
+ prepareElement()
5041
+
5042
+
5043
+ // Insert the root as specified in the settings.
5044
+ if ( SETTINGS.container ) $( SETTINGS.container ).append( P.$root )
5045
+ else $ELEMENT.after( P.$root )
5046
+
5047
+
5048
+ // Bind the default component and settings events.
5049
+ P.on({
5050
+ start: P.component.onStart,
5051
+ render: P.component.onRender,
5052
+ stop: P.component.onStop,
5053
+ open: P.component.onOpen,
5054
+ close: P.component.onClose,
5055
+ set: P.component.onSet
5056
+ }).on({
5057
+ start: SETTINGS.onStart,
5058
+ render: SETTINGS.onRender,
5059
+ stop: SETTINGS.onStop,
5060
+ open: SETTINGS.onOpen,
5061
+ close: SETTINGS.onClose,
5062
+ set: SETTINGS.onSet
5063
+ })
5064
+
5065
+
5066
+ // Once we’re all set, check the theme in use.
5067
+ IS_DEFAULT_THEME = isUsingDefaultTheme( P.$root.children()[ 0 ] )
5068
+
5069
+
5070
+ // If the element has autofocus, open the picker.
5071
+ if ( ELEMENT.autofocus ) {
5072
+ P.open()
5073
+ }
5074
+
5075
+
5076
+ // Trigger queued the “start” and “render” events.
5077
+ return P.trigger( 'start' ).trigger( 'render' )
5078
+ }, //start
5079
+
5080
+
5081
+ /**
5082
+ * Render a new picker
5083
+ */
5084
+ render: function( entireComponent ) {
5085
+
5086
+ // Insert a new component holder in the root or box.
5087
+ if ( entireComponent ) P.$root.html( createWrappedComponent() )
5088
+ else P.$root.find( '.' + CLASSES.box ).html( P.component.nodes( STATE.open ) )
5089
+
5090
+ // Trigger the queued “render” events.
5091
+ return P.trigger( 'render' )
5092
+ }, //render
5093
+
5094
+
5095
+ /**
5096
+ * Destroy everything
5097
+ */
5098
+ stop: function() {
5099
+
5100
+ // If it’s already stopped, do nothing.
5101
+ if ( !STATE.start ) return P
5102
+
5103
+ // Then close the picker.
5104
+ P.close()
5105
+
5106
+ // Remove the hidden field.
5107
+ if ( P._hidden ) {
5108
+ P._hidden.parentNode.removeChild( P._hidden )
5109
+ }
5110
+
5111
+ // Remove the root.
5112
+ P.$root.remove()
5113
+
5114
+ // Remove the input class, remove the stored data, and unbind
5115
+ // the events (after a tick for IE - see `P.close`).
5116
+ $ELEMENT.removeClass( CLASSES.input ).removeData( NAME )
5117
+ setTimeout( function() {
5118
+ $ELEMENT.off( '.' + STATE.id )
5119
+ }, 0)
5120
+
5121
+ // Restore the element state
5122
+ ELEMENT.type = STATE.type
5123
+ ELEMENT.readOnly = false
5124
+
5125
+ // Trigger the queued “stop” events.
5126
+ P.trigger( 'stop' )
5127
+
5128
+ // Reset the picker states.
5129
+ STATE.methods = {}
5130
+ STATE.start = false
5131
+
5132
+ return P
5133
+ }, //stop
5134
+
5135
+
5136
+ /**
5137
+ * Open up the picker
5138
+ */
5139
+ open: function( dontGiveFocus ) {
5140
+
5141
+ // If it’s already open, do nothing.
5142
+ if ( STATE.open ) return P
5143
+
5144
+ // Add the “active” class.
5145
+ $ELEMENT.addClass( CLASSES.active )
5146
+ aria( ELEMENT, 'expanded', true )
5147
+
5148
+ // * A Firefox bug, when `html` has `overflow:hidden`, results in
5149
+ // killing transitions :(. So add the “opened” state on the next tick.
5150
+ // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289
5151
+ setTimeout( function() {
5152
+
5153
+ // Add the “opened” class to the picker root.
5154
+ P.$root.addClass( CLASSES.opened )
5155
+ aria( P.$root[0], 'hidden', false )
5156
+
5157
+ }, 0 )
5158
+
5159
+ // If we have to give focus, bind the element and doc events.
5160
+ if ( dontGiveFocus !== false ) {
5161
+
5162
+ // Set it as open.
5163
+ STATE.open = true
5164
+
5165
+ // Prevent the page from scrolling.
5166
+ if ( IS_DEFAULT_THEME ) {
5167
+ $html.
5168
+ css( 'overflow', 'hidden' ).
5169
+ css( 'padding-right', '+=' + getScrollbarWidth() )
5170
+ }
5171
+
5172
+ // Pass focus to the root element’s jQuery object.
5173
+ // * Workaround for iOS8 to bring the picker’s root into view.
5174
+ P.$root.eq(0).focus()
5175
+
5176
+ // Bind the document events.
5177
+ $document.on( 'click.' + STATE.id + ' focusin.' + STATE.id, function( event ) {
5178
+
5179
+ var target = event.target
5180
+
5181
+ // If the target of the event is not the element, close the picker picker.
5182
+ // * Don’t worry about clicks or focusins on the root because those don’t bubble up.
5183
+ // Also, for Firefox, a click on an `option` element bubbles up directly
5184
+ // to the doc. So make sure the target wasn't the doc.
5185
+ // * In Firefox stopPropagation() doesn’t prevent right-click events from bubbling,
5186
+ // which causes the picker to unexpectedly close when right-clicking it. So make
5187
+ // sure the event wasn’t a right-click.
5188
+ if ( target != ELEMENT && target != document && event.which != 3 ) {
5189
+
5190
+ // If the target was the holder that covers the screen,
5191
+ // keep the element focused to maintain tabindex.
5192
+ P.close( target === P.$root.children()[0] )
5193
+ }
5194
+
5195
+ }).on( 'keydown.' + STATE.id, function( event ) {
5196
+
5197
+ var
5198
+ // Get the keycode.
5199
+ keycode = event.keyCode,
5200
+
5201
+ // Translate that to a selection change.
5202
+ keycodeToMove = P.component.key[ keycode ],
5203
+
5204
+ // Grab the target.
5205
+ target = event.target
5206
+
5207
+
5208
+ // On escape, close the picker and give focus.
5209
+ if ( keycode == 27 ) {
5210
+ P.close( true )
5211
+ }
5212
+
5213
+
5214
+ // Check if there is a key movement or “enter” keypress on the element.
5215
+ else if ( target == P.$root[0] && ( keycodeToMove || keycode == 13 ) ) {
5216
+
5217
+ // Prevent the default action to stop page movement.
5218
+ event.preventDefault()
5219
+
5220
+ // Trigger the key movement action.
5221
+ if ( keycodeToMove ) {
5222
+ PickerConstructor._.trigger( P.component.key.go, P, [ PickerConstructor._.trigger( keycodeToMove ) ] )
5223
+ }
5224
+
5225
+ // On “enter”, if the highlighted item isn’t disabled, set the value and close.
5226
+ else if ( !P.$root.find( '.' + CLASSES.highlighted ).hasClass( CLASSES.disabled ) ) {
5227
+ P.set( 'select', P.component.item.highlight ).close()
5228
+ }
5229
+ }
5230
+
5231
+
5232
+ // If the target is within the root and “enter” is pressed,
5233
+ // prevent the default action and trigger a click on the target instead.
5234
+ else if ( $.contains( P.$root[0], target ) && keycode == 13 ) {
5235
+ event.preventDefault()
5236
+ target.click()
5237
+ }
5238
+ })
5239
+ }
5240
+
5241
+ // Trigger the queued “open” events.
5242
+ return P.trigger( 'open' )
5243
+ }, //open
5244
+
5245
+
5246
+ /**
5247
+ * Close the picker
5248
+ */
5249
+ close: function( giveFocus ) {
5250
+
5251
+ // If we need to give focus, do it before changing states.
5252
+ if ( giveFocus ) {
5253
+ // ....ah yes! It would’ve been incomplete without a crazy workaround for IE :|
5254
+ // The focus is triggered *after* the close has completed - causing it
5255
+ // to open again. So unbind and rebind the event at the next tick.
5256
+ P.$root.off( 'focus.toOpen' ).eq(0).focus()
5257
+ setTimeout( function() {
5258
+ P.$root.on( 'focus.toOpen', handleFocusToOpenEvent )
5259
+ }, 0 )
5260
+ }
5261
+
5262
+ // Remove the “active” class.
5263
+ $ELEMENT.removeClass( CLASSES.active )
5264
+ aria( ELEMENT, 'expanded', false )
5265
+
5266
+ // * A Firefox bug, when `html` has `overflow:hidden`, results in
5267
+ // killing transitions :(. So remove the “opened” state on the next tick.
5268
+ // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289
5269
+ setTimeout( function() {
5270
+
5271
+ // Remove the “opened” and “focused” class from the picker root.
5272
+ P.$root.removeClass( CLASSES.opened + ' ' + CLASSES.focused )
5273
+ aria( P.$root[0], 'hidden', true )
5274
+
5275
+ }, 0 )
5276
+
5277
+ // If it’s already closed, do nothing more.
5278
+ if ( !STATE.open ) return P
5279
+
5280
+ // Set it as closed.
5281
+ STATE.open = false
5282
+
5283
+ // Allow the page to scroll.
5284
+ if ( IS_DEFAULT_THEME ) {
5285
+ $html.
5286
+ css( 'overflow', '' ).
5287
+ css( 'padding-right', '-=' + getScrollbarWidth() )
5288
+ }
5289
+
5290
+ // Unbind the document events.
5291
+ $document.off( '.' + STATE.id )
5292
+
5293
+ // Trigger the queued “close” events.
5294
+ return P.trigger( 'close' )
5295
+ }, //close
5296
+
5297
+
5298
+ /**
5299
+ * Clear the values
5300
+ */
5301
+ clear: function( options ) {
5302
+ return P.set( 'clear', null, options )
5303
+ }, //clear
5304
+
5305
+
5306
+ /**
5307
+ * Set something
5308
+ */
5309
+ set: function( thing, value, options ) {
5310
+
5311
+ var thingItem, thingValue,
5312
+ thingIsObject = $.isPlainObject( thing ),
5313
+ thingObject = thingIsObject ? thing : {}
5314
+
5315
+ // Make sure we have usable options.
5316
+ options = thingIsObject && $.isPlainObject( value ) ? value : options || {}
5317
+
5318
+ if ( thing ) {
5319
+
5320
+ // If the thing isn’t an object, make it one.
5321
+ if ( !thingIsObject ) {
5322
+ thingObject[ thing ] = value
5323
+ }
5324
+
5325
+ // Go through the things of items to set.
5326
+ for ( thingItem in thingObject ) {
5327
+
5328
+ // Grab the value of the thing.
5329
+ thingValue = thingObject[ thingItem ]
5330
+
5331
+ // First, if the item exists and there’s a value, set it.
5332
+ if ( thingItem in P.component.item ) {
5333
+ if ( thingValue === undefined ) thingValue = null
5334
+ P.component.set( thingItem, thingValue, options )
5335
+ }
5336
+
5337
+ // Then, check to update the element value and broadcast a change.
5338
+ if ( thingItem == 'select' || thingItem == 'clear' ) {
5339
+ $ELEMENT.
5340
+ val( thingItem == 'clear' ? '' : P.get( thingItem, SETTINGS.format ) ).
5341
+ trigger( 'change' )
5342
+ }
5343
+ }
5344
+
5345
+ // Render a new picker.
5346
+ P.render()
5347
+ }
5348
+
5349
+ // When the method isn’t muted, trigger queued “set” events and pass the `thingObject`.
5350
+ return options.muted ? P : P.trigger( 'set', thingObject )
5351
+ }, //set
5352
+
5353
+
5354
+ /**
5355
+ * Get something
5356
+ */
5357
+ get: function( thing, format ) {
5358
+
5359
+ // Make sure there’s something to get.
5360
+ thing = thing || 'value'
5361
+
5362
+ // If a picker state exists, return that.
5363
+ if ( STATE[ thing ] != null ) {
5364
+ return STATE[ thing ]
5365
+ }
5366
+
5367
+ // Return the submission value, if that.
5368
+ if ( thing == 'valueSubmit' ) {
5369
+ if ( P._hidden ) {
5370
+ return P._hidden.value
5371
+ }
5372
+ thing = 'value'
5373
+ }
5374
+
5375
+ // Return the value, if that.
5376
+ if ( thing == 'value' ) {
5377
+ return ELEMENT.value
5378
+ }
5379
+
5380
+ // Check if a component item exists, return that.
5381
+ if ( thing in P.component.item ) {
5382
+ if ( typeof format == 'string' ) {
5383
+ var thingValue = P.component.get( thing )
5384
+ return thingValue ?
5385
+ PickerConstructor._.trigger(
5386
+ P.component.formats.toString,
5387
+ P.component,
5388
+ [ format, thingValue ]
5389
+ ) : ''
5390
+ }
5391
+ return P.component.get( thing )
5392
+ }
5393
+ }, //get
5394
+
5395
+
5396
+
5397
+ /**
5398
+ * Bind events on the things.
5399
+ */
5400
+ on: function( thing, method, internal ) {
5401
+
5402
+ var thingName, thingMethod,
5403
+ thingIsObject = $.isPlainObject( thing ),
5404
+ thingObject = thingIsObject ? thing : {}
5405
+
5406
+ if ( thing ) {
5407
+
5408
+ // If the thing isn’t an object, make it one.
5409
+ if ( !thingIsObject ) {
5410
+ thingObject[ thing ] = method
5411
+ }
5412
+
5413
+ // Go through the things to bind to.
5414
+ for ( thingName in thingObject ) {
5415
+
5416
+ // Grab the method of the thing.
5417
+ thingMethod = thingObject[ thingName ]
5418
+
5419
+ // If it was an internal binding, prefix it.
5420
+ if ( internal ) {
5421
+ thingName = '_' + thingName
5422
+ }
5423
+
5424
+ // Make sure the thing methods collection exists.
5425
+ STATE.methods[ thingName ] = STATE.methods[ thingName ] || []
5426
+
5427
+ // Add the method to the relative method collection.
5428
+ STATE.methods[ thingName ].push( thingMethod )
5429
+ }
5430
+ }
5431
+
5432
+ return P
5433
+ }, //on
5434
+
5435
+
5436
+
5437
+ /**
5438
+ * Unbind events on the things.
5439
+ */
5440
+ off: function() {
5441
+ var i, thingName,
5442
+ names = arguments;
5443
+ for ( i = 0, namesCount = names.length; i < namesCount; i += 1 ) {
5444
+ thingName = names[i]
5445
+ if ( thingName in STATE.methods ) {
5446
+ delete STATE.methods[thingName]
5447
+ }
5448
+ }
5449
+ return P
5450
+ },
5451
+
5452
+
5453
+ /**
5454
+ * Fire off method events.
5455
+ */
5456
+ trigger: function( name, data ) {
5457
+ var _trigger = function( name ) {
5458
+ var methodList = STATE.methods[ name ]
5459
+ if ( methodList ) {
5460
+ methodList.map( function( method ) {
5461
+ PickerConstructor._.trigger( method, P, [ data ] )
5462
+ })
5463
+ }
5464
+ }
5465
+ _trigger( '_' + name )
5466
+ _trigger( name )
5467
+ return P
5468
+ } //trigger
5469
+ } //PickerInstance.prototype
5470
+
5471
+
5472
+ /**
5473
+ * Wrap the picker holder components together.
5474
+ */
5475
+ function createWrappedComponent() {
5476
+
5477
+ // Create a picker wrapper holder
5478
+ return PickerConstructor._.node( 'div',
5479
+
5480
+ // Create a picker wrapper node
5481
+ PickerConstructor._.node( 'div',
5482
+
5483
+ // Create a picker frame
5484
+ PickerConstructor._.node( 'div',
5485
+
5486
+ // Create a picker box node
5487
+ PickerConstructor._.node( 'div',
5488
+
5489
+ // Create the components nodes.
5490
+ P.component.nodes( STATE.open ),
5491
+
5492
+ // The picker box class
5493
+ CLASSES.box
5494
+ ),
5495
+
5496
+ // Picker wrap class
5497
+ CLASSES.wrap
5498
+ ),
5499
+
5500
+ // Picker frame class
5501
+ CLASSES.frame
5502
+ ),
5503
+
5504
+ // Picker holder class
5505
+ CLASSES.holder
5506
+ ) //endreturn
5507
+ } //createWrappedComponent
5508
+
5509
+
5510
+
5511
+ /**
5512
+ * Prepare the input element with all bindings.
5513
+ */
5514
+ function prepareElement() {
5515
+
5516
+ $ELEMENT.
5517
+
5518
+ // Store the picker data by component name.
5519
+ data(NAME, P).
5520
+
5521
+ // Add the “input” class name.
5522
+ addClass(CLASSES.input).
5523
+
5524
+ // Remove the tabindex.
5525
+ attr('tabindex', -1).
5526
+
5527
+ // If there’s a `data-value`, update the value of the element.
5528
+ val( $ELEMENT.data('value') ?
5529
+ P.get('select', SETTINGS.format) :
5530
+ ELEMENT.value
5531
+ )
5532
+
5533
+
5534
+ // Only bind keydown events if the element isn’t editable.
5535
+ if ( !SETTINGS.editable ) {
5536
+
5537
+ $ELEMENT.
5538
+
5539
+ // On focus/click, focus onto the root to open it up.
5540
+ on( 'focus.' + STATE.id + ' click.' + STATE.id, function( event ) {
5541
+ event.preventDefault()
5542
+ P.$root.eq(0).focus()
5543
+ }).
5544
+
5545
+ // Handle keyboard event based on the picker being opened or not.
5546
+ on( 'keydown.' + STATE.id, handleKeydownEvent )
5547
+ }
5548
+
5549
+
5550
+ // Update the aria attributes.
5551
+ aria(ELEMENT, {
5552
+ haspopup: true,
5553
+ expanded: false,
5554
+ readonly: false,
5555
+ owns: ELEMENT.id + '_root'
5556
+ })
5557
+ }
5558
+
5559
+
5560
+ /**
5561
+ * Prepare the root picker element with all bindings.
5562
+ */
5563
+ function prepareElementRoot() {
5564
+
5565
+ P.$root.
5566
+
5567
+ on({
5568
+
5569
+ // For iOS8.
5570
+ keydown: handleKeydownEvent,
5571
+
5572
+ // When something within the root is focused, stop from bubbling
5573
+ // to the doc and remove the “focused” state from the root.
5574
+ focusin: function( event ) {
5575
+ P.$root.removeClass( CLASSES.focused )
5576
+ event.stopPropagation()
5577
+ },
5578
+
5579
+ // When something within the root holder is clicked, stop it
5580
+ // from bubbling to the doc.
5581
+ 'mousedown click': function( event ) {
5582
+
5583
+ var target = event.target
5584
+
5585
+ // Make sure the target isn’t the root holder so it can bubble up.
5586
+ if ( target != P.$root.children()[ 0 ] ) {
5587
+
5588
+ event.stopPropagation()
5589
+
5590
+ // * For mousedown events, cancel the default action in order to
5591
+ // prevent cases where focus is shifted onto external elements
5592
+ // when using things like jQuery mobile or MagnificPopup (ref: #249 & #120).
5593
+ // Also, for Firefox, don’t prevent action on the `option` element.
5594
+ if ( event.type == 'mousedown' && !$( target ).is( 'input, select, textarea, button, option' )) {
5595
+
5596
+ event.preventDefault()
5597
+
5598
+ // Re-focus onto the root so that users can click away
5599
+ // from elements focused within the picker.
5600
+ P.$root.eq(0).focus()
5601
+ }
5602
+ }
5603
+ }
5604
+ }).
5605
+
5606
+ // Add/remove the “target” class on focus and blur.
5607
+ on({
5608
+ focus: function() {
5609
+ $ELEMENT.addClass( CLASSES.target )
5610
+ },
5611
+ blur: function() {
5612
+ $ELEMENT.removeClass( CLASSES.target )
5613
+ }
5614
+ }).
5615
+
5616
+ // Open the picker and adjust the root “focused” state
5617
+ on( 'focus.toOpen', handleFocusToOpenEvent ).
5618
+
5619
+ // If there’s a click on an actionable element, carry out the actions.
5620
+ on( 'click', '[data-pick], [data-nav], [data-clear], [data-close]', function() {
5621
+
5622
+ var $target = $( this ),
5623
+ targetData = $target.data(),
5624
+ targetDisabled = $target.hasClass( CLASSES.navDisabled ) || $target.hasClass( CLASSES.disabled ),
5625
+
5626
+ // * For IE, non-focusable elements can be active elements as well
5627
+ // (http://stackoverflow.com/a/2684561).
5628
+ activeElement = getActiveElement()
5629
+ activeElement = activeElement && ( activeElement.type || activeElement.href )
5630
+
5631
+ // If it’s disabled or nothing inside is actively focused, re-focus the element.
5632
+ if ( targetDisabled || activeElement && !$.contains( P.$root[0], activeElement ) ) {
5633
+ P.$root.eq(0).focus()
5634
+ }
5635
+
5636
+ // If something is superficially changed, update the `highlight` based on the `nav`.
5637
+ if ( !targetDisabled && targetData.nav ) {
5638
+ P.set( 'highlight', P.component.item.highlight, { nav: targetData.nav } )
5639
+ }
5640
+
5641
+ // If something is picked, set `select` then close with focus.
5642
+ else if ( !targetDisabled && 'pick' in targetData ) {
5643
+ P.set( 'select', targetData.pick )
5644
+ }
5645
+
5646
+ // If a “clear” button is pressed, empty the values and close with focus.
5647
+ else if ( targetData.clear ) {
5648
+ P.clear().close( true )
5649
+ }
5650
+
5651
+ else if ( targetData.close ) {
5652
+ P.close( true )
5653
+ }
5654
+
5655
+ }) //P.$root
5656
+
5657
+ aria( P.$root[0], 'hidden', true )
5658
+ }
5659
+
5660
+
5661
+ /**
5662
+ * Prepare the hidden input element along with all bindings.
5663
+ */
5664
+ function prepareElementHidden() {
5665
+
5666
+ var name
5667
+
5668
+ if ( SETTINGS.hiddenName === true ) {
5669
+ name = ELEMENT.name
5670
+ ELEMENT.name = ''
5671
+ }
5672
+ else {
5673
+ name = [
5674
+ typeof SETTINGS.hiddenPrefix == 'string' ? SETTINGS.hiddenPrefix : '',
5675
+ typeof SETTINGS.hiddenSuffix == 'string' ? SETTINGS.hiddenSuffix : '_submit'
5676
+ ]
5677
+ name = name[0] + ELEMENT.name + name[1]
5678
+ }
5679
+
5680
+ P._hidden = $(
5681
+ '<input ' +
5682
+ 'type=hidden ' +
5683
+
5684
+ // Create the name using the original input’s with a prefix and suffix.
5685
+ 'name="' + name + '"' +
5686
+
5687
+ // If the element has a value, set the hidden value as well.
5688
+ (
5689
+ $ELEMENT.data('value') || ELEMENT.value ?
5690
+ ' value="' + P.get('select', SETTINGS.formatSubmit) + '"' :
5691
+ ''
5692
+ ) +
5693
+ '>'
5694
+ )[0]
5695
+
5696
+ $ELEMENT.
5697
+
5698
+ // If the value changes, update the hidden input with the correct format.
5699
+ on('change.' + STATE.id, function() {
5700
+ P._hidden.value = ELEMENT.value ?
5701
+ P.get('select', SETTINGS.formatSubmit) :
5702
+ ''
5703
+ })
5704
+
5705
+
5706
+ // Insert the hidden input as specified in the settings.
5707
+ if ( SETTINGS.container ) $( SETTINGS.container ).append( P._hidden )
5708
+ else $ELEMENT.after( P._hidden )
5709
+ }
5710
+
5711
+
5712
+ // For iOS8.
5713
+ function handleKeydownEvent( event ) {
5714
+
5715
+ var keycode = event.keyCode,
5716
+
5717
+ // Check if one of the delete keys was pressed.
5718
+ isKeycodeDelete = /^(8|46)$/.test(keycode)
5719
+
5720
+ // For some reason IE clears the input value on “escape”.
5721
+ if ( keycode == 27 ) {
5722
+ P.close()
5723
+ return false
5724
+ }
5725
+
5726
+ // Check if `space` or `delete` was pressed or the picker is closed with a key movement.
5727
+ if ( keycode == 32 || isKeycodeDelete || !STATE.open && P.component.key[keycode] ) {
5728
+
5729
+ // Prevent it from moving the page and bubbling to doc.
5730
+ event.preventDefault()
5731
+ event.stopPropagation()
5732
+
5733
+ // If `delete` was pressed, clear the values and close the picker.
5734
+ // Otherwise open the picker.
5735
+ if ( isKeycodeDelete ) { P.clear().close() }
5736
+ else { P.open() }
5737
+ }
5738
+ }
5739
+
5740
+
5741
+ // Separated for IE
5742
+ function handleFocusToOpenEvent( event ) {
5743
+
5744
+ // Stop the event from propagating to the doc.
5745
+ event.stopPropagation()
5746
+
5747
+ // If it’s a focus event, add the “focused” class to the root.
5748
+ if ( event.type == 'focus' ) {
5749
+ P.$root.addClass( CLASSES.focused )
5750
+ }
5751
+
5752
+ // And then finally open the picker.
5753
+ P.open()
5754
+ }
5755
+
5756
+
5757
+ // Return a new picker instance.
5758
+ return new PickerInstance()
5759
+ } //PickerConstructor
5760
+
5761
+
5762
+
5763
+ /**
5764
+ * The default classes and prefix to use for the HTML classes.
5765
+ */
5766
+ PickerConstructor.klasses = function( prefix ) {
5767
+ prefix = prefix || 'picker'
5768
+ return {
5769
+
5770
+ picker: prefix,
5771
+ opened: prefix + '--opened',
5772
+ focused: prefix + '--focused',
5773
+
5774
+ input: prefix + '__input',
5775
+ active: prefix + '__input--active',
5776
+ target: prefix + '__input--target',
5777
+
5778
+ holder: prefix + '__holder',
5779
+
5780
+ frame: prefix + '__frame',
5781
+ wrap: prefix + '__wrap',
5782
+
5783
+ box: prefix + '__box'
5784
+ }
5785
+ } //PickerConstructor.klasses
5786
+
5787
+
5788
+
5789
+ /**
5790
+ * Check if the default theme is being used.
5791
+ */
5792
+ function isUsingDefaultTheme( element ) {
5793
+
5794
+ var theme,
5795
+ prop = 'position'
5796
+
5797
+ // For IE.
5798
+ if ( element.currentStyle ) {
5799
+ theme = element.currentStyle[prop]
5800
+ }
5801
+
5802
+ // For normal browsers.
5803
+ else if ( window.getComputedStyle ) {
5804
+ theme = getComputedStyle( element )[prop]
5805
+ }
5806
+
5807
+ return theme == 'fixed'
5808
+ }
5809
+
5810
+
5811
+
5812
+ /**
5813
+ * Get the width of the browser’s scrollbar.
5814
+ * Taken from: https://github.com/VodkaBears/Remodal/blob/master/src/jquery.remodal.js
5815
+ */
5816
+ function getScrollbarWidth() {
5817
+
5818
+ if ( $html.height() <= $window.height() ) {
5819
+ return 0
5820
+ }
5821
+
5822
+ var $outer = $( '<div style="visibility:hidden;width:100px" />' ).
5823
+ appendTo( 'body' )
5824
+
5825
+ // Get the width without scrollbars.
5826
+ var widthWithoutScroll = $outer[0].offsetWidth
5827
+
5828
+ // Force adding scrollbars.
5829
+ $outer.css( 'overflow', 'scroll' )
5830
+
5831
+ // Add the inner div.
5832
+ var $inner = $( '<div style="width:100%" />' ).appendTo( $outer )
5833
+
5834
+ // Get the width with scrollbars.
5835
+ var widthWithScroll = $inner[0].offsetWidth
5836
+
5837
+ // Remove the divs.
5838
+ $outer.remove()
5839
+
5840
+ // Return the difference between the widths.
5841
+ return widthWithoutScroll - widthWithScroll
5842
+ }
5843
+
5844
+
5845
+
5846
+ /**
5847
+ * PickerConstructor helper methods.
5848
+ */
5849
+ PickerConstructor._ = {
5850
+
5851
+ /**
5852
+ * Create a group of nodes. Expects:
5853
+ * `
5854
+ {
5855
+ min: {Integer},
5856
+ max: {Integer},
5857
+ i: {Integer},
5858
+ node: {String},
5859
+ item: {Function}
5860
+ }
5861
+ * `
5862
+ */
5863
+ group: function( groupObject ) {
5864
+
5865
+ var
5866
+ // Scope for the looped object
5867
+ loopObjectScope,
5868
+
5869
+ // Create the nodes list
5870
+ nodesList = '',
5871
+
5872
+ // The counter starts from the `min`
5873
+ counter = PickerConstructor._.trigger( groupObject.min, groupObject )
5874
+
5875
+
5876
+ // Loop from the `min` to `max`, incrementing by `i`
5877
+ for ( ; counter <= PickerConstructor._.trigger( groupObject.max, groupObject, [ counter ] ); counter += groupObject.i ) {
5878
+
5879
+ // Trigger the `item` function within scope of the object
5880
+ loopObjectScope = PickerConstructor._.trigger( groupObject.item, groupObject, [ counter ] )
5881
+
5882
+ // Splice the subgroup and create nodes out of the sub nodes
5883
+ nodesList += PickerConstructor._.node(
5884
+ groupObject.node,
5885
+ loopObjectScope[ 0 ], // the node
5886
+ loopObjectScope[ 1 ], // the classes
5887
+ loopObjectScope[ 2 ] // the attributes
5888
+ )
5889
+ }
5890
+
5891
+ // Return the list of nodes
5892
+ return nodesList
5893
+ }, //group
5894
+
5895
+
5896
+ /**
5897
+ * Create a dom node string
5898
+ */
5899
+ node: function( wrapper, item, klass, attribute ) {
5900
+
5901
+ // If the item is false-y, just return an empty string
5902
+ if ( !item ) return ''
5903
+
5904
+ // If the item is an array, do a join
5905
+ item = $.isArray( item ) ? item.join( '' ) : item
5906
+
5907
+ // Check for the class
5908
+ klass = klass ? ' class="' + klass + '"' : ''
5909
+
5910
+ // Check for any attributes
5911
+ attribute = attribute ? ' ' + attribute : ''
5912
+
5913
+ // Return the wrapped item
5914
+ return '<' + wrapper + klass + attribute + '>' + item + '</' + wrapper + '>'
5915
+ }, //node
5916
+
5917
+
5918
+ /**
5919
+ * Lead numbers below 10 with a zero.
5920
+ */
5921
+ lead: function( number ) {
5922
+ return ( number < 10 ? '0': '' ) + number
5923
+ },
5924
+
5925
+
5926
+ /**
5927
+ * Trigger a function otherwise return the value.
5928
+ */
5929
+ trigger: function( callback, scope, args ) {
5930
+ return typeof callback == 'function' ? callback.apply( scope, args || [] ) : callback
5931
+ },
5932
+
5933
+
5934
+ /**
5935
+ * If the second character is a digit, length is 2 otherwise 1.
5936
+ */
5937
+ digits: function( string ) {
5938
+ return ( /\d/ ).test( string[ 1 ] ) ? 2 : 1
5939
+ },
5940
+
5941
+
5942
+ /**
5943
+ * Tell if something is a date object.
5944
+ */
5945
+ isDate: function( value ) {
5946
+ return {}.toString.call( value ).indexOf( 'Date' ) > -1 && this.isInteger( value.getDate() )
5947
+ },
5948
+
5949
+
5950
+ /**
5951
+ * Tell if something is an integer.
5952
+ */
5953
+ isInteger: function( value ) {
5954
+ return {}.toString.call( value ).indexOf( 'Number' ) > -1 && value % 1 === 0
5955
+ },
5956
+
5957
+
5958
+ /**
5959
+ * Create ARIA attribute strings.
5960
+ */
5961
+ ariaAttr: ariaAttr
5962
+ } //PickerConstructor._
5963
+
5964
+
5965
+
5966
+ /**
5967
+ * Extend the picker with a component and defaults.
5968
+ */
5969
+ PickerConstructor.extend = function( name, Component ) {
5970
+
5971
+ // Extend jQuery.
5972
+ $.fn[ name ] = function( options, action ) {
5973
+
5974
+ // Grab the component data.
5975
+ var componentData = this.data( name )
5976
+
5977
+ // If the picker is requested, return the data object.
5978
+ if ( options == 'picker' ) {
5979
+ return componentData
5980
+ }
5981
+
5982
+ // If the component data exists and `options` is a string, carry out the action.
5983
+ if ( componentData && typeof options == 'string' ) {
5984
+ return PickerConstructor._.trigger( componentData[ options ], componentData, [ action ] )
5985
+ }
5986
+
5987
+ // Otherwise go through each matched element and if the component
5988
+ // doesn’t exist, create a new picker using `this` element
5989
+ // and merging the defaults and options with a deep copy.
5990
+ return this.each( function() {
5991
+ var $this = $( this )
5992
+ if ( !$this.data( name ) ) {
5993
+ new PickerConstructor( this, name, Component, options )
5994
+ }
5995
+ })
5996
+ }
5997
+
5998
+ // Set the defaults.
5999
+ $.fn[ name ].defaults = Component.defaults
6000
+ } //PickerConstructor.extend
6001
+
6002
+
6003
+
6004
+ function aria(element, attribute, value) {
6005
+ if ( $.isPlainObject(attribute) ) {
6006
+ for ( var key in attribute ) {
6007
+ ariaSet(element, key, attribute[key])
6008
+ }
6009
+ }
6010
+ else {
6011
+ ariaSet(element, attribute, value)
6012
+ }
6013
+ }
6014
+ function ariaSet(element, attribute, value) {
6015
+ element.setAttribute(
6016
+ (attribute == 'role' ? '' : 'aria-') + attribute,
6017
+ value
6018
+ )
6019
+ }
6020
+ function ariaAttr(attribute, data) {
6021
+ if ( !$.isPlainObject(attribute) ) {
6022
+ attribute = { attribute: data }
6023
+ }
6024
+ data = ''
6025
+ for ( var key in attribute ) {
6026
+ var attr = (key == 'role' ? '' : 'aria-') + key,
6027
+ attrVal = attribute[key]
6028
+ data += attrVal == null ? '' : attr + '="' + attribute[key] + '"'
6029
+ }
6030
+ return data
6031
+ }
6032
+
6033
+ // IE8 bug throws an error for activeElements within iframes.
6034
+ function getActiveElement() {
6035
+ try {
6036
+ return document.activeElement
6037
+ } catch ( err ) { }
6038
+ }
6039
+
6040
+
6041
+
6042
+ // Expose the picker constructor.
6043
+ return PickerConstructor
6044
+
6045
+
6046
+ }));
6047
+
6048
+
6049
+ ;/*!
6050
+ * Date picker for pickadate.js v3.5.0
6051
+ * http://amsul.github.io/pickadate.js/date.htm
6052
+ */
6053
+
6054
+ (function ( factory ) {
6055
+
6056
+ // AMD.
6057
+ if ( typeof define == 'function' && define.amd )
6058
+ define( ['picker', 'jquery'], factory )
6059
+
6060
+ // Node.js/browserify.
6061
+ else if ( typeof exports == 'object' )
6062
+ module.exports = factory( require('./picker.js'), require('jquery') )
6063
+
6064
+ // Browser globals.
6065
+ else factory( Picker, jQuery )
6066
+
6067
+ }(function( Picker, $ ) {
6068
+
6069
+
6070
+ /**
6071
+ * Globals and constants
6072
+ */
6073
+ var DAYS_IN_WEEK = 7,
6074
+ WEEKS_IN_CALENDAR = 6,
6075
+ _ = Picker._
6076
+
6077
+
6078
+
6079
+ /**
6080
+ * The date picker constructor
6081
+ */
6082
+ function DatePicker( picker, settings ) {
6083
+
6084
+ var calendar = this,
6085
+ element = picker.$node[ 0 ],
6086
+ elementValue = element.value,
6087
+ elementDataValue = picker.$node.data( 'value' ),
6088
+ valueString = elementDataValue || elementValue,
6089
+ formatString = elementDataValue ? settings.formatSubmit : settings.format,
6090
+ isRTL = function() {
6091
+
6092
+ return element.currentStyle ?
6093
+
6094
+ // For IE.
6095
+ element.currentStyle.direction == 'rtl' :
6096
+
6097
+ // For normal browsers.
6098
+ getComputedStyle( picker.$root[0] ).direction == 'rtl'
6099
+ }
6100
+
6101
+ calendar.settings = settings
6102
+ calendar.$node = picker.$node
6103
+
6104
+ // The queue of methods that will be used to build item objects.
6105
+ calendar.queue = {
6106
+ min: 'measure create',
6107
+ max: 'measure create',
6108
+ now: 'now create',
6109
+ select: 'parse create validate',
6110
+ highlight: 'parse navigate create validate',
6111
+ view: 'parse create validate viewset',
6112
+ disable: 'deactivate',
6113
+ enable: 'activate'
6114
+ }
6115
+
6116
+ // The component's item object.
6117
+ calendar.item = {}
6118
+
6119
+ calendar.item.clear = null
6120
+ calendar.item.disable = ( settings.disable || [] ).slice( 0 )
6121
+ calendar.item.enable = -(function( collectionDisabled ) {
6122
+ return collectionDisabled[ 0 ] === true ? collectionDisabled.shift() : -1
6123
+ })( calendar.item.disable )
6124
+
6125
+ calendar.
6126
+ set( 'min', settings.min ).
6127
+ set( 'max', settings.max ).
6128
+ set( 'now' )
6129
+
6130
+ // When there’s a value, set the `select`, which in turn
6131
+ // also sets the `highlight` and `view`.
6132
+ if ( valueString ) {
6133
+ calendar.set( 'select', valueString, { format: formatString })
6134
+ }
6135
+
6136
+ // If there’s no value, default to highlighting “today”.
6137
+ else {
6138
+ calendar.
6139
+ set( 'select', null ).
6140
+ set( 'highlight', calendar.item.now )
6141
+ }
6142
+
6143
+
6144
+ // The keycode to movement mapping.
6145
+ calendar.key = {
6146
+ 40: 7, // Down
6147
+ 38: -7, // Up
6148
+ 39: function() { return isRTL() ? -1 : 1 }, // Right
6149
+ 37: function() { return isRTL() ? 1 : -1 }, // Left
6150
+ go: function( timeChange ) {
6151
+ var highlightedObject = calendar.item.highlight,
6152
+ targetDate = new Date( highlightedObject.year, highlightedObject.month, highlightedObject.date + timeChange )
6153
+ calendar.set(
6154
+ 'highlight',
6155
+ targetDate,
6156
+ { interval: timeChange }
6157
+ )
6158
+ this.render()
6159
+ }
6160
+ }
6161
+
6162
+
6163
+ // Bind some picker events.
6164
+ picker.
6165
+ on( 'render', function() {
6166
+ picker.$root.find( '.' + settings.klass.selectMonth ).on( 'change', function() {
6167
+ var value = this.value
6168
+ if ( value ) {
6169
+ picker.set( 'highlight', [ picker.get( 'view' ).year, value, picker.get( 'highlight' ).date ] )
6170
+ picker.$root.find( '.' + settings.klass.selectMonth ).trigger( 'focus' )
6171
+ }
6172
+ })
6173
+ picker.$root.find( '.' + settings.klass.selectYear ).on( 'change', function() {
6174
+ var value = this.value
6175
+ if ( value ) {
6176
+ picker.set( 'highlight', [ value, picker.get( 'view' ).month, picker.get( 'highlight' ).date ] )
6177
+ picker.$root.find( '.' + settings.klass.selectYear ).trigger( 'focus' )
6178
+ }
6179
+ })
6180
+ }, 1 ).
6181
+ on( 'open', function() {
6182
+ var includeToday = ''
6183
+ if ( calendar.disabled( calendar.get('now') ) ) {
6184
+ includeToday = ':not(.' + settings.klass.buttonToday + ')'
6185
+ }
6186
+ picker.$root.find( 'button' + includeToday + ', select' ).attr( 'disabled', false )
6187
+ }, 1 ).
6188
+ on( 'close', function() {
6189
+ picker.$root.find( 'button, select' ).attr( 'disabled', true )
6190
+ }, 1 )
6191
+
6192
+ } //DatePicker
6193
+
6194
+
6195
+ /**
6196
+ * Set a datepicker item object.
6197
+ */
6198
+ DatePicker.prototype.set = function( type, value, options ) {
6199
+
6200
+ var calendar = this,
6201
+ calendarItem = calendar.item
6202
+
6203
+ // If the value is `null` just set it immediately.
6204
+ if ( value === null ) {
6205
+ if ( type == 'clear' ) type = 'select'
6206
+ calendarItem[ type ] = value
6207
+ return calendar
6208
+ }
6209
+
6210
+ // Otherwise go through the queue of methods, and invoke the functions.
6211
+ // Update this as the time unit, and set the final value as this item.
6212
+ // * In the case of `enable`, keep the queue but set `disable` instead.
6213
+ // And in the case of `flip`, keep the queue but set `enable` instead.
6214
+ calendarItem[ ( type == 'enable' ? 'disable' : type == 'flip' ? 'enable' : type ) ] = calendar.queue[ type ].split( ' ' ).map( function( method ) {
6215
+ value = calendar[ method ]( type, value, options )
6216
+ return value
6217
+ }).pop()
6218
+
6219
+ // Check if we need to cascade through more updates.
6220
+ if ( type == 'select' ) {
6221
+ calendar.set( 'highlight', calendarItem.select, options )
6222
+ }
6223
+ else if ( type == 'highlight' ) {
6224
+ calendar.set( 'view', calendarItem.highlight, options )
6225
+ }
6226
+ else if ( type.match( /^(flip|min|max|disable|enable)$/ ) ) {
6227
+ if ( calendarItem.select && calendar.disabled( calendarItem.select ) ) {
6228
+ calendar.set( 'select', calendarItem.select, options )
6229
+ }
6230
+ if ( calendarItem.highlight && calendar.disabled( calendarItem.highlight ) ) {
6231
+ calendar.set( 'highlight', calendarItem.highlight, options )
6232
+ }
6233
+ }
6234
+
6235
+ return calendar
6236
+ } //DatePicker.prototype.set
6237
+
6238
+
6239
+ /**
6240
+ * Get a datepicker item object.
6241
+ */
6242
+ DatePicker.prototype.get = function( type ) {
6243
+ return this.item[ type ]
6244
+ } //DatePicker.prototype.get
6245
+
6246
+
6247
+ /**
6248
+ * Create a picker date object.
6249
+ */
6250
+ DatePicker.prototype.create = function( type, value, options ) {
6251
+
6252
+ var isInfiniteValue,
6253
+ calendar = this
6254
+
6255
+ // If there’s no value, use the type as the value.
6256
+ value = value === undefined ? type : value
6257
+
6258
+
6259
+ // If it’s infinity, update the value.
6260
+ if ( value == -Infinity || value == Infinity ) {
6261
+ isInfiniteValue = value
6262
+ }
6263
+
6264
+ // If it’s an object, use the native date object.
6265
+ else if ( $.isPlainObject( value ) && _.isInteger( value.pick ) ) {
6266
+ value = value.obj
6267
+ }
6268
+
6269
+ // If it’s an array, convert it into a date and make sure
6270
+ // that it’s a valid date – otherwise default to today.
6271
+ else if ( $.isArray( value ) ) {
6272
+ value = new Date( value[ 0 ], value[ 1 ], value[ 2 ] )
6273
+ value = _.isDate( value ) ? value : calendar.create().obj
6274
+ }
6275
+
6276
+ // If it’s a number or date object, make a normalized date.
6277
+ else if ( _.isInteger( value ) || _.isDate( value ) ) {
6278
+ value = calendar.normalize( new Date( value ), options )
6279
+ }
6280
+
6281
+ // If it’s a literal true or any other case, set it to now.
6282
+ else /*if ( value === true )*/ {
6283
+ value = calendar.now( type, value, options )
6284
+ }
6285
+
6286
+ // Return the compiled object.
6287
+ return {
6288
+ year: isInfiniteValue || value.getFullYear(),
6289
+ month: isInfiniteValue || value.getMonth(),
6290
+ date: isInfiniteValue || value.getDate(),
6291
+ day: isInfiniteValue || value.getDay(),
6292
+ obj: isInfiniteValue || value,
6293
+ pick: isInfiniteValue || value.getTime()
6294
+ }
6295
+ } //DatePicker.prototype.create
6296
+
6297
+
6298
+ /**
6299
+ * Create a range limit object using an array, date object,
6300
+ * literal “true”, or integer relative to another time.
6301
+ */
6302
+ DatePicker.prototype.createRange = function( from, to ) {
6303
+
6304
+ var calendar = this,
6305
+ createDate = function( date ) {
6306
+ if ( date === true || $.isArray( date ) || _.isDate( date ) ) {
6307
+ return calendar.create( date )
6308
+ }
6309
+ return date
6310
+ }
6311
+
6312
+ // Create objects if possible.
6313
+ if ( !_.isInteger( from ) ) {
6314
+ from = createDate( from )
6315
+ }
6316
+ if ( !_.isInteger( to ) ) {
6317
+ to = createDate( to )
6318
+ }
6319
+
6320
+ // Create relative dates.
6321
+ if ( _.isInteger( from ) && $.isPlainObject( to ) ) {
6322
+ from = [ to.year, to.month, to.date + from ];
6323
+ }
6324
+ else if ( _.isInteger( to ) && $.isPlainObject( from ) ) {
6325
+ to = [ from.year, from.month, from.date + to ];
6326
+ }
6327
+
6328
+ return {
6329
+ from: createDate( from ),
6330
+ to: createDate( to )
6331
+ }
6332
+ } //DatePicker.prototype.createRange
6333
+
6334
+
6335
+ /**
6336
+ * Check if a date unit falls within a date range object.
6337
+ */
6338
+ DatePicker.prototype.withinRange = function( range, dateUnit ) {
6339
+ range = this.createRange(range.from, range.to)
6340
+ return dateUnit.pick >= range.from.pick && dateUnit.pick <= range.to.pick
6341
+ }
6342
+
6343
+
6344
+ /**
6345
+ * Check if two date range objects overlap.
6346
+ */
6347
+ DatePicker.prototype.overlapRanges = function( one, two ) {
6348
+
6349
+ var calendar = this
6350
+
6351
+ // Convert the ranges into comparable dates.
6352
+ one = calendar.createRange( one.from, one.to )
6353
+ two = calendar.createRange( two.from, two.to )
6354
+
6355
+ return calendar.withinRange( one, two.from ) || calendar.withinRange( one, two.to ) ||
6356
+ calendar.withinRange( two, one.from ) || calendar.withinRange( two, one.to )
6357
+ }
6358
+
6359
+
6360
+ /**
6361
+ * Get the date today.
6362
+ */
6363
+ DatePicker.prototype.now = function( type, value, options ) {
6364
+ value = new Date()
6365
+ if ( options && options.rel ) {
6366
+ value.setDate( value.getDate() + options.rel )
6367
+ }
6368
+ return this.normalize( value, options )
6369
+ }
6370
+
6371
+
6372
+ /**
6373
+ * Navigate to next/prev month.
6374
+ */
6375
+ DatePicker.prototype.navigate = function( type, value, options ) {
6376
+
6377
+ var targetDateObject,
6378
+ targetYear,
6379
+ targetMonth,
6380
+ targetDate,
6381
+ isTargetArray = $.isArray( value ),
6382
+ isTargetObject = $.isPlainObject( value ),
6383
+ viewsetObject = this.item.view/*,
6384
+ safety = 100*/
6385
+
6386
+
6387
+ if ( isTargetArray || isTargetObject ) {
6388
+
6389
+ if ( isTargetObject ) {
6390
+ targetYear = value.year
6391
+ targetMonth = value.month
6392
+ targetDate = value.date
6393
+ }
6394
+ else {
6395
+ targetYear = +value[0]
6396
+ targetMonth = +value[1]
6397
+ targetDate = +value[2]
6398
+ }
6399
+
6400
+ // If we’re navigating months but the view is in a different
6401
+ // month, navigate to the view’s year and month.
6402
+ if ( options && options.nav && viewsetObject && viewsetObject.month !== targetMonth ) {
6403
+ targetYear = viewsetObject.year
6404
+ targetMonth = viewsetObject.month
6405
+ }
6406
+
6407
+ // Figure out the expected target year and month.
6408
+ targetDateObject = new Date( targetYear, targetMonth + ( options && options.nav ? options.nav : 0 ), 1 )
6409
+ targetYear = targetDateObject.getFullYear()
6410
+ targetMonth = targetDateObject.getMonth()
6411
+
6412
+ // If the month we’re going to doesn’t have enough days,
6413
+ // keep decreasing the date until we reach the month’s last date.
6414
+ while ( /*safety &&*/ new Date( targetYear, targetMonth, targetDate ).getMonth() !== targetMonth ) {
6415
+ targetDate -= 1
6416
+ /*safety -= 1
6417
+ if ( !safety ) {
6418
+ throw 'Fell into an infinite loop while navigating to ' + new Date( targetYear, targetMonth, targetDate ) + '.'
6419
+ }*/
6420
+ }
6421
+
6422
+ value = [ targetYear, targetMonth, targetDate ]
6423
+ }
6424
+
6425
+ return value
6426
+ } //DatePicker.prototype.navigate
6427
+
6428
+
6429
+ /**
6430
+ * Normalize a date by setting the hours to midnight.
6431
+ */
6432
+ DatePicker.prototype.normalize = function( value/*, options*/ ) {
6433
+ value.setHours( 0, 0, 0, 0 )
6434
+ return value
6435
+ }
6436
+
6437
+
6438
+ /**
6439
+ * Measure the range of dates.
6440
+ */
6441
+ DatePicker.prototype.measure = function( type, value/*, options*/ ) {
6442
+
6443
+ var calendar = this
6444
+
6445
+ // If it’s anything false-y, remove the limits.
6446
+ if ( !value ) {
6447
+ value = type == 'min' ? -Infinity : Infinity
6448
+ }
6449
+
6450
+ // If it’s a string, parse it.
6451
+ else if ( typeof value == 'string' ) {
6452
+ value = calendar.parse( type, value )
6453
+ }
6454
+
6455
+ // If it's an integer, get a date relative to today.
6456
+ else if ( _.isInteger( value ) ) {
6457
+ value = calendar.now( type, value, { rel: value } )
6458
+ }
6459
+
6460
+ return value
6461
+ } ///DatePicker.prototype.measure
6462
+
6463
+
6464
+ /**
6465
+ * Create a viewset object based on navigation.
6466
+ */
6467
+ DatePicker.prototype.viewset = function( type, dateObject/*, options*/ ) {
6468
+ return this.create([ dateObject.year, dateObject.month, 1 ])
6469
+ }
6470
+
6471
+
6472
+ /**
6473
+ * Validate a date as enabled and shift if needed.
6474
+ */
6475
+ DatePicker.prototype.validate = function( type, dateObject, options ) {
6476
+
6477
+ var calendar = this,
6478
+
6479
+ // Keep a reference to the original date.
6480
+ originalDateObject = dateObject,
6481
+
6482
+ // Make sure we have an interval.
6483
+ interval = options && options.interval ? options.interval : 1,
6484
+
6485
+ // Check if the calendar enabled dates are inverted.
6486
+ isFlippedBase = calendar.item.enable === -1,
6487
+
6488
+ // Check if we have any enabled dates after/before now.
6489
+ hasEnabledBeforeTarget, hasEnabledAfterTarget,
6490
+
6491
+ // The min & max limits.
6492
+ minLimitObject = calendar.item.min,
6493
+ maxLimitObject = calendar.item.max,
6494
+
6495
+ // Check if we’ve reached the limit during shifting.
6496
+ reachedMin, reachedMax,
6497
+
6498
+ // Check if the calendar is inverted and at least one weekday is enabled.
6499
+ hasEnabledWeekdays = isFlippedBase && calendar.item.disable.filter( function( value ) {
6500
+
6501
+ // If there’s a date, check where it is relative to the target.
6502
+ if ( $.isArray( value ) ) {
6503
+ var dateTime = calendar.create( value ).pick
6504
+ if ( dateTime < dateObject.pick ) hasEnabledBeforeTarget = true
6505
+ else if ( dateTime > dateObject.pick ) hasEnabledAfterTarget = true
6506
+ }
6507
+
6508
+ // Return only integers for enabled weekdays.
6509
+ return _.isInteger( value )
6510
+ }).length/*,
6511
+
6512
+ safety = 100*/
6513
+
6514
+
6515
+
6516
+ // Cases to validate for:
6517
+ // [1] Not inverted and date disabled.
6518
+ // [2] Inverted and some dates enabled.
6519
+ // [3] Not inverted and out of range.
6520
+ //
6521
+ // Cases to **not** validate for:
6522
+ // • Navigating months.
6523
+ // • Not inverted and date enabled.
6524
+ // • Inverted and all dates disabled.
6525
+ // • ..and anything else.
6526
+ if ( !options || !options.nav ) if (
6527
+ /* 1 */ ( !isFlippedBase && calendar.disabled( dateObject ) ) ||
6528
+ /* 2 */ ( isFlippedBase && calendar.disabled( dateObject ) && ( hasEnabledWeekdays || hasEnabledBeforeTarget || hasEnabledAfterTarget ) ) ||
6529
+ /* 3 */ ( !isFlippedBase && (dateObject.pick <= minLimitObject.pick || dateObject.pick >= maxLimitObject.pick) )
6530
+ ) {
6531
+
6532
+
6533
+ // When inverted, flip the direction if there aren’t any enabled weekdays
6534
+ // and there are no enabled dates in the direction of the interval.
6535
+ if ( isFlippedBase && !hasEnabledWeekdays && ( ( !hasEnabledAfterTarget && interval > 0 ) || ( !hasEnabledBeforeTarget && interval < 0 ) ) ) {
6536
+ interval *= -1
6537
+ }
6538
+
6539
+
6540
+ // Keep looping until we reach an enabled date.
6541
+ while ( /*safety &&*/ calendar.disabled( dateObject ) ) {
6542
+
6543
+ /*safety -= 1
6544
+ if ( !safety ) {
6545
+ throw 'Fell into an infinite loop while validating ' + dateObject.obj + '.'
6546
+ }*/
6547
+
6548
+
6549
+ // If we’ve looped into the next/prev month with a large interval, return to the original date and flatten the interval.
6550
+ if ( Math.abs( interval ) > 1 && ( dateObject.month < originalDateObject.month || dateObject.month > originalDateObject.month ) ) {
6551
+ dateObject = originalDateObject
6552
+ interval = interval > 0 ? 1 : -1
6553
+ }
6554
+
6555
+
6556
+ // If we’ve reached the min/max limit, reverse the direction, flatten the interval and set it to the limit.
6557
+ if ( dateObject.pick <= minLimitObject.pick ) {
6558
+ reachedMin = true
6559
+ interval = 1
6560
+ dateObject = calendar.create([
6561
+ minLimitObject.year,
6562
+ minLimitObject.month,
6563
+ minLimitObject.date + (dateObject.pick === minLimitObject.pick ? 0 : -1)
6564
+ ])
6565
+ }
6566
+ else if ( dateObject.pick >= maxLimitObject.pick ) {
6567
+ reachedMax = true
6568
+ interval = -1
6569
+ dateObject = calendar.create([
6570
+ maxLimitObject.year,
6571
+ maxLimitObject.month,
6572
+ maxLimitObject.date + (dateObject.pick === maxLimitObject.pick ? 0 : 1)
6573
+ ])
6574
+ }
6575
+
6576
+
6577
+ // If we’ve reached both limits, just break out of the loop.
6578
+ if ( reachedMin && reachedMax ) {
6579
+ break
6580
+ }
6581
+
6582
+
6583
+ // Finally, create the shifted date using the interval and keep looping.
6584
+ dateObject = calendar.create([ dateObject.year, dateObject.month, dateObject.date + interval ])
6585
+ }
6586
+
6587
+ } //endif
6588
+
6589
+
6590
+ // Return the date object settled on.
6591
+ return dateObject
6592
+ } //DatePicker.prototype.validate
6593
+
6594
+
6595
+ /**
6596
+ * Check if a date is disabled.
6597
+ */
6598
+ DatePicker.prototype.disabled = function( dateToVerify ) {
6599
+
6600
+ var
6601
+ calendar = this,
6602
+
6603
+ // Filter through the disabled dates to check if this is one.
6604
+ isDisabledMatch = calendar.item.disable.filter( function( dateToDisable ) {
6605
+
6606
+ // If the date is a number, match the weekday with 0index and `firstDay` check.
6607
+ if ( _.isInteger( dateToDisable ) ) {
6608
+ return dateToVerify.day === ( calendar.settings.firstDay ? dateToDisable : dateToDisable - 1 ) % 7
6609
+ }
6610
+
6611
+ // If it’s an array or a native JS date, create and match the exact date.
6612
+ if ( $.isArray( dateToDisable ) || _.isDate( dateToDisable ) ) {
6613
+ return dateToVerify.pick === calendar.create( dateToDisable ).pick
6614
+ }
6615
+
6616
+ // If it’s an object, match a date within the “from” and “to” range.
6617
+ if ( $.isPlainObject( dateToDisable ) ) {
6618
+ return calendar.withinRange( dateToDisable, dateToVerify )
6619
+ }
6620
+ })
6621
+
6622
+ // If this date matches a disabled date, confirm it’s not inverted.
6623
+ isDisabledMatch = isDisabledMatch.length && !isDisabledMatch.filter(function( dateToDisable ) {
6624
+ return $.isArray( dateToDisable ) && dateToDisable[3] == 'inverted' ||
6625
+ $.isPlainObject( dateToDisable ) && dateToDisable.inverted
6626
+ }).length
6627
+
6628
+ // Check the calendar “enabled” flag and respectively flip the
6629
+ // disabled state. Then also check if it’s beyond the min/max limits.
6630
+ return calendar.item.enable === -1 ? !isDisabledMatch : isDisabledMatch ||
6631
+ dateToVerify.pick < calendar.item.min.pick ||
6632
+ dateToVerify.pick > calendar.item.max.pick
6633
+
6634
+ } //DatePicker.prototype.disabled
6635
+
6636
+
6637
+ /**
6638
+ * Parse a string into a usable type.
6639
+ */
6640
+ DatePicker.prototype.parse = function( type, value, options ) {
6641
+
6642
+ var calendar = this,
6643
+ parsingObject = {}
6644
+
6645
+ // If it’s already parsed, we’re good.
6646
+ if ( !value || typeof value != 'string' ) {
6647
+ return value
6648
+ }
6649
+
6650
+ // We need a `.format` to parse the value with.
6651
+ if ( !( options && options.format ) ) {
6652
+ options = options || {}
6653
+ options.format = calendar.settings.format
6654
+ }
6655
+
6656
+ // Convert the format into an array and then map through it.
6657
+ calendar.formats.toArray( options.format ).map( function( label ) {
6658
+
6659
+ var
6660
+ // Grab the formatting label.
6661
+ formattingLabel = calendar.formats[ label ],
6662
+
6663
+ // The format length is from the formatting label function or the
6664
+ // label length without the escaping exclamation (!) mark.
6665
+ formatLength = formattingLabel ? _.trigger( formattingLabel, calendar, [ value, parsingObject ] ) : label.replace( /^!/, '' ).length
6666
+
6667
+ // If there's a format label, split the value up to the format length.
6668
+ // Then add it to the parsing object with appropriate label.
6669
+ if ( formattingLabel ) {
6670
+ parsingObject[ label ] = value.substr( 0, formatLength )
6671
+ }
6672
+
6673
+ // Update the value as the substring from format length to end.
6674
+ value = value.substr( formatLength )
6675
+ })
6676
+
6677
+ // Compensate for month 0index.
6678
+ return [
6679
+ parsingObject.yyyy || parsingObject.yy,
6680
+ +( parsingObject.mm || parsingObject.m ) - 1,
6681
+ parsingObject.dd || parsingObject.d
6682
+ ]
6683
+ } //DatePicker.prototype.parse
6684
+
6685
+
6686
+ /**
6687
+ * Various formats to display the object in.
6688
+ */
6689
+ DatePicker.prototype.formats = (function() {
6690
+
6691
+ // Return the length of the first word in a collection.
6692
+ function getWordLengthFromCollection( string, collection, dateObject ) {
6693
+
6694
+ // Grab the first word from the string.
6695
+ var word = string.match( /\w+/ )[ 0 ]
6696
+
6697
+ // If there's no month index, add it to the date object
6698
+ if ( !dateObject.mm && !dateObject.m ) {
6699
+ dateObject.m = collection.indexOf( word ) + 1
6700
+ }
6701
+
6702
+ // Return the length of the word.
6703
+ return word.length
6704
+ }
6705
+
6706
+ // Get the length of the first word in a string.
6707
+ function getFirstWordLength( string ) {
6708
+ return string.match( /\w+/ )[ 0 ].length
6709
+ }
6710
+
6711
+ return {
6712
+
6713
+ d: function( string, dateObject ) {
6714
+
6715
+ // If there's string, then get the digits length.
6716
+ // Otherwise return the selected date.
6717
+ return string ? _.digits( string ) : dateObject.date
6718
+ },
6719
+ dd: function( string, dateObject ) {
6720
+
6721
+ // If there's a string, then the length is always 2.
6722
+ // Otherwise return the selected date with a leading zero.
6723
+ return string ? 2 : _.lead( dateObject.date )
6724
+ },
6725
+ ddd: function( string, dateObject ) {
6726
+
6727
+ // If there's a string, then get the length of the first word.
6728
+ // Otherwise return the short selected weekday.
6729
+ return string ? getFirstWordLength( string ) : this.settings.weekdaysShort[ dateObject.day ]
6730
+ },
6731
+ dddd: function( string, dateObject ) {
6732
+
6733
+ // If there's a string, then get the length of the first word.
6734
+ // Otherwise return the full selected weekday.
6735
+ return string ? getFirstWordLength( string ) : this.settings.weekdaysFull[ dateObject.day ]
6736
+ },
6737
+ m: function( string, dateObject ) {
6738
+
6739
+ // If there's a string, then get the length of the digits
6740
+ // Otherwise return the selected month with 0index compensation.
6741
+ return string ? _.digits( string ) : dateObject.month + 1
6742
+ },
6743
+ mm: function( string, dateObject ) {
6744
+
6745
+ // If there's a string, then the length is always 2.
6746
+ // Otherwise return the selected month with 0index and leading zero.
6747
+ return string ? 2 : _.lead( dateObject.month + 1 )
6748
+ },
6749
+ mmm: function( string, dateObject ) {
6750
+
6751
+ var collection = this.settings.monthsShort
6752
+
6753
+ // If there's a string, get length of the relevant month from the short
6754
+ // months collection. Otherwise return the selected month from that collection.
6755
+ return string ? getWordLengthFromCollection( string, collection, dateObject ) : collection[ dateObject.month ]
6756
+ },
6757
+ mmmm: function( string, dateObject ) {
6758
+
6759
+ var collection = this.settings.monthsFull
6760
+
6761
+ // If there's a string, get length of the relevant month from the full
6762
+ // months collection. Otherwise return the selected month from that collection.
6763
+ return string ? getWordLengthFromCollection( string, collection, dateObject ) : collection[ dateObject.month ]
6764
+ },
6765
+ yy: function( string, dateObject ) {
6766
+
6767
+ // If there's a string, then the length is always 2.
6768
+ // Otherwise return the selected year by slicing out the first 2 digits.
6769
+ return string ? 2 : ( '' + dateObject.year ).slice( 2 )
6770
+ },
6771
+ yyyy: function( string, dateObject ) {
6772
+
6773
+ // If there's a string, then the length is always 4.
6774
+ // Otherwise return the selected year.
6775
+ return string ? 4 : dateObject.year
6776
+ },
6777
+
6778
+ // Create an array by splitting the formatting string passed.
6779
+ toArray: function( formatString ) { return formatString.split( /(d{1,4}|m{1,4}|y{4}|yy|!.)/g ) },
6780
+
6781
+ // Format an object into a string using the formatting options.
6782
+ toString: function ( formatString, itemObject ) {
6783
+ var calendar = this
6784
+ return calendar.formats.toArray( formatString ).map( function( label ) {
6785
+ return _.trigger( calendar.formats[ label ], calendar, [ 0, itemObject ] ) || label.replace( /^!/, '' )
6786
+ }).join( '' )
6787
+ }
6788
+ }
6789
+ })() //DatePicker.prototype.formats
6790
+
6791
+
6792
+
6793
+
6794
+ /**
6795
+ * Check if two date units are the exact.
6796
+ */
6797
+ DatePicker.prototype.isDateExact = function( one, two ) {
6798
+
6799
+ var calendar = this
6800
+
6801
+ // When we’re working with weekdays, do a direct comparison.
6802
+ if (
6803
+ ( _.isInteger( one ) && _.isInteger( two ) ) ||
6804
+ ( typeof one == 'boolean' && typeof two == 'boolean' )
6805
+ ) {
6806
+ return one === two
6807
+ }
6808
+
6809
+ // When we’re working with date representations, compare the “pick” value.
6810
+ if (
6811
+ ( _.isDate( one ) || $.isArray( one ) ) &&
6812
+ ( _.isDate( two ) || $.isArray( two ) )
6813
+ ) {
6814
+ return calendar.create( one ).pick === calendar.create( two ).pick
6815
+ }
6816
+
6817
+ // When we’re working with range objects, compare the “from” and “to”.
6818
+ if ( $.isPlainObject( one ) && $.isPlainObject( two ) ) {
6819
+ return calendar.isDateExact( one.from, two.from ) && calendar.isDateExact( one.to, two.to )
6820
+ }
6821
+
6822
+ return false
6823
+ }
6824
+
6825
+
6826
+ /**
6827
+ * Check if two date units overlap.
6828
+ */
6829
+ DatePicker.prototype.isDateOverlap = function( one, two ) {
6830
+
6831
+ var calendar = this,
6832
+ firstDay = calendar.settings.firstDay ? 1 : 0
6833
+
6834
+ // When we’re working with a weekday index, compare the days.
6835
+ if ( _.isInteger( one ) && ( _.isDate( two ) || $.isArray( two ) ) ) {
6836
+ one = one % 7 + firstDay
6837
+ return one === calendar.create( two ).day + 1
6838
+ }
6839
+ if ( _.isInteger( two ) && ( _.isDate( one ) || $.isArray( one ) ) ) {
6840
+ two = two % 7 + firstDay
6841
+ return two === calendar.create( one ).day + 1
6842
+ }
6843
+
6844
+ // When we’re working with range objects, check if the ranges overlap.
6845
+ if ( $.isPlainObject( one ) && $.isPlainObject( two ) ) {
6846
+ return calendar.overlapRanges( one, two )
6847
+ }
6848
+
6849
+ return false
6850
+ }
6851
+
6852
+
6853
+ /**
6854
+ * Flip the “enabled” state.
6855
+ */
6856
+ DatePicker.prototype.flipEnable = function(val) {
6857
+ var itemObject = this.item
6858
+ itemObject.enable = val || (itemObject.enable == -1 ? 1 : -1)
6859
+ }
6860
+
6861
+
6862
+ /**
6863
+ * Mark a collection of dates as “disabled”.
6864
+ */
6865
+ DatePicker.prototype.deactivate = function( type, datesToDisable ) {
6866
+
6867
+ var calendar = this,
6868
+ disabledItems = calendar.item.disable.slice(0)
6869
+
6870
+
6871
+ // If we’re flipping, that’s all we need to do.
6872
+ if ( datesToDisable == 'flip' ) {
6873
+ calendar.flipEnable()
6874
+ }
6875
+
6876
+ else if ( datesToDisable === false ) {
6877
+ calendar.flipEnable(1)
6878
+ disabledItems = []
6879
+ }
6880
+
6881
+ else if ( datesToDisable === true ) {
6882
+ calendar.flipEnable(-1)
6883
+ disabledItems = []
6884
+ }
6885
+
6886
+ // Otherwise go through the dates to disable.
6887
+ else {
6888
+
6889
+ datesToDisable.map(function( unitToDisable ) {
6890
+
6891
+ var matchFound
6892
+
6893
+ // When we have disabled items, check for matches.
6894
+ // If something is matched, immediately break out.
6895
+ for ( var index = 0; index < disabledItems.length; index += 1 ) {
6896
+ if ( calendar.isDateExact( unitToDisable, disabledItems[index] ) ) {
6897
+ matchFound = true
6898
+ break
6899
+ }
6900
+ }
6901
+
6902
+ // If nothing was found, add the validated unit to the collection.
6903
+ if ( !matchFound ) {
6904
+ if (
6905
+ _.isInteger( unitToDisable ) ||
6906
+ _.isDate( unitToDisable ) ||
6907
+ $.isArray( unitToDisable ) ||
6908
+ ( $.isPlainObject( unitToDisable ) && unitToDisable.from && unitToDisable.to )
6909
+ ) {
6910
+ disabledItems.push( unitToDisable )
6911
+ }
6912
+ }
6913
+ })
6914
+ }
6915
+
6916
+ // Return the updated collection.
6917
+ return disabledItems
6918
+ } //DatePicker.prototype.deactivate
6919
+
6920
+
6921
+ /**
6922
+ * Mark a collection of dates as “enabled”.
6923
+ */
6924
+ DatePicker.prototype.activate = function( type, datesToEnable ) {
6925
+
6926
+ var calendar = this,
6927
+ disabledItems = calendar.item.disable,
6928
+ disabledItemsCount = disabledItems.length
6929
+
6930
+ // If we’re flipping, that’s all we need to do.
6931
+ if ( datesToEnable == 'flip' ) {
6932
+ calendar.flipEnable()
6933
+ }
6934
+
6935
+ else if ( datesToEnable === true ) {
6936
+ calendar.flipEnable(1)
6937
+ disabledItems = []
6938
+ }
6939
+
6940
+ else if ( datesToEnable === false ) {
6941
+ calendar.flipEnable(-1)
6942
+ disabledItems = []
6943
+ }
6944
+
6945
+ // Otherwise go through the disabled dates.
6946
+ else {
6947
+
6948
+ datesToEnable.map(function( unitToEnable ) {
6949
+
6950
+ var matchFound,
6951
+ disabledUnit,
6952
+ index,
6953
+ isExactRange
6954
+
6955
+ // Go through the disabled items and try to find a match.
6956
+ for ( index = 0; index < disabledItemsCount; index += 1 ) {
6957
+
6958
+ disabledUnit = disabledItems[index]
6959
+
6960
+ // When an exact match is found, remove it from the collection.
6961
+ if ( calendar.isDateExact( disabledUnit, unitToEnable ) ) {
6962
+ matchFound = disabledItems[index] = null
6963
+ isExactRange = true
6964
+ break
6965
+ }
6966
+
6967
+ // When an overlapped match is found, add the “inverted” state to it.
6968
+ else if ( calendar.isDateOverlap( disabledUnit, unitToEnable ) ) {
6969
+ if ( $.isPlainObject( unitToEnable ) ) {
6970
+ unitToEnable.inverted = true
6971
+ matchFound = unitToEnable
6972
+ }
6973
+ else if ( $.isArray( unitToEnable ) ) {
6974
+ matchFound = unitToEnable
6975
+ if ( !matchFound[3] ) matchFound.push( 'inverted' )
6976
+ }
6977
+ else if ( _.isDate( unitToEnable ) ) {
6978
+ matchFound = [ unitToEnable.getFullYear(), unitToEnable.getMonth(), unitToEnable.getDate(), 'inverted' ]
6979
+ }
6980
+ break
6981
+ }
6982
+ }
6983
+
6984
+ // If a match was found, remove a previous duplicate entry.
6985
+ if ( matchFound ) for ( index = 0; index < disabledItemsCount; index += 1 ) {
6986
+ if ( calendar.isDateExact( disabledItems[index], unitToEnable ) ) {
6987
+ disabledItems[index] = null
6988
+ break
6989
+ }
6990
+ }
6991
+
6992
+ // In the event that we’re dealing with an exact range of dates,
6993
+ // make sure there are no “inverted” dates because of it.
6994
+ if ( isExactRange ) for ( index = 0; index < disabledItemsCount; index += 1 ) {
6995
+ if ( calendar.isDateOverlap( disabledItems[index], unitToEnable ) ) {
6996
+ disabledItems[index] = null
6997
+ break
6998
+ }
6999
+ }
7000
+
7001
+ // If something is still matched, add it into the collection.
7002
+ if ( matchFound ) {
7003
+ disabledItems.push( matchFound )
7004
+ }
7005
+ })
7006
+ }
7007
+
7008
+ // Return the updated collection.
7009
+ return disabledItems.filter(function( val ) { return val != null })
7010
+ } //DatePicker.prototype.activate
7011
+
7012
+
7013
+ /**
7014
+ * Create a string for the nodes in the picker.
7015
+ */
7016
+ DatePicker.prototype.nodes = function( isOpen ) {
7017
+
7018
+ var
7019
+ calendar = this,
7020
+ settings = calendar.settings,
7021
+ calendarItem = calendar.item,
7022
+ nowObject = calendarItem.now,
7023
+ selectedObject = calendarItem.select,
7024
+ highlightedObject = calendarItem.highlight,
7025
+ viewsetObject = calendarItem.view,
7026
+ disabledCollection = calendarItem.disable,
7027
+ minLimitObject = calendarItem.min,
7028
+ maxLimitObject = calendarItem.max,
7029
+
7030
+
7031
+ // Create the calendar table head using a copy of weekday labels collection.
7032
+ // * We do a copy so we don't mutate the original array.
7033
+ tableHead = (function( collection, fullCollection ) {
7034
+
7035
+ // If the first day should be Monday, move Sunday to the end.
7036
+ if ( settings.firstDay ) {
7037
+ collection.push( collection.shift() )
7038
+ fullCollection.push( fullCollection.shift() )
7039
+ }
7040
+
7041
+ // Create and return the table head group.
7042
+ return _.node(
7043
+ 'thead',
7044
+ _.node(
7045
+ 'tr',
7046
+ _.group({
7047
+ min: 0,
7048
+ max: DAYS_IN_WEEK - 1,
7049
+ i: 1,
7050
+ node: 'th',
7051
+ item: function( counter ) {
7052
+ return [
7053
+ collection[ counter ],
7054
+ settings.klass.weekdays,
7055
+ 'scope=col title="' + fullCollection[ counter ] + '"'
7056
+ ]
7057
+ }
7058
+ })
7059
+ )
7060
+ ) //endreturn
7061
+
7062
+ // Materialize modified
7063
+ })( ( settings.showWeekdaysFull ? settings.weekdaysFull : settings.weekdaysLetter ).slice( 0 ), settings.weekdaysFull.slice( 0 ) ), //tableHead
7064
+
7065
+
7066
+ // Create the nav for next/prev month.
7067
+ createMonthNav = function( next ) {
7068
+
7069
+ // Otherwise, return the created month tag.
7070
+ return _.node(
7071
+ 'div',
7072
+ ' ',
7073
+ settings.klass[ 'nav' + ( next ? 'Next' : 'Prev' ) ] + (
7074
+
7075
+ // If the focused month is outside the range, disabled the button.
7076
+ ( next && viewsetObject.year >= maxLimitObject.year && viewsetObject.month >= maxLimitObject.month ) ||
7077
+ ( !next && viewsetObject.year <= minLimitObject.year && viewsetObject.month <= minLimitObject.month ) ?
7078
+ ' ' + settings.klass.navDisabled : ''
7079
+ ),
7080
+ 'data-nav=' + ( next || -1 ) + ' ' +
7081
+ _.ariaAttr({
7082
+ role: 'button',
7083
+ controls: calendar.$node[0].id + '_table'
7084
+ }) + ' ' +
7085
+ 'title="' + (next ? settings.labelMonthNext : settings.labelMonthPrev ) + '"'
7086
+ ) //endreturn
7087
+ }, //createMonthNav
7088
+
7089
+
7090
+ // Create the month label.
7091
+ //Materialize modified
7092
+ createMonthLabel = function(override) {
7093
+
7094
+ var monthsCollection = settings.showMonthsShort ? settings.monthsShort : settings.monthsFull
7095
+
7096
+ // Materialize modified
7097
+ if (override == "short_months") {
7098
+ monthsCollection = settings.monthsShort;
7099
+ }
7100
+
7101
+ // If there are months to select, add a dropdown menu.
7102
+ if ( settings.selectMonths && override == undefined) {
7103
+
7104
+ return _.node( 'select',
7105
+ _.group({
7106
+ min: 0,
7107
+ max: 11,
7108
+ i: 1,
7109
+ node: 'option',
7110
+ item: function( loopedMonth ) {
7111
+
7112
+ return [
7113
+
7114
+ // The looped month and no classes.
7115
+ monthsCollection[ loopedMonth ], 0,
7116
+
7117
+ // Set the value and selected index.
7118
+ 'value=' + loopedMonth +
7119
+ ( viewsetObject.month == loopedMonth ? ' selected' : '' ) +
7120
+ (
7121
+ (
7122
+ ( viewsetObject.year == minLimitObject.year && loopedMonth < minLimitObject.month ) ||
7123
+ ( viewsetObject.year == maxLimitObject.year && loopedMonth > maxLimitObject.month )
7124
+ ) ?
7125
+ ' disabled' : ''
7126
+ )
7127
+ ]
7128
+ }
7129
+ }),
7130
+ settings.klass.selectMonth + ' browser-default',
7131
+ ( isOpen ? '' : 'disabled' ) + ' ' +
7132
+ _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' +
7133
+ 'title="' + settings.labelMonthSelect + '"'
7134
+ )
7135
+ }
7136
+
7137
+ // Materialize modified
7138
+ if (override == "short_months")
7139
+ if (selectedObject != null)
7140
+ return _.node( 'div', monthsCollection[ selectedObject.month ] );
7141
+ else return _.node( 'div', monthsCollection[ viewsetObject.month ] );
7142
+
7143
+ // If there's a need for a month selector
7144
+ return _.node( 'div', monthsCollection[ viewsetObject.month ], settings.klass.month )
7145
+ }, //createMonthLabel
7146
+
7147
+
7148
+ // Create the year label.
7149
+ // Materialize modified
7150
+ createYearLabel = function(override) {
7151
+
7152
+ var focusedYear = viewsetObject.year,
7153
+
7154
+ // If years selector is set to a literal "true", set it to 5. Otherwise
7155
+ // divide in half to get half before and half after focused year.
7156
+ numberYears = settings.selectYears === true ? 5 : ~~( settings.selectYears / 2 )
7157
+
7158
+ // If there are years to select, add a dropdown menu.
7159
+ if ( numberYears ) {
7160
+
7161
+ var
7162
+ minYear = minLimitObject.year,
7163
+ maxYear = maxLimitObject.year,
7164
+ lowestYear = focusedYear - numberYears,
7165
+ highestYear = focusedYear + numberYears
7166
+
7167
+ // If the min year is greater than the lowest year, increase the highest year
7168
+ // by the difference and set the lowest year to the min year.
7169
+ if ( minYear > lowestYear ) {
7170
+ highestYear += minYear - lowestYear
7171
+ lowestYear = minYear
7172
+ }
7173
+
7174
+ // If the max year is less than the highest year, decrease the lowest year
7175
+ // by the lower of the two: available and needed years. Then set the
7176
+ // highest year to the max year.
7177
+ if ( maxYear < highestYear ) {
7178
+
7179
+ var availableYears = lowestYear - minYear,
7180
+ neededYears = highestYear - maxYear
7181
+
7182
+ lowestYear -= availableYears > neededYears ? neededYears : availableYears
7183
+ highestYear = maxYear
7184
+ }
7185
+
7186
+ if ( settings.selectYears && override == undefined ) {
7187
+ return _.node( 'select',
7188
+ _.group({
7189
+ min: lowestYear,
7190
+ max: highestYear,
7191
+ i: 1,
7192
+ node: 'option',
7193
+ item: function( loopedYear ) {
7194
+ return [
7195
+
7196
+ // The looped year and no classes.
7197
+ loopedYear, 0,
7198
+
7199
+ // Set the value and selected index.
7200
+ 'value=' + loopedYear + ( focusedYear == loopedYear ? ' selected' : '' )
7201
+ ]
7202
+ }
7203
+ }),
7204
+ settings.klass.selectYear + ' browser-default',
7205
+ ( isOpen ? '' : 'disabled' ) + ' ' + _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' +
7206
+ 'title="' + settings.labelYearSelect + '"'
7207
+ )
7208
+ }
7209
+ }
7210
+
7211
+ // Materialize modified
7212
+ if (override == "raw")
7213
+ return _.node( 'div', focusedYear )
7214
+
7215
+ // Otherwise just return the year focused
7216
+ return _.node( 'div', focusedYear, settings.klass.year )
7217
+ } //createYearLabel
7218
+
7219
+
7220
+ // Materialize modified
7221
+ createDayLabel = function() {
7222
+ if (selectedObject != null)
7223
+ return _.node( 'div', selectedObject.date)
7224
+ else return _.node( 'div', nowObject.date)
7225
+ }
7226
+ createWeekdayLabel = function() {
7227
+ var display_day;
7228
+
7229
+ if (selectedObject != null)
7230
+ display_day = selectedObject.day;
7231
+ else
7232
+ display_day = nowObject.day;
7233
+ var weekday = settings.weekdaysFull[ display_day ]
7234
+ return weekday
7235
+ }
7236
+
7237
+
7238
+ // Create and return the entire calendar.
7239
+ return _.node(
7240
+ // Date presentation View
7241
+ 'div',
7242
+ _.node(
7243
+ 'div',
7244
+ createWeekdayLabel(),
7245
+ "picker__weekday-display"
7246
+ )+
7247
+ _.node(
7248
+ // Div for short Month
7249
+ 'div',
7250
+ createMonthLabel("short_months"),
7251
+ settings.klass.month_display
7252
+ )+
7253
+ _.node(
7254
+ // Div for Day
7255
+ 'div',
7256
+ createDayLabel() ,
7257
+ settings.klass.day_display
7258
+ )+
7259
+ _.node(
7260
+ // Div for Year
7261
+ 'div',
7262
+ createYearLabel("raw") ,
7263
+ settings.klass.year_display
7264
+ ),
7265
+ settings.klass.date_display
7266
+ )+
7267
+ // Calendar container
7268
+ _.node('div',
7269
+ _.node('div',
7270
+ ( settings.selectYears ? createMonthLabel() + createYearLabel() : createMonthLabel() + createYearLabel() ) +
7271
+ createMonthNav() + createMonthNav( 1 ),
7272
+ settings.klass.header
7273
+ ) + _.node(
7274
+ 'table',
7275
+ tableHead +
7276
+ _.node(
7277
+ 'tbody',
7278
+ _.group({
7279
+ min: 0,
7280
+ max: WEEKS_IN_CALENDAR - 1,
7281
+ i: 1,
7282
+ node: 'tr',
7283
+ item: function( rowCounter ) {
7284
+
7285
+ // If Monday is the first day and the month starts on Sunday, shift the date back a week.
7286
+ var shiftDateBy = settings.firstDay && calendar.create([ viewsetObject.year, viewsetObject.month, 1 ]).day === 0 ? -7 : 0
7287
+
7288
+ return [
7289
+ _.group({
7290
+ min: DAYS_IN_WEEK * rowCounter - viewsetObject.day + shiftDateBy + 1, // Add 1 for weekday 0index
7291
+ max: function() {
7292
+ return this.min + DAYS_IN_WEEK - 1
7293
+ },
7294
+ i: 1,
7295
+ node: 'td',
7296
+ item: function( targetDate ) {
7297
+
7298
+ // Convert the time date from a relative date to a target date.
7299
+ targetDate = calendar.create([ viewsetObject.year, viewsetObject.month, targetDate + ( settings.firstDay ? 1 : 0 ) ])
7300
+
7301
+ var isSelected = selectedObject && selectedObject.pick == targetDate.pick,
7302
+ isHighlighted = highlightedObject && highlightedObject.pick == targetDate.pick,
7303
+ isDisabled = disabledCollection && calendar.disabled( targetDate ) || targetDate.pick < minLimitObject.pick || targetDate.pick > maxLimitObject.pick,
7304
+ formattedDate = _.trigger( calendar.formats.toString, calendar, [ settings.format, targetDate ] )
7305
+
7306
+ return [
7307
+ _.node(
7308
+ 'div',
7309
+ targetDate.date,
7310
+ (function( klasses ) {
7311
+
7312
+ // Add the `infocus` or `outfocus` classes based on month in view.
7313
+ klasses.push( viewsetObject.month == targetDate.month ? settings.klass.infocus : settings.klass.outfocus )
7314
+
7315
+ // Add the `today` class if needed.
7316
+ if ( nowObject.pick == targetDate.pick ) {
7317
+ klasses.push( settings.klass.now )
7318
+ }
7319
+
7320
+ // Add the `selected` class if something's selected and the time matches.
7321
+ if ( isSelected ) {
7322
+ klasses.push( settings.klass.selected )
7323
+ }
7324
+
7325
+ // Add the `highlighted` class if something's highlighted and the time matches.
7326
+ if ( isHighlighted ) {
7327
+ klasses.push( settings.klass.highlighted )
7328
+ }
7329
+
7330
+ // Add the `disabled` class if something's disabled and the object matches.
7331
+ if ( isDisabled ) {
7332
+ klasses.push( settings.klass.disabled )
7333
+ }
7334
+
7335
+ return klasses.join( ' ' )
7336
+ })([ settings.klass.day ]),
7337
+ 'data-pick=' + targetDate.pick + ' ' + _.ariaAttr({
7338
+ role: 'gridcell',
7339
+ label: formattedDate,
7340
+ selected: isSelected && calendar.$node.val() === formattedDate ? true : null,
7341
+ activedescendant: isHighlighted ? true : null,
7342
+ disabled: isDisabled ? true : null
7343
+ })
7344
+ ),
7345
+ '',
7346
+ _.ariaAttr({ role: 'presentation' })
7347
+ ] //endreturn
7348
+ }
7349
+ })
7350
+ ] //endreturn
7351
+ }
7352
+ })
7353
+ ),
7354
+ settings.klass.table,
7355
+ 'id="' + calendar.$node[0].id + '_table' + '" ' + _.ariaAttr({
7356
+ role: 'grid',
7357
+ controls: calendar.$node[0].id,
7358
+ readonly: true
7359
+ })
7360
+ )
7361
+ , settings.klass.calendar_container) // end calendar
7362
+
7363
+ +
7364
+
7365
+ // * For Firefox forms to submit, make sure to set the buttons’ `type` attributes as “button”.
7366
+ _.node(
7367
+ 'div',
7368
+ _.node( 'button', settings.today, "btn-flat picker__today",
7369
+ 'type=button data-pick=' + nowObject.pick +
7370
+ ( isOpen && !calendar.disabled(nowObject) ? '' : ' disabled' ) + ' ' +
7371
+ _.ariaAttr({ controls: calendar.$node[0].id }) ) +
7372
+ _.node( 'button', settings.clear, "btn-flat picker__clear",
7373
+ 'type=button data-clear=1' +
7374
+ ( isOpen ? '' : ' disabled' ) + ' ' +
7375
+ _.ariaAttr({ controls: calendar.$node[0].id }) ) +
7376
+ _.node('button', settings.close, "btn-flat picker__close",
7377
+ 'type=button data-close=true ' +
7378
+ ( isOpen ? '' : ' disabled' ) + ' ' +
7379
+ _.ariaAttr({ controls: calendar.$node[0].id }) ),
7380
+ settings.klass.footer
7381
+ ) //endreturn
7382
+ } //DatePicker.prototype.nodes
7383
+
7384
+
7385
+
7386
+
7387
+ /**
7388
+ * The date picker defaults.
7389
+ */
7390
+ DatePicker.defaults = (function( prefix ) {
7391
+
7392
+ return {
7393
+
7394
+ // The title label to use for the month nav buttons
7395
+ labelMonthNext: 'Next month',
7396
+ labelMonthPrev: 'Previous month',
7397
+
7398
+ // The title label to use for the dropdown selectors
7399
+ labelMonthSelect: 'Select a month',
7400
+ labelYearSelect: 'Select a year',
7401
+
7402
+ // Months and weekdays
7403
+ monthsFull: [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ],
7404
+ monthsShort: [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ],
7405
+ weekdaysFull: [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ],
7406
+ weekdaysShort: [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ],
7407
+
7408
+ // Materialize modified
7409
+ weekdaysLetter: [ 'S', 'M', 'T', 'W', 'T', 'F', 'S' ],
7410
+
7411
+ // Today and clear
7412
+ today: 'Today',
7413
+ clear: 'Clear',
7414
+ close: 'Close',
7415
+
7416
+ // The format to show on the `input` element
7417
+ format: 'd mmmm, yyyy',
7418
+
7419
+ // Classes
7420
+ klass: {
7421
+
7422
+ table: prefix + 'table',
7423
+
7424
+ header: prefix + 'header',
7425
+
7426
+
7427
+ // Materialize Added klasses
7428
+ date_display: prefix + 'date-display',
7429
+ day_display: prefix + 'day-display',
7430
+ month_display: prefix + 'month-display',
7431
+ year_display: prefix + 'year-display',
7432
+ calendar_container: prefix + 'calendar-container',
7433
+ // end
7434
+
7435
+
7436
+
7437
+ navPrev: prefix + 'nav--prev',
7438
+ navNext: prefix + 'nav--next',
7439
+ navDisabled: prefix + 'nav--disabled',
7440
+
7441
+ month: prefix + 'month',
7442
+ year: prefix + 'year',
7443
+
7444
+ selectMonth: prefix + 'select--month',
7445
+ selectYear: prefix + 'select--year',
7446
+
7447
+ weekdays: prefix + 'weekday',
7448
+
7449
+ day: prefix + 'day',
7450
+ disabled: prefix + 'day--disabled',
7451
+ selected: prefix + 'day--selected',
7452
+ highlighted: prefix + 'day--highlighted',
7453
+ now: prefix + 'day--today',
7454
+ infocus: prefix + 'day--infocus',
7455
+ outfocus: prefix + 'day--outfocus',
7456
+
7457
+ footer: prefix + 'footer',
7458
+
7459
+ buttonClear: prefix + 'button--clear',
7460
+ buttonToday: prefix + 'button--today',
7461
+ buttonClose: prefix + 'button--close'
7462
+ }
7463
+ }
7464
+ })( Picker.klasses().picker + '__' )
7465
+
7466
+
7467
+
7468
+
7469
+
7470
+ /**
7471
+ * Extend the picker to add the date picker.
7472
+ */
7473
+ Picker.extend( 'pickadate', DatePicker )
7474
+
7475
+
7476
+ }));
7477
+
7478
+
7479
+ ;(function ($) {
7480
+
7481
+ $.fn.characterCounter = function(){
7482
+ return this.each(function(){
7483
+ var $input = $(this);
7484
+ var $counterElement = $input.parent().find('span[class="character-counter"]');
7485
+
7486
+ // character counter has already been added appended to the parent container
7487
+ if ($counterElement.length) {
7488
+ return;
7489
+ }
7490
+
7491
+ var itHasLengthAttribute = $input.attr('data-length') !== undefined;
7492
+
7493
+ if(itHasLengthAttribute){
7494
+ $input.on('input', updateCounter);
7495
+ $input.on('focus', updateCounter);
7496
+ $input.on('blur', removeCounterElement);
7497
+
7498
+ addCounterElement($input);
7499
+ }
7500
+
7501
+ });
7502
+ };
7503
+
7504
+ function updateCounter(){
7505
+ var maxLength = +$(this).attr('data-length'),
7506
+ actualLength = +$(this).val().length,
7507
+ isValidLength = actualLength <= maxLength;
7508
+
7509
+ $(this).parent().find('span[class="character-counter"]')
7510
+ .html( actualLength + '/' + maxLength);
7511
+
7512
+ addInputStyle(isValidLength, $(this));
7513
+ }
7514
+
7515
+ function addCounterElement($input) {
7516
+ var $counterElement = $input.parent().find('span[class="character-counter"]');
7517
+
7518
+ if ($counterElement.length) {
7519
+ return;
7520
+ }
7521
+
7522
+ $counterElement = $('<span/>')
7523
+ .addClass('character-counter')
7524
+ .css('float','right')
7525
+ .css('font-size','12px')
7526
+ .css('height', 1);
7527
+
7528
+ $input.parent().append($counterElement);
7529
+ }
7530
+
7531
+ function removeCounterElement(){
7532
+ $(this).parent().find('span[class="character-counter"]').html('');
7533
+ }
7534
+
7535
+ function addInputStyle(isValidLength, $input){
7536
+ var inputHasInvalidClass = $input.hasClass('invalid');
7537
+ if (isValidLength && inputHasInvalidClass) {
7538
+ $input.removeClass('invalid');
7539
+ }
7540
+ else if(!isValidLength && !inputHasInvalidClass){
7541
+ $input.removeClass('valid');
7542
+ $input.addClass('invalid');
7543
+ }
7544
+ }
7545
+
7546
+ $(document).ready(function(){
7547
+ $('input, textarea').characterCounter();
7548
+ });
7549
+
7550
+ }( jQuery ));
7551
+ ;(function ($) {
7552
+
7553
+ var methods = {
7554
+
7555
+ init : function(options) {
7556
+ var defaults = {
7557
+ duration: 200, // ms
7558
+ dist: -100, // zoom scale TODO: make this more intuitive as an option
7559
+ shift: 0, // spacing for center image
7560
+ padding: 0, // Padding between non center items
7561
+ fullWidth: false, // Change to full width styles
7562
+ indicators: false, // Toggle indicators
7563
+ noWrap: false, // Don't wrap around and cycle through items.
7564
+ onCycleTo: null // Callback for when a new slide is cycled to.
7565
+ };
7566
+ options = $.extend(defaults, options);
7567
+
7568
+ return this.each(function() {
7569
+
7570
+ var images, item_width, item_height, offset, center, pressed, dim, count,
7571
+ reference, referenceY, amplitude, target, velocity,
7572
+ xform, frame, timestamp, ticker, dragged, vertical_dragged;
7573
+ var $indicators = $('<ul class="indicators"></ul>');
7574
+
7575
+
7576
+ // Initialize
7577
+ var view = $(this);
7578
+ var showIndicators = view.attr('data-indicators') || options.indicators;
7579
+
7580
+ // Don't double initialize.
7581
+ if (view.hasClass('initialized')) {
7582
+ // Redraw carousel.
7583
+ $(this).trigger('carouselNext', [0.000001]);
7584
+ return true;
7585
+ }
7586
+
7587
+
7588
+ // Options
7589
+ if (options.fullWidth) {
7590
+ options.dist = 0;
7591
+ var firstImage = view.find('.carousel-item img').first();
7592
+ if (firstImage.length) {
7593
+ imageHeight = firstImage.on('load', function(){
7594
+ view.css('height', $(this).height());
7595
+ });
7596
+ } else {
7597
+ imageHeight = view.find('.carousel-item').first().height();
7598
+ view.css('height', imageHeight);
7599
+ }
7600
+
7601
+ // Offset fixed items when indicators.
7602
+ if (showIndicators) {
7603
+ view.find('.carousel-fixed-item').addClass('with-indicators');
7604
+ }
7605
+ }
7606
+
7607
+
7608
+ view.addClass('initialized');
7609
+ pressed = false;
7610
+ offset = target = 0;
7611
+ images = [];
7612
+ item_width = view.find('.carousel-item').first().innerWidth();
7613
+ item_height = view.find('.carousel-item').first().innerHeight();
7614
+ dim = item_width * 2 + options.padding;
7615
+
7616
+ view.find('.carousel-item').each(function (i) {
7617
+ images.push($(this)[0]);
7618
+ if (showIndicators) {
7619
+ var $indicator = $('<li class="indicator-item"></li>');
7620
+
7621
+ // Add active to first by default.
7622
+ if (i === 0) {
7623
+ $indicator.addClass('active');
7624
+ }
7625
+
7626
+ // Handle clicks on indicators.
7627
+ $indicator.click(function (e) {
7628
+ e.stopPropagation();
7629
+
7630
+ var index = $(this).index();
7631
+ cycleTo(index);
7632
+ });
7633
+ $indicators.append($indicator);
7634
+ }
7635
+ });
7636
+
7637
+ if (showIndicators) {
7638
+ view.append($indicators);
7639
+ }
7640
+ count = images.length;
7641
+
7642
+
7643
+ function setupEvents() {
7644
+ if (typeof window.ontouchstart !== 'undefined') {
7645
+ view[0].addEventListener('touchstart', tap);
7646
+ view[0].addEventListener('touchmove', drag);
7647
+ view[0].addEventListener('touchend', release);
7648
+ }
7649
+ view[0].addEventListener('mousedown', tap);
7650
+ view[0].addEventListener('mousemove', drag);
7651
+ view[0].addEventListener('mouseup', release);
7652
+ view[0].addEventListener('mouseleave', release);
7653
+ view[0].addEventListener('click', click);
7654
+ }
7655
+
7656
+ function xpos(e) {
7657
+ // touch event
7658
+ if (e.targetTouches && (e.targetTouches.length >= 1)) {
7659
+ return e.targetTouches[0].clientX;
7660
+ }
7661
+
7662
+ // mouse event
7663
+ return e.clientX;
7664
+ }
7665
+
7666
+ function ypos(e) {
7667
+ // touch event
7668
+ if (e.targetTouches && (e.targetTouches.length >= 1)) {
7669
+ return e.targetTouches[0].clientY;
7670
+ }
7671
+
7672
+ // mouse event
7673
+ return e.clientY;
7674
+ }
7675
+
7676
+ function wrap(x) {
7677
+ return (x >= count) ? (x % count) : (x < 0) ? wrap(count + (x % count)) : x;
7678
+ }
7679
+
7680
+ function scroll(x) {
7681
+ var i, half, delta, dir, tween, el, alignment, xTranslation;
7682
+ var lastCenter = center;
7683
+
7684
+ offset = (typeof x === 'number') ? x : offset;
7685
+ center = Math.floor((offset + dim / 2) / dim);
7686
+ delta = offset - center * dim;
7687
+ dir = (delta < 0) ? 1 : -1;
7688
+ tween = -dir * delta * 2 / dim;
7689
+ half = count >> 1;
7690
+
7691
+ if (!options.fullWidth) {
7692
+ alignment = 'translateX(' + (view[0].clientWidth - item_width) / 2 + 'px) ';
7693
+ alignment += 'translateY(' + (view[0].clientHeight - item_height) / 2 + 'px)';
7694
+ } else {
7695
+ alignment = 'translateX(0)';
7696
+ }
7697
+
7698
+ // Set indicator active
7699
+ if (showIndicators) {
7700
+ var diff = (center % count);
7701
+ var activeIndicator = $indicators.find('.indicator-item.active');
7702
+ if (activeIndicator.index() !== diff) {
7703
+ activeIndicator.removeClass('active');
7704
+ $indicators.find('.indicator-item').eq(diff).addClass('active');
7705
+ }
7706
+ }
7707
+
7708
+ // center
7709
+ // Don't show wrapped items.
7710
+ if (!options.noWrap || (center >= 0 && center < count)) {
7711
+ el = images[wrap(center)];
7712
+
7713
+ // Add active class to center item.
7714
+ if (!$(el).hasClass('active')) {
7715
+ view.find('.carousel-item').removeClass('active');
7716
+ $(el).addClass('active');
7717
+ }
7718
+ el.style[xform] = alignment +
7719
+ ' translateX(' + (-delta / 2) + 'px)' +
7720
+ ' translateX(' + (dir * options.shift * tween * i) + 'px)' +
7721
+ ' translateZ(' + (options.dist * tween) + 'px)';
7722
+ el.style.zIndex = 0;
7723
+ if (options.fullWidth) { tweenedOpacity = 1; }
7724
+ else { tweenedOpacity = 1 - 0.2 * tween; }
7725
+ el.style.opacity = tweenedOpacity;
7726
+ el.style.display = 'block';
7727
+ }
7728
+
7729
+ for (i = 1; i <= half; ++i) {
7730
+ // right side
7731
+ if (options.fullWidth) {
7732
+ zTranslation = options.dist;
7733
+ tweenedOpacity = (i === half && delta < 0) ? 1 - tween : 1;
7734
+ } else {
7735
+ zTranslation = options.dist * (i * 2 + tween * dir);
7736
+ tweenedOpacity = 1 - 0.2 * (i * 2 + tween * dir);
7737
+ }
7738
+ // Don't show wrapped items.
7739
+ if (!options.noWrap || center + i < count) {
7740
+ el = images[wrap(center + i)];
7741
+ el.style[xform] = alignment +
7742
+ ' translateX(' + (options.shift + (dim * i - delta) / 2) + 'px)' +
7743
+ ' translateZ(' + zTranslation + 'px)';
7744
+ el.style.zIndex = -i;
7745
+ el.style.opacity = tweenedOpacity;
7746
+ el.style.display = 'block';
7747
+ }
7748
+
7749
+
7750
+ // left side
7751
+ if (options.fullWidth) {
7752
+ zTranslation = options.dist;
7753
+ tweenedOpacity = (i === half && delta > 0) ? 1 - tween : 1;
7754
+ } else {
7755
+ zTranslation = options.dist * (i * 2 - tween * dir);
7756
+ tweenedOpacity = 1 - 0.2 * (i * 2 - tween * dir);
7757
+ }
7758
+ // Don't show wrapped items.
7759
+ if (!options.noWrap || center - i >= 0) {
7760
+ el = images[wrap(center - i)];
7761
+ el.style[xform] = alignment +
7762
+ ' translateX(' + (-options.shift + (-dim * i - delta) / 2) + 'px)' +
7763
+ ' translateZ(' + zTranslation + 'px)';
7764
+ el.style.zIndex = -i;
7765
+ el.style.opacity = tweenedOpacity;
7766
+ el.style.display = 'block';
7767
+ }
7768
+ }
7769
+
7770
+ // center
7771
+ // Don't show wrapped items.
7772
+ if (!options.noWrap || (center >= 0 && center < count)) {
7773
+ el = images[wrap(center)];
7774
+ el.style[xform] = alignment +
7775
+ ' translateX(' + (-delta / 2) + 'px)' +
7776
+ ' translateX(' + (dir * options.shift * tween) + 'px)' +
7777
+ ' translateZ(' + (options.dist * tween) + 'px)';
7778
+ el.style.zIndex = 0;
7779
+ if (options.fullWidth) { tweenedOpacity = 1; }
7780
+ else { tweenedOpacity = 1 - 0.2 * tween; }
7781
+ el.style.opacity = tweenedOpacity;
7782
+ el.style.display = 'block';
7783
+ }
7784
+
7785
+ // onCycleTo callback
7786
+ if (lastCenter !== center &&
7787
+ typeof(options.onCycleTo) === "function") {
7788
+ var $curr_item = view.find('.carousel-item').eq(wrap(center));
7789
+ options.onCycleTo.call(this, $curr_item, dragged);
7790
+ }
7791
+ }
7792
+
7793
+ function track() {
7794
+ var now, elapsed, delta, v;
7795
+
7796
+ now = Date.now();
7797
+ elapsed = now - timestamp;
7798
+ timestamp = now;
7799
+ delta = offset - frame;
7800
+ frame = offset;
7801
+
7802
+ v = 1000 * delta / (1 + elapsed);
7803
+ velocity = 0.8 * v + 0.2 * velocity;
7804
+ }
7805
+
7806
+ function autoScroll() {
7807
+ var elapsed, delta;
7808
+
7809
+ if (amplitude) {
7810
+ elapsed = Date.now() - timestamp;
7811
+ delta = amplitude * Math.exp(-elapsed / options.duration);
7812
+ if (delta > 2 || delta < -2) {
7813
+ scroll(target - delta);
7814
+ requestAnimationFrame(autoScroll);
7815
+ } else {
7816
+ scroll(target);
7817
+ }
7818
+ }
7819
+ }
7820
+
7821
+ function click(e) {
7822
+ // Disable clicks if carousel was dragged.
7823
+ if (dragged) {
7824
+ e.preventDefault();
7825
+ e.stopPropagation();
7826
+ return false;
7827
+
7828
+ } else if (!options.fullWidth) {
7829
+ var clickedIndex = $(e.target).closest('.carousel-item').index();
7830
+ var diff = (center % count) - clickedIndex;
7831
+
7832
+ // Disable clicks if carousel was shifted by click
7833
+ if (diff !== 0) {
7834
+ e.preventDefault();
7835
+ e.stopPropagation();
7836
+ }
7837
+ cycleTo(clickedIndex);
7838
+ }
7839
+ }
7840
+
7841
+ function cycleTo(n) {
7842
+ var diff = (center % count) - n;
7843
+
7844
+ // Account for wraparound.
7845
+ if (!options.noWrap) {
7846
+ if (diff < 0) {
7847
+ if (Math.abs(diff + count) < Math.abs(diff)) { diff += count; }
7848
+
7849
+ } else if (diff > 0) {
7850
+ if (Math.abs(diff - count) < diff) { diff -= count; }
7851
+ }
7852
+ }
7853
+
7854
+ // Call prev or next accordingly.
7855
+ if (diff < 0) {
7856
+ view.trigger('carouselNext', [Math.abs(diff)]);
7857
+
7858
+ } else if (diff > 0) {
7859
+ view.trigger('carouselPrev', [diff]);
7860
+ }
7861
+ }
7862
+
7863
+ function tap(e) {
7864
+ pressed = true;
7865
+ dragged = false;
7866
+ vertical_dragged = false;
7867
+ reference = xpos(e);
7868
+ referenceY = ypos(e);
7869
+
7870
+ velocity = amplitude = 0;
7871
+ frame = offset;
7872
+ timestamp = Date.now();
7873
+ clearInterval(ticker);
7874
+ ticker = setInterval(track, 100);
7875
+
7876
+ }
7877
+
7878
+ function drag(e) {
7879
+ var x, delta, deltaY;
7880
+ if (pressed) {
7881
+ x = xpos(e);
7882
+ y = ypos(e);
7883
+ delta = reference - x;
7884
+ deltaY = Math.abs(referenceY - y);
7885
+ if (deltaY < 30 && !vertical_dragged) {
7886
+ // If vertical scrolling don't allow dragging.
7887
+ if (delta > 2 || delta < -2) {
7888
+ dragged = true;
7889
+ reference = x;
7890
+ scroll(offset + delta);
7891
+ }
7892
+
7893
+ } else if (dragged) {
7894
+ // If dragging don't allow vertical scroll.
7895
+ e.preventDefault();
7896
+ e.stopPropagation();
7897
+ return false;
7898
+
7899
+ } else {
7900
+ // Vertical scrolling.
7901
+ vertical_dragged = true;
7902
+ }
7903
+ }
7904
+
7905
+ if (dragged) {
7906
+ // If dragging don't allow vertical scroll.
7907
+ e.preventDefault();
7908
+ e.stopPropagation();
7909
+ return false;
7910
+ }
7911
+ }
7912
+
7913
+ function release(e) {
7914
+ if (pressed) {
7915
+ pressed = false;
7916
+ } else {
7917
+ return;
7918
+ }
7919
+
7920
+ clearInterval(ticker);
7921
+ target = offset;
7922
+ if (velocity > 10 || velocity < -10) {
7923
+ amplitude = 0.9 * velocity;
7924
+ target = offset + amplitude;
7925
+ }
7926
+ target = Math.round(target / dim) * dim;
7927
+
7928
+ // No wrap of items.
7929
+ if (options.noWrap) {
7930
+ if (target >= dim * (count - 1)) {
7931
+ target = dim * (count - 1);
7932
+ } else if (target < 0) {
7933
+ target = 0;
7934
+ }
7935
+ }
7936
+ amplitude = target - offset;
7937
+ timestamp = Date.now();
7938
+ requestAnimationFrame(autoScroll);
7939
+
7940
+ if (dragged) {
7941
+ e.preventDefault();
7942
+ e.stopPropagation();
7943
+ }
7944
+ return false;
7945
+ }
7946
+
7947
+ xform = 'transform';
7948
+ ['webkit', 'Moz', 'O', 'ms'].every(function (prefix) {
7949
+ var e = prefix + 'Transform';
7950
+ if (typeof document.body.style[e] !== 'undefined') {
7951
+ xform = e;
7952
+ return false;
7953
+ }
7954
+ return true;
7955
+ });
7956
+
7957
+
7958
+ $(window).on('resize.carousel', function() {
7959
+ if (options.fullWidth) {
7960
+ item_width = view.find('.carousel-item').first().innerWidth();
7961
+ item_height = view.find('.carousel-item').first().innerHeight();
7962
+ dim = item_width * 2 + options.padding;
7963
+ offset = center * 2 * item_width;
7964
+ target = offset;
7965
+ } else {
7966
+ scroll();
7967
+ }
7968
+ });
7969
+
7970
+ setupEvents();
7971
+ scroll(offset);
7972
+
7973
+ $(this).on('carouselNext', function(e, n) {
7974
+ if (n === undefined) {
7975
+ n = 1;
7976
+ }
7977
+ target = (dim * Math.round(offset / dim)) + (dim * n);
7978
+ if (offset !== target) {
7979
+ amplitude = target - offset;
7980
+ timestamp = Date.now();
7981
+ requestAnimationFrame(autoScroll);
7982
+ }
7983
+ });
7984
+
7985
+ $(this).on('carouselPrev', function(e, n) {
7986
+ if (n === undefined) {
7987
+ n = 1;
7988
+ }
7989
+ target = (dim * Math.round(offset / dim)) - (dim * n);
7990
+ if (offset !== target) {
7991
+ amplitude = target - offset;
7992
+ timestamp = Date.now();
7993
+ requestAnimationFrame(autoScroll);
7994
+ }
7995
+ });
7996
+
7997
+ $(this).on('carouselSet', function(e, n) {
7998
+ if (n === undefined) {
7999
+ n = 0;
8000
+ }
8001
+ cycleTo(n);
8002
+ });
8003
+
8004
+ });
8005
+
8006
+
8007
+
8008
+ },
8009
+ next : function(n) {
8010
+ $(this).trigger('carouselNext', [n]);
8011
+ },
8012
+ prev : function(n) {
8013
+ $(this).trigger('carouselPrev', [n]);
8014
+ },
8015
+ set : function(n) {
8016
+ $(this).trigger('carouselSet', [n]);
8017
+ }
8018
+ };
8019
+
8020
+
8021
+ $.fn.carousel = function(methodOrOptions) {
8022
+ if ( methods[methodOrOptions] ) {
8023
+ return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 ));
8024
+ } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) {
8025
+ // Default to "init"
8026
+ return methods.init.apply( this, arguments );
8027
+ } else {
8028
+ $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.carousel' );
8029
+ }
8030
+ }; // Plugin end
8031
+ }( jQuery ));
admin/js/materialize.min.js ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Materialize v0.98.0 (http://materializecss.com)
3
+ * Copyright 2014-2015 Materialize
4
+ * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE)
5
+ */
6
+ if("undefined"==typeof jQuery){var jQuery;jQuery="function"==typeof require?$=require("jquery"):$}jQuery.easing.jswing=jQuery.easing.swing,jQuery.extend(jQuery.easing,{def:"easeOutQuad",swing:function(a,b,c,d,e){return jQuery.easing[jQuery.easing.def](a,b,c,d,e)},easeInQuad:function(a,b,c,d,e){return d*(b/=e)*b+c},easeOutQuad:function(a,b,c,d,e){return-d*(b/=e)*(b-2)+c},easeInOutQuad:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b+c:-d/2*(--b*(b-2)-1)+c},easeInCubic:function(a,b,c,d,e){return d*(b/=e)*b*b+c},easeOutCubic:function(a,b,c,d,e){return d*((b=b/e-1)*b*b+1)+c},easeInOutCubic:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b*b+c:d/2*((b-=2)*b*b+2)+c},easeInQuart:function(a,b,c,d,e){return d*(b/=e)*b*b*b+c},easeOutQuart:function(a,b,c,d,e){return-d*((b=b/e-1)*b*b*b-1)+c},easeInOutQuart:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b*b*b+c:-d/2*((b-=2)*b*b*b-2)+c},easeInQuint:function(a,b,c,d,e){return d*(b/=e)*b*b*b*b+c},easeOutQuint:function(a,b,c,d,e){return d*((b=b/e-1)*b*b*b*b+1)+c},easeInOutQuint:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b*b*b*b+c:d/2*((b-=2)*b*b*b*b+2)+c},easeInSine:function(a,b,c,d,e){return-d*Math.cos(b/e*(Math.PI/2))+d+c},easeOutSine:function(a,b,c,d,e){return d*Math.sin(b/e*(Math.PI/2))+c},easeInOutSine:function(a,b,c,d,e){return-d/2*(Math.cos(Math.PI*b/e)-1)+c},easeInExpo:function(a,b,c,d,e){return 0==b?c:d*Math.pow(2,10*(b/e-1))+c},easeOutExpo:function(a,b,c,d,e){return b==e?c+d:d*(-Math.pow(2,-10*b/e)+1)+c},easeInOutExpo:function(a,b,c,d,e){return 0==b?c:b==e?c+d:(b/=e/2)<1?d/2*Math.pow(2,10*(b-1))+c:d/2*(-Math.pow(2,-10*--b)+2)+c},easeInCirc:function(a,b,c,d,e){return-d*(Math.sqrt(1-(b/=e)*b)-1)+c},easeOutCirc:function(a,b,c,d,e){return d*Math.sqrt(1-(b=b/e-1)*b)+c},easeInOutCirc:function(a,b,c,d,e){return(b/=e/2)<1?-d/2*(Math.sqrt(1-b*b)-1)+c:d/2*(Math.sqrt(1-(b-=2)*b)+1)+c},easeInElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(0==b)return c;if(1==(b/=e))return c+d;if(g||(g=.3*e),h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return-(h*Math.pow(2,10*(b-=1))*Math.sin((b*e-f)*(2*Math.PI)/g))+c},easeOutElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(0==b)return c;if(1==(b/=e))return c+d;if(g||(g=.3*e),h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return h*Math.pow(2,-10*b)*Math.sin((b*e-f)*(2*Math.PI)/g)+d+c},easeInOutElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(0==b)return c;if(2==(b/=e/2))return c+d;if(g||(g=e*(.3*1.5)),h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return b<1?-.5*(h*Math.pow(2,10*(b-=1))*Math.sin((b*e-f)*(2*Math.PI)/g))+c:h*Math.pow(2,-10*(b-=1))*Math.sin((b*e-f)*(2*Math.PI)/g)*.5+d+c},easeInBack:function(a,b,c,d,e,f){return void 0==f&&(f=1.70158),d*(b/=e)*b*((f+1)*b-f)+c},easeOutBack:function(a,b,c,d,e,f){return void 0==f&&(f=1.70158),d*((b=b/e-1)*b*((f+1)*b+f)+1)+c},easeInOutBack:function(a,b,c,d,e,f){return void 0==f&&(f=1.70158),(b/=e/2)<1?d/2*(b*b*(((f*=1.525)+1)*b-f))+c:d/2*((b-=2)*b*(((f*=1.525)+1)*b+f)+2)+c},easeInBounce:function(a,b,c,d,e){return d-jQuery.easing.easeOutBounce(a,e-b,0,d,e)+c},easeOutBounce:function(a,b,c,d,e){return(b/=e)<1/2.75?d*(7.5625*b*b)+c:b<2/2.75?d*(7.5625*(b-=1.5/2.75)*b+.75)+c:b<2.5/2.75?d*(7.5625*(b-=2.25/2.75)*b+.9375)+c:d*(7.5625*(b-=2.625/2.75)*b+.984375)+c},easeInOutBounce:function(a,b,c,d,e){return b<e/2?.5*jQuery.easing.easeInBounce(a,2*b,0,d,e)+c:.5*jQuery.easing.easeOutBounce(a,2*b-e,0,d,e)+.5*d+c}}),jQuery.extend(jQuery.easing,{easeInOutMaterial:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b+c:d/4*((b-=2)*b*b+2)+c}}),jQuery.Velocity?console.log("Velocity is already loaded. You may be needlessly importing Velocity again; note that Materialize includes Velocity."):(!function(a){function b(a){var b=a.length,d=c.type(a);return"function"!==d&&!c.isWindow(a)&&(!(1!==a.nodeType||!b)||("array"===d||0===b||"number"==typeof b&&b>0&&b-1 in a))}if(!a.jQuery){var c=function(a,b){return new c.fn.init(a,b)};c.isWindow=function(a){return null!=a&&a==a.window},c.type=function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?e[g.call(a)]||"object":typeof a},c.isArray=Array.isArray||function(a){return"array"===c.type(a)},c.isPlainObject=function(a){var b;if(!a||"object"!==c.type(a)||a.nodeType||c.isWindow(a))return!1;try{if(a.constructor&&!f.call(a,"constructor")&&!f.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(d){return!1}for(b in a);return void 0===b||f.call(a,b)},c.each=function(a,c,d){var e,f=0,g=a.length,h=b(a);if(d){if(h)for(;g>f&&(e=c.apply(a[f],d),e!==!1);f++);else for(f in a)if(e=c.apply(a[f],d),e===!1)break}else if(h)for(;g>f&&(e=c.call(a[f],f,a[f]),e!==!1);f++);else for(f in a)if(e=c.call(a[f],f,a[f]),e===!1)break;return a},c.data=function(a,b,e){if(void 0===e){var f=a[c.expando],g=f&&d[f];if(void 0===b)return g;if(g&&b in g)return g[b]}else if(void 0!==b){var f=a[c.expando]||(a[c.expando]=++c.uuid);return d[f]=d[f]||{},d[f][b]=e,e}},c.removeData=function(a,b){var e=a[c.expando],f=e&&d[e];f&&c.each(b,function(a,b){delete f[b]})},c.extend=function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[i]||{},i++),"object"!=typeof h&&"function"!==c.type(h)&&(h={}),i===j&&(h=this,i--);j>i;i++)if(null!=(f=arguments[i]))for(e in f)a=h[e],d=f[e],h!==d&&(k&&d&&(c.isPlainObject(d)||(b=c.isArray(d)))?(b?(b=!1,g=a&&c.isArray(a)?a:[]):g=a&&c.isPlainObject(a)?a:{},h[e]=c.extend(k,g,d)):void 0!==d&&(h[e]=d));return h},c.queue=function(a,d,e){function f(a,c){var d=c||[];return null!=a&&(b(Object(a))?!function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;)a[e++]=b[d++];if(c!==c)for(;void 0!==b[d];)a[e++]=b[d++];return a.length=e,a}(d,"string"==typeof a?[a]:a):[].push.call(d,a)),d}if(a){d=(d||"fx")+"queue";var g=c.data(a,d);return e?(!g||c.isArray(e)?g=c.data(a,d,f(e)):g.push(e),g):g||[]}},c.dequeue=function(a,b){c.each(a.nodeType?[a]:a,function(a,d){b=b||"fx";var e=c.queue(d,b),f=e.shift();"inprogress"===f&&(f=e.shift()),f&&("fx"===b&&e.unshift("inprogress"),f.call(d,function(){c.dequeue(d,b)}))})},c.fn=c.prototype={init:function(a){if(a.nodeType)return this[0]=a,this;throw new Error("Not a DOM node.")},offset:function(){var b=this[0].getBoundingClientRect?this[0].getBoundingClientRect():{top:0,left:0};return{top:b.top+(a.pageYOffset||document.scrollTop||0)-(document.clientTop||0),left:b.left+(a.pageXOffset||document.scrollLeft||0)-(document.clientLeft||0)}},position:function(){function a(){for(var a=this.offsetParent||document;a&&"html"===!a.nodeType.toLowerCase&&"static"===a.style.position;)a=a.offsetParent;return a||document}var b=this[0],a=a.apply(b),d=this.offset(),e=/^(?:body|html)$/i.test(a.nodeName)?{top:0,left:0}:c(a).offset();return d.top-=parseFloat(b.style.marginTop)||0,d.left-=parseFloat(b.style.marginLeft)||0,a.style&&(e.top+=parseFloat(a.style.borderTopWidth)||0,e.left+=parseFloat(a.style.borderLeftWidth)||0),{top:d.top-e.top,left:d.left-e.left}}};var d={};c.expando="velocity"+(new Date).getTime(),c.uuid=0;for(var e={},f=e.hasOwnProperty,g=e.toString,h="Boolean Number String Function Array Date RegExp Object Error".split(" "),i=0;i<h.length;i++)e["[object "+h[i]+"]"]=h[i].toLowerCase();c.fn.init.prototype=c.fn,a.Velocity={Utilities:c}}}(window),function(a){"object"==typeof module&&"object"==typeof module.exports?module.exports=a():"function"==typeof define&&define.amd?define(a):a()}(function(){return function(a,b,c,d){function e(a){for(var b=-1,c=a?a.length:0,d=[];++b<c;){var e=a[b];e&&d.push(e)}return d}function f(a){return p.isWrapped(a)?a=[].slice.call(a):p.isNode(a)&&(a=[a]),a}function g(a){var b=m.data(a,"velocity");return null===b?d:b}function h(a){return function(b){return Math.round(b*a)*(1/a)}}function i(a,c,d,e){function f(a,b){return 1-3*b+3*a}function g(a,b){return 3*b-6*a}function h(a){return 3*a}function i(a,b,c){return((f(b,c)*a+g(b,c))*a+h(b))*a}function j(a,b,c){return 3*f(b,c)*a*a+2*g(b,c)*a+h(b)}function k(b,c){for(var e=0;p>e;++e){var f=j(c,a,d);if(0===f)return c;var g=i(c,a,d)-b;c-=g/f}return c}function l(){for(var b=0;t>b;++b)x[b]=i(b*u,a,d)}function m(b,c,e){var f,g,h=0;do g=c+(e-c)/2,f=i(g,a,d)-b,f>0?e=g:c=g;while(Math.abs(f)>r&&++h<s);return g}function n(b){for(var c=0,e=1,f=t-1;e!=f&&x[e]<=b;++e)c+=u;--e;var g=(b-x[e])/(x[e+1]-x[e]),h=c+g*u,i=j(h,a,d);return i>=q?k(b,h):0==i?h:m(b,c,c+u)}function o(){y=!0,(a!=c||d!=e)&&l()}var p=4,q=.001,r=1e-7,s=10,t=11,u=1/(t-1),v="Float32Array"in b;if(4!==arguments.length)return!1;for(var w=0;4>w;++w)if("number"!=typeof arguments[w]||isNaN(arguments[w])||!isFinite(arguments[w]))return!1;a=Math.min(a,1),d=Math.min(d,1),a=Math.max(a,0),d=Math.max(d,0);var x=v?new Float32Array(t):new Array(t),y=!1,z=function(b){return y||o(),a===c&&d===e?b:0===b?0:1===b?1:i(n(b),c,e)};z.getControlPoints=function(){return[{x:a,y:c},{x:d,y:e}]};var A="generateBezier("+[a,c,d,e]+")";return z.toString=function(){return A},z}function j(a,b){var c=a;return p.isString(a)?t.Easings[a]||(c=!1):c=p.isArray(a)&&1===a.length?h.apply(null,a):p.isArray(a)&&2===a.length?u.apply(null,a.concat([b])):!(!p.isArray(a)||4!==a.length)&&i.apply(null,a),c===!1&&(c=t.Easings[t.defaults.easing]?t.defaults.easing:s),c}function k(a){if(a){var b=(new Date).getTime(),c=t.State.calls.length;c>1e4&&(t.State.calls=e(t.State.calls));for(var f=0;c>f;f++)if(t.State.calls[f]){var h=t.State.calls[f],i=h[0],j=h[2],n=h[3],o=!!n,q=null;n||(n=t.State.calls[f][3]=b-16);for(var r=Math.min((b-n)/j.duration,1),s=0,u=i.length;u>s;s++){var w=i[s],y=w.element;if(g(y)){var z=!1;if(j.display!==d&&null!==j.display&&"none"!==j.display){if("flex"===j.display){var A=["-webkit-box","-moz-box","-ms-flexbox","-webkit-flex"];m.each(A,function(a,b){v.setPropertyValue(y,"display",b)})}v.setPropertyValue(y,"display",j.display)}j.visibility!==d&&"hidden"!==j.visibility&&v.setPropertyValue(y,"visibility",j.visibility);for(var B in w)if("element"!==B){var C,D=w[B],E=p.isString(D.easing)?t.Easings[D.easing]:D.easing;if(1===r)C=D.endValue;else{var F=D.endValue-D.startValue;if(C=D.startValue+F*E(r,j,F),!o&&C===D.currentValue)continue}if(D.currentValue=C,"tween"===B)q=C;else{if(v.Hooks.registered[B]){var G=v.Hooks.getRoot(B),H=g(y).rootPropertyValueCache[G];H&&(D.rootPropertyValue=H)}var I=v.setPropertyValue(y,B,D.currentValue+(0===parseFloat(C)?"":D.unitType),D.rootPropertyValue,D.scrollData);v.Hooks.registered[B]&&(g(y).rootPropertyValueCache[G]=v.Normalizations.registered[G]?v.Normalizations.registered[G]("extract",null,I[1]):I[1]),"transform"===I[0]&&(z=!0)}}j.mobileHA&&g(y).transformCache.translate3d===d&&(g(y).transformCache.translate3d="(0px, 0px, 0px)",z=!0),z&&v.flushTransformCache(y)}}j.display!==d&&"none"!==j.display&&(t.State.calls[f][2].display=!1),j.visibility!==d&&"hidden"!==j.visibility&&(t.State.calls[f][2].visibility=!1),j.progress&&j.progress.call(h[1],h[1],r,Math.max(0,n+j.duration-b),n,q),1===r&&l(f)}}t.State.isTicking&&x(k)}function l(a,b){if(!t.State.calls[a])return!1;for(var c=t.State.calls[a][0],e=t.State.calls[a][1],f=t.State.calls[a][2],h=t.State.calls[a][4],i=!1,j=0,k=c.length;k>j;j++){var l=c[j].element;if(b||f.loop||("none"===f.display&&v.setPropertyValue(l,"display",f.display),"hidden"===f.visibility&&v.setPropertyValue(l,"visibility",f.visibility)),f.loop!==!0&&(m.queue(l)[1]===d||!/\.velocityQueueEntryFlag/i.test(m.queue(l)[1]))&&g(l)){g(l).isAnimating=!1,g(l).rootPropertyValueCache={};var n=!1;m.each(v.Lists.transforms3D,function(a,b){var c=/^scale/.test(b)?1:0,e=g(l).transformCache[b];g(l).transformCache[b]!==d&&new RegExp("^\\("+c+"[^.]").test(e)&&(n=!0,delete g(l).transformCache[b])}),f.mobileHA&&(n=!0,delete g(l).transformCache.translate3d),n&&v.flushTransformCache(l),v.Values.removeClass(l,"velocity-animating")}if(!b&&f.complete&&!f.loop&&j===k-1)try{f.complete.call(e,e)}catch(o){setTimeout(function(){throw o},1)}h&&f.loop!==!0&&h(e),g(l)&&f.loop===!0&&!b&&(m.each(g(l).tweensContainer,function(a,b){/^rotate/.test(a)&&360===parseFloat(b.endValue)&&(b.endValue=0,b.startValue=360),/^backgroundPosition/.test(a)&&100===parseFloat(b.endValue)&&"%"===b.unitType&&(b.endValue=0,b.startValue=100)}),t(l,"reverse",{loop:!0,delay:f.delay})),f.queue!==!1&&m.dequeue(l,f.queue)}t.State.calls[a]=!1;for(var p=0,q=t.State.calls.length;q>p;p++)if(t.State.calls[p]!==!1){i=!0;break}i===!1&&(t.State.isTicking=!1,delete t.State.calls,t.State.calls=[])}var m,n=function(){if(c.documentMode)return c.documentMode;for(var a=7;a>4;a--){var b=c.createElement("div");if(b.innerHTML="<!--[if IE "+a+"]><span></span><![endif]-->",b.getElementsByTagName("span").length)return b=null,a}return d}(),o=function(){var a=0;return b.webkitRequestAnimationFrame||b.mozRequestAnimationFrame||function(b){var c,d=(new Date).getTime();return c=Math.max(0,16-(d-a)),a=d+c,setTimeout(function(){b(d+c)},c)}}(),p={isString:function(a){return"string"==typeof a},isArray:Array.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)},isFunction:function(a){return"[object Function]"===Object.prototype.toString.call(a)},isNode:function(a){return a&&a.nodeType},isNodeList:function(a){return"object"==typeof a&&/^\[object (HTMLCollection|NodeList|Object)\]$/.test(Object.prototype.toString.call(a))&&a.length!==d&&(0===a.length||"object"==typeof a[0]&&a[0].nodeType>0)},isWrapped:function(a){return a&&(a.jquery||b.Zepto&&b.Zepto.zepto.isZ(a))},isSVG:function(a){return b.SVGElement&&a instanceof b.SVGElement},isEmptyObject:function(a){for(var b in a)return!1;return!0}},q=!1;if(a.fn&&a.fn.jquery?(m=a,q=!0):m=b.Velocity.Utilities,8>=n&&!q)throw new Error("Velocity: IE8 and below require jQuery to be loaded before Velocity.");if(7>=n)return void(jQuery.fn.velocity=jQuery.fn.animate);var r=400,s="swing",t={State:{isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),isAndroid:/Android/i.test(navigator.userAgent),isGingerbread:/Android 2\.3\.[3-7]/i.test(navigator.userAgent),isChrome:b.chrome,isFirefox:/Firefox/i.test(navigator.userAgent),prefixElement:c.createElement("div"),prefixMatches:{},scrollAnchor:null,scrollPropertyLeft:null,scrollPropertyTop:null,isTicking:!1,calls:[]},CSS:{},Utilities:m,Redirects:{},Easings:{},Promise:b.Promise,defaults:{queue:"",duration:r,easing:s,begin:d,complete:d,progress:d,display:d,visibility:d,loop:!1,delay:!1,mobileHA:!0,_cacheValues:!0},init:function(a){m.data(a,"velocity",{isSVG:p.isSVG(a),isAnimating:!1,computedStyle:null,tweensContainer:null,rootPropertyValueCache:{},transformCache:{}})},hook:null,mock:!1,version:{major:1,minor:2,patch:2},debug:!1};b.pageYOffset!==d?(t.State.scrollAnchor=b,t.State.scrollPropertyLeft="pageXOffset",t.State.scrollPropertyTop="pageYOffset"):(t.State.scrollAnchor=c.documentElement||c.body.parentNode||c.body,t.State.scrollPropertyLeft="scrollLeft",t.State.scrollPropertyTop="scrollTop");var u=function(){function a(a){return-a.tension*a.x-a.friction*a.v}function b(b,c,d){var e={x:b.x+d.dx*c,v:b.v+d.dv*c,tension:b.tension,friction:b.friction};return{dx:e.v,dv:a(e)}}function c(c,d){var e={dx:c.v,dv:a(c)},f=b(c,.5*d,e),g=b(c,.5*d,f),h=b(c,d,g),i=1/6*(e.dx+2*(f.dx+g.dx)+h.dx),j=1/6*(e.dv+2*(f.dv+g.dv)+h.dv);return c.x=c.x+i*d,c.v=c.v+j*d,c}return function d(a,b,e){var f,g,h,i={x:-1,v:0,tension:null,friction:null},j=[0],k=0,l=1e-4,m=.016;for(a=parseFloat(a)||500,b=parseFloat(b)||20,e=e||null,i.tension=a,i.friction=b,f=null!==e,f?(k=d(a,b),g=k/e*m):g=m;h=c(h||i,g),j.push(1+h.x),k+=16,Math.abs(h.x)>l&&Math.abs(h.v)>l;);return f?function(a){return j[a*(j.length-1)|0]}:k}}();t.Easings={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},spring:function(a){return 1-Math.cos(4.5*a*Math.PI)*Math.exp(6*-a)}},m.each([["ease",[.25,.1,.25,1]],["ease-in",[.42,0,1,1]],["ease-out",[0,0,.58,1]],["ease-in-out",[.42,0,.58,1]],["easeInSine",[.47,0,.745,.715]],["easeOutSine",[.39,.575,.565,1]],["easeInOutSine",[.445,.05,.55,.95]],["easeInQuad",[.55,.085,.68,.53]],["easeOutQuad",[.25,.46,.45,.94]],["easeInOutQuad",[.455,.03,.515,.955]],["easeInCubic",[.55,.055,.675,.19]],["easeOutCubic",[.215,.61,.355,1]],["easeInOutCubic",[.645,.045,.355,1]],["easeInQuart",[.895,.03,.685,.22]],["easeOutQuart",[.165,.84,.44,1]],["easeInOutQuart",[.77,0,.175,1]],["easeInQuint",[.755,.05,.855,.06]],["easeOutQuint",[.23,1,.32,1]],["easeInOutQuint",[.86,0,.07,1]],["easeInExpo",[.95,.05,.795,.035]],["easeOutExpo",[.19,1,.22,1]],["easeInOutExpo",[1,0,0,1]],["easeInCirc",[.6,.04,.98,.335]],["easeOutCirc",[.075,.82,.165,1]],["easeInOutCirc",[.785,.135,.15,.86]]],function(a,b){t.Easings[b[0]]=i.apply(null,b[1])});var v=t.CSS={RegEx:{isHex:/^#([A-f\d]{3}){1,2}$/i,valueUnwrap:/^[A-z]+\((.*)\)$/i,wrappedValueAlreadyExtracted:/[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,valueSplit:/([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/gi},Lists:{colors:["fill","stroke","stopColor","color","backgroundColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outlineColor"],transformsBase:["translateX","translateY","scale","scaleX","scaleY","skewX","skewY","rotateZ"],transforms3D:["transformPerspective","translateZ","scaleZ","rotateX","rotateY"]},Hooks:{templates:{textShadow:["Color X Y Blur","black 0px 0px 0px"],boxShadow:["Color X Y Blur Spread","black 0px 0px 0px 0px"],clip:["Top Right Bottom Left","0px 0px 0px 0px"],backgroundPosition:["X Y","0% 0%"],transformOrigin:["X Y Z","50% 50% 0px"],perspectiveOrigin:["X Y","50% 50%"]},registered:{},register:function(){for(var a=0;a<v.Lists.colors.length;a++){var b="color"===v.Lists.colors[a]?"0 0 0 1":"255 255 255 1";v.Hooks.templates[v.Lists.colors[a]]=["Red Green Blue Alpha",b]}var c,d,e;if(n)for(c in v.Hooks.templates){d=v.Hooks.templates[c],e=d[0].split(" ");var f=d[1].match(v.RegEx.valueSplit);"Color"===e[0]&&(e.push(e.shift()),f.push(f.shift()),v.Hooks.templates[c]=[e.join(" "),f.join(" ")])}for(c in v.Hooks.templates){d=v.Hooks.templates[c],e=d[0].split(" ");for(var a in e){var g=c+e[a],h=a;v.Hooks.registered[g]=[c,h]}}},getRoot:function(a){var b=v.Hooks.registered[a];return b?b[0]:a},cleanRootPropertyValue:function(a,b){return v.RegEx.valueUnwrap.test(b)&&(b=b.match(v.RegEx.valueUnwrap)[1]),v.Values.isCSSNullValue(b)&&(b=v.Hooks.templates[a][1]),b},extractValue:function(a,b){var c=v.Hooks.registered[a];if(c){var d=c[0],e=c[1];return b=v.Hooks.cleanRootPropertyValue(d,b),b.toString().match(v.RegEx.valueSplit)[e]}return b},injectValue:function(a,b,c){var d=v.Hooks.registered[a];if(d){var e,f,g=d[0],h=d[1];return c=v.Hooks.cleanRootPropertyValue(g,c),e=c.toString().match(v.RegEx.valueSplit),e[h]=b,f=e.join(" ")}return c}},Normalizations:{registered:{clip:function(a,b,c){switch(a){case"name":return"clip";case"extract":var d;return v.RegEx.wrappedValueAlreadyExtracted.test(c)?d=c:(d=c.toString().match(v.RegEx.valueUnwrap),d=d?d[1].replace(/,(\s+)?/g," "):c),d;case"inject":return"rect("+c+")"}},blur:function(a,b,c){switch(a){case"name":return t.State.isFirefox?"filter":"-webkit-filter";case"extract":var d=parseFloat(c);if(!d&&0!==d){var e=c.toString().match(/blur\(([0-9]+[A-z]+)\)/i);d=e?e[1]:0}return d;case"inject":return parseFloat(c)?"blur("+c+")":"none"}},opacity:function(a,b,c){if(8>=n)switch(a){case"name":return"filter";case"extract":var d=c.toString().match(/alpha\(opacity=(.*)\)/i);return c=d?d[1]/100:1;case"inject":return b.style.zoom=1,parseFloat(c)>=1?"":"alpha(opacity="+parseInt(100*parseFloat(c),10)+")"}else switch(a){case"name":return"opacity";case"extract":return c;case"inject":return c}}},register:function(){9>=n||t.State.isGingerbread||(v.Lists.transformsBase=v.Lists.transformsBase.concat(v.Lists.transforms3D));for(var a=0;a<v.Lists.transformsBase.length;a++)!function(){var b=v.Lists.transformsBase[a];v.Normalizations.registered[b]=function(a,c,e){switch(a){case"name":return"transform";case"extract":return g(c)===d||g(c).transformCache[b]===d?/^scale/i.test(b)?1:0:g(c).transformCache[b].replace(/[()]/g,"");case"inject":var f=!1;switch(b.substr(0,b.length-1)){case"translate":f=!/(%|px|em|rem|vw|vh|\d)$/i.test(e);break;case"scal":case"scale":t.State.isAndroid&&g(c).transformCache[b]===d&&1>e&&(e=1),f=!/(\d)$/i.test(e);break;case"skew":f=!/(deg|\d)$/i.test(e);break;case"rotate":f=!/(deg|\d)$/i.test(e)}return f||(g(c).transformCache[b]="("+e+")"),g(c).transformCache[b]}}}();for(var a=0;a<v.Lists.colors.length;a++)!function(){var b=v.Lists.colors[a];v.Normalizations.registered[b]=function(a,c,e){switch(a){case"name":return b;case"extract":var f;if(v.RegEx.wrappedValueAlreadyExtracted.test(e))f=e;else{var g,h={black:"rgb(0, 0, 0)",blue:"rgb(0, 0, 255)",gray:"rgb(128, 128, 128)",green:"rgb(0, 128, 0)",red:"rgb(255, 0, 0)",white:"rgb(255, 255, 255)"};/^[A-z]+$/i.test(e)?g=h[e]!==d?h[e]:h.black:v.RegEx.isHex.test(e)?g="rgb("+v.Values.hexToRgb(e).join(" ")+")":/^rgba?\(/i.test(e)||(g=h.black),f=(g||e).toString().match(v.RegEx.valueUnwrap)[1].replace(/,(\s+)?/g," ")}return 8>=n||3!==f.split(" ").length||(f+=" 1"),f;case"inject":return 8>=n?4===e.split(" ").length&&(e=e.split(/\s+/).slice(0,3).join(" ")):3===e.split(" ").length&&(e+=" 1"),(8>=n?"rgb":"rgba")+"("+e.replace(/\s+/g,",").replace(/\.(\d)+(?=,)/g,"")+")"}}}()}},Names:{camelCase:function(a){return a.replace(/-(\w)/g,function(a,b){return b.toUpperCase()})},SVGAttribute:function(a){var b="width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2";return(n||t.State.isAndroid&&!t.State.isChrome)&&(b+="|transform"),new RegExp("^("+b+")$","i").test(a)},prefixCheck:function(a){if(t.State.prefixMatches[a])return[t.State.prefixMatches[a],!0];for(var b=["","Webkit","Moz","ms","O"],c=0,d=b.length;d>c;c++){var e;if(e=0===c?a:b[c]+a.replace(/^\w/,function(a){return a.toUpperCase()}),p.isString(t.State.prefixElement.style[e]))return t.State.prefixMatches[a]=e,[e,!0]}return[a,!1]}},Values:{hexToRgb:function(a){var b,c=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,d=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i;return a=a.replace(c,function(a,b,c,d){return b+b+c+c+d+d}),b=d.exec(a),b?[parseInt(b[1],16),parseInt(b[2],16),parseInt(b[3],16)]:[0,0,0]},isCSSNullValue:function(a){return 0==a||/^(none|auto|transparent|(rgba\(0, ?0, ?0, ?0\)))$/i.test(a)},getUnitType:function(a){return/^(rotate|skew)/i.test(a)?"deg":/(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(a)?"":"px"},getDisplayType:function(a){var b=a&&a.tagName.toString().toLowerCase();return/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(b)?"inline":/^(li)$/i.test(b)?"list-item":/^(tr)$/i.test(b)?"table-row":/^(table)$/i.test(b)?"table":/^(tbody)$/i.test(b)?"table-row-group":"block"},addClass:function(a,b){a.classList?a.classList.add(b):a.className+=(a.className.length?" ":"")+b},removeClass:function(a,b){a.classList?a.classList.remove(b):a.className=a.className.toString().replace(new RegExp("(^|\\s)"+b.split(" ").join("|")+"(\\s|$)","gi")," ")}},getPropertyValue:function(a,c,e,f){function h(a,c){function e(){j&&v.setPropertyValue(a,"display","none")}var i=0;if(8>=n)i=m.css(a,c);else{var j=!1;if(/^(width|height)$/.test(c)&&0===v.getPropertyValue(a,"display")&&(j=!0,v.setPropertyValue(a,"display",v.Values.getDisplayType(a))),!f){if("height"===c&&"border-box"!==v.getPropertyValue(a,"boxSizing").toString().toLowerCase()){var k=a.offsetHeight-(parseFloat(v.getPropertyValue(a,"borderTopWidth"))||0)-(parseFloat(v.getPropertyValue(a,"borderBottomWidth"))||0)-(parseFloat(v.getPropertyValue(a,"paddingTop"))||0)-(parseFloat(v.getPropertyValue(a,"paddingBottom"))||0);return e(),k}if("width"===c&&"border-box"!==v.getPropertyValue(a,"boxSizing").toString().toLowerCase()){var l=a.offsetWidth-(parseFloat(v.getPropertyValue(a,"borderLeftWidth"))||0)-(parseFloat(v.getPropertyValue(a,"borderRightWidth"))||0)-(parseFloat(v.getPropertyValue(a,"paddingLeft"))||0)-(parseFloat(v.getPropertyValue(a,"paddingRight"))||0);return e(),l}}var o;o=g(a)===d?b.getComputedStyle(a,null):g(a).computedStyle?g(a).computedStyle:g(a).computedStyle=b.getComputedStyle(a,null),"borderColor"===c&&(c="borderTopColor"),i=9===n&&"filter"===c?o.getPropertyValue(c):o[c],(""===i||null===i)&&(i=a.style[c]),e()}if("auto"===i&&/^(top|right|bottom|left)$/i.test(c)){var p=h(a,"position");("fixed"===p||"absolute"===p&&/top|left/i.test(c))&&(i=m(a).position()[c]+"px")}return i}var i;if(v.Hooks.registered[c]){var j=c,k=v.Hooks.getRoot(j);e===d&&(e=v.getPropertyValue(a,v.Names.prefixCheck(k)[0])),v.Normalizations.registered[k]&&(e=v.Normalizations.registered[k]("extract",a,e)),i=v.Hooks.extractValue(j,e)}else if(v.Normalizations.registered[c]){var l,o;l=v.Normalizations.registered[c]("name",a),"transform"!==l&&(o=h(a,v.Names.prefixCheck(l)[0]),v.Values.isCSSNullValue(o)&&v.Hooks.templates[c]&&(o=v.Hooks.templates[c][1])),i=v.Normalizations.registered[c]("extract",a,o)}if(!/^[\d-]/.test(i))if(g(a)&&g(a).isSVG&&v.Names.SVGAttribute(c))if(/^(height|width)$/i.test(c))try{i=a.getBBox()[c]}catch(p){i=0}else i=a.getAttribute(c);else i=h(a,v.Names.prefixCheck(c)[0]);return v.Values.isCSSNullValue(i)&&(i=0),t.debug>=2&&console.log("Get "+c+": "+i),i},setPropertyValue:function(a,c,d,e,f){var h=c;if("scroll"===c)f.container?f.container["scroll"+f.direction]=d:"Left"===f.direction?b.scrollTo(d,f.alternateValue):b.scrollTo(f.alternateValue,d);else if(v.Normalizations.registered[c]&&"transform"===v.Normalizations.registered[c]("name",a))v.Normalizations.registered[c]("inject",a,d),h="transform",d=g(a).transformCache[c];else{if(v.Hooks.registered[c]){var i=c,j=v.Hooks.getRoot(c);e=e||v.getPropertyValue(a,j),d=v.Hooks.injectValue(i,d,e),c=j}if(v.Normalizations.registered[c]&&(d=v.Normalizations.registered[c]("inject",a,d),c=v.Normalizations.registered[c]("name",a)),h=v.Names.prefixCheck(c)[0],8>=n)try{a.style[h]=d}catch(k){t.debug&&console.log("Browser does not support ["+d+"] for ["+h+"]")}else g(a)&&g(a).isSVG&&v.Names.SVGAttribute(c)?a.setAttribute(c,d):a.style[h]=d;t.debug>=2&&console.log("Set "+c+" ("+h+"): "+d)}return[h,d]},flushTransformCache:function(a){function b(b){return parseFloat(v.getPropertyValue(a,b))}var c="";if((n||t.State.isAndroid&&!t.State.isChrome)&&g(a).isSVG){var d={translate:[b("translateX"),b("translateY")],skewX:[b("skewX")],skewY:[b("skewY")],scale:1!==b("scale")?[b("scale"),b("scale")]:[b("scaleX"),b("scaleY")],rotate:[b("rotateZ"),0,0]};m.each(g(a).transformCache,function(a){/^translate/i.test(a)?a="translate":/^scale/i.test(a)?a="scale":/^rotate/i.test(a)&&(a="rotate"),d[a]&&(c+=a+"("+d[a].join(" ")+") ",delete d[a])})}else{var e,f;m.each(g(a).transformCache,function(b){return e=g(a).transformCache[b],"transformPerspective"===b?(f=e,!0):(9===n&&"rotateZ"===b&&(b="rotate"),void(c+=b+e+" "))}),f&&(c="perspective"+f+" "+c)}v.setPropertyValue(a,"transform",c)}};v.Hooks.register(),v.Normalizations.register(),t.hook=function(a,b,c){var e=d;return a=f(a),m.each(a,function(a,f){if(g(f)===d&&t.init(f),c===d)e===d&&(e=t.CSS.getPropertyValue(f,b));else{var h=t.CSS.setPropertyValue(f,b,c);"transform"===h[0]&&t.CSS.flushTransformCache(f),e=h}}),e};var w=function(){function a(){return h?B.promise||null:i}function e(){function a(a){function l(a,b){var c=d,e=d,g=d;return p.isArray(a)?(c=a[0],!p.isArray(a[1])&&/^[\d-]/.test(a[1])||p.isFunction(a[1])||v.RegEx.isHex.test(a[1])?g=a[1]:(p.isString(a[1])&&!v.RegEx.isHex.test(a[1])||p.isArray(a[1]))&&(e=b?a[1]:j(a[1],h.duration),a[2]!==d&&(g=a[2]))):c=a,b||(e=e||h.easing),p.isFunction(c)&&(c=c.call(f,y,x)),p.isFunction(g)&&(g=g.call(f,y,x)),[c||0,e,g]}function n(a,b){var c,d;return d=(b||"0").toString().toLowerCase().replace(/[%A-z]+$/,function(a){return c=a,""}),c||(c=v.Values.getUnitType(a)),[d,c]}function r(){var a={myParent:f.parentNode||c.body,position:v.getPropertyValue(f,"position"),fontSize:v.getPropertyValue(f,"fontSize")},d=a.position===I.lastPosition&&a.myParent===I.lastParent,e=a.fontSize===I.lastFontSize;I.lastParent=a.myParent,I.lastPosition=a.position,I.lastFontSize=a.fontSize;var h=100,i={};if(e&&d)i.emToPx=I.lastEmToPx,i.percentToPxWidth=I.lastPercentToPxWidth,i.percentToPxHeight=I.lastPercentToPxHeight;else{var j=g(f).isSVG?c.createElementNS("http://www.w3.org/2000/svg","rect"):c.createElement("div");t.init(j),a.myParent.appendChild(j),m.each(["overflow","overflowX","overflowY"],function(a,b){t.CSS.setPropertyValue(j,b,"hidden")}),t.CSS.setPropertyValue(j,"position",a.position),t.CSS.setPropertyValue(j,"fontSize",a.fontSize),t.CSS.setPropertyValue(j,"boxSizing","content-box"),m.each(["minWidth","maxWidth","width","minHeight","maxHeight","height"],function(a,b){t.CSS.setPropertyValue(j,b,h+"%")}),t.CSS.setPropertyValue(j,"paddingLeft",h+"em"),i.percentToPxWidth=I.lastPercentToPxWidth=(parseFloat(v.getPropertyValue(j,"width",null,!0))||1)/h,i.percentToPxHeight=I.lastPercentToPxHeight=(parseFloat(v.getPropertyValue(j,"height",null,!0))||1)/h,i.emToPx=I.lastEmToPx=(parseFloat(v.getPropertyValue(j,"paddingLeft"))||1)/h,a.myParent.removeChild(j)}return null===I.remToPx&&(I.remToPx=parseFloat(v.getPropertyValue(c.body,"fontSize"))||16),null===I.vwToPx&&(I.vwToPx=parseFloat(b.innerWidth)/100,I.vhToPx=parseFloat(b.innerHeight)/100),i.remToPx=I.remToPx,i.vwToPx=I.vwToPx,i.vhToPx=I.vhToPx,t.debug>=1&&console.log("Unit ratios: "+JSON.stringify(i),f),i}if(h.begin&&0===y)try{h.begin.call(o,o)}catch(u){setTimeout(function(){throw u},1)}if("scroll"===C){var w,z,A,D=/^x$/i.test(h.axis)?"Left":"Top",E=parseFloat(h.offset)||0;h.container?p.isWrapped(h.container)||p.isNode(h.container)?(h.container=h.container[0]||h.container,w=h.container["scroll"+D],A=w+m(f).position()[D.toLowerCase()]+E):h.container=null:(w=t.State.scrollAnchor[t.State["scrollProperty"+D]],z=t.State.scrollAnchor[t.State["scrollProperty"+("Left"===D?"Top":"Left")]],A=m(f).offset()[D.toLowerCase()]+E),i={scroll:{rootPropertyValue:!1,startValue:w,currentValue:w,endValue:A,unitType:"",easing:h.easing,scrollData:{container:h.container,direction:D,alternateValue:z}},element:f},t.debug&&console.log("tweensContainer (scroll): ",i.scroll,f)}else if("reverse"===C){if(!g(f).tweensContainer)return void m.dequeue(f,h.queue);"none"===g(f).opts.display&&(g(f).opts.display="auto"),"hidden"===g(f).opts.visibility&&(g(f).opts.visibility="visible"),g(f).opts.loop=!1,g(f).opts.begin=null,g(f).opts.complete=null,s.easing||delete h.easing,s.duration||delete h.duration,h=m.extend({},g(f).opts,h);var F=m.extend(!0,{},g(f).tweensContainer);for(var G in F)if("element"!==G){var H=F[G].startValue;F[G].startValue=F[G].currentValue=F[G].endValue,F[G].endValue=H,p.isEmptyObject(s)||(F[G].easing=h.easing),t.debug&&console.log("reverse tweensContainer ("+G+"): "+JSON.stringify(F[G]),f)}i=F}else if("start"===C){var F;g(f).tweensContainer&&g(f).isAnimating===!0&&(F=g(f).tweensContainer),m.each(q,function(a,b){if(RegExp("^"+v.Lists.colors.join("$|^")+"$").test(a)){var c=l(b,!0),e=c[0],f=c[1],g=c[2];if(v.RegEx.isHex.test(e)){for(var h=["Red","Green","Blue"],i=v.Values.hexToRgb(e),j=g?v.Values.hexToRgb(g):d,k=0;k<h.length;k++){var m=[i[k]];f&&m.push(f),j!==d&&m.push(j[k]),q[a+h[k]]=m}delete q[a]}}});for(var K in q){var L=l(q[K]),M=L[0],N=L[1],O=L[2];K=v.Names.camelCase(K);var P=v.Hooks.getRoot(K),Q=!1;if(g(f).isSVG||"tween"===P||v.Names.prefixCheck(P)[1]!==!1||v.Normalizations.registered[P]!==d){(h.display!==d&&null!==h.display&&"none"!==h.display||h.visibility!==d&&"hidden"!==h.visibility)&&/opacity|filter/.test(K)&&!O&&0!==M&&(O=0),h._cacheValues&&F&&F[K]?(O===d&&(O=F[K].endValue+F[K].unitType),Q=g(f).rootPropertyValueCache[P]):v.Hooks.registered[K]?O===d?(Q=v.getPropertyValue(f,P),O=v.getPropertyValue(f,K,Q)):Q=v.Hooks.templates[P][1]:O===d&&(O=v.getPropertyValue(f,K));var R,S,T,U=!1;if(R=n(K,O),O=R[0],T=R[1],R=n(K,M),M=R[0].replace(/^([+-\/*])=/,function(a,b){return U=b,""}),S=R[1],O=parseFloat(O)||0,M=parseFloat(M)||0,"%"===S&&(/^(fontSize|lineHeight)$/.test(K)?(M/=100,S="em"):/^scale/.test(K)?(M/=100,S=""):/(Red|Green|Blue)$/i.test(K)&&(M=M/100*255,S="")),/[\/*]/.test(U))S=T;else if(T!==S&&0!==O)if(0===M)S=T;else{e=e||r();var V=/margin|padding|left|right|width|text|word|letter/i.test(K)||/X$/.test(K)||"x"===K?"x":"y";
7
+ switch(T){case"%":O*="x"===V?e.percentToPxWidth:e.percentToPxHeight;break;case"px":break;default:O*=e[T+"ToPx"]}switch(S){case"%":O*=1/("x"===V?e.percentToPxWidth:e.percentToPxHeight);break;case"px":break;default:O*=1/e[S+"ToPx"]}}switch(U){case"+":M=O+M;break;case"-":M=O-M;break;case"*":M=O*M;break;case"/":M=O/M}i[K]={rootPropertyValue:Q,startValue:O,currentValue:O,endValue:M,unitType:S,easing:N},t.debug&&console.log("tweensContainer ("+K+"): "+JSON.stringify(i[K]),f)}else t.debug&&console.log("Skipping ["+P+"] due to a lack of browser support.")}i.element=f}i.element&&(v.Values.addClass(f,"velocity-animating"),J.push(i),""===h.queue&&(g(f).tweensContainer=i,g(f).opts=h),g(f).isAnimating=!0,y===x-1?(t.State.calls.push([J,o,h,null,B.resolver]),t.State.isTicking===!1&&(t.State.isTicking=!0,k())):y++)}var e,f=this,h=m.extend({},t.defaults,s),i={};switch(g(f)===d&&t.init(f),parseFloat(h.delay)&&h.queue!==!1&&m.queue(f,h.queue,function(a){t.velocityQueueEntryFlag=!0,g(f).delayTimer={setTimeout:setTimeout(a,parseFloat(h.delay)),next:a}}),h.duration.toString().toLowerCase()){case"fast":h.duration=200;break;case"normal":h.duration=r;break;case"slow":h.duration=600;break;default:h.duration=parseFloat(h.duration)||1}t.mock!==!1&&(t.mock===!0?h.duration=h.delay=1:(h.duration*=parseFloat(t.mock)||1,h.delay*=parseFloat(t.mock)||1)),h.easing=j(h.easing,h.duration),h.begin&&!p.isFunction(h.begin)&&(h.begin=null),h.progress&&!p.isFunction(h.progress)&&(h.progress=null),h.complete&&!p.isFunction(h.complete)&&(h.complete=null),h.display!==d&&null!==h.display&&(h.display=h.display.toString().toLowerCase(),"auto"===h.display&&(h.display=t.CSS.Values.getDisplayType(f))),h.visibility!==d&&null!==h.visibility&&(h.visibility=h.visibility.toString().toLowerCase()),h.mobileHA=h.mobileHA&&t.State.isMobile&&!t.State.isGingerbread,h.queue===!1?h.delay?setTimeout(a,h.delay):a():m.queue(f,h.queue,function(b,c){return c===!0?(B.promise&&B.resolver(o),!0):(t.velocityQueueEntryFlag=!0,void a(b))}),""!==h.queue&&"fx"!==h.queue||"inprogress"===m.queue(f)[0]||m.dequeue(f)}var h,i,n,o,q,s,u=arguments[0]&&(arguments[0].p||m.isPlainObject(arguments[0].properties)&&!arguments[0].properties.names||p.isString(arguments[0].properties));if(p.isWrapped(this)?(h=!1,n=0,o=this,i=this):(h=!0,n=1,o=u?arguments[0].elements||arguments[0].e:arguments[0]),o=f(o)){u?(q=arguments[0].properties||arguments[0].p,s=arguments[0].options||arguments[0].o):(q=arguments[n],s=arguments[n+1]);var x=o.length,y=0;if(!/^(stop|finish)$/i.test(q)&&!m.isPlainObject(s)){var z=n+1;s={};for(var A=z;A<arguments.length;A++)p.isArray(arguments[A])||!/^(fast|normal|slow)$/i.test(arguments[A])&&!/^\d/.test(arguments[A])?p.isString(arguments[A])||p.isArray(arguments[A])?s.easing=arguments[A]:p.isFunction(arguments[A])&&(s.complete=arguments[A]):s.duration=arguments[A]}var B={promise:null,resolver:null,rejecter:null};h&&t.Promise&&(B.promise=new t.Promise(function(a,b){B.resolver=a,B.rejecter=b}));var C;switch(q){case"scroll":C="scroll";break;case"reverse":C="reverse";break;case"finish":case"stop":m.each(o,function(a,b){g(b)&&g(b).delayTimer&&(clearTimeout(g(b).delayTimer.setTimeout),g(b).delayTimer.next&&g(b).delayTimer.next(),delete g(b).delayTimer)});var D=[];return m.each(t.State.calls,function(a,b){b&&m.each(b[1],function(c,e){var f=s===d?"":s;return f!==!0&&b[2].queue!==f&&(s!==d||b[2].queue!==!1)||void m.each(o,function(c,d){d===e&&((s===!0||p.isString(s))&&(m.each(m.queue(d,p.isString(s)?s:""),function(a,b){p.isFunction(b)&&b(null,!0)}),m.queue(d,p.isString(s)?s:"",[])),"stop"===q?(g(d)&&g(d).tweensContainer&&f!==!1&&m.each(g(d).tweensContainer,function(a,b){b.endValue=b.currentValue}),D.push(a)):"finish"===q&&(b[2].duration=1))})})}),"stop"===q&&(m.each(D,function(a,b){l(b,!0)}),B.promise&&B.resolver(o)),a();default:if(!m.isPlainObject(q)||p.isEmptyObject(q)){if(p.isString(q)&&t.Redirects[q]){var E=m.extend({},s),F=E.duration,G=E.delay||0;return E.backwards===!0&&(o=m.extend(!0,[],o).reverse()),m.each(o,function(a,b){parseFloat(E.stagger)?E.delay=G+parseFloat(E.stagger)*a:p.isFunction(E.stagger)&&(E.delay=G+E.stagger.call(b,a,x)),E.drag&&(E.duration=parseFloat(F)||(/^(callout|transition)/.test(q)?1e3:r),E.duration=Math.max(E.duration*(E.backwards?1-a/x:(a+1)/x),.75*E.duration,200)),t.Redirects[q].call(b,b,E||{},a,x,o,B.promise?B:d)}),a()}var H="Velocity: First argument ("+q+") was not a property map, a known action, or a registered redirect. Aborting.";return B.promise?B.rejecter(new Error(H)):console.log(H),a()}C="start"}var I={lastParent:null,lastPosition:null,lastFontSize:null,lastPercentToPxWidth:null,lastPercentToPxHeight:null,lastEmToPx:null,remToPx:null,vwToPx:null,vhToPx:null},J=[];m.each(o,function(a,b){p.isNode(b)&&e.call(b)});var K,E=m.extend({},t.defaults,s);if(E.loop=parseInt(E.loop),K=2*E.loop-1,E.loop)for(var L=0;K>L;L++){var M={delay:E.delay,progress:E.progress};L===K-1&&(M.display=E.display,M.visibility=E.visibility,M.complete=E.complete),w(o,"reverse",M)}return a()}};t=m.extend(w,t),t.animate=w;var x=b.requestAnimationFrame||o;return t.State.isMobile||c.hidden===d||c.addEventListener("visibilitychange",function(){c.hidden?(x=function(a){return setTimeout(function(){a(!0)},16)},k()):x=b.requestAnimationFrame||o}),a.Velocity=t,a!==b&&(a.fn.velocity=w,a.fn.velocity.defaults=t.defaults),m.each(["Down","Up"],function(a,b){t.Redirects["slide"+b]=function(a,c,e,f,g,h){var i=m.extend({},c),j=i.begin,k=i.complete,l={height:"",marginTop:"",marginBottom:"",paddingTop:"",paddingBottom:""},n={};i.display===d&&(i.display="Down"===b?"inline"===t.CSS.Values.getDisplayType(a)?"inline-block":"block":"none"),i.begin=function(){j&&j.call(g,g);for(var c in l){n[c]=a.style[c];var d=t.CSS.getPropertyValue(a,c);l[c]="Down"===b?[d,0]:[0,d]}n.overflow=a.style.overflow,a.style.overflow="hidden"},i.complete=function(){for(var b in n)a.style[b]=n[b];k&&k.call(g,g),h&&h.resolver(g)},t(a,l,i)}}),m.each(["In","Out"],function(a,b){t.Redirects["fade"+b]=function(a,c,e,f,g,h){var i=m.extend({},c),j={opacity:"In"===b?1:0},k=i.complete;i.complete=e!==f-1?i.begin=null:function(){k&&k.call(g,g),h&&h.resolver(g)},i.display===d&&(i.display="In"===b?"auto":"none"),t(this,j,i)}}),t}(window.jQuery||window.Zepto||window,window,document)})),!function(a,b,c,d){"use strict";function e(a,b,c){return setTimeout(k(a,c),b)}function f(a,b,c){return!!Array.isArray(a)&&(g(a,c[b],c),!0)}function g(a,b,c){var e;if(a)if(a.forEach)a.forEach(b,c);else if(a.length!==d)for(e=0;e<a.length;)b.call(c,a[e],e,a),e++;else for(e in a)a.hasOwnProperty(e)&&b.call(c,a[e],e,a)}function h(a,b,c){for(var e=Object.keys(b),f=0;f<e.length;)(!c||c&&a[e[f]]===d)&&(a[e[f]]=b[e[f]]),f++;return a}function i(a,b){return h(a,b,!0)}function j(a,b,c){var d,e=b.prototype;d=a.prototype=Object.create(e),d.constructor=a,d._super=e,c&&h(d,c)}function k(a,b){return function(){return a.apply(b,arguments)}}function l(a,b){return typeof a==ka?a.apply(b?b[0]||d:d,b):a}function m(a,b){return a===d?b:a}function n(a,b,c){g(r(b),function(b){a.addEventListener(b,c,!1)})}function o(a,b,c){g(r(b),function(b){a.removeEventListener(b,c,!1)})}function p(a,b){for(;a;){if(a==b)return!0;a=a.parentNode}return!1}function q(a,b){return a.indexOf(b)>-1}function r(a){return a.trim().split(/\s+/g)}function s(a,b,c){if(a.indexOf&&!c)return a.indexOf(b);for(var d=0;d<a.length;){if(c&&a[d][c]==b||!c&&a[d]===b)return d;d++}return-1}function t(a){return Array.prototype.slice.call(a,0)}function u(a,b,c){for(var d=[],e=[],f=0;f<a.length;){var g=b?a[f][b]:a[f];s(e,g)<0&&d.push(a[f]),e[f]=g,f++}return c&&(d=b?d.sort(function(a,c){return a[b]>c[b]}):d.sort()),d}function v(a,b){for(var c,e,f=b[0].toUpperCase()+b.slice(1),g=0;g<ia.length;){if(c=ia[g],e=c?c+f:b,e in a)return e;g++}return d}function w(){return oa++}function x(a){var b=a.ownerDocument;return b.defaultView||b.parentWindow}function y(a,b){var c=this;this.manager=a,this.callback=b,this.element=a.element,this.target=a.options.inputTarget,this.domHandler=function(b){l(a.options.enable,[a])&&c.handler(b)},this.init()}function z(a){var b,c=a.options.inputClass;return new(b=c?c:ra?N:sa?Q:qa?S:M)(a,A)}function A(a,b,c){var d=c.pointers.length,e=c.changedPointers.length,f=b&ya&&0===d-e,g=b&(Aa|Ba)&&0===d-e;c.isFirst=!!f,c.isFinal=!!g,f&&(a.session={}),c.eventType=b,B(a,c),a.emit("hammer.input",c),a.recognize(c),a.session.prevInput=c}function B(a,b){var c=a.session,d=b.pointers,e=d.length;c.firstInput||(c.firstInput=E(b)),e>1&&!c.firstMultiple?c.firstMultiple=E(b):1===e&&(c.firstMultiple=!1);var f=c.firstInput,g=c.firstMultiple,h=g?g.center:f.center,i=b.center=F(d);b.timeStamp=na(),b.deltaTime=b.timeStamp-f.timeStamp,b.angle=J(h,i),b.distance=I(h,i),C(c,b),b.offsetDirection=H(b.deltaX,b.deltaY),b.scale=g?L(g.pointers,d):1,b.rotation=g?K(g.pointers,d):0,D(c,b);var j=a.element;p(b.srcEvent.target,j)&&(j=b.srcEvent.target),b.target=j}function C(a,b){var c=b.center,d=a.offsetDelta||{},e=a.prevDelta||{},f=a.prevInput||{};(b.eventType===ya||f.eventType===Aa)&&(e=a.prevDelta={x:f.deltaX||0,y:f.deltaY||0},d=a.offsetDelta={x:c.x,y:c.y}),b.deltaX=e.x+(c.x-d.x),b.deltaY=e.y+(c.y-d.y)}function D(a,b){var c,e,f,g,h=a.lastInterval||b,i=b.timeStamp-h.timeStamp;if(b.eventType!=Ba&&(i>xa||h.velocity===d)){var j=h.deltaX-b.deltaX,k=h.deltaY-b.deltaY,l=G(i,j,k);e=l.x,f=l.y,c=ma(l.x)>ma(l.y)?l.x:l.y,g=H(j,k),a.lastInterval=b}else c=h.velocity,e=h.velocityX,f=h.velocityY,g=h.direction;b.velocity=c,b.velocityX=e,b.velocityY=f,b.direction=g}function E(a){for(var b=[],c=0;c<a.pointers.length;)b[c]={clientX:la(a.pointers[c].clientX),clientY:la(a.pointers[c].clientY)},c++;return{timeStamp:na(),pointers:b,center:F(b),deltaX:a.deltaX,deltaY:a.deltaY}}function F(a){var b=a.length;if(1===b)return{x:la(a[0].clientX),y:la(a[0].clientY)};for(var c=0,d=0,e=0;b>e;)c+=a[e].clientX,d+=a[e].clientY,e++;return{x:la(c/b),y:la(d/b)}}function G(a,b,c){return{x:b/a||0,y:c/a||0}}function H(a,b){return a===b?Ca:ma(a)>=ma(b)?a>0?Da:Ea:b>0?Fa:Ga}function I(a,b,c){c||(c=Ka);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return Math.sqrt(d*d+e*e)}function J(a,b,c){c||(c=Ka);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return 180*Math.atan2(e,d)/Math.PI}function K(a,b){return J(b[1],b[0],La)-J(a[1],a[0],La)}function L(a,b){return I(b[0],b[1],La)/I(a[0],a[1],La)}function M(){this.evEl=Na,this.evWin=Oa,this.allow=!0,this.pressed=!1,y.apply(this,arguments)}function N(){this.evEl=Ra,this.evWin=Sa,y.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function O(){this.evTarget=Ua,this.evWin=Va,this.started=!1,y.apply(this,arguments)}function P(a,b){var c=t(a.touches),d=t(a.changedTouches);return b&(Aa|Ba)&&(c=u(c.concat(d),"identifier",!0)),[c,d]}function Q(){this.evTarget=Xa,this.targetIds={},y.apply(this,arguments)}function R(a,b){var c=t(a.touches),d=this.targetIds;if(b&(ya|za)&&1===c.length)return d[c[0].identifier]=!0,[c,c];var e,f,g=t(a.changedTouches),h=[],i=this.target;if(f=c.filter(function(a){return p(a.target,i)}),b===ya)for(e=0;e<f.length;)d[f[e].identifier]=!0,e++;for(e=0;e<g.length;)d[g[e].identifier]&&h.push(g[e]),b&(Aa|Ba)&&delete d[g[e].identifier],e++;return h.length?[u(f.concat(h),"identifier",!0),h]:void 0}function S(){y.apply(this,arguments);var a=k(this.handler,this);this.touch=new Q(this.manager,a),this.mouse=new M(this.manager,a)}function T(a,b){this.manager=a,this.set(b)}function U(a){if(q(a,bb))return bb;var b=q(a,cb),c=q(a,db);return b&&c?cb+" "+db:b||c?b?cb:db:q(a,ab)?ab:_a}function V(a){this.id=w(),this.manager=null,this.options=i(a||{},this.defaults),this.options.enable=m(this.options.enable,!0),this.state=eb,this.simultaneous={},this.requireFail=[]}function W(a){return a&jb?"cancel":a&hb?"end":a&gb?"move":a&fb?"start":""}function X(a){return a==Ga?"down":a==Fa?"up":a==Da?"left":a==Ea?"right":""}function Y(a,b){var c=b.manager;return c?c.get(a):a}function Z(){V.apply(this,arguments)}function $(){Z.apply(this,arguments),this.pX=null,this.pY=null}function _(){Z.apply(this,arguments)}function aa(){V.apply(this,arguments),this._timer=null,this._input=null}function ba(){Z.apply(this,arguments)}function ca(){Z.apply(this,arguments)}function da(){V.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function ea(a,b){return b=b||{},b.recognizers=m(b.recognizers,ea.defaults.preset),new fa(a,b)}function fa(a,b){b=b||{},this.options=i(b,ea.defaults),this.options.inputTarget=this.options.inputTarget||a,this.handlers={},this.session={},this.recognizers=[],this.element=a,this.input=z(this),this.touchAction=new T(this,this.options.touchAction),ga(this,!0),g(b.recognizers,function(a){var b=this.add(new a[0](a[1]));a[2]&&b.recognizeWith(a[2]),a[3]&&b.requireFailure(a[3])},this)}function ga(a,b){var c=a.element;g(a.options.cssProps,function(a,d){c.style[v(c.style,d)]=b?a:""})}function ha(a,c){var d=b.createEvent("Event");d.initEvent(a,!0,!0),d.gesture=c,c.target.dispatchEvent(d)}var ia=["","webkit","moz","MS","ms","o"],ja=b.createElement("div"),ka="function",la=Math.round,ma=Math.abs,na=Date.now,oa=1,pa=/mobile|tablet|ip(ad|hone|od)|android/i,qa="ontouchstart"in a,ra=v(a,"PointerEvent")!==d,sa=qa&&pa.test(navigator.userAgent),ta="touch",ua="pen",va="mouse",wa="kinect",xa=25,ya=1,za=2,Aa=4,Ba=8,Ca=1,Da=2,Ea=4,Fa=8,Ga=16,Ha=Da|Ea,Ia=Fa|Ga,Ja=Ha|Ia,Ka=["x","y"],La=["clientX","clientY"];y.prototype={handler:function(){},init:function(){this.evEl&&n(this.element,this.evEl,this.domHandler),this.evTarget&&n(this.target,this.evTarget,this.domHandler),this.evWin&&n(x(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&o(this.element,this.evEl,this.domHandler),this.evTarget&&o(this.target,this.evTarget,this.domHandler),this.evWin&&o(x(this.element),this.evWin,this.domHandler)}};var Ma={mousedown:ya,mousemove:za,mouseup:Aa},Na="mousedown",Oa="mousemove mouseup";j(M,y,{handler:function(a){var b=Ma[a.type];b&ya&&0===a.button&&(this.pressed=!0),b&za&&1!==a.which&&(b=Aa),this.pressed&&this.allow&&(b&Aa&&(this.pressed=!1),this.callback(this.manager,b,{pointers:[a],changedPointers:[a],pointerType:va,srcEvent:a}))}});var Pa={pointerdown:ya,pointermove:za,pointerup:Aa,pointercancel:Ba,pointerout:Ba},Qa={2:ta,3:ua,4:va,5:wa},Ra="pointerdown",Sa="pointermove pointerup pointercancel";a.MSPointerEvent&&(Ra="MSPointerDown",Sa="MSPointerMove MSPointerUp MSPointerCancel"),j(N,y,{handler:function(a){var b=this.store,c=!1,d=a.type.toLowerCase().replace("ms",""),e=Pa[d],f=Qa[a.pointerType]||a.pointerType,g=f==ta,h=s(b,a.pointerId,"pointerId");e&ya&&(0===a.button||g)?0>h&&(b.push(a),h=b.length-1):e&(Aa|Ba)&&(c=!0),0>h||(b[h]=a,this.callback(this.manager,e,{pointers:b,changedPointers:[a],pointerType:f,srcEvent:a}),c&&b.splice(h,1))}});var Ta={touchstart:ya,touchmove:za,touchend:Aa,touchcancel:Ba},Ua="touchstart",Va="touchstart touchmove touchend touchcancel";j(O,y,{handler:function(a){var b=Ta[a.type];if(b===ya&&(this.started=!0),this.started){var c=P.call(this,a,b);b&(Aa|Ba)&&0===c[0].length-c[1].length&&(this.started=!1),this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:ta,srcEvent:a})}}});var Wa={touchstart:ya,touchmove:za,touchend:Aa,touchcancel:Ba},Xa="touchstart touchmove touchend touchcancel";j(Q,y,{handler:function(a){var b=Wa[a.type],c=R.call(this,a,b);c&&this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:ta,srcEvent:a})}}),j(S,y,{handler:function(a,b,c){var d=c.pointerType==ta,e=c.pointerType==va;if(d)this.mouse.allow=!1;else if(e&&!this.mouse.allow)return;b&(Aa|Ba)&&(this.mouse.allow=!0),this.callback(a,b,c)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var Ya=v(ja.style,"touchAction"),Za=Ya!==d,$a="compute",_a="auto",ab="manipulation",bb="none",cb="pan-x",db="pan-y";T.prototype={set:function(a){a==$a&&(a=this.compute()),Za&&(this.manager.element.style[Ya]=a),this.actions=a.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var a=[];return g(this.manager.recognizers,function(b){l(b.options.enable,[b])&&(a=a.concat(b.getTouchAction()))}),U(a.join(" "))},preventDefaults:function(a){if(!Za){var b=a.srcEvent,c=a.offsetDirection;if(this.manager.session.prevented)return void b.preventDefault();var d=this.actions,e=q(d,bb),f=q(d,db),g=q(d,cb);return e||f&&c&Ha||g&&c&Ia?this.preventSrc(b):void 0}},preventSrc:function(a){this.manager.session.prevented=!0,a.preventDefault()}};var eb=1,fb=2,gb=4,hb=8,ib=hb,jb=16,kb=32;V.prototype={defaults:{},set:function(a){return h(this.options,a),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(a){if(f(a,"recognizeWith",this))return this;var b=this.simultaneous;return a=Y(a,this),b[a.id]||(b[a.id]=a,a.recognizeWith(this)),this},dropRecognizeWith:function(a){return f(a,"dropRecognizeWith",this)?this:(a=Y(a,this),delete this.simultaneous[a.id],this)},requireFailure:function(a){if(f(a,"requireFailure",this))return this;var b=this.requireFail;return a=Y(a,this),-1===s(b,a)&&(b.push(a),a.requireFailure(this)),this},dropRequireFailure:function(a){if(f(a,"dropRequireFailure",this))return this;a=Y(a,this);var b=s(this.requireFail,a);return b>-1&&this.requireFail.splice(b,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(a){return!!this.simultaneous[a.id]},emit:function(a){function b(b){c.manager.emit(c.options.event+(b?W(d):""),a)}var c=this,d=this.state;hb>d&&b(!0),b(),d>=hb&&b(!0)},tryEmit:function(a){return this.canEmit()?this.emit(a):void(this.state=kb)},canEmit:function(){for(var a=0;a<this.requireFail.length;){if(!(this.requireFail[a].state&(kb|eb)))return!1;a++}return!0},recognize:function(a){var b=h({},a);return l(this.options.enable,[this,b])?(this.state&(ib|jb|kb)&&(this.state=eb),this.state=this.process(b),void(this.state&(fb|gb|hb|jb)&&this.tryEmit(b))):(this.reset(),void(this.state=kb))},process:function(){},getTouchAction:function(){},reset:function(){}},j(Z,V,{defaults:{pointers:1},attrTest:function(a){var b=this.options.pointers;return 0===b||a.pointers.length===b},process:function(a){var b=this.state,c=a.eventType,d=b&(fb|gb),e=this.attrTest(a);return d&&(c&Ba||!e)?b|jb:d||e?c&Aa?b|hb:b&fb?b|gb:fb:kb}}),j($,Z,{defaults:{event:"pan",threshold:10,pointers:1,direction:Ja},getTouchAction:function(){var a=this.options.direction,b=[];return a&Ha&&b.push(db),a&Ia&&b.push(cb),b},directionTest:function(a){var b=this.options,c=!0,d=a.distance,e=a.direction,f=a.deltaX,g=a.deltaY;return e&b.direction||(b.direction&Ha?(e=0===f?Ca:0>f?Da:Ea,c=f!=this.pX,d=Math.abs(a.deltaX)):(e=0===g?Ca:0>g?Fa:Ga,c=g!=this.pY,d=Math.abs(a.deltaY))),a.direction=e,c&&d>b.threshold&&e&b.direction},attrTest:function(a){return Z.prototype.attrTest.call(this,a)&&(this.state&fb||!(this.state&fb)&&this.directionTest(a))},emit:function(a){this.pX=a.deltaX,this.pY=a.deltaY;var b=X(a.direction);b&&this.manager.emit(this.options.event+b,a),this._super.emit.call(this,a)}}),j(_,Z,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[bb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.scale-1)>this.options.threshold||this.state&fb)},emit:function(a){if(this._super.emit.call(this,a),1!==a.scale){var b=a.scale<1?"in":"out";this.manager.emit(this.options.event+b,a)}}}),j(aa,V,{defaults:{event:"press",pointers:1,time:500,threshold:5},getTouchAction:function(){return[_a]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,f=a.deltaTime>b.time;if(this._input=a,!d||!c||a.eventType&(Aa|Ba)&&!f)this.reset();else if(a.eventType&ya)this.reset(),this._timer=e(function(){this.state=ib,this.tryEmit()},b.time,this);else if(a.eventType&Aa)return ib;return kb},reset:function(){clearTimeout(this._timer)},emit:function(a){this.state===ib&&(a&&a.eventType&Aa?this.manager.emit(this.options.event+"up",a):(this._input.timeStamp=na(),this.manager.emit(this.options.event,this._input)))}}),j(ba,Z,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[bb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.rotation)>this.options.threshold||this.state&fb)}}),j(ca,Z,{defaults:{event:"swipe",threshold:10,velocity:.65,direction:Ha|Ia,pointers:1},getTouchAction:function(){return $.prototype.getTouchAction.call(this)},attrTest:function(a){var b,c=this.options.direction;return c&(Ha|Ia)?b=a.velocity:c&Ha?b=a.velocityX:c&Ia&&(b=a.velocityY),this._super.attrTest.call(this,a)&&c&a.direction&&a.distance>this.options.threshold&&ma(b)>this.options.velocity&&a.eventType&Aa},emit:function(a){var b=X(a.direction);b&&this.manager.emit(this.options.event+b,a),this.manager.emit(this.options.event,a)}}),j(da,V,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:2,posThreshold:10},getTouchAction:function(){return[ab]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,f=a.deltaTime<b.time;if(this.reset(),a.eventType&ya&&0===this.count)return this.failTimeout();if(d&&f&&c){if(a.eventType!=Aa)return this.failTimeout();var g=!this.pTime||a.timeStamp-this.pTime<b.interval,h=!this.pCenter||I(this.pCenter,a.center)<b.posThreshold;this.pTime=a.timeStamp,this.pCenter=a.center,h&&g?this.count+=1:this.count=1,this._input=a;var i=this.count%b.taps;if(0===i)return this.hasRequireFailures()?(this._timer=e(function(){this.state=ib,this.tryEmit()},b.interval,this),fb):ib}return kb},failTimeout:function(){return this._timer=e(function(){this.state=kb},this.options.interval,this),kb},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==ib&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}}),ea.VERSION="2.0.4",ea.defaults={domEvents:!1,touchAction:$a,enable:!0,inputTarget:null,inputClass:null,preset:[[ba,{enable:!1}],[_,{enable:!1},["rotate"]],[ca,{direction:Ha}],[$,{direction:Ha},["swipe"]],[da],[da,{event:"doubletap",taps:2},["tap"]],[aa]],cssProps:{userSelect:"default",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}};var lb=1,mb=2;fa.prototype={set:function(a){return h(this.options,a),a.touchAction&&this.touchAction.update(),a.inputTarget&&(this.input.destroy(),this.input.target=a.inputTarget,this.input.init()),this},stop:function(a){this.session.stopped=a?mb:lb},recognize:function(a){var b=this.session;if(!b.stopped){this.touchAction.preventDefaults(a);var c,d=this.recognizers,e=b.curRecognizer;(!e||e&&e.state&ib)&&(e=b.curRecognizer=null);for(var f=0;f<d.length;)c=d[f],b.stopped===mb||e&&c!=e&&!c.canRecognizeWith(e)?c.reset():c.recognize(a),!e&&c.state&(fb|gb|hb)&&(e=b.curRecognizer=c),f++}},get:function(a){if(a instanceof V)return a;for(var b=this.recognizers,c=0;c<b.length;c++)if(b[c].options.event==a)return b[c];return null},add:function(a){if(f(a,"add",this))return this;var b=this.get(a.options.event);return b&&this.remove(b),this.recognizers.push(a),a.manager=this,this.touchAction.update(),a},remove:function(a){if(f(a,"remove",this))return this;var b=this.recognizers;return a=this.get(a),b.splice(s(b,a),1),this.touchAction.update(),this},on:function(a,b){var c=this.handlers;return g(r(a),function(a){c[a]=c[a]||[],c[a].push(b)}),this},off:function(a,b){var c=this.handlers;return g(r(a),function(a){b?c[a].splice(s(c[a],b),1):delete c[a]}),this},emit:function(a,b){this.options.domEvents&&ha(a,b);var c=this.handlers[a]&&this.handlers[a].slice();if(c&&c.length){b.type=a,b.preventDefault=function(){b.srcEvent.preventDefault()};for(var d=0;d<c.length;)c[d](b),d++}},destroy:function(){this.element&&ga(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}},h(ea,{INPUT_START:ya,INPUT_MOVE:za,INPUT_END:Aa,INPUT_CANCEL:Ba,STATE_POSSIBLE:eb,STATE_BEGAN:fb,STATE_CHANGED:gb,STATE_ENDED:hb,STATE_RECOGNIZED:ib,STATE_CANCELLED:jb,STATE_FAILED:kb,DIRECTION_NONE:Ca,DIRECTION_LEFT:Da,DIRECTION_RIGHT:Ea,DIRECTION_UP:Fa,DIRECTION_DOWN:Ga,DIRECTION_HORIZONTAL:Ha,DIRECTION_VERTICAL:Ia,DIRECTION_ALL:Ja,Manager:fa,Input:y,TouchAction:T,TouchInput:Q,MouseInput:M,PointerEventInput:N,TouchMouseInput:S,SingleTouchInput:O,Recognizer:V,AttrRecognizer:Z,Tap:da,Pan:$,Swipe:ca,Pinch:_,Rotate:ba,Press:aa,on:n,off:o,each:g,merge:i,extend:h,inherit:j,bindFn:k,prefixed:v}),typeof define==ka&&define.amd?define(function(){return ea}):"undefined"!=typeof module&&module.exports?module.exports=ea:a[c]=ea}(window,document,"Hammer"),function(a){"function"==typeof define&&define.amd?define(["jquery","hammerjs"],a):"object"==typeof exports?a(require("jquery"),require("hammerjs")):a(jQuery,Hammer)}(function(a,b){function c(c,d){var e=a(c);e.data("hammer")||e.data("hammer",new b(e[0],d))}a.fn.hammer=function(a){return this.each(function(){c(this,a)})},b.Manager.prototype.emit=function(b){return function(c,d){b.call(this,c,d),a(this.element).trigger({type:c,gesture:d})}}(b.Manager.prototype.emit)}),function(a){a.Package?Materialize={}:a.Materialize={}}(window),function(a){for(var b=0,c=["webkit","moz"],d=a.requestAnimationFrame,e=a.cancelAnimationFrame,f=c.length;--f>=0&&!d;)d=a[c[f]+"RequestAnimationFrame"],e=a[c[f]+"CancelRequestAnimationFrame"];d&&e||(d=function(a){var c=+Date.now(),d=Math.max(b+16,c);return setTimeout(function(){a(b=d)},d-c)},e=clearTimeout),a.requestAnimationFrame=d,a.cancelAnimationFrame=e}(window),Materialize.guid=function(){function a(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return function(){return a()+a()+"-"+a()+"-"+a()+"-"+a()+"-"+a()+a()+a()}}(),Materialize.escapeHash=function(a){return a.replace(/(:|\.|\[|\]|,|=)/g,"\\$1")},Materialize.elementOrParentIsFixed=function(a){var b=$(a),c=b.add(b.parents()),d=!1;return c.each(function(){if("fixed"===$(this).css("position"))return d=!0,!1}),d};var getTime=Date.now||function(){return(new Date).getTime()};Materialize.throttle=function(a,b,c){var d,e,f,g=null,h=0;c||(c={});var i=function(){h=c.leading===!1?0:getTime(),g=null,f=a.apply(d,e),d=e=null};return function(){var j=getTime();h||c.leading!==!1||(h=j);var k=b-(j-h);return d=this,e=arguments,k<=0?(clearTimeout(g),g=null,h=j,f=a.apply(d,e),d=e=null):g||c.trailing===!1||(g=setTimeout(i,k)),f}};var Vel;Vel=jQuery?jQuery.Velocity:$?$.Velocity:Velocity,function(a){a.fn.collapsible=function(b){var c={accordion:void 0,onOpen:void 0,onClose:void 0};return b=a.extend(c,b),this.each(function(){function c(b){j=i.find("> li > .collapsible-header"),b.hasClass("active")?b.parent().addClass("active"):b.parent().removeClass("active"),b.parent().hasClass("active")?b.siblings(".collapsible-body").stop(!0,!1).slideDown({duration:350,easing:"easeOutQuart",queue:!1,complete:function(){a(this).css("height","")}}):b.siblings(".collapsible-body").stop(!0,!1).slideUp({duration:350,easing:"easeOutQuart",queue:!1,complete:function(){a(this).css("height","")}}),j.not(b).removeClass("active").parent().removeClass("active"),j.not(b).parent().children(".collapsible-body").stop(!0,!1).each(function(){a(this).is(":visible")&&a(this).slideUp({duration:350,easing:"easeOutQuart",queue:!1,complete:function(){a(this).css("height",""),f(a(this).siblings(".collapsible-header"))}})})}function d(b){b.hasClass("active")?b.parent().addClass("active"):b.parent().removeClass("active"),b.parent().hasClass("active")?b.siblings(".collapsible-body").stop(!0,!1).slideDown({duration:350,easing:"easeOutQuart",queue:!1,complete:function(){a(this).css("height","")}}):b.siblings(".collapsible-body").stop(!0,!1).slideUp({duration:350,easing:"easeOutQuart",queue:!1,complete:function(){a(this).css("height","")}})}function e(a){b.accordion||"accordion"===k||void 0===k?c(a):d(a),f(a)}function f(a){a.hasClass("active")?"function"==typeof b.onOpen&&b.onOpen.call(this,a.parent()):"function"==typeof b.onClose&&b.onClose.call(this,a.parent())}function g(a){var b=h(a);return b.length>0}function h(a){return a.closest("li > .collapsible-header")}var i=a(this),j=a(this).find("> li > .collapsible-header"),k=i.data("collapsible");i.off("click.collapse","> li > .collapsible-header"),j.off("click.collapse"),i.on("click.collapse","> li > .collapsible-header",function(b){var c=a(b.target);g(c)&&(c=h(c)),c.toggleClass("active"),e(c)}),b.accordion||"accordion"===k||void 0===k?e(j.filter(".active").first()):j.filter(".active").each(function(){e(a(this))})})},a(document).ready(function(){a(".collapsible").collapsible()})}(jQuery),function(a){a.fn.scrollTo=function(b){return a(this).scrollTop(a(this).scrollTop()-a(this).offset().top+a(b).offset().top),this},a.fn.dropdown=function(b){var c={inDuration:300,outDuration:225,constrainWidth:!0,hover:!1,gutter:0,belowOrigin:!1,alignment:"left",stopPropagation:!1};return"open"===b?(this.each(function(){a(this).trigger("open")}),!1):"close"===b?(this.each(function(){a(this).trigger("close")}),!1):void this.each(function(){function d(){void 0!==g.data("induration")&&(h.inDuration=g.data("induration")),void 0!==g.data("outduration")&&(h.outDuration=g.data("outduration")),void 0!==g.data("constrainwidth")&&(h.constrainWidth=g.data("constrainwidth")),void 0!==g.data("hover")&&(h.hover=g.data("hover")),void 0!==g.data("gutter")&&(h.gutter=g.data("gutter")),void 0!==g.data("beloworigin")&&(h.belowOrigin=g.data("beloworigin")),void 0!==g.data("alignment")&&(h.alignment=g.data("alignment")),void 0!==g.data("stoppropagation")&&(h.stopPropagation=g.data("stoppropagation"))}function e(b){"focus"===b&&(i=!0),d(),j.addClass("active"),g.addClass("active"),h.constrainWidth===!0?j.css("width",g.outerWidth()):j.css("white-space","nowrap");var c=window.innerHeight,e=g.innerHeight(),k=g.offset().left,l=g.offset().top-a(window).scrollTop(),m=h.alignment,n=0,o=0,p=0;h.belowOrigin===!0&&(p=e);var q=0,r=0,s=g.parent();if(s.is("body")||(s[0].scrollHeight>s[0].clientHeight&&(q=s[0].scrollTop),s[0].scrollWidth>s[0].clientWidth&&(r=s[0].scrollLeft)),k+j.innerWidth()>a(window).width()?m="right":k-j.innerWidth()+g.innerWidth()<0&&(m="left"),l+j.innerHeight()>c)if(l+e-j.innerHeight()<0){var t=c-l-p;j.css("max-height",t)}else p||(p+=e),p-=j.innerHeight();if("left"===m)n=h.gutter,o=g.position().left+n;else if("right"===m){var u=g.position().left+g.outerWidth()-j.outerWidth();n=-h.gutter,o=u+n}j.css({position:"absolute",top:g.position().top+p+q,left:o+r}),j.stop(!0,!0).css("opacity",0).slideDown({queue:!1,duration:h.inDuration,easing:"easeOutCubic",complete:function(){a(this).css("height","")}}).animate({opacity:1},{queue:!1,duration:h.inDuration,easing:"easeOutSine"}),a(document).bind("click."+j.attr("id")+" touchstart."+j.attr("id"),function(b){j.is(b.target)||g.is(b.target)||g.find(b.target).length||(f(),a(document).unbind("click."+j.attr("id")+" touchstart."+j.attr("id")))})}function f(){i=!1,j.fadeOut(h.outDuration),j.removeClass("active"),g.removeClass("active"),a(document).unbind("click."+j.attr("id")+" touchstart."+j.attr("id")),setTimeout(function(){j.css("max-height","")},h.outDuration)}var g=a(this),h=a.extend({},c,b),i=!1,j=a("#"+g.attr("data-activates"));if(d(),g.after(j),h.hover){var k=!1;g.unbind("click."+g.attr("id")),g.on("mouseenter",function(a){k===!1&&(e(),k=!0)}),g.on("mouseleave",function(b){var c=b.toElement||b.relatedTarget;a(c).closest(".dropdown-content").is(j)||(j.stop(!0,!0),f(),k=!1)}),j.on("mouseleave",function(b){var c=b.toElement||b.relatedTarget;a(c).closest(".dropdown-button").is(g)||(j.stop(!0,!0),f(),k=!1)})}else g.unbind("click."+g.attr("id")),g.bind("click."+g.attr("id"),function(b){i||(g[0]!=b.currentTarget||g.hasClass("active")||0!==a(b.target).closest(".dropdown-content").length?g.hasClass("active")&&(f(),a(document).unbind("click."+j.attr("id")+" touchstart."+j.attr("id"))):(b.preventDefault(),h.stopPropagation&&b.stopPropagation(),e("click")))});g.on("open",function(a,b){e(b)}),g.on("close",f)})},a(document).ready(function(){a(".dropdown-button").dropdown()})}(jQuery),function(a){var b=0,c=0,d=function(){return c++,"materialize-modal-overlay-"+c},e={init:function(c){var e={opacity:.5,inDuration:350,outDuration:250,ready:void 0,
8
+ complete:void 0,dismissible:!0,startingTop:"4%",endingTop:"10%"};return c=a.extend(e,c),this.each(function(){var e=a(this),f=a(this).attr("id")||"#"+a(this).data("target"),g=function(){var d=e.data("overlay-id"),f=a("#"+d);e.removeClass("open"),a("body").css({overflow:"",width:""}),e.find(".modal-close").off("click.close"),a(document).off("keyup.modal"+d),f.velocity({opacity:0},{duration:c.outDuration,queue:!1,ease:"easeOutQuart"});var g={duration:c.outDuration,queue:!1,ease:"easeOutCubic",complete:function(){a(this).css({display:"none"}),"function"==typeof c.complete&&c.complete.call(this,e),f.remove(),b--}};e.hasClass("bottom-sheet")?e.velocity({bottom:"-100%",opacity:0},g):e.velocity({top:c.startingTop,opacity:0,scaleX:.7},g)},h=function(f){var h=a("body"),i=h.innerWidth();if(h.css("overflow","hidden"),h.width(i),!e.hasClass("open")){var j=d(),k=a('<div class="modal-overlay"></div>');lStack=++b,k.attr("id",j).css("z-index",1e3+2*lStack),e.data("overlay-id",j).css("z-index",1e3+2*lStack+1),e.addClass("open"),a("body").append(k),c.dismissible&&(k.click(function(){g()}),a(document).on("keyup.modal"+j,function(a){27===a.keyCode&&g()})),e.find(".modal-close").on("click.close",function(a){g()}),k.css({display:"block",opacity:0}),e.css({display:"block",opacity:0}),k.velocity({opacity:c.opacity},{duration:c.inDuration,queue:!1,ease:"easeOutCubic"}),e.data("associated-overlay",k[0]);var l={duration:c.inDuration,queue:!1,ease:"easeOutCubic",complete:function(){"function"==typeof c.ready&&c.ready.call(this,e,f)}};e.hasClass("bottom-sheet")?e.velocity({bottom:"0",opacity:1},l):(a.Velocity.hook(e,"scaleX",.7),e.css({top:c.startingTop}),e.velocity({top:c.endingTop,opacity:1,scaleX:"1"},l))}};a(document).off("click.modalTrigger",'a[href="#'+f+'"], [data-target="'+f+'"]'),a(this).off("openModal"),a(this).off("closeModal"),a(document).on("click.modalTrigger",'a[href="#'+f+'"], [data-target="'+f+'"]',function(b){c.startingTop=(a(this).offset().top-a(window).scrollTop())/1.15,h(a(this)),b.preventDefault()}),a(this).on("openModal",function(){a(this).attr("href")||"#"+a(this).data("target");h()}),a(this).on("closeModal",function(){g()})})},open:function(){a(this).trigger("openModal")},close:function(){a(this).trigger("closeModal")}};a.fn.modal=function(b){return e[b]?e[b].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof b&&b?void a.error("Method "+b+" does not exist on jQuery.modal"):e.init.apply(this,arguments)}}(jQuery),function(a){a.fn.materialbox=function(){return this.each(function(){function b(){f=!1;var b=i.parent(".material-placeholder"),d=(window.innerWidth,window.innerHeight,i.data("width")),g=i.data("height");i.velocity("stop",!0),a("#materialbox-overlay").velocity("stop",!0),a(".materialbox-caption").velocity("stop",!0),a("#materialbox-overlay").velocity({opacity:0},{duration:h,queue:!1,easing:"easeOutQuad",complete:function(){e=!1,a(this).remove()}}),i.velocity({width:d,height:g,left:0,top:0},{duration:h,queue:!1,easing:"easeOutQuad"}),a(".materialbox-caption").velocity({opacity:0},{duration:h,queue:!1,easing:"easeOutQuad",complete:function(){b.css({height:"",width:"",position:"",top:"",left:""}),i.css({height:"",top:"",left:"",width:"","max-width":"",position:"","z-index":"","will-change":""}),i.removeClass("active"),f=!0,a(this).remove(),c&&c.css("overflow","")}})}if(!a(this).hasClass("initialized")){a(this).addClass("initialized");var c,d,e=!1,f=!0,g=275,h=200,i=a(this),j=a("<div></div>").addClass("material-placeholder");i.wrap(j),i.on("click",function(){var h=i.parent(".material-placeholder"),j=window.innerWidth,k=window.innerHeight,l=i.width(),m=i.height();if(f===!1)return b(),!1;if(e&&f===!0)return b(),!1;f=!1,i.addClass("active"),e=!0,h.css({width:h[0].getBoundingClientRect().width,height:h[0].getBoundingClientRect().height,position:"relative",top:0,left:0}),c=void 0,d=h[0].parentNode;for(;null!==d&&!a(d).is(document);){var n=a(d);"visible"!==n.css("overflow")&&(n.css("overflow","visible"),c=void 0===c?n:c.add(n)),d=d.parentNode}i.css({position:"absolute","z-index":1e3,"will-change":"left, top, width, height"}).data("width",l).data("height",m);var o=a('<div id="materialbox-overlay"></div>').css({opacity:0}).click(function(){f===!0&&b()});i.before(o);var p=o[0].getBoundingClientRect();if(o.css({width:j,height:k,left:-1*p.left,top:-1*p.top}),o.velocity({opacity:1},{duration:g,queue:!1,easing:"easeOutQuad"}),""!==i.data("caption")){var q=a('<div class="materialbox-caption"></div>');q.text(i.data("caption")),a("body").append(q),q.css({display:"inline"}),q.velocity({opacity:1},{duration:g,queue:!1,easing:"easeOutQuad"})}var r=0,s=l/j,t=m/k,u=0,v=0;s>t?(r=m/l,u=.9*j,v=.9*j*r):(r=l/m,u=.9*k*r,v=.9*k),i.hasClass("responsive-img")?i.velocity({"max-width":u,width:l},{duration:0,queue:!1,complete:function(){i.css({left:0,top:0}).velocity({height:v,width:u,left:a(document).scrollLeft()+j/2-i.parent(".material-placeholder").offset().left-u/2,top:a(document).scrollTop()+k/2-i.parent(".material-placeholder").offset().top-v/2},{duration:g,queue:!1,easing:"easeOutQuad",complete:function(){f=!0}})}}):i.css("left",0).css("top",0).velocity({height:v,width:u,left:a(document).scrollLeft()+j/2-i.parent(".material-placeholder").offset().left-u/2,top:a(document).scrollTop()+k/2-i.parent(".material-placeholder").offset().top-v/2},{duration:g,queue:!1,easing:"easeOutQuad",complete:function(){f=!0}})}),a(window).scroll(function(){e&&b()}),a(document).keyup(function(a){27===a.keyCode&&f===!0&&e&&b()})}})},a(document).ready(function(){a(".materialboxed").materialbox()})}(jQuery),function(a){a.fn.parallax=function(){var b=a(window).width();return this.each(function(c){function d(c){var d;d=b<601?e.height()>0?e.height():e.children("img").height():e.height()>0?e.height():500;var f=e.children("img").first(),g=f.height(),h=g-d,i=e.offset().top+d,j=e.offset().top,k=a(window).scrollTop(),l=window.innerHeight,m=k+l,n=(m-j)/(d+l),o=Math.round(h*n);c&&f.css("display","block"),i>k&&j<k+l&&f.css("transform","translate3D(-50%,"+o+"px, 0)")}var e=a(this);e.addClass("parallax"),e.children("img").one("load",function(){d(!0)}).each(function(){this.complete&&a(this).trigger("load")}),a(window).scroll(function(){b=a(window).width(),d(!1)}),a(window).resize(function(){b=a(window).width(),d(!1)})})}}(jQuery),function(a){var b={init:function(b){var c={onShow:null,swipeable:!1,responsiveThreshold:1/0};return b=a.extend(c,b),this.each(function(){var c,d,e,f,g,h=a(this),i=a(window).width(),j=h.find("li.tab a"),k=h.width(),l=a(),m=Math.max(k,h[0].scrollWidth)/j.length,n=prev_index=0,o=!1,p=300,q=function(a){return k-a.position().left-a.outerWidth()-h.scrollLeft()},r=function(a){return a.position().left+h.scrollLeft()},s=function(a){n-a>=0?(f.velocity({right:q(c)},{duration:p,queue:!1,easing:"easeOutQuad"}),f.velocity({left:r(c)},{duration:p,queue:!1,easing:"easeOutQuad",delay:90})):(f.velocity({left:r(c)},{duration:p,queue:!1,easing:"easeOutQuad"}),f.velocity({right:q(c)},{duration:p,queue:!1,easing:"easeOutQuad",delay:90}))};b.swipeable&&i>b.responsiveThreshold&&(b.swipeable=!1),c=a(j.filter('[href="'+location.hash+'"]')),0===c.length&&(c=a(this).find("li.tab a.active").first()),0===c.length&&(c=a(this).find("li.tab a").first()),c.addClass("active"),n=j.index(c),n<0&&(n=0),void 0!==c[0]&&(d=a(c[0].hash),d.addClass("active")),h.find(".indicator").length||h.append('<div class="indicator"></div>'),f=h.find(".indicator"),h.append(f),h.is(":visible")&&setTimeout(function(){f.css({right:q(c)}),f.css({left:r(c)})},0),a(window).resize(function(){k=h.width(),m=Math.max(k,h[0].scrollWidth)/j.length,n<0&&(n=0),0!==m&&0!==k&&(f.css({right:q(c)}),f.css({left:r(c)}))}),b.swipeable?(j.each(function(){var b=a(Materialize.escapeHash(this.hash));b.addClass("carousel-item"),l=l.add(b)}),e=l.wrapAll('<div class="tabs-content carousel"></div>'),l.css("display",""),a(".tabs-content.carousel").carousel({fullWidth:!0,noWrap:!0,onCycleTo:function(a){if(!o){var b=n;n=e.index(a),c=j.eq(n),s(b)}}})):j.not(c).each(function(){a(Materialize.escapeHash(this.hash)).hide()}),h.on("click","a",function(e){if(a(this).parent().hasClass("disabled"))return void e.preventDefault();if(!a(this).attr("target")){o=!0,k=h.width(),m=Math.max(k,h[0].scrollWidth)/j.length,c.removeClass("active");var f=d;c=a(this),d=a(Materialize.escapeHash(this.hash)),j=h.find("li.tab a");c.position();c.addClass("active"),prev_index=n,n=j.index(a(this)),n<0&&(n=0),b.swipeable?l.length&&l.carousel("set",n):(void 0!==d&&(d.show(),d.addClass("active"),"function"==typeof b.onShow&&b.onShow.call(this,d)),void 0===f||f.is(d)||(f.hide(),f.removeClass("active"))),g=setTimeout(function(){o=!1},p),s(prev_index),e.preventDefault()}})})},select_tab:function(a){this.find('a[href="#'+a+'"]').trigger("click")}};a.fn.tabs=function(c){return b[c]?b[c].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof c&&c?void a.error("Method "+c+" does not exist on jQuery.tabs"):b.init.apply(this,arguments)},a(document).ready(function(){a("ul.tabs").tabs()})}(jQuery),function(a){a.fn.tooltip=function(c){var d=5,e={delay:350,tooltip:"",position:"bottom",html:!1};return"remove"===c?(this.each(function(){a("#"+a(this).attr("data-tooltip-id")).remove(),a(this).off("mouseenter.tooltip mouseleave.tooltip")}),!1):(c=a.extend(e,c),this.each(function(){var e=Materialize.guid(),f=a(this);f.attr("data-tooltip-id")&&a("#"+f.attr("data-tooltip-id")).remove(),f.attr("data-tooltip-id",e);var g,h,i,j,k,l,m=function(){g=f.attr("data-html")?"true"===f.attr("data-html"):c.html,h=f.attr("data-delay"),h=void 0===h||""===h?c.delay:h,i=f.attr("data-position"),i=void 0===i||""===i?c.position:i,j=f.attr("data-tooltip"),j=void 0===j||""===j?c.tooltip:j};m();var n=function(){var b=a('<div class="material-tooltip"></div>');return j=g?a("<span></span>").html(j):a("<span></span>").text(j),b.append(j).appendTo(a("body")).attr("id",e),l=a('<div class="backdrop"></div>'),l.appendTo(b),b};k=n(),f.off("mouseenter.tooltip mouseleave.tooltip");var o,p=!1;f.on({"mouseenter.tooltip":function(a){var c=function(){m(),p=!0,k.velocity("stop"),l.velocity("stop"),k.css({visibility:"visible",left:"0px",top:"0px"});var a,c,e,g=f.outerWidth(),h=f.outerHeight(),j=k.outerHeight(),n=k.outerWidth(),o="0px",q="0px",r=l[0].offsetWidth,s=l[0].offsetHeight,t=8,u=8,v=0;"top"===i?(a=f.offset().top-j-d,c=f.offset().left+g/2-n/2,e=b(c,a,n,j),o="-10px",l.css({bottom:0,left:0,borderRadius:"14px 14px 0 0",transformOrigin:"50% 100%",marginTop:j,marginLeft:n/2-r/2})):"left"===i?(a=f.offset().top+h/2-j/2,c=f.offset().left-n-d,e=b(c,a,n,j),q="-10px",l.css({top:"-7px",right:0,width:"14px",height:"14px",borderRadius:"14px 0 0 14px",transformOrigin:"95% 50%",marginTop:j/2,marginLeft:n})):"right"===i?(a=f.offset().top+h/2-j/2,c=f.offset().left+g+d,e=b(c,a,n,j),q="+10px",l.css({top:"-7px",left:0,width:"14px",height:"14px",borderRadius:"0 14px 14px 0",transformOrigin:"5% 50%",marginTop:j/2,marginLeft:"0px"})):(a=f.offset().top+f.outerHeight()+d,c=f.offset().left+g/2-n/2,e=b(c,a,n,j),o="+10px",l.css({top:0,left:0,marginLeft:n/2-r/2})),k.css({top:e.y,left:e.x}),t=Math.SQRT2*n/parseInt(r),u=Math.SQRT2*j/parseInt(s),v=Math.max(t,u),k.velocity({translateY:o,translateX:q},{duration:350,queue:!1}).velocity({opacity:1},{duration:300,delay:50,queue:!1}),l.css({visibility:"visible"}).velocity({opacity:1},{duration:55,delay:0,queue:!1}).velocity({scaleX:v,scaleY:v},{duration:300,delay:0,queue:!1,easing:"easeInOutQuad"})};o=setTimeout(c,h)},"mouseleave.tooltip":function(){p=!1,clearTimeout(o),setTimeout(function(){p!==!0&&(k.velocity({opacity:0,translateY:0,translateX:0},{duration:225,queue:!1}),l.velocity({opacity:0,scaleX:1,scaleY:1},{duration:225,queue:!1,complete:function(){l.css({visibility:"hidden"}),k.css({visibility:"hidden"}),p=!1}}))},225)}})}))};var b=function(b,c,d,e){var f=b,g=c;return f<0?f=4:f+d>window.innerWidth&&(f-=f+d-window.innerWidth),g<0?g=4:g+e>window.innerHeight+a(window).scrollTop&&(g-=g+e-window.innerHeight),{x:f,y:g}};a(document).ready(function(){a(".tooltipped").tooltip()})}(jQuery),function(a){"use strict";function b(a){return null!==a&&a===a.window}function c(a){return b(a)?a:9===a.nodeType&&a.defaultView}function d(a){var b,d,e={top:0,left:0},f=a&&a.ownerDocument;return b=f.documentElement,"undefined"!=typeof a.getBoundingClientRect&&(e=a.getBoundingClientRect()),d=c(f),{top:e.top+d.pageYOffset-b.clientTop,left:e.left+d.pageXOffset-b.clientLeft}}function e(a){var b="";for(var c in a)a.hasOwnProperty(c)&&(b+=c+":"+a[c]+";");return b}function f(a){if(k.allowEvent(a)===!1)return null;for(var b=null,c=a.target||a.srcElement;null!==c.parentElement;){if(!(c instanceof SVGElement||c.className.indexOf("waves-effect")===-1)){b=c;break}if(c.classList.contains("waves-effect")){b=c;break}c=c.parentElement}return b}function g(b){var c=f(b);null!==c&&(j.show(b,c),"ontouchstart"in a&&(c.addEventListener("touchend",j.hide,!1),c.addEventListener("touchcancel",j.hide,!1)),c.addEventListener("mouseup",j.hide,!1),c.addEventListener("mouseleave",j.hide,!1))}var h=h||{},i=document.querySelectorAll.bind(document),j={duration:750,show:function(a,b){if(2===a.button)return!1;var c=b||this,f=document.createElement("div");f.className="waves-ripple",c.appendChild(f);var g=d(c),h=a.pageY-g.top,i=a.pageX-g.left,k="scale("+c.clientWidth/100*10+")";"touches"in a&&(h=a.touches[0].pageY-g.top,i=a.touches[0].pageX-g.left),f.setAttribute("data-hold",Date.now()),f.setAttribute("data-scale",k),f.setAttribute("data-x",i),f.setAttribute("data-y",h);var l={top:h+"px",left:i+"px"};f.className=f.className+" waves-notransition",f.setAttribute("style",e(l)),f.className=f.className.replace("waves-notransition",""),l["-webkit-transform"]=k,l["-moz-transform"]=k,l["-ms-transform"]=k,l["-o-transform"]=k,l.transform=k,l.opacity="1",l["-webkit-transition-duration"]=j.duration+"ms",l["-moz-transition-duration"]=j.duration+"ms",l["-o-transition-duration"]=j.duration+"ms",l["transition-duration"]=j.duration+"ms",l["-webkit-transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",l["-moz-transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",l["-o-transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",l["transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",f.setAttribute("style",e(l))},hide:function(a){k.touchup(a);var b=this,c=(1.4*b.clientWidth,null),d=b.getElementsByClassName("waves-ripple");if(!(d.length>0))return!1;c=d[d.length-1];var f=c.getAttribute("data-x"),g=c.getAttribute("data-y"),h=c.getAttribute("data-scale"),i=Date.now()-Number(c.getAttribute("data-hold")),l=350-i;l<0&&(l=0),setTimeout(function(){var a={top:g+"px",left:f+"px",opacity:"0","-webkit-transition-duration":j.duration+"ms","-moz-transition-duration":j.duration+"ms","-o-transition-duration":j.duration+"ms","transition-duration":j.duration+"ms","-webkit-transform":h,"-moz-transform":h,"-ms-transform":h,"-o-transform":h,transform:h};c.setAttribute("style",e(a)),setTimeout(function(){try{b.removeChild(c)}catch(a){return!1}},j.duration)},l)},wrapInput:function(a){for(var b=0;b<a.length;b++){var c=a[b];if("input"===c.tagName.toLowerCase()){var d=c.parentNode;if("i"===d.tagName.toLowerCase()&&d.className.indexOf("waves-effect")!==-1)continue;var e=document.createElement("i");e.className=c.className+" waves-input-wrapper";var f=c.getAttribute("style");f||(f=""),e.setAttribute("style",f),c.className="waves-button-input",c.removeAttribute("style"),d.replaceChild(e,c),e.appendChild(c)}}}},k={touches:0,allowEvent:function(a){var b=!0;return"touchstart"===a.type?k.touches+=1:"touchend"===a.type||"touchcancel"===a.type?setTimeout(function(){k.touches>0&&(k.touches-=1)},500):"mousedown"===a.type&&k.touches>0&&(b=!1),b},touchup:function(a){k.allowEvent(a)}};h.displayEffect=function(b){b=b||{},"duration"in b&&(j.duration=b.duration),j.wrapInput(i(".waves-effect")),"ontouchstart"in a&&document.body.addEventListener("touchstart",g,!1),document.body.addEventListener("mousedown",g,!1)},h.attach=function(b){"input"===b.tagName.toLowerCase()&&(j.wrapInput([b]),b=b.parentElement),"ontouchstart"in a&&b.addEventListener("touchstart",g,!1),b.addEventListener("mousedown",g,!1)},a.Waves=h,document.addEventListener("DOMContentLoaded",function(){h.displayEffect()},!1)}(window),Materialize.toast=function(a,b,c,d){function e(a){var b=document.createElement("div");if(b.classList.add("toast"),c)for(var e=c.split(" "),f=0,g=e.length;f<g;f++)b.classList.add(e[f]);("object"==typeof HTMLElement?a instanceof HTMLElement:a&&"object"==typeof a&&null!==a&&1===a.nodeType&&"string"==typeof a.nodeName)?b.appendChild(a):a instanceof jQuery?b.appendChild(a[0]):b.innerHTML=a;var h=new Hammer(b,{prevent_default:!1});return h.on("pan",function(a){var c=a.deltaX,d=80;b.classList.contains("panning")||b.classList.add("panning");var e=1-Math.abs(c/d);e<0&&(e=0),Vel(b,{left:c,opacity:e},{duration:50,queue:!1,easing:"easeOutQuad"})}),h.on("panend",function(a){var c=a.deltaX,e=80;Math.abs(c)>e?Vel(b,{marginTop:"-40px"},{duration:375,easing:"easeOutExpo",queue:!1,complete:function(){"function"==typeof d&&d(),b.parentNode.removeChild(b)}}):(b.classList.remove("panning"),Vel(b,{left:0,opacity:1},{duration:300,easing:"easeOutExpo",queue:!1}))}),b}c=c||"";var f=document.getElementById("toast-container");null===f&&(f=document.createElement("div"),f.id="toast-container",document.body.appendChild(f));var g=e(a);a&&f.appendChild(g),g.style.opacity=0,Vel(g,{translateY:"-35px",opacity:1},{duration:300,easing:"easeOutCubic",queue:!1});var h,i=b;null!=i&&(h=setInterval(function(){null===g.parentNode&&window.clearInterval(h),g.classList.contains("panning")||(i-=20),i<=0&&(Vel(g,{opacity:0,marginTop:"-40px"},{duration:375,easing:"easeOutExpo",queue:!1,complete:function(){"function"==typeof d&&d(),this[0].parentNode.removeChild(this[0])}}),window.clearInterval(h))},20))},function(a){var b={init:function(b){var c={menuWidth:300,edge:"left",closeOnClick:!1,draggable:!0};b=a.extend(c,b),a(this).each(function(){var c=a(this),d=c.attr("data-activates"),e=a("#"+d);300!=b.menuWidth&&e.css("width",b.menuWidth);var f=a('.drag-target[data-sidenav="'+d+'"]');b.draggable?(f.length&&f.remove(),f=a('<div class="drag-target"></div>').attr("data-sidenav",d),a("body").append(f)):f=a(),"left"==b.edge?(e.css("transform","translateX(-100%)"),f.css({left:0})):(e.addClass("right-aligned").css("transform","translateX(100%)"),f.css({right:0})),e.hasClass("fixed")&&window.innerWidth>992&&e.css("transform","translateX(0)"),e.hasClass("fixed")&&a(window).resize(function(){window.innerWidth>992?0!==a("#sidenav-overlay").length&&i?g(!0):e.css("transform","translateX(0%)"):i===!1&&("left"===b.edge?e.css("transform","translateX(-100%)"):e.css("transform","translateX(100%)"))}),b.closeOnClick===!0&&e.on("click.itemclick","a:not(.collapsible-header)",function(){g()});var g=function(c){h=!1,i=!1,a("body").css({overflow:"",width:""}),a("#sidenav-overlay").velocity({opacity:0},{duration:200,queue:!1,easing:"easeOutQuad",complete:function(){a(this).remove()}}),"left"===b.edge?(f.css({width:"",right:"",left:"0"}),e.velocity({translateX:"-100%"},{duration:200,queue:!1,easing:"easeOutCubic",complete:function(){c===!0&&(e.removeAttr("style"),e.css("width",b.menuWidth))}})):(f.css({width:"",right:"0",left:""}),e.velocity({translateX:"100%"},{duration:200,queue:!1,easing:"easeOutCubic",complete:function(){c===!0&&(e.removeAttr("style"),e.css("width",b.menuWidth))}}))},h=!1,i=!1;b.draggable&&(f.on("click",function(){i&&g()}),f.hammer({prevent_default:!1}).bind("pan",function(c){if("touch"==c.gesture.pointerType){var d=(c.gesture.direction,c.gesture.center.x),f=(c.gesture.center.y,c.gesture.velocityX,a("body")),h=a("#sidenav-overlay"),j=f.innerWidth();if(f.css("overflow","hidden"),f.width(j),0===h.length&&(h=a('<div id="sidenav-overlay"></div>'),h.css("opacity",0).click(function(){g()}),a("body").append(h)),"left"===b.edge&&(d>b.menuWidth?d=b.menuWidth:d<0&&(d=0)),"left"===b.edge)d<b.menuWidth/2?i=!1:d>=b.menuWidth/2&&(i=!0),e.css("transform","translateX("+(d-b.menuWidth)+"px)");else{d<window.innerWidth-b.menuWidth/2?i=!0:d>=window.innerWidth-b.menuWidth/2&&(i=!1);var k=d-b.menuWidth/2;k<0&&(k=0),e.css("transform","translateX("+k+"px)")}var l;"left"===b.edge?(l=d/b.menuWidth,h.velocity({opacity:l},{duration:10,queue:!1,easing:"easeOutQuad"})):(l=Math.abs((d-window.innerWidth)/b.menuWidth),h.velocity({opacity:l},{duration:10,queue:!1,easing:"easeOutQuad"}))}}).bind("panend",function(c){if("touch"==c.gesture.pointerType){var d=a('<div id="sidenav-overlay"></div>'),g=c.gesture.velocityX,j=c.gesture.center.x,k=j-b.menuWidth,l=j-b.menuWidth/2;k>0&&(k=0),l<0&&(l=0),h=!1,"left"===b.edge?i&&g<=.3||g<-.5?(0!==k&&e.velocity({translateX:[0,k]},{duration:300,queue:!1,easing:"easeOutQuad"}),d.velocity({opacity:1},{duration:50,queue:!1,easing:"easeOutQuad"}),f.css({width:"50%",right:0,left:""}),i=!0):(!i||g>.3)&&(a("body").css({overflow:"",width:""}),e.velocity({translateX:[-1*b.menuWidth-10,k]},{duration:200,queue:!1,easing:"easeOutQuad"}),d.velocity({opacity:0},{duration:200,queue:!1,easing:"easeOutQuad",complete:function(){a(this).remove()}}),f.css({width:"10px",right:"",left:0})):i&&g>=-.3||g>.5?(0!==l&&e.velocity({translateX:[0,l]},{duration:300,queue:!1,easing:"easeOutQuad"}),d.velocity({opacity:1},{duration:50,queue:!1,easing:"easeOutQuad"}),f.css({width:"50%",right:"",left:0}),i=!0):(!i||g<-.3)&&(a("body").css({overflow:"",width:""}),e.velocity({translateX:[b.menuWidth+10,l]},{duration:200,queue:!1,easing:"easeOutQuad"}),d.velocity({opacity:0},{duration:200,queue:!1,easing:"easeOutQuad",complete:function(){a(this).remove()}}),f.css({width:"10px",right:0,left:""}))}})),c.off("click.sidenav").on("click.sidenav",function(){if(i===!0)i=!1,h=!1,g();else{var c=a("body"),d=a('<div id="sidenav-overlay"></div>'),j=c.innerWidth();c.css("overflow","hidden"),c.width(j),a("body").append(f),"left"===b.edge?(f.css({width:"50%",right:0,left:""}),e.velocity({translateX:[0,-1*b.menuWidth]},{duration:300,queue:!1,easing:"easeOutQuad"})):(f.css({width:"50%",right:"",left:0}),e.velocity({translateX:[0,b.menuWidth]},{duration:300,queue:!1,easing:"easeOutQuad"})),d.css("opacity",0).click(function(){i=!1,h=!1,g(),d.velocity({opacity:0},{duration:300,queue:!1,easing:"easeOutQuad",complete:function(){a(this).remove()}})}),a("body").append(d),d.velocity({opacity:1},{duration:300,queue:!1,easing:"easeOutQuad",complete:function(){i=!0,h=!1}})}return!1})})},destroy:function(){var b=a("#sidenav-overlay"),c=a('.drag-target[data-sidenav="'+a(this).attr("data-activates")+'"]');b.trigger("click"),c.remove(),a(this).off("click"),b.remove()},show:function(){this.trigger("click")},hide:function(){a("#sidenav-overlay").trigger("click")}};a.fn.sideNav=function(c){return b[c]?b[c].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof c&&c?void a.error("Method "+c+" does not exist on jQuery.sideNav"):b.init.apply(this,arguments)}}(jQuery),function(a){function b(b,c,d,e){var g=a();return a.each(f,function(a,f){if(f.height()>0){var h=f.offset().top,i=f.offset().left,j=i+f.width(),k=h+f.height(),l=!(i>c||j<e||h>d||k<b);l&&g.push(f)}}),g}function c(c){++i;var d=e.scrollTop(),f=e.scrollLeft(),h=f+e.width(),k=d+e.height(),l=b(d+j.top+c||200,h+j.right,k+j.bottom,f+j.left);a.each(l,function(a,b){var c=b.data("scrollSpy:ticks");"number"!=typeof c&&b.triggerHandler("scrollSpy:enter"),b.data("scrollSpy:ticks",i)}),a.each(g,function(a,b){var c=b.data("scrollSpy:ticks");"number"==typeof c&&c!==i&&(b.triggerHandler("scrollSpy:exit"),b.data("scrollSpy:ticks",null))}),g=l}function d(){e.trigger("scrollSpy:winSize")}var e=a(window),f=[],g=[],h=!1,i=0,j={top:0,right:0,bottom:0,left:0};a.scrollSpy=function(b,d){var g={throttle:100,scrollOffset:200};d=a.extend(g,d);var i=[];b=a(b),b.each(function(b,c){f.push(a(c)),a(c).data("scrollSpy:id",b),a('a[href="#'+a(c).attr("id")+'"]').click(function(b){b.preventDefault();var c=a(Materialize.escapeHash(this.hash)).offset().top+1;a("html, body").animate({scrollTop:c-d.scrollOffset},{duration:400,queue:!1,easing:"easeOutCubic"})})}),j.top=d.offsetTop||0,j.right=d.offsetRight||0,j.bottom=d.offsetBottom||0,j.left=d.offsetLeft||0;var k=Materialize.throttle(function(){c(d.scrollOffset)},d.throttle||100),l=function(){a(document).ready(k)};return h||(e.on("scroll",l),e.on("resize",l),h=!0),setTimeout(l,0),b.on("scrollSpy:enter",function(){i=a.grep(i,function(a){return 0!=a.height()});var b=a(this);i[0]?(a('a[href="#'+i[0].attr("id")+'"]').removeClass("active"),b.data("scrollSpy:id")<i[0].data("scrollSpy:id")?i.unshift(a(this)):i.push(a(this))):i.push(a(this)),a('a[href="#'+i[0].attr("id")+'"]').addClass("active")}),b.on("scrollSpy:exit",function(){if(i=a.grep(i,function(a){return 0!=a.height()}),i[0]){a('a[href="#'+i[0].attr("id")+'"]').removeClass("active");var b=a(this);i=a.grep(i,function(a){return a.attr("id")!=b.attr("id")}),i[0]&&a('a[href="#'+i[0].attr("id")+'"]').addClass("active")}}),b},a.winSizeSpy=function(b){return a.winSizeSpy=function(){return e},b=b||{throttle:100},e.on("resize",Materialize.throttle(d,b.throttle||100))},a.fn.scrollSpy=function(b){return a.scrollSpy(a(this),b)}}(jQuery),function(a){a(document).ready(function(){function b(b){var c=b.css("font-family"),d=b.css("font-size"),f=b.css("line-height");d&&e.css("font-size",d),c&&e.css("font-family",c),f&&e.css("line-height",f),"off"===b.attr("wrap")&&e.css("overflow-wrap","normal").css("white-space","pre"),e.text(b.val()+"\n");var g=e.html().replace(/\n/g,"<br>");e.html(g),b.is(":visible")?e.css("width",b.width()):e.css("width",a(window).width()/2),b.css("height",e.height())}Materialize.updateTextFields=function(){var b="input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], textarea";a(b).each(function(b,c){var d=a(this);a(c).val().length>0||c.autofocus||void 0!==d.attr("placeholder")?d.siblings("label").addClass("active"):a(c)[0].validity?d.siblings("label").toggleClass("active",a(c)[0].validity.badInput===!0):d.siblings("label").removeClass("active")})};var c="input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], textarea";a(document).on("change",c,function(){0===a(this).val().length&&void 0===a(this).attr("placeholder")||a(this).siblings("label").addClass("active"),validate_field(a(this))}),a(document).ready(function(){Materialize.updateTextFields()}),a(document).on("reset",function(b){var d=a(b.target);d.is("form")&&(d.find(c).removeClass("valid").removeClass("invalid"),d.find(c).each(function(){""===a(this).attr("value")&&a(this).siblings("label").removeClass("active")}),d.find("select.initialized").each(function(){var a=d.find("option[selected]").text();d.siblings("input.select-dropdown").val(a)}))}),a(document).on("focus",c,function(){a(this).siblings("label, .prefix").addClass("active")}),a(document).on("blur",c,function(){var b=a(this),c=".prefix";0===b.val().length&&b[0].validity.badInput!==!0&&void 0===b.attr("placeholder")&&(c+=", label"),b.siblings(c).removeClass("active"),validate_field(b)}),window.validate_field=function(a){var b=void 0!==a.attr("data-length"),c=parseInt(a.attr("data-length")),d=a.val().length;0===a.val().length&&a[0].validity.badInput===!1?a.hasClass("validate")&&(a.removeClass("valid"),a.removeClass("invalid")):a.hasClass("validate")&&(a.is(":valid")&&b&&d<=c||a.is(":valid")&&!b?(a.removeClass("invalid"),a.addClass("valid")):(a.removeClass("valid"),a.addClass("invalid")))};var d="input[type=radio], input[type=checkbox]";a(document).on("keyup.radio",d,function(b){if(9===b.which){a(this).addClass("tabbed");var c=a(this);return void c.one("blur",function(b){a(this).removeClass("tabbed")})}});var e=a(".hiddendiv").first();e.length||(e=a('<div class="hiddendiv common"></div>'),a("body").append(e));var f=".materialize-textarea";a(f).each(function(){var c=a(this);c.val().length&&b(c)}),a("body").on("keyup keydown autoresize",f,function(){b(a(this))}),a(document).on("change",'.file-field input[type="file"]',function(){for(var b=a(this).closest(".file-field"),c=b.find("input.file-path"),d=a(this)[0].files,e=[],f=0;f<d.length;f++)e.push(d[f].name);c.val(e.join(", ")),c.trigger("change")});var g,h="input[type=range]",i=!1;a(h).each(function(){var b=a('<span class="thumb"><span class="value"></span></span>');a(this).after(b)});var j=".range-field";a(document).on("change",h,function(b){var c=a(this).siblings(".thumb");c.find(".value").html(a(this).val())}),a(document).on("input mousedown touchstart",h,function(b){var c=a(this).siblings(".thumb"),d=a(this).outerWidth();c.length<=0&&(c=a('<span class="thumb"><span class="value"></span></span>'),a(this).after(c)),c.find(".value").html(a(this).val()),i=!0,a(this).addClass("active"),c.hasClass("active")||c.velocity({height:"30px",width:"30px",top:"-20px",marginLeft:"-15px"},{duration:300,easing:"easeOutExpo"}),"input"!==b.type&&(g=void 0===b.pageX||null===b.pageX?b.originalEvent.touches[0].pageX-a(this).offset().left:b.pageX-a(this).offset().left,g<0?g=0:g>d&&(g=d),c.addClass("active").css("left",g)),c.find(".value").html(a(this).val())}),a(document).on("mouseup touchend",j,function(){i=!1,a(this).removeClass("active")}),a(document).on("mousemove touchmove",j,function(b){var c,d=a(this).children(".thumb");if(i){d.hasClass("active")||d.velocity({height:"30px",width:"30px",top:"-20px",marginLeft:"-15px"},{duration:300,easing:"easeOutExpo"}),c=void 0===b.pageX||null===b.pageX?b.originalEvent.touches[0].pageX-a(this).offset().left:b.pageX-a(this).offset().left;var e=a(this).outerWidth();c<0?c=0:c>e&&(c=e),d.addClass("active").css("left",c),d.find(".value").html(d.siblings(h).val())}}),a(document).on("mouseout touchleave",j,function(){if(!i){var b=a(this).children(".thumb");b.hasClass("active")&&b.velocity({height:"0",width:"0",top:"10px",marginLeft:"-6px"},{duration:100}),b.removeClass("active")}}),a.fn.autocomplete=function(b){var c={data:{},limit:1/0,onAutocomplete:null};return b=a.extend(c,b),this.each(function(){var c,d=a(this),e=b.data,f=0,g=0,h=d.closest(".input-field");if(!a.isEmptyObject(e)){var i,j=a('<ul class="autocomplete-content dropdown-content"></ul>');h.length?(i=h.children(".autocomplete-content.dropdown-content").first(),i.length||h.append(j)):(i=d.next(".autocomplete-content.dropdown-content"),i.length||d.after(j)),i.length&&(j=i);var k=function(a,b){var c=b.find("img"),d=b.text().toLowerCase().indexOf(""+a.toLowerCase()),e=d+a.length-1,f=b.text().slice(0,d),g=b.text().slice(d,e+1),h=b.text().slice(e+1);b.html("<span>"+f+"<span class='highlight'>"+g+"</span>"+h+"</span>"),c.length&&b.prepend(c)},l=function(){g=0,j.find(".active").removeClass("active")};d.off("keyup.autocomplete").on("keyup.autocomplete",function(g){if(f=0,13!==g.which&&38!==g.which&&40!==g.which){var h=d.val().toLowerCase();if(c!==h&&(j.empty(),l(),""!==h))for(var i in e)if(e.hasOwnProperty(i)&&i.toLowerCase().indexOf(h)!==-1&&i.toLowerCase()!==h){if(f>=b.limit)break;var m=a("<li></li>");e[i]?m.append('<img src="'+e[i]+'" class="right circle"><span>'+i+"</span>"):m.append("<span>"+i+"</span>"),j.append(m),k(h,m),f++}c=h}}),d.off("keydown.autocomplete").on("keydown.autocomplete",function(a){var b,c=a.which,d=j.children("li").length,e=j.children(".active").first();return 13===c?(b=j.children("li").eq(g),void(b.length&&(b.click(),a.preventDefault()))):void(38!==c&&40!==c||(a.preventDefault(),38===c&&g>0&&g--,40===c&&g<d-1&&e.length&&g++,e.removeClass("active"),j.children("li").eq(g).addClass("active")))}),j.on("click","li",function(){var c=a(this).text().trim();d.val(c),d.trigger("change"),j.empty(),l(),"function"==typeof b.onAutocomplete&&b.onAutocomplete.call(this,c)})}})}}),a.fn.material_select=function(b){function c(a,b,c){var e=a.indexOf(b),f=e===-1;return f?a.push(b):a.splice(e,1),c.siblings("ul.dropdown-content").find("li").eq(b).toggleClass("active"),c.find("option").eq(b).prop("selected",f),d(a,c),f}function d(a,b){
9
+ for(var c="",d=0,e=a.length;d<e;d++){var f=b.find("option").eq(a[d]).text();c+=0===d?f:", "+f}""===c&&(c=b.find("option:disabled").eq(0).text()),b.siblings("input.select-dropdown").val(c)}a(this).each(function(){var d=a(this);if(!d.hasClass("browser-default")){var e=!!d.attr("multiple"),f=d.data("select-id");if(f&&(d.parent().find("span.caret").remove(),d.parent().find("input").remove(),d.unwrap(),a("ul#select-options-"+f).remove()),"destroy"===b)return void d.data("select-id",null).removeClass("initialized");var g=Materialize.guid();d.data("select-id",g);var h=a('<div class="select-wrapper"></div>');h.addClass(d.attr("class"));var i=a('<ul id="select-options-'+g+'" class="dropdown-content select-dropdown '+(e?"multiple-select-dropdown":"")+'"></ul>'),j=d.children("option, optgroup"),k=[],l=!1,m=d.find("option:selected").html()||d.find("option:first").html()||"",n=function(b,c,d){var e=c.is(":disabled")?"disabled ":"",f="optgroup-option"===d?"optgroup-option ":"",g=c.data("icon"),h=c.attr("class");if(g){var j="";return h&&(j=' class="'+h+'"'),"multiple"===d?i.append(a('<li class="'+e+'"><img alt="" src="'+g+'"'+j+'><span><input type="checkbox"'+e+"/><label></label>"+c.html()+"</span></li>")):i.append(a('<li class="'+e+f+'"><img alt="" src="'+g+'"'+j+"><span>"+c.html()+"</span></li>")),!0}"multiple"===d?i.append(a('<li class="'+e+'"><span><input type="checkbox"'+e+"/><label></label>"+c.html()+"</span></li>")):i.append(a('<li class="'+e+f+'"><span>'+c.html()+"</span></li>"))};j.length&&j.each(function(){if(a(this).is("option"))e?n(d,a(this),"multiple"):n(d,a(this));else if(a(this).is("optgroup")){var b=a(this).children("option");i.append(a('<li class="optgroup"><span>'+a(this).attr("label")+"</span></li>")),b.each(function(){n(d,a(this),"optgroup-option")})}}),i.find("li:not(.optgroup)").each(function(f){a(this).click(function(g){if(!a(this).hasClass("disabled")&&!a(this).hasClass("optgroup")){var h=!0;e?(a('input[type="checkbox"]',this).prop("checked",function(a,b){return!b}),h=c(k,a(this).index(),d),q.trigger("focus")):(i.find("li").removeClass("active"),a(this).toggleClass("active"),q.val(a(this).text())),r(i,a(this)),d.find("option").eq(f).prop("selected",h),d.trigger("change"),"undefined"!=typeof b&&b()}g.stopPropagation()})}),d.wrap(h);var o=a('<span class="caret">&#9660;</span>');d.is(":disabled")&&o.addClass("disabled");var p=m.replace(/"/g,"&quot;"),q=a('<input type="text" class="select-dropdown" readonly="true" '+(d.is(":disabled")?"disabled":"")+' data-activates="select-options-'+g+'" value="'+p+'"/>');d.before(q),q.before(o),q.after(i),d.is(":disabled")||q.dropdown({hover:!1,closeOnClick:!1}),d.attr("tabindex")&&a(q[0]).attr("tabindex",d.attr("tabindex")),d.addClass("initialized"),q.on({focus:function(){if(a("ul.select-dropdown").not(i[0]).is(":visible")&&a("input.select-dropdown").trigger("close"),!i.is(":visible")){a(this).trigger("open",["focus"]);var b=a(this).val();e&&b.indexOf(",")>=0&&(b=b.split(",")[0]);var c=i.find("li").filter(function(){return a(this).text().toLowerCase()===b.toLowerCase()})[0];r(i,c,!0)}},click:function(a){a.stopPropagation()}}),q.on("blur",function(){e||a(this).trigger("close"),i.find("li.selected").removeClass("selected")}),i.hover(function(){l=!0},function(){l=!1}),a(window).on({click:function(){e&&(l||q.trigger("close"))}}),e&&d.find("option:selected:not(:disabled)").each(function(){var b=a(this).index();c(k,b,d),i.find("li").eq(b).find(":checkbox").prop("checked",!0)});var r=function(b,c,d){if(c){b.find("li.selected").removeClass("selected");var f=a(c);f.addClass("selected"),e&&!d||i.scrollTo(f)}},s=[],t=function(b){if(9==b.which)return void q.trigger("close");if(40==b.which&&!i.is(":visible"))return void q.trigger("open");if(13!=b.which||i.is(":visible")){b.preventDefault();var c=String.fromCharCode(b.which).toLowerCase(),d=[9,13,27,38,40];if(c&&d.indexOf(b.which)===-1){s.push(c);var f=s.join(""),g=i.find("li").filter(function(){return 0===a(this).text().toLowerCase().indexOf(f)})[0];g&&r(i,g)}if(13==b.which){var h=i.find("li.selected:not(.disabled)")[0];h&&(a(h).trigger("click"),e||q.trigger("close"))}40==b.which&&(g=i.find("li.selected").length?i.find("li.selected").next("li:not(.disabled)")[0]:i.find("li:not(.disabled)")[0],r(i,g)),27==b.which&&q.trigger("close"),38==b.which&&(g=i.find("li.selected").prev("li:not(.disabled)")[0],g&&r(i,g)),setTimeout(function(){s=[]},1e3)}};q.on("keydown",t)}})}}(jQuery),function(a){var b={init:function(b){var c={indicators:!0,height:400,transition:500,interval:6e3};return b=a.extend(c,b),this.each(function(){function c(a,b){a.hasClass("center-align")?a.velocity({opacity:0,translateY:-100},{duration:b,queue:!1}):a.hasClass("right-align")?a.velocity({opacity:0,translateX:100},{duration:b,queue:!1}):a.hasClass("left-align")&&a.velocity({opacity:0,translateX:-100},{duration:b,queue:!1})}function d(a){a>=j.length?a=0:a<0&&(a=j.length-1),k=i.find(".active").index(),k!=a&&(e=j.eq(k),$caption=e.find(".caption"),e.removeClass("active"),e.velocity({opacity:0},{duration:b.transition,queue:!1,easing:"easeOutQuad",complete:function(){j.not(".active").velocity({opacity:0,translateX:0,translateY:0},{duration:0,queue:!1})}}),c($caption,b.transition),b.indicators&&f.eq(k).removeClass("active"),j.eq(a).velocity({opacity:1},{duration:b.transition,queue:!1,easing:"easeOutQuad"}),j.eq(a).find(".caption").velocity({opacity:1,translateX:0,translateY:0},{duration:b.transition,delay:b.transition,queue:!1,easing:"easeOutQuad"}),j.eq(a).addClass("active"),b.indicators&&f.eq(a).addClass("active"))}var e,f,g,h=a(this),i=h.find("ul.slides").first(),j=i.find("> li"),k=i.find(".active").index();k!=-1&&(e=j.eq(k)),h.hasClass("fullscreen")||(b.indicators?h.height(b.height+40):h.height(b.height),i.height(b.height)),j.find(".caption").each(function(){c(a(this),0)}),j.find("img").each(function(){var b="data:image/gif;base64,R0lGODlhAQABAIABAP///wAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==";a(this).attr("src")!==b&&(a(this).css("background-image","url("+a(this).attr("src")+")"),a(this).attr("src",b))}),b.indicators&&(f=a('<ul class="indicators"></ul>'),j.each(function(c){var e=a('<li class="indicator-item"></li>');e.click(function(){var c=i.parent(),e=c.find(a(this)).index();d(e),clearInterval(g),g=setInterval(function(){k=i.find(".active").index(),j.length==k+1?k=0:k+=1,d(k)},b.transition+b.interval)}),f.append(e)}),h.append(f),f=h.find("ul.indicators").find("li.indicator-item")),e?e.show():(j.first().addClass("active").velocity({opacity:1},{duration:b.transition,queue:!1,easing:"easeOutQuad"}),k=0,e=j.eq(k),b.indicators&&f.eq(k).addClass("active")),e.find("img").each(function(){e.find(".caption").velocity({opacity:1,translateX:0,translateY:0},{duration:b.transition,queue:!1,easing:"easeOutQuad"})}),g=setInterval(function(){k=i.find(".active").index(),d(k+1)},b.transition+b.interval);var l=!1,m=!1,n=!1;h.hammer({prevent_default:!1}).bind("pan",function(a){if("touch"===a.gesture.pointerType){clearInterval(g);var b=a.gesture.direction,c=a.gesture.deltaX,d=a.gesture.velocityX,e=a.gesture.velocityY;$curr_slide=i.find(".active"),Math.abs(d)>Math.abs(e)&&$curr_slide.velocity({translateX:c},{duration:50,queue:!1,easing:"easeOutQuad"}),4===b&&(c>h.innerWidth()/2||d<-.65)?n=!0:2===b&&(c<-1*h.innerWidth()/2||d>.65)&&(m=!0);var f;m&&(f=$curr_slide.next(),0===f.length&&(f=j.first()),f.velocity({opacity:1},{duration:300,queue:!1,easing:"easeOutQuad"})),n&&(f=$curr_slide.prev(),0===f.length&&(f=j.last()),f.velocity({opacity:1},{duration:300,queue:!1,easing:"easeOutQuad"}))}}).bind("panend",function(a){"touch"===a.gesture.pointerType&&($curr_slide=i.find(".active"),l=!1,curr_index=i.find(".active").index(),!n&&!m||j.length<=1?$curr_slide.velocity({translateX:0},{duration:300,queue:!1,easing:"easeOutQuad"}):m?(d(curr_index+1),$curr_slide.velocity({translateX:-1*h.innerWidth()},{duration:300,queue:!1,easing:"easeOutQuad",complete:function(){$curr_slide.velocity({opacity:0,translateX:0},{duration:0,queue:!1})}})):n&&(d(curr_index-1),$curr_slide.velocity({translateX:h.innerWidth()},{duration:300,queue:!1,easing:"easeOutQuad",complete:function(){$curr_slide.velocity({opacity:0,translateX:0},{duration:0,queue:!1})}})),m=!1,n=!1,clearInterval(g),g=setInterval(function(){k=i.find(".active").index(),j.length==k+1?k=0:k+=1,d(k)},b.transition+b.interval))}),h.on("sliderPause",function(){clearInterval(g)}),h.on("sliderStart",function(){clearInterval(g),g=setInterval(function(){k=i.find(".active").index(),j.length==k+1?k=0:k+=1,d(k)},b.transition+b.interval)}),h.on("sliderNext",function(){k=i.find(".active").index(),d(k+1)}),h.on("sliderPrev",function(){k=i.find(".active").index(),d(k-1)})})},pause:function(){a(this).trigger("sliderPause")},start:function(){a(this).trigger("sliderStart")},next:function(){a(this).trigger("sliderNext")},prev:function(){a(this).trigger("sliderPrev")}};a.fn.slider=function(c){return b[c]?b[c].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof c&&c?void a.error("Method "+c+" does not exist on jQuery.tooltip"):b.init.apply(this,arguments)}}(jQuery),function(a){a(document).ready(function(){a(document).on("click.card",".card",function(b){a(this).find("> .card-reveal").length&&(a(b.target).is(a(".card-reveal .card-title"))||a(b.target).is(a(".card-reveal .card-title i"))?a(this).find(".card-reveal").velocity({translateY:0},{duration:225,queue:!1,easing:"easeInOutQuad",complete:function(){a(this).css({display:"none"})}}):(a(b.target).is(a(".card .activator"))||a(b.target).is(a(".card .activator i")))&&(a(b.target).closest(".card").css("overflow","hidden"),a(this).find(".card-reveal").css({display:"block"}).velocity("stop",!1).velocity({translateY:"-100%"},{duration:300,queue:!1,easing:"easeInOutQuad"})))})})}(jQuery),function(a){var b={data:[],placeholder:"",secondaryPlaceholder:"",autocompleteData:{},autocompleteLimit:1/0};a(document).ready(function(){a(document).on("click",".chip .close",function(b){var c=a(this).closest(".chips");c.attr("data-initialized")||a(this).closest(".chip").remove()})}),a.fn.material_chip=function(c){var d=this;if(this.$el=a(this),this.$document=a(document),this.SELS={CHIPS:".chips",CHIP:".chip",INPUT:"input",DELETE:".material-icons",SELECTED_CHIP:".selected"},"data"===c)return this.$el.data("chips");var e=a.extend({},b,c);d.hasAutocomplete=!a.isEmptyObject(e.autocompleteData),this.init=function(){var b=0;d.$el.each(function(){var c=a(this),f=Materialize.guid();d.chipId=f,e.data&&e.data instanceof Array||(e.data=[]),c.data("chips",e.data),c.attr("data-index",b),c.attr("data-initialized",!0),c.hasClass(d.SELS.CHIPS)||c.addClass("chips"),d.chips(c,f),b++})},this.handleEvents=function(){var b=d.SELS;d.$document.off("click.chips-focus",b.CHIPS).on("click.chips-focus",b.CHIPS,function(c){a(c.target).find(b.INPUT).focus()}),d.$document.off("click.chips-select",b.CHIP).on("click.chips-select",b.CHIP,function(c){var e=a(c.target);if(e.length){var f=e.hasClass("selected"),g=e.closest(b.CHIPS);a(b.CHIP).removeClass("selected"),f||d.selectChip(e.index(),g)}}),d.$document.off("keydown.chips").on("keydown.chips",function(c){if(!a(c.target).is("input, textarea")){var e,f=d.$document.find(b.CHIP+b.SELECTED_CHIP),g=f.closest(b.CHIPS),h=f.siblings(b.CHIP).length;if(f.length)if(8===c.which||46===c.which){c.preventDefault(),e=f.index(),d.deleteChip(e,g);var i=null;e+1<h?i=e:e!==h&&e+1!==h||(i=h-1),i<0&&(i=null),null!==i&&d.selectChip(i,g),h||g.find("input").focus()}else if(37===c.which){if(e=f.index()-1,e<0)return;a(b.CHIP).removeClass("selected"),d.selectChip(e,g)}else if(39===c.which){if(e=f.index()+1,a(b.CHIP).removeClass("selected"),e>h)return void g.find("input").focus();d.selectChip(e,g)}}}),d.$document.off("focusin.chips",b.CHIPS+" "+b.INPUT).on("focusin.chips",b.CHIPS+" "+b.INPUT,function(c){var d=a(c.target).closest(b.CHIPS);d.addClass("focus"),d.siblings("label, .prefix").addClass("active"),a(b.CHIP).removeClass("selected")}),d.$document.off("focusout.chips",b.CHIPS+" "+b.INPUT).on("focusout.chips",b.CHIPS+" "+b.INPUT,function(c){var d=a(c.target).closest(b.CHIPS);d.removeClass("focus"),d.data("chips").length||d.siblings("label").removeClass("active"),d.siblings(".prefix").removeClass("active")}),d.$document.off("keydown.chips-add",b.CHIPS+" "+b.INPUT).on("keydown.chips-add",b.CHIPS+" "+b.INPUT,function(c){var e=a(c.target),f=e.closest(b.CHIPS),g=f.children(b.CHIP).length;if(13===c.which){if(d.hasAutocomplete&&f.find(".autocomplete-content.dropdown-content").length&&f.find(".autocomplete-content.dropdown-content").children().length)return;return c.preventDefault(),d.addChip({tag:e.val()},f),void e.val("")}if((8===c.keyCode||37===c.keyCode)&&""===e.val()&&g)return c.preventDefault(),d.selectChip(g-1,f),void e.blur()}),d.$document.off("click.chips-delete",b.CHIPS+" "+b.DELETE).on("click.chips-delete",b.CHIPS+" "+b.DELETE,function(c){var e=a(c.target),f=e.closest(b.CHIPS),g=e.closest(b.CHIP);c.stopPropagation(),d.deleteChip(g.index(),f),f.find("input").focus()})},this.chips=function(b,c){var f="";b.data("chips").forEach(function(a){f+=d.renderChip(a)}),f+='<input id="'+c+'" class="input" placeholder="">',b.html(f),d.setPlaceholder(b);var g=b.next("label");g.length&&(g.attr("for",c),b.data("chips").length&&g.addClass("active"));var h=a("#"+c);d.hasAutocomplete&&h.autocomplete({data:e.autocompleteData,limit:e.autocompleteLimit,onAutocomplete:function(a){d.addChip({tag:a},b),h.val(""),h.focus()}})},this.renderChip=function(a){if(a.tag){var b='<div class="chip">'+a.tag;return a.image&&(b+=' <img src="'+a.image+'"> '),b+='<i class="material-icons close">close</i>',b+="</div>"}},this.setPlaceholder=function(a){a.data("chips").length&&e.placeholder?a.find("input").prop("placeholder",e.placeholder):!a.data("chips").length&&e.secondaryPlaceholder&&a.find("input").prop("placeholder",e.secondaryPlaceholder)},this.isValid=function(a,b){for(var c=a.data("chips"),d=!1,e=0;e<c.length;e++)if(c[e].tag===b.tag)return void(d=!0);return""!==b.tag&&!d},this.addChip=function(b,c){if(d.isValid(c,b)){for(var e=d.renderChip(b),f=[],g=c.data("chips"),h=0;h<g.length;h++)f.push(g[h]);f.push(b),c.data("chips",f),a(e).insertBefore(c.find("input")),c.trigger("chip.add",b),d.setPlaceholder(c)}},this.deleteChip=function(a,b){var c=b.data("chips")[a];b.find(".chip").eq(a).remove();for(var e=[],f=b.data("chips"),g=0;g<f.length;g++)g!==a&&e.push(f[g]);b.data("chips",e),b.trigger("chip.delete",c),d.setPlaceholder(b)},this.selectChip=function(a,b){var c=b.find(".chip").eq(a);c&&!1===c.hasClass("selected")&&(c.addClass("selected"),b.trigger("chip.select",b.data("chips")[a]))},this.getChipsElement=function(a,b){return b.eq(a)},this.init(),this.handleEvents()}}(jQuery),function(a){a.fn.pushpin=function(b){var c={top:0,bottom:1/0,offset:0};return"remove"===b?(this.each(function(){(id=a(this).data("pushpin-id"))&&(a(window).off("scroll."+id),a(this).removeData("pushpin-id").removeClass("pin-top pinned pin-bottom").removeAttr("style"))}),!1):(b=a.extend(c,b),$index=0,this.each(function(){function c(a){a.removeClass("pin-top"),a.removeClass("pinned"),a.removeClass("pin-bottom")}function d(d,e){d.each(function(){b.top<=e&&b.bottom>=e&&!a(this).hasClass("pinned")&&(c(a(this)),a(this).css("top",b.offset),a(this).addClass("pinned")),e<b.top&&!a(this).hasClass("pin-top")&&(c(a(this)),a(this).css("top",0),a(this).addClass("pin-top")),e>b.bottom&&!a(this).hasClass("pin-bottom")&&(c(a(this)),a(this).addClass("pin-bottom"),a(this).css("top",b.bottom-g))})}var e=Materialize.guid(),f=a(this),g=a(this).offset().top;a(this).data("pushpin-id",e),d(f,a(window).scrollTop()),a(window).on("scroll."+e,function(){var c=a(window).scrollTop()+b.offset;d(f,c)})}))}}(jQuery),function(a){a(document).ready(function(){a.fn.reverse=[].reverse,a(document).on("mouseenter.fixedActionBtn",".fixed-action-btn:not(.click-to-toggle):not(.toolbar)",function(c){var d=a(this);b(d)}),a(document).on("mouseleave.fixedActionBtn",".fixed-action-btn:not(.click-to-toggle):not(.toolbar)",function(b){var d=a(this);c(d)}),a(document).on("click.fabClickToggle",".fixed-action-btn.click-to-toggle > a",function(d){var e=a(this),f=e.parent();f.hasClass("active")?c(f):b(f)}),a(document).on("click.fabToolbar",".fixed-action-btn.toolbar > a",function(b){var c=a(this),e=c.parent();d(e)})}),a.fn.extend({openFAB:function(){b(a(this))},closeFAB:function(){c(a(this))},openToolbar:function(){d(a(this))},closeToolbar:function(){e(a(this))}});var b=function(b){var c=b;if(c.hasClass("active")===!1){var d,e,f=c.hasClass("horizontal");f===!0?e=40:d=40,c.addClass("active"),c.find("ul .btn-floating").velocity({scaleY:".4",scaleX:".4",translateY:d+"px",translateX:e+"px"},{duration:0});var g=0;c.find("ul .btn-floating").reverse().each(function(){a(this).velocity({opacity:"1",scaleX:"1",scaleY:"1",translateY:"0",translateX:"0"},{duration:80,delay:g}),g+=40})}},c=function(a){var b,c,d=a,e=d.hasClass("horizontal");e===!0?c=40:b=40,d.removeClass("active");d.find("ul .btn-floating").velocity("stop",!0),d.find("ul .btn-floating").velocity({opacity:"0",scaleX:".4",scaleY:".4",translateY:b+"px",translateX:c+"px"},{duration:80})},d=function(b){if("true"!==b.attr("data-open")){var c,d,f,g=window.innerWidth,h=window.innerHeight,i=b[0].getBoundingClientRect(),j=b.find("> a").first(),k=b.find("> ul").first(),l=a('<div class="fab-backdrop"></div>'),m=j.css("background-color");j.append(l),c=i.left-g/2+i.width/2,d=h-i.bottom,f=g/l.width(),b.attr("data-origin-bottom",i.bottom),b.attr("data-origin-left",i.left),b.attr("data-origin-width",i.width),b.addClass("active"),b.attr("data-open",!0),b.css({"text-align":"center",width:"100%",bottom:0,left:0,transform:"translateX("+c+"px)",transition:"none"}),j.css({transform:"translateY("+-d+"px)",transition:"none"}),l.css({"background-color":m}),setTimeout(function(){b.css({transform:"",transition:"transform .2s cubic-bezier(0.550, 0.085, 0.680, 0.530), background-color 0s linear .2s"}),j.css({overflow:"visible",transform:"",transition:"transform .2s"}),setTimeout(function(){b.css({overflow:"hidden","background-color":m}),l.css({transform:"scale("+f+")",transition:"transform .2s cubic-bezier(0.550, 0.055, 0.675, 0.190)"}),k.find("> li > a").css({opacity:1}),a(window).on("scroll.fabToolbarClose",function(){e(b),a(window).off("scroll.fabToolbarClose"),a(document).off("click.fabToolbarClose")}),a(document).on("click.fabToolbarClose",function(c){a(c.target).closest(k).length||(e(b),a(window).off("scroll.fabToolbarClose"),a(document).off("click.fabToolbarClose"))})},100)},0)}},e=function(a){if("true"===a.attr("data-open")){var b,c,d,e=window.innerWidth,f=window.innerHeight,g=a.attr("data-origin-width"),h=a.attr("data-origin-bottom"),i=a.attr("data-origin-left"),j=a.find("> .btn-floating").first(),k=a.find("> ul").first(),l=a.find(".fab-backdrop"),m=j.css("background-color");b=i-e/2+g/2,c=f-h,d=e/l.width(),a.removeClass("active"),a.attr("data-open",!1),a.css({"background-color":"transparent",transition:"none"}),j.css({transition:"none"}),l.css({transform:"scale(0)","background-color":m}),k.find("> li > a").css({opacity:""}),setTimeout(function(){l.remove(),a.css({"text-align":"",width:"",bottom:"",left:"",overflow:"","background-color":"",transform:"translate3d("+-b+"px,0,0)"}),j.css({overflow:"",transform:"translate3d(0,"+c+"px,0)"}),setTimeout(function(){a.css({transform:"translate3d(0,0,0)",transition:"transform .2s"}),j.css({transform:"translate3d(0,0,0)",transition:"transform .2s cubic-bezier(0.550, 0.055, 0.675, 0.190)"})},20)},200)}}}(jQuery),function(a){Materialize.fadeInImage=function(b){var c;if("string"==typeof b)c=a(b);else{if("object"!=typeof b)return;c=b}c.css({opacity:0}),a(c).velocity({opacity:1},{duration:650,queue:!1,easing:"easeOutSine"}),a(c).velocity({opacity:1},{duration:1300,queue:!1,easing:"swing",step:function(b,c){c.start=100;var d=b/100,e=150-(100-b)/1.75;e<100&&(e=100),b>=0&&a(this).css({"-webkit-filter":"grayscale("+d+")brightness("+e+"%)",filter:"grayscale("+d+")brightness("+e+"%)"})}})},Materialize.showStaggeredList=function(b){var c;if("string"==typeof b)c=a(b);else{if("object"!=typeof b)return;c=b}var d=0;c.find("li").velocity({translateX:"-100px"},{duration:0}),c.find("li").each(function(){a(this).velocity({opacity:"1",translateX:"0"},{duration:800,delay:d,easing:[60,10]}),d+=120})},a(document).ready(function(){var b=!1,c=!1;a(".dismissable").each(function(){a(this).hammer({prevent_default:!1}).bind("pan",function(d){if("touch"===d.gesture.pointerType){var e=a(this),f=d.gesture.direction,g=d.gesture.deltaX,h=d.gesture.velocityX;e.velocity({translateX:g},{duration:50,queue:!1,easing:"easeOutQuad"}),4===f&&(g>e.innerWidth()/2||h<-.75)&&(b=!0),2===f&&(g<-1*e.innerWidth()/2||h>.75)&&(c=!0)}}).bind("panend",function(d){if(Math.abs(d.gesture.deltaX)<a(this).innerWidth()/2&&(c=!1,b=!1),"touch"===d.gesture.pointerType){var e=a(this);if(b||c){var f;f=b?e.innerWidth():-1*e.innerWidth(),e.velocity({translateX:f},{duration:100,queue:!1,easing:"easeOutQuad",complete:function(){e.css("border","none"),e.velocity({height:0,padding:0},{duration:200,queue:!1,easing:"easeOutQuad",complete:function(){e.remove()}})}})}else e.velocity({translateX:0},{duration:100,queue:!1,easing:"easeOutQuad"});b=!1,c=!1}})})})}(jQuery),function(a){var b=!1;Materialize.scrollFire=function(a){var c=function(){for(var b=window.pageYOffset+window.innerHeight,c=0;c<a.length;c++){var d=a[c],e=d.selector,f=d.offset,g=d.callback,h=document.querySelector(e);if(null!==h){var i=h.getBoundingClientRect().top+window.pageYOffset;if(b>i+f&&d.done!==!0){if("function"==typeof g)g.call(this,h);else if("string"==typeof g){var j=new Function(g);j(h)}d.done=!0}}}},d=Materialize.throttle(function(){c()},a.throttle||100);b||(window.addEventListener("scroll",d),window.addEventListener("resize",d),b=!0),setTimeout(d,0)}}(jQuery),function(a){"function"==typeof define&&define.amd?define("picker",["jquery"],a):"object"==typeof exports?module.exports=a(require("jquery")):this.Picker=a(jQuery)}(function(a){function b(f,g,i,l){function m(){return b._.node("div",b._.node("div",b._.node("div",b._.node("div",y.component.nodes(t.open),v.box),v.wrap),v.frame),v.holder)}function n(){w.data(g,y).addClass(v.input).attr("tabindex",-1).val(w.data("value")?y.get("select",u.format):f.value),u.editable||w.on("focus."+t.id+" click."+t.id,function(a){a.preventDefault(),y.$root.eq(0).focus()}).on("keydown."+t.id,q),e(f,{haspopup:!0,expanded:!1,readonly:!1,owns:f.id+"_root"})}function o(){y.$root.on({keydown:q,focusin:function(a){y.$root.removeClass(v.focused),a.stopPropagation()},"mousedown click":function(b){var c=b.target;c!=y.$root.children()[0]&&(b.stopPropagation(),"mousedown"!=b.type||a(c).is("input, select, textarea, button, option")||(b.preventDefault(),y.$root.eq(0).focus()))}}).on({focus:function(){w.addClass(v.target)},blur:function(){w.removeClass(v.target)}}).on("focus.toOpen",r).on("click","[data-pick], [data-nav], [data-clear], [data-close]",function(){var b=a(this),c=b.data(),d=b.hasClass(v.navDisabled)||b.hasClass(v.disabled),e=h();e=e&&(e.type||e.href),(d||e&&!a.contains(y.$root[0],e))&&y.$root.eq(0).focus(),!d&&c.nav?y.set("highlight",y.component.item.highlight,{nav:c.nav}):!d&&"pick"in c?y.set("select",c.pick):c.clear?y.clear().close(!0):c.close&&y.close(!0)}),e(y.$root[0],"hidden",!0)}function p(){var b;u.hiddenName===!0?(b=f.name,f.name=""):(b=["string"==typeof u.hiddenPrefix?u.hiddenPrefix:"","string"==typeof u.hiddenSuffix?u.hiddenSuffix:"_submit"],b=b[0]+f.name+b[1]),y._hidden=a('<input type=hidden name="'+b+'"'+(w.data("value")||f.value?' value="'+y.get("select",u.formatSubmit)+'"':"")+">")[0],w.on("change."+t.id,function(){y._hidden.value=f.value?y.get("select",u.formatSubmit):""}),u.container?a(u.container).append(y._hidden):w.after(y._hidden)}function q(a){var b=a.keyCode,c=/^(8|46)$/.test(b);return 27==b?(y.close(),!1):void((32==b||c||!t.open&&y.component.key[b])&&(a.preventDefault(),a.stopPropagation(),c?y.clear().close():y.open()))}function r(a){a.stopPropagation(),"focus"==a.type&&y.$root.addClass(v.focused),y.open()}if(!f)return b;var s=!1,t={id:f.id||"P"+Math.abs(~~(Math.random()*new Date))},u=i?a.extend(!0,{},i.defaults,l):l||{},v=a.extend({},b.klasses(),u.klass),w=a(f),x=function(){return this.start()},y=x.prototype={constructor:x,$node:w,start:function(){return t&&t.start?y:(t.methods={},t.start=!0,t.open=!1,t.type=f.type,f.autofocus=f==h(),f.readOnly=!u.editable,f.id=f.id||t.id,"text"!=f.type&&(f.type="text"),y.component=new i(y,u),y.$root=a(b._.node("div",m(),v.picker,'id="'+f.id+'_root" tabindex="0"')),o(),u.formatSubmit&&p(),n(),u.container?a(u.container).append(y.$root):w.after(y.$root),y.on({start:y.component.onStart,render:y.component.onRender,stop:y.component.onStop,open:y.component.onOpen,close:y.component.onClose,set:y.component.onSet}).on({start:u.onStart,render:u.onRender,stop:u.onStop,open:u.onOpen,close:u.onClose,set:u.onSet}),s=c(y.$root.children()[0]),f.autofocus&&y.open(),y.trigger("start").trigger("render"))},render:function(a){return a?y.$root.html(m()):y.$root.find("."+v.box).html(y.component.nodes(t.open)),y.trigger("render")},stop:function(){return t.start?(y.close(),y._hidden&&y._hidden.parentNode.removeChild(y._hidden),y.$root.remove(),w.removeClass(v.input).removeData(g),setTimeout(function(){w.off("."+t.id)},0),f.type=t.type,f.readOnly=!1,y.trigger("stop"),t.methods={},t.start=!1,y):y},open:function(c){return t.open?y:(w.addClass(v.active),e(f,"expanded",!0),setTimeout(function(){y.$root.addClass(v.opened),e(y.$root[0],"hidden",!1)},0),c!==!1&&(t.open=!0,s&&k.css("overflow","hidden").css("padding-right","+="+d()),y.$root.eq(0).focus(),j.on("click."+t.id+" focusin."+t.id,function(a){var b=a.target;b!=f&&b!=document&&3!=a.which&&y.close(b===y.$root.children()[0])}).on("keydown."+t.id,function(c){var d=c.keyCode,e=y.component.key[d],f=c.target;27==d?y.close(!0):f!=y.$root[0]||!e&&13!=d?a.contains(y.$root[0],f)&&13==d&&(c.preventDefault(),f.click()):(c.preventDefault(),e?b._.trigger(y.component.key.go,y,[b._.trigger(e)]):y.$root.find("."+v.highlighted).hasClass(v.disabled)||y.set("select",y.component.item.highlight).close())})),y.trigger("open"))},close:function(a){return a&&(y.$root.off("focus.toOpen").eq(0).focus(),setTimeout(function(){y.$root.on("focus.toOpen",r)},0)),w.removeClass(v.active),e(f,"expanded",!1),setTimeout(function(){y.$root.removeClass(v.opened+" "+v.focused),e(y.$root[0],"hidden",!0)},0),t.open?(t.open=!1,s&&k.css("overflow","").css("padding-right","-="+d()),j.off("."+t.id),y.trigger("close")):y},clear:function(a){return y.set("clear",null,a)},set:function(b,c,d){var e,f,g=a.isPlainObject(b),h=g?b:{};if(d=g&&a.isPlainObject(c)?c:d||{},b){g||(h[b]=c);for(e in h)f=h[e],e in y.component.item&&(void 0===f&&(f=null),y.component.set(e,f,d)),"select"!=e&&"clear"!=e||w.val("clear"==e?"":y.get(e,u.format)).trigger("change");y.render()}return d.muted?y:y.trigger("set",h)},get:function(a,c){if(a=a||"value",null!=t[a])return t[a];if("valueSubmit"==a){if(y._hidden)return y._hidden.value;a="value"}if("value"==a)return f.value;if(a in y.component.item){if("string"==typeof c){var d=y.component.get(a);return d?b._.trigger(y.component.formats.toString,y.component,[c,d]):""}return y.component.get(a)}},on:function(b,c,d){var e,f,g=a.isPlainObject(b),h=g?b:{};if(b){g||(h[b]=c);for(e in h)f=h[e],d&&(e="_"+e),t.methods[e]=t.methods[e]||[],t.methods[e].push(f)}return y},off:function(){var a,b,c=arguments;for(a=0,namesCount=c.length;a<namesCount;a+=1)b=c[a],b in t.methods&&delete t.methods[b];return y},trigger:function(a,c){var d=function(a){var d=t.methods[a];d&&d.map(function(a){b._.trigger(a,y,[c])})};return d("_"+a),d(a),y}};return new x}function c(a){var b,c="position";return a.currentStyle?b=a.currentStyle[c]:window.getComputedStyle&&(b=getComputedStyle(a)[c]),"fixed"==b}function d(){if(k.height()<=i.height())return 0;var b=a('<div style="visibility:hidden;width:100px" />').appendTo("body"),c=b[0].offsetWidth;b.css("overflow","scroll");var d=a('<div style="width:100%" />').appendTo(b),e=d[0].offsetWidth;return b.remove(),c-e}function e(b,c,d){if(a.isPlainObject(c))for(var e in c)f(b,e,c[e]);else f(b,c,d)}function f(a,b,c){a.setAttribute(("role"==b?"":"aria-")+b,c)}function g(b,c){a.isPlainObject(b)||(b={attribute:c}),c="";for(var d in b){var e=("role"==d?"":"aria-")+d,f=b[d];c+=null==f?"":e+'="'+b[d]+'"'}return c}function h(){try{return document.activeElement}catch(a){}}var i=a(window),j=a(document),k=a(document.documentElement);return b.klasses=function(a){return a=a||"picker",{picker:a,opened:a+"--opened",focused:a+"--focused",input:a+"__input",active:a+"__input--active",target:a+"__input--target",holder:a+"__holder",frame:a+"__frame",wrap:a+"__wrap",box:a+"__box"}},b._={group:function(a){for(var c,d="",e=b._.trigger(a.min,a);e<=b._.trigger(a.max,a,[e]);e+=a.i)c=b._.trigger(a.item,a,[e]),d+=b._.node(a.node,c[0],c[1],c[2]);return d},node:function(b,c,d,e){return c?(c=a.isArray(c)?c.join(""):c,d=d?' class="'+d+'"':"",e=e?" "+e:"","<"+b+d+e+">"+c+"</"+b+">"):""},lead:function(a){return(a<10?"0":"")+a},trigger:function(a,b,c){return"function"==typeof a?a.apply(b,c||[]):a},digits:function(a){return/\d/.test(a[1])?2:1},isDate:function(a){return{}.toString.call(a).indexOf("Date")>-1&&this.isInteger(a.getDate())},isInteger:function(a){return{}.toString.call(a).indexOf("Number")>-1&&a%1===0},ariaAttr:g},b.extend=function(c,d){a.fn[c]=function(e,f){var g=this.data(c);return"picker"==e?g:g&&"string"==typeof e?b._.trigger(g[e],g,[f]):this.each(function(){var f=a(this);f.data(c)||new b(this,c,d,e)})},a.fn[c].defaults=d.defaults},b}),function(a){"function"==typeof define&&define.amd?define(["picker","jquery"],a):"object"==typeof exports?module.exports=a(require("./picker.js"),require("jquery")):a(Picker,jQuery)}(function(a,b){function c(a,b){var c=this,d=a.$node[0],e=d.value,f=a.$node.data("value"),g=f||e,h=f?b.formatSubmit:b.format,i=function(){return d.currentStyle?"rtl"==d.currentStyle.direction:"rtl"==getComputedStyle(a.$root[0]).direction};c.settings=b,c.$node=a.$node,c.queue={min:"measure create",max:"measure create",now:"now create",select:"parse create validate",highlight:"parse navigate create validate",view:"parse create validate viewset",disable:"deactivate",enable:"activate"},c.item={},c.item.clear=null,c.item.disable=(b.disable||[]).slice(0),c.item.enable=-function(a){return a[0]===!0?a.shift():-1}(c.item.disable),c.set("min",b.min).set("max",b.max).set("now"),g?c.set("select",g,{format:h}):c.set("select",null).set("highlight",c.item.now),c.key={40:7,38:-7,39:function(){return i()?-1:1},37:function(){return i()?1:-1},go:function(a){var b=c.item.highlight,d=new Date(b.year,b.month,b.date+a);c.set("highlight",d,{interval:a}),this.render()}},a.on("render",function(){a.$root.find("."+b.klass.selectMonth).on("change",function(){var c=this.value;c&&(a.set("highlight",[a.get("view").year,c,a.get("highlight").date]),a.$root.find("."+b.klass.selectMonth).trigger("focus"))}),a.$root.find("."+b.klass.selectYear).on("change",function(){var c=this.value;c&&(a.set("highlight",[c,a.get("view").month,a.get("highlight").date]),a.$root.find("."+b.klass.selectYear).trigger("focus"))})},1).on("open",function(){var d="";c.disabled(c.get("now"))&&(d=":not(."+b.klass.buttonToday+")"),a.$root.find("button"+d+", select").attr("disabled",!1)},1).on("close",function(){a.$root.find("button, select").attr("disabled",!0)},1)}var d=7,e=6,f=a._;c.prototype.set=function(a,b,c){var d=this,e=d.item;return null===b?("clear"==a&&(a="select"),e[a]=b,d):(e["enable"==a?"disable":"flip"==a?"enable":a]=d.queue[a].split(" ").map(function(e){return b=d[e](a,b,c)}).pop(),"select"==a?d.set("highlight",e.select,c):"highlight"==a?d.set("view",e.highlight,c):a.match(/^(flip|min|max|disable|enable)$/)&&(e.select&&d.disabled(e.select)&&d.set("select",e.select,c),e.highlight&&d.disabled(e.highlight)&&d.set("highlight",e.highlight,c)),d)},c.prototype.get=function(a){return this.item[a]},c.prototype.create=function(a,c,d){var e,g=this;return c=void 0===c?a:c,
10
+ c==-(1/0)||c==1/0?e=c:b.isPlainObject(c)&&f.isInteger(c.pick)?c=c.obj:b.isArray(c)?(c=new Date(c[0],c[1],c[2]),c=f.isDate(c)?c:g.create().obj):c=f.isInteger(c)||f.isDate(c)?g.normalize(new Date(c),d):g.now(a,c,d),{year:e||c.getFullYear(),month:e||c.getMonth(),date:e||c.getDate(),day:e||c.getDay(),obj:e||c,pick:e||c.getTime()}},c.prototype.createRange=function(a,c){var d=this,e=function(a){return a===!0||b.isArray(a)||f.isDate(a)?d.create(a):a};return f.isInteger(a)||(a=e(a)),f.isInteger(c)||(c=e(c)),f.isInteger(a)&&b.isPlainObject(c)?a=[c.year,c.month,c.date+a]:f.isInteger(c)&&b.isPlainObject(a)&&(c=[a.year,a.month,a.date+c]),{from:e(a),to:e(c)}},c.prototype.withinRange=function(a,b){return a=this.createRange(a.from,a.to),b.pick>=a.from.pick&&b.pick<=a.to.pick},c.prototype.overlapRanges=function(a,b){var c=this;return a=c.createRange(a.from,a.to),b=c.createRange(b.from,b.to),c.withinRange(a,b.from)||c.withinRange(a,b.to)||c.withinRange(b,a.from)||c.withinRange(b,a.to)},c.prototype.now=function(a,b,c){return b=new Date,c&&c.rel&&b.setDate(b.getDate()+c.rel),this.normalize(b,c)},c.prototype.navigate=function(a,c,d){var e,f,g,h,i=b.isArray(c),j=b.isPlainObject(c),k=this.item.view;if(i||j){for(j?(f=c.year,g=c.month,h=c.date):(f=+c[0],g=+c[1],h=+c[2]),d&&d.nav&&k&&k.month!==g&&(f=k.year,g=k.month),e=new Date(f,g+(d&&d.nav?d.nav:0),1),f=e.getFullYear(),g=e.getMonth();new Date(f,g,h).getMonth()!==g;)h-=1;c=[f,g,h]}return c},c.prototype.normalize=function(a){return a.setHours(0,0,0,0),a},c.prototype.measure=function(a,b){var c=this;return b?"string"==typeof b?b=c.parse(a,b):f.isInteger(b)&&(b=c.now(a,b,{rel:b})):b="min"==a?-(1/0):1/0,b},c.prototype.viewset=function(a,b){return this.create([b.year,b.month,1])},c.prototype.validate=function(a,c,d){var e,g,h,i,j=this,k=c,l=d&&d.interval?d.interval:1,m=j.item.enable===-1,n=j.item.min,o=j.item.max,p=m&&j.item.disable.filter(function(a){if(b.isArray(a)){var d=j.create(a).pick;d<c.pick?e=!0:d>c.pick&&(g=!0)}return f.isInteger(a)}).length;if((!d||!d.nav)&&(!m&&j.disabled(c)||m&&j.disabled(c)&&(p||e||g)||!m&&(c.pick<=n.pick||c.pick>=o.pick)))for(m&&!p&&(!g&&l>0||!e&&l<0)&&(l*=-1);j.disabled(c)&&(Math.abs(l)>1&&(c.month<k.month||c.month>k.month)&&(c=k,l=l>0?1:-1),c.pick<=n.pick?(h=!0,l=1,c=j.create([n.year,n.month,n.date+(c.pick===n.pick?0:-1)])):c.pick>=o.pick&&(i=!0,l=-1,c=j.create([o.year,o.month,o.date+(c.pick===o.pick?0:1)])),!h||!i);)c=j.create([c.year,c.month,c.date+l]);return c},c.prototype.disabled=function(a){var c=this,d=c.item.disable.filter(function(d){return f.isInteger(d)?a.day===(c.settings.firstDay?d:d-1)%7:b.isArray(d)||f.isDate(d)?a.pick===c.create(d).pick:b.isPlainObject(d)?c.withinRange(d,a):void 0});return d=d.length&&!d.filter(function(a){return b.isArray(a)&&"inverted"==a[3]||b.isPlainObject(a)&&a.inverted}).length,c.item.enable===-1?!d:d||a.pick<c.item.min.pick||a.pick>c.item.max.pick},c.prototype.parse=function(a,b,c){var d=this,e={};return b&&"string"==typeof b?(c&&c.format||(c=c||{},c.format=d.settings.format),d.formats.toArray(c.format).map(function(a){var c=d.formats[a],g=c?f.trigger(c,d,[b,e]):a.replace(/^!/,"").length;c&&(e[a]=b.substr(0,g)),b=b.substr(g)}),[e.yyyy||e.yy,+(e.mm||e.m)-1,e.dd||e.d]):b},c.prototype.formats=function(){function a(a,b,c){var d=a.match(/\w+/)[0];return c.mm||c.m||(c.m=b.indexOf(d)+1),d.length}function b(a){return a.match(/\w+/)[0].length}return{d:function(a,b){return a?f.digits(a):b.date},dd:function(a,b){return a?2:f.lead(b.date)},ddd:function(a,c){return a?b(a):this.settings.weekdaysShort[c.day]},dddd:function(a,c){return a?b(a):this.settings.weekdaysFull[c.day]},m:function(a,b){return a?f.digits(a):b.month+1},mm:function(a,b){return a?2:f.lead(b.month+1)},mmm:function(b,c){var d=this.settings.monthsShort;return b?a(b,d,c):d[c.month]},mmmm:function(b,c){var d=this.settings.monthsFull;return b?a(b,d,c):d[c.month]},yy:function(a,b){return a?2:(""+b.year).slice(2)},yyyy:function(a,b){return a?4:b.year},toArray:function(a){return a.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g)},toString:function(a,b){var c=this;return c.formats.toArray(a).map(function(a){return f.trigger(c.formats[a],c,[0,b])||a.replace(/^!/,"")}).join("")}}}(),c.prototype.isDateExact=function(a,c){var d=this;return f.isInteger(a)&&f.isInteger(c)||"boolean"==typeof a&&"boolean"==typeof c?a===c:(f.isDate(a)||b.isArray(a))&&(f.isDate(c)||b.isArray(c))?d.create(a).pick===d.create(c).pick:!(!b.isPlainObject(a)||!b.isPlainObject(c))&&(d.isDateExact(a.from,c.from)&&d.isDateExact(a.to,c.to))},c.prototype.isDateOverlap=function(a,c){var d=this,e=d.settings.firstDay?1:0;return f.isInteger(a)&&(f.isDate(c)||b.isArray(c))?(a=a%7+e,a===d.create(c).day+1):f.isInteger(c)&&(f.isDate(a)||b.isArray(a))?(c=c%7+e,c===d.create(a).day+1):!(!b.isPlainObject(a)||!b.isPlainObject(c))&&d.overlapRanges(a,c)},c.prototype.flipEnable=function(a){var b=this.item;b.enable=a||(b.enable==-1?1:-1)},c.prototype.deactivate=function(a,c){var d=this,e=d.item.disable.slice(0);return"flip"==c?d.flipEnable():c===!1?(d.flipEnable(1),e=[]):c===!0?(d.flipEnable(-1),e=[]):c.map(function(a){for(var c,g=0;g<e.length;g+=1)if(d.isDateExact(a,e[g])){c=!0;break}c||(f.isInteger(a)||f.isDate(a)||b.isArray(a)||b.isPlainObject(a)&&a.from&&a.to)&&e.push(a)}),e},c.prototype.activate=function(a,c){var d=this,e=d.item.disable,g=e.length;return"flip"==c?d.flipEnable():c===!0?(d.flipEnable(1),e=[]):c===!1?(d.flipEnable(-1),e=[]):c.map(function(a){var c,h,i,j;for(i=0;i<g;i+=1){if(h=e[i],d.isDateExact(h,a)){c=e[i]=null,j=!0;break}if(d.isDateOverlap(h,a)){b.isPlainObject(a)?(a.inverted=!0,c=a):b.isArray(a)?(c=a,c[3]||c.push("inverted")):f.isDate(a)&&(c=[a.getFullYear(),a.getMonth(),a.getDate(),"inverted"]);break}}if(c)for(i=0;i<g;i+=1)if(d.isDateExact(e[i],a)){e[i]=null;break}if(j)for(i=0;i<g;i+=1)if(d.isDateOverlap(e[i],a)){e[i]=null;break}c&&e.push(c)}),e.filter(function(a){return null!=a})},c.prototype.nodes=function(a){var b=this,c=b.settings,g=b.item,h=g.now,i=g.select,j=g.highlight,k=g.view,l=g.disable,m=g.min,n=g.max,o=function(a,b){return c.firstDay&&(a.push(a.shift()),b.push(b.shift())),f.node("thead",f.node("tr",f.group({min:0,max:d-1,i:1,node:"th",item:function(d){return[a[d],c.klass.weekdays,'scope=col title="'+b[d]+'"']}})))}((c.showWeekdaysFull?c.weekdaysFull:c.weekdaysLetter).slice(0),c.weekdaysFull.slice(0)),p=function(a){return f.node("div"," ",c.klass["nav"+(a?"Next":"Prev")]+(a&&k.year>=n.year&&k.month>=n.month||!a&&k.year<=m.year&&k.month<=m.month?" "+c.klass.navDisabled:""),"data-nav="+(a||-1)+" "+f.ariaAttr({role:"button",controls:b.$node[0].id+"_table"})+' title="'+(a?c.labelMonthNext:c.labelMonthPrev)+'"')},q=function(d){var e=c.showMonthsShort?c.monthsShort:c.monthsFull;return"short_months"==d&&(e=c.monthsShort),c.selectMonths&&void 0==d?f.node("select",f.group({min:0,max:11,i:1,node:"option",item:function(a){return[e[a],0,"value="+a+(k.month==a?" selected":"")+(k.year==m.year&&a<m.month||k.year==n.year&&a>n.month?" disabled":"")]}}),c.klass.selectMonth+" browser-default",(a?"":"disabled")+" "+f.ariaAttr({controls:b.$node[0].id+"_table"})+' title="'+c.labelMonthSelect+'"'):"short_months"==d?null!=i?f.node("div",e[i.month]):f.node("div",e[k.month]):f.node("div",e[k.month],c.klass.month)},r=function(d){var e=k.year,g=c.selectYears===!0?5:~~(c.selectYears/2);if(g){var h=m.year,i=n.year,j=e-g,l=e+g;if(h>j&&(l+=h-j,j=h),i<l){var o=j-h,p=l-i;j-=o>p?p:o,l=i}if(c.selectYears&&void 0==d)return f.node("select",f.group({min:j,max:l,i:1,node:"option",item:function(a){return[a,0,"value="+a+(e==a?" selected":"")]}}),c.klass.selectYear+" browser-default",(a?"":"disabled")+" "+f.ariaAttr({controls:b.$node[0].id+"_table"})+' title="'+c.labelYearSelect+'"')}return"raw"==d?f.node("div",e):f.node("div",e,c.klass.year)};return createDayLabel=function(){return null!=i?f.node("div",i.date):f.node("div",h.date)},createWeekdayLabel=function(){var a;a=null!=i?i.day:h.day;var b=c.weekdaysFull[a];return b},f.node("div",f.node("div",createWeekdayLabel(),"picker__weekday-display")+f.node("div",q("short_months"),c.klass.month_display)+f.node("div",createDayLabel(),c.klass.day_display)+f.node("div",r("raw"),c.klass.year_display),c.klass.date_display)+f.node("div",f.node("div",(c.selectYears?q()+r():q()+r())+p()+p(1),c.klass.header)+f.node("table",o+f.node("tbody",f.group({min:0,max:e-1,i:1,node:"tr",item:function(a){var e=c.firstDay&&0===b.create([k.year,k.month,1]).day?-7:0;return[f.group({min:d*a-k.day+e+1,max:function(){return this.min+d-1},i:1,node:"td",item:function(a){a=b.create([k.year,k.month,a+(c.firstDay?1:0)]);var d=i&&i.pick==a.pick,e=j&&j.pick==a.pick,g=l&&b.disabled(a)||a.pick<m.pick||a.pick>n.pick,o=f.trigger(b.formats.toString,b,[c.format,a]);return[f.node("div",a.date,function(b){return b.push(k.month==a.month?c.klass.infocus:c.klass.outfocus),h.pick==a.pick&&b.push(c.klass.now),d&&b.push(c.klass.selected),e&&b.push(c.klass.highlighted),g&&b.push(c.klass.disabled),b.join(" ")}([c.klass.day]),"data-pick="+a.pick+" "+f.ariaAttr({role:"gridcell",label:o,selected:!(!d||b.$node.val()!==o)||null,activedescendant:!!e||null,disabled:!!g||null})),"",f.ariaAttr({role:"presentation"})]}})]}})),c.klass.table,'id="'+b.$node[0].id+'_table" '+f.ariaAttr({role:"grid",controls:b.$node[0].id,readonly:!0})),c.klass.calendar_container)+f.node("div",f.node("button",c.today,"btn-flat picker__today","type=button data-pick="+h.pick+(a&&!b.disabled(h)?"":" disabled")+" "+f.ariaAttr({controls:b.$node[0].id}))+f.node("button",c.clear,"btn-flat picker__clear","type=button data-clear=1"+(a?"":" disabled")+" "+f.ariaAttr({controls:b.$node[0].id}))+f.node("button",c.close,"btn-flat picker__close","type=button data-close=true "+(a?"":" disabled")+" "+f.ariaAttr({controls:b.$node[0].id})),c.klass.footer)},c.defaults=function(a){return{labelMonthNext:"Next month",labelMonthPrev:"Previous month",labelMonthSelect:"Select a month",labelYearSelect:"Select a year",monthsFull:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],weekdaysFull:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],weekdaysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],weekdaysLetter:["S","M","T","W","T","F","S"],today:"Today",clear:"Clear",close:"Close",format:"d mmmm, yyyy",klass:{table:a+"table",header:a+"header",date_display:a+"date-display",day_display:a+"day-display",month_display:a+"month-display",year_display:a+"year-display",calendar_container:a+"calendar-container",navPrev:a+"nav--prev",navNext:a+"nav--next",navDisabled:a+"nav--disabled",month:a+"month",year:a+"year",selectMonth:a+"select--month",selectYear:a+"select--year",weekdays:a+"weekday",day:a+"day",disabled:a+"day--disabled",selected:a+"day--selected",highlighted:a+"day--highlighted",now:a+"day--today",infocus:a+"day--infocus",outfocus:a+"day--outfocus",footer:a+"footer",buttonClear:a+"button--clear",buttonToday:a+"button--today",buttonClose:a+"button--close"}}}(a.klasses().picker+"__"),a.extend("pickadate",c)}),function(a){function b(){var b=+a(this).attr("data-length"),c=+a(this).val().length,d=c<=b;a(this).parent().find('span[class="character-counter"]').html(c+"/"+b),e(d,a(this))}function c(b){var c=b.parent().find('span[class="character-counter"]');c.length||(c=a("<span/>").addClass("character-counter").css("float","right").css("font-size","12px").css("height",1),b.parent().append(c))}function d(){a(this).parent().find('span[class="character-counter"]').html("")}function e(a,b){var c=b.hasClass("invalid");a&&c?b.removeClass("invalid"):a||c||(b.removeClass("valid"),b.addClass("invalid"))}a.fn.characterCounter=function(){return this.each(function(){var e=a(this),f=e.parent().find('span[class="character-counter"]');if(!f.length){var g=void 0!==e.attr("data-length");g&&(e.on("input",b),e.on("focus",b),e.on("blur",d),c(e))}})},a(document).ready(function(){a("input, textarea").characterCounter()})}(jQuery),function(a){var b={init:function(b){var c={duration:200,dist:-100,shift:0,padding:0,fullWidth:!1,indicators:!1,noWrap:!1,onCycleTo:null};return b=a.extend(c,b),this.each(function(){function c(){"undefined"!=typeof window.ontouchstart&&(J[0].addEventListener("touchstart",l),J[0].addEventListener("touchmove",m),J[0].addEventListener("touchend",n)),J[0].addEventListener("mousedown",l),J[0].addEventListener("mousemove",m),J[0].addEventListener("mouseup",n),J[0].addEventListener("mouseleave",n),J[0].addEventListener("click",j)}function d(a){return a.targetTouches&&a.targetTouches.length>=1?a.targetTouches[0].clientX:a.clientX}function e(a){return a.targetTouches&&a.targetTouches.length>=1?a.targetTouches[0].clientY:a.clientY}function f(a){return a>=v?a%v:a<0?f(v+a%v):a}function g(c){var d,e,g,h,i,j,k,l=s;if(r="number"==typeof c?c:r,s=Math.floor((r+u/2)/u),g=r-s*u,h=g<0?1:-1,i=-h*g*2/u,e=v>>1,b.fullWidth?k="translateX(0)":(k="translateX("+(J[0].clientWidth-p)/2+"px) ",k+="translateY("+(J[0].clientHeight-q)/2+"px)"),K){var m=s%v,n=I.find(".indicator-item.active");n.index()!==m&&(n.removeClass("active"),I.find(".indicator-item").eq(m).addClass("active"))}for((!b.noWrap||s>=0&&s<v)&&(j=o[f(s)],a(j).hasClass("active")||(J.find(".carousel-item").removeClass("active"),a(j).addClass("active")),j.style[C]=k+" translateX("+-g/2+"px) translateX("+h*b.shift*i*d+"px) translateZ("+b.dist*i+"px)",j.style.zIndex=0,b.fullWidth?tweenedOpacity=1:tweenedOpacity=1-.2*i,j.style.opacity=tweenedOpacity,j.style.display="block"),d=1;d<=e;++d)b.fullWidth?(zTranslation=b.dist,tweenedOpacity=d===e&&g<0?1-i:1):(zTranslation=b.dist*(2*d+i*h),tweenedOpacity=1-.2*(2*d+i*h)),(!b.noWrap||s+d<v)&&(j=o[f(s+d)],j.style[C]=k+" translateX("+(b.shift+(u*d-g)/2)+"px) translateZ("+zTranslation+"px)",j.style.zIndex=-d,j.style.opacity=tweenedOpacity,j.style.display="block"),b.fullWidth?(zTranslation=b.dist,tweenedOpacity=d===e&&g>0?1-i:1):(zTranslation=b.dist*(2*d-i*h),tweenedOpacity=1-.2*(2*d-i*h)),(!b.noWrap||s-d>=0)&&(j=o[f(s-d)],j.style[C]=k+" translateX("+(-b.shift+(-u*d-g)/2)+"px) translateZ("+zTranslation+"px)",j.style.zIndex=-d,j.style.opacity=tweenedOpacity,j.style.display="block");if((!b.noWrap||s>=0&&s<v)&&(j=o[f(s)],j.style[C]=k+" translateX("+-g/2+"px) translateX("+h*b.shift*i+"px) translateZ("+b.dist*i+"px)",j.style.zIndex=0,b.fullWidth?tweenedOpacity=1:tweenedOpacity=1-.2*i,j.style.opacity=tweenedOpacity,j.style.display="block"),l!==s&&"function"==typeof b.onCycleTo){var t=J.find(".carousel-item").eq(f(s));b.onCycleTo.call(this,t,G)}}function h(){var a,b,c,d;a=Date.now(),b=a-E,E=a,c=r-D,D=r,d=1e3*c/(1+b),B=.8*d+.2*B}function i(){var a,c;z&&(a=Date.now()-E,c=z*Math.exp(-a/b.duration),c>2||c<-2?(g(A-c),requestAnimationFrame(i)):g(A))}function j(c){if(G)return c.preventDefault(),c.stopPropagation(),!1;if(!b.fullWidth){var d=a(c.target).closest(".carousel-item").index(),e=s%v-d;0!==e&&(c.preventDefault(),c.stopPropagation()),k(d)}}function k(a){var c=s%v-a;b.noWrap||(c<0?Math.abs(c+v)<Math.abs(c)&&(c+=v):c>0&&Math.abs(c-v)<c&&(c-=v)),c<0?J.trigger("carouselNext",[Math.abs(c)]):c>0&&J.trigger("carouselPrev",[c])}function l(a){t=!0,G=!1,H=!1,w=d(a),x=e(a),B=z=0,D=r,E=Date.now(),clearInterval(F),F=setInterval(h,100)}function m(a){var b,c,f;if(t)if(b=d(a),y=e(a),c=w-b,f=Math.abs(x-y),f<30&&!H)(c>2||c<-2)&&(G=!0,w=b,g(r+c));else{if(G)return a.preventDefault(),a.stopPropagation(),!1;H=!0}if(G)return a.preventDefault(),a.stopPropagation(),!1}function n(a){if(t)return t=!1,clearInterval(F),A=r,(B>10||B<-10)&&(z=.9*B,A=r+z),A=Math.round(A/u)*u,b.noWrap&&(A>=u*(v-1)?A=u*(v-1):A<0&&(A=0)),z=A-r,E=Date.now(),requestAnimationFrame(i),G&&(a.preventDefault(),a.stopPropagation()),!1}var o,p,q,r,s,t,u,v,w,x,z,A,B,C,D,E,F,G,H,I=a('<ul class="indicators"></ul>'),J=a(this),K=J.attr("data-indicators")||b.indicators;if(J.hasClass("initialized"))return a(this).trigger("carouselNext",[1e-6]),!0;if(b.fullWidth){b.dist=0;var L=J.find(".carousel-item img").first();L.length?imageHeight=L.on("load",function(){J.css("height",a(this).height())}):(imageHeight=J.find(".carousel-item").first().height(),J.css("height",imageHeight)),K&&J.find(".carousel-fixed-item").addClass("with-indicators")}J.addClass("initialized"),t=!1,r=A=0,o=[],p=J.find(".carousel-item").first().innerWidth(),q=J.find(".carousel-item").first().innerHeight(),u=2*p+b.padding,J.find(".carousel-item").each(function(b){if(o.push(a(this)[0]),K){var c=a('<li class="indicator-item"></li>');0===b&&c.addClass("active"),c.click(function(b){b.stopPropagation();var c=a(this).index();k(c)}),I.append(c)}}),K&&J.append(I),v=o.length,C="transform",["webkit","Moz","O","ms"].every(function(a){var b=a+"Transform";return"undefined"==typeof document.body.style[b]||(C=b,!1)}),a(window).on("resize.carousel",function(){b.fullWidth?(p=J.find(".carousel-item").first().innerWidth(),q=J.find(".carousel-item").first().innerHeight(),u=2*p+b.padding,r=2*s*p,A=r):g()}),c(),g(r),a(this).on("carouselNext",function(a,b){void 0===b&&(b=1),A=u*Math.round(r/u)+u*b,r!==A&&(z=A-r,E=Date.now(),requestAnimationFrame(i))}),a(this).on("carouselPrev",function(a,b){void 0===b&&(b=1),A=u*Math.round(r/u)-u*b,r!==A&&(z=A-r,E=Date.now(),requestAnimationFrame(i))}),a(this).on("carouselSet",function(a,b){void 0===b&&(b=0),k(b)})})},next:function(b){a(this).trigger("carouselNext",[b])},prev:function(b){a(this).trigger("carouselPrev",[b])},set:function(b){a(this).trigger("carouselSet",[b])}};a.fn.carousel=function(c){return b[c]?b[c].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof c&&c?void a.error("Method "+c+" does not exist on jQuery.carousel"):b.init.apply(this,arguments)}}(jQuery);
admin/js/wpvr-admin.js ADDED
@@ -0,0 +1,465 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function( $ ) {
2
+ 'use strict';
3
+ var j= 1;
4
+ /**
5
+ * All of the code for your admin-facing JavaScript source
6
+ * should reside in this file.
7
+ *
8
+ * Note: It has been assumed you will write jQuery code here, so the
9
+ * $ function reference has been prepared for usage within the scope
10
+ * of this function.
11
+ *
12
+ * This enables you to define handlers, for when the DOM is ready:
13
+ *
14
+ * $(function() {
15
+ *
16
+ * });
17
+ *
18
+ * When the window is loaded:
19
+ *
20
+ * $( window ).load(function() {
21
+ *
22
+ * });
23
+ *
24
+ * ...and/or other possibilities.
25
+ *
26
+ * Ideally, it is not considered best practise to attach more than a
27
+ * single DOM-ready or window-load handler for a particular page.
28
+ * Although scripts in the WordPress core, Plugins and Themes may be
29
+ * practising this, we should strive to set a better example in our own work.
30
+ */
31
+
32
+
33
+
34
+ jQuery(document).ready(function($){
35
+
36
+
37
+ j= $('#scene-1').find('.hotspot-nav li').eq(-2).find('span').attr('data-index');
38
+ var ajaxurl = wpvr_obj.ajaxurl;
39
+ $('#panolenspreview').on('click', function(e){
40
+ e.preventDefault();
41
+ var postid = $("#post_ID").val();
42
+ var autoload = $("input[name='autoload']:checked").val();
43
+ var control = $("input[name='controls']:checked").val();
44
+ var defaultscene = $("input[name='default-scene-id']").val();
45
+ var scenefadeduration = $("input[name='scene-fade-duration']").val();
46
+ var panodata = $('.scene-setup').repeaterVal();
47
+ jQuery.ajax({
48
+ type: "POST",
49
+ url: ajaxurl,
50
+ data: {
51
+ action: "wpvr_preview",
52
+ postid: postid,
53
+ control: control,
54
+ autoload: autoload,
55
+ panodata: panodata,
56
+ defaultscene: defaultscene,
57
+ scenefadeduration: scenefadeduration,
58
+ },
59
+
60
+ success: function( response ){
61
+ if (response.success == true) {
62
+ $('#error_occured').hide();
63
+ $('#'+response.data[0]["panoid"]).empty();
64
+ var scenes = response.data[1];
65
+
66
+ if (scenes) {
67
+ $.each(scenes.scenes, function (i) {
68
+ $.each(scenes.scenes[i]['hotSpots'], function (key, val) {
69
+ if (val["clickHandlerArgs"] != "") {
70
+ val["clickHandlerFunc"] = hotspot;
71
+ }
72
+ if (val["createTooltipArgs"] != "") {
73
+ val["createTooltipFunc"] = tooltip;
74
+ }
75
+ });
76
+ });
77
+ }
78
+ var panoshow = pannellum.viewer(response.data[0]["panoid"], scenes);
79
+ }
80
+ else {
81
+ $('#error_occured').show();
82
+ $('#error_occured').html(response.data);
83
+ }
84
+ }
85
+ });
86
+ });
87
+ });
88
+
89
+ jQuery(document).ready(function($){
90
+
91
+ var flag_ok = false;
92
+ $('#publish').on('click', function(e){
93
+ var x = $(this).val();
94
+ if(x=='Publish' || x== 'Update') {
95
+ if ( ! flag_ok ) {
96
+ e.preventDefault();
97
+ var postid = $("#post_ID").val();
98
+ var autoload = $("input[name='autoload']:checked").val();
99
+ var control = $("input[name='controls']:checked").val();
100
+ var defaultscene = $("input[name='default-scene-id']").val();
101
+ var scenefadeduration = $("input[name='scene-fade-duration']").val();
102
+ if ($('.scene-setup')[0]) {
103
+ var panodata = $('.scene-setup').repeaterVal();
104
+ } else {
105
+ var panodata = '';
106
+ }
107
+ jQuery.ajax({
108
+
109
+ type: "POST",
110
+ url: ajaxurl,
111
+ data: {
112
+ action: "wpvr_save",
113
+ postid: postid,
114
+ control: control,
115
+ autoload: autoload,
116
+ panodata: panodata,
117
+ defaultscene: defaultscene,
118
+ scenefadeduration: scenefadeduration,
119
+ },
120
+
121
+ success: function( response ){
122
+ if (response.success == false) {
123
+ $('#error_occured').show();
124
+ $('#error_occured').html(response.data);
125
+ }
126
+ else {
127
+ flag_ok = true;
128
+ $('#publish').trigger('click');
129
+ }
130
+ }
131
+ });
132
+ }
133
+ }
134
+ });
135
+ });
136
+
137
+ function hotspot(hotSpotDiv, args) {
138
+ var argst = args.replace(/\\/g, '');
139
+ $("#custom-ifram").html(argst);
140
+ $("#custom-ifram").fadeToggle();
141
+ $(".iframe-wrapper").toggleClass("show-modal");
142
+ }
143
+
144
+ function tooltip(hotSpotDiv, args) {
145
+ hotSpotDiv.classList.add('custom-tooltip');
146
+ var span = document.createElement('span');
147
+ args = args.replace(/\\/g, "");
148
+ span.innerHTML = args;
149
+ hotSpotDiv.appendChild(span);
150
+ span.style.width = span.scrollWidth - 20 + 'px';
151
+ span.style.marginLeft = -(span.scrollWidth - hotSpotDiv.offsetWidth) / 2 + 'px';
152
+ span.style.marginTop = -span.scrollHeight - 12 + 'px';
153
+ }
154
+
155
+ jQuery(document).ready(function($){
156
+ $("#cross").on("click", function(e){
157
+ e.preventDefault();
158
+ $("#custom-ifram").fadeOut();
159
+ $(".iframe-wrapper").removeClass("show-modal");
160
+ $('iframe').attr('src', $('iframe').attr('src'));
161
+ });
162
+ });
163
+
164
+ jQuery(document).ready(function($){
165
+
166
+ var i = $('.scene-nav li').eq(-2).find('span').attr('data-index');
167
+ i = parseInt(i);
168
+
169
+ $('.scene-setup').repeater({
170
+
171
+ defaultValues: {
172
+ 'scene-type': 'equirectangular',
173
+ },
174
+ show: function () {
175
+
176
+ if( $(this).parents(".scene-setup").attr("data-limit").length > 0 ){
177
+
178
+ if( $(this).parents(".scene-setup").find("div[data-repeater-item]:not(.hotspot-setup div[data-repeater-item])").length <= $(this).parents(".scene-setup").attr("data-limit") ){
179
+
180
+ $(this).slideDown();
181
+ $(this).removeClass('active');
182
+
183
+ i=i+1;
184
+ var scene = 'scene-'+i;
185
+
186
+
187
+ $(this).find(".title .scene-num").html(i);
188
+
189
+ $('<li><span data-index="'+ i +'" data-href="#'+ scene +'">Scene '+ i +'</span></li>').insertBefore($(this).parent().parent('.scene-setup').find('.scene-nav ul li:last-child'));
190
+
191
+ $(this).attr('id', scene);
192
+ changehotspotid(i);
193
+ $(this).siblings('.active').removeClass('active');
194
+ $(this).addClass('active');
195
+ // $([$(this).parent()[0], $($(this).data('href'))[0]]).addClass('active').siblings('.active').removeClass('active');
196
+ } else {
197
+ $('.pano-alert > p').html('You can only add 5 scenes for free version');
198
+ $('.pano-alert').show();
199
+ $(this).remove();
200
+ }
201
+ } else {
202
+ jQuery(this).slideDown();
203
+ $(this).removeClass('active');
204
+
205
+ i=i+1;
206
+ var scene = 'scene-'+i;
207
+
208
+
209
+ $(this).find(".title .scene-num").html(i);
210
+
211
+ $('<li><span data-index="'+ i +'" data-href="#'+ scene +'">Scene '+ i +'</span></li>').insertBefore($(this).parent().parent('.scene-setup').find('.scene-nav ul li:last-child'));
212
+
213
+ $(this).attr('id', scene);
214
+ changehotspotid(i);
215
+ }
216
+
217
+ $(this).hide();
218
+ },
219
+ hide: function (deleteElement) {
220
+
221
+ var hide_id = $(this).attr("id");
222
+ hide_id = "#"+hide_id;
223
+
224
+ var current = $(this).attr('id');
225
+ var fchild = $('.single-scene:first-child').attr('id');
226
+
227
+ if(confirm('Are you sure you want to delete?')) {
228
+ jQuery(this).slideUp(deleteElement);
229
+ if(current == fchild){
230
+ $(this).next().addClass("active");
231
+ $(this).parent().parent('.scene-setup').find('.scene-nav li span[data-href="'+hide_id+'"]').parent("li").next().addClass("active");
232
+ $(this).parent().parent('.scene-setup').find('.scene-nav li span[data-href="'+hide_id+'"]').parent("li").next().children("span").trigger( "click" );
233
+ }
234
+ else {
235
+ $(this).prev().addClass("active");
236
+ $(this).parent().parent('.scene-setup').find('.scene-nav li span[data-href="'+hide_id+'"]').parent("li").prev().addClass("active");
237
+ $(this).parent().parent('.scene-setup').find('.scene-nav li span[data-href="'+hide_id+'"]').parent("li").prev().children("span").trigger( "click" );
238
+ }
239
+ $(this).parent().parent('.scene-setup').find('.scene-nav li span[data-href="'+hide_id+'"]').parent("li").remove();
240
+ }
241
+ },
242
+ repeaters: [{
243
+ selector: '.hotspot-setup',
244
+ defaultValues: {
245
+ 'hotspot-type': 'info',
246
+ },
247
+ show: function () {
248
+
249
+ if( $(this).parents(".hotspot-setup").attr("data-limit").length > 0 ){
250
+
251
+ if( $(this).parents(".hotspot-setup").find("div[data-repeater-item]").length <= $(this).parents(".hotspot-setup").attr("data-limit") ){
252
+
253
+ $(this).slideDown();
254
+ $(this).removeClass('active');
255
+ $(this).siblings('.active').removeClass('active');
256
+ $(this).addClass('active');
257
+ j = parseInt(j);
258
+ j=j+1;
259
+ var parent_scene = $(this).parent().parent().parent('.single-scene.active').attr('id');
260
+ var hotspot = parent_scene+'-hotspot-'+ j;
261
+
262
+ var replace_string =parent_scene.replace("scene-", "");
263
+
264
+ $(this).find(".title .hotspot-num").html(j);
265
+ $(this).find(".title .scene-num").html(replace_string);
266
+
267
+ $('<li><span data-index="'+ j +'" data-href="#'+ hotspot +'">Hotspot '+ j +'</span></li>').insertBefore($(this).parent().parent('.hotspot-setup').find('.hotspot-nav ul li:last-child'));
268
+
269
+ $(this).attr('id', hotspot);
270
+
271
+ //test
272
+
273
+ } else {
274
+ $('.pano-alert > p').html('You can only add 5 hotspots for free version');
275
+ $('.pano-alert').show();
276
+ $(this).remove();
277
+ }
278
+ } else {
279
+ jQuery(this).slideDown();
280
+ $(this).removeClass('active');
281
+ j = parseInt(j);
282
+ j=j+1;
283
+ var parent_scene = $(this).parent().parent().parent('.single-scene.active').attr('id');
284
+ var hotspot = parent_scene+'-hotspot-'+ j;
285
+
286
+ var replace_string =parent_scene.replace("scene-", "");
287
+
288
+ $(this).find(".title .hotspot-num").html(j);
289
+ $(this).find(".title .scene-num").html(replace_string);
290
+
291
+ $('<li><span data-index="'+ j +'" data-href="#'+ hotspot +'">Hotspot '+ j +'</span></li>').insertBefore($(this).parent().parent('.hotspot-setup').find('.hotspot-nav ul li:last-child'));
292
+
293
+ $(this).attr('id', hotspot);
294
+ }
295
+ },
296
+ hide: function (deleteElement) {
297
+ var hotspot_hide_id = $(this).attr("id");
298
+ hotspot_hide_id = "#"+hotspot_hide_id;
299
+
300
+
301
+ var hotspot_current = $(this).attr('id');
302
+ var hotspot_fchild = $(this).parent().children(":first").attr('id');
303
+ console.log(hotspot_fchild);
304
+ console.log(hotspot_current);
305
+ //if(confirm('Are you sure you want to delete?')) {
306
+ jQuery(this).slideUp(deleteElement);
307
+ if(hotspot_current == hotspot_fchild){
308
+ $(this).next().addClass("active");
309
+ $(this).parent().parent('.hotspot-setup').find('.hotspot-nav li span[data-href="'+hotspot_hide_id+'"]').parent("li").next().addClass("active");
310
+
311
+ }
312
+ else {
313
+ $(this).prev().addClass("active");
314
+ $(this).parent().parent('.hotspot-setup').find('.hotspot-nav li span[data-href="'+hotspot_hide_id+'"]').parent("li").prev().addClass("active");
315
+ }
316
+
317
+ $(this).parent().parent('.hotspot-setup').find('.hotspot-nav li:not(:last-child) span[data-href="'+hotspot_hide_id+'"]').parent("li").remove();
318
+
319
+ //console.log(hotspot_hide_id);
320
+ //}
321
+ },
322
+ }]
323
+ });
324
+
325
+
326
+ });
327
+
328
+
329
+ var file_frame;
330
+ var parent;
331
+ $(document).on("click",".scene-upload",function(event) {
332
+ event.preventDefault();
333
+ parent = $(this).parent( '.form-group' );
334
+
335
+ // if the file_frame has already been created, just reuse it
336
+ if ( file_frame ) {
337
+ file_frame.open();
338
+ return;
339
+ }
340
+
341
+ file_frame = wp.media.frames.file_frame = wp.media({
342
+ title: $( this ).data( 'uploader_title' ),
343
+ button: {
344
+ text: $( this ).data( 'uploader_button_text' ),
345
+ },
346
+ library: {
347
+ type: [ 'image']
348
+ },
349
+ multiple: false // set this to true for multiple file selection
350
+ });
351
+
352
+ file_frame.on( 'select', function() {
353
+ var attachment = file_frame.state().get('selection').first().toJSON();
354
+ parent.find('.scene-attachment-url').val(attachment.url);
355
+ parent.find( 'img' ).attr( 'src', attachment.url).show();
356
+ });
357
+
358
+ file_frame.open();
359
+ });
360
+
361
+
362
+ $(document).on("change","select[name*=hotspot-type]",function(event) {
363
+
364
+ var getparent = $(this).parent();
365
+
366
+ var getvalue = $(this).val();
367
+ if (getvalue == 'info') {
368
+ getparent.find('.hotspot-scene').hide();
369
+ getparent.find('.hotspot-url').show();
370
+ getparent.find('.hotspot-content').show();
371
+ // getparent.find('.hotspot-hover').show();
372
+ }
373
+ else {
374
+ getparent.find('.hotspot-scene').show();
375
+ getparent.find('.hotspot-url').hide();
376
+ getparent.find('.hotspot-content').hide();
377
+ // getparent.find('.hotspot-hover').hide();
378
+ }
379
+ });
380
+
381
+
382
+ //------------panolens tab js------------------
383
+
384
+
385
+ $(document).on("click",".scene-nav ul li:not(:last-child) span",function() {
386
+
387
+ var scene_id = $(this).data('index');
388
+ scene_id = '#scene-'+ scene_id;
389
+
390
+ j = $(scene_id).find('.hotspot-nav li').eq(-2).find('span').attr('data-index');
391
+
392
+ $([$(this).parent()[0], $($(this).data('href'))[0]]).addClass('active').siblings('.active').removeClass('active');
393
+
394
+ // $(this).css({ 'display': "block" });
395
+ });
396
+
397
+ //add click
398
+ $(document).on("click",".scene-nav ul li:last-child span",function() {
399
+ var scene_id = $(this).parent('li').prev().children("span").data('index');
400
+ console.log(scene_id);
401
+ scene_id = '#scene-'+ scene_id;
402
+ console.log(scene_id);
403
+ j = $(scene_id).find('.hotspot-nav li').eq(-2).find('span').attr('data-index');
404
+ $('.scene-nav ul li.active').removeClass('active');
405
+ // $( '.scene-nav ul li:last-child(2)' ).addClass('active');
406
+ $(this).parent('li').prev().addClass('active');
407
+
408
+ });
409
+
410
+ //end add click
411
+
412
+ $(document).on("click",".hotspot-nav ul li:not(:last-child) span",function() {
413
+ $([$(this).parent()[0], $($(this).data('href'))[0]]).addClass('active').siblings('.active').removeClass('active');
414
+ // $([$(this).parent()[0], $(this).data('href'))[0]]).addClass('active').siblings('.active').removeClass('active');
415
+
416
+ });
417
+
418
+ $(document).on("click",".hotspot-nav ul li:last-child span",function() {
419
+ $(this).parent('li').siblings('.active').removeClass('active');
420
+ $(this).parent('li').prev().addClass('active');
421
+ // $([$(this).parent()[0], $($(this).data('href'))[0]]).addClass('active').siblings('.active').removeClass('active');
422
+ // $([$(this).parent()[0], $(this).data('href'))[0]]).addClass('active').siblings('.active').removeClass('active');
423
+
424
+ });
425
+
426
+ function changehotspotid(id){
427
+ var scene_id = '#scene-'+ id;
428
+ var hotspot_id = 'scene-'+ id +'-hotspot-1';
429
+ $(scene_id).find('.hotspot-nav li span').attr('data-href', '#'+hotspot_id+'');
430
+ $(scene_id).find('.single-hotspot').attr('id', hotspot_id);
431
+
432
+ }
433
+
434
+ $(document).on("click",".rex-pano-nav-menu.main-nav ul li span",function() {
435
+ $([$(this).parent()[0], $($(this).data('href'))[0]]).addClass('active').siblings('.active').removeClass('active');
436
+ });
437
+
438
+ //----------alert dismiss--------
439
+ $(document).on("click","body",function() {
440
+ $('.pano-alert').hide();
441
+ });
442
+ $(document).on("click",".pano-alert > .destroy",function() {
443
+ $('.pano-alert').hide();
444
+ });
445
+ $(document).on("click",".pano-alert, .rex-pano-sub-tabs .rex-pano-tab-nav li.add",function(e) {
446
+ e.stopPropagation();
447
+ });
448
+
449
+
450
+ $(document).on("click",".main-nav li.hotspot span",function() {
451
+ $(".hotspot-setup.rex-pano-sub-tabs").show();
452
+ $(".scene-setup > nav.scene-nav").hide();
453
+ $(".scene-setup .single-scene > .scene-content").hide();
454
+ $(".scene-setup .delete-scene").hide();
455
+ });
456
+
457
+ $(document).on("click",".main-nav li.scene span",function() {
458
+ $(".hotspot-setup.rex-pano-sub-tabs").hide();
459
+ $(".scene-setup > nav.scene-nav").show();
460
+ $(".scene-setup .single-scene > .scene-content").show();
461
+ $(".scene-setup .delete-scene").show();
462
+ });
463
+
464
+
465
+ })( jQuery );
admin/lib/pannellum/.gitignore ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ # Ignore builds
2
+ build/**
3
+
4
+ # Ignore OS X stuff
5
+ .DS_Store
6
+
7
+ # Ignore generated docs
8
+ utils/doc/generated_docs
admin/lib/pannellum/.npmignore ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ # Ignore generated docs
2
+ utils/doc/generated_docs
3
+
4
+ # Ignore build utilities
5
+ utils/build
6
+
7
+ # Ignore examples
8
+ examples
admin/lib/pannellum/src/css/img/background.svg ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="67" height="100" viewBox="0 0 67 100">
2
+ <path stroke="#ccc" fill="none" d="M33.5,50,0,63,33.5,75,67,63,33.5,50m-33.5-50,67,25m-0.5,0,0,75m-66.5-75,67-25m-33.5,75,0,25m0-100,0,50"/>
3
+ </svg>
admin/lib/pannellum/src/css/img/compass.svg ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="50" width="50">
2
+ <path d="m24.5078 6-3.2578 18h7.5l-3.25781-18h-0.984376zm-3.2578 20 3.2578 18h0.9844l3.2578-18h-7.5zm1.19531 0.9941h5.10938l-2.5547 14.1075-2.5547-14.1075z"/>
3
+ </svg>
admin/lib/pannellum/src/css/img/grab.svg ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="26" width="26">
2
+ <path stroke="#000" stroke-width="1px" fill="#fff" d="m15.3 20.5s6.38-6.73 4.64-8.24-3.47 1.01-3.47 1.01 3.61-5.72 1.41-6.49c-2.2-0.769-3.33 4.36-3.33 4.36s0.873-5.76-1.06-5.76-1.58 5.39-1.58 5.39-0.574-4.59-2.18-4.12c-1.61 0.468-0.572 5.51-0.572 5.51s-1.58-4.89-2.93-3.79c-1.35 1.11 0.258 5.25 0.572 6.62 0.836 2.43 2.03 2.94 2.17 5.55"/>
3
+ </svg>
admin/lib/pannellum/src/css/img/grabbing.svg ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="26" width="26">
2
+ <path stroke="#000" stroke-width="1px" fill="#fff" d="m15.3 20.5s5.07-5.29 3.77-6.74c-1.31-1.45-2.53 0.14-2.53 0.14s2.74-3.29 0.535-4.06c-2.2-0.769-2.52 1.3-2.52 1.3s0.81-2.13-1.12-2.13-1.52 1.77-1.52 1.77-0.261-1.59-1.87-1.12c-1.61 0.468-0.874 2.17-0.874 2.17s-0.651-1.55-2-0.445c-1.35 1.11-0.68 2.25-0.365 3.62 0.836 2.43 2.03 2.94 2.17 5.55"/>
3
+ </svg>
admin/lib/pannellum/src/css/img/sprites.svg ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="26" height="208">
2
+ <circle fill-opacity=".78" cy="117" cx="13" r="11" fill="#fff"/>
3
+ <circle fill-opacity=".78" cy="143" cx="13" r="11" fill="#fff"/>
4
+ <circle cy="169" cx="13" r="7" fill="none" stroke="#000" stroke-width="2"/>
5
+ <circle cy="195" cx="13" r="7" fill="none" stroke="#000" stroke-width="2"/>
6
+ <circle cx="13" cy="195" r="2.5"/>
7
+ <path d="m5 83v6h2v-4h4v-2zm10 0v2h4v4h2v-6zm-5 5v6h6v-6zm-5 5v6h6v-2h-4v-4zm14 0v4h-4v2h6v-6z"/>
8
+ <path d="m13 110a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm-1 3h2v2h-2zm0 3h2v5h-2z"/>
9
+ <path d="m5 57v6h2v-4h4v-2zm10 0v2h4v4h2v-6zm-10 10v6h6v-2h-4v-4zm14 0v4h-4v2h6v-6z"/>
10
+ <path d="m17 38v2h-8v-2z"/>
11
+ <path d="m12 9v3h-3v2h3v3h2v-3h3v-2h-3v-3z"/>
12
+ <path d="m13 136-6.125 6.125h4.375v7.875h3.5v-7.875h4.375z"/>
13
+ <path d="m10.428 173.33v-5.77l5-2.89v5.77zm1-1.73 3-1.73-3.001-1.74z"/>
14
+ </svg>
admin/lib/pannellum/src/css/pannellum.css ADDED
@@ -0,0 +1,439 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .pnlm-container {
2
+ margin: 0;
3
+ padding: 0;
4
+ overflow: hidden;
5
+ position: relative;
6
+ cursor: default;
7
+ width: 100%;
8
+ height: 100%;
9
+ font-family: Helvetica, "Nimbus Sans L", "Liberation Sans", Arial, sans-serif;
10
+ background: #f4f4f4 url('img/background.svg') repeat;
11
+ -webkit-user-select: none;
12
+ -khtml-user-select: none;
13
+ -moz-user-select: none;
14
+ -o-user-select: none;
15
+ -ms-user-select: none;
16
+ user-select: none;
17
+ outline: 0;
18
+ line-height: 1.4;
19
+ contain: content;
20
+ }
21
+
22
+ .pnlm-container * {
23
+ box-sizing: content-box;
24
+ }
25
+
26
+ .pnlm-ui {
27
+ position: absolute;
28
+ width: 100%;
29
+ height: 100%;
30
+ z-index: 1;
31
+ }
32
+
33
+ .pnlm-grab {
34
+ cursor: grab;
35
+ cursor: url('img/grab.svg') 12 8, default;
36
+ }
37
+
38
+ .pnlm-grabbing {
39
+ cursor: grabbing;
40
+ cursor: url('img/grabbing.svg') 12 8, default;
41
+ }
42
+
43
+ .pnlm-sprite {
44
+ background-image: url('img/sprites.svg');
45
+ }
46
+
47
+ .pnlm-container:-moz-full-screen {
48
+ height: 100% !important;
49
+ width: 100% !important;
50
+ position: static !important;
51
+ }
52
+ .pnlm-container:-webkit-full-screen {
53
+ height: 100% !important;
54
+ width: 100% !important;
55
+ position: static !important;
56
+ }
57
+ .pnlm-container:-ms-fullscreen {
58
+ height: 100% !important;
59
+ width: 100% !important;
60
+ position: static !important;
61
+ }
62
+ .pnlm-container:fullscreen {
63
+ height: 100% !important;
64
+ width: 100% !important;
65
+ position: static !important;
66
+ }
67
+
68
+ .pnlm-render-container {
69
+ cursor: inherit;
70
+
71
+ /* Fix display bug in Safari 7 */
72
+ position: absolute;
73
+ height: 100%;
74
+ width: 100%;
75
+ }
76
+
77
+ .pnlm-controls {
78
+ margin-top: 4px;
79
+ background-color: #fff;
80
+ border: 1px solid #999;
81
+ border-color: rgba(0,0,0,0.4);
82
+ border-radius: 3px;
83
+ cursor: pointer;
84
+ z-index: 2;
85
+ /* Fix Safari fullscreen bug */
86
+ -webkit-transform: translateZ(9999px);
87
+ transform: translateZ(9999px);
88
+ }
89
+
90
+ .pnlm-control:hover {
91
+ background-color: #f8f8f8;
92
+ }
93
+
94
+ .pnlm-controls-container {
95
+ position: absolute;
96
+ top: 0;
97
+ left: 4px;
98
+ z-index: 1;
99
+ }
100
+
101
+ .pnlm-zoom-controls {
102
+ width: 26px;
103
+ height: 52px;
104
+ }
105
+
106
+ .pnlm-zoom-in {
107
+ width: 100%;
108
+ height: 50%;
109
+ position: absolute;
110
+ top: 0;
111
+ border-radius: 3px 3px 0 0;
112
+ }
113
+
114
+ .pnlm-zoom-out {
115
+ width: 100%;
116
+ height: 50%;
117
+ position: absolute;
118
+ bottom: 0;
119
+ background-position: 0 -26px;
120
+ border-top: 1px solid #ddd;
121
+ border-top-color: rgba(0,0,0,0.10);
122
+ border-radius: 0 0 3px 3px;
123
+ }
124
+
125
+ .pnlm-fullscreen-toggle-button, .pnlm-orientation-button, .pnlm-hot-spot-debug-indicator {
126
+ width: 26px;
127
+ height: 26px;
128
+ }
129
+
130
+ .pnlm-hot-spot-debug-indicator {
131
+ position: absolute;
132
+ top: 50%;
133
+ left: 50%;
134
+ width: 26px;
135
+ height: 26px;
136
+ margin: -13px 0 0 -13px;
137
+ background-color: rgba(255, 255, 255, 0.5);
138
+ border-radius: 13px;
139
+ display: none;
140
+ }
141
+
142
+ .pnlm-orientation-button-inactive {
143
+ background-position: 0 -156px;
144
+ }
145
+
146
+ .pnlm-orientation-button-active {
147
+ background-position: 0 -182px;
148
+ }
149
+
150
+ .pnlm-fullscreen-toggle-button-inactive {
151
+ background-position: 0 -52px;
152
+ }
153
+
154
+ .pnlm-fullscreen-toggle-button-active {
155
+ background-position: 0 -78px;
156
+ }
157
+
158
+ .pnlm-panorama-info {
159
+ position: absolute;
160
+ bottom: 4px;
161
+ background-color: rgba(0,0,0,0.7);
162
+ border-radius: 0 3px 3px 0;
163
+ padding-right: 10px;
164
+ color: #fff;
165
+ text-align: left;
166
+ display: none;
167
+ z-index: 2;
168
+ /* Fix Safari fullscreen bug */
169
+ -webkit-transform: translateZ(9999px);
170
+ transform: translateZ(9999px);
171
+ }
172
+
173
+ .pnlm-title-box {
174
+ position: relative;
175
+ font-size: 20px;
176
+ display: table;
177
+ padding-left: 5px;
178
+ margin-bottom: 3px;
179
+ }
180
+
181
+ .pnlm-author-box {
182
+ position: relative;
183
+ font-size: 12px;
184
+ display: table;
185
+ padding-left: 5px;
186
+ }
187
+
188
+ .pnlm-load-box {
189
+ position: absolute;
190
+ top: 50%;
191
+ left: 50%;
192
+ width: 200px;
193
+ height: 150px;
194
+ margin: -75px 0 0 -100px;
195
+ background-color: rgba(0,0,0,0.7);
196
+ border-radius: 3px;
197
+ text-align: center;
198
+ font-size: 20px;
199
+ display: none;
200
+ color: #fff;
201
+ }
202
+
203
+ .pnlm-load-box p {
204
+ margin: 20px 0;
205
+ }
206
+
207
+ .pnlm-lbox {
208
+ position: absolute;
209
+ top: 50%;
210
+ left: 50%;
211
+ width: 20px;
212
+ height: 20px;
213
+ margin: -10px 0 0 -10px;
214
+ display: none;
215
+ }
216
+
217
+ .pnlm-loading {
218
+ animation-duration: 1.5s;
219
+ -webkit-animation-duration: 1.5s;
220
+ animation-name: pnlm-mv;
221
+ -webkit-animation-name: pnlm-mv;
222
+ animation-iteration-count: infinite;
223
+ -webkit-animation-iteration-count: infinite;
224
+ animation-timing-function: linear;
225
+ -webkit-animation-timing-function: linear;
226
+ height: 10px;
227
+ width: 10px;
228
+ background-color: #fff;
229
+ position: relative;
230
+ }
231
+
232
+ @keyframes pnlm-mv {
233
+ from {left:0;top:0;}
234
+ 25% {left:10px;top:0;}
235
+ 50% {left:10px;top:10px;}
236
+ 75% {left:0;top:10px;}
237
+ to {left:0;top:0;}
238
+ }
239
+
240
+ @-webkit-keyframes pnlm-mv {
241
+ from {left:0;top:0;}
242
+ 25% {left:10px;top:0;}
243
+ 50% {left:10px;top:10px;}
244
+ 75% {left:0;top:10px;}
245
+ to {left:0;top:0;}
246
+ }
247
+
248
+ .pnlm-load-button {
249
+ position: absolute;
250
+ top: 50%;
251
+ left: 50%;
252
+ width: 200px;
253
+ height: 100px;
254
+ margin: -50px 0 0 -100px;
255
+ background-color: rgba(0,0,0,.7);
256
+ border-radius: 3px;
257
+ text-align: center;
258
+ font-size: 20px;
259
+ display: table;
260
+ color: #fff;
261
+ cursor: pointer;
262
+ }
263
+
264
+ .pnlm-load-button:hover {
265
+ background-color: rgba(0,0,0,.8);
266
+ }
267
+
268
+ .pnlm-load-button p {
269
+ display: table-cell;
270
+ vertical-align: middle;
271
+ }
272
+
273
+ .pnlm-info-box {
274
+ font-size: 15px;
275
+ position: absolute;
276
+ top: 50%;
277
+ left: 50%;
278
+ width: 200px;
279
+ height: 150px;
280
+ margin: -75px 0 0 -100px;
281
+ background-color: #000;
282
+ border-radius: 3px;
283
+ display: table;
284
+ text-align: center;
285
+ color: #fff;
286
+ table-layout: fixed;
287
+ }
288
+
289
+ .pnlm-info-box a {
290
+ color: #fff;
291
+ word-wrap: break-word;
292
+ overflow-wrap: break-word;
293
+ }
294
+
295
+ .pnlm-info-box p {
296
+ display: table-cell;
297
+ vertical-align: middle;
298
+ padding: 0 5px 0 5px;
299
+ }
300
+
301
+ .pnlm-error-msg {
302
+ display: none;
303
+ }
304
+
305
+ .pnlm-about-msg {
306
+ font-size: 11px;
307
+ line-height: 11px;
308
+ color: #fff;
309
+ padding: 5px 8px 5px 8px;
310
+ background: rgba(0,0,0,0.7);
311
+ border-radius: 3px;
312
+ position: absolute;
313
+ top: 50px;
314
+ left: 50px;
315
+ display: none;
316
+ opacity: 0;
317
+ -moz-transition: opacity .3s ease-in-out;
318
+ -webkit-transition: opacity .3s ease-in-out;
319
+ -o-transition: opacity .3s ease-in-out;
320
+ -ms-transition: opacity .3s ease-in-out;
321
+ transition: opacity .3s ease-in-out;
322
+ z-index: 1;
323
+ }
324
+
325
+ .pnlm-about-msg a:link, .pnlm-about-msg a:visited {
326
+ color: #fff;
327
+ }
328
+
329
+ .pnlm-about-msg a:hover, .pnlm-about-msg a:active {
330
+ color: #eee;
331
+ }
332
+
333
+ .pnlm-hotspot-base {
334
+ position: absolute;
335
+ visibility: hidden;
336
+ cursor: default;
337
+ vertical-align: middle;
338
+ top: 0;
339
+ z-index: 1;
340
+ }
341
+ .pnlm-hotspot {
342
+ height: 26px;
343
+ width: 26px;
344
+ border-radius: 13px;
345
+ }
346
+ .pnlm-hotspot:hover {
347
+ background-color: rgba(255,255,255,0.2);
348
+ }
349
+ .pnlm-hotspot.pnlm-info {
350
+ background-position: 0 -104px;
351
+ }
352
+ .pnlm-hotspot.pnlm-scene {
353
+ background-position: 0 -130px;
354
+ }
355
+
356
+ div.pnlm-tooltip span {
357
+ visibility: hidden;
358
+ position: absolute;
359
+ border-radius: 3px;
360
+ background-color: rgba(0,0,0,0.7);
361
+ color: #fff;
362
+ text-align: center;
363
+ max-width: 200px;
364
+ padding: 5px 10px;
365
+ margin-left: -220px;
366
+ cursor: default;
367
+ }
368
+ div.pnlm-tooltip:hover span{
369
+ visibility: visible;
370
+ }
371
+ div.pnlm-tooltip:hover span:after {
372
+ content: '';
373
+ position: absolute;
374
+ width: 0;
375
+ height: 0;
376
+ border-width: 10px;
377
+ border-style: solid;
378
+ border-color: rgba(0,0,0,0.7) transparent transparent transparent;
379
+ bottom: -20px;
380
+ left: -10px;
381
+ margin: 0 50%;
382
+ }
383
+
384
+ .pnlm-compass {
385
+ position: absolute;
386
+ width: 50px;
387
+ height: 50px;
388
+ right: 4px;
389
+ bottom: 4px;
390
+ border-radius: 25px;
391
+ background-image: url('img/compass.svg');
392
+ cursor: default;
393
+ display: none;
394
+ }
395
+
396
+ .pnlm-world {
397
+ position: absolute;
398
+ left: 50%;
399
+ top: 50%;
400
+ }
401
+ .pnlm-face {
402
+ position: absolute;
403
+ -webkit-transform-origin: 0 0 0;
404
+ transform-origin: 0 0 0;
405
+ }
406
+
407
+ .pnlm-dragfix, .pnlm-preview-img {
408
+ position: absolute;
409
+ height: 100%;
410
+ width: 100%;
411
+ }
412
+
413
+ .pnlm-preview-img {
414
+ background-size: cover;
415
+ background-position: center;
416
+ }
417
+
418
+ .pnlm-lbar {
419
+ width: 150px;
420
+ margin: 0 auto;
421
+ border: #fff 1px solid;
422
+ height: 6px;
423
+ }
424
+
425
+ .pnlm-lbar-fill {
426
+ background: #fff;
427
+ height: 100%;
428
+ width: 0;
429
+ }
430
+
431
+ .pnlm-lmsg {
432
+ font-size: 12px;
433
+ }
434
+
435
+ .pnlm-fade-img {
436
+ position: absolute;
437
+ top: 0;
438
+ left: 0;
439
+ }
admin/lib/pannellum/src/js/RequestAnimationFrame.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Provides requestAnimationFrame in a cross browser way.
3
+ * http://paulirish.com/2011/requestanimationframe-for-smart-animating/
4
+ */
5
+
6
+ if ( !window.requestAnimationFrame ) {
7
+
8
+ window.requestAnimationFrame = ( function() {
9
+
10
+ return window.webkitRequestAnimationFrame ||
11
+ window.mozRequestAnimationFrame ||
12
+ window.oRequestAnimationFrame ||
13
+ window.msRequestAnimationFrame ||
14
+ function( /* function FrameRequestCallback */ callback, /* DOMElement Element */ element ) {
15
+
16
+ window.setTimeout( callback, 1000 / 60 );
17
+
18
+ };
19
+
20
+ } )();
21
+
22
+ }
admin/lib/pannellum/src/js/libpannellum.js ADDED
@@ -0,0 +1,1317 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * libpannellum - A WebGL and CSS 3D transform based Panorama Renderer
3
+ * Copyright (c) 2012-2018 Matthew Petroff
4
+ *
5
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ * of this software and associated documentation files (the "Software"), to deal
7
+ * in the Software without restriction, including without limitation the rights
8
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ * copies of the Software, and to permit persons to whom the Software is
10
+ * furnished to do so, subject to the following conditions:
11
+ *
12
+ * The above copyright notice and this permission notice shall be included in
13
+ * all copies or substantial portions of the Software.
14
+ *
15
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ * THE SOFTWARE.
22
+ */
23
+
24
+ window.libpannellum = (function(window, document, undefined) {
25
+
26
+ 'use strict';
27
+
28
+ /**
29
+ * Creates a new panorama renderer.
30
+ * @constructor
31
+ * @param {HTMLElement} container - The container element for the renderer.
32
+ */
33
+ function Renderer(container) {
34
+ var canvas = document.createElement('canvas');
35
+ canvas.style.width = canvas.style.height = '100%';
36
+ container.appendChild(canvas);
37
+
38
+ var program, gl, vs, fs;
39
+ var fallbackImgSize;
40
+ var world;
41
+ var vtmps;
42
+ var pose;
43
+ var image, imageType, dynamic;
44
+ var texCoordBuffer, cubeVertBuf, cubeVertTexCoordBuf, cubeVertIndBuf;
45
+ var globalParams;
46
+
47
+ /**
48
+ * Initialize renderer.
49
+ * @memberof Renderer
50
+ * @instance
51
+ * @param {Image|Array|Object} image - Input image; format varies based on
52
+ * `imageType`. For `equirectangular`, this is an image; for
53
+ * `cubemap`, this is an array of images for the cube faces in the
54
+ * order [+z, +x, -z, -x, +y, -y]; for `multires`, this is a
55
+ * configuration object.
56
+ * @param {string} imageType - The type of the image: `equirectangular`,
57
+ * `cubemap`, or `multires`.
58
+ * @param {boolean} dynamic - Whether or not the image is dynamic (e.g. video).
59
+ * @param {number} haov - Initial horizontal angle of view.
60
+ * @param {number} vaov - Initial vertical angle of view.
61
+ * @param {number} voffset - Initial vertical offset angle.
62
+ * @param {function} callback - Load callback function.
63
+ * @param {Object} [params] - Other configuration parameters (`horizonPitch`, `horizonRoll`, `backgroundColor`).
64
+ */
65
+ this.init = function(_image, _imageType, _dynamic, haov, vaov, voffset, callback, params) {
66
+ // Default argument for image type
67
+ if (_imageType === undefined)
68
+ _imageType = 'equirectangular';
69
+
70
+ if (_imageType != 'equirectangular' && _imageType != 'cubemap' &&
71
+ _imageType != 'multires') {
72
+ console.log('Error: invalid image type specified!');
73
+ throw {type: 'config error'};
74
+ }
75
+
76
+ imageType = _imageType;
77
+ image = _image;
78
+ dynamic = _dynamic;
79
+ globalParams = params || {};
80
+
81
+ // Clear old data
82
+ if (program) {
83
+ if (vs) {
84
+ gl.detachShader(program, vs);
85
+ gl.deleteShader(vs);
86
+ }
87
+ if (fs) {
88
+ gl.detachShader(program, fs);
89
+ gl.deleteShader(fs);
90
+ }
91
+ gl.bindBuffer(gl.ARRAY_BUFFER, null);
92
+ gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null);
93
+ if (program.texture)
94
+ gl.deleteTexture(program.texture);
95
+ if (program.nodeCache)
96
+ for (var i = 0; i < program.nodeCache.length; i++)
97
+ gl.deleteTexture(program.nodeCache[i].texture);
98
+ gl.deleteProgram(program);
99
+ program = undefined;
100
+ }
101
+ pose = undefined;
102
+
103
+ var s;
104
+
105
+ // This awful browser specific test exists because iOS 8/9 and IE 11
106
+ // don't display non-power-of-two cubemap textures but also don't
107
+ // throw an error (tested on an iPhone 5c / iOS 8.1.3 / iOS 9.2 /
108
+ // iOS 10.3.1).
109
+ // Therefore, the WebGL context is never created for these browsers for
110
+ // NPOT cubemaps, and the CSS 3D transform fallback renderer is used
111
+ // instead.
112
+ if (!(imageType == 'cubemap' &&
113
+ (image[0].width & (image[0].width - 1)) !== 0 &&
114
+ (navigator.userAgent.toLowerCase().match(/(iphone|ipod|ipad).* os 8_/) ||
115
+ navigator.userAgent.toLowerCase().match(/(iphone|ipod|ipad).* os 9_/) ||
116
+ navigator.userAgent.toLowerCase().match(/(iphone|ipod|ipad).* os 10_/) ||
117
+ navigator.userAgent.match(/Trident.*rv[ :]*11\./)))) {
118
+ // Enable WebGL on canvas
119
+ if (!gl)
120
+ gl = canvas.getContext('experimental-webgl', {alpha: false, depth: false});
121
+ if (gl && gl.getError() == 1286)
122
+ handleWebGLError1286();
123
+ }
124
+
125
+ // If there is no WebGL, fall back to CSS 3D transform renderer.
126
+ // While browser specific tests are usually frowned upon, the
127
+ // fallback viewer only really works with WebKit/Blink and IE 10/11
128
+ // (it doesn't work properly in Firefox).
129
+ if (!gl && ((imageType == 'multires' && image.hasOwnProperty('fallbackPath')) ||
130
+ imageType == 'cubemap') &&
131
+ ('WebkitAppearance' in document.documentElement.style ||
132
+ navigator.userAgent.match(/Trident.*rv[ :]*11\./) ||
133
+ navigator.appVersion.indexOf('MSIE 10') !== -1)) {
134
+ // Remove old world if it exists
135
+ if (world) {
136
+ container.removeChild(world);
137
+ }
138
+
139
+ // Initialize renderer
140
+ world = document.createElement('div');
141
+ world.className = 'pnlm-world';
142
+
143
+ // Add images
144
+ var path;
145
+ if (image.basePath) {
146
+ path = image.basePath + image.fallbackPath;
147
+ } else {
148
+ path = image.fallbackPath;
149
+ }
150
+ var sides = ['f', 'r', 'b', 'l', 'u', 'd'];
151
+ var loaded = 0;
152
+ var onLoad = function() {
153
+ // Draw image on canvas
154
+ var faceCanvas = document.createElement('canvas');
155
+ faceCanvas.className = 'pnlm-face pnlm-' + sides[this.side] + 'face';
156
+ world.appendChild(faceCanvas);
157
+ var faceContext = faceCanvas.getContext('2d');
158
+ faceCanvas.style.width = this.width + 4 + 'px';
159
+ faceCanvas.style.height = this.height + 4 + 'px';
160
+ faceCanvas.width = this.width + 4;
161
+ faceCanvas.height = this.height + 4;
162
+ faceContext.drawImage(this, 2, 2);
163
+ var imgData = faceContext.getImageData(0, 0, faceCanvas.width, faceCanvas.height);
164
+ var data = imgData.data;
165
+
166
+ // Duplicate edge pixels
167
+ var i;
168
+ var j;
169
+ for (i = 2; i < faceCanvas.width - 2; i++) {
170
+ for (j = 0; j < 4; j++) {
171
+ data[(i + faceCanvas.width) * 4 + j] = data[(i + faceCanvas.width * 2) * 4 + j];
172
+ data[(i + faceCanvas.width * (faceCanvas.height - 2)) * 4 + j] = data[(i + faceCanvas.width * (faceCanvas.height - 3)) * 4 + j];
173
+ }
174
+ }
175
+ for (i = 2; i < faceCanvas.height - 2; i++) {
176
+ for (j = 0; j < 4; j++) {
177
+ data[(i * faceCanvas.width + 1) * 4 + j] = data[(i * faceCanvas.width + 2) * 4 + j];
178
+ data[((i + 1) * faceCanvas.width - 2) * 4 + j] = data[((i + 1) * faceCanvas.width - 3) * 4 + j];
179
+ }
180
+ }
181
+ for (j = 0; j < 4; j++) {
182
+ data[(faceCanvas.width + 1) * 4 + j] = data[(faceCanvas.width * 2 + 2) * 4 + j];
183
+ data[(faceCanvas.width * 2 - 2) * 4 + j] = data[(faceCanvas.width * 3 - 3) * 4 + j];
184
+ data[(faceCanvas.width * (faceCanvas.height - 2) + 1) * 4 + j] = data[(faceCanvas.width * (faceCanvas.height - 3) + 2) * 4 + j];
185
+ data[(faceCanvas.width * (faceCanvas.height - 1) - 2) * 4 + j] = data[(faceCanvas.width * (faceCanvas.height - 2) - 3) * 4 + j];
186
+ }
187
+ for (i = 1; i < faceCanvas.width - 1; i++) {
188
+ for (j = 0; j < 4; j++) {
189
+ data[i * 4 + j] = data[(i + faceCanvas.width) * 4 + j];
190
+ data[(i + faceCanvas.width * (faceCanvas.height - 1)) * 4 + j] = data[(i + faceCanvas.width * (faceCanvas.height - 2)) * 4 + j];
191
+ }
192
+ }
193
+ for (i = 1; i < faceCanvas.height - 1; i++) {
194
+ for (j = 0; j < 4; j++) {
195
+ data[(i * faceCanvas.width) * 4 + j] = data[(i * faceCanvas.width + 1) * 4 + j];
196
+ data[((i + 1) * faceCanvas.width - 1) * 4 + j] = data[((i + 1) * faceCanvas.width - 2) * 4 + j];
197
+ }
198
+ }
199
+ for (j = 0; j < 4; j++) {
200
+ data[j] = data[(faceCanvas.width + 1) * 4 + j];
201
+ data[(faceCanvas.width - 1) * 4 + j] = data[(faceCanvas.width * 2 - 2) * 4 + j];
202
+ data[(faceCanvas.width * (faceCanvas.height - 1)) * 4 + j] = data[(faceCanvas.width * (faceCanvas.height - 2) + 1) * 4 + j];
203
+ data[(faceCanvas.width * faceCanvas.height - 1) * 4 + j] = data[(faceCanvas.width * (faceCanvas.height - 1) - 2) * 4 + j];
204
+ }
205
+
206
+ // Draw image width duplicated edge pixels on canvas
207
+ faceContext.putImageData(imgData, 0, 0);
208
+
209
+ loaded++;
210
+ if (loaded == 6) {
211
+ fallbackImgSize = this.width;
212
+ container.appendChild(world);
213
+ callback();
214
+ }
215
+ };
216
+ for (s = 0; s < 6; s++) {
217
+ var faceImg = new Image();
218
+ faceImg.crossOrigin = globalParams.crossOrigin ? globalParams.crossOrigin : 'anonymous';
219
+ faceImg.side = s;
220
+ faceImg.onload = onLoad;
221
+ if (imageType == 'multires') {
222
+ faceImg.src = encodeURI(path.replace('%s', sides[s]) + '.' + image.extension);
223
+ } else {
224
+ faceImg.src = encodeURI(image[s].src);
225
+ }
226
+ }
227
+
228
+ return;
229
+ } else if (!gl) {
230
+ console.log('Error: no WebGL support detected!');
231
+ throw {type: 'no webgl'};
232
+ }
233
+ if (image.basePath) {
234
+ image.fullpath = image.basePath + image.path;
235
+ } else {
236
+ image.fullpath = image.path;
237
+ }
238
+ image.invTileResolution = 1 / image.tileResolution;
239
+
240
+ var vertices = createCube();
241
+ vtmps = [];
242
+ for (s = 0; s < 6; s++) {
243
+ vtmps[s] = vertices.slice(s * 12, s * 12 + 12);
244
+ vertices = createCube();
245
+ }
246
+
247
+ // Make sure image isn't too big
248
+ var width, maxWidth;
249
+ if (imageType == 'equirectangular') {
250
+ width = Math.max(image.width, image.height);
251
+ maxWidth = gl.getParameter(gl.MAX_TEXTURE_SIZE);
252
+ if (width > maxWidth) {
253
+ console.log('Error: The image is too big; it\'s ' + width + 'px wide, but this device\'s maximum supported width is ' + maxWidth + 'px.');
254
+ throw {type: 'webgl size error', width: width, maxWidth: maxWidth};
255
+ }
256
+ } else if (imageType == 'cubemap') {
257
+ width = image[0].width;
258
+ maxWidth = gl.getParameter(gl.MAX_CUBE_MAP_TEXTURE_SIZE);
259
+ if (width > maxWidth) {
260
+ console.log('Error: The cube face image is too big; it\'s ' + width + 'px wide, but this device\'s maximum supported width is ' + maxWidth + 'px.');
261
+ throw {type: 'webgl size error', width: width, maxWidth: maxWidth};
262
+ }
263
+ }
264
+
265
+ // Store horizon pitch and roll if applicable
266
+ if (params !== undefined && (params.horizonPitch !== undefined || params.horizonRoll !== undefined))
267
+ pose = [params.horizonPitch == undefined ? 0 : params.horizonPitch,
268
+ params.horizonRoll == undefined ? 0 : params.horizonRoll];
269
+
270
+ // Set 2d texture binding
271
+ var glBindType = gl.TEXTURE_2D;
272
+
273
+ // Create viewport for entire canvas
274
+ gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
275
+
276
+ // Create vertex shader
277
+ vs = gl.createShader(gl.VERTEX_SHADER);
278
+ var vertexSrc = v;
279
+ if (imageType == 'multires') {
280
+ vertexSrc = vMulti;
281
+ }
282
+ gl.shaderSource(vs, vertexSrc);
283
+ gl.compileShader(vs);
284
+
285
+ // Create fragment shader
286
+ fs = gl.createShader(gl.FRAGMENT_SHADER);
287
+ var fragmentSrc = fragEquirectangular;
288
+ if (imageType == 'cubemap') {
289
+ glBindType = gl.TEXTURE_CUBE_MAP;
290
+ fragmentSrc = fragCube;
291
+ } else if (imageType == 'multires') {
292
+ fragmentSrc = fragMulti;
293
+ }
294
+ gl.shaderSource(fs, fragmentSrc);
295
+ gl.compileShader(fs);
296
+
297
+ // Link WebGL program
298
+ program = gl.createProgram();
299
+ gl.attachShader(program, vs);
300
+ gl.attachShader(program, fs);
301
+ gl.linkProgram(program);
302
+
303
+ // Log errors
304
+ if (!gl.getShaderParameter(vs, gl.COMPILE_STATUS))
305
+ console.log(gl.getShaderInfoLog(vs));
306
+ if (!gl.getShaderParameter(fs, gl.COMPILE_STATUS))
307
+ console.log(gl.getShaderInfoLog(fs));
308
+ if (!gl.getProgramParameter(program, gl.LINK_STATUS))
309
+ console.log(gl.getProgramInfoLog(program));
310
+
311
+ // Use WebGL program
312
+ gl.useProgram(program);
313
+
314
+ program.drawInProgress = false;
315
+
316
+ // Look up texture coordinates location
317
+ program.texCoordLocation = gl.getAttribLocation(program, 'a_texCoord');
318
+ gl.enableVertexAttribArray(program.texCoordLocation);
319
+
320
+ if (imageType != 'multires') {
321
+ // Provide texture coordinates for rectangle
322
+ if (!texCoordBuffer)
323
+ texCoordBuffer = gl.createBuffer();
324
+ gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);
325
+ gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([-1,1,1,1,1,-1,-1,1,1,-1,-1,-1]), gl.STATIC_DRAW);
326
+ gl.vertexAttribPointer(program.texCoordLocation, 2, gl.FLOAT, false, 0, 0);
327
+
328
+ // Pass aspect ratio
329
+ program.aspectRatio = gl.getUniformLocation(program, 'u_aspectRatio');
330
+ gl.uniform1f(program.aspectRatio, gl.drawingBufferWidth / gl.drawingBufferHeight);
331
+
332
+ // Locate psi, theta, focal length, horizontal extent, vertical extent, and vertical offset
333
+ program.psi = gl.getUniformLocation(program, 'u_psi');
334
+ program.theta = gl.getUniformLocation(program, 'u_theta');
335
+ program.f = gl.getUniformLocation(program, 'u_f');
336
+ program.h = gl.getUniformLocation(program, 'u_h');
337
+ program.v = gl.getUniformLocation(program, 'u_v');
338
+ program.vo = gl.getUniformLocation(program, 'u_vo');
339
+ program.rot = gl.getUniformLocation(program, 'u_rot');
340
+
341
+ // Pass horizontal extent, vertical extent, and vertical offset
342
+ gl.uniform1f(program.h, haov / (Math.PI * 2.0));
343
+ gl.uniform1f(program.v, vaov / Math.PI);
344
+ gl.uniform1f(program.vo, voffset / Math.PI * 2);
345
+
346
+ // Set background color
347
+ if (imageType == 'equirectangular') {
348
+ program.backgroundColor = gl.getUniformLocation(program, 'u_backgroundColor');
349
+ var color = params.backgroundColor ? params.backgroundColor : [0, 0, 0];
350
+ gl.uniform4fv(program.backgroundColor, color.concat([1]));
351
+ }
352
+
353
+ // Create texture
354
+ program.texture = gl.createTexture();
355
+ gl.bindTexture(glBindType, program.texture);
356
+
357
+ // Upload images to texture depending on type
358
+ if (imageType == 'cubemap') {
359
+ // Load all six sides of the cube map
360
+ gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X, 0, gl.RGB, gl.RGB, gl.UNSIGNED_BYTE, image[1]);
361
+ gl.texImage2D(gl.TEXTURE_CUBE_MAP_NEGATIVE_X, 0, gl.RGB, gl.RGB, gl.UNSIGNED_BYTE, image[3]);
362
+ gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_Y, 0, gl.RGB, gl.RGB, gl.UNSIGNED_BYTE, image[4]);
363
+ gl.texImage2D(gl.TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, gl.RGB, gl.RGB, gl.UNSIGNED_BYTE, image[5]);
364
+ gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_Z, 0, gl.RGB, gl.RGB, gl.UNSIGNED_BYTE, image[0]);
365
+ gl.texImage2D(gl.TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, gl.RGB, gl.RGB, gl.UNSIGNED_BYTE, image[2]);
366
+ } else {
367
+ // Upload image to the texture
368
+ gl.texImage2D(glBindType, 0, gl.RGB, gl.RGB, gl.UNSIGNED_BYTE, image);
369
+ }
370
+
371
+ // Set parameters for rendering any size
372
+ gl.texParameteri(glBindType, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
373
+ gl.texParameteri(glBindType, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
374
+ gl.texParameteri(glBindType, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
375
+ gl.texParameteri(glBindType, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
376
+
377
+ } else {
378
+ // Look up vertex coordinates location
379
+ program.vertPosLocation = gl.getAttribLocation(program, 'a_vertCoord');
380
+ gl.enableVertexAttribArray(program.vertPosLocation);
381
+
382
+ // Create buffers
383
+ if (!cubeVertBuf)
384
+ cubeVertBuf = gl.createBuffer();
385
+ if (!cubeVertTexCoordBuf)
386
+ cubeVertTexCoordBuf = gl.createBuffer();
387
+ if (!cubeVertIndBuf)
388
+ cubeVertIndBuf = gl.createBuffer();
389
+
390
+ // Bind texture coordinate buffer and pass coordinates to WebGL
391
+ gl.bindBuffer(gl.ARRAY_BUFFER, cubeVertTexCoordBuf);
392
+ gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0,0,1,0,1,1,0,1]), gl.STATIC_DRAW);
393
+
394
+ // Bind square index buffer and pass indicies to WebGL
395
+ gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, cubeVertIndBuf);
396
+ gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array([0,1,2,0,2,3]), gl.STATIC_DRAW);
397
+
398
+ // Find uniforms
399
+ program.perspUniform = gl.getUniformLocation(program, 'u_perspMatrix');
400
+ program.cubeUniform = gl.getUniformLocation(program, 'u_cubeMatrix');
401
+ //program.colorUniform = gl.getUniformLocation(program, 'u_color');
402
+
403
+ program.level = -1;
404
+
405
+ program.currentNodes = [];
406
+ program.nodeCache = [];
407
+ program.nodeCacheTimestamp = 0;
408
+ }
409
+
410
+ // Check if there was an error
411
+ var err = gl.getError();
412
+ if (err !== 0) {
413
+ console.log('Error: Something went wrong with WebGL!', err);
414
+ throw {type: 'webgl error'};
415
+ }
416
+
417
+ callback();
418
+ };
419
+
420
+ /**
421
+ * Destroy renderer.
422
+ * @memberof Renderer
423
+ * @instance
424
+ */
425
+ this.destroy = function() {
426
+ if (container !== undefined) {
427
+ if (canvas !== undefined && container.contains(canvas)) {
428
+ container.removeChild(canvas);
429
+ }
430
+ if (world !== undefined && container.contains(world)) {
431
+ container.removeChild(world);
432
+ }
433
+ }
434
+ if (gl) {
435
+ // The spec says this is only supposed to simulate losing the WebGL
436
+ // context, but in practice it tends to actually free the memory.
437
+ var extension = gl.getExtension('WEBGL_lose_context');
438
+ if (extension)
439
+ extension.loseContext();
440
+ }
441
+ };
442
+
443
+ /**
444
+ * Resize renderer (call after resizing container).
445
+ * @memberof Renderer
446
+ * @instance
447
+ */
448
+ this.resize = function() {
449
+ var pixelRatio = window.devicePixelRatio || 1;
450
+ canvas.width = canvas.clientWidth * pixelRatio;
451
+ canvas.height = canvas.clientHeight * pixelRatio;
452
+ if (gl) {
453
+ if (gl.getError() == 1286)
454
+ handleWebGLError1286();
455
+ gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
456
+ if (imageType != 'multires') {
457
+ gl.uniform1f(program.aspectRatio, canvas.clientWidth / canvas.clientHeight);
458
+ }
459
+ }
460
+ };
461
+ // Initialize canvas size
462
+ this.resize();
463
+
464
+ /**
465
+ * Set renderer horizon pitch and roll.
466
+ * @memberof Renderer
467
+ * @instance
468
+ */
469
+ this.setPose = function(horizonPitch, horizonRoll) {
470
+ pose = [horizonPitch, horizonRoll];
471
+ };
472
+
473
+ /**
474
+ * Render new view of panorama.
475
+ * @memberof Renderer
476
+ * @instance
477
+ * @param {number} pitch - Pitch to render at (in radians).
478
+ * @param {number} yaw - Yaw to render at (in radians).
479
+ * @param {number} hfov - Horizontal field of view to render with (in radians).
480
+ * @param {Object} [params] - Extra configuration parameters.
481
+ * @param {number} [params.roll] - Camera roll (in radians).
482
+ * @param {boolean} [params.returnImage] - Return rendered image?
483
+ */
484
+ this.render = function(pitch, yaw, hfov, params) {
485
+ var focal, i, s, roll = 0;
486
+ if (params === undefined)
487
+ params = {};
488
+ if (params.roll)
489
+ roll = params.roll;
490
+
491
+ // Apply pitch and roll transformation if applicable
492
+ if (pose !== undefined) {
493
+ var horizonPitch = pose[0],
494
+ horizonRoll = pose[1];
495
+
496
+ // Calculate new pitch and yaw
497
+ var orig_pitch = pitch,
498
+ orig_yaw = yaw,
499
+ x = Math.cos(horizonRoll) * Math.sin(pitch) * Math.sin(horizonPitch) +
500
+ Math.cos(pitch) * (Math.cos(horizonPitch) * Math.cos(yaw) +
501
+ Math.sin(horizonRoll) * Math.sin(horizonPitch) * Math.sin(yaw)),
502
+ y = -Math.sin(pitch) * Math.sin(horizonRoll) +
503
+ Math.cos(pitch) * Math.cos(horizonRoll) * Math.sin(yaw),
504
+ z = Math.cos(horizonRoll) * Math.cos(horizonPitch) * Math.sin(pitch) +
505
+ Math.cos(pitch) * (-Math.cos(yaw) * Math.sin(horizonPitch) +
506
+ Math.cos(horizonPitch) * Math.sin(horizonRoll) * Math.sin(yaw));
507
+ pitch = Math.asin(Math.max(Math.min(z, 1), -1));
508
+ yaw = Math.atan2(y, x);
509
+
510
+ // Calculate roll
511
+ var v = [Math.cos(orig_pitch) * (Math.sin(horizonRoll) * Math.sin(horizonPitch) * Math.cos(orig_yaw) -
512
+ Math.cos(horizonPitch) * Math.sin(orig_yaw)),
513
+ Math.cos(orig_pitch) * Math.cos(horizonRoll) * Math.cos(orig_yaw),
514
+ Math.cos(orig_pitch) * (Math.cos(horizonPitch) * Math.sin(horizonRoll) * Math.cos(orig_yaw) +
515
+ Math.sin(orig_yaw) * Math.sin(horizonPitch))],
516
+ w = [-Math.cos(pitch) * Math.sin(yaw), Math.cos(pitch) * Math.cos(yaw)];
517
+ var roll_adj = Math.acos(Math.max(Math.min((v[0]*w[0] + v[1]*w[1]) /
518
+ (Math.sqrt(v[0]*v[0]+v[1]*v[1]+v[2]*v[2]) *
519
+ Math.sqrt(w[0]*w[0]+w[1]*w[1])), 1), -1));
520
+ if (v[2] < 0)
521
+ roll_adj = 2 * Math.PI - roll_adj;
522
+ roll += roll_adj;
523
+ }
524
+
525
+ // If no WebGL
526
+ if (!gl && (imageType == 'multires' || imageType == 'cubemap')) {
527
+ // Determine face transforms
528
+ s = fallbackImgSize / 2;
529
+
530
+ var transforms = {
531
+ f: 'translate3d(-' + (s + 2) + 'px, -' + (s + 2) + 'px, -' + s + 'px)',
532
+ b: 'translate3d(' + (s + 2) + 'px, -' + (s + 2) + 'px, ' + s + 'px) rotateX(180deg) rotateZ(180deg)',
533
+ u: 'translate3d(-' + (s + 2) + 'px, -' + s + 'px, ' + (s + 2) + 'px) rotateX(270deg)',
534
+ d: 'translate3d(-' + (s + 2) + 'px, ' + s + 'px, -' + (s + 2) + 'px) rotateX(90deg)',
535
+ l: 'translate3d(-' + s + 'px, -' + (s + 2) + 'px, ' + (s + 2) + 'px) rotateX(180deg) rotateY(90deg) rotateZ(180deg)',
536
+ r: 'translate3d(' + s + 'px, -' + (s + 2) + 'px, -' + (s + 2) + 'px) rotateY(270deg)'
537
+ };
538
+ focal = 1 / Math.tan(hfov / 2);
539
+ var zoom = focal * gl.drawingBufferWidth / 2 + 'px';
540
+ var transform = 'perspective(' + zoom + ') translateZ(' + zoom + ') rotateX(' + pitch + 'rad) rotateY(' + yaw + 'rad) ';
541
+
542
+ // Apply face transforms
543
+ var faces = Object.keys(transforms);
544
+ for (i = 0; i < 6; i++) {
545
+ var face = world.querySelector('.pnlm-' + faces[i] + 'face').style;
546
+ face.webkitTransform = transform + transforms[faces[i]];
547
+ face.transform = transform + transforms[faces[i]];
548
+ }
549
+ return;
550
+ }
551
+
552
+ if (imageType != 'multires') {
553
+ // Calculate focal length from vertical field of view
554
+ var vfov = 2 * Math.atan(Math.tan(hfov * 0.5) / (gl.drawingBufferWidth / gl.drawingBufferHeight));
555
+ focal = 1 / Math.tan(vfov * 0.5);
556
+
557
+ // Pass psi, theta, roll, and focal length
558
+ gl.uniform1f(program.psi, yaw);
559
+ gl.uniform1f(program.theta, pitch);
560
+ gl.uniform1f(program.rot, roll);
561
+ gl.uniform1f(program.f, focal);
562
+
563
+ if (dynamic === true) {
564
+ // Update texture if dynamic
565
+ if (imageType == 'equirectangular') {
566
+ gl.bindTexture(gl.TEXTURE_2D, program.texture);
567
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, gl.RGB, gl.UNSIGNED_BYTE, image);
568
+ }
569
+ }
570
+
571
+ // Draw using current buffer
572
+ gl.drawArrays(gl.TRIANGLES, 0, 6);
573
+
574
+ } else {
575
+ // Create perspective matrix
576
+ var perspMatrix = makePersp(hfov, gl.drawingBufferWidth / gl.drawingBufferHeight, 0.1, 100.0);
577
+
578
+ // Find correct zoom level
579
+ checkZoom(hfov);
580
+
581
+ // Create rotation matrix
582
+ var matrix = identityMatrix3();
583
+ matrix = rotateMatrix(matrix, -roll, 'z');
584
+ matrix = rotateMatrix(matrix, -pitch, 'x');
585
+ matrix = rotateMatrix(matrix, yaw, 'y');
586
+ matrix = makeMatrix4(matrix);
587
+
588
+ // Set matrix uniforms
589
+ gl.uniformMatrix4fv(program.perspUniform, false, new Float32Array(transposeMatrix4(perspMatrix)));
590
+ gl.uniformMatrix4fv(program.cubeUniform, false, new Float32Array(transposeMatrix4(matrix)));
591
+
592
+ // Find current nodes
593
+ var rotPersp = rotatePersp(perspMatrix, matrix);
594
+ program.nodeCache.sort(multiresNodeSort);
595
+ if (program.nodeCache.length > 200 &&
596
+ program.nodeCache.length > program.currentNodes.length + 50) {
597
+ // Remove older nodes from cache
598
+ var removed = program.nodeCache.splice(200, program.nodeCache.length - 200);
599
+ for (var i = 0; i < removed.length; i++) {
600
+ // Explicitly delete textures
601
+ gl.deleteTexture(removed[i].texture);
602
+ }
603
+ }
604
+ program.currentNodes = [];
605
+
606
+ var sides = ['f', 'b', 'u', 'd', 'l', 'r'];
607
+ for (s = 0; s < 6; s++) {
608
+ var ntmp = new MultiresNode(vtmps[s], sides[s], 1, 0, 0, image.fullpath);
609
+ testMultiresNode(rotPersp, ntmp, pitch, yaw, hfov);
610
+ }
611
+ program.currentNodes.sort(multiresNodeRenderSort);
612
+ // Only process one tile per frame to improve responsiveness
613
+ for (i = 0; i < program.currentNodes.length; i++) {
614
+ if (!program.currentNodes[i].texture) {
615
+ setTimeout(processNextTile, 0, program.currentNodes[i]);
616
+ break;
617
+ }
618
+ }
619
+
620
+ // Draw tiles
621
+ multiresDraw();
622
+ }
623
+
624
+ if (params.returnImage !== undefined) {
625
+ return canvas.toDataURL('image/png');
626
+ }
627
+ };
628
+
629
+ /**
630
+ * Check if images are loading.
631
+ * @memberof Renderer
632
+ * @instance
633
+ * @returns {boolean} Whether or not images are loading.
634
+ */
635
+ this.isLoading = function() {
636
+ if (gl && imageType == 'multires') {
637
+ for ( var i = 0; i < program.currentNodes.length; i++ ) {
638
+ if (!program.currentNodes[i].textureLoaded) {
639
+ return true;
640
+ }
641
+ }
642
+ }
643
+ return false;
644
+ };
645
+
646
+ /**
647
+ * Retrieve renderer's canvas.
648
+ * @memberof Renderer
649
+ * @instance
650
+ * @returns {HTMLElement} Renderer's canvas.
651
+ */
652
+ this.getCanvas = function() {
653
+ return canvas;
654
+ };
655
+
656
+ /**
657
+ * Sorting method for multires nodes.
658
+ * @private
659
+ * @param {MultiresNode} a - First node.
660
+ * @param {MultiresNode} b - Second node.
661
+ * @returns {number} Base tiles first, then higher timestamp first.
662
+ */
663
+ function multiresNodeSort(a, b) {
664
+ // Base tiles are always first
665
+ if (a.level == 1 && b.level != 1) {
666
+ return -1;
667
+ }
668
+ if (b. level == 1 && a.level != 1) {
669
+ return 1;
670
+ }
671
+
672
+ // Higher timestamp first
673
+ return b.timestamp - a.timestamp;
674
+ }
675
+
676
+ /**
677
+ * Sorting method for multires node rendering.
678
+ * @private
679
+ * @param {MultiresNode} a - First node.
680
+ * @param {MultiresNode} b - Second node.
681
+ * @returns {number} Lower zoom levels first, then closest to center first.
682
+ */
683
+ function multiresNodeRenderSort(a, b) {
684
+ // Lower zoom levels first
685
+ if (a.level != b.level) {
686
+ return a.level - b.level;
687
+ }
688
+
689
+ // Lower distance from center first
690
+ return a.diff - b.diff;
691
+ }
692
+
693
+ /**
694
+ * Draws multires nodes.
695
+ * @private
696
+ */
697
+ function multiresDraw() {
698
+ if (!program.drawInProgress) {
699
+ program.drawInProgress = true;
700
+ for ( var i = 0; i < program.currentNodes.length; i++ ) {
701
+ if (program.currentNodes[i].textureLoaded) {
702
+ //var color = program.currentNodes[i].color;
703
+ //gl.uniform4f(program.colorUniform, color[0], color[1], color[2], 1.0);
704
+
705
+ // Bind vertex buffer and pass vertices to WebGL
706
+ gl.bindBuffer(gl.ARRAY_BUFFER, cubeVertBuf);
707
+ gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(program.currentNodes[i].vertices), gl.STATIC_DRAW);
708
+ gl.vertexAttribPointer(program.vertPosLocation, 3, gl.FLOAT, false, 0, 0);
709
+
710
+ // Prep for texture
711
+ gl.bindBuffer(gl.ARRAY_BUFFER, cubeVertTexCoordBuf);
712
+ gl.vertexAttribPointer(program.texCoordLocation, 2, gl.FLOAT, false, 0, 0);
713
+
714
+ // Bind texture and draw tile
715
+ gl.bindTexture(gl.TEXTURE_2D, program.currentNodes[i].texture); // Bind program.currentNodes[i].texture to TEXTURE0
716
+ gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0);
717
+ }
718
+ }
719
+ program.drawInProgress = false;
720
+ }
721
+ }
722
+
723
+ /**
724
+ * Creates new multires node.
725
+ * @constructor
726
+ * @private
727
+ * @param {number[]} vertices - Node's verticies.
728
+ * @param {string} side - Node's cube face.
729
+ * @param {number} level - Node's zoom level.
730
+ * @param {number} x - Node's x position.
731
+ * @param {number} y - Node's y position.
732
+ * @param {string} path - Node's path.
733
+ */
734
+ function MultiresNode(vertices, side, level, x, y, path) {
735
+ this.vertices = vertices;
736
+ this.side = side;
737
+ this.level = level;
738
+ this.x = x;
739
+ this.y = y;
740
+ this.path = path.replace('%s',side).replace('%l',level).replace('%x',x).replace('%y',y);
741
+ }
742
+
743
+ /**
744
+ * Test if multires node is visible. If it is, add it to current nodes,
745
+ * load its texture, and load appropriate child nodes.
746
+ * @private
747
+ * @param {number[]} rotPersp - Rotated perspective matrix.
748
+ * @param {MultiresNode} node - Multires node to check.
749
+ * @param {number} pitch - Pitch to check at.
750
+ * @param {number} yaw - Yaw to check at.
751
+ * @param {number} hfov - Horizontal field of view to check at.
752
+ */
753
+ function testMultiresNode(rotPersp, node, pitch, yaw, hfov) {
754
+ if (checkSquareInView(rotPersp, node.vertices)) {
755
+ // Calculate central angle between center of view and center of tile
756
+ var v = node.vertices;
757
+ var x = v[0] + v[3] + v[6] + v[ 9];
758
+ var y = v[1] + v[4] + v[7] + v[10];
759
+ var z = v[2] + v[5] + v[8] + v[11];
760
+ var r = Math.sqrt(x*x + y*y + z*z);
761
+ var theta = Math.asin(z / r);
762
+ var phi = Math.atan2(y, x);
763
+ var ydiff = phi - yaw;
764
+ ydiff += (ydiff > Math.PI) ? -2 * Math.PI : (ydiff < -Math.PI) ? 2 * Math.PI : 0;
765
+ ydiff = Math.abs(ydiff);
766
+ node.diff = Math.acos(Math.sin(pitch) * Math.sin(theta) + Math.cos(pitch) * Math.cos(theta) * Math.cos(ydiff));
767
+
768
+ // Add node to current nodes and load texture if needed
769
+ var inCurrent = false;
770
+ for (var k = 0; k < program.nodeCache.length; k++) {
771
+ if (program.nodeCache[k].path == node.path) {
772
+ inCurrent = true;
773
+ program.nodeCache[k].timestamp = program.nodeCacheTimestamp++;
774
+ program.nodeCache[k].diff = node.diff;
775
+ program.currentNodes.push(program.nodeCache[k]);
776
+ break;
777
+ }
778
+ }
779
+ if (!inCurrent) {
780
+ //node.color = [Math.random(), Math.random(), Math.random()];
781
+ node.timestamp = program.nodeCacheTimestamp++;
782
+ program.currentNodes.push(node);
783
+ program.nodeCache.push(node);
784
+ }
785
+
786
+ // TODO: Test error
787
+ // Create child nodes
788
+ if (node.level < program.level) {
789
+ var cubeSize = image.cubeResolution * Math.pow(2, node.level - image.maxLevel);
790
+ var numTiles = Math.ceil(cubeSize * image.invTileResolution) - 1;
791
+ var doubleTileSize = cubeSize % image.tileResolution * 2;
792
+ var lastTileSize = (cubeSize * 2) % image.tileResolution;
793
+ if (lastTileSize === 0) {
794
+ lastTileSize = image.tileResolution;
795
+ }
796
+ if (doubleTileSize === 0) {
797
+ doubleTileSize = image.tileResolution * 2;
798
+ }
799
+ var f = 0.5;
800
+ if (node.x == numTiles || node.y == numTiles) {
801
+ f = 1.0 - image.tileResolution / (image.tileResolution + lastTileSize);
802
+ }
803
+ var i = 1.0 - f;
804
+ var children = [];
805
+ var vtmp, ntmp;
806
+ var f1 = f, f2 = f, f3 = f, i1 = i, i2 = i, i3 = i;
807
+ // Handle non-symmetric tiles
808
+ if (lastTileSize < image.tileResolution) {
809
+ if (node.x == numTiles && node.y != numTiles) {
810
+ f2 = 0.5;
811
+ i2 = 0.5;
812
+ if (node.side == 'd' || node.side == 'u') {
813
+ f3 = 0.5;
814
+ i3 = 0.5;
815
+ }
816
+ } else if (node.x != numTiles && node.y == numTiles) {
817
+ f1 = 0.5;
818
+ i1 = 0.5;
819
+ if (node.side == 'l' || node.side == 'r') {
820
+ f3 = 0.5;
821
+ i3 = 0.5;
822
+ }
823
+ }
824
+ }
825
+ // Handle small tiles that have fewer than four children
826
+ if (doubleTileSize <= image.tileResolution) {
827
+ if (node.x == numTiles) {
828
+ f1 = 0;
829
+ i1 = 1;
830
+ if (node.side == 'l' || node.side == 'r') {
831
+ f3 = 0;
832
+ i3 = 1;
833
+ }
834
+ }
835
+ if (node.y == numTiles) {
836
+ f2 = 0;
837
+ i2 = 1;
838
+ if (node.side == 'd' || node.side == 'u') {
839
+ f3 = 0;
840
+ i3 = 1;
841
+ }
842
+ }
843
+ }
844
+
845
+ vtmp = [ v[0], v[1], v[2],
846
+ v[0]*f1+v[3]*i1, v[1]*f+v[4]*i, v[2]*f3+v[5]*i3,
847
+ v[0]*f1+v[6]*i1, v[1]*f2+v[7]*i2, v[2]*f3+v[8]*i3,
848
+ v[0]*f+v[9]*i, v[1]*f2+v[10]*i2, v[2]*f3+v[11]*i3
849
+ ];
850
+ ntmp = new MultiresNode(vtmp, node.side, node.level + 1, node.x*2, node.y*2, image.fullpath);
851
+ children.push(ntmp);
852
+ if (!(node.x == numTiles && doubleTileSize <= image.tileResolution)) {
853
+ vtmp = [v[0]*f1+v[3]*i1, v[1]*f+v[4]*i, v[2]*f3+v[5]*i3,
854
+ v[3], v[4], v[5],
855
+ v[3]*f+v[6]*i, v[4]*f2+v[7]*i2, v[5]*f3+v[8]*i3,
856
+ v[0]*f1+v[6]*i1, v[1]*f2+v[7]*i2, v[2]*f3+v[8]*i3
857
+ ];
858
+ ntmp = new MultiresNode(vtmp, node.side, node.level + 1, node.x*2+1, node.y*2, image.fullpath);
859
+ children.push(ntmp);
860
+ }
861
+ if (!(node.x == numTiles && doubleTileSize <= image.tileResolution) &&
862
+ !(node.y == numTiles && doubleTileSize <= image.tileResolution)) {
863
+ vtmp = [v[0]*f1+v[6]*i1, v[1]*f2+v[7]*i2, v[2]*f3+v[8]*i3,
864
+ v[3]*f+v[6]*i, v[4]*f2+v[7]*i2, v[5]*f3+v[8]*i3,
865
+ v[6], v[7], v[8],
866
+ v[9]*f1+v[6]*i1, v[10]*f+v[7]*i, v[11]*f3+v[8]*i3
867
+ ];
868
+ ntmp = new MultiresNode(vtmp, node.side, node.level + 1, node.x*2+1, node.y*2+1, image.fullpath);
869
+ children.push(ntmp);
870
+ }
871
+ if (!(node.y == numTiles && doubleTileSize <= image.tileResolution)) {
872
+ vtmp = [ v[0]*f+v[9]*i, v[1]*f2+v[10]*i2, v[2]*f3+v[11]*i3,
873
+ v[0]*f1+v[6]*i1, v[1]*f2+v[7]*i2, v[2]*f3+v[8]*i3,
874
+ v[9]*f1+v[6]*i1, v[10]*f+v[7]*i, v[11]*f3+v[8]*i3,
875
+ v[9], v[10], v[11]
876
+ ];
877
+ ntmp = new MultiresNode(vtmp, node.side, node.level + 1, node.x*2, node.y*2+1, image.fullpath);
878
+ children.push(ntmp);
879
+ }
880
+ for (var j = 0; j < children.length; j++) {
881
+ testMultiresNode(rotPersp, children[j], pitch, yaw, hfov);
882
+ }
883
+ }
884
+ }
885
+ }
886
+
887
+ /**
888
+ * Creates cube vertex array.
889
+ * @private
890
+ * @returns {number[]} Cube vertex array.
891
+ */
892
+ function createCube() {
893
+ return [-1, 1, -1, 1, 1, -1, 1, -1, -1, -1, -1, -1, // Front face
894
+ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, // Back face
895
+ -1, 1, 1, 1, 1, 1, 1, 1, -1, -1, 1, -1, // Up face
896
+ -1, -1, -1, 1, -1, -1, 1, -1, 1, -1, -1, 1, // Down face
897
+ -1, 1, 1, -1, 1, -1, -1, -1, -1, -1, -1, 1, // Left face
898
+ 1, 1, -1, 1, 1, 1, 1, -1, 1, 1, -1, -1 // Right face
899
+ ];
900
+ }
901
+
902
+ /**
903
+ * Creates 3x3 identity matrix.
904
+ * @private
905
+ * @returns {number[]} Identity matrix.
906
+ */
907
+ function identityMatrix3() {
908
+ return [
909
+ 1, 0, 0,
910
+ 0, 1, 0,
911
+ 0, 0, 1
912
+ ];
913
+ }
914
+
915
+ /**
916
+ * Rotates a 3x3 matrix.
917
+ * @private
918
+ * @param {number[]} m - Matrix to rotate.
919
+ * @param {number[]} angle - Angle to rotate by in radians.
920
+ * @param {string} axis - Axis to rotate about (`x`, `y`, or `z`).
921
+ * @returns {number[]} Rotated matrix.
922
+ */
923
+ function rotateMatrix(m, angle, axis) {
924
+ var s = Math.sin(angle);
925
+ var c = Math.cos(angle);
926
+ if (axis == 'x') {
927
+ return [
928
+ m[0], c*m[1] + s*m[2], c*m[2] - s*m[1],
929
+ m[3], c*m[4] + s*m[5], c*m[5] - s*m[4],
930
+ m[6], c*m[7] + s*m[8], c*m[8] - s*m[7]
931
+ ];
932
+ }
933
+ if (axis == 'y') {
934
+ return [
935
+ c*m[0] - s*m[2], m[1], c*m[2] + s*m[0],
936
+ c*m[3] - s*m[5], m[4], c*m[5] + s*m[3],
937
+ c*m[6] - s*m[8], m[7], c*m[8] + s*m[6]
938
+ ];
939
+ }
940
+ if (axis == 'z') {
941
+ return [
942
+ c*m[0] + s*m[1], c*m[1] - s*m[0], m[2],
943
+ c*m[3] + s*m[4], c*m[4] - s*m[3], m[5],
944
+ c*m[6] + s*m[7], c*m[7] - s*m[6], m[8]
945
+ ];
946
+ }
947
+ }
948
+
949
+ /**
950
+ * Turns a 3x3 matrix into a 4x4 matrix.
951
+ * @private
952
+ * @param {number[]} m - Input matrix.
953
+ * @returns {number[]} Expanded matrix.
954
+ */
955
+ function makeMatrix4(m) {
956
+ return [
957
+ m[0], m[1], m[2], 0,
958
+ m[3], m[4], m[5], 0,
959
+ m[6], m[7], m[8], 0,
960
+ 0, 0, 0, 1
961
+ ];
962
+ }
963
+
964
+ /**
965
+ * Transposes a 4x4 matrix.
966
+ * @private
967
+ * @param {number[]} m - Input matrix.
968
+ * @returns {number[]} Transposed matrix.
969
+ */
970
+ function transposeMatrix4(m) {
971
+ return [
972
+ m[ 0], m[ 4], m[ 8], m[12],
973
+ m[ 1], m[ 5], m[ 9], m[13],
974
+ m[ 2], m[ 6], m[10], m[14],
975
+ m[ 3], m[ 7], m[11], m[15]
976
+ ];
977
+ }
978
+
979
+ /**
980
+ * Creates a perspective matrix.
981
+ * @private
982
+ * @param {number} hfov - Desired horizontal field of view.
983
+ * @param {number} aspect - Desired aspect ratio.
984
+ * @param {number} znear - Near distance.
985
+ * @param {number} zfar - Far distance.
986
+ * @returns {number[]} Generated perspective matrix.
987
+ */
988
+ function makePersp(hfov, aspect, znear, zfar) {
989
+ var fovy = 2 * Math.atan(Math.tan(hfov/2) * gl.drawingBufferHeight / gl.drawingBufferWidth);
990
+ var f = 1 / Math.tan(fovy/2);
991
+ return [
992
+ f/aspect, 0, 0, 0,
993
+ 0, f, 0, 0,
994
+ 0, 0, (zfar+znear)/(znear-zfar), (2*zfar*znear)/(znear-zfar),
995
+ 0, 0, -1, 0
996
+ ];
997
+ }
998
+
999
+ /**
1000
+ * Processes a loaded texture image into a WebGL texture.
1001
+ * @private
1002
+ * @param {Image} img - Input image.
1003
+ * @param {WebGLTexture} tex - Texture to bind image to.
1004
+ */
1005
+ function processLoadedTexture(img, tex) {
1006
+ gl.bindTexture(gl.TEXTURE_2D, tex);
1007
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, gl.RGB, gl.UNSIGNED_BYTE, img);
1008
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
1009
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
1010
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
1011
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
1012
+ gl.bindTexture(gl.TEXTURE_2D, null);
1013
+ }
1014
+
1015
+ // Based on http://blog.tojicode.com/2012/03/javascript-memory-optimization-and.html
1016
+ var loadTexture = (function() {
1017
+ var cacheTop = 4; // Maximum number of concurrents loads
1018
+ var textureImageCache = {};
1019
+ var pendingTextureRequests = [];
1020
+ var crossOrigin;
1021
+
1022
+ function TextureImageLoader() {
1023
+ var self = this;
1024
+ this.texture = this.callback = null;
1025
+ this.image = new Image();
1026
+ this.image.crossOrigin = crossOrigin ? crossOrigin : 'anonymous';
1027
+ this.image.addEventListener('load', function() {
1028
+ processLoadedTexture(self.image, self.texture);
1029
+ self.callback(self.texture);
1030
+ releaseTextureImageLoader(self);
1031
+ });
1032
+ };
1033
+
1034
+ TextureImageLoader.prototype.loadTexture = function(src, texture, callback) {
1035
+ this.texture = texture;
1036
+ this.callback = callback;
1037
+ this.image.src = src;
1038
+ };
1039
+
1040
+ function PendingTextureRequest(src, texture, callback) {
1041
+ this.src = src;
1042
+ this.texture = texture;
1043
+ this.callback = callback;
1044
+ };
1045
+
1046
+ function releaseTextureImageLoader(til) {
1047
+ if (pendingTextureRequests.length) {
1048
+ var req = pendingTextureRequests.shift();
1049
+ til.loadTexture(req.src, req.texture, req.callback);
1050
+ } else
1051
+ textureImageCache[cacheTop++] = til;
1052
+ }
1053
+
1054
+ for (var i = 0; i < cacheTop; i++)
1055
+ textureImageCache[i] = new TextureImageLoader();
1056
+
1057
+ return function(src, callback, _crossOrigin) {
1058
+ crossOrigin = _crossOrigin;
1059
+ var texture = gl.createTexture();
1060
+ if (cacheTop)
1061
+ textureImageCache[--cacheTop].loadTexture(src, texture, callback);
1062
+ else
1063
+ pendingTextureRequests.push(new PendingTextureRequest(src, texture, callback));
1064
+ return texture;
1065
+ };
1066
+ })();
1067
+
1068
+ /**
1069
+ * Loads image and creates texture for a multires node / tile.
1070
+ * @private
1071
+ * @param {MultiresNode} node - Input node.
1072
+ */
1073
+ function processNextTile(node) {
1074
+ if (!node.textureLoad) {
1075
+ node.textureLoad = true;
1076
+ loadTexture(encodeURI(node.path + '.' + image.extension), function(texture) {
1077
+ node.texture = texture;
1078
+ node.textureLoaded = true;
1079
+ }, globalParams.crossOrigin);
1080
+ }
1081
+ }
1082
+
1083
+ /**
1084
+ * Finds and applies optimal multires zoom level.
1085
+ * @private
1086
+ * @param {number} hfov - Horizontal field of view to check at.
1087
+ */
1088
+ function checkZoom(hfov) {
1089
+ // Find optimal level
1090
+ var newLevel = 1;
1091
+ while ( newLevel < image.maxLevel &&
1092
+ gl.drawingBufferWidth > image.tileResolution *
1093
+ Math.pow(2, newLevel - 1) * Math.tan(hfov / 2) * 0.707 ) {
1094
+ newLevel++;
1095
+ }
1096
+
1097
+ // Apply change
1098
+ program.level = newLevel;
1099
+ }
1100
+
1101
+ /**
1102
+ * Rotates perspective matrix.
1103
+ * @private
1104
+ * @param {number[]} p - Perspective matrix.
1105
+ * @param {number[]} r - Rotation matrix.
1106
+ * @returns {number[]} Rotated matrix.
1107
+ */
1108
+ function rotatePersp(p, r) {
1109
+ return [
1110
+ p[ 0]*r[0], p[ 0]*r[1], p[ 0]*r[ 2], 0,
1111
+ p[ 5]*r[4], p[ 5]*r[5], p[ 5]*r[ 6], 0,
1112
+ p[10]*r[8], p[10]*r[9], p[10]*r[10], p[11],
1113
+ -r[8], -r[9], -r[10], 0
1114
+ ];
1115
+ }
1116
+
1117
+ /**
1118
+ * Applies rotated perspective matrix to a 3-vector
1119
+ * (last element is inverted).
1120
+ * @private
1121
+ * @param {number[]} m - Rotated perspective matrix.
1122
+ * @param {number[]} v - Input 3-vector.
1123
+ * @returns {number[]} Resulting 4-vector.
1124
+ */
1125
+ function applyRotPerspToVec(m, v) {
1126
+ return [
1127
+ m[ 0]*v[0] + m[ 1]*v[1] + m[ 2]*v[2],
1128
+ m[ 4]*v[0] + m[ 5]*v[1] + m[ 6]*v[2],
1129
+ m[11] + m[ 8]*v[0] + m[ 9]*v[1] + m[10]*v[2],
1130
+ 1/(m[12]*v[0] + m[13]*v[1] + m[14]*v[2])
1131
+ ];
1132
+ }
1133
+
1134
+ /**
1135
+ * Checks if a vertex is visible.
1136
+ * @private
1137
+ * @param {number[]} m - Rotated perspective matrix.
1138
+ * @param {number[]} v - Input vertex.
1139
+ * @returns {number} 1 or -1 if the vertex is or is not visible,
1140
+ * respectively.
1141
+ */
1142
+ function checkInView(m, v) {
1143
+ var vpp = applyRotPerspToVec(m, v);
1144
+ var winX = vpp[0]*vpp[3];
1145
+ var winY = vpp[1]*vpp[3];
1146
+ var winZ = vpp[2]*vpp[3];
1147
+ var ret = [0, 0, 0];
1148
+
1149
+ if ( winX < -1 )
1150
+ ret[0] = -1;
1151
+ if ( winX > 1 )
1152
+ ret[0] = 1;
1153
+ if ( winY < -1 )
1154
+ ret[1] = -1;
1155
+ if ( winY > 1 )
1156
+ ret[1] = 1;
1157
+ if ( winZ < -1 || winZ > 1 )
1158
+ ret[2] = 1;
1159
+ return ret;
1160
+ }
1161
+
1162
+ /**
1163
+ * Checks if a square (tile) is visible.
1164
+ * @private
1165
+ * @param {number[]} m - Rotated perspective matrix.
1166
+ * @param {number[]} v - Square's vertex array.
1167
+ * @returns {boolean} Whether or not the square is visible.
1168
+ */
1169
+ function checkSquareInView(m, v) {
1170
+ var check1 = checkInView(m, v.slice(0, 3));
1171
+ var check2 = checkInView(m, v.slice(3, 6));
1172
+ var check3 = checkInView(m, v.slice(6, 9));
1173
+ var check4 = checkInView(m, v.slice(9, 12));
1174
+ var testX = check1[0] + check2[0] + check3[0] + check4[0];
1175
+ if ( testX == -4 || testX == 4 )
1176
+ return false;
1177
+ var testY = check1[1] + check2[1] + check3[1] + check4[1];
1178
+ if ( testY == -4 || testY == 4 )
1179
+ return false;
1180
+ var testZ = check1[2] + check2[2] + check3[2] + check4[2];
1181
+ return testZ != 4;
1182
+
1183
+
1184
+ }
1185
+
1186
+ /**
1187
+ * On iOS (iPhone 5c, iOS 10.3), this WebGL error occurs when the canvas is
1188
+ * too big. Unfortuately, there's no way to test for this beforehand, so we
1189
+ * reduce the canvas size if this error is thrown.
1190
+ * @private
1191
+ */
1192
+ function handleWebGLError1286() {
1193
+ console.log('Reducing canvas size due to error 1286!');
1194
+ canvas.width = Math.round(canvas.width / 2);
1195
+ canvas.height = Math.round(canvas.height / 2);
1196
+ }
1197
+ }
1198
+
1199
+ // Vertex shader for equirectangular and cube
1200
+ var v = [
1201
+ 'attribute vec2 a_texCoord;',
1202
+ 'varying vec2 v_texCoord;',
1203
+
1204
+ 'void main() {',
1205
+ // Set position
1206
+ 'gl_Position = vec4(a_texCoord, 0.0, 1.0);',
1207
+
1208
+ // Pass the coordinates to the fragment shader
1209
+ 'v_texCoord = a_texCoord;',
1210
+ '}'
1211
+ ].join('');
1212
+
1213
+ // Vertex shader for multires
1214
+ var vMulti = [
1215
+ 'attribute vec3 a_vertCoord;',
1216
+ 'attribute vec2 a_texCoord;',
1217
+
1218
+ 'uniform mat4 u_cubeMatrix;',
1219
+ 'uniform mat4 u_perspMatrix;',
1220
+
1221
+ 'varying mediump vec2 v_texCoord;',
1222
+
1223
+ 'void main(void) {',
1224
+ // Set position
1225
+ 'gl_Position = u_perspMatrix * u_cubeMatrix * vec4(a_vertCoord, 1.0);',
1226
+
1227
+ // Pass the coordinates to the fragment shader
1228
+ 'v_texCoord = a_texCoord;',
1229
+ '}'
1230
+ ].join('');
1231
+
1232
+ // Fragment shader
1233
+ var fragEquiCubeBase = [
1234
+ 'precision mediump float;',
1235
+
1236
+ 'uniform float u_aspectRatio;',
1237
+ 'uniform float u_psi;',
1238
+ 'uniform float u_theta;',
1239
+ 'uniform float u_f;',
1240
+ 'uniform float u_h;',
1241
+ 'uniform float u_v;',
1242
+ 'uniform float u_vo;',
1243
+ 'uniform float u_rot;',
1244
+
1245
+ 'const float PI = 3.14159265358979323846264;',
1246
+
1247
+ // Texture
1248
+ 'uniform sampler2D u_image;',
1249
+ 'uniform samplerCube u_imageCube;',
1250
+
1251
+ // Coordinates passed in from vertex shader
1252
+ 'varying vec2 v_texCoord;',
1253
+
1254
+ // Background color (display for partial panoramas)
1255
+ 'uniform vec4 u_backgroundColor;',
1256
+
1257
+ 'void main() {',
1258
+ // Map canvas/camera to sphere
1259
+ 'float x = v_texCoord.x * u_aspectRatio;',
1260
+ 'float y = v_texCoord.y;',
1261
+ 'float sinrot = sin(u_rot);',
1262
+ 'float cosrot = cos(u_rot);',
1263
+ 'float rot_x = x * cosrot - y * sinrot;',
1264
+ 'float rot_y = x * sinrot + y * cosrot;',
1265
+ 'float sintheta = sin(u_theta);',
1266
+ 'float costheta = cos(u_theta);',
1267
+ 'float a = u_f * costheta - rot_y * sintheta;',
1268
+ 'float root = sqrt(rot_x * rot_x + a * a);',
1269
+ 'float lambda = atan(rot_x / root, a / root) + u_psi;',
1270
+ 'float phi = atan((rot_y * costheta + u_f * sintheta) / root);',
1271
+ ].join('\n');
1272
+
1273
+ // Fragment shader
1274
+ var fragCube = fragEquiCubeBase + [
1275
+ // Look up color from texture
1276
+ 'float cosphi = cos(phi);',
1277
+ 'gl_FragColor = textureCube(u_imageCube, vec3(cosphi*sin(lambda), sin(phi), cosphi*cos(lambda)));',
1278
+ '}'
1279
+ ].join('\n');
1280
+
1281
+ // Fragment shader
1282
+ var fragEquirectangular = fragEquiCubeBase + [
1283
+ // Wrap image
1284
+ 'lambda = mod(lambda + PI, PI * 2.0) - PI;',
1285
+
1286
+ // Map texture to sphere
1287
+ 'vec2 coord = vec2(lambda / PI, phi / (PI / 2.0));',
1288
+
1289
+ // Look up color from texture
1290
+ // Map from [-1,1] to [0,1] and flip y-axis
1291
+ 'if(coord.x < -u_h || coord.x > u_h || coord.y < -u_v + u_vo || coord.y > u_v + u_vo)',
1292
+ 'gl_FragColor = u_backgroundColor;',
1293
+ 'else',
1294
+ 'gl_FragColor = texture2D(u_image, vec2((coord.x + u_h) / (u_h * 2.0), (-coord.y + u_v + u_vo) / (u_v * 2.0)));',
1295
+ '}'
1296
+ ].join('\n');
1297
+
1298
+ // Fragment shader
1299
+ var fragMulti = [
1300
+ 'varying mediump vec2 v_texCoord;',
1301
+ 'uniform sampler2D u_sampler;',
1302
+ //'uniform mediump vec4 u_color;',
1303
+
1304
+ 'void main(void) {',
1305
+ // Look up color from texture
1306
+ 'gl_FragColor = texture2D(u_sampler, v_texCoord);',
1307
+ // 'gl_FragColor = u_color;',
1308
+ '}'
1309
+ ].join('');
1310
+
1311
+ return {
1312
+ renderer: function(container, image, imagetype, dynamic) {
1313
+ return new Renderer(container, image, imagetype, dynamic);
1314
+ }
1315
+ };
1316
+
1317
+ })(window, document);
admin/lib/pannellum/src/js/pannellum.js ADDED
@@ -0,0 +1,2949 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Pannellum - An HTML5 based Panorama Viewer
3
+ * Copyright (c) 2011-2018 Matthew Petroff
4
+ *
5
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ * of this software and associated documentation files (the "Software"), to deal
7
+ * in the Software without restriction, including without limitation the rights
8
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ * copies of the Software, and to permit persons to whom the Software is
10
+ * furnished to do so, subject to the following conditions:
11
+ *
12
+ * The above copyright notice and this permission notice shall be included in
13
+ * all copies or substantial portions of the Software.
14
+ *
15
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ * THE SOFTWARE.
22
+ */
23
+
24
+ window.pannellum = (function(window, document, undefined) {
25
+
26
+ 'use strict';
27
+
28
+ /**
29
+ * Creates a new panorama viewer.
30
+ * @constructor
31
+ * @param {HTMLElement|string} container - The container (div) element for the
32
+ * viewer, or its ID.
33
+ * @param {Object} initialConfig - Inital configuration for viewer.
34
+ */
35
+ function Viewer(container, initialConfig) {
36
+
37
+ var _this = this;
38
+
39
+ // Declare variables
40
+ var config,
41
+ renderer,
42
+ preview,
43
+ isUserInteracting = false,
44
+ latestInteraction = Date.now(),
45
+ onPointerDownPointerX = 0,
46
+ onPointerDownPointerY = 0,
47
+ onPointerDownPointerDist = -1,
48
+ onPointerDownYaw = 0,
49
+ onPointerDownPitch = 0,
50
+ keysDown = new Array(10),
51
+ fullscreenActive = false,
52
+ loaded = false,
53
+ error = false,
54
+ isTimedOut = false,
55
+ listenersAdded = false,
56
+ panoImage,
57
+ prevTime,
58
+ speed = {'yaw': 0, 'pitch': 0, 'hfov': 0},
59
+ animating = false,
60
+ orientation = false,
61
+ orientationYawOffset = 0,
62
+ autoRotateStart,
63
+ autoRotateSpeed = 0,
64
+ origHfov,
65
+ origPitch,
66
+ animatedMove = {},
67
+ externalEventListeners = {},
68
+ specifiedPhotoSphereExcludes = [],
69
+ update = false, // Should we update when still to render dynamic content
70
+ hotspotsCreated = false;
71
+
72
+ var defaultConfig = {
73
+ hfov: 100,
74
+ minHfov: 50,
75
+ maxHfov: 120,
76
+ pitch: 0,
77
+ minPitch: undefined,
78
+ maxPitch: undefined,
79
+ yaw: 0,
80
+ minYaw: -180,
81
+ maxYaw: 180,
82
+ roll: 0,
83
+ haov: 360,
84
+ vaov: 180,
85
+ vOffset: 0,
86
+ autoRotate: false,
87
+ autoRotateInactivityDelay: -1,
88
+ autoRotateStopDelay: undefined,
89
+ type: 'equirectangular',
90
+ northOffset: 0,
91
+ showFullscreenCtrl: true,
92
+ dynamic: false,
93
+ doubleClickZoom: true,
94
+ keyboardZoom: true,
95
+ mouseZoom: true,
96
+ showZoomCtrl: true,
97
+ autoLoad: false,
98
+ showControls: true,
99
+ orientationOnByDefault: false,
100
+ hotSpotDebug: false,
101
+ backgroundColor: [0, 0, 0],
102
+ animationTimingFunction: timingFunction,
103
+ draggable: true,
104
+ disableKeyboardCtrl: false,
105
+ crossOrigin: 'anonymous',
106
+ };
107
+
108
+ // Translatable / configurable strings
109
+ // Some strings contain '%s', which is a placeholder for inserted values
110
+ // When setting strings in external configuration, `\n` should be used instead of `<br>` to insert line breaks
111
+ defaultConfig.strings = {
112
+ // Labels
113
+ loadButtonLabel: 'Click to<br>Load<br>Panorama',
114
+ loadingLabel: 'Loading...',
115
+ bylineLabel: 'by %s', // One substitution: author
116
+
117
+ // Errors
118
+ noPanoramaError: 'No panorama image was specified.',
119
+ fileAccessError: 'The file %s could not be accessed.', // One substitution: file URL
120
+ malformedURLError: 'There is something wrong with the panorama URL.',
121
+ iOS8WebGLError: "Due to iOS 8's broken WebGL implementation, only " +
122
+ "progressive encoded JPEGs work for your device (this " +
123
+ "panorama uses standard encoding).",
124
+ genericWebGLError: 'Your browser does not have the necessary WebGL support to display this panorama.',
125
+ textureSizeError: 'This panorama is too big for your device! It\'s ' +
126
+ '%spx wide, but your device only supports images up to ' +
127
+ '%spx wide. Try another device.' +
128
+ ' (If you\'re the author, try scaling down the image.)', // Two substitutions: image width, max image width
129
+ unknownError: 'Unknown error. Check developer console.',
130
+ }
131
+
132
+ var usedKeyNumbers = [16, 17, 27, 37, 38, 39, 40, 61, 65, 68, 83, 87, 107, 109, 173, 187, 189];
133
+
134
+ // Initialize container
135
+ container = typeof container === 'string' ? document.getElementById(container) : container;
136
+ container.classList.add('pnlm-container');
137
+ container.tabIndex = 0;
138
+
139
+ // Create container for ui
140
+ var uiContainer = document.createElement('div');
141
+ uiContainer.className = 'pnlm-ui';
142
+ container.appendChild(uiContainer);
143
+
144
+ // Create container for renderer
145
+ var renderContainer = document.createElement('div');
146
+ renderContainer.className = 'pnlm-render-container';
147
+ container.appendChild(renderContainer);
148
+ var dragFix = document.createElement('div');
149
+ dragFix.className = 'pnlm-dragfix';
150
+ uiContainer.appendChild(dragFix);
151
+
152
+ // Display about information on right click
153
+ var aboutMsg = document.createElement('span');
154
+ aboutMsg.className = 'pnlm-about-msg';
155
+ aboutMsg.innerHTML = '<a href="https://pannellum.org/" target="_blank">Pannellum</a>';
156
+ uiContainer.appendChild(aboutMsg);
157
+ dragFix.addEventListener('contextmenu', aboutMessage);
158
+
159
+ // Create info display
160
+ var infoDisplay = {};
161
+
162
+ // Hot spot debug indicator
163
+ var hotSpotDebugIndicator = document.createElement('div');
164
+ hotSpotDebugIndicator.className = 'pnlm-sprite pnlm-hot-spot-debug-indicator';
165
+ uiContainer.appendChild(hotSpotDebugIndicator);
166
+
167
+ // Panorama info
168
+ infoDisplay.container = document.createElement('div');
169
+ infoDisplay.container.className = 'pnlm-panorama-info';
170
+ infoDisplay.title = document.createElement('div');
171
+ infoDisplay.title.className = 'pnlm-title-box';
172
+ infoDisplay.container.appendChild(infoDisplay.title);
173
+ infoDisplay.author = document.createElement('div');
174
+ infoDisplay.author.className = 'pnlm-author-box';
175
+ infoDisplay.container.appendChild(infoDisplay.author);
176
+ uiContainer.appendChild(infoDisplay.container);
177
+
178
+ // Load box
179
+ infoDisplay.load = {};
180
+ infoDisplay.load.box = document.createElement('div');
181
+ infoDisplay.load.box.className = 'pnlm-load-box';
182
+ infoDisplay.load.boxp = document.createElement('p');
183
+ infoDisplay.load.box.appendChild(infoDisplay.load.boxp);
184
+ infoDisplay.load.lbox = document.createElement('div');
185
+ infoDisplay.load.lbox.className = 'pnlm-lbox';
186
+ infoDisplay.load.lbox.innerHTML = '<div class="pnlm-loading"></div>';
187
+ infoDisplay.load.box.appendChild(infoDisplay.load.lbox);
188
+ infoDisplay.load.lbar = document.createElement('div');
189
+ infoDisplay.load.lbar.className = 'pnlm-lbar';
190
+ infoDisplay.load.lbarFill = document.createElement('div');
191
+ infoDisplay.load.lbarFill.className = 'pnlm-lbar-fill';
192
+ infoDisplay.load.lbar.appendChild(infoDisplay.load.lbarFill);
193
+ infoDisplay.load.box.appendChild(infoDisplay.load.lbar);
194
+ infoDisplay.load.msg = document.createElement('p');
195
+ infoDisplay.load.msg.className = 'pnlm-lmsg';
196
+ infoDisplay.load.box.appendChild(infoDisplay.load.msg);
197
+ uiContainer.appendChild(infoDisplay.load.box);
198
+
199
+ // Error message
200
+ infoDisplay.errorMsg = document.createElement('div');
201
+ infoDisplay.errorMsg.className = 'pnlm-error-msg pnlm-info-box';
202
+ uiContainer.appendChild(infoDisplay.errorMsg);
203
+
204
+ // Create controls
205
+ var controls = {};
206
+ controls.container = document.createElement('div');
207
+ controls.container.className = 'pnlm-controls-container';
208
+ uiContainer.appendChild(controls.container);
209
+
210
+ // Load button
211
+ controls.load = document.createElement('div');
212
+ controls.load.className = 'pnlm-load-button';
213
+ controls.load.addEventListener('click', function() {
214
+ processOptions();
215
+ load();
216
+ });
217
+ uiContainer.appendChild(controls.load);
218
+
219
+ // Zoom controls
220
+ controls.zoom = document.createElement('div');
221
+ controls.zoom.className = 'pnlm-zoom-controls pnlm-controls';
222
+ controls.zoomIn = document.createElement('div');
223
+ controls.zoomIn.className = 'pnlm-zoom-in pnlm-sprite pnlm-control';
224
+ controls.zoomIn.addEventListener('click', zoomIn);
225
+ controls.zoom.appendChild(controls.zoomIn);
226
+ controls.zoomOut = document.createElement('div');
227
+ controls.zoomOut.className = 'pnlm-zoom-out pnlm-sprite pnlm-control';
228
+ controls.zoomOut.addEventListener('click', zoomOut);
229
+ controls.zoom.appendChild(controls.zoomOut);
230
+ controls.container.appendChild(controls.zoom);
231
+
232
+ // Fullscreen toggle
233
+ controls.fullscreen = document.createElement('div');
234
+ controls.fullscreen.addEventListener('click', toggleFullscreen);
235
+ controls.fullscreen.className = 'pnlm-fullscreen-toggle-button pnlm-sprite pnlm-fullscreen-toggle-button-inactive pnlm-controls pnlm-control';
236
+ if (document.fullscreenEnabled || document.mozFullScreenEnabled || document.webkitFullscreenEnabled || document.msFullscreenEnabled)
237
+ controls.container.appendChild(controls.fullscreen);
238
+
239
+ // Device orientation toggle
240
+ controls.orientation = document.createElement('div');
241
+ controls.orientation.addEventListener('click', function(e) {
242
+ if (orientation)
243
+ stopOrientation();
244
+ else
245
+ startOrientation();
246
+ });
247
+ controls.orientation.addEventListener('mousedown', function(e) {e.stopPropagation();});
248
+ controls.orientation.addEventListener('touchstart', f