Maps Builder – Google Maps Plugin - Version 1.0.4

Version Description

Version 1.0.3 will soon be updated to 2.0. Find details here

Download this release

Release Info

Developer webdevmattcrom
Plugin Icon 128x128 Maps Builder – Google Maps Plugin
Version 1.0.4
Comparing to
See all releases

Code changes from version 1.0.1 to 1.0.4

LICENSE.txt CHANGED
@@ -1,339 +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.
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 CHANGED
@@ -1,146 +1,153 @@
1
- === Google Maps Builder ===
2
- Contributors: wordimpress, dlocc, webdevmattcrom
3
- Donate link: http://wordimpress.com/
4
- Tags: google maps, google map, google map widget, google map shortcode, maps, map, wp map, wp google maps, google maps directions, google maps builder, google maps plugin, google places, google places api, google maps api, google places reviews
5
- Requires at least: 3.6
6
- Tested up to: 4.1
7
- Stable tag: 1.0.1
8
- License: GPLv2 or later
9
- License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
-
11
- One Google Maps plugin to rule them all. Google Maps Builder is intuitive, sleek, powerful and easy to use. Forget the rest, use the best.
12
-
13
- == Description ==
14
-
15
- Google Maps Builder isn't just another Google Maps plugin. It's built from the ground up to be the easiest, most intuitive and fastest Google Maps plugin for WordPress. Visually build powerful customized Google Maps to use on your WordPress site quickly and easily without ever having to touch a bit of code.
16
-
17
- = Plugin Highlights: =
18
-
19
- * **Google Places API integration** - Display nearby business locations and points of interest complete with ratings, custom marker icon
20
- * **Snazzy Maps integration** - Create truly unique Google Map themes that look great with any design powered by [Snazzy Maps](http://snazzymaps.com/).
21
- * **Unique Marker Icons** - The only plugin with [Map Icons](map-icons.com) integration; set icon and marker colors for truly unique markers
22
- * **Intuitive UI** that seamlessly integrates with WordPress' - no eye sores or outdated interfaces here
23
- * **Small Footprint** - GMB does not create any new database tables, not even one
24
- * **Optimized** - All scripts and styles are optimized and packaged with Grunt
25
- * **No notices or warnings** We developed this plugins in debug mode. This results in high quality plugins with no errors, warnings or notices.
26
-
27
- = Marker Creation =
28
-
29
- Google Maps builder features a simple **"Point and Click" marker creation system**. As well, you can add markers using an intuitive Google autocomplete search field. As well, **Bulk edit marker data ** using meta fields attached to each marker's content.
30
-
31
- = Map Themes =
32
-
33
- Want to add some pazazz to your maps? [Snazzy Maps](http://snazzymaps.com/) themes are baked right in to Google Map Builder. This means your maps can stand out, fit into any design, and look unique and intriguing.
34
-
35
- = Granular Map Control =
36
-
37
- Fine tune your Google Maps with full control over settings for street view, zooming, panning, dragging, and more. Set defaults for each controls so each new map you create is just the way you like it.
38
-
39
- = Actively Developed and Supported =
40
-
41
- This plugin is currently being actively developed, which means consistent improvements and enhancements. As well, we won't shy away from bug fixes and further code refractoring and optimization.
42
-
43
- == Installation ==
44
-
45
- This section describes how to install the plugin and get it working.
46
-
47
- = Using The WordPress Dashboard =
48
-
49
- 1. Navigate to the 'Add New' in the plugins dashboard
50
- 2. Search for 'Google Maps Builder'
51
- 3. Click 'Install Now'
52
- 4. Activate the plugin on the Plugin dashboard
53
-
54
- = Uploading in WordPress Dashboard =
55
-
56
- 1. Navigate to the 'Add New' in the plugins dashboard
57
- 2. Navigate to the 'Upload' area
58
- 3. Select `google-maps-builder.zip` from your computer
59
- 4. Click 'Install Now'
60
- 5. Activate the plugin in the Plugin dashboard
61
-
62
- = Using FTP =
63
-
64
- 1. Download `google-maps-builder.zip`
65
- 2. Extract the `google-maps-builder` directory to your computer
66
- 3. Upload the `google-maps-builder` directory to the `/wp-content/plugins/` directory
67
- 4. Activate the plugin in the Plugin dashboard
68
-
69
- == Frequently Asked Questions ==
70
-
71
- = What sets this plugin apart from all the other Google Maps plugins for WordPress? =
72
-
73
- There are a number features and functionality that set Google Maps Builder apart from the many WordPress Google Maps plugins. For starters, we promise this plugin will always have a light footprint. No extra tables or unnecessary overhead. Furthermore, the plugin is built from the ground up to be both easy and fun to use.
74
-
75
- We have placed extra care and attention on the map creation process and are always looking to improve the UI with enhancements. It's our goal to integrate the plugin with the native WordPress admin UI without adding any distracting visuals. Finally, there are a number of additional features such as built in integration with Google Places API, Maps Icons and Snazzy Maps.
76
-
77
- = Do I need a Google Places API Key to use this plugin? =
78
-
79
- No. You do not need a Google Places API plugin to use this plugin.
80
-
81
- = Does this plugin create any new database tables? =
82
-
83
- Unlike many other Google Maps plugins, Google Maps Builder does not create a single new table in your WordPress database. There is no added database overhead or foreign MySQL queries. It's our guarantee that this plugin will never leave an orphaned table in your WordPress database.
84
-
85
- = Where can I find the shortcodes for each map I create? =
86
-
87
- You can find the shortcodes for each map on the post listing screen, within the post itself in the shortcode metabox (coming soon). Also coming soon: Map widget and TinyMCE button to include shortcode.
88
-
89
- = What the heck is a shortcode and how do I use it? =
90
-
91
- Google Maps Builder works by creating a plugin specific [WordPress shortcode](http://codex.wordpress.org/Shortcode). Basically, you can copy the shortcode for a specific map and enter in into a widget or directly within content. As well, you can use the WordPress [do_shortcode()](http://codex.wordpress.org/Function_Reference/do_shortcode) function to use it within your theme template files and even plugins.
92
-
93
- = Does this plugin include a widget for displaying maps? =
94
-
95
- Soon! For now, you can use the shortcode in the text widget. Soon there will be a Google Maps Builder Widget.
96
-
97
- = How do I report a bug? =
98
-
99
- We always welcome your feedback for improvements or if you have uncovered a bug. To report a bug please use the WordPress.org support forum.
100
-
101
- = Who is behind this plugin? =
102
-
103
- The main developer of this plugin is Devin Walker. He lives in San Diego, California and loves all things WordPress. To find out more information about him please visit [his website.](http://imdev.in)
104
-
105
- == Roadmap ==
106
-
107
- Here is what we are working on for future releases:
108
-
109
- * Maps Widget - Build in a widget to output Google Maps
110
- * Custom Map Marker Images - Ability to upload your own map marker images
111
- * Map Icons: Fix maps icon overlap issue when they are bunched in an area (zIndex issue)
112
- * Admin JS i18n - Please contact us at info@wordimpress.com to volunteer for translating!
113
- * Public JS i18n - Please contact us at info@wordimpress.com to volunteer for translating!
114
- * Google Places - Add the ability to remove place information
115
- * Google Places - Pagination for markers, the ability to set number of markers
116
- * Google Places - Customize the individual place markers
117
- * Markers - Add the ability to drag markers to new positions (lat, lng) in builder.
118
- * Info Window - Add a WYSIWYG editor? Possible complications with this.
119
-
120
- Bug Fixes
121
-
122
- * Info Window - FOUC: Investigate why sometimes pointer tip of info window flashes before it opens (mainly Chrome)
123
- * Chrome - Look into while map tiles have strange lines in between
124
- * Firefox - Clicking on a marker to open the same info window creates content overflow
125
-
126
- == Screenshots ==
127
-
128
- 1. **Google Map Builder** - A view of the single map view in the WordPress admin panel. Notice the autocomplete search field and "Drop a Marker" button.
129
-
130
- 2. **Editable Marker** - Customize the content of the map markers directly in the builder. Built to mock Google's own Maps Engine.
131
-
132
- 3. **Custom Markers** - Configure a marker to fit your location. Easily adjust the marker, icon and color.
133
-
134
- 4. **Frontend View** - A view the a map on the frontend of a WordPress site using the TwentyTwelve theme. This map displays various Google Places.
135
-
136
- 5. **Settings Panel** - Adjust the various plugin settings using a UI that is built using WordPress' own styles.
137
-
138
- == Changelog ==
139
-
140
- = 1.0.1 =
141
- * New: Added a custom meta field to the Google Map single post screen that outputs the post's shortcode so it's more easily accessible. Before you could only access the shortcode via the Google Maps post listing page.
142
- * Updated readme.txt file with more information about the plugin, fixed several formatting errors and typos.
143
- * Fixed: Activation error "PHP Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method Google_Maps_Builder::activate() should not be called statically in ..." - Thanks Jon Brown!
144
-
145
- = 1.0.0 =
146
- * Plugin released. Yay!
 
 
 
 
 
 
 
1
+ === Google Maps Builder ===
2
+ Contributors: wordimpress, dlocc, webdevmattcrom
3
+ Donate link: http://wordimpress.com/
4
+ Tags: google maps, google map, google map widget, google map shortcode, maps, map, wp map, wp google maps, google maps directions, google maps builder, google maps plugin, google places, google places api, google maps api, google places reviews
5
+ Requires at least: 3.6
6
+ Tested up to: 4.1
7
+ Stable tag: 1.0.3
8
+ License: GPLv2 or later
9
+ License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
+
11
+ One Google Maps plugin to rule them all. Google Maps Builder is intuitive, sleek, powerful and easy to use. Forget the rest, use the best.
12
+
13
+ == Description ==
14
+
15
+ ###Maps Builder 2.0 is Coming###
16
+ With 10,000+ Active Installs we thought it was high-time to kick it up a notch with Maps Builder. We've launched a "Beta Campaign" to get feedback on our new features and look and feel. We've also built a phenomenal Pro version which we'll be giving away free licenses for in our Mascot Naming Contest. Here's all the relevant information you'll need to get your hands on it now and contribute and maybe WIN the contest.
17
+ _____________________________________________________________
18
+ [Blog Article](https://wordimpress.com/maps-builder-2-0-is-coming-and-you-can-help/) | [Feedback Form](https://wordimpress.com/maps-builder-beta-campaign/) | [Github](https://github.com/WordImpress/google-maps-builder/issues)
19
+
20
+ = Plugin Highlights: =
21
+
22
+ Google Maps Builder isn't just another Google Maps plugin. It's built from the ground up to be the easiest, most intuitive and fastest Google Maps plugin for WordPress. Visually build powerful customized Google Maps to use on your WordPress site quickly and easily without ever having to touch a bit of code.
23
+
24
+ * **Google Places API integration** - Display nearby business locations and points of interest complete with ratings, custom marker icon
25
+ * **Snazzy Maps integration** - Create truly unique Google Map themes that look great with any design powered by [Snazzy Maps](http://snazzymaps.com/).
26
+ * **Unique Marker Icons** - The only plugin with [Map Icons](map-icons.com) integration; set icon and marker colors for truly unique markers
27
+ * **Intuitive UI** that seamlessly integrates with WordPress' - no eye sores or outdated interfaces here
28
+ * **Small Footprint** - GMB does not create any new database tables, not even one
29
+ * **Optimized** - All scripts and styles are optimized and packaged with Grunt
30
+ * **No notices or warnings** We developed this plugins in debug mode. This results in high quality plugins with no errors, warnings or notices.
31
+
32
+ = Marker Creation =
33
+
34
+ Google Maps builder features a simple **"Point and Click" marker creation system**. As well, you can add markers using an intuitive Google autocomplete search field. As well, **Bulk edit marker data ** using meta fields attached to each marker's content.
35
+
36
+ = Map Themes =
37
+
38
+ Want to add some pazazz to your maps? [Snazzy Maps](http://snazzymaps.com/) themes are baked right in to Google Map Builder. This means your maps can stand out, fit into any design, and look unique and intriguing.
39
+
40
+ = Granular Map Control =
41
+
42
+ Fine tune your Google Maps with full control over settings for street view, zooming, panning, dragging, and more. Set defaults for each control so each new map you create is just the way you like it.
43
+
44
+ = Actively Developed and Supported =
45
+
46
+ This plugin is actively developed and supported. This means you can expect an answer in the forums and consistent improvements and enhancements to the plugin itself. As well, we won't shy away from bug fixes or code refactoring and optimization.
47
+
48
+ == Installation ==
49
+
50
+ This section describes how to install the plugin and get it working.
51
+
52
+ = Using The WordPress Dashboard =
53
+
54
+ 1. Navigate to the 'Add New' in the plugins dashboard
55
+ 2. Search for 'Google Maps Builder'
56
+ 3. Click 'Install Now'
57
+ 4. Activate the plugin on the Plugin dashboard
58
+
59
+ = Uploading in WordPress Dashboard =
60
+
61
+ 1. Navigate to the 'Add New' in the plugins dashboard
62
+ 2. Navigate to the 'Upload' area
63
+ 3. Select `google-maps-builder.zip` from your computer
64
+ 4. Click 'Install Now'
65
+ 5. Activate the plugin in the Plugin dashboard
66
+
67
+ = Using FTP =
68
+
69
+ 1. Download `google-maps-builder.zip`
70
+ 2. Extract the `google-maps-builder` directory to your computer
71
+ 3. Upload the `google-maps-builder` directory to the `/wp-content/plugins/` directory
72
+ 4. Activate the plugin in the Plugin dashboard
73
+
74
+ == Frequently Asked Questions ==
75
+
76
+ = What sets this plugin apart from all the other Google Maps plugins for WordPress? =
77
+
78
+ There are a number features and functionality that set Google Maps Builder apart from the many WordPress Google Maps plugins. For starters, we promise this plugin will always have a light footprint. No extra tables or unnecessary overhead. Furthermore, the plugin is built from the ground up to be both easy and fun to use.
79
+
80
+ We have placed extra care and attention on the map creation process and are always looking to improve the UI with enhancements. It's our goal to integrate the plugin with the native WordPress admin UI without adding any distracting visuals. Finally, there are a number of additional features such as built in integration with Google Places API, Maps Icons and Snazzy Maps.
81
+
82
+ = Do I need a Google Places API Key to use this plugin? =
83
+
84
+ No. You do not need a Google Places API plugin to use this plugin.
85
+
86
+ = Does this plugin create any new database tables? =
87
+
88
+ Unlike many other Google Maps plugins, Google Maps Builder does not create a single new table in your WordPress database. There is no added database overhead or foreign MySQL queries. It's our guarantee that this plugin will never leave an orphaned table in your WordPress database.
89
+
90
+ = Where can I find the shortcodes for each map I create? =
91
+
92
+ You can find the shortcodes for each map on the post listing screen, within the post itself in the shortcode metabox (coming soon). Also coming soon: Map widget and TinyMCE button to include shortcode.
93
+
94
+ = What the heck is a shortcode and how do I use it? =
95
+
96
+ Google Maps Builder works by creating a plugin specific [WordPress shortcode](http://codex.wordpress.org/Shortcode). Basically, you can copy the shortcode for a specific map and enter in into a widget or directly within content. As well, you can use the WordPress [do_shortcode()](http://codex.wordpress.org/Function_Reference/do_shortcode) function to use it within your theme template files and even plugins.
97
+
98
+ = Does this plugin include a widget for displaying maps? =
99
+
100
+ Soon! For now, you can use the shortcode in the text widget. Soon there will be a Google Maps Builder Widget.
101
+
102
+ = How do I report a bug? =
103
+
104
+ We always welcome your feedback for improvements or if you have uncovered a bug. To report a bug please use the WordPress.org support forum.
105
+
106
+ = Who is behind this plugin? =
107
+
108
+ The main developer of this plugin is WordImpress. To find out more information about the company and the people behind it please visit [the WordImpress website.](http://wordimpress.com)
109
+
110
+ == Roadmap ==
111
+
112
+ With 10,000+ Active Installs we thought it was high-time to kick it up a notch with Maps Builder. We've launched a "Beta Campaign" to get feedback on our new features and look and feel. We've also built a phenomenal Pro version which we'll be giving away free licenses for in our Mascot Naming Contest. Here's all the relevant information you'll need to get your hands on it now and contribute and maybe WIN the contest.
113
+ _____________________________________________________________
114
+ [Blog Article](https://wordimpress.com/maps-builder-2-0-is-coming-and-you-can-help/) | [Feedback Form](https://wordimpress.com/maps-builder-beta-campaign/) | [Github](https://github.com/WordImpress/google-maps-builder/issues)
115
+
116
+ == Screenshots ==
117
+
118
+ 1. **Google Map Builder** - A view of the single map view in the WordPress admin panel. Notice the autocomplete search field and "Drop a Marker" button.
119
+
120
+ 2. **Editable Marker** - Customize the content of the map markers directly in the builder. Built to mock Google's own Maps Engine.
121
+
122
+ 3. **Custom Markers** - Configure a marker to fit your location. Easily adjust the marker, icon and color.
123
+
124
+ 4. **Frontend View** - A view the a map on the frontend of a WordPress site using the TwentyTwelve theme. This map displays various Google Places.
125
+
126
+ 5. **Settings Panel** - Adjust the various plugin settings using a UI that is built using WordPress' own styles.
127
+
128
+ == Upgrade Notice ==
129
+ Version 1.0.3 will soon be updated to 2.0. [Find details here](https://wordimpress.com/maps-builder-2-0-is-coming-and-you-can-help/)
130
+
131
+ == Changelog ==
132
+
133
+ = 1.0.3 =
134
+ * New: New check for multiple Google Maps API calls to ensure more compatibility with themes and plugins which include the same maps API JS. If the check detects multiple enqueues a warning appears in the admin panel.
135
+ * Additional Testing: Reviewed WooCommerce and Contact Forms 7 compatibility within WP admin panel
136
+ * Fix: Updated a number of field descriptions to be more clear
137
+ * Fix: Updated readme to be more accurately reflect past development on plugin
138
+ * Removed snazzy.php file since we are using the json file exclusively now
139
+
140
+ = 1.0.2 =
141
+ * Remove Maps Shortcode field from non-Google Maps post types. ie Posts and Pages (thanks [@kalenjohnson](https://github.com/WordImpress/google-maps-builder/pull/1) )
142
+ * Fix: Default Menu position conflict with other plugins like WooCommerce and Contact Forms 7
143
+ * Readme.txt - New FAQs, Roadmap content and several formatting and typo fixes
144
+ * Fixed: Bug with Map shortcode field displaying on all single post types Publish metabox rather than just on the maps post type
145
+ * Improved: Moved snazzy JSON data from php file to .json file for more reliable usage across environments; some servers seem to deny any access to php files using wp_remote_fopen()
146
+
147
+ = 1.0.1 =
148
+ * New: Added a custom meta field to the Google Map single post screen that outputs the post's shortcode so it's more easily accessible. Before you could only access the shortcode via the Google Maps post listing page.
149
+ * Updated readme.txt file with more information about the plugin, fixed several formatting errors and typos.
150
+ * Fixed: Activation error "PHP Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method Google_Maps_Builder::activate() should not be called statically in ..." - Thanks Jon Brown!
151
+
152
+ = 1.0.0 =
153
+ * Plugin released. Yay!
admin/assets/css/admin-settings.css CHANGED
@@ -1,3 +1,4 @@
 
1
  /**
2
  * Google Places Map CPT Styles
3
  */
@@ -70,7 +71,7 @@ Header
70
  .google-plus {
71
  margin-left: 20px;
72
  display: inline;
73
- width: 150px;
74
  }
75
 
76
  .wordimpress-logo {
@@ -193,4 +194,201 @@ General Options Tab
193
 
194
  #gmb_menu_position {
195
  width: 40px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
196
  }
1
+ <<<<<<< .mine
2
  /**
3
  * Google Places Map CPT Styles
4
  */
71
  .google-plus {
72
  margin-left: 20px;
73
  display: inline;
74
+ width: 190px;
75
  }
76
 
77
  .wordimpress-logo {
194
 
195
  #gmb_menu_position {
196
  width: 40px;
197
+ =======
198
+ /**
199
+ * Google Places Map CPT Styles
200
+ */
201
+
202
+ .wrap {
203
+ margin-left: -5px;
204
+ }
205
+
206
+ .clear:before,
207
+ .clear:after {
208
+ content: " ";
209
+ display: table;
210
+ }
211
+
212
+ .clear:after {
213
+ clear: both;
214
+ }
215
+
216
+ table.form-table {
217
+ margin:0 0 20px;
218
+ }
219
+
220
+ /*---------------------------
221
+ Header
222
+ -----------------------------*/
223
+
224
+ .main-heading {
225
+ font-size: 36px;
226
+ font-weight: 400;
227
+ line-height: 1.1em;
228
+ margin: 10px 0 20px;
229
+ }
230
+
231
+ .main-subheading {
232
+ font-size: 20px;
233
+ line-height: 1.4em;
234
+ }
235
+
236
+ .logo-svg {
237
+ margin: 15px 0 0;
238
+ }
239
+
240
+ .logo-svg.logo-svg-small {
241
+ float: right;
242
+ margin: 0;
243
+ }
244
+
245
+ .gmb-plugin-heading {
246
+ width: 170px;
247
+ float: left;
248
+ margin: 9px 0 0;
249
+ }
250
+
251
+ .new-window {
252
+ background: url('../img/new-window-icon.png') no-repeat right 5px transparent;
253
+ padding-right: 13px;
254
+ margin-right: 4px;
255
+ }
256
+
257
+ /* Social Media */
258
+
259
+ .social-items-wrap {
260
+ float: left;
261
+ }
262
+
263
+ .social-items-wrap > div {
264
+ display: inline-block;
265
+ }
266
+
267
+ .google-plus {
268
+ margin-left: 20px;
269
+ display: inline;
270
+ width: 150px;
271
+ }
272
+
273
+ .wordimpress-logo {
274
+ float: left;
275
+ margin: -7px 0 0;
276
+ }
277
+
278
+ .logo-link {
279
+ background: url('../img/wordimpress-logo-small.png') no-repeat 0 0 transparent;
280
+ width: 100px;
281
+ height: 40px;
282
+ display: block;
283
+ }
284
+
285
+ .hide-welcome {
286
+ margin: 2px 0 0 30px;
287
+ }
288
+
289
+ .hide-welcome span {
290
+ background: url('../img/arrows.png') no-repeat 0 -33px rgba(0, 0, 0, 0);
291
+ width: 15px;
292
+ height: 14px;
293
+ display: inline-block;
294
+ margin-left: 3px;
295
+ }
296
+
297
+ .pull-left {
298
+ float: left;
299
+ }
300
+
301
+ .pull-right {
302
+ float: right;
303
+ }
304
+
305
+ .small-desc {
306
+ font-size: 12px;
307
+ font-style: italic;
308
+ color: #B3B3B3;
309
+ }
310
+
311
+ /*---------------------------
312
+ Map Options Tab
313
+ -----------------------------*/
314
+
315
+ .size-label {
316
+ margin: 8px 10px 0 0;
317
+ font-style: italic;
318
+ width: 50px;
319
+ }
320
+
321
+ /* Map Size */
322
+
323
+ .width_unit_label, .width_radio, .map-width, .map-height, .size-label, .radio-left, .label-left {
324
+ float: left !important;
325
+ }
326
+
327
+ #width_wrap {
328
+ margin: 0 0 10px;
329
+ }
330
+
331
+ #size_labels_wrap {
332
+ margin: 8px 0 0 10px;
333
+ padding: 0;
334
+ float: left;
335
+ }
336
+
337
+ #width_unit_percent {
338
+ margin: 0 3px 0 0;
339
+ }
340
+
341
+ #width_unit_px {
342
+ margin: 0 3px 0 8px;
343
+ }
344
+
345
+ .map-width, .map-height {
346
+ width: 55px !important
347
+ }
348
+
349
+ /* Lat Lng */
350
+ #lat-lng-wrap {
351
+ float: left;
352
+ clear: both;
353
+ margin: 15px 0 0;
354
+ display: none;
355
+ }
356
+
357
+ label.geocode-label {
358
+ width: 130px;
359
+ margin-right: 0;
360
+ }
361
+
362
+ label.yes-label {
363
+ margin-right: 10px;
364
+ }
365
+
366
+ #lat-lng-wrap input[type=text].latitude, #lat-lng-wrap input[type=text].longitude {
367
+ width: 120px;
368
+ float: left;
369
+ }
370
+
371
+ .lat-lng-wrap {
372
+ margin: 0 0 10px;
373
+ clear: none;
374
+ }
375
+
376
+ .lat-lng-wrap > span, .lat-lng-wrap > input {
377
+ float: left;
378
+ }
379
+
380
+ .lat-lng-wrap > span {
381
+ margin: 8px 5px 0 0;
382
+ width: 80px;
383
+ font-style: italic;
384
+ }
385
+
386
+
387
+ /*---------------------------
388
+ General Options Tab
389
+ -----------------------------*/
390
+
391
+ #gmb_menu_position {
392
+ width: 40px;
393
+ >>>>>>> .r1071384
394
  }
admin/assets/css/admin-settings.min.css CHANGED
@@ -1 +1 @@
1
- .wrap{margin-left:-5px}.clear:before,.clear:after{content:" ";display:table}.clear:after{clear:both}table.form-table{margin:0 0 20px}.main-heading{font-size:36px;font-weight:400;line-height:1.1em;margin:10px 0 20px}.main-subheading{font-size:20px;line-height:1.4em}.logo-svg{margin:15px 0 0}.logo-svg.logo-svg-small{float:right;margin:0}.gmb-plugin-heading{width:170px;float:left;margin:9px 0 0}.new-window{background:url(../img/new-window-icon.png) no-repeat right 5px transparent;padding-right:13px;margin-right:4px}.social-items-wrap{float:left}.social-items-wrap>div{display:inline-block}.google-plus{margin-left:20px;display:inline;width:150px}.wordimpress-logo{float:left;margin:-7px 0 0}.logo-link{background:url(../img/wordimpress-logo-small.png) no-repeat 0 0 transparent;width:100px;height:40px;display:block}.hide-welcome{margin:2px 0 0 30px}.hide-welcome span{background:url(../img/arrows.png) no-repeat 0 -33px rgba(0,0,0,0);width:15px;height:14px;display:inline-block;margin-left:3px}.pull-left{float:left}.pull-right{float:right}.small-desc{font-size:12px;font-style:italic;color:#B3B3B3}.size-label{margin:8px 10px 0 0;font-style:italic;width:50px}.width_unit_label,.width_radio,.map-width,.map-height,.size-label,.radio-left,.label-left{float:left!important}#width_wrap{margin:0 0 10px}#size_labels_wrap{margin:8px 0 0 10px;padding:0;float:left}#width_unit_percent{margin:0 3px 0 0}#width_unit_px{margin:0 3px 0 8px}.map-width,.map-height{width:55px!important}#lat-lng-wrap{float:left;clear:both;margin:15px 0 0;display:none}label.geocode-label{width:130px;margin-right:0}label.yes-label{margin-right:10px}#lat-lng-wrap input[type=text].latitude,#lat-lng-wrap input[type=text].longitude{width:120px;float:left}.lat-lng-wrap{margin:0 0 10px;clear:none}.lat-lng-wrap>span,.lat-lng-wrap>input{float:left}.lat-lng-wrap>span{margin:8px 5px 0 0;width:80px;font-style:italic}#gmb_menu_position{width:40px}
1
+ <<<<<<< .mine .wrap{margin-left:-5px}.clear:before,.clear:after{content:" ";display:table}.clear:after{clear:both}table.form-table{margin:0 0 20px}.main-heading{font-size:36px;font-weight:400;line-height:1.1em;margin:10px 0 20px}.main-subheading{font-size:20px;line-height:1.4em}.logo-svg{margin:15px 0 0}.logo-svg.logo-svg-small{float:right;margin:0}.gmb-plugin-heading{width:170px;float:left;margin:9px 0 0}.new-window{background:url(../img/new-window-icon.png) no-repeat right 5px transparent;padding-right:13px;margin-right:4px}.social-items-wrap{float:left}.social-items-wrap>div{display:inline-block}.google-plus{margin-left:20px;display:inline;width:190px}.wordimpress-logo{float:left;margin:-7px 0 0}.logo-link{background:url(../img/wordimpress-logo-small.png) no-repeat 0 0 transparent;width:100px;height:40px;display:block}.hide-welcome{margin:2px 0 0 30px}.hide-welcome span{background:url(../img/arrows.png) no-repeat 0 -33px rgba(0,0,0,0);width:15px;height:14px;display:inline-block;margin-left:3px}.pull-left{float:left}.pull-right{float:right}.small-desc{font-size:12px;font-style:italic;color:#B3B3B3}.size-label{margin:8px 10px 0 0;font-style:italic;width:50px}.width_unit_label,.width_radio,.map-width,.map-height,.size-label,.radio-left,.label-left{float:left!important}#width_wrap{margin:0 0 10px}#size_labels_wrap{margin:8px 0 0 10px;padding:0;float:left}#width_unit_percent{margin:0 3px 0 0}#width_unit_px{margin:0 3px 0 8px}.map-width,.map-height{width:55px!important}#lat-lng-wrap{float:left;clear:both;margin:15px 0 0;display:none}label.geocode-label{width:130px;margin-right:0}label.yes-label{margin-right:10px}#lat-lng-wrap input[type=text].latitude,#lat-lng-wrap input[type=text].longitude{width:120px;float:left}.lat-lng-wrap{margin:0 0 10px;clear:none}.lat-lng-wrap>span,.lat-lng-wrap>input{float:left}.lat-lng-wrap>span{margin:8px 5px 0 0;width:80px;font-style:italic}#gmb_menu_position{width:40px;=======.wrap{margin-left:-5px}.clear:before,.clear:after{content:" ";display:table}.clear:after{clear:both}table.form-table{margin:0 0 20px}.main-heading{font-size:36px;font-weight:400;line-height:1.1em;margin:10px 0 20px}.main-subheading{font-size:20px;line-height:1.4em}.logo-svg{margin:15px 0 0}.logo-svg.logo-svg-small{float:right;margin:0}.gmb-plugin-heading{width:170px;float:left;margin:9px 0 0}.new-window{background:url(../img/new-window-icon.png) no-repeat right 5px transparent;padding-right:13px;margin-right:4px}.social-items-wrap{float:left}.social-items-wrap>div{display:inline-block}.google-plus{margin-left:20px;display:inline;width:150px}.wordimpress-logo{float:left;margin:-7px 0 0}.logo-link{background:url(../img/wordimpress-logo-small.png) no-repeat 0 0 transparent;width:100px;height:40px;display:block}.hide-welcome{margin:2px 0 0 30px}.hide-welcome span{background:url(../img/arrows.png) no-repeat 0 -33px rgba(0,0,0,0);width:15px;height:14px;display:inline-block;margin-left:3px}.pull-left{float:left}.pull-right{float:right}.small-desc{font-size:12px;font-style:italic;color:#B3B3B3}.size-label{margin:8px 10px 0 0;font-style:italic;width:50px}.width_unit_label,.width_radio,.map-width,.map-height,.size-label,.radio-left,.label-left{float:left!important}#width_wrap{margin:0 0 10px}#size_labels_wrap{margin:8px 0 0 10px;padding:0;float:left}#width_unit_percent{margin:0 3px 0 0}#width_unit_px{margin:0 3px 0 8px}.map-width,.map-height{width:55px!important}#lat-lng-wrap{float:left;clear:both;margin:15px 0 0;display:none}label.geocode-label{width:130px;margin-right:0}label.yes-label{margin-right:10px}#lat-lng-wrap input[type=text].latitude,#lat-lng-wrap input[type=text].longitude{width:120px;float:left}.lat-lng-wrap{margin:0 0 10px;clear:none}.lat-lng-wrap>span,.lat-lng-wrap>input{float:left}.lat-lng-wrap>span{margin:8px 5px 0 0;width:80px;font-style:italic}#gmb_menu_position{width:40px;>>>>>>> .r1071384}
admin/assets/css/admin.css CHANGED
@@ -258,10 +258,17 @@
258
  Place Markers
259
  --------------------------------------------*/
260
 
261
- #google-map-wrap div#infobubble-content {
262
- line-height: 1.35;
263
- /*overflow: hidden;*/
264
- /*white-space: nowrap;*/
 
 
 
 
 
 
 
265
  }
266
 
267
  #infobubble-content.loading {
@@ -272,10 +279,6 @@
272
  white-space: normal;
273
  }
274
 
275
- .gm-style-iw, .gm-style-iw > div {
276
- overflow: visible !important;
277
- }
278
-
279
  #infobubble-content p {
280
  font-size: 12px;
281
  margin: 0 0 7px;
@@ -483,6 +486,7 @@ a.marker-edit-link {
483
 
484
  #infobubble-content .edit-place-title {
485
  width: 290px;
 
486
  }
487
 
488
  #infobubble-content .edit-place-description {
@@ -701,7 +705,7 @@ Temporary Info Window
701
  .infowindow-toolbar {
702
  display: block;
703
  margin: 0;
704
- padding: 8px 0 5px;
705
  }
706
 
707
  .add-marker {
258
  Place Markers
259
  --------------------------------------------*/
260
 
261
+ /* Hacky fix to prevent scrollbars */
262
+ #google_maps_preview_metabox .gm-style-iw, #google_maps_preview_metabox .gm-style-iw > div {
263
+ overflow: visible !important;
264
+ }
265
+
266
+ #google_maps_preview_metabox .gm-style-iw > div > div {
267
+ overflow: visible !important;
268
+ }
269
+
270
+ #infobubble-content {
271
+ overflow: hidden !important;
272
  }
273
 
274
  #infobubble-content.loading {
279
  white-space: normal;
280
  }
281
 
 
 
 
 
282
  #infobubble-content p {
283
  font-size: 12px;
284
  margin: 0 0 7px;
486
 
487
  #infobubble-content .edit-place-title {
488
  width: 290px;
489
+ margin: 0 0 10px;
490
  }
491
 
492
  #infobubble-content .edit-place-description {
705
  .infowindow-toolbar {
706
  display: block;
707
  margin: 0;
708
+ padding: 8px 0 10px;
709
  }
710
 
711
  .add-marker {
admin/assets/css/admin.min.css CHANGED
@@ -1 +1 @@
1
- .clear:before,.clear:after{content:" ";display:table}.clear:after{clear:both}.hover-transition,.marker-icon-row .icon,.marker-row .marker-item{-webkit-transition:.2s all linear;-moz-transition:.2s all linear;-o-transition:.2s all linear;transition:.2s all linear}.box-sizing{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}#gmb_markers_group_repeat{}.cmb_id_gmb_theme_json{display:none}.marker-info-wrapper{background-color:#F1F1F1;margin:8px 0 4px;padding:12px;font-size:13px}.marker-info-wrapper>div{margin:0 0 5px;padding:0}.marker-info-wrapper>div.rating-wrap{margin:0;padding:0}.repeatable-grouping .cmb-nested-table td{padding-top:3px}.repeatable-grouping .cmb-nested-table td pre{margin:0}.repeatable-grouping .cmb-nested-table td pre textarea{height:50px}.new-window{background:url(../img/new-window-icon.png) no-repeat right 3px transparent;padding-right:16px}.shortcode-wrap{margin:1px 14px 12px 11px}.shortcode-wrap label{margin:0 0 3px;display:block;cursor:default}.shortcode-input{margin:0;width:100%}.cmb_metabox_description{display:block;margin-top:5px}.cmb_id_gmb_places_search_multicheckbox ul{overflow:hidden}.cmb_id_gmb_places_search_multicheckbox li{float:left;width:33%}.cmb_id_gmb_places_search_multicheckbox .cmb_metabox_description{margin-top:10px;margin-right:2px}#google-map-wrap{position:relative}.autocomplete-wrap{background:url(../img/powered-by-google-on-white.png) no-repeat right 8px rgba(0,0,0,0)}.repeatable-group .shift-rows{display:none}.wpgp-message{background-color:#FFF;border-left:4px solid #7AD03A;-webkit-box-shadow:1px 1px 1px 1px rgba(0,0,0,.15);box-shadow:1px 1px 1px 1px rgba(0,0,0,.15);box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;padding:1px 12px;display:none}.wpgp-message.warning-message{border-left:4px solid #d40000;margin:20px 0 0}.wpgp-message p,.form-table td .wpgp-message p{margin:.5em 0;padding:2px}.places-change-message{margin-bottom:15px;margin-right:2px}.places-change-message p{float:left}.places-change-message .button{float:right;margin-top:5px}#google-map-wrap .wpgp-message{margin-top:20px}#map{width:100%;margin:0 auto}.places-loading{background:url(../img/spinner.gif) no-repeat center right transparent;font-style:italic;position:absolute;top:-34px;right:31px;padding:0 25px 0 0;display:none}.cmb_id_gmb_map_type td{padding-bottom:0}.cmb_id_gmb_map_type .cmb_option{margin:5px 0 10px}.cmb_id_gmb_geocoder td{padding-bottom:3px}.cmb_id_gmb_search_radius,.cmb_id_gmb_places_search_multicheckbox{display:none}#google_maps_details_options tr{display:none}#google_maps_details_options tr.cmb_id_gmb_show_poi{display:table-row}.snazzy-link{font-size:10px;text-transform:uppercase;font-style:normal;display:inline-block}.width_unit_label,.width_radio,.map-width,.map-height,.size-label{float:left!important}#width_wrap{margin:0 0 10px}#size_labels_wrap{margin:8px 0 0 10px;padding:0;float:left}#width_unit_percent{margin:0 3px 0 0}#width_unit_px{margin:0 3px 0 8px}.inner-sidebar table.cmb_metabox label.size-label,#side-sortables table.cmb_metabox label.size-label,label.size-label{font-weight:400;font-style:italic}.inner-sidebar table.cmb_metabox label.size-label,#side-sortables table.cmb_metabox label.size-label,.form-table label.size-label{padding:9px 0 0;width:50px;font-weight:400}.map-width,.map-height{width:55px!important}#google-map-wrap div#infobubble-content{line-height:1.35}#infobubble-content.loading{background:url(../../../includes/assets/img/loading.GIF) no-repeat center center #FFF}#google-map-wrap div#infobubble-content>div{white-space:normal}.gm-style-iw,.gm-style-iw>div{overflow:visible!important}#infobubble-content p{font-size:12px;margin:0 0 7px;color:#2C2C2C}#infobubble-content{padding:0;margin:3px -20px 0 0;min-width:314px;min-height:80px;height:100%;overflow:hidden;box-sizing:border-box;cursor:default}#infobubble-content .place-title{border:1px solid #FFF;font-family:Roboto,Arial,sans-serif;font-size:16px;line-height:21px;font-weight:700;min-height:21px;white-space:normal;padding-right:20px}#infobubble-content .place-description{white-space:normal}.marker-confirm-place{margin:0 8px 4px 0;display:inline-block}.marker-confirm-place:hover{cursor:pointer}#infobubble-content .rating-wrap{overflow:hidden}#infobubble-content .numeric-rating{font-size:16px;color:#DD4B39;font-weight:400;float:left;margin:0 5px 0 0}#infobubble-content .star-rating-wrap{background:url(../../../includes/assets/img/review_stars.png) no-repeat 0 0 transparent;height:13px;width:67px;float:left;margin:5px 0 0}#infobubble-content .star-rating-size{background:url(../../../includes/assets/img/review_stars.png) no-repeat 0 -13px transparent;height:13px}#edit-toolbar{list-style:none;margin:0;padding:0;text-align:right}#edit-toolbar>li{margin:0 4px;cursor:pointer;display:inline-block;content:'';height:21px;width:21px;opacity:.5;background:url(../img/icons-infowindow-002.svg)}#edit-toolbar>li:hover{opacity:.75}#edit-toolbar>li.trash-marker{background-position:-42px 0}#edit-toolbar>li.edit-info{background:url(../img/icons-app-000.svg);background-position:21px 21px}#lat-lng-wrap input[type=text].latitude,#lat-lng-wrap input[type=text].longitude,#side-sortables #lat-lng-wrap input[type=text].latitude,#side-sortables #lat-lng-wrap input[type=text].longitude{width:100px;float:left}.lat-lng-wrap{float:left;margin:0 0 10px;clear:none}.lng-wrap{margin-bottom:0}.lat-lng-wrap>span,.lat-lng-wrap>input{float:left}.lat-lng-wrap>span{margin:8px 5px 0 0;width:80px;font-style:italic}.lat-lng-change-message{float:left;clear:both;margin:10px 0 0;width:100%}.lat-lng-change-message>p{float:left}.lat-lng-update-btn{float:right;margin:7px 0 0!important}#google_maps_metabox .search-autocomplete{width:78%;margin-right:10px}#google_maps_metabox .autocomplete-wrap p{font-style:italic;margin-bottom:5px!important}#google_maps_metabox a.drop-marker{font-style:normal}#save-toolbar{margin:0;padding:0;float:left}#save-toolbar>li{display:inline-block;margin:0;padding:0}#save-toolbar>li:first-child{margin:0 5px 0 0}#save-toolbar>li .google-btn{width:75px}a.marker-edit-link{background:url(../img/marker-btn.png) no-repeat 0 0 transparent;width:20px;height:20px;opacity:.5;margin:4px 0 0;display:block;float:right}#save-toolbar>li .marker-edit-link{opacity:.75}#infobubble-content .edit-place-title{width:290px}#infobubble-content .edit-place-description{display:block;font-size:12px;width:100%;min-height:100px}.marker-icon-row{margin-bottom:10px}.marker-icon-row,.save-marker-icon{display:none}.marker-icon-row .icon,.marker-row .marker-item{width:31%;float:left;font-size:14px;margin-bottom:10px;padding:4px;border-radius:5px}.icon-inner{position:relative;top:-8px}.marker-icon-row .icon span{font-size:32px;margin-right:8px;position:relative;top:8px}.marker-icon-row .icon:hover,.marker-row .marker-item:hover,.marker-item-selected{cursor:pointer;background:#DDEAEC}.marker-label{z-index:99;position:absolute;display:block;margin-top:-50px;margin-left:-25px;width:50px;height:50px;font-size:28px;text-align:center;color:#FFF;white-space:nowrap;line-height:1}.marker-icon-color-wrap,.marker-label-color-wrap{display:none}.marker-label-color-wrap{margin-bottom:60px}.marker-color-picker-wrap{float:left}#TB_ajaxContent p.color-desc{float:left;margin:0 0 0 10px;padding-top:3px;font-style:italic}.marker-row .marker-item{float:left;width:31%}.marker-svg{float:left;margin-right:12px;height:50px}.marker-svg .default-marker{margin:8px 0 0 10px}.marker-description{line-height:50px}.save-marker-icon{background:#F1F1F1;padding:10px;position:absolute;bottom:0;left:0;width:100%;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;border-top:1px solid #DFDFDF}.save-marker-icon .save-text{float:left;font-style:italic;margin:0}.save-marker-icon .button{float:right}.radius-label{position:relative;top:35px;color:#7dbee8}.google-btn{-webkit-border-radius:2px;border-radius:2px;cursor:default;font-weight:300;font-size:13px;text-align:center;white-space:nowrap;height:27px;line-height:27px;min-width:54px;outline:0;padding:0 8px}.google-btn-blue{-webkit-box-shadow:none;box-shadow:none;background-color:#4D90FE;background-image:-webkit-linear-gradient(top,#4D90FE,#4787ED);background-image:linear-gradient(top,#4d90fe,#4787ed);border:1px solid #3079ED;color:#FFF}.google-btn-blue:hover{-webkit-box-shadow:none;box-shadow:none;background-color:#357AE8;background-image:-webkit-linear-gradient(top,#4D90FE,#357AE8);background-image:linear-gradient(top,#4d90fe,#357ae8);border:1px solid #2F5BB7;border-bottom-color:#2F5BB7}.google-btn-blue:active,.google-btn-blue:focus{-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.3);box-shadow:inset 0 1px 2px rgba(0,0,0,.3);background:#357AE8;border:1px solid #2F5BB7;border-top:1px solid #2F5BB7}.google-btn-default{-webkit-box-shadow:none;box-shadow:none;background-color:#F5F5F5;background-image:-webkit-linear-gradient(top,#F5F5F5,#F1F1F1);background-image:linear-gradient(top,#f5f5f5,#f1f1f1);color:#333;border:1px solid #DCDCDC;border:1px solid rgba(0,0,0,.1)}.google-btn-default:hover{-webkit-box-shadow:none;box-shadow:none;background-color:#F8F8F8;background-image:-webkit-linear-gradient(top,#F8F8F8,#F1F1F1);background-image:linear-gradient(top,#f8f8f8,#f1f1f1);border:1px solid #C6C6C6;color:#111}.google-btn-default:active{-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);background:#F8F8F8;color:#111}.infowindow-toolbar{display:block;margin:0;padding:8px 0 5px}.add-marker{text-decoration:none}
1
+ .clear:before,.clear:after{content:" ";display:table}.clear:after{clear:both}.hover-transition,.marker-icon-row .icon,.marker-row .marker-item{-webkit-transition:.2s all linear;-moz-transition:.2s all linear;-o-transition:.2s all linear;transition:.2s all linear}.box-sizing{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}#gmb_markers_group_repeat{}.cmb_id_gmb_theme_json{display:none}.marker-info-wrapper{background-color:#F1F1F1;margin:8px 0 4px;padding:12px;font-size:13px}.marker-info-wrapper>div{margin:0 0 5px;padding:0}.marker-info-wrapper>div.rating-wrap{margin:0;padding:0}.repeatable-grouping .cmb-nested-table td{padding-top:3px}.repeatable-grouping .cmb-nested-table td pre{margin:0}.repeatable-grouping .cmb-nested-table td pre textarea{height:50px}.new-window{background:url(../img/new-window-icon.png) no-repeat right 3px transparent;padding-right:16px}.shortcode-wrap{margin:1px 14px 12px 11px}.shortcode-wrap label{margin:0 0 3px;display:block;cursor:default}.shortcode-input{margin:0;width:100%}.cmb_metabox_description{display:block;margin-top:5px}.cmb_id_gmb_places_search_multicheckbox ul{overflow:hidden}.cmb_id_gmb_places_search_multicheckbox li{float:left;width:33%}.cmb_id_gmb_places_search_multicheckbox .cmb_metabox_description{margin-top:10px;margin-right:2px}#google-map-wrap{position:relative}.autocomplete-wrap{background:url(../img/powered-by-google-on-white.png) no-repeat right 8px rgba(0,0,0,0)}.repeatable-group .shift-rows{display:none}.wpgp-message{background-color:#FFF;border-left:4px solid #7AD03A;-webkit-box-shadow:1px 1px 1px 1px rgba(0,0,0,.15);box-shadow:1px 1px 1px 1px rgba(0,0,0,.15);box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;padding:1px 12px;display:none}.wpgp-message.warning-message{border-left:4px solid #d40000;margin:20px 0 0}.wpgp-message p,.form-table td .wpgp-message p{margin:.5em 0;padding:2px}.places-change-message{margin-bottom:15px;margin-right:2px}.places-change-message p{float:left}.places-change-message .button{float:right;margin-top:5px}#google-map-wrap .wpgp-message{margin-top:20px}#map{width:100%;margin:0 auto}.places-loading{background:url(../img/spinner.gif) no-repeat center right transparent;font-style:italic;position:absolute;top:-34px;right:31px;padding:0 25px 0 0;display:none}.cmb_id_gmb_map_type td{padding-bottom:0}.cmb_id_gmb_map_type .cmb_option{margin:5px 0 10px}.cmb_id_gmb_geocoder td{padding-bottom:3px}.cmb_id_gmb_search_radius,.cmb_id_gmb_places_search_multicheckbox{display:none}#google_maps_details_options tr{display:none}#google_maps_details_options tr.cmb_id_gmb_show_poi{display:table-row}.snazzy-link{font-size:10px;text-transform:uppercase;font-style:normal;display:inline-block}.width_unit_label,.width_radio,.map-width,.map-height,.size-label{float:left!important}#width_wrap{margin:0 0 10px}#size_labels_wrap{margin:8px 0 0 10px;padding:0;float:left}#width_unit_percent{margin:0 3px 0 0}#width_unit_px{margin:0 3px 0 8px}.inner-sidebar table.cmb_metabox label.size-label,#side-sortables table.cmb_metabox label.size-label,label.size-label{font-weight:400;font-style:italic}.inner-sidebar table.cmb_metabox label.size-label,#side-sortables table.cmb_metabox label.size-label,.form-table label.size-label{padding:9px 0 0;width:50px;font-weight:400}.map-width,.map-height{width:55px!important}#google_maps_preview_metabox .gm-style-iw,#google_maps_preview_metabox .gm-style-iw>div{overflow:visible!important}#google_maps_preview_metabox .gm-style-iw>div>div{overflow:visible!important}#infobubble-content{overflow:hidden!important}#infobubble-content.loading{background:url(../../../includes/assets/img/loading.GIF) no-repeat center center #FFF}#google-map-wrap div#infobubble-content>div{white-space:normal}#infobubble-content p{font-size:12px;margin:0 0 7px;color:#2C2C2C}#infobubble-content{padding:0;margin:3px -20px 0 0;min-width:314px;min-height:80px;height:100%;overflow:hidden;box-sizing:border-box;cursor:default}#infobubble-content .place-title{border:1px solid #FFF;font-family:Roboto,Arial,sans-serif;font-size:16px;line-height:21px;font-weight:700;min-height:21px;white-space:normal;padding-right:20px}#infobubble-content .place-description{white-space:normal}.marker-confirm-place{margin:0 8px 4px 0;display:inline-block}.marker-confirm-place:hover{cursor:pointer}#infobubble-content .rating-wrap{overflow:hidden}#infobubble-content .numeric-rating{font-size:16px;color:#DD4B39;font-weight:400;float:left;margin:0 5px 0 0}#infobubble-content .star-rating-wrap{background:url(../../../includes/assets/img/review_stars.png) no-repeat 0 0 transparent;height:13px;width:67px;float:left;margin:5px 0 0}#infobubble-content .star-rating-size{background:url(../../../includes/assets/img/review_stars.png) no-repeat 0 -13px transparent;height:13px}#edit-toolbar{list-style:none;margin:0;padding:0;text-align:right}#edit-toolbar>li{margin:0 4px;cursor:pointer;display:inline-block;content:'';height:21px;width:21px;opacity:.5;background:url(../img/icons-infowindow-002.svg)}#edit-toolbar>li:hover{opacity:.75}#edit-toolbar>li.trash-marker{background-position:-42px 0}#edit-toolbar>li.edit-info{background:url(../img/icons-app-000.svg);background-position:21px 21px}#lat-lng-wrap input[type=text].latitude,#lat-lng-wrap input[type=text].longitude,#side-sortables #lat-lng-wrap input[type=text].latitude,#side-sortables #lat-lng-wrap input[type=text].longitude{width:100px;float:left}.lat-lng-wrap{float:left;margin:0 0 10px;clear:none}.lng-wrap{margin-bottom:0}.lat-lng-wrap>span,.lat-lng-wrap>input{float:left}.lat-lng-wrap>span{margin:8px 5px 0 0;width:80px;font-style:italic}.lat-lng-change-message{float:left;clear:both;margin:10px 0 0;width:100%}.lat-lng-change-message>p{float:left}.lat-lng-update-btn{float:right;margin:7px 0 0!important}#google_maps_metabox .search-autocomplete{width:78%;margin-right:10px}#google_maps_metabox .autocomplete-wrap p{font-style:italic;margin-bottom:5px!important}#google_maps_metabox a.drop-marker{font-style:normal}#save-toolbar{margin:0;padding:0;float:left}#save-toolbar>li{display:inline-block;margin:0;padding:0}#save-toolbar>li:first-child{margin:0 5px 0 0}#save-toolbar>li .google-btn{width:75px}a.marker-edit-link{background:url(../img/marker-btn.png) no-repeat 0 0 transparent;width:20px;height:20px;opacity:.5;margin:4px 0 0;display:block;float:right}#save-toolbar>li .marker-edit-link{opacity:.75}#infobubble-content .edit-place-title{width:290px;margin:0 0 10px}#infobubble-content .edit-place-description{display:block;font-size:12px;width:100%;min-height:100px}.marker-icon-row{margin-bottom:10px}.marker-icon-row,.save-marker-icon{display:none}.marker-icon-row .icon,.marker-row .marker-item{width:31%;float:left;font-size:14px;margin-bottom:10px;padding:4px;border-radius:5px}.icon-inner{position:relative;top:-8px}.marker-icon-row .icon span{font-size:32px;margin-right:8px;position:relative;top:8px}.marker-icon-row .icon:hover,.marker-row .marker-item:hover,.marker-item-selected{cursor:pointer;background:#DDEAEC}.marker-label{z-index:99;position:absolute;display:block;margin-top:-50px;margin-left:-25px;width:50px;height:50px;font-size:28px;text-align:center;color:#FFF;white-space:nowrap;line-height:1}.marker-icon-color-wrap,.marker-label-color-wrap{display:none}.marker-label-color-wrap{margin-bottom:60px}.marker-color-picker-wrap{float:left}#TB_ajaxContent p.color-desc{float:left;margin:0 0 0 10px;padding-top:3px;font-style:italic}.marker-row .marker-item{float:left;width:31%}.marker-svg{float:left;margin-right:12px;height:50px}.marker-svg .default-marker{margin:8px 0 0 10px}.marker-description{line-height:50px}.save-marker-icon{background:#F1F1F1;padding:10px;position:absolute;bottom:0;left:0;width:100%;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;border-top:1px solid #DFDFDF}.save-marker-icon .save-text{float:left;font-style:italic;margin:0}.save-marker-icon .button{float:right}.radius-label{position:relative;top:35px;color:#7dbee8}.google-btn{-webkit-border-radius:2px;border-radius:2px;cursor:default;font-weight:300;font-size:13px;text-align:center;white-space:nowrap;height:27px;line-height:27px;min-width:54px;outline:0;padding:0 8px}.google-btn-blue{-webkit-box-shadow:none;box-shadow:none;background-color:#4D90FE;background-image:-webkit-linear-gradient(top,#4D90FE,#4787ED);background-image:linear-gradient(top,#4d90fe,#4787ed);border:1px solid #3079ED;color:#FFF}.google-btn-blue:hover{-webkit-box-shadow:none;box-shadow:none;background-color:#357AE8;background-image:-webkit-linear-gradient(top,#4D90FE,#357AE8);background-image:linear-gradient(top,#4d90fe,#357ae8);border:1px solid #2F5BB7;border-bottom-color:#2F5BB7}.google-btn-blue:active,.google-btn-blue:focus{-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.3);box-shadow:inset 0 1px 2px rgba(0,0,0,.3);background:#357AE8;border:1px solid #2F5BB7;border-top:1px solid #2F5BB7}.google-btn-default{-webkit-box-shadow:none;box-shadow:none;background-color:#F5F5F5;background-image:-webkit-linear-gradient(top,#F5F5F5,#F1F1F1);background-image:linear-gradient(top,#f5f5f5,#f1f1f1);color:#333;border:1px solid #DCDCDC;border:1px solid rgba(0,0,0,.1)}.google-btn-default:hover{-webkit-box-shadow:none;box-shadow:none;background-color:#F8F8F8;background-image:-webkit-linear-gradient(top,#F8F8F8,#F1F1F1);background-image:linear-gradient(top,#f8f8f8,#f1f1f1);border:1px solid #C6C6C6;color:#111}.google-btn-default:active{-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);background:#F8F8F8;color:#111}.infowindow-toolbar{display:block;margin:0;padding:8px 0 10px}.add-marker{text-decoration:none}
admin/assets/img/icons-infowindow-002.svg CHANGED
@@ -1,111 +1,111 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
3
- <!ENTITY st0 "fill:#4D90FE;">
4
- <!ENTITY st1 "fill:#4387FD;fill-opacity:0;">
5
- <!ENTITY st2 "enable-background:new ;">
6
- <!ENTITY st3 "opacity:0.5;fill:none;stroke:#000000;stroke-miterlimit:10;">
7
- <!ENTITY st4 "opacity:0.55;enable-background:new ;">
8
- <!ENTITY st5 "stroke:#FFFFFF;stroke-width:0.35;stroke-miterlimit:10;">
9
- <!ENTITY st6 "fill:#FFFFFF;stroke:#000000;stroke-width:0.8;stroke-miterlimit:10;">
10
- <!ENTITY st7 "opacity:0.45;enable-background:new ;">
11
- <!ENTITY st8 "fill:none;stroke:#000000;stroke-width:1.4;stroke-miterlimit:10;">
12
- <!ENTITY st9 "opacity:0.5;">
13
- <!ENTITY st10 "fill:none;stroke:#000000;stroke-miterlimit:10;">
14
- <!ENTITY st11 "fill:#FFD040;">
15
- <!ENTITY st12 "fill:#FFFFFF;">
16
- <!ENTITY st13 "fill:none;">
17
- <!ENTITY st14 "opacity:0.5;fill:#FFFFFF;enable-background:new;">
18
- <!ENTITY st15 "fill:#DD4B39;">
19
- ]>
20
- <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="84px"
21
- height="63px" viewBox="0 0 84 63" style="enable-background:new 0 0 84 63;" xml:space="preserve">
22
- <g id="Infowindow">
23
- <g id="Length">
24
- <polygon points="58,31 55,28 55,30 49,30 49,28 46,31 49,34 49,32 55,32 55,34 "/>
25
- <rect x="42" y="21" style="&st13;" width="21" height="21"/>
26
- </g>
27
- <g id="Perimeter">
28
- <path d="M35,27v8h-8v-8H35 M37,25H25v12h12V25L37,25z"/>
29
- <rect x="21" y="21" style="&st13;" width="21" height="21"/>
30
- </g>
31
- <g id="Area">
32
- <rect y="21" style="&st13;" width="21" height="21"/>
33
- <g>
34
- <polygon points="6.646,25 4,27.646 4,28.354 7.354,25 "/>
35
- </g>
36
- <g>
37
- <polygon points="9.646,25 4,30.646 4,31.354 10.354,25 "/>
38
- </g>
39
- <g>
40
- <polygon points="12.646,25 4,33.646 4,34.354 13.354,25 "/>
41
- </g>
42
- <g>
43
- <polygon points="15.646,25 4,36.646 4,37 4.354,37 16,25.354 16,25 "/>
44
- </g>
45
- <g>
46
- <polygon points="6.646,37 7.354,37 16,28.354 16,27.646 "/>
47
- </g>
48
- <g>
49
- <polygon points="9.646,37 10.354,37 16,31.354 16,30.646 "/>
50
- </g>
51
- <g>
52
- <polygon points="12.646,37 13.354,37 16,34.354 16,33.646 "/>
53
- </g>
54
- </g>
55
- <g id="Delete">
56
- <rect x="42" style="&st13;" width="21" height="21"/>
57
- <polygon points="53.997,4 53.997,3 50.003,3 50.003,4 46,4 46,6 58,6 58,4 "/>
58
- <rect x="47" y="7" width="10" height="11"/>
59
- </g>
60
- <g id="Direections">
61
- <rect x="21" style="&st13;" width="21" height="21"/>
62
- <path style="&st7;" d="M27,4l3.805,3.853C32.227,9.275,32.801,11,32.801,13v4H30.1v-4c-0.016-1.158-0.365-2.311-1.248-3.195L25,6
63
- L27,4z"/>
64
- <path d="M32.197,7.853l1.816-1.84L32,4h6v6l-2.012-2.012L34.15,9.805C33.266,10.69,32.916,11.842,32.9,13v4H30v-4
65
- C30,11,30.773,9.275,32.197,7.853z"/>
66
- </g>
67
- <g id="Settings">
68
- <rect style="&st13;" width="21" height="21"/>
69
- <path d="M16.895,11.641C16.96,11.27,17,10.89,17,10.5s-0.04-0.77-0.105-1.14l1.535-1.129l0.182-0.683l-1.5-2.598l-0.684-0.184
70
- l-1.738,0.762c-0.58-0.49-1.25-0.875-1.979-1.138L12.5,2.5L12,2H9L8.5,2.499L8.29,4.395C7.562,4.658,6.896,5.043,6.314,5.531
71
- L4.57,4.768L3.889,4.951l-1.5,2.598l0.184,0.684l1.535,1.129C4.04,9.731,4,10.111,4,10.5s0.04,0.77,0.105,1.139L2.57,12.768
72
- l-0.182,0.685l1.5,2.598l0.682,0.185l1.744-0.764c0.58,0.487,1.248,0.872,1.975,1.137l0.21,1.896L9,19h3l0.5-0.5l0.21-1.893
73
- c0.729-0.262,1.397-0.647,1.979-1.137l1.737,0.762l0.685-0.185l1.498-2.598l-0.18-0.683L16.895,11.641z M14.15,10.5
74
- c0,2.016-1.635,3.65-3.65,3.65s-3.65-1.635-3.65-3.65c0-2.015,1.635-3.65,3.65-3.65S14.15,8.484,14.15,10.5z"/>
75
- </g>
76
- </g>
77
- <g id="Table">
78
- </g>
79
- <g id="Toolbar">
80
- </g>
81
- <g id="Legend_panel">
82
- </g>
83
- <g id="App">
84
- <g id="Add_image">
85
- <rect x="63" y="21" style="&st13;" width="21" height="21"/>
86
- <polygon style="&st12;" points="72,27 74,27 74,30 77,30 77,32 74,32 74,35 72,35 72,32 69,32 69,30 72,30 "/>
87
- </g>
88
- <g id="Delete_small_white">
89
- <rect x="63" style="&st13;" width="21" height="21"/>
90
- <polygon style="&st12;" points="74.997,5 74.997,4 71.003,4 71.003,5 68,5 68,7 78,7 78,5 "/>
91
- <rect x="69" y="8" style="&st12;" width="8" height="8"/>
92
- </g>
93
- <g id="Next_arrow_1_">
94
- <rect x="21" y="42" style="&st13;" width="21" height="21"/>
95
- <polygon style="&st12;" points="30.277,57 35,53.048 30.287,49 29,50.408 32.053,53.029 29.01,55.576 "/>
96
- </g>
97
- <g id="Previous_arrow_1_">
98
- <rect y="42" style="&st13;" width="21" height="21"/>
99
- <polygon style="&st12;" points="12.99,55.576 9.947,53.029 13,50.408 11.713,49 7,53.048 11.723,57 "/>
100
- </g>
101
- <g>
102
- <rect x="42" y="42" style="&st13;" width="21" height="21"/>
103
- <g>
104
- <path d="M46.5,60c-1,0-1.5-0.5-1.5-1.5v-9c0-1,0.5-1.5,1.5-1.5H48c0,0,2-2,3-2h4c1,0,3,2,3,2h1.5c1,0,1.5,0.5,1.5,1.5v9
105
- c0,1-0.5,1.5-1.5,1.5H46.5z"/>
106
- <path style="&st12;" d="M53,50c-2.209,0-4,1.791-4,4s1.791,4,4,4s4-1.791,4-4S55.209,50,53,50z M53,56.375
107
- c-1.312,0-2.375-1.063-2.375-2.375s1.063-2.375,2.375-2.375s2.375,1.063,2.375,2.375S54.312,56.375,53,56.375z"/>
108
- </g>
109
- </g>
110
- </g>
111
- </svg>
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
3
+ <!ENTITY st0 "fill:#4D90FE;">
4
+ <!ENTITY st1 "fill:#4387FD;fill-opacity:0;">
5
+ <!ENTITY st2 "enable-background:new ;">
6
+ <!ENTITY st3 "opacity:0.5;fill:none;stroke:#000000;stroke-miterlimit:10;">
7
+ <!ENTITY st4 "opacity:0.55;enable-background:new ;">
8
+ <!ENTITY st5 "stroke:#FFFFFF;stroke-width:0.35;stroke-miterlimit:10;">
9
+ <!ENTITY st6 "fill:#FFFFFF;stroke:#000000;stroke-width:0.8;stroke-miterlimit:10;">
10
+ <!ENTITY st7 "opacity:0.45;enable-background:new ;">
11
+ <!ENTITY st8 "fill:none;stroke:#000000;stroke-width:1.4;stroke-miterlimit:10;">
12
+ <!ENTITY st9 "opacity:0.5;">
13
+ <!ENTITY st10 "fill:none;stroke:#000000;stroke-miterlimit:10;">
14
+ <!ENTITY st11 "fill:#FFD040;">
15
+ <!ENTITY st12 "fill:#FFFFFF;">
16
+ <!ENTITY st13 "fill:none;">
17
+ <!ENTITY st14 "opacity:0.5;fill:#FFFFFF;enable-background:new;">
18
+ <!ENTITY st15 "fill:#DD4B39;">
19
+ ]>
20
+ <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="84px"
21
+ height="63px" viewBox="0 0 84 63" style="enable-background:new 0 0 84 63;" xml:space="preserve">
22
+ <g id="Infowindow">
23
+ <g id="Length">
24
+ <polygon points="58,31 55,28 55,30 49,30 49,28 46,31 49,34 49,32 55,32 55,34 "/>
25
+ <rect x="42" y="21" style="&st13;" width="21" height="21"/>
26
+ </g>
27
+ <g id="Perimeter">
28
+ <path d="M35,27v8h-8v-8H35 M37,25H25v12h12V25L37,25z"/>
29
+ <rect x="21" y="21" style="&st13;" width="21" height="21"/>
30
+ </g>
31
+ <g id="Area">
32
+ <rect y="21" style="&st13;" width="21" height="21"/>
33
+ <g>
34
+ <polygon points="6.646,25 4,27.646 4,28.354 7.354,25 "/>
35
+ </g>
36
+ <g>
37
+ <polygon points="9.646,25 4,30.646 4,31.354 10.354,25 "/>
38
+ </g>
39
+ <g>
40
+ <polygon points="12.646,25 4,33.646 4,34.354 13.354,25 "/>
41
+ </g>
42
+ <g>
43
+ <polygon points="15.646,25 4,36.646 4,37 4.354,37 16,25.354 16,25 "/>
44
+ </g>
45
+ <g>
46
+ <polygon points="6.646,37 7.354,37 16,28.354 16,27.646 "/>
47
+ </g>
48
+ <g>
49
+ <polygon points="9.646,37 10.354,37 16,31.354 16,30.646 "/>
50
+ </g>
51
+ <g>
52
+ <polygon points="12.646,37 13.354,37 16,34.354 16,33.646 "/>
53
+ </g>
54
+ </g>
55
+ <g id="Delete">
56
+ <rect x="42" style="&st13;" width="21" height="21"/>
57
+ <polygon points="53.997,4 53.997,3 50.003,3 50.003,4 46,4 46,6 58,6 58,4 "/>
58
+ <rect x="47" y="7" width="10" height="11"/>
59
+ </g>
60
+ <g id="Direections">
61
+ <rect x="21" style="&st13;" width="21" height="21"/>
62
+ <path style="&st7;" d="M27,4l3.805,3.853C32.227,9.275,32.801,11,32.801,13v4H30.1v-4c-0.016-1.158-0.365-2.311-1.248-3.195L25,6
63
+ L27,4z"/>
64
+ <path d="M32.197,7.853l1.816-1.84L32,4h6v6l-2.012-2.012L34.15,9.805C33.266,10.69,32.916,11.842,32.9,13v4H30v-4
65
+ C30,11,30.773,9.275,32.197,7.853z"/>
66
+ </g>
67
+ <g id="Settings">
68
+ <rect style="&st13;" width="21" height="21"/>
69
+ <path d="M16.895,11.641C16.96,11.27,17,10.89,17,10.5s-0.04-0.77-0.105-1.14l1.535-1.129l0.182-0.683l-1.5-2.598l-0.684-0.184
70
+ l-1.738,0.762c-0.58-0.49-1.25-0.875-1.979-1.138L12.5,2.5L12,2H9L8.5,2.499L8.29,4.395C7.562,4.658,6.896,5.043,6.314,5.531
71
+ L4.57,4.768L3.889,4.951l-1.5,2.598l0.184,0.684l1.535,1.129C4.04,9.731,4,10.111,4,10.5s0.04,0.77,0.105,1.139L2.57,12.768
72
+ l-0.182,0.685l1.5,2.598l0.682,0.185l1.744-0.764c0.58,0.487,1.248,0.872,1.975,1.137l0.21,1.896L9,19h3l0.5-0.5l0.21-1.893
73
+ c0.729-0.262,1.397-0.647,1.979-1.137l1.737,0.762l0.685-0.185l1.498-2.598l-0.18-0.683L16.895,11.641z M14.15,10.5
74
+ c0,2.016-1.635,3.65-3.65,3.65s-3.65-1.635-3.65-3.65c0-2.015,1.635-3.65,3.65-3.65S14.15,8.484,14.15,10.5z"/>
75
+ </g>
76
+ </g>
77
+ <g id="Table">
78
+ </g>
79
+ <g id="Toolbar">
80
+ </g>
81
+ <g id="Legend_panel">
82
+ </g>
83
+ <g id="App">
84
+ <g id="Add_image">
85
+ <rect x="63" y="21" style="&st13;" width="21" height="21"/>
86
+ <polygon style="&st12;" points="72,27 74,27 74,30 77,30 77,32 74,32 74,35 72,35 72,32 69,32 69,30 72,30 "/>
87
+ </g>
88
+ <g id="Delete_small_white">
89
+ <rect x="63" style="&st13;" width="21" height="21"/>
90
+ <polygon style="&st12;" points="74.997,5 74.997,4 71.003,4 71.003,5 68,5 68,7 78,7 78,5 "/>
91
+ <rect x="69" y="8" style="&st12;" width="8" height="8"/>
92
+ </g>
93
+ <g id="Next_arrow_1_">
94
+ <rect x="21" y="42" style="&st13;" width="21" height="21"/>
95
+ <polygon style="&st12;" points="30.277,57 35,53.048 30.287,49 29,50.408 32.053,53.029 29.01,55.576 "/>
96
+ </g>
97
+ <g id="Previous_arrow_1_">
98
+ <rect y="42" style="&st13;" width="21" height="21"/>
99
+ <polygon style="&st12;" points="12.99,55.576 9.947,53.029 13,50.408 11.713,49 7,53.048 11.723,57 "/>
100
+ </g>
101
+ <g>
102
+ <rect x="42" y="42" style="&st13;" width="21" height="21"/>
103
+ <g>
104
+ <path d="M46.5,60c-1,0-1.5-0.5-1.5-1.5v-9c0-1,0.5-1.5,1.5-1.5H48c0,0,2-2,3-2h4c1,0,3,2,3,2h1.5c1,0,1.5,0.5,1.5,1.5v9
105
+ c0,1-0.5,1.5-1.5,1.5H46.5z"/>
106
+ <path style="&st12;" d="M53,50c-2.209,0-4,1.791-4,4s1.791,4,4,4s4-1.791,4-4S55.209,50,53,50z M53,56.375
107
+ c-1.312,0-2.375-1.063-2.375-2.375s1.063-2.375,2.375-2.375s2.375,1.063,2.375,2.375S54.312,56.375,53,56.375z"/>
108
+ </g>
109
+ </g>
110
+ </g>
111
+ </svg>
admin/assets/js/admin-google-map.js ADDED
@@ -0,0 +1,1677 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Google Maps CPT Handling
3
+ *
4
+ * Nice Demos:
5
+ * https://developers.google.com/maps/documentation/javascript/examples/geocoding-simple
6
+ *
7
+ */
8
+
9
+
10
+ (function ( $ ) {
11
+ "use strict";
12
+
13
+ /**
14
+ * Window Load functions
15
+ */
16
+ $( window ).load( function () {
17
+
18
+ toggle_metabox_fields();
19
+
20
+ //tooltips
21
+ initialize_tooltips();
22
+
23
+ //Map type Metabox on load
24
+ initialize_map( $( '#map' ) );
25
+
26
+ //Latitude on Change
27
+ $( '#gmb_lat_lng-latitude' ).on( 'change', function () {
28
+ lat_lng_field_change( map );
29
+ } );
30
+ //Longitude on Change
31
+ $( '#gmb_lat_lng-longitude' ).on( 'change', function () {
32
+ lat_lng_field_change( map );
33
+ } );
34
+
35
+ //click to add marker
36
+ $( '.drop-marker' ).on( 'click', function ( e ) {
37
+ e.preventDefault();
38
+ if ( $( this ).hasClass( 'active' ) ) {
39
+ $( this ).text( 'Drop a Marker' ).removeClass( 'active' );
40
+ map.setOptions( {draggableCursor: null} ); //reset cursor
41
+ } else {
42
+ $( this ).text( 'Click on the Map' ).addClass( 'active' );
43
+ map.setOptions( {draggableCursor: 'crosshair'} );
44
+ var dropped_marker_event = google.maps.event.addListener( map, 'click', function ( event ) {
45
+ drop_marker( event.latLng, dropped_marker_event );
46
+ } );
47
+ }
48
+ } );
49
+
50
+
51
+ //Radius Fields
52
+ var current_radius;
53
+
54
+ //Search Radius Circle
55
+ $( '#gmb_search_radius' ).on( 'focus', function () {
56
+ current_radius = $( this ).val();
57
+ calc_radius( map, parseInt( $( this ).val() ) );
58
+ } ).focusout( function () {
59
+ if ( current_radius !== $( this ).val() ) {
60
+ perform_places_search();
61
+ }
62
+ radius_circle.setMap( null ); //removes circle on focus out
63
+ radius_marker.setMap( null ); //removes circle on focus out
64
+ } );
65
+
66
+ //Places Type Field
67
+ $( '[name^="gmb_places_search_multicheckbox"]' ).on( 'change', function () {
68
+ //Show message if not already displayed
69
+ if ( $( '.places-change-message' ).length === 0 ) {
70
+ $( '.cmb_id_gmb_places_search_multicheckbox ul' ).prepend( '<div class="wpgp-message places-change-message clear"><p>Place selections have changed.</p><a href="#" class="button update-places-map">Update Map</a></div>' );
71
+ $( '.places-change-message' ).slideDown();
72
+ }
73
+
74
+ } );
75
+
76
+ //Places Update Map Button
77
+ $( document ).on( 'click', '.update-places-map', function ( e ) {
78
+ e.preventDefault();
79
+ scroll_to_field( "#google_maps_preview_metabox" );
80
+ perform_places_search();
81
+ $( this ).parent().fadeOut( function () {
82
+ $( this ).remove();
83
+ } );
84
+ } );
85
+
86
+ //Update lat lng message
87
+ $( '.lat-lng-update-btn' ).on( 'click', function ( e ) {
88
+ e.preventDefault();
89
+ $( '.lat-lng-change-message' ).slideUp();
90
+ $( '#gmb_lat_lng-latitude' ).val( $( this ).attr( 'data-lat' ) );
91
+ $( '#gmb_lat_lng-longitude' ).val( $( this ).attr( 'data-lng' ) );
92
+ } );
93
+
94
+
95
+ //Add New Marker
96
+ $( document ).on( 'click', '.add-marker', function ( e ) {
97
+
98
+ e.preventDefault();
99
+ hover_circle.setVisible( false );
100
+
101
+ //update marker with set marker
102
+ var location_marker = new google.maps.Marker( {
103
+ position : tentative_location_marker.getPosition(),
104
+ map : map,
105
+ icon : gmb_data.plugin_url + "/public/assets/img/default-marker.png",
106
+ zIndex : google.maps.Marker.MAX_ZINDEX + 1,
107
+ optimized: false
108
+ } );
109
+
110
+ //hide tentative green marker
111
+ tentative_location_marker.setVisible( false );
112
+
113
+ //get current number of repeatable rows ie markers
114
+ var index = get_marker_index();
115
+
116
+ var reference = $( this ).data( 'reference' );
117
+
118
+ //add data to fields
119
+ $( '#gmb_markers_group_' + index + '_title' ).val( $( this ).data( 'title' ) );
120
+ $( '#gmb_markers_group_' + index + '_lat' ).val( $( this ).data( 'lat' ) );
121
+ $( '#gmb_markers_group_' + index + '_lng' ).val( $( this ).data( 'lng' ) );
122
+ $( '#gmb_markers_group_' + index + '_reference' ).val( reference );
123
+
124
+ get_editable_info_window( index, location_marker );
125
+
126
+ //location clicked
127
+ google.maps.event.addListener( location_marker, 'click', function () {
128
+ get_info_window_content( index, location_marker );
129
+ } );
130
+
131
+ } );
132
+
133
+ //Map Marker Set
134
+ set_map_marker_icon();
135
+
136
+ //Map Type
137
+ $( '#gmb_type' ).change( function () {
138
+ set_map_type( true );
139
+ } );
140
+ //Map Theme
141
+ $( '#gmb_theme' ).change( function () {
142
+ set_map_theme( true );
143
+ } );
144
+ //street view
145
+ $( '#gmb_street_view' ).change( function () {
146
+ set_street_view();
147
+ } );
148
+ //Pan
149
+ $( '#gmb_pan' ).change( function () {
150
+ set_pan_control();
151
+ } );
152
+ //Draggable
153
+ $( '#gmb_draggable' ).change( function () {
154
+ set_draggable();
155
+ } );
156
+ //Double Click Zoom
157
+ $( '#gmb_double_click' ).change( function () {
158
+ set_double_click_zoom();
159
+ } );
160
+ //Double Click Zoom
161
+ $( '#gmb_wheel_zoom' ).change( function () {
162
+ set_mouse_wheel_scroll();
163
+ } );
164
+ //Map Type Control
165
+ $( '#gmb_map_type_control' ).change( function () {
166
+ set_map_type_control();
167
+ } );
168
+ //Zoom Control
169
+ $( '#gmb_zoom_control' ).change( function () {
170
+ set_map_zoom_control();
171
+ } );
172
+ //Width/Height
173
+ $( "#gmb_width_height-width, #gmb_width_height-height" ).keyup( function () {
174
+ delay( function () {
175
+ set_map_size();
176
+ }, 500 );
177
+ } );
178
+ $( 'input[name="gmb_width_height[map_width_unit]"]' ).change( function () {
179
+ set_map_size();
180
+ } );
181
+
182
+ } ); //End Window Load
183
+
184
+
185
+ var map;
186
+ var places_service;
187
+ var lat_lng;
188
+ var zoom;
189
+ var lat_field;
190
+ var lng_field;
191
+ var radius_circle;
192
+ var radius_marker;
193
+ var place;
194
+ var autocomplete;
195
+ var info_bubble;
196
+ var info_bubble_array = [];
197
+ var tentative_location_marker;
198
+ var location_marker;
199
+ var location_marker_array = [];
200
+ var search_markers = [];
201
+ var hover_circle;
202
+ var initial_location;
203
+ var delay = (function () {
204
+ var timer = 0;
205
+ return function ( callback, ms ) {
206
+ clearTimeout( timer );
207
+ timer = setTimeout( callback, ms );
208
+ };
209
+ })();
210
+
211
+ /**
212
+ * Place marker on Map on Click
213
+ *
214
+ * @param lat_lng
215
+ * @param event
216
+ */
217
+ function drop_marker( lat_lng, event ) {
218
+
219
+ var lat = lat_lng.lat();
220
+ var lng = lat_lng.lng();
221
+
222
+ //hide any tentative markers already in place
223
+ if ( typeof drop_location_marker !== 'undefined' ) {
224
+ drop_location_marker.setVisible( false );
225
+ }
226
+
227
+ $( '.drop-marker' ).removeClass( 'active' ).text( 'Drop a Marker' ); //reset drop button
228
+ map.setOptions( {draggableCursor: null} ); //reset cursor
229
+ google.maps.event.removeListener( event ); //remove map click event
230
+
231
+ //add marker at clicked location
232
+ var drop_location_marker = new Marker( {
233
+ position : lat_lng,
234
+ map : map,
235
+ icon : gmb_data.plugin_url + "/public/assets/img/default-marker.png",
236
+ zIndex : google.maps.Marker.MAX_ZINDEX + 1,
237
+ optimized: false
238
+ } );
239
+
240
+ //get current number of repeatable rows ie markers
241
+ var index = get_marker_index();
242
+
243
+ //add data to fields
244
+ $( '#gmb_markers_group_' + index + '_title' ).val( 'Point ' + index );
245
+ $( '#gmb_markers_group_' + index + '_lat' ).val( lat );
246
+ $( '#gmb_markers_group_' + index + '_lng' ).val( lng );
247
+
248
+ get_editable_info_window( index, drop_location_marker );
249
+
250
+ google.maps.event.addListener( drop_location_marker, 'click', function () {
251
+ get_info_window_content( index, drop_location_marker );
252
+ } );
253
+
254
+ }
255
+
256
+ /**
257
+ * Map Intialize
258
+ *
259
+ * Sets up and configures the Google Map
260
+ *
261
+ * @param map_canvas
262
+ */
263
+ function initialize_map( map_canvas ) {
264
+
265
+ lat_field = $( '#gmb_lat_lng-latitude' );
266
+ lng_field = $( '#gmb_lat_lng-longitude' );
267
+ var latitude = ((lat_field.val()) ? lat_field.val() : '');
268
+ var longitude = ((lng_field.val()) ? lng_field.val() : '');
269
+ zoom = parseInt( $( '#gmb_zoom' ).val() );
270
+ lat_lng = new google.maps.LatLng( latitude, longitude );
271
+
272
+ var mapOptions = {
273
+ zoom : zoom,
274
+ streetViewControl: false,
275
+ styles : [
276
+ {
277
+ stylers: [
278
+ {visibility: 'simplified'}
279
+ ]
280
+ },
281
+ {
282
+ elementType: 'labels', stylers: [
283
+ {visibility: 'off'}
284
+ ]
285
+ }
286
+ ]
287
+ };
288
+
289
+ map = new google.maps.Map( map_canvas[0], mapOptions );
290
+ places_service = new google.maps.places.PlacesService( map );
291
+
292
+
293
+ //Handle Map Geolocation
294
+ if ( navigator.geolocation && gmb_data.geolocate_setting === 'yes' && longitude == '' && latitude == '' ) {
295
+ navigator.geolocation.getCurrentPosition( function ( position ) {
296
+ initial_location = new google.maps.LatLng( position.coords.latitude, position.coords.longitude );
297
+ map.setCenter( initial_location ); //set map with location
298
+ lat_field.val( position.coords.latitude ); //set lat field
299
+ lng_field.val( position.coords.longitude ); //set lng field
300
+ } );
301
+ }
302
+ // Presaved longitude and latitude is in place
303
+ else if ( latitude !== '' && longitude !== '' ) {
304
+
305
+ //set map with saved lat/lng
306
+ map.setCenter( new google.maps.LatLng( latitude, longitude ) );
307
+
308
+ }
309
+ // Browser doesn't support Geolocation
310
+ else {
311
+ alert( 'Geolocation service failed.' );
312
+ initial_location = new google.maps.LatLng( gmb_data.default_lat, gmb_data.default_lng );
313
+ lat_field.val( gmb_data.default_lat ); //set lat field
314
+ lng_field.val( gmb_data.default_lng ); //set lng field
315
+ map.setCenter( initial_location );
316
+ }
317
+
318
+
319
+ //Set various map view options
320
+ set_map_type( false );
321
+ if ( $( '#gmb_theme' ).val() !== 'none' ) {
322
+ set_map_theme( false );
323
+ }
324
+ set_street_view();
325
+ set_pan_control();
326
+ set_draggable();
327
+ set_double_click_zoom();
328
+ set_mouse_wheel_scroll();
329
+ set_map_type_control();
330
+ set_map_zoom_control();
331
+
332
+
333
+ //Setup Autocomplete field if undefined
334
+ if ( typeof(autocomplete) == 'undefined' ) {
335
+
336
+ autocomplete = new google.maps.places.Autocomplete( $( '#gmb_geocoder' )[0] );
337
+ autocomplete.bindTo( 'bounds', map );
338
+
339
+ //Autocomplete event listener
340
+ google.maps.event.addListener( autocomplete, 'place_changed', function () {
341
+
342
+ //Clear autocomplete input value
343
+ $( '#gmb_geocoder' ).one( 'blur', function () {
344
+ $( '#gmb_geocoder' ).val( "" );
345
+ } );
346
+ setTimeout( function () {
347
+ $( '#gmb_geocoder' ).val( "" );
348
+ }, 10 );
349
+
350
+
351
+ if ( typeof tentative_location_marker !== 'undefined' ) {
352
+ tentative_location_marker.setVisible( false );
353
+ }
354
+
355
+ //get place information
356
+ place = autocomplete.getPlace();
357
+
358
+ //set lat lng input values
359
+ lat_field.val( place.geometry.location.lat() );
360
+ lng_field.val( place.geometry.location.lng() );
361
+
362
+
363
+ if ( !place.geometry ) {
364
+ alert( 'Error: Place not found!' );
365
+ return;
366
+ }
367
+
368
+ map.setCenter( place.geometry.location );
369
+ add_tentative_marker( map, place.reference );
370
+
371
+ } );
372
+ }
373
+
374
+ //InfoBubble - Contains the place's information and content
375
+ info_bubble = new google.maps.InfoWindow( {
376
+ maxWidth: 315
377
+ } );
378
+
379
+ /**
380
+ * Map Event Listeners
381
+ */
382
+ //map loaded fully (fires once)
383
+ google.maps.event.addListenerOnce( map, 'idle', function () {
384
+ handle_map_zoom( map );
385
+ add_markers( map );
386
+
387
+ //toggle places
388
+ if ( typeof $( '.cmb_id_gmb_show_places input:radio' ).prop( 'checked' ) !== 'undefined' && $( '.cmb_id_gmb_show_places input:radio:checked' ).val() === 'yes' ) {
389
+ perform_places_search();
390
+ }
391
+
392
+ } );
393
+
394
+ //map Zoom Changed
395
+ google.maps.event.addListener( map, 'zoom_changed', function () {
396
+ handle_map_zoom( map );
397
+ } );
398
+
399
+ //Update lng and lat on map drag
400
+ google.maps.event.addListener( map, 'dragend', function () {
401
+ var map_center = map.getCenter();
402
+ $( '.lat-lng-change-message' ).slideDown();
403
+ $( '.lat-lng-update-btn' ).attr( 'data-lat', map_center.lat() );
404
+ $( '.lat-lng-update-btn' ).attr( 'data-lng', map_center.lng() );
405
+ } );
406
+
407
+
408
+ } //end initialize_map
409
+
410
+
411
+ /**
412
+ * Shows a Marker when Autocomplete search is used
413
+ * @param map
414
+ * @param reference
415
+ */
416
+ function add_tentative_marker( map, reference ) {
417
+
418
+ var map_center = map.getCenter();
419
+
420
+ //Marker for map
421
+ tentative_location_marker = new google.maps.Marker( {
422
+ map : map,
423
+ title : 'Map Icons',
424
+ animation: google.maps.Animation.DROP,
425
+ position : new google.maps.LatLng( map_center.lat(), map_center.lng() ),
426
+ icon : new google.maps.MarkerImage( gmb_data.plugin_url + "/public/assets/img/temp-marker.png" ),
427
+ zIndex : google.maps.Marker.MAX_ZINDEX + 1,
428
+ optimized: false
429
+ } );
430
+
431
+ //EVENTS
432
+ var location_marker_mouseover = google.maps.event.addListener( tentative_location_marker, 'mouseover', function ( event ) {
433
+ add_circle( reference );
434
+ } );
435
+ var location_marker_mouseout = google.maps.event.addListener( tentative_location_marker, 'mouseout', function ( event ) {
436
+ hover_circle.setVisible( false );
437
+ } );
438
+
439
+ //location clicked
440
+ google.maps.event.addListener( tentative_location_marker, 'click', function () {
441
+ //remove event listeners
442
+ google.maps.event.removeListener( location_marker_mouseover );
443
+ google.maps.event.removeListener( location_marker_mouseout );
444
+ //show circle
445
+ hover_circle.setVisible( true );
446
+ //update marker icons
447
+ //Get initial place details from reference
448
+ add_tenative_info_window( reference, tentative_location_marker );
449
+ } );
450
+
451
+
452
+ //Update map with marker position according to lat/lng
453
+ tentative_location_marker.setVisible( true );
454
+ map.setZoom( zoom );
455
+
456
+
457
+ }
458
+
459
+
460
+ /**
461
+ * Set the editable marker window content
462
+ */
463
+ function add_tenative_info_window( reference, marker ) {
464
+
465
+ var request = {
466
+ key : gmb_data.api_key,
467
+ reference: reference
468
+ };
469
+
470
+ places_service.getDetails( request, function ( place, status ) {
471
+
472
+ if ( status == google.maps.places.PlacesServiceStatus.OK ) {
473
+
474
+ var lat = place.geometry.location.lat();
475
+ var lng = place.geometry.location.lng();
476
+
477
+ var info_window_content = '<p class="place-title">' + place.name + '</p>';
478
+
479
+ info_window_content += add_place_content_to_info_window( place );
480
+
481
+
482
+ info_window_content += '<div class="infowindow-toolbar clear"><a href="#" class="add-marker" data-title="' + place.name + '" data-reference="' + place.reference + '" data-lat="' + lat + '" data-lng="' + lng + '">Add to Map</a></div>';
483
+
484
+ info_window_content = set_info_window_wrapper( info_window_content ); //wraps the content in div and returns
485
+
486
+ info_bubble.setContent( info_window_content ); //sets the info window content
487
+
488
+ info_bubble.open( map, marker ); //opens the info window
489
+
490
+ //close info window button
491
+ google.maps.event.addListener( info_bubble, 'closeclick', function () {
492
+ //Get initial place details from reference
493
+ hover_circle.setVisible( false );
494
+
495
+ } );
496
+
497
+
498
+ }
499
+
500
+ } );
501
+
502
+ }
503
+
504
+
505
+ /**
506
+ * info_bubble Content for Place Details
507
+ *
508
+ * This marker contains more information about the place
509
+ *
510
+ * @param place
511
+ */
512
+ function add_place_content_to_info_window( place ) {
513
+
514
+ var info_window_content;
515
+
516
+ //additional info wrapper
517
+ info_window_content = '<div class="marker-info-wrapper">';
518
+
519
+ //place address
520
+ info_window_content += ((place.formatted_address) ? '<div class="place-address">' + place.formatted_address + '</div>' : '' );
521
+
522
+ //place phone
523
+ info_window_content += ((place.formatted_phone_number) ? '<div class="place-phone">' + place.formatted_phone_number + '</div>' : '' );
524
+
525
+ //place website
526
+ info_window_content += ((place.website) ? '<div class="place-website"><a href="' + place.website + '" target="_blank" rel="nofollow" title="Click to visit the ' + place.name + ' website">Website</a></div>' : '' );
527
+
528
+ //rating
529
+ if ( place.rating ) {
530
+ info_window_content += '<div class="rating-wrap clear">' +
531
+ '<p class="numeric-rating">' + place.rating + '</p>' +
532
+ '<div class="star-rating-wrap">' +
533
+ '<div class="star-rating-size" style="width:' + (65 * place.rating / 5) + 'px;"></div>' +
534
+ '</div>' +
535
+ '</div>'
536
+ }
537
+
538
+
539
+ //close wrapper
540
+ info_window_content += '</div>';
541
+
542
+
543
+ return info_window_content;
544
+
545
+ }
546
+
547
+
548
+ /**
549
+ * info_bubble Content for Place Details
550
+ *
551
+ * This marker contains more information about the place
552
+ */
553
+ function get_editable_info_window( index, marker ) {
554
+
555
+ info_bubble.close();
556
+
557
+ info_bubble.setContent( '<div id="infobubble-content" class="loading"></div>' );
558
+
559
+ info_bubble.open( map, marker );
560
+
561
+ var info_window_data = get_info_window_saved_data( index );
562
+
563
+ var info_window_content;
564
+
565
+ //default title
566
+ if ( !info_window_data.title ) {
567
+ info_window_data.title = 'Point ' + index;
568
+ }
569
+
570
+ //place name
571
+ info_window_content = '<input class="edit-place-title" data-field="#gmb_markers_group_' + index + '_title" type="text" value="' + info_window_data.title + '">';
572
+
573
+ info_window_content += '<textarea class="edit-place-description" data-field="#gmb_markers_group_' + index + '_description">' + info_window_data.desc + '</textarea>';
574
+
575
+ //info_window_content += add_place_content_to_info_window( place );
576
+
577
+ //toolbar
578
+ info_window_content += '<div class="infowindow-toolbar clear"><ul id="save-toolbar">' +
579
+ '<li class="info-window-save"><div class="google-btn-blue google-btn google-save-btn" data-tooltip="Save changes" data-index="' + index + '">Save</div></li>' +
580
+ '<li class="info-window-cancel"><div class="google-btn-default google-btn google-cancel-btn" data-tooltip="Cancel edit" data-index="' + index + '">Cancel</div></li>' +
581
+ '</ul>' +
582
+ '<span class="marker-edit-link-wrap" data-index="' + index + '"><a href="#TB_inline?width=600&height=550&inlineId=marker-icon-modal" data-tooltip="Change icon" class="marker-edit-link thickbox"></a></span>' +
583
+ '</div>';
584
+
585
+ info_window_content = set_info_window_wrapper( info_window_content );
586
+ info_bubble.setContent( info_window_content );
587
+ initialize_tooltips(); //refresh tooltips
588
+
589
+ //Save info window content
590
+ google.maps.event.addDomListener( $( '.google-save-btn' )[0], 'click', function () {
591
+
592
+ //take info window vals and save to markers' repeatable group
593
+ var title_field_id = $( '.edit-place-title' ).data( 'field' );
594
+ var title_field_val = $( '.edit-place-title' ).val();
595
+
596
+ var desc_field_id = $( '.edit-place-description' ).data( 'field' );
597
+ var desc_field_val = $( '.edit-place-description' ).val();
598
+
599
+ $( title_field_id ).val( title_field_val );
600
+ $( desc_field_id ).val( desc_field_val );
601
+
602
+ //close info window and remove marker circle
603
+ get_info_window_content( $( this ).data( 'index' ), marker );
604
+ google.maps.event.removeListener( save_icon_listener ); //remove this event listener
605
+ google.maps.event.removeListener( edit_marker_icon_button_click ); //remove this event listener
606
+
607
+ } );
608
+
609
+
610
+ //Close Click
611
+ google.maps.event.addDomListener( info_bubble, 'closeclick', function () {
612
+ google.maps.event.removeListener( save_icon_listener ); //remove this event listener
613
+ google.maps.event.removeListener( edit_marker_icon_button_click ); //remove this event listener
614
+ } );
615
+
616
+ //Cancel info window content
617
+ google.maps.event.addDomListener( $( '.google-cancel-btn' )[0], 'click', function () {
618
+ //close info window and remove marker circle
619
+ get_info_window_content( $( this ).data( 'index' ), marker );
620
+ google.maps.event.removeListener( save_icon_listener ); //remove this event listener
621
+ google.maps.event.removeListener( edit_marker_icon_button_click ); //remove this event listener
622
+
623
+ } );
624
+
625
+ //Infowindow pin icon click to open ThickBox modal
626
+ var edit_marker_icon_button_click = google.maps.event.addDomListener( $( '.marker-edit-link-wrap' )[0], 'click', function () {
627
+ $( '.save-marker-button' ).attr( 'data-marker-index', $( this ).data( 'index' ) ); //Set the index for this marker
628
+ } );
629
+
630
+
631
+ //Marker Modal Update Icon
632
+ var save_icon_listener = google.maps.event.addDomListener( $( '.save-marker-button' )[0], 'click', function () {
633
+
634
+ var marker_position = marker.getPosition();
635
+ var marker_icon_data;
636
+ var marker_icon = $( this ).data( 'marker' );
637
+ var marker_icon_color = $( this ).data( 'marker-color' );
638
+ var label_color = $( this ).data( 'label-color' );
639
+
640
+ //Inline style for marker to set
641
+ var marker_label_inline_style = 'color:' + label_color + '; ';
642
+ if ( marker_icon === 'MAP_PIN' ) {
643
+ marker_label_inline_style += 'font-size: 20px;position: relative; top: -3px;'; //position: relative; top: -44px; font-size: 24px;
644
+ } else if ( marker_icon == 'SQUARE_PIN' ) {
645
+ marker_label_inline_style += 'font-size: 20px;position: relative; top: 12px;';
646
+ }
647
+
648
+ //collect marker data from submit button
649
+ var marker_label_data = '<i class="' + $( this ).data( 'label' ) + '" style="' + marker_label_inline_style + '"></i>';
650
+
651
+ //Set marker icon data
652
+ if ( marker_icon == '' ) {
653
+ //default icon
654
+ marker_icon_data = gmb_data.plugin_url + '/public/assets/img/default-marker.png';
655
+ $( '#gmb_markers_group_' + index + '_marker' ).val( '' );
656
+ marker_label_data = '';
657
+ } else {
658
+ //maps-icon
659
+ marker_icon_data = '{ path : ' + marker_icon + ', fillColor : "' + marker_icon_color + '", fillOpacity : 1, strokeColor : "", strokeWeight: 0, scale : 1 / 3 }';
660
+ $( '#gmb_markers_group_' + index + '_marker' ).val( marker_icon_data );
661
+ marker_icon_data = eval( '(' + marker_icon_data + ')' )
662
+ }
663
+
664
+ //remove current marker
665
+ marker.setMap( null );
666
+
667
+ //Update fields with necessary data
668
+ $( '#gmb_markers_group_' + index + '_label' ).val( marker_label_data );
669
+
670
+ //Update Icon
671
+ marker = new Marker( {
672
+ position: marker_position,
673
+ map : map,
674
+ zIndex : 9,
675
+ icon : marker_icon_data,
676
+ label : marker_label_data
677
+ } );
678
+
679
+ //Add event listener to new marker
680
+ google.maps.event.addListener( marker, 'click', function () {
681
+ get_info_window_content( index, marker );
682
+ } );
683
+
684
+ //Clean up modal and close
685
+ $( '.icon, .marker-item' ).removeClass( 'marker-item-selected' ); //reset modal
686
+ $( '.marker-icon-row, .save-marker-icon, .marker-icon-color-wrap, .marker-label-color-wrap' ).hide(); //reset modal
687
+ $( this ).removeData( 'marker' ); //Remove data
688
+ $( this ).removeData( 'marker-color' ); //Remove data
689
+ $( this ).removeData( 'label' ); //Remove data
690
+ $( this ).removeData( 'label-color' ); //Remove data
691
+ tb_remove(); //close TB lightbox
692
+ google.maps.event.removeListener( save_icon_listener ); //remove this event listener
693
+ google.maps.event.removeListener( edit_marker_icon_button_click ); //remove this event listener
694
+
695
+ } );
696
+
697
+ }
698
+
699
+ /**
700
+ * Wrap Info Window Content
701
+ *
702
+ * Help function that sets a div container around info window
703
+ * @param content
704
+ */
705
+ function set_info_window_wrapper( content ) {
706
+
707
+ var info_window_content = '<div id="infobubble-content" class="main-place-infobubble-content">';
708
+
709
+ info_window_content += content;
710
+
711
+ info_window_content += '</div>';
712
+
713
+ return info_window_content;
714
+
715
+ }
716
+
717
+
718
+ /**
719
+ * Adds a marker circle
720
+ */
721
+ function add_circle( reference ) {
722
+
723
+ hover_circle = new google.maps.Marker( {
724
+ position : tentative_location_marker.getPosition(),
725
+ zIndex : google.maps.Marker.MAX_ZINDEX - 1,
726
+ optimized: false,
727
+ icon : {
728
+ path : google.maps.SymbolPath.CIRCLE,
729
+ scale : 20,
730
+ strokeWeight : 3,
731
+ strokeOpacity: 0.9,
732
+ strokeColor : '#FFF',
733
+ fillOpacity : .3,
734
+ fillColor : '#FFF'
735
+ },
736
+ map : map
737
+ } );
738
+
739
+
740
+ google.maps.event.addListener( hover_circle, 'click', function () {
741
+ //Get initial place details from reference
742
+ add_tenative_info_window( reference, tentative_location_marker );
743
+ } );
744
+ google.maps.event.addListener( tentative_location_marker, 'click', function () {
745
+ //Get initial place details from reference
746
+ hover_circle.setVisible( true );
747
+ } );
748
+
749
+ }
750
+
751
+
752
+ /**
753
+ * Add Markers
754
+ *
755
+ * This is the marker that first displays on load for the main location or place
756
+ *
757
+ * @param map
758
+ */
759
+ function add_markers( map ) {
760
+
761
+ clear_main_markers();
762
+
763
+ //Loop through repeatable field of markers
764
+ $( "#gmb_markers_group_repeat .repeatable-grouping" ).each( function ( index ) {
765
+
766
+ var marker_icon = gmb_data.plugin_url + '/public/assets/img/default-marker.png';
767
+ var marker_label = '';
768
+
769
+ //check for custom marker and label data
770
+ var custom_marker_icon = $( '#gmb_markers_group_' + index + '_marker' ).val();
771
+ if ( custom_marker_icon.length > 0 ) {
772
+ marker_icon = eval( "(" + custom_marker_icon + ")" );
773
+ }
774
+ var custom_label = $( '#gmb_markers_group_' + index + '_label' ).val();
775
+ if ( custom_label.length > 0 ) {
776
+ marker_label = custom_label;
777
+ }
778
+
779
+ //Marker for map
780
+ var location_marker = new Marker( {
781
+ map : map,
782
+ zIndex: 9,
783
+ icon : marker_icon,
784
+ label : marker_label
785
+ } );
786
+
787
+ var marker_lat = $( '#gmb_markers_group_' + index + '_lat' ).val();
788
+ var marker_lng = $( '#gmb_markers_group_' + index + '_lng' ).val();
789
+
790
+ location_marker.setPosition( new google.maps.LatLng( marker_lat, marker_lng ) );
791
+ location_marker.setVisible( true );
792
+
793
+ google.maps.event.addListener( location_marker, 'click', function () {
794
+ get_info_window_content( index, location_marker );
795
+ } );
796
+
797
+ } ); //end $.each()
798
+
799
+ }
800
+
801
+
802
+ function get_info_window_saved_data( index ) {
803
+
804
+ var info_window_data = new Object();
805
+
806
+ info_window_data.title = $( '#gmb_markers_group_' + index + '_title' ).val();
807
+ info_window_data.desc = $( '#gmb_markers_group_' + index + '_description' ).val();
808
+ info_window_data.reference = $( '#gmb_markers_group_' + index + '_reference' ).val();
809
+ info_window_data.lat = $( '#gmb_markers_group_' + index + '_lat' ).val();
810
+ info_window_data.lng = $( '#gmb_markers_group_' + index + '_lng' ).val();
811
+
812
+ return info_window_data;
813
+
814
+
815
+ }
816
+
817
+ /**
818
+ * Queries to get Google Place Details information
819
+ *
820
+ * Help function
821
+ * @param index
822
+ * @param marker
823
+ */
824
+ function get_info_window_content( index, marker ) {
825
+
826
+ info_bubble.close();
827
+
828
+ info_bubble.setContent( '<div id="infobubble-content" class="loading"></div>' );
829
+
830
+ info_bubble.open( map, marker );
831
+
832
+ var info_window_data = get_info_window_saved_data( index );
833
+
834
+ var info_window_content;
835
+
836
+
837
+ //Show place information within info bubble
838
+ if ( info_window_data.reference ) {
839
+
840
+ var request = {
841
+ reference: info_window_data.reference
842
+ };
843
+ places_service.getDetails( request, function ( place, status ) {
844
+ if ( status == google.maps.places.PlacesServiceStatus.OK ) {
845
+ //place name
846
+ info_window_content = '<p class="place-title">' + info_window_data.title + '</p>';
847
+
848
+ info_window_content += '<div class="place-description">' + info_window_data.desc + '</div>';
849
+
850
+ info_window_content += add_place_content_to_info_window( place );
851
+ //toolbar
852
+ info_window_content += '<div class="infowindow-toolbar"><ul id="edit-toolbar">' +
853
+ '<li class="edit-info" data-index="' + index + '" data-tooltip="Edit Marker"></li>' +
854
+ '<li class="trash-marker" data-index="' + index + '" data-tooltip="Delete Marker"></li>' +
855
+ '</ul>' +
856
+ '</div>';
857
+
858
+ add_edit_events( info_window_content, marker );
859
+
860
+ }
861
+ } ); //end getPlaces
862
+
863
+
864
+ } else {
865
+ //Only show saved data (no place lookup)
866
+
867
+ //place name
868
+ info_window_content = '<p class="place-title">' + info_window_data.title + '</p>';
869
+
870
+ info_window_content += '<div class="place-description">' + info_window_data.desc + '</div>';
871
+ //toolbar
872
+ info_window_content += '<div class="infowindow-toolbar"><ul id="edit-toolbar">' +
873
+ '<li class="edit-info" data-index="' + index + '" data-tooltip="Edit Marker"></li>' +
874
+ '<li class="trash-marker" data-index="' + index + '" data-tooltip="Delete Marker"></li>' +
875
+ '</ul>' +
876
+ '</div>';
877
+
878
+ add_edit_events( info_window_content, marker );
879
+
880
+
881
+ }
882
+
883
+
884
+ }
885
+
886
+ /**
887
+ * Add Edit Events
888
+ *
889
+ * Sets up Google Map event listeners and other setup for info bubbles
890
+ *
891
+ * @param content
892
+ * @param marker
893
+ */
894
+ function add_edit_events( content, marker ) {
895
+
896
+ content = set_info_window_wrapper( content ); //wraps the content in div and returns
897
+ info_bubble.setContent( content ); //set infowindow content
898
+ initialize_tooltips(); //refresh tooltips
899
+
900
+ //edit button event
901
+ google.maps.event.addDomListener( $( '.edit-info' )[0], 'click', function () {
902
+ //Edit Marker
903
+ get_editable_info_window( $( this ).data( 'index' ), marker );
904
+ } );
905
+
906
+ //trash button event
907
+ google.maps.event.addDomListener( $( '.trash-marker' )[0], 'click', function () {
908
+ var index = $( this ).data( 'index' );
909
+
910
+ //if first item clear out all input values
911
+ if ( index === 0 ) {
912
+ $( 'tr[data-iterator="' + index + '"] ' ).find( 'input,textarea' ).val( '' );
913
+ }
914
+
915
+ //trigger remove row button click for this specific markers row
916
+ $( 'tr[data-iterator="' + index + '"] .remove-group-row' ).trigger( 'click' );
917
+ //close info window and remove marker
918
+ info_bubble.close();
919
+ marker.setVisible( false );
920
+ } );
921
+
922
+ }
923
+
924
+
925
+ /**
926
+ * Marker Index
927
+ *
928
+ * Helper function that returns the appropriate index for the repeatable group
929
+ *
930
+ */
931
+ function get_marker_index() {
932
+ //Create a new marker repeatable meta group
933
+ var index = parseInt( $( '#gmb_markers_group_repeat tr.repeatable-grouping' ).last().attr( 'data-iterator' ) );
934
+ var existing_vals = $( 'tr[data-iterator="0"] ' ).find( 'input,textarea' ).val();
935
+
936
+ //Ensure appropriate index is used for marker
937
+ if ( existing_vals && index === 0 ) {
938
+ $( '.add-group-row.button' ).trigger( 'click' );
939
+ index = 1;
940
+ } else if ( index !== 0 ) {
941
+ $( '.add-group-row.button' ).trigger( 'click' );
942
+ //recount rows
943
+ index = parseInt( $( '#gmb_markers_group_repeat tr.repeatable-grouping' ).last().attr( 'data-iterator' ) );
944
+ }
945
+ return index;
946
+ }
947
+
948
+ /**
949
+ * Google Places Marker Info Window
950
+ *
951
+ * @param place
952
+ * @param marker
953
+ */
954
+ function get_place_info_window_content( place, marker ) {
955
+
956
+ info_bubble.setContent( '<div id="infobubble-content" class="loading"></div>' );
957
+
958
+ info_bubble.open( map, marker );
959
+
960
+ var request = {
961
+ reference: place.reference
962
+ };
963
+ places_service.getDetails( request, function ( place, status ) {
964
+ if ( status == google.maps.places.PlacesServiceStatus.OK ) {
965
+
966
+ var info_window_content;
967
+
968
+ //place name
969
+ info_window_content = '<p class="place-title">' + place.name + '</p>';
970
+
971
+ info_window_content += add_place_content_to_info_window( place );
972
+
973
+ info_window_content = set_info_window_wrapper( info_window_content ); //wraps the content in div and returns
974
+
975
+ info_bubble.setContent( info_window_content );
976
+
977
+ initialize_tooltips(); //refresh tooltips
978
+
979
+ }
980
+ } );
981
+ }
982
+
983
+
984
+ /**
985
+ * Get Places Types Array
986
+ *
987
+ * Loops through checkboxes and returns array of checked values
988
+ *
989
+ * @returns get_places_type
990
+ */
991
+ function get_places_type_array() {
992
+
993
+ var types_array = [];
994
+
995
+ $( '.cmb_id_gmb_places_search_multicheckbox input[type="checkbox"]' ).each( function () {
996
+ if ( $( this ).is( ':checked' ) ) {
997
+ types_array.push( $( this ).val() );
998
+ }
999
+
1000
+ } );
1001
+
1002
+ return types_array;
1003
+
1004
+ }
1005
+
1006
+
1007
+ /**
1008
+ * Google Places Nearby Search
1009
+ *
1010
+ */
1011
+ function perform_places_search() {
1012
+
1013
+ $( '.places-loading' ).fadeIn();
1014
+ $( '.warning-message' ).hide().empty();
1015
+
1016
+ var types_array = get_places_type_array();
1017
+
1018
+ clear_search_markers();
1019
+
1020
+ //Check if any place types are selected
1021
+ if ( types_array.length > 0 ) {
1022
+
1023
+ //perform search request
1024
+ var request = {
1025
+ location: return_lat_lng(),
1026
+ types : types_array,
1027
+ radius : parseInt( $( '#gmb_search_radius' ).val() )
1028
+ };
1029
+ places_service.nearbySearch( request, places_search_callback );
1030
+ }
1031
+ //Display notice that no places are selected
1032
+ else {
1033
+
1034
+ show_warning_message( '<strong>Notice: No Place Types are selected</strong><br/> Please select the types of places you would like to display on this map using the Place Type field checkboxes found below.' );
1035
+
1036
+ }
1037
+
1038
+ }
1039
+
1040
+
1041
+ /**
1042
+ * Warning Messages
1043
+ *
1044
+ * Helper function that shows a warning message below the google map
1045
+ * @param message
1046
+ */
1047
+ function show_warning_message( message ) {
1048
+ $( '.wpgp-loading' ).fadeOut(); //fade out all loading items
1049
+ $( '.warning-message' ).empty().append( '<p>' + message + '</p>' ).fadeIn();
1050
+ }
1051
+
1052
+
1053
+ /**
1054
+ *
1055
+ * Returns Maps current Long and Latitude Object
1056
+ *
1057
+ * Helper Function
1058
+ *
1059
+ * @returns lat_lng
1060
+ */
1061
+ function return_lat_lng() {
1062
+ var map_center = map.getCenter();
1063
+ var lat_lng = new google.maps.LatLng( map_center.lat(), map_center.lng() );
1064
+ return lat_lng;
1065
+ }
1066
+
1067
+ /**
1068
+ * Map Zoom
1069
+ *
1070
+ * Sets the map zoom field and variable
1071
+ *
1072
+ */
1073
+ function handle_map_zoom( map ) {
1074
+
1075
+ var new_zoom = map.getZoom();
1076
+
1077
+ $( '#gmb_zoom' ).val( new_zoom );
1078
+
1079
+ $( '#gmb_zoom' ).on( 'change', function () {
1080
+ map.setZoom( parseInt( $( this ).val() ) );
1081
+ } );
1082
+
1083
+ }
1084
+
1085
+ /**
1086
+ * Map Lat Lng
1087
+ *
1088
+ * Sets the map zoom field and variable
1089
+ */
1090
+ function lat_lng_field_change( map ) {
1091
+ var pan_point = new google.maps.LatLng( $( lat_field ).val(), $( lng_field ).val() );
1092
+ map.panTo( pan_point );
1093
+ }
1094
+
1095
+
1096
+ /**
1097
+ * Places Search Callback
1098
+ *
1099
+ * Used to loop through results and call function to create search result markers
1100
+ *
1101
+ * @param results
1102
+ * @param status
1103
+ * @param pagination
1104
+ */
1105
+ function places_search_callback( results, status, pagination ) {
1106
+
1107
+ var i = 0;
1108
+ var result;
1109
+
1110
+ //setup new markers
1111
+ if ( status == google.maps.places.PlacesServiceStatus.OK ) {
1112
+
1113
+ //place new markers
1114
+ for ( i = 0; result = results[i]; i++ ) {
1115
+ create_search_result_marker( results[i] );
1116
+ }
1117
+
1118
+ //show all pages of results
1119
+ //@see: http://stackoverflow.com/questions/11665684/more-than-20-results-by-pagination-with-google-places-api
1120
+ if ( pagination.hasNextPage ) {
1121
+ pagination.nextPage();
1122
+ } else {
1123
+ $( '.places-loading' ).fadeOut();
1124
+ }
1125
+
1126
+ }
1127
+ }
1128
+
1129
+ /**
1130
+ * Create Search Result Marker
1131
+ *
1132
+ * Used with Places Search to place markers on map
1133
+ *
1134
+ * @param place
1135
+ */
1136
+ function create_search_result_marker( place ) {
1137
+
1138
+ var search_marker = new Marker( {
1139
+ map : map,
1140
+ zIndex : 0,
1141
+ optimized: false
1142
+ } );
1143
+ //setup marker icon
1144
+ search_marker.setIcon( /** @type {google.maps.Icon} */({
1145
+ url : place.icon,
1146
+ size : new google.maps.Size( 24, 24 ),
1147
+ origin : new google.maps.Point( 0, 0 ),
1148
+ anchor : new google.maps.Point( 17, 34 ),
1149
+ scaledSize: new google.maps.Size( 24, 24 )
1150
+ }) );
1151
+
1152
+ search_marker.setPosition( place.geometry.location );
1153
+ search_marker.setVisible( true );
1154
+
1155
+
1156
+ google.maps.event.addListener( search_marker, 'click', function () {
1157
+ get_place_info_window_content( place, search_marker );
1158
+ } );
1159
+
1160
+ search_markers.push( search_marker )
1161
+
1162
+ }
1163
+
1164
+
1165
+ /**
1166
+ * Clears Main Markers
1167
+ *
1168
+ * Used to clear out main location marker to prevent from displaying multiple
1169
+ *
1170
+ */
1171
+ function clear_main_markers() {
1172
+
1173
+ //clear markers
1174
+ for ( var i = 0; i < location_marker_array.length; i++ ) {
1175
+ location_marker_array[i].setMap( null );
1176
+ }
1177
+ location_marker_array.length = 0;
1178
+
1179
+ //clear infowindows
1180
+ for ( i = 0; i < info_bubble_array.length; i++ ) {
1181
+ info_bubble_array[i].close();
1182
+ google.maps.event.trigger( info_bubble_array[i], 'closeclick' );
1183
+ }
1184
+ info_bubble_array.length = 0;
1185
+ }
1186
+
1187
+ /**
1188
+ * Clears Search Markers
1189
+ *
1190
+ * Used to clear out main search markers
1191
+ *
1192
+ */
1193
+ function clear_search_markers() {
1194
+
1195
+ //remove existing markers
1196
+ for ( var i = 0; i < search_markers.length; i++ ) {
1197
+ search_markers[i].setMap( null );
1198
+ }
1199
+ search_markers = [];
1200
+
1201
+ }
1202
+
1203
+
1204
+ /**
1205
+ * Geocode new marker position
1206
+ *
1207
+ * Perform nearby search request to see if the marker landed on a place
1208
+ *
1209
+ * @see: http://stackoverflow.com/questions/5688745/google-maps-v3-draggable-marker
1210
+ * @param pos
1211
+ */
1212
+ function geocode_position( pos ) {
1213
+
1214
+ var request = {
1215
+ location: pos,
1216
+ radius : 10
1217
+ };
1218
+ places_service.nearbySearch( request, function ( results, status ) {
1219
+
1220
+ if ( status == google.maps.places.PlacesServiceStatus.OK ) {
1221
+
1222
+ var info_bubble_content = '';
1223
+ info_bubble.close();
1224
+
1225
+ //if more than one result ask the user which one?
1226
+ if ( results.length > 1 ) {
1227
+
1228
+ info_bubble_content = '<div id="infobubble-content"><p>Hmm, it looks like there are multiple places in this area. Please confirm which place you would like this marker to display:</p>';
1229
+
1230
+ for ( var i = 0; i < results.length; i++ ) {
1231
+ info_bubble_content += '<a class="marker-confirm-place" data-reference="' + results[i].reference + '" data-name-address="' + results[i].name + ', ' + results[i].vicinity + '">' + results[i].name + '</a>';
1232
+ }
1233
+
1234
+ info_bubble_content += '</div>';
1235
+
1236
+ //setup click event for links
1237
+ google.maps.event.addDomListener( info_bubble, 'domready', function () {
1238
+ $( '.marker-confirm-place' ).on( 'click', function ( e ) {
1239
+ e.preventDefault();
1240
+ $( '#gmb_geocoder' ).val( $( this ).data( 'name-address' ) );
1241
+ $( '#gmb_reference' ).val( $( this ).data( 'reference' ) );
1242
+ info_bubble.close();
1243
+ get_info_window_content( $( this ).data( 'reference' ) );
1244
+ //info_bubble.open( location_marker );
1245
+ } );
1246
+ } );
1247
+
1248
+
1249
+ }
1250
+
1251
+ info_bubble.setContent( info_bubble_content );
1252
+
1253
+ info_bubble.open( map, location_marker );
1254
+
1255
+
1256
+ }
1257
+
1258
+ } );
1259
+
1260
+ }
1261
+
1262
+
1263
+ /**
1264
+ * Scroll to Selector
1265
+ *
1266
+ * Helper function that scroll the user up to the map
1267
+ */
1268
+ function scroll_to_field( selector ) {
1269
+ //scroll to the map
1270
+ $( 'html, body' ).animate( {
1271
+ scrollTop: parseInt( $( selector ).offset().top )
1272
+ }, 600 );
1273
+ }
1274
+
1275
+ /**
1276
+ * Marker Drag End
1277
+ *
1278
+ * Executes after a user drags the initial marker
1279
+ *
1280
+ * @param marker
1281
+ */
1282
+ function marker_drag_end( marker ) {
1283
+
1284
+ var map_center = marker.getPosition();
1285
+ geocode_position( map_center );
1286
+ //update with new map coordinates
1287
+ $( lat_field ).val( map_center.lat() );
1288
+ $( lng_field ).val( map_center.lng() );
1289
+
1290
+ //Map centered on this location
1291
+ map.panTo( map_center );
1292
+
1293
+ }
1294
+
1295
+ /**
1296
+ * Radius Circle
1297
+ *
1298
+ * Draws a circle when user focuses on the radius input
1299
+ *
1300
+ * @see: http://jsfiddle.net/yV6xv/3730/
1301
+ * @param map
1302
+ * @param radiusVal
1303
+ */
1304
+ function calc_radius( map, radiusVal ) {
1305
+
1306
+ //update marker with set marker
1307
+ radius_marker = new Marker( {
1308
+ position : map.getCenter(),
1309
+ map : map,
1310
+ icon : {
1311
+ path : MAP_PIN,
1312
+ fillColor : '#0E77E9',
1313
+ fillOpacity : 0,
1314
+ strokeColor : '',
1315
+ strokeWeight: 0,
1316
+ scale : 1 / 4
1317
+ },
1318
+ label : '<i class="map-icon-crosshairs radius-label"></i>',
1319
+ zIndex : google.maps.Marker.MAX_ZINDEX + 1,
1320
+ optimized: false
1321
+ } );
1322
+
1323
+ radius_circle = new google.maps.Circle( {
1324
+ map : map,
1325
+ fillColor : '#BBD8E9',
1326
+ fillOpacity : 0.3,
1327
+ radius : radiusVal,
1328
+ strokeColor : '#BBD8E9',
1329
+ strokeOpacity: 0.9,
1330
+ strokeWeight : 2
1331
+ } );
1332
+
1333
+ radius_circle.bindTo( 'center', radius_marker, 'position' );
1334
+
1335
+ }
1336
+
1337
+
1338
+ /**
1339
+ * Show/ Hide Map Fields
1340
+ *
1341
+ * Helper function that handles all the toggle elements within the CPT admin post screen
1342
+ *
1343
+ */
1344
+ function toggle_metabox_fields() {
1345
+
1346
+ var show_places = $( '.cmb_id_gmb_show_places input:radio' );
1347
+
1348
+ //Places Metabox
1349
+ if ( show_places.prop( 'checked' ) === true ) {
1350
+ $( '.cmb_id_gmb_search_radius' ).show();
1351
+ $( '.cmb_id_gmb_places_search_multicheckbox' ).show();
1352
+ }
1353
+
1354
+ //Nothing checked yet so select 'No' by default
1355
+ if ( show_places.prop( 'checked' ) === false ) {
1356
+ $( '#gmb_show_places2' ).prop( 'checked', true );
1357
+ }
1358
+
1359
+ show_places.on( 'change', function () {
1360
+
1361
+ $( '.cmb_id_gmb_search_radius' ).toggle();
1362
+ $( '.cmb_id_gmb_places_search_multicheckbox' ).toggle();
1363
+
1364
+ if ( $( this ).val() === 'no' ) {
1365
+ clear_search_markers();
1366
+ } else {
1367
+ perform_places_search();
1368
+ }
1369
+
1370
+ } );
1371
+
1372
+ }
1373
+
1374
+ /**
1375
+ * Set Map Size
1376
+ */
1377
+ function set_map_size() {
1378
+ var map_width = $( '#gmb_width_height-width' ).val();
1379
+ var map_width_value = $( 'input[name="gmb_width_height[map_width_unit]"]:checked' ).val();
1380
+ var map_height = $( '#gmb_width_height-height' ).val();
1381
+ $( '#map' ).css( {
1382
+ 'width' : map_width + map_width_value,
1383
+ 'height': map_height
1384
+ } );
1385
+ }
1386
+
1387
+
1388
+ /**
1389
+ * Set Zoom Control
1390
+ */
1391
+ function set_map_zoom_control() {
1392
+
1393
+ var zoom_control = $( '#gmb_zoom_control' ).val().toUpperCase();
1394
+
1395
+ if ( zoom_control == 'NONE' ) {
1396
+ map.setOptions( {
1397
+ zoomControl: false
1398
+ } );
1399
+ } else {
1400
+ map.setOptions( {
1401
+ zoomControl : true,
1402
+ zoomControlOptions: {
1403
+ style: google.maps.ZoomControlStyle[zoom_control]
1404
+ }
1405
+ } );
1406
+ }
1407
+ }
1408
+
1409
+
1410
+ /**
1411
+ * Set Map Type Control
1412
+ */
1413
+ function set_map_type_control() {
1414
+ var map_type_control = $( '#gmb_map_type_control' ).val().toUpperCase();
1415
+ if ( map_type_control == 'NONE' ) {
1416
+ map.setOptions( {
1417
+ mapTypeControl: false
1418
+ } );
1419
+ } else {
1420
+ map.setOptions( {
1421
+ mapTypeControl : true,
1422
+ mapTypeControlOptions: {
1423
+ style: google.maps.MapTypeControlStyle[map_type_control]
1424
+ }
1425
+ } );
1426
+ }
1427
+ }
1428
+
1429
+ /**
1430
+ * Sets Mouse Wheel Scroll
1431
+ */
1432
+ function set_mouse_wheel_scroll() {
1433
+ var mouse_wheel_scroll = $( '#gmb_wheel_zoom' ).val();
1434
+ if ( mouse_wheel_scroll === 'none' ) {
1435
+ map.setOptions( {
1436
+ scrollwheel: false
1437
+ } );
1438
+ } else {
1439
+ map.setOptions( {
1440
+ scrollwheel: true
1441
+ } );
1442
+ }
1443
+ }
1444
+
1445
+ /**
1446
+ * Sets Double Click Zoom on Map
1447
+ */
1448
+ function set_double_click_zoom() {
1449
+ var double_click_zoom = $( '#gmb_double_click' ).val();
1450
+ if ( double_click_zoom === 'none' ) {
1451
+ map.setOptions( {
1452
+ disableDoubleClickZoom: true
1453
+ } );
1454
+ } else {
1455
+ map.setOptions( {
1456
+ disableDoubleClickZoom: false
1457
+ } );
1458
+ }
1459
+ }
1460
+
1461
+ /**
1462
+ * Sets Draggable Map
1463
+ */
1464
+ function set_draggable() {
1465
+ var draggable = $( '#gmb_draggable' ).val();
1466
+ if ( draggable == 'none' ) {
1467
+ map.setOptions( {
1468
+ draggable: false
1469
+ } );
1470
+ } else {
1471
+ map.setOptions( {
1472
+ draggable: true
1473
+ } );
1474
+ }
1475
+ }
1476
+
1477
+ /**
1478
+ * Sets the Pan Control
1479
+ */
1480
+ function set_pan_control() {
1481
+
1482
+ var pan = $( '#gmb_pan' ).val();
1483
+ if ( pan === 'none' ) {
1484
+ map.setOptions( {
1485
+ panControl: false
1486
+ } );
1487
+ } else {
1488
+ map.setOptions( {
1489
+ panControl: true
1490
+ } );
1491
+ }
1492
+ }
1493
+
1494
+ /**
1495
+ * Sets the Street View Control
1496
+ */
1497
+ function set_street_view() {
1498
+
1499
+ var street_view = $( '#gmb_street_view' ).val();
1500
+ if ( street_view === 'none' ) {
1501
+ map.setOptions( {
1502
+ streetViewControl: false
1503
+ } );
1504
+ } else {
1505
+ map.setOptions( {
1506
+ streetViewControl: true
1507
+ } );
1508
+ }
1509
+ }
1510
+
1511
+ /**
1512
+ * Sets the Map Type
1513
+ *
1514
+ * Changes the Google Map type and resets theme to none
1515
+ */
1516
+ function set_map_type( reset ) {
1517
+ if ( reset === true ) {
1518
+ $( '#gmb_theme' ).val( 'none' );
1519
+ $( '#gmb_theme_json' ).val( 'none' );
1520
+ }
1521
+
1522
+ var map_type = $( '#gmb_type' ).val().toUpperCase();
1523
+ map.setOptions( {
1524
+ mapTypeId: google.maps.MapTypeId[map_type],
1525
+ styles : false
1526
+ } );
1527
+ }
1528
+
1529
+ /**
1530
+ * Sets the Map Theme
1531
+ *
1532
+ * Uses Snazzy Maps JSON arrow to set the colors for the map
1533
+ *
1534
+ */
1535
+ function set_map_theme( reset ) {
1536
+ if ( reset === true ) {
1537
+ $( '#gmb_type' ).val( 'RoadMap' );
1538
+ $( '#gmb_theme_json' ).val( 'none' );
1539
+ }
1540
+ //AJAX to get JSON data for Snazzy
1541
+ $.getJSON( gmb_data.snazzy, function ( data ) {
1542
+
1543
+ var map_theme_input_val = parseInt( $( '#gmb_theme' ).val() );
1544
+
1545
+ if ( map_theme_input_val === 'none' ) {
1546
+ set_map_type();
1547
+ }
1548
+ $.each( data, function ( index ) {
1549
+
1550
+ if ( data[index].id === map_theme_input_val ) {
1551
+ map_theme_input_val = eval( data[index].json );
1552
+ $( '#gmb_theme_json' ).val( data[index].json );
1553
+ }
1554
+
1555
+ } );
1556
+
1557
+ map.setOptions( {
1558
+ mapTypeId: google.maps.MapTypeId.ROADMAP,
1559
+ styles : map_theme_input_val
1560
+ } );
1561
+ } );
1562
+
1563
+ }
1564
+
1565
+
1566
+ /**
1567
+ * JS for Marker Icon Modal
1568
+ */
1569
+ function set_map_marker_icon() {
1570
+
1571
+ //Marker Item Click
1572
+ $( '.marker-item' ).on( 'click', function () {
1573
+
1574
+ var marker_data = $( this ).data( 'marker' );
1575
+ $( '.marker-item' ).removeClass( 'marker-item-selected' );
1576
+ $( this ).addClass( 'marker-item-selected' );
1577
+
1578
+ //default marker
1579
+ if ( marker_data == 'default' ) {
1580
+
1581
+ $( '.marker-icon-row, .marker-icon-color-wrap, .marker-label-color-wrap' ).slideUp();
1582
+ $( '.save-marker-icon' ).slideDown();
1583
+ $( '#TB_window .save-marker-button' ).attr( 'data-marker', '' );
1584
+ $( '#TB_window .save-marker-button' ).attr( 'data-label', '' );
1585
+
1586
+ } else {
1587
+ //custom markers
1588
+ $( '.marker-icon-color-wrap, .marker-icon-row' ).slideDown();
1589
+ $( '#TB_window .save-marker-button' ).attr( 'data-marker', marker_data ); //Set marker data attribute on save btn
1590
+ }
1591
+
1592
+ } );
1593
+
1594
+
1595
+ //Icon Click
1596
+ $( '.icon' ).on( 'click', function () {
1597
+ $( '.icon' ).removeClass( 'marker-item-selected' );
1598
+ $( this ).addClass( 'marker-item-selected' );
1599
+ $( '.save-marker-icon, .marker-label-color-wrap' ).slideDown(); //slide down save button
1600
+ $( '#TB_window .save-marker-button' ).attr( 'data-label', $( this ).find( 'span' ).attr( 'class' ) ); //Set marker data attribute on save btn
1601
+ } );
1602
+
1603
+
1604
+ /**
1605
+ * Colors
1606
+ */
1607
+ //Setup colorpickers
1608
+ var color_picker_options = {
1609
+ // you can declare a default color here, or in the data-default-color attribute on the input
1610
+ // a callback to fire whenever the color changes to a valid color
1611
+ change : function ( event, ui ) {
1612
+
1613
+ var this_color = ui.color.toString();
1614
+
1615
+ //Marker Color
1616
+ if ( $( this ).hasClass( 'marker-color' ) === true ) {
1617
+
1618
+ $( '.save-marker-button' ).attr( 'data-marker-color', this_color );
1619
+ $( '.marker-svg polygon, .marker-svg path' ).attr( 'fill', this_color );
1620
+
1621
+ } else if ( $( this ).hasClass( 'label-color' ) === true ) {
1622
+
1623
+ $( '.save-marker-button' ).attr( 'data-label-color', this_color );
1624
+ $( '.icon-inner span' ).css( 'color', this_color );
1625
+
1626
+ }
1627
+
1628
+
1629
+ },
1630
+ // a callback to fire when the input is emptied or an invalid color
1631
+ clear : function () {
1632
+ },
1633
+ // hide the color picker controls on load
1634
+ hide : true,
1635
+ // show a group of common colors beneath the square
1636
+ // or, supply an array of colors to customize further
1637
+ palettes: true
1638
+ };
1639
+
1640
+ $( '.color-picker' ).wpColorPicker( color_picker_options );
1641
+
1642
+
1643
+ }
1644
+
1645
+ /**
1646
+ * Refresh Tooltips
1647
+ *
1648
+ * Helper function to refresh tooltips when elements added dynamically to DOM
1649
+ */
1650
+ function initialize_tooltips() {
1651
+ $( '[data-tooltip!=""]' ).qtip( { // Grab all elements with a non-blank data-tooltip attr.
1652
+ content : {
1653
+ attr: 'data-tooltip' // Tell qTip2 to look inside this attr for its content
1654
+ },
1655
+ hide : {
1656
+ fixed: true,
1657
+ delay: 100
1658
+ },
1659
+ position: {
1660
+ my: 'top center',
1661
+ at: 'bottom center'
1662
+ },
1663
+ style : {
1664
+ classes: 'qtip-tipsy'
1665
+ },
1666
+ show : {
1667
+ when : {
1668
+ event: 'focus'
1669
+ },
1670
+ effect: function () {
1671
+ $( this ).fadeIn( 200 );
1672
+ }
1673
+ }
1674
+ } );
1675
+ }
1676
+
1677
+ }( jQuery ));
admin/assets/js/admin-google-map.min.js CHANGED
@@ -1 +1 @@
1
- !function($){"use strict";function drop_marker(a,b){var c=a.lat(),d=a.lng();"undefined"!=typeof e&&e.setVisible(!1),$(".drop-marker").removeClass("active").text("Drop a Marker"),map.setOptions({draggableCursor:null}),google.maps.event.removeListener(b);var e=new Marker({position:a,map:map,icon:gmb_data.plugin_url+"/public/assets/img/default-marker.png",zIndex:google.maps.Marker.MAX_ZINDEX+1,optimized:!1}),f=get_marker_index();$("#gmb_markers_group_"+f+"_title").val("Point "+f),$("#gmb_markers_group_"+f+"_lat").val(c),$("#gmb_markers_group_"+f+"_lng").val(d),get_editable_info_window(f,e),google.maps.event.addListener(e,"click",function(){get_info_window_content(f,e)})}function initialize_map(a){lat_field=$("#gmb_lat_lng-latitude"),lng_field=$("#gmb_lat_lng-longitude");var b=lat_field.val()?lat_field.val():"",c=lng_field.val()?lng_field.val():"";zoom=parseInt($("#gmb_zoom").val()),lat_lng=new google.maps.LatLng(b,c);var d={zoom:zoom,streetViewControl:!1,styles:[{stylers:[{visibility:"simplified"}]},{elementType:"labels",stylers:[{visibility:"off"}]}]};map=new google.maps.Map(a[0],d),places_service=new google.maps.places.PlacesService(map),navigator.geolocation&&"yes"===gmb_data.geolocate_setting&&""==c&&""==b?navigator.geolocation.getCurrentPosition(function(a){initial_location=new google.maps.LatLng(a.coords.latitude,a.coords.longitude),map.setCenter(initial_location),lat_field.val(a.coords.latitude),lng_field.val(a.coords.longitude)}):""!==b&&""!==c?map.setCenter(new google.maps.LatLng(b,c)):(alert("Geolocation service failed."),initial_location=new google.maps.LatLng(gmb_data.default_lat,gmb_data.default_lng),lat_field.val(gmb_data.default_lat),lng_field.val(gmb_data.default_lng),map.setCenter(initial_location)),set_map_type(!1),"none"!==$("#gmb_theme").val()&&set_map_theme(!1),set_street_view(),set_pan_control(),set_draggable(),set_double_click_zoom(),set_mouse_wheel_scroll(),set_map_type_control(),set_map_zoom_control(),"undefined"==typeof autocomplete&&(autocomplete=new google.maps.places.Autocomplete($("#gmb_geocoder")[0]),autocomplete.bindTo("bounds",map),google.maps.event.addListener(autocomplete,"place_changed",function(){return $("#gmb_geocoder").one("blur",function(){$("#gmb_geocoder").val("")}),setTimeout(function(){$("#gmb_geocoder").val("")},10),"undefined"!=typeof tentative_location_marker&&tentative_location_marker.setVisible(!1),place=autocomplete.getPlace(),lat_field.val(place.geometry.location.lat()),lng_field.val(place.geometry.location.lng()),place.geometry?(map.setCenter(place.geometry.location),void add_tentative_marker(map,place.reference)):void alert("Error: Place not found!")})),info_bubble=new google.maps.InfoWindow({maxWidth:315}),google.maps.event.addListenerOnce(map,"idle",function(){handle_map_zoom(map),add_markers(map),"undefined"!=typeof $(".cmb_id_gmb_show_places input:radio").prop("checked")&&"yes"===$(".cmb_id_gmb_show_places input:radio:checked").val()&&perform_places_search()}),google.maps.event.addListener(map,"zoom_changed",function(){handle_map_zoom(map)}),google.maps.event.addListener(map,"dragend",function(){var a=map.getCenter();$(".lat-lng-change-message").slideDown(),$(".lat-lng-update-btn").attr("data-lat",a.lat()),$(".lat-lng-update-btn").attr("data-lng",a.lng())})}function add_tentative_marker(a,b){var c=a.getCenter();tentative_location_marker=new google.maps.Marker({map:a,title:"Map Icons",animation:google.maps.Animation.DROP,position:new google.maps.LatLng(c.lat(),c.lng()),icon:new google.maps.MarkerImage(gmb_data.plugin_url+"/public/assets/img/temp-marker.png"),zIndex:google.maps.Marker.MAX_ZINDEX+1,optimized:!1});var d=google.maps.event.addListener(tentative_location_marker,"mouseover",function(){add_circle(b)}),e=google.maps.event.addListener(tentative_location_marker,"mouseout",function(){hover_circle.setVisible(!1)});google.maps.event.addListener(tentative_location_marker,"click",function(){google.maps.event.removeListener(d),google.maps.event.removeListener(e),hover_circle.setVisible(!0),add_tenative_info_window(b,tentative_location_marker)}),tentative_location_marker.setVisible(!0),a.setZoom(zoom)}function add_tenative_info_window(a,b){var c={key:gmb_data.api_key,reference:a};places_service.getDetails(c,function(a,c){if(c==google.maps.places.PlacesServiceStatus.OK){var d=a.geometry.location.lat(),e=a.geometry.location.lng(),f='<p class="place-title">'+a.name+"</p>";f+=add_place_content_to_info_window(a),f+='<div class="infowindow-toolbar clear"><a href="#" class="add-marker" data-title="'+a.name+'" data-reference="'+a.reference+'" data-lat="'+d+'" data-lng="'+e+'">Add to Map</a></div>',f=set_info_window_wrapper(f),info_bubble.setContent(f),info_bubble.open(map,b),google.maps.event.addListener(info_bubble,"closeclick",function(){hover_circle.setVisible(!1)})}})}function add_place_content_to_info_window(a){var b;return b='<div class="marker-info-wrapper">',b+=a.formatted_address?'<div class="place-address">'+a.formatted_address+"</div>":"",b+=a.formatted_phone_number?'<div class="place-phone">'+a.formatted_phone_number+"</div>":"",b+=a.website?'<div class="place-website"><a href="'+a.website+'" target="_blank" rel="nofollow" title="Click to visit the '+a.name+' website">Website</a></div>':"",a.rating&&(b+='<div class="rating-wrap clear"><p class="numeric-rating">'+a.rating+'</p><div class="star-rating-wrap"><div class="star-rating-size" style="width:'+65*a.rating/5+'px;"></div></div></div>'),b+="</div>"}function get_editable_info_window(index,marker){info_bubble.close(),info_bubble.setContent('<div id="infobubble-content" class="loading"></div>'),info_bubble.open(map,marker);var info_window_data=get_info_window_saved_data(index),info_window_content;info_window_data.title||(info_window_data.title="Point "+index),info_window_content='<input class="edit-place-title" data-field="#gmb_markers_group_'+index+'_title" type="text" value="'+info_window_data.title+'">',info_window_content+='<textarea class="edit-place-description" data-field="#gmb_markers_group_'+index+'_description">'+info_window_data.desc+"</textarea>",info_window_content+='<div class="infowindow-toolbar clear"><ul id="save-toolbar"><li class="info-window-save"><div class="google-btn-blue google-btn google-save-btn" data-tooltip="Save changes" data-index="'+index+'">Save</div></li><li class="info-window-cancel"><div class="google-btn-default google-btn google-cancel-btn" data-tooltip="Cancel edit" data-index="'+index+'">Cancel</div></li></ul><span class="marker-edit-link-wrap" data-index="'+index+'"><a href="#TB_inline?width=600&height=550&inlineId=marker-icon-modal" data-tooltip="Change icon" class="marker-edit-link thickbox"></a></span></div>',info_window_content=set_info_window_wrapper(info_window_content),info_bubble.setContent(info_window_content),initialize_tooltips(),google.maps.event.addDomListener($(".google-save-btn")[0],"click",function(){var a=$(".edit-place-title").data("field"),b=$(".edit-place-title").val(),c=$(".edit-place-description").data("field"),d=$(".edit-place-description").val();$(a).val(b),$(c).val(d),get_info_window_content($(this).data("index"),marker),google.maps.event.removeListener(save_icon_listener),google.maps.event.removeListener(edit_marker_icon_button_click)}),google.maps.event.addDomListener(info_bubble,"closeclick",function(){google.maps.event.removeListener(save_icon_listener),google.maps.event.removeListener(edit_marker_icon_button_click)}),google.maps.event.addDomListener($(".google-cancel-btn")[0],"click",function(){get_info_window_content($(this).data("index"),marker),google.maps.event.removeListener(save_icon_listener),google.maps.event.removeListener(edit_marker_icon_button_click)});var edit_marker_icon_button_click=google.maps.event.addDomListener($(".marker-edit-link-wrap")[0],"click",function(){$(".save-marker-button").attr("data-marker-index",$(this).data("index"))}),save_icon_listener=google.maps.event.addDomListener($(".save-marker-button")[0],"click",function(){var marker_position=marker.getPosition(),marker_icon_data,marker_icon=$(this).data("marker"),marker_icon_color=$(this).data("marker-color"),label_color=$(this).data("label-color"),marker_label_inline_style="color:"+label_color+"; ";"MAP_PIN"===marker_icon?marker_label_inline_style+="font-size: 20px;position: relative; top: -3px;":"SQUARE_PIN"==marker_icon&&(marker_label_inline_style+="font-size: 20px;position: relative; top: 12px;");var marker_label_data='<i class="'+$(this).data("label")+'" style="'+marker_label_inline_style+'"></i>';""==marker_icon?(marker_icon_data=gmb_data.plugin_url+"/public/assets/img/default-marker.png",$("#gmb_markers_group_"+index+"_marker").val(""),marker_label_data=""):(marker_icon_data="{ path : "+marker_icon+', fillColor : "'+marker_icon_color+'", fillOpacity : 1, strokeColor : "", strokeWeight: 0, scale : 1 / 3 }',$("#gmb_markers_group_"+index+"_marker").val(marker_icon_data),marker_icon_data=eval("("+marker_icon_data+")")),marker.setMap(null),$("#gmb_markers_group_"+index+"_label").val(marker_label_data),marker=new Marker({position:marker_position,map:map,zIndex:9,icon:marker_icon_data,label:marker_label_data}),google.maps.event.addListener(marker,"click",function(){get_info_window_content(index,marker)}),$(".icon, .marker-item").removeClass("marker-item-selected"),$(".marker-icon-row, .save-marker-icon, .marker-icon-color-wrap, .marker-label-color-wrap").hide(),$(this).removeData("marker"),$(this).removeData("marker-color"),$(this).removeData("label"),$(this).removeData("label-color"),tb_remove(),google.maps.event.removeListener(save_icon_listener),google.maps.event.removeListener(edit_marker_icon_button_click)})}function set_info_window_wrapper(a){var b='<div id="infobubble-content" class="main-place-infobubble-content">';return b+=a,b+="</div>"}function add_circle(a){hover_circle=new google.maps.Marker({position:tentative_location_marker.getPosition(),zIndex:google.maps.Marker.MAX_ZINDEX-1,optimized:!1,icon:{path:google.maps.SymbolPath.CIRCLE,scale:20,strokeWeight:3,strokeOpacity:.9,strokeColor:"#FFF",fillOpacity:.3,fillColor:"#FFF"},map:map}),google.maps.event.addListener(hover_circle,"click",function(){add_tenative_info_window(a,tentative_location_marker)}),google.maps.event.addListener(tentative_location_marker,"click",function(){hover_circle.setVisible(!0)})}function add_markers(map){clear_main_markers(),$("#gmb_markers_group_repeat .repeatable-grouping").each(function(index){var marker_icon=gmb_data.plugin_url+"/public/assets/img/default-marker.png",marker_label="",custom_marker_icon=$("#gmb_markers_group_"+index+"_marker").val();custom_marker_icon.length>0&&(marker_icon=eval("("+custom_marker_icon+")"));var custom_label=$("#gmb_markers_group_"+index+"_label").val();custom_label.length>0&&(marker_label=custom_label);var location_marker=new Marker({map:map,zIndex:9,icon:marker_icon,label:marker_label}),marker_lat=$("#gmb_markers_group_"+index+"_lat").val(),marker_lng=$("#gmb_markers_group_"+index+"_lng").val();location_marker.setPosition(new google.maps.LatLng(marker_lat,marker_lng)),location_marker.setVisible(!0),google.maps.event.addListener(location_marker,"click",function(){get_info_window_content(index,location_marker)})})}function get_info_window_saved_data(a){var b=new Object;return b.title=$("#gmb_markers_group_"+a+"_title").val(),b.desc=$("#gmb_markers_group_"+a+"_description").val(),b.reference=$("#gmb_markers_group_"+a+"_reference").val(),b.lat=$("#gmb_markers_group_"+a+"_lat").val(),b.lng=$("#gmb_markers_group_"+a+"_lng").val(),b}function get_info_window_content(a,b){info_bubble.close(),info_bubble.setContent('<div id="infobubble-content" class="loading"></div>'),info_bubble.open(map,b);var c,d=get_info_window_saved_data(a);if(d.reference){var e={reference:d.reference};places_service.getDetails(e,function(e,f){f==google.maps.places.PlacesServiceStatus.OK&&(c='<p class="place-title">'+d.title+"</p>",c+='<div class="place-description">'+d.desc+"</div>",c+=add_place_content_to_info_window(e),c+='<div class="infowindow-toolbar"><ul id="edit-toolbar"><li class="edit-info" data-index="'+a+'" data-tooltip="Edit Marker"></li><li class="trash-marker" data-index="'+a+'" data-tooltip="Delete Marker"></li></ul></div>',add_edit_events(c,b))})}else c='<p class="place-title">'+d.title+"</p>",c+='<div class="place-description">'+d.desc+"</div>",c+='<div class="infowindow-toolbar"><ul id="edit-toolbar"><li class="edit-info" data-index="'+a+'" data-tooltip="Edit Marker"></li><li class="trash-marker" data-index="'+a+'" data-tooltip="Delete Marker"></li></ul></div>',add_edit_events(c,b)}function add_edit_events(a,b){a=set_info_window_wrapper(a),info_bubble.setContent(a),initialize_tooltips(),google.maps.event.addDomListener($(".edit-info")[0],"click",function(){get_editable_info_window($(this).data("index"),b)}),google.maps.event.addDomListener($(".trash-marker")[0],"click",function(){var a=$(this).data("index");0===a&&$('tr[data-iterator="'+a+'"] ').find("input,textarea").val(""),$('tr[data-iterator="'+a+'"] .remove-group-row').trigger("click"),info_bubble.close(),b.setVisible(!1)})}function get_marker_index(){var a=parseInt($("#gmb_markers_group_repeat tr.repeatable-grouping").last().attr("data-iterator")),b=$('tr[data-iterator="0"] ').find("input,textarea").val();return b&&0===a?($(".add-group-row.button").trigger("click"),a=1):0!==a&&($(".add-group-row.button").trigger("click"),a=parseInt($("#gmb_markers_group_repeat tr.repeatable-grouping").last().attr("data-iterator"))),a}function get_place_info_window_content(a,b){info_bubble.setContent('<div id="infobubble-content" class="loading"></div>'),info_bubble.open(map,b);var c={reference:a.reference};places_service.getDetails(c,function(a,b){if(b==google.maps.places.PlacesServiceStatus.OK){var c;c='<p class="place-title">'+a.name+"</p>",c+=add_place_content_to_info_window(a),c=set_info_window_wrapper(c),info_bubble.setContent(c),initialize_tooltips()}})}function get_places_type_array(){var a=[];return $('.cmb_id_gmb_places_search_multicheckbox input[type="checkbox"]').each(function(){$(this).is(":checked")&&a.push($(this).val())}),a}function perform_places_search(){$(".places-loading").fadeIn(),$(".warning-message").hide().empty();var a=get_places_type_array();if(clear_search_markers(),a.length>0){var b={location:return_lat_lng(),types:a,radius:parseInt($("#gmb_search_radius").val())};places_service.nearbySearch(b,places_search_callback)}else show_warning_message("<strong>Notice: No Place Types are selected</strong><br/> Please select the types of places you would like to display on this map using the Place Type field checkboxes found below.")}function show_warning_message(a){$(".wpgp-loading").fadeOut(),$(".warning-message").empty().append("<p>"+a+"</p>").fadeIn()}function return_lat_lng(){var a=map.getCenter(),b=new google.maps.LatLng(a.lat(),a.lng());return b}function handle_map_zoom(a){var b=a.getZoom();$("#gmb_zoom").val(b),$("#gmb_zoom").on("change",function(){a.setZoom(parseInt($(this).val()))})}function lat_lng_field_change(a){var b=new google.maps.LatLng($(lat_field).val(),$(lng_field).val());a.panTo(b)}function places_search_callback(a,b,c){var d,e=0;if(b==google.maps.places.PlacesServiceStatus.OK){for(e=0;d=a[e];e++)create_search_result_marker(a[e]);c.hasNextPage?c.nextPage():$(".places-loading").fadeOut()}}function create_search_result_marker(a){var b=new Marker({map:map,zIndex:0,optimized:!1});b.setIcon({url:a.icon,size:new google.maps.Size(24,24),origin:new google.maps.Point(0,0),anchor:new google.maps.Point(17,34),scaledSize:new google.maps.Size(24,24)}),b.setPosition(a.geometry.location),b.setVisible(!0),google.maps.event.addListener(b,"click",function(){get_place_info_window_content(a,b)}),search_markers.push(b)}function clear_main_markers(){for(var a=0;a<location_marker_array.length;a++)location_marker_array[a].setMap(null);for(location_marker_array.length=0,a=0;a<info_bubble_array.length;a++)info_bubble_array[a].close(),google.maps.event.trigger(info_bubble_array[a],"closeclick");info_bubble_array.length=0}function clear_search_markers(){for(var a=0;a<search_markers.length;a++)search_markers[a].setMap(null);search_markers=[]}function geocode_position(a){var b={location:a,radius:10};places_service.nearbySearch(b,function(a,b){if(b==google.maps.places.PlacesServiceStatus.OK){var c="";if(info_bubble.close(),a.length>1){c='<div id="infobubble-content"><p>Hmm, it looks like there are multiple places in this area. Please confirm which place you would like this marker to display:</p>';for(var d=0;d<a.length;d++)c+='<a class="marker-confirm-place" data-reference="'+a[d].reference+'" data-name-address="'+a[d].name+", "+a[d].vicinity+'">'+a[d].name+"</a>";c+="</div>",google.maps.event.addDomListener(info_bubble,"domready",function(){$(".marker-confirm-place").on("click",function(a){a.preventDefault(),$("#gmb_geocoder").val($(this).data("name-address")),$("#gmb_reference").val($(this).data("reference")),info_bubble.close(),get_info_window_content($(this).data("reference"))})})}info_bubble.setContent(c),info_bubble.open(map,location_marker)}})}function scroll_to_field(a){$("html, body").animate({scrollTop:parseInt($(a).offset().top)},600)}function marker_drag_end(a){var b=a.getPosition();geocode_position(b),$(lat_field).val(b.lat()),$(lng_field).val(b.lng()),map.panTo(b)}function calc_radius(a,b){radius_marker=new Marker({position:a.getCenter(),map:a,icon:{path:MAP_PIN,fillColor:"#0E77E9",fillOpacity:0,strokeColor:"",strokeWeight:0,scale:.25},label:'<i class="map-icon-crosshairs radius-label"></i>',zIndex:google.maps.Marker.MAX_ZINDEX+1,optimized:!1}),radius_circle=new google.maps.Circle({map:a,fillColor:"#BBD8E9",fillOpacity:.3,radius:b,strokeColor:"#BBD8E9",strokeOpacity:.9,strokeWeight:2}),radius_circle.bindTo("center",radius_marker,"position")}function toggle_metabox_fields(){var a=$(".cmb_id_gmb_show_places input:radio");a.prop("checked")===!0&&($(".cmb_id_gmb_search_radius").show(),$(".cmb_id_gmb_places_search_multicheckbox").show()),a.prop("checked")===!1&&$("#gmb_show_places2").prop("checked",!0),a.on("change",function(){$(".cmb_id_gmb_search_radius").toggle(),$(".cmb_id_gmb_places_search_multicheckbox").toggle(),"no"===$(this).val()?clear_search_markers():perform_places_search()})}function set_map_size(){var a=$("#gmb_width_height-width").val(),b=$('input[name="gmb_width_height[map_width_unit]"]:checked').val(),c=$("#gmb_width_height-height").val();$("#map").css({width:a+b,height:c})}function set_map_zoom_control(){var a=$("#gmb_zoom_control").val().toUpperCase();map.setOptions("NONE"==a?{zoomControl:!1}:{zoomControl:!0,zoomControlOptions:{style:google.maps.ZoomControlStyle[a]}})}function set_map_type_control(){var a=$("#gmb_map_type_control").val().toUpperCase();map.setOptions("NONE"==a?{mapTypeControl:!1}:{mapTypeControl:!0,mapTypeControlOptions:{style:google.maps.MapTypeControlStyle[a]}})}function set_mouse_wheel_scroll(){var a=$("#gmb_wheel_zoom").val();map.setOptions("none"===a?{scrollwheel:!1}:{scrollwheel:!0})}function set_double_click_zoom(){var a=$("#gmb_double_click").val();map.setOptions("none"===a?{disableDoubleClickZoom:!0}:{disableDoubleClickZoom:!1})}function set_draggable(){var a=$("#gmb_draggable").val();map.setOptions("none"==a?{draggable:!1}:{draggable:!0})}function set_pan_control(){var a=$("#gmb_pan").val();map.setOptions("none"===a?{panControl:!1}:{panControl:!0})}function set_street_view(){var a=$("#gmb_street_view").val();map.setOptions("none"===a?{streetViewControl:!1}:{streetViewControl:!0})}function set_map_type(a){a===!0&&($("#gmb_theme").val("none"),$("#gmb_theme_json").val("none"));var b=$("#gmb_type").val().toUpperCase();map.setOptions({mapTypeId:google.maps.MapTypeId[b],styles:!1})}function set_map_theme(reset){reset===!0&&($("#gmb_type").val("RoadMap"),$("#gmb_theme_json").val("none"));var map_theme_input_val=parseInt($("#gmb_theme").val());"none"===map_theme_input_val&&set_map_type(),$.each(snazzy_json,function(index){snazzy_json[index].id===map_theme_input_val&&(map_theme_input_val=eval(snazzy_json[index].json),$("#gmb_theme_json").val(snazzy_json[index].json))}),map.setOptions({mapTypeId:google.maps.MapTypeId.ROADMAP,styles:map_theme_input_val})}function set_map_marker_icon(){$(".marker-item").on("click",function(){var a=$(this).data("marker");$(".marker-item").removeClass("marker-item-selected"),$(this).addClass("marker-item-selected"),"default"==a?($(".marker-icon-row, .marker-icon-color-wrap, .marker-label-color-wrap").slideUp(),$(".save-marker-icon").slideDown(),$("#TB_window .save-marker-button").attr("data-marker",""),$("#TB_window .save-marker-button").attr("data-label","")):($(".marker-icon-color-wrap, .marker-icon-row").slideDown(),$("#TB_window .save-marker-button").attr("data-marker",a))}),$(".icon").on("click",function(){$(".icon").removeClass("marker-item-selected"),$(this).addClass("marker-item-selected"),$(".save-marker-icon, .marker-label-color-wrap").slideDown(),$("#TB_window .save-marker-button").attr("data-label",$(this).find("span").attr("class"))});var a={change:function(a,b){var c=b.color.toString();$(this).hasClass("marker-color")===!0?($(".save-marker-button").attr("data-marker-color",c),$(".marker-svg polygon, .marker-svg path").attr("fill",c)):$(this).hasClass("label-color")===!0&&($(".save-marker-button").attr("data-label-color",c),$(".icon-inner span").css("color",c))},clear:function(){},hide:!0,palettes:!0};$(".color-picker").wpColorPicker(a)}function initialize_tooltips(){$('[data-tooltip!=""]').qtip({content:{attr:"data-tooltip"},hide:{fixed:!0,delay:100},position:{my:"top center",at:"bottom center"},style:{classes:"qtip-tipsy"},show:{when:{event:"focus"},effect:function(){$(this).fadeIn(200)}}})}$(window).load(function(){toggle_metabox_fields(),initialize_tooltips(),initialize_map($("#map")),$("#gmb_lat_lng-latitude").on("change",function(){lat_lng_field_change(map)}),$("#gmb_lat_lng-longitude").on("change",function(){lat_lng_field_change(map)}),$(".drop-marker").on("click",function(a){if(a.preventDefault(),$(this).hasClass("active"))$(this).text("Drop a Marker").removeClass("active"),map.setOptions({draggableCursor:null});else{$(this).text("Click on the Map").addClass("active"),map.setOptions({draggableCursor:"crosshair"});var b=google.maps.event.addListener(map,"click",function(a){drop_marker(a.latLng,b)})}});var a;$("#gmb_search_radius").on("focus",function(){a=$(this).val(),calc_radius(map,parseInt($(this).val()))}).focusout(function(){a!==$(this).val()&&perform_places_search(),radius_circle.setMap(null),radius_marker.setMap(null)}),$('[name^="gmb_places_search_multicheckbox"]').on("change",function(){0===$(".places-change-message").length&&($(".cmb_id_gmb_places_search_multicheckbox ul").prepend('<div class="wpgp-message places-change-message clear"><p>Place selections have changed.</p><a href="#" class="button update-places-map">Update Map</a></div>'),$(".places-change-message").slideDown())}),$(document).on("click",".update-places-map",function(a){a.preventDefault(),scroll_to_field("#google_maps_preview_metabox"),perform_places_search(),$(this).parent().fadeOut(function(){$(this).remove()})}),$(".lat-lng-update-btn").on("click",function(a){a.preventDefault(),$(".lat-lng-change-message").slideUp(),$("#gmb_lat_lng-latitude").val($(this).attr("data-lat")),$("#gmb_lat_lng-longitude").val($(this).attr("data-lng"))}),$(document).on("click",".add-marker",function(a){a.preventDefault(),hover_circle.setVisible(!1);var b=new google.maps.Marker({position:tentative_location_marker.getPosition(),map:map,icon:gmb_data.plugin_url+"/public/assets/img/default-marker.png",zIndex:google.maps.Marker.MAX_ZINDEX+1,optimized:!1});tentative_location_marker.setVisible(!1);var c=get_marker_index(),d=$(this).data("reference");$("#gmb_markers_group_"+c+"_title").val($(this).data("title")),$("#gmb_markers_group_"+c+"_lat").val($(this).data("lat")),$("#gmb_markers_group_"+c+"_lng").val($(this).data("lng")),$("#gmb_markers_group_"+c+"_reference").val(d),get_editable_info_window(c,b),google.maps.event.addListener(b,"click",function(){get_info_window_content(c,b)})}),set_map_marker_icon(),$("#gmb_type").change(function(){set_map_type(!0)}),$("#gmb_theme").change(function(){set_map_theme(!0)}),$("#gmb_street_view").change(function(){set_street_view()}),$("#gmb_pan").change(function(){set_pan_control()}),$("#gmb_draggable").change(function(){set_draggable()}),$("#gmb_double_click").change(function(){set_double_click_zoom()}),$("#gmb_wheel_zoom").change(function(){set_mouse_wheel_scroll()}),$("#gmb_map_type_control").change(function(){set_map_type_control()}),$("#gmb_zoom_control").change(function(){set_map_zoom_control()}),$("#gmb_width_height-width, #gmb_width_height-height").keyup(function(){delay(function(){set_map_size()},500)}),$('input[name="gmb_width_height[map_width_unit]"]').change(function(){set_map_size()})});var map,places_service,lat_lng,zoom,lat_field,lng_field,radius_circle,radius_marker,place,autocomplete,info_bubble,info_bubble_array=[],tentative_location_marker,location_marker,location_marker_array=[],search_markers=[],hover_circle,initial_location,snazzy_json=$.parseJSON(eval(gmb_data.snazzy)),delay=function(){var a=0;return function(b,c){clearTimeout(a),a=setTimeout(b,c)}}()}(jQuery);
1
+ !function($){"use strict";function drop_marker(a,b){var c=a.lat(),d=a.lng();"undefined"!=typeof e&&e.setVisible(!1),$(".drop-marker").removeClass("active").text("Drop a Marker"),map.setOptions({draggableCursor:null}),google.maps.event.removeListener(b);var e=new Marker({position:a,map:map,icon:gmb_data.plugin_url+"/public/assets/img/default-marker.png",zIndex:google.maps.Marker.MAX_ZINDEX+1,optimized:!1}),f=get_marker_index();$("#gmb_markers_group_"+f+"_title").val("Point "+f),$("#gmb_markers_group_"+f+"_lat").val(c),$("#gmb_markers_group_"+f+"_lng").val(d),get_editable_info_window(f,e),google.maps.event.addListener(e,"click",function(){get_info_window_content(f,e)})}function initialize_map(a){lat_field=$("#gmb_lat_lng-latitude"),lng_field=$("#gmb_lat_lng-longitude");var b=lat_field.val()?lat_field.val():"",c=lng_field.val()?lng_field.val():"";zoom=parseInt($("#gmb_zoom").val()),lat_lng=new google.maps.LatLng(b,c);var d={zoom:zoom,streetViewControl:!1,styles:[{stylers:[{visibility:"simplified"}]},{elementType:"labels",stylers:[{visibility:"off"}]}]};map=new google.maps.Map(a[0],d),places_service=new google.maps.places.PlacesService(map),navigator.geolocation&&"yes"===gmb_data.geolocate_setting&&""==c&&""==b?navigator.geolocation.getCurrentPosition(function(a){initial_location=new google.maps.LatLng(a.coords.latitude,a.coords.longitude),map.setCenter(initial_location),lat_field.val(a.coords.latitude),lng_field.val(a.coords.longitude)}):""!==b&&""!==c?map.setCenter(new google.maps.LatLng(b,c)):(alert("Geolocation service failed."),initial_location=new google.maps.LatLng(gmb_data.default_lat,gmb_data.default_lng),lat_field.val(gmb_data.default_lat),lng_field.val(gmb_data.default_lng),map.setCenter(initial_location)),set_map_type(!1),"none"!==$("#gmb_theme").val()&&set_map_theme(!1),set_street_view(),set_pan_control(),set_draggable(),set_double_click_zoom(),set_mouse_wheel_scroll(),set_map_type_control(),set_map_zoom_control(),"undefined"==typeof autocomplete&&(autocomplete=new google.maps.places.Autocomplete($("#gmb_geocoder")[0]),autocomplete.bindTo("bounds",map),google.maps.event.addListener(autocomplete,"place_changed",function(){return $("#gmb_geocoder").one("blur",function(){$("#gmb_geocoder").val("")}),setTimeout(function(){$("#gmb_geocoder").val("")},10),"undefined"!=typeof tentative_location_marker&&tentative_location_marker.setVisible(!1),place=autocomplete.getPlace(),lat_field.val(place.geometry.location.lat()),lng_field.val(place.geometry.location.lng()),place.geometry?(map.setCenter(place.geometry.location),void add_tentative_marker(map,place.reference)):void alert("Error: Place not found!")})),info_bubble=new google.maps.InfoWindow({maxWidth:315}),google.maps.event.addListenerOnce(map,"idle",function(){handle_map_zoom(map),add_markers(map),"undefined"!=typeof $(".cmb_id_gmb_show_places input:radio").prop("checked")&&"yes"===$(".cmb_id_gmb_show_places input:radio:checked").val()&&perform_places_search()}),google.maps.event.addListener(map,"zoom_changed",function(){handle_map_zoom(map)}),google.maps.event.addListener(map,"dragend",function(){var a=map.getCenter();$(".lat-lng-change-message").slideDown(),$(".lat-lng-update-btn").attr("data-lat",a.lat()),$(".lat-lng-update-btn").attr("data-lng",a.lng())})}function add_tentative_marker(a,b){var c=a.getCenter();tentative_location_marker=new google.maps.Marker({map:a,title:"Map Icons",animation:google.maps.Animation.DROP,position:new google.maps.LatLng(c.lat(),c.lng()),icon:new google.maps.MarkerImage(gmb_data.plugin_url+"/public/assets/img/temp-marker.png"),zIndex:google.maps.Marker.MAX_ZINDEX+1,optimized:!1});var d=google.maps.event.addListener(tentative_location_marker,"mouseover",function(){add_circle(b)}),e=google.maps.event.addListener(tentative_location_marker,"mouseout",function(){hover_circle.setVisible(!1)});google.maps.event.addListener(tentative_location_marker,"click",function(){google.maps.event.removeListener(d),google.maps.event.removeListener(e),hover_circle.setVisible(!0),add_tenative_info_window(b,tentative_location_marker)}),tentative_location_marker.setVisible(!0),a.setZoom(zoom)}function add_tenative_info_window(a,b){var c={key:gmb_data.api_key,reference:a};places_service.getDetails(c,function(a,c){if(c==google.maps.places.PlacesServiceStatus.OK){var d=a.geometry.location.lat(),e=a.geometry.location.lng(),f='<p class="place-title">'+a.name+"</p>";f+=add_place_content_to_info_window(a),f+='<div class="infowindow-toolbar clear"><a href="#" class="add-marker" data-title="'+a.name+'" data-reference="'+a.reference+'" data-lat="'+d+'" data-lng="'+e+'">Add to Map</a></div>',f=set_info_window_wrapper(f),info_bubble.setContent(f),info_bubble.open(map,b),google.maps.event.addListener(info_bubble,"closeclick",function(){hover_circle.setVisible(!1)})}})}function add_place_content_to_info_window(a){var b;return b='<div class="marker-info-wrapper">',b+=a.formatted_address?'<div class="place-address">'+a.formatted_address+"</div>":"",b+=a.formatted_phone_number?'<div class="place-phone">'+a.formatted_phone_number+"</div>":"",b+=a.website?'<div class="place-website"><a href="'+a.website+'" target="_blank" rel="nofollow" title="Click to visit the '+a.name+' website">Website</a></div>':"",a.rating&&(b+='<div class="rating-wrap clear"><p class="numeric-rating">'+a.rating+'</p><div class="star-rating-wrap"><div class="star-rating-size" style="width:'+65*a.rating/5+'px;"></div></div></div>'),b+="</div>"}function get_editable_info_window(index,marker){info_bubble.close(),info_bubble.setContent('<div id="infobubble-content" class="loading"></div>'),info_bubble.open(map,marker);var info_window_data=get_info_window_saved_data(index),info_window_content;info_window_data.title||(info_window_data.title="Point "+index),info_window_content='<input class="edit-place-title" data-field="#gmb_markers_group_'+index+'_title" type="text" value="'+info_window_data.title+'">',info_window_content+='<textarea class="edit-place-description" data-field="#gmb_markers_group_'+index+'_description">'+info_window_data.desc+"</textarea>",info_window_content+='<div class="infowindow-toolbar clear"><ul id="save-toolbar"><li class="info-window-save"><div class="google-btn-blue google-btn google-save-btn" data-tooltip="Save changes" data-index="'+index+'">Save</div></li><li class="info-window-cancel"><div class="google-btn-default google-btn google-cancel-btn" data-tooltip="Cancel edit" data-index="'+index+'">Cancel</div></li></ul><span class="marker-edit-link-wrap" data-index="'+index+'"><a href="#TB_inline?width=600&height=550&inlineId=marker-icon-modal" data-tooltip="Change icon" class="marker-edit-link thickbox"></a></span></div>',info_window_content=set_info_window_wrapper(info_window_content),info_bubble.setContent(info_window_content),initialize_tooltips(),google.maps.event.addDomListener($(".google-save-btn")[0],"click",function(){var a=$(".edit-place-title").data("field"),b=$(".edit-place-title").val(),c=$(".edit-place-description").data("field"),d=$(".edit-place-description").val();$(a).val(b),$(c).val(d),get_info_window_content($(this).data("index"),marker),google.maps.event.removeListener(save_icon_listener),google.maps.event.removeListener(edit_marker_icon_button_click)}),google.maps.event.addDomListener(info_bubble,"closeclick",function(){google.maps.event.removeListener(save_icon_listener),google.maps.event.removeListener(edit_marker_icon_button_click)}),google.maps.event.addDomListener($(".google-cancel-btn")[0],"click",function(){get_info_window_content($(this).data("index"),marker),google.maps.event.removeListener(save_icon_listener),google.maps.event.removeListener(edit_marker_icon_button_click)});var edit_marker_icon_button_click=google.maps.event.addDomListener($(".marker-edit-link-wrap")[0],"click",function(){$(".save-marker-button").attr("data-marker-index",$(this).data("index"))}),save_icon_listener=google.maps.event.addDomListener($(".save-marker-button")[0],"click",function(){var marker_position=marker.getPosition(),marker_icon_data,marker_icon=$(this).data("marker"),marker_icon_color=$(this).data("marker-color"),label_color=$(this).data("label-color"),marker_label_inline_style="color:"+label_color+"; ";"MAP_PIN"===marker_icon?marker_label_inline_style+="font-size: 20px;position: relative; top: -3px;":"SQUARE_PIN"==marker_icon&&(marker_label_inline_style+="font-size: 20px;position: relative; top: 12px;");var marker_label_data='<i class="'+$(this).data("label")+'" style="'+marker_label_inline_style+'"></i>';""==marker_icon?(marker_icon_data=gmb_data.plugin_url+"/public/assets/img/default-marker.png",$("#gmb_markers_group_"+index+"_marker").val(""),marker_label_data=""):(marker_icon_data="{ path : "+marker_icon+', fillColor : "'+marker_icon_color+'", fillOpacity : 1, strokeColor : "", strokeWeight: 0, scale : 1 / 3 }',$("#gmb_markers_group_"+index+"_marker").val(marker_icon_data),marker_icon_data=eval("("+marker_icon_data+")")),marker.setMap(null),$("#gmb_markers_group_"+index+"_label").val(marker_label_data),marker=new Marker({position:marker_position,map:map,zIndex:9,icon:marker_icon_data,label:marker_label_data}),google.maps.event.addListener(marker,"click",function(){get_info_window_content(index,marker)}),$(".icon, .marker-item").removeClass("marker-item-selected"),$(".marker-icon-row, .save-marker-icon, .marker-icon-color-wrap, .marker-label-color-wrap").hide(),$(this).removeData("marker"),$(this).removeData("marker-color"),$(this).removeData("label"),$(this).removeData("label-color"),tb_remove(),google.maps.event.removeListener(save_icon_listener),google.maps.event.removeListener(edit_marker_icon_button_click)})}function set_info_window_wrapper(a){var b='<div id="infobubble-content" class="main-place-infobubble-content">';return b+=a,b+="</div>"}function add_circle(a){hover_circle=new google.maps.Marker({position:tentative_location_marker.getPosition(),zIndex:google.maps.Marker.MAX_ZINDEX-1,optimized:!1,icon:{path:google.maps.SymbolPath.CIRCLE,scale:20,strokeWeight:3,strokeOpacity:.9,strokeColor:"#FFF",fillOpacity:.3,fillColor:"#FFF"},map:map}),google.maps.event.addListener(hover_circle,"click",function(){add_tenative_info_window(a,tentative_location_marker)}),google.maps.event.addListener(tentative_location_marker,"click",function(){hover_circle.setVisible(!0)})}function add_markers(map){clear_main_markers(),$("#gmb_markers_group_repeat .repeatable-grouping").each(function(index){var marker_icon=gmb_data.plugin_url+"/public/assets/img/default-marker.png",marker_label="",custom_marker_icon=$("#gmb_markers_group_"+index+"_marker").val();custom_marker_icon.length>0&&(marker_icon=eval("("+custom_marker_icon+")"));var custom_label=$("#gmb_markers_group_"+index+"_label").val();custom_label.length>0&&(marker_label=custom_label);var location_marker=new Marker({map:map,zIndex:9,icon:marker_icon,label:marker_label}),marker_lat=$("#gmb_markers_group_"+index+"_lat").val(),marker_lng=$("#gmb_markers_group_"+index+"_lng").val();location_marker.setPosition(new google.maps.LatLng(marker_lat,marker_lng)),location_marker.setVisible(!0),google.maps.event.addListener(location_marker,"click",function(){get_info_window_content(index,location_marker)})})}function get_info_window_saved_data(a){var b=new Object;return b.title=$("#gmb_markers_group_"+a+"_title").val(),b.desc=$("#gmb_markers_group_"+a+"_description").val(),b.reference=$("#gmb_markers_group_"+a+"_reference").val(),b.lat=$("#gmb_markers_group_"+a+"_lat").val(),b.lng=$("#gmb_markers_group_"+a+"_lng").val(),b}function get_info_window_content(a,b){info_bubble.close(),info_bubble.setContent('<div id="infobubble-content" class="loading"></div>'),info_bubble.open(map,b);var c,d=get_info_window_saved_data(a);if(d.reference){var e={reference:d.reference};places_service.getDetails(e,function(e,f){f==google.maps.places.PlacesServiceStatus.OK&&(c='<p class="place-title">'+d.title+"</p>",c+='<div class="place-description">'+d.desc+"</div>",c+=add_place_content_to_info_window(e),c+='<div class="infowindow-toolbar"><ul id="edit-toolbar"><li class="edit-info" data-index="'+a+'" data-tooltip="Edit Marker"></li><li class="trash-marker" data-index="'+a+'" data-tooltip="Delete Marker"></li></ul></div>',add_edit_events(c,b))})}else c='<p class="place-title">'+d.title+"</p>",c+='<div class="place-description">'+d.desc+"</div>",c+='<div class="infowindow-toolbar"><ul id="edit-toolbar"><li class="edit-info" data-index="'+a+'" data-tooltip="Edit Marker"></li><li class="trash-marker" data-index="'+a+'" data-tooltip="Delete Marker"></li></ul></div>',add_edit_events(c,b)}function add_edit_events(a,b){a=set_info_window_wrapper(a),info_bubble.setContent(a),initialize_tooltips(),google.maps.event.addDomListener($(".edit-info")[0],"click",function(){get_editable_info_window($(this).data("index"),b)}),google.maps.event.addDomListener($(".trash-marker")[0],"click",function(){var a=$(this).data("index");0===a&&$('tr[data-iterator="'+a+'"] ').find("input,textarea").val(""),$('tr[data-iterator="'+a+'"] .remove-group-row').trigger("click"),info_bubble.close(),b.setVisible(!1)})}function get_marker_index(){var a=parseInt($("#gmb_markers_group_repeat tr.repeatable-grouping").last().attr("data-iterator")),b=$('tr[data-iterator="0"] ').find("input,textarea").val();return b&&0===a?($(".add-group-row.button").trigger("click"),a=1):0!==a&&($(".add-group-row.button").trigger("click"),a=parseInt($("#gmb_markers_group_repeat tr.repeatable-grouping").last().attr("data-iterator"))),a}function get_place_info_window_content(a,b){info_bubble.setContent('<div id="infobubble-content" class="loading"></div>'),info_bubble.open(map,b);var c={reference:a.reference};places_service.getDetails(c,function(a,b){if(b==google.maps.places.PlacesServiceStatus.OK){var c;c='<p class="place-title">'+a.name+"</p>",c+=add_place_content_to_info_window(a),c=set_info_window_wrapper(c),info_bubble.setContent(c),initialize_tooltips()}})}function get_places_type_array(){var a=[];return $('.cmb_id_gmb_places_search_multicheckbox input[type="checkbox"]').each(function(){$(this).is(":checked")&&a.push($(this).val())}),a}function perform_places_search(){$(".places-loading").fadeIn(),$(".warning-message").hide().empty();var a=get_places_type_array();if(clear_search_markers(),a.length>0){var b={location:return_lat_lng(),types:a,radius:parseInt($("#gmb_search_radius").val())};places_service.nearbySearch(b,places_search_callback)}else show_warning_message("<strong>Notice: No Place Types are selected</strong><br/> Please select the types of places you would like to display on this map using the Place Type field checkboxes found below.")}function show_warning_message(a){$(".wpgp-loading").fadeOut(),$(".warning-message").empty().append("<p>"+a+"</p>").fadeIn()}function return_lat_lng(){var a=map.getCenter(),b=new google.maps.LatLng(a.lat(),a.lng());return b}function handle_map_zoom(a){var b=a.getZoom();$("#gmb_zoom").val(b),$("#gmb_zoom").on("change",function(){a.setZoom(parseInt($(this).val()))})}function lat_lng_field_change(a){var b=new google.maps.LatLng($(lat_field).val(),$(lng_field).val());a.panTo(b)}function places_search_callback(a,b,c){var d,e=0;if(b==google.maps.places.PlacesServiceStatus.OK){for(e=0;d=a[e];e++)create_search_result_marker(a[e]);c.hasNextPage?c.nextPage():$(".places-loading").fadeOut()}}function create_search_result_marker(a){var b=new Marker({map:map,zIndex:0,optimized:!1});b.setIcon({url:a.icon,size:new google.maps.Size(24,24),origin:new google.maps.Point(0,0),anchor:new google.maps.Point(17,34),scaledSize:new google.maps.Size(24,24)}),b.setPosition(a.geometry.location),b.setVisible(!0),google.maps.event.addListener(b,"click",function(){get_place_info_window_content(a,b)}),search_markers.push(b)}function clear_main_markers(){for(var a=0;a<location_marker_array.length;a++)location_marker_array[a].setMap(null);for(location_marker_array.length=0,a=0;a<info_bubble_array.length;a++)info_bubble_array[a].close(),google.maps.event.trigger(info_bubble_array[a],"closeclick");info_bubble_array.length=0}function clear_search_markers(){for(var a=0;a<search_markers.length;a++)search_markers[a].setMap(null);search_markers=[]}function geocode_position(a){var b={location:a,radius:10};places_service.nearbySearch(b,function(a,b){if(b==google.maps.places.PlacesServiceStatus.OK){var c="";if(info_bubble.close(),a.length>1){c='<div id="infobubble-content"><p>Hmm, it looks like there are multiple places in this area. Please confirm which place you would like this marker to display:</p>';for(var d=0;d<a.length;d++)c+='<a class="marker-confirm-place" data-reference="'+a[d].reference+'" data-name-address="'+a[d].name+", "+a[d].vicinity+'">'+a[d].name+"</a>";c+="</div>",google.maps.event.addDomListener(info_bubble,"domready",function(){$(".marker-confirm-place").on("click",function(a){a.preventDefault(),$("#gmb_geocoder").val($(this).data("name-address")),$("#gmb_reference").val($(this).data("reference")),info_bubble.close(),get_info_window_content($(this).data("reference"))})})}info_bubble.setContent(c),info_bubble.open(map,location_marker)}})}function scroll_to_field(a){$("html, body").animate({scrollTop:parseInt($(a).offset().top)},600)}function marker_drag_end(a){var b=a.getPosition();geocode_position(b),$(lat_field).val(b.lat()),$(lng_field).val(b.lng()),map.panTo(b)}function calc_radius(a,b){radius_marker=new Marker({position:a.getCenter(),map:a,icon:{path:MAP_PIN,fillColor:"#0E77E9",fillOpacity:0,strokeColor:"",strokeWeight:0,scale:.25},label:'<i class="map-icon-crosshairs radius-label"></i>',zIndex:google.maps.Marker.MAX_ZINDEX+1,optimized:!1}),radius_circle=new google.maps.Circle({map:a,fillColor:"#BBD8E9",fillOpacity:.3,radius:b,strokeColor:"#BBD8E9",strokeOpacity:.9,strokeWeight:2}),radius_circle.bindTo("center",radius_marker,"position")}function toggle_metabox_fields(){var a=$(".cmb_id_gmb_show_places input:radio");a.prop("checked")===!0&&($(".cmb_id_gmb_search_radius").show(),$(".cmb_id_gmb_places_search_multicheckbox").show()),a.prop("checked")===!1&&$("#gmb_show_places2").prop("checked",!0),a.on("change",function(){$(".cmb_id_gmb_search_radius").toggle(),$(".cmb_id_gmb_places_search_multicheckbox").toggle(),"no"===$(this).val()?clear_search_markers():perform_places_search()})}function set_map_size(){var a=$("#gmb_width_height-width").val(),b=$('input[name="gmb_width_height[map_width_unit]"]:checked').val(),c=$("#gmb_width_height-height").val();$("#map").css({width:a+b,height:c})}function set_map_zoom_control(){var a=$("#gmb_zoom_control").val().toUpperCase();map.setOptions("NONE"==a?{zoomControl:!1}:{zoomControl:!0,zoomControlOptions:{style:google.maps.ZoomControlStyle[a]}})}function set_map_type_control(){var a=$("#gmb_map_type_control").val().toUpperCase();map.setOptions("NONE"==a?{mapTypeControl:!1}:{mapTypeControl:!0,mapTypeControlOptions:{style:google.maps.MapTypeControlStyle[a]}})}function set_mouse_wheel_scroll(){var a=$("#gmb_wheel_zoom").val();map.setOptions("none"===a?{scrollwheel:!1}:{scrollwheel:!0})}function set_double_click_zoom(){var a=$("#gmb_double_click").val();map.setOptions("none"===a?{disableDoubleClickZoom:!0}:{disableDoubleClickZoom:!1})}function set_draggable(){var a=$("#gmb_draggable").val();map.setOptions("none"==a?{draggable:!1}:{draggable:!0})}function set_pan_control(){var a=$("#gmb_pan").val();map.setOptions("none"===a?{panControl:!1}:{panControl:!0})}function set_street_view(){var a=$("#gmb_street_view").val();map.setOptions("none"===a?{streetViewControl:!1}:{streetViewControl:!0})}function set_map_type(a){a===!0&&($("#gmb_theme").val("none"),$("#gmb_theme_json").val("none"));var b=$("#gmb_type").val().toUpperCase();map.setOptions({mapTypeId:google.maps.MapTypeId[b],styles:!1})}function set_map_theme(reset){reset===!0&&($("#gmb_type").val("RoadMap"),$("#gmb_theme_json").val("none")),$.getJSON(gmb_data.snazzy,function(data){var map_theme_input_val=parseInt($("#gmb_theme").val());"none"===map_theme_input_val&&set_map_type(),$.each(data,function(index){data[index].id===map_theme_input_val&&(map_theme_input_val=eval(data[index].json),$("#gmb_theme_json").val(data[index].json))}),map.setOptions({mapTypeId:google.maps.MapTypeId.ROADMAP,styles:map_theme_input_val})})}function set_map_marker_icon(){$(".marker-item").on("click",function(){var a=$(this).data("marker");$(".marker-item").removeClass("marker-item-selected"),$(this).addClass("marker-item-selected"),"default"==a?($(".marker-icon-row, .marker-icon-color-wrap, .marker-label-color-wrap").slideUp(),$(".save-marker-icon").slideDown(),$("#TB_window .save-marker-button").attr("data-marker",""),$("#TB_window .save-marker-button").attr("data-label","")):($(".marker-icon-color-wrap, .marker-icon-row").slideDown(),$("#TB_window .save-marker-button").attr("data-marker",a))}),$(".icon").on("click",function(){$(".icon").removeClass("marker-item-selected"),$(this).addClass("marker-item-selected"),$(".save-marker-icon, .marker-label-color-wrap").slideDown(),$("#TB_window .save-marker-button").attr("data-label",$(this).find("span").attr("class"))});var a={change:function(a,b){var c=b.color.toString();$(this).hasClass("marker-color")===!0?($(".save-marker-button").attr("data-marker-color",c),$(".marker-svg polygon, .marker-svg path").attr("fill",c)):$(this).hasClass("label-color")===!0&&($(".save-marker-button").attr("data-label-color",c),$(".icon-inner span").css("color",c))},clear:function(){},hide:!0,palettes:!0};$(".color-picker").wpColorPicker(a)}function initialize_tooltips(){$('[data-tooltip!=""]').qtip({content:{attr:"data-tooltip"},hide:{fixed:!0,delay:100},position:{my:"top center",at:"bottom center"},style:{classes:"qtip-tipsy"},show:{when:{event:"focus"},effect:function(){$(this).fadeIn(200)}}})}$(window).load(function(){toggle_metabox_fields(),initialize_tooltips(),initialize_map($("#map")),$("#gmb_lat_lng-latitude").on("change",function(){lat_lng_field_change(map)}),$("#gmb_lat_lng-longitude").on("change",function(){lat_lng_field_change(map)}),$(".drop-marker").on("click",function(a){if(a.preventDefault(),$(this).hasClass("active"))$(this).text("Drop a Marker").removeClass("active"),map.setOptions({draggableCursor:null});else{$(this).text("Click on the Map").addClass("active"),map.setOptions({draggableCursor:"crosshair"});var b=google.maps.event.addListener(map,"click",function(a){drop_marker(a.latLng,b)})}});var a;$("#gmb_search_radius").on("focus",function(){a=$(this).val(),calc_radius(map,parseInt($(this).val()))}).focusout(function(){a!==$(this).val()&&perform_places_search(),radius_circle.setMap(null),radius_marker.setMap(null)}),$('[name^="gmb_places_search_multicheckbox"]').on("change",function(){0===$(".places-change-message").length&&($(".cmb_id_gmb_places_search_multicheckbox ul").prepend('<div class="wpgp-message places-change-message clear"><p>Place selections have changed.</p><a href="#" class="button update-places-map">Update Map</a></div>'),$(".places-change-message").slideDown())}),$(document).on("click",".update-places-map",function(a){a.preventDefault(),scroll_to_field("#google_maps_preview_metabox"),perform_places_search(),$(this).parent().fadeOut(function(){$(this).remove()})}),$(".lat-lng-update-btn").on("click",function(a){a.preventDefault(),$(".lat-lng-change-message").slideUp(),$("#gmb_lat_lng-latitude").val($(this).attr("data-lat")),$("#gmb_lat_lng-longitude").val($(this).attr("data-lng"))}),$(document).on("click",".add-marker",function(a){a.preventDefault(),hover_circle.setVisible(!1);var b=new google.maps.Marker({position:tentative_location_marker.getPosition(),map:map,icon:gmb_data.plugin_url+"/public/assets/img/default-marker.png",zIndex:google.maps.Marker.MAX_ZINDEX+1,optimized:!1});tentative_location_marker.setVisible(!1);var c=get_marker_index(),d=$(this).data("reference");$("#gmb_markers_group_"+c+"_title").val($(this).data("title")),$("#gmb_markers_group_"+c+"_lat").val($(this).data("lat")),$("#gmb_markers_group_"+c+"_lng").val($(this).data("lng")),$("#gmb_markers_group_"+c+"_reference").val(d),get_editable_info_window(c,b),google.maps.event.addListener(b,"click",function(){get_info_window_content(c,b)})}),set_map_marker_icon(),$("#gmb_type").change(function(){set_map_type(!0)}),$("#gmb_theme").change(function(){set_map_theme(!0)}),$("#gmb_street_view").change(function(){set_street_view()}),$("#gmb_pan").change(function(){set_pan_control()}),$("#gmb_draggable").change(function(){set_draggable()}),$("#gmb_double_click").change(function(){set_double_click_zoom()}),$("#gmb_wheel_zoom").change(function(){set_mouse_wheel_scroll()}),$("#gmb_map_type_control").change(function(){set_map_type_control()}),$("#gmb_zoom_control").change(function(){set_map_zoom_control()}),$("#gmb_width_height-width, #gmb_width_height-height").keyup(function(){delay(function(){set_map_size()},500)}),$('input[name="gmb_width_height[map_width_unit]"]').change(function(){set_map_size()})});var map,places_service,lat_lng,zoom,lat_field,lng_field,radius_circle,radius_marker,place,autocomplete,info_bubble,info_bubble_array=[],tentative_location_marker,location_marker,location_marker_array=[],search_markers=[],hover_circle,initial_location,delay=function(){var a=0;return function(b,c){clearTimeout(a),a=setTimeout(b,c)}}()}(jQuery);
admin/assets/js/admin-settings.js CHANGED
@@ -1,53 +1,53 @@
1
- /**
2
- * Google Maps Builder Settings JS
3
- */
4
- (function ( $ ) {
5
- "use strict";
6
-
7
- $( function () {
8
-
9
- //Hide Welcome Message
10
- $( '.hide-welcome' ).on( 'click', function ( e ) {
11
- e.preventDefault();
12
- $( '.welcome-header' ).slideUp( 'normal', function () {
13
- $( '.logo-svg-small' ).fadeIn(); //Show new tiny logo
14
- } ); //slide up welcome header
15
-
16
- var data = {
17
- action: 'hide_welcome'
18
- };
19
- $.post( ajaxurl, data, function ( response ) {
20
-
21
- //Do something here if necessary
22
-
23
- } );
24
-
25
- } );
26
-
27
- //Geolocate position change
28
- var geolocate_radio = $( '.geolocate-radio-wrap input:radio' );
29
- if ( geolocate_radio.prop( 'checked' ) === true ) {
30
- $( '#lat-lng-wrap' ).hide();
31
- }
32
- if ( geolocate_radio.prop( 'checked' ) === false ) {
33
- $( '#lat-lng-wrap' ).show();
34
- }
35
- geolocate_radio.on( 'change', function () {
36
- $( '#lat-lng-wrap' ).toggle();
37
- } );
38
-
39
- //Default setting for Has Archive Inline Radio
40
- if ( $( '#gmb_has_archive1' ).prop( 'checked' ) === false && $( '#gmb_has_archive2' ).prop( 'checked' ) === 'false' ) {
41
- $( '#gmb_has_archive1' ).prop( 'checked', true );
42
- }
43
-
44
-
45
- //Label Click Helper
46
- $( 'input:radio + label' ).on( 'click', function () {
47
- $( this ).prev( 'input:radio' ).prop( 'checked', true );
48
- } );
49
-
50
- } );
51
-
52
-
53
- }( jQuery ));
1
+ /**
2
+ * Google Maps Builder Settings JS
3
+ */
4
+ (function ( $ ) {
5
+ "use strict";
6
+
7
+ $( function () {
8
+
9
+ //Hide Welcome Message
10
+ $( '.hide-welcome' ).on( 'click', function ( e ) {
11
+ e.preventDefault();
12
+ $( '.welcome-header' ).slideUp( 'normal', function () {
13
+ $( '.logo-svg-small' ).fadeIn(); //Show new tiny logo
14
+ } ); //slide up welcome header
15
+
16
+ var data = {
17
+ action: 'hide_welcome'
18
+ };
19
+ $.post( ajaxurl, data, function ( response ) {
20
+
21
+ //Do something here if necessary
22
+
23
+ } );
24
+
25
+ } );
26
+
27
+ //Geolocate position change
28
+ var geolocate_radio = $( '.geolocate-radio-wrap input:radio' );
29
+ if ( geolocate_radio.prop( 'checked' ) === true ) {
30
+ $( '#lat-lng-wrap' ).hide();
31
+ }
32
+ if ( geolocate_radio.prop( 'checked' ) === false ) {
33
+ $( '#lat-lng-wrap' ).show();
34
+ }
35
+ geolocate_radio.on( 'change', function () {
36
+ $( '#lat-lng-wrap' ).toggle();
37
+ } );
38
+
39
+ //Default setting for Has Archive Inline Radio
40
+ if ( $( '#gmb_has_archive1' ).prop( 'checked' ) === false && $( '#gmb_has_archive2' ).prop( 'checked' ) === 'false' ) {
41
+ $( '#gmb_has_archive1' ).prop( 'checked', true );
42
+ }
43
+
44
+
45
+ //Label Click Helper
46
+ $( 'input:radio + label' ).on( 'click', function () {
47
+ $( this ).prev( 'input:radio' ).prop( 'checked', true );
48
+ } );
49
+
50
+ } );
51
+
52
+
53
+ }( jQuery ));
admin/assets/js/admin-widget.js CHANGED
@@ -1,267 +1,267 @@
1
- (function ($) {
2
- "use strict";
3
-
4
- $(function () {
5
-
6
- gmb_widget_toggles();
7
- gmb_widget_tooltips();
8
-
9
- //Initialize Gmap when user clicks an option
10
- place_details_on_click();
11
- place_search_on_click();
12
-
13
-
14
- });
15
-
16
- /*
17
- * Function to Refresh jQuery toggles for wpgp Widget Pro upon saving specific widget
18
- */
19
- $(document).ajaxSuccess(function (e, xhr, settings) {
20
-
21
- gmb_widget_toggles();
22
- gmb_widget_tooltips();
23
- refresh_google_map();
24
- place_details_on_click();
25
- place_search_on_click();
26
-
27
-
28
- });
29
- $(document).ajaxStop(function (e, xhr, settings) {
30
-
31
- });
32
-
33
- /**
34
- * Place Details Radio
35
- *
36
- * This function handles displaying the Google Map and initializing gmaps
37
- */
38
- function place_details_on_click() {
39
- //set up the click event
40
- $('.place-details-api-option-wrap').on('click', function () {
41
- var map_wrap = $(this).parentsUntil('form').find('.google-autocomplete-map-wrap');
42
- var map_canvas = $(map_wrap).find('.map-canvas');
43
-
44
- //slide down the autocomplete map
45
- $(map_wrap).slideDown('normal', function () {
46
- //check if map initialized already by checking for children in canvas
47
- if (map_canvas.children().length == 0) {
48
- //no map so initialize
49
- place_details_autocomplete_initialize(map_canvas);
50
- }
51
-
52
- }); //slide down
53
- }); //click
54
- }
55
-
56
- /**
57
- * Place Search Radio
58
- *
59
- * This function handles displaying the Google Map and initializing gmaps
60
- */
61
- function place_search_on_click() {
62
- $('.place-search-api-option-wrap').on('click', function () {
63
- //Slide up Autocomplete Map
64
- $('.google-autocomplete-map-wrap').slideUp('normal');
65
- });
66
- }
67
-
68
-
69
- /**
70
- * Refresh Gmap
71
- */
72
- function refresh_google_map() {
73
-
74
- //check if Place Details Option enabled and/or map is displayed
75
-
76
- //initialize map
77
- var google_widget = jQuery('.widget-inside:visible').has('.google-autocomplete-map-wrap');
78
-
79
-
80
- // console.log(google_widget);
81
- //
82
- // var map_canvas = google_widget.find('.map-canvas');
83
- // place_details_autocomplete_initialize(map_canvas);
84
-
85
- // $('.google-autocomplete-map-wrap').slideDown('normal', function () {
86
- // var map_canvas = $(this).parentsUntil('form').find('.map-canvas');
87
- // place_details_autocomplete_initialize(map_canvas);
88
- // });
89
-
90
- }
91
-
92
-
93
- /**
94
- * Widget Autocomplete Map
95
- *
96
- * Created the map with autocomplete searching used within the widget admin UI
97
- *
98
- * @see: https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete
99
- */
100
- function place_details_autocomplete_initialize(map_canvas) {
101
-
102
- var latitude = '32.713240';
103
- var longitude = '-117.159443';
104
- var referenceField = $(map_canvas[0]).parent().find('.place-detail-reference').val();
105
-
106
- var mapOptions = {
107
- center : new google.maps.LatLng(latitude, longitude),
108
- zoom : 13,
109
- zoomControl : true,
110
- zoomControlOptions: {
111
- style : google.maps.ZoomControlStyle.SMALL,
112
- position: google.maps.ControlPosition.LEFT_BOTTOM
113
- },
114
- mapTypeControl : false,
115
- streetViewControl : false
116
- };
117
-
118
- var map = new google.maps.Map(map_canvas[0], mapOptions);
119
-
120
-
121
- //Check to see if this widget already has been setup
122
- //@see: https://developers.google.com/maps/documentation/javascript/examples/place-details
123
- if (referenceField) {
124
- var service = new google.maps.places.PlacesService(map);
125
- var request = {
126
- reference: referenceField
127
- };
128
-
129
- service.getDetails(request, function (place, status) {
130
- if (status == google.maps.places.PlacesServiceStatus.OK) {
131
-
132
- set_marker_open_infobubble(map, place);
133
-
134
- }
135
- });
136
-
137
- }
138
-
139
- var input = /** @type {HTMLInputElement} */(
140
- $(map_canvas[0]).parent().find('.pac-input')[0]);
141
-
142
- var types = $(map_canvas[0]).parent().find('.type-selector')[0];
143
- map.controls[google.maps.ControlPosition.TOP_CENTER].push(input);
144
- map.controls[google.maps.ControlPosition.TOP_CENTER].push(types);
145
-
146
- var autocomplete = new google.maps.places.Autocomplete(input);
147
- autocomplete.bindTo('bounds', map);
148
-
149
-
150
- //Autocomplete Place Change
151
- google.maps.event.addListener(autocomplete, 'place_changed', function () {
152
-
153
- var place = autocomplete.getPlace();
154
- if (!place.geometry) {
155
- return;
156
- }
157
-
158
- //set reference hidden input value
159
- $(map_canvas[0]).parent().find('.place-detail-reference').val(place.reference);
160
-
161
- // If the place has a geometry, then present it on a map.
162
- set_marker_open_infobubble(map, place);
163
-
164
-
165
- });
166
-
167
- // Sets a listener on a radio button to change the filter type on Places
168
- // Autocomplete.
169
- function setupClickListener(id, types) {
170
- var radioButton = document.getElementById(id);
171
- google.maps.event.addDomListener(radioButton, 'click', function () {
172
- autocomplete.setTypes(types);
173
- });
174
- }
175
-
176
- setupClickListener('changetype-all', []);
177
- setupClickListener('changetype-establishment', ['establishment']);
178
- setupClickListener('changetype-geocode', ['geocode']);
179
-
180
- }
181
-
182
-
183
- function set_marker_open_infobubble(map, place) {
184
-
185
- //Marker for map
186
- var marker = new google.maps.Marker({
187
- map: map
188
- });
189
- marker.setVisible(false);
190
-
191
- //Custom InfoBubble
192
- var infoBubble = new InfoBubble({
193
- maxWidth: 300
194
- });
195
- //Update map with saved place detail
196
- // If the place has a geometry, then present it on a map.
197
- if (place.geometry.viewport) {
198
- map.fitBounds(place.geometry.viewport);
199
- } else {
200
- map.setCenter(place.geometry.location);
201
- map.setZoom(17); // Why 17? Because it looks good.
202
- }
203
- //setup marker icon
204
- marker.setIcon(/** @type {google.maps.Icon} */({
205
- url : place.icon,
206
- size : new google.maps.Size(71, 71),
207
- origin : new google.maps.Point(0, 0),
208
- anchor : new google.maps.Point(17, 34),
209
- scaledSize: new google.maps.Size(35, 35)
210
- }));
211
- marker.setPosition(place.geometry.location);
212
- marker.setVisible(true);
213
-
214
- var address = '';
215
- if (place.address_components) {
216
- address = [
217
- (place.address_components[0] && place.address_components[0].short_name || ''),
218
- (place.address_components[1] && place.address_components[1].short_name || ''),
219
- (place.address_components[2] && place.address_components[2].short_name || '')
220
- ].join(' ');
221
- }
222
-
223
- infoBubble.setContent('<div><strong>' + place.name + '</strong><br>' + address);
224
- infoBubble.open(map, marker);
225
-
226
- }
227
-
228
-
229
- /**
230
- * Toggles Widget Panels
231
- */
232
- function gmb_widget_toggles() {
233
-
234
- //API Method Toggle
235
- $('#widgets-right .widget-api-option .wpgp-method-span:not("clickable")').each(function () {
236
-
237
- $(this).addClass("clickable").unbind("click").click(function () {
238
- $(this).parent().parent().find('.toggled').slideUp().removeClass('toggled');
239
- $(this).find('input').attr('checked', 'checked');
240
- if ($(this).hasClass('search-api-option-wrap')) {
241
- $(this).parent().next('.toggle-api-option-1').slideToggle().toggleClass('toggled');
242
- } else {
243
- $(this).parent().next().next('.toggle-api-option-2').slideToggle().toggleClass('toggled');
244
- }
245
- });
246
- });
247
-
248
-
249
- }
250
-
251
-
252
- /**
253
- * Tooltips
254
- */
255
- function gmb_widget_tooltips() {
256
- //Tooltips for admins
257
- $('.tooltip-info').tipsy({
258
- fade : true,
259
- html : true,
260
- gravity : 's',
261
- delayOut: 1000,
262
- delayIn : 500
263
- });
264
- }
265
-
266
-
267
- }(jQuery));
1
+ (function ($) {
2
+ "use strict";
3
+
4
+ $(function () {
5
+
6
+ gmb_widget_toggles();
7
+ gmb_widget_tooltips();
8
+
9
+ //Initialize Gmap when user clicks an option
10
+ place_details_on_click();
11
+ place_search_on_click();
12
+
13
+
14
+ });
15
+
16
+ /*
17
+ * Function to Refresh jQuery toggles for wpgp Widget Pro upon saving specific widget
18
+ */
19
+ $(document).ajaxSuccess(function (e, xhr, settings) {
20
+
21
+ gmb_widget_toggles();
22
+ gmb_widget_tooltips();
23
+ refresh_google_map();
24
+ place_details_on_click();
25
+ place_search_on_click();
26
+
27
+
28
+ });
29
+ $(document).ajaxStop(function (e, xhr, settings) {
30
+
31
+ });
32
+
33
+ /**
34
+ * Place Details Radio
35
+ *
36
+ * This function handles displaying the Google Map and initializing gmaps
37
+ */
38
+ function place_details_on_click() {
39
+ //set up the click event
40
+ $('.place-details-api-option-wrap').on('click', function () {
41
+ var map_wrap = $(this).parentsUntil('form').find('.google-autocomplete-map-wrap');
42
+ var map_canvas = $(map_wrap).find('.map-canvas');
43
+
44
+ //slide down the autocomplete map
45
+ $(map_wrap).slideDown('normal', function () {
46
+ //check if map initialized already by checking for children in canvas
47
+ if (map_canvas.children().length == 0) {
48
+ //no map so initialize
49
+ place_details_autocomplete_initialize(map_canvas);
50
+ }
51
+
52
+ }); //slide down
53
+ }); //click
54
+ }
55
+
56
+ /**
57
+ * Place Search Radio
58
+ *
59
+ * This function handles displaying the Google Map and initializing gmaps
60
+ */
61
+ function place_search_on_click() {
62
+ $('.place-search-api-option-wrap').on('click', function () {
63
+ //Slide up Autocomplete Map
64
+ $('.google-autocomplete-map-wrap').slideUp('normal');
65
+ });
66
+ }
67
+
68
+
69
+ /**
70
+ * Refresh Gmap
71
+ */
72
+ function refresh_google_map() {
73
+
74
+ //check if Place Details Option enabled and/or map is displayed
75
+
76
+ //initialize map
77
+ var google_widget = jQuery('.widget-inside:visible').has('.google-autocomplete-map-wrap');
78
+
79
+
80
+ // console.log(google_widget);
81
+ //
82
+ // var map_canvas = google_widget.find('.map-canvas');
83
+ // place_details_autocomplete_initialize(map_canvas);
84
+
85
+ // $('.google-autocomplete-map-wrap').slideDown('normal', function () {
86
+ // var map_canvas = $(this).parentsUntil('form').find('.map-canvas');
87
+ // place_details_autocomplete_initialize(map_canvas);
88
+ // });
89
+
90
+ }
91
+
92
+
93
+ /**
94
+ * Widget Autocomplete Map
95
+ *
96
+ * Created the map with autocomplete searching used within the widget admin UI
97
+ *
98
+ * @see: https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete
99
+ */
100
+ function place_details_autocomplete_initialize(map_canvas) {
101
+
102
+ var latitude = '32.713240';
103
+ var longitude = '-117.159443';
104
+ var referenceField = $(map_canvas[0]).parent().find('.place-detail-reference').val();
105
+
106
+ var mapOptions = {
107
+ center : new google.maps.LatLng(latitude, longitude),
108
+ zoom : 13,
109
+ zoomControl : true,
110
+ zoomControlOptions: {
111
+ style : google.maps.ZoomControlStyle.SMALL,
112
+ position: google.maps.ControlPosition.LEFT_BOTTOM
113
+ },
114
+ mapTypeControl : false,
115
+ streetViewControl : false
116
+ };
117
+
118
+ var map = new google.maps.Map(map_canvas[0], mapOptions);
119
+
120
+
121
+ //Check to see if this widget already has been setup
122
+ //@see: https://developers.google.com/maps/documentation/javascript/examples/place-details
123
+ if (referenceField) {
124
+ var service = new google.maps.places.PlacesService(map);
125
+ var request = {
126
+ reference: referenceField
127
+ };
128
+
129
+ service.getDetails(request, function (place, status) {
130
+ if (status == google.maps.places.PlacesServiceStatus.OK) {
131
+
132
+ set_marker_open_infobubble(map, place);
133
+
134
+ }
135
+ });
136
+
137
+ }
138
+
139
+ var input = /** @type {HTMLInputElement} */(
140
+ $(map_canvas[0]).parent().find('.pac-input')[0]);
141
+
142
+ var types = $(map_canvas[0]).parent().find('.type-selector')[0];
143
+ map.controls[google.maps.ControlPosition.TOP_CENTER].push(input);
144
+ map.controls[google.maps.ControlPosition.TOP_CENTER].push(types);
145
+
146
+ var autocomplete = new google.maps.places.Autocomplete(input);
147
+ autocomplete.bindTo('bounds', map);
148
+
149
+
150
+ //Autocomplete Place Change
151
+ google.maps.event.addListener(autocomplete, 'place_changed', function () {
152
+
153
+ var place = autocomplete.getPlace();
154
+ if (!place.geometry) {
155
+ return;
156
+ }
157
+
158
+ //set reference hidden input value
159
+ $(map_canvas[0]).parent().find('.place-detail-reference').val(place.reference);
160
+
161
+ // If the place has a geometry, then present it on a map.
162
+ set_marker_open_infobubble(map, place);
163
+
164
+
165
+ });
166
+
167
+ // Sets a listener on a radio button to change the filter type on Places
168
+ // Autocomplete.
169
+ function setupClickListener(id, types) {
170
+ var radioButton = document.getElementById(id);
171
+ google.maps.event.addDomListener(radioButton, 'click', function () {
172
+ autocomplete.setTypes(types);
173
+ });
174
+ }
175
+
176
+ setupClickListener('changetype-all', []);
177
+ setupClickListener('changetype-establishment', ['establishment']);
178
+ setupClickListener('changetype-geocode', ['geocode']);
179
+
180
+ }
181
+
182
+
183
+ function set_marker_open_infobubble(map, place) {
184
+
185
+ //Marker for map
186
+ var marker = new google.maps.Marker({
187
+ map: map
188
+ });
189
+ marker.setVisible(false);
190
+
191
+ //Custom InfoBubble
192
+ var infoBubble = new InfoBubble({
193
+ maxWidth: 300
194
+ });
195
+ //Update map with saved place detail
196
+ // If the place has a geometry, then present it on a map.
197
+ if (place.geometry.viewport) {
198
+ map.fitBounds(place.geometry.viewport);
199
+ } else {
200
+ map.setCenter(place.geometry.location);
201
+ map.setZoom(17); // Why 17? Because it looks good.
202
+ }
203
+ //setup marker icon
204
+ marker.setIcon(/** @type {google.maps.Icon} */({
205
+ url : place.icon,
206
+ size : new google.maps.Size(71, 71),
207
+ origin : new google.maps.Point(0, 0),
208
+ anchor : new google.maps.Point(17, 34),
209
+ scaledSize: new google.maps.Size(35, 35)
210
+ }));
211
+ marker.setPosition(place.geometry.location);
212
+ marker.setVisible(true);
213
+
214
+ var address = '';
215
+ if (place.address_components) {
216
+ address = [
217
+ (place.address_components[0] && place.address_components[0].short_name || ''),
218
+ (place.address_components[1] && place.address_components[1].short_name || ''),
219
+ (place.address_components[2] && place.address_components[2].short_name || '')
220
+ ].join(' ');
221
+ }
222
+
223
+ infoBubble.setContent('<div><strong>' + place.name + '</strong><br>' + address);
224
+ infoBubble.open(map, marker);
225
+
226
+ }
227
+
228
+
229
+ /**
230
+ * Toggles Widget Panels
231
+ */
232
+ function gmb_widget_toggles() {
233
+
234
+ //API Method Toggle
235
+ $('#widgets-right .widget-api-option .wpgp-method-span:not("clickable")').each(function () {
236
+
237
+ $(this).addClass("clickable").unbind("click").click(function () {
238
+ $(this).parent().parent().find('.toggled').slideUp().removeClass('toggled');
239
+ $(this).find('input').attr('checked', 'checked');
240
+ if ($(this).hasClass('search-api-option-wrap')) {
241
+ $(this).parent().next('.toggle-api-option-1').slideToggle().toggleClass('toggled');
242
+ } else {
243
+ $(this).parent().next().next('.toggle-api-option-2').slideToggle().toggleClass('toggled');
244
+ }
245
+ });
246
+ });
247
+
248
+
249
+ }
250
+
251
+
252
+ /**
253
+ * Tooltips
254
+ */
255
+ function gmb_widget_tooltips() {
256
+ //Tooltips for admins
257
+ $('.tooltip-info').tipsy({
258
+ fade : true,
259
+ html : true,
260
+ gravity : 's',
261
+ delayOut: 1000,
262
+ delayIn : 500
263
+ });
264
+ }
265
+
266
+
267
+ }(jQuery));
includes/snazzy.php → admin/assets/js/snazzy.json RENAMED
@@ -1,13 +1,3 @@
1
- <?php
2
- /**
3
- * Snazzy Maps
4
- *
5
- * @description: Contains the snazzy maps JSON array
6
- * @since :
7
- * @created : 4/18/14
8
- */
9
-
10
- ?>
11
  [
12
  {
13
  "id":1,
 
 
 
 
 
 
 
 
 
 
1
  [
2
  {
3
  "id":1,
admin/class-wordpress-google-maps-admin.php CHANGED
@@ -1,775 +1,785 @@
1
- <?php
2
- /**
3
- * Google Maps Admin
4
- *
5
- * The admin is considered the single post view where you build maps
6
- *
7
- * @package Google_Maps_Builder_Admin
8
- * @author Devin Walker <devin@wordimpress.com>
9
- * @license GPL-2.0+
10
- * @link http://wordimpress.com
11
- * @copyright 2014 WordImpress, Devin Walker
12
- */
13
-
14
- class Google_Maps_Builder_Admin {
15
-
16
- /**
17
- * Instance of this class.
18
- *
19
- * @since 1.0.0
20
- *
21
- * @var object
22
- */
23
- protected static $instance = null;
24
-
25
-
26
- /**
27
- * Array of metaboxes/fields
28
- *
29
- * @since 1.0.0
30
- *
31
- * @var array
32
- */
33
- protected static $plugin_options = array();
34
-
35
- /**
36
- * Array of metaboxes/fields
37
- *
38
- * @since 1.0.0
39
- *
40
- * @var array
41
- */
42
- protected static $default_map_options;
43
-
44
-
45
- /**
46
- * Initialize the plugin by loading admin scripts & styles and adding a
47
- * settings page and menu.
48
- *
49
- * @since 1.0.0
50
- */
51
- private function __construct() {
52
-
53
- /*
54
- * Call $plugin_slug from public plugin class.
55
- */
56
- $plugin = Google_Maps_Builder::get_instance();
57
- $this->plugin_slug = $plugin->get_plugin_slug();
58
-
59
- // Load admin style sheet and JavaScript.
60
- add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_styles' ) );
61
- add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_scripts' ) );
62
-
63
- //Add metaboxes and fields to CPT
64
- add_filter( 'cmb_meta_boxes', array( $this, 'cpt_metaboxes_fields' ), 1 );
65
-
66
- //Custom Meta Fields
67
- add_action( 'cmb_render_google_geocoder', array( $this, 'cmb_render_google_geocoder' ), 10, 2 );
68
- add_action( 'cmb_render_google_maps_preview', array( $this, 'cmb_render_google_maps_preview' ), 10, 2 );
69
- add_action( 'cmb_render_search_options', array( $this, 'cmb_render_search_options' ), 10, 2 );
70
- add_action( 'cmb_render_width_height', array( $this, 'cmb_render_width_height' ), 10, 2 );
71
- add_action( 'cmb_render_lat_lng', array( $this, 'cmb_render_lat_lng' ), 10, 2 );
72
- add_action( 'post_submitbox_misc_actions', array( $this, 'gmb_add_shortcode_to_publish_metabox' ) );
73
-
74
-
75
- }
76
-
77
- /**
78
- *
79
- * Add Shortcode to Publish Metabox
80
- *
81
- */
82
- public function gmb_add_shortcode_to_publish_metabox() {
83
-
84
- global $post;
85
- //Shortcode column with select all input
86
- $shortcode = htmlentities( '[google_maps id="' . $post->ID . '"]' );
87
- echo '<div class="shortcode-wrap box-sizing"><label>' . __('Map Shortcode:', $this->plugin_slug) . '</label><input onClick="this.setSelectionRange(0, this.value.length)" type="text" class="shortcode-input" readonly value="' . $shortcode . '"></div>';
88
-
89
- }
90
-
91
- /**
92
- * Get Default Map Options
93
- *
94
- * Helper function that returns default map options from settings
95
- * @return array
96
- */
97
- public function get_default_map_options() {
98
-
99
- $width_height = gmb_get_option( 'gmb_width_height' );
100
- // $lat_lng = gmb_get_option( 'gmb_lat_lng' );
101
-
102
- $defaults = array(
103
- 'width' => ( isset( $width_height['width'] ) ) ? $width_height['width'] : '100',
104
- 'width_unit' => ( isset( $width_height['map_width_unit'] ) ) ? $width_height['map_width_unit'] : '%',
105
- 'height' => ( isset( $width_height['height'] ) ) ? $width_height['height'] : '600',
106
- // 'latitude' => ( isset( $lat_lng['latitude'] ) ) ? $lat_lng['latitude'] : '600',
107
- // 'longitude' => ( isset( $lat_lng['longitude'] ) ) ? $lat_lng['longitude'] : '600',
108
- );
109
-
110
- return $defaults;
111
-
112
- }
113
-
114
- /**
115
- * Return an instance of this class.
116
- *
117
- * @since 1.0.0
118
- *
119
- * @return object A single instance of this class.
120
- */
121
- public static function get_instance() {
122
-
123
- // If the single instance hasn't been set, set it now.
124
- if ( null == self::$instance ) {
125
- self::$instance = new self;
126
- }
127
-
128
- return self::$instance;
129
- }
130
-
131
-
132
- /**
133
- * Register and enqueue admin-specific style sheet.
134
- *
135
- * Return early if no settings page is registered.
136
- * @since 1.0.0
137
- *
138
- * @return null
139
- */
140
- public function enqueue_admin_styles( $hook ) {
141
-
142
- global $post;
143
- $suffix = defined( 'GMB_DEBUG' ) && GMB_DEBUG ? '' : '.min';
144
-
145
- //Only enqueue scripts for CPT on post type screen
146
- if ( $hook == 'post-new.php' || $hook == 'post.php' && 'google_maps' === $post->post_type ) {
147
-
148
- wp_enqueue_style( $this->plugin_slug . '-admin-styles', plugins_url( 'assets/css/admin' . $suffix . '.css', __FILE__ ), array(), Google_Maps_Builder::VERSION );
149
- wp_enqueue_style( $this->plugin_slug . '-map-icons', plugins_url( 'includes/map-icons/css/map-icons.css', dirname( __FILE__ ) ), array(), Google_Maps_Builder::VERSION );
150
- wp_enqueue_style( $this->plugin_slug . '-map-tooltips', plugins_url( 'includes/tooltips/jquery.qtip' . $suffix . '.css', __FILE__ ), array(), Google_Maps_Builder::VERSION );
151
-
152
- }
153
-
154
- }
155
-
156
- /**
157
- * Register and enqueue admin-specific JavaScript.
158
- *
159
- * @since 1.0.0
160
- *
161
- * @return null Return early if no settings page is registered.
162
- */
163
- public function enqueue_admin_scripts( $hook ) {
164
- global $post;
165
- $suffix = defined( 'GMB_DEBUG' ) && GMB_DEBUG ? '' : '.min';
166
-
167
- //Only enqueue scripts for CPT on post type screen
168
- if ( $hook == 'post-new.php' || $hook == 'post.php' && 'google_maps' === $post->post_type ) {
169
-
170
- wp_enqueue_script( $this->plugin_slug . '-admin-gmaps', 'https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&libraries=places', array( 'jquery' ) );
171
- wp_enqueue_script( $this->plugin_slug . '-map-icons', plugins_url( 'includes/map-icons/js/map-icons.js', dirname( __FILE__ ) ), array( 'jquery' ) );
172
- wp_enqueue_script( $this->plugin_slug . '-admin-map-builder', plugins_url( 'assets/js/admin-google-map' . $suffix . '.js', __FILE__ ), array( 'jquery' ), Google_Maps_Builder::VERSION );
173
- wp_enqueue_script( $this->plugin_slug . '-admin-qtip', plugins_url( 'includes/tooltips/jquery.qtip' . $suffix . '.js', __FILE__ ), array( 'jquery' ), Google_Maps_Builder::VERSION, true );
174
-
175
-
176
- $snazzy = wp_remote_fopen( GMB_PLUGIN_URL . '/includes/snazzy.php' );
177
- $api_key = gmb_get_option( 'gmb_api_key' );
178
- $geolocate = gmb_get_option( 'gmb_lat_lng' );
179
-
180
- $maps_data = array(
181
- 'api_key' => $api_key,
182
- 'geolocate_setting' => isset( $geolocate['geolocate_map'] ) ? $geolocate['geolocate_map'] : 'yes',
183
- 'default_lat' => isset( $geolocate['latitude'] ) ? $geolocate['latitude'] : '32.715738',
184
- 'default_lng' => isset( $geolocate['longitude'] ) ? $geolocate['longitude'] : '-117.16108380000003',
185
- 'plugin_url' => GMB_PLUGIN_URL,
186
- 'snazzy' => json_encode( $snazzy )
187
- );
188
- wp_localize_script( $this->plugin_slug . '-admin-map-builder', 'gmb_data', $maps_data );
189
-
190
- }
191
-
192
- wp_enqueue_style( 'dashicons' );
193
-
194
-
195
- }
196
-
197
-
198
- /**
199
- * Register our setting to WP
200
- * @since 1.0.0
201
- */
202
- public function settings_init() {
203
- register_setting( $this->plugin_slug, $this->plugin_slug );
204
- }
205
-
206
-
207
- /**
208
- * Defines the Google Places CPT metabox and field configuration
209
- * @since 1.0.0
210
- * @return array
211
- */
212
-
213
- public function cpt_metaboxes_fields( array $meta_boxes ) {
214
-
215
- $prefix = 'gmb_'; // Prefix for all fields
216
-
217
- $default_options = $this->get_default_map_options();
218
-
219
- $meta_boxes['google_maps_metabox'] = array(
220
- 'id' => 'google_maps_metabox',
221
- 'title' => __( 'Google Map Markers', $this->plugin_slug ),
222
- 'pages' => array( 'google_maps' ), // post type
223
- 'context' => 'normal', // 'normal', 'advanced', or 'side'
224
- 'priority' => 'high', // 'high', 'core', 'default' or 'low'
225
- 'show_names' => true, // Show field names on the left
226
- 'fields' => array(
227
- array(
228
- 'name' => __( 'Create Marker', $this->plugin_slug ),
229
- 'id' => $prefix . 'geocoder',
230
- 'type' => 'google_geocoder',
231
- 'std' => 'San Diego, CA, United States',
232
- 'desc' => '',
233
- ),
234
- ),
235
- );
236
- $meta_boxes['google_maps_preview_metabox'] = array(
237
- 'id' => 'google_maps_preview_metabox',
238
- 'title' => __( 'Google Map Preview', $this->plugin_slug ),
239
- 'pages' => array( 'google_maps' ), // post type
240
- 'context' => 'normal', // 'normal', 'advanced', or 'side'
241
- 'priority' => 'core', // 'high', 'core', 'default' or 'low'
242
- 'show_names' => false, // Show field names on the left
243
- 'fields' => array(
244
- array(
245
- 'name' => 'Map Preview',
246
- 'id' => $prefix . 'preview',
247
- 'type' => 'google_maps_preview',
248
- 'std' => '',
249
- ),
250
-
251
- ),
252
- );
253
- $meta_boxes['google_maps_markers'] = array(
254
- 'id' => 'google_maps_markers',
255
- 'title' => __( 'Google Map Markers', $this->plugin_slug ),
256
- 'pages' => array( 'google_maps' ), // post type
257
- 'context' => 'normal', // 'normal', 'advanced', or 'side'
258
- 'priority' => 'low', // 'high', 'core', 'default' or 'low'
259
- 'show_names' => true, // Show field names on the left
260
- 'fields' => array(
261
- array(
262
- 'id' => $prefix . 'markers_group',
263
- 'type' => 'group',
264
- 'description' => __( 'Generatemap m marke. You may update marker data here in bulk ps', $this->plugin_slug ),
265
- 'options' => array(
266
- 'add_button' => __( 'Add Another Marker', $this->plugin_slug ),
267
- 'remove_button' => __( 'Remove Marker', $this->plugin_slug ),
268
- 'sortable' => true, // beta
269
- ),
270
- // Fields array works the same, except id's only need to be unique for this group. Prefix is not needed.
271
- 'fields' => array(
272
- array(
273
- 'name' => 'Marker Title',
274
- 'id' => 'title',
275
- 'type' => 'text',
276
- ),
277
- array(
278
- 'name' => 'Marker Description',
279
- 'description' => 'Write a short description for this marker',
280
- 'id' => 'description',
281
- 'type' => 'textarea_small',
282
- ),
283
- array(
284
- 'name' => 'Marker Reference',
285
- 'id' => 'reference',
286
- 'type' => 'text',
287
- ),
288
- array(
289
- 'name' => 'Hide Place Details',
290
- 'id' => 'hide_details',
291
- 'type' => 'checkbox',
292
- ),
293
- array(
294
- 'name' => 'Marker Latitude',
295
- 'id' => 'lat',
296
- 'type' => 'text',
297
- ),
298
- array(
299
- 'name' => 'Marker Longitude',
300
- 'id' => 'lng',
301
- 'type' => 'text',
302
- ),
303
- array(
304
- 'name' => 'Marker Data',
305
- 'id' => 'marker',
306
- 'type' => 'textarea_code',
307
- ),
308
- array(
309
- 'name' => 'Marker Label Data',
310
- 'id' => 'label',
311
- 'type' => 'textarea_code',
312
- ),
313
- ),
314
- ),
315
- ),
316
- );
317
-
318
-
319
- $meta_boxes['google_maps_search_options'] = array(
320
- 'id' => 'google_maps_search_options',
321
- 'title' => __( 'Google Places', $this->plugin_slug ),
322
- 'pages' => array( 'google_maps' ), // post type
323
- 'context' => 'normal', // 'normal', 'advanced', or 'side'
324
- 'priority' => 'core', // 'high', 'core', 'default' or 'low'
325
- 'show_names' => true, // Show field names on the left
326
- 'fields' => array(
327
- array(
328
- 'name' => __( 'Show Places?', $this->plugin_slug ),
329
- 'desc' => __( 'Display establishments, prominent points of interest, geographic locations, and more.', $this->plugin_slug ),
330
- 'id' => $prefix . 'show_places',
331
- 'type' => 'radio_inline',
332
- 'options' => array(
333
- 'yes' => __( 'Yes', 'cmb' ),
334
- 'no' => __( 'No', 'cmb' ),
335
- ),
336
- ),
337
- array(
338
- 'name' => __( 'Search Radius', $this->plugin_slug ),
339
- 'desc' => __( 'Defines the distance (in meters) within which to return Place results. The maximum allowed radius is 50,000 meters.', $this->plugin_slug ),
340
- 'std' => '1000',
341
- 'id' => $prefix . 'search_radius',
342
- 'type' => 'text_small'
343
- ),
344
- array(
345
- 'name' => __( 'Place Types', $this->plugin_slug ),
346
- 'desc' => __( 'Select which type of places you would like to display on this map.', $this->plugin_slug ),
347
- 'id' => $prefix . 'places_search_multicheckbox',
348
- 'type' => 'multicheck',
349
- 'options' => array(
350
- 'accounting' => __( 'Accounting', $this->plugin_slug ),
351
- 'airport' => __( 'Airport', $this->plugin_slug ),
352
- // 'amusement_park' => __('Amusement Park', $this->plugin_slug ),
353
- // 'aquarium' => __('Aquarium', $this->plugin_slug ),
354
- // 'art_gallery' => __('Art Gallery',
355
- 'atm' => __( 'ATM', $this->plugin_slug ),
356
- 'bakery' => __( 'Bakery', $this->plugin_slug ),
357
- 'bank' => __( 'Bank', $this->plugin_slug ),
358
- 'bar' => __( 'Bar', $this->plugin_slug ),
359
- // 'beauty_salon' => __('Beauty Salon', $this->plugin_slug ),
360
- // 'bicycle_store' => __('Bicycle Store', $this->plugin_slug ),
361
- // 'book_store' => __('Book Store', $this->plugin_slug ),
362
- 'bowling_alley' => __( 'Bowling Alley', $this->plugin_slug ),
363
- 'bus_station' => __( 'Bus Station', $this->plugin_slug ),
364
- 'cafe' => __( 'Cafe', $this->plugin_slug ),
365
- 'campground' => __( 'Campground', $this->plugin_slug ),
366
- // 'car_dealer' => __('Car Dealer', $this->plugin_slug ),
367
- // 'car_rental' => __('Car Rental', $this->plugin_slug ),
368
- // 'car_repair' => __('Car Repair', $this->plugin_slug ),
369
- 'car_wash' => __( 'Car Wash', $this->plugin_slug ),
370
- 'casino' => __( 'Casino', $this->plugin_slug ),
371
- 'cemetery' => __( 'Cemetery', $this->plugin_slug ),
372
- 'church' => __( 'Church', $this->plugin_slug ),
373
- 'city_hall' => __( 'City Hall', $this->plugin_slug ),
374
- 'clothing_store' => __( 'Clothing Store', $this->plugin_slug ),
375
- 'convenience_store' => __( 'Convenience Store', $this->plugin_slug ),
376
- 'courthouse' => __( 'Courthouse', $this->plugin_slug ),
377
- 'dentist' => __( 'Dentist', $this->plugin_slug ),
378
- 'department_store' => __( 'Department Store', $this->plugin_slug ),
379
- // 'doctor' => __('Doctor', $this->plugin_slug ),
380
- // 'electrician' => __('Electrician', $this->plugin_slug ),
381
- // 'electronics_store' => __('Electronics Store', $this->plugin_slug ),
382
- 'embassy' => __( 'Embassy', $this->plugin_slug ),
383
- 'establishment' => __( 'Establishment', $this->plugin_slug ),
384
- 'finance' => __( 'Finance', $this->plugin_slug ),
385
- 'fire_station' => __( 'Fire Station', $this->plugin_slug ),
386
- 'florist' => __( 'Florist', $this->plugin_slug ),
387
- 'food' => __( 'Food', $this->plugin_slug ),
388
- 'funeral_home' => __( 'Funeral Home', $this->plugin_slug ),
389
- 'furniture_store' => __( 'Furniture_store', $this->plugin_slug ),
390
- // 'gas_station' => __('Gas Station', $this->plugin_slug ),
391
- // 'general_contractor' => __('General Contractor', $this->plugin_slug ),
392
- // 'grocery_or_supermarket' => __('Grocery or Supermarket', $this->plugin_slug ),
393
- 'gym' => __( 'Gym', $this->plugin_slug ),
394
- 'hair_care' => __( 'Hair Care', $this->plugin_slug ),
395
- 'hardware_store' => __( 'Hardware Store', $this->plugin_slug ),
396
- 'health' => __( 'Health', $this->plugin_slug ),
397
- 'hindu_temple' => __( 'Hindu Temple', $this->plugin_slug ),
398
- // 'home_goods_store' => __('Home Goods Store', $this->plugin_slug ),
399
- // 'hospital' => __('Hospital', $this->plugin_slug ),
400
- // 'insurance_agency' => __('Insurance Agency', $this->plugin_slug ),
401
- 'jewelry_store' => __( 'Jewelry Store', $this->plugin_slug ),
402
- 'laundry' => __( 'Laundry', $this->plugin_slug ),
403
- 'lawyer' => __( 'Lawyer', $this->plugin_slug ),
404
- 'library' => __( 'Library', $this->plugin_slug ),
405
- 'liquor_store' => __( 'Liquor Store', $this->plugin_slug ),
406
- 'local_government_office' => __( 'Local Government Office', $this->plugin_slug ),
407
- 'locksmith' => __( 'Locksmith', $this->plugin_slug ),
408
- 'lodging' => __( 'Lodging', $this->plugin_slug ),
409
- 'meal_delivery' => __( 'Meal Delivery', $this->plugin_slug ),
410
- 'meal_takeaway' => __( 'Meal Takeaway', $this->plugin_slug ),
411
- // 'mosque' => __('Mosque', $this->plugin_slug ),
412
- // 'movie_rental' => __('Movie Rental', $this->plugin_slug ),
413
- // 'movie_theater' => __('Movie Theater', $this->plugin_slug ),
414
- // 'moving_company' => __('Moving Company', $this->plugin_slug ),
415
- 'museum' => __( 'Museum', $this->plugin_slug ),
416
- 'night_club' => __( 'Night Club', $this->plugin_slug ),
417
- 'painter' => __( 'Painter', $this->plugin_slug ),
418
- 'park' => __( 'Park', $this->plugin_slug ),
419
- 'parking' => __( 'Parking', $this->plugin_slug ),
420
- 'pet_store' => __( 'Pet Store', $this->plugin_slug ),
421
- 'pharmacy' => __( 'Pharmacy', $this->plugin_slug ),
422
- 'physiotherapist' => __( 'Physiotherapist', $this->plugin_slug ),
423
- 'place_of_worship' => __( 'Place of Worship', $this->plugin_slug ),
424
- 'plumber' => __( 'Plumber', $this->plugin_slug ),
425
- 'police' => __( 'Police', $this->plugin_slug ),
426
- 'post_office' => __( 'Post Office', $this->plugin_slug ),
427
- // 'real_estate_agency' => __('Real Estate Agency', $this->plugin_slug ),
428
- // 'restaurant' => __('Restaurant', $this->plugin_slug ),
429
- // 'roofing_contractor' => __('Roofing Contractor', $this->plugin_slug ),
430
- 'rv_park' => __( 'RV Park', $this->plugin_slug ),
431
- 'school' => __( 'School', $this->plugin_slug ),
432
- 'shoe_store' => __( 'Shoe Store', $this->plugin_slug ),
433
- 'shopping_mall' => __( 'Shopping Mall', $this->plugin_slug ),
434
- 'spa' => __( 'Spa', $this->plugin_slug ),
435
- 'stadium' => __( 'Stadium', $this->plugin_slug ),
436
- 'storage' => __( 'Storage', $this->plugin_slug ),
437
- 'store' => __( 'Store', $this->plugin_slug ),
438
- 'subway_station' => __( 'Subway Station', $this->plugin_slug ),
439
- 'synagogue' => __( 'Synagogue', $this->plugin_slug ),
440
- 'taxi_stand' => __( 'Taxi Stand', $this->plugin_slug ),
441
- // 'train_station' => __('Train Station', $this->plugin_slug ),
442
- // 'travel_agency' => __('Travel Agency', $this->plugin_slug ),
443
- 'university' => __( 'University', $this->plugin_slug ),
444
- 'veterinary_care' => __( 'Veterinary Care', $this->plugin_slug ),
445
- 'zoo' => __( 'Zoo', $this->plugin_slug )
446
- ),
447
- ),
448
- ),
449
- );
450
-
451
- $meta_boxes['google_maps_options'] = array(
452
- 'id' => 'google_maps_options',
453
- 'title' => __( 'Google Map Display Options', $this->plugin_slug ),
454
- 'pages' => array( 'google_maps' ), // post type
455
- 'context' => 'side', // 'normal', 'advanced', or 'side'
456
- 'priority' => 'default', // 'high', 'core', 'default' or 'low'
457
- 'show_names' => true, // Show field names on the left
458
- 'fields' => array(
459
- array(
460
- 'name' => __( 'Map Size', $this->plugin_slug ),
461
- 'id' => $prefix . 'width_height',
462
- 'type' => 'width_height',
463
- 'width_std' => $default_options['width'],
464
- 'width_unit_std' => $default_options['width_unit'],
465
- 'height_std' => $default_options['height'],
466
- 'desc' => '',
467
- ),
468
- array(
469
- 'name' => __( 'Map Location', $this->plugin_slug ),
470
- 'id' => $prefix . 'lat_lng',
471
- 'type' => 'lat_lng',
472
- 'lat_std' => '',
473
- 'lng_std' => '',
474
- 'desc' => '',
475
- ),
476
-
477
- array(
478
- 'name' => 'Map Type',
479
- 'id' => $prefix . 'type',
480
- 'type' => 'select',
481
- 'std' => 'default',
482
- 'options' => array(
483
- array( 'name' => __( 'Road Map', $this->plugin_slug ), 'value' => 'RoadMap' ),
484
- array( 'name' => __( 'Satellite', $this->plugin_slug ), 'value' => 'Satellite' ),
485
- array( 'name' => __( 'Hybrid', $this->plugin_slug ), 'value' => 'Hybrid' ),
486
- array( 'name' => __( 'Terrain', $this->plugin_slug ), 'value' => 'Terrain' ),
487
- ),
488
- ),
489
- array(
490
- 'name' => 'Map Theme',
491
- 'desc' => sprintf( __( 'Set optional preconfigured styles. <a href="%s" class="snazzy-link new-window" target="_blank">Snazzy Maps</a>', $this->plugin_slug ), esc_url( 'http://snazzymaps.com' ) ),
492
- 'id' => $prefix . 'theme',
493
- 'type' => 'select',
494
- 'std' => 'none',
495
- 'options' => array(
496
- array( 'name' => __( 'None', $this->plugin_slug ), 'value' => 'none' ),
497
- array( 'name' => __( 'Aqua', $this->plugin_slug ), 'value' => '68' ),
498
- array( 'name' => __( 'A Dark World', $this->plugin_slug ), 'value' => '73' ),
499
- array( 'name' => __( 'Bluish', $this->plugin_slug ), 'value' => '28' ),
500
- array( 'name' => __( 'Cool Grey', $this->plugin_slug ), 'value' => '80' ),
501
- array( 'name' => __( 'Clean Cut', $this->plugin_slug ), 'value' => '77' ),
502
- array( 'name' => __( 'Flat Green', $this->plugin_slug ), 'value' => '36' ),
503
- array( 'name' => __( 'MapBox', $this->plugin_slug ), 'value' => '44' ),
504
- array( 'name' => __( 'Muted Blue', $this->plugin_slug ), 'value' => '83' ),
505
- array( 'name' => __( 'Old Timey', $this->plugin_slug ), 'value' => '22' ),
506
- array( 'name' => __( 'Pale Dawn', $this->plugin_slug ), 'value' => '1' ),
507
- array( 'name' => __( 'Paper', $this->plugin_slug ), 'value' => '19' ),
508
- array( 'name' => __( 'Lunar Landscape', $this->plugin_slug ), 'value' => '37' ),
509
- array( 'name' => __( 'Shade of Green', $this->plugin_slug ), 'value' => '75' ),
510
- array( 'name' => __( 'Shift Worker', $this->plugin_slug ), 'value' => '27' ),
511
- array( 'name' => __( 'Subtle Grayscale', $this->plugin_slug ), 'value' => '15' ),
512
- array( 'name' => __( 'The Endless Atlas', $this->plugin_slug ), 'value' => '50' ),
513
- ),
514
- ),
515
- array(
516
- 'name' => 'Map Theme JSON',
517
- 'desc' => 'Contains the map theme JSON',
518
- 'default' => 'none',
519
- 'id' => $prefix . 'theme_json',
520
- 'type' => 'textarea_code'
521
- ),
522
- array(
523
- 'name' => 'Zoom',
524
- 'desc' => __( 'Adjust the map zoom (0-21)', $this->plugin_slug ),
525
- 'id' => $prefix . 'zoom',
526
- 'type' => 'select',
527
- 'std' => '15',
528
- 'options' => array(
529
- array( 'name' => '21', 'value' => '21' ),
530
- array( 'name' => '20', 'value' => '20' ),
531
- array( 'name' => '19', 'value' => '19' ),
532
- array( 'name' => '18', 'value' => '18' ),
533
- array( 'name' => '17', 'value' => '17' ),
534
- array( 'name' => '16', 'value' => '16' ),
535
- array( 'name' => '15', 'value' => '15' ),
536
- array( 'name' => '14', 'value' => '14' ),
537
- array( 'name' => '13', 'value' => '13' ),
538
- array( 'name' => '12', 'value' => '12' ),
539
- array( 'name' => '11', 'value' => '11' ),
540
- array( 'name' => '10', 'value' => '10' ),
541
- array( 'name' => '9', 'value' => '9' ),
542
- array( 'name' => '8', 'value' => '8' ),
543
- array( 'name' => '7', 'value' => '7' ),
544
- array( 'name' => '6', 'value' => '6' ),
545
- array( 'name' => '5', 'value' => '5' ),
546
- array( 'name' => '4', 'value' => '4' ),
547
- array( 'name' => '3', 'value' => '3' ),
548
- array( 'name' => '2', 'value' => '2' ),
549
- array( 'name' => '1', 'value' => '1' ),
550
- array( 'name' => '0', 'value' => '0' ),
551
-
552
- )
553
- ),
554
- ),
555
- );
556
-
557
- $meta_boxes['google_maps_control_options'] = array(
558
- 'id' => 'google_maps_control_options',
559
- 'title' => __( 'Google Map Control Options', $this->plugin_slug ),
560
- 'pages' => array( 'google_maps' ), // post type
561
- 'context' => 'side', // 'normal', 'advanced', or 'side'
562
- 'priority' => 'default', // 'high', 'core', 'default' or 'low'
563
- 'show_names' => true, // Show field names on the left
564
- 'fields' => array(
565
- array(
566
- 'name' => 'Zoom Control',
567
- 'id' => $prefix . 'zoom_control',
568
- 'type' => 'select',
569
- 'std' => 'default',
570
- 'options' => array(
571
- array( 'name' => __( 'None', $this->plugin_slug ), 'value' => 'none' ),
572
- array( 'name' => __( 'Small', $this->plugin_slug ), 'value' => 'small' ),
573
- array( 'name' => __( 'Large', $this->plugin_slug ), 'value' => 'large' ),
574
- array( 'name' => __( 'Default', $this->plugin_slug ), 'value' => 'default' ),
575
- ),
576
- ),
577
- array(
578
- 'name' => 'Street View',
579
- 'id' => $prefix . 'street_view',
580
- 'type' => 'select',
581
- 'std' => 'true',
582
- 'options' => array(
583
- array( 'name' => __( 'None', $this->plugin_slug ), 'value' => 'none' ),
584
- array( 'name' => __( 'Standard', $this->plugin_slug ), 'value' => 'true' ),
585
- ),
586
- ),
587
- array(
588
- 'name' => 'Pan Control',
589
- 'id' => $prefix . 'pan',
590
- 'type' => 'select',
591
- 'std' => 'true',
592
- 'options' => array(
593
- array( 'name' => __( 'None', $this->plugin_slug ), 'value' => 'none' ),
594
- array( 'name' => __( 'Standard', $this->plugin_slug ), 'value' => 'true' ),
595
- ),
596
- ),
597
- array(
598
- 'name' => 'Map Type Control',
599
- 'id' => $prefix . 'map_type_control',
600
- 'type' => 'select',
601
- 'std' => 'horizontal_bar',
602
- 'options' => array(
603
- array( 'name' => __( 'None', $this->plugin_slug ), 'value' => 'none' ),
604
- array( 'name' => __( 'Dropdown Menu', $this->plugin_slug ), 'value' => 'dropdown_menu' ),
605
- array( 'name' => __( 'Horizontal Bar', $this->plugin_slug ), 'value' => 'horizontal_bar' ),
606
- ),
607
- ),
608
-
609
- array(
610
- 'name' => 'Draggable Map',
611
- 'id' => $prefix . 'draggable',
612
- 'type' => 'select',
613
- 'std' => 'true',
614
- 'options' => array(
615
- array( 'name' => __( 'None', $this->plugin_slug ), 'value' => 'none' ),
616
- array( 'name' => __( 'Standard', $this->plugin_slug ), 'value' => 'true' ),
617
- ),
618
- ),
619
- array(
620
- 'name' => 'Double Click to Zoom',
621
- 'id' => $prefix . 'double_click',
622
- 'type' => 'select',
623
- 'std' => 'true',
624
- 'options' => array(
625
- array( 'name' => __( 'None', $this->plugin_slug ), 'value' => 'none' ),
626
- array( 'name' => __( 'Standard', $this->plugin_slug ), 'value' => 'true' ),
627
- ),
628
- ),
629
- array(
630
- 'name' => 'Mouse Wheel to Zoom',
631
- 'id' => $prefix . 'wheel_zoom',
632
- 'type' => 'select',
633
- 'std' => 'none',
634
- 'options' => array(
635
- array( 'name' => __( 'None', $this->plugin_slug ), 'value' => 'none' ),
636
- array( 'name' => __( 'Standard', $this->plugin_slug ), 'value' => 'true' ),
637
- ),
638
- ),
639
- ),
640
-
641
- );
642
-
643
- return $meta_boxes;
644
-
645
- }
646
-
647
-
648
- /**
649
- * CMB Width Height
650
- *
651
- * Custom CMB field for Gmap width and height
652
- *
653
- * @param $field
654
- * @param $meta
655
- */
656
- function cmb_render_width_height( $field, $meta ) {
657
- $default_options = $this->get_default_map_options();
658
- $meta = wp_parse_args(
659
- $meta, array(
660
- 'width' => $default_options['width'],
661
- 'height' => $default_options['height'],
662
- 'map_width_unit' => $default_options['width_unit'],
663
- )
664
- );
665
-
666
- $output = '<div id="width_height_wrap" class="clear">';
667
- //width
668
- $output .= '<div id="width_wrap" class="clear">';
669
- $output .= '<label class="width-label size-label">Width:</label><input type="text" class="regular-text map-width" name="' . $field['id'] . '[width]" id="' . $field['id'] . '-width" value="' . ( $meta['width'] ? $meta['width'] : $field['width_std'] ) . '" />';
670
- $output .= '<div id="size_labels_wrap">';
671
- $output .= '<input id="width_unit_percent" type="radio" name="' . $field['id'] . '[map_width_unit]" class="width_radio" value="%" ' . ( $meta['map_width_unit'] === '%' || $field['width_unit_std'] === '%' ? 'checked="checked"' : '' ) . '><label class="width_unit_label">%</label>';
672
- $output .= '<input id="width_unit_px" type="radio" name="' . $field['id'] . '[map_width_unit]" class="width_radio" value="px" ' . ( $meta['map_width_unit'] === 'px' ? 'checked="checked"' : '' ) . ' ><label class="width_unit_label">px</label>';
673
- $output .= '</div>';
674
- $output .= '</div>';
675
-
676
- //height
677
- $output .= '<div id="height_wrap" class="clear">';
678
- $output .= '<label for="' . $field['id'] . '[height]" class="height-label size-label">Height:</label><input type="text" class="regular-text map-height" name="' . $field['id'] . '[height]" id="' . $field['id'] . '-height" value="' . ( $meta['height'] ? $meta['height'] : $field['height_std'] ) . '" />';
679
- $output .= '</div>';
680
- $output .= '</div>';
681
-
682
-
683
- echo $output;
684
-
685
-
686
- }
687
-
688
-
689
- /**
690
- * CMB Lat Lng
691
- *
692
- * Custom CMB field for Gmap latitude and longitude
693
- *
694
- * @param $field
695
- * @param $meta
696
- */
697
- function cmb_render_lat_lng( $field, $meta ) {
698
- $meta = wp_parse_args(
699
- $meta, array(
700
- 'latitude' => '',
701
- 'longitude' => '',
702
- )
703
- );
704
-
705
- //lat lng
706
- $output = '<div id="lat-lng-wrap">
707
- <div class="coordinates-wrap clear">
708
- <div class="lat-lng-wrap lat-wrap clear"><span>Latitude: </span>
709
- <input type="text" class="regular-text latitude" name="' . $field['id'] . '[latitude]" id="' . $field['id'] . '-latitude" value="' . ( $meta['latitude'] ? $meta['latitude'] : $field['lat_std'] ) . '" />
710
- </div>
711
- <div class="lat-lng-wrap lng-wrap clear"><span>Longitude: </span>
712
- <input type="text" class="regular-text longitude" name="' . $field['id'] . '[longitude]" id="' . $field['id'] . '-longitude" value="' . ( $meta['longitude'] ? $meta['longitude'] : $field['lng_std'] ) . '" />
713
- </div>';
714
- $output .= '<div class="wpgp-message lat-lng-change-message clear"><p>Lat/lng changed</p><a href="#" class="button lat-lng-update-btn button-small" data-lat="" data-lng="">Update</a></div>';
715
- $output .= '</div><!-- /.coordinates-wrap -->
716
- </div>';
717
-
718
-
719
- echo $output;
720
-
721
-
722
- }
723
-
724
- /**
725
- * Custom Google Geocoder field
726
- * @since 1.0.0
727
- * @return array
728
- */
729
- function cmb_render_google_geocoder( $field, $meta ) {
730
-
731
- $meta = wp_parse_args(
732
- $meta, array(
733
- 'geocode' => '',
734
- )
735
- );
736
-
737
- echo '<div class="autocomplete-wrap"><input type="text" name="' . $field['id'] . '[geocode]" id="' . $field['id'] . '" value="" class="search-autocomplete" /><p class="autocomplete-description">' .
738
- sprintf( __( 'Enter the name of a place or an address above to create a map marker or %s', $this->plugin_slug ), '<a href="#" class="drop-marker button button-small">Drop a Marker</a>' ) .
739
- '</p></div>';
740
-
741
- //'desc' => sprintf( __( 'Set optional preconfigured styles. <a href="%s" class="snazzy-link new-window" target="_blank">Snazzy Maps</a>', $this->plugin_slug ), esc_url( 'http://snazzymaps.com' ) ),
742
-
743
-
744
- //Markers Modal
745
- add_thickbox();
746
- include( 'views/markers.php' );
747
-
748
- }
749
-
750
- /**
751
- * Custom Google Geocoder field
752
- * @since 1.0.0
753
- */
754
- function cmb_render_google_maps_preview( $field, $meta ) {
755
- global $post;
756
- $meta = wp_parse_args( $meta, array() );
757
- $wh_value = get_post_meta( $post->ID, 'gmb_width_height', true );
758
- $default_options = $this->get_default_map_options();
759
-
760
-
761
- $map_height = isset( $wh_value['height'] ) ? $wh_value['height'] : $default_options['height'];
762
- $map_width = isset( $wh_value['width'] ) ? $wh_value['width'] : $default_options['width'];
763
- $map_width_val = isset( $wh_value['map_width_unit'] ) ? $wh_value['map_width_unit'] : $default_options['width_unit'];
764
-
765
- $output = '<div class="places-loading wpgp-loading">Loading Places</div><div id="google-map-wrap">';
766
- $output .= '<div id="map" style="height:' . $map_height . 'px; width:' . $map_width . $map_width_val . '"></div>';
767
- $output .= '</div>';
768
- $output .= '<div class="warning-message wpgp-message"></div>';
769
-
770
- echo $output;
771
-
772
- }
773
-
774
-
 
 
 
 
 
 
 
 
 
 
775
  } //end class
1
+ <?php
2
+
3
+ /**
4
+ * Google Maps Admin
5
+ *
6
+ * The admin is considered the single post view where you build maps
7
+ *
8
+ * @package Google_Maps_Builder_Admin
9
+ * @author Devin Walker <devin@wordimpress.com>
10
+ * @license GPL-2.0+
11
+ * @link http://wordimpress.com
12
+ * @copyright 2014 WordImpress, Devin Walker
13
+ */
14
+ class Google_Maps_Builder_Admin {
15
+
16
+ /**
17
+ * Instance of this class.
18
+ *
19
+ * @since 1.0.0
20
+ *
21
+ * @var object
22
+ */
23
+ protected static $instance = null;
24
+
25
+
26
+ /**
27
+ * Array of metaboxes/fields
28
+ *
29
+ * @since 1.0.0
30
+ *
31
+ * @var array
32
+ */
33
+ protected static $plugin_options = array();
34
+
35
+ /**
36
+ * Array of metaboxes/fields
37
+ *
38
+ * @since 1.0.0
39
+ *
40
+ * @var array
41
+ */
42
+ protected static $default_map_options;
43
+
44
+
45
+ /**
46
+ * Initialize the plugin by loading admin scripts & styles and adding a
47
+ * settings page and menu.
48
+ *
49
+ * @since 1.0.0
50
+ */
51
+ private function __construct() {
52
+
53
+ /*
54
+ * Call $plugin_slug from public plugin class.
55
+ */
56
+ $plugin = Google_Maps_Builder::get_instance();
57
+ $this->plugin_slug = $plugin->get_plugin_slug();
58
+
59
+ // Load admin style sheet and JavaScript.
60
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_styles' ) );
61
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_scripts' ) );
62
+
63
+ //Add metaboxes and fields to CPT
64
+ add_filter( 'cmb_meta_boxes', array( $this, 'cpt_metaboxes_fields' ), 1 );
65
+
66
+ //Custom Meta Fields
67
+ add_action( 'cmb_render_google_geocoder', array( $this, 'cmb_render_google_geocoder' ), 10, 2 );
68
+ add_action( 'cmb_render_google_maps_preview', array( $this, 'cmb_render_google_maps_preview' ), 10, 2 );
69
+ add_action( 'cmb_render_search_options', array( $this, 'cmb_render_search_options' ), 10, 2 );
70
+ add_action( 'cmb_render_width_height', array( $this, 'cmb_render_width_height' ), 10, 2 );
71
+ add_action( 'cmb_render_lat_lng', array( $this, 'cmb_render_lat_lng' ), 10, 2 );
72
+ add_action( 'post_submitbox_misc_actions', array( $this, 'gmb_add_shortcode_to_publish_metabox' ) );
73
+
74
+
75
+ }
76
+
77
+ /**
78
+ *
79
+ * Add Shortcode to Publish Metabox
80
+ *
81
+ */
82
+ public function gmb_add_shortcode_to_publish_metabox() {
83
+
84
+ if ('google_maps' !== get_post_type())
85
+ return false;
86
+
87
+ global $post;
88
+
89
+ //Only enqueue scripts for CPT on post type screen
90
+ if ( 'google_maps' === $post->post_type ) {
91
+ //Shortcode column with select all input
92
+ $shortcode = htmlentities( '[google_maps id="' . $post->ID . '"]' );
93
+ echo '<div class="shortcode-wrap box-sizing"><label>' . __( 'Map Shortcode:', $this->plugin_slug ) . '</label><input onClick="this.setSelectionRange(0, this.value.length)" type="text" class="shortcode-input" readonly value="' . $shortcode . '"></div>';
94
+
95
+ }
96
+
97
+ }
98
+
99
+ /**
100
+ * Get Default Map Options
101
+ *
102
+ * Helper function that returns default map options from settings
103
+ * @return array
104
+ */
105
+ public function get_default_map_options() {
106
+
107
+ $width_height = gmb_get_option( 'gmb_width_height' );
108
+
109
+ $defaults = array(
110
+ 'width' => ( isset( $width_height['width'] ) ) ? $width_height['width'] : '100',
111
+ 'width_unit' => ( isset( $width_height['map_width_unit'] ) ) ? $width_height['map_width_unit'] : '%',
112
+ 'height' => ( isset( $width_height['height'] ) ) ? $width_height['height'] : '600'
113
+ );
114
+
115
+ return $defaults;
116
+
117
+ }
118
+
119
+ /**
120
+ * Return an instance of this class.
121
+ *
122
+ * @since 1.0.0
123
+ *
124
+ * @return object A single instance of this class.
125
+ */
126
+ public static function get_instance() {
127
+
128
+ // If the single instance hasn't been set, set it now.
129
+ if ( null == self::$instance ) {
130
+ self::$instance = new self;
131
+ }
132
+
133
+ return self::$instance;
134
+ }
135
+
136
+
137
+ /**
138
+ * Register and enqueue admin-specific style sheet.
139
+ *
140
+ * Return early if no settings page is registered.
141
+ * @since 1.0.0
142
+ *
143
+ * @return null
144
+ */
145
+ public function enqueue_admin_styles( $hook ) {
146
+
147
+ global $post;
148
+ $suffix = defined( 'GMB_DEBUG' ) && GMB_DEBUG ? '' : '.min';
149
+
150
+ //Only enqueue scripts for CPT on post type screen
151
+ if ( $hook == 'post-new.php' || $hook == 'post.php' && 'google_maps' === $post->post_type ) {
152
+
153
+ wp_enqueue_style( $this->plugin_slug . '-admin-styles', plugins_url( 'assets/css/admin' . $suffix . '.css', __FILE__ ), array(), Google_Maps_Builder::VERSION );
154
+ wp_enqueue_style( $this->plugin_slug . '-map-icons', plugins_url( 'includes/map-icons/css/map-icons.css', dirname( __FILE__ ) ), array(), Google_Maps_Builder::VERSION );
155
+ wp_enqueue_style( $this->plugin_slug . '-map-tooltips', plugins_url( 'includes/tooltips/jquery.qtip' . $suffix . '.css', __FILE__ ), array(), Google_Maps_Builder::VERSION );
156
+
157
+ }
158
+
159
+ }
160
+
161
+ /**
162
+ * Register and enqueue admin-specific JavaScript.
163
+ *
164
+ * @since 1.0.0
165
+ *
166
+ * @return null Return early if no settings page is registered.
167
+ */
168
+ public function enqueue_admin_scripts( $hook ) {
169
+ global $post;
170
+ $suffix = defined( 'GMB_DEBUG' ) && GMB_DEBUG ? '' : '.min';
171
+
172
+ //Only enqueue scripts for CPT on post type screen
173
+ if ( $hook == 'post-new.php' || $hook == 'post.php' && 'google_maps' === $post->post_type ) {
174
+
175
+ wp_enqueue_script( $this->plugin_slug . '-admin-gmaps', 'https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&libraries=places', array( 'jquery' ) );
176
+ wp_enqueue_script( $this->plugin_slug . '-map-icons', plugins_url( 'includes/map-icons/js/map-icons.js', dirname( __FILE__ ) ), array( 'jquery' ) );
177
+ wp_enqueue_script( $this->plugin_slug . '-admin-map-builder', plugins_url( 'assets/js/admin-google-map' . $suffix . '.js', __FILE__ ), array( 'jquery' ), Google_Maps_Builder::VERSION );
178
+ wp_enqueue_script( $this->plugin_slug . '-admin-qtip', plugins_url( 'includes/tooltips/jquery.qtip' . $suffix . '.js', __FILE__ ), array( 'jquery' ), Google_Maps_Builder::VERSION, true );
179
+
180
+ $api_key = gmb_get_option( 'gmb_api_key' );
181
+ $geolocate = gmb_get_option( 'gmb_lat_lng' );
182
+
183
+ $maps_data = array(
184
+ 'api_key' => $api_key,
185
+ 'geolocate_setting' => isset( $geolocate['geolocate_map'] ) ? $geolocate['geolocate_map'] : 'yes',
186
+ 'default_lat' => isset( $geolocate['latitude'] ) ? $geolocate['latitude'] : '32.715738',
187
+ 'default_lng' => isset( $geolocate['longitude'] ) ? $geolocate['longitude'] : '-117.16108380000003',
188
+ 'plugin_url' => GMB_PLUGIN_URL,
189
+ 'snazzy' => GMB_PLUGIN_URL . '/admin/assets/js/snazzy.json'
190
+ );
191
+ wp_localize_script( $this->plugin_slug . '-admin-map-builder', 'gmb_data', $maps_data );
192
+
193
+ }
194
+
195
+ wp_enqueue_style( 'dashicons' );
196
+
197
+
198
+ }
199
+
200
+
201
+ /**
202
+ * Register our setting to WP
203
+ * @since 1.0.0
204
+ */
205
+ public function settings_init() {
206
+ register_setting( $this->plugin_slug, $this->plugin_slug );
207
+ }
208
+
209
+
210
+ /**
211
+ * Defines the Google Places CPT metabox and field configuration
212
+ * @since 1.0.0
213
+ * @return array
214
+ */
215
+
216
+ public function cpt_metaboxes_fields( array $meta_boxes ) {
217
+
218
+ $prefix = 'gmb_'; // Prefix for all fields
219
+
220
+ $default_options = $this->get_default_map_options();
221
+
222
+ $meta_boxes['google_maps_metabox'] = array(
223
+ 'id' => 'google_maps_metabox',
224
+ 'title' => __( 'Google Map Markers', $this->plugin_slug ),
225
+ 'pages' => array( 'google_maps' ), // post type
226
+ 'context' => 'normal', // 'normal', 'advanced', or 'side'
227
+ 'priority' => 'high', // 'high', 'core', 'default' or 'low'
228
+ 'show_names' => true, // Show field names on the left
229
+ 'fields' => array(
230
+ array(
231
+ 'name' => __( 'Create Marker', $this->plugin_slug ),
232
+ 'id' => $prefix . 'geocoder',
233
+ 'type' => 'google_geocoder',
234
+ 'std' => 'San Diego, CA, United States',
235
+ 'desc' => '',
236
+ ),
237
+ ),
238
+ );
239
+ $meta_boxes['google_maps_preview_metabox'] = array(
240
+ 'id' => 'google_maps_preview_metabox',
241
+ 'title' => __( 'Google Map Preview', $this->plugin_slug ),
242
+ 'pages' => array( 'google_maps' ), // post type
243
+ 'context' => 'normal', // 'normal', 'advanced', or 'side'
244
+ 'priority' => 'core', // 'high', 'core', 'default' or 'low'
245
+ 'show_names' => false, // Show field names on the left
246
+ 'fields' => array(
247
+ array(
248
+ 'name' => 'Map Preview',
249
+ 'id' => $prefix . 'preview',
250
+ 'type' => 'google_maps_preview',
251
+ 'std' => '',
252
+ ),
253
+
254
+ ),
255
+ );
256
+ $meta_boxes['google_maps_markers'] = array(
257
+ 'id' => 'google_maps_markers',
258
+ 'title' => __( 'Google Map Markers', $this->plugin_slug ),
259
+ 'pages' => array( 'google_maps' ), // post type
260
+ 'context' => 'normal', // 'normal', 'advanced', or 'side'
261
+ 'priority' => 'low', // 'high', 'core', 'default' or 'low'
262
+ 'show_names' => true, // Show field names on the left
263
+ 'fields' => array(
264
+ array(
265
+ 'id' => $prefix . 'markers_group',
266
+ 'type' => 'group',
267
+ 'description' => __( 'Map marker data is contained within the repeatable fields below. You may add or update marker data here in bulk.', $this->plugin_slug ),
268
+ 'options' => array(
269
+ 'add_button' => __( 'Add Another Marker', $this->plugin_slug ),
270
+ 'remove_button' => __( 'Remove Marker', $this->plugin_slug ),
271
+ 'sortable' => true, // beta
272
+ ),
273
+ // Fields array works the same, except id's only need to be unique for this group. Prefix is not needed.
274
+ 'fields' => array(
275
+ array(
276
+ 'name' => 'Marker Title',
277
+ 'id' => 'title',
278
+ 'type' => 'text',
279
+ ),
280
+ array(
281
+ 'name' => 'Marker Description',
282
+ 'description' => 'Write a short description for this marker',
283
+ 'id' => 'description',
284
+ 'type' => 'textarea_small',
285
+ ),
286
+ array(
287
+ 'name' => 'Marker Reference',
288
+ 'id' => 'reference',
289
+ 'type' => 'text',
290
+ ),
291
+ array(
292
+ 'name' => 'Hide Place Details',
293
+ 'id' => 'hide_details',
294
+ 'type' => 'checkbox',
295
+ ),
296
+ array(
297
+ 'name' => 'Marker Latitude',
298
+ 'id' => 'lat',
299
+ 'type' => 'text',
300
+ ),
301
+ array(
302
+ 'name' => 'Marker Longitude',
303
+ 'id' => 'lng',
304
+ 'type' => 'text',
305
+ ),
306
+ array(
307
+ 'name' => 'Marker Data',
308
+ 'id' => 'marker',
309
+ 'type' => 'textarea_code',
310
+ ),
311
+ array(
312
+ 'name' => 'Marker Label Data',
313
+ 'id' => 'label',
314
+ 'type' => 'textarea_code',
315
+ ),
316
+ ),
317
+ ),
318
+ ),
319
+ );
320
+
321
+
322
+ $meta_boxes['google_maps_search_options'] = array(
323
+ 'id' => 'google_maps_search_options',
324
+ 'title' => __( 'Google Places', $this->plugin_slug ),
325
+ 'pages' => array( 'google_maps' ), // post type
326
+ 'context' => 'normal', // 'normal', 'advanced', or 'side'
327
+ 'priority' => 'core', // 'high', 'core', 'default' or 'low'
328
+ 'show_names' => true, // Show field names on the left
329
+ 'fields' => array(
330
+ array(
331
+ 'name' => __( 'Show Places?', $this->plugin_slug ),
332
+ 'desc' => __( 'Display establishments, prominent points of interest, geographic locations, and more.', $this->plugin_slug ),
333
+ 'id' => $prefix . 'show_places',
334
+ 'type' => 'radio_inline',
335
+ 'options' => array(
336
+ 'yes' => __( 'Yes', 'cmb' ),
337
+ 'no' => __( 'No', 'cmb' ),
338
+ ),
339
+ ),
340
+ array(
341
+ 'name' => __( 'Search Radius', $this->plugin_slug ),
342
+ 'desc' => __( 'Defines the distance (in meters) within which to return Place results. The maximum allowed radius is 50,000 meters.', $this->plugin_slug ),
343
+ 'std' => '1000',
344
+ 'id' => $prefix . 'search_radius',
345
+ 'type' => 'text_small'
346
+ ),
347
+ array(
348
+ 'name' => __( 'Place Types', $this->plugin_slug ),
349
+ 'desc' => __( 'Select which type of places you would like to display on this map.', $this->plugin_slug ),
350
+ 'id' => $prefix . 'places_search_multicheckbox',
351
+ 'type' => 'multicheck',
352
+ 'options' => array(
353
+ 'accounting' => __( 'Accounting', $this->plugin_slug ),
354
+ 'airport' => __( 'Airport', $this->plugin_slug ),
355
+ 'amusement_park' => __( 'Amusement Park', $this->plugin_slug ),
356
+ 'aquarium' => __( 'Aquarium', $this->plugin_slug ),
357
+ 'art_gallery' => __( 'Art Gallery', $this->plugin_slug ),
358
+ 'atm' => __( 'ATM', $this->plugin_slug ),
359
+ 'bakery' => __( 'Bakery', $this->plugin_slug ),
360
+ 'bank' => __( 'Bank', $this->plugin_slug ),
361
+ 'bar' => __( 'Bar', $this->plugin_slug ),
362
+ 'beauty_salon' => __( 'Beauty Salon', $this->plugin_slug ),
363
+ 'bicycle_store' => __( 'Bicycle Store', $this->plugin_slug ),
364
+ 'book_store' => __( 'Book Store', $this->plugin_slug ),
365
+ 'bowling_alley' => __( 'Bowling Alley', $this->plugin_slug ),
366
+ 'bus_station' => __( 'Bus Station', $this->plugin_slug ),
367
+ 'cafe' => __( 'Cafe', $this->plugin_slug ),
368
+ 'campground' => __( 'Campground', $this->plugin_slug ),
369
+ 'car_dealer' => __( 'Car Dealer', $this->plugin_slug ),
370
+ 'car_rental' => __( 'Car Rental', $this->plugin_slug ),
371
+ 'car_repair' => __( 'Car Repair', $this->plugin_slug ),
372
+ 'car_wash' => __( 'Car Wash', $this->plugin_slug ),
373
+ 'casino' => __( 'Casino', $this->plugin_slug ),
374
+ 'cemetery' => __( 'Cemetery', $this->plugin_slug ),
375
+ 'church' => __( 'Church', $this->plugin_slug ),
376
+ 'city_hall' => __( 'City Hall', $this->plugin_slug ),
377
+ 'clothing_store' => __( 'Clothing Store', $this->plugin_slug ),
378
+ 'convenience_store' => __( 'Convenience Store', $this->plugin_slug ),
379
+ 'courthouse' => __( 'Courthouse', $this->plugin_slug ),
380
+ 'dentist' => __( 'Dentist', $this->plugin_slug ),
381
+ 'department_store' => __( 'Department Store', $this->plugin_slug ),
382
+ 'doctor' => __( 'Doctor', $this->plugin_slug ),
383
+ 'electrician' => __( 'Electrician', $this->plugin_slug ),
384
+ 'electronics_store' => __( 'Electronics Store', $this->plugin_slug ),
385
+ 'embassy' => __( 'Embassy', $this->plugin_slug ),
386
+ 'establishment' => __( 'Establishment', $this->plugin_slug ),
387
+ 'finance' => __( 'Finance', $this->plugin_slug ),
388
+ 'fire_station' => __( 'Fire Station', $this->plugin_slug ),
389
+ 'florist' => __( 'Florist', $this->plugin_slug ),
390
+ 'food' => __( 'Food', $this->plugin_slug ),
391
+ 'funeral_home' => __( 'Funeral Home', $this->plugin_slug ),
392
+ 'furniture_store' => __( 'Furniture_store', $this->plugin_slug ),
393
+ 'gas_station' => __( 'Gas Station', $this->plugin_slug ),
394
+ 'general_contractor' => __( 'General Contractor', $this->plugin_slug ),
395
+ 'grocery_or_supermarket' => __( 'Grocery or Supermarket', $this->plugin_slug ),
396
+ 'gym' => __( 'Gym', $this->plugin_slug ),
397
+ 'hair_care' => __( 'Hair Care', $this->plugin_slug ),
398
+ 'hardware_store' => __( 'Hardware Store', $this->plugin_slug ),
399
+ 'health' => __( 'Health', $this->plugin_slug ),
400
+ 'hindu_temple' => __( 'Hindu Temple', $this->plugin_slug ),
401
+ 'home_goods_store' => __( 'Home Goods Store', $this->plugin_slug ),
402
+ 'hospital' => __( 'Hospital', $this->plugin_slug ),
403
+ 'insurance_agency' => __( 'Insurance Agency', $this->plugin_slug ),
404
+ 'jewelry_store' => __( 'Jewelry Store', $this->plugin_slug ),
405
+ 'laundry' => __( 'Laundry', $this->plugin_slug ),
406
+ 'lawyer' => __( 'Lawyer', $this->plugin_slug ),
407
+ 'library' => __( 'Library', $this->plugin_slug ),
408
+ 'liquor_store' => __( 'Liquor Store', $this->plugin_slug ),
409
+ 'local_government_office' => __( 'Local Government Office', $this->plugin_slug ),
410
+ 'locksmith' => __( 'Locksmith', $this->plugin_slug ),
411
+ 'lodging' => __( 'Lodging', $this->plugin_slug ),
412
+ 'meal_delivery' => __( 'Meal Delivery', $this->plugin_slug ),
413
+ 'meal_takeaway' => __( 'Meal Takeaway', $this->plugin_slug ),
414
+ 'mosque' => __( 'Mosque', $this->plugin_slug ),
415
+ 'movie_rental' => __( 'Movie Rental', $this->plugin_slug ),
416
+ 'movie_theater' => __( 'Movie Theater', $this->plugin_slug ),
417
+ 'moving_company' => __( 'Moving Company', $this->plugin_slug ),
418
+ 'museum' => __( 'Museum', $this->plugin_slug ),
419
+ 'night_club' => __( 'Night Club', $this->plugin_slug ),
420
+ 'painter' => __( 'Painter', $this->plugin_slug ),
421
+ 'park' => __( 'Park', $this->plugin_slug ),
422
+ 'parking' => __( 'Parking', $this->plugin_slug ),
423
+ 'pet_store' => __( 'Pet Store', $this->plugin_slug ),
424
+ 'pharmacy' => __( 'Pharmacy', $this->plugin_slug ),
425
+ 'physiotherapist' => __( 'Physiotherapist', $this->plugin_slug ),
426
+ 'place_of_worship' => __( 'Place of Worship', $this->plugin_slug ),
427
+ 'plumber' => __( 'Plumber', $this->plugin_slug ),
428
+ 'police' => __( 'Police', $this->plugin_slug ),
429
+ 'post_office' => __( 'Post Office', $this->plugin_slug ),
430
+ 'real_estate_agency' => __( 'Real Estate Agency', $this->plugin_slug ),
431
+ 'restaurant' => __( 'Restaurant', $this->plugin_slug ),
432
+ 'roofing_contractor' => __( 'Roofing Contractor', $this->plugin_slug ),
433
+ 'rv_park' => __( 'RV Park', $this->plugin_slug ),
434
+ 'school' => __( 'School', $this->plugin_slug ),
435
+ 'shoe_store' => __( 'Shoe Store', $this->plugin_slug ),
436
+ 'shopping_mall' => __( 'Shopping Mall', $this->plugin_slug ),
437
+ 'spa' => __( 'Spa', $this->plugin_slug ),
438
+ 'stadium' => __( 'Stadium', $this->plugin_slug ),
439
+ 'storage' => __( 'Storage', $this->plugin_slug ),
440
+ 'store' => __( 'Store', $this->plugin_slug ),
441
+ 'subway_station' => __( 'Subway Station', $this->plugin_slug ),
442
+ 'synagogue' => __( 'Synagogue', $this->plugin_slug ),
443
+ 'taxi_stand' => __( 'Taxi Stand', $this->plugin_slug ),
444
+ 'train_station' => __( 'Train Station', $this->plugin_slug ),
445
+ 'travel_agency' => __( 'Travel Agency', $this->plugin_slug ),
446
+ 'university' => __( 'University', $this->plugin_slug ),
447
+ 'veterinary_care' => __( 'Veterinary Care', $this->plugin_slug ),
448
+ 'zoo' => __( 'Zoo', $this->plugin_slug )
449
+ ),
450
+ ),
451
+ ),
452
+ );
453
+
454
+ $meta_boxes['google_maps_options'] = array(
455
+ 'id' => 'google_maps_options',
456
+ 'title' => __( 'Google Map Display Options', $this->plugin_slug ),
457
+ 'pages' => array( 'google_maps' ), // post type
458
+ 'context' => 'side', // 'normal', 'advanced', or 'side'
459
+ 'priority' => 'default', // 'high', 'core', 'default' or 'low'
460
+ 'show_names' => true, // Show field names on the left
461
+ 'fields' => array(
462
+ array(
463
+ 'name' => __( 'Map Size', $this->plugin_slug ),
464
+ 'id' => $prefix . 'width_height',
465
+ 'type' => 'width_height',
466
+ 'width_std' => $default_options['width'],
467
+ 'width_unit_std' => $default_options['width_unit'],
468
+ 'height_std' => $default_options['height'],
469
+ 'desc' => '',
470
+ ),
471
+ array(
472
+ 'name' => __( 'Map Location', $this->plugin_slug ),
473
+ 'id' => $prefix . 'lat_lng',
474
+ 'type' => 'lat_lng',
475
+ 'lat_std' => '',
476
+ 'lng_std' => '',
477
+ 'desc' => '',
478
+ ),
479
+
480
+ array(
481
+ 'name' => 'Map Type',
482
+ 'id' => $prefix . 'type',
483
+ 'type' => 'select',
484
+ 'std' => 'default',
485
+ 'options' => array(
486
+ array( 'name' => __( 'Road Map', $this->plugin_slug ), 'value' => 'RoadMap' ),
487
+ array( 'name' => __( 'Satellite', $this->plugin_slug ), 'value' => 'Satellite' ),
488
+ array( 'name' => __( 'Hybrid', $this->plugin_slug ), 'value' => 'Hybrid' ),
489
+ array( 'name' => __( 'Terrain', $this->plugin_slug ), 'value' => 'Terrain' ),
490
+ ),
491
+ ),
492
+ array(
493
+ 'name' => 'Map Theme',
494
+ 'desc' => sprintf( __( 'Set optional preconfigured styles. <a href="%s" class="snazzy-link new-window" target="_blank">Snazzy Maps</a>', $this->plugin_slug ), esc_url( 'http://snazzymaps.com' ) ),
495
+ 'id' => $prefix . 'theme',
496
+ 'type' => 'select',
497
+ 'std' => 'none',
498
+ 'options' => array(
499
+ array( 'name' => __( 'None', $this->plugin_slug ), 'value' => 'none' ),
500
+ array( 'name' => __( 'Aqua', $this->plugin_slug ), 'value' => '68' ),
501
+ array( 'name' => __( 'A Dark World', $this->plugin_slug ), 'value' => '73' ),
502
+ array( 'name' => __( 'Bluish', $this->plugin_slug ), 'value' => '28' ),
503
+ array( 'name' => __( 'Cool Grey', $this->plugin_slug ), 'value' => '80' ),
504
+ array( 'name' => __( 'Clean Cut', $this->plugin_slug ), 'value' => '77' ),
505
+ array( 'name' => __( 'Flat Green', $this->plugin_slug ), 'value' => '36' ),
506
+ array( 'name' => __( 'MapBox', $this->plugin_slug ), 'value' => '44' ),
507
+ array( 'name' => __( 'Muted Blue', $this->plugin_slug ), 'value' => '83' ),
508
+ array( 'name' => __( 'Old Timey', $this->plugin_slug ), 'value' => '22' ),
509
+ array( 'name' => __( 'Pale Dawn', $this->plugin_slug ), 'value' => '1' ),
510
+ array( 'name' => __( 'Paper', $this->plugin_slug ), 'value' => '19' ),
511
+ array( 'name' => __( 'Lunar Landscape', $this->plugin_slug ), 'value' => '37' ),
512
+ array( 'name' => __( 'Shade of Green', $this->plugin_slug ), 'value' => '75' ),
513
+ array( 'name' => __( 'Shift Worker', $this->plugin_slug ), 'value' => '27' ),
514
+ array( 'name' => __( 'Subtle Grayscale', $this->plugin_slug ), 'value' => '15' ),
515
+ array( 'name' => __( 'The Endless Atlas', $this->plugin_slug ), 'value' => '50' ),
516
+ ),
517
+ ),
518
+ array(
519
+ 'name' => 'Map Theme JSON',
520
+ 'desc' => 'Contains the map theme JSON',
521
+ 'default' => 'none',
522
+ 'id' => $prefix . 'theme_json',
523
+ 'type' => 'textarea_code'
524
+ ),
525
+ array(
526
+ 'name' => 'Zoom',
527
+ 'desc' => __( 'Adjust the map zoom (0-21)', $this->plugin_slug ),
528
+ 'id' => $prefix . 'zoom',
529
+ 'type' => 'select',
530
+ 'std' => '15',
531
+ 'options' => array(
532
+ array( 'name' => '21', 'value' => '21' ),
533
+ array( 'name' => '20', 'value' => '20' ),
534
+ array( 'name' => '19', 'value' => '19' ),
535
+ array( 'name' => '18', 'value' => '18' ),
536
+ array( 'name' => '17', 'value' => '17' ),
537
+ array( 'name' => '16', 'value' => '16' ),
538
+ array( 'name' => '15', 'value' => '15' ),
539
+ array( 'name' => '14', 'value' => '14' ),
540
+ array( 'name' => '13', 'value' => '13' ),
541
+ array( 'name' => '12', 'value' => '12' ),
542
+ array( 'name' => '11', 'value' => '11' ),
543
+ array( 'name' => '10', 'value' => '10' ),
544
+ array( 'name' => '9', 'value' => '9' ),
545
+ array( 'name' => '8', 'value' => '8' ),
546
+ array( 'name' => '7', 'value' => '7' ),
547
+ array( 'name' => '6', 'value' => '6' ),
548
+ array( 'name' => '5', 'value' => '5' ),
549
+ array( 'name' => '4', 'value' => '4' ),
550
+ array( 'name' => '3', 'value' => '3' ),
551
+ array( 'name' => '2', 'value' => '2' ),
552
+ array( 'name' => '1', 'value' => '1' ),
553
+ array( 'name' => '0', 'value' => '0' ),
554
+
555
+ )
556
+ ),
557
+ array(
558
+ 'name' => 'Custom Map Marker Icon',
559
+ 'desc' => 'Use a custom map marker for the map.',
560
+ 'id' => $prefix . 'map_marker',
561
+ 'type' => 'file',
562
+ 'allow' => array( 'url', 'attachment' ),
563
+ ),
564
+ ),
565
+ );
566
+
567
+ $meta_boxes['google_maps_control_options'] = array(
568
+ 'id' => 'google_maps_control_options',
569
+ 'title' => __( 'Google Map Control Options', $this->plugin_slug ),
570
+ 'pages' => array( 'google_maps' ), // post type
571
+ 'context' => 'side', // 'normal', 'advanced', or 'side'
572
+ 'priority' => 'default', // 'high', 'core', 'default' or 'low'
573
+ 'show_names' => true, // Show field names on the left
574
+ 'fields' => array(
575
+ array(
576
+ 'name' => 'Zoom Control',
577
+ 'id' => $prefix . 'zoom_control',
578
+ 'type' => 'select',
579
+ 'std' => 'default',
580
+ 'options' => array(
581
+ array( 'name' => __( 'None', $this->plugin_slug ), 'value' => 'none' ),
582
+ array( 'name' => __( 'Small', $this->plugin_slug ), 'value' => 'small' ),
583
+ array( 'name' => __( 'Large', $this->plugin_slug ), 'value' => 'large' ),
584
+ array( 'name' => __( 'Default', $this->plugin_slug ), 'value' => 'default' ),
585
+ ),
586
+ ),
587
+ array(
588
+ 'name' => 'Street View',
589
+ 'id' => $prefix . 'street_view',
590
+ 'type' => 'select',
591
+ 'std' => 'true',
592
+ 'options' => array(
593
+ array( 'name' => __( 'None', $this->plugin_slug ), 'value' => 'none' ),
594
+ array( 'name' => __( 'Standard', $this->plugin_slug ), 'value' => 'true' ),
595
+ ),
596
+ ),
597
+ array(
598
+ 'name' => 'Pan Control',
599
+ 'id' => $prefix . 'pan',
600
+ 'type' => 'select',
601
+ 'std' => 'true',
602
+ 'options' => array(
603
+ array( 'name' => __( 'None', $this->plugin_slug ), 'value' => 'none' ),
604
+ array( 'name' => __( 'Standard', $this->plugin_slug ), 'value' => 'true' ),
605
+ ),
606
+ ),
607
+ array(
608
+ 'name' => 'Map Type Control',
609
+ 'id' => $prefix . 'map_type_control',
610
+ 'type' => 'select',
611
+ 'std' => 'horizontal_bar',
612
+ 'options' => array(
613
+ array( 'name' => __( 'None', $this->plugin_slug ), 'value' => 'none' ),
614
+ array( 'name' => __( 'Dropdown Menu', $this->plugin_slug ), 'value' => 'dropdown_menu' ),
615
+ array( 'name' => __( 'Horizontal Bar', $this->plugin_slug ), 'value' => 'horizontal_bar' ),
616
+ ),
617
+ ),
618
+
619
+ array(
620
+ 'name' => 'Draggable Map',
621
+ 'id' => $prefix . 'draggable',
622
+ 'type' => 'select',
623
+ 'std' => 'true',
624
+ 'options' => array(
625
+ array( 'name' => __( 'None', $this->plugin_slug ), 'value' => 'none' ),
626
+ array( 'name' => __( 'Standard', $this->plugin_slug ), 'value' => 'true' ),
627
+ ),
628
+ ),
629
+ array(
630
+ 'name' => 'Double Click to Zoom',
631
+ 'id' => $prefix . 'double_click',
632
+ 'type' => 'select',
633
+ 'std' => 'true',
634
+ 'options' => array(
635
+ array( 'name' => __( 'None', $this->plugin_slug ), 'value' => 'none' ),
636
+ array( 'name' => __( 'Standard', $this->plugin_slug ), 'value' => 'true' ),
637
+ ),
638
+ ),
639
+ array(
640
+ 'name' => 'Mouse Wheel to Zoom',
641
+ 'id' => $prefix . 'wheel_zoom',
642
+ 'type' => 'select',
643
+ 'std' => 'none',
644
+ 'options' => array(
645
+ array( 'name' => __( 'None', $this->plugin_slug ), 'value' => 'none' ),
646
+ array( 'name' => __( 'Standard', $this->plugin_slug ), 'value' => 'true' ),
647
+ ),
648
+ ),
649
+ ),
650
+
651
+ );
652
+
653
+ return $meta_boxes;
654
+
655
+ }
656
+
657
+
658
+ /**
659
+ * CMB Width Height
660
+ *
661
+ * Custom CMB field for Gmap width and height
662
+ *
663
+ * @param $field
664
+ * @param $meta
665
+ */
666
+ function cmb_render_width_height( $field, $meta ) {
667
+ $default_options = $this->get_default_map_options();
668
+ $meta = wp_parse_args(
669
+ $meta, array(
670
+ 'width' => $default_options['width'],
671
+ 'height' => $default_options['height'],
672
+ 'map_width_unit' => $default_options['width_unit'],
673
+ )
674
+ );
675
+
676
+ $output = '<div id="width_height_wrap" class="clear">';
677
+ //width
678
+ $output .= '<div id="width_wrap" class="clear">';
679
+ $output .= '<label class="width-label size-label">Width:</label><input type="text" class="regular-text map-width" name="' . $field['id'] . '[width]" id="' . $field['id'] . '-width" value="' . ( $meta['width'] ? $meta['width'] : $field['width_std'] ) . '" />';
680
+ $output .= '<div id="size_labels_wrap">';
681
+ $output .= '<input id="width_unit_percent" type="radio" name="' . $field['id'] . '[map_width_unit]" class="width_radio" value="%" ' . ( $meta['map_width_unit'] === '%' || $field['width_unit_std'] === '%' ? 'checked="checked"' : '' ) . '><label class="width_unit_label">%</label>';
682
+ $output .= '<input id="width_unit_px" type="radio" name="' . $field['id'] . '[map_width_unit]" class="width_radio" value="px" ' . ( $meta['map_width_unit'] === 'px' ? 'checked="checked"' : '' ) . ' ><label class="width_unit_label">px</label>';
683
+ $output .= '</div>';
684
+ $output .= '</div>';
685
+
686
+ //height
687
+ $output .= '<div id="height_wrap" class="clear">';
688
+ $output .= '<label for="' . $field['id'] . '[height]" class="height-label size-label">Height:</label><input type="text" class="regular-text map-height" name="' . $field['id'] . '[height]" id="' . $field['id'] . '-height" value="' . ( $meta['height'] ? $meta['height'] : $field['height_std'] ) . '" />';
689
+ $output .= '</div>';
690
+ $output .= '</div>';
691
+
692
+
693
+ echo $output;
694
+
695
+
696
+ }
697
+
698
+
699
+ /**
700
+ * CMB Lat Lng
701
+ *
702
+ * Custom CMB field for Gmap latitude and longitude
703
+ *
704
+ * @param $field
705
+ * @param $meta
706
+ */
707
+ function cmb_render_lat_lng( $field, $meta ) {
708
+ $meta = wp_parse_args(
709
+ $meta, array(
710
+ 'latitude' => '',
711
+ 'longitude' => '',
712
+ )
713
+ );
714
+
715
+ //lat lng
716
+ $output = '<div id="lat-lng-wrap">
717
+ <div class="coordinates-wrap clear">
718
+ <div class="lat-lng-wrap lat-wrap clear"><span>Latitude: </span>
719
+ <input type="text" class="regular-text latitude" name="' . $field['id'] . '[latitude]" id="' . $field['id'] . '-latitude" value="' . ( $meta['latitude'] ? $meta['latitude'] : $field['lat_std'] ) . '" />
720
+ </div>
721
+ <div class="lat-lng-wrap lng-wrap clear"><span>Longitude: </span>
722
+ <input type="text" class="regular-text longitude" name="' . $field['id'] . '[longitude]" id="' . $field['id'] . '-longitude" value="' . ( $meta['longitude'] ? $meta['longitude'] : $field['lng_std'] ) . '" />
723
+ </div>';
724
+ $output .= '<div class="wpgp-message lat-lng-change-message clear"><p>Lat/lng changed</p><a href="#" class="button lat-lng-update-btn button-small" data-lat="" data-lng="">Update</a></div>';
725
+ $output .= '</div><!-- /.coordinates-wrap -->
726
+ </div>';
727
+
728
+
729
+ echo $output;
730
+
731
+
732
+ }
733
+
734
+ /**
735
+ * Custom Google Geocoder field
736
+ * @since 1.0.0
737
+ * @return array
738
+ */
739
+ function cmb_render_google_geocoder( $field, $meta ) {
740
+
741
+ $meta = wp_parse_args(
742
+ $meta, array(
743
+ 'geocode' => '',
744
+ )
745
+ );
746
+
747
+ echo '<div class="autocomplete-wrap"><input type="text" name="' . $field['id'] . '[geocode]" id="' . $field['id'] . '" value="" class="search-autocomplete" /><p class="autocomplete-description">' .
748
+ sprintf( __( 'Enter the name of a place or an address above to create a map marker or %s', $this->plugin_slug ), '<a href="#" class="drop-marker button button-small">Drop a Marker</a>' ) .
749
+ '</p></div>';
750
+
751
+ //'desc' => sprintf( __( 'Set optional preconfigured styles. <a href="%s" class="snazzy-link new-window" target="_blank">Snazzy Maps</a>', $this->plugin_slug ), esc_url( 'http://snazzymaps.com' ) ),
752
+
753
+
754
+ //Markers Modal
755
+ add_thickbox();
756
+ include( 'views/markers.php' );
757
+
758
+ }
759
+
760
+ /**
761
+ * Custom Google Geocoder field
762
+ * @since 1.0.0
763
+ */
764
+ function cmb_render_google_maps_preview( $field, $meta ) {
765
+ global $post;
766
+ $meta = wp_parse_args( $meta, array() );
767
+ $wh_value = get_post_meta( $post->ID, 'gmb_width_height', true );
768
+ $default_options = $this->get_default_map_options();
769
+
770
+
771
+ $map_height = isset( $wh_value['height'] ) ? $wh_value['height'] : $default_options['height'];
772
+ $map_width = isset( $wh_value['width'] ) ? $wh_value['width'] : $default_options['width'];
773
+ $map_width_val = isset( $wh_value['map_width_unit'] ) ? $wh_value['map_width_unit'] : $default_options['width_unit'];
774
+
775
+ $output = '<div class="places-loading wpgp-loading">Loading Places</div><div id="google-map-wrap">';
776
+ $output .= '<div id="map" style="height:' . $map_height . 'px; width:' . $map_width . $map_width_val . '"></div>';
777
+ $output .= '</div>';
778
+ $output .= '<div class="warning-message wpgp-message"></div>';
779
+
780
+ echo $output;
781
+
782
+ }
783
+
784
+
785
  } //end class
admin/class-wordpress-google-maps-settings.php CHANGED
@@ -1,422 +1,423 @@
1
- <?php
2
- /**
3
- * CMB Theme Options
4
- * @version 0.1.0
5
- */
6
- class Google_Maps_Builder_Settings {
7
-
8
-
9
- /**
10
- * Array of metaboxes/fields
11
- * @var array
12
- */
13
- protected static $plugin_options = array();
14
-
15
- public $plugin_slug;
16
-
17
- public $options_page;
18
-
19
- /**
20
- * Option key, and option page slug
21
- * @var string
22
- */
23
- protected static $key = 'gmb_settings';
24
-
25
-
26
- /**
27
- * Constructor
28
- * @since 0.1.0
29
- */
30
- public function __construct() {
31
-
32
- $plugin = Google_Maps_Builder::get_instance();
33
- $this->plugin_slug = $plugin->get_plugin_slug();
34
- $this->meta = $plugin->meta;
35
-
36
-
37
- //Create Settings submenu
38
- add_action( 'admin_init', array( $this, 'mninit' ) );
39
- add_action( 'admin_menu', array( $this, 'add_page' ) );
40
-
41
- // Load admin style sheet and JavaScript.
42
- add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_styles' ) );
43
- add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_scripts' ) );
44
- add_action( 'wp_ajax_hide_welcome', array( $this, 'hide_welcome_callback' ) );
45
- add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_pointer_script_style' ) );
46
- add_action( 'cmb_render_lat_lng_default', array( $this, 'cmb_render_lat_lng_default' ), 10, 2 );
47
-
48
- //Add links/information to plugin row meta
49
- add_filter( 'plugin_row_meta', array( $this, 'add_plugin_meta_links' ), 10, 2 );
50
- add_filter( 'plugin_action_links', array( $this, 'add_plugin_page_links' ), 10, 2 );
51
-
52
- }
53
-
54
-
55
- /**
56
- * Activation Welcome Tooltip Scripts
57
- *
58
- * @param $hook_suffix
59
- */
60
- function enqueue_pointer_script_style( $hook_suffix ) {
61
-
62
- // Assume pointer shouldn't be shown
63
- $enqueue_pointer_script_style = false;
64
-
65
- // Get array list of dismissed pointers for current user and convert it to array
66
- $dismissed_pointers = explode( ',', get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) );
67
- $key = array_search( 'gmb_welcome_pointer', $dismissed_pointers ); // $key = 2;
68
-
69
- // Check if our pointer is not among dismissed ones
70
- if ( ! in_array( 'gmb_welcome_pointer', $dismissed_pointers ) ) {
71
- $enqueue_pointer_script_style = true;
72
-
73
- // Add footer scripts using callback function
74
- add_action( 'admin_print_footer_scripts', array( $this, 'welcome_pointer_print_scripts' ) );
75
- }
76
-
77
- // Enqueue pointer CSS and JS files, if needed
78
- if ( $enqueue_pointer_script_style ) {
79
- wp_enqueue_style( 'wp-pointer' );
80
- wp_enqueue_script( 'wp-pointer' );
81
- }
82
-
83
- }
84
-
85
- /**
86
- * Print Activation Message
87
- */
88
- function welcome_pointer_print_scripts() {
89
- $pointer_content = '<h3>' . __( 'Welcome to the Google Maps Builder', $this->plugin_slug ) . '</h3>';
90
- $pointer_content .= '<p>' . __( 'Thank you for using Google Maps Builder for WordPress. To stay up to date on the latest plugin updates, enhancements and news please sign up for our mailing list.', $this->plugin_slug ) . '</p>';
91
- $pointer_content .= '<div id="mc_embed_signup" style="padding: 0 15px;"><form action="http://wordimpress.us3.list-manage2.com/subscribe/post?u=3ccb75d68bda4381e2f45794c&amp;id=83609e2883" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate><div class="mc-field-group" style="margin: 0 0 10px;"><input type="email" value="" name="EMAIL" class="required email" id="mce-EMAIL" style="margin-right:5px;width:230px;" placeholder="my.email@wordpress.com"><input type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="button"></div><div id="mce-responses" class="clear"><div class="response" id="mce-error-response" style="display:none"></div><div class="response" id="mce-success-response" style="display:none"></div></div><div style="position: absolute; left: -5000px;"><input type="text" name="b_3ccb75d68bda4381e2f45794c_83609e2883" value=""></div></form></div>';
92
- ?>
93
-
94
- <script type="text/javascript">
95
- //<![CDATA[
96
- jQuery( document ).ready( function ( $ ) {
97
- $( '#menu-posts-google_maps' ).pointer( {
98
- content : '<?php echo $pointer_content; ?>',
99
- position : {
100
- edge : 'left', // arrow direction
101
- align: 'center' // vertical alignment
102
- },
103
- pointerWidth: 350,
104
- close : function () {
105
- $.post( ajaxurl, {
106
- pointer: 'gmb_welcome_pointer', // pointer ID
107
- action : 'dismiss-wp-pointer'
108
- } );
109
- }
110
- } ).pointer( 'open' );
111
- } );
112
- //]]>
113
- </script>
114
-
115
- <?php
116
- }
117
-
118
- /**
119
- * Register our setting to WP
120
- * @since 0.1.0
121
- */
122
- public function mninit() {
123
-
124
- register_setting( self::$key, self::$key );
125
- }
126
-
127
- /**
128
- * Add menu options page
129
- * @since 1.0.0
130
- */
131
- public function add_page() {
132
-
133
- $this->options_page = add_submenu_page(
134
- 'edit.php?post_type=google_maps',
135
- __( 'Google Maps Builder Settings', $this->plugin_slug ),
136
- __( 'Settings', $this->plugin_slug ),
137
- 'manage_options',
138
- self::$key,
139
- array( $this, 'admin_page_display' )
140
- );
141
-
142
- }
143
-
144
- /**
145
- * Register and enqueue admin-specific style sheet.
146
- *
147
- *
148
- * @since 1.0.0
149
- *
150
- * @param $hook
151
- */
152
- public function enqueue_admin_styles( $hook ) {
153
-
154
- $suffix = defined( 'GMB_DEBUG' ) && GMB_DEBUG ? '' : '.min';
155
- $screen = get_current_screen();
156
-
157
- //Only enqueue scripts for Setting screen
158
- if ( $this->options_page == $screen->id ) {
159
-
160
- wp_enqueue_style( $this->plugin_slug . '-settings-grid', plugins_url( 'assets/css/grid' . $suffix . '.css', __FILE__ ), array(), Google_Maps_Builder::VERSION );
161
- wp_enqueue_style( $this->plugin_slug . '-settings-styles', plugins_url( 'assets/css/admin-settings' . $suffix . '.css', __FILE__ ), array(), Google_Maps_Builder::VERSION );
162
-
163
- }
164
-
165
-
166
- }
167
-
168
- /**
169
- * Register and enqueue admin-specific JavaScript
170
- *
171
- *
172
- * @since 1.0.0
173
- *
174
- * @param $hook
175
- */
176
- public function enqueue_admin_scripts( $hook ) {
177
- global $post;
178
- $suffix = defined( 'GMB_DEBUG' ) && GMB_DEBUG ? '' : '.min';
179
- $screen = get_current_screen();
180
-
181
- //Only enqueue scripts for Setting screen
182
- if ( $this->options_page == $screen->id ) {
183
-
184
- wp_enqueue_script( $this->plugin_slug . '-admin-settings', plugins_url( 'assets/js/admin-settings' . $suffix . '.js', __FILE__ ), array( 'jquery' ), Google_Maps_Builder::VERSION );
185
-
186
- }
187
-
188
-
189
- }
190
-
191
-
192
- /**
193
- * Hide the Settings welcome on click
194
- *
195
- * Sets a user meta key that once set
196
- *
197
- */
198
- public function hide_welcome_callback() {
199
- global $current_user;
200
- $user_id = $current_user->ID;
201
- add_user_meta( $user_id, 'gmb_hide_welcome', 'true', true );
202
- wp_die(); // ajax call must die to avoid trailing 0 in your response
203
- }
204
-
205
-
206
- /**
207
- * Admin page markup. Mostly handled by CMB
208
- * @since 0.1.0
209
- */
210
- public function admin_page_display() {
211
-
212
- include( 'views/settings-page.php' );
213
-
214
- }
215
-
216
- /**
217
- * General Option Fields
218
- * Defines the plugin option metabox and field configuration
219
- * @since 1.0.0
220
- * @return array
221
- */
222
- public function general_option_fields() {
223
-
224
- // Only need to initiate the array once per page-load
225
- if ( ! empty( self::$plugin_options ) ) {
226
- return self::$plugin_options;
227
- }
228
-
229
- $prefix = 'gmb_';
230
-
231
- self::$plugin_options = array(
232
- 'id' => 'plugin_options',
233
- 'show_on' => array( 'key' => 'options-page', 'value' => array( self::$key, ), ),
234
- 'show_names' => true,
235
- 'fields' => array(
236
- array(
237
- 'name' => __( 'Post Type Slug', $this->plugin_slug ),
238
- 'desc' => sprintf( __( 'Customize the default slug for this post type. <a href="%s">Resave (flush) permalinks</a> after customizing.', $this->plugin_slug ), esc_url( '/wp-admin/options-permalink.php' ) ),
239
- 'default' => 'google-maps',
240
- 'id' => $prefix . 'custom_slug',
241
- 'type' => 'text_small'
242
- ),
243
- array(
244
- 'name' => __( 'Menu Position', $this->plugin_slug ),
245
- 'desc' => sprintf( __( 'Set the menu position for Google Maps Builder. See the <a href="%s" class="new-window">menu_position</a> arg.', $this->plugin_slug ), esc_url( 'http://codex.wordpress.org/Function_Reference/register_post_type#Arguments' ) ),
246
- 'default' => '25',
247
- 'id' => $prefix . 'menu_position',
248
- 'type' => 'text_small'
249
- ),
250
- array(
251
- 'name' => __( 'Has Archive', $this->plugin_slug ),
252
- 'id' => $prefix . 'has_archive',
253
- 'desc' => sprintf( __( 'Controls the post type archive page. See <a href="%s">Resave (flush) permalinks</a> after customizing.', $this->plugin_slug ), esc_url( '/wp-admin/options-permalink.php' ) ),
254
- 'type' => 'radio_inline',
255
- 'options' => array(
256
- 'true' => __( 'Yes', 'cmb' ),
257
- 'false' => __( 'No', 'cmb' ),
258
- ),
259
- ),
260
- ),
261
- );
262
-
263
- return self::$plugin_options;
264
-
265
- }
266
-
267
- /**
268
- * Map Option Fields
269
- * Defines the plugin option metabox and field configuration
270
- * @since 1.0.0
271
- * @return array
272
- */
273
- public function map_option_fields() {
274
-
275
- // Only need to initiate the array once per page-load
276
- if ( ! empty( self::$plugin_options ) ) {
277
- return self::$plugin_options;
278
- }
279
-
280
- $prefix = 'gmb_';
281
-
282
- self::$plugin_options = array(
283
- 'id' => 'plugin_options',
284
- 'show_on' => array( 'key' => 'options-page', 'value' => array( self::$key, ), ),
285
- 'show_names' => true,
286
- 'fields' => array(
287
- array(
288
- 'name' => __( 'Map Size', $this->plugin_slug ),
289
- 'id' => $prefix . 'width_height',
290
- 'type' => 'width_height',
291
- 'width_std' => '100',
292
- 'width_unit_std' => '%',
293
- 'height_std' => '600',
294
- 'lat_std' => '32.7153292',
295
- 'lng_std' => '-117.15725509',
296
- 'desc' => '',
297
- ),
298
- array(
299
- 'name' => __( 'Map Location', $this->plugin_slug ),
300
- 'id' => $prefix . 'lat_lng',
301
- 'type' => 'lat_lng_default',
302
- 'lat_std' => '32.7153292',
303
- 'lng_std' => '-117.15725509',
304
- 'desc' => '',
305
- ),
306
- array(
307
- 'name' => __( 'Places API Key', $this->plugin_slug ),
308
- 'desc' => sprintf( __( 'API keys are manage through the <a href="%1$s" class="new-window" target="_blank" class="new-window">Google API Console</a>. For more information please see <a href="%2$s" class="new-window" title="Google Places API Introduction">this article</a>.', $this->plugin_slug ), esc_url( 'https://code.google.com/apis/console/?noredirect' ), esc_url( 'https://developers.google.com/places/documentation/#Authentication' ) ),
309
- 'id' => $prefix . 'api_key',
310
- 'type' => 'text',
311
- ),
312
- ),
313
- );
314
-
315
- return self::$plugin_options;
316
-
317
- }
318
-
319
- /**
320
- * CMB Lat Lng
321
- *
322
- * Custom CMB field for Gmap latitude and longitude
323
- *
324
- * @param $field
325
- * @param $meta
326
- */
327
- function cmb_render_lat_lng_default( $field, $meta ) {
328
-
329
- $meta = wp_parse_args(
330
- $meta, array(
331
- 'geolocate_map' => 'yes',
332
- 'latitude' => '',
333
- 'longitude' => '',
334
- )
335
- );
336
-
337
- //Geolocate
338
- $output = '<div id="width_wrap" class="clear">';
339
- $output .= '<label class="geocode-label size-label">' . __( 'Geolocate Position', $this->plugin_slug ) . ':</label>';
340
- $output .= '<div id="size_labels_wrap" class="geolocate-radio-wrap">';
341
- $output .= '<input id="geolocate_map_yes" type="radio" name="' . $field['id'] . '[geolocate_map]" class="geolocate_map_radio radio-left" value="yes" ' . ( $meta['geolocate_map'] === 'yes' ? 'checked="checked"' : '' ) . '><label class="yes-label label-left">' . __( 'Yes', $this->plugin_slug ) . '</label>';
342
-
343
- $output .= '<input id="geolocate_map_no" type="radio" name="' . $field['id'] . '[geolocate_map]" class="geolocate_map_radio radio-left" value="no" ' . ( $meta['geolocate_map'] === 'no' ? 'checked="checked"' : '' ) . ' ><label class="no-label label-left">' . __( 'No', $this->plugin_slug ) . '</label>';
344
- $output .= '</div>';
345
-
346
- //lat_lng
347
- $output .= '<div id="lat-lng-wrap"><div class="coordinates-wrap clear">';
348
- $output .= '<div class="lat-lng-wrap lat-wrap clear"><span>Latitude: </span>
349
- <input type="text" class="regular-text latitude" name="' . $field['id'] . '[latitude]" id="' . $field['id'] . '-latitude" value="' . ( $meta['latitude'] ? $meta['latitude'] : $field['lat_std'] ) . '" />
350
- </div>
351
- <div class="lat-lng-wrap lng-wrap clear"><span>Longitude: </span>
352
- <input type="text" class="regular-text longitude" name="' . $field['id'] . '[longitude]" id="' . $field['id'] . '-longitude" value="' . ( $meta['longitude'] ? $meta['longitude'] : $field['lng_std'] ) . '" />
353
- </div>';
354
- $output .= '<p class="small-desc">' . sprintf( __( 'For quick lat/lng lookup use <a href="%s" class="new-window" target="_blank">this service</a>', $this->plugin_slug ), esc_url( 'http://www.latlong.net/' ) ) . '</p>';
355
- $output .= '</div><!-- /.search-coordinates-wrap -->
356
- </div>';
357
-
358
-
359
- echo $output;
360
-
361
-
362
- }
363
-
364
-
365
- /**
366
- * Make public the protected $key variable.
367
- * @since 0.1.0
368
- * @return string Option key
369
- */
370
- public static function key() {
371
- return self::$key;
372
- }
373
-
374
-
375
- /**
376
- * Add links to Plugin listings view
377
- *
378
- * @param $links
379
- *
380
- * @return mixed
381
- */
382
- function add_plugin_page_links( $links, $file ) {
383
-
384
- if ( $file == GMB_PLUGIN_BASE ) {
385
-
386
- // Add Widget Page link to our plugin
387
- $settings_link = '<a href="edit.php?post_type=google_maps&page=' . self::$key . '" title="' . __( 'Visit the Google Maps Builder plugin settings page', $this->plugin_slug ) . '">' . __( 'Settings', $this->plugin_slug ) . '</a>';
388
- array_unshift( $links, $settings_link );
389
-
390
- }
391
-
392
- return $links;
393
- }
394
-
395
- function add_plugin_meta_links( $meta, $file ) {
396
-
397
- if ( $file == GMB_PLUGIN_BASE ) {
398
- $meta[] = "<a href='http://wordpress.org/support/view/plugin-reviews/google-maps-builder' target='_blank' title='" . __( 'Rate Google Maps Builder on WordPress.org', $this->plugin_slug ) . "'>" . __( 'Rate Plugin', $this->plugin_slug ) . "</a>";
399
- $meta[] = '<a href="http://wordpress.org/support/plugin/google-maps-builder/" target="_blank" title="' . __( 'Get plugin support via the WordPress community', $this->plugin_slug ) . '">' . __( 'Support', $this->plugin_slug ) . '</a>';
400
- $meta[] = __( 'Thank You for using Google Maps Builder', $this->plugin_slug );
401
- }
402
-
403
- return $meta;
404
- }
405
-
406
-
407
- }
408
-
409
- // Get it started
410
- $Google_Maps_Builder_Settings = new Google_Maps_Builder_Settings();
411
-
412
- /**
413
- * Wrapper function around cmb_get_option
414
- * @since 0.1.0
415
- *
416
- * @param string $key Options array key
417
- *
418
- * @return mixed Option value
419
- */
420
- function gmb_get_option( $key = '' ) {
421
- return cmb_get_option( Google_Maps_Builder_Settings::key(), $key );
 
422
  }
1
+ <?php
2
+
3
+ /**
4
+ * CMB Theme Options
5
+ * @version 0.1.0
6
+ */
7
+ class Google_Maps_Builder_Settings {
8
+
9
+
10
+ /**
11
+ * Array of metaboxes/fields
12
+ * @var array
13
+ */
14
+ protected static $plugin_options = array();
15
+
16
+ public $plugin_slug;
17
+
18
+ public $options_page;
19
+
20
+ /**
21
+ * Option key, and option page slug
22
+ * @var string
23
+ */
24
+ protected static $key = 'gmb_settings';
25
+
26
+
27
+ /**
28
+ * Constructor
29
+ * @since 0.1.0
30
+ */
31
+ public function __construct() {
32
+
33
+ $plugin = Google_Maps_Builder::get_instance();
34
+ $this->plugin_slug = $plugin->get_plugin_slug();
35
+ $this->meta = $plugin->meta;
36
+
37
+
38
+ //Create Settings submenu
39
+ add_action( 'admin_init', array( $this, 'mninit' ) );
40
+ add_action( 'admin_menu', array( $this, 'add_page' ) );
41
+
42
+ // Load admin style sheet and JavaScript.
43
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_styles' ) );
44
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_scripts' ) );
45
+ add_action( 'wp_ajax_hide_welcome', array( $this, 'hide_welcome_callback' ) );
46
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_pointer_script_style' ) );
47
+ add_action( 'cmb_render_lat_lng_default', array( $this, 'cmb_render_lat_lng_default' ), 10, 2 );
48
+
49
+ //Add links/information to plugin row meta
50
+ add_filter( 'plugin_row_meta', array( $this, 'add_plugin_meta_links' ), 10, 2 );
51
+ add_filter( 'plugin_action_links', array( $this, 'add_plugin_page_links' ), 10, 2 );
52
+
53
+ }
54
+
55
+
56
+ /**
57
+ * Activation Welcome Tooltip Scripts
58
+ *
59
+ * @param $hook_suffix
60
+ */
61
+ function enqueue_pointer_script_style( $hook_suffix ) {
62
+
63
+ // Assume pointer shouldn't be shown
64
+ $enqueue_pointer_script_style = false;
65
+
66
+ // Get array list of dismissed pointers for current user and convert it to array
67
+ $dismissed_pointers = explode( ',', get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) );
68
+ $key = array_search( 'gmb_welcome_pointer', $dismissed_pointers ); // $key = 2;
69
+
70
+ // Check if our pointer is not among dismissed ones
71
+ if ( ! in_array( 'gmb_welcome_pointer', $dismissed_pointers ) ) {
72
+ $enqueue_pointer_script_style = true;
73
+
74
+ // Add footer scripts using callback function
75
+ add_action( 'admin_print_footer_scripts', array( $this, 'welcome_pointer_print_scripts' ) );
76
+ }
77
+
78
+ // Enqueue pointer CSS and JS files, if needed
79
+ if ( $enqueue_pointer_script_style ) {
80
+ wp_enqueue_style( 'wp-pointer' );
81
+ wp_enqueue_script( 'wp-pointer' );
82
+ }
83
+
84
+ }
85
+
86
+ /**
87
+ * Print Activation Message
88
+ */
89
+ function welcome_pointer_print_scripts() {
90
+ $pointer_content = '<h3>' . __( 'Welcome to the Google Maps Builder', $this->plugin_slug ) . '</h3>';
91
+ $pointer_content .= '<p>' . __( 'Thank you for using Google Maps Builder for WordPress. To stay up to date on the latest plugin updates, enhancements and news please sign up for our mailing list.', $this->plugin_slug ) . '</p>';
92
+ $pointer_content .= '<div id="mc_embed_signup" style="padding: 0 15px;"><form action="http://wordimpress.us3.list-manage2.com/subscribe/post?u=3ccb75d68bda4381e2f45794c&amp;id=83609e2883" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate><div class="mc-field-group" style="margin: 0 0 10px;"><input type="email" value="" name="EMAIL" class="required email" id="mce-EMAIL" style="margin-right:5px;width:230px;" placeholder="my.email@wordpress.com"><input type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="button"></div><div id="mce-responses" class="clear"><div class="response" id="mce-error-response" style="display:none"></div><div class="response" id="mce-success-response" style="display:none"></div></div><div style="position: absolute; left: -5000px;"><input type="text" name="b_3ccb75d68bda4381e2f45794c_83609e2883" value=""></div></form></div>';
93
+ ?>
94
+
95
+ <script type="text/javascript">
96
+ //<![CDATA[
97
+ jQuery( document ).ready( function ( $ ) {
98
+ $( '#menu-posts-google_maps' ).pointer( {
99
+ content : '<?php echo $pointer_content; ?>',
100
+ position : {
101
+ edge : 'left', // arrow direction
102
+ align: 'center' // vertical alignment
103
+ },
104
+ pointerWidth: 350,
105
+ close : function () {
106
+ $.post( ajaxurl, {
107
+ pointer: 'gmb_welcome_pointer', // pointer ID
108
+ action : 'dismiss-wp-pointer'
109
+ } );
110
+ }
111
+ } ).pointer( 'open' );
112
+ } );
113
+ //]]>
114
+ </script>
115
+
116
+ <?php
117
+ }
118
+
119
+ /**
120
+ * Register our setting to WP
121
+ * @since 0.1.0
122
+ */
123
+ public function mninit() {
124
+
125
+ register_setting( self::$key, self::$key );
126
+ }
127
+
128
+ /**
129
+ * Add menu options page
130
+ * @since 1.0.0
131
+ */
132
+ public function add_page() {
133
+
134
+ $this->options_page = add_submenu_page(
135
+ 'edit.php?post_type=google_maps',
136
+ __( 'Google Maps Builder Settings', $this->plugin_slug ),
137
+ __( 'Settings', $this->plugin_slug ),
138
+ 'manage_options',
139
+ self::$key,
140
+ array( $this, 'admin_page_display' )
141
+ );
142
+
143
+ }
144
+
145
+ /**
146
+ * Register and enqueue admin-specific style sheet.
147
+ *
148
+ *
149
+ * @since 1.0.0
150
+ *
151
+ * @param $hook
152
+ */
153
+ public function enqueue_admin_styles( $hook ) {
154
+
155
+ $suffix = defined( 'GMB_DEBUG' ) && GMB_DEBUG ? '' : '.min';
156
+ $screen = get_current_screen();
157
+
158
+ //Only enqueue scripts for Setting screen
159
+ if ( $this->options_page == $screen->id ) {
160
+
161
+ wp_enqueue_style( $this->plugin_slug . '-settings-grid', plugins_url( 'assets/css/grid' . $suffix . '.css', __FILE__ ), array(), Google_Maps_Builder::VERSION );
162
+ wp_enqueue_style( $this->plugin_slug . '-settings-styles', plugins_url( 'assets/css/admin-settings' . $suffix . '.css', __FILE__ ), array(), Google_Maps_Builder::VERSION );
163
+
164
+ }
165
+
166
+
167
+ }
168
+
169
+ /**
170
+ * Register and enqueue admin-specific JavaScript
171
+ *
172
+ *
173
+ * @since 1.0.0
174
+ *
175
+ * @param $hook
176
+ */
177
+ public function enqueue_admin_scripts( $hook ) {
178
+ global $post;
179
+ $suffix = defined( 'GMB_DEBUG' ) && GMB_DEBUG ? '' : '.min';
180
+ $screen = get_current_screen();
181
+
182
+ //Only enqueue scripts for Setting screen
183
+ if ( $this->options_page == $screen->id ) {
184
+
185
+ wp_enqueue_script( $this->plugin_slug . '-admin-settings', plugins_url( 'assets/js/admin-settings' . $suffix . '.js', __FILE__ ), array( 'jquery' ), Google_Maps_Builder::VERSION );
186
+
187
+ }
188
+
189
+
190
+ }
191
+
192
+
193
+ /**
194
+ * Hide the Settings welcome on click
195
+ *
196
+ * Sets a user meta key that once set
197
+ *
198
+ */
199
+ public function hide_welcome_callback() {
200
+ global $current_user;
201
+ $user_id = $current_user->ID;
202
+ add_user_meta( $user_id, 'gmb_hide_welcome', 'true', true );
203
+ wp_die(); // ajax call must die to avoid trailing 0 in your response
204
+ }
205
+
206
+
207
+ /**
208
+ * Admin page markup. Mostly handled by CMB
209
+ * @since 0.1.0
210
+ */
211
+ public function admin_page_display() {
212
+
213
+ include( 'views/settings-page.php' );
214
+
215
+ }
216
+
217
+ /**
218
+ * General Option Fields
219
+ * Defines the plugin option metabox and field configuration
220
+ * @since 1.0.0
221
+ * @return array
222
+ */
223
+ public function general_option_fields() {
224
+
225
+ // Only need to initiate the array once per page-load
226
+ if ( ! empty( self::$plugin_options ) ) {
227
+ return self::$plugin_options;
228
+ }
229
+
230
+ $prefix = 'gmb_';
231
+
232
+ self::$plugin_options = array(
233
+ 'id' => 'plugin_options',
234
+ 'show_on' => array( 'key' => 'options-page', 'value' => array( self::$key, ), ),
235
+ 'show_names' => true,
236
+ 'fields' => array(
237
+ array(
238
+ 'name' => __( 'Post Type Slug', $this->plugin_slug ),
239
+ 'desc' => sprintf( __( 'Customize the default slug for this post type. <a href="%s">Resave (flush) permalinks</a> after customizing.', $this->plugin_slug ), esc_url( '/wp-admin/options-permalink.php' ) ),
240
+ 'default' => 'google-maps',
241
+ 'id' => $prefix . 'custom_slug',
242
+ 'type' => 'text_small'
243
+ ),
244
+ array(
245
+ 'name' => __( 'Menu Position', $this->plugin_slug ),
246
+ 'desc' => sprintf( __( 'Set the menu position for Google Maps Builder. See the <a href="%s" class="new-window">menu_position</a> arg.', $this->plugin_slug ), esc_url( 'http://codex.wordpress.org/Function_Reference/register_post_type#Arguments' ) ),
247
+ 'default' => '21.3',
248
+ 'id' => $prefix . 'menu_position',
249
+ 'type' => 'text_small'
250
+ ),
251
+ array(
252
+ 'name' => __( 'Has Archive', $this->plugin_slug ),
253
+ 'id' => $prefix . 'has_archive',
254
+ 'desc' => sprintf( __( 'Controls the post type archive page. See <a href="%s">Resave (flush) permalinks</a> after customizing.', $this->plugin_slug ), esc_url( '/wp-admin/options-permalink.php' ) ),
255
+ 'type' => 'radio_inline',
256
+ 'options' => array(
257
+ 'true' => __( 'Yes', 'cmb' ),
258
+ 'false' => __( 'No', 'cmb' ),
259
+ ),
260
+ ),
261
+ ),
262
+ );
263
+
264
+ return self::$plugin_options;
265
+
266
+ }
267
+
268
+ /**
269
+ * Map Option Fields
270
+ * Defines the plugin option metabox and field configuration
271
+ * @since 1.0.0
272
+ * @return array
273
+ */
274
+ public function map_option_fields() {
275
+
276
+ // Only need to initiate the array once per page-load
277
+ if ( ! empty( self::$plugin_options ) ) {
278
+ return self::$plugin_options;
279
+ }
280
+
281
+ $prefix = 'gmb_';
282
+
283
+ self::$plugin_options = array(
284
+ 'id' => 'plugin_options',
285
+ 'show_on' => array( 'key' => 'options-page', 'value' => array( self::$key, ), ),
286
+ 'show_names' => true,
287
+ 'fields' => array(
288
+ array(
289
+ 'name' => __( 'Map Size', $this->plugin_slug ),
290
+ 'id' => $prefix . 'width_height',
291
+ 'type' => 'width_height',
292
+ 'width_std' => '100',
293
+ 'width_unit_std' => '%',
294
+ 'height_std' => '600',
295
+ 'lat_std' => '32.7153292',
296
+ 'lng_std' => '-117.15725509',
297
+ 'desc' => '',
298
+ ),
299
+ array(
300
+ 'name' => __( 'Map Location', $this->plugin_slug ),
301
+ 'id' => $prefix . 'lat_lng',
302
+ 'type' => 'lat_lng_default',
303
+ 'lat_std' => '32.7153292',
304
+ 'lng_std' => '-117.15725509',
305
+ 'desc' => '',
306
+ ),
307
+ array(
308
+ 'name' => __( 'Places API Key', $this->plugin_slug ),
309
+ 'desc' => sprintf( __( 'API keys are manage through the <a href="%1$s" class="new-window" target="_blank" class="new-window">Google API Console</a>. For more information please see <a href="%2$s" target="_blank" class="new-window" title="Google Places API Introduction">this article</a>.', $this->plugin_slug ), esc_url( 'https://code.google.com/apis/console/?noredirect' ), esc_url( 'https://developers.google.com/places/documentation/#Authentication' ) ),
310
+ 'id' => $prefix . 'api_key',
311
+ 'type' => 'text',
312
+ ),
313
+ ),
314
+ );
315
+
316
+ return self::$plugin_options;
317
+
318
+ }
319
+
320
+ /**
321
+ * CMB Lat Lng
322
+ *
323
+ * Custom CMB field for Gmap latitude and longitude
324
+ *
325
+ * @param $field
326
+ * @param $meta
327
+ */
328
+ function cmb_render_lat_lng_default( $field, $meta ) {
329
+
330
+ $meta = wp_parse_args(
331
+ $meta, array(
332
+ 'geolocate_map' => 'yes',
333
+ 'latitude' => '',
334
+ 'longitude' => '',
335
+ )
336
+ );
337
+
338
+ //Geolocate
339
+ $output = '<div id="width_wrap" class="clear">';
340
+ $output .= '<label class="geocode-label size-label">' . __( 'Geolocate Position', $this->plugin_slug ) . ':</label>';
341
+ $output .= '<div id="size_labels_wrap" class="geolocate-radio-wrap">';
342
+ $output .= '<input id="geolocate_map_yes" type="radio" name="' . $field['id'] . '[geolocate_map]" class="geolocate_map_radio radio-left" value="yes" ' . ( $meta['geolocate_map'] === 'yes' ? 'checked="checked"' : '' ) . '><label class="yes-label label-left">' . __( 'Yes', $this->plugin_slug ) . '</label>';
343
+
344
+ $output .= '<input id="geolocate_map_no" type="radio" name="' . $field['id'] . '[geolocate_map]" class="geolocate_map_radio radio-left" value="no" ' . ( $meta['geolocate_map'] === 'no' ? 'checked="checked"' : '' ) . ' ><label class="no-label label-left">' . __( 'No', $this->plugin_slug ) . '</label>';
345
+ $output .= '</div>';
346
+
347
+ //lat_lng
348
+ $output .= '<div id="lat-lng-wrap"><div class="coordinates-wrap clear">';
349
+ $output .= '<div class="lat-lng-wrap lat-wrap clear"><span>Latitude: </span>
350
+ <input type="text" class="regular-text latitude" name="' . $field['id'] . '[latitude]" id="' . $field['id'] . '-latitude" value="' . ( $meta['latitude'] ? $meta['latitude'] : $field['lat_std'] ) . '" />
351
+ </div>
352
+ <div class="lat-lng-wrap lng-wrap clear"><span>Longitude: </span>
353
+ <input type="text" class="regular-text longitude" name="' . $field['id'] . '[longitude]" id="' . $field['id'] . '-longitude" value="' . ( $meta['longitude'] ? $meta['longitude'] : $field['lng_std'] ) . '" />
354
+ </div>';
355
+ $output .= '<p class="small-desc">' . sprintf( __( 'For quick lat/lng lookup use <a href="%s" class="new-window" target="_blank">this service</a>', $this->plugin_slug ), esc_url( 'http://www.latlong.net/' ) ) . '</p>';
356
+ $output .= '</div><!-- /.search-coordinates-wrap -->
357
+ </div>';
358
+
359
+
360
+ echo $output;
361
+
362
+
363
+ }
364
+
365
+
366
+ /**
367
+ * Make public the protected $key variable.
368
+ * @since 0.1.0
369
+ * @return string Option key
370
+ */
371
+ public static function key() {
372
+ return self::$key;
373
+ }
374
+
375
+
376
+ /**
377
+ * Add links to Plugin listings view
378
+ *
379
+ * @param $links
380
+ *
381
+ * @return mixed
382
+ */
383
+ function add_plugin_page_links( $links, $file ) {
384
+
385
+ if ( $file == GMB_PLUGIN_BASE ) {
386
+
387
+ // Add Widget Page link to our plugin
388
+ $settings_link = '<a href="edit.php?post_type=google_maps&page=' . self::$key . '" title="' . __( 'Visit the Google Maps Builder plugin settings page', $this->plugin_slug ) . '">' . __( 'Settings', $this->plugin_slug ) . '</a>';
389
+ array_unshift( $links, $settings_link );
390
+
391
+ }
392
+
393
+ return $links;
394
+ }
395
+
396
+ function add_plugin_meta_links( $meta, $file ) {
397
+
398
+ if ( $file == GMB_PLUGIN_BASE ) {
399
+ $meta[] = "<a href='http://wordpress.org/support/view/plugin-reviews/google-maps-builder' target='_blank' title='" . __( 'Rate Google Maps Builder on WordPress.org', $this->plugin_slug ) . "'>" . __( 'Rate Plugin', $this->plugin_slug ) . "</a>";
400
+ $meta[] = '<a href="http://wordpress.org/support/plugin/google-maps-builder/" target="_blank" title="' . __( 'Get plugin support via the WordPress community', $this->plugin_slug ) . '">' . __( 'Support', $this->plugin_slug ) . '</a>';
401
+ $meta[] = __( 'Thank You for using Google Maps Builder', $this->plugin_slug );
402
+ }
403
+
404
+ return $meta;
405
+ }
406
+
407
+
408
+ }
409
+
410
+ // Get it started
411
+ $Google_Maps_Builder_Settings = new Google_Maps_Builder_Settings();
412
+
413
+ /**
414
+ * Wrapper function around cmb_get_option
415
+ * @since 0.1.0
416
+ *
417
+ * @param string $key Options array key
418
+ *
419
+ * @return mixed Option value
420
+ */
421
+ function gmb_get_option( $key = '' ) {
422
+ return cmb_get_option( Google_Maps_Builder_Settings::key(), $key );
423
  }
admin/includes/tooltips/jquery.qtip.css CHANGED
@@ -1,513 +1,513 @@
1
- /*
2
- * qTip2 - Pretty powerful tooltips - v2.2.0
3
- * http://qtip2.com
4
- *
5
- * Copyright (c) 2014 Craig Michael Thompson
6
- * Released under the MIT, GPL licenses
7
- * http://jquery.org/license
8
- *
9
- * Date: Sun Mar 16 2014 07:12 EDT-0400
10
- * Plugins: tips viewport imagemap svg modal
11
- * Styles: css3
12
- */
13
- .qtip{
14
- position: absolute;
15
- left: -28000px;
16
- top: -28000px;
17
- display: none;
18
-
19
- max-width: 280px;
20
- min-width: 50px;
21
-
22
- font-size: 10.5px;
23
- line-height: 12px;
24
-
25
- direction: ltr;
26
-
27
- box-shadow: none;
28
- padding: 0;
29
- }
30
-
31
- .qtip-content{
32
- position: relative;
33
- padding: 5px 9px;
34
- overflow: hidden;
35
-
36
- text-align: left;
37
- word-wrap: break-word;
38
- }
39
-
40
- .qtip-titlebar{
41
- position: relative;
42
- padding: 5px 35px 5px 10px;
43
- overflow: hidden;
44
-
45
- border-width: 0 0 1px;
46
- font-weight: bold;
47
- }
48
-
49
- .qtip-titlebar + .qtip-content{ border-top-width: 0 !important; }
50
-
51
- /* Default close button class */
52
- .qtip-close{
53
- position: absolute;
54
- right: -9px; top: -9px;
55
-
56
- cursor: pointer;
57
- outline: medium none;
58
-
59
- border-width: 1px;
60
- border-style: solid;
61
- border-color: transparent;
62
- }
63
-
64
- .qtip-titlebar .qtip-close{
65
- right: 4px; top: 50%;
66
- margin-top: -9px;
67
- }
68
-
69
- * html .qtip-titlebar .qtip-close{ top: 16px; } /* IE fix */
70
-
71
- .qtip-titlebar .ui-icon,
72
- .qtip-icon .ui-icon{
73
- display: block;
74
- text-indent: -1000em;
75
- direction: ltr;
76
- }
77
-
78
- .qtip-icon, .qtip-icon .ui-icon{
79
- -moz-border-radius: 3px;
80
- -webkit-border-radius: 3px;
81
- border-radius: 3px;
82
- text-decoration: none;
83
- }
84
-
85
- .qtip-icon .ui-icon{
86
- width: 18px;
87
- height: 14px;
88
-
89
- line-height: 14px;
90
- text-align: center;
91
- text-indent: 0;
92
- font: normal bold 10px/13px Tahoma,sans-serif;
93
-
94
- color: inherit;
95
- background: transparent none no-repeat -100em -100em;
96
- }
97
-
98
- /* Applied to 'focused' tooltips e.g. most recently displayed/interacted with */
99
- .qtip-focus{}
100
-
101
- /* Applied on hover of tooltips i.e. added/removed on mouseenter/mouseleave respectively */
102
- .qtip-hover{}
103
-
104
- /* Default tooltip style */
105
- .qtip-default{
106
- border-width: 1px;
107
- border-style: solid;
108
- border-color: #F1D031;
109
-
110
- background-color: #FFFFA3;
111
- color: #555;
112
- }
113
-
114
- .qtip-default .qtip-titlebar{
115
- background-color: #FFEF93;
116
- }
117
-
118
- .qtip-default .qtip-icon{
119
- border-color: #CCC;
120
- background: #F1F1F1;
121
- color: #777;
122
- }
123
-
124
- .qtip-default .qtip-titlebar .qtip-close{
125
- border-color: #AAA;
126
- color: #111;
127
- }
128
-
129
-
130
-
131
- .qtip-shadow{
132
- -webkit-box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15);
133
- -moz-box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15);
134
- box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15);
135
- }
136
-
137
- /* Add rounded corners to your tooltips in: FF3+, Chrome 2+, Opera 10.6+, IE9+, Safari 2+ */
138
- .qtip-rounded,
139
- .qtip-tipsy,
140
- .qtip-bootstrap{
141
- -moz-border-radius: 5px;
142
- -webkit-border-radius: 5px;
143
- border-radius: 5px;
144
- }
145
-
146
- .qtip-rounded .qtip-titlebar{
147
- -moz-border-radius: 4px 4px 0 0;
148
- -webkit-border-radius: 4px 4px 0 0;
149
- border-radius: 4px 4px 0 0;
150
- }
151
-
152
- /* Youtube tooltip style */
153
- .qtip-youtube{
154
- -moz-border-radius: 2px;
155
- -webkit-border-radius: 2px;
156
- border-radius: 2px;
157
-
158
- -webkit-box-shadow: 0 0 3px #333;
159
- -moz-box-shadow: 0 0 3px #333;
160
- box-shadow: 0 0 3px #333;
161
-
162
- color: white;
163
- border-width: 0;
164
-
165
- background: #4A4A4A;
166
- background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0,#4A4A4A),color-stop(100%,black));
167
- background-image: -webkit-linear-gradient(top,#4A4A4A 0,black 100%);
168
- background-image: -moz-linear-gradient(top,#4A4A4A 0,black 100%);
169
- background-image: -ms-linear-gradient(top,#4A4A4A 0,black 100%);
170
- background-image: -o-linear-gradient(top,#4A4A4A 0,black 100%);
171
- }
172
-
173
- .qtip-youtube .qtip-titlebar{
174
- background-color: #4A4A4A;
175
- background-color: rgba(0,0,0,0);
176
- }
177
-
178
- .qtip-youtube .qtip-content{
179
- padding: .75em;
180
- font: 12px arial,sans-serif;
181
-
182
- filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#4a4a4a,EndColorStr=#000000);
183
- -ms-filter: "progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#4a4a4a,EndColorStr=#000000);";
184
- }
185
-
186
- .qtip-youtube .qtip-icon{
187
- border-color: #222;
188
- }
189
-
190
- .qtip-youtube .qtip-titlebar .ui-state-hover{
191
- border-color: #303030;
192
- }
193
-
194
-
195
- /* jQuery TOOLS Tooltip style */
196
- .qtip-jtools{
197
- background: #232323;
198
- background: rgba(0, 0, 0, 0.7);
199
- background-image: -webkit-gradient(linear, left top, left bottom, from(#717171), to(#232323));
200
- background-image: -moz-linear-gradient(top, #717171, #232323);
201
- background-image: -webkit-linear-gradient(top, #717171, #232323);
202
- background-image: -ms-linear-gradient(top, #717171, #232323);
203
- background-image: -o-linear-gradient(top, #717171, #232323);
204
-
205
- border: 2px solid #ddd;
206
- border: 2px solid rgba(241,241,241,1);
207
-
208
- -moz-border-radius: 2px;
209
- -webkit-border-radius: 2px;
210
- border-radius: 2px;
211
-
212
- -webkit-box-shadow: 0 0 12px #333;
213
- -moz-box-shadow: 0 0 12px #333;
214
- box-shadow: 0 0 12px #333;
215
- }
216
-
217
- /* IE Specific */
218
- .qtip-jtools .qtip-titlebar{
219
- background-color: transparent;
220
- filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A);
221
- -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A)";
222
- }
223
- .qtip-jtools .qtip-content{
224
- filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323);
225
- -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323)";
226
- }
227
-
228
- .qtip-jtools .qtip-titlebar,
229
- .qtip-jtools .qtip-content{
230
- background: transparent;
231
- color: white;
232
- border: 0 dashed transparent;
233
- }
234
-
235
- .qtip-jtools .qtip-icon{
236
- border-color: #555;
237
- }
238
-
239
- .qtip-jtools .qtip-titlebar .ui-state-hover{
240
- border-color: #333;
241
- }
242
-
243
-
244
- /* Cluetip style */
245
- .qtip-cluetip{
246
- -webkit-box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4);
247
- -moz-box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4);
248
- box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4);
249
-
250
- background-color: #D9D9C2;
251
- color: #111;
252
- border: 0 dashed transparent;
253
- }
254
-
255
- .qtip-cluetip .qtip-titlebar{
256
- background-color: #87876A;
257
- color: white;
258
- border: 0 dashed transparent;
259
- }
260
-
261
- .qtip-cluetip .qtip-icon{
262
- border-color: #808064;
263
- }
264
-
265
- .qtip-cluetip .qtip-titlebar .ui-state-hover{
266
- border-color: #696952;
267
- color: #696952;
268
- }
269
-
270
-
271
- /* Tipsy style */
272
- .qtip-tipsy{
273
- background: black;
274
- background: rgba(0, 0, 0, .87);
275
-
276
- color: white;
277
- border: 0 solid transparent;
278
-
279
- font-size: 11px;
280
- font-family: 'Lucida Grande', sans-serif;
281
- font-weight: bold;
282
- line-height: 16px;
283
- text-shadow: 0 1px black;
284
- }
285
-
286
- .qtip-tipsy .qtip-titlebar{
287
- padding: 6px 35px 0 10px;
288
- background-color: transparent;
289
- }
290
-
291
- .qtip-tipsy .qtip-content{
292
- padding: 6px 10px;
293
- }
294
-
295
- .qtip-tipsy .qtip-icon{
296
- border-color: #222;
297
- text-shadow: none;
298
- }
299
-
300
- .qtip-tipsy .qtip-titlebar .ui-state-hover{
301
- border-color: #303030;
302
- }
303
-
304
-
305
- /* Tipped style */
306
- .qtip-tipped{
307
- border: 3px solid #959FA9;
308
-
309
- -moz-border-radius: 3px;
310
- -webkit-border-radius: 3px;
311
- border-radius: 3px;
312
-
313
- background-color: #F9F9F9;
314
- color: #454545;
315
-
316
- font-weight: normal;
317
- font-family: serif;
318
- }
319
-
320
- .qtip-tipped .qtip-titlebar{
321
- border-bottom-width: 0;
322
-
323
- color: white;
324
- background: #3A79B8;
325
- background-image: -webkit-gradient(linear, left top, left bottom, from(#3A79B8), to(#2E629D));
326
- background-image: -webkit-linear-gradient(top, #3A79B8, #2E629D);
327
- background-image: -moz-linear-gradient(top, #3A79B8, #2E629D);
328
- background-image: -ms-linear-gradient(top, #3A79B8, #2E629D);
329
- background-image: -o-linear-gradient(top, #3A79B8, #2E629D);
330
- filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D);
331
- -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D)";
332
- }
333
-
334
- .qtip-tipped .qtip-icon{
335
- border: 2px solid #285589;
336
- background: #285589;
337
- }
338
-
339
- .qtip-tipped .qtip-icon .ui-icon{
340
- background-color: #FBFBFB;
341
- color: #555;
342
- }
343
-
344
-
345
- /**
346
- * Twitter Bootstrap style.
347
- *
348
- * Tested with IE 8, IE 9, Chrome 18, Firefox 9, Opera 11.
349
- * Does not work with IE 7.
350
- */
351
- .qtip-bootstrap{
352
- /** Taken from Bootstrap body */
353
- font-size: 14px;
354
- line-height: 20px;
355
- color: #333333;
356
-
357
- /** Taken from Bootstrap .popover */
358
- padding: 1px;
359
- background-color: #ffffff;
360
- border: 1px solid #ccc;
361
- border: 1px solid rgba(0, 0, 0, 0.2);
362
- -webkit-border-radius: 6px;
363
- -moz-border-radius: 6px;
364
- border-radius: 6px;
365
- -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
366
- -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
367
- box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
368
- -webkit-background-clip: padding-box;
369
- -moz-background-clip: padding;
370
- background-clip: padding-box;
371
- }
372
-
373
- .qtip-bootstrap .qtip-titlebar{
374
- /** Taken from Bootstrap .popover-title */
375
- padding: 8px 14px;
376
- margin: 0;
377
- font-size: 14px;
378
- font-weight: normal;
379
- line-height: 18px;
380
- background-color: #f7f7f7;
381
- border-bottom: 1px solid #ebebeb;
382
- -webkit-border-radius: 5px 5px 0 0;
383
- -moz-border-radius: 5px 5px 0 0;
384
- border-radius: 5px 5px 0 0;
385
- }
386
-
387
- .qtip-bootstrap .qtip-titlebar .qtip-close{
388
- /**
389
- * Overrides qTip2:
390
- * .qtip-titlebar .qtip-close{
391
- * [...]
392
- * right: 4px;
393
- * top: 50%;
394
- * [...]
395
- * border-style: solid;
396
- * }
397
- */
398
- right: 11px;
399
- top: 45%;
400
- border-style: none;
401
- }
402
-
403
- .qtip-bootstrap .qtip-content{
404
- /** Taken from Bootstrap .popover-content */
405
- padding: 9px 14px;
406
- }
407
-
408
- .qtip-bootstrap .qtip-icon{
409
- /**
410
- * Overrides qTip2:
411
- * .qtip-default .qtip-icon {
412
- * border-color: #CCC;
413
- * background: #F1F1F1;
414
- * color: #777;
415
- * }
416
- */
417
- background: transparent;
418
- }
419
-
420
- .qtip-bootstrap .qtip-icon .ui-icon{
421
- /**
422
- * Overrides qTip2:
423
- * .qtip-icon .ui-icon{
424
- * width: 18px;
425
- * height: 14px;
426
- * }
427
- */
428
- width: auto;
429
- height: auto;
430
-
431
- /* Taken from Bootstrap .close */
432
- float: right;
433
- font-size: 20px;
434
- font-weight: bold;
435
- line-height: 18px;
436
- color: #000000;
437
- text-shadow: 0 1px 0 #ffffff;
438
- opacity: 0.2;
439
- filter: alpha(opacity=20);
440
- }
441
-
442
- .qtip-bootstrap .qtip-icon .ui-icon:hover{
443
- /* Taken from Bootstrap .close:hover */
444
- color: #000000;
445
- text-decoration: none;
446
- cursor: pointer;
447
- opacity: 0.4;
448
- filter: alpha(opacity=40);
449
- }
450
-
451
-
452
- /* IE9 fix - removes all filters */
453
- .qtip:not(.ie9haxors) div.qtip-content,
454
- .qtip:not(.ie9haxors) div.qtip-titlebar{
455
- filter: none;
456
- -ms-filter: none;
457
- }
458
-
459
-
460
-
461
- .qtip .qtip-tip{
462
- margin: 0 auto;
463
- overflow: hidden;
464
- z-index: 10;
465
-
466
- }
467
-
468
- /* Opera bug #357 - Incorrect tip position
469
- https://github.com/Craga89/qTip2/issues/367 */
470
- x:-o-prefocus, .qtip .qtip-tip{
471
- visibility: hidden;
472
- }
473
-
474
- .qtip .qtip-tip,
475
- .qtip .qtip-tip .qtip-vml,
476
- .qtip .qtip-tip canvas{
477
- position: absolute;
478
-
479
- color: #123456;
480
- background: transparent;
481
- border: 0 dashed transparent;
482
- }
483
-
484
- .qtip .qtip-tip canvas{ top: 0; left: 0; }
485
-
486
- .qtip .qtip-tip .qtip-vml{
487
- behavior: url(#default#VML);
488
- display: inline-block;
489
- visibility: visible;
490
- }
491
-
492
- #qtip-overlay{
493
- position: fixed;
494
- left: 0; top: 0;
495
- width: 100%; height: 100%;
496
- }
497
-
498
- /* Applied to modals with show.modal.blur set to true */
499
- #qtip-overlay.blurs{ cursor: pointer; }
500
-
501
- /* Change opacity of overlay here */
502
- #qtip-overlay div{
503
- position: absolute;
504
- left: 0; top: 0;
505
- width: 100%; height: 100%;
506
-
507
- background-color: black;
508
-
509
- opacity: 0.7;
510
- filter:alpha(opacity=70);
511
- -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";
512
- }
513
-
1
+ /*
2
+ * qTip2 - Pretty powerful tooltips - v2.2.0
3
+ * http://qtip2.com
4
+ *
5
+ * Copyright (c) 2014 Craig Michael Thompson
6
+ * Released under the MIT, GPL licenses
7
+ * http://jquery.org/license
8
+ *
9
+ * Date: Sun Mar 16 2014 07:12 EDT-0400
10
+ * Plugins: tips viewport imagemap svg modal
11
+ * Styles: css3
12
+ */
13
+ .qtip{
14
+ position: absolute;
15
+ left: -28000px;
16
+ top: -28000px;
17
+ display: none;
18
+
19
+ max-width: 280px;
20
+ min-width: 50px;
21
+
22
+ font-size: 10.5px;
23
+ line-height: 12px;
24
+
25
+ direction: ltr;
26
+
27
+ box-shadow: none;
28
+ padding: 0;
29
+ }
30
+
31
+ .qtip-content{
32
+ position: relative;
33
+ padding: 5px 9px;
34
+ overflow: hidden;
35
+
36
+ text-align: left;
37
+ word-wrap: break-word;
38
+ }
39
+
40
+ .qtip-titlebar{
41
+ position: relative;
42
+ padding: 5px 35px 5px 10px;
43
+ overflow: hidden;
44
+
45
+ border-width: 0 0 1px;
46
+ font-weight: bold;
47
+ }
48
+
49
+ .qtip-titlebar + .qtip-content{ border-top-width: 0 !important; }
50
+
51
+ /* Default close button class */
52
+ .qtip-close{
53
+ position: absolute;
54
+ right: -9px; top: -9px;
55
+
56
+ cursor: pointer;
57
+ outline: medium none;
58
+
59
+ border-width: 1px;
60
+ border-style: solid;
61
+ border-color: transparent;
62
+ }
63
+
64
+ .qtip-titlebar .qtip-close{
65
+ right: 4px; top: 50%;
66
+ margin-top: -9px;
67
+ }
68
+
69
+ * html .qtip-titlebar .qtip-close{ top: 16px; } /* IE fix */
70
+
71
+ .qtip-titlebar .ui-icon,
72
+ .qtip-icon .ui-icon{
73
+ display: block;
74
+ text-indent: -1000em;
75
+ direction: ltr;
76
+ }
77
+
78
+ .qtip-icon, .qtip-icon .ui-icon{
79
+ -moz-border-radius: 3px;
80
+ -webkit-border-radius: 3px;
81
+ border-radius: 3px;
82
+ text-decoration: none;
83
+ }
84
+
85
+ .qtip-icon .ui-icon{
86
+ width: 18px;
87
+ height: 14px;
88
+
89
+ line-height: 14px;
90
+ text-align: center;
91
+ text-indent: 0;
92
+ font: normal bold 10px/13px Tahoma,sans-serif;
93
+
94
+ color: inherit;
95
+ background: transparent none no-repeat -100em -100em;
96
+ }
97
+
98
+ /* Applied to 'focused' tooltips e.g. most recently displayed/interacted with */
99
+ .qtip-focus{}
100
+
101
+ /* Applied on hover of tooltips i.e. added/removed on mouseenter/mouseleave respectively */
102
+ .qtip-hover{}
103
+
104
+ /* Default tooltip style */
105
+ .qtip-default{
106
+ border-width: 1px;
107
+ border-style: solid;
108
+ border-color: #F1D031;
109
+
110
+ background-color: #FFFFA3;
111
+ color: #555;
112
+ }
113
+
114
+ .qtip-default .qtip-titlebar{
115
+ background-color: #FFEF93;
116
+ }
117
+
118
+ .qtip-default .qtip-icon{
119
+ border-color: #CCC;
120
+ background: #F1F1F1;
121
+ color: #777;
122
+ }
123
+
124
+ .qtip-default .qtip-titlebar .qtip-close{
125
+ border-color: #AAA;
126
+ color: #111;
127
+ }
128
+
129
+
130
+
131
+ .qtip-shadow{
132
+ -webkit-box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15);
133
+ -moz-box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15);
134
+ box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15);
135
+ }
136
+
137
+ /* Add rounded corners to your tooltips in: FF3+, Chrome 2+, Opera 10.6+, IE9+, Safari 2+ */
138
+ .qtip-rounded,
139
+ .qtip-tipsy,
140
+ .qtip-bootstrap{
141
+ -moz-border-radius: 5px;
142
+ -webkit-border-radius: 5px;
143
+ border-radius: 5px;
144
+ }
145
+
146
+ .qtip-rounded .qtip-titlebar{
147
+ -moz-border-radius: 4px 4px 0 0;
148
+ -webkit-border-radius: 4px 4px 0 0;
149
+ border-radius: 4px 4px 0 0;
150
+ }
151
+
152
+ /* Youtube tooltip style */
153
+ .qtip-youtube{
154
+ -moz-border-radius: 2px;
155
+ -webkit-border-radius: 2px;
156
+ border-radius: 2px;
157
+
158
+ -webkit-box-shadow: 0 0 3px #333;
159
+ -moz-box-shadow: 0 0 3px #333;
160
+ box-shadow: 0 0 3px #333;
161
+
162
+ color: white;
163
+ border-width: 0;
164
+
165
+ background: #4A4A4A;
166
+ background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0,#4A4A4A),color-stop(100%,black));
167
+ background-image: -webkit-linear-gradient(top,#4A4A4A 0,black 100%);
168
+ background-image: -moz-linear-gradient(top,#4A4A4A 0,black 100%);
169
+ background-image: -ms-linear-gradient(top,#4A4A4A 0,black 100%);
170
+ background-image: -o-linear-gradient(top,#4A4A4A 0,black 100%);
171
+ }
172
+
173
+ .qtip-youtube .qtip-titlebar{
174
+ background-color: #4A4A4A;
175
+ background-color: rgba(0,0,0,0);
176
+ }
177
+
178
+ .qtip-youtube .qtip-content{
179
+ padding: .75em;
180
+ font: 12px arial,sans-serif;
181
+
182
+ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#4a4a4a,EndColorStr=#000000);
183
+ -ms-filter: "progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#4a4a4a,EndColorStr=#000000);";
184
+ }
185
+
186
+ .qtip-youtube .qtip-icon{
187
+ border-color: #222;
188
+ }
189
+
190
+ .qtip-youtube .qtip-titlebar .ui-state-hover{
191
+ border-color: #303030;
192
+ }
193
+
194
+
195
+ /* jQuery TOOLS Tooltip style */
196
+ .qtip-jtools{
197
+ background: #232323;
198
+ background: rgba(0, 0, 0, 0.7);
199
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#717171), to(#232323));
200
+ background-image: -moz-linear-gradient(top, #717171, #232323);
201
+ background-image: -webkit-linear-gradient(top, #717171, #232323);
202
+ background-image: -ms-linear-gradient(top, #717171, #232323);
203
+ background-image: -o-linear-gradient(top, #717171, #232323);
204
+
205
+ border: 2px solid #ddd;
206
+ border: 2px solid rgba(241,241,241,1);
207
+
208
+ -moz-border-radius: 2px;
209
+ -webkit-border-radius: 2px;
210
+ border-radius: 2px;
211
+
212
+ -webkit-box-shadow: 0 0 12px #333;
213
+ -moz-box-shadow: 0 0 12px #333;
214
+ box-shadow: 0 0 12px #333;
215
+ }
216
+
217
+ /* IE Specific */
218
+ .qtip-jtools .qtip-titlebar{
219
+ background-color: transparent;
220
+ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A);
221
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A)";
222
+ }
223
+ .qtip-jtools .qtip-content{
224
+ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323);
225
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323)";
226
+ }
227
+
228
+ .qtip-jtools .qtip-titlebar,
229
+ .qtip-jtools .qtip-content{
230
+ background: transparent;
231
+ color: white;
232
+ border: 0 dashed transparent;
233
+ }
234
+
235
+ .qtip-jtools .qtip-icon{
236
+ border-color: #555;
237
+ }
238
+
239
+ .qtip-jtools .qtip-titlebar .ui-state-hover{
240
+ border-color: #333;
241
+ }
242
+
243
+
244
+ /* Cluetip style */
245
+ .qtip-cluetip{
246
+ -webkit-box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4);
247
+ -moz-box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4);
248
+ box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4);
249
+
250
+ background-color: #D9D9C2;
251
+ color: #111;
252
+ border: 0 dashed transparent;
253
+ }
254
+
255
+ .qtip-cluetip .qtip-titlebar{
256
+ background-color: #87876A;
257
+ color: white;
258
+ border: 0 dashed transparent;
259
+ }
260
+
261
+ .qtip-cluetip .qtip-icon{
262
+ border-color: #808064;
263
+ }
264
+
265
+ .qtip-cluetip .qtip-titlebar .ui-state-hover{
266
+ border-color: #696952;
267
+ color: #696952;
268
+ }
269
+
270
+
271
+ /* Tipsy style */
272
+ .qtip-tipsy{
273
+ background: black;
274
+ background: rgba(0, 0, 0, .87);
275
+
276
+ color: white;
277
+ border: 0 solid transparent;
278
+
279
+ font-size: 11px;
280
+ font-family: 'Lucida Grande', sans-serif;
281
+ font-weight: bold;
282
+ line-height: 16px;
283
+ text-shadow: 0 1px black;
284
+ }
285
+
286
+ .qtip-tipsy .qtip-titlebar{
287
+ padding: 6px 35px 0 10px;
288
+ background-color: transparent;
289
+ }
290
+
291
+ .qtip-tipsy .qtip-content{
292
+ padding: 6px 10px;
293
+ }
294
+
295
+ .qtip-tipsy .qtip-icon{
296
+ border-color: #222;
297
+ text-shadow: none;
298
+ }
299
+
300
+ .qtip-tipsy .qtip-titlebar .ui-state-hover{
301
+ border-color: #303030;
302
+ }
303
+
304
+
305
+ /* Tipped style */
306
+ .qtip-tipped{
307
+ border: 3px solid #959FA9;
308
+
309
+ -moz-border-radius: 3px;
310
+ -webkit-border-radius: 3px;
311
+ border-radius: 3px;
312
+
313
+ background-color: #F9F9F9;
314
+ color: #454545;
315
+
316
+ font-weight: normal;
317
+ font-family: serif;
318
+ }
319
+
320
+ .qtip-tipped .qtip-titlebar{
321
+ border-bottom-width: 0;
322
+
323
+ color: white;
324
+ background: #3A79B8;
325
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#3A79B8), to(#2E629D));
326
+ background-image: -webkit-linear-gradient(top, #3A79B8, #2E629D);
327
+ background-image: -moz-linear-gradient(top, #3A79B8, #2E629D);
328
+ background-image: -ms-linear-gradient(top, #3A79B8, #2E629D);
329
+ background-image: -o-linear-gradient(top, #3A79B8, #2E629D);
330
+ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D);
331
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D)";
332
+ }
333
+
334
+ .qtip-tipped .qtip-icon{
335
+ border: 2px solid #285589;
336
+ background: #285589;
337
+ }
338
+
339
+ .qtip-tipped .qtip-icon .ui-icon{
340
+ background-color: #FBFBFB;
341
+ color: #555;
342
+ }
343
+
344
+
345
+ /**
346
+ * Twitter Bootstrap style.
347
+ *
348
+ * Tested with IE 8, IE 9, Chrome 18, Firefox 9, Opera 11.
349
+ * Does not work with IE 7.
350
+ */
351
+ .qtip-bootstrap{
352
+ /** Taken from Bootstrap body */
353
+ font-size: 14px;
354
+ line-height: 20px;
355
+ color: #333333;
356
+
357
+ /** Taken from Bootstrap .popover */
358
+ padding: 1px;
359
+ background-color: #ffffff;
360
+ border: 1px solid #ccc;
361
+ border: 1px solid rgba(0, 0, 0, 0.2);
362
+ -webkit-border-radius: 6px;
363
+ -moz-border-radius: 6px;
364
+ border-radius: 6px;
365
+ -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
366
+ -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
367
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
368
+ -webkit-background-clip: padding-box;
369
+ -moz-background-clip: padding;
370
+ background-clip: padding-box;
371
+ }
372
+
373
+ .qtip-bootstrap .qtip-titlebar{
374
+ /** Taken from Bootstrap .popover-title */
375
+ padding: 8px 14px;
376
+ margin: 0;
377
+ font-size: 14px;
378
+ font-weight: normal;
379
+ line-height: 18px;
380
+ background-color: #f7f7f7;
381
+ border-bottom: 1px solid #ebebeb;
382
+ -webkit-border-radius: 5px 5px 0 0;
383
+ -moz-border-radius: 5px 5px 0 0;
384
+ border-radius: 5px 5px 0 0;
385
+ }
386
+
387
+ .qtip-bootstrap .qtip-titlebar .qtip-close{
388
+ /**
389
+ * Overrides qTip2:
390
+ * .qtip-titlebar .qtip-close{
391
+ * [...]
392
+ * right: 4px;
393
+ * top: 50%;
394
+ * [...]
395
+ * border-style: solid;
396
+ * }
397
+ */
398
+ right: 11px;
399
+ top: 45%;
400
+ border-style: none;
401
+ }
402
+
403
+ .qtip-bootstrap .qtip-content{
404
+ /** Taken from Bootstrap .popover-content */
405
+ padding: 9px 14px;
406
+ }
407
+
408
+ .qtip-bootstrap .qtip-icon{
409
+ /**
410
+ * Overrides qTip2:
411
+ * .qtip-default .qtip-icon {
412
+ * border-color: #CCC;
413
+ * background: #F1F1F1;
414
+ * color: #777;
415
+ * }
416
+ */
417
+ background: transparent;
418
+ }
419
+
420
+ .qtip-bootstrap .qtip-icon .ui-icon{
421
+ /**
422
+ * Overrides qTip2:
423
+ * .qtip-icon .ui-icon{
424
+ * width: 18px;
425
+ * height: 14px;
426
+ * }
427
+ */
428
+ width: auto;
429
+ height: auto;
430
+
431
+ /* Taken from Bootstrap .close */
432
+ float: right;
433
+ font-size: 20px;
434
+ font-weight: bold;
435
+ line-height: 18px;
436
+ color: #000000;
437
+ text-shadow: 0 1px 0 #ffffff;
438
+ opacity: 0.2;
439
+ filter: alpha(opacity=20);
440
+ }
441
+
442
+ .qtip-bootstrap .qtip-icon .ui-icon:hover{
443
+ /* Taken from Bootstrap .close:hover */
444
+ color: #000000;
445
+ text-decoration: none;
446
+ cursor: pointer;
447
+ opacity: 0.4;
448
+ filter: alpha(opacity=40);
449
+ }
450
+
451
+
452
+ /* IE9 fix - removes all filters */
453
+ .qtip:not(.ie9haxors) div.qtip-content,
454
+ .qtip:not(.ie9haxors) div.qtip-titlebar{
455
+ filter: none;
456
+ -ms-filter: none;
457
+ }
458
+
459
+
460
+
461
+ .qtip .qtip-tip{
462
+ margin: 0 auto;
463
+ overflow: hidden;
464
+ z-index: 10;
465
+
466
+ }
467
+
468
+ /* Opera bug #357 - Incorrect tip position
469
+ https://github.com/Craga89/qTip2/issues/367 */
470
+ x:-o-prefocus, .qtip .qtip-tip{
471
+ visibility: hidden;
472
+ }
473
+
474
+ .qtip .qtip-tip,
475
+ .qtip .qtip-tip .qtip-vml,
476
+ .qtip .qtip-tip canvas{
477
+ position: absolute;
478
+
479
+ color: #123456;
480
+ background: transparent;
481
+ border: 0 dashed transparent;
482
+ }
483
+
484
+ .qtip .qtip-tip canvas{ top: 0; left: 0; }
485
+
486
+ .qtip .qtip-tip .qtip-vml{
487
+ behavior: url(#default#VML);
488
+ display: inline-block;
489
+ visibility: visible;
490
+ }
491
+
492
+ #qtip-overlay{
493
+ position: fixed;
494
+ left: 0; top: 0;
495
+ width: 100%; height: 100%;
496
+ }
497
+
498
+ /* Applied to modals with show.modal.blur set to true */
499
+ #qtip-overlay.blurs{ cursor: pointer; }
500
+
501
+ /* Change opacity of overlay here */
502
+ #qtip-overlay div{
503
+ position: absolute;
504
+ left: 0; top: 0;
505
+ width: 100%; height: 100%;
506
+
507
+ background-color: black;
508
+
509
+ opacity: 0.7;
510
+ filter:alpha(opacity=70);
511
+ -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";
512
+ }
513
+
admin/includes/tooltips/jquery.qtip.js CHANGED
@@ -1,100 +1,100 @@
1
- /*
2
- * qTip2 - Pretty powerful tooltips - v2.2.0
3
- * http://qtip2.com
4
- *
5
- * Copyright (c) 2014 Craig Michael Thompson
6
- * Released under the MIT, GPL licenses
7
- * http://jquery.org/license
8
- *
9
- * Date: Sun Mar 16 2014 07:12 EDT-0400
10
- * Plugins: tips viewport imagemap svg modal
11
- * Styles: css3
12
- */
13
- /*global window: false, jQuery: false, console: false, define: false */
14
-
15
- /* Cache window, document, undefined */
16
- (function( window, document, undefined ) {
17
-
18
- // Uses AMD or browser globals to create a jQuery plugin.
19
- (function( factory ) {
20
- "use strict";
21
- if(typeof define === 'function' && define.amd) {
22
- define(['jquery'], factory);
23
- }
24
- else if(jQuery && !jQuery.fn.qtip) {
25
- factory(jQuery);
26
- }
27
- }
28
- (function($) {
29
- "use strict"; // Enable ECMAScript "strict" operation for this function. See more: http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/
30
-
31
- ;// Munge the primitives - Paul Irish tip
32
- var TRUE = true,
33
- FALSE = false,
34
- NULL = null,
35
-
36
- // Common variables
37
- X = 'x', Y = 'y',
38
- WIDTH = 'width',
39
- HEIGHT = 'height',
40
-
41
- // Positioning sides
42
- TOP = 'top',
43
- LEFT = 'left',
44
- BOTTOM = 'bottom',
45
- RIGHT = 'right',
46
- CENTER = 'center',
47
-
48
- // Position adjustment types
49
- FLIP = 'flip',
50
- FLIPINVERT = 'flipinvert',
51
- SHIFT = 'shift',
52
-
53
- // Shortcut vars
54
- QTIP, PROTOTYPE, CORNER, CHECKS,
55
- PLUGINS = {},
56
- NAMESPACE = 'qtip',
57
- ATTR_HAS = 'data-hasqtip',
58
- ATTR_ID = 'data-qtip-id',
59
- WIDGET = ['ui-widget', 'ui-tooltip'],
60
- SELECTOR = '.'+NAMESPACE,
61
- INACTIVE_EVENTS = 'click dblclick mousedown mouseup mousemove mouseleave mouseenter'.split(' '),
62
-
63
- CLASS_FIXED = NAMESPACE+'-fixed',
64
- CLASS_DEFAULT = NAMESPACE + '-default',
65
- CLASS_FOCUS = NAMESPACE + '-focus',
66
- CLASS_HOVER = NAMESPACE + '-hover',
67
- CLASS_DISABLED = NAMESPACE+'-disabled',
68
-
69
- replaceSuffix = '_replacedByqTip',
70
- oldtitle = 'oldtitle',
71
- trackingBound,
72
-
73
- // Browser detection
74
- BROWSER = {
75
- /*
76
- * IE version detection
77
- *
78
- * Adapted from: http://ajaxian.com/archives/attack-of-the-ie-conditional-comment
79
- * Credit to James Padolsey for the original implemntation!
80
- */
81
- ie: (function(){
82
- var v = 3, div = document.createElement('div');
83
- while ((div.innerHTML = '<!--[if gt IE '+(++v)+']><i></i><![endif]-->')) {
84
- if(!div.getElementsByTagName('i')[0]) { break; }
85
- }
86
- return v > 4 ? v : NaN;
87
- }()),
88
-
89
- /*
90
- * iOS version detection
91
- */
92
- iOS: parseFloat(
93
- ('' + (/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent) || [0,''])[1])
94
- .replace('undefined', '3_2').replace('_', '.').replace('_', '')
95
- ) || FALSE
96
- };
97
-
98
  ;function QTip(target, options, id, attr) {
99
  // Elements and ID
100
  this.id = id;
@@ -295,3008 +295,3008 @@ PROTOTYPE.destroy = function(immediate) {
295
  return this.target;
296
  };
297
 
298
- ;function invalidOpt(a) {
299
- return a === NULL || $.type(a) !== 'object';
300
- }
301
-
302
- function invalidContent(c) {
303
- return !( $.isFunction(c) || (c && c.attr) || c.length || ($.type(c) === 'object' && (c.jquery || c.then) ));
304
- }
305
-
306
- // Option object sanitizer
307
- function sanitizeOptions(opts) {
308
- var content, text, ajax, once;
309
-
310
- if(invalidOpt(opts)) { return FALSE; }
311
-
312
- if(invalidOpt(opts.metadata)) {
313
- opts.metadata = { type: opts.metadata };
314
- }
315
-
316
- if('content' in opts) {
317
- content = opts.content;
318
-
319
- if(invalidOpt(content) || content.jquery || content.done) {
320
- content = opts.content = {
321
- text: (text = invalidContent(content) ? FALSE : content)
322
- };
323
- }
324
- else { text = content.text; }
325
-
326
- // DEPRECATED - Old content.ajax plugin functionality
327
- // Converts it into the proper Deferred syntax
328
- if('ajax' in content) {
329
- ajax = content.ajax;
330
- once = ajax && ajax.once !== FALSE;
331
- delete content.ajax;
332
-
333
- content.text = function(event, api) {
334
- var loading = text || $(this).attr(api.options.content.attr) || 'Loading...',
335
-
336
- deferred = $.ajax(
337
- $.extend({}, ajax, { context: api })
338
- )
339
- .then(ajax.success, NULL, ajax.error)
340
- .then(function(content) {
341
- if(content && once) { api.set('content.text', content); }
342
- return content;
343
- },
344
- function(xhr, status, error) {
345
- if(api.destroyed || xhr.status === 0) { return; }
346
- api.set('content.text', status + ': ' + error);
347
- });
348
-
349
- return !once ? (api.set('content.text', loading), deferred) : loading;
350
- };
351
- }
352
-
353
- if('title' in content) {
354
- if(!invalidOpt(content.title)) {
355
- content.button = content.title.button;
356
- content.title = content.title.text;
357
- }
358
-
359
- if(invalidContent(content.title || FALSE)) {
360
- content.title = FALSE;
361
- }
362
- }
363
- }
364
-
365
- if('position' in opts && invalidOpt(opts.position)) {
366
- opts.position = { my: opts.position, at: opts.position };
367
- }
368
-
369
- if('show' in opts && invalidOpt(opts.show)) {
370
- opts.show = opts.show.jquery ? { target: opts.show } :
371
- opts.show === TRUE ? { ready: TRUE } : { event: opts.show };
372
- }
373
-
374
- if('hide' in opts && invalidOpt(opts.hide)) {
375
- opts.hide = opts.hide.jquery ? { target: opts.hide } : { event: opts.hide };
376
- }
377
-
378
- if('style' in opts && invalidOpt(opts.style)) {
379
- opts.style = { classes: opts.style };
380
- }
381
-
382
- // Sanitize plugin options
383
- $.each(PLUGINS, function() {
384
- this.sanitize && this.sanitize(opts);
385
- });
386
-
387
- return opts;
388
- }
389
-
390
- // Setup builtin .set() option checks
391
- CHECKS = PROTOTYPE.checks = {
392
- builtin: {
393
- // Core checks
394
- '^id$': function(obj, o, v, prev) {
395
- var id = v === TRUE ? QTIP.nextid : v,
396
- new_id = NAMESPACE + '-' + id;
397
-
398
- if(id !== FALSE && id.length > 0 && !$('#'+new_id).length) {
399
- this._id = new_id;
400
-
401
- if(this.rendered) {
402
- this.tooltip[0].id = this._id;
403
- this.elements.content[0].id = this._id + '-content';
404
- this.elements.title[0].id = this._id + '-title';
405
- }
406
- }
407
- else { obj[o] = prev; }
408
- },
409
- '^prerender': function(obj, o, v) {
410
- v && !this.rendered && this.render(this.options.show.ready);
411
- },
412
-
413
- // Content checks
414
- '^content.text$': function(obj, o, v) {
415
- this._updateContent(v);
416
- },
417
- '^content.attr$': function(obj, o, v, prev) {
418
- if(this.options.content.text === this.target.attr(prev)) {
419
- this._updateContent( this.target.attr(v) );
420
- }
421
- },
422
- '^content.title$': function(obj, o, v) {
423
- // Remove title if content is null
424
- if(!v) { return this._removeTitle(); }
425
-
426
- // If title isn't already created, create it now and update
427
- v && !this.elements.title && this._createTitle();
428
- this._updateTitle(v);
429
- },
430
- '^content.button$': function(obj, o, v) {
431
- this._updateButton(v);
432
- },
433
- '^content.title.(text|button)$': function(obj, o, v) {
434
- this.set('content.'+o, v); // Backwards title.text/button compat
435
- },
436
-
437
- // Position checks
438
- '^position.(my|at)$': function(obj, o, v){
439
- 'string' === typeof v && (obj[o] = new CORNER(v, o === 'at'));
440
- },
441
- '^position.container$': function(obj, o, v){
442
- this.rendered && this.tooltip.appendTo(v);
443
- },
444
-
445
- // Show checks
446
- '^show.ready$': function(obj, o, v) {
447
- v && (!this.rendered && this.render(TRUE) || this.toggle(TRUE));
448
- },
449
-
450
- // Style checks
451
- '^style.classes$': function(obj, o, v, p) {
452
- this.rendered && this.tooltip.removeClass(p).addClass(v);
453
- },
454
- '^style.(width|height)': function(obj, o, v) {
455
- this.rendered && this.tooltip.css(o, v);
456
- },
457
- '^style.widget|content.title': function() {
458
- this.rendered && this._setWidget();
459
- },
460
- '^style.def': function(obj, o, v) {
461
- this.rendered && this.tooltip.toggleClass(CLASS_DEFAULT, !!v);
462
- },
463
-
464
- // Events check
465
- '^events.(render|show|move|hide|focus|blur)$': function(obj, o, v) {
466
- this.rendered && this.tooltip[($.isFunction(v) ? '' : 'un') + 'bind']('tooltip'+o, v);
467
- },
468
-
469
- // Properties which require event reassignment
470
- '^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)': function() {
471
- if(!this.rendered) { return; }
472
-
473
- // Set tracking flag
474
- var posOptions = this.options.position;
475
- this.tooltip.attr('tracking', posOptions.target === 'mouse' && posOptions.adjust.mouse);
476
-
477
- // Reassign events
478
- this._unassignEvents();
479
- this._assignEvents();
480
- }
481
- }
482
- };
483
-
484
- // Dot notation converter
485
- function convertNotation(options, notation) {
486
- var i = 0, obj, option = options,
487
-
488
- // Split notation into array
489
- levels = notation.split('.');
490
-
491
- // Loop through
492
- while( option = option[ levels[i++] ] ) {
493
- if(i < levels.length) { obj = option; }
494
- }
495
-
496
- return [obj || options, levels.pop()];
497
- }
498
-
499
- PROTOTYPE.get = function(notation) {
500
- if(this.destroyed) { return this; }
501
-
502
- var o = convertNotation(this.options, notation.toLowerCase()),
503
- result = o[0][ o[1] ];
504
-
505
- return result.precedance ? result.string() : result;
506
- };
507
-
508
- function setCallback(notation, args) {
509
- var category, rule, match;
510
-
511
- for(category in this.checks) {
512
- for(rule in this.checks[category]) {
513
- if(match = (new RegExp(rule, 'i')).exec(notation)) {
514
- args.push(match);
515
-
516
- if(category === 'builtin' || this.plugins[category]) {
517
- this.checks[category][rule].apply(
518
- this.plugins[category] || this, args
519
- );
520
- }
521
- }
522
- }
523
- }
524
- }
525
-
526
- var rmove = /^position\.(my|at|adjust|target|container|viewport)|style|content|show\.ready/i,
527
- rrender = /^prerender|show\.ready/i;
528
-
529
- PROTOTYPE.set = function(option, value) {
530
- if(this.destroyed) { return this; }
531
-
532
- var rendered = this.rendered,
533
- reposition = FALSE,
534
- options = this.options,
535
- checks = this.checks,
536
- name;
537
-
538
- // Convert singular option/value pair into object form
539
- if('string' === typeof option) {
540
- name = option; option = {}; option[name] = value;
541
- }
542
- else { option = $.extend({}, option); }
543
-
544
- // Set all of the defined options to their new values
545
- $.each(option, function(notation, value) {
546
- if(rendered && rrender.test(notation)) {
547
- delete option[notation]; return;
548
- }
549
-
550
- // Set new obj value
551
- var obj = convertNotation(options, notation.toLowerCase()), previous;
552
- previous = obj[0][ obj[1] ];
553
- obj[0][ obj[1] ] = value && value.nodeType ? $(value) : value;
554
-
555
- // Also check if we need to reposition
556
- reposition = rmove.test(notation) || reposition;
557
-
558
- // Set the new params for the callback
559
- option[notation] = [obj[0], obj[1], value, previous];
560
- });
561
-
562
- // Re-sanitize options
563
- sanitizeOptions(options);
564
-
565
- /*
566
- * Execute any valid callbacks for the set options
567
- * Also set positioning flag so we don't get loads of redundant repositioning calls.
568
- */
569
- this.positioning = TRUE;
570
- $.each(option, $.proxy(setCallback, this));
571
- this.positioning = FALSE;
572
-
573
- // Update position if needed
574
- if(this.rendered && this.tooltip[0].offsetWidth > 0 && reposition) {
575
- this.reposition( options.position.target === 'mouse' ? NULL : this.cache.event );
576
- }
577
-
578
- return this;
579
- };
580
-
581
- ;PROTOTYPE._update = function(content, element, reposition) {
582
- var self = this,
583
- cache = this.cache;
584
-
585
- // Make sure tooltip is rendered and content is defined. If not return
586
- if(!this.rendered || !content) { return FALSE; }
587
-
588
- // Use function to parse content
589
- if($.isFunction(content)) {
590
- content = content.call(this.elements.target, cache.event, this) || '';
591
- }
592
-
593
- // Handle deferred content
594
- if($.isFunction(content.then)) {
595
- cache.waiting = TRUE;
596
- return content.then(function(c) {
597
- cache.waiting = FALSE;
598
- return self._update(c, element);
599
- }, NULL, function(e) {
600
- return self._update(e, element);
601
- });
602
- }
603
-
604
- // If content is null... return false
605
- if(content === FALSE || (!content && content !== '')) { return FALSE; }
606
-
607
- // Append new content if its a DOM array and show it if hidden
608
- if(content.jquery && content.length > 0) {
609
- element.empty().append(
610
- content.css({ display: 'block', visibility: 'visible' })
611
- );
612
- }
613
-
614
- // Content is a regular string, insert the new content
615
- else { element.html(content); }
616
-
617
- // Wait for content to be loaded, and reposition
618
- return this._waitForContent(element).then(function(images) {
619
- if(images.images && images.images.length && self.rendered && self.tooltip[0].offsetWidth > 0) {
620
- self.reposition(cache.event, !images.length);
621
- }
622
- });
623
- };
624
-
625
- PROTOTYPE._waitForContent = function(element) {
626
- var cache = this.cache;
627
-
628
- // Set flag
629
- cache.waiting = TRUE;
630
-
631
- // If imagesLoaded is included, ensure images have loaded and return promise
632
- return ( $.fn.imagesLoaded ? element.imagesLoaded() : $.Deferred().resolve([]) )
633
- .done(function() { cache.waiting = FALSE; })
634
- .promise();
635
- };
636
-
637
- PROTOTYPE._updateContent = function(content, reposition) {
638
- this._update(content, this.elements.content, reposition);
639
- };
640
-
641
- PROTOTYPE._updateTitle = function(content, reposition) {
642
- if(this._update(content, this.elements.title, reposition) === FALSE) {
643
- this._removeTitle(FALSE);
644
- }
645
- };
646
-
647
- PROTOTYPE._createTitle = function()
648
- {
649
- var elements = this.elements,
650
- id = this._id+'-title';
651
-
652
- // Destroy previous title element, if present
653
- if(elements.titlebar) { this._removeTitle(); }
654
-
655
- // Create title bar and title elements
656
- elements.titlebar = $('<div />', {
657
- 'class': NAMESPACE + '-titlebar ' + (this.options.style.widget ? createWidgetClass('header') : '')
658
- })
659
- .append(
660
- elements.title = $('<div />', {
661
- 'id': id,
662
- 'class': NAMESPACE + '-title',
663
- 'aria-atomic': TRUE
664
- })
665
- )
666
- .insertBefore(elements.content)
667
-
668
- // Button-specific events
669
- .delegate('.qtip-close', 'mousedown keydown mouseup keyup mouseout', function(event) {
670
- $(this).toggleClass('ui-state-active ui-state-focus', event.type.substr(-4) === 'down');
671
- })
672
- .delegate('.qtip-close', 'mouseover mouseout', function(event){
673
- $(this).toggleClass('ui-state-hover', event.type === 'mouseover');
674
- });
675
-
676
- // Create button if enabled
677
- if(this.options.content.button) { this._createButton(); }
678
- };
679
-
680
- PROTOTYPE._removeTitle = function(reposition)
681
- {
682
- var elements = this.elements;
683
-
684
- if(elements.title) {
685
- elements.titlebar.remove();
686
- elements.titlebar = elements.title = elements.button = NULL;
687
-
688
- // Reposition if enabled
689
- if(reposition !== FALSE) { this.reposition(); }
690
- }
691
- };
692
-
693
- ;PROTOTYPE.reposition = function(event, effect) {
694
- if(!this.rendered || this.positioning || this.destroyed) { return this; }
695
-
696
- // Set positioning flag
697
- this.positioning = TRUE;
698
-
699
- var cache = this.cache,
700
- tooltip = this.tooltip,
701
- posOptions = this.options.position,
702
- target = posOptions.target,
703
- my = posOptions.my,
704
- at = posOptions.at,
705
- viewport = posOptions.viewport,
706
- container = posOptions.container,
707
- adjust = posOptions.adjust,
708
- method = adjust.method.split(' '),
709
- tooltipWidth = tooltip.outerWidth(FALSE),
710
- tooltipHeight = tooltip.outerHeight(FALSE),
711
- targetWidth = 0,
712
- targetHeight = 0,
713
- type = tooltip.css('position'),
714
- position = { left: 0, top: 0 },
715
- visible = tooltip[0].offsetWidth > 0,
716
- isScroll = event && event.type === 'scroll',
717
- win = $(window),
718
- doc = container[0].ownerDocument,
719
- mouse = this.mouse,
720
- pluginCalculations, offset;
721
-
722
- // Check if absolute position was passed
723
- if($.isArray(target) && target.length === 2) {
724
- // Force left top and set position
725
- at = { x: LEFT, y: TOP };
726
- position = { left: target[0], top: target[1] };
727
- }
728
-
729
- // Check if mouse was the target
730
- else if(target === 'mouse') {
731
- // Force left top to allow flipping
732
- at = { x: LEFT, y: TOP };
733
-
734
- // Use the cached mouse coordinates if available, or passed event has no coordinates
735
- if(mouse && mouse.pageX && (adjust.mouse || !event || !event.pageX) ) {
736
- event = mouse;
737
- }
738
-
739
- // If the passed event has no coordinates (such as a scroll event)
740
- else if(!event || !event.pageX) {
741
- // Use the mouse origin that caused the show event, if distance hiding is enabled
742
- if((!adjust.mouse || this.options.show.distance) && cache.origin && cache.origin.pageX) {
743
- event = cache.origin;
744
- }
745
-
746
- // Use cached event for resize/scroll events
747
- else if(!event || (event && (event.type === 'resize' || event.type === 'scroll'))) {
748
- event = cache.event;
749
- }
750
- }
751
-
752
- // Calculate body and container offset and take them into account below
753
- if(type !== 'static') { position = container.offset(); }
754
- if(doc.body.offsetWidth !== (window.innerWidth || doc.documentElement.clientWidth)) {
755
- offset = $(document.body).offset();
756
- }
757
-
758
- // Use event coordinates for position
759
- position = {
760
- left: event.pageX - position.left + (offset && offset.left || 0),
761
- top: event.pageY - position.top + (offset && offset.top || 0)
762
- };
763
-
764
- // Scroll events are a pain, some browsers
765
- if(adjust.mouse && isScroll && mouse) {
766
- position.left -= (mouse.scrollX || 0) - win.scrollLeft();
767
- position.top -= (mouse.scrollY || 0) - win.scrollTop();
768
- }
769
- }
770
-
771
- // Target wasn't mouse or absolute...
772
- else {
773
- // Check if event targetting is being used
774
- if(target === 'event') {
775
- if(event && event.target && event.type !== 'scroll' && event.type !== 'resize') {
776
- cache.target = $(event.target);
777
- }
778
- else if(!event.target) {
779
- cache.target = this.elements.target;
780
- }
781
- }
782
- else if(target !== 'event'){
783
- cache.target = $(target.jquery ? target : this.elements.target);
784
- }
785
- target = cache.target;
786
-
787
- // Parse the target into a jQuery object and make sure there's an element present
788
- target = $(target).eq(0);
789
- if(target.length === 0) { return this; }
790
-
791
- // Check if window or document is the target
792
- else if(target[0] === document || target[0] === window) {
793
- targetWidth = BROWSER.iOS ? window.innerWidth : target.width();
794
- targetHeight = BROWSER.iOS ? window.innerHeight : target.height();
795
-
796
- if(target[0] === window) {
797
- position = {
798
- top: (viewport || target).scrollTop(),
799
- left: (viewport || target).scrollLeft()
800
- };
801
- }
802
- }
803
-
804
- // Check if the target is an <AREA> element
805
- else if(PLUGINS.imagemap && target.is('area')) {
806
- pluginCalculations = PLUGINS.imagemap(this, target, at, PLUGINS.viewport ? method : FALSE);
807
- }
808
-
809
- // Check if the target is an SVG element
810
- else if(PLUGINS.svg && target && target[0].ownerSVGElement) {
811
- pluginCalculations = PLUGINS.svg(this, target, at, PLUGINS.viewport ? method : FALSE);
812
- }
813
-
814
- // Otherwise use regular jQuery methods
815
- else {
816
- targetWidth = target.outerWidth(FALSE);
817
- targetHeight = target.outerHeight(FALSE);
818
- position = target.offset();
819
- }
820
-
821
- // Parse returned plugin values into proper variables
822
- if(pluginCalculations) {
823
- targetWidth = pluginCalculations.width;
824
- targetHeight = pluginCalculations.height;
825
- offset = pluginCalculations.offset;
826
- position = pluginCalculations.position;
827
- }
828
-
829
- // Adjust position to take into account offset parents
830
- position = this.reposition.offset(target, position, container);
831
-
832
- // Adjust for position.fixed tooltips (and also iOS scroll bug in v3.2-4.0 & v4.3-4.3.2)
833
- if((BROWSER.iOS > 3.1 && BROWSER.iOS < 4.1) ||
834
- (BROWSER.iOS >= 4.3 && BROWSER.iOS < 4.33) ||
835
- (!BROWSER.iOS && type === 'fixed')
836
- ){
837
- position.left -= win.scrollLeft();
838
- position.top -= win.scrollTop();
839
- }
840
-
841
- // Adjust position relative to target
842
- if(!pluginCalculations || (pluginCalculations && pluginCalculations.adjustable !== FALSE)) {
843
- position.left += at.x === RIGHT ? targetWidth : at.x === CENTER ? targetWidth / 2 : 0;
844
- position.top += at.y === BOTTOM ? targetHeight : at.y === CENTER ? targetHeight / 2 : 0;
845
- }
846
- }
847
-
848
- // Adjust position relative to tooltip
849
- position.left += adjust.x + (my.x === RIGHT ? -tooltipWidth : my.x === CENTER ? -tooltipWidth / 2 : 0);
850
- position.top += adjust.y + (my.y === BOTTOM ? -tooltipHeight : my.y === CENTER ? -tooltipHeight / 2 : 0);
851
-
852
- // Use viewport adjustment plugin if enabled
853
- if(PLUGINS.viewport) {
854
- position.adjusted = PLUGINS.viewport(
855
- this, position, posOptions, targetWidth, targetHeight, tooltipWidth, tooltipHeight
856
- );
857
-
858
- // Apply offsets supplied by positioning plugin (if used)
859
- if(offset && position.adjusted.left) { position.left += offset.left; }
860
- if(offset && position.adjusted.top) { position.top += offset.top; }
861
- }
862
-
863
- // Viewport adjustment is disabled, set values to zero
864
- else { position.adjusted = { left: 0, top: 0 }; }
865
-
866
- // tooltipmove event
867
- if(!this._trigger('move', [position, viewport.elem || viewport], event)) { return this; }
868
- delete position.adjusted;
869
-
870
- // If effect is disabled, target it mouse, no animation is defined or positioning gives NaN out, set CSS directly
871
- if(effect === FALSE || !visible || isNaN(position.left) || isNaN(position.top) || target === 'mouse' || !$.isFunction(posOptions.effect)) {
872
- tooltip.css(position);
873
- }
874
-
875
- // Use custom function if provided
876
- else if($.isFunction(posOptions.effect)) {
877
- posOptions.effect.call(tooltip, this, $.extend({}, position));
878
- tooltip.queue(function(next) {
879
- // Reset attributes to avoid cross-browser rendering bugs
880
- $(this).css({ opacity: '', height: '' });
881
- if(BROWSER.ie) { this.style.removeAttribute('filter'); }
882
-
883
- next();
884
- });
885
- }
886
-
887
- // Set positioning flag
888
- this.positioning = FALSE;
889
-
890
- return this;
891
- };
892
-
893
- // Custom (more correct for qTip!) offset calculator
894
- PROTOTYPE.reposition.offset = function(elem, pos, container) {
895
- if(!container[0]) { return pos; }
896
-
897
- var ownerDocument = $(elem[0].ownerDocument),
898
- quirks = !!BROWSER.ie && document.compatMode !== 'CSS1Compat',
899
- parent = container[0],
900
- scrolled, position, parentOffset, overflow;
901
-
902
- function scroll(e, i) {
903
- pos.left += i * e.scrollLeft();
904
- pos.top += i * e.scrollTop();
905
- }
906
-
907
- // Compensate for non-static containers offset
908
- do {
909
- if((position = $.css(parent, 'position')) !== 'static') {
910
- if(position === 'fixed') {
911
- parentOffset = parent.getBoundingClientRect();
912
- scroll(ownerDocument, -1);
913
- }
914
- else {
915
- parentOffset = $(parent).position();
916
- parentOffset.left += (parseFloat($.css(parent, 'borderLeftWidth')) || 0);
917
- parentOffset.top += (parseFloat($.css(parent, 'borderTopWidth')) || 0);
918
- }
919
-
920
- pos.left -= parentOffset.left + (parseFloat($.css(parent, 'marginLeft')) || 0);
921
- pos.top -= parentOffset.top + (parseFloat($.css(parent, 'marginTop')) || 0);
922
-
923
- // If this is the first parent element with an overflow of "scroll" or "auto", store it
924
- if(!scrolled && (overflow = $.css(parent, 'overflow')) !== 'hidden' && overflow !== 'visible') { scrolled = $(parent); }
925
- }
926
- }
927
- while((parent = parent.offsetParent));
928
-
929
- // Compensate for containers scroll if it also has an offsetParent (or in IE quirks mode)
930
- if(scrolled && (scrolled[0] !== ownerDocument[0] || quirks)) {
931
- scroll(scrolled, 1);
932
- }
933
-
934
- return pos;
935
- };
936
-
937
- // Corner class
938
- var C = (CORNER = PROTOTYPE.reposition.Corner = function(corner, forceY) {
939
- corner = ('' + corner).replace(/([A-Z])/, ' $1').replace(/middle/gi, CENTER).toLowerCase();
940
- this.x = (corner.match(/left|right/i) || corner.match(/center/) || ['inherit'])[0].toLowerCase();
941
- this.y = (corner.match(/top|bottom|center/i) || ['inherit'])[0].toLowerCase();
942
- this.forceY = !!forceY;
943
-
944
- var f = corner.charAt(0);
945
- this.precedance = (f === 't' || f === 'b' ? Y : X);
946
- }).prototype;
947
-
948
- C.invert = function(z, center) {
949
- this[z] = this[z] === LEFT ? RIGHT : this[z] === RIGHT ? LEFT : center || this[z];
950
- };
951
-
952
- C.string = function() {
953
- var x = this.x, y = this.y;
954
- return x === y ? x : this.precedance === Y || (this.forceY && y !== 'center') ? y+' '+x : x+' '+y;
955
- };
956
-
957
- C.abbrev = function() {
958
- var result = this.string().split(' ');
959
- return result[0].charAt(0) + (result[1] && result[1].charAt(0) || '');
960
- };
961
-
962
- C.clone = function() {
963
- return new CORNER( this.string(), this.forceY );
964
- };;
965
- PROTOTYPE.toggle = function(state, event) {
966
- var cache = this.cache,
967
- options = this.options,
968
- tooltip = this.tooltip;
969
-
970
- // Try to prevent flickering when tooltip overlaps show element
971
- if(event) {
972
- if((/over|enter/).test(event.type) && (/out|leave/).test(cache.event.type) &&
973
- options.show.target.add(event.target).length === options.show.target.length &&
974
- tooltip.has(event.relatedTarget).length) {
975
- return this;
976
- }
977
-
978
- // Cache event
979
- cache.event = cloneEvent(event);
980
- }
981
-
982
- // If we're currently waiting and we've just hidden... stop it
983
- this.waiting && !state && (this.hiddenDuringWait = TRUE);
984
-
985
- // Render the tooltip if showing and it isn't already
986
- if(!this.rendered) { return state ? this.render(1) : this; }
987
- else if(this.destroyed || this.disabled) { return this; }
988
-
989
- var type = state ? 'show' : 'hide',
990
- opts = this.options[type],
991
- otherOpts = this.options[ !state ? 'show' : 'hide' ],
992
- posOptions = this.options.position,
993
- contentOptions = this.options.content,
994
- width = this.tooltip.css('width'),
995
- visible = this.tooltip.is(':visible'),
996
- animate = state || opts.target.length === 1,
997
- sameTarget = !event || opts.target.length < 2 || cache.target[0] === event.target,
998
- identicalState, allow, showEvent, delay, after;
999
-
1000
- // Detect state if valid one isn't provided
1001
- if((typeof state).search('boolean|number')) { state = !visible; }
1002
-
1003
- // Check if the tooltip is in an identical state to the new would-be state
1004
- identicalState = !tooltip.is(':animated') && visible === state && sameTarget;
1005
-
1006
- // Fire tooltip(show/hide) event and check if destroyed
1007
- allow = !identicalState ? !!this._trigger(type, [90]) : NULL;
1008
-
1009
- // Check to make sure the tooltip wasn't destroyed in the callback
1010
- if(this.destroyed) { return this; }
1011
-
1012
- // If the user didn't stop the method prematurely and we're showing the tooltip, focus it
1013
- if(allow !== FALSE && state) { this.focus(event); }
1014
-
1015
- // If the state hasn't changed or the user stopped it, return early
1016
- if(!allow || identicalState) { return this; }
1017
-
1018
- // Set ARIA hidden attribute
1019
- $.attr(tooltip[0], 'aria-hidden', !!!state);
1020
-
1021
- // Execute state specific properties
1022
- if(state) {
1023
- // Store show origin coordinates
1024
- cache.origin = cloneEvent(this.mouse);
1025
-
1026
- // Update tooltip content & title if it's a dynamic function
1027
- if($.isFunction(contentOptions.text)) { this._updateContent(contentOptions.text, FALSE); }
1028
- if($.isFunction(contentOptions.title)) { this._updateTitle(contentOptions.title, FALSE); }
1029
-
1030
- // Cache mousemove events for positioning purposes (if not already tracking)
1031
- if(!trackingBound && posOptions.target === 'mouse' && posOptions.adjust.mouse) {
1032
- $(document).bind('mousemove.'+NAMESPACE, this._storeMouse);
1033
- trackingBound = TRUE;
1034
- }
1035
-
1036
- // Update the tooltip position (set width first to prevent viewport/max-width issues)
1037
- if(!width) { tooltip.css('width', tooltip.outerWidth(FALSE)); }
1038
- this.reposition(event, arguments[2]);
1039
- if(!width) { tooltip.css('width', ''); }
1040
-
1041
- // Hide other tooltips if tooltip is solo
1042
- if(!!opts.solo) {
1043
- (typeof opts.solo === 'string' ? $(opts.solo) : $(SELECTOR, opts.solo))
1044
- .not(tooltip).not(opts.target).qtip('hide', $.Event('tooltipsolo'));
1045
- }
1046
- }
1047
- else {
1048
- // Clear show timer if we're hiding
1049
- clearTimeout(this.timers.show);
1050
-
1051
- // Remove cached origin on hide
1052
- delete cache.origin;
1053
-
1054
- // Remove mouse tracking event if not needed (all tracking qTips are hidden)
1055
- if(trackingBound && !$(SELECTOR+'[tracking="true"]:visible', opts.solo).not(tooltip).length) {
1056
- $(document).unbind('mousemove.'+NAMESPACE);
1057
- trackingBound = FALSE;
1058
- }
1059
-
1060
- // Blur the tooltip
1061
- this.blur(event);
1062
- }
1063
-
1064
- // Define post-animation, state specific properties
1065
- after = $.proxy(function() {
1066
- if(state) {
1067
- // Prevent antialias from disappearing in IE by removing filter
1068
- if(BROWSER.ie) { tooltip[0].style.removeAttribute('filter'); }
1069
-
1070
- // Remove overflow setting to prevent tip bugs
1071
- tooltip.css('overflow', '');
1072
-
1073
- // Autofocus elements if enabled
1074
- if('string' === typeof opts.autofocus) {
1075
- $(this.options.show.autofocus, tooltip).focus();
1076
- }
1077
-
1078
- // If set, hide tooltip when inactive for delay period
1079
- this.options.show.target.trigger('qtip-'+this.id+'-inactive');
1080
- }
1081
- else {
1082
- // Reset CSS states
1083
- tooltip.css({
1084
- display: '',
1085
- visibility: '',
1086
- opacity: '',
1087
- left: '',
1088
- top: ''
1089
- });
1090
- }
1091
-
1092
- // tooltipvisible/tooltiphidden events
1093
- this._trigger(state ? 'visible' : 'hidden');
1094
- }, this);
1095
-
1096
- // If no effect type is supplied, use a simple toggle
1097
- if(opts.effect === FALSE || animate === FALSE) {
1098
- tooltip[ type ]();
1099
- after();
1100
- }
1101
-
1102
- // Use custom function if provided
1103
- else if($.isFunction(opts.effect)) {
1104
- tooltip.stop(1, 1);
1105
- opts.effect.call(tooltip, this);
1106
- tooltip.queue('fx', function(n) {
1107
- after(); n();
1108
- });
1109
- }
1110
-
1111
- // Use basic fade function by default
1112
- else { tooltip.fadeTo(90, state ? 1 : 0, after); }
1113
-
1114
- // If inactive hide method is set, active it
1115
- if(state) { opts.target.trigger('qtip-'+this.id+'-inactive'); }
1116
-
1117
- return this;
1118
- };
1119
-
1120
- PROTOTYPE.show = function(event) { return this.toggle(TRUE, event); };
1121
-
1122
- PROTOTYPE.hide = function(event) { return this.toggle(FALSE, event); };
1123
-
1124
- ;PROTOTYPE.focus = function(event) {
1125
- if(!this.rendered || this.destroyed) { return this; }
1126
-
1127
- var qtips = $(SELECTOR),
1128
- tooltip = this.tooltip,
1129
- curIndex = parseInt(tooltip[0].style.zIndex, 10),
1130
- newIndex = QTIP.zindex + qtips.length,
1131
- focusedElem;
1132
-
1133
- // Only update the z-index if it has changed and tooltip is not already focused
1134
- if(!tooltip.hasClass(CLASS_FOCUS)) {
1135
- // tooltipfocus event
1136
- if(this._trigger('focus', [newIndex], event)) {
1137
- // Only update z-index's if they've changed
1138
- if(curIndex !== newIndex) {
1139
- // Reduce our z-index's and keep them properly ordered
1140
- qtips.each(function() {
1141
- if(this.style.zIndex > curIndex) {
1142
- this.style.zIndex = this.style.zIndex - 1;
1143
- }
1144
- });
1145
-
1146
- // Fire blur event for focused tooltip
1147
- qtips.filter('.' + CLASS_FOCUS).qtip('blur', event);
1148
- }
1149
-
1150
- // Set the new z-index
1151
- tooltip.addClass(CLASS_FOCUS)[0].style.zIndex = newIndex;
1152
- }
1153
- }
1154
-
1155
- return this;
1156
- };
1157
-
1158
- PROTOTYPE.blur = function(event) {
1159
- if(!this.rendered || this.destroyed) { return this; }
1160
-
1161
- // Set focused status to FALSE
1162
- this.tooltip.removeClass(CLASS_FOCUS);
1163
-
1164
- // tooltipblur event
1165
- this._trigger('blur', [ this.tooltip.css('zIndex') ], event);
1166
-
1167
- return this;
1168
- };
1169
-
1170
- ;PROTOTYPE.disable = function(state) {
1171
- if(this.destroyed) { return this; }
1172
-
1173
- // If 'toggle' is passed, toggle the current state
1174
- if(state === 'toggle') {
1175
- state = !(this.rendered ? this.tooltip.hasClass(CLASS_DISABLED) : this.disabled);
1176
- }
1177
-
1178
- // Disable if no state passed
1179
- else if('boolean' !== typeof state) {
1180
- state = TRUE;
1181
- }
1182
-
1183
- if(this.rendered) {
1184
- this.tooltip.toggleClass(CLASS_DISABLED, state)
1185
- .attr('aria-disabled', state);
1186
- }
1187
-
1188
- this.disabled = !!state;
1189
-
1190
- return this;
1191
- };
1192
-
1193
- PROTOTYPE.enable = function() { return this.disable(FALSE); };
1194
-
1195
- ;PROTOTYPE._createButton = function()
1196
- {
1197
- var self = this,
1198
- elements = this.elements,
1199
- tooltip = elements.tooltip,
1200
- button = this.options.content.button,
1201
- isString = typeof button === 'string',
1202
- close = isString ? button : 'Close tooltip';
1203
-
1204
- if(elements.button) { elements.button.remove(); }
1205
-
1206
- // Use custom button if one was supplied by user, else use default
1207
- if(button.jquery) {
1208
- elements.button = button;
1209
- }
1210
- else {
1211
- elements.button = $('<a />', {
1212
- 'class': 'qtip-close ' + (this.options.style.widget ? '' : NAMESPACE+'-icon'),
1213
- 'title': close,
1214
- 'aria-label': close
1215
- })
1216
- .prepend(
1217
- $('<span />', {
1218
- 'class': 'ui-icon ui-icon-close',
1219
- 'html': '&times;'
1220
- })
1221
- );
1222
- }
1223
-
1224
- // Create button and setup attributes
1225
- elements.button.appendTo(elements.titlebar || tooltip)
1226
- .attr('role', 'button')
1227
- .click(function(event) {
1228
- if(!tooltip.hasClass(CLASS_DISABLED)) { self.hide(event); }
1229
- return FALSE;
1230
- });
1231
- };
1232
-
1233
- PROTOTYPE._updateButton = function(button)
1234
- {
1235
- // Make sure tooltip is rendered and if not, return
1236
- if(!this.rendered) { return FALSE; }
1237
-
1238
- var elem = this.elements.button;
1239
- if(button) { this._createButton(); }
1240
- else { elem.remove(); }
1241
- };
1242
-
1243
- ;// Widget class creator
1244
- function createWidgetClass(cls) {
1245
- return WIDGET.concat('').join(cls ? '-'+cls+' ' : ' ');
1246
- }
1247
-
1248
- // Widget class setter method
1249
- PROTOTYPE._setWidget = function()
1250
- {
1251
- var on = this.options.style.widget,
1252
- elements = this.elements,
1253
- tooltip = elements.tooltip,
1254
- disabled = tooltip.hasClass(CLASS_DISABLED);
1255
-
1256
- tooltip.removeClass(CLASS_DISABLED);
1257
- CLASS_DISABLED = on ? 'ui-state-disabled' : 'qtip-disabled';
1258
- tooltip.toggleClass(CLASS_DISABLED, disabled);
1259
-
1260
- tooltip.toggleClass('ui-helper-reset '+createWidgetClass(), on).toggleClass(CLASS_DEFAULT, this.options.style.def && !on);
1261
-
1262
- if(elements.content) {
1263
- elements.content.toggleClass( createWidgetClass('content'), on);
1264
- }
1265
- if(elements.titlebar) {
1266
- elements.titlebar.toggleClass( createWidgetClass('header'), on);
1267
- }
1268
- if(elements.button) {
1269
- elements.button.toggleClass(NAMESPACE+'-icon', !on);
1270
- }
1271
- };;function cloneEvent(event) {
1272
- return event && {
1273
- type: event.type,
1274
- pageX: event.pageX,
1275
- pageY: event.pageY,
1276
- target: event.target,
1277
- relatedTarget: event.relatedTarget,
1278
- scrollX: event.scrollX || window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft,
1279
- scrollY: event.scrollY || window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop
1280
- } || {};
1281
- }
1282
-
1283
- function delay(callback, duration) {
1284
- // If tooltip has displayed, start hide timer
1285
- if(duration > 0) {
1286
- return setTimeout(
1287
- $.proxy(callback, this), duration
1288
- );
1289
- }
1290
- else{ callback.call(this); }
1291
- }
1292
-
1293
- function showMethod(event) {
1294
- if(this.tooltip.hasClass(CLASS_DISABLED)) { return FALSE; }
1295
-
1296
- // Clear hide timers
1297
- clearTimeout(this.timers.show);
1298
- clearTimeout(this.timers.hide);
1299
-
1300
- // Start show timer
1301
- this.timers.show = delay.call(this,
1302
- function() { this.toggle(TRUE, event); },
1303
- this.options.show.delay
1304
- );
1305
- }
1306
-
1307
- function hideMethod(event) {
1308
- if(this.tooltip.hasClass(CLASS_DISABLED)) { return FALSE; }
1309
-
1310
- // Check if new target was actually the tooltip element
1311
- var relatedTarget = $(event.relatedTarget),
1312
- ontoTooltip = relatedTarget.closest(SELECTOR)[0] === this.tooltip[0],
1313
- ontoTarget = relatedTarget[0] === this.options.show.target[0];
1314
-
1315
- // Clear timers and stop animation queue
1316
- clearTimeout(this.timers.show);
1317
- clearTimeout(this.timers.hide);
1318
-
1319
- // Prevent hiding if tooltip is fixed and event target is the tooltip.
1320
- // Or if mouse positioning is enabled and cursor momentarily overlaps
1321
- if(this !== relatedTarget[0] &&
1322
- (this.options.position.target === 'mouse' && ontoTooltip) ||
1323
- (this.options.hide.fixed && (
1324
- (/mouse(out|leave|move)/).test(event.type) && (ontoTooltip || ontoTarget))
1325
- ))
1326
- {
1327
- try {
1328
- event.preventDefault();
1329
- event.stopImmediatePropagation();
1330
- } catch(e) {}
1331
-
1332
- return;
1333
- }
1334
-
1335
- // If tooltip has displayed, start hide timer
1336
- this.timers.hide = delay.call(this,
1337
- function() { this.toggle(FALSE, event); },
1338
- this.options.hide.delay,
1339
- this
1340
- );
1341
- }
1342
-
1343
- function inactiveMethod(event) {
1344
- if(this.tooltip.hasClass(CLASS_DISABLED) || !this.options.hide.inactive) { return FALSE; }
1345
-
1346
- // Clear timer
1347
- clearTimeout(this.timers.inactive);
1348
-
1349
- this.timers.inactive = delay.call(this,
1350
- function(){ this.hide(event); },
1351
- this.options.hide.inactive
1352
- );
1353
- }
1354
-
1355
- function repositionMethod(event) {
1356
- if(this.rendered && this.tooltip[0].offsetWidth > 0) { this.reposition(event); }
1357
- }
1358
-
1359
- // Store mouse coordinates
1360
- PROTOTYPE._storeMouse = function(event) {
1361
- (this.mouse = cloneEvent(event)).type = 'mousemove';
1362
- };
1363
-
1364
- // Bind events
1365
- PROTOTYPE._bind = function(targets, events, method, suffix, context) {
1366
- var ns = '.' + this._id + (suffix ? '-'+suffix : '');
1367
- events.length && $(targets).bind(
1368
- (events.split ? events : events.join(ns + ' ')) + ns,
1369
- $.proxy(method, context || this)
1370
- );
1371
- };
1372
- PROTOTYPE._unbind = function(targets, suffix) {
1373
- $(targets).unbind('.' + this._id + (suffix ? '-'+suffix : ''));
1374
- };
1375
-
1376
- // Apply common event handlers using delegate (avoids excessive .bind calls!)
1377
- var ns = '.'+NAMESPACE;
1378
- function delegate(selector, events, method) {
1379
- $(document.body).delegate(selector,
1380
- (events.split ? events : events.join(ns + ' ')) + ns,
1381
- function() {
1382
- var api = QTIP.api[ $.attr(this, ATTR_ID) ];
1383
- api && !api.disabled && method.apply(api, arguments);
1384
- }
1385
- );
1386
- }
1387
-
1388
- $(function() {
1389
- delegate(SELECTOR, ['mouseenter', 'mouseleave'], function(event) {
1390
- var state = event.type === 'mouseenter',
1391
- tooltip = $(event.currentTarget),
1392
- target = $(event.relatedTarget || event.target),
1393
- options = this.options;
1394
-
1395
- // On mouseenter...
1396
- if(state) {
1397
- // Focus the tooltip on mouseenter (z-index stacking)
1398
- this.focus(event);
1399
-
1400
- // Clear hide timer on tooltip hover to prevent it from closing
1401
- tooltip.hasClass(CLASS_FIXED) && !tooltip.hasClass(CLASS_DISABLED) && clearTimeout(this.timers.hide);
1402
- }
1403
-
1404
- // On mouseleave...
1405
- else {
1406
- // Hide when we leave the tooltip and not onto the show target (if a hide event is set)
1407
- if(options.position.target === 'mouse' && options.hide.event &&
1408
- options.show.target && !target.closest(options.show.target[0]).length) {
1409
- this.hide(event);
1410
- }
1411
- }
1412
-
1413
- // Add hover class
1414
- tooltip.toggleClass(CLASS_HOVER, state);
1415
- });
1416
-
1417
- // Define events which reset the 'inactive' event handler
1418
- delegate('['+ATTR_ID+']', INACTIVE_EVENTS, inactiveMethod);
1419
- });
1420
-
1421
- // Event trigger
1422
- PROTOTYPE._trigger = function(type, args, event) {
1423
- var callback = $.Event('tooltip'+type);
1424
- callback.originalEvent = (event && $.extend({}, event)) || this.cache.event || NULL;
1425
-
1426
- this.triggering = type;
1427
- this.tooltip.trigger(callback, [this].concat(args || []));
1428
- this.triggering = FALSE;
1429
-
1430
- return !callback.isDefaultPrevented();
1431
- };
1432
-
1433
- PROTOTYPE._bindEvents = function(showEvents, hideEvents, showTarget, hideTarget, showMethod, hideMethod) {
1434
- // If hide and show targets are the same...
1435
- if(hideTarget.add(showTarget).length === hideTarget.length) {
1436
- var toggleEvents = [];
1437
-
1438
- // Filter identical show/hide events
1439
- hideEvents = $.map(hideEvents, function(type) {
1440
- var showIndex = $.inArray(type, showEvents);
1441
-
1442
- // Both events are identical, remove from both hide and show events
1443
- // and append to toggleEvents
1444
- if(showIndex > -1) {
1445
- toggleEvents.push( showEvents.splice( showIndex, 1 )[0] );
1446
- return;
1447
- }
1448
-
1449
- return type;
1450
- });
1451
-
1452
- // Toggle events are special case of identical show/hide events, which happen in sequence
1453
- toggleEvents.length && this._bind(showTarget, toggleEvents, function(event) {
1454
- var state = this.rendered ? this.tooltip[0].offsetWidth > 0 : false;
1455
- (state ? hideMethod : showMethod).call(this, event);
1456
- });
1457
- }
1458
-
1459
- // Apply show/hide/toggle events
1460
- this._bind(showTarget, showEvents, showMethod);
1461
- this._bind(hideTarget, hideEvents, hideMethod);
1462
- };
1463
-
1464
- PROTOTYPE._assignInitialEvents = function(event) {
1465
- var options = this.options,
1466
- showTarget = options.show.target,
1467
- hideTarget = options.hide.target,
1468
- showEvents = options.show.event ? $.trim('' + options.show.event).split(' ') : [],
1469
- hideEvents = options.hide.event ? $.trim('' + options.hide.event).split(' ') : [];
1470
-
1471
- /*
1472
- * Make sure hoverIntent functions properly by using mouseleave as a hide event if
1473
- * mouseenter/mouseout is used for show.event, even if it isn't in the users options.
1474
- */
1475
- if(/mouse(over|enter)/i.test(options.show.event) && !/mouse(out|leave)/i.test(options.hide.event)) {
1476
- hideEvents.push('mouseleave');
1477
- }
1478
-
1479
- /*
1480
- * Also make sure initial mouse targetting works correctly by caching mousemove coords
1481
- * on show targets before the tooltip has rendered. Also set onTarget when triggered to
1482
- * keep mouse tracking working.
1483
- */
1484
- this._bind(showTarget, 'mousemove', function(event) {
1485
- this._storeMouse(event);
1486
- this.cache.onTarget = TRUE;
1487
- });
1488
-
1489
- // Define hoverIntent function
1490
- function hoverIntent(event) {
1491
- // Only continue if tooltip isn't disabled
1492
- if(this.disabled || this.destroyed) { return FALSE; }
1493
-
1494
- // Cache the event data
1495
- this.cache.event = cloneEvent(event);
1496
- this.cache.target = event ? $(event.target) : [undefined];
1497
-
1498
- // Start the event sequence
1499
- clearTimeout(this.timers.show);
1500
- this.timers.show = delay.call(this,
1501
- function() { this.render(typeof event === 'object' || options.show.ready); },
1502
- options.show.delay
1503
- );
1504
- }
1505
-
1506
- // Filter and bind events
1507
- this._bindEvents(showEvents, hideEvents, showTarget, hideTarget, hoverIntent, function() {
1508
- clearTimeout(this.timers.show);
1509
- });
1510
-
1511
- // Prerendering is enabled, create tooltip now
1512
- if(options.show.ready || options.prerender) { hoverIntent.call(this, event); }
1513
- };
1514
-
1515
- // Event assignment method
1516
- PROTOTYPE._assignEvents = function() {
1517
- var self = this,
1518
- options = this.options,
1519
- posOptions = options.position,
1520
-
1521
- tooltip = this.tooltip,
1522
- showTarget = options.show.target,
1523
- hideTarget = options.hide.target,
1524
- containerTarget = posOptions.container,
1525
- viewportTarget = posOptions.viewport,
1526
- documentTarget = $(document),
1527
- bodyTarget = $(document.body),
1528
- windowTarget = $(window),
1529
-
1530
- showEvents = options.show.event ? $.trim('' + options.show.event).split(' ') : [],
1531
- hideEvents = options.hide.event ? $.trim('' + options.hide.event).split(' ') : [];
1532
-
1533
-
1534
- // Assign passed event callbacks
1535
- $.each(options.events, function(name, callback) {
1536
- self._bind(tooltip, name === 'toggle' ? ['tooltipshow','tooltiphide'] : ['tooltip'+name], callback, null, tooltip);
1537
- });
1538
-
1539
- // Hide tooltips when leaving current window/frame (but not select/option elements)
1540
- if(/mouse(out|leave)/i.test(options.hide.event) && options.hide.leave === 'window') {
1541
- this._bind(documentTarget, ['mouseout', 'blur'], function(event) {
1542
- if(!/select|option/.test(event.target.nodeName) && !event.relatedTarget) {
1543
- this.hide(event);
1544
- }
1545
- });
1546
- }
1547
-
1548
- // Enable hide.fixed by adding appropriate class
1549
- if(options.hide.fixed) {
1550
- hideTarget = hideTarget.add( tooltip.addClass(CLASS_FIXED) );
1551
- }
1552
-
1553
- /*
1554
- * Make sure hoverIntent functions properly by using mouseleave to clear show timer if
1555
- * mouseenter/mouseout is used for show.event, even if it isn't in the users options.
1556
- */
1557
- else if(/mouse(over|enter)/i.test(options.show.event)) {
1558
- this._bind(hideTarget, 'mouseleave', function() {
1559
- clearTimeout(this.timers.show);
1560
- });
1561
- }
1562
-
1563
- // Hide tooltip on document mousedown if unfocus events are enabled
1564
- if(('' + options.hide.event).indexOf('unfocus') > -1) {
1565
- this._bind(containerTarget.closest('html'), ['mousedown', 'touchstart'], function(event) {
1566
- var elem = $(event.target),
1567
- enabled = this.rendered && !this.tooltip.hasClass(CLASS_DISABLED) && this.tooltip[0].offsetWidth > 0,
1568
- isAncestor = elem.parents(SELECTOR).filter(this.tooltip[0]).length > 0;
1569
-
1570
- if(elem[0] !== this.target[0] && elem[0] !== this.tooltip[0] && !isAncestor &&
1571
- !this.target.has(elem[0]).length && enabled
1572
- ) {
1573
- this.hide(event);
1574
- }
1575
- });
1576
- }
1577
-
1578
- // Check if the tooltip hides when inactive
1579
- if('number' === typeof options.hide.inactive) {
1580
- // Bind inactive method to show target(s) as a custom event
1581
- this._bind(showTarget, 'qtip-'+this.id+'-inactive', inactiveMethod);
1582
-
1583
- // Define events which reset the 'inactive' event handler
1584
- this._bind(hideTarget.add(tooltip), QTIP.inactiveEvents, inactiveMethod, '-inactive');
1585
- }
1586
-
1587
- // Filter and bind events
1588
- this._bindEvents(showEvents, hideEvents, showTarget, hideTarget, showMethod, hideMethod);
1589
-
1590
- // Mouse movement bindings
1591
- this._bind(showTarget.add(tooltip), 'mousemove', function(event) {
1592
- // Check if the tooltip hides when mouse is moved a certain distance
1593
- if('number' === typeof options.hide.distance) {
1594
- var origin = this.cache.origin || {},
1595
- limit = this.options.hide.distance,
1596
- abs = Math.abs;
1597
-
1598
- // Check if the movement has gone beyond the limit, and hide it if so
1599
- if(abs(event.pageX - origin.pageX) >= limit || abs(event.pageY - origin.pageY) >= limit) {
1600
- this.hide(event);
1601
- }
1602
- }
1603
-
1604
- // Cache mousemove coords on show targets
1605
- this._storeMouse(event);
1606
- });
1607
-
1608
- // Mouse positioning events
1609
- if(posOptions.target === 'mouse') {
1610
- // If mouse adjustment is on...
1611
- if(posOptions.adjust.mouse) {
1612
- // Apply a mouseleave event so we don't get problems with overlapping
1613
- if(options.hide.event) {
1614
- // Track if we're on the target or not
1615
- this._bind(showTarget, ['mouseenter', 'mouseleave'], function(event) {
1616
- this.cache.onTarget = event.type === 'mouseenter';
1617
- });
1618
- }
1619
-
1620
- // Update tooltip position on mousemove
1621
- this._bind(documentTarget, 'mousemove', function(event) {
1622
- // Update the tooltip position only if the tooltip is visible and adjustment is enabled
1623
- if(this.rendered && this.cache.onTarget && !this.tooltip.hasClass(CLASS_DISABLED) && this.tooltip[0].offsetWidth > 0) {
1624
- this.reposition(event);
1625
- }
1626
- });
1627
- }
1628
- }
1629
-
1630
- // Adjust positions of the tooltip on window resize if enabled
1631
- if(posOptions.adjust.resize || viewportTarget.length) {
1632
- this._bind( $.event.special.resize ? viewportTarget : windowTarget, 'resize', repositionMethod );
1633
- }
1634
-
1635
- // Adjust tooltip position on scroll of the window or viewport element if present
1636
- if(posOptions.adjust.scroll) {
1637
- this._bind( windowTarget.add(posOptions.container), 'scroll', repositionMethod );
1638
- }
1639
- };
1640
-
1641
- // Un-assignment method
1642
- PROTOTYPE._unassignEvents = function() {
1643
- var targets = [
1644
- this.options.show.target[0],
1645
- this.options.hide.target[0],
1646
- this.rendered && this.tooltip[0],
1647
- this.options.position.container[0],
1648
- this.options.position.viewport[0],
1649
- this.options.position.container.closest('html')[0], // unfocus
1650
- window,
1651
- document
1652
- ];
1653
-
1654
- this._unbind($([]).pushStack( $.grep(targets, function(i) {
1655
- return typeof i === 'object';
1656
- })));
1657
- };
1658
-
1659
- ;// Initialization method
1660
- function init(elem, id, opts) {
1661
- var obj, posOptions, attr, config, title,
1662
-
1663
- // Setup element references
1664
- docBody = $(document.body),
1665
-
1666
- // Use document body instead of document element if needed
1667
- newTarget = elem[0] === document ? docBody : elem,
1668
-
1669
- // Grab metadata from element if plugin is present
1670
- metadata = (elem.metadata) ? elem.metadata(opts.metadata) : NULL,
1671
-
1672
- // If metadata type if HTML5, grab 'name' from the object instead, or use the regular data object otherwise
1673
- metadata5 = opts.metadata.type === 'html5' && metadata ? metadata[opts.metadata.name] : NULL,
1674
-
1675
- // Grab data from metadata.name (or data-qtipopts as fallback) using .data() method,
1676
- html5 = elem.data(opts.metadata.name || 'qtipopts');
1677
-
1678
- // If we don't get an object returned attempt to parse it manualyl without parseJSON
1679
- try { html5 = typeof html5 === 'string' ? $.parseJSON(html5) : html5; } catch(e) {}
1680
-
1681
- // Merge in and sanitize metadata
1682
- config = $.extend(TRUE, {}, QTIP.defaults, opts,
1683
- typeof html5 === 'object' ? sanitizeOptions(html5) : NULL,
1684
- sanitizeOptions(metadata5 || metadata));
1685
-
1686
- // Re-grab our positioning options now we've merged our metadata and set id to passed value
1687
- posOptions = config.position;
1688
- config.id = id;
1689
-
1690
- // Setup missing content if none is detected
1691
- if('boolean' === typeof config.content.text) {
1692
- attr = elem.attr(config.content.attr);
1693
-
1694
- // Grab from supplied attribute if available
1695
- if(config.content.attr !== FALSE && attr) { config.content.text = attr; }
1696
-
1697
- // No valid content was found, abort render
1698
- else { return FALSE; }
1699
- }
1700
-
1701
- // Setup target options
1702
- if(!posOptions.container.length) { posOptions.container = docBody; }
1703
- if(posOptions.target === FALSE) { posOptions.target = newTarget; }
1704
- if(config.show.target === FALSE) { config.show.target = newTarget; }
1705
- if(config.show.solo === TRUE) { config.show.solo = posOptions.container.closest('body'); }
1706
- if(config.hide.target === FALSE) { config.hide.target = newTarget; }
1707
- if(config.position.viewport === TRUE) { config.position.viewport = posOptions.container; }
1708
-
1709
- // Ensure we only use a single container
1710
- posOptions.container = posOptions.container.eq(0);
1711
-
1712
- // Convert position corner values into x and y strings
1713
- posOptions.at = new CORNER(posOptions.at, TRUE);
1714
- posOptions.my = new CORNER(posOptions.my);
1715
-
1716
- // Destroy previous tooltip if overwrite is enabled, or skip element if not
1717
- if(elem.data(NAMESPACE)) {
1718
- if(config.overwrite) {
1719
- elem.qtip('destroy', true);
1720
- }
1721
- else if(config.overwrite === FALSE) {
1722
- return FALSE;
1723
- }
1724
- }
1725
-
1726
- // Add has-qtip attribute
1727
- elem.attr(ATTR_HAS, id);
1728
-
1729
- // Remove title attribute and store it if present
1730
- if(config.suppress && (title = elem.attr('title'))) {
1731
- // Final attr call fixes event delegatiom and IE default tooltip showing problem
1732
- elem.removeAttr('title').attr(oldtitle, title).attr('title', '');
1733
- }
1734
-
1735
- // Initialize the tooltip and add API reference
1736
- obj = new QTip(elem, config, id, !!attr);
1737
- elem.data(NAMESPACE, obj);
1738
-
1739
- // Catch remove/removeqtip events on target element to destroy redundant tooltip
1740
- elem.one('remove.qtip-'+id+' removeqtip.qtip-'+id, function() {
1741
- var api; if((api = $(this).data(NAMESPACE))) { api.destroy(true); }
1742
- });
1743
-
1744
- return obj;
1745
- }
1746
-
1747
- // jQuery $.fn extension method
1748
- QTIP = $.fn.qtip = function(options, notation, newValue)
1749
- {
1750
- var command = ('' + options).toLowerCase(), // Parse command
1751
- returned = NULL,
1752
- args = $.makeArray(arguments).slice(1),
1753
- event = args[args.length - 1],
1754
- opts = this[0] ? $.data(this[0], NAMESPACE) : NULL;
1755
-
1756
- // Check for API request
1757
- if((!arguments.length && opts) || command === 'api') {
1758
- return opts;
1759
- }
1760
-
1761
- // Execute API command if present
1762
- else if('string' === typeof options) {
1763
- this.each(function() {
1764
- var api = $.data(this, NAMESPACE);
1765
- if(!api) { return TRUE; }
1766
-
1767
- // Cache the event if possible
1768
- if(event && event.timeStamp) { api.cache.event = event; }
1769
-
1770
- // Check for specific API commands
1771
- if(notation && (command === 'option' || command === 'options')) {
1772
- if(newValue !== undefined || $.isPlainObject(notation)) {
1773
- api.set(notation, newValue);
1774
- }
1775
- else {
1776
- returned = api.get(notation);
1777
- return FALSE;
1778
- }
1779
- }
1780
-
1781
- // Execute API command
1782
- else if(api[command]) {
1783
- api[command].apply(api, args);
1784
- }
1785
- });
1786
-
1787
- return returned !== NULL ? returned : this;
1788
- }
1789
-
1790
- // No API commands. validate provided options and setup qTips
1791
- else if('object' === typeof options || !arguments.length) {
1792
- // Sanitize options first
1793
- opts = sanitizeOptions($.extend(TRUE, {}, options));
1794
-
1795
- return this.each(function(i) {
1796
- var api, id;
1797
-
1798
- // Find next available ID, or use custom ID if provided
1799
- id = $.isArray(opts.id) ? opts.id[i] : opts.id;
1800
- id = !id || id === FALSE || id.length < 1 || QTIP.api[id] ? QTIP.nextid++ : id;
1801
-
1802
- // Initialize the qTip and re-grab newly sanitized options
1803
- api = init($(this), id, opts);
1804
- if(api === FALSE) { return TRUE; }
1805
- else { QTIP.api[id] = api; }
1806
-
1807
- // Initialize plugins
1808
- $.each(PLUGINS, function() {
1809
- if(this.initialize === 'initialize') { this(api); }
1810
- });
1811
-
1812
- // Assign initial pre-render events
1813
- api._assignInitialEvents(event);
1814
- });
1815
- }
1816
- };
1817
-
1818
- // Expose class
1819
- $.qtip = QTip;
1820
-
1821
- // Populated in render method
1822
- QTIP.api = {};
1823
- ;$.each({
1824
- /* Allow other plugins to successfully retrieve the title of an element with a qTip applied */
1825
- attr: function(attr, val) {
1826
- if(this.length) {
1827
- var self = this[0],
1828
- title = 'title',
1829
- api = $.data(self, 'qtip');
1830
-
1831
- if(attr === title && api && 'object' === typeof api && api.options.suppress) {
1832
- if(arguments.length < 2) {
1833
- return $.attr(self, oldtitle);
1834
- }
1835
-
1836
- // If qTip is rendered and title was originally used as content, update it
1837
- if(api && api.options.content.attr === title && api.cache.attr) {
1838
- api.set('content.text', val);
1839
- }
1840
-
1841
- // Use the regular attr method to set, then cache the result
1842
- return this.attr(oldtitle, val);
1843
- }
1844
- }
1845
-
1846
- return $.fn['attr'+replaceSuffix].apply(this, arguments);
1847
- },
1848
-
1849
- /* Allow clone to correctly retrieve cached title attributes */
1850
- clone: function(keepData) {
1851
- var titles = $([]), title = 'title',
1852
-
1853
- // Clone our element using the real clone method
1854
- elems = $.fn['clone'+replaceSuffix].apply(this, arguments);
1855
-
1856
- // Grab all elements with an oldtitle set, and change it to regular title attribute, if keepData is false
1857
- if(!keepData) {
1858
- elems.filter('['+oldtitle+']').attr('title', function() {
1859
- return $.attr(this, oldtitle);
1860
- })
1861
- .removeAttr(oldtitle);
1862
- }
1863
-
1864
- return elems;
1865
- }
1866
- }, function(name, func) {
1867
- if(!func || $.fn[name+replaceSuffix]) { return TRUE; }
1868
-
1869
- var old = $.fn[name+replaceSuffix] = $.fn[name];
1870
- $.fn[name] = function() {
1871
- return func.apply(this, arguments) || old.apply(this, arguments);
1872
- };
1873
- });
1874
-
1875
- /* Fire off 'removeqtip' handler in $.cleanData if jQuery UI not present (it already does similar).
1876
- * This snippet is taken directly from jQuery UI source code found here:
1877
- * http://code.jquery.com/ui/jquery-ui-git.js
1878
- */
1879
- if(!$.ui) {
1880
- $['cleanData'+replaceSuffix] = $.cleanData;
1881
- $.cleanData = function( elems ) {
1882
- for(var i = 0, elem; (elem = $( elems[i] )).length; i++) {
1883
- if(elem.attr(ATTR_HAS)) {
1884
- try { elem.triggerHandler('removeqtip'); }
1885
- catch( e ) {}
1886
- }
1887
- }
1888
- $['cleanData'+replaceSuffix].apply(this, arguments);
1889
- };
1890
- }
1891
-
1892
- ;// qTip version
1893
- QTIP.version = '2.2.0';
1894
-
1895
- // Base ID for all qTips
1896
- QTIP.nextid = 0;
1897
-
1898
- // Inactive events array
1899
- QTIP.inactiveEvents = INACTIVE_EVENTS;
1900
-
1901
- // Base z-index for all qTips
1902
- QTIP.zindex = 15000;
1903
-
1904
- // Define configuration defaults
1905
- QTIP.defaults = {
1906
- prerender: FALSE,
1907
- id: FALSE,
1908
- overwrite: TRUE,
1909
- suppress: TRUE,
1910
- content: {
1911
- text: TRUE,
1912
- attr: 'title',
1913
- title: FALSE,
1914
- button: FALSE
1915
- },
1916
- position: {
1917
- my: 'top left',
1918
- at: 'bottom right',
1919
- target: FALSE,
1920
- container: FALSE,
1921
- viewport: FALSE,
1922
- adjust: {
1923
- x: 0, y: 0,
1924
- mouse: TRUE,
1925
- scroll: TRUE,
1926
- resize: TRUE,
1927
- method: 'flipinvert flipinvert'
1928
- },
1929
- effect: function(api, pos, viewport) {
1930
- $(this).animate(pos, {
1931
- duration: 200,
1932
- queue: FALSE
1933
- });
1934
- }
1935
- },
1936
- show: {
1937
- target: FALSE,
1938
- event: 'mouseenter',
1939
- effect: TRUE,
1940
- delay: 90,
1941
- solo: FALSE,
1942
- ready: FALSE,
1943
- autofocus: FALSE
1944
- },
1945
- hide: {
1946
- target: FALSE,
1947
- event: 'mouseleave',
1948
- effect: TRUE,
1949
- delay: 0,
1950
- fixed: FALSE,
1951
- inactive: FALSE,
1952
- leave: 'window',
1953
- distance: FALSE
1954
- },
1955
- style: {
1956
- classes: '',
1957
- widget: FALSE,
1958
- width: FALSE,
1959
- height: FALSE,
1960
- def: TRUE
1961
- },
1962
- events: {
1963
- render: NULL,
1964
- move: NULL,
1965
- show: NULL,
1966
- hide: NULL,
1967
- toggle: NULL,
1968
- visible: NULL,
1969
- hidden: NULL,
1970
- focus: NULL,
1971
- blur: NULL
1972
- }
1973
- };
1974
-
1975
- ;var TIP,
1976
-
1977
- // .bind()/.on() namespace
1978
- TIPNS = '.qtip-tip',
1979
-
1980
- // Common CSS strings
1981
- MARGIN = 'margin',
1982
- BORDER = 'border',
1983
- COLOR = 'color',
1984
- BG_COLOR = 'background-color',
1985
- TRANSPARENT = 'transparent',
1986
- IMPORTANT = ' !important',
1987
-
1988
- // Check if the browser supports <canvas/> elements
1989
- HASCANVAS = !!document.createElement('canvas').getContext,
1990
-
1991
- // Invalid colour values used in parseColours()
1992
- INVALID = /rgba?\(0, 0, 0(, 0)?\)|transparent|#123456/i;
1993
-
1994
- // Camel-case method, taken from jQuery source
1995
- // http://code.jquery.com/jquery-1.8.0.js
1996
- function camel(s) { return s.charAt(0).toUpperCase() + s.slice(1); }
1997
-
1998
- /*
1999
- * Modified from Modernizr's testPropsAll()
2000
- * http://modernizr.com/downloads/modernizr-latest.js
2001
- */
2002
- var cssProps = {}, cssPrefixes = ["Webkit", "O", "Moz", "ms"];
2003
- function vendorCss(elem, prop) {
2004
- var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1),
2005
- props = (prop + ' ' + cssPrefixes.join(ucProp + ' ') + ucProp).split(' '),
2006
- cur, val, i = 0;
2007
-
2008
- // If the property has already been mapped...
2009
- if(cssProps[prop]) { return elem.css(cssProps[prop]); }
2010
-
2011
- while((cur = props[i++])) {
2012
- if((val = elem.css(cur)) !== undefined) {
2013
- return cssProps[prop] = cur, val;
2014
- }
2015
- }
2016
- }
2017
-
2018
- // Parse a given elements CSS property into an int
2019
- function intCss(elem, prop) {
2020
- return Math.ceil(parseFloat(vendorCss(elem, prop)));
2021
- }
2022
-
2023
-
2024
- // VML creation (for IE only)
2025
- if(!HASCANVAS) {
2026
- var createVML = function(tag, props, style) {
2027
- return '<qtipvml:'+tag+' xmlns="urn:schemas-microsoft.com:vml" class="qtip-vml" '+(props||'')+
2028
- ' style="behavior: url(#default#VML); '+(style||'')+ '" />';
2029
- };
2030
- }
2031
-
2032
- // Canvas only definitions
2033
- else {
2034
- var PIXEL_RATIO = window.devicePixelRatio || 1,
2035
- BACKING_STORE_RATIO = (function() {
2036
- var context = document.createElement('canvas').getContext('2d');
2037
- return context.backingStorePixelRatio || context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio ||
2038
- context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || 1;
2039
- }()),
2040
- SCALE = PIXEL_RATIO / BACKING_STORE_RATIO;
2041
- }
2042
-
2043
-
2044
- function Tip(qtip, options) {
2045
- this._ns = 'tip';
2046
- this.options = options;
2047
- this.offset = options.offset;
2048
- this.size = [ options.width, options.height ];
2049
-
2050
- // Initialize
2051
- this.init( (this.qtip = qtip) );
2052
- }
2053
-
2054
- $.extend(Tip.prototype, {
2055
- init: function(qtip) {
2056
- var context, tip;
2057
-
2058
- // Create tip element and prepend to the tooltip
2059
- tip = this.element = qtip.elements.tip = $('<div />', { 'class': NAMESPACE+'-tip' }).prependTo(qtip.tooltip);
2060
-
2061
- // Create tip drawing element(s)
2062
- if(HASCANVAS) {
2063
- // save() as soon as we create the canvas element so FF2 doesn't bork on our first restore()!
2064
- context = $('<canvas />').appendTo(this.element)[0].getContext('2d');
2065
-
2066
- // Setup constant parameters
2067
- context.lineJoin = 'miter';
2068
- context.miterLimit = 100000;
2069
- context.save();
2070
- }
2071
- else {
2072
- context = createVML('shape', 'coordorigin="0,0"', 'position:absolute;');
2073
- this.element.html(context + context);
2074
-
2075
- // Prevent mousing down on the tip since it causes problems with .live() handling in IE due to VML
2076
- qtip._bind( $('*', tip).add(tip), ['click', 'mousedown'], function(event) { event.stopPropagation(); }, this._ns);
2077
- }
2078
-
2079
- // Bind update events
2080
- qtip._bind(qtip.tooltip, 'tooltipmove', this.reposition, this._ns, this);
2081
-
2082
- // Create it
2083
- this.create();
2084
- },
2085
-
2086
- _swapDimensions: function() {
2087
- this.size[0] = this.options.height;
2088
- this.size[1] = this.options.width;
2089
- },
2090
- _resetDimensions: function() {
2091
- this.size[0] = this.options.width;
2092
- this.size[1] = this.options.height;
2093
- },
2094
-
2095
- _useTitle: function(corner) {
2096
- var titlebar = this.qtip.elements.titlebar;
2097
- return titlebar && (
2098
- corner.y === TOP || (corner.y === CENTER && this.element.position().top + (this.size[1] / 2) + this.options.offset < titlebar.outerHeight(TRUE))
2099
- );
2100
- },
2101
-
2102
- _parseCorner: function(corner) {
2103
- var my = this.qtip.options.position.my;
2104
-
2105
- // Detect corner and mimic properties
2106
- if(corner === FALSE || my === FALSE) {
2107
- corner = FALSE;
2108
- }
2109
- else if(corner === TRUE) {
2110
- corner = new CORNER( my.string() );
2111
- }
2112
- else if(!corner.string) {
2113
- corner = new CORNER(corner);
2114
- corner.fixed = TRUE;
2115
- }
2116
-
2117
- return corner;
2118
- },
2119
-
2120
- _parseWidth: function(corner, side, use) {
2121
- var elements = this.qtip.elements,
2122
- prop = BORDER + camel(side) + 'Width';
2123
-
2124
- return (use ? intCss(use, prop) : (
2125
- intCss(elements.content, prop) ||
2126
- intCss(this._useTitle(corner) && elements.titlebar || elements.content, prop) ||
2127
- intCss(elements.tooltip, prop)
2128
- )) || 0;
2129
- },
2130
-
2131
- _parseRadius: function(corner) {
2132
- var elements = this.qtip.elements,
2133
- prop = BORDER + camel(corner.y) + camel(corner.x) + 'Radius';
2134
-
2135
- return BROWSER.ie < 9 ? 0 :
2136
- intCss(this._useTitle(corner) && elements.titlebar || elements.content, prop) ||
2137
- intCss(elements.tooltip, prop) || 0;
2138
- },
2139
-
2140
- _invalidColour: function(elem, prop, compare) {
2141
- var val = elem.css(prop);
2142
- return !val || (compare && val === elem.css(compare)) || INVALID.test(val) ? FALSE : val;
2143
- },
2144
-
2145
- _parseColours: function(corner) {
2146
- var elements = this.qtip.elements,
2147
- tip = this.element.css('cssText', ''),
2148
- borderSide = BORDER + camel(corner[ corner.precedance ]) + camel(COLOR),
2149
- colorElem = this._useTitle(corner) && elements.titlebar || elements.content,
2150
- css = this._invalidColour, color = [];
2151
-
2152
- // Attempt to detect the background colour from various elements, left-to-right precedance
2153
- color[0] = css(tip, BG_COLOR) || css(colorElem, BG_COLOR) || css(elements.content, BG_COLOR) ||
2154
- css(elements.tooltip, BG_COLOR) || tip.css(BG_COLOR);
2155
-
2156
- // Attempt to detect the correct border side colour from various elements, left-to-right precedance
2157
- color[1] = css(tip, borderSide, COLOR) || css(colorElem, borderSide, COLOR) ||
2158
- css(elements.content, borderSide, COLOR) || css(elements.tooltip, borderSide, COLOR) || elements.tooltip.css(borderSide);
2159
-
2160
- // Reset background and border colours
2161
- $('*', tip).add(tip).css('cssText', BG_COLOR+':'+TRANSPARENT+IMPORTANT+';'+BORDER+':0'+IMPORTANT+';');
2162
-
2163
- return color;
2164
- },
2165
-
2166
- _calculateSize: function(corner) {
2167
- var y = corner.precedance === Y,
2168
- width = this.options['width'],
2169
- height = this.options['height'],
2170
- isCenter = corner.abbrev() === 'c',
2171
- base = (y ? width: height) * (isCenter ? 0.5 : 1),
2172
- pow = Math.pow,
2173
- round = Math.round,
2174
- bigHyp, ratio, result,
2175
-
2176
- smallHyp = Math.sqrt( pow(base, 2) + pow(height, 2) ),
2177
- hyp = [ (this.border / base) * smallHyp, (this.border / height) * smallHyp ];
2178
-
2179
- hyp[2] = Math.sqrt( pow(hyp[0], 2) - pow(this.border, 2) );
2180
- hyp[3] = Math.sqrt( pow(hyp[1], 2) - pow(this.border, 2) );
2181
-
2182
- bigHyp = smallHyp + hyp[2] + hyp[3] + (isCenter ? 0 : hyp[0]);
2183
- ratio = bigHyp / smallHyp;
2184
-
2185
- result = [ round(ratio * width), round(ratio * height) ];
2186
- return y ? result : result.reverse();
2187
- },
2188
-
2189
- // Tip coordinates calculator
2190
- _calculateTip: function(corner, size, scale) {
2191
- scale = scale || 1;
2192
- size = size || this.size;
2193
-
2194
- var width = size[0] * scale,
2195
- height = size[1] * scale,
2196
- width2 = Math.ceil(width / 2), height2 = Math.ceil(height / 2),
2197
-
2198
- // Define tip coordinates in terms of height and width values
2199
- tips = {
2200
- br: [0,0, width,height, width,0],
2201
- bl: [0,0, width,0, 0,height],
2202
- tr: [0,height, width,0, width,height],
2203
- tl: [0,0, 0,height, width,height],
2204
- tc: [0,height, width2,0, width,height],
2205
- bc: [0,0, width,0, width2,height],
2206
- rc: [0,0, width,height2, 0,height],
2207
- lc: [width,0, width,height, 0,height2]
2208
- };
2209
-
2210
- // Set common side shapes
2211
- tips.lt = tips.br; tips.rt = tips.bl;
2212
- tips.lb = tips.tr; tips.rb = tips.tl;
2213
-
2214
- return tips[ corner.abbrev() ];
2215
- },
2216
-
2217
- // Tip coordinates drawer (canvas)
2218
- _drawCoords: function(context, coords) {
2219
- context.beginPath();
2220
- context.moveTo(coords[0], coords[1]);
2221
- context.lineTo(coords[2], coords[3]);
2222
- context.lineTo(coords[4], coords[5]);
2223
- context.closePath();
2224
- },
2225
-
2226
- create: function() {
2227
- // Determine tip corner
2228
- var c = this.corner = (HASCANVAS || BROWSER.ie) && this._parseCorner(this.options.corner);
2229
-
2230
- // If we have a tip corner...
2231
- if( (this.enabled = !!this.corner && this.corner.abbrev() !== 'c') ) {
2232
- // Cache it
2233
- this.qtip.cache.corner = c.clone();
2234
-
2235
- // Create it
2236
- this.update();
2237
- }
2238
-
2239
- // Toggle tip element
2240
- this.element.toggle(this.enabled);
2241
-
2242
- return this.corner;
2243
- },
2244
-
2245
- update: function(corner, position) {
2246
- if(!this.enabled) { return this; }
2247
-
2248
- var elements = this.qtip.elements,
2249
- tip = this.element,
2250
- inner = tip.children(),
2251
- options = this.options,
2252
- curSize = this.size,
2253
- mimic = options.mimic,
2254
- round = Math.round,
2255
- color, precedance, context,
2256
- coords, bigCoords, translate, newSize, border, BACKING_STORE_RATIO;
2257
-
2258
- // Re-determine tip if not already set
2259
- if(!corner) { corner = this.qtip.cache.corner || this.corner; }
2260
-
2261
- // Use corner property if we detect an invalid mimic value
2262
- if(mimic === FALSE) { mimic = corner; }
2263
-
2264
- // Otherwise inherit mimic properties from the corner object as necessary
2265
- else {
2266
- mimic = new CORNER(mimic);
2267
- mimic.precedance = corner.precedance;
2268
-
2269
- if(mimic.x === 'inherit') { mimic.x = corner.x; }
2270
- else if(mimic.y === 'inherit') { mimic.y = corner.y; }
2271
- else if(mimic.x === mimic.y) {
2272
- mimic[ corner.precedance ] = corner[ corner.precedance ];
2273
- }
2274
- }
2275
- precedance = mimic.precedance;
2276
-
2277
- // Ensure the tip width.height are relative to the tip position
2278
- if(corner.precedance === X) { this._swapDimensions(); }
2279
- else { this._resetDimensions(); }
2280
-
2281
- // Update our colours
2282
- color = this.color = this._parseColours(corner);
2283
-
2284
- // Detect border width, taking into account colours
2285
- if(color[1] !== TRANSPARENT) {
2286
- // Grab border width
2287
- border = this.border = this._parseWidth(corner, corner[corner.precedance]);
2288
-
2289
- // If border width isn't zero, use border color as fill if it's not invalid (1.0 style tips)
2290
- if(options.border && border < 1 && !INVALID.test(color[1])) { color[0] = color[1]; }
2291
-
2292
- // Set border width (use detected border width if options.border is true)
2293
- this.border = border = options.border !== TRUE ? options.border : border;
2294
- }
2295
-
2296
- // Border colour was invalid, set border to zero
2297
- else { this.border = border = 0; }
2298
-
2299
- // Determine tip size
2300
- newSize = this.size = this._calculateSize(corner);
2301
- tip.css({
2302
- width: newSize[0],
2303
- height: newSize[1],
2304
- lineHeight: newSize[1]+'px'
2305
- });
2306
-
2307
- // Calculate tip translation
2308
- if(corner.precedance === Y) {
2309
- translate = [
2310
- round(mimic.x === LEFT ? border : mimic.x === RIGHT ? newSize[0] - curSize[0] - border : (newSize[0] - curSize[0]) / 2),
2311
- round(mimic.y === TOP ? newSize[1] - curSize[1] : 0)
2312
- ];
2313
- }
2314
- else {
2315
- translate = [
2316
- round(mimic.x === LEFT ? newSize[0] - curSize[0] : 0),
2317
- round(mimic.y === TOP ? border : mimic.y === BOTTOM ? newSize[1] - curSize[1] - border : (newSize[1] - curSize[1]) / 2)
2318
- ];
2319
- }
2320
-
2321
- // Canvas drawing implementation
2322
- if(HASCANVAS) {
2323
- // Grab canvas context and clear/save it
2324
- context = inner[0].getContext('2d');
2325
- context.restore(); context.save();
2326
- context.clearRect(0,0,6000,6000);
2327
-
2328
- // Calculate coordinates
2329
- coords = this._calculateTip(mimic, curSize, SCALE);
2330
- bigCoords = this._calculateTip(mimic, this.size, SCALE);
2331
-
2332
- // Set the canvas size using calculated size
2333
- inner.attr(WIDTH, newSize[0] * SCALE).attr(HEIGHT, newSize[1] * SCALE);
2334
- inner.css(WIDTH, newSize[0]).css(HEIGHT, newSize[1]);
2335
-
2336
- // Draw the outer-stroke tip
2337
- this._drawCoords(context, bigCoords);
2338
- context.fillStyle = color[1];
2339
- context.fill();
2340
-
2341
- // Draw the actual tip
2342
- context.translate(translate[0] * SCALE, translate[1] * SCALE);
2343
- this._drawCoords(context, coords);
2344
- context.fillStyle = color[0];
2345
- context.fill();
2346
- }
2347
-
2348
- // VML (IE Proprietary implementation)
2349
- else {
2350
- // Calculate coordinates
2351
- coords = this._calculateTip(mimic);
2352
-
2353
- // Setup coordinates string
2354
- coords = 'm' + coords[0] + ',' + coords[1] + ' l' + coords[2] +
2355
- ',' + coords[3] + ' ' + coords[4] + ',' + coords[5] + ' xe';
2356
-
2357
- // Setup VML-specific offset for pixel-perfection
2358
- translate[2] = border && /^(r|b)/i.test(corner.string()) ?
2359
- BROWSER.ie === 8 ? 2 : 1 : 0;
2360
-
2361
- // Set initial CSS
2362
- inner.css({
2363
- coordsize: (newSize[0]+border) + ' ' + (newSize[1]+border),
2364
- antialias: ''+(mimic.string().indexOf(CENTER) > -1),
2365
- left: translate[0] - (translate[2] * Number(precedance === X)),
2366
- top: translate[1] - (translate[2] * Number(precedance === Y)),
2367
- width: newSize[0] + border,
2368
- height: newSize[1] + border
2369
- })
2370
- .each(function(i) {
2371
- var $this = $(this);
2372
-
2373
- // Set shape specific attributes
2374
- $this[ $this.prop ? 'prop' : 'attr' ]({
2375
- coordsize: (newSize[0]+border) + ' ' + (newSize[1]+border),
2376
- path: coords,
2377
- fillcolor: color[0],
2378
- filled: !!i,
2379
- stroked: !i
2380
- })
2381
- .toggle(!!(border || i));
2382
-
2383
- // Check if border is enabled and add stroke element
2384
- !i && $this.html( createVML(
2385
- 'stroke', 'weight="'+(border*2)+'px" color="'+color[1]+'" miterlimit="1000" joinstyle="miter"'
2386
- ) );
2387
- });
2388
- }
2389
-
2390
- // Opera bug #357 - Incorrect tip position
2391
- // https://github.com/Craga89/qTip2/issues/367
2392
- window.opera && setTimeout(function() {
2393
- elements.tip.css({
2394
- display: 'inline-block',
2395
- visibility: 'visible'
2396
- });
2397
- }, 1);
2398
-
2399
- // Position if needed
2400
- if(position !== FALSE) { this.calculate(corner, newSize); }
2401
- },
2402
-
2403
- calculate: function(corner, size) {
2404
- if(!this.enabled) { return FALSE; }
2405
-
2406
- var self = this,
2407
- elements = this.qtip.elements,
2408
- tip = this.element,
2409
- userOffset = this.options.offset,
2410
- isWidget = elements.tooltip.hasClass('ui-widget'),
2411
- position = { },
2412
- precedance, corners;
2413
-
2414
- // Inherit corner if not provided
2415
- corner = corner || this.corner;
2416
- precedance = corner.precedance;
2417
-
2418
- // Determine which tip dimension to use for adjustment
2419
- size = size || this._calculateSize(corner);
2420
-
2421
- // Setup corners and offset array
2422
- corners = [ corner.x, corner.y ];
2423
- if(precedance === X) { corners.reverse(); }
2424
-
2425
- // Calculate tip position
2426
- $.each(corners, function(i, side) {
2427
- var b, bc, br;
2428
-
2429
- if(side === CENTER) {
2430
- b = precedance === Y ? LEFT : TOP;
2431
- position[ b ] = '50%';
2432
- position[MARGIN+'-' + b] = -Math.round(size[ precedance === Y ? 0 : 1 ] / 2) + userOffset;
2433
- }
2434
- else {
2435
- b = self._parseWidth(corner, side, elements.tooltip);
2436
- bc = self._parseWidth(corner, side, elements.content);
2437
- br = self._parseRadius(corner);
2438
-
2439
- position[ side ] = Math.max(-self.border, i ? bc : (userOffset + (br > b ? br : -b)));
2440
- }
2441
- });
2442
-
2443
- // Adjust for tip size
2444
- position[ corner[precedance] ] -= size[ precedance === X ? 0 : 1 ];
2445
-
2446
- // Set and return new position
2447
- tip.css({ margin: '', top: '', bottom: '', left: '', right: '' }).css(position);
2448
- return position;
2449
- },
2450
-
2451
- reposition: function(event, api, pos, viewport) {
2452
- if(!this.enabled) { return; }
2453
-
2454
- var cache = api.cache,
2455
- newCorner = this.corner.clone(),
2456
- adjust = pos.adjusted,
2457
- method = api.options.position.adjust.method.split(' '),
2458
- horizontal = method[0],
2459
- vertical = method[1] || method[0],
2460
- shift = { left: FALSE, top: FALSE, x: 0, y: 0 },
2461
- offset, css = {}, props;
2462
-
2463
- function shiftflip(direction, precedance, popposite, side, opposite) {
2464
- // Horizontal - Shift or flip method
2465
- if(direction === SHIFT && newCorner.precedance === precedance && adjust[side] && newCorner[popposite] !== CENTER) {
2466
- newCorner.precedance = newCorner.precedance === X ? Y : X;
2467
- }
2468
- else if(direction !== SHIFT && adjust[side]){
2469
- newCorner[precedance] = newCorner[precedance] === CENTER ?
2470
- (adjust[side] > 0 ? side : opposite) : (newCorner[precedance] === side ? opposite : side);
2471
- }
2472
- }
2473
-
2474
- function shiftonly(xy, side, opposite) {
2475
- if(newCorner[xy] === CENTER) {
2476
- css[MARGIN+'-'+side] = shift[xy] = offset[MARGIN+'-'+side] - adjust[side];
2477
- }
2478
- else {
2479
- props = offset[opposite] !== undefined ?
2480
- [ adjust[side], -offset[side] ] : [ -adjust[side], offset[side] ];
2481
-
2482
- if( (shift[xy] = Math.max(props[0], props[1])) > props[0] ) {
2483
- pos[side] -= adjust[side];
2484
- shift[side] = FALSE;
2485
- }
2486
-
2487
- css[ offset[opposite] !== undefined ? opposite : side ] = shift[xy];
2488
- }
2489
- }
2490
-
2491
- // If our tip position isn't fixed e.g. doesn't adjust with viewport...
2492
- if(this.corner.fixed !== TRUE) {
2493
- // Perform shift/flip adjustments
2494
- shiftflip(horizontal, X, Y, LEFT, RIGHT);
2495
- shiftflip(vertical, Y, X, TOP, BOTTOM);
2496
-
2497
- // Update and redraw the tip if needed (check cached details of last drawn tip)
2498
- if(newCorner.string() !== cache.corner.string() && (cache.cornerTop !== adjust.top || cache.cornerLeft !== adjust.left)) {
2499
- this.update(newCorner, FALSE);
2500
- }
2501
- }
2502
-
2503
- // Setup tip offset properties
2504
- offset = this.calculate(newCorner);
2505
-
2506
- // Readjust offset object to make it left/top
2507
- if(offset.right !== undefined) { offset.left = -offset.right; }
2508
- if(offset.bottom !== undefined) { offset.top = -offset.bottom; }
2509
- offset.user = this.offset;
2510
-
2511
- // Perform shift adjustments
2512
- if(shift.left = (horizontal === SHIFT && !!adjust.left)) { shiftonly(X, LEFT, RIGHT); }
2513
- if(shift.top = (vertical === SHIFT && !!adjust.top)) { shiftonly(Y, TOP, BOTTOM); }
2514
-
2515
- /*
2516
- * If the tip is adjusted in both dimensions, or in a
2517
- * direction that would cause it to be anywhere but the
2518
- * outer border, hide it!
2519
- */
2520
- this.element.css(css).toggle(
2521
- !((shift.x && shift.y) || (newCorner.x === CENTER && shift.y) || (newCorner.y === CENTER && shift.x))
2522
- );
2523
-
2524
- // Adjust position to accomodate tip dimensions
2525
- pos.left -= offset.left.charAt ? offset.user :
2526
- horizontal !== SHIFT || shift.top || !shift.left && !shift.top ? offset.left + this.border : 0;
2527
- pos.top -= offset.top.charAt ? offset.user :
2528
- vertical !== SHIFT || shift.left || !shift.left && !shift.top ? offset.top + this.border : 0;
2529
-
2530
- // Cache details
2531
- cache.cornerLeft = adjust.left; cache.cornerTop = adjust.top;
2532
- cache.corner = newCorner.clone();
2533
- },
2534
-
2535
- destroy: function() {
2536
- // Unbind events
2537
- this.qtip._unbind(this.qtip.tooltip, this._ns);
2538
-
2539
- // Remove the tip element(s)
2540
- if(this.qtip.elements.tip) {
2541
- this.qtip.elements.tip.find('*')
2542
- .remove().end().remove();
2543
- }
2544
- }
2545
- });
2546
-
2547
- TIP = PLUGINS.tip = function(api) {
2548
- return new Tip(api, api.options.style.tip);
2549
- };
2550
-
2551
- // Initialize tip on render
2552
- TIP.initialize = 'render';
2553
-
2554
- // Setup plugin sanitization options
2555
- TIP.sanitize = function(options) {
2556
- if(options.style && 'tip' in options.style) {
2557
- var opts = options.style.tip;
2558
- if(typeof opts !== 'object') { opts = options.style.tip = { corner: opts }; }
2559
- if(!(/string|boolean/i).test(typeof opts.corner)) { opts.corner = TRUE; }
2560
- }
2561
- };
2562
-
2563
- // Add new option checks for the plugin
2564
- CHECKS.tip = {
2565
- '^position.my|style.tip.(corner|mimic|border)$': function() {
2566
- // Make sure a tip can be drawn
2567
- this.create();
2568
-
2569
- // Reposition the tooltip
2570
- this.qtip.reposition();
2571
- },
2572
- '^style.tip.(height|width)$': function(obj) {
2573
- // Re-set dimensions and redraw the tip
2574
- this.size = [ obj.width, obj.height ];
2575
- this.update();
2576
-
2577
- // Reposition the tooltip
2578
- this.qtip.reposition();
2579
- },
2580
- '^content.title|style.(classes|widget)$': function() {
2581
- this.update();
2582
- }
2583
- };
2584
-
2585
- // Extend original qTip defaults
2586
- $.extend(TRUE, QTIP.defaults, {
2587
- style: {
2588
- tip: {
2589
- corner: TRUE,
2590
- mimic: FALSE,
2591
- width: 6,
2592
- height: 6,
2593
- border: TRUE,
2594
- offset: 0
2595
- }
2596
- }
2597
- });
2598
-
2599
- ;PLUGINS.viewport = function(api, position, posOptions, targetWidth, targetHeight, elemWidth, elemHeight)
2600
- {
2601
- var target = posOptions.target,
2602
- tooltip = api.elements.tooltip,
2603
- my = posOptions.my,
2604
- at = posOptions.at,
2605
- adjust = posOptions.adjust,
2606
- method = adjust.method.split(' '),
2607
- methodX = method[0],
2608
- methodY = method[1] || method[0],
2609
- viewport = posOptions.viewport,
2610
- container = posOptions.container,
2611
- cache = api.cache,
2612
- adjusted = { left: 0, top: 0 },
2613
- fixed, newMy, newClass, containerOffset, containerStatic,
2614
- viewportWidth, viewportHeight, viewportScroll, viewportOffset;
2615
-
2616
- // If viewport is not a jQuery element, or it's the window/document, or no adjustment method is used... return
2617
- if(!viewport.jquery || target[0] === window || target[0] === document.body || adjust.method === 'none') {
2618
- return adjusted;
2619
- }
2620
-
2621
- // Cach container details
2622
- containerOffset = container.offset() || adjusted;
2623
- containerStatic = container.css('position') === 'static';
2624
-
2625
- // Cache our viewport details
2626
- fixed = tooltip.css('position') === 'fixed';
2627
- viewportWidth = viewport[0] === window ? viewport.width() : viewport.outerWidth(FALSE);
2628
- viewportHeight = viewport[0] === window ? viewport.height() : viewport.outerHeight(FALSE);
2629
- viewportScroll = { left: fixed ? 0 : viewport.scrollLeft(), top: fixed ? 0 : viewport.scrollTop() };
2630
- viewportOffset = viewport.offset() || adjusted;
2631
-
2632
- // Generic calculation method
2633
- function calculate(side, otherSide, type, adjust, side1, side2, lengthName, targetLength, elemLength) {
2634
- var initialPos = position[side1],
2635
- mySide = my[side],
2636
- atSide = at[side],
2637
- isShift = type === SHIFT,
2638
- myLength = mySide === side1 ? elemLength : mySide === side2 ? -elemLength : -elemLength / 2,
2639
- atLength = atSide === side1 ? targetLength : atSide === side2 ? -targetLength : -targetLength / 2,
2640
- sideOffset = viewportScroll[side1] + viewportOffset[side1] - (containerStatic ? 0 : containerOffset[side1]),
2641
- overflow1 = sideOffset - initialPos,
2642
- overflow2 = initialPos + elemLength - (lengthName === WIDTH ? viewportWidth : viewportHeight) - sideOffset,
2643
- offset = myLength - (my.precedance === side || mySide === my[otherSide] ? atLength : 0) - (atSide === CENTER ? targetLength / 2 : 0);
2644
-
2645
- // shift
2646
- if(isShift) {
2647
- offset = (mySide === side1 ? 1 : -1) * myLength;
2648
-
2649
- // Adjust position but keep it within viewport dimensions
2650
- position[side1] += overflow1 > 0 ? overflow1 : overflow2 > 0 ? -overflow2 : 0;
2651
- position[side1] = Math.max(
2652
- -containerOffset[side1] + viewportOffset[side1],
2653
- initialPos - offset,
2654
- Math.min(
2655
- Math.max(
2656
- -containerOffset[side1] + viewportOffset[side1] + (lengthName === WIDTH ? viewportWidth : viewportHeight),
2657
- initialPos + offset
2658
- ),
2659
- position[side1],
2660
-
2661
- // Make sure we don't adjust complete off the element when using 'center'
2662
- mySide === 'center' ? initialPos - myLength : 1E9
2663
- )
2664
- );
2665
-
2666
- }
2667
-
2668
- // flip/flipinvert
2669
- else {
2670
- // Update adjustment amount depending on if using flipinvert or flip
2671
- adjust *= (type === FLIPINVERT ? 2 : 0);
2672
-
2673
- // Check for overflow on the left/top
2674
- if(overflow1 > 0 && (mySide !== side1 || overflow2 > 0)) {
2675
- position[side1] -= offset + adjust;
2676
- newMy.invert(side, side1);
2677
- }
2678
-
2679
- // Check for overflow on the bottom/right
2680
- else if(overflow2 > 0 && (mySide !== side2 || overflow1 > 0) ) {
2681
- position[side1] -= (mySide === CENTER ? -offset : offset) + adjust;
2682
- newMy.invert(side, side2);
2683
- }
2684
-
2685
- // Make sure we haven't made things worse with the adjustment and reset if so
2686
- if(position[side1] < viewportScroll && -position[side1] > overflow2) {
2687
- position[side1] = initialPos; newMy = my.clone();
2688
- }
2689
- }
2690
-
2691
- return position[side1] - initialPos;
2692
- }
2693
-
2694
- // Set newMy if using flip or flipinvert methods
2695
- if(methodX !== 'shift' || methodY !== 'shift') { newMy = my.clone(); }
2696
-
2697
- // Adjust position based onviewport and adjustment options
2698
- adjusted = {
2699
- left: methodX !== 'none' ? calculate( X, Y, methodX, adjust.x, LEFT, RIGHT, WIDTH, targetWidth, elemWidth ) : 0,
2700
- top: methodY !== 'none' ? calculate( Y, X, methodY, adjust.y, TOP, BOTTOM, HEIGHT, targetHeight, elemHeight ) : 0
2701
- };
2702
-
2703
- // Set tooltip position class if it's changed
2704
- if(newMy && cache.lastClass !== (newClass = NAMESPACE + '-pos-' + newMy.abbrev())) {
2705
- tooltip.removeClass(api.cache.lastClass).addClass( (api.cache.lastClass = newClass) );
2706
- }
2707
-
2708
- return adjusted;
2709
- };
2710
- ;PLUGINS.polys = {
2711
- // POLY area coordinate calculator
2712
- // Special thanks to Ed Cradock for helping out with this.
2713
- // Uses a binary search algorithm to find suitable coordinates.
2714
- polygon: function(baseCoords, corner) {
2715
- var result = {
2716
- width: 0, height: 0,
2717
- position: {
2718
- top: 1e10, right: 0,
2719
- bottom: 0, left: 1e10
2720
- },
2721
- adjustable: FALSE
2722
- },
2723
- i = 0, next,
2724
- coords = [],
2725
- compareX = 1, compareY = 1,
2726
- realX = 0, realY = 0,
2727
- newWidth, newHeight;
2728
-
2729
- // First pass, sanitize coords and determine outer edges
2730
- i = baseCoords.length; while(i--) {
2731
- next = [ parseInt(baseCoords[--i], 10), parseInt(baseCoords[i+1], 10) ];
2732
-
2733
- if(next[0] > result.position.right){ result.position.right = next[0]; }
2734
- if(next[0] < result.position.left){ result.position.left = next[0]; }
2735
- if(next[1] > result.position.bottom){ result.position.bottom = next[1]; }
2736
- if(next[1] < result.position.top){ result.position.top = next[1]; }
2737
-
2738
- coords.push(next);
2739
- }
2740
-
2741
- // Calculate height and width from outer edges
2742
- newWidth = result.width = Math.abs(result.position.right - result.position.left);
2743
- newHeight = result.height = Math.abs(result.position.bottom - result.position.top);
2744
-
2745
- // If it's the center corner...
2746
- if(corner.abbrev() === 'c') {
2747
- result.position = {
2748
- left: result.position.left + (result.width / 2),
2749
- top: result.position.top + (result.height / 2)
2750
- };
2751
- }
2752
- else {
2753
- // Second pass, use a binary search algorithm to locate most suitable coordinate
2754
- while(newWidth > 0 && newHeight > 0 && compareX > 0 && compareY > 0)
2755
- {
2756
- newWidth = Math.floor(newWidth / 2);
2757
- newHeight = Math.floor(newHeight / 2);
2758
-
2759
- if(corner.x === LEFT){ compareX = newWidth; }
2760
- else if(corner.x === RIGHT){ compareX = result.width - newWidth; }
2761
- else{ compareX += Math.floor(newWidth / 2); }
2762
-
2763
- if(corner.y === TOP){ compareY = newHeight; }
2764
- else if(corner.y === BOTTOM){ compareY = result.height - newHeight; }
2765
- else{ compareY += Math.floor(newHeight / 2); }
2766
-
2767
- i = coords.length; while(i--)
2768
- {
2769
- if(coords.length < 2){ break; }
2770
-
2771
- realX = coords[i][0] - result.position.left;
2772
- realY = coords[i][1] - result.position.top;
2773
-
2774
- if((corner.x === LEFT && realX >= compareX) ||
2775
- (corner.x === RIGHT && realX <= compareX) ||
2776
- (corner.x === CENTER && (realX < compareX || realX > (result.width - compareX))) ||
2777
- (corner.y === TOP && realY >= compareY) ||
2778
- (corner.y === BOTTOM && realY <= compareY) ||
2779
- (corner.y === CENTER && (realY < compareY || realY > (result.height - compareY)))) {
2780
- coords.splice(i, 1);
2781
- }
2782
- }
2783
- }
2784
- result.position = { left: coords[0][0], top: coords[0][1] };
2785
- }
2786
-
2787
- return result;
2788
- },
2789
-
2790
- rect: function(ax, ay, bx, by) {
2791
- return {
2792
- width: Math.abs(bx - ax),
2793
- height: Math.abs(by - ay),
2794
- position: {
2795
- left: Math.min(ax, bx),
2796
- top: Math.min(ay, by)
2797
- }
2798
- };
2799
- },
2800
-
2801
- _angles: {
2802
- tc: 3 / 2, tr: 7 / 4, tl: 5 / 4,
2803
- bc: 1 / 2, br: 1 / 4, bl: 3 / 4,
2804
- rc: 2, lc: 1, c: 0
2805
- },
2806
- ellipse: function(cx, cy, rx, ry, corner) {
2807
- var c = PLUGINS.polys._angles[ corner.abbrev() ],
2808
- rxc = c === 0 ? 0 : rx * Math.cos( c * Math.PI ),
2809
- rys = ry * Math.sin( c * Math.PI );
2810
-
2811
- return {
2812
- width: (rx * 2) - Math.abs(rxc),
2813
- height: (ry * 2) - Math.abs(rys),
2814
- position: {
2815
- left: cx + rxc,
2816
- top: cy + rys
2817
- },
2818
- adjustable: FALSE
2819
- };
2820
- },
2821
- circle: function(cx, cy, r, corner) {
2822
- return PLUGINS.polys.ellipse(cx, cy, r, r, corner);
2823
- }
2824
- };;PLUGINS.imagemap = function(api, area, corner, adjustMethod)
2825
- {
2826
- if(!area.jquery) { area = $(area); }
2827
-
2828
- var shape = area.attr('shape').toLowerCase().replace('poly', 'polygon'),
2829
- image = $('img[usemap="#'+area.parent('map').attr('name')+'"]'),
2830
- coordsString = $.trim(area.attr('coords')),
2831
- coordsArray = coordsString.replace(/,$/, '').split(','),
2832
- imageOffset, coords, i, next, result, len;
2833
-
2834
- // If we can't find the image using the map...
2835
- if(!image.length) { return FALSE; }
2836
-
2837
- // Pass coordinates string if polygon
2838
- if(shape === 'polygon') {
2839
- result = PLUGINS.polys.polygon(coordsArray, corner);
2840
- }
2841
-
2842
- // Otherwise parse the coordinates and pass them as arguments
2843
- else if(PLUGINS.polys[shape]) {
2844
- for(i = -1, len = coordsArray.length, coords = []; ++i < len;) {
2845
- coords.push( parseInt(coordsArray[i], 10) );
2846
- }
2847
-
2848
- result = PLUGINS.polys[shape].apply(
2849
- this, coords.concat(corner)
2850
- );
2851
- }
2852
-
2853
- // If no shapre calculation method was found, return false
2854
- else { return FALSE; }
2855
-
2856
- // Make sure we account for padding and borders on the image
2857
- imageOffset = image.offset();
2858
- imageOffset.left += Math.ceil((image.outerWidth(FALSE) - image.width()) / 2);
2859
- imageOffset.top += Math.ceil((image.outerHeight(FALSE) - image.height()) / 2);
2860
-
2861
- // Add image position to offset coordinates
2862
- result.position.left += imageOffset.left;
2863
- result.position.top += imageOffset.top;
2864
-
2865
- return result;
2866
- };;PLUGINS.svg = function(api, svg, corner)
2867
- {
2868
- var doc = $(document),
2869
- elem = svg[0],
2870
- root = $(elem.ownerSVGElement),
2871
- xScale = 1, yScale = 1,
2872
- complex = true,
2873
- rootWidth, rootHeight,
2874
- mtx, transformed, viewBox,
2875
- len, next, i, points,
2876
- result, position, dimensions;
2877
-
2878
- // Ascend the parentNode chain until we find an element with getBBox()
2879
- while(!elem.getBBox) { elem = elem.parentNode; }
2880
- if(!elem.getBBox || !elem.parentNode) { return FALSE; }
2881
-
2882
- // Determine dimensions where possible
2883
- rootWidth = root.attr('width') || root.width() || parseInt(root.css('width'), 10);
2884
- rootHeight = root.attr('height') || root.height() || parseInt(root.css('height'), 10);
2885
-
2886
- // Add stroke characteristics to scaling
2887
- var strokeWidth2 = (parseInt(svg.css('stroke-width'), 10) || 0) / 2;
2888
- if(strokeWidth2) {
2889
- xScale += strokeWidth2 / rootWidth;
2890
- yScale += strokeWidth2 / rootHeight;
2891
- }
2892
-
2893
- // Determine which shape calculation to use
2894
- switch(elem.nodeName) {
2895
- case 'ellipse':
2896
- case 'circle':
2897
- result = PLUGINS.polys.ellipse(
2898
- elem.cx.baseVal.value,
2899
- elem.cy.baseVal.value,
2900
- (elem.rx || elem.r).baseVal.value + strokeWidth2,
2901
- (elem.ry || elem.r).baseVal.value + strokeWidth2,
2902
- corner
2903
- );
2904
- break;
2905
-
2906
- case 'line':
2907
- case 'polygon':
2908
- case 'polyline':
2909
- // Determine points object (line has none, so mimic using array)
2910
- points = elem.points || [
2911
- { x: elem.x1.baseVal.value, y: elem.y1.baseVal.value },
2912
- { x: elem.x2.baseVal.value, y: elem.y2.baseVal.value }
2913
- ];
2914
-
2915
- for(result = [], i = -1, len = points.numberOfItems || points.length; ++i < len;) {
2916
- next = points.getItem ? points.getItem(i) : points[i];
2917
- result.push.apply(result, [next.x, next.y]);
2918
- }
2919
-
2920
- result = PLUGINS.polys.polygon(result, corner);
2921
- break;
2922
-
2923
- // Unknown shape or rectangle? Use bounding box
2924
- default:
2925
- result = elem.getBoundingClientRect();
2926
- result = {
2927
- width: result.width, height: result.height,
2928
- position: {
2929
- left: result.left,
2930
- top: result.top
2931
- }
2932
- };
2933
- complex = false;
2934
- break;
2935
- }
2936
-
2937
- // Shortcut assignments
2938
- position = result.position;
2939
- root = root[0];
2940
-
2941
- // If the shape was complex (i.e. not using bounding box calculations)
2942
- if(complex) {
2943
- // Convert position into a pixel value
2944
- if(root.createSVGPoint) {
2945
- mtx = elem.getScreenCTM();
2946
- points = root.createSVGPoint();
2947
-
2948
- points.x = position.left;
2949
- points.y = position.top;
2950
- transformed = points.matrixTransform( mtx );
2951
- position.left = transformed.x;
2952
- position.top = transformed.y;
2953
- }
2954
-
2955
- // Calculate viewBox characteristics
2956
- if(root.viewBox && (viewBox = root.viewBox.baseVal) && viewBox.width && viewBox.height) {
2957
- xScale *= rootWidth / viewBox.width;
2958
- yScale *= rootHeight / viewBox.height;
2959
- }
2960
- }
2961
-
2962
- // Adjust by scroll offset
2963
- position.left += doc.scrollLeft();
2964
- position.top += doc.scrollTop();
2965
-
2966
- return result;
2967
- };;var MODAL, OVERLAY,
2968
- MODALCLASS = 'qtip-modal',
2969
- MODALSELECTOR = '.'+MODALCLASS;
2970
-
2971
- OVERLAY = function()
2972
- {
2973
- var self = this,
2974
- focusableElems = {},
2975
- current, onLast,
2976
- prevState, elem;
2977
-
2978
- // Modified code from jQuery UI 1.10.0 source
2979
- // http://code.jquery.com/ui/1.10.0/jquery-ui.js
2980
- function focusable(element) {
2981
- // Use the defined focusable checker when possible
2982
- if($.expr[':'].focusable) { return $.expr[':'].focusable; }
2983
-
2984
- var isTabIndexNotNaN = !isNaN($.attr(element, 'tabindex')),
2985
- nodeName = element.nodeName && element.nodeName.toLowerCase(),
2986
- map, mapName, img;
2987
-
2988
- if('area' === nodeName) {
2989
- map = element.parentNode;
2990
- mapName = map.name;
2991
- if(!element.href || !mapName || map.nodeName.toLowerCase() !== 'map') {
2992
- return false;
2993
- }
2994
- img = $('img[usemap=#' + mapName + ']')[0];
2995
- return !!img && img.is(':visible');
2996
- }
2997
- return (/input|select|textarea|button|object/.test( nodeName ) ?
2998
- !element.disabled :
2999
- 'a' === nodeName ?
3000
- element.href || isTabIndexNotNaN :
3001
- isTabIndexNotNaN
3002
- );
3003
- }
3004
-
3005
- // Focus inputs using cached focusable elements (see update())
3006
- function focusInputs(blurElems) {
3007
- // Blurring body element in IE causes window.open windows to unfocus!
3008
- if(focusableElems.length < 1 && blurElems.length) { blurElems.not('body').blur(); }
3009
-
3010
- // Focus the inputs
3011
- else { focusableElems.first().focus(); }
3012
- }
3013
-
3014
- // Steal focus from elements outside tooltip
3015
- function stealFocus(event) {
3016
- if(!elem.is(':visible')) { return; }
3017
-
3018
- var target = $(event.target),
3019
- tooltip = current.tooltip,
3020
- container = target.closest(SELECTOR),
3021
- targetOnTop;
3022
-
3023
- // Determine if input container target is above this
3024
- targetOnTop = container.length < 1 ? FALSE :
3025
- (parseInt(container[0].style.zIndex, 10) > parseInt(tooltip[0].style.zIndex, 10));
3026
-
3027
- // If we're showing a modal, but focus has landed on an input below
3028
- // this modal, divert focus to the first visible input in this modal
3029
- // or if we can't find one... the tooltip itself
3030
- if(!targetOnTop && target.closest(SELECTOR)[0] !== tooltip[0]) {
3031
- focusInputs(target);
3032
- }
3033
-
3034
- // Detect when we leave the last focusable element...
3035
- onLast = event.target === focusableElems[focusableElems.length - 1];
3036
- }
3037
-
3038
- $.extend(self, {
3039
- init: function() {
3040
- // Create document overlay
3041
- elem = self.elem = $('<div />', {
3042
- id: 'qtip-overlay',
3043
- html: '<div></div>',
3044
- mousedown: function() { return FALSE; }
3045
- })
3046
- .hide();
3047
-
3048
- // Make sure we can't focus anything outside the tooltip
3049
- $(document.body).bind('focusin'+MODALSELECTOR, stealFocus);
3050
-
3051
- // Apply keyboard "Escape key" close handler
3052
- $(document).bind('keydown'+MODALSELECTOR, function(event) {
3053
- if(current && current.options.show.modal.escape && event.keyCode === 27) {
3054
- current.hide(event);
3055
- }
3056
- });
3057
-
3058
- // Apply click handler for blur option
3059
- elem.bind('click'+MODALSELECTOR, function(event) {
3060
- if(current && current.options.show.modal.blur) {
3061
- current.hide(event);
3062
- }
3063
- });
3064
-
3065
- return self;
3066
- },
3067
-
3068
- update: function(api) {
3069
- // Update current API reference
3070
- current = api;
3071
-
3072
- // Update focusable elements if enabled
3073
- if(api.options.show.modal.stealfocus !== FALSE) {
3074
- focusableElems = api.tooltip.find('*').filter(function() {
3075
- return focusable(this);
3076
- });
3077
- }
3078
- else { focusableElems = []; }
3079
- },
3080
-
3081
- toggle: function(api, state, duration) {
3082
- var docBody = $(document.body),
3083
- tooltip = api.tooltip,
3084
- options = api.options.show.modal,
3085
- effect = options.effect,
3086
- type = state ? 'show': 'hide',
3087
- visible = elem.is(':visible'),
3088
- visibleModals = $(MODALSELECTOR).filter(':visible:not(:animated)').not(tooltip),
3089
- zindex;
3090
-
3091
- // Set active tooltip API reference
3092
- self.update(api);
3093
-
3094
- // If the modal can steal the focus...
3095
- // Blur the current item and focus anything in the modal we an
3096
- if(state && options.stealfocus !== FALSE) {
3097
- focusInputs( $(':focus') );
3098
- }
3099
-
3100
- // Toggle backdrop cursor style on show
3101
- elem.toggleClass('blurs', options.blur);
3102
-
3103
- // Append to body on show
3104
- if(state) {
3105
- elem.appendTo(document.body);
3106
- }
3107
-
3108
- // Prevent modal from conflicting with show.solo, and don't hide backdrop is other modals are visible
3109
- if((elem.is(':animated') && visible === state && prevState !== FALSE) || (!state && visibleModals.length)) {
3110
- return self;
3111
- }
3112
-
3113
- // Stop all animations
3114
- elem.stop(TRUE, FALSE);
3115
-
3116
- // Use custom function if provided
3117
- if($.isFunction(effect)) {
3118
- effect.call(elem, state);
3119
- }
3120
-
3121
- // If no effect type is supplied, use a simple toggle
3122
- else if(effect === FALSE) {
3123
- elem[ type ]();
3124
- }
3125
-
3126
- // Use basic fade function
3127
- else {
3128
- elem.fadeTo( parseInt(duration, 10) || 90, state ? 1 : 0, function() {
3129
- if(!state) { elem.hide(); }
3130
- });
3131
- }
3132
-
3133
- // Reset position and detach from body on hide
3134
- if(!state) {
3135
- elem.queue(function(next) {
3136
- elem.css({ left: '', top: '' });
3137
- if(!$(MODALSELECTOR).length) { elem.detach(); }
3138
- next();
3139
- });
3140
- }
3141
-
3142
- // Cache the state
3143
- prevState = state;
3144
-
3145
- // If the tooltip is destroyed, set reference to null
3146
- if(current.destroyed) { current = NULL; }
3147
-
3148
- return self;
3149
- }
3150
- });
3151
-
3152
- self.init();
3153
- };
3154
- OVERLAY = new OVERLAY();
3155
-
3156
- function Modal(api, options) {
3157
- this.options = options;
3158
- this._ns = '-modal';
3159
-
3160
- this.init( (this.qtip = api) );
3161
- }
3162
-
3163
- $.extend(Modal.prototype, {
3164
- init: function(qtip) {
3165
- var tooltip = qtip.tooltip;
3166
-
3167
- // If modal is disabled... return
3168
- if(!this.options.on) { return this; }
3169
-
3170
- // Set overlay reference
3171
- qtip.elements.overlay = OVERLAY.elem;
3172
-
3173
- // Add unique attribute so we can grab modal tooltips easily via a SELECTOR, and set z-index
3174
- tooltip.addClass(MODALCLASS).css('z-index', QTIP.modal_zindex + $(MODALSELECTOR).length);
3175
-
3176
- // Apply our show/hide/focus modal events
3177
- qtip._bind(tooltip, ['tooltipshow', 'tooltiphide'], function(event, api, duration) {
3178
- var oEvent = event.originalEvent;
3179
-
3180
- // Make sure mouseout doesn't trigger a hide when showing the modal and mousing onto backdrop
3181
- if(event.target === tooltip[0]) {
3182
- if(oEvent && event.type === 'tooltiphide' && /mouse(leave|enter)/.test(oEvent.type) && $(oEvent.relatedTarget).closest(OVERLAY.elem[0]).length) {
3183
- try { event.preventDefault(); } catch(e) {}
3184
- }
3185
- else if(!oEvent || (oEvent && oEvent.type !== 'tooltipsolo')) {
3186
- this.toggle(event, event.type === 'tooltipshow', duration);
3187
- }
3188
- }
3189
- }, this._ns, this);
3190
-
3191
- // Adjust modal z-index on tooltip focus
3192
- qtip._bind(tooltip, 'tooltipfocus', function(event, api) {
3193
- // If focus was cancelled before it reached us, don't do anything
3194
- if(event.isDefaultPrevented() || event.target !== tooltip[0]) { return; }
3195
-
3196
- var qtips = $(MODALSELECTOR),
3197
-
3198
- // Keep the modal's lower than other, regular qtips
3199
- newIndex = QTIP.modal_zindex + qtips.length,
3200
- curIndex = parseInt(tooltip[0].style.zIndex, 10);
3201
-
3202
- // Set overlay z-index
3203
- OVERLAY.elem[0].style.zIndex = newIndex - 1;
3204
-
3205
- // Reduce modal z-index's and keep them properly ordered
3206
- qtips.each(function() {
3207
- if(this.style.zIndex > curIndex) {
3208
- this.style.zIndex -= 1;
3209
- }
3210
- });
3211
-
3212
- // Fire blur event for focused tooltip
3213
- qtips.filter('.' + CLASS_FOCUS).qtip('blur', event.originalEvent);
3214
-
3215
- // Set the new z-index
3216
- tooltip.addClass(CLASS_FOCUS)[0].style.zIndex = newIndex;
3217
-
3218
- // Set current
3219
- OVERLAY.update(api);
3220
-
3221
- // Prevent default handling
3222
- try { event.preventDefault(); } catch(e) {}
3223
- }, this._ns, this);
3224
-
3225
- // Focus any other visible modals when this one hides
3226
- qtip._bind(tooltip, 'tooltiphide', function(event) {
3227
- if(event.target === tooltip[0]) {
3228
- $(MODALSELECTOR).filter(':visible').not(tooltip).last().qtip('focus', event);
3229
- }
3230
- }, this._ns, this);
3231
- },
3232
-
3233
- toggle: function(event, state, duration) {
3234
- // Make sure default event hasn't been prevented
3235
- if(event && event.isDefaultPrevented()) { return this; }
3236
-
3237
- // Toggle it
3238
- OVERLAY.toggle(this.qtip, !!state, duration);
3239
- },
3240
-
3241
- destroy: function() {
3242
- // Remove modal class
3243
- this.qtip.tooltip.removeClass(MODALCLASS);
3244
-
3245
- // Remove bound events
3246
- this.qtip._unbind(this.qtip.tooltip, this._ns);
3247
-
3248
- // Delete element reference
3249
- OVERLAY.toggle(this.qtip, FALSE);
3250
- delete this.qtip.elements.overlay;
3251
- }
3252
- });
3253
-
3254
-
3255
- MODAL = PLUGINS.modal = function(api) {
3256
- return new Modal(api, api.options.show.modal);
3257
- };
3258
-
3259
- // Setup sanitiztion rules
3260
- MODAL.sanitize = function(opts) {
3261
- if(opts.show) {
3262
- if(typeof opts.show.modal !== 'object') { opts.show.modal = { on: !!opts.show.modal }; }
3263
- else if(typeof opts.show.modal.on === 'undefined') { opts.show.modal.on = TRUE; }
3264
- }
3265
- };
3266
-
3267
- // Base z-index for all modal tooltips (use qTip core z-index as a base)
3268
- QTIP.modal_zindex = QTIP.zindex - 200;
3269
-
3270
- // Plugin needs to be initialized on render
3271
- MODAL.initialize = 'render';
3272
-
3273
- // Setup option set checks
3274
- CHECKS.modal = {
3275
- '^show.modal.(on|blur)$': function() {
3276
- // Initialise
3277
- this.destroy();
3278
- this.init();
3279
-
3280
- // Show the modal if not visible already and tooltip is visible
3281
- this.qtip.elems.overlay.toggle(
3282
- this.qtip.tooltip[0].offsetWidth > 0
3283
- );
3284
- }
3285
- };
3286
-
3287
- // Extend original api defaults
3288
- $.extend(TRUE, QTIP.defaults, {
3289
- show: {
3290
- modal: {
3291
- on: FALSE,
3292
- effect: TRUE,
3293
- blur: TRUE,
3294
- stealfocus: TRUE,
3295
- escape: TRUE
3296
- }
3297
- }
3298
- });
3299
- ;}));
3300
- }( window, document ));
3301
-
3302
-
1
+ /*
2
+ * qTip2 - Pretty powerful tooltips - v2.2.0
3
+ * http://qtip2.com
4
+ *
5
+ * Copyright (c) 2014 Craig Michael Thompson
6
+ * Released under the MIT, GPL licenses
7
+ * http://jquery.org/license
8
+ *
9
+ * Date: Sun Mar 16 2014 07:12 EDT-0400
10
+ * Plugins: tips viewport imagemap svg modal
11
+ * Styles: css3
12
+ */
13
+ /*global window: false, jQuery: false, console: false, define: false */
14
+
15
+ /* Cache window, document, undefined */
16
+ (function( window, document, undefined ) {
17
+
18
+ // Uses AMD or browser globals to create a jQuery plugin.
19
+ (function( factory ) {
20
+ "use strict";
21
+ if(typeof define === 'function' && define.amd) {
22
+ define(['jquery'], factory);
23
+ }
24
+ else if(jQuery && !jQuery.fn.qtip) {
25
+ factory(jQuery);
26
+ }
27
+ }
28
+ (function($) {
29
+ "use strict"; // Enable ECMAScript "strict" operation for this function. See more: http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/
30
+
31
+ ;// Munge the primitives - Paul Irish tip
32
+ var TRUE = true,
33
+ FALSE = false,
34
+ NULL = null,
35
+
36
+ // Common variables
37
+ X = 'x', Y = 'y',
38
+ WIDTH = 'width',
39
+ HEIGHT = 'height',
40
+
41
+ // Positioning sides
42
+ TOP = 'top',
43
+ LEFT = 'left',
44
+ BOTTOM = 'bottom',
45
+ RIGHT = 'right',
46
+ CENTER = 'center',
47
+
48
+ // Position adjustment types
49
+ FLIP = 'flip',
50
+ FLIPINVERT = 'flipinvert',
51
+ SHIFT = 'shift',
52
+
53
+ // Shortcut vars
54
+ QTIP, PROTOTYPE, CORNER, CHECKS,
55
+ PLUGINS = {},
56
+ NAMESPACE = 'qtip',
57
+ ATTR_HAS = 'data-hasqtip',
58
+ ATTR_ID = 'data-qtip-id',
59
+ WIDGET = ['ui-widget', 'ui-tooltip'],
60
+ SELECTOR = '.'+NAMESPACE,
61
+ INACTIVE_EVENTS = 'click dblclick mousedown mouseup mousemove mouseleave mouseenter'.split(' '),
62
+
63
+ CLASS_FIXED = NAMESPACE+'-fixed',
64
+ CLASS_DEFAULT = NAMESPACE + '-default',
65
+ CLASS_FOCUS = NAMESPACE + '-focus',
66
+ CLASS_HOVER = NAMESPACE + '-hover',
67
+ CLASS_DISABLED = NAMESPACE+'-disabled',
68
+
69
+ replaceSuffix = '_replacedByqTip',
70
+ oldtitle = 'oldtitle',
71
+ trackingBound,
72
+
73
+ // Browser detection
74
+ BROWSER = {
75
+ /*
76
+ * IE version detection
77
+ *
78
+ * Adapted from: http://ajaxian.com/archives/attack-of-the-ie-conditional-comment
79
+ * Credit to James Padolsey for the original implemntation!
80
+ */
81
+ ie: (function(){
82
+ var v = 3, div = document.createElement('div');
83
+ while ((div.innerHTML = '<!--[if gt IE '+(++v)+']><i></i><![endif]-->')) {
84
+ if(!div.getElementsByTagName('i')[0]) { break; }
85
+ }
86
+ return v > 4 ? v : NaN;
87
+ }()),
88
+
89
+ /*
90
+ * iOS version detection
91
+ */
92
+ iOS: parseFloat(
93
+ ('' + (/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent) || [0,''])[1])
94
+ .replace('undefined', '3_2').replace('_', '.').replace('_', '')
95
+ ) || FALSE
96
+ };
97
+
98
  ;function QTip(target, options, id, attr) {
99
  // Elements and ID
100
  this.id = id;
295
  return this.target;
296
  };
297
 
298
+ ;function invalidOpt(a) {
299
+ return a === NULL || $.type(a) !== 'object';
300
+ }
301
+
302
+ function invalidContent(c) {
303
+ return !( $.isFunction(c) || (c && c.attr) || c.length || ($.type(c) === 'object' && (c.jquery || c.then) ));
304
+ }
305
+
306
+ // Option object sanitizer
307
+ function sanitizeOptions(opts) {
308
+ var content, text, ajax, once;
309
+
310
+ if(invalidOpt(opts)) { return FALSE; }
311
+
312
+ if(invalidOpt(opts.metadata)) {
313
+ opts.metadata = { type: opts.metadata };
314
+ }
315
+
316
+ if('content' in opts) {
317
+ content = opts.content;
318
+
319
+ if(invalidOpt(content) || content.jquery || content.done) {
320
+ content = opts.content = {
321
+ text: (text = invalidContent(content) ? FALSE : content)
322
+ };
323
+ }
324
+ else { text = content.text; }
325
+
326
+ // DEPRECATED - Old content.ajax plugin functionality
327
+ // Converts it into the proper Deferred syntax
328
+ if('ajax' in content) {
329
+ ajax = content.ajax;
330
+ once = ajax && ajax.once !== FALSE;
331
+ delete content.ajax;
332
+
333
+ content.text = function(event, api) {
334
+ var loading = text || $(this).attr(api.options.content.attr) || 'Loading...',
335
+
336
+ deferred = $.ajax(
337
+ $.extend({}, ajax, { context: api })
338
+ )
339
+ .then(ajax.success, NULL, ajax.error)
340
+ .then(function(content) {
341
+ if(content && once) { api.set('content.text', content); }
342
+ return content;
343
+ },
344
+ function(xhr, status, error) {
345
+ if(api.destroyed || xhr.status === 0) { return; }
346
+ api.set('content.text', status + ': ' + error);
347
+ });
348
+
349
+ return !once ? (api.set('content.text', loading), deferred) : loading;
350
+ };
351
+ }
352
+
353
+ if('title' in content) {
354
+ if(!invalidOpt(content.title)) {
355
+ content.button = content.title.button;
356
+ content.title = content.title.text;
357
+ }
358
+
359
+ if(invalidContent(content.title || FALSE)) {
360
+ content.title = FALSE;
361
+ }
362
+ }
363
+ }
364
+
365
+ if('position' in opts && invalidOpt(opts.position)) {
366
+ opts.position = { my: opts.position, at: opts.position };
367
+ }
368
+
369
+ if('show' in opts && invalidOpt(opts.show)) {
370
+ opts.show = opts.show.jquery ? { target: opts.show } :
371
+ opts.show === TRUE ? { ready: TRUE } : { event: opts.show };
372
+ }
373
+
374
+ if('hide' in opts && invalidOpt(opts.hide)) {
375
+ opts.hide = opts.hide.jquery ? { target: opts.hide } : { event: opts.hide };
376
+ }
377
+
378
+ if('style' in opts && invalidOpt(opts.style)) {
379
+ opts.style = { classes: opts.style };
380
+ }
381
+
382
+ // Sanitize plugin options
383
+ $.each(PLUGINS, function() {
384
+ this.sanitize && this.sanitize(opts);
385
+ });
386
+
387
+ return opts;
388
+ }
389
+
390
+ // Setup builtin .set() option checks
391
+ CHECKS = PROTOTYPE.checks = {
392
+ builtin: {
393
+ // Core checks
394
+ '^id$': function(obj, o, v, prev) {
395
+ var id = v === TRUE ? QTIP.nextid : v,
396
+ new_id = NAMESPACE + '-' + id;
397
+
398
+ if(id !== FALSE && id.length > 0 && !$('#'+new_id).length) {
399
+ this._id = new_id;
400
+
401
+ if(this.rendered) {
402
+ this.tooltip[0].id = this._id;
403
+ this.elements.content[0].id = this._id + '-content';
404
+ this.elements.title[0].id = this._id + '-title';
405
+ }
406
+ }
407
+ else { obj[o] = prev; }
408
+ },
409
+ '^prerender': function(obj, o, v) {
410
+ v && !this.rendered && this.render(this.options.show.ready);
411
+ },
412
+
413
+ // Content checks
414
+ '^content.text$': function(obj, o, v) {
415
+ this._updateContent(v);
416
+ },
417
+ '^content.attr$': function(obj, o, v, prev) {
418
+ if(this.options.content.text === this.target.attr(prev)) {
419
+ this._updateContent( this.target.attr(v) );
420
+ }
421
+ },
422
+ '^content.title$': function(obj, o, v) {
423
+ // Remove title if content is null
424
+ if(!v) { return this._removeTitle(); }
425
+
426
+ // If title isn't already created, create it now and update
427
+ v && !this.elements.title && this._createTitle();
428
+ this._updateTitle(v);
429
+ },
430
+ '^content.button$': function(obj, o, v) {
431
+ this._updateButton(v);
432
+ },
433
+ '^content.title.(text|button)$': function(obj, o, v) {
434
+ this.set('content.'+o, v); // Backwards title.text/button compat
435
+ },
436
+
437
+ // Position checks
438
+ '^position.(my|at)$': function(obj, o, v){
439
+ 'string' === typeof v && (obj[o] = new CORNER(v, o === 'at'));
440
+ },
441
+ '^position.container$': function(obj, o, v){
442
+ this.rendered && this.tooltip.appendTo(v);
443
+ },
444
+
445
+ // Show checks
446
+ '^show.ready$': function(obj, o, v) {
447
+ v && (!this.rendered && this.render(TRUE) || this.toggle(TRUE));
448
+ },
449
+
450
+ // Style checks
451
+ '^style.classes$': function(obj, o, v, p) {
452
+ this.rendered && this.tooltip.removeClass(p).addClass(v);
453
+ },
454
+ '^style.(width|height)': function(obj, o, v) {
455
+ this.rendered && this.tooltip.css(o, v);
456
+ },
457
+ '^style.widget|content.title': function() {
458
+ this.rendered && this._setWidget();
459
+ },
460
+ '^style.def': function(obj, o, v) {
461
+ this.rendered && this.tooltip.toggleClass(CLASS_DEFAULT, !!v);
462
+ },
463
+
464
+ // Events check
465
+ '^events.(render|show|move|hide|focus|blur)$': function(obj, o, v) {
466
+ this.rendered && this.tooltip[($.isFunction(v) ? '' : 'un') + 'bind']('tooltip'+o, v);
467
+ },
468
+
469
+ // Properties which require event reassignment
470
+ '^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)': function() {
471
+ if(!this.rendered) { return; }
472
+
473
+ // Set tracking flag
474
+ var posOptions = this.options.position;
475
+ this.tooltip.attr('tracking', posOptions.target === 'mouse' && posOptions.adjust.mouse);
476
+
477
+ // Reassign events
478
+ this._unassignEvents();
479
+ this._assignEvents();
480
+ }
481
+ }
482
+ };
483
+
484
+ // Dot notation converter
485
+ function convertNotation(options, notation) {
486
+ var i = 0, obj, option = options,
487
+
488
+ // Split notation into array
489
+ levels = notation.split('.');
490
+
491
+ // Loop through
492
+ while( option = option[ levels[i++] ] ) {
493
+ if(i < levels.length) { obj = option; }
494
+ }
495
+
496
+ return [obj || options, levels.pop()];
497
+ }
498
+
499
+ PROTOTYPE.get = function(notation) {
500
+ if(this.destroyed) { return this; }
501
+
502
+ var o = convertNotation(this.options, notation.toLowerCase()),
503
+ result = o[0][ o[1] ];
504
+
505
+ return result.precedance ? result.string() : result;
506
+ };
507
+
508
+ function setCallback(notation, args) {
509
+ var category, rule, match;
510
+
511
+ for(category in this.checks) {
512
+ for(rule in this.checks[category]) {
513
+ if(match = (new RegExp(rule, 'i')).exec(notation)) {
514
+ args.push(match);
515
+
516
+ if(category === 'builtin' || this.plugins[category]) {
517
+ this.checks[category][rule].apply(
518
+ this.plugins[category] || this, args
519
+ );
520
+ }
521
+ }
522
+ }
523
+ }
524
+ }
525
+
526
+ var rmove = /^position\.(my|at|adjust|target|container|viewport)|style|content|show\.ready/i,
527
+ rrender = /^prerender|show\.ready/i;
528
+
529
+ PROTOTYPE.set = function(option, value) {
530
+ if(this.destroyed) { return this; }
531
+
532
+ var rendered = this.rendered,
533
+ reposition = FALSE,
534
+ options = this.options,
535
+ checks = this.checks,
536
+ name;
537
+
538
+ // Convert singular option/value pair into object form
539
+ if('string' === typeof option) {
540
+ name = option; option = {}; option[name] = value;
541
+ }
542
+ else { option = $.extend({}, option); }
543
+
544
+ // Set all of the defined options to their new values
545
+ $.each(option, function(notation, value) {
546
+ if(rendered && rrender.test(notation)) {
547
+ delete option[notation]; return;
548
+ }
549
+
550
+ // Set new obj value
551
+ var obj = convertNotation(options, notation.toLowerCase()), previous;
552
+ previous = obj[0][ obj[1] ];
553
+ obj[0][ obj[1] ] = value && value.nodeType ? $(value) : value;
554
+
555
+ // Also check if we need to reposition
556
+ reposition = rmove.test(notation) || reposition;
557
+
558
+ // Set the new params for the callback
559
+ option[notation] = [obj[0], obj[1], value, previous];
560
+ });
561
+
562
+ // Re-sanitize options
563
+ sanitizeOptions(options);
564
+
565
+ /*
566
+ * Execute any valid callbacks for the set options
567
+ * Also set positioning flag so we don't get loads of redundant repositioning calls.
568
+ */
569
+ this.positioning = TRUE;
570
+ $.each(option, $.proxy(setCallback, this));
571
+ this.positioning = FALSE;
572
+
573
+ // Update position if needed
574
+ if(this.rendered && this.tooltip[0].offsetWidth > 0 && reposition) {
575
+ this.reposition( options.position.target === 'mouse' ? NULL : this.cache.event );
576
+ }
577
+
578
+ return this;
579
+ };
580
+
581
+ ;PROTOTYPE._update = function(content, element, reposition) {
582
+ var self = this,
583
+ cache = this.cache;
584
+
585
+ // Make sure tooltip is rendered and content is defined. If not return
586
+ if(!this.rendered || !content) { return FALSE; }
587
+
588
+ // Use function to parse content
589
+ if($.isFunction(content)) {
590
+ content = content.call(this.elements.target, cache.event, this) || '';
591
+ }
592
+
593
+ // Handle deferred content
594
+ if($.isFunction(content.then)) {
595
+ cache.waiting = TRUE;
596
+ return content.then(function(c) {
597
+ cache.waiting = FALSE;
598
+ return self._update(c, element);
599
+ }, NULL, function(e) {
600
+ return self._update(e, element);
601
+ });
602
+ }
603
+
604
+ // If content is null... return false
605
+ if(content === FALSE || (!content && content !== '')) { return FALSE; }
606
+
607
+ // Append new content if its a DOM array and show it if hidden
608
+ if(content.jquery && content.length > 0) {
609
+ element.empty().append(
610
+ content.css({ display: 'block', visibility: 'visible' })
611
+ );
612
+ }
613
+
614
+ // Content is a regular string, insert the new content
615
+ else { element.html(content); }
616
+
617
+ // Wait for content to be loaded, and reposition
618
+ return this._waitForContent(element).then(function(images) {
619
+ if(images.images && images.images.length && self.rendered && self.tooltip[0].offsetWidth > 0) {
620
+ self.reposition(cache.event, !images.length);
621
+ }
622
+ });
623
+ };
624
+
625
+ PROTOTYPE._waitForContent = function(element) {
626
+ var cache = this.cache;
627
+
628
+ // Set flag
629
+ cache.waiting = TRUE;
630
+
631
+ // If imagesLoaded is included, ensure images have loaded and return promise
632
+ return ( $.fn.imagesLoaded ? element.imagesLoaded() : $.Deferred().resolve([]) )
633
+ .done(function() { cache.waiting = FALSE; })
634
+ .promise();
635
+ };
636
+
637
+ PROTOTYPE._updateContent = function(content, reposition) {
638
+ this._update(content, this.elements.content, reposition);
639
+ };
640
+
641
+ PROTOTYPE._updateTitle = function(content, reposition) {
642
+ if(this._update(content, this.elements.title, reposition) === FALSE) {
643
+ this._removeTitle(FALSE);
644
+ }
645
+ };
646
+
647
+ PROTOTYPE._createTitle = function()
648
+ {
649
+ var elements = this.elements,
650
+ id = this._id+'-title';
651
+
652
+ // Destroy previous title element, if present
653
+ if(elements.titlebar) { this._removeTitle(); }
654
+
655
+ // Create title bar and title elements
656
+ elements.titlebar = $('<div />', {
657
+ 'class': NAMESPACE + '-titlebar ' + (this.options.style.widget ? createWidgetClass('header') : '')
658
+ })
659
+ .append(
660
+ elements.title = $('<div />', {
661
+ 'id': id,
662
+ 'class': NAMESPACE + '-title',
663
+ 'aria-atomic': TRUE
664
+ })
665
+ )
666
+ .insertBefore(elements.content)
667
+
668
+ // Button-specific events
669
+ .delegate('.qtip-close', 'mousedown keydown mouseup keyup mouseout', function(event) {
670
+ $(this).toggleClass('ui-state-active ui-state-focus', event.type.substr(-4) === 'down');
671
+ })
672
+ .delegate('.qtip-close', 'mouseover mouseout', function(event){
673
+ $(this).toggleClass('ui-state-hover', event.type === 'mouseover');
674
+ });
675
+
676
+ // Create button if enabled
677
+ if(this.options.content.button) { this._createButton(); }
678
+ };
679
+
680
+ PROTOTYPE._removeTitle = function(reposition)
681
+ {
682
+ var elements = this.elements;
683
+
684
+ if(elements.title) {
685
+ elements.titlebar.remove();
686
+ elements.titlebar = elements.title = elements.button = NULL;
687
+
688
+ // Reposition if enabled
689
+ if(reposition !== FALSE) { this.reposition(); }
690
+ }
691
+ };
692
+
693
+ ;PROTOTYPE.reposition = function(event, effect) {
694
+ if(!this.rendered || this.positioning || this.destroyed) { return this; }
695
+
696
+ // Set positioning flag
697
+ this.positioning = TRUE;
698
+
699
+ var cache = this.cache,
700
+ tooltip = this.tooltip,
701
+ posOptions = this.options.position,
702
+ target = posOptions.target,
703
+ my = posOptions.my,
704
+ at = posOptions.at,
705
+ viewport = posOptions.viewport,
706
+ container = posOptions.container,
707
+ adjust = posOptions.adjust,
708
+ method = adjust.method.split(' '),
709
+ tooltipWidth = tooltip.outerWidth(FALSE),
710
+ tooltipHeight = tooltip.outerHeight(FALSE),
711
+ targetWidth = 0,
712
+ targetHeight = 0,
713
+ type = tooltip.css('position'),
714
+ position = { left: 0, top: 0 },
715
+ visible = tooltip[0].offsetWidth > 0,
716
+ isScroll = event && event.type === 'scroll',
717
+ win = $(window),
718
+ doc = container[0].ownerDocument,
719
+ mouse = this.mouse,
720
+ pluginCalculations, offset;
721
+
722
+ // Check if absolute position was passed
723
+ if($.isArray(target) && target.length === 2) {
724
+ // Force left top and set position
725
+ at = { x: LEFT, y: TOP };
726
+ position = { left: target[0], top: target[1] };
727
+ }
728
+
729
+ // Check if mouse was the target
730
+ else if(target === 'mouse') {
731
+ // Force left top to allow flipping
732
+ at = { x: LEFT, y: TOP };
733
+
734
+ // Use the cached mouse coordinates if available, or passed event has no coordinates
735
+ if(mouse && mouse.pageX && (adjust.mouse || !event || !event.pageX) ) {
736
+ event = mouse;
737
+ }
738
+
739
+ // If the passed event has no coordinates (such as a scroll event)
740
+ else if(!event || !event.pageX) {
741
+ // Use the mouse origin that caused the show event, if distance hiding is enabled
742
+ if((!adjust.mouse || this.options.show.distance) && cache.origin && cache.origin.pageX) {
743
+ event = cache.origin;
744
+ }
745
+
746
+ // Use cached event for resize/scroll events
747
+ else if(!event || (event && (event.type === 'resize' || event.type === 'scroll'))) {
748
+ event = cache.event;
749
+ }
750
+ }
751
+
752
+ // Calculate body and container offset and take them into account below
753
+ if(type !== 'static') { position = container.offset(); }
754
+ if(doc.body.offsetWidth !== (window.innerWidth || doc.documentElement.clientWidth)) {
755
+ offset = $(document.body).offset();
756
+ }
757
+
758
+ // Use event coordinates for position
759
+ position = {
760
+ left: event.pageX - position.left + (offset && offset.left || 0),
761
+ top: event.pageY - position.top + (offset && offset.top || 0)
762
+ };
763
+
764
+ // Scroll events are a pain, some browsers
765
+ if(adjust.mouse && isScroll && mouse) {
766
+ position.left -= (mouse.scrollX || 0) - win.scrollLeft();
767
+ position.top -= (mouse.scrollY || 0) - win.scrollTop();
768
+ }
769
+ }
770
+
771
+ // Target wasn't mouse or absolute...
772
+ else {
773
+ // Check if event targetting is being used
774
+ if(target === 'event') {
775
+ if(event && event.target && event.type !== 'scroll' && event.type !== 'resize') {
776
+ cache.target = $(event.target);
777
+ }
778
+ else if(!event.target) {
779
+ cache.target = this.elements.target;
780
+ }
781
+ }
782
+ else if(target !== 'event'){
783
+ cache.target = $(target.jquery ? target : this.elements.target);
784
+ }
785
+ target = cache.target;
786
+
787
+ // Parse the target into a jQuery object and make sure there's an element present
788
+ target = $(target).eq(0);
789
+ if(target.length === 0) { return this; }
790
+
791
+ // Check if window or document is the target
792
+ else if(target[0] === document || target[0] === window) {
793
+ targetWidth = BROWSER.iOS ? window.innerWidth : target.width();
794
+ targetHeight = BROWSER.iOS ? window.innerHeight : target.height();
795
+
796
+ if(target[0] === window) {
797
+ position = {
798
+ top: (viewport || target).scrollTop(),
799
+ left: (viewport || target).scrollLeft()
800
+ };
801
+ }
802
+ }
803
+
804
+ // Check if the target is an <AREA> element
805
+ else if(PLUGINS.imagemap && target.is('area')) {
806
+ pluginCalculations = PLUGINS.imagemap(this, target, at, PLUGINS.viewport ? method : FALSE);
807
+ }
808
+
809
+ // Check if the target is an SVG element
810
+ else if(PLUGINS.svg && target && target[0].ownerSVGElement) {
811
+ pluginCalculations = PLUGINS.svg(this, target, at, PLUGINS.viewport ? method : FALSE);
812
+ }
813
+
814
+ // Otherwise use regular jQuery methods
815
+ else {
816
+ targetWidth = target.outerWidth(FALSE);
817
+ targetHeight = target.outerHeight(FALSE);
818
+ position = target.offset();
819
+ }
820
+
821
+ // Parse returned plugin values into proper variables
822
+ if(pluginCalculations) {
823
+ targetWidth = pluginCalculations.width;
824
+ targetHeight = pluginCalculations.height;
825
+ offset = pluginCalculations.offset;
826
+ position = pluginCalculations.position;
827
+ }
828
+
829
+ // Adjust position to take into account offset parents
830
+ position = this.reposition.offset(target, position, container);
831
+
832
+ // Adjust for position.fixed tooltips (and also iOS scroll bug in v3.2-4.0 & v4.3-4.3.2)
833
+ if((BROWSER.iOS > 3.1 && BROWSER.iOS < 4.1) ||
834
+ (BROWSER.iOS >= 4.3 && BROWSER.iOS < 4.33) ||
835
+ (!BROWSER.iOS && type === 'fixed')
836
+ ){
837
+ position.left -= win.scrollLeft();
838
+ position.top -= win.scrollTop();
839
+ }
840
+
841
+ // Adjust position relative to target
842
+ if(!pluginCalculations || (pluginCalculations && pluginCalculations.adjustable !== FALSE)) {
843
+ position.left += at.x === RIGHT ? targetWidth : at.x === CENTER ? targetWidth / 2 : 0;
844
+ position.top += at.y === BOTTOM ? targetHeight : at.y === CENTER ? targetHeight / 2 : 0;
845
+ }
846
+ }
847
+
848
+ // Adjust position relative to tooltip
849
+ position.left += adjust.x + (my.x === RIGHT ? -tooltipWidth : my.x === CENTER ? -tooltipWidth / 2 : 0);
850
+ position.top += adjust.y + (my.y === BOTTOM ? -tooltipHeight : my.y === CENTER ? -tooltipHeight / 2 : 0);
851
+
852
+ // Use viewport adjustment plugin if enabled
853
+ if(PLUGINS.viewport) {
854
+ position.adjusted = PLUGINS.viewport(
855
+ this, position, posOptions, targetWidth, targetHeight, tooltipWidth, tooltipHeight
856
+ );
857
+
858
+ // Apply offsets supplied by positioning plugin (if used)
859
+ if(offset && position.adjusted.left) { position.left += offset.left; }
860
+ if(offset && position.adjusted.top) { position.top += offset.top; }
861
+ }
862
+
863
+ // Viewport adjustment is disabled, set values to zero
864
+ else { position.adjusted = { left: 0, top: 0 }; }
865
+
866
+ // tooltipmove event
867
+ if(!this._trigger('move', [position, viewport.elem || viewport], event)) { return this; }
868
+ delete position.adjusted;
869
+
870
+ // If effect is disabled, target it mouse, no animation is defined or positioning gives NaN out, set CSS directly
871
+ if(effect === FALSE || !visible || isNaN(position.left) || isNaN(position.top) || target === 'mouse' || !$.isFunction(posOptions.effect)) {
872
+ tooltip.css(position);
873
+ }
874
+
875
+ // Use custom function if provided
876
+ else if($.isFunction(posOptions.effect)) {
877
+ posOptions.effect.call(tooltip, this, $.extend({}, position));
878
+ tooltip.queue(function(next) {
879
+ // Reset attributes to avoid cross-browser rendering bugs
880
+ $(this).css({ opacity: '', height: '' });
881
+ if(BROWSER.ie) { this.style.removeAttribute('filter'); }
882
+
883
+ next();
884
+ });
885
+ }
886
+
887
+ // Set positioning flag
888
+ this.positioning = FALSE;
889
+
890
+ return this;
891
+ };
892
+
893
+ // Custom (more correct for qTip!) offset calculator
894
+ PROTOTYPE.reposition.offset = function(elem, pos, container) {
895
+ if(!container[0]) { return pos; }
896
+
897
+ var ownerDocument = $(elem[0].ownerDocument),
898
+ quirks = !!BROWSER.ie && document.compatMode !== 'CSS1Compat',
899
+ parent = container[0],
900
+ scrolled, position, parentOffset, overflow;
901
+
902
+ function scroll(e, i) {
903
+ pos.left += i * e.scrollLeft();
904
+ pos.top += i * e.scrollTop();
905
+ }
906
+
907
+ // Compensate for non-static containers offset
908
+ do {
909
+ if((position = $.css(parent, 'position')) !== 'static') {
910
+ if(position === 'fixed') {
911
+ parentOffset = parent.getBoundingClientRect();
912
+ scroll(ownerDocument, -1);
913
+ }
914
+ else {
915
+ parentOffset = $(parent).position();
916
+ parentOffset.left += (parseFloat($.css(parent, 'borderLeftWidth')) || 0);
917
+ parentOffset.top += (parseFloat($.css(parent, 'borderTopWidth')) || 0);
918
+ }
919
+
920
+ pos.left -= parentOffset.left + (parseFloat($.css(parent, 'marginLeft')) || 0);
921
+ pos.top -= parentOffset.top + (parseFloat($.css(parent, 'marginTop')) || 0);
922
+
923
+ // If this is the first parent element with an overflow of "scroll" or "auto", store it
924
+ if(!scrolled && (overflow = $.css(parent, 'overflow')) !== 'hidden' && overflow !== 'visible') { scrolled = $(parent); }
925
+ }
926
+ }
927
+ while((parent = parent.offsetParent));
928
+
929
+ // Compensate for containers scroll if it also has an offsetParent (or in IE quirks mode)
930
+ if(scrolled && (scrolled[0] !== ownerDocument[0] || quirks)) {
931
+ scroll(scrolled, 1);
932
+ }
933
+
934
+ return pos;
935
+ };
936
+
937
+ // Corner class
938
+ var C = (CORNER = PROTOTYPE.reposition.Corner = function(corner, forceY) {
939
+ corner = ('' + corner).replace(/([A-Z])/, ' $1').replace(/middle/gi, CENTER).toLowerCase();
940
+ this.x = (corner.match(/left|right/i) || corner.match(/center/) || ['inherit'])[0].toLowerCase();
941
+ this.y = (corner.match(/top|bottom|center/i) || ['inherit'])[0].toLowerCase();
942
+ this.forceY = !!forceY;
943
+
944
+ var f = corner.charAt(0);
945
+ this.precedance = (f === 't' || f === 'b' ? Y : X);
946
+ }).prototype;
947
+
948
+ C.invert = function(z, center) {
949
+ this[z] = this[z] === LEFT ? RIGHT : this[z] === RIGHT ? LEFT : center || this[z];
950
+ };
951
+
952
+ C.string = function() {
953
+ var x = this.x, y = this.y;
954
+ return x === y ? x : this.precedance === Y || (this.forceY && y !== 'center') ? y+' '+x : x+' '+y;
955
+ };
956
+
957
+ C.abbrev = function() {
958
+ var result = this.string().split(' ');
959
+ return result[0].charAt(0) + (result[1] && result[1].charAt(0) || '');
960
+ };
961
+
962
+ C.clone = function() {
963
+ return new CORNER( this.string(), this.forceY );
964
+ };;
965
+ PROTOTYPE.toggle = function(state, event) {
966
+ var cache = this.cache,
967
+ options = this.options,
968
+ tooltip = this.tooltip;
969
+
970
+ // Try to prevent flickering when tooltip overlaps show element
971
+ if(event) {
972
+ if((/over|enter/).test(event.type) && (/out|leave/).test(cache.event.type) &&
973
+ options.show.target.add(event.target).length === options.show.target.length &&
974
+ tooltip.has(event.relatedTarget).length) {
975
+ return this;
976
+ }
977
+
978
+ // Cache event
979
+ cache.event = cloneEvent(event);
980
+ }
981
+
982
+ // If we're currently waiting and we've just hidden... stop it
983
+ this.waiting && !state && (this.hiddenDuringWait = TRUE);
984
+
985
+ // Render the tooltip if showing and it isn't already
986
+ if(!this.rendered) { return state ? this.render(1) : this; }
987
+ else if(this.destroyed || this.disabled) { return this; }
988
+
989
+ var type = state ? 'show' : 'hide',
990
+ opts = this.options[type],
991
+ otherOpts = this.options[ !state ? 'show' : 'hide' ],
992
+ posOptions = this.options.position,
993
+ contentOptions = this.options.content,
994
+ width = this.tooltip.css('width'),
995
+ visible = this.tooltip.is(':visible'),
996
+ animate = state || opts.target.length === 1,
997
+ sameTarget = !event || opts.target.length < 2 || cache.target[0] === event.target,
998
+ identicalState, allow, showEvent, delay, after;
999
+
1000
+ // Detect state if valid one isn't provided
1001
+ if((typeof state).search('boolean|number')) { state = !visible; }
1002
+
1003
+ // Check if the tooltip is in an identical state to the new would-be state
1004
+ identicalState = !tooltip.is(':animated') && visible === state && sameTarget;
1005
+
1006
+ // Fire tooltip(show/hide) event and check if destroyed
1007
+ allow = !identicalState ? !!this._trigger(type, [90]) : NULL;
1008
+
1009
+ // Check to make sure the tooltip wasn't destroyed in the callback
1010
+ if(this.destroyed) { return this; }
1011
+
1012
+ // If the user didn't stop the method prematurely and we're showing the tooltip, focus it
1013
+ if(allow !== FALSE && state) { this.focus(event); }
1014
+
1015
+ // If the state hasn't changed or the user stopped it, return early
1016
+ if(!allow || identicalState) { return this; }
1017
+
1018
+ // Set ARIA hidden attribute
1019
+ $.attr(tooltip[0], 'aria-hidden', !!!state);
1020
+
1021
+ // Execute state specific properties
1022
+ if(state) {
1023
+ // Store show origin coordinates
1024
+ cache.origin = cloneEvent(this.mouse);
1025
+
1026
+ // Update tooltip content & title if it's a dynamic function
1027
+ if($.isFunction(contentOptions.text)) { this._updateContent(contentOptions.text, FALSE); }
1028
+ if($.isFunction(contentOptions.title)) { this._updateTitle(contentOptions.title, FALSE); }
1029
+
1030
+ // Cache mousemove events for positioning purposes (if not already tracking)
1031
+ if(!trackingBound && posOptions.target === 'mouse' && posOptions.adjust.mouse) {
1032
+ $(document).bind('mousemove.'+NAMESPACE, this._storeMouse);
1033
+ trackingBound = TRUE;
1034
+ }
1035
+
1036
+ // Update the tooltip position (set width first to prevent viewport/max-width issues)
1037
+ if(!width) { tooltip.css('width', tooltip.outerWidth(FALSE)); }
1038
+ this.reposition(event, arguments[2]);
1039
+ if(!width) { tooltip.css('width', ''); }
1040
+
1041
+ // Hide other tooltips if tooltip is solo
1042
+ if(!!opts.solo) {
1043
+ (typeof opts.solo === 'string' ? $(opts.solo) : $(SELECTOR, opts.solo))
1044
+ .not(tooltip).not(opts.target).qtip('hide', $.Event('tooltipsolo'));
1045
+ }
1046
+ }
1047
+ else {
1048
+ // Clear show timer if we're hiding
1049
+ clearTimeout(this.timers.show);
1050
+
1051
+ // Remove cached origin on hide
1052
+ delete cache.origin;
1053
+
1054
+ // Remove mouse tracking event if not needed (all tracking qTips are hidden)
1055
+ if(trackingBound && !$(SELECTOR+'[tracking="true"]:visible', opts.solo).not(tooltip).length) {
1056
+ $(document).unbind('mousemove.'+NAMESPACE);
1057
+ trackingBound = FALSE;
1058
+ }
1059
+
1060
+ // Blur the tooltip
1061
+ this.blur(event);
1062
+ }
1063
+
1064
+ // Define post-animation, state specific properties
1065
+ after = $.proxy(function() {
1066
+ if(state) {
1067
+ // Prevent antialias from disappearing in IE by removing filter
1068
+ if(BROWSER.ie) { tooltip[0].style.removeAttribute('filter'); }
1069
+
1070
+ // Remove overflow setting to prevent tip bugs
1071
+ tooltip.css('overflow', '');
1072
+
1073
+ // Autofocus elements if enabled
1074
+ if('string' === typeof opts.autofocus) {
1075
+ $(this.options.show.autofocus, tooltip).focus();
1076
+ }
1077
+
1078
+ // If set, hide tooltip when inactive for delay period
1079
+ this.options.show.target.trigger('qtip-'+this.id+'-inactive');
1080
+ }
1081
+ else {
1082
+ // Reset CSS states
1083
+ tooltip.css({
1084
+ display: '',
1085
+ visibility: '',
1086
+ opacity: '',
1087
+ left: '',
1088
+ top: ''
1089
+ });
1090
+ }
1091
+
1092
+ // tooltipvisible/tooltiphidden events
1093
+ this._trigger(state ? 'visible' : 'hidden');
1094
+ }, this);
1095
+
1096
+ // If no effect type is supplied, use a simple toggle
1097
+ if(opts.effect === FALSE || animate === FALSE) {
1098
+ tooltip[ type ]();
1099
+ after();
1100
+ }
1101
+
1102
+ // Use custom function if provided
1103
+ else if($.isFunction(opts.effect)) {
1104
+ tooltip.stop(1, 1);
1105
+ opts.effect.call(tooltip, this);
1106
+ tooltip.queue('fx', function(n) {
1107
+ after(); n();
1108
+ });
1109
+ }
1110
+
1111
+ // Use basic fade function by default
1112
+ else { tooltip.fadeTo(90, state ? 1 : 0, after); }
1113
+
1114
+ // If inactive hide method is set, active it
1115
+ if(state) { opts.target.trigger('qtip-'+this.id+'-inactive'); }
1116
+
1117
+ return this;
1118
+ };
1119
+
1120
+ PROTOTYPE.show = function(event) { return this.toggle(TRUE, event); };
1121
+
1122
+ PROTOTYPE.hide = function(event) { return this.toggle(FALSE, event); };
1123
+
1124
+ ;PROTOTYPE.focus = function(event) {
1125
+ if(!this.rendered || this.destroyed) { return this; }
1126
+
1127
+ var qtips = $(SELECTOR),
1128
+ tooltip = this.tooltip,
1129
+ curIndex = parseInt(tooltip[0].style.zIndex, 10),
1130
+ newIndex = QTIP.zindex + qtips.length,
1131
+ focusedElem;
1132
+
1133
+ // Only update the z-index if it has changed and tooltip is not already focused
1134
+ if(!tooltip.hasClass(CLASS_FOCUS)) {
1135
+ // tooltipfocus event
1136
+ if(this._trigger('focus', [newIndex], event)) {
1137
+ // Only update z-index's if they've changed
1138
+ if(curIndex !== newIndex) {
1139
+ // Reduce our z-index's and keep them properly ordered
1140
+ qtips.each(function() {
1141
+ if(this.style.zIndex > curIndex) {
1142
+ this.style.zIndex = this.style.zIndex - 1;
1143
+ }
1144
+ });
1145
+
1146
+ // Fire blur event for focused tooltip
1147
+ qtips.filter('.' + CLASS_FOCUS).qtip('blur', event);
1148
+ }
1149
+
1150
+ // Set the new z-index
1151
+ tooltip.addClass(CLASS_FOCUS)[0].style.zIndex = newIndex;
1152
+ }
1153
+ }
1154
+
1155
+ return this;
1156
+ };
1157
+
1158
+ PROTOTYPE.blur = function(event) {
1159
+ if(!this.rendered || this.destroyed) { return this; }
1160
+
1161
+ // Set focused status to FALSE
1162
+ this.tooltip.removeClass(CLASS_FOCUS);
1163
+
1164
+ // tooltipblur event
1165
+ this._trigger('blur', [ this.tooltip.css('zIndex') ], event);
1166
+
1167
+ return this;
1168
+ };
1169
+
1170
+ ;PROTOTYPE.disable = function(state) {
1171
+ if(this.destroyed) { return this; }
1172
+
1173
+ // If 'toggle' is passed, toggle the current state
1174
+ if(state === 'toggle') {
1175
+ state = !(this.rendered ? this.tooltip.hasClass(CLASS_DISABLED) : this.disabled);
1176
+ }
1177
+
1178
+ // Disable if no state passed
1179
+ else if('boolean' !== typeof state) {
1180
+ state = TRUE;
1181
+ }
1182
+
1183
+ if(this.rendered) {
1184
+ this.tooltip.toggleClass(CLASS_DISABLED, state)
1185
+ .attr('aria-disabled', state);
1186
+ }
1187
+
1188
+ this.disabled = !!state;
1189
+
1190
+ return this;
1191
+ };
1192
+
1193
+ PROTOTYPE.enable = function() { return this.disable(FALSE); };
1194
+
1195
+ ;PROTOTYPE._createButton = function()
1196
+ {
1197
+ var self = this,
1198
+ elements = this.elements,
1199
+ tooltip = elements.tooltip,
1200
+ button = this.options.content.button,
1201
+ isString = typeof button === 'string',
1202
+ close = isString ? button : 'Close tooltip';
1203
+
1204
+ if(elements.button) { elements.button.remove(); }
1205
+
1206
+ // Use custom button if one was supplied by user, else use default
1207
+ if(button.jquery) {
1208
+ elements.button = button;
1209
+ }
1210
+ else {
1211
+ elements.button = $('<a />', {
1212
+ 'class': 'qtip-close ' + (this.options.style.widget ? '' : NAMESPACE+'-icon'),
1213
+ 'title': close,
1214
+ 'aria-label': close
1215
+ })
1216
+ .prepend(
1217
+ $('<span />', {
1218
+ 'class': 'ui-icon ui-icon-close',
1219
+ 'html': '&times;'
1220
+ })
1221
+ );
1222
+ }
1223
+
1224
+ // Create button and setup attributes
1225
+ elements.button.appendTo(elements.titlebar || tooltip)
1226
+ .attr('role', 'button')
1227
+ .click(function(event) {
1228
+ if(!tooltip.hasClass(CLASS_DISABLED)) { self.hide(event); }
1229
+ return FALSE;
1230
+ });
1231
+ };
1232
+
1233
+ PROTOTYPE._updateButton = function(button)
1234
+ {
1235
+ // Make sure tooltip is rendered and if not, return
1236
+ if(!this.rendered) { return FALSE; }
1237
+
1238
+ var elem = this.elements.button;
1239
+ if(button) { this._createButton(); }
1240
+ else { elem.remove(); }
1241
+ };
1242
+
1243
+ ;// Widget class creator
1244
+ function createWidgetClass(cls) {
1245
+ return WIDGET.concat('').join(cls ? '-'+cls+' ' : ' ');
1246
+ }
1247
+
1248
+ // Widget class setter method
1249
+ PROTOTYPE._setWidget = function()
1250
+ {
1251
+ var on = this.options.style.widget,
1252
+ elements = this.elements,
1253
+ tooltip = elements.tooltip,
1254
+ disabled = tooltip.hasClass(CLASS_DISABLED);
1255
+
1256
+ tooltip.removeClass(CLASS_DISABLED);
1257
+ CLASS_DISABLED = on ? 'ui-state-disabled' : 'qtip-disabled';
1258
+ tooltip.toggleClass(CLASS_DISABLED, disabled);
1259
+
1260
+ tooltip.toggleClass('ui-helper-reset '+createWidgetClass(), on).toggleClass(CLASS_DEFAULT, this.options.style.def && !on);
1261
+
1262
+ if(elements.content) {
1263
+ elements.content.toggleClass( createWidgetClass('content'), on);
1264
+ }
1265
+ if(elements.titlebar) {
1266
+ elements.titlebar.toggleClass( createWidgetClass('header'), on);
1267
+ }
1268
+ if(elements.button) {
1269
+ elements.button.toggleClass(NAMESPACE+'-icon', !on);
1270
+ }
1271
+ };;function cloneEvent(event) {
1272
+ return event && {
1273
+ type: event.type,
1274
+ pageX: event.pageX,
1275
+ pageY: event.pageY,
1276
+ target: event.target,
1277
+ relatedTarget: event.relatedTarget,
1278
+ scrollX: event.scrollX || window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft,
1279
+ scrollY: event.scrollY || window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop
1280
+ } || {};
1281
+ }
1282
+
1283
+ function delay(callback, duration) {
1284
+ // If tooltip has displayed, start hide timer
1285
+ if(duration > 0) {
1286
+ return setTimeout(
1287
+ $.proxy(callback, this), duration
1288
+ );
1289
+ }
1290
+ else{ callback.call(this); }
1291
+ }
1292
+
1293
+ function showMethod(event) {
1294
+ if(this.tooltip.hasClass(CLASS_DISABLED)) { return FALSE; }
1295
+
1296
+ // Clear hide timers
1297
+ clearTimeout(this.timers.show);
1298
+ clearTimeout(this.timers.hide);
1299
+
1300
+ // Start show timer
1301
+ this.timers.show = delay.call(this,
1302
+ function() { this.toggle(TRUE, event); },
1303
+ this.options.show.delay
1304
+ );
1305
+ }
1306
+
1307
+ function hideMethod(event) {
1308
+ if(this.tooltip.hasClass(CLASS_DISABLED)) { return FALSE; }
1309
+
1310
+ // Check if new target was actually the tooltip element
1311
+ var relatedTarget = $(event.relatedTarget),
1312
+ ontoTooltip = relatedTarget.closest(SELECTOR)[0] === this.tooltip[0],
1313
+ ontoTarget = relatedTarget[0] === this.options.show.target[0];
1314
+
1315
+ // Clear timers and stop animation queue
1316
+ clearTimeout(this.timers.show);
1317
+ clearTimeout(this.timers.hide);
1318
+
1319
+ // Prevent hiding if tooltip is fixed and event target is the tooltip.
1320
+ // Or if mouse positioning is enabled and cursor momentarily overlaps
1321
+ if(this !== relatedTarget[0] &&
1322
+ (this.options.position.target === 'mouse' && ontoTooltip) ||
1323
+ (this.options.hide.fixed && (
1324
+ (/mouse(out|leave|move)/).test(event.type) && (ontoTooltip || ontoTarget))
1325
+ ))
1326
+ {
1327
+ try {
1328
+ event.preventDefault();
1329
+ event.stopImmediatePropagation();
1330
+ } catch(e) {}
1331
+
1332
+ return;
1333
+ }
1334
+
1335
+ // If tooltip has displayed, start hide timer
1336
+ this.timers.hide = delay.call(this,
1337
+ function() { this.toggle(FALSE, event); },
1338
+ this.options.hide.delay,
1339
+ this
1340
+ );
1341
+ }
1342
+
1343
+ function inactiveMethod(event) {
1344
+ if(this.tooltip.hasClass(CLASS_DISABLED) || !this.options.hide.inactive) { return FALSE; }
1345
+
1346
+ // Clear timer
1347
+ clearTimeout(this.timers.inactive);
1348
+
1349
+ this.timers.inactive = delay.call(this,
1350
+ function(){ this.hide(event); },
1351
+ this.options.hide.inactive
1352
+ );
1353
+ }
1354
+
1355
+ function repositionMethod(event) {
1356
+ if(this.rendered && this.tooltip[0].offsetWidth > 0) { this.reposition(event); }
1357
+ }
1358
+
1359
+ // Store mouse coordinates
1360
+ PROTOTYPE._storeMouse = function(event) {
1361
+ (this.mouse = cloneEvent(event)).type = 'mousemove';
1362
+ };
1363
+
1364
+ // Bind events
1365
+ PROTOTYPE._bind = function(targets, events, method, suffix, context) {
1366
+ var ns = '.' + this._id + (suffix ? '-'+suffix : '');
1367
+ events.length && $(targets).bind(
1368
+ (events.split ? events : events.join(ns + ' ')) + ns,
1369
+ $.proxy(method, context || this)
1370
+ );
1371
+ };
1372
+ PROTOTYPE._unbind = function(targets, suffix) {
1373
+ $(targets).unbind('.' + this._id + (suffix ? '-'+suffix : ''));
1374
+ };
1375
+
1376
+ // Apply common event handlers using delegate (avoids excessive .bind calls!)
1377
+ var ns = '.'+NAMESPACE;
1378
+ function delegate(selector, events, method) {
1379
+ $(document.body).delegate(selector,
1380
+ (events.split ? events : events.join(ns + ' ')) + ns,
1381
+ function() {
1382
+ var api = QTIP.api[ $.attr(this, ATTR_ID) ];
1383
+ api && !api.disabled && method.apply(api, arguments);
1384
+ }
1385
+ );
1386
+ }
1387
+
1388
+ $(function() {
1389
+ delegate(SELECTOR, ['mouseenter', 'mouseleave'], function(event) {
1390
+ var state = event.type === 'mouseenter',
1391
+ tooltip = $(event.currentTarget),
1392
+ target = $(event.relatedTarget || event.target),
1393
+ options = this.options;
1394
+
1395
+ // On mouseenter...
1396
+ if(state) {
1397
+ // Focus the tooltip on mouseenter (z-index stacking)
1398
+ this.focus(event);
1399
+
1400
+ // Clear hide timer on tooltip hover to prevent it from closing
1401
+ tooltip.hasClass(CLASS_FIXED) && !tooltip.hasClass(CLASS_DISABLED) && clearTimeout(this.timers.hide);
1402
+ }
1403
+
1404
+ // On mouseleave...
1405
+ else {
1406
+ // Hide when we leave the tooltip and not onto the show target (if a hide event is set)
1407
+ if(options.position.target === 'mouse' && options.hide.event &&
1408
+ options.show.target && !target.closest(options.show.target[0]).length) {
1409
+ this.hide(event);
1410
+ }
1411
+ }
1412
+
1413
+ // Add hover class
1414
+ tooltip.toggleClass(CLASS_HOVER, state);
1415
+ });
1416
+
1417
+ // Define events which reset the 'inactive' event handler
1418
+ delegate('['+ATTR_ID+']', INACTIVE_EVENTS, inactiveMethod);
1419
+ });
1420
+
1421
+ // Event trigger
1422
+ PROTOTYPE._trigger = function(type, args, event) {
1423
+ var callback = $.Event('tooltip'+type);
1424
+ callback.originalEvent = (event && $.extend({}, event)) || this.cache.event || NULL;
1425
+
1426
+ this.triggering = type;
1427
+ this.tooltip.trigger(callback, [this].concat(args || []));
1428
+ this.triggering = FALSE;
1429
+
1430
+ return !callback.isDefaultPrevented();
1431
+ };
1432
+
1433
+ PROTOTYPE._bindEvents = function(showEvents, hideEvents, showTarget, hideTarget, showMethod, hideMethod) {
1434
+ // If hide and show targets are the same...
1435
+ if(hideTarget.add(showTarget).length === hideTarget.length) {
1436
+ var toggleEvents = [];
1437
+
1438
+ // Filter identical show/hide events
1439
+ hideEvents = $.map(hideEvents, function(type) {
1440
+ var showIndex = $.inArray(type, showEvents);
1441
+
1442
+ // Both events are identical, remove from both hide and show events
1443
+ // and append to toggleEvents
1444
+ if(showIndex > -1) {
1445
+ toggleEvents.push( showEvents.splice( showIndex, 1 )[0] );
1446
+ return;
1447
+ }
1448
+
1449
+ return type;
1450
+ });
1451
+
1452
+ // Toggle events are special case of identical show/hide events, which happen in sequence
1453
+ toggleEvents.length && this._bind(showTarget, toggleEvents, function(event) {
1454
+ var state = this.rendered ? this.tooltip[0].offsetWidth > 0 : false;
1455
+ (state ? hideMethod : showMethod).call(this, event);
1456
+ });
1457
+ }
1458
+
1459
+ // Apply show/hide/toggle events
1460
+ this._bind(showTarget, showEvents, showMethod);
1461
+ this._bind(hideTarget, hideEvents, hideMethod);
1462
+ };
1463
+
1464
+ PROTOTYPE._assignInitialEvents = function(event) {
1465
+ var options = this.options,
1466
+ showTarget = options.show.target,
1467
+ hideTarget = options.hide.target,
1468
+ showEvents = options.show.event ? $.trim('' + options.show.event).split(' ') : [],
1469
+ hideEvents = options.hide.event ? $.trim('' + options.hide.event).split(' ') : [];
1470
+
1471
+ /*
1472
+ * Make sure hoverIntent functions properly by using mouseleave as a hide event if
1473
+ * mouseenter/mouseout is used for show.event, even if it isn't in the users options.
1474
+ */
1475
+ if(/mouse(over|enter)/i.test(options.show.event) && !/mouse(out|leave)/i.test(options.hide.event)) {
1476
+ hideEvents.push('mouseleave');
1477
+ }
1478
+
1479
+ /*
1480
+ * Also make sure initial mouse targetting works correctly by caching mousemove coords
1481
+ * on show targets before the tooltip has rendered. Also set onTarget when triggered to
1482
+ * keep mouse tracking working.
1483
+ */
1484
+ this._bind(showTarget, 'mousemove', function(event) {
1485
+ this._storeMouse(event);
1486
+ this.cache.onTarget = TRUE;
1487
+ });
1488
+
1489
+ // Define hoverIntent function
1490
+ function hoverIntent(event) {
1491
+ // Only continue if tooltip isn't disabled
1492
+ if(this.disabled || this.destroyed) { return FALSE; }
1493
+
1494
+ // Cache the event data
1495
+ this.cache.event = cloneEvent(event);
1496
+ this.cache.target = event ? $(event.target) : [undefined];
1497
+
1498
+ // Start the event sequence
1499
+ clearTimeout(this.timers.show);
1500
+ this.timers.show = delay.call(this,
1501
+ function() { this.render(typeof event === 'object' || options.show.ready); },
1502
+ options.show.delay
1503
+ );
1504
+ }
1505
+
1506
+ // Filter and bind events
1507
+ this._bindEvents(showEvents, hideEvents, showTarget, hideTarget, hoverIntent, function() {
1508
+ clearTimeout(this.timers.show);
1509
+ });
1510
+
1511
+ // Prerendering is enabled, create tooltip now
1512
+ if(options.show.ready || options.prerender) { hoverIntent.call(this, event); }
1513
+ };
1514
+
1515
+ // Event assignment method
1516
+ PROTOTYPE._assignEvents = function() {
1517
+ var self = this,
1518
+ options = this.options,
1519
+ posOptions = options.position,
1520
+
1521
+ tooltip = this.tooltip,
1522
+ showTarget = options.show.target,
1523
+ hideTarget = options.hide.target,
1524
+ containerTarget = posOptions.container,
1525
+ viewportTarget = posOptions.viewport,
1526
+ documentTarget = $(document),
1527
+ bodyTarget = $(document.body),
1528
+ windowTarget = $(window),
1529
+
1530
+ showEvents = options.show.event ? $.trim('' + options.show.event).split(' ') : [],
1531
+ hideEvents = options.hide.event ? $.trim('' + options.hide.event).split(' ') : [];
1532
+
1533
+
1534
+ // Assign passed event callbacks
1535
+ $.each(options.events, function(name, callback) {
1536
+ self._bind(tooltip, name === 'toggle' ? ['tooltipshow','tooltiphide'] : ['tooltip'+name], callback, null, tooltip);
1537
+ });
1538
+
1539
+ // Hide tooltips when leaving current window/frame (but not select/option elements)
1540
+ if(/mouse(out|leave)/i.test(options.hide.event) && options.hide.leave === 'window') {
1541
+ this._bind(documentTarget, ['mouseout', 'blur'], function(event) {
1542
+ if(!/select|option/.test(event.target.nodeName) && !event.relatedTarget) {
1543
+ this.hide(event);
1544
+ }
1545
+ });
1546
+ }
1547
+
1548
+ // Enable hide.fixed by adding appropriate class
1549
+ if(options.hide.fixed) {
1550
+ hideTarget = hideTarget.add( tooltip.addClass(CLASS_FIXED) );
1551
+ }
1552
+
1553
+ /*
1554
+ * Make sure hoverIntent functions properly by using mouseleave to clear show timer if
1555
+ * mouseenter/mouseout is used for show.event, even if it isn't in the users options.
1556
+ */
1557
+ else if(/mouse(over|enter)/i.test(options.show.event)) {
1558
+ this._bind(hideTarget, 'mouseleave', function() {
1559
+ clearTimeout(this.timers.show);
1560
+ });
1561
+ }
1562
+
1563
+ // Hide tooltip on document mousedown if unfocus events are enabled
1564
+ if(('' + options.hide.event).indexOf('unfocus') > -1) {
1565
+ this._bind(containerTarget.closest('html'), ['mousedown', 'touchstart'], function(event) {
1566
+ var elem = $(event.target),
1567
+ enabled = this.rendered && !this.tooltip.hasClass(CLASS_DISABLED) && this.tooltip[0].offsetWidth > 0,
1568
+ isAncestor = elem.parents(SELECTOR).filter(this.tooltip[0]).length > 0;
1569
+
1570
+ if(elem[0] !== this.target[0] && elem[0] !== this.tooltip[0] && !isAncestor &&
1571
+ !this.target.has(elem[0]).length && enabled
1572
+ ) {
1573
+ this.hide(event);
1574
+ }
1575
+ });
1576
+ }
1577
+
1578
+ // Check if the tooltip hides when inactive
1579
+ if('number' === typeof options.hide.inactive) {
1580
+ // Bind inactive method to show target(s) as a custom event
1581
+ this._bind(showTarget, 'qtip-'+this.id+'-inactive', inactiveMethod);
1582
+
1583
+ // Define events which reset the 'inactive' event handler
1584
+ this._bind(hideTarget.add(tooltip), QTIP.inactiveEvents, inactiveMethod, '-inactive');
1585
+ }
1586
+
1587
+ // Filter and bind events
1588
+ this._bindEvents(showEvents, hideEvents, showTarget, hideTarget, showMethod, hideMethod);
1589
+
1590
+ // Mouse movement bindings
1591
+ this._bind(showTarget.add(tooltip), 'mousemove', function(event) {
1592
+ // Check if the tooltip hides when mouse is moved a certain distance
1593
+ if('number' === typeof options.hide.distance) {
1594
+ var origin = this.cache.origin || {},
1595
+ limit = this.options.hide.distance,
1596
+ abs = Math.abs;
1597
+
1598
+ // Check if the movement has gone beyond the limit, and hide it if so
1599
+ if(abs(event.pageX - origin.pageX) >= limit || abs(event.pageY - origin.pageY) >= limit) {
1600
+ this.hide(event);
1601
+ }
1602
+ }
1603
+
1604
+ // Cache mousemove coords on show targets
1605
+ this._storeMouse(event);
1606
+ });
1607
+
1608
+ // Mouse positioning events
1609
+ if(posOptions.target === 'mouse') {
1610
+ // If mouse adjustment is on...
1611
+ if(posOptions.adjust.mouse) {
1612
+ // Apply a mouseleave event so we don't get problems with overlapping
1613
+ if(options.hide.event) {
1614
+ // Track if we're on the target or not
1615
+ this._bind(showTarget, ['mouseenter', 'mouseleave'], function(event) {
1616
+ this.cache.onTarget = event.type === 'mouseenter';
1617
+ });
1618
+ }
1619
+
1620
+ // Update tooltip position on mousemove
1621
+ this._bind(documentTarget, 'mousemove', function(event) {
1622
+ // Update the tooltip position only if the tooltip is visible and adjustment is enabled
1623
+ if(this.rendered && this.cache.onTarget && !this.tooltip.hasClass(CLASS_DISABLED) && this.tooltip[0].offsetWidth > 0) {
1624
+ this.reposition(event);
1625
+ }
1626
+ });
1627
+ }
1628
+ }
1629
+
1630
+ // Adjust positions of the tooltip on window resize if enabled
1631
+ if(posOptions.adjust.resize || viewportTarget.length) {
1632
+ this._bind( $.event.special.resize ? viewportTarget : windowTarget, 'resize', repositionMethod );
1633
+ }
1634
+
1635
+ // Adjust tooltip position on scroll of the window or viewport element if present
1636
+ if(posOptions.adjust.scroll) {
1637
+ this._bind( windowTarget.add(posOptions.container), 'scroll', repositionMethod );
1638
+ }
1639
+ };
1640
+
1641
+ // Un-assignment method
1642
+ PROTOTYPE._unassignEvents = function() {
1643
+ var targets = [
1644
+ this.options.show.target[0],
1645
+ this.options.hide.target[0],
1646
+ this.rendered && this.tooltip[0],
1647
+ this.options.position.container[0],
1648
+ this.options.position.viewport[0],
1649
+ this.options.position.container.closest('html')[0], // unfocus
1650
+ window,
1651
+ document
1652
+ ];
1653
+
1654
+ this._unbind($([]).pushStack( $.grep(targets, function(i) {
1655
+ return typeof i === 'object';
1656
+ })));
1657
+ };
1658
+
1659
+ ;// Initialization method
1660
+ function init(elem, id, opts) {
1661
+ var obj, posOptions, attr, config, title,
1662
+
1663
+ // Setup element references
1664
+ docBody = $(document.body),
1665
+
1666
+ // Use document body instead of document element if needed
1667
+ newTarget = elem[0] === document ? docBody : elem,
1668
+
1669
+ // Grab metadata from element if plugin is present
1670
+ metadata = (elem.metadata) ? elem.metadata(opts.metadata) : NULL,
1671
+
1672
+ // If metadata type if HTML5, grab 'name' from the object instead, or use the regular data object otherwise
1673
+ metadata5 = opts.metadata.type === 'html5' && metadata ? metadata[opts.metadata.name] : NULL,
1674
+
1675
+ // Grab data from metadata.name (or data-qtipopts as fallback) using .data() method,
1676
+ html5 = elem.data(opts.metadata.name || 'qtipopts');
1677
+
1678
+ // If we don't get an object returned attempt to parse it manualyl without parseJSON
1679
+ try { html5 = typeof html5 === 'string' ? $.parseJSON(html5) : html5; } catch(e) {}
1680
+
1681
+ // Merge in and sanitize metadata
1682
+ config = $.extend(TRUE, {}, QTIP.defaults, opts,
1683
+ typeof html5 === 'object' ? sanitizeOptions(html5) : NULL,
1684
+ sanitizeOptions(metadata5 || metadata));
1685
+
1686
+ // Re-grab our positioning options now we've merged our metadata and set id to passed value
1687
+ posOptions = config.position;
1688
+ config.id = id;
1689
+
1690
+ // Setup missing content if none is detected
1691
+ if('boolean' === typeof config.content.text) {
1692
+ attr = elem.attr(config.content.attr);
1693
+
1694
+ // Grab from supplied attribute if available
1695
+ if(config.content.attr !== FALSE && attr) { config.content.text = attr; }
1696
+
1697
+ // No valid content was found, abort render
1698
+ else { return FALSE; }
1699
+ }
1700
+
1701
+ // Setup target options
1702
+ if(!posOptions.container.length) { posOptions.container = docBody; }
1703
+ if(posOptions.target === FALSE) { posOptions.target = newTarget; }
1704
+ if(config.show.target === FALSE) { config.show.target = newTarget; }
1705
+ if(config.show.solo === TRUE) { config.show.solo = posOptions.container.closest('body'); }
1706
+ if(config.hide.target === FALSE) { config.hide.target = newTarget; }
1707
+ if(config.position.viewport === TRUE) { config.position.viewport = posOptions.container; }
1708
+
1709
+ // Ensure we only use a single container
1710
+ posOptions.container = posOptions.container.eq(0);
1711
+
1712
+ // Convert position corner values into x and y strings
1713
+ posOptions.at = new CORNER(posOptions.at, TRUE);
1714
+ posOptions.my = new CORNER(posOptions.my);
1715
+
1716
+ // Destroy previous tooltip if overwrite is enabled, or skip element if not
1717
+ if(elem.data(NAMESPACE)) {
1718
+ if(config.overwrite) {
1719
+ elem.qtip('destroy', true);
1720
+ }
1721
+ else if(config.overwrite === FALSE) {
1722
+ return FALSE;
1723
+ }
1724
+ }
1725
+
1726
+ // Add has-qtip attribute
1727
+ elem.attr(ATTR_HAS, id);
1728
+
1729
+ // Remove title attribute and store it if present
1730
+ if(config.suppress && (title = elem.attr('title'))) {
1731
+ // Final attr call fixes event delegatiom and IE default tooltip showing problem
1732
+ elem.removeAttr('title').attr(oldtitle, title).attr('title', '');
1733
+ }
1734
+
1735
+ // Initialize the tooltip and add API reference
1736
+ obj = new QTip(elem, config, id, !!attr);
1737
+ elem.data(NAMESPACE, obj);
1738
+
1739
+ // Catch remove/removeqtip events on target element to destroy redundant tooltip
1740
+ elem.one('remove.qtip-'+id+' removeqtip.qtip-'+id, function() {
1741
+ var api; if((api = $(this).data(NAMESPACE))) { api.destroy(true); }
1742
+ });
1743
+
1744
+ return obj;
1745
+ }
1746
+
1747
+ // jQuery $.fn extension method
1748
+ QTIP = $.fn.qtip = function(options, notation, newValue)
1749
+ {
1750
+ var command = ('' + options).toLowerCase(), // Parse command
1751
+ returned = NULL,
1752
+ args = $.makeArray(arguments).slice(1),
1753
+ event = args[args.length - 1],
1754
+ opts = this[0] ? $.data(this[0], NAMESPACE) : NULL;
1755
+
1756
+ // Check for API request
1757
+ if((!arguments.length && opts) || command === 'api') {
1758
+ return opts;
1759
+ }
1760
+
1761
+ // Execute API command if present
1762
+ else if('string' === typeof options) {
1763
+ this.each(function() {
1764
+ var api = $.data(this, NAMESPACE);
1765
+ if(!api) { return TRUE; }
1766
+
1767
+ // Cache the event if possible
1768
+ if(event && event.timeStamp) { api.cache.event = event; }
1769
+
1770
+ // Check for specific API commands
1771
+ if(notation && (command === 'option' || command === 'options')) {
1772
+ if(newValue !== undefined || $.isPlainObject(notation)) {
1773
+ api.set(notation, newValue);
1774
+ }
1775
+ else {
1776
+ returned = api.get(notation);
1777
+ return FALSE;
1778
+ }
1779
+ }
1780
+
1781
+ // Execute API command
1782
+ else if(api[command]) {
1783
+ api[command].apply(api, args);
1784
+ }
1785
+ });
1786
+
1787
+ return returned !== NULL ? returned : this;
1788
+ }
1789
+
1790
+ // No API commands. validate provided options and setup qTips
1791
+ else if('object' === typeof options || !arguments.length) {
1792
+ // Sanitize options first
1793
+ opts = sanitizeOptions($.extend(TRUE, {}, options));
1794
+
1795
+ return this.each(function(i) {
1796
+ var api, id;
1797
+
1798
+ // Find next available ID, or use custom ID if provided
1799
+ id = $.isArray(opts.id) ? opts.id[i] : opts.id;
1800
+ id = !id || id === FALSE || id.length < 1 || QTIP.api[id] ? QTIP.nextid++ : id;
1801
+
1802
+ // Initialize the qTip and re-grab newly sanitized options
1803
+ api = init($(this), id, opts);
1804
+ if(api === FALSE) { return TRUE; }
1805
+ else { QTIP.api[id] = api; }
1806
+
1807
+ // Initialize plugins
1808
+ $.each(PLUGINS, function() {
1809
+ if(this.initialize === 'initialize') { this(api); }
1810
+ });
1811
+
1812
+ // Assign initial pre-render events
1813
+ api._assignInitialEvents(event);
1814
+ });
1815
+ }
1816
+ };
1817
+
1818
+ // Expose class
1819
+ $.qtip = QTip;
1820
+
1821
+ // Populated in render method
1822
+ QTIP.api = {};
1823
+ ;$.each({
1824
+ /* Allow other plugins to successfully retrieve the title of an element with a qTip applied */
1825
+ attr: function(attr, val) {
1826
+ if(this.length) {
1827
+ var self = this[0],
1828
+ title = 'title',
1829
+ api = $.data(self, 'qtip');
1830
+
1831
+ if(attr === title && api && 'object' === typeof api && api.options.suppress) {
1832
+ if(arguments.length < 2) {
1833
+ return $.attr(self, oldtitle);
1834
+ }
1835
+
1836
+ // If qTip is rendered and title was originally used as content, update it
1837
+ if(api && api.options.content.attr === title && api.cache.attr) {
1838
+ api.set('content.text', val);
1839
+ }
1840
+
1841
+ // Use the regular attr method to set, then cache the result
1842
+ return this.attr(oldtitle, val);
1843
+ }
1844
+ }
1845
+
1846
+ return $.fn['attr'+replaceSuffix].apply(this, arguments);
1847
+ },
1848
+
1849
+ /* Allow clone to correctly retrieve cached title attributes */
1850
+ clone: function(keepData) {
1851
+ var titles = $([]), title = 'title',
1852
+
1853
+ // Clone our element using the real clone method
1854
+ elems = $.fn['clone'+replaceSuffix].apply(this, arguments);
1855
+
1856
+ // Grab all elements with an oldtitle set, and change it to regular title attribute, if keepData is false
1857
+ if(!keepData) {
1858
+ elems.filter('['+oldtitle+']').attr('title', function() {
1859
+ return $.attr(this, oldtitle);
1860
+ })
1861
+ .removeAttr(oldtitle);
1862
+ }
1863
+
1864
+ return elems;
1865
+ }
1866
+ }, function(name, func) {
1867
+ if(!func || $.fn[name+replaceSuffix]) { return TRUE; }
1868
+
1869
+ var old = $.fn[name+replaceSuffix] = $.fn[name];
1870
+ $.fn[name] = function() {
1871
+ return func.apply(this, arguments) || old.apply(this, arguments);
1872
+ };
1873
+ });
1874
+
1875
+ /* Fire off 'removeqtip' handler in $.cleanData if jQuery UI not present (it already does similar).
1876
+ * This snippet is taken directly from jQuery UI source code found here:
1877
+ * http://code.jquery.com/ui/jquery-ui-git.js
1878
+ */
1879
+ if(!$.ui) {
1880
+ $['cleanData'+replaceSuffix] = $.cleanData;
1881
+ $.cleanData = function( elems ) {
1882
+ for(var i = 0, elem; (elem = $( elems[i] )).length; i++) {
1883
+ if(elem.attr(ATTR_HAS)) {
1884
+ try { elem.triggerHandler('removeqtip'); }
1885
+ catch( e ) {}
1886
+ }
1887
+ }
1888
+ $['cleanData'+replaceSuffix].apply(this, arguments);
1889
+ };
1890
+ }
1891
+
1892
+ ;// qTip version
1893
+ QTIP.version = '2.2.0';
1894
+
1895
+ // Base ID for all qTips
1896
+ QTIP.nextid = 0;
1897
+
1898
+ // Inactive events array
1899
+ QTIP.inactiveEvents = INACTIVE_EVENTS;
1900
+
1901
+ // Base z-index for all qTips
1902
+ QTIP.zindex = 15000;
1903
+
1904
+ // Define configuration defaults
1905
+ QTIP.defaults = {
1906
+ prerender: FALSE,
1907
+ id: FALSE,
1908
+ overwrite: TRUE,
1909
+ suppress: TRUE,
1910
+ content: {
1911
+ text: TRUE,
1912
+ attr: 'title',
1913
+ title: FALSE,
1914
+ button: FALSE
1915
+ },
1916
+ position: {
1917
+ my: 'top left',
1918
+ at: 'bottom right',
1919
+ target: FALSE,
1920
+ container: FALSE,
1921
+ viewport: FALSE,
1922
+ adjust: {
1923
+ x: 0, y: 0,
1924
+ mouse: TRUE,
1925
+ scroll: TRUE,
1926
+ resize: TRUE,
1927
+ method: 'flipinvert flipinvert'
1928
+ },
1929
+ effect: function(api, pos, viewport) {
1930
+ $(this).animate(pos, {
1931
+ duration: 200,
1932
+ queue: FALSE
1933
+ });
1934
+ }
1935
+ },
1936
+ show: {
1937
+ target: FALSE,
1938
+ event: 'mouseenter',
1939
+ effect: TRUE,
1940
+ delay: 90,
1941
+ solo: FALSE,
1942
+ ready: FALSE,
1943
+ autofocus: FALSE
1944
+ },
1945
+ hide: {
1946
+ target: FALSE,
1947
+ event: 'mouseleave',
1948
+ effect: TRUE,
1949
+ delay: 0,
1950
+ fixed: FALSE,
1951
+ inactive: FALSE,
1952
+ leave: 'window',
1953
+ distance: FALSE
1954
+ },
1955
+ style: {
1956
+ classes: '',
1957
+ widget: FALSE,
1958
+ width: FALSE,
1959
+ height: FALSE,
1960
+ def: TRUE
1961
+ },
1962
+ events: {
1963
+ render: NULL,
1964
+ move: NULL,
1965
+ show: NULL,
1966
+ hide: NULL,
1967
+ toggle: NULL,
1968
+ visible: NULL,
1969
+ hidden: NULL,
1970
+ focus: NULL,
1971
+ blur: NULL
1972
+ }
1973
+ };
1974
+
1975
+ ;var TIP,
1976
+
1977
+ // .bind()/.on() namespace
1978
+ TIPNS = '.qtip-tip',
1979
+
1980
+ // Common CSS strings
1981
+ MARGIN = 'margin',
1982
+ BORDER = 'border',
1983
+ COLOR = 'color',
1984
+ BG_COLOR = 'background-color',
1985
+ TRANSPARENT = 'transparent',
1986
+ IMPORTANT = ' !important',
1987
+
1988
+ // Check if the browser supports <canvas/> elements
1989
+ HASCANVAS = !!document.createElement('canvas').getContext,
1990
+
1991
+ // Invalid colour values used in parseColours()
1992
+ INVALID = /rgba?\(0, 0, 0(, 0)?\)|transparent|#123456/i;
1993
+
1994
+ // Camel-case method, taken from jQuery source
1995
+ // http://code.jquery.com/jquery-1.8.0.js
1996
+ function camel(s) { return s.charAt(0).toUpperCase() + s.slice(1); }
1997
+
1998
+ /*
1999
+ * Modified from Modernizr's testPropsAll()
2000
+ * http://modernizr.com/downloads/modernizr-latest.js
2001
+ */
2002
+ var cssProps = {}, cssPrefixes = ["Webkit", "O", "Moz", "ms"];
2003
+ function vendorCss(elem, prop) {
2004
+ var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1),
2005
+ props = (prop + ' ' + cssPrefixes.join(ucProp + ' ') + ucProp).split(' '),
2006
+ cur, val, i = 0;
2007
+
2008
+ // If the property has already been mapped...
2009
+ if(cssProps[prop]) { return elem.css(cssProps[prop]); }
2010
+
2011
+ while((cur = props[i++])) {
2012
+ if((val = elem.css(cur)) !== undefined) {
2013
+ return cssProps[prop] = cur, val;
2014
+ }
2015
+ }
2016
+ }
2017
+
2018
+ // Parse a given elements CSS property into an int
2019
+ function intCss(elem, prop) {
2020
+ return Math.ceil(parseFloat(vendorCss(elem, prop)));
2021
+ }
2022
+
2023
+
2024
+ // VML creation (for IE only)
2025
+ if(!HASCANVAS) {
2026
+ var createVML = function(tag, props, style) {
2027
+ return '<qtipvml:'+tag+' xmlns="urn:schemas-microsoft.com:vml" class="qtip-vml" '+(props||'')+
2028
+ ' style="behavior: url(#default#VML); '+(style||'')+ '" />';
2029
+ };
2030
+ }
2031
+
2032
+ // Canvas only definitions
2033
+ else {
2034
+ var PIXEL_RATIO = window.devicePixelRatio || 1,
2035
+ BACKING_STORE_RATIO = (function() {
2036
+ var context = document.createElement('canvas').getContext('2d');
2037
+ return context.backingStorePixelRatio || context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio ||
2038
+ context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || 1;
2039
+ }()),
2040
+ SCALE = PIXEL_RATIO / BACKING_STORE_RATIO;
2041
+ }
2042
+
2043
+
2044
+ function Tip(qtip, options) {
2045
+ this._ns = 'tip';
2046
+ this.options = options;
2047
+ this.offset = options.offset;
2048
+ this.size = [ options.width, options.height ];
2049
+
2050
+ // Initialize
2051
+ this.init( (this.qtip = qtip) );
2052
+ }
2053
+
2054
+ $.extend(Tip.prototype, {
2055
+ init: function(qtip) {
2056
+ var context, tip;
2057
+
2058
+ // Create tip element and prepend to the tooltip
2059
+ tip = this.element = qtip.elements.tip = $('<div />', { 'class': NAMESPACE+'-tip' }).prependTo(qtip.tooltip);
2060
+
2061
+ // Create tip drawing element(s)
2062
+ if(HASCANVAS) {
2063
+ // save() as soon as we create the canvas element so FF2 doesn't bork on our first restore()!
2064
+ context = $('<canvas />').appendTo(this.element)[0].getContext('2d');
2065
+
2066
+ // Setup constant parameters
2067
+ context.lineJoin = 'miter';
2068
+ context.miterLimit = 100000;
2069
+ context.save();
2070
+ }
2071
+ else {
2072
+ context = createVML('shape', 'coordorigin="0,0"', 'position:absolute;');
2073
+ this.element.html(context + context);
2074
+
2075
+ // Prevent mousing down on the tip since it causes problems with .live() handling in IE due to VML
2076
+ qtip._bind( $('*', tip).add(tip), ['click', 'mousedown'], function(event) { event.stopPropagation(); }, this._ns);
2077
+ }
2078
+
2079
+ // Bind update events
2080
+ qtip._bind(qtip.tooltip, 'tooltipmove', this.reposition, this._ns, this);
2081
+
2082
+ // Create it
2083
+ this.create();
2084
+ },
2085
+
2086
+ _swapDimensions: function() {
2087
+ this.size[0] = this.options.height;
2088
+ this.size[1] = this.options.width;
2089
+ },
2090
+ _resetDimensions: function() {
2091
+ this.size[0] = this.options.width;
2092
+ this.size[1] = this.options.height;
2093
+ },
2094
+
2095
+ _useTitle: function(corner) {
2096
+ var titlebar = this.qtip.elements.titlebar;
2097
+ return titlebar && (
2098
+ corner.y === TOP || (corner.y === CENTER && this.element.position().top + (this.size[1] / 2) + this.options.offset < titlebar.outerHeight(TRUE))
2099
+ );
2100
+ },
2101
+
2102
+ _parseCorner: function(corner) {
2103
+ var my = this.qtip.options.position.my;
2104
+
2105
+ // Detect corner and mimic properties
2106
+ if(corner === FALSE || my === FALSE) {
2107
+ corner = FALSE;
2108
+ }
2109
+ else if(corner === TRUE) {
2110
+ corner = new CORNER( my.string() );
2111
+ }
2112
+ else if(!corner.string) {
2113
+ corner = new CORNER(corner);
2114
+ corner.fixed = TRUE;
2115
+ }
2116
+
2117
+ return corner;
2118
+ },
2119
+
2120
+ _parseWidth: function(corner, side, use) {
2121
+ var elements = this.qtip.elements,
2122
+ prop = BORDER + camel(side) + 'Width';
2123
+
2124
+ return (use ? intCss(use, prop) : (
2125
+ intCss(elements.content, prop) ||
2126
+ intCss(this._useTitle(corner) && elements.titlebar || elements.content, prop) ||
2127
+ intCss(elements.tooltip, prop)
2128
+ )) || 0;
2129
+ },
2130
+
2131
+ _parseRadius: function(corner) {
2132
+ var elements = this.qtip.elements,
2133
+ prop = BORDER + camel(corner.y) + camel(corner.x) + 'Radius';
2134
+
2135
+ return BROWSER.ie < 9 ? 0 :
2136
+ intCss(this._useTitle(corner) && elements.titlebar || elements.content, prop) ||
2137
+ intCss(elements.tooltip, prop) || 0;
2138
+ },
2139
+
2140
+ _invalidColour: function(elem, prop, compare) {
2141
+ var val = elem.css(prop);
2142
+ return !val || (compare && val === elem.css(compare)) || INVALID.test(val) ? FALSE : val;
2143
+ },
2144
+
2145
+ _parseColours: function(corner) {
2146
+ var elements = this.qtip.elements,
2147
+ tip = this.element.css('cssText', ''),
2148
+ borderSide = BORDER + camel(corner[ corner.precedance ]) + camel(COLOR),
2149
+ colorElem = this._useTitle(corner) && elements.titlebar || elements.content,
2150
+ css = this._invalidColour, color = [];
2151
+
2152
+ // Attempt to detect the background colour from various elements, left-to-right precedance
2153
+ color[0] = css(tip, BG_COLOR) || css(colorElem, BG_COLOR) || css(elements.content, BG_COLOR) ||
2154
+ css(elements.tooltip, BG_COLOR) || tip.css(BG_COLOR);
2155
+
2156
+ // Attempt to detect the correct border side colour from various elements, left-to-right precedance
2157
+ color[1] = css(tip, borderSide, COLOR) || css(colorElem, borderSide, COLOR) ||
2158
+ css(elements.content, borderSide, COLOR) || css(elements.tooltip, borderSide, COLOR) || elements.tooltip.css(borderSide);
2159
+
2160
+ // Reset background and border colours
2161
+ $('*', tip).add(tip).css('cssText', BG_COLOR+':'+TRANSPARENT+IMPORTANT+';'+BORDER+':0'+IMPORTANT+';');
2162
+
2163
+ return color;
2164
+ },
2165
+
2166
+ _calculateSize: function(corner) {
2167
+ var y = corner.precedance === Y,
2168
+ width = this.options['width'],
2169
+ height = this.options['height'],
2170
+ isCenter = corner.abbrev() === 'c',
2171
+ base = (y ? width: height) * (isCenter ? 0.5 : 1),
2172
+ pow = Math.pow,
2173
+ round = Math.round,
2174
+ bigHyp, ratio, result,
2175
+
2176
+ smallHyp = Math.sqrt( pow(base, 2) + pow(height, 2) ),
2177
+ hyp = [ (this.border / base) * smallHyp, (this.border / height) * smallHyp ];
2178
+
2179
+ hyp[2] = Math.sqrt( pow(hyp[0], 2) - pow(this.border, 2) );
2180
+ hyp[3] = Math.sqrt( pow(hyp[1], 2) - pow(this.border, 2) );
2181
+
2182
+ bigHyp = smallHyp + hyp[2] + hyp[3] + (isCenter ? 0 : hyp[0]);
2183
+ ratio = bigHyp / smallHyp;
2184
+
2185
+ result = [ round(ratio * width), round(ratio * height) ];
2186
+ return y ? result : result.reverse();
2187
+ },
2188
+
2189
+ // Tip coordinates calculator
2190
+ _calculateTip: function(corner, size, scale) {
2191
+ scale = scale || 1;
2192
+ size = size || this.size;
2193
+
2194
+ var width = size[0] * scale,
2195
+ height = size[1] * scale,
2196
+ width2 = Math.ceil(width / 2), height2 = Math.ceil(height / 2),
2197
+
2198
+ // Define tip coordinates in terms of height and width values
2199
+ tips = {
2200
+ br: [0,0, width,height, width,0],
2201
+ bl: [0,0, width,0, 0,height],
2202
+ tr: [0,height, width,0, width,height],
2203
+ tl: [0,0, 0,height, width,height],
2204
+ tc: [0,height, width2,0, width,height],
2205
+ bc: [0,0, width,0, width2,height],
2206
+ rc: [0,0, width,height2, 0,height],
2207
+ lc: [width,0, width,height, 0,height2]
2208
+ };
2209
+
2210
+ // Set common side shapes
2211
+ tips.lt = tips.br; tips.rt = tips.bl;
2212
+ tips.lb = tips.tr; tips.rb = tips.tl;
2213
+
2214
+ return tips[ corner.abbrev() ];
2215
+ },
2216
+
2217
+ // Tip coordinates drawer (canvas)
2218
+ _drawCoords: function(context, coords) {
2219
+ context.beginPath();
2220
+ context.moveTo(coords[0], coords[1]);
2221
+ context.lineTo(coords[2], coords[3]);
2222
+ context.lineTo(coords[4], coords[5]);
2223
+ context.closePath();
2224
+ },
2225
+
2226
+ create: function() {
2227
+ // Determine tip corner
2228
+ var c = this.corner = (HASCANVAS || BROWSER.ie) && this._parseCorner(this.options.corner);
2229
+
2230
+ // If we have a tip corner...
2231
+ if( (this.enabled = !!this.corner && this.corner.abbrev() !== 'c') ) {
2232
+ // Cache it
2233
+ this.qtip.cache.corner = c.clone();
2234
+
2235
+ // Create it
2236
+ this.update();
2237
+ }
2238
+
2239
+ // Toggle tip element
2240
+ this.element.toggle(this.enabled);
2241
+
2242
+ return this.corner;
2243
+ },
2244
+
2245
+ update: function(corner, position) {
2246
+ if(!this.enabled) { return this; }
2247
+
2248
+ var elements = this.qtip.elements,
2249
+ tip = this.element,
2250
+ inner = tip.children(),
2251
+ options = this.options,
2252
+ curSize = this.size,
2253
+ mimic = options.mimic,
2254
+ round = Math.round,
2255
+ color, precedance, context,
2256
+ coords, bigCoords, translate, newSize, border, BACKING_STORE_RATIO;
2257
+
2258
+ // Re-determine tip if not already set
2259
+ if(!corner) { corner = this.qtip.cache.corner || this.corner; }
2260
+
2261
+ // Use corner property if we detect an invalid mimic value
2262
+ if(mimic === FALSE) { mimic = corner; }
2263
+
2264
+ // Otherwise inherit mimic properties from the corner object as necessary
2265
+ else {
2266
+ mimic = new CORNER(mimic);
2267
+ mimic.precedance = corner.precedance;
2268
+
2269
+ if(mimic.x === 'inherit') { mimic.x = corner.x; }
2270
+ else if(mimic.y === 'inherit') { mimic.y = corner.y; }
2271
+ else if(mimic.x === mimic.y) {
2272
+ mimic[ corner.precedance ] = corner[ corner.precedance ];
2273
+ }
2274
+ }
2275
+ precedance = mimic.precedance;
2276
+
2277
+ // Ensure the tip width.height are relative to the tip position
2278
+ if(corner.precedance === X) { this._swapDimensions(); }
2279
+ else { this._resetDimensions(); }
2280
+
2281
+ // Update our colours
2282
+ color = this.color = this._parseColours(corner);
2283
+
2284
+ // Detect border width, taking into account colours
2285
+ if(color[1] !== TRANSPARENT) {
2286
+ // Grab border width
2287
+ border = this.border = this._parseWidth(corner, corner[corner.precedance]);
2288
+
2289
+ // If border width isn't zero, use border color as fill if it's not invalid (1.0 style tips)
2290
+ if(options.border && border < 1 && !INVALID.test(color[1])) { color[0] = color[1]; }
2291
+
2292
+ // Set border width (use detected border width if options.border is true)
2293
+ this.border = border = options.border !== TRUE ? options.border : border;
2294
+ }
2295
+
2296
+ // Border colour was invalid, set border to zero
2297
+ else { this.border = border = 0; }
2298
+
2299
+ // Determine tip size
2300
+ newSize = this.size = this._calculateSize(corner);
2301
+ tip.css({
2302
+ width: newSize[0],
2303
+ height: newSize[1],
2304
+ lineHeight: newSize[1]+'px'
2305
+ });
2306
+
2307
+ // Calculate tip translation
2308
+ if(corner.precedance === Y) {
2309
+ translate = [
2310
+ round(mimic.x === LEFT ? border : mimic.x === RIGHT ? newSize[0] - curSize[0] - border : (newSize[0] - curSize[0]) / 2),
2311
+ round(mimic.y === TOP ? newSize[1] - curSize[1] : 0)
2312
+ ];
2313
+ }
2314
+ else {
2315
+ translate = [
2316
+ round(mimic.x === LEFT ? newSize[0] - curSize[0] : 0),
2317
+ round(mimic.y === TOP ? border : mimic.y === BOTTOM ? newSize[1] - curSize[1] - border : (newSize[1] - curSize[1]) / 2)
2318
+ ];
2319
+ }
2320
+
2321
+ // Canvas drawing implementation
2322
+ if(HASCANVAS) {
2323
+ // Grab canvas context and clear/save it
2324
+ context = inner[0].getContext('2d');
2325
+ context.restore(); context.save();
2326
+ context.clearRect(0,0,6000,6000);
2327
+
2328
+ // Calculate coordinates
2329
+ coords = this._calculateTip(mimic, curSize, SCALE);
2330
+ bigCoords = this._calculateTip(mimic, this.size, SCALE);
2331
+
2332
+ // Set the canvas size using calculated size
2333
+ inner.attr(WIDTH, newSize[0] * SCALE).attr(HEIGHT, newSize[1] * SCALE);
2334
+ inner.css(WIDTH, newSize[0]).css(HEIGHT, newSize[1]);
2335
+
2336
+ // Draw the outer-stroke tip
2337
+ this._drawCoords(context, bigCoords);
2338
+ context.fillStyle = color[1];
2339
+ context.fill();
2340
+
2341
+ // Draw the actual tip
2342
+ context.translate(translate[0] * SCALE, translate[1] * SCALE);
2343
+ this._drawCoords(context, coords);
2344
+ context.fillStyle = color[0];
2345
+ context.fill();
2346
+ }
2347
+
2348
+ // VML (IE Proprietary implementation)
2349
+ else {
2350
+ // Calculate coordinates
2351
+ coords = this._calculateTip(mimic);
2352
+
2353
+ // Setup coordinates string
2354
+ coords = 'm' + coords[0] + ',' + coords[1] + ' l' + coords[2] +
2355
+ ',' + coords[3] + ' ' + coords[4] + ',' + coords[5] + ' xe';
2356
+
2357
+ // Setup VML-specific offset for pixel-perfection
2358
+ translate[2] = border && /^(r|b)/i.test(corner.string()) ?
2359
+ BROWSER.ie === 8 ? 2 : 1 : 0;
2360
+
2361
+ // Set initial CSS
2362
+ inner.css({
2363
+ coordsize: (newSize[0]+border) + ' ' + (newSize[1]+border),
2364
+ antialias: ''+(mimic.string().indexOf(CENTER) > -1),
2365
+ left: translate[0] - (translate[2] * Number(precedance === X)),
2366
+ top: translate[1] - (translate[2] * Number(precedance === Y)),
2367
+ width: newSize[0] + border,
2368
+ height: newSize[1] + border
2369
+ })
2370
+ .each(function(i) {
2371
+ var $this = $(this);
2372
+
2373
+ // Set shape specific attributes
2374
+ $this[ $this.prop ? 'prop' : 'attr' ]({
2375
+ coordsize: (newSize[0]+border) + ' ' + (newSize[1]+border),
2376
+ path: coords,
2377
+ fillcolor: color[0],
2378
+ filled: !!i,
2379
+ stroked: !i
2380
+ })
2381
+ .toggle(!!(border || i));
2382
+
2383
+ // Check if border is enabled and add stroke element
2384
+ !i && $this.html( createVML(
2385
+ 'stroke', 'weight="'+(border*2)+'px" color="'+color[1]+'" miterlimit="1000" joinstyle="miter"'
2386
+ ) );
2387
+ });
2388
+ }
2389
+
2390
+ // Opera bug #357 - Incorrect tip position
2391
+ // https://github.com/Craga89/qTip2/issues/367
2392
+ window.opera && setTimeout(function() {
2393
+ elements.tip.css({
2394
+ display: 'inline-block',
2395
+ visibility: 'visible'
2396
+ });
2397
+ }, 1);
2398
+
2399
+ // Position if needed
2400
+ if(position !== FALSE) { this.calculate(corner, newSize); }
2401
+ },
2402
+
2403
+ calculate: function(corner, size) {
2404
+ if(!this.enabled) { return FALSE; }
2405
+
2406
+ var self = this,
2407
+ elements = this.qtip.elements,
2408
+ tip = this.element,
2409
+ userOffset = this.options.offset,
2410
+ isWidget = elements.tooltip.hasClass('ui-widget'),
2411
+ position = { },
2412
+ precedance, corners;
2413
+
2414
+ // Inherit corner if not provided
2415
+ corner = corner || this.corner;
2416
+ precedance = corner.precedance;
2417
+
2418
+ // Determine which tip dimension to use for adjustment
2419
+ size = size || this._calculateSize(corner);
2420
+
2421
+ // Setup corners and offset array
2422
+ corners = [ corner.x, corner.y ];
2423
+ if(precedance === X) { corners.reverse(); }
2424
+
2425
+ // Calculate tip position
2426
+ $.each(corners, function(i, side) {
2427
+ var b, bc, br;
2428
+
2429
+ if(side === CENTER) {
2430
+ b = precedance === Y ? LEFT : TOP;
2431
+ position[ b ] = '50%';
2432
+ position[MARGIN+'-' + b] = -Math.round(size[ precedance === Y ? 0 : 1 ] / 2) + userOffset;
2433
+ }
2434
+ else {
2435
+ b = self._parseWidth(corner, side, elements.tooltip);
2436
+ bc = self._parseWidth(corner, side, elements.content);
2437
+ br = self._parseRadius(corner);
2438
+
2439
+ position[ side ] = Math.max(-self.border, i ? bc : (userOffset + (br > b ? br : -b)));
2440
+ }
2441
+ });
2442
+
2443
+ // Adjust for tip size
2444
+ position[ corner[precedance] ] -= size[ precedance === X ? 0 : 1 ];
2445
+
2446
+ // Set and return new position
2447
+ tip.css({ margin: '', top: '', bottom: '', left: '', right: '' }).css(position);
2448
+ return position;
2449
+ },
2450
+
2451
+ reposition: function(event, api, pos, viewport) {
2452
+ if(!this.enabled) { return; }
2453
+
2454
+ var cache = api.cache,
2455
+ newCorner = this.corner.clone(),
2456
+ adjust = pos.adjusted,
2457
+ method = api.options.position.adjust.method.split(' '),
2458
+ horizontal = method[0],
2459
+ vertical = method[1] || method[0],
2460
+ shift = { left: FALSE, top: FALSE, x: 0, y: 0 },
2461
+ offset, css = {}, props;
2462
+
2463
+ function shiftflip(direction, precedance, popposite, side, opposite) {
2464
+ // Horizontal - Shift or flip method
2465
+ if(direction === SHIFT && newCorner.precedance === precedance && adjust[side] && newCorner[popposite] !== CENTER) {
2466
+ newCorner.precedance = newCorner.precedance === X ? Y : X;
2467
+ }
2468
+ else if(direction !== SHIFT && adjust[side]){
2469
+ newCorner[precedance] = newCorner[precedance] === CENTER ?
2470
+ (adjust[side] > 0 ? side : opposite) : (newCorner[precedance] === side ? opposite : side);
2471
+ }
2472
+ }
2473
+
2474
+ function shiftonly(xy, side, opposite) {
2475
+ if(newCorner[xy] === CENTER) {
2476
+ css[MARGIN+'-'+side] = shift[xy] = offset[MARGIN+'-'+side] - adjust[side];
2477
+ }
2478
+ else {
2479
+ props = offset[opposite] !== undefined ?
2480
+ [ adjust[side], -offset[side] ] : [ -adjust[side], offset[side] ];
2481
+
2482
+ if( (shift[xy] = Math.max(props[0], props[1])) > props[0] ) {
2483
+ pos[side] -= adjust[side];
2484
+ shift[side] = FALSE;
2485
+ }
2486
+
2487
+ css[ offset[opposite] !== undefined ? opposite : side ] = shift[xy];
2488
+ }
2489
+ }
2490
+
2491
+ // If our tip position isn't fixed e.g. doesn't adjust with viewport...
2492
+ if(this.corner.fixed !== TRUE) {
2493
+ // Perform shift/flip adjustments
2494
+ shiftflip(horizontal, X, Y, LEFT, RIGHT);
2495
+ shiftflip(vertical, Y, X, TOP, BOTTOM);
2496
+
2497
+ // Update and redraw the tip if needed (check cached details of last drawn tip)
2498
+ if(newCorner.string() !== cache.corner.string() && (cache.cornerTop !== adjust.top || cache.cornerLeft !== adjust.left)) {
2499
+ this.update(newCorner, FALSE);
2500
+ }
2501
+ }
2502
+
2503
+ // Setup tip offset properties
2504
+ offset = this.calculate(newCorner);
2505
+
2506
+ // Readjust offset object to make it left/top
2507
+ if(offset.right !== undefined) { offset.left = -offset.right; }
2508
+ if(offset.bottom !== undefined) { offset.top = -offset.bottom; }
2509
+ offset.user = this.offset;
2510
+
2511
+ // Perform shift adjustments
2512
+ if(shift.left = (horizontal === SHIFT && !!adjust.left)) { shiftonly(X, LEFT, RIGHT); }
2513
+ if(shift.top = (vertical === SHIFT && !!adjust.top)) { shiftonly(Y, TOP, BOTTOM); }
2514
+
2515
+ /*
2516
+ * If the tip is adjusted in both dimensions, or in a
2517
+ * direction that would cause it to be anywhere but the
2518
+ * outer border, hide it!
2519
+ */
2520
+ this.element.css(css).toggle(
2521
+ !((shift.x && shift.y) || (newCorner.x === CENTER && shift.y) || (newCorner.y === CENTER && shift.x))
2522
+ );
2523
+
2524
+ // Adjust position to accomodate tip dimensions
2525
+ pos.left -= offset.left.charAt ? offset.user :
2526
+ horizontal !== SHIFT || shift.top || !shift.left && !shift.top ? offset.left + this.border : 0;
2527
+ pos.top -= offset.top.charAt ? offset.user :
2528
+ vertical !== SHIFT || shift.left || !shift.left && !shift.top ? offset.top + this.border : 0;
2529
+
2530
+ // Cache details
2531
+ cache.cornerLeft = adjust.left; cache.cornerTop = adjust.top;
2532
+ cache.corner = newCorner.clone();
2533
+ },
2534
+
2535
+ destroy: function() {
2536
+ // Unbind events
2537
+ this.qtip._unbind(this.qtip.tooltip, this._ns);
2538
+
2539
+ // Remove the tip element(s)
2540
+ if(this.qtip.elements.tip) {
2541
+ this.qtip.elements.tip.find('*')
2542
+ .remove().end().remove();
2543
+ }
2544
+ }
2545
+ });
2546
+
2547
+ TIP = PLUGINS.tip = function(api) {
2548
+ return new Tip(api, api.options.style.tip);
2549
+ };
2550
+
2551
+ // Initialize tip on render
2552
+ TIP.initialize = 'render';
2553
+
2554
+ // Setup plugin sanitization options
2555
+ TIP.sanitize = function(options) {
2556
+ if(options.style && 'tip' in options.style) {
2557
+ var opts = options.style.tip;
2558
+ if(typeof opts !== 'object') { opts = options.style.tip = { corner: opts }; }
2559
+ if(!(/string|boolean/i).test(typeof opts.corner)) { opts.corner = TRUE; }
2560
+ }
2561
+ };
2562
+
2563
+ // Add new option checks for the plugin
2564
+ CHECKS.tip = {
2565
+ '^position.my|style.tip.(corner|mimic|border)$': function() {
2566
+ // Make sure a tip can be drawn
2567
+ this.create();
2568
+
2569
+ // Reposition the tooltip
2570
+ this.qtip.reposition();
2571
+ },
2572
+ '^style.tip.(height|width)$': function(obj) {
2573
+ // Re-set dimensions and redraw the tip
2574
+ this.size = [ obj.width, obj.height ];
2575
+ this.update();
2576
+
2577
+ // Reposition the tooltip
2578
+ this.qtip.reposition();
2579
+ },
2580
+ '^content.title|style.(classes|widget)$': function() {
2581
+ this.update();
2582
+ }
2583
+ };
2584
+
2585
+ // Extend original qTip defaults
2586
+ $.extend(TRUE, QTIP.defaults, {
2587
+ style: {
2588
+ tip: {
2589
+ corner: TRUE,
2590
+ mimic: FALSE,
2591
+ width: 6,
2592
+ height: 6,
2593
+ border: TRUE,
2594
+ offset: 0
2595
+ }
2596
+ }
2597
+ });
2598
+
2599
+ ;PLUGINS.viewport = function(api, position, posOptions, targetWidth, targetHeight, elemWidth, elemHeight)
2600
+ {
2601
+ var target = posOptions.target,
2602
+ tooltip = api.elements.tooltip,
2603
+ my = posOptions.my,
2604
+ at = posOptions.at,
2605
+ adjust = posOptions.adjust,
2606
+ method = adjust.method.split(' '),
2607
+ methodX = method[0],
2608
+ methodY = method[1] || method[0],
2609
+ viewport = posOptions.viewport,
2610
+ container = posOptions.container,
2611
+ cache = api.cache,
2612
+ adjusted = { left: 0, top: 0 },
2613
+ fixed, newMy, newClass, containerOffset, containerStatic,
2614
+ viewportWidth, viewportHeight, viewportScroll, viewportOffset;
2615
+
2616
+ // If viewport is not a jQuery element, or it's the window/document, or no adjustment method is used... return
2617
+ if(!viewport.jquery || target[0] === window || target[0] === document.body || adjust.method === 'none') {
2618
+ return adjusted;
2619
+ }
2620
+
2621
+ // Cach container details
2622
+ containerOffset = container.offset() || adjusted;
2623
+ containerStatic = container.css('position') === 'static';
2624
+
2625
+ // Cache our viewport details
2626
+ fixed = tooltip.css('position') === 'fixed';
2627
+ viewportWidth = viewport[0] === window ? viewport.width() : viewport.outerWidth(FALSE);
2628
+ viewportHeight = viewport[0] === window ? viewport.height() : viewport.outerHeight(FALSE);
2629
+ viewportScroll = { left: fixed ? 0 : viewport.scrollLeft(), top: fixed ? 0 : viewport.scrollTop() };
2630
+ viewportOffset = viewport.offset() || adjusted;
2631
+
2632
+ // Generic calculation method
2633
+ function calculate(side, otherSide, type, adjust, side1, side2, lengthName, targetLength, elemLength) {
2634
+ var initialPos = position[side1],
2635
+ mySide = my[side],
2636
+ atSide = at[side],
2637
+ isShift = type === SHIFT,
2638
+ myLength = mySide === side1 ? elemLength : mySide === side2 ? -elemLength : -elemLength / 2,
2639
+ atLength = atSide === side1 ? targetLength : atSide === side2 ? -targetLength : -targetLength / 2,
2640
+ sideOffset = viewportScroll[side1] + viewportOffset[side1] - (containerStatic ? 0 : containerOffset[side1]),
2641
+ overflow1 = sideOffset - initialPos,
2642
+ overflow2 = initialPos + elemLength - (lengthName === WIDTH ? viewportWidth : viewportHeight) - sideOffset,
2643
+ offset = myLength - (my.precedance === side || mySide === my[otherSide] ? atLength : 0) - (atSide === CENTER ? targetLength / 2 : 0);
2644
+
2645
+ // shift
2646
+ if(isShift) {
2647
+ offset = (mySide === side1 ? 1 : -1) * myLength;
2648
+
2649
+ // Adjust position but keep it within viewport dimensions
2650
+ position[side1] += overflow1 > 0 ? overflow1 : overflow2 > 0 ? -overflow2 : 0;
2651
+ position[side1] = Math.max(
2652
+ -containerOffset[side1] + viewportOffset[side1],
2653
+ initialPos - offset,
2654
+ Math.min(
2655
+ Math.max(
2656
+ -containerOffset[side1] + viewportOffset[side1] + (lengthName === WIDTH ? viewportWidth : viewportHeight),
2657
+ initialPos + offset
2658
+ ),
2659
+ position[side1],
2660
+
2661
+ // Make sure we don't adjust complete off the element when using 'center'
2662
+ mySide === 'center' ? initialPos - myLength : 1E9
2663
+ )
2664
+ );
2665
+
2666
+ }
2667
+
2668
+ // flip/flipinvert
2669
+ else {
2670
+ // Update adjustment amount depending on if using flipinvert or flip
2671
+ adjust *= (type === FLIPINVERT ? 2 : 0);
2672
+
2673
+ // Check for overflow on the left/top
2674
+ if(overflow1 > 0 && (mySide !== side1 || overflow2 > 0)) {
2675
+ position[side1] -= offset + adjust;
2676
+ newMy.invert(side, side1);
2677
+ }
2678
+
2679
+ // Check for overflow on the bottom/right
2680
+ else if(overflow2 > 0 && (mySide !== side2 || overflow1 > 0) ) {
2681
+ position[side1] -= (mySide === CENTER ? -offset : offset) + adjust;
2682
+ newMy.invert(side, side2);
2683
+ }
2684
+
2685
+ // Make sure we haven't made things worse with the adjustment and reset if so
2686
+ if(position[side1] < viewportScroll && -position[side1] > overflow2) {
2687
+ position[side1] = initialPos; newMy = my.clone();
2688
+ }
2689
+ }
2690
+
2691
+ return position[side1] - initialPos;
2692
+ }
2693
+
2694
+ // Set newMy if using flip or flipinvert methods
2695
+ if(methodX !== 'shift' || methodY !== 'shift') { newMy = my.clone(); }
2696
+
2697
+ // Adjust position based onviewport and adjustment options
2698
+ adjusted = {
2699
+ left: methodX !== 'none' ? calculate( X, Y, methodX, adjust.x, LEFT, RIGHT, WIDTH, targetWidth, elemWidth ) : 0,
2700
+ top: methodY !== 'none' ? calculate( Y, X, methodY, adjust.y, TOP, BOTTOM, HEIGHT, targetHeight, elemHeight ) : 0
2701
+ };
2702
+
2703
+ // Set tooltip position class if it's changed
2704
+ if(newMy && cache.lastClass !== (newClass = NAMESPACE + '-pos-' + newMy.abbrev())) {
2705
+ tooltip.removeClass(api.cache.lastClass).addClass( (api.cache.lastClass = newClass) );
2706
+ }
2707
+
2708
+ return adjusted;
2709
+ };
2710
+ ;PLUGINS.polys = {
2711
+ // POLY area coordinate calculator
2712
+ // Special thanks to Ed Cradock for helping out with this.
2713
+ // Uses a binary search algorithm to find suitable coordinates.
2714
+ polygon: function(baseCoords, corner) {
2715
+ var result = {
2716
+ width: 0, height: 0,
2717
+ position: {
2718
+ top: 1e10, right: 0,
2719
+ bottom: 0, left: 1e10
2720
+ },
2721
+ adjustable: FALSE
2722
+ },
2723
+ i = 0, next,
2724
+ coords = [],
2725
+ compareX = 1, compareY = 1,
2726
+ realX = 0, realY = 0,
2727
+ newWidth, newHeight;
2728
+
2729
+ // First pass, sanitize coords and determine outer edges
2730
+ i = baseCoords.length; while(i--) {
2731
+ next = [ parseInt(baseCoords[--i], 10), parseInt(baseCoords[i+1], 10) ];
2732
+
2733
+ if(next[0] > result.position.right){ result.position.right = next[0]; }
2734
+ if(next[0] < result.position.left){ result.position.left = next[0]; }
2735
+ if(next[1] > result.position.bottom){ result.position.bottom = next[1]; }
2736
+ if(next[1] < result.position.top){ result.position.top = next[1]; }
2737
+
2738
+ coords.push(next);
2739
+ }
2740
+
2741
+ // Calculate height and width from outer edges
2742
+ newWidth = result.width = Math.abs(result.position.right - result.position.left);
2743
+ newHeight = result.height = Math.abs(result.position.bottom - result.position.top);
2744
+
2745
+ // If it's the center corner...
2746
+ if(corner.abbrev() === 'c') {
2747
+ result.position = {
2748
+ left: result.position.left + (result.width / 2),
2749
+ top: result.position.top + (result.height / 2)
2750
+ };
2751
+ }
2752
+ else {
2753
+ // Second pass, use a binary search algorithm to locate most suitable coordinate
2754
+ while(newWidth > 0 && newHeight > 0 && compareX > 0 && compareY > 0)
2755
+ {
2756
+ newWidth = Math.floor(newWidth / 2);
2757
+ newHeight = Math.floor(newHeight / 2);
2758
+
2759
+ if(corner.x === LEFT){ compareX = newWidth; }
2760
+ else if(corner.x === RIGHT){ compareX = result.width - newWidth; }
2761
+ else{ compareX += Math.floor(newWidth / 2); }
2762
+
2763
+ if(corner.y === TOP){ compareY = newHeight; }
2764
+ else if(corner.y === BOTTOM){ compareY = result.height - newHeight; }
2765
+ else{ compareY += Math.floor(newHeight / 2); }
2766
+
2767
+ i = coords.length; while(i--)
2768
+ {
2769
+ if(coords.length < 2){ break; }
2770
+
2771
+ realX = coords[i][0] - result.position.left;
2772
+ realY = coords[i][1] - result.position.top;
2773
+
2774
+ if((corner.x === LEFT && realX >= compareX) ||
2775
+ (corner.x === RIGHT && realX <= compareX) ||
2776
+ (corner.x === CENTER && (realX < compareX || realX > (result.width - compareX))) ||
2777
+ (corner.y === TOP && realY >= compareY) ||
2778
+ (corner.y === BOTTOM && realY <= compareY) ||
2779
+ (corner.y === CENTER && (realY < compareY || realY > (result.height - compareY)))) {
2780
+ coords.splice(i, 1);
2781
+ }
2782
+ }
2783
+ }
2784
+ result.position = { left: coords[0][0], top: coords[0][1] };
2785
+ }
2786
+
2787
+ return result;
2788
+ },
2789
+
2790
+ rect: function(ax, ay, bx, by) {
2791
+ return {
2792
+ width: Math.abs(bx - ax),
2793
+ height: Math.abs(by - ay),
2794
+ position: {
2795
+ left: Math.min(ax, bx),
2796
+ top: Math.min(ay, by)
2797
+ }
2798
+ };
2799
+ },
2800
+
2801
+ _angles: {
2802
+ tc: 3 / 2, tr: 7 / 4, tl: 5 / 4,
2803
+ bc: 1 / 2, br: 1 / 4, bl: 3 / 4,
2804
+ rc: 2, lc: 1, c: 0
2805
+ },
2806
+ ellipse: function(cx, cy, rx, ry, corner) {
2807
+ var c = PLUGINS.polys._angles[ corner.abbrev() ],
2808
+ rxc = c === 0 ? 0 : rx * Math.cos( c * Math.PI ),
2809
+ rys = ry * Math.sin( c * Math.PI );
2810
+
2811
+ return {
2812
+ width: (rx * 2) - Math.abs(rxc),
2813
+ height: (ry * 2) - Math.abs(rys),
2814
+ position: {
2815
+ left: cx + rxc,
2816
+ top: cy + rys
2817
+ },
2818
+ adjustable: FALSE
2819
+ };
2820
+ },
2821
+ circle: function(cx, cy, r, corner) {
2822
+ return PLUGINS.polys.ellipse(cx, cy, r, r, corner);
2823
+ }
2824
+ };;PLUGINS.imagemap = function(api, area, corner, adjustMethod)
2825
+ {
2826
+ if(!area.jquery) { area = $(area); }
2827
+
2828
+ var shape = area.attr('shape').toLowerCase().replace('poly', 'polygon'),
2829
+ image = $('img[usemap="#'+area.parent('map').attr('name')+'"]'),
2830
+ coordsString = $.trim(area.attr('coords')),
2831
+ coordsArray = coordsString.replace(/,$/, '').split(','),
2832
+ imageOffset, coords, i, next, result, len;
2833
+
2834
+ // If we can't find the image using the map...
2835
+ if(!image.length) { return FALSE; }
2836
+
2837
+ // Pass coordinates string if polygon
2838
+ if(shape === 'polygon') {
2839
+ result = PLUGINS.polys.polygon(coordsArray, corner);
2840
+ }
2841
+
2842
+ // Otherwise parse the coordinates and pass them as arguments
2843
+ else if(PLUGINS.polys[shape]) {
2844
+ for(i = -1, len = coordsArray.length, coords = []; ++i < len;) {
2845
+ coords.push( parseInt(coordsArray[i], 10) );
2846
+ }
2847
+
2848
+ result = PLUGINS.polys[shape].apply(
2849
+ this, coords.concat(corner)
2850
+ );
2851
+ }
2852
+
2853
+ // If no shapre calculation method was found, return false
2854
+ else { return FALSE; }
2855
+
2856
+ // Make sure we account for padding and borders on the image
2857
+ imageOffset = image.offset();
2858
+ imageOffset.left += Math.ceil((image.outerWidth(FALSE) - image.width()) / 2);
2859
+ imageOffset.top += Math.ceil((image.outerHeight(FALSE) - image.height()) / 2);
2860
+
2861
+ // Add image position to offset coordinates
2862
+ result.position.left += imageOffset.left;
2863
+ result.position.top += imageOffset.top;
2864
+
2865
+ return result;
2866
+ };;PLUGINS.svg = function(api, svg, corner)
2867
+ {
2868
+ var doc = $(document),
2869
+ elem = svg[0],
2870
+ root = $(elem.ownerSVGElement),
2871
+ xScale = 1, yScale = 1,
2872
+ complex = true,
2873
+ rootWidth, rootHeight,
2874
+ mtx, transformed, viewBox,
2875
+ len, next, i, points,
2876
+ result, position, dimensions;
2877
+
2878
+ // Ascend the parentNode chain until we find an element with getBBox()
2879
+ while(!elem.getBBox) { elem = elem.parentNode; }
2880
+ if(!elem.getBBox || !elem.parentNode) { return FALSE; }
2881
+
2882
+ // Determine dimensions where possible
2883
+ rootWidth = root.attr('width') || root.width() || parseInt(root.css('width'), 10);
2884
+ rootHeight = root.attr('height') || root.height() || parseInt(root.css('height'), 10);
2885
+
2886
+ // Add stroke characteristics to scaling
2887
+ var strokeWidth2 = (parseInt(svg.css('stroke-width'), 10) || 0) / 2;
2888
+ if(strokeWidth2) {
2889
+ xScale += strokeWidth2 / rootWidth;
2890
+ yScale += strokeWidth2 / rootHeight;
2891
+ }
2892
+
2893
+ // Determine which shape calculation to use
2894
+ switch(elem.nodeName) {
2895
+ case 'ellipse':
2896
+ case 'circle':
2897
+ result = PLUGINS.polys.ellipse(
2898
+ elem.cx.baseVal.value,
2899
+ elem.cy.baseVal.value,
2900
+ (elem.rx || elem.r).baseVal.value + strokeWidth2,
2901
+ (elem.ry || elem.r).baseVal.value + strokeWidth2,
2902
+ corner
2903
+ );
2904
+ break;
2905
+
2906
+ case 'line':
2907
+ case 'polygon':
2908
+ case 'polyline':
2909
+ // Determine points object (line has none, so mimic using array)
2910
+ points = elem.points || [
2911
+ { x: elem.x1.baseVal.value, y: elem.y1.baseVal.value },
2912
+ { x: elem.x2.baseVal.value, y: elem.y2.baseVal.value }
2913
+ ];
2914
+
2915
+ for(result = [], i = -1, len = points.numberOfItems || points.length; ++i < len;) {
2916
+ next = points.getItem ? points.getItem(i) : points[i];
2917
+ result.push.apply(result, [next.x, next.y]);
2918
+ }
2919
+
2920
+ result = PLUGINS.polys.polygon(result, corner);
2921
+ break;
2922
+
2923
+ // Unknown shape or rectangle? Use bounding box
2924
+ default:
2925
+ result = elem.getBoundingClientRect();
2926
+ result = {
2927
+ width: result.width, height: result.height,
2928
+ position: {
2929
+ left: result.left,
2930
+ top: result.top
2931
+ }
2932
+ };
2933
+ complex = false;
2934
+ break;
2935
+ }
2936
+
2937
+ // Shortcut assignments
2938
+ position = result.position;
2939
+ root = root[0];
2940
+
2941
+ // If the shape was complex (i.e. not using bounding box calculations)
2942
+ if(complex) {
2943
+ // Convert position into a pixel value
2944
+ if(root.createSVGPoint) {
2945
+ mtx = elem.getScreenCTM();
2946
+ points = root.createSVGPoint();
2947
+
2948
+ points.x = position.left;
2949
+ points.y = position.top;
2950
+ transformed = points.matrixTransform( mtx );
2951
+ position.left = transformed.x;
2952
+ position.top = transformed.y;
2953
+ }
2954
+
2955
+ // Calculate viewBox characteristics
2956
+ if(root.viewBox && (viewBox = root.viewBox.baseVal) && viewBox.width && viewBox.height) {
2957
+ xScale *= rootWidth / viewBox.width;
2958
+ yScale *= rootHeight / viewBox.height;
2959
+ }
2960
+ }
2961
+
2962
+ // Adjust by scroll offset
2963
+ position.left += doc.scrollLeft();
2964
+ position.top += doc.scrollTop();
2965
+
2966
+ return result;
2967
+ };;var MODAL, OVERLAY,
2968
+ MODALCLASS = 'qtip-modal',
2969
+ MODALSELECTOR = '.'+MODALCLASS;
2970
+
2971
+ OVERLAY = function()
2972
+ {
2973
+ var self = this,
2974
+ focusableElems = {},
2975
+ current, onLast,
2976
+ prevState, elem;
2977
+
2978
+ // Modified code from jQuery UI 1.10.0 source
2979
+ // http://code.jquery.com/ui/1.10.0/jquery-ui.js
2980
+ function focusable(element) {
2981
+ // Use the defined focusable checker when possible
2982
+ if($.expr[':'].focusable) { return $.expr[':'].focusable; }
2983
+
2984
+ var isTabIndexNotNaN = !isNaN($.attr(element, 'tabindex')),
2985
+ nodeName = element.nodeName && element.nodeName.toLowerCase(),
2986
+ map, mapName, img;
2987
+
2988
+ if('area' === nodeName) {
2989
+ map = element.parentNode;
2990
+ mapName = map.name;
2991
+ if(!element.href || !mapName || map.nodeName.toLowerCase() !== 'map') {
2992
+ return false;
2993
+ }
2994
+ img = $('img[usemap=#' + mapName + ']')[0];
2995
+ return !!img && img.is(':visible');
2996
+ }
2997
+ return (/input|select|textarea|button|object/.test( nodeName ) ?
2998
+ !element.disabled :
2999
+ 'a' === nodeName ?
3000
+ element.href || isTabIndexNotNaN :
3001
+ isTabIndexNotNaN
3002
+ );
3003
+ }
3004
+
3005
+ // Focus inputs using cached focusable elements (see update())
3006
+ function focusInputs(blurElems) {
3007
+ // Blurring body element in IE causes window.open windows to unfocus!
3008
+ if(focusableElems.length < 1 && blurElems.length) { blurElems.not('body').blur(); }
3009
+
3010
+ // Focus the inputs
3011
+ else { focusableElems.first().focus(); }
3012
+ }
3013
+
3014
+ // Steal focus from elements outside tooltip
3015
+ function stealFocus(event) {
3016
+ if(!elem.is(':visible')) { return; }
3017
+
3018
+ var target = $(event.target),
3019
+ tooltip = current.tooltip,
3020
+ container = target.closest(SELECTOR),
3021
+ targetOnTop;
3022
+
3023
+ // Determine if input container target is above this
3024
+ targetOnTop = container.length < 1 ? FALSE :
3025
+ (parseInt(container[0].style.zIndex, 10) > parseInt(tooltip[0].style.zIndex, 10));
3026
+
3027
+ // If we're showing a modal, but focus has landed on an input below
3028
+ // this modal, divert focus to the first visible input in this modal
3029
+ // or if we can't find one... the tooltip itself
3030
+ if(!targetOnTop && target.closest(SELECTOR)[0] !== tooltip[0]) {
3031
+ focusInputs(target);
3032
+ }
3033
+
3034
+ // Detect when we leave the last focusable element...
3035
+ onLast = event.target === focusableElems[focusableElems.length - 1];
3036
+ }
3037
+
3038
+ $.extend(self, {
3039
+ init: function() {
3040
+ // Create document overlay
3041
+ elem = self.elem = $('<div />', {
3042
+ id: 'qtip-overlay',
3043
+ html: '<div></div>',
3044
+ mousedown: function() { return FALSE; }
3045
+ })
3046
+ .hide();
3047
+
3048
+ // Make sure we can't focus anything outside the tooltip
3049
+ $(document.body).bind('focusin'+MODALSELECTOR, stealFocus);
3050
+
3051
+ // Apply keyboard "Escape key" close handler
3052
+ $(document).bind('keydown'+MODALSELECTOR, function(event) {
3053
+ if(current && current.options.show.modal.escape && event.keyCode === 27) {
3054
+ current.hide(event);
3055
+ }
3056
+ });
3057
+
3058
+ // Apply click handler for blur option
3059
+ elem.bind('click'+MODALSELECTOR, function(event) {
3060
+ if(current && current.options.show.modal.blur) {
3061
+ current.hide(event);
3062
+ }
3063
+ });
3064
+
3065
+ return self;
3066
+ },
3067
+
3068
+ update: function(api) {
3069
+ // Update current API reference
3070
+ current = api;
3071
+
3072
+ // Update focusable elements if enabled
3073
+ if(api.options.show.modal.stealfocus !== FALSE) {
3074
+ focusableElems = api.tooltip.find('*').filter(function() {
3075
+ return focusable(this);
3076
+ });
3077
+ }
3078
+ else { focusableElems = []; }
3079
+ },
3080
+
3081
+ toggle: function(api, state, duration) {
3082
+ var docBody = $(document.body),
3083
+ tooltip = api.tooltip,
3084
+ options = api.options.show.modal,
3085
+ effect = options.effect,
3086
+ type = state ? 'show': 'hide',
3087
+ visible = elem.is(':visible'),
3088
+ visibleModals = $(MODALSELECTOR).filter(':visible:not(:animated)').not(tooltip),
3089
+ zindex;
3090
+
3091
+ // Set active tooltip API reference
3092
+ self.update(api);
3093
+
3094
+ // If the modal can steal the focus...
3095
+ // Blur the current item and focus anything in the modal we an
3096
+ if(state && options.stealfocus !== FALSE) {
3097
+ focusInputs( $(':focus') );
3098
+ }
3099
+
3100
+ // Toggle backdrop cursor style on show
3101
+ elem.toggleClass('blurs', options.blur);
3102
+
3103
+ // Append to body on show
3104
+ if(state) {
3105
+ elem.appendTo(document.body);
3106
+ }
3107
+
3108
+ // Prevent modal from conflicting with show.solo, and don't hide backdrop is other modals are visible
3109
+ if((elem.is(':animated') && visible === state && prevState !== FALSE) || (!state && visibleModals.length)) {
3110
+ return self;
3111
+ }
3112
+
3113
+ // Stop all animations
3114
+ elem.stop(TRUE, FALSE);
3115
+
3116
+ // Use custom function if provided
3117
+ if($.isFunction(effect)) {
3118
+ effect.call(elem, state);
3119
+ }
3120
+
3121
+ // If no effect type is supplied, use a simple toggle
3122
+ else if(effect === FALSE) {
3123
+ elem[ type ]();
3124
+ }
3125
+
3126
+ // Use basic fade function
3127
+ else {
3128
+ elem.fadeTo( parseInt(duration, 10) || 90, state ? 1 : 0, function() {
3129
+ if(!state) { elem.hide(); }
3130
+ });
3131
+ }
3132
+
3133
+ // Reset position and detach from body on hide
3134
+ if(!state) {
3135
+ elem.queue(function(next) {
3136
+ elem.css({ left: '', top: '' });
3137
+ if(!$(MODALSELECTOR).length) { elem.detach(); }
3138
+ next();
3139
+ });
3140
+ }
3141
+
3142
+ // Cache the state
3143
+ prevState = state;
3144
+
3145
+ // If the tooltip is destroyed, set reference to null
3146
+ if(current.destroyed) { current = NULL; }
3147
+
3148
+ return self;
3149
+ }
3150
+ });
3151
+
3152
+ self.init();
3153
+ };
3154
+ OVERLAY = new OVERLAY();
3155
+
3156
+ function Modal(api, options) {
3157
+ this.options = options;
3158
+ this._ns = '-modal';
3159
+
3160
+ this.init( (this.qtip = api) );
3161
+ }
3162
+
3163
+ $.extend(Modal.prototype, {
3164
+ init: function(qtip) {
3165
+ var tooltip = qtip.tooltip;
3166
+
3167
+ // If modal is disabled... return
3168
+ if(!this.options.on) { return this; }
3169
+
3170
+ // Set overlay reference
3171
+ qtip.elements.overlay = OVERLAY.elem;
3172
+
3173
+ // Add unique attribute so we can grab modal tooltips easily via a SELECTOR, and set z-index
3174
+ tooltip.addClass(MODALCLASS).css('z-index', QTIP.modal_zindex + $(MODALSELECTOR).length);
3175
+
3176
+ // Apply our show/hide/focus modal events
3177
+ qtip._bind(tooltip, ['tooltipshow', 'tooltiphide'], function(event, api, duration) {
3178
+ var oEvent = event.originalEvent;
3179
+
3180
+ // Make sure mouseout doesn't trigger a hide when showing the modal and mousing onto backdrop
3181
+ if(event.target === tooltip[0]) {
3182
+ if(oEvent && event.type === 'tooltiphide' && /mouse(leave|enter)/.test(oEvent.type) && $(oEvent.relatedTarget).closest(OVERLAY.elem[0]).length) {
3183
+ try { event.preventDefault(); } catch(e) {}
3184
+ }
3185
+ else if(!oEvent || (oEvent && oEvent.type !== 'tooltipsolo')) {
3186
+ this.toggle(event, event.type === 'tooltipshow', duration);
3187
+ }
3188
+ }
3189
+ }, this._ns, this);
3190
+
3191
+ // Adjust modal z-index on tooltip focus
3192
+ qtip._bind(tooltip, 'tooltipfocus', function(event, api) {
3193
+ // If focus was cancelled before it reached us, don't do anything
3194
+ if(event.isDefaultPrevented() || event.target !== tooltip[0]) { return; }
3195
+
3196
+ var qtips = $(MODALSELECTOR),
3197
+
3198
+ // Keep the modal's lower than other, regular qtips
3199
+ newIndex = QTIP.modal_zindex + qtips.length,
3200
+ curIndex = parseInt(tooltip[0].style.zIndex, 10);
3201
+
3202
+ // Set overlay z-index
3203
+ OVERLAY.elem[0].style.zIndex = newIndex - 1;
3204
+
3205
+ // Reduce modal z-index's and keep them properly ordered
3206
+ qtips.each(function() {
3207
+ if(this.style.zIndex > curIndex) {
3208
+ this.style.zIndex -= 1;
3209
+ }
3210
+ });
3211
+
3212
+ // Fire blur event for focused tooltip
3213
+ qtips.filter('.' + CLASS_FOCUS).qtip('blur', event.originalEvent);
3214
+
3215
+ // Set the new z-index
3216
+ tooltip.addClass(CLASS_FOCUS)[0].style.zIndex = newIndex;
3217
+
3218
+ // Set current
3219
+ OVERLAY.update(api);
3220
+
3221
+ // Prevent default handling
3222
+ try { event.preventDefault(); } catch(e) {}
3223
+ }, this._ns, this);
3224
+
3225
+ // Focus any other visible modals when this one hides
3226
+ qtip._bind(tooltip, 'tooltiphide', function(event) {
3227
+ if(event.target === tooltip[0]) {
3228
+ $(MODALSELECTOR).filter(':visible').not(tooltip).last().qtip('focus', event);
3229
+ }
3230
+ }, this._ns, this);
3231
+ },
3232
+
3233
+ toggle: function(event, state, duration) {
3234
+ // Make sure default event hasn't been prevented
3235
+ if(event && event.isDefaultPrevented()) { return this; }
3236
+
3237
+ // Toggle it
3238
+ OVERLAY.toggle(this.qtip, !!state, duration);
3239
+ },
3240
+
3241
+ destroy: function() {
3242
+ // Remove modal class
3243
+ this.qtip.tooltip.removeClass(MODALCLASS);
3244
+
3245
+ // Remove bound events
3246
+ this.qtip._unbind(this.qtip.tooltip, this._ns);
3247
+
3248
+ // Delete element reference
3249
+ OVERLAY.toggle(this.qtip, FALSE);
3250
+ delete this.qtip.elements.overlay;
3251
+ }
3252
+ });
3253
+
3254
+
3255
+ MODAL = PLUGINS.modal = function(api) {
3256
+ return new Modal(api, api.options.show.modal);
3257
+ };
3258
+
3259
+ // Setup sanitiztion rules
3260
+ MODAL.sanitize = function(opts) {
3261
+ if(opts.show) {
3262
+ if(typeof opts.show.modal !== 'object') { opts.show.modal = { on: !!opts.show.modal }; }
3263
+ else if(typeof opts.show.modal.on === 'undefined') { opts.show.modal.on = TRUE; }
3264
+ }
3265
+ };
3266
+
3267
+ // Base z-index for all modal tooltips (use qTip core z-index as a base)
3268
+ QTIP.modal_zindex = QTIP.zindex - 200;
3269
+
3270
+ // Plugin needs to be initialized on render
3271
+ MODAL.initialize = 'render';
3272
+
3273
+ // Setup option set checks
3274
+ CHECKS.modal = {
3275
+ '^show.modal.(on|blur)$': function() {
3276
+ // Initialise
3277
+ this.destroy();
3278
+ this.init();
3279
+
3280
+ // Show the modal if not visible already and tooltip is visible
3281
+ this.qtip.elems.overlay.toggle(
3282
+ this.qtip.tooltip[0].offsetWidth > 0
3283
+ );
3284
+ }
3285
+ };
3286
+
3287
+ // Extend original api defaults
3288
+ $.extend(TRUE, QTIP.defaults, {
3289
+ show: {
3290
+ modal: {
3291
+ on: FALSE,
3292
+ effect: TRUE,
3293
+ blur: TRUE,
3294
+ stealfocus: TRUE,
3295
+ escape: TRUE
3296
+ }
3297
+ }
3298
+ });
3299
+ ;}));
3300
+ }( window, document ));
3301
+
3302
+
admin/includes/tooltips/jquery.qtip.min.css CHANGED
@@ -1,2 +1,2 @@
1
- /* qTip2 v2.2.0 css3 | qtip2.com | Licensed MIT, GPL | Sun Mar 16 2014 07:12:39 */
2
  .qtip{position:absolute;left:-28000px;top:-28000px;display:none;max-width:280px;min-width:50px;font-size:10.5px;line-height:12px;direction:ltr;box-shadow:none;padding:0}.qtip-content{position:relative;padding:5px 9px;overflow:hidden;text-align:left;word-wrap:break-word}.qtip-titlebar{position:relative;padding:5px 35px 5px 10px;overflow:hidden;border-width:0 0 1px;font-weight:700}.qtip-titlebar+.qtip-content{border-top-width:0!important}.qtip-close{position:absolute;right:-9px;top:-9px;cursor:pointer;outline:medium none;border-width:1px;border-style:solid;border-color:transparent}.qtip-titlebar .qtip-close{right:4px;top:50%;margin-top:-9px}* html .qtip-titlebar .qtip-close{top:16px}.qtip-titlebar .ui-icon,.qtip-icon .ui-icon{display:block;text-indent:-1000em;direction:ltr}.qtip-icon,.qtip-icon .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;text-decoration:none}.qtip-icon .ui-icon{width:18px;height:14px;line-height:14px;text-align:center;text-indent:0;font:400 bold 10px/13px Tahoma,sans-serif;color:inherit;background:transparent none no-repeat -100em -100em}.qtip-focus{}.qtip-hover{}.qtip-default{border-width:1px;border-style:solid;border-color:#F1D031;background-color:#FFFFA3;color:#555}.qtip-default .qtip-titlebar{background-color:#FFEF93}.qtip-default .qtip-icon{border-color:#CCC;background:#F1F1F1;color:#777}.qtip-default .qtip-titlebar .qtip-close{border-color:#AAA;color:#111}.qtip-shadow{-webkit-box-shadow:1px 1px 3px 1px rgba(0,0,0,.15);-moz-box-shadow:1px 1px 3px 1px rgba(0,0,0,.15);box-shadow:1px 1px 3px 1px rgba(0,0,0,.15)}.qtip-rounded,.qtip-tipsy,.qtip-bootstrap{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.qtip-rounded .qtip-titlebar{-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.qtip-youtube{-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 3px #333;-moz-box-shadow:0 0 3px #333;box-shadow:0 0 3px #333;color:#fff;border-width:0;background:#4A4A4A;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#4A4A4A),color-stop(100%,#000));background-image:-webkit-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-moz-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-ms-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-o-linear-gradient(top,#4A4A4A 0,#000 100%)}.qtip-youtube .qtip-titlebar{background-color:#4A4A4A;background-color:rgba(0,0,0,0)}.qtip-youtube .qtip-content{padding:.75em;font:12px arial,sans-serif;filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#4a4a4a, EndColorStr=#000000);-ms-filter:"progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#4a4a4a, EndColorStr=#000000);"}.qtip-youtube .qtip-icon{border-color:#222}.qtip-youtube .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-jtools{background:#232323;background:rgba(0,0,0,.7);background-image:-webkit-gradient(linear,left top,left bottom,from(#717171),to(#232323));background-image:-moz-linear-gradient(top,#717171,#232323);background-image:-webkit-linear-gradient(top,#717171,#232323);background-image:-ms-linear-gradient(top,#717171,#232323);background-image:-o-linear-gradient(top,#717171,#232323);border:2px solid #ddd;border:2px solid rgba(241,241,241,1);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 12px #333;-moz-box-shadow:0 0 12px #333;box-shadow:0 0 12px #333}.qtip-jtools .qtip-titlebar{background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171, endColorstr=#4A4A4A);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171, endColorstr=#4A4A4A)"}.qtip-jtools .qtip-content{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A, endColorstr=#232323);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A, endColorstr=#232323)"}.qtip-jtools .qtip-titlebar,.qtip-jtools .qtip-content{background:transparent;color:#fff;border:0 dashed transparent}.qtip-jtools .qtip-icon{border-color:#555}.qtip-jtools .qtip-titlebar .ui-state-hover{border-color:#333}.qtip-cluetip{-webkit-box-shadow:4px 4px 5px rgba(0,0,0,.4);-moz-box-shadow:4px 4px 5px rgba(0,0,0,.4);box-shadow:4px 4px 5px rgba(0,0,0,.4);background-color:#D9D9C2;color:#111;border:0 dashed transparent}.qtip-cluetip .qtip-titlebar{background-color:#87876A;color:#fff;border:0 dashed transparent}.qtip-cluetip .qtip-icon{border-color:#808064}.qtip-cluetip .qtip-titlebar .ui-state-hover{border-color:#696952;color:#696952}.qtip-tipsy{background:#000;background:rgba(0,0,0,.87);color:#fff;border:0 solid transparent;font-size:11px;font-family:'Lucida Grande',sans-serif;font-weight:700;line-height:16px;text-shadow:0 1px #000}.qtip-tipsy .qtip-titlebar{padding:6px 35px 0 10px;background-color:transparent}.qtip-tipsy .qtip-content{padding:6px 10px}.qtip-tipsy .qtip-icon{border-color:#222;text-shadow:none}.qtip-tipsy .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-tipped{border:3px solid #959FA9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-color:#F9F9F9;color:#454545;font-weight:400;font-family:serif}.qtip-tipped .qtip-titlebar{border-bottom-width:0;color:#fff;background:#3A79B8;background-image:-webkit-gradient(linear,left top,left bottom,from(#3A79B8),to(#2E629D));background-image:-webkit-linear-gradient(top,#3A79B8,#2E629D);background-image:-moz-linear-gradient(top,#3A79B8,#2E629D);background-image:-ms-linear-gradient(top,#3A79B8,#2E629D);background-image:-o-linear-gradient(top,#3A79B8,#2E629D);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8, endColorstr=#2E629D);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8, endColorstr=#2E629D)"}.qtip-tipped .qtip-icon{border:2px solid #285589;background:#285589}.qtip-tipped .qtip-icon .ui-icon{background-color:#FBFBFB;color:#555}.qtip-bootstrap{font-size:14px;line-height:20px;color:#333;padding:1px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.qtip-bootstrap .qtip-titlebar{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.qtip-bootstrap .qtip-titlebar .qtip-close{right:11px;top:45%;border-style:none}.qtip-bootstrap .qtip-content{padding:9px 14px}.qtip-bootstrap .qtip-icon{background:transparent}.qtip-bootstrap .qtip-icon .ui-icon{width:auto;height:auto;float:right;font-size:20px;font-weight:700;line-height:18px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.qtip-bootstrap .qtip-icon .ui-icon:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}.qtip:not(.ie9haxors) div.qtip-content,.qtip:not(.ie9haxors) div.qtip-titlebar{filter:none;-ms-filter:none}.qtip .qtip-tip{margin:0 auto;overflow:hidden;z-index:10}x:-o-prefocus,.qtip .qtip-tip{visibility:hidden}.qtip .qtip-tip,.qtip .qtip-tip .qtip-vml,.qtip .qtip-tip canvas{position:absolute;color:#123456;background:transparent;border:0 dashed transparent}.qtip .qtip-tip canvas{top:0;left:0}.qtip .qtip-tip .qtip-vml{behavior:url(#default#VML);display:inline-block;visibility:visible}#qtip-overlay{position:fixed;left:0;top:0;width:100%;height:100%}#qtip-overlay.blurs{cursor:pointer}#qtip-overlay div{position:absolute;left:0;top:0;width:100%;height:100%;background-color:#000;opacity:.7;filter:alpha(opacity=70);-ms-filter:"alpha(Opacity=70)"}
1
+ /* qTip2 v2.2.0 css3 | qtip2.com | Licensed MIT, GPL | Sun Mar 16 2014 07:12:39 */
2
  .qtip{position:absolute;left:-28000px;top:-28000px;display:none;max-width:280px;min-width:50px;font-size:10.5px;line-height:12px;direction:ltr;box-shadow:none;padding:0}.qtip-content{position:relative;padding:5px 9px;overflow:hidden;text-align:left;word-wrap:break-word}.qtip-titlebar{position:relative;padding:5px 35px 5px 10px;overflow:hidden;border-width:0 0 1px;font-weight:700}.qtip-titlebar+.qtip-content{border-top-width:0!important}.qtip-close{position:absolute;right:-9px;top:-9px;cursor:pointer;outline:medium none;border-width:1px;border-style:solid;border-color:transparent}.qtip-titlebar .qtip-close{right:4px;top:50%;margin-top:-9px}* html .qtip-titlebar .qtip-close{top:16px}.qtip-titlebar .ui-icon,.qtip-icon .ui-icon{display:block;text-indent:-1000em;direction:ltr}.qtip-icon,.qtip-icon .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;text-decoration:none}.qtip-icon .ui-icon{width:18px;height:14px;line-height:14px;text-align:center;text-indent:0;font:400 bold 10px/13px Tahoma,sans-serif;color:inherit;background:transparent none no-repeat -100em -100em}.qtip-focus{}.qtip-hover{}.qtip-default{border-width:1px;border-style:solid;border-color:#F1D031;background-color:#FFFFA3;color:#555}.qtip-default .qtip-titlebar{background-color:#FFEF93}.qtip-default .qtip-icon{border-color:#CCC;background:#F1F1F1;color:#777}.qtip-default .qtip-titlebar .qtip-close{border-color:#AAA;color:#111}.qtip-shadow{-webkit-box-shadow:1px 1px 3px 1px rgba(0,0,0,.15);-moz-box-shadow:1px 1px 3px 1px rgba(0,0,0,.15);box-shadow:1px 1px 3px 1px rgba(0,0,0,.15)}.qtip-rounded,.qtip-tipsy,.qtip-bootstrap{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.qtip-rounded .qtip-titlebar{-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.qtip-youtube{-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 3px #333;-moz-box-shadow:0 0 3px #333;box-shadow:0 0 3px #333;color:#fff;border-width:0;background:#4A4A4A;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#4A4A4A),color-stop(100%,#000));background-image:-webkit-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-moz-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-ms-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-o-linear-gradient(top,#4A4A4A 0,#000 100%)}.qtip-youtube .qtip-titlebar{background-color:#4A4A4A;background-color:rgba(0,0,0,0)}.qtip-youtube .qtip-content{padding:.75em;font:12px arial,sans-serif;filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#4a4a4a, EndColorStr=#000000);-ms-filter:"progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#4a4a4a, EndColorStr=#000000);"}.qtip-youtube .qtip-icon{border-color:#222}.qtip-youtube .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-jtools{background:#232323;background:rgba(0,0,0,.7);background-image:-webkit-gradient(linear,left top,left bottom,from(#717171),to(#232323));background-image:-moz-linear-gradient(top,#717171,#232323);background-image:-webkit-linear-gradient(top,#717171,#232323);background-image:-ms-linear-gradient(top,#717171,#232323);background-image:-o-linear-gradient(top,#717171,#232323);border:2px solid #ddd;border:2px solid rgba(241,241,241,1);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 12px #333;-moz-box-shadow:0 0 12px #333;box-shadow:0 0 12px #333}.qtip-jtools .qtip-titlebar{background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171, endColorstr=#4A4A4A);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171, endColorstr=#4A4A4A)"}.qtip-jtools .qtip-content{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A, endColorstr=#232323);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A, endColorstr=#232323)"}.qtip-jtools .qtip-titlebar,.qtip-jtools .qtip-content{background:transparent;color:#fff;border:0 dashed transparent}.qtip-jtools .qtip-icon{border-color:#555}.qtip-jtools .qtip-titlebar .ui-state-hover{border-color:#333}.qtip-cluetip{-webkit-box-shadow:4px 4px 5px rgba(0,0,0,.4);-moz-box-shadow:4px 4px 5px rgba(0,0,0,.4);box-shadow:4px 4px 5px rgba(0,0,0,.4);background-color:#D9D9C2;color:#111;border:0 dashed transparent}.qtip-cluetip .qtip-titlebar{background-color:#87876A;color:#fff;border:0 dashed transparent}.qtip-cluetip .qtip-icon{border-color:#808064}.qtip-cluetip .qtip-titlebar .ui-state-hover{border-color:#696952;color:#696952}.qtip-tipsy{background:#000;background:rgba(0,0,0,.87);color:#fff;border:0 solid transparent;font-size:11px;font-family:'Lucida Grande',sans-serif;font-weight:700;line-height:16px;text-shadow:0 1px #000}.qtip-tipsy .qtip-titlebar{padding:6px 35px 0 10px;background-color:transparent}.qtip-tipsy .qtip-content{padding:6px 10px}.qtip-tipsy .qtip-icon{border-color:#222;text-shadow:none}.qtip-tipsy .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-tipped{border:3px solid #959FA9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-color:#F9F9F9;color:#454545;font-weight:400;font-family:serif}.qtip-tipped .qtip-titlebar{border-bottom-width:0;color:#fff;background:#3A79B8;background-image:-webkit-gradient(linear,left top,left bottom,from(#3A79B8),to(#2E629D));background-image:-webkit-linear-gradient(top,#3A79B8,#2E629D);background-image:-moz-linear-gradient(top,#3A79B8,#2E629D);background-image:-ms-linear-gradient(top,#3A79B8,#2E629D);background-image:-o-linear-gradient(top,#3A79B8,#2E629D);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8, endColorstr=#2E629D);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8, endColorstr=#2E629D)"}.qtip-tipped .qtip-icon{border:2px solid #285589;background:#285589}.qtip-tipped .qtip-icon .ui-icon{background-color:#FBFBFB;color:#555}.qtip-bootstrap{font-size:14px;line-height:20px;color:#333;padding:1px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.qtip-bootstrap .qtip-titlebar{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.qtip-bootstrap .qtip-titlebar .qtip-close{right:11px;top:45%;border-style:none}.qtip-bootstrap .qtip-content{padding:9px 14px}.qtip-bootstrap .qtip-icon{background:transparent}.qtip-bootstrap .qtip-icon .ui-icon{width:auto;height:auto;float:right;font-size:20px;font-weight:700;line-height:18px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.qtip-bootstrap .qtip-icon .ui-icon:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}.qtip:not(.ie9haxors) div.qtip-content,.qtip:not(.ie9haxors) div.qtip-titlebar{filter:none;-ms-filter:none}.qtip .qtip-tip{margin:0 auto;overflow:hidden;z-index:10}x:-o-prefocus,.qtip .qtip-tip{visibility:hidden}.qtip .qtip-tip,.qtip .qtip-tip .qtip-vml,.qtip .qtip-tip canvas{position:absolute;color:#123456;background:transparent;border:0 dashed transparent}.qtip .qtip-tip canvas{top:0;left:0}.qtip .qtip-tip .qtip-vml{behavior:url(#default#VML);display:inline-block;visibility:visible}#qtip-overlay{position:fixed;left:0;top:0;width:100%;height:100%}#qtip-overlay.blurs{cursor:pointer}#qtip-overlay div{position:absolute;left:0;top:0;width:100%;height:100%;background-color:#000;opacity:.7;filter:alpha(opacity=70);-ms-filter:"alpha(Opacity=70)"}
admin/includes/tooltips/jquery.qtip.min.js CHANGED
@@ -1,5 +1,4 @@
1
- /* qTip2 v2.2.0 tips viewport imagemap svg modal | qtip2.com | Licensed MIT, GPL | Sun Mar 16 2014 07:12:37 */
2
-
3
- !function(a,b,c){!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):jQuery&&!jQuery.fn.qtip&&a(jQuery)}(function(d){"use strict";function e(a,b,c,e){this.id=c,this.target=a,this.tooltip=F,this.elements={target:a},this._id=S+"-"+c,this.timers={img:{}},this.options=b,this.plugins={},this.cache={event:{},target:d(),disabled:E,attr:e,onTooltip:E,lastClass:""},this.rendered=this.destroyed=this.disabled=this.waiting=this.hiddenDuringWait=this.positioning=this.triggering=E}function f(a){return a===F||"object"!==d.type(a)}function g(a){return!(d.isFunction(a)||a&&a.attr||a.length||"object"===d.type(a)&&(a.jquery||a.then))}function h(a){var b,c,e,h;return f(a)?E:(f(a.metadata)&&(a.metadata={type:a.metadata}),"content"in a&&(b=a.content,f(b)||b.jquery||b.done?b=a.content={text:c=g(b)?E:b}:c=b.text,"ajax"in b&&(e=b.ajax,h=e&&e.once!==E,delete b.ajax,b.text=function(a,b){var f=c||d(this).attr(b.options.content.attr)||"Loading...",g=d.ajax(d.extend({},e,{context:b})).then(e.success,F,e.error).then(function(a){return a&&h&&b.set("content.text",a),a},function(a,c,d){b.destroyed||0===a.status||b.set("content.text",c+": "+d)});return h?f:(b.set("content.text",f),g)}),"title"in b&&(f(b.title)||(b.button=b.title.button,b.title=b.title.text),g(b.title||E)&&(b.title=E))),"position"in a&&f(a.position)&&(a.position={my:a.position,at:a.position}),"show"in a&&f(a.show)&&(a.show=a.show.jquery?{target:a.show}:a.show===D?{ready:D}:{event:a.show}),"hide"in a&&f(a.hide)&&(a.hide=a.hide.jquery?{target:a.hide}:{event:a.hide}),"style"in a&&f(a.style)&&(a.style={classes:a.style}),d.each(R,function(){this.sanitize&&this.sanitize(a)}),a)}function i(a,b){for(var c,d=0,e=a,f=b.split(".");e=e[f[d++]];)d<f.length&&(c=e);return[c||a,f.pop()]}function j(a,b){var c,d,e;for(c in this.checks)for(d in this.checks[c])(e=new RegExp(d,"i").exec(a))&&(b.push(e),("builtin"===c||this.plugins[c])&&this.checks[c][d].apply(this.plugins[c]||this,b))}function k(a){return V.concat("").join(a?"-"+a+" ":" ")}function l(c){return c&&{type:c.type,pageX:c.pageX,pageY:c.pageY,target:c.target,relatedTarget:c.relatedTarget,scrollX:c.scrollX||a.pageXOffset||b.body.scrollLeft||b.documentElement.scrollLeft,scrollY:c.scrollY||a.pageYOffset||b.body.scrollTop||b.documentElement.scrollTop}||{}}function m(a,b){return b>0?setTimeout(d.proxy(a,this),b):(a.call(this),void 0)}function n(a){return this.tooltip.hasClass(ab)?E:(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this.timers.show=m.call(this,function(){this.toggle(D,a)},this.options.show.delay),void 0)}function o(a){if(this.tooltip.hasClass(ab))return E;var b=d(a.relatedTarget),c=b.closest(W)[0]===this.tooltip[0],e=b[0]===this.options.show.target[0];if(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this!==b[0]&&"mouse"===this.options.position.target&&c||this.options.hide.fixed&&/mouse(out|leave|move)/.test(a.type)&&(c||e))try{a.preventDefault(),a.stopImmediatePropagation()}catch(f){}else this.timers.hide=m.call(this,function(){this.toggle(E,a)},this.options.hide.delay,this)}function p(a){return this.tooltip.hasClass(ab)||!this.options.hide.inactive?E:(clearTimeout(this.timers.inactive),this.timers.inactive=m.call(this,function(){this.hide(a)},this.options.hide.inactive),void 0)}function q(a){this.rendered&&this.tooltip[0].offsetWidth>0&&this.reposition(a)}function r(a,c,e){d(b.body).delegate(a,(c.split?c:c.join(hb+" "))+hb,function(){var a=y.api[d.attr(this,U)];a&&!a.disabled&&e.apply(a,arguments)})}function s(a,c,f){var g,i,j,k,l,m=d(b.body),n=a[0]===b?m:a,o=a.metadata?a.metadata(f.metadata):F,p="html5"===f.metadata.type&&o?o[f.metadata.name]:F,q=a.data(f.metadata.name||"qtipopts");try{q="string"==typeof q?d.parseJSON(q):q}catch(r){}if(k=d.extend(D,{},y.defaults,f,"object"==typeof q?h(q):F,h(p||o)),i=k.position,k.id=c,"boolean"==typeof k.content.text){if(j=a.attr(k.content.attr),k.content.attr===E||!j)return E;k.content.text=j}if(i.container.length||(i.container=m),i.target===E&&(i.target=n),k.show.target===E&&(k.show.target=n),k.show.solo===D&&(k.show.solo=i.container.closest("body")),k.hide.target===E&&(k.hide.target=n),k.position.viewport===D&&(k.position.viewport=i.container),i.container=i.container.eq(0),i.at=new A(i.at,D),i.my=new A(i.my),a.data(S))if(k.overwrite)a.qtip("destroy",!0);else if(k.overwrite===E)return E;return a.attr(T,c),k.suppress&&(l=a.attr("title"))&&a.removeAttr("title").attr(cb,l).attr("title",""),g=new e(a,k,c,!!j),a.data(S,g),a.one("remove.qtip-"+c+" removeqtip.qtip-"+c,function(){var a;(a=d(this).data(S))&&a.destroy(!0)}),g}function t(a){return a.charAt(0).toUpperCase()+a.slice(1)}function u(a,b){var d,e,f=b.charAt(0).toUpperCase()+b.slice(1),g=(b+" "+sb.join(f+" ")+f).split(" "),h=0;if(rb[b])return a.css(rb[b]);for(;d=g[h++];)if((e=a.css(d))!==c)return rb[b]=d,e}function v(a,b){return Math.ceil(parseFloat(u(a,b)))}function w(a,b){this._ns="tip",this.options=b,this.offset=b.offset,this.size=[b.width,b.height],this.init(this.qtip=a)}function x(a,b){this.options=b,this._ns="-modal",this.init(this.qtip=a)}var y,z,A,B,C,D=!0,E=!1,F=null,G="x",H="y",I="width",J="height",K="top",L="left",M="bottom",N="right",O="center",P="flipinvert",Q="shift",R={},S="qtip",T="data-hasqtip",U="data-qtip-id",V=["ui-widget","ui-tooltip"],W="."+S,X="click dblclick mousedown mouseup mousemove mouseleave mouseenter".split(" "),Y=S+"-fixed",Z=S+"-default",$=S+"-focus",_=S+"-hover",ab=S+"-disabled",bb="_replacedByqTip",cb="oldtitle",db={ie:function(){for(var a=3,c=b.createElement("div");(c.innerHTML="<!--[if gt IE "+ ++a+"]><i></i><![endif]-->")&&c.getElementsByTagName("i")[0];);return a>4?a:0/0}(),iOS:parseFloat((""+(/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))||E};z=e.prototype,z._when=function(a){return d.when.apply(d,a)},z.render=function(a){if(this.rendered||this.destroyed)return this;var b,c=this,e=this.options,f=this.cache,g=this.elements,h=e.content.text,i=e.content.title,j=e.content.button,k=e.position,l=("."+this._id+" ",[]);return d.attr(this.target[0],"aria-describedby",this._id),this.tooltip=g.tooltip=b=d("<div/>",{id:this._id,"class":[S,Z,e.style.classes,S+"-pos-"+e.position.my.abbrev()].join(" "),width:e.style.width||"",height:e.style.height||"",tracking:"mouse"===k.target&&k.adjust.mouse,role:"alert","aria-live":"polite","aria-atomic":E,"aria-describedby":this._id+"-content","aria-hidden":D}).toggleClass(ab,this.disabled).attr(U,this.id).data(S,this).appendTo(k.container).append(g.content=d("<div />",{"class":S+"-content",id:this._id+"-content","aria-atomic":D})),this.rendered=-1,this.positioning=D,i&&(this._createTitle(),d.isFunction(i)||l.push(this._updateTitle(i,E))),j&&this._createButton(),d.isFunction(h)||l.push(this._updateContent(h,E)),this.rendered=D,this._setWidget(),d.each(R,function(a){var b;"render"===this.initialize&&(b=this(c))&&(c.plugins[a]=b)}),this._unassignEvents(),this._assignEvents(),this._when(l).then(function(){c._trigger("render"),c.positioning=E,c.hiddenDuringWait||!e.show.ready&&!a||c.toggle(D,f.event,E),c.hiddenDuringWait=E}),y.api[this.id]=this,this},z.destroy=function(a){function b(){if(!this.destroyed){this.destroyed=D;var a=this.target,b=a.attr(cb);this.rendered&&this.tooltip.stop(1,0).find("*").remove().end().remove(),d.each(this.plugins,function(){this.destroy&&this.destroy()}),clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this._unassignEvents(),a.removeData(S).removeAttr(U).removeAttr(T).removeAttr("aria-describedby"),this.options.suppress&&b&&a.attr("title",b).removeAttr(cb),this._unbind(a),this.options=this.elements=this.cache=this.timers=this.plugins=this.mouse=F,delete y.api[this.id]}}return this.destroyed?this.target:(a===D&&"hide"!==this.triggering||!this.rendered?b.call(this):(this.tooltip.one("tooltiphidden",d.proxy(b,this)),!this.triggering&&this.hide()),this.target)},B=z.checks={builtin:{"^id$":function(a,b,c,e){var f=c===D?y.nextid:c,g=S+"-"+f;f!==E&&f.length>0&&!d("#"+g).length?(this._id=g,this.rendered&&(this.tooltip[0].id=this._id,this.elements.content[0].id=this._id+"-content",this.elements.title[0].id=this._id+"-title")):a[b]=e},"^prerender":function(a,b,c){c&&!this.rendered&&this.render(this.options.show.ready)},"^content.text$":function(a,b,c){this._updateContent(c)},"^content.attr$":function(a,b,c,d){this.options.content.text===this.target.attr(d)&&this._updateContent(this.target.attr(c))},"^content.title$":function(a,b,c){return c?(c&&!this.elements.title&&this._createTitle(),this._updateTitle(c),void 0):this._removeTitle()},"^content.button$":function(a,b,c){this._updateButton(c)},"^content.title.(text|button)$":function(a,b,c){this.set("content."+b,c)},"^position.(my|at)$":function(a,b,c){"string"==typeof c&&(a[b]=new A(c,"at"===b))},"^position.container$":function(a,b,c){this.rendered&&this.tooltip.appendTo(c)},"^show.ready$":function(a,b,c){c&&(!this.rendered&&this.render(D)||this.toggle(D))},"^style.classes$":function(a,b,c,d){this.rendered&&this.tooltip.removeClass(d).addClass(c)},"^style.(width|height)":function(a,b,c){this.rendered&&this.tooltip.css(b,c)},"^style.widget|content.title":function(){this.rendered&&this._setWidget()},"^style.def":function(a,b,c){this.rendered&&this.tooltip.toggleClass(Z,!!c)},"^events.(render|show|move|hide|focus|blur)$":function(a,b,c){this.rendered&&this.tooltip[(d.isFunction(c)?"":"un")+"bind"]("tooltip"+b,c)},"^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)":function(){if(this.rendered){var a=this.options.position;this.tooltip.attr("tracking","mouse"===a.target&&a.adjust.mouse),this._unassignEvents(),this._assignEvents()}}}},z.get=function(a){if(this.destroyed)return this;var b=i(this.options,a.toLowerCase()),c=b[0][b[1]];return c.precedance?c.string():c};var eb=/^position\.(my|at|adjust|target|container|viewport)|style|content|show\.ready/i,fb=/^prerender|show\.ready/i;z.set=function(a,b){if(this.destroyed)return this;{var c,e=this.rendered,f=E,g=this.options;this.checks}return"string"==typeof a?(c=a,a={},a[c]=b):a=d.extend({},a),d.each(a,function(b,c){if(e&&fb.test(b))return delete a[b],void 0;var h,j=i(g,b.toLowerCase());h=j[0][j[1]],j[0][j[1]]=c&&c.nodeType?d(c):c,f=eb.test(b)||f,a[b]=[j[0],j[1],c,h]}),h(g),this.positioning=D,d.each(a,d.proxy(j,this)),this.positioning=E,this.rendered&&this.tooltip[0].offsetWidth>0&&f&&this.reposition("mouse"===g.position.target?F:this.cache.event),this},z._update=function(a,b){var c=this,e=this.cache;return this.rendered&&a?(d.isFunction(a)&&(a=a.call(this.elements.target,e.event,this)||""),d.isFunction(a.then)?(e.waiting=D,a.then(function(a){return e.waiting=E,c._update(a,b)},F,function(a){return c._update(a,b)})):a===E||!a&&""!==a?E:(a.jquery&&a.length>0?b.empty().append(a.css({display:"block",visibility:"visible"})):b.html(a),this._waitForContent(b).then(function(a){a.images&&a.images.length&&c.rendered&&c.tooltip[0].offsetWidth>0&&c.reposition(e.event,!a.length)}))):E},z._waitForContent=function(a){var b=this.cache;return b.waiting=D,(d.fn.imagesLoaded?a.imagesLoaded():d.Deferred().resolve([])).done(function(){b.waiting=E}).promise()},z._updateContent=function(a,b){this._update(a,this.elements.content,b)},z._updateTitle=function(a,b){this._update(a,this.elements.title,b)===E&&this._removeTitle(E)},z._createTitle=function(){var a=this.elements,b=this._id+"-title";a.titlebar&&this._removeTitle(),a.titlebar=d("<div />",{"class":S+"-titlebar "+(this.options.style.widget?k("header"):"")}).append(a.title=d("<div />",{id:b,"class":S+"-title","aria-atomic":D})).insertBefore(a.content).delegate(".qtip-close","mousedown keydown mouseup keyup mouseout",function(a){d(this).toggleClass("ui-state-active ui-state-focus","down"===a.type.substr(-4))}).delegate(".qtip-close","mouseover mouseout",function(a){d(this).toggleClass("ui-state-hover","mouseover"===a.type)}),this.options.content.button&&this._createButton()},z._removeTitle=function(a){var b=this.elements;b.title&&(b.titlebar.remove(),b.titlebar=b.title=b.button=F,a!==E&&this.reposition())},z.reposition=function(c,e){if(!this.rendered||this.positioning||this.destroyed)return this;this.positioning=D;var f,g,h=this.cache,i=this.tooltip,j=this.options.position,k=j.target,l=j.my,m=j.at,n=j.viewport,o=j.container,p=j.adjust,q=p.method.split(" "),r=i.outerWidth(E),s=i.outerHeight(E),t=0,u=0,v=i.css("position"),w={left:0,top:0},x=i[0].offsetWidth>0,y=c&&"scroll"===c.type,z=d(a),A=o[0].ownerDocument,B=this.mouse;if(d.isArray(k)&&2===k.length)m={x:L,y:K},w={left:k[0],top:k[1]};else if("mouse"===k)m={x:L,y:K},!B||!B.pageX||!p.mouse&&c&&c.pageX?c&&c.pageX||((!p.mouse||this.options.show.distance)&&h.origin&&h.origin.pageX?c=h.origin:(!c||c&&("resize"===c.type||"scroll"===c.type))&&(c=h.event)):c=B,"static"!==v&&(w=o.offset()),A.body.offsetWidth!==(a.innerWidth||A.documentElement.clientWidth)&&(g=d(b.body).offset()),w={left:c.pageX-w.left+(g&&g.left||0),top:c.pageY-w.top+(g&&g.top||0)},p.mouse&&y&&B&&(w.left-=(B.scrollX||0)-z.scrollLeft(),w.top-=(B.scrollY||0)-z.scrollTop());else{if("event"===k?c&&c.target&&"scroll"!==c.type&&"resize"!==c.type?h.target=d(c.target):c.target||(h.target=this.elements.target):"event"!==k&&(h.target=d(k.jquery?k:this.elements.target)),k=h.target,k=d(k).eq(0),0===k.length)return this;k[0]===b||k[0]===a?(t=db.iOS?a.innerWidth:k.width(),u=db.iOS?a.innerHeight:k.height(),k[0]===a&&(w={top:(n||k).scrollTop(),left:(n||k).scrollLeft()})):R.imagemap&&k.is("area")?f=R.imagemap(this,k,m,R.viewport?q:E):R.svg&&k&&k[0].ownerSVGElement?f=R.svg(this,k,m,R.viewport?q:E):(t=k.outerWidth(E),u=k.outerHeight(E),w=k.offset()),f&&(t=f.width,u=f.height,g=f.offset,w=f.position),w=this.reposition.offset(k,w,o),(db.iOS>3.1&&db.iOS<4.1||db.iOS>=4.3&&db.iOS<4.33||!db.iOS&&"fixed"===v)&&(w.left-=z.scrollLeft(),w.top-=z.scrollTop()),(!f||f&&f.adjustable!==E)&&(w.left+=m.x===N?t:m.x===O?t/2:0,w.top+=m.y===M?u:m.y===O?u/2:0)}return w.left+=p.x+(l.x===N?-r:l.x===O?-r/2:0),w.top+=p.y+(l.y===M?-s:l.y===O?-s/2:0),R.viewport?(w.adjusted=R.viewport(this,w,j,t,u,r,s),g&&w.adjusted.left&&(w.left+=g.left),g&&w.adjusted.top&&(w.top+=g.top)):w.adjusted={left:0,top:0},this._trigger("move",[w,n.elem||n],c)?(delete w.adjusted,e===E||!x||isNaN(w.left)||isNaN(w.top)||"mouse"===k||!d.isFunction(j.effect)?i.css(w):d.isFunction(j.effect)&&(j.effect.call(i,this,d.extend({},w)),i.queue(function(a){d(this).css({opacity:"",height:""}),db.ie&&this.style.removeAttribute("filter"),a()})),this.positioning=E,this):this},z.reposition.offset=function(a,c,e){function f(a,b){c.left+=b*a.scrollLeft(),c.top+=b*a.scrollTop()}if(!e[0])return c;var g,h,i,j,k=d(a[0].ownerDocument),l=!!db.ie&&"CSS1Compat"!==b.compatMode,m=e[0];do"static"!==(h=d.css(m,"position"))&&("fixed"===h?(i=m.getBoundingClientRect(),f(k,-1)):(i=d(m).position(),i.left+=parseFloat(d.css(m,"borderLeftWidth"))||0,i.top+=parseFloat(d.css(m,"borderTopWidth"))||0),c.left-=i.left+(parseFloat(d.css(m,"marginLeft"))||0),c.top-=i.top+(parseFloat(d.css(m,"marginTop"))||0),g||"hidden"===(j=d.css(m,"overflow"))||"visible"===j||(g=d(m)));while(m=m.offsetParent);return g&&(g[0]!==k[0]||l)&&f(g,1),c};var gb=(A=z.reposition.Corner=function(a,b){a=(""+a).replace(/([A-Z])/," $1").replace(/middle/gi,O).toLowerCase(),this.x=(a.match(/left|right/i)||a.match(/center/)||["inherit"])[0].toLowerCase(),this.y=(a.match(/top|bottom|center/i)||["inherit"])[0].toLowerCase(),this.forceY=!!b;var c=a.charAt(0);this.precedance="t"===c||"b"===c?H:G}).prototype;gb.invert=function(a,b){this[a]=this[a]===L?N:this[a]===N?L:b||this[a]},gb.string=function(){var a=this.x,b=this.y;return a===b?a:this.precedance===H||this.forceY&&"center"!==b?b+" "+a:a+" "+b},gb.abbrev=function(){var a=this.string().split(" ");return a[0].charAt(0)+(a[1]&&a[1].charAt(0)||"")},gb.clone=function(){return new A(this.string(),this.forceY)},z.toggle=function(a,c){var e=this.cache,f=this.options,g=this.tooltip;if(c){if(/over|enter/.test(c.type)&&/out|leave/.test(e.event.type)&&f.show.target.add(c.target).length===f.show.target.length&&g.has(c.relatedTarget).length)return this;e.event=l(c)}if(this.waiting&&!a&&(this.hiddenDuringWait=D),!this.rendered)return a?this.render(1):this;if(this.destroyed||this.disabled)return this;var h,i,j,k=a?"show":"hide",m=this.options[k],n=(this.options[a?"hide":"show"],this.options.position),o=this.options.content,p=this.tooltip.css("width"),q=this.tooltip.is(":visible"),r=a||1===m.target.length,s=!c||m.target.length<2||e.target[0]===c.target;return(typeof a).search("boolean|number")&&(a=!q),h=!g.is(":animated")&&q===a&&s,i=h?F:!!this._trigger(k,[90]),this.destroyed?this:(i!==E&&a&&this.focus(c),!i||h?this:(d.attr(g[0],"aria-hidden",!a),a?(e.origin=l(this.mouse),d.isFunction(o.text)&&this._updateContent(o.text,E),d.isFunction(o.title)&&this._updateTitle(o.title,E),!C&&"mouse"===n.target&&n.adjust.mouse&&(d(b).bind("mousemove."+S,this._storeMouse),C=D),p||g.css("width",g.outerWidth(E)),this.reposition(c,arguments[2]),p||g.css("width",""),m.solo&&("string"==typeof m.solo?d(m.solo):d(W,m.solo)).not(g).not(m.target).qtip("hide",d.Event("tooltipsolo"))):(clearTimeout(this.timers.show),delete e.origin,C&&!d(W+'[tracking="true"]:visible',m.solo).not(g).length&&(d(b).unbind("mousemove."+S),C=E),this.blur(c)),j=d.proxy(function(){a?(db.ie&&g[0].style.removeAttribute("filter"),g.css("overflow",""),"string"==typeof m.autofocus&&d(this.options.show.autofocus,g).focus(),this.options.show.target.trigger("qtip-"+this.id+"-inactive")):g.css({display:"",visibility:"",opacity:"",left:"",top:""}),this._trigger(a?"visible":"hidden")},this),m.effect===E||r===E?(g[k](),j()):d.isFunction(m.effect)?(g.stop(1,1),m.effect.call(g,this),g.queue("fx",function(a){j(),a()})):g.fadeTo(90,a?1:0,j),a&&m.target.trigger("qtip-"+this.id+"-inactive"),this))},z.show=function(a){return this.toggle(D,a)},z.hide=function(a){return this.toggle(E,a)},z.focus=function(a){if(!this.rendered||this.destroyed)return this;var b=d(W),c=this.tooltip,e=parseInt(c[0].style.zIndex,10),f=y.zindex+b.length;return c.hasClass($)||this._trigger("focus",[f],a)&&(e!==f&&(b.each(function(){this.style.zIndex>e&&(this.style.zIndex=this.style.zIndex-1)}),b.filter("."+$).qtip("blur",a)),c.addClass($)[0].style.zIndex=f),this},z.blur=function(a){return!this.rendered||this.destroyed?this:(this.tooltip.removeClass($),this._trigger("blur",[this.tooltip.css("zIndex")],a),this)},z.disable=function(a){return this.destroyed?this:("toggle"===a?a=!(this.rendered?this.tooltip.hasClass(ab):this.disabled):"boolean"!=typeof a&&(a=D),this.rendered&&this.tooltip.toggleClass(ab,a).attr("aria-disabled",a),this.disabled=!!a,this)},z.enable=function(){return this.disable(E)},z._createButton=function(){var a=this,b=this.elements,c=b.tooltip,e=this.options.content.button,f="string"==typeof e,g=f?e:"Close tooltip";b.button&&b.button.remove(),b.button=e.jquery?e:d("<a />",{"class":"qtip-close "+(this.options.style.widget?"":S+"-icon"),title:g,"aria-label":g}).prepend(d("<span />",{"class":"ui-icon ui-icon-close",html:"&times;"})),b.button.appendTo(b.titlebar||c).attr("role","button").click(function(b){return c.hasClass(ab)||a.hide(b),E})},z._updateButton=function(a){if(!this.rendered)return E;var b=this.elements.button;a?this._createButton():b.remove()},z._setWidget=function(){var a=this.options.style.widget,b=this.elements,c=b.tooltip,d=c.hasClass(ab);c.removeClass(ab),ab=a?"ui-state-disabled":"qtip-disabled",c.toggleClass(ab,d),c.toggleClass("ui-helper-reset "+k(),a).toggleClass(Z,this.options.style.def&&!a),b.content&&b.content.toggleClass(k("content"),a),b.titlebar&&b.titlebar.toggleClass(k("header"),a),b.button&&b.button.toggleClass(S+"-icon",!a)},z._storeMouse=function(a){(this.mouse=l(a)).type="mousemove"},z._bind=function(a,b,c,e,f){var g="."+this._id+(e?"-"+e:"");b.length&&d(a).bind((b.split?b:b.join(g+" "))+g,d.proxy(c,f||this))},z._unbind=function(a,b){d(a).unbind("."+this._id+(b?"-"+b:""))};var hb="."+S;d(function(){r(W,["mouseenter","mouseleave"],function(a){var b="mouseenter"===a.type,c=d(a.currentTarget),e=d(a.relatedTarget||a.target),f=this.options;b?(this.focus(a),c.hasClass(Y)&&!c.hasClass(ab)&&clearTimeout(this.timers.hide)):"mouse"===f.position.target&&f.hide.event&&f.show.target&&!e.closest(f.show.target[0]).length&&this.hide(a),c.toggleClass(_,b)}),r("["+U+"]",X,p)}),z._trigger=function(a,b,c){var e=d.Event("tooltip"+a);return e.originalEvent=c&&d.extend({},c)||this.cache.event||F,this.triggering=a,this.tooltip.trigger(e,[this].concat(b||[])),this.triggering=E,!e.isDefaultPrevented()},z._bindEvents=function(a,b,c,e,f,g){if(e.add(c).length===e.length){var h=[];b=d.map(b,function(b){var c=d.inArray(b,a);return c>-1?(h.push(a.splice(c,1)[0]),void 0):b}),h.length&&this._bind(c,h,function(a){var b=this.rendered?this.tooltip[0].offsetWidth>0:!1;(b?g:f).call(this,a)})}this._bind(c,a,f),this._bind(e,b,g)},z._assignInitialEvents=function(a){function b(a){return this.disabled||this.destroyed?E:(this.cache.event=l(a),this.cache.target=a?d(a.target):[c],clearTimeout(this.timers.show),this.timers.show=m.call(this,function(){this.render("object"==typeof a||e.show.ready)},e.show.delay),void 0)}var e=this.options,f=e.show.target,g=e.hide.target,h=e.show.event?d.trim(""+e.show.event).split(" "):[],i=e.hide.event?d.trim(""+e.hide.event).split(" "):[];/mouse(over|enter)/i.test(e.show.event)&&!/mouse(out|leave)/i.test(e.hide.event)&&i.push("mouseleave"),this._bind(f,"mousemove",function(a){this._storeMouse(a),this.cache.onTarget=D}),this._bindEvents(h,i,f,g,b,function(){clearTimeout(this.timers.show)}),(e.show.ready||e.prerender)&&b.call(this,a)},z._assignEvents=function(){var c=this,e=this.options,f=e.position,g=this.tooltip,h=e.show.target,i=e.hide.target,j=f.container,k=f.viewport,l=d(b),m=(d(b.body),d(a)),r=e.show.event?d.trim(""+e.show.event).split(" "):[],s=e.hide.event?d.trim(""+e.hide.event).split(" "):[];d.each(e.events,function(a,b){c._bind(g,"toggle"===a?["tooltipshow","tooltiphide"]:["tooltip"+a],b,null,g)}),/mouse(out|leave)/i.test(e.hide.event)&&"window"===e.hide.leave&&this._bind(l,["mouseout","blur"],function(a){/select|option/.test(a.target.nodeName)||a.relatedTarget||this.hide(a)}),e.hide.fixed?i=i.add(g.addClass(Y)):/mouse(over|enter)/i.test(e.show.event)&&this._bind(i,"mouseleave",function(){clearTimeout(this.timers.show)}),(""+e.hide.event).indexOf("unfocus")>-1&&this._bind(j.closest("html"),["mousedown","touchstart"],function(a){var b=d(a.target),c=this.rendered&&!this.tooltip.hasClass(ab)&&this.tooltip[0].offsetWidth>0,e=b.parents(W).filter(this.tooltip[0]).length>0;b[0]===this.target[0]||b[0]===this.tooltip[0]||e||this.target.has(b[0]).length||!c||this.hide(a)}),"number"==typeof e.hide.inactive&&(this._bind(h,"qtip-"+this.id+"-inactive",p),this._bind(i.add(g),y.inactiveEvents,p,"-inactive")),this._bindEvents(r,s,h,i,n,o),this._bind(h.add(g),"mousemove",function(a){if("number"==typeof e.hide.distance){var b=this.cache.origin||{},c=this.options.hide.distance,d=Math.abs;(d(a.pageX-b.pageX)>=c||d(a.pageY-b.pageY)>=c)&&this.hide(a)}this._storeMouse(a)}),"mouse"===f.target&&f.adjust.mouse&&(e.hide.event&&this._bind(h,["mouseenter","mouseleave"],function(a){this.cache.onTarget="mouseenter"===a.type}),this._bind(l,"mousemove",function(a){this.rendered&&this.cache.onTarget&&!this.tooltip.hasClass(ab)&&this.tooltip[0].offsetWidth>0&&this.reposition(a)})),(f.adjust.resize||k.length)&&this._bind(d.event.special.resize?k:m,"resize",q),f.adjust.scroll&&this._bind(m.add(f.container),"scroll",q)},z._unassignEvents=function(){var c=[this.options.show.target[0],this.options.hide.target[0],this.rendered&&this.tooltip[0],this.options.position.container[0],this.options.position.viewport[0],this.options.position.container.closest("html")[0],a,b];this._unbind(d([]).pushStack(d.grep(c,function(a){return"object"==typeof a})))},y=d.fn.qtip=function(a,b,e){var f=(""+a).toLowerCase(),g=F,i=d.makeArray(arguments).slice(1),j=i[i.length-1],k=this[0]?d.data(this[0],S):F;return!arguments.length&&k||"api"===f?k:"string"==typeof a?(this.each(function(){var a=d.data(this,S);if(!a)return D;if(j&&j.timeStamp&&(a.cache.event=j),!b||"option"!==f&&"options"!==f)a[f]&&a[f].apply(a,i);else{if(e===c&&!d.isPlainObject(b))return g=a.get(b),E;a.set(b,e)}}),g!==F?g:this):"object"!=typeof a&&arguments.length?void 0:(k=h(d.extend(D,{},a)),this.each(function(a){var b,c;return c=d.isArray(k.id)?k.id[a]:k.id,c=!c||c===E||c.length<1||y.api[c]?y.nextid++:c,b=s(d(this),c,k),b===E?D:(y.api[c]=b,d.each(R,function(){"initialize"===this.initialize&&this(b)}),b._assignInitialEvents(j),void 0)}))},d.qtip=e,y.api={},d.each({attr:function(a,b){if(this.length){var c=this[0],e="title",f=d.data(c,"qtip");if(a===e&&f&&"object"==typeof f&&f.options.suppress)return arguments.length<2?d.attr(c,cb):(f&&f.options.content.attr===e&&f.cache.attr&&f.set("content.text",b),this.attr(cb,b))}return d.fn["attr"+bb].apply(this,arguments)},clone:function(a){var b=(d([]),d.fn["clone"+bb].apply(this,arguments));return a||b.filter("["+cb+"]").attr("title",function(){return d.attr(this,cb)}).removeAttr(cb),b}},function(a,b){if(!b||d.fn[a+bb])return D;var c=d.fn[a+bb]=d.fn[a];d.fn[a]=function(){return b.apply(this,arguments)||c.apply(this,arguments)}}),d.ui||(d["cleanData"+bb]=d.cleanData,d.cleanData=function(a){for(var b,c=0;(b=d(a[c])).length;c++)if(b.attr(T))try{b.triggerHandler("removeqtip")}catch(e){}d["cleanData"+bb].apply(this,arguments)}),y.version="2.2.0",y.nextid=0,y.inactiveEvents=X,y.zindex=15e3,y.defaults={prerender:E,id:E,overwrite:D,suppress:D,content:{text:D,attr:"title",title:E,button:E},position:{my:"top left",at:"bottom right",target:E,container:E,viewport:E,adjust:{x:0,y:0,mouse:D,scroll:D,resize:D,method:"flipinvert flipinvert"},effect:function(a,b){d(this).animate(b,{duration:200,queue:E})}},show:{target:E,event:"mouseenter",effect:D,delay:90,solo:E,ready:E,autofocus:E},hide:{target:E,event:"mouseleave",effect:D,delay:0,fixed:E,inactive:E,leave:"window",distance:E},style:{classes:"",widget:E,width:E,height:E,def:D},events:{render:F,move:F,show:F,hide:F,toggle:F,visible:F,hidden:F,focus:F,blur:F}};var ib,jb="margin",kb="border",lb="color",mb="background-color",nb="transparent",ob=" !important",pb=!!b.createElement("canvas").getContext,qb=/rgba?\(0, 0, 0(, 0)?\)|transparent|#123456/i,rb={},sb=["Webkit","O","Moz","ms"];if(pb)var tb=a.devicePixelRatio||1,ub=function(){var a=b.createElement("canvas").getContext("2d");return a.backingStorePixelRatio||a.webkitBackingStorePixelRatio||a.mozBackingStorePixelRatio||a.msBackingStorePixelRatio||a.oBackingStorePixelRatio||1}(),vb=tb/ub;else var wb=function(a,b,c){return"<qtipvml:"+a+' xmlns="urn:schemas-microsoft.com:vml" class="qtip-vml" '+(b||"")+' style="behavior: url(#default#VML); '+(c||"")+'" />'};d.extend(w.prototype,{init:function(a){var b,c;c=this.element=a.elements.tip=d("<div />",{"class":S+"-tip"}).prependTo(a.tooltip),pb?(b=d("<canvas />").appendTo(this.element)[0].getContext("2d"),b.lineJoin="miter",b.miterLimit=1e5,b.save()):(b=wb("shape",'coordorigin="0,0"',"position:absolute;"),this.element.html(b+b),a._bind(d("*",c).add(c),["click","mousedown"],function(a){a.stopPropagation()},this._ns)),a._bind(a.tooltip,"tooltipmove",this.reposition,this._ns,this),this.create()},_swapDimensions:function(){this.size[0]=this.options.height,this.size[1]=this.options.width},_resetDimensions:function(){this.size[0]=this.options.width,this.size[1]=this.options.height},_useTitle:function(a){var b=this.qtip.elements.titlebar;return b&&(a.y===K||a.y===O&&this.element.position().top+this.size[1]/2+this.options.offset<b.outerHeight(D))},_parseCorner:function(a){var b=this.qtip.options.position.my;return a===E||b===E?a=E:a===D?a=new A(b.string()):a.string||(a=new A(a),a.fixed=D),a},_parseWidth:function(a,b,c){var d=this.qtip.elements,e=kb+t(b)+"Width";return(c?v(c,e):v(d.content,e)||v(this._useTitle(a)&&d.titlebar||d.content,e)||v(d.tooltip,e))||0},_parseRadius:function(a){var b=this.qtip.elements,c=kb+t(a.y)+t(a.x)+"Radius";return db.ie<9?0:v(this._useTitle(a)&&b.titlebar||b.content,c)||v(b.tooltip,c)||0},_invalidColour:function(a,b,c){var d=a.css(b);return!d||c&&d===a.css(c)||qb.test(d)?E:d},_parseColours:function(a){var b=this.qtip.elements,c=this.element.css("cssText",""),e=kb+t(a[a.precedance])+t(lb),f=this._useTitle(a)&&b.titlebar||b.content,g=this._invalidColour,h=[];return h[0]=g(c,mb)||g(f,mb)||g(b.content,mb)||g(b.tooltip,mb)||c.css(mb),h[1]=g(c,e,lb)||g(f,e,lb)||g(b.content,e,lb)||g(b.tooltip,e,lb)||b.tooltip.css(e),d("*",c).add(c).css("cssText",mb+":"+nb+ob+";"+kb+":0"+ob+";"),h},_calculateSize:function(a){var b,c,d,e=a.precedance===H,f=this.options.width,g=this.options.height,h="c"===a.abbrev(),i=(e?f:g)*(h?.5:1),j=Math.pow,k=Math.round,l=Math.sqrt(j(i,2)+j(g,2)),m=[this.border/i*l,this.border/g*l];return m[2]=Math.sqrt(j(m[0],2)-j(this.border,2)),m[3]=Math.sqrt(j(m[1],2)-j(this.border,2)),b=l+m[2]+m[3]+(h?0:m[0]),c=b/l,d=[k(c*f),k(c*g)],e?d:d.reverse()},_calculateTip:function(a,b,c){c=c||1,b=b||this.size;var d=b[0]*c,e=b[1]*c,f=Math.ceil(d/2),g=Math.ceil(e/2),h={br:[0,0,d,e,d,0],bl:[0,0,d,0,0,e],tr:[0,e,d,0,d,e],tl:[0,0,0,e,d,e],tc:[0,e,f,0,d,e],bc:[0,0,d,0,f,e],rc:[0,0,d,g,0,e],lc:[d,0,d,e,0,g]};return h.lt=h.br,h.rt=h.bl,h.lb=h.tr,h.rb=h.tl,h[a.abbrev()]},_drawCoords:function(a,b){a.beginPath(),a.moveTo(b[0],b[1]),a.lineTo(b[2],b[3]),a.lineTo(b[4],b[5]),a.closePath()},create:function(){var a=this.corner=(pb||db.ie)&&this._parseCorner(this.options.corner);return(this.enabled=!!this.corner&&"c"!==this.corner.abbrev())&&(this.qtip.cache.corner=a.clone(),this.update()),this.element.toggle(this.enabled),this.corner},update:function(b,c){if(!this.enabled)return this;var e,f,g,h,i,j,k,l,m=this.qtip.elements,n=this.element,o=n.children(),p=this.options,q=this.size,r=p.mimic,s=Math.round;b||(b=this.qtip.cache.corner||this.corner),r===E?r=b:(r=new A(r),r.precedance=b.precedance,"inherit"===r.x?r.x=b.x:"inherit"===r.y?r.y=b.y:r.x===r.y&&(r[b.precedance]=b[b.precedance])),f=r.precedance,b.precedance===G?this._swapDimensions():this._resetDimensions(),e=this.color=this._parseColours(b),e[1]!==nb?(l=this.border=this._parseWidth(b,b[b.precedance]),p.border&&1>l&&!qb.test(e[1])&&(e[0]=e[1]),this.border=l=p.border!==D?p.border:l):this.border=l=0,k=this.size=this._calculateSize(b),n.css({width:k[0],height:k[1],lineHeight:k[1]+"px"}),j=b.precedance===H?[s(r.x===L?l:r.x===N?k[0]-q[0]-l:(k[0]-q[0])/2),s(r.y===K?k[1]-q[1]:0)]:[s(r.x===L?k[0]-q[0]:0),s(r.y===K?l:r.y===M?k[1]-q[1]-l:(k[1]-q[1])/2)],pb?(g=o[0].getContext("2d"),g.restore(),g.save(),g.clearRect(0,0,6e3,6e3),h=this._calculateTip(r,q,vb),i=this._calculateTip(r,this.size,vb),o.attr(I,k[0]*vb).attr(J,k[1]*vb),o.css(I,k[0]).css(J,k[1]),this._drawCoords(g,i),g.fillStyle=e[1],g.fill(),g.translate(j[0]*vb,j[1]*vb),this._drawCoords(g,h),g.fillStyle=e[0],g.fill()):(h=this._calculateTip(r),h="m"+h[0]+","+h[1]+" l"+h[2]+","+h[3]+" "+h[4]+","+h[5]+" xe",j[2]=l&&/^(r|b)/i.test(b.string())?8===db.ie?2:1:0,o.css({coordsize:k[0]+l+" "+(k[1]+l),antialias:""+(r.string().indexOf(O)>-1),left:j[0]-j[2]*Number(f===G),top:j[1]-j[2]*Number(f===H),width:k[0]+l,height:k[1]+l}).each(function(a){var b=d(this);b[b.prop?"prop":"attr"]({coordsize:k[0]+l+" "+(k[1]+l),path:h,fillcolor:e[0],filled:!!a,stroked:!a}).toggle(!(!l&&!a)),!a&&b.html(wb("stroke",'weight="'+2*l+'px" color="'+e[1]+'" miterlimit="1000" joinstyle="miter"'))})),a.opera&&setTimeout(function(){m.tip.css({display:"inline-block",visibility:"visible"})},1),c!==E&&this.calculate(b,k)},calculate:function(a,b){if(!this.enabled)return E;var c,e,f=this,g=this.qtip.elements,h=this.element,i=this.options.offset,j=(g.tooltip.hasClass("ui-widget"),{});return a=a||this.corner,c=a.precedance,b=b||this._calculateSize(a),e=[a.x,a.y],c===G&&e.reverse(),d.each(e,function(d,e){var h,k,l;e===O?(h=c===H?L:K,j[h]="50%",j[jb+"-"+h]=-Math.round(b[c===H?0:1]/2)+i):(h=f._parseWidth(a,e,g.tooltip),k=f._parseWidth(a,e,g.content),l=f._parseRadius(a),j[e]=Math.max(-f.border,d?k:i+(l>h?l:-h)))
4
- }),j[a[c]]-=b[c===G?0:1],h.css({margin:"",top:"",bottom:"",left:"",right:""}).css(j),j},reposition:function(a,b,d){function e(a,b,c,d,e){a===Q&&j.precedance===b&&k[d]&&j[c]!==O?j.precedance=j.precedance===G?H:G:a!==Q&&k[d]&&(j[b]=j[b]===O?k[d]>0?d:e:j[b]===d?e:d)}function f(a,b,e){j[a]===O?p[jb+"-"+b]=o[a]=g[jb+"-"+b]-k[b]:(h=g[e]!==c?[k[b],-g[b]]:[-k[b],g[b]],(o[a]=Math.max(h[0],h[1]))>h[0]&&(d[b]-=k[b],o[b]=E),p[g[e]!==c?e:b]=o[a])}if(this.enabled){var g,h,i=b.cache,j=this.corner.clone(),k=d.adjusted,l=b.options.position.adjust.method.split(" "),m=l[0],n=l[1]||l[0],o={left:E,top:E,x:0,y:0},p={};this.corner.fixed!==D&&(e(m,G,H,L,N),e(n,H,G,K,M),j.string()===i.corner.string()||i.cornerTop===k.top&&i.cornerLeft===k.left||this.update(j,E)),g=this.calculate(j),g.right!==c&&(g.left=-g.right),g.bottom!==c&&(g.top=-g.bottom),g.user=this.offset,(o.left=m===Q&&!!k.left)&&f(G,L,N),(o.top=n===Q&&!!k.top)&&f(H,K,M),this.element.css(p).toggle(!(o.x&&o.y||j.x===O&&o.y||j.y===O&&o.x)),d.left-=g.left.charAt?g.user:m!==Q||o.top||!o.left&&!o.top?g.left+this.border:0,d.top-=g.top.charAt?g.user:n!==Q||o.left||!o.left&&!o.top?g.top+this.border:0,i.cornerLeft=k.left,i.cornerTop=k.top,i.corner=j.clone()}},destroy:function(){this.qtip._unbind(this.qtip.tooltip,this._ns),this.qtip.elements.tip&&this.qtip.elements.tip.find("*").remove().end().remove()}}),ib=R.tip=function(a){return new w(a,a.options.style.tip)},ib.initialize="render",ib.sanitize=function(a){if(a.style&&"tip"in a.style){var b=a.style.tip;"object"!=typeof b&&(b=a.style.tip={corner:b}),/string|boolean/i.test(typeof b.corner)||(b.corner=D)}},B.tip={"^position.my|style.tip.(corner|mimic|border)$":function(){this.create(),this.qtip.reposition()},"^style.tip.(height|width)$":function(a){this.size=[a.width,a.height],this.update(),this.qtip.reposition()},"^content.title|style.(classes|widget)$":function(){this.update()}},d.extend(D,y.defaults,{style:{tip:{corner:D,mimic:E,width:6,height:6,border:D,offset:0}}}),R.viewport=function(c,d,e,f,g,h,i){function j(a,b,c,e,f,g,h,i,j){var k=d[f],m=v[a],t=w[a],u=c===Q,x=m===f?j:m===g?-j:-j/2,y=t===f?i:t===g?-i:-i/2,z=r[f]+s[f]-(o?0:n[f]),A=z-k,B=k+j-(h===I?p:q)-z,C=x-(v.precedance===a||m===v[b]?y:0)-(t===O?i/2:0);return u?(C=(m===f?1:-1)*x,d[f]+=A>0?A:B>0?-B:0,d[f]=Math.max(-n[f]+s[f],k-C,Math.min(Math.max(-n[f]+s[f]+(h===I?p:q),k+C),d[f],"center"===m?k-x:1e9))):(e*=c===P?2:0,A>0&&(m!==f||B>0)?(d[f]-=C+e,l.invert(a,f)):B>0&&(m!==g||A>0)&&(d[f]-=(m===O?-C:C)+e,l.invert(a,g)),d[f]<r&&-d[f]>B&&(d[f]=k,l=v.clone())),d[f]-k}var k,l,m,n,o,p,q,r,s,t=e.target,u=c.elements.tooltip,v=e.my,w=e.at,x=e.adjust,y=x.method.split(" "),z=y[0],A=y[1]||y[0],B=e.viewport,C=e.container,D=c.cache,F={left:0,top:0};return B.jquery&&t[0]!==a&&t[0]!==b.body&&"none"!==x.method?(n=C.offset()||F,o="static"===C.css("position"),k="fixed"===u.css("position"),p=B[0]===a?B.width():B.outerWidth(E),q=B[0]===a?B.height():B.outerHeight(E),r={left:k?0:B.scrollLeft(),top:k?0:B.scrollTop()},s=B.offset()||F,("shift"!==z||"shift"!==A)&&(l=v.clone()),F={left:"none"!==z?j(G,H,z,x.x,L,N,I,f,h):0,top:"none"!==A?j(H,G,A,x.y,K,M,J,g,i):0},l&&D.lastClass!==(m=S+"-pos-"+l.abbrev())&&u.removeClass(c.cache.lastClass).addClass(c.cache.lastClass=m),F):F},R.polys={polygon:function(a,b){var c,d,e,f={width:0,height:0,position:{top:1e10,right:0,bottom:0,left:1e10},adjustable:E},g=0,h=[],i=1,j=1,k=0,l=0;for(g=a.length;g--;)c=[parseInt(a[--g],10),parseInt(a[g+1],10)],c[0]>f.position.right&&(f.position.right=c[0]),c[0]<f.position.left&&(f.position.left=c[0]),c[1]>f.position.bottom&&(f.position.bottom=c[1]),c[1]<f.position.top&&(f.position.top=c[1]),h.push(c);if(d=f.width=Math.abs(f.position.right-f.position.left),e=f.height=Math.abs(f.position.bottom-f.position.top),"c"===b.abbrev())f.position={left:f.position.left+f.width/2,top:f.position.top+f.height/2};else{for(;d>0&&e>0&&i>0&&j>0;)for(d=Math.floor(d/2),e=Math.floor(e/2),b.x===L?i=d:b.x===N?i=f.width-d:i+=Math.floor(d/2),b.y===K?j=e:b.y===M?j=f.height-e:j+=Math.floor(e/2),g=h.length;g--&&!(h.length<2);)k=h[g][0]-f.position.left,l=h[g][1]-f.position.top,(b.x===L&&k>=i||b.x===N&&i>=k||b.x===O&&(i>k||k>f.width-i)||b.y===K&&l>=j||b.y===M&&j>=l||b.y===O&&(j>l||l>f.height-j))&&h.splice(g,1);f.position={left:h[0][0],top:h[0][1]}}return f},rect:function(a,b,c,d){return{width:Math.abs(c-a),height:Math.abs(d-b),position:{left:Math.min(a,c),top:Math.min(b,d)}}},_angles:{tc:1.5,tr:7/4,tl:5/4,bc:.5,br:.25,bl:.75,rc:2,lc:1,c:0},ellipse:function(a,b,c,d,e){var f=R.polys._angles[e.abbrev()],g=0===f?0:c*Math.cos(f*Math.PI),h=d*Math.sin(f*Math.PI);return{width:2*c-Math.abs(g),height:2*d-Math.abs(h),position:{left:a+g,top:b+h},adjustable:E}},circle:function(a,b,c,d){return R.polys.ellipse(a,b,c,c,d)}},R.imagemap=function(a,b,c){b.jquery||(b=d(b));var e,f,g,h,i,j=b.attr("shape").toLowerCase().replace("poly","polygon"),k=d('img[usemap="#'+b.parent("map").attr("name")+'"]'),l=d.trim(b.attr("coords")),m=l.replace(/,$/,"").split(",");if(!k.length)return E;if("polygon"===j)h=R.polys.polygon(m,c);else{if(!R.polys[j])return E;for(g=-1,i=m.length,f=[];++g<i;)f.push(parseInt(m[g],10));h=R.polys[j].apply(this,f.concat(c))}return e=k.offset(),e.left+=Math.ceil((k.outerWidth(E)-k.width())/2),e.top+=Math.ceil((k.outerHeight(E)-k.height())/2),h.position.left+=e.left,h.position.top+=e.top,h},R.svg=function(a,c,e){for(var f,g,h,i,j,k,l,m,n,o,p,q=d(b),r=c[0],s=d(r.ownerSVGElement),t=1,u=1,v=!0;!r.getBBox;)r=r.parentNode;if(!r.getBBox||!r.parentNode)return E;f=s.attr("width")||s.width()||parseInt(s.css("width"),10),g=s.attr("height")||s.height()||parseInt(s.css("height"),10);var w=(parseInt(c.css("stroke-width"),10)||0)/2;switch(w&&(t+=w/f,u+=w/g),r.nodeName){case"ellipse":case"circle":o=R.polys.ellipse(r.cx.baseVal.value,r.cy.baseVal.value,(r.rx||r.r).baseVal.value+w,(r.ry||r.r).baseVal.value+w,e);break;case"line":case"polygon":case"polyline":for(n=r.points||[{x:r.x1.baseVal.value,y:r.y1.baseVal.value},{x:r.x2.baseVal.value,y:r.y2.baseVal.value}],o=[],m=-1,k=n.numberOfItems||n.length;++m<k;)l=n.getItem?n.getItem(m):n[m],o.push.apply(o,[l.x,l.y]);o=R.polys.polygon(o,e);break;default:o=r.getBoundingClientRect(),o={width:o.width,height:o.height,position:{left:o.left,top:o.top}},v=!1}return p=o.position,s=s[0],v&&(s.createSVGPoint&&(h=r.getScreenCTM(),n=s.createSVGPoint(),n.x=p.left,n.y=p.top,i=n.matrixTransform(h),p.left=i.x,p.top=i.y),s.viewBox&&(j=s.viewBox.baseVal)&&j.width&&j.height&&(t*=f/j.width,u*=g/j.height)),p.left+=q.scrollLeft(),p.top+=q.scrollTop(),o};var xb,yb,zb="qtip-modal",Ab="."+zb;yb=function(){function a(a){if(d.expr[":"].focusable)return d.expr[":"].focusable;var b,c,e,f=!isNaN(d.attr(a,"tabindex")),g=a.nodeName&&a.nodeName.toLowerCase();return"area"===g?(b=a.parentNode,c=b.name,a.href&&c&&"map"===b.nodeName.toLowerCase()?(e=d("img[usemap=#"+c+"]")[0],!!e&&e.is(":visible")):!1):/input|select|textarea|button|object/.test(g)?!a.disabled:"a"===g?a.href||f:f}function c(a){k.length<1&&a.length?a.not("body").blur():k.first().focus()}function e(a){if(i.is(":visible")){var b,e=d(a.target),h=f.tooltip,j=e.closest(W);b=j.length<1?E:parseInt(j[0].style.zIndex,10)>parseInt(h[0].style.zIndex,10),b||e.closest(W)[0]===h[0]||c(e),g=a.target===k[k.length-1]}}var f,g,h,i,j=this,k={};d.extend(j,{init:function(){return i=j.elem=d("<div />",{id:"qtip-overlay",html:"<div></div>",mousedown:function(){return E}}).hide(),d(b.body).bind("focusin"+Ab,e),d(b).bind("keydown"+Ab,function(a){f&&f.options.show.modal.escape&&27===a.keyCode&&f.hide(a)}),i.bind("click"+Ab,function(a){f&&f.options.show.modal.blur&&f.hide(a)}),j},update:function(b){f=b,k=b.options.show.modal.stealfocus!==E?b.tooltip.find("*").filter(function(){return a(this)}):[]},toggle:function(a,e,g){var k=(d(b.body),a.tooltip),l=a.options.show.modal,m=l.effect,n=e?"show":"hide",o=i.is(":visible"),p=d(Ab).filter(":visible:not(:animated)").not(k);return j.update(a),e&&l.stealfocus!==E&&c(d(":focus")),i.toggleClass("blurs",l.blur),e&&i.appendTo(b.body),i.is(":animated")&&o===e&&h!==E||!e&&p.length?j:(i.stop(D,E),d.isFunction(m)?m.call(i,e):m===E?i[n]():i.fadeTo(parseInt(g,10)||90,e?1:0,function(){e||i.hide()}),e||i.queue(function(a){i.css({left:"",top:""}),d(Ab).length||i.detach(),a()}),h=e,f.destroyed&&(f=F),j)}}),j.init()},yb=new yb,d.extend(x.prototype,{init:function(a){var b=a.tooltip;return this.options.on?(a.elements.overlay=yb.elem,b.addClass(zb).css("z-index",y.modal_zindex+d(Ab).length),a._bind(b,["tooltipshow","tooltiphide"],function(a,c,e){var f=a.originalEvent;if(a.target===b[0])if(f&&"tooltiphide"===a.type&&/mouse(leave|enter)/.test(f.type)&&d(f.relatedTarget).closest(yb.elem[0]).length)try{a.preventDefault()}catch(g){}else(!f||f&&"tooltipsolo"!==f.type)&&this.toggle(a,"tooltipshow"===a.type,e)},this._ns,this),a._bind(b,"tooltipfocus",function(a,c){if(!a.isDefaultPrevented()&&a.target===b[0]){var e=d(Ab),f=y.modal_zindex+e.length,g=parseInt(b[0].style.zIndex,10);yb.elem[0].style.zIndex=f-1,e.each(function(){this.style.zIndex>g&&(this.style.zIndex-=1)}),e.filter("."+$).qtip("blur",a.originalEvent),b.addClass($)[0].style.zIndex=f,yb.update(c);try{a.preventDefault()}catch(h){}}},this._ns,this),a._bind(b,"tooltiphide",function(a){a.target===b[0]&&d(Ab).filter(":visible").not(b).last().qtip("focus",a)},this._ns,this),void 0):this},toggle:function(a,b,c){return a&&a.isDefaultPrevented()?this:(yb.toggle(this.qtip,!!b,c),void 0)},destroy:function(){this.qtip.tooltip.removeClass(zb),this.qtip._unbind(this.qtip.tooltip,this._ns),yb.toggle(this.qtip,E),delete this.qtip.elements.overlay}}),xb=R.modal=function(a){return new x(a,a.options.show.modal)},xb.sanitize=function(a){a.show&&("object"!=typeof a.show.modal?a.show.modal={on:!!a.show.modal}:"undefined"==typeof a.show.modal.on&&(a.show.modal.on=D))},y.modal_zindex=y.zindex-200,xb.initialize="render",B.modal={"^show.modal.(on|blur)$":function(){this.destroy(),this.init(),this.qtip.elems.overlay.toggle(this.qtip.tooltip[0].offsetWidth>0)}},d.extend(D,y.defaults,{show:{modal:{on:E,effect:D,blur:D,stealfocus:D,escape:D}}})})}(window,document);
5
- //# sourceMappingURL=http://cdnjs.cloudflare.com/ajax/libs/qtip2/2.2.0//var/www/qtip2/build/tmp/tmp-11954r9wgiyo/jquery.qtip.min.map
1
+ /* qTip2 v2.2.0 tips viewport imagemap svg modal | qtip2.com | Licensed MIT, GPL | Sun Mar 16 2014 07:12:37 */
2
+
3
+ !function(a,b,c){!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):jQuery&&!jQuery.fn.qtip&&a(jQuery)}(function(d){"use strict";function e(a,b,c,e){this.id=c,this.target=a,this.tooltip=F,this.elements={target:a},this._id=S+"-"+c,this.timers={img:{}},this.options=b,this.plugins={},this.cache={event:{},target:d(),disabled:E,attr:e,onTooltip:E,lastClass:""},this.rendered=this.destroyed=this.disabled=this.waiting=this.hiddenDuringWait=this.positioning=this.triggering=E}function f(a){return a===F||"object"!==d.type(a)}function g(a){return!(d.isFunction(a)||a&&a.attr||a.length||"object"===d.type(a)&&(a.jquery||a.then))}function h(a){var b,c,e,h;return f(a)?E:(f(a.metadata)&&(a.metadata={type:a.metadata}),"content"in a&&(b=a.content,f(b)||b.jquery||b.done?b=a.content={text:c=g(b)?E:b}:c=b.text,"ajax"in b&&(e=b.ajax,h=e&&e.once!==E,delete b.ajax,b.text=function(a,b){var f=c||d(this).attr(b.options.content.attr)||"Loading...",g=d.ajax(d.extend({},e,{context:b})).then(e.success,F,e.error).then(function(a){return a&&h&&b.set("content.text",a),a},function(a,c,d){b.destroyed||0===a.status||b.set("content.text",c+": "+d)});return h?f:(b.set("content.text",f),g)}),"title"in b&&(f(b.title)||(b.button=b.title.button,b.title=b.title.text),g(b.title||E)&&(b.title=E))),"position"in a&&f(a.position)&&(a.position={my:a.position,at:a.position}),"show"in a&&f(a.show)&&(a.show=a.show.jquery?{target:a.show}:a.show===D?{ready:D}:{event:a.show}),"hide"in a&&f(a.hide)&&(a.hide=a.hide.jquery?{target:a.hide}:{event:a.hide}),"style"in a&&f(a.style)&&(a.style={classes:a.style}),d.each(R,function(){this.sanitize&&this.sanitize(a)}),a)}function i(a,b){for(var c,d=0,e=a,f=b.split(".");e=e[f[d++]];)d<f.length&&(c=e);return[c||a,f.pop()]}function j(a,b){var c,d,e;for(c in this.checks)for(d in this.checks[c])(e=new RegExp(d,"i").exec(a))&&(b.push(e),("builtin"===c||this.plugins[c])&&this.checks[c][d].apply(this.plugins[c]||this,b))}function k(a){return V.concat("").join(a?"-"+a+" ":" ")}function l(c){return c&&{type:c.type,pageX:c.pageX,pageY:c.pageY,target:c.target,relatedTarget:c.relatedTarget,scrollX:c.scrollX||a.pageXOffset||b.body.scrollLeft||b.documentElement.scrollLeft,scrollY:c.scrollY||a.pageYOffset||b.body.scrollTop||b.documentElement.scrollTop}||{}}function m(a,b){return b>0?setTimeout(d.proxy(a,this),b):(a.call(this),void 0)}function n(a){return this.tooltip.hasClass(ab)?E:(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this.timers.show=m.call(this,function(){this.toggle(D,a)},this.options.show.delay),void 0)}function o(a){if(this.tooltip.hasClass(ab))return E;var b=d(a.relatedTarget),c=b.closest(W)[0]===this.tooltip[0],e=b[0]===this.options.show.target[0];if(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this!==b[0]&&"mouse"===this.options.position.target&&c||this.options.hide.fixed&&/mouse(out|leave|move)/.test(a.type)&&(c||e))try{a.preventDefault(),a.stopImmediatePropagation()}catch(f){}else this.timers.hide=m.call(this,function(){this.toggle(E,a)},this.options.hide.delay,this)}function p(a){return this.tooltip.hasClass(ab)||!this.options.hide.inactive?E:(clearTimeout(this.timers.inactive),this.timers.inactive=m.call(this,function(){this.hide(a)},this.options.hide.inactive),void 0)}function q(a){this.rendered&&this.tooltip[0].offsetWidth>0&&this.reposition(a)}function r(a,c,e){d(b.body).delegate(a,(c.split?c:c.join(hb+" "))+hb,function(){var a=y.api[d.attr(this,U)];a&&!a.disabled&&e.apply(a,arguments)})}function s(a,c,f){var g,i,j,k,l,m=d(b.body),n=a[0]===b?m:a,o=a.metadata?a.metadata(f.metadata):F,p="html5"===f.metadata.type&&o?o[f.metadata.name]:F,q=a.data(f.metadata.name||"qtipopts");try{q="string"==typeof q?d.parseJSON(q):q}catch(r){}if(k=d.extend(D,{},y.defaults,f,"object"==typeof q?h(q):F,h(p||o)),i=k.position,k.id=c,"boolean"==typeof k.content.text){if(j=a.attr(k.content.attr),k.content.attr===E||!j)return E;k.content.text=j}if(i.container.length||(i.container=m),i.target===E&&(i.target=n),k.show.target===E&&(k.show.target=n),k.show.solo===D&&(k.show.solo=i.container.closest("body")),k.hide.target===E&&(k.hide.target=n),k.position.viewport===D&&(k.position.viewport=i.container),i.container=i.container.eq(0),i.at=new A(i.at,D),i.my=new A(i.my),a.data(S))if(k.overwrite)a.qtip("destroy",!0);else if(k.overwrite===E)return E;return a.attr(T,c),k.suppress&&(l=a.attr("title"))&&a.removeAttr("title").attr(cb,l).attr("title",""),g=new e(a,k,c,!!j),a.data(S,g),a.one("remove.qtip-"+c+" removeqtip.qtip-"+c,function(){var a;(a=d(this).data(S))&&a.destroy(!0)}),g}function t(a){return a.charAt(0).toUpperCase()+a.slice(1)}function u(a,b){var d,e,f=b.charAt(0).toUpperCase()+b.slice(1),g=(b+" "+sb.join(f+" ")+f).split(" "),h=0;if(rb[b])return a.css(rb[b]);for(;d=g[h++];)if((e=a.css(d))!==c)return rb[b]=d,e}function v(a,b){return Math.ceil(parseFloat(u(a,b)))}function w(a,b){this._ns="tip",this.options=b,this.offset=b.offset,this.size=[b.width,b.height],this.init(this.qtip=a)}function x(a,b){this.options=b,this._ns="-modal",this.init(this.qtip=a)}var y,z,A,B,C,D=!0,E=!1,F=null,G="x",H="y",I="width",J="height",K="top",L="left",M="bottom",N="right",O="center",P="flipinvert",Q="shift",R={},S="qtip",T="data-hasqtip",U="data-qtip-id",V=["ui-widget","ui-tooltip"],W="."+S,X="click dblclick mousedown mouseup mousemove mouseleave mouseenter".split(" "),Y=S+"-fixed",Z=S+"-default",$=S+"-focus",_=S+"-hover",ab=S+"-disabled",bb="_replacedByqTip",cb="oldtitle",db={ie:function(){for(var a=3,c=b.createElement("div");(c.innerHTML="<!--[if gt IE "+ ++a+"]><i></i><![endif]-->")&&c.getElementsByTagName("i")[0];);return a>4?a:0/0}(),iOS:parseFloat((""+(/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))||E};z=e.prototype,z._when=function(a){return d.when.apply(d,a)},z.render=function(a){if(this.rendered||this.destroyed)return this;var b,c=this,e=this.options,f=this.cache,g=this.elements,h=e.content.text,i=e.content.title,j=e.content.button,k=e.position,l=("."+this._id+" ",[]);return d.attr(this.target[0],"aria-describedby",this._id),this.tooltip=g.tooltip=b=d("<div/>",{id:this._id,"class":[S,Z,e.style.classes,S+"-pos-"+e.position.my.abbrev()].join(" "),width:e.style.width||"",height:e.style.height||"",tracking:"mouse"===k.target&&k.adjust.mouse,role:"alert","aria-live":"polite","aria-atomic":E,"aria-describedby":this._id+"-content","aria-hidden":D}).toggleClass(ab,this.disabled).attr(U,this.id).data(S,this).appendTo(k.container).append(g.content=d("<div />",{"class":S+"-content",id:this._id+"-content","aria-atomic":D})),this.rendered=-1,this.positioning=D,i&&(this._createTitle(),d.isFunction(i)||l.push(this._updateTitle(i,E))),j&&this._createButton(),d.isFunction(h)||l.push(this._updateContent(h,E)),this.rendered=D,this._setWidget(),d.each(R,function(a){var b;"render"===this.initialize&&(b=this(c))&&(c.plugins[a]=b)}),this._unassignEvents(),this._assignEvents(),this._when(l).then(function(){c._trigger("render"),c.positioning=E,c.hiddenDuringWait||!e.show.ready&&!a||c.toggle(D,f.event,E),c.hiddenDuringWait=E}),y.api[this.id]=this,this},z.destroy=function(a){function b(){if(!this.destroyed){this.destroyed=D;var a=this.target,b=a.attr(cb);this.rendered&&this.tooltip.stop(1,0).find("*").remove().end().remove(),d.each(this.plugins,function(){this.destroy&&this.destroy()}),clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this._unassignEvents(),a.removeData(S).removeAttr(U).removeAttr(T).removeAttr("aria-describedby"),this.options.suppress&&b&&a.attr("title",b).removeAttr(cb),this._unbind(a),this.options=this.elements=this.cache=this.timers=this.plugins=this.mouse=F,delete y.api[this.id]}}return this.destroyed?this.target:(a===D&&"hide"!==this.triggering||!this.rendered?b.call(this):(this.tooltip.one("tooltiphidden",d.proxy(b,this)),!this.triggering&&this.hide()),this.target)},B=z.checks={builtin:{"^id$":function(a,b,c,e){var f=c===D?y.nextid:c,g=S+"-"+f;f!==E&&f.length>0&&!d("#"+g).length?(this._id=g,this.rendered&&(this.tooltip[0].id=this._id,this.elements.content[0].id=this._id+"-content",this.elements.title[0].id=this._id+"-title")):a[b]=e},"^prerender":function(a,b,c){c&&!this.rendered&&this.render(this.options.show.ready)},"^content.text$":function(a,b,c){this._updateContent(c)},"^content.attr$":function(a,b,c,d){this.options.content.text===this.target.attr(d)&&this._updateContent(this.target.attr(c))},"^content.title$":function(a,b,c){return c?(c&&!this.elements.title&&this._createTitle(),this._updateTitle(c),void 0):this._removeTitle()},"^content.button$":function(a,b,c){this._updateButton(c)},"^content.title.(text|button)$":function(a,b,c){this.set("content."+b,c)},"^position.(my|at)$":function(a,b,c){"string"==typeof c&&(a[b]=new A(c,"at"===b))},"^position.container$":function(a,b,c){this.rendered&&this.tooltip.appendTo(c)},"^show.ready$":function(a,b,c){c&&(!this.rendered&&this.render(D)||this.toggle(D))},"^style.classes$":function(a,b,c,d){this.rendered&&this.tooltip.removeClass(d).addClass(c)},"^style.(width|height)":function(a,b,c){this.rendered&&this.tooltip.css(b,c)},"^style.widget|content.title":function(){this.rendered&&this._setWidget()},"^style.def":function(a,b,c){this.rendered&&this.tooltip.toggleClass(Z,!!c)},"^events.(render|show|move|hide|focus|blur)$":function(a,b,c){this.rendered&&this.tooltip[(d.isFunction(c)?"":"un")+"bind"]("tooltip"+b,c)},"^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)":function(){if(this.rendered){var a=this.options.position;this.tooltip.attr("tracking","mouse"===a.target&&a.adjust.mouse),this._unassignEvents(),this._assignEvents()}}}},z.get=function(a){if(this.destroyed)return this;var b=i(this.options,a.toLowerCase()),c=b[0][b[1]];return c.precedance?c.string():c};var eb=/^position\.(my|at|adjust|target|container|viewport)|style|content|show\.ready/i,fb=/^prerender|show\.ready/i;z.set=function(a,b){if(this.destroyed)return this;{var c,e=this.rendered,f=E,g=this.options;this.checks}return"string"==typeof a?(c=a,a={},a[c]=b):a=d.extend({},a),d.each(a,function(b,c){if(e&&fb.test(b))return delete a[b],void 0;var h,j=i(g,b.toLowerCase());h=j[0][j[1]],j[0][j[1]]=c&&c.nodeType?d(c):c,f=eb.test(b)||f,a[b]=[j[0],j[1],c,h]}),h(g),this.positioning=D,d.each(a,d.proxy(j,this)),this.positioning=E,this.rendered&&this.tooltip[0].offsetWidth>0&&f&&this.reposition("mouse"===g.position.target?F:this.cache.event),this},z._update=function(a,b){var c=this,e=this.cache;return this.rendered&&a?(d.isFunction(a)&&(a=a.call(this.elements.target,e.event,this)||""),d.isFunction(a.then)?(e.waiting=D,a.then(function(a){return e.waiting=E,c._update(a,b)},F,function(a){return c._update(a,b)})):a===E||!a&&""!==a?E:(a.jquery&&a.length>0?b.empty().append(a.css({display:"block",visibility:"visible"})):b.html(a),this._waitForContent(b).then(function(a){a.images&&a.images.length&&c.rendered&&c.tooltip[0].offsetWidth>0&&c.reposition(e.event,!a.length)}))):E},z._waitForContent=function(a){var b=this.cache;return b.waiting=D,(d.fn.imagesLoaded?a.imagesLoaded():d.Deferred().resolve([])).done(function(){b.waiting=E}).promise()},z._updateContent=function(a,b){this._update(a,this.elements.content,b)},z._updateTitle=function(a,b){this._update(a,this.elements.title,b)===E&&this._removeTitle(E)},z._createTitle=function(){var a=this.elements,b=this._id+"-title";a.titlebar&&this._removeTitle(),a.titlebar=d("<div />",{"class":S+"-titlebar "+(this.options.style.widget?k("header"):"")}).append(a.title=d("<div />",{id:b,"class":S+"-title","aria-atomic":D})).insertBefore(a.content).delegate(".qtip-close","mousedown keydown mouseup keyup mouseout",function(a){d(this).toggleClass("ui-state-active ui-state-focus","down"===a.type.substr(-4))}).delegate(".qtip-close","mouseover mouseout",function(a){d(this).toggleClass("ui-state-hover","mouseover"===a.type)}),this.options.content.button&&this._createButton()},z._removeTitle=function(a){var b=this.elements;b.title&&(b.titlebar.remove(),b.titlebar=b.title=b.button=F,a!==E&&this.reposition())},z.reposition=function(c,e){if(!this.rendered||this.positioning||this.destroyed)return this;this.positioning=D;var f,g,h=this.cache,i=this.tooltip,j=this.options.position,k=j.target,l=j.my,m=j.at,n=j.viewport,o=j.container,p=j.adjust,q=p.method.split(" "),r=i.outerWidth(E),s=i.outerHeight(E),t=0,u=0,v=i.css("position"),w={left:0,top:0},x=i[0].offsetWidth>0,y=c&&"scroll"===c.type,z=d(a),A=o[0].ownerDocument,B=this.mouse;if(d.isArray(k)&&2===k.length)m={x:L,y:K},w={left:k[0],top:k[1]};else if("mouse"===k)m={x:L,y:K},!B||!B.pageX||!p.mouse&&c&&c.pageX?c&&c.pageX||((!p.mouse||this.options.show.distance)&&h.origin&&h.origin.pageX?c=h.origin:(!c||c&&("resize"===c.type||"scroll"===c.type))&&(c=h.event)):c=B,"static"!==v&&(w=o.offset()),A.body.offsetWidth!==(a.innerWidth||A.documentElement.clientWidth)&&(g=d(b.body).offset()),w={left:c.pageX-w.left+(g&&g.left||0),top:c.pageY-w.top+(g&&g.top||0)},p.mouse&&y&&B&&(w.left-=(B.scrollX||0)-z.scrollLeft(),w.top-=(B.scrollY||0)-z.scrollTop());else{if("event"===k?c&&c.target&&"scroll"!==c.type&&"resize"!==c.type?h.target=d(c.target):c.target||(h.target=this.elements.target):"event"!==k&&(h.target=d(k.jquery?k:this.elements.target)),k=h.target,k=d(k).eq(0),0===k.length)return this;k[0]===b||k[0]===a?(t=db.iOS?a.innerWidth:k.width(),u=db.iOS?a.innerHeight:k.height(),k[0]===a&&(w={top:(n||k).scrollTop(),left:(n||k).scrollLeft()})):R.imagemap&&k.is("area")?f=R.imagemap(this,k,m,R.viewport?q:E):R.svg&&k&&k[0].ownerSVGElement?f=R.svg(this,k,m,R.viewport?q:E):(t=k.outerWidth(E),u=k.outerHeight(E),w=k.offset()),f&&(t=f.width,u=f.height,g=f.offset,w=f.position),w=this.reposition.offset(k,w,o),(db.iOS>3.1&&db.iOS<4.1||db.iOS>=4.3&&db.iOS<4.33||!db.iOS&&"fixed"===v)&&(w.left-=z.scrollLeft(),w.top-=z.scrollTop()),(!f||f&&f.adjustable!==E)&&(w.left+=m.x===N?t:m.x===O?t/2:0,w.top+=m.y===M?u:m.y===O?u/2:0)}return w.left+=p.x+(l.x===N?-r:l.x===O?-r/2:0),w.top+=p.y+(l.y===M?-s:l.y===O?-s/2:0),R.viewport?(w.adjusted=R.viewport(this,w,j,t,u,r,s),g&&w.adjusted.left&&(w.left+=g.left),g&&w.adjusted.top&&(w.top+=g.top)):w.adjusted={left:0,top:0},this._trigger("move",[w,n.elem||n],c)?(delete w.adjusted,e===E||!x||isNaN(w.left)||isNaN(w.top)||"mouse"===k||!d.isFunction(j.effect)?i.css(w):d.isFunction(j.effect)&&(j.effect.call(i,this,d.extend({},w)),i.queue(function(a){d(this).css({opacity:"",height:""}),db.ie&&this.style.removeAttribute("filter"),a()})),this.positioning=E,this):this},z.reposition.offset=function(a,c,e){function f(a,b){c.left+=b*a.scrollLeft(),c.top+=b*a.scrollTop()}if(!e[0])return c;var g,h,i,j,k=d(a[0].ownerDocument),l=!!db.ie&&"CSS1Compat"!==b.compatMode,m=e[0];do"static"!==(h=d.css(m,"position"))&&("fixed"===h?(i=m.getBoundingClientRect(),f(k,-1)):(i=d(m).position(),i.left+=parseFloat(d.css(m,"borderLeftWidth"))||0,i.top+=parseFloat(d.css(m,"borderTopWidth"))||0),c.left-=i.left+(parseFloat(d.css(m,"marginLeft"))||0),c.top-=i.top+(parseFloat(d.css(m,"marginTop"))||0),g||"hidden"===(j=d.css(m,"overflow"))||"visible"===j||(g=d(m)));while(m=m.offsetParent);return g&&(g[0]!==k[0]||l)&&f(g,1),c};var gb=(A=z.reposition.Corner=function(a,b){a=(""+a).replace(/([A-Z])/," $1").replace(/middle/gi,O).toLowerCase(),this.x=(a.match(/left|right/i)||a.match(/center/)||["inherit"])[0].toLowerCase(),this.y=(a.match(/top|bottom|center/i)||["inherit"])[0].toLowerCase(),this.forceY=!!b;var c=a.charAt(0);this.precedance="t"===c||"b"===c?H:G}).prototype;gb.invert=function(a,b){this[a]=this[a]===L?N:this[a]===N?L:b||this[a]},gb.string=function(){var a=this.x,b=this.y;return a===b?a:this.precedance===H||this.forceY&&"center"!==b?b+" "+a:a+" "+b},gb.abbrev=function(){var a=this.string().split(" ");return a[0].charAt(0)+(a[1]&&a[1].charAt(0)||"")},gb.clone=function(){return new A(this.string(),this.forceY)},z.toggle=function(a,c){var e=this.cache,f=this.options,g=this.tooltip;if(c){if(/over|enter/.test(c.type)&&/out|leave/.test(e.event.type)&&f.show.target.add(c.target).length===f.show.target.length&&g.has(c.relatedTarget).length)return this;e.event=l(c)}if(this.waiting&&!a&&(this.hiddenDuringWait=D),!this.rendered)return a?this.render(1):this;if(this.destroyed||this.disabled)return this;var h,i,j,k=a?"show":"hide",m=this.options[k],n=(this.options[a?"hide":"show"],this.options.position),o=this.options.content,p=this.tooltip.css("width"),q=this.tooltip.is(":visible"),r=a||1===m.target.length,s=!c||m.target.length<2||e.target[0]===c.target;return(typeof a).search("boolean|number")&&(a=!q),h=!g.is(":animated")&&q===a&&s,i=h?F:!!this._trigger(k,[90]),this.destroyed?this:(i!==E&&a&&this.focus(c),!i||h?this:(d.attr(g[0],"aria-hidden",!a),a?(e.origin=l(this.mouse),d.isFunction(o.text)&&this._updateContent(o.text,E),d.isFunction(o.title)&&this._updateTitle(o.title,E),!C&&"mouse"===n.target&&n.adjust.mouse&&(d(b).bind("mousemove."+S,this._storeMouse),C=D),p||g.css("width",g.outerWidth(E)),this.reposition(c,arguments[2]),p||g.css("width",""),m.solo&&("string"==typeof m.solo?d(m.solo):d(W,m.solo)).not(g).not(m.target).qtip("hide",d.Event("tooltipsolo"))):(clearTimeout(this.timers.show),delete e.origin,C&&!d(W+'[tracking="true"]:visible',m.solo).not(g).length&&(d(b).unbind("mousemove."+S),C=E),this.blur(c)),j=d.proxy(function(){a?(db.ie&&g[0].style.removeAttribute("filter"),g.css("overflow",""),"string"==typeof m.autofocus&&d(this.options.show.autofocus,g).focus(),this.options.show.target.trigger("qtip-"+this.id+"-inactive")):g.css({display:"",visibility:"",opacity:"",left:"",top:""}),this._trigger(a?"visible":"hidden")},this),m.effect===E||r===E?(g[k](),j()):d.isFunction(m.effect)?(g.stop(1,1),m.effect.call(g,this),g.queue("fx",function(a){j(),a()})):g.fadeTo(90,a?1:0,j),a&&m.target.trigger("qtip-"+this.id+"-inactive"),this))},z.show=function(a){return this.toggle(D,a)},z.hide=function(a){return this.toggle(E,a)},z.focus=function(a){if(!this.rendered||this.destroyed)return this;var b=d(W),c=this.tooltip,e=parseInt(c[0].style.zIndex,10),f=y.zindex+b.length;return c.hasClass($)||this._trigger("focus",[f],a)&&(e!==f&&(b.each(function(){this.style.zIndex>e&&(this.style.zIndex=this.style.zIndex-1)}),b.filter("."+$).qtip("blur",a)),c.addClass($)[0].style.zIndex=f),this},z.blur=function(a){return!this.rendered||this.destroyed?this:(this.tooltip.removeClass($),this._trigger("blur",[this.tooltip.css("zIndex")],a),this)},z.disable=function(a){return this.destroyed?this:("toggle"===a?a=!(this.rendered?this.tooltip.hasClass(ab):this.disabled):"boolean"!=typeof a&&(a=D),this.rendered&&this.tooltip.toggleClass(ab,a).attr("aria-disabled",a),this.disabled=!!a,this)},z.enable=function(){return this.disable(E)},z._createButton=function(){var a=this,b=this.elements,c=b.tooltip,e=this.options.content.button,f="string"==typeof e,g=f?e:"Close tooltip";b.button&&b.button.remove(),b.button=e.jquery?e:d("<a />",{"class":"qtip-close "+(this.options.style.widget?"":S+"-icon"),title:g,"aria-label":g}).prepend(d("<span />",{"class":"ui-icon ui-icon-close",html:"&times;"})),b.button.appendTo(b.titlebar||c).attr("role","button").click(function(b){return c.hasClass(ab)||a.hide(b),E})},z._updateButton=function(a){if(!this.rendered)return E;var b=this.elements.button;a?this._createButton():b.remove()},z._setWidget=function(){var a=this.options.style.widget,b=this.elements,c=b.tooltip,d=c.hasClass(ab);c.removeClass(ab),ab=a?"ui-state-disabled":"qtip-disabled",c.toggleClass(ab,d),c.toggleClass("ui-helper-reset "+k(),a).toggleClass(Z,this.options.style.def&&!a),b.content&&b.content.toggleClass(k("content"),a),b.titlebar&&b.titlebar.toggleClass(k("header"),a),b.button&&b.button.toggleClass(S+"-icon",!a)},z._storeMouse=function(a){(this.mouse=l(a)).type="mousemove"},z._bind=function(a,b,c,e,f){var g="."+this._id+(e?"-"+e:"");b.length&&d(a).bind((b.split?b:b.join(g+" "))+g,d.proxy(c,f||this))},z._unbind=function(a,b){d(a).unbind("."+this._id+(b?"-"+b:""))};var hb="."+S;d(function(){r(W,["mouseenter","mouseleave"],function(a){var b="mouseenter"===a.type,c=d(a.currentTarget),e=d(a.relatedTarget||a.target),f=this.options;b?(this.focus(a),c.hasClass(Y)&&!c.hasClass(ab)&&clearTimeout(this.timers.hide)):"mouse"===f.position.target&&f.hide.event&&f.show.target&&!e.closest(f.show.target[0]).length&&this.hide(a),c.toggleClass(_,b)}),r("["+U+"]",X,p)}),z._trigger=function(a,b,c){var e=d.Event("tooltip"+a);return e.originalEvent=c&&d.extend({},c)||this.cache.event||F,this.triggering=a,this.tooltip.trigger(e,[this].concat(b||[])),this.triggering=E,!e.isDefaultPrevented()},z._bindEvents=function(a,b,c,e,f,g){if(e.add(c).length===e.length){var h=[];b=d.map(b,function(b){var c=d.inArray(b,a);return c>-1?(h.push(a.splice(c,1)[0]),void 0):b}),h.length&&this._bind(c,h,function(a){var b=this.rendered?this.tooltip[0].offsetWidth>0:!1;(b?g:f).call(this,a)})}this._bind(c,a,f),this._bind(e,b,g)},z._assignInitialEvents=function(a){function b(a){return this.disabled||this.destroyed?E:(this.cache.event=l(a),this.cache.target=a?d(a.target):[c],clearTimeout(this.timers.show),this.timers.show=m.call(this,function(){this.render("object"==typeof a||e.show.ready)},e.show.delay),void 0)}var e=this.options,f=e.show.target,g=e.hide.target,h=e.show.event?d.trim(""+e.show.event).split(" "):[],i=e.hide.event?d.trim(""+e.hide.event).split(" "):[];/mouse(over|enter)/i.test(e.show.event)&&!/mouse(out|leave)/i.test(e.hide.event)&&i.push("mouseleave"),this._bind(f,"mousemove",function(a){this._storeMouse(a),this.cache.onTarget=D}),this._bindEvents(h,i,f,g,b,function(){clearTimeout(this.timers.show)}),(e.show.ready||e.prerender)&&b.call(this,a)},z._assignEvents=function(){var c=this,e=this.options,f=e.position,g=this.tooltip,h=e.show.target,i=e.hide.target,j=f.container,k=f.viewport,l=d(b),m=(d(b.body),d(a)),r=e.show.event?d.trim(""+e.show.event).split(" "):[],s=e.hide.event?d.trim(""+e.hide.event).split(" "):[];d.each(e.events,function(a,b){c._bind(g,"toggle"===a?["tooltipshow","tooltiphide"]:["tooltip"+a],b,null,g)}),/mouse(out|leave)/i.test(e.hide.event)&&"window"===e.hide.leave&&this._bind(l,["mouseout","blur"],function(a){/select|option/.test(a.target.nodeName)||a.relatedTarget||this.hide(a)}),e.hide.fixed?i=i.add(g.addClass(Y)):/mouse(over|enter)/i.test(e.show.event)&&this._bind(i,"mouseleave",function(){clearTimeout(this.timers.show)}),(""+e.hide.event).indexOf("unfocus")>-1&&this._bind(j.closest("html"),["mousedown","touchstart"],function(a){var b=d(a.target),c=this.rendered&&!this.tooltip.hasClass(ab)&&this.tooltip[0].offsetWidth>0,e=b.parents(W).filter(this.tooltip[0]).length>0;b[0]===this.target[0]||b[0]===this.tooltip[0]||e||this.target.has(b[0]).length||!c||this.hide(a)}),"number"==typeof e.hide.inactive&&(this._bind(h,"qtip-"+this.id+"-inactive",p),this._bind(i.add(g),y.inactiveEvents,p,"-inactive")),this._bindEvents(r,s,h,i,n,o),this._bind(h.add(g),"mousemove",function(a){if("number"==typeof e.hide.distance){var b=this.cache.origin||{},c=this.options.hide.distance,d=Math.abs;(d(a.pageX-b.pageX)>=c||d(a.pageY-b.pageY)>=c)&&this.hide(a)}this._storeMouse(a)}),"mouse"===f.target&&f.adjust.mouse&&(e.hide.event&&this._bind(h,["mouseenter","mouseleave"],function(a){this.cache.onTarget="mouseenter"===a.type}),this._bind(l,"mousemove",function(a){this.rendered&&this.cache.onTarget&&!this.tooltip.hasClass(ab)&&this.tooltip[0].offsetWidth>0&&this.reposition(a)})),(f.adjust.resize||k.length)&&this._bind(d.event.special.resize?k:m,"resize",q),f.adjust.scroll&&this._bind(m.add(f.container),"scroll",q)},z._unassignEvents=function(){var c=[this.options.show.target[0],this.options.hide.target[0],this.rendered&&this.tooltip[0],this.options.position.container[0],this.options.position.viewport[0],this.options.position.container.closest("html")[0],a,b];this._unbind(d([]).pushStack(d.grep(c,function(a){return"object"==typeof a})))},y=d.fn.qtip=function(a,b,e){var f=(""+a).toLowerCase(),g=F,i=d.makeArray(arguments).slice(1),j=i[i.length-1],k=this[0]?d.data(this[0],S):F;return!arguments.length&&k||"api"===f?k:"string"==typeof a?(this.each(function(){var a=d.data(this,S);if(!a)return D;if(j&&j.timeStamp&&(a.cache.event=j),!b||"option"!==f&&"options"!==f)a[f]&&a[f].apply(a,i);else{if(e===c&&!d.isPlainObject(b))return g=a.get(b),E;a.set(b,e)}}),g!==F?g:this):"object"!=typeof a&&arguments.length?void 0:(k=h(d.extend(D,{},a)),this.each(function(a){var b,c;return c=d.isArray(k.id)?k.id[a]:k.id,c=!c||c===E||c.length<1||y.api[c]?y.nextid++:c,b=s(d(this),c,k),b===E?D:(y.api[c]=b,d.each(R,function(){"initialize"===this.initialize&&this(b)}),b._assignInitialEvents(j),void 0)}))},d.qtip=e,y.api={},d.each({attr:function(a,b){if(this.length){var c=this[0],e="title",f=d.data(c,"qtip");if(a===e&&f&&"object"==typeof f&&f.options.suppress)return arguments.length<2?d.attr(c,cb):(f&&f.options.content.attr===e&&f.cache.attr&&f.set("content.text",b),this.attr(cb,b))}return d.fn["attr"+bb].apply(this,arguments)},clone:function(a){var b=(d([]),d.fn["clone"+bb].apply(this,arguments));return a||b.filter("["+cb+"]").attr("title",function(){return d.attr(this,cb)}).removeAttr(cb),b}},function(a,b){if(!b||d.fn[a+bb])return D;var c=d.fn[a+bb]=d.fn[a];d.fn[a]=function(){return b.apply(this,arguments)||c.apply(this,arguments)}}),d.ui||(d["cleanData"+bb]=d.cleanData,d.cleanData=function(a){for(var b,c=0;(b=d(a[c])).length;c++)if(b.attr(T))try{b.triggerHandler("removeqtip")}catch(e){}d["cleanData"+bb].apply(this,arguments)}),y.version="2.2.0",y.nextid=0,y.inactiveEvents=X,y.zindex=15e3,y.defaults={prerender:E,id:E,overwrite:D,suppress:D,content:{text:D,attr:"title",title:E,button:E},position:{my:"top left",at:"bottom right",target:E,container:E,viewport:E,adjust:{x:0,y:0,mouse:D,scroll:D,resize:D,method:"flipinvert flipinvert"},effect:function(a,b){d(this).animate(b,{duration:200,queue:E})}},show:{target:E,event:"mouseenter",effect:D,delay:90,solo:E,ready:E,autofocus:E},hide:{target:E,event:"mouseleave",effect:D,delay:0,fixed:E,inactive:E,leave:"window",distance:E},style:{classes:"",widget:E,width:E,height:E,def:D},events:{render:F,move:F,show:F,hide:F,toggle:F,visible:F,hidden:F,focus:F,blur:F}};var ib,jb="margin",kb="border",lb="color",mb="background-color",nb="transparent",ob=" !important",pb=!!b.createElement("canvas").getContext,qb=/rgba?\(0, 0, 0(, 0)?\)|transparent|#123456/i,rb={},sb=["Webkit","O","Moz","ms"];if(pb)var tb=a.devicePixelRatio||1,ub=function(){var a=b.createElement("canvas").getContext("2d");return a.backingStorePixelRatio||a.webkitBackingStorePixelRatio||a.mozBackingStorePixelRatio||a.msBackingStorePixelRatio||a.oBackingStorePixelRatio||1}(),vb=tb/ub;else var wb=function(a,b,c){return"<qtipvml:"+a+' xmlns="urn:schemas-microsoft.com:vml" class="qtip-vml" '+(b||"")+' style="behavior: url(#default#VML); '+(c||"")+'" />'};d.extend(w.prototype,{init:function(a){var b,c;c=this.element=a.elements.tip=d("<div />",{"class":S+"-tip"}).prependTo(a.tooltip),pb?(b=d("<canvas />").appendTo(this.element)[0].getContext("2d"),b.lineJoin="miter",b.miterLimit=1e5,b.save()):(b=wb("shape",'coordorigin="0,0"',"position:absolute;"),this.element.html(b+b),a._bind(d("*",c).add(c),["click","mousedown"],function(a){a.stopPropagation()},this._ns)),a._bind(a.tooltip,"tooltipmove",this.reposition,this._ns,this),this.create()},_swapDimensions:function(){this.size[0]=this.options.height,this.size[1]=this.options.width},_resetDimensions:function(){this.size[0]=this.options.width,this.size[1]=this.options.height},_useTitle:function(a){var b=this.qtip.elements.titlebar;return b&&(a.y===K||a.y===O&&this.element.position().top+this.size[1]/2+this.options.offset<b.outerHeight(D))},_parseCorner:function(a){var b=this.qtip.options.position.my;return a===E||b===E?a=E:a===D?a=new A(b.string()):a.string||(a=new A(a),a.fixed=D),a},_parseWidth:function(a,b,c){var d=this.qtip.elements,e=kb+t(b)+"Width";return(c?v(c,e):v(d.content,e)||v(this._useTitle(a)&&d.titlebar||d.content,e)||v(d.tooltip,e))||0},_parseRadius:function(a){var b=this.qtip.elements,c=kb+t(a.y)+t(a.x)+"Radius";return db.ie<9?0:v(this._useTitle(a)&&b.titlebar||b.content,c)||v(b.tooltip,c)||0},_invalidColour:function(a,b,c){var d=a.css(b);return!d||c&&d===a.css(c)||qb.test(d)?E:d},_parseColours:function(a){var b=this.qtip.elements,c=this.element.css("cssText",""),e=kb+t(a[a.precedance])+t(lb),f=this._useTitle(a)&&b.titlebar||b.content,g=this._invalidColour,h=[];return h[0]=g(c,mb)||g(f,mb)||g(b.content,mb)||g(b.tooltip,mb)||c.css(mb),h[1]=g(c,e,lb)||g(f,e,lb)||g(b.content,e,lb)||g(b.tooltip,e,lb)||b.tooltip.css(e),d("*",c).add(c).css("cssText",mb+":"+nb+ob+";"+kb+":0"+ob+";"),h},_calculateSize:function(a){var b,c,d,e=a.precedance===H,f=this.options.width,g=this.options.height,h="c"===a.abbrev(),i=(e?f:g)*(h?.5:1),j=Math.pow,k=Math.round,l=Math.sqrt(j(i,2)+j(g,2)),m=[this.border/i*l,this.border/g*l];return m[2]=Math.sqrt(j(m[0],2)-j(this.border,2)),m[3]=Math.sqrt(j(m[1],2)-j(this.border,2)),b=l+m[2]+m[3]+(h?0:m[0]),c=b/l,d=[k(c*f),k(c*g)],e?d:d.reverse()},_calculateTip:function(a,b,c){c=c||1,b=b||this.size;var d=b[0]*c,e=b[1]*c,f=Math.ceil(d/2),g=Math.ceil(e/2),h={br:[0,0,d,e,d,0],bl:[0,0,d,0,0,e],tr:[0,e,d,0,d,e],tl:[0,0,0,e,d,e],tc:[0,e,f,0,d,e],bc:[0,0,d,0,f,e],rc:[0,0,d,g,0,e],lc:[d,0,d,e,0,g]};return h.lt=h.br,h.rt=h.bl,h.lb=h.tr,h.rb=h.tl,h[a.abbrev()]},_drawCoords:function(a,b){a.beginPath(),a.moveTo(b[0],b[1]),a.lineTo(b[2],b[3]),a.lineTo(b[4],b[5]),a.closePath()},create:function(){var a=this.corner=(pb||db.ie)&&this._parseCorner(this.options.corner);return(this.enabled=!!this.corner&&"c"!==this.corner.abbrev())&&(this.qtip.cache.corner=a.clone(),this.update()),this.element.toggle(this.enabled),this.corner},update:function(b,c){if(!this.enabled)return this;var e,f,g,h,i,j,k,l,m=this.qtip.elements,n=this.element,o=n.children(),p=this.options,q=this.size,r=p.mimic,s=Math.round;b||(b=this.qtip.cache.corner||this.corner),r===E?r=b:(r=new A(r),r.precedance=b.precedance,"inherit"===r.x?r.x=b.x:"inherit"===r.y?r.y=b.y:r.x===r.y&&(r[b.precedance]=b[b.precedance])),f=r.precedance,b.precedance===G?this._swapDimensions():this._resetDimensions(),e=this.color=this._parseColours(b),e[1]!==nb?(l=this.border=this._parseWidth(b,b[b.precedance]),p.border&&1>l&&!qb.test(e[1])&&(e[0]=e[1]),this.border=l=p.border!==D?p.border:l):this.border=l=0,k=this.size=this._calculateSize(b),n.css({width:k[0],height:k[1],lineHeight:k[1]+"px"}),j=b.precedance===H?[s(r.x===L?l:r.x===N?k[0]-q[0]-l:(k[0]-q[0])/2),s(r.y===K?k[1]-q[1]:0)]:[s(r.x===L?k[0]-q[0]:0),s(r.y===K?l:r.y===M?k[1]-q[1]-l:(k[1]-q[1])/2)],pb?(g=o[0].getContext("2d"),g.restore(),g.save(),g.clearRect(0,0,6e3,6e3),h=this._calculateTip(r,q,vb),i=this._calculateTip(r,this.size,vb),o.attr(I,k[0]*vb).attr(J,k[1]*vb),o.css(I,k[0]).css(J,k[1]),this._drawCoords(g,i),g.fillStyle=e[1],g.fill(),g.translate(j[0]*vb,j[1]*vb),this._drawCoords(g,h),g.fillStyle=e[0],g.fill()):(h=this._calculateTip(r),h="m"+h[0]+","+h[1]+" l"+h[2]+","+h[3]+" "+h[4]+","+h[5]+" xe",j[2]=l&&/^(r|b)/i.test(b.string())?8===db.ie?2:1:0,o.css({coordsize:k[0]+l+" "+(k[1]+l),antialias:""+(r.string().indexOf(O)>-1),left:j[0]-j[2]*Number(f===G),top:j[1]-j[2]*Number(f===H),width:k[0]+l,height:k[1]+l}).each(function(a){var b=d(this);b[b.prop?"prop":"attr"]({coordsize:k[0]+l+" "+(k[1]+l),path:h,fillcolor:e[0],filled:!!a,stroked:!a}).toggle(!(!l&&!a)),!a&&b.html(wb("stroke",'weight="'+2*l+'px" color="'+e[1]+'" miterlimit="1000" joinstyle="miter"'))})),a.opera&&setTimeout(function(){m.tip.css({display:"inline-block",visibility:"visible"})},1),c!==E&&this.calculate(b,k)},calculate:function(a,b){if(!this.enabled)return E;var c,e,f=this,g=this.qtip.elements,h=this.element,i=this.options.offset,j=(g.tooltip.hasClass("ui-widget"),{});return a=a||this.corner,c=a.precedance,b=b||this._calculateSize(a),e=[a.x,a.y],c===G&&e.reverse(),d.each(e,function(d,e){var h,k,l;e===O?(h=c===H?L:K,j[h]="50%",j[jb+"-"+h]=-Math.round(b[c===H?0:1]/2)+i):(h=f._parseWidth(a,e,g.tooltip),k=f._parseWidth(a,e,g.content),l=f._parseRadius(a),j[e]=Math.max(-f.border,d?k:i+(l>h?l:-h)))
4
+ }),j[a[c]]-=b[c===G?0:1],h.css({margin:"",top:"",bottom:"",left:"",right:""}).css(j),j},reposition:function(a,b,d){function e(a,b,c,d,e){a===Q&&j.precedance===b&&k[d]&&j[c]!==O?j.precedance=j.precedance===G?H:G:a!==Q&&k[d]&&(j[b]=j[b]===O?k[d]>0?d:e:j[b]===d?e:d)}function f(a,b,e){j[a]===O?p[jb+"-"+b]=o[a]=g[jb+"-"+b]-k[b]:(h=g[e]!==c?[k[b],-g[b]]:[-k[b],g[b]],(o[a]=Math.max(h[0],h[1]))>h[0]&&(d[b]-=k[b],o[b]=E),p[g[e]!==c?e:b]=o[a])}if(this.enabled){var g,h,i=b.cache,j=this.corner.clone(),k=d.adjusted,l=b.options.position.adjust.method.split(" "),m=l[0],n=l[1]||l[0],o={left:E,top:E,x:0,y:0},p={};this.corner.fixed!==D&&(e(m,G,H,L,N),e(n,H,G,K,M),j.string()===i.corner.string()||i.cornerTop===k.top&&i.cornerLeft===k.left||this.update(j,E)),g=this.calculate(j),g.right!==c&&(g.left=-g.right),g.bottom!==c&&(g.top=-g.bottom),g.user=this.offset,(o.left=m===Q&&!!k.left)&&f(G,L,N),(o.top=n===Q&&!!k.top)&&f(H,K,M),this.element.css(p).toggle(!(o.x&&o.y||j.x===O&&o.y||j.y===O&&o.x)),d.left-=g.left.charAt?g.user:m!==Q||o.top||!o.left&&!o.top?g.left+this.border:0,d.top-=g.top.charAt?g.user:n!==Q||o.left||!o.left&&!o.top?g.top+this.border:0,i.cornerLeft=k.left,i.cornerTop=k.top,i.corner=j.clone()}},destroy:function(){this.qtip._unbind(this.qtip.tooltip,this._ns),this.qtip.elements.tip&&this.qtip.elements.tip.find("*").remove().end().remove()}}),ib=R.tip=function(a){return new w(a,a.options.style.tip)},ib.initialize="render",ib.sanitize=function(a){if(a.style&&"tip"in a.style){var b=a.style.tip;"object"!=typeof b&&(b=a.style.tip={corner:b}),/string|boolean/i.test(typeof b.corner)||(b.corner=D)}},B.tip={"^position.my|style.tip.(corner|mimic|border)$":function(){this.create(),this.qtip.reposition()},"^style.tip.(height|width)$":function(a){this.size=[a.width,a.height],this.update(),this.qtip.reposition()},"^content.title|style.(classes|widget)$":function(){this.update()}},d.extend(D,y.defaults,{style:{tip:{corner:D,mimic:E,width:6,height:6,border:D,offset:0}}}),R.viewport=function(c,d,e,f,g,h,i){function j(a,b,c,e,f,g,h,i,j){var k=d[f],m=v[a],t=w[a],u=c===Q,x=m===f?j:m===g?-j:-j/2,y=t===f?i:t===g?-i:-i/2,z=r[f]+s[f]-(o?0:n[f]),A=z-k,B=k+j-(h===I?p:q)-z,C=x-(v.precedance===a||m===v[b]?y:0)-(t===O?i/2:0);return u?(C=(m===f?1:-1)*x,d[f]+=A>0?A:B>0?-B:0,d[f]=Math.max(-n[f]+s[f],k-C,Math.min(Math.max(-n[f]+s[f]+(h===I?p:q),k+C),d[f],"center"===m?k-x:1e9))):(e*=c===P?2:0,A>0&&(m!==f||B>0)?(d[f]-=C+e,l.invert(a,f)):B>0&&(m!==g||A>0)&&(d[f]-=(m===O?-C:C)+e,l.invert(a,g)),d[f]<r&&-d[f]>B&&(d[f]=k,l=v.clone())),d[f]-k}var k,l,m,n,o,p,q,r,s,t=e.target,u=c.elements.tooltip,v=e.my,w=e.at,x=e.adjust,y=x.method.split(" "),z=y[0],A=y[1]||y[0],B=e.viewport,C=e.container,D=c.cache,F={left:0,top:0};return B.jquery&&t[0]!==a&&t[0]!==b.body&&"none"!==x.method?(n=C.offset()||F,o="static"===C.css("position"),k="fixed"===u.css("position"),p=B[0]===a?B.width():B.outerWidth(E),q=B[0]===a?B.height():B.outerHeight(E),r={left:k?0:B.scrollLeft(),top:k?0:B.scrollTop()},s=B.offset()||F,("shift"!==z||"shift"!==A)&&(l=v.clone()),F={left:"none"!==z?j(G,H,z,x.x,L,N,I,f,h):0,top:"none"!==A?j(H,G,A,x.y,K,M,J,g,i):0},l&&D.lastClass!==(m=S+"-pos-"+l.abbrev())&&u.removeClass(c.cache.lastClass).addClass(c.cache.lastClass=m),F):F},R.polys={polygon:function(a,b){var c,d,e,f={width:0,height:0,position:{top:1e10,right:0,bottom:0,left:1e10},adjustable:E},g=0,h=[],i=1,j=1,k=0,l=0;for(g=a.length;g--;)c=[parseInt(a[--g],10),parseInt(a[g+1],10)],c[0]>f.position.right&&(f.position.right=c[0]),c[0]<f.position.left&&(f.position.left=c[0]),c[1]>f.position.bottom&&(f.position.bottom=c[1]),c[1]<f.position.top&&(f.position.top=c[1]),h.push(c);if(d=f.width=Math.abs(f.position.right-f.position.left),e=f.height=Math.abs(f.position.bottom-f.position.top),"c"===b.abbrev())f.position={left:f.position.left+f.width/2,top:f.position.top+f.height/2};else{for(;d>0&&e>0&&i>0&&j>0;)for(d=Math.floor(d/2),e=Math.floor(e/2),b.x===L?i=d:b.x===N?i=f.width-d:i+=Math.floor(d/2),b.y===K?j=e:b.y===M?j=f.height-e:j+=Math.floor(e/2),g=h.length;g--&&!(h.length<2);)k=h[g][0]-f.position.left,l=h[g][1]-f.position.top,(b.x===L&&k>=i||b.x===N&&i>=k||b.x===O&&(i>k||k>f.width-i)||b.y===K&&l>=j||b.y===M&&j>=l||b.y===O&&(j>l||l>f.height-j))&&h.splice(g,1);f.position={left:h[0][0],top:h[0][1]}}return f},rect:function(a,b,c,d){return{width:Math.abs(c-a),height:Math.abs(d-b),position:{left:Math.min(a,c),top:Math.min(b,d)}}},_angles:{tc:1.5,tr:7/4,tl:5/4,bc:.5,br:.25,bl:.75,rc:2,lc:1,c:0},ellipse:function(a,b,c,d,e){var f=R.polys._angles[e.abbrev()],g=0===f?0:c*Math.cos(f*Math.PI),h=d*Math.sin(f*Math.PI);return{width:2*c-Math.abs(g),height:2*d-Math.abs(h),position:{left:a+g,top:b+h},adjustable:E}},circle:function(a,b,c,d){return R.polys.ellipse(a,b,c,c,d)}},R.imagemap=function(a,b,c){b.jquery||(b=d(b));var e,f,g,h,i,j=b.attr("shape").toLowerCase().replace("poly","polygon"),k=d('img[usemap="#'+b.parent("map").attr("name")+'"]'),l=d.trim(b.attr("coords")),m=l.replace(/,$/,"").split(",");if(!k.length)return E;if("polygon"===j)h=R.polys.polygon(m,c);else{if(!R.polys[j])return E;for(g=-1,i=m.length,f=[];++g<i;)f.push(parseInt(m[g],10));h=R.polys[j].apply(this,f.concat(c))}return e=k.offset(),e.left+=Math.ceil((k.outerWidth(E)-k.width())/2),e.top+=Math.ceil((k.outerHeight(E)-k.height())/2),h.position.left+=e.left,h.position.top+=e.top,h},R.svg=function(a,c,e){for(var f,g,h,i,j,k,l,m,n,o,p,q=d(b),r=c[0],s=d(r.ownerSVGElement),t=1,u=1,v=!0;!r.getBBox;)r=r.parentNode;if(!r.getBBox||!r.parentNode)return E;f=s.attr("width")||s.width()||parseInt(s.css("width"),10),g=s.attr("height")||s.height()||parseInt(s.css("height"),10);var w=(parseInt(c.css("stroke-width"),10)||0)/2;switch(w&&(t+=w/f,u+=w/g),r.nodeName){case"ellipse":case"circle":o=R.polys.ellipse(r.cx.baseVal.value,r.cy.baseVal.value,(r.rx||r.r).baseVal.value+w,(r.ry||r.r).baseVal.value+w,e);break;case"line":case"polygon":case"polyline":for(n=r.points||[{x:r.x1.baseVal.value,y:r.y1.baseVal.value},{x:r.x2.baseVal.value,y:r.y2.baseVal.value}],o=[],m=-1,k=n.numberOfItems||n.length;++m<k;)l=n.getItem?n.getItem(m):n[m],o.push.apply(o,[l.x,l.y]);o=R.polys.polygon(o,e);break;default:o=r.getBoundingClientRect(),o={width:o.width,height:o.height,position:{left:o.left,top:o.top}},v=!1}return p=o.position,s=s[0],v&&(s.createSVGPoint&&(h=r.getScreenCTM(),n=s.createSVGPoint(),n.x=p.left,n.y=p.top,i=n.matrixTransform(h),p.left=i.x,p.top=i.y),s.viewBox&&(j=s.viewBox.baseVal)&&j.width&&j.height&&(t*=f/j.width,u*=g/j.height)),p.left+=q.scrollLeft(),p.top+=q.scrollTop(),o};var xb,yb,zb="qtip-modal",Ab="."+zb;yb=function(){function a(a){if(d.expr[":"].focusable)return d.expr[":"].focusable;var b,c,e,f=!isNaN(d.attr(a,"tabindex")),g=a.nodeName&&a.nodeName.toLowerCase();return"area"===g?(b=a.parentNode,c=b.name,a.href&&c&&"map"===b.nodeName.toLowerCase()?(e=d("img[usemap=#"+c+"]")[0],!!e&&e.is(":visible")):!1):/input|select|textarea|button|object/.test(g)?!a.disabled:"a"===g?a.href||f:f}function c(a){k.length<1&&a.length?a.not("body").blur():k.first().focus()}function e(a){if(i.is(":visible")){var b,e=d(a.target),h=f.tooltip,j=e.closest(W);b=j.length<1?E:parseInt(j[0].style.zIndex,10)>parseInt(h[0].style.zIndex,10),b||e.closest(W)[0]===h[0]||c(e),g=a.target===k[k.length-1]}}var f,g,h,i,j=this,k={};d.extend(j,{init:function(){return i=j.elem=d("<div />",{id:"qtip-overlay",html:"<div></div>",mousedown:function(){return E}}).hide(),d(b.body).bind("focusin"+Ab,e),d(b).bind("keydown"+Ab,function(a){f&&f.options.show.modal.escape&&27===a.keyCode&&f.hide(a)}),i.bind("click"+Ab,function(a){f&&f.options.show.modal.blur&&f.hide(a)}),j},update:function(b){f=b,k=b.options.show.modal.stealfocus!==E?b.tooltip.find("*").filter(function(){return a(this)}):[]},toggle:function(a,e,g){var k=(d(b.body),a.tooltip),l=a.options.show.modal,m=l.effect,n=e?"show":"hide",o=i.is(":visible"),p=d(Ab).filter(":visible:not(:animated)").not(k);return j.update(a),e&&l.stealfocus!==E&&c(d(":focus")),i.toggleClass("blurs",l.blur),e&&i.appendTo(b.body),i.is(":animated")&&o===e&&h!==E||!e&&p.length?j:(i.stop(D,E),d.isFunction(m)?m.call(i,e):m===E?i[n]():i.fadeTo(parseInt(g,10)||90,e?1:0,function(){e||i.hide()}),e||i.queue(function(a){i.css({left:"",top:""}),d(Ab).length||i.detach(),a()}),h=e,f.destroyed&&(f=F),j)}}),j.init()},yb=new yb,d.extend(x.prototype,{init:function(a){var b=a.tooltip;return this.options.on?(a.elements.overlay=yb.elem,b.addClass(zb).css("z-index",y.modal_zindex+d(Ab).length),a._bind(b,["tooltipshow","tooltiphide"],function(a,c,e){var f=a.originalEvent;if(a.target===b[0])if(f&&"tooltiphide"===a.type&&/mouse(leave|enter)/.test(f.type)&&d(f.relatedTarget).closest(yb.elem[0]).length)try{a.preventDefault()}catch(g){}else(!f||f&&"tooltipsolo"!==f.type)&&this.toggle(a,"tooltipshow"===a.type,e)},this._ns,this),a._bind(b,"tooltipfocus",function(a,c){if(!a.isDefaultPrevented()&&a.target===b[0]){var e=d(Ab),f=y.modal_zindex+e.length,g=parseInt(b[0].style.zIndex,10);yb.elem[0].style.zIndex=f-1,e.each(function(){this.style.zIndex>g&&(this.style.zIndex-=1)}),e.filter("."+$).qtip("blur",a.originalEvent),b.addClass($)[0].style.zIndex=f,yb.update(c);try{a.preventDefault()}catch(h){}}},this._ns,this),a._bind(b,"tooltiphide",function(a){a.target===b[0]&&d(Ab).filter(":visible").not(b).last().qtip("focus",a)},this._ns,this),void 0):this},toggle:function(a,b,c){return a&&a.isDefaultPrevented()?this:(yb.toggle(this.qtip,!!b,c),void 0)},destroy:function(){this.qtip.tooltip.removeClass(zb),this.qtip._unbind(this.qtip.tooltip,this._ns),yb.toggle(this.qtip,E),delete this.qtip.elements.overlay}}),xb=R.modal=function(a){return new x(a,a.options.show.modal)},xb.sanitize=function(a){a.show&&("object"!=typeof a.show.modal?a.show.modal={on:!!a.show.modal}:"undefined"==typeof a.show.modal.on&&(a.show.modal.on=D))},y.modal_zindex=y.zindex-200,xb.initialize="render",B.modal={"^show.modal.(on|blur)$":function(){this.destroy(),this.init(),this.qtip.elems.overlay.toggle(this.qtip.tooltip[0].offsetWidth>0)}},d.extend(D,y.defaults,{show:{modal:{on:E,effect:D,blur:D,stealfocus:D,escape:D}}})})}(window,document);
 
admin/views/admin-widget.php CHANGED
@@ -1,61 +1,61 @@
1
- <?php
2
- /**
3
- * Represents the admin view for Google Maps Builder widget.
4
- * *
5
- * @package Google_Maps_Builder
6
- * @author Devin Walker <devin@wordimpress.com>
7
- * @license GPL-2.0+
8
- * @link http://wordimpress.com
9
- * @copyright 2014 WordImpress, Devin Walker
10
- */
11
-
12
- ?>
13
- <!-- Title -->
14
- <p>
15
- <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Widget Title', $this->plugin_slug ); ?></label>
16
- <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo $title; ?>" />
17
- </p>
18
-
19
-
20
- <!-- API Options -->
21
- <p class="widget-api-option">
22
- <label for="<?php echo $this->get_field_id( 'api_option' ); ?>"><?php _e( 'API Request Method:', $this->plugin_slug ); ?></label><br />
23
- <span class="wpgp-method-span place-details-api-option-wrap">
24
- <input type="radio" name="<?php echo $this->get_field_name( 'api_option' ); ?>" class="<?php echo $this->get_field_id( 'api_option' ); ?> " value="0" <?php checked( '0', $api_option ); ?>><span class="wpgp-method-label"><?php _e( 'Place Details', $this->plugin_slug ); ?></span><img src="<?php echo GMB_PLUGIN_URL . '/admin/assets/img/help.png' ?>" title="<?php _e( 'Google Place Details allows you to display more details about a particular establishment. This method returns more comprehensive information about the indicated place such as its complete address, phone number, user rating and reviews.', $this->plugin_slug ); ?>" class="tooltip-info" width="16" height="16" /><br />
25
- </span>
26
- <span class="wpgp-method-span place-search-api-option-wrap">
27
- <input type="radio" name="<?php echo $this->get_field_name( 'api_option' ); ?>" class="<?php echo $this->get_field_id( 'api_option' ); ?> business-api-option" value="1" <?php checked( '1', $api_option ); ?>><span class="wpgp-method-label"><?php _e( 'Place Search', $this->plugin_slug ); ?></span><img src="<?php echo GMB_PLUGIN_URL . '/admin/assets/img/help.png' ?>" title="<?php _e( 'This option allows you to query for place information on a variety of categories, such as: establishments, prominent points of interest, geographic locations, and more. You can search for places either by proximity or a text string. A Place Search returns a list of Places along with summary information about each Place; additional information is available via a Place Details query.', $this->plugin_slug ); ?>" class="tooltip-info" width="16" height="16" />
28
- </span>
29
- </p>
30
-
31
- <!-- Google Places Lookup Autocomplete Search Form -->
32
- <div class="google-autocomplete-map-wrap" <?php if ( $api_option == '0' ) { ?> style="display:block;" <?php } ?>>
33
- <input class="pac-input controls" type="text" placeholder="Enter a location">
34
-
35
- <div class="map-canvas"></div>
36
-
37
- <div class="type-selector controls">
38
- <ul class="map-control-list clearfix">
39
- <li>
40
- <input type="radio" name="type" id="changetype-all" checked="checked">
41
- <label for="changetype-all"><?php _e( 'All' ); ?></label>
42
- </li>
43
- <li>
44
- <input type="radio" name="type" id="changetype-establishment">
45
- <label for="changetype-establishment"><?php _e( 'Establishments' ); ?></label>
46
- </li>
47
- <li>
48
- <input type="radio" name="type" id="changetype-geocode">
49
- <label for="changetype-geocode"><?php _e( 'Geocodes' ); ?></label>
50
- </li>
51
- </ul>
52
- </div>
53
-
54
-
55
- <input class="widefat place-detail-reference" id="<?php echo $this->get_field_id( 'place_detail_reference' ); ?>" name="<?php echo $this->get_field_name( 'place_detail_reference' ); ?>" type="text" value="<?php echo $place_detail_reference; ?>" />
56
-
57
- </div>
58
-
59
- <div class="widget-footer">
60
- <div class="powered-by-google"></div>
61
- </div>
1
+ <?php
2
+ /**
3
+ * Represents the admin view for Google Maps Builder widget.
4
+ * *
5
+ * @package Google_Maps_Builder
6
+ * @author Devin Walker <devin@wordimpress.com>
7
+ * @license GPL-2.0+
8
+ * @link http://wordimpress.com
9
+ * @copyright 2014 WordImpress, Devin Walker
10
+ */
11
+
12
+ ?>
13
+ <!-- Title -->
14
+ <p>
15
+ <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Widget Title', $this->plugin_slug ); ?></label>
16
+ <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo $title; ?>" />
17
+ </p>
18
+
19
+
20
+ <!-- API Options -->
21
+ <p class="widget-api-option">
22
+ <label for="<?php echo $this->get_field_id( 'api_option' ); ?>"><?php _e( 'API Request Method:', $this->plugin_slug ); ?></label><br />
23
+ <span class="wpgp-method-span place-details-api-option-wrap">
24
+ <input type="radio" name="<?php echo $this->get_field_name( 'api_option' ); ?>" class="<?php echo $this->get_field_id( 'api_option' ); ?> " value="0" <?php checked( '0', $api_option ); ?>><span class="wpgp-method-label"><?php _e( 'Place Details', $this->plugin_slug ); ?></span><img src="<?php echo GMB_PLUGIN_URL . '/admin/assets/img/help.png' ?>" title="<?php _e( 'Google Place Details allows you to display more details about a particular establishment. This method returns more comprehensive information about the indicated place such as its complete address, phone number, user rating and reviews.', $this->plugin_slug ); ?>" class="tooltip-info" width="16" height="16" /><br />
25
+ </span>
26
+ <span class="wpgp-method-span place-search-api-option-wrap">
27
+ <input type="radio" name="<?php echo $this->get_field_name( 'api_option' ); ?>" class="<?php echo $this->get_field_id( 'api_option' ); ?> business-api-option" value="1" <?php checked( '1', $api_option ); ?>><span class="wpgp-method-label"><?php _e( 'Place Search', $this->plugin_slug ); ?></span><img src="<?php echo GMB_PLUGIN_URL . '/admin/assets/img/help.png' ?>" title="<?php _e( 'This option allows you to query for place information on a variety of categories, such as: establishments, prominent points of interest, geographic locations, and more. You can search for places either by proximity or a text string. A Place Search returns a list of Places along with summary information about each Place; additional information is available via a Place Details query.', $this->plugin_slug ); ?>" class="tooltip-info" width="16" height="16" />
28
+ </span>
29
+ </p>
30
+
31
+ <!-- Google Places Lookup Autocomplete Search Form -->
32
+ <div class="google-autocomplete-map-wrap" <?php if ( $api_option == '0' ) { ?> style="display:block;" <?php } ?>>
33
+ <input class="pac-input controls" type="text" placeholder="Enter a location">
34
+
35
+ <div class="map-canvas"></div>
36
+
37
+ <div class="type-selector controls">
38
+ <ul class="map-control-list clearfix">
39
+ <li>
40
+ <input type="radio" name="type" id="changetype-all" checked="checked">
41
+ <label for="changetype-all"><?php _e( 'All' ); ?></label>
42
+ </li>
43
+ <li>
44
+ <input type="radio" name="type" id="changetype-establishment">
45
+ <label for="changetype-establishment"><?php _e( 'Establishments' ); ?></label>
46
+ </li>
47
+ <li>
48
+ <input type="radio" name="type" id="changetype-geocode">
49
+ <label for="changetype-geocode"><?php _e( 'Geocodes' ); ?></label>
50
+ </li>
51
+ </ul>
52
+ </div>
53
+
54
+
55
+ <input class="widefat place-detail-reference" id="<?php echo $this->get_field_id( 'place_detail_reference' ); ?>" name="<?php echo $this->get_field_name( 'place_detail_reference' ); ?>" type="text" value="<?php echo $place_detail_reference; ?>" />
56
+
57
+ </div>
58
+
59
+ <div class="widget-footer">
60
+ <div class="powered-by-google"></div>
61
+ </div>
admin/views/logo-svg-small.php CHANGED
@@ -1,33 +1,33 @@
1
- <?php
2
- /**
3
- * LOGO SVG
4
- *
5
- * @package Google_Maps_Builder
6
- * @author Devin Walker <devin@wordimpress.com>
7
- * @license GPL-2.0+
8
- * @link http://wordimpress.com
9
- * @copyright 2014 WordImpress, Devin Walker
10
- */
11
- ?>
12
-
13
- <svg height="35px" id="Layer_1" style="enable-background:new 0 0 512 512;" version="1.1" viewBox="0 0 512 512" width="35px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g id="flat_x5F_8">
14
- <g>
15
- <path d="M424.574,447.998l-25.471-6.039l77.041-316.293c-11.028-18.652-24.314-35.824-39.56-51.053 l-19.13,78.383L202.053,101.92L226.582,1.405c-19.051,2.152-37.457,6.407-55.006,12.514L152.948,90.28L77.144,72.303 c-13.296,12.945-25.186,27.313-35.437,42.88l99.446,23.58L85.485,367.595l-67.161-15.896c8.636,21.324,20.039,41.22,33.805,59.239 l21.566,5.14l-3.812,15.668c12.955,13.675,27.366,25.967,43.053,36.515l9.862-40.541l245.086,58.11 C388.496,475.764,407.523,462.987,424.574,447.998z M190.26,150.403l215.405,51.075l-55.666,228.84l-215.405-51.081 L190.26,150.403z" style="fill:#FFF8A3;" />
16
- <path d="M417.456,152.996l-40.345-9.564l-41.879,41.348l70.433,16.699l-55.666,228.84l-212.431-50.377 l-60.126,59.369c10.944,10.652,22.775,20.396,35.497,28.951l9.862-40.541l245.086,58.111 c20.608-10.068,39.637-22.846,56.688-37.834l-25.471-6.039l77.041-316.293c-9.802-16.58-21.396-31.982-34.558-45.895l-8.246,8.143 L417.456,152.996z" style="fill:#E1D78F;" />
17
- <g>
18
- <path d="M69.887,431.748l3.812-15.668l-21.566-5.141C57.67,418.198,63.612,425.135,69.887,431.748z" style="fill:#AAC26F;" />
19
- <path d="M-0.344,255.718c0,33.956,6.664,66.331,18.67,95.981l67.161,15.896l55.668-228.832l-99.446-23.58 C15.153,155.528-0.344,203.8-0.344,255.718z" style="fill:#AAC26F;" />
20
- <path d="M255.657-0.283c-9.836,0-19.527,0.611-29.074,1.688L202.054,101.92l215.402,51.075l19.13-78.382 C390.268,28.338,326.307-0.283,255.657-0.283z" style="fill:#AAC26F;" />
21
- <path d="M152.949,90.28l18.628-76.361c-35.746,12.424-67.882,32.539-94.432,58.386L152.949,90.28z" style="fill:#AAC26F;" />
22
- </g>
23
- <polygon points="134.594,379.237 349.999,430.318 405.665,201.479 190.26,150.403 " style="fill:#6AAFDA;" />
24
- <g>
25
- <path d="M112.939,468.262c40.778,27.436,89.875,43.455,142.718,43.455 c40.263,0,78.341-9.322,112.229-25.885l-245.085-58.111L112.939,468.262z" style="fill:#5E9CC1;" />
26
- <polygon points="405.665,201.479 335.232,184.779 137.568,379.941 349.999,430.318 " style="fill:#5E9CC1;" />
27
- </g>
28
- <path d="M511.656,255.718c0-47.491-12.975-91.925-35.512-130.052l-77.041,316.293l25.471,6.039 C477.936,401.082,511.656,332.359,511.656,255.718z" style="fill:#C6A963;" />
29
- <path d="M497.996,113.431c0,48.554-67.83,190.112-89.042,190.112c-20.666,0-89.044-141.56-89.044-190.112 c0-48.554,39.865-87.915,89.044-87.915C458.131,25.516,497.996,64.877,497.996,113.431z" style="fill:#F05D4A;" />
30
- <path d="M454.284,115.528c0-24.716-20.296-44.749-45.33-44.749c-25.033,0-45.33,20.033-45.33,44.749 c0,24.719,20.297,44.758,45.33,44.758C433.988,160.284,454.284,140.246,454.284,115.528z" style="fill:#BD4231;" />
31
- </g>
32
- </g>
33
- <g id="Layer_1_1_" /></svg>
1
+ <?php
2
+ /**
3
+ * LOGO SVG
4
+ *
5
+ * @package Google_Maps_Builder
6
+ * @author Devin Walker <devin@wordimpress.com>
7
+ * @license GPL-2.0+
8
+ * @link http://wordimpress.com
9
+ * @copyright 2014 WordImpress, Devin Walker
10
+ */
11
+ ?>
12
+
13
+ <svg height="35px" id="Layer_1" style="enable-background:new 0 0 512 512;" version="1.1" viewBox="0 0 512 512" width="35px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g id="flat_x5F_8">
14
+ <g>
15
+ <path d="M424.574,447.998l-25.471-6.039l77.041-316.293c-11.028-18.652-24.314-35.824-39.56-51.053 l-19.13,78.383L202.053,101.92L226.582,1.405c-19.051,2.152-37.457,6.407-55.006,12.514L152.948,90.28L77.144,72.303 c-13.296,12.945-25.186,27.313-35.437,42.88l99.446,23.58L85.485,367.595l-67.161-15.896c8.636,21.324,20.039,41.22,33.805,59.239 l21.566,5.14l-3.812,15.668c12.955,13.675,27.366,25.967,43.053,36.515l9.862-40.541l245.086,58.11 C388.496,475.764,407.523,462.987,424.574,447.998z M190.26,150.403l215.405,51.075l-55.666,228.84l-215.405-51.081 L190.26,150.403z" style="fill:#FFF8A3;" />
16
+ <path d="M417.456,152.996l-40.345-9.564l-41.879,41.348l70.433,16.699l-55.666,228.84l-212.431-50.377 l-60.126,59.369c10.944,10.652,22.775,20.396,35.497,28.951l9.862-40.541l245.086,58.111 c20.608-10.068,39.637-22.846,56.688-37.834l-25.471-6.039l77.041-316.293c-9.802-16.58-21.396-31.982-34.558-45.895l-8.246,8.143 L417.456,152.996z" style="fill:#E1D78F;" />
17
+ <g>
18
+ <path d="M69.887,431.748l3.812-15.668l-21.566-5.141C57.67,418.198,63.612,425.135,69.887,431.748z" style="fill:#AAC26F;" />
19
+ <path d="M-0.344,255.718c0,33.956,6.664,66.331,18.67,95.981l67.161,15.896l55.668-228.832l-99.446-23.58 C15.153,155.528-0.344,203.8-0.344,255.718z" style="fill:#AAC26F;" />
20
+ <path d="M255.657-0.283c-9.836,0-19.527,0.611-29.074,1.688L202.054,101.92l215.402,51.075l19.13-78.382 C390.268,28.338,326.307-0.283,255.657-0.283z" style="fill:#AAC26F;" />
21
+ <path d="M152.949,90.28l18.628-76.361c-35.746,12.424-67.882,32.539-94.432,58.386L152.949,90.28z" style="fill:#AAC26F;" />
22
+ </g>
23
+ <polygon points="134.594,379.237 349.999,430.318 405.665,201.479 190.26,150.403 " style="fill:#6AAFDA;" />
24
+ <g>
25
+ <path d="M112.939,468.262c40.778,27.436,89.875,43.455,142.718,43.455 c40.263,0,78.341-9.322,112.229-25.885l-245.085-58.111L112.939,468.262z" style="fill:#5E9CC1;" />
26
+ <polygon points="405.665,201.479 335.232,184.779 137.568,379.941 349.999,430.318 " style="fill:#5E9CC1;" />
27
+ </g>
28
+ <path d="M511.656,255.718c0-47.491-12.975-91.925-35.512-130.052l-77.041,316.293l25.471,6.039 C477.936,401.082,511.656,332.359,511.656,255.718z" style="fill:#C6A963;" />
29
+ <path d="M497.996,113.431c0,48.554-67.83,190.112-89.042,190.112c-20.666,0-89.044-141.56-89.044-190.112 c0-48.554,39.865-87.915,89.044-87.915C458.131,25.516,497.996,64.877,497.996,113.431z" style="fill:#F05D4A;" />
30
+ <path d="M454.284,115.528c0-24.716-20.296-44.749-45.33-44.749c-25.033,0-45.33,20.033-45.33,44.749 c0,24.719,20.297,44.758,45.33,44.758C433.988,160.284,454.284,140.246,454.284,115.528z" style="fill:#BD4231;" />
31
+ </g>
32
+ </g>
33
+ <g id="Layer_1_1_" /></svg>
admin/views/logo-svg.php CHANGED
@@ -1,34 +1,34 @@
1
- <?php
2
- /**
3
- * LOGO SVG
4
-
5
- *
6
- * @package Google_Maps_Builder
7
- * @author Devin Walker <devin@wordimpress.com>
8
- * @license GPL-2.0+
9
- * @link http://wordimpress.com
10
- * @copyright 2014 WordImpress, Devin Walker
11
- */
12
- ?>
13
-
14
- <svg height="200px" id="Layer_1" style="enable-background:new 0 0 512 512;" version="1.1" viewBox="0 0 512 512" width="200px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g id="flat_x5F_8">
15
- <g>
16
- <path d="M424.574,447.998l-25.471-6.039l77.041-316.293c-11.028-18.652-24.314-35.824-39.56-51.053 l-19.13,78.383L202.053,101.92L226.582,1.405c-19.051,2.152-37.457,6.407-55.006,12.514L152.948,90.28L77.144,72.303 c-13.296,12.945-25.186,27.313-35.437,42.88l99.446,23.58L85.485,367.595l-67.161-15.896c8.636,21.324,20.039,41.22,33.805,59.239 l21.566,5.14l-3.812,15.668c12.955,13.675,27.366,25.967,43.053,36.515l9.862-40.541l245.086,58.11 C388.496,475.764,407.523,462.987,424.574,447.998z M190.26,150.403l215.405,51.075l-55.666,228.84l-215.405-51.081 L190.26,150.403z" style="fill:#FFF8A3;" />
17
- <path d="M417.456,152.996l-40.345-9.564l-41.879,41.348l70.433,16.699l-55.666,228.84l-212.431-50.377 l-60.126,59.369c10.944,10.652,22.775,20.396,35.497,28.951l9.862-40.541l245.086,58.111 c20.608-10.068,39.637-22.846,56.688-37.834l-25.471-6.039l77.041-316.293c-9.802-16.58-21.396-31.982-34.558-45.895l-8.246,8.143 L417.456,152.996z" style="fill:#E1D78F;" />
18
- <g>
19
- <path d="M69.887,431.748l3.812-15.668l-21.566-5.141C57.67,418.198,63.612,425.135,69.887,431.748z" style="fill:#AAC26F;" />
20
- <path d="M-0.344,255.718c0,33.956,6.664,66.331,18.67,95.981l67.161,15.896l55.668-228.832l-99.446-23.58 C15.153,155.528-0.344,203.8-0.344,255.718z" style="fill:#AAC26F;" />
21
- <path d="M255.657-0.283c-9.836,0-19.527,0.611-29.074,1.688L202.054,101.92l215.402,51.075l19.13-78.382 C390.268,28.338,326.307-0.283,255.657-0.283z" style="fill:#AAC26F;" />
22
- <path d="M152.949,90.28l18.628-76.361c-35.746,12.424-67.882,32.539-94.432,58.386L152.949,90.28z" style="fill:#AAC26F;" />
23
- </g>
24
- <polygon points="134.594,379.237 349.999,430.318 405.665,201.479 190.26,150.403 " style="fill:#6AAFDA;" />
25
- <g>
26
- <path d="M112.939,468.262c40.778,27.436,89.875,43.455,142.718,43.455 c40.263,0,78.341-9.322,112.229-25.885l-245.085-58.111L112.939,468.262z" style="fill:#5E9CC1;" />
27
- <polygon points="405.665,201.479 335.232,184.779 137.568,379.941 349.999,430.318 " style="fill:#5E9CC1;" />
28
- </g>
29
- <path d="M511.656,255.718c0-47.491-12.975-91.925-35.512-130.052l-77.041,316.293l25.471,6.039 C477.936,401.082,511.656,332.359,511.656,255.718z" style="fill:#C6A963;" />
30
- <path d="M497.996,113.431c0,48.554-67.83,190.112-89.042,190.112c-20.666,0-89.044-141.56-89.044-190.112 c0-48.554,39.865-87.915,89.044-87.915C458.131,25.516,497.996,64.877,497.996,113.431z" style="fill:#F05D4A;" />
31
- <path d="M454.284,115.528c0-24.716-20.296-44.749-45.33-44.749c-25.033,0-45.33,20.033-45.33,44.749 c0,24.719,20.297,44.758,45.33,44.758C433.988,160.284,454.284,140.246,454.284,115.528z" style="fill:#BD4231;" />
32
- </g>
33
- </g>
34
- <g id="Layer_1_1_" /></svg>
1
+ <?php
2
+ /**
3
+ * LOGO SVG
4
+
5
+ *
6
+ * @package Google_Maps_Builder
7
+ * @author Devin Walker <devin@wordimpress.com>
8
+ * @license GPL-2.0+
9
+ * @link http://wordimpress.com
10
+ * @copyright 2014 WordImpress, Devin Walker
11
+ */
12
+ ?>
13
+
14
+ <svg height="200px" id="Layer_1" style="enable-background:new 0 0 512 512;" version="1.1" viewBox="0 0 512 512" width="200px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g id="flat_x5F_8">
15
+ <g>
16
+ <path d="M424.574,447.998l-25.471-6.039l77.041-316.293c-11.028-18.652-24.314-35.824-39.56-51.053 l-19.13,78.383L202.053,101.92L226.582,1.405c-19.051,2.152-37.457,6.407-55.006,12.514L152.948,90.28L77.144,72.303 c-13.296,12.945-25.186,27.313-35.437,42.88l99.446,23.58L85.485,367.595l-67.161-15.896c8.636,21.324,20.039,41.22,33.805,59.239 l21.566,5.14l-3.812,15.668c12.955,13.675,27.366,25.967,43.053,36.515l9.862-40.541l245.086,58.11 C388.496,475.764,407.523,462.987,424.574,447.998z M190.26,150.403l215.405,51.075l-55.666,228.84l-215.405-51.081 L190.26,150.403z" style="fill:#FFF8A3;" />
17
+ <path d="M417.456,152.996l-40.345-9.564l-41.879,41.348l70.433,16.699l-55.666,228.84l-212.431-50.377 l-60.126,59.369c10.944,10.652,22.775,20.396,35.497,28.951l9.862-40.541l245.086,58.111 c20.608-10.068,39.637-22.846,56.688-37.834l-25.471-6.039l77.041-316.293c-9.802-16.58-21.396-31.982-34.558-45.895l-8.246,8.143 L417.456,152.996z" style="fill:#E1D78F;" />
18
+ <g>
19
+ <path d="M69.887,431.748l3.812-15.668l-21.566-5.141C57.67,418.198,63.612,425.135,69.887,431.748z" style="fill:#AAC26F;" />
20
+ <path d="M-0.344,255.718c0,33.956,6.664,66.331,18.67,95.981l67.161,15.896l55.668-228.832l-99.446-23.58 C15.153,155.528-0.344,203.8-0.344,255.718z" style="fill:#AAC26F;" />
21
+ <path d="M255.657-0.283c-9.836,0-19.527,0.611-29.074,1.688L202.054,101.92l215.402,51.075l19.13-78.382 C390.268,28.338,326.307-0.283,255.657-0.283z" style="fill:#AAC26F;" />
22
+ <path d="M152.949,90.28l18.628-76.361c-35.746,12.424-67.882,32.539-94.432,58.386L152.949,90.28z" style="fill:#AAC26F;" />
23
+ </g>
24
+ <polygon points="134.594,379.237 349.999,430.318 405.665,201.479 190.26,150.403 " style="fill:#6AAFDA;" />
25
+ <g>
26
+ <path d="M112.939,468.262c40.778,27.436,89.875,43.455,142.718,43.455 c40.263,0,78.341-9.322,112.229-25.885l-245.085-58.111L112.939,468.262z" style="fill:#5E9CC1;" />
27
+ <polygon points="405.665,201.479 335.232,184.779 137.568,379.941 349.999,430.318 " style="fill:#5E9CC1;" />
28
+ </g>
29
+ <path d="M511.656,255.718c0-47.491-12.975-91.925-35.512-130.052l-77.041,316.293l25.471,6.039 C477.936,401.082,511.656,332.359,511.656,255.718z" style="fill:#C6A963;" />
30
+ <path d="M497.996,113.431c0,48.554-67.83,190.112-89.042,190.112c-20.666,0-89.044-141.56-89.044-190.112 c0-48.554,39.865-87.915,89.044-87.915C458.131,25.516,497.996,64.877,497.996,113.431z" style="fill:#F05D4A;" />
31
+ <path d="M454.284,115.528c0-24.716-20.296-44.749-45.33-44.749c-25.033,0-45.33,20.033-45.33,44.749 c0,24.719,20.297,44.758,45.33,44.758C433.988,160.284,454.284,140.246,454.284,115.528z" style="fill:#BD4231;" />
32
+ </g>
33
+ </g>
34
+ <g id="Layer_1_1_" /></svg>
admin/views/settings-page.php CHANGED
@@ -1,86 +1,86 @@
1
- <?php
2
- /**
3
- * Represents the view for the administration dashboard.
4
- *
5
- * This includes the header, options, and other information that should provide
6
- * The User Interface to the end user.
7
- *
8
- * @package Google_Maps_Builder
9
- * @author Devin Walker <devin@wordimpress.com>
10
- * @license GPL-2.0+
11
- * @link http://wordimpress.com
12
- * @copyright 2014 WordImpress, Devin Walker
13
- */
14
-
15
- ?>
16
-
17
- <div class="wrap">
18
-
19
- <?php global $current_user;
20
- $user_id = $current_user->ID;
21
- // Check that the user hasn't already clicked to ignore the welcome message and that they have appropriate permissions
22
- if ( ! get_user_meta( $user_id, 'gmb_hide_welcome' ) && current_user_can( 'install_plugins' ) ) {
23
- ?>
24
- <div class="container welcome-header">
25
- <div class="row">
26
-
27
- <div class="col-md-9">
28
- <h1 class="main-heading"><?php _e( 'Welcome to Google Maps Builder', $this->plugin_slug ); ?> <?php echo $this->meta['Version']; ?></h1>
29
-
30
- <p class="main-subheading"><?php _e( 'Thanks for using Google Maps Builder', $this->plugin_slug ); ?> <?php echo $this->meta['Version']; ?>. <?php _e( 'To get started, read over the documentation, take a gander at the settings, and build yourself some maps! If you enjoy this plugin please consider telling a friend, following us or purchasing the Pro edition (coming soon!).', $this->plugin_slug ); ?></p>
31
- <?php include( 'social-media.php' ); ?>
32
-
33
- </div>
34
-
35
- <div class="col-md-3">
36
- <div class="logo-svg">
37
- <?php include( 'logo-svg.php' ); ?>
38
- </div>
39
- </div>
40
- </div>
41
- </div>
42
-
43
- <?php } ?>
44
-
45
- <div class="logo-svg logo-svg-small pull-left" <?php echo (!get_user_meta( $user_id, 'gmb_hide_welcome') ?
46
- 'style="display:none;"' : ''); ?>>
47
- <div class="gmb-plugin-heading">Google Maps Builder <?php echo $this->meta['Version']; ?></div>
48
- <?php include ('logo-svg-small.php'); ?>
49
- </div>
50
-
51
-
52
- <?php
53
- /**
54
- * Option tabs
55
- *
56
- * Better organize our options in tabs
57
- *
58
- * @see: http://code.tutsplus.com/tutorials/the-complete-guide-to-the-wordpress-settings-api-part-5-tabbed-navigation-for-your-settings-page--wp-24971
59
- */
60
- $active_tab = isset($_GET['tab']) ? $_GET['tab'] : 'map_options';
61
- ?>
62
- <h2 class="nav-tab-wrapper">
63
- <a href="?post_type=google_maps&page=<?php echo self::$key; ?>" class="nav-tab <?php echo $active_tab == 'map_options' ? 'nav-tab-active' : ''; ?>"><?php _e('Map Options', $this->plugin_slug); ?></a>
64
- <a href="?post_type=google_maps&page=<?php echo self::$key; ?>&tab=general_settings" class="nav-tab <?php echo $active_tab == 'general_settings' ? 'nav-tab-active' : ''; ?>"><?php _e('General Options', $this->plugin_slug); ?></a>
65
- </h2>
66
-
67
-
68
- <?php
69
- /**
70
- * Get the appropriate tab
71
- */
72
- switch ($active_tab) {
73
- case 'map_options':
74
- include ('tab-map-options.php');
75
- break;
76
- case 'general_settings':
77
- include ('tab-general-settings.php');
78
- break;
79
- default :
80
- include ('tab-map-options.php');
81
- break;
82
- }
83
- ?>
84
-
85
-
86
  </div>
1
+ <?php
2
+ /**
3
+ * Represents the view for the administration dashboard.
4
+ *
5
+ * This includes the header, options, and other information that should provide
6
+ * The User Interface to the end user.
7
+ *
8
+ * @package Google_Maps_Builder
9
+ * @author Devin Walker <devin@wordimpress.com>
10
+ * @license GPL-2.0+
11
+ * @link http://wordimpress.com
12
+ * @copyright 2014 WordImpress, Devin Walker
13
+ */
14
+
15
+ ?>
16
+
17
+ <div class="wrap">
18
+
19
+ <?php global $current_user;
20
+ $user_id = $current_user->ID;
21
+ // Check that the user hasn't already clicked to ignore the welcome message and that they have appropriate permissions
22
+ if ( ! get_user_meta( $user_id, 'gmb_hide_welcome' ) && current_user_can( 'install_plugins' ) ) {
23
+ ?>
24
+ <div class="container welcome-header">
25
+ <div class="row">
26
+
27
+ <div class="col-md-9">
28
+ <h1 class="main-heading"><?php _e( 'Welcome to Google Maps Builder', $this->plugin_slug ); ?> <?php echo $this->meta['Version']; ?></h1>
29
+
30
+ <p class="main-subheading"><?php _e( 'Thanks for using Google Maps Builder', $this->plugin_slug ); ?> <?php echo $this->meta['Version']; ?>. <?php _e( 'To get started, read over the documentation, take a gander at the settings, and build yourself some maps! If you enjoy this plugin please consider telling a friend, following us or purchasing the Pro edition (coming soon!).', $this->plugin_slug ); ?></p>
31
+ <?php include( 'social-media.php' ); ?>
32
+
33
+ </div>
34
+
35
+ <div class="col-md-3">
36
+ <div class="logo-svg">
37
+ <?php include( 'logo-svg.php' ); ?>
38
+ </div>
39
+ </div>
40
+ </div>
41
+ </div>
42
+
43
+ <?php } ?>
44
+
45
+ <div class="logo-svg logo-svg-small pull-left" <?php echo( ! get_user_meta( $user_id, 'gmb_hide_welcome' ) ?
46
+ 'style="display:none;"' : '' ); ?>>
47
+ <div class="gmb-plugin-heading">Google Maps Builder <?php echo $this->meta['Version']; ?></div>
48
+ <?php include( 'logo-svg-small.php' ); ?>
49
+ </div>
50
+
51
+
52
+ <?php
53
+ /**
54
+ * Option tabs
55
+ *
56
+ * Better organize our options in tabs
57
+ *
58
+ * @see: http://code.tutsplus.com/tutorials/the-complete-guide-to-the-wordpress-settings-api-part-5-tabbed-navigation-for-your-settings-page--wp-24971
59
+ */
60
+ $active_tab = isset( $_GET['tab'] ) ? $_GET['tab'] : 'map_options';
61
+ ?>
62
+ <h2 class="nav-tab-wrapper">
63
+ <a href="?post_type=google_maps&page=<?php echo self::$key; ?>" class="nav-tab <?php echo $active_tab == 'map_options' ? 'nav-tab-active' : ''; ?>"><?php _e( 'Map Options', $this->plugin_slug ); ?></a>
64
+ <a href="?post_type=google_maps&page=<?php echo self::$key; ?>&tab=general_settings" class="nav-tab <?php echo $active_tab == 'general_settings' ? 'nav-tab-active' : ''; ?>"><?php _e( 'General Options', $this->plugin_slug ); ?></a>
65
+ </h2>
66
+
67
+
68
+ <?php
69
+ /**
70
+ * Get the appropriate tab
71
+ */
72
+ switch ( $active_tab ) {
73
+ case 'map_options':
74
+ include( 'tab-map-options.php' );
75
+ break;
76
+ case 'general_settings':
77
+ include( 'tab-general-settings.php' );
78
+ break;
79
+ default :
80
+ include( 'tab-map-options.php' );
81
+ break;
82
+ }
83
+ ?>
84
+
85
+
86
  </div>
admin/views/tab-map-options.php CHANGED
@@ -17,7 +17,7 @@
17
  <div class="col-md-10">
18
 
19
  <h3><?php _e('Default Map Settings', $this->plugin_slug); ?></h3>
20
- <p><?php _e('The following settings change the default map options that display when created a new map. <strong>Many more options coming soon!</strong>', $this->plugin_slug); ?></p>
21
  <?php cmb_metabox_form( $this->map_option_fields(), self::$key ); ?>
22
  </div>
23
 
17
  <div class="col-md-10">
18
 
19
  <h3><?php _e('Default Map Settings', $this->plugin_slug); ?></h3>
20
+ <p><?php _e('The following settings change the default map options that display when created a new map.', $this->plugin_slug); ?></p>
21
  <?php cmb_metabox_form( $this->map_option_fields(), self::$key ); ?>
22
  </div>
23
 
google-maps-builder.php CHANGED
@@ -1,64 +1,64 @@
1
- <?php
2
- /**
3
- * Google Maps Builder
4
- *
5
- * @package Google_Maps_Builder
6
- * @author Devin Walker <devin@wordimpress.com>
7
- * @license GPL-2.0+
8
- * @link http://wordimpress.com
9
- * @copyright 2014 WordImpress, Devin Walker
10
- *
11
- * @wordpress-google-places
12
- * Plugin Name: Google Maps Builder
13
- * Plugin URI: http://wordimpress.com/
14
- * Description: Create stylish and powerful Google Maps quickly and easily.
15
- * Version: 1.0.1
16
- * Author: dlocc, wordimpress
17
- * Author URI: http://wordimpress.com/
18
- * Text Domain: google-maps-builder
19
- * License: GPL-2.0+
20
- * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
21
- * Domain Path: /languages
22
- */
23
-
24
- // If this file is called directly, abort.
25
- if ( ! defined( 'WPINC' ) ) {
26
- die;
27
- }
28
- // Define Constants
29
- define( 'GMB_PLUGIN_PATH', untrailingslashit( plugin_dir_path( __FILE__ ) ) );
30
- define( 'GMB_PLUGIN_URL', plugins_url( basename( plugin_dir_path( __FILE__ ) ), basename( __FILE__ ) ) );
31
- define( 'GMB_PLUGIN_BASE', plugin_basename( __FILE__ ) );
32
- define( 'GMB_DEBUG', false );
33
-
34
- /*----------------------------------------------------------------------------*
35
- * Public-Facing Functionality
36
- *----------------------------------------------------------------------------*/
37
- require_once( plugin_dir_path( __FILE__ ) . 'public/class-wordpress-google-maps.php' );
38
- //require_once( plugin_dir_path( __FILE__ ) . 'public/class-wordpress-google-maps-widget.php' );
39
- require_once( plugin_dir_path( __FILE__ ) . 'admin/class-wordpress-google-maps-settings.php' );
40
- require_once( plugin_dir_path( __FILE__ ) . 'public/class-wordpress-google-maps-engine.php' );
41
-
42
-
43
- /*
44
- * Register hooks that are fired when the plugin is activated or deactivated.
45
- * When the plugin is deleted, the uninstall.php file is loaded.
46
- */
47
- register_activation_hook( __FILE__, array( 'Google_Maps_Builder', 'activate' ) );
48
- register_deactivation_hook( __FILE__, array( 'Google_Maps_Builder', 'deactivate' ) );
49
-
50
- /*
51
- * Get instances of Google_Maps_Builder class
52
- */
53
- add_action( 'plugins_loaded', array( 'Google_Maps_Builder', 'get_instance' ) );
54
- add_action( 'plugins_loaded', array( 'Google_Maps_Builder_Engine', 'get_instance' ) );
55
-
56
- /*----------------------------------------------------------------------------*
57
- * Dashboard and Administrative Functionality
58
- *----------------------------------------------------------------------------*/
59
- if ( is_admin() ) {
60
-
61
- require_once( plugin_dir_path( __FILE__ ) . 'admin/class-wordpress-google-maps-admin.php' );
62
- add_action( 'plugins_loaded', array( 'Google_Maps_Builder_Admin', 'get_instance' ) );
63
-
64
- }
1
+ <?php
2
+ /**
3
+ * Google Maps Builder
4
+ *
5
+ * @package Google_Maps_Builder
6
+ * @author Devin Walker <devin@wordimpress.com>
7
+ * @license GPL-2.0+
8
+ * @link http://wordimpress.com
9
+ * @copyright 2014 WordImpress, Devin Walker
10
+ *
11
+ * @wordpress-google-places
12
+ * Plugin Name: Google Maps Builder
13
+ * Plugin URI: http://wordimpress.com/
14
+ * Description: Create stylish and powerful Google Maps quickly and easily.
15
+ * Version: 1.0.4
16
+ * Author: WordImpress
17
+ * Author URI: http://wordimpress.com/
18
+ * Text Domain: google-maps-builder
19
+ * License: GPL-2.0+
20
+ * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
21
+ * Domain Path: /languages
22
+ */
23
+
24
+ // If this file is called directly, abort.
25
+ if ( ! defined( 'WPINC' ) ) {
26
+ die;
27
+ }
28
+ // Define Constants
29
+ define( 'GMB_PLUGIN_PATH', untrailingslashit( plugin_dir_path( __FILE__ ) ) );
30
+ define( 'GMB_PLUGIN_URL', plugins_url( basename( plugin_dir_path( __FILE__ ) ), basename( __FILE__ ) ) );
31
+ define( 'GMB_PLUGIN_BASE', plugin_basename( __FILE__ ) );
32
+ define( 'GMB_DEBUG', false );
33
+
34
+ /*----------------------------------------------------------------------------*
35
+ * Public-Facing Functionality
36
+ *----------------------------------------------------------------------------*/
37
+ require_once( plugin_dir_path( __FILE__ ) . 'public/class-wordpress-google-maps.php' );
38
+ //require_once( plugin_dir_path( __FILE__ ) . 'public/class-wordpress-google-maps-widget.php' );
39
+ require_once( plugin_dir_path( __FILE__ ) . 'admin/class-wordpress-google-maps-settings.php' );
40
+ require_once( plugin_dir_path( __FILE__ ) . 'public/class-wordpress-google-maps-engine.php' );
41
+
42
+
43
+ /*
44
+ * Register hooks that are fired when the plugin is activated or deactivated.
45
+ * When the plugin is deleted, the uninstall.php file is loaded.
46
+ */
47
+ register_activation_hook( __FILE__, array( 'Google_Maps_Builder', 'activate' ) );
48
+ register_deactivation_hook( __FILE__, array( 'Google_Maps_Builder', 'deactivate' ) );
49
+
50
+ /*
51
+ * Get instances of Google_Maps_Builder class
52
+ */
53
+ add_action( 'plugins_loaded', array( 'Google_Maps_Builder', 'get_instance' ) );
54
+ add_action( 'plugins_loaded', array( 'Google_Maps_Builder_Engine', 'get_instance' ) );
55
+
56
+ /*----------------------------------------------------------------------------*
57
+ * Dashboard and Administrative Functionality
58
+ *----------------------------------------------------------------------------*/
59
+ if ( is_admin() ) {
60
+
61
+ require_once( plugin_dir_path( __FILE__ ) . 'admin/class-wordpress-google-maps-admin.php' );
62
+ add_action( 'plugins_loaded', array( 'Google_Maps_Builder_Admin', 'get_instance' ) );
63
+
64
+ }
includes/map-icons/README.md CHANGED
@@ -1,118 +1,118 @@
1
- Map-Icons
2
- =========
3
-
4
- Version 2.1
5
-
6
- Website: <http://map-icons.com/>
7
-
8
- Demo: <http://map-icons.com/demo.html>
9
-
10
- ##Summary
11
-
12
- Map Icons is an icon font for use with Google Maps API and Google Places API using SVG markers and icon labels
13
-
14
- Map Icons makes [Google Maps Markers](https://developers.google.com/maps/documentation/javascript/reference#Marker) dynamic with control over shape, color, size, and icon easily changed using options in the marker object as well as simple [SVG Notation](http://www.w3.org/TR/SVG/paths.html#PathData) and CSS.
15
-
16
- ##Markers
17
-
18
- * MAP_PIN
19
- * SQUARE_PIN
20
- * SHEILD
21
- * ROUTE
22
- * ROUNDED
23
-
24
- ##Usage
25
- Map Icons extends the [Google Maps Marker](https://developers.google.com/maps/documentation/javascript/reference#Marker) Object to enable either an image or SVG marker to be used with the icon placed on top as a label.
26
-
27
- ###Creating a Marker
28
-
29
- ```
30
- var marker = new Marker({
31
- map: map,
32
- title: 'Map Icons',
33
- position: userLocation,
34
- zIndex: 9,
35
- icon: {
36
- path: MAP_PIN,
37
- fillColor: '#0E77E9',
38
- fillOpacity: 1,
39
- strokeColor: '',
40
- strokeWeight: 0,
41
- scale: 1/2
42
- },
43
- label: '<i class="map-icon-parking"></i>'
44
- });
45
- ```
46
-
47
- ###Styling the Icon
48
- ```
49
- .marker-label,
50
- .marker-icon {
51
- z-index: 99;
52
- position: absolute;
53
- display: block;
54
- margin-top: -50px;
55
- margin-left: -25px;
56
- width: 50px;
57
- height: 50px;
58
- font-size: 30px !important;
59
- text-align: center;
60
- color: #FFFFFF;
61
- white-space: nowrap;
62
- }
63
- ```
64
-
65
- ##Changelog
66
-
67
- #### Version 2.1
68
-
69
- * Changed icon- prefix to map-icon-
70
- * Added ROUNDED marker
71
- * Fixed SVG Markers to center on LatLng
72
-
73
- #### Version 2.0
74
-
75
- * Added Activity Icons
76
- * Fix Marker Docs with SVG Notation
77
-
78
- #### Version 1.2
79
-
80
- * Fixed Icons to be Pixel Grid Aligned
81
- * Added User Interface Icons
82
- * Added Marker Icons
83
-
84
- #### Version 1.1
85
-
86
- * Added Marker Shapes
87
-
88
- #### Version 1.0
89
-
90
- * Initial Commit
91
-
92
- ##Author
93
-
94
- Email: <scott@map-icons.com>
95
-
96
- Twitter: [@scottdejonge](http://twitter.com/scottdejonge)
97
-
98
- GitHub: <https://github.com/scottdejonge>
99
-
100
-
101
- ##License
102
- ###Font License
103
-
104
- Applies to all desktop and webfont files in the following directory: `map-icon/font/`
105
-
106
- Map Icons licensed under [SIL OFL 1.1](http://scripts.sil.org/OFL)
107
-
108
- ###Code License
109
-
110
- Applies to code inside: `map-icons.css`, `map-icons.js` and `map-icons-min.js`.
111
-
112
- Code licensed under [MIT License](http://opensource.org/licenses/mit-license.html)
113
-
114
- ###Documentation License
115
-
116
- Applies to all Map Icons project files that are not a part of the Font or Code licenses.
117
-
118
  Documentation licensed under [CC BY 3.0](http://creativecommons.org/licenses/by/3.0/)
1
+ Map-Icons
2
+ =========
3
+
4
+ Version 2.1
5
+
6
+ Website: <http://map-icons.com/>
7
+
8
+ Demo: <http://map-icons.com/demo.html>
9
+
10
+ ##Summary
11
+
12
+ Map Icons is an icon font for use with Google Maps API and Google Places API using SVG markers and icon labels
13
+
14
+ Map Icons makes [Google Maps Markers](https://developers.google.com/maps/documentation/javascript/reference#Marker) dynamic with control over shape, color, size, and icon easily changed using options in the marker object as well as simple [SVG Notation](http://www.w3.org/TR/SVG/paths.html#PathData) and CSS.
15
+
16
+ ##Markers
17
+
18
+ * MAP_PIN
19
+ * SQUARE_PIN
20
+ * SHEILD
21
+ * ROUTE
22
+ * ROUNDED
23
+
24
+ ##Usage
25
+ Map Icons extends the [Google Maps Marker](https://developers.google.com/maps/documentation/javascript/reference#Marker) Object to enable either an image or SVG marker to be used with the icon placed on top as a label.
26
+
27
+ ###Creating a Marker
28
+
29
+ ```
30
+ var marker = new Marker({
31
+ map: map,
32
+ title: 'Map Icons',
33
+ position: userLocation,
34
+ zIndex: 9,
35
+ icon: {
36
+ path: MAP_PIN,
37
+ fillColor: '#0E77E9',
38
+ fillOpacity: 1,
39
+ strokeColor: '',
40
+ strokeWeight: 0,
41
+ scale: 1/2
42
+ },
43
+ label: '<i class="map-icon-parking"></i>'
44
+ });
45
+ ```
46
+
47
+ ###Styling the Icon
48
+ ```
49
+ .marker-label,
50
+ .marker-icon {
51
+ z-index: 99;
52
+ position: absolute;
53
+ display: block;
54
+ margin-top: -50px;
55
+ margin-left: -25px;
56
+ width: 50px;
57
+ height: 50px;
58
+ font-size: 30px !important;
59
+ text-align: center;
60
+ color: #FFFFFF;
61
+ white-space: nowrap;
62
+ }
63
+ ```
64
+
65
+ ##Changelog
66
+
67
+ #### Version 2.1
68
+
69
+ * Changed icon- prefix to map-icon-
70
+ * Added ROUNDED marker
71
+ * Fixed SVG Markers to center on LatLng
72
+
73
+ #### Version 2.0
74
+
75
+ * Added Activity Icons
76
+ * Fix Marker Docs with SVG Notation
77
+
78
+ #### Version 1.2
79
+
80
+ * Fixed Icons to be Pixel Grid Aligned
81
+ * Added User Interface Icons
82
+ * Added Marker Icons
83
+
84
+ #### Version 1.1
85
+
86
+ * Added Marker Shapes
87
+
88
+ #### Version 1.0
89
+
90
+ * Initial Commit
91
+
92
+ ##Author
93
+
94
+ Email: <scott@map-icons.com>
95
+
96
+ Twitter: [@scottdejonge](http://twitter.com/scottdejonge)
97
+
98
+ GitHub: <https://github.com/scottdejonge>
99
+
100
+
101
+ ##License
102
+ ###Font License
103
+
104
+ Applies to all desktop and webfont files in the following directory: `map-icon/font/`
105
+
106
+ Map Icons licensed under [SIL OFL 1.1](http://scripts.sil.org/OFL)
107
+
108
+ ###Code License
109
+
110
+ Applies to code inside: `map-icons.css`, `map-icons.js` and `map-icons-min.js`.
111
+
112
+ Code licensed under [MIT License](http://opensource.org/licenses/mit-license.html)
113
+
114
+ ###Documentation License
115
+
116
+ Applies to all Map Icons project files that are not a part of the Font or Code licenses.
117
+
118
  Documentation licensed under [CC BY 3.0](http://creativecommons.org/licenses/by/3.0/)
includes/map-icons/css/map-icons.css CHANGED
@@ -1,568 +1,568 @@
1
- @font-face {
2
- font-family: 'map-icons';
3
- src:url('../fonts/map-icons.eot');
4
- src:url('../fonts/map-icons.eot?#iefix') format('embedded-opentype'),
5
- url('../fonts/map-icons.woff') format('woff'),
6
- url('../fonts/map-icons.ttf') format('truetype'),
7
- url('../fonts/map-icons.svg#map-icons') format('svg');
8
- font-weight: normal;
9
- font-style: normal;
10
- }
11
-
12
- /* Use the following CSS code if you want to use data attributes for inserting your icons */
13
- [data-icon]:before {
14
- font-family: 'map-icons';
15
- content: attr(data-icon);
16
- speak: none;
17
- font-weight: normal;
18
- font-variant: normal;
19
- text-transform: none;
20
- line-height: 1;
21
- -webkit-font-smoothing: antialiased;
22
- -moz-osx-font-smoothing: grayscale;
23
- }
24
-
25
- /* Use the following CSS code if you want to have a class per icon */
26
- /*
27
- Instead of a list of all class selectors,
28
- you can use the generic selector below, but it's slower:
29
- [class*="map-icon-"] {
30
- */
31
- .map-icon-map-pin, .map-icon-expand, .map-icon-fullscreen, .map-icon-square-pin, .map-icon-route-pin, .map-icon-sheild, .map-icon-liquor-store, .map-icon-bicycle-store, .map-icon-hardware-store, .map-icon-insurance-agency, .map-icon-lawyer, .map-icon-real-estate-agency, .map-icon-art-gallery, .map-icon-campground, .map-icon-bakery, .map-icon-bar, .map-icon-amusement-park, .map-icon-aquarium, .map-icon-airport, .map-icon-bank, .map-icon-car-rental, .map-icon-car-dealer, .map-icon-hospital, .map-icon-hair-care, .map-icon-gym, .map-icon-grocery-or-supermarket, .map-icon-general-contractor, .map-icon-pharmacy, .map-icon-point-of-interest, .map-icon-political, .map-icon-post-box, .map-icon-health, .map-icon-post-office, .map-icon-real-estate-agency-copy, .map-icon-hindu-temple, .map-icon-restaurant, .map-icon-female, .map-icon-male, .map-icon-zoo, .map-icon-veterinary-care, .map-icon-car-repair, .map-icon-university, .map-icon-travel-agency, .map-icon-transit-station, .map-icon-beauty-salon, .map-icon-electronics-store, .map-icon-search, .map-icon-zoom-out-alt, .map-icon-movie-rental, .map-icon-atm, .map-icon-jewelry-store, .map-icon-car-wash, .map-icon-unisex, .map-icon-rv-park, .map-icon-school, .map-icon-clothing-store, .map-icon-laundry, .map-icon-casino, .map-icon-place-of-worship, .map-icon-furniture-store, .map-icon-zoom-in-alt, .map-icon-zoom-in, .map-icon-department-store, .map-icon-fire-station, .map-icon-church, .map-icon-library, .map-icon-shopping-mall, .map-icon-local-government, .map-icon-spa, .map-icon-convenience-store, .map-icon-police, .map-icon-route, .map-icon-zoom-out, .map-icon-location-arrow, .map-icon-postal-code, .map-icon-locksmith, .map-icon-doctor, .map-icon-mosque, .map-icon-stadium, .map-icon-storage, .map-icon-movie-theater, .map-icon-electrician, .map-icon-moving-company, .map-icon-postal-code-prefix, .map-icon-crosshairs, .map-icon-compass, .map-icon-dentist, .map-icon-plumber, .map-icon-museum, .map-icon-finance, .map-icon-parking, .map-icon-courthouse, .map-icon-accounting, .map-icon-store, .map-icon-subway-station, .map-icon-natural-feature, .map-icon-florist, .map-icon-food, .map-icon-night-club, .map-icon-synagogue, .map-icon-taxi-stand, .map-icon-painter, .map-icon-train-station, .map-icon-pet-store, .map-icon-gas-station, .map-icon-funeral-home, .map-icon-cemetery, .map-icon-bowling-alley, .map-icon-roofing-contractor, .map-icon-physiotherapist, .map-icon-embassy, .map-icon-city-hall, .map-icon-bus-station, .map-icon-park, .map-icon-lodging, .map-icon-toilet, .map-icon-circle, .map-icon-square-rounded, .map-icon-square, .map-icon-book-store, .map-icon-cafe, .map-icon-wheelchair, .map-icon-volume-control-telephone, .map-icon-sign-language, .map-icon-low-vision-access, .map-icon-open-captioning, .map-icon-closed-captioning, .map-icon-braille, .map-icon-audio-description, .map-icon-assistive-listening-system, .map-icon-abseiling, .map-icon-tennis, .map-icon-skateboarding, .map-icon-playground, .map-icon-inline-skating, .map-icon-hang-gliding, .map-icon-climbing, .map-icon-baseball, .map-icon-archery, .map-icon-wind-surfing, .map-icon-scuba-diving, .map-icon-sailing, .map-icon-marina, .map-icon-canoe, .map-icon-boat-tour, .map-icon-boat-ramp, .map-icon-swimming, .map-icon-whale-watching, .map-icon-waterskiing, .map-icon-surfing, .map-icon-rafting, .map-icon-kayaking, .map-icon-jet-skiing, .map-icon-fishing-pier, .map-icon-fish-cleaning, .map-icon-diving, .map-icon-boating, .map-icon-fishing, .map-icon-cross-country-skiing, .map-icon-skiing, .map-icon-snowmobile, .map-icon-snowboarding, .map-icon-snow, .map-icon-snow-shoeing, .map-icon-sledding, .map-icon-ski-jumping, .map-icon-ice-skating, .map-icon-ice-fishing, .map-icon-chairlift, .map-icon-golf, .map-icon-horse-riding, .map-icon-motobike-trail, .map-icon-trail-walking, .map-icon-viewing, .map-icon-walking, .map-icon-bicycling {
32
- font-family: 'map-icons';
33
- speak: none;
34
- font-style: normal;
35
- font-weight: normal;
36
- font-variant: normal;
37
- text-transform: none;
38
- line-height: 1;
39
- -webkit-font-smoothing: antialiased;
40
- }
41
- .map-icon-map-pin:before {
42
- content: "\e000";
43
- }
44
- .map-icon-expand:before {
45
- content: "\e001";
46
- }
47
- .map-icon-fullscreen:before {
48
- content: "\e002";
49
- }
50
- .map-icon-square-pin:before {
51
- content: "\e003";
52
- }
53
- .map-icon-route-pin:before {
54
- content: "\e004";
55
- }
56
- .map-icon-sheild:before {
57
- content: "\e005";
58
- }
59
- .map-icon-liquor-store:before {
60
- content: "\e006";
61
- }
62
- .map-icon-bicycle-store:before {
63
- content: "\e007";
64
- }
65
- .map-icon-hardware-store:before {
66
- content: "\e008";
67
- }
68
- .map-icon-insurance-agency:before {
69
- content: "\e009";
70
- }
71
- .map-icon-lawyer:before {
72
- content: "\e00a";
73
- }
74
- .map-icon-real-estate-agency:before {
75
- content: "\e00b";
76
- }
77
- .map-icon-art-gallery:before {
78
- content: "\e00c";
79
- }
80
- .map-icon-campground:before {
81
- content: "\e00d";
82
- }
83
- .map-icon-bakery:before {
84
- content: "\e00e";
85
- }
86
- .map-icon-bar:before {
87
- content: "\e00f";
88
- }
89
- .map-icon-amusement-park:before {
90
- content: "\e010";
91
- }
92
- .map-icon-aquarium:before {
93
- content: "\e011";
94
- }
95
- .map-icon-airport:before {
96
- content: "\e012";
97
- }
98
- .map-icon-bank:before {
99
- content: "\e013";
100
- }
101
- .map-icon-car-rental:before {
102
- content: "\e016";
103
- }
104
- .map-icon-car-dealer:before {
105
- content: "\e017";
106
- }
107
- .map-icon-hospital:before {
108
- content: "\e018";
109
- }
110
- .map-icon-hair-care:before {
111
- content: "\e019";
112
- }
113
- .map-icon-gym:before {
114
- content: "\e01a";
115
- }
116
- .map-icon-grocery-or-supermarket:before {
117
- content: "\e01b";
118
- }
119
- .map-icon-general-contractor:before {
120
- content: "\e01c";
121
- }
122
- .map-icon-pharmacy:before {
123
- content: "\e01d";
124
- }
125
- .map-icon-point-of-interest:before {
126
- content: "\e01e";
127
- }
128
- .map-icon-political:before {
129
- content: "\e01f";
130
- }
131
- .map-icon-post-box:before {
132
- content: "\e020";
133
- }
134
- .map-icon-health:before {
135
- content: "\e021";
136
- }
137
- .map-icon-post-office:before {
138
- content: "\e022";
139
- }
140
- .map-icon-real-estate-agency-copy:before {
141
- content: "\e023";
142
- }
143
- .map-icon-hindu-temple:before {
144
- content: "\e024";
145
- }
146
- .map-icon-restaurant:before {
147
- content: "\e025";
148
- }
149
- .map-icon-female:before {
150
- content: "\e026";
151
- }
152
- .map-icon-male:before {
153
- content: "\e027";
154
- }
155
- .map-icon-zoo:before {
156
- content: "\e028";
157
- }
158
- .map-icon-veterinary-care:before {
159
- content: "\e029";
160
- }
161
- .map-icon-car-repair:before {
162
- content: "\e02a";
163
- }
164
- .map-icon-university:before {
165
- content: "\e02b";
166
- }
167
- .map-icon-travel-agency:before {
168
- content: "\e02c";
169
- }
170
- .map-icon-transit-station:before {
171
- content: "\e02d";
172
- }
173
- .map-icon-beauty-salon:before {
174
- content: "\e02e";
175
- }
176
- .map-icon-electronics-store:before {
177
- content: "\e02f";
178
- }
179
- .map-icon-search:before {
180
- content: "\e030";
181
- }
182
- .map-icon-zoom-out-alt:before {
183
- content: "\e031";
184
- }
185
- .map-icon-movie-rental:before {
186
- content: "\e032";
187
- }
188
- .map-icon-atm:before {
189
- content: "\e033";
190
- }
191
- .map-icon-jewelry-store:before {
192
- content: "\e034";
193
- }
194
- .map-icon-car-wash:before {
195
- content: "\e035";
196
- }
197
- .map-icon-unisex:before {
198
- content: "\e036";
199
- }
200
- .map-icon-rv-park:before {
201
- content: "\e037";
202
- }
203
- .map-icon-school:before {
204
- content: "\e038";
205
- }
206
- .map-icon-clothing-store:before {
207
- content: "\e039";
208
- }
209
- .map-icon-laundry:before {
210
- content: "\e03a";
211
- }
212
- .map-icon-casino:before {
213
- content: "\e03b";
214
- }
215
- .map-icon-place-of-worship:before {
216
- content: "\e03c";
217
- }
218
- .map-icon-furniture-store:before {
219
- content: "\e03d";
220
- }
221
- .map-icon-zoom-in-alt:before {
222
- content: "\e03e";
223
- }
224
- .map-icon-zoom-in:before {
225
- content: "\e03f";
226
- }
227
- .map-icon-department-store:before {
228
- content: "\e040";
229
- }
230
- .map-icon-fire-station:before {
231
- content: "\e041";
232
- }
233
- .map-icon-church:before {
234
- content: "\e042";
235
- }
236
- .map-icon-library:before {
237
- content: "\e043";
238
- }
239
- .map-icon-shopping-mall:before {
240
- content: "\e044";
241
- }
242
- .map-icon-local-government:before {
243
- content: "\e045";
244
- }
245
- .map-icon-spa:before {
246
- content: "\e046";
247
- }
248
- .map-icon-convenience-store:before {
249
- content: "\e047";
250
- }
251
- .map-icon-police:before {
252
- content: "\e048";
253
- }
254
- .map-icon-route:before {
255
- content: "\e049";
256
- }
257
- .map-icon-zoom-out:before {
258
- content: "\e04a";
259
- }
260
- .map-icon-location-arrow:before {
261
- content: "\e04b";
262
- }
263
- .map-icon-postal-code:before {
264
- content: "\e04c";
265
- }
266
- .map-icon-locksmith:before {
267
- content: "\e04d";
268
- }
269
- .map-icon-doctor:before {
270
- content: "\e04e";
271
- }
272
- .map-icon-mosque:before {
273
- content: "\e04f";
274
- }
275
- .map-icon-stadium:before {
276
- content: "\e050";
277
- }
278
- .map-icon-storage:before {
279
- content: "\e051";
280
- }
281
- .map-icon-movie-theater:before {
282
- content: "\e052";
283
- }
284
- .map-icon-electrician:before {
285
- content: "\e053";
286
- }
287
- .map-icon-moving-company:before {
288
- content: "\e054";
289
- }
290
- .map-icon-postal-code-prefix:before {
291
- content: "\e055";
292
- }
293
- .map-icon-crosshairs:before {
294
- content: "\e056";
295
- }
296
- .map-icon-compass:before {
297
- content: "\e057";
298
- }
299
- .map-icon-dentist:before {
300
- content: "\e058";
301
- }
302
- .map-icon-plumber:before {
303
- content: "\e059";
304
- }
305
- .map-icon-museum:before {
306
- content: "\e05b";
307
- }
308
- .map-icon-finance:before {
309
- content: "\e05a";
310
- }
311
- .map-icon-parking:before {
312
- content: "\e05c";
313
- }
314
- .map-icon-courthouse:before {
315
- content: "\e05d";
316
- }
317
- .map-icon-accounting:before {
318
- content: "\e05e";
319
- }
320
- .map-icon-store:before {
321
- content: "\e05f";
322
- }
323
- .map-icon-subway-station:before {
324
- content: "\e060";
325
- }
326
- .map-icon-natural-feature:before {
327
- content: "\e061";
328
- }
329
- .map-icon-florist:before {
330
- content: "\e062";
331
- }
332
- .map-icon-food:before {
333
- content: "\e063";
334
- }
335
- .map-icon-night-club:before {
336
- content: "\e064";
337
- }
338
- .map-icon-synagogue:before {
339
- content: "\e065";
340
- }
341
- .map-icon-taxi-stand:before {
342
- content: "\e066";
343
- }
344
- .map-icon-painter:before {
345
- content: "\e067";
346
- }
347
- .map-icon-train-station:before {
348
- content: "\e068";
349
- }
350
- .map-icon-pet-store:before {
351
- content: "\e069";
352
- }
353
- .map-icon-gas-station:before {
354
- content: "\e06a";
355
- }
356
- .map-icon-funeral-home:before {
357
- content: "\e06b";
358
- }
359
- .map-icon-cemetery:before {
360
- content: "\e06c";
361
- }
362
- .map-icon-bowling-alley:before {
363
- content: "\e06d";
364
- }
365
- .map-icon-roofing-contractor:before {
366
- content: "\e06e";
367
- }
368
- .map-icon-physiotherapist:before {
369
- content: "\e06f";
370
- }
371
- .map-icon-embassy:before {
372
- content: "\e070";
373
- }
374
- .map-icon-city-hall:before {
375
- content: "\e071";
376
- }
377
- .map-icon-bus-station:before {
378
- content: "\e072";
379
- }
380
- .map-icon-park:before {
381
- content: "\e073";
382
- }
383
- .map-icon-lodging:before {
384
- content: "\e074";
385
- }
386
- .map-icon-toilet:before {
387
- content: "\e075";
388
- }
389
- .map-icon-circle:before {
390
- content: "\e076";
391
- }
392
- .map-icon-square-rounded:before {
393
- content: "\e077";
394
- }
395
- .map-icon-square:before {
396
- content: "\e078";
397
- }
398
- .map-icon-book-store:before {
399
- content: "\e014";
400
- }
401
- .map-icon-cafe:before {
402
- content: "\e015";
403
- }
404
- .map-icon-wheelchair:before {
405
- content: "\e079";
406
- }
407
- .map-icon-volume-control-telephone:before {
408
- content: "\e07a";
409
- }
410
- .map-icon-sign-language:before {
411
- content: "\e07b";
412
- }
413
- .map-icon-low-vision-access:before {
414
- content: "\e07c";
415
- }
416
- .map-icon-open-captioning:before {
417
- content: "\e07d";
418
- }
419
- .map-icon-closed-captioning:before {
420
- content: "\e07e";
421
- }
422
- .map-icon-braille:before {
423
- content: "\e07f";
424
- }
425
- .map-icon-audio-description:before {
426
- content: "\e080";
427
- }
428
- .map-icon-assistive-listening-system:before {
429
- content: "\e081";
430
- }
431
- .map-icon-abseiling:before {
432
- content: "\e082";
433
- }
434
- .map-icon-tennis:before {
435
- content: "\e083";
436
- }
437
- .map-icon-skateboarding:before {
438
- content: "\e084";
439
- }
440
- .map-icon-playground:before {
441
- content: "\e085";
442
- }
443
- .map-icon-inline-skating:before {
444
- content: "\e086";
445
- }
446
- .map-icon-hang-gliding:before {
447
- content: "\e087";
448
- }
449
- .map-icon-climbing:before {
450
- content: "\e088";
451
- }
452
- .map-icon-baseball:before {
453
- content: "\e089";
454
- }
455
- .map-icon-archery:before {
456
- content: "\e08a";
457
- }
458
- .map-icon-wind-surfing:before {
459
- content: "\e08b";
460
- }
461
- .map-icon-scuba-diving:before {
462
- content: "\e08c";
463
- }
464
- .map-icon-sailing:before {
465
- content: "\e08d";
466
- }
467
- .map-icon-marina:before {
468
- content: "\e08e";
469
- }
470
- .map-icon-canoe:before {
471
- content: "\e08f";
472
- }
473
- .map-icon-boat-tour:before {
474
- content: "\e090";
475
- }
476
- .map-icon-boat-ramp:before {
477
- content: "\e091";
478
- }
479
- .map-icon-swimming:before {
480
- content: "\e092";
481
- }
482
- .map-icon-whale-watching:before {
483
- content: "\e093";
484
- }
485
- .map-icon-waterskiing:before {
486
- content: "\e094";
487
- }
488
- .map-icon-surfing:before {
489
- content: "\e095";
490
- }
491
- .map-icon-rafting:before {
492
- content: "\e096";
493
- }
494
- .map-icon-kayaking:before {
495
- content: "\e097";
496
- }
497
- .map-icon-jet-skiing:before {
498
- content: "\e099";
499
- }
500
- .map-icon-fishing-pier:before {
501
- content: "\e09a";
502
- }
503
- .map-icon-fish-cleaning:before {
504
- content: "\e09b";
505
- }
506
- .map-icon-diving:before {
507
- content: "\e09c";
508
- }
509
- .map-icon-boating:before {
510
- content: "\e09d";
511
- }
512
- .map-icon-fishing:before {
513
- content: "\e098";
514
- }
515
- .map-icon-cross-country-skiing:before {
516
- content: "\e09e";
517
- }
518
- .map-icon-skiing:before {
519
- content: "\e09f";
520
- }
521
- .map-icon-snowmobile:before {
522
- content: "\e0a0";
523
- }
524
- .map-icon-snowboarding:before {
525
- content: "\e0a1";
526
- }
527
- .map-icon-snow:before {
528
- content: "\e0a2";
529
- }
530
- .map-icon-snow-shoeing:before {
531
- content: "\e0a3";
532
- }
533
- .map-icon-sledding:before {
534
- content: "\e0a4";
535
- }
536
- .map-icon-ski-jumping:before {
537
- content: "\e0a5";
538
- }
539
- .map-icon-ice-skating:before {
540
- content: "\e0a6";
541
- }
542
- .map-icon-ice-fishing:before {
543
- content: "\e0a7";
544
- }
545
- .map-icon-chairlift:before {
546
- content: "\e0a8";
547
- }
548
- .map-icon-golf:before {
549
- content: "\e0a9";
550
- }
551
- .map-icon-horse-riding:before {
552
- content: "\e0aa";
553
- }
554
- .map-icon-motobike-trail:before {
555
- content: "\e0ab";
556
- }
557
- .map-icon-trail-walking:before {
558
- content: "\e0ac";
559
- }
560
- .map-icon-viewing:before {
561
- content: "\e0ad";
562
- }
563
- .map-icon-walking:before {
564
- content: "\e0ae";
565
- }
566
- .map-icon-bicycling:before {
567
- content: "\e0af";
568
- }
1
+ @font-face {
2
+ font-family: 'map-icons';
3
+ src:url('../fonts/map-icons.eot');
4
+ src:url('../fonts/map-icons.eot?#iefix') format('embedded-opentype'),
5
+ url('../fonts/map-icons.woff') format('woff'),
6
+ url('../fonts/map-icons.ttf') format('truetype'),
7
+ url('../fonts/map-icons.svg#map-icons') format('svg');
8
+ font-weight: normal;
9
+ font-style: normal;
10
+ }
11
+
12
+ /* Use the following CSS code if you want to use data attributes for inserting your icons */
13
+ [data-icon]:before {
14
+ font-family: 'map-icons';
15
+ content: attr(data-icon);
16
+ speak: none;
17
+ font-weight: normal;
18
+ font-variant: normal;
19
+ text-transform: none;
20
+ line-height: 1;
21
+ -webkit-font-smoothing: antialiased;
22
+ -moz-osx-font-smoothing: grayscale;
23
+ }
24
+
25
+ /* Use the following CSS code if you want to have a class per icon */
26
+ /*
27
+ Instead of a list of all class selectors,
28
+ you can use the generic selector below, but it's slower:
29
+ [class*="map-icon-"] {
30
+ */
31
+ .map-icon-map-pin, .map-icon-expand, .map-icon-fullscreen, .map-icon-square-pin, .map-icon-route-pin, .map-icon-sheild, .map-icon-liquor-store, .map-icon-bicycle-store, .map-icon-hardware-store, .map-icon-insurance-agency, .map-icon-lawyer, .map-icon-real-estate-agency, .map-icon-art-gallery, .map-icon-campground, .map-icon-bakery, .map-icon-bar, .map-icon-amusement-park, .map-icon-aquarium, .map-icon-airport, .map-icon-bank, .map-icon-car-rental, .map-icon-car-dealer, .map-icon-hospital, .map-icon-hair-care, .map-icon-gym, .map-icon-grocery-or-supermarket, .map-icon-general-contractor, .map-icon-pharmacy, .map-icon-point-of-interest, .map-icon-political, .map-icon-post-box, .map-icon-health, .map-icon-post-office, .map-icon-real-estate-agency-copy, .map-icon-hindu-temple, .map-icon-restaurant, .map-icon-female, .map-icon-male, .map-icon-zoo, .map-icon-veterinary-care, .map-icon-car-repair, .map-icon-university, .map-icon-travel-agency, .map-icon-transit-station, .map-icon-beauty-salon, .map-icon-electronics-store, .map-icon-search, .map-icon-zoom-out-alt, .map-icon-movie-rental, .map-icon-atm, .map-icon-jewelry-store, .map-icon-car-wash, .map-icon-unisex, .map-icon-rv-park, .map-icon-school, .map-icon-clothing-store, .map-icon-laundry, .map-icon-casino, .map-icon-place-of-worship, .map-icon-furniture-store, .map-icon-zoom-in-alt, .map-icon-zoom-in, .map-icon-department-store, .map-icon-fire-station, .map-icon-church, .map-icon-library, .map-icon-shopping-mall, .map-icon-local-government, .map-icon-spa, .map-icon-convenience-store, .map-icon-police, .map-icon-route, .map-icon-zoom-out, .map-icon-location-arrow, .map-icon-postal-code, .map-icon-locksmith, .map-icon-doctor, .map-icon-mosque, .map-icon-stadium, .map-icon-storage, .map-icon-movie-theater, .map-icon-electrician, .map-icon-moving-company, .map-icon-postal-code-prefix, .map-icon-crosshairs, .map-icon-compass, .map-icon-dentist, .map-icon-plumber, .map-icon-museum, .map-icon-finance, .map-icon-parking, .map-icon-courthouse, .map-icon-accounting, .map-icon-store, .map-icon-subway-station, .map-icon-natural-feature, .map-icon-florist, .map-icon-food, .map-icon-night-club, .map-icon-synagogue, .map-icon-taxi-stand, .map-icon-painter, .map-icon-train-station, .map-icon-pet-store, .map-icon-gas-station, .map-icon-funeral-home, .map-icon-cemetery, .map-icon-bowling-alley, .map-icon-roofing-contractor, .map-icon-physiotherapist, .map-icon-embassy, .map-icon-city-hall, .map-icon-bus-station, .map-icon-park, .map-icon-lodging, .map-icon-toilet, .map-icon-circle, .map-icon-square-rounded, .map-icon-square, .map-icon-book-store, .map-icon-cafe, .map-icon-wheelchair, .map-icon-volume-control-telephone, .map-icon-sign-language, .map-icon-low-vision-access, .map-icon-open-captioning, .map-icon-closed-captioning, .map-icon-braille, .map-icon-audio-description, .map-icon-assistive-listening-system, .map-icon-abseiling, .map-icon-tennis, .map-icon-skateboarding, .map-icon-playground, .map-icon-inline-skating, .map-icon-hang-gliding, .map-icon-climbing, .map-icon-baseball, .map-icon-archery, .map-icon-wind-surfing, .map-icon-scuba-diving, .map-icon-sailing, .map-icon-marina, .map-icon-canoe, .map-icon-boat-tour, .map-icon-boat-ramp, .map-icon-swimming, .map-icon-whale-watching, .map-icon-waterskiing, .map-icon-surfing, .map-icon-rafting, .map-icon-kayaking, .map-icon-jet-skiing, .map-icon-fishing-pier, .map-icon-fish-cleaning, .map-icon-diving, .map-icon-boating, .map-icon-fishing, .map-icon-cross-country-skiing, .map-icon-skiing, .map-icon-snowmobile, .map-icon-snowboarding, .map-icon-snow, .map-icon-snow-shoeing, .map-icon-sledding, .map-icon-ski-jumping, .map-icon-ice-skating, .map-icon-ice-fishing, .map-icon-chairlift, .map-icon-golf, .map-icon-horse-riding, .map-icon-motobike-trail, .map-icon-trail-walking, .map-icon-viewing, .map-icon-walking, .map-icon-bicycling {
32
+ font-family: 'map-icons';
33
+ speak: none;
34
+ font-style: normal;
35
+ font-weight: normal;
36
+ font-variant: normal;
37
+ text-transform: none;
38
+ line-height: 1;
39
+ -webkit-font-smoothing: antialiased;
40
+ }
41
+ .map-icon-map-pin:before {
42
+ content: "\e000";
43
+ }
44
+ .map-icon-expand:before {
45
+ content: "\e001";
46
+ }
47
+ .map-icon-fullscreen:before {
48
+ content: "\e002";
49
+ }
50
+ .map-icon-square-pin:before {
51
+ content: "\e003";
52
+ }
53
+ .map-icon-route-pin:before {
54
+ content: "\e004";
55
+ }
56
+ .map-icon-sheild:before {
57
+ content: "\e005";
58
+ }
59
+ .map-icon-liquor-store:before {
60
+ content: "\e006";
61
+ }
62
+ .map-icon-bicycle-store:before {
63
+ content: "\e007";
64
+ }
65
+ .map-icon-hardware-store:before {
66
+ content: "\e008";
67
+ }
68
+ .map-icon-insurance-agency:before {
69
+ content: "\e009";
70
+ }
71
+ .map-icon-lawyer:before {
72
+ content: "\e00a";
73
+ }
74
+ .map-icon-real-estate-agency:before {
75
+ content: "\e00b";
76
+ }
77
+ .map-icon-art-gallery:before {
78
+ content: "\e00c";
79
+ }
80
+ .map-icon-campground:before {
81
+ content: "\e00d";
82
+ }
83
+ .map-icon-bakery:before {
84
+ content: "\e00e";
85
+ }
86
+ .map-icon-bar:before {
87
+ content: "\e00f";
88
+ }
89
+ .map-icon-amusement-park:before {
90
+ content: "\e010";
91
+ }
92
+ .map-icon-aquarium:before {
93
+ content: "\e011";
94
+ }
95
+ .map-icon-airport:before {
96
+ content: "\e012";
97
+ }
98
+ .map-icon-bank:before {
99
+ content: "\e013";
100
+ }
101
+ .map-icon-car-rental:before {
102
+ content: "\e016";
103
+ }
104
+ .map-icon-car-dealer:before {
105
+ content: "\e017";
106
+ }
107
+ .map-icon-hospital:before {
108
+ content: "\e018";
109
+ }
110
+ .map-icon-hair-care:before {
111
+ content: "\e019";
112
+ }
113
+ .map-icon-gym:before {
114
+ content: "\e01a";
115
+ }
116
+ .map-icon-grocery-or-supermarket:before {
117
+ content: "\e01b";
118
+ }
119
+ .map-icon-general-contractor:before {
120
+ content: "\e01c";
121
+ }
122
+ .map-icon-pharmacy:before {
123
+ content: "\e01d";
124
+ }
125
+ .map-icon-point-of-interest:before {
126
+ content: "\e01e";
127
+ }
128
+ .map-icon-political:before {
129
+ content: "\e01f";
130
+ }
131
+ .map-icon-post-box:before {
132
+ content: "\e020";
133
+ }
134
+ .map-icon-health:before {
135
+ content: "\e021";
136
+ }
137
+ .map-icon-post-office:before {
138
+ content: "\e022";
139
+ }
140
+ .map-icon-real-estate-agency-copy:before {
141
+ content: "\e023";
142
+ }
143
+ .map-icon-hindu-temple:before {
144
+ content: "\e024";
145
+ }
146
+ .map-icon-restaurant:before {
147
+ content: "\e025";
148
+ }
149
+ .map-icon-female:before {
150
+ content: "\e026";
151
+ }
152
+ .map-icon-male:before {
153
+ content: "\e027";
154
+ }
155
+ .map-icon-zoo:before {
156
+ content: "\e028";
157
+ }
158
+ .map-icon-veterinary-care:before {
159
+ content: "\e029";
160
+ }
161
+ .map-icon-car-repair:before {
162
+ content: "\e02a";
163
+ }
164
+ .map-icon-university:before {
165
+ content: "\e02b";
166
+ }
167
+ .map-icon-travel-agency:before {
168
+ content: "\e02c";
169
+ }
170
+ .map-icon-transit-station:before {
171
+ content: "\e02d";
172
+ }
173
+ .map-icon-beauty-salon:before {
174
+ content: "\e02e";
175
+ }
176
+ .map-icon-electronics-store:before {
177
+ content: "\e02f";
178
+ }
179
+ .map-icon-search:before {
180
+ content: "\e030";
181
+ }
182
+ .map-icon-zoom-out-alt:before {
183
+ content: "\e031";
184
+ }
185
+ .map-icon-movie-rental:before {
186
+ content: "\e032";
187
+ }
188
+ .map-icon-atm:before {
189
+ content: "\e033";
190
+ }
191
+ .map-icon-jewelry-store:before {
192
+ content: "\e034";
193
+ }
194
+ .map-icon-car-wash:before {
195
+ content: "\e035";
196
+ }
197
+ .map-icon-unisex:before {
198
+ content: "\e036";
199
+ }
200
+ .map-icon-rv-park:before {
201
+ content: "\e037";
202
+ }
203
+ .map-icon-school:before {
204
+ content: "\e038";
205
+ }
206
+ .map-icon-clothing-store:before {
207
+ content: "\e039";
208
+ }
209
+ .map-icon-laundry:before {
210
+ content: "\e03a";
211
+ }
212
+ .map-icon-casino:before {
213
+ content: "\e03b";
214
+ }
215
+ .map-icon-place-of-worship:before {
216
+ content: "\e03c";
217
+ }
218
+ .map-icon-furniture-store:before {
219
+ content: "\e03d";
220
+ }
221
+ .map-icon-zoom-in-alt:before {
222
+ content: "\e03e";
223
+ }
224
+ .map-icon-zoom-in:before {
225
+ content: "\e03f";
226
+ }
227
+ .map-icon-department-store:before {
228
+ content: "\e040";
229
+ }
230
+ .map-icon-fire-station:before {
231
+ content: "\e041";
232
+ }
233
+ .map-icon-church:before {
234
+ content: "\e042";
235
+ }
236
+ .map-icon-library:before {
237
+ content: "\e043";
238
+ }
239
+ .map-icon-shopping-mall:before {
240
+ content: "\e044";
241
+ }
242
+ .map-icon-local-government:before {
243
+ content: "\e045";
244
+ }
245
+ .map-icon-spa:before {
246
+ content: "\e046";
247
+ }
248
+ .map-icon-convenience-store:before {
249
+ content: "\e047";
250
+ }
251
+ .map-icon-police:before {
252
+ content: "\e048";
253
+ }
254
+ .map-icon-route:before {
255
+ content: "\e049";
256
+ }
257
+ .map-icon-zoom-out:before {
258
+ content: "\e04a";
259
+ }
260
+ .map-icon-location-arrow:before {
261
+ content: "\e04b";
262
+ }
263
+ .map-icon-postal-code:before {
264
+ content: "\e04c";
265
+ }
266
+ .map-icon-locksmith:before {
267
+ content: "\e04d";
268
+ }
269
+ .map-icon-doctor:before {
270
+ content: "\e04e";
271
+ }
272
+ .map-icon-mosque:before {
273
+ content: "\e04f";
274
+ }
275
+ .map-icon-stadium:before {
276
+ content: "\e050";
277
+ }
278
+ .map-icon-storage:before {
279
+ content: "\e051";
280
+ }
281
+ .map-icon-movie-theater:before {
282
+ content: "\e052";
283
+ }
284
+ .map-icon-electrician:before {
285
+ content: "\e053";
286
+ }
287
+ .map-icon-moving-company:before {
288
+ content: "\e054";
289
+ }
290
+ .map-icon-postal-code-prefix:before {
291
+ content: "\e055";
292
+ }
293
+ .map-icon-crosshairs:before {
294
+ content: "\e056";
295
+ }
296
+ .map-icon-compass:before {
297
+ content: "\e057";
298
+ }
299
+ .map-icon-dentist:before {
300
+ content: "\e058";
301
+ }
302
+ .map-icon-plumber:before {
303
+ content: "\e059";
304
+ }
305
+ .map-icon-museum:before {
306
+ content: "\e05b";
307
+ }
308
+ .map-icon-finance:before {
309
+ content: "\e05a";
310
+ }
311
+ .map-icon-parking:before {
312
+ content: "\e05c";
313
+ }
314
+ .map-icon-courthouse:before {
315
+ content: "\e05d";
316
+ }
317
+ .map-icon-accounting:before {
318
+ content: "\e05e";
319
+ }
320
+ .map-icon-store:before {
321
+ content: "\e05f";
322
+ }
323
+ .map-icon-subway-station:before {
324
+ content: "\e060";
325
+ }
326
+ .map-icon-natural-feature:before {
327
+ content: "\e061";
328
+ }
329
+ .map-icon-florist:before {
330
+ content: "\e062";
331
+ }
332
+ .map-icon-food:before {
333
+ content: "\e063";
334
+ }
335
+ .map-icon-night-club:before {
336
+ content: "\e064";
337
+ }
338
+ .map-icon-synagogue:before {
339
+ content: "\e065";
340
+ }
341
+ .map-icon-taxi-stand:before {
342
+ content: "\e066";
343
+ }
344
+ .map-icon-painter:before {
345
+ content: "\e067";
346
+ }
347
+ .map-icon-train-station:before {
348
+ content: "\e068";
349
+ }
350
+ .map-icon-pet-store:before {
351
+ content: "\e069";
352
+ }
353
+ .map-icon-gas-station:before {
354
+ content: "\e06a";
355
+ }
356
+ .map-icon-funeral-home:before {
357
+ content: "\e06b";
358
+ }
359
+ .map-icon-cemetery:before {
360
+ content: "\e06c";
361
+ }
362
+ .map-icon-bowling-alley:before {
363
+ content: "\e06d";
364
+ }
365
+ .map-icon-roofing-contractor:before {
366
+ content: "\e06e";
367
+ }
368
+ .map-icon-physiotherapist:before {
369
+ content: "\e06f";
370
+ }
371
+ .map-icon-embassy:before {
372
+ content: "\e070";
373
+ }
374
+ .map-icon-city-hall:before {
375
+ content: "\e071";
376
+ }
377
+ .map-icon-bus-station:before {
378
+ content: "\e072";
379
+ }
380
+ .map-icon-park:before {
381
+ content: "\e073";
382
+ }
383
+ .map-icon-lodging:before {
384
+ content: "\e074";
385
+ }
386
+ .map-icon-toilet:before {
387
+ content: "\e075";
388
+ }
389
+ .map-icon-circle:before {
390
+ content: "\e076";
391
+ }
392
+ .map-icon-square-rounded:before {
393
+ content: "\e077";
394
+ }
395
+ .map-icon-square:before {
396
+ content: "\e078";
397
+ }
398
+ .map-icon-book-store:before {
399
+ content: "\e014";
400
+ }
401
+ .map-icon-cafe:before {
402
+ content: "\e015";
403
+ }
404
+ .map-icon-wheelchair:before {
405
+ content: "\e079";
406
+ }
407
+ .map-icon-volume-control-telephone:before {
408
+ content: "\e07a";
409
+ }
410
+ .map-icon-sign-language:before {
411
+ content: "\e07b";
412
+ }
413
+ .map-icon-low-vision-access:before {
414
+ content: "\e07c";
415
+ }
416
+ .map-icon-open-captioning:before {
417
+ content: "\e07d";
418
+ }
419
+ .map-icon-closed-captioning:before {
420
+ content: "\e07e";
421
+ }
422
+ .map-icon-braille:before {
423
+ content: "\e07f";
424
+ }
425
+ .map-icon-audio-description:before {
426
+ content: "\e080";
427
+ }
428
+ .map-icon-assistive-listening-system:before {
429
+ content: "\e081";
430
+ }
431
+ .map-icon-abseiling:before {
432
+ content: "\e082";
433
+ }
434
+ .map-icon-tennis:before {
435
+ content: "\e083";
436
+ }
437
+ .map-icon-skateboarding:before {
438
+ content: "\e084";
439
+ }
440
+ .map-icon-playground:before {
441
+ content: "\e085";
442
+ }
443
+ .map-icon-inline-skating:before {
444
+ content: "\e086";
445
+ }
446
+ .map-icon-hang-gliding:before {
447
+ content: "\e087";
448
+ }
449
+ .map-icon-climbing:before {
450
+ content: "\e088";
451
+ }
452
+ .map-icon-baseball:before {
453
+ content: "\e089";
454
+ }
455
+ .map-icon-archery:before {
456
+ content: "\e08a";
457
+ }
458
+ .map-icon-wind-surfing:before {
459
+ content: "\e08b";
460
+ }
461
+ .map-icon-scuba-diving:before {
462
+ content: "\e08c";
463
+ }
464
+ .map-icon-sailing:before {
465
+ content: "\e08d";
466
+ }
467
+ .map-icon-marina:before {
468
+ content: "\e08e";
469
+ }
470
+ .map-icon-canoe:before {
471
+ content: "\e08f";
472
+ }
473
+ .map-icon-boat-tour:before {
474
+ content: "\e090";
475
+ }
476
+ .map-icon-boat-ramp:before {
477
+ content: "\e091";
478
+ }
479
+ .map-icon-swimming:before {
480
+ content: "\e092";
481
+ }
482
+ .map-icon-whale-watching:before {
483
+ content: "\e093";
484
+ }
485
+ .map-icon-waterskiing:before {
486
+ content: "\e094";
487
+ }
488
+ .map-icon-surfing:before {
489
+ content: "\e095";
490
+ }
491
+ .map-icon-rafting:before {
492
+ content: "\e096";
493
+ }
494
+ .map-icon-kayaking:before {
495
+ content: "\e097";
496
+ }
497
+ .map-icon-jet-skiing:before {
498
+ content: "\e099";
499
+ }
500
+ .map-icon-fishing-pier:before {
501
+ content: "\e09a";
502
+ }
503
+ .map-icon-fish-cleaning:before {
504
+ content: "\e09b";
505
+ }
506
+ .map-icon-diving:before {
507
+ content: "\e09c";
508
+ }
509
+ .map-icon-boating:before {
510
+ content: "\e09d";
511
+ }
512
+ .map-icon-fishing:before {
513
+ content: "\e098";
514
+ }
515
+ .map-icon-cross-country-skiing:before {
516
+ content: "\e09e";
517
+ }
518
+ .map-icon-skiing:before {
519
+ content: "\e09f";
520
+ }
521
+ .map-icon-snowmobile:before {
522
+ content: "\e0a0";
523
+ }
524
+ .map-icon-snowboarding:before {
525
+ content: "\e0a1";
526
+ }
527
+ .map-icon-snow:before {
528
+ content: "\e0a2";
529
+ }
530
+ .map-icon-snow-shoeing:before {
531
+ content: "\e0a3";
532
+ }
533
+ .map-icon-sledding:before {
534
+ content: "\e0a4";
535
+ }
536
+ .map-icon-ski-jumping:before {
537
+ content: "\e0a5";
538
+ }
539
+ .map-icon-ice-skating:before {
540
+ content: "\e0a6";
541
+ }
542
+ .map-icon-ice-fishing:before {
543
+ content: "\e0a7";
544
+ }
545
+ .map-icon-chairlift:before {
546
+ content: "\e0a8";
547
+ }
548
+ .map-icon-golf:before {
549
+ content: "\e0a9";
550
+ }
551
+ .map-icon-horse-riding:before {
552
+ content: "\e0aa";
553
+ }
554
+ .map-icon-motobike-trail:before {
555
+ content: "\e0ab";
556
+ }
557
+ .map-icon-trail-walking:before {
558
+ content: "\e0ac";
559
+ }
560
+ .map-icon-viewing:before {
561
+ content: "\e0ad";
562
+ }
563
+ .map-icon-walking:before {
564
+ content: "\e0ae";
565
+ }
566
+ .map-icon-bicycling:before {
567
+ content: "\e0af";
568
+ }
includes/map-icons/demo.html CHANGED
@@ -1,124 +1,124 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
5
- <meta charset="utf-8">
6
- <title>Map Icons Demo</title>
7
- <link rel="shortcut icon" href="images/favicon.ico" />
8
- <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
9
- <link rel="stylesheet" type="text/css" href="css/map-icons.css" />
10
- <script src="js/map-icons.js"></script>
11
- <style>
12
- body, html {
13
- width: 100%;
14
- height: 100%;
15
- margin: 0;
16
- padding: 0;
17
- }
18
-
19
- #map-canvas {
20
- width: 100%;
21
- height: 100%;
22
- }
23
-
24
- .marker-label,
25
- .marker-icon {
26
- z-index: 99;
27
- position: absolute;
28
- display: block;
29
- margin-top: -50px;
30
- margin-left: -25px;
31
- width: 50px;
32
- height: 50px;
33
- font-size: 30px !important;
34
- text-align: center;
35
- color: #FFFFFF;
36
- white-space: nowrap;
37
- }
38
- </style>
39
- <script>
40
- function initialize() {
41
- var mapOptions = {
42
- zoom: 12,
43
- center: new google.maps.LatLng(-33.9, 151.2),
44
- mapTypeId: google.maps.MapTypeId.ROADMAP,
45
- styles: [
46
- {stylers: [{ visibility: 'simplified' }]},
47
- {elementType: 'labels', stylers: [{ visibility: 'off' }]}
48
- ]
49
- }
50
- var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
51
-
52
- var marker1 = new Marker({
53
- map: map,
54
- zIndex: 9,
55
- title: 'Map Icons',
56
- position: new google.maps.LatLng(-33.890542, 151.274856),
57
- icon: {
58
- path: MAP_PIN,
59
- fillColor: '#0E77E9',
60
- fillOpacity: 1,
61
- strokeColor: '',
62
- strokeWeight: 0,
63
- scale: 1/2
64
- },
65
- label: '<i class="map-icon-walking"></i>'
66
- });
67
-
68
- var marker2 = new Marker({
69
- map: map,
70
- zIndex: 9,
71
- title: 'Map Icons',
72
- position: new google.maps.LatLng(-33.923036, 151.259052),
73
- icon: {
74
- path: SQUARE_PIN,
75
- fillColor: '#0E77E9',
76
- fillOpacity: 1,
77
- strokeColor: '',
78
- strokeWeight: 0,
79
- scale: 1/2
80
- },
81
- label: '<i class="map-icon-cafe"></i>'
82
- });
83
-
84
- var marker3 = new Marker({
85
- map: map,
86
- zIndex: 9,
87
- title: 'Map Icons',
88
- position: new google.maps.LatLng(-34.028249, 151.157507),
89
- icon: {
90
- path: SHEILD,
91
- fillColor: '#0E77E9',
92
- fillOpacity: 1,
93
- strokeColor: '',
94
- strokeWeight: 0,
95
- scale: 1/2
96
- },
97
- label: '<i class="map-icon-car-wash"></i>'
98
- });
99
-
100
- var marker4 = new Marker({
101
- map: map,
102
- zIndex: 9,
103
- title: 'Map Icons',
104
- position: new google.maps.LatLng(-33.80010128657071, 151.28747820854187),
105
- icon: {
106
- path: ROUTE,
107
- fillColor: '#0E77E9',
108
- fillOpacity: 1,
109
- strokeColor: '',
110
- strokeWeight: 0,
111
- scale: 1/2
112
- },
113
- label: '<i class="map-icon-male"></i>'
114
- });
115
- }
116
-
117
- google.maps.event.addDomListener(window, 'load', initialize);
118
-
119
- </script>
120
- </head>
121
- <body>
122
- <div id="map-canvas"></div>
123
- </body>
124
  </html>
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
5
+ <meta charset="utf-8">
6
+ <title>Map Icons Demo</title>
7
+ <link rel="shortcut icon" href="images/favicon.ico" />
8
+ <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
9
+ <link rel="stylesheet" type="text/css" href="css/map-icons.css" />
10
+ <script src="js/map-icons.js"></script>
11
+ <style>
12
+ body, html {
13
+ width: 100%;
14
+ height: 100%;
15
+ margin: 0;
16
+ padding: 0;
17
+ }
18
+
19
+ #map-canvas {
20
+ width: 100%;
21
+ height: 100%;
22
+ }
23
+
24
+ .marker-label,
25
+ .marker-icon {
26
+ z-index: 99;
27
+ position: absolute;
28
+ display: block;
29
+ margin-top: -50px;
30
+ margin-left: -25px;
31
+ width: 50px;
32
+ height: 50px;
33
+ font-size: 30px !important;
34
+ text-align: center;
35
+ color: #FFFFFF;
36
+ white-space: nowrap;
37
+ }
38
+ </style>
39
+ <script>
40
+ function initialize() {
41
+ var mapOptions = {
42
+ zoom: 12,
43
+ center: new google.maps.LatLng(-33.9, 151.2),
44
+ mapTypeId: google.maps.MapTypeId.ROADMAP,
45
+ styles: [
46
+ {stylers: [{ visibility: 'simplified' }]},
47
+ {elementType: 'labels', stylers: [{ visibility: 'off' }]}
48
+ ]
49
+ }
50
+ var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
51
+
52
+ var marker1 = new Marker({
53
+ map: map,
54
+ zIndex: 9,
55
+ title: 'Map Icons',
56
+ position: new google.maps.LatLng(-33.890542, 151.274856),
57
+ icon: {
58
+ path: MAP_PIN,
59
+ fillColor: '#0E77E9',
60
+ fillOpacity: 1,
61
+ strokeColor: '',
62
+ strokeWeight: 0,
63
+ scale: 1/2
64
+ },
65
+ label: '<i class="map-icon-walking"></i>'
66
+ });
67
+
68
+ var marker2 = new Marker({
69
+ map: map,
70
+ zIndex: 9,
71
+ title: 'Map Icons',
72
+ position: new google.maps.LatLng(-33.923036, 151.259052),
73
+ icon: {
74
+ path: SQUARE_PIN,
75
+ fillColor: '#0E77E9',
76
+ fillOpacity: 1,
77
+ strokeColor: '',
78
+ strokeWeight: 0,
79
+ scale: 1/2
80
+ },
81
+ label: '<i class="map-icon-cafe"></i>'
82
+ });
83
+
84
+ var marker3 = new Marker({
85
+ map: map,
86
+ zIndex: 9,
87
+ title: 'Map Icons',
88
+ position: new google.maps.LatLng(-34.028249, 151.157507),
89
+ icon: {
90
+ path: SHEILD,
91
+ fillColor: '#0E77E9',
92
+ fillOpacity: 1,
93
+ strokeColor: '',
94
+ strokeWeight: 0,
95
+ scale: 1/2
96
+ },
97
+ label: '<i class="map-icon-car-wash"></i>'
98
+ });
99
+
100
+ var marker4 = new Marker({
101
+ map: map,
102
+ zIndex: 9,
103
+ title: 'Map Icons',
104
+ position: new google.maps.LatLng(-33.80010128657071, 151.28747820854187),
105
+ icon: {
106
+ path: ROUTE,
107
+ fillColor: '#0E77E9',
108
+ fillOpacity: 1,
109
+ strokeColor: '',
110
+ strokeWeight: 0,
111
+ scale: 1/2
112
+ },
113
+ label: '<i class="map-icon-male"></i>'
114
+ });
115
+ }
116
+
117
+ google.maps.event.addDomListener(window, 'load', initialize);
118
+
119
+ </script>
120
+ </head>
121
+ <body>
122
+ <div id="map-canvas"></div>
123
+ </body>
124
  </html>
includes/map-icons/fonts/map-icons.dev.svg CHANGED
@@ -1,1394 +1,1394 @@
1
- <?xml version="1.0" standalone="no"?>
2
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
- <svg xmlns="http://www.w3.org/2000/svg">
4
- <metadata>
5
- This is a custom SVG font generated by IcoMoon.
6
- <iconset grid="16"></iconset>
7
- </metadata>
8
- <defs>
9
- <font id="map-icons" horiz-adv-x="512" >
10
- <font-face units-per-em="512" ascent="480" descent="-32" />
11
- <missing-glyph horiz-adv-x="512" />
12
- <glyph class="hidden" unicode="&#xf000;" d="M0,480L 512 -32L0 -32 z" horiz-adv-x="0" />
13
- <glyph unicode="&#xe000;" d="M 256.154,455.424c-79.872,0-144.599-63.529-144.599-141.865C 111.555,235.203, 256.154-21.76, 256.154-21.76s 144.609,256.963, 144.609,335.319
14
- C 400.763,391.895, 335.995,455.424, 256.154,455.424z" data-tags="map-pin" />
15
- <glyph unicode="&#xe001;" d="M 20.48,318.638L 20.48,459.52L 166.902,459.52L 220.785,418.56L 130.99,418.56L 225.28,318.638L 166.902,264.96L 71.68,354.55L 71.68,264.755 zM 491.52,134.38L 491.52-11.52L 345.098-11.52L 291.215,29.44L 381.010,29.44L 286.72,131.871L 345.098,186.798L 440.32,98.468L 440.32,188.262 z" data-tags="expand" />
16
- <glyph unicode="&#xe002;" d="M 20.48,318.638L 20.48,459.52L 166.902,459.52L 220.785,418.56L 130.99,418.56L 225.28,318.638L 166.902,264.96L 71.68,354.55L 71.68,264.755 zM 345.62,459.52L 491.52,459.52L 491.52,318.116L 450.56,264.243L 450.56,354.028L 348.129,259.738L 293.202,315.607L 381.532,408.32L 291.738,408.32 zM 491.52,134.38L 491.52-11.52L 345.098-11.52L 291.215,29.44L 381.010,29.44L 286.72,131.871L 345.098,186.798L 440.32,98.468L 440.32,188.262 zM 166.38-11.52L 20.48-11.52L 20.48,134.902L 61.44,188.785L 61.44,98.99L 163.871,193.28L 218.798,134.902L 130.468,39.68L 220.262,39.68 z" data-tags="fullscreen" />
17
- <glyph unicode="&#xe003;" d="M 460.8,469.76L 51.2,469.76L 51.2,60.16L 205.752,60.16L 261.448-22.272L 317.153,60.16L 460.8,60.16 z" data-tags="square-pin" />
18
- <glyph unicode="&#xe004;" d="M 486.349,259.072C 484.045,383.57, 411.822,433.039, 408.863,434.995l-11.172,7.639l-11.254-7.619c-18.698-12.687-38.083-19.128-57.61-19.128
19
- c-32.338,0-54.292,17.408-55.224,18.166L 261.007,444.16l-12.503-10.138c-0.922-0.737-22.866-18.135-55.214-18.135c-19.507,0-38.881,6.431-57.61,19.159
20
- l-11.203,7.557l-11.284-7.629C 105.533,429.711, 38.298,380.047, 35.86,259.686C 34.888,249.201, 63.805,51.057, 261.11-6.4
21
- C 475.617,56.289, 487.455,245.996, 486.349,259.072z" data-tags="route-pin" />
22
- <glyph unicode="&#xe005;" d="M 435.814,304.814c 2.847,33.853, 13.056,64.932, 31.027,93.43L 397.885,464.64c-21.78-18.053-46.602-28.058-74.701-29.819
23
- c-25.764-2.243-50.176,2.468-73.155,14.162c-23.613-11.305-47.933-16.046-73.277-14.162c-26.235,2.253-49.9,11.213-71.096,27.075L 36.526,395.52
24
- c 17.009-28.897, 26.481-59.136, 28.334-90.706c 0.881-14.531-3.42-34.56-13.097-60.416c-5.059-14.336-8.878-26.778-11.5-37.171
25
- c-2.417-10.332-3.922-18.708-4.434-25.006c-0.348-27.556, 7.68-52.439, 24.146-74.568c 12.872-16.148, 34.099-33.987, 63.57-53.494
26
- c 32.236-15.8, 57.19-26.051, 74.67-30.423c 5.018-2.263, 9.912-4.424, 14.5-6.502c 4.557-2.089, 9.441-4.147, 14.531-6.38
27
- c 11.008-6.349, 18.719-13.22, 22.784-20.316c 4.997,7.69, 12.892,14.377, 23.378,20.316c 7.393,3.113, 13.67,5.786, 18.698,8.161
28
- c 5.028,2.15, 8.776,3.738, 10.947,4.71c 3.738,1.772, 8.622,3.82, 14.561,6.083c 5.96,2.263, 13.363,5.028, 22.159,8.1
29
- c 17.029,5.796, 29.43,11.295, 37.304,16.251c 28.59,19.497, 49.49,37.059, 62.792,52.736c 17.050,22.2, 25.344,47.206, 24.965,75.305
30
- c-1.014,12.595-6.554,32.727-16.609,60.16C 438.661,269.097, 434.432,289.843, 435.814,304.814z" data-tags="sheild" />
31
- <glyph unicode="&#xe006;" d="M 143.36,316.16c 30.72-10.24, 51.2-36.332, 51.2-70.738l0-264.366 C 194.56-27.075, 202.783-32, 194.386-32L 42.824-32 C 34.447-32, 30.72-27.075, 30.72-18.954L 30.72,245.422
32
- C 30.72,279.91, 51.2,308.439, 81.92,316.16L 81.92,439.040 l 61.44,0 L 143.36,316.16 zM 81.92,480L 143.36,480L 143.36,459.52L 81.92,459.52zM 361.011,431.002c-4.68,0.666-8.274,4.465-8.274,9.042c0,3.348, 2.007,6.267, 4.925,7.926c-2.918,1.536-4.925,6.943-4.925,10.322
33
- C 352.737,463.37, 357.018,469.76, 362.322,469.76l 47.964,0 c 5.335,0, 9.585-6.39, 9.585-11.459c0-3.533-1.997-7.649-5.038-9.134
34
- c 2.918-1.587, 5.038-5.059, 5.038-8.53c0-4.588-3.461-8.673-8.12-9.288l 61.082-149.504C 476.416,272.128, 481.28,261.202, 481.28,250.47L 481.28-11.52
35
- c0-9.994, 0.266-20.48-10.24-20.48L 316.529-32 C 305.859-32, 307.2-21.514, 307.2-11.52L 307.2,254.72 c0,10.721, 1.997,17.265, 5.601,26.993L 361.011,431.002zM-163.84,469.76L-163.84,469.76L-163.84,469.76L-163.84,469.76z" data-tags="liquor_store" />
36
- <glyph unicode="&#xe007;" d="M 418.908,248.054c-12.964,0-25.283-2.662-36.475-7.444l-31.498,53.975l 23.736,40.684c 3.226,5.55, 1.352,12.677-4.188,15.923
37
- c-2.437,1.413-5.151,3.973-7.721,3.553C 362.086,354.857, 361.431,357.12, 360.745,357.12l-46.561,0 c-6.42,0-11.633-8.94-11.633-15.36
38
- c0-6.431, 5.212-15.36, 11.633-15.36l 30.177,0 l-13.588-20.48L 194.806,305.92 l 27.156,51.2l 10.762,0 c 6.42,0, 11.633,3.809, 11.633,10.24s-5.212,10.24-11.633,10.24l-58.194,0
39
- c-6.41,0-11.633-3.809-11.633-10.24s 5.212-10.24, 11.633-10.24l 20.47,0 l-65.423-114.33c-11.203,4.782-23.542,6.349-36.495,6.349
40
- C 41.677,249.139,0,206.909,0,155.505c0-51.415, 41.677-93.358, 93.092-93.358s 93.092,41.544, 93.092,92.959c0,30.106-14.356,56.74-36.557,73.769l 24.914,42.66
41
- l 71.414-122.429c 0.082-0.133, 0.184-0.256, 0.276-0.389c 0.092-0.174, 0.205-0.317, 0.307-0.461c 0.082-0.133, 0.143-0.236, 0.236-0.348
42
- c 0.287-0.379, 0.604-0.727, 0.922-1.065c 0.031-0.041, 0.072-0.082, 0.113-0.133c 0.102-0.102, 0.205-0.195, 0.317-0.287
43
- c 0.102-0.092, 0.215-0.184, 0.328-0.266c 0.287-0.246, 0.594-0.502, 0.901-0.717c 0.123-0.092, 0.246-0.164, 0.379-0.246
44
- c 0.102-0.061, 0.195-0.123, 0.297-0.195c 0.041-0.020, 0.072-0.051, 0.123-0.072c 0.010-0.020, 0.031-0.020, 0.041-0.041
45
- c 0.317-0.174, 0.645-0.328, 0.983-0.481c 0.041-0.031, 0.072-0.041, 0.113-0.051c 0.072-0.031, 0.154-0.092, 0.236-0.123
46
- c 0.020,0, 0.051-0.020, 0.082-0.020c 0.236-0.102, 0.502-0.184, 0.748-0.266c 0.236-0.082, 0.461-0.174, 0.696-0.225
47
- c 0.051-0.010, 0.102-0.010, 0.143-0.041c 0.092-0.010, 0.174-0.020, 0.256-0.041c 0.143-0.031, 0.297-0.051, 0.451-0.092
48
- c 0.696-0.133, 1.382-0.215, 2.089-0.215l0,0 c 0.010,0, 0.010-0.635, 0.010-0.635c 0.020,0, 0.031-0.604, 0.041-0.604l 70.564,0
49
- c 5.755-40.96, 44.831-80.845, 92.293-80.845c 51.415,0, 93.092,41.994, 93.092,93.409C 512,206.060, 470.323,248.054, 418.908,248.054z M 162.908,154.962
50
- c0-38.574-31.252-69.827-69.816-69.827c-38.564,0-69.816,31.263-69.816,69.827c0,38.554, 31.252,69.806, 69.816,69.806
51
- c 8.673,0, 16.947-1.649, 24.607-4.547l-34.662-59.412c-3.236-5.54-1.352-12.667, 4.198-15.923c 1.843-1.065, 3.86-1.577, 5.847-1.577
52
- c 4.004,0, 7.895,2.068, 10.066,5.765l 34.673,59.453C 153.139,195.717, 162.908,176.476, 162.908,154.962z M 256,180.541L 194.806,285.44l 122.399,0 L 256,180.541z
53
- M 337.449,269.476l 24.924-43.704C 343.101,210.985, 329.789,193.28, 326.615,162.56l-50.36,0 L 337.449,269.476z M 374.18,204.503L 398.664,162.56l-48.517,0
54
- C 352.952,183.040, 361.677,194.048, 374.18,204.503z M 418.908,84.5c-34.58,0-63.232,26.86-68.772,57.58l 68.741,0 c 0.031,0, 0.031,0.604, 0.051,0.604
55
- c 0.696,0, 1.393,0.41, 2.079,0.543c 0.164,0.041, 0.307,0.215, 0.471,0.236c 0.635,0.154, 1.28,0.42, 1.935,0.676
56
- c 0.061,0.031, 0.133,0.133, 0.215,0.164c 0.379,0.174, 0.768,0.379, 1.157,0.594c 0.092,0.051, 0.174,0.154, 0.276,0.215
57
- c 0.348,0.225, 0.676,0.492, 1.034,0.748c 0.266,0.225, 0.573,0.44, 0.799,0.676c 0.287,0.256, 0.532,0.553, 0.778,0.85
58
- c 0.236,0.266, 0.502,0.553, 0.696,0.87c 0.205,0.276, 0.41,0.625, 0.584,0.942c 0.184,0.328, 0.369,0.635, 0.532,0.973
59
- c 0.154,0.348, 0.266,0.707, 0.399,1.065c 0.123,0.348, 0.236,0.696, 0.317,1.065c 0.092,0.369, 0.123,0.696, 0.174,1.065
60
- c 0.061,0.44, 0.113,0.819, 0.133,1.26c0,0.123, 0.031,0.236, 0.031,0.358c0,0.215-0.051,0.43-0.051,0.655
61
- c-0.041,0.44-0.072,0.84-0.143,1.27c-0.051,0.379-0.154,0.707-0.236,1.085c-0.102,0.358-0.195,0.707-0.338,1.065
62
- c-0.164,0.399-0.338,0.778-0.532,1.157c-0.102,0.205-0.174,0.41-0.276,0.604l-34.662,59.412c 7.68,2.898, 15.944,4.547, 24.607,4.547
63
- c 38.574,0, 69.827-31.57, 69.827-70.124C 488.745,116.081, 457.482,84.5, 418.908,84.5z" data-tags="bicycle_store" />
64
- <glyph unicode="&#xe008;" d="M 128.522-26.726c-3.482-6.103-13.394-7.066-22.139-2.048l-54.743,31.16c-8.704,4.966-12.954,13.947-9.462,20.040L 275.005,391.506
65
- c 33.485,54.129-83.558,49.357-112.292,33.423C 184.443,463.892, 253.696,476.754, 298.609,480l 13.066-0.85c 25.385-12.646, 61.788-31.621, 85.78-47.534
66
- c 17.623-27.679, 36.209-42.25, 62.525-42.179c 34.345-26.317-19.302-98.109-53.053-64.86c 0.184,16.425-47.473,58.921-80.855,23.91L 128.522-26.726z" data-tags="hardware_store" />
67
- <glyph unicode="&#xe009;" d="M 261.233,450.386L 12.984,244.48L 71.68,244.48 l0-245.76 l 368.64,0 L 440.32,244.48 l 64.184,0 L 261.233,450.386z M 316.846,70.4L 200.632,70.4 l 24.371,109.681c-14.735,10.24-24.371,25.661-24.371,44.544
68
- c0,31.109, 26.020,55.695, 58.102,55.695c 32.102,0, 58.112-25.528, 58.112-56.637c0-18.893-9.636-33.229-24.361-43.438L 316.846,70.4z" data-tags="insurance_agency" />
69
- <glyph unicode="&#xe00a;" d="M 3.021,197.571c 4.198-32.512, 31.918-57.61, 65.587-57.61c 33.628,0, 61.327,25.098, 65.536,57.61L 3.021,197.571 zM 360.264,64.461c0-5.663-4.567-10.271-10.22-10.271L 159.007,54.19 c-5.612,0-10.24,4.608-10.24,10.271l0,0c0,5.622, 4.618,10.168, 10.24,10.168l 191.027,0
70
- C 355.686,74.629, 360.264,70.083, 360.264,64.461L 360.264,64.461zM 149.883,48.957L 359.158,48.957L 359.158,19.395L 149.883,19.395zM 377.856,197.571c 4.188-32.512, 31.939-57.61, 65.556-57.61c 33.638,0, 61.348,25.098, 65.526,57.61L 377.856,197.571 zM 505.334,218.143l-53.688,73.953l 28.703,0 c 6.984,0, 12.605,5.724, 12.605,12.8c0,7.014-5.632,12.677-12.605,12.677L 328.305,317.573
71
- c-9.062,24.996-30.935,43.776-57.692,48.456L 270.612,391.229 L 270.612,405.934 c0,7.096-5.693,12.759-12.749,12.759c-0.389,0-0.768-0.082-1.188-0.133
72
- c-0.379,0.051-0.788,0.133-1.188,0.133c-7.055,0-12.728-5.663-12.728-12.759l0-14.705 l0-25.18 c-26.757-4.68-48.62-23.46-57.672-48.456L 33.014,317.594
73
- c-6.932,0-12.585-5.663-12.585-12.677c0-7.086, 5.652-12.8, 12.585-12.8l 27.392,0 l-53.699-73.953L0,218.163 l0-13.66 l 137.196,0 l0,13.66 L 130.458,218.163 L 76.78,292.096
74
- l 103.741,0 l 9.8,0 l 11.069,0 c0,2.888, 0.317,5.724, 0.748,8.438c 0.44,1.28, 0.737,2.58, 0.737,3.922c 4.69,19.763, 20.132,35.461, 39.885,40.274
75
- l0-97.403 l0-42.854 l-0.532,0 c-1.096-52.756-26.194-98.765-63.427-124.621l 74.404,0 l 3.482,0 l 6.973,0 l 70.932,0 c-37.243,25.856-62.321,71.864-63.478,124.621l-0.492,0
76
- l0,42.854 l0,97.403 c 19.722-4.813, 35.215-20.511, 39.875-40.274c 0.041-1.341, 0.317-2.642, 0.768-3.922c 0.41-2.724, 0.666-5.55, 0.666-8.438l 11.141,0
77
- l 9.789,0 l 102.38,0 l-53.699-73.953l-6.697,0 l0-13.66 L 512,204.483 l0,13.66 L 505.334,218.143 z M 63.13,218.143L 20.275,218.143 l 42.854,59.034L 63.13,218.143 z M 74.097,218.143l0,59.034
78
- l 42.854-59.034L 74.097,218.143 z M 437.944,218.143l-42.875,0 l 42.875,59.034L 437.944,218.143 z M 448.86,218.143l0,59.034 l 42.906-59.034L 448.86,218.143 zM 81.316,335.37c0-6.953-5.693-12.687-12.698-12.687c-7.035,0-12.749,5.734-12.749,12.687c0,7.025, 5.714,12.759, 12.749,12.759
79
- C 75.622,348.14, 81.316,342.395, 81.316,335.37zM 456.141,336.046c0-7.076-5.693-12.687-12.718-12.687c-7.055,0-12.718,5.612-12.718,12.687c0,7.025, 5.663,12.749, 12.718,12.749
80
- C 450.447,348.795, 456.141,343.071, 456.141,336.046z" data-tags="lawyer" />
81
- <glyph unicode="&#xe00b;" d="M 145.787,75.52l 312.146,0 L 457.933,342.589 L 145.787,342.589 L 145.787,75.52 z M 304.394,316.006l 112.538-98.284l-28.355,0 l0-117.924 l-65.905,0 L 322.673,183.040 l-41.626,0 l0-83.241 L 218.624,99.799 L 218.624,217.723
82
- l-29.082,0 L 304.394,316.006zM 111.104,408.484L 111.104,469.576L 41.738,469.576L 41.738-32L 111.104-32L 111.104,377.262L 471.818,377.262L 471.818,408.484 z" data-tags="real_estate_agency" />
83
- <glyph unicode="&#xe00c;" d="M 217.201,418.56C 87.849,418.56, 10.24,314.798, 10.24,262.912c0-51.886, 25.866-90.798, 77.609-90.798
84
- c 51.743,0, 77.619-12.964, 77.619-51.876c0-51.876, 38.799-90.788, 90.542-90.788c 168.161,0, 245.76,90.788, 245.76,181.576
85
- C 501.76,366.674, 372.388,418.56, 217.201,418.56L 217.201,418.56z M 184.863,366.674c 17.859,0, 32.338-14.52, 32.338-32.42
86
- c0-17.92-14.479-32.43-32.338-32.43s-32.338,14.52-32.338,32.43C 152.525,352.154, 167.004,366.674, 184.863,366.674z M 288.328,366.674
87
- c 17.859,0, 32.338-14.52, 32.338-32.42c0-17.92-14.479-32.43-32.338-32.43c-17.848,0-32.328,14.52-32.328,32.43
88
- C 256,352.154, 270.479,366.674, 288.328,366.674z M 391.813,314.798c 17.869,0, 32.348-14.51, 32.348-32.43c0-17.92-14.479-32.42-32.348-32.42
89
- c-17.859,0-32.328,14.51-32.328,32.42C 359.475,300.278, 373.955,314.798, 391.813,314.798z M 94.321,288.85c 17.859,0, 32.328-14.51, 32.328-32.41
90
- c0-17.92-14.479-32.43-32.328-32.43s-32.338,14.52-32.338,32.43C 61.983,274.34, 76.462,288.85, 94.321,288.85z M 256,159.15
91
- c 21.432,0, 38.799-17.408, 38.799-38.922c0-21.484-17.367-38.902-38.799-38.902s-38.799,17.418-38.799,38.902
92
- C 217.201,141.742, 234.568,159.15, 256,159.15L 256,159.15z" data-tags="art_gallery" />
93
- <glyph unicode="&#xe00d;" d="M 256,418.56c-12.933,0-18.78-6.308-22.63-13.169L 72.499,102.574L 37.734,102.574 c-15.176,0-27.494-11.725-27.494-26.327
94
- c0-14.572, 12.319-26.317, 27.494-26.317l 50.125,0 l 336.302,0 l 50.125,0 c 15.165,0, 27.494,11.745, 27.494,26.317c0,14.612-12.319,26.327-27.494,26.327L 439.501,102.574
95
- l-160.86,302.828C 274.78,412.252, 268.943,418.56, 256,418.56L 256,418.56z M 256,286.904l 90.542-184.33L 165.458,102.574 L 256,286.904z" data-tags="campground" />
96
- <glyph unicode="&#xe00e;" d="M 387.41,328.325c 3.41-53.299-22.446-90.665-22.446-90.665c 3.359,41.052-13.281,97.792-13.281,97.792c-14.213,2.785-36.925-0.205-36.925-0.205
97
- c 3.277-44.278-19.241-82.944-35.871-97.178c 8.223,49.101-4.864,86.252-4.864,86.252c-22.497,5.673-54.743,2.202-54.743,2.202
98
- c 7.004-52.234-21.811-90.665-21.811-90.665c 4.772,36.413-14.684,83.118-14.684,83.118c-16.517,1.075-42.834-4.301-42.834-4.301
99
- c 13.875-24.791, 2.796-79.278, 2.796-79.278c-7.567,44.554-33.004,70.83-33.004,70.83C-36.116,244.111, 2.304,158.536, 73.626,133.048
100
- c 67.287-24.003, 284.099-35.83, 381.102,6.257C 551.741,181.412, 483.43,299.735, 387.41,328.325z" data-tags="bakery" />
101
- <glyph unicode="&#xe00f;" d="M 40.96,469.76l 57.344-462.643c 1.792-14.428, 14.326-28.877, 28.682-28.877l 258.028,0 c 14.346,0, 26.9,14.449, 28.662,28.877L 471.040,469.76
102
- L 40.96,469.76 z M 105.472,411.945l 301.046,0 l-13.435-115.661L 118.917,296.284 L 105.472,411.945z" data-tags="bar" />
103
- <glyph unicode="&#xe010;" d="M 408.801,192.389c 4.741-2.324, 10.516-2.284, 12.831,0.113c 2.345,2.386, 0.317,6.154-4.485,8.366l-83.743,38.789
104
- c-4.803,2.232-12.872,2.796-17.91,1.28l-29.952-8.98c-5.089-1.526-11.725-2.775-14.735-2.775c-3.011,0-5.519,4.239-5.519,9.441l0,91.331
105
- c0,5.192, 4.332,9.452, 9.636,9.452l 217.18,0 c 5.325,0, 9.646,4.25, 9.646,9.452L 501.75,379.525 c0,5.202-4.168,10.67-9.236,12.155L 263.803,458.414
106
- c-5.069,1.485-13.384,1.485-18.452-0.020L 19.446,391.69C 14.387,390.205, 10.24,384.717, 10.24,379.525l0-30.659 c0-5.202, 4.332-9.452, 9.626-9.452l 214.323,0
107
- c 5.304,0, 9.636-4.26, 9.636-9.452l0-91.382 c0-5.192-4.332-9.452-9.636-9.462l-3.891,0 c-5.304-0.010-12.739,2.959-16.548,6.584l-51.671,49.347
108
- c-3.82,3.635-11.254,6.595-16.558,6.595l-23.9,0 c-5.284,0-11.663,3.123-14.152,6.922c-2.468,3.809-8.223,6.902-12.78,6.902
109
- s-5.96-3.564-3.092-7.946l 0.451-0.686c 2.867-4.372, 2.877-11.571, 0.061-15.964l-25.846-40.182c-2.806-4.413-1.935-10.865, 2.007-14.356
110
- l 1.833-1.649c 3.942-3.482, 10.967-4.383, 15.667-1.956l 27.689,14.408c 4.71,2.437, 10.865,0.85, 13.722-3.523l 30.382-46.51
111
- c 2.877-4.383, 1.915-10.732-2.13-14.090l-13.896-11.602c-4.045-3.359-6.4-10.25-5.233-15.34l 18.012-78.356
112
- c 1.167-5.089, 6.339-8.192, 11.479-6.912l 12.524,3.092c 5.151,1.29, 8.387,6.472, 7.26,11.551l-12.196,52.992
113
- c-1.167,5.069, 2.058,10.373, 7.188,11.735l 30.792,8.253c 5.1,1.372, 13.629,2.468, 18.934,2.468l 3.891,0 c 5.304,0, 9.636-4.25, 9.636-9.421l0-93.972
114
- c0-5.181-4.332-9.431-9.636-9.431L 19.866,38.072 c-5.294,0-9.626-4.239-9.626-9.462l0-30.638 C 10.24-7.281, 14.572-11.52, 19.866-11.52l 468.255,0
115
- c 5.304,0, 9.626,4.239, 9.626,9.472l0,30.638 c0,5.222-4.332,9.462-9.626,9.462L 274.934,38.052 c-5.315,0-9.636,4.25-9.636,9.431l0,93.972
116
- c0,5.171, 4.332,9.421, 9.636,9.421l 11.1,0 c 5.304,0, 13.773-1.096, 18.924-2.468l 30.792-8.253c 5.14-1.362, 8.376-6.656, 7.188-11.735
117
- l-12.165-52.992c-1.188-5.079, 2.068-10.26, 7.219-11.551l 12.544-3.092c 5.151-1.28, 10.281,1.823, 11.469,6.912l 18.033,78.356
118
- c 1.198,5.089-1.075,11.878-4.997,15.176c-3.912,3.256-7.363,10.199-7.67,15.38l-1.567,27.72c-0.317,5.181, 3.338,7.526, 8.090,5.192
119
- L 408.801,192.389z" data-tags="amusement_park" />
120
- <glyph unicode="&#xe011;" d="M 10.24,414.659c0,0, 23.112-40.96, 23.112-67.133s-22.979-65.075-22.979-65.075c0-6.083, 4.106-8.151, 8.97-4.669l 75.602,54.231
121
- c 15.268-11.274, 45.179-26.235, 66.898-38.523l0-43.889 l 48.486,27.607c 15.565-3.533, 31.355-5.775, 48.261-5.775c 101.878,0, 184.586,66.099, 184.586,77.117
122
- c0,9.574-62.198,60.754-145.418,73.964L 205.23,469.76l0-51.067 c-43.377-12.022-87.747-36.956-110.275-53.596l-75.878,54.231C 14.223,422.82, 10.24,420.741, 10.24,414.659
123
- M 360.97,335.135c-11.991,0-21.729,9.861-21.729,22.047s 9.738,22.036, 21.729,22.036c 12.012,0, 21.688-9.851, 21.688-22.036
124
- S 372.982,335.135, 360.97,335.135 M 501.76,143.309c0,6.093-3.983,8.172-8.837,4.669l-75.51-54.252c-22.528,16.64-66.447,41.574-109.885,53.586L 307.528,198.4
125
- l-92.897-47.237c-83.251-13.199-145.623-64.399-145.623-73.974c0-11.018, 82.627-77.148, 184.494-77.148c 16.896,0, 33.065,2.294, 48.609,5.837L 350.956-21.76
126
- l0,43.878 c 21.688,12.319, 51.251,27.259, 66.447,38.574l 75.407-54.241c 4.905-3.533, 8.899-1.423, 8.899,4.618c0,0-23.020,38.902-23.020,65.096
127
- C 478.7,102.359, 501.76,143.309, 501.76,143.309 M 166.042,77.896c-12.001,0-21.699,9.841-21.699,22.047c0,12.165, 9.697,21.996, 21.699,21.996
128
- c 11.981,0, 21.709-9.841, 21.709-21.996C 187.75,87.736, 178.033,77.896, 166.042,77.896" data-tags="aquarium" />
129
- <glyph unicode="&#xe012;" d="M 492.022,108.186C 497.377,106.455, 501.76,109.64, 501.76,115.272l0,35.779 c0,5.632-3.963,12.595-8.796,15.483L 305.756,278.098
130
- C 300.923,280.975, 296.96,287.949, 296.96,293.571L 296.96,418.56 c0,5.632-1.72,14.51-3.83,19.743c0,0-11.172,27.73-30.72,30.822C 260.321,469.494, 258.202,469.76, 256.072,469.76
131
- C 256.051,469.76, 256.020,469.76, 256,469.76c-0.010,0-0.020,0-0.031,0c-2.468,0.020-4.905-0.287-7.301-0.737C 247.91,468.89, 247.194,468.705, 246.456,468.531
132
- c-1.147-0.297-2.263-0.635-3.359-1.044c-16.261-5.427-24.637-29.030-24.637-29.030C 216.576,433.142, 215.040,424.192, 215.040,418.56l0-124.989
133
- c0-5.632-3.963-12.595-8.796-15.483L 19.036,166.533C 14.203,163.645, 10.24,156.682, 10.24,151.050l0-35.779 c0-5.632, 4.383-8.817, 9.738-7.076l 185.324,60.16
134
- C 210.657,170.086, 215.040,166.902, 215.040,161.27l0-97.618 c0-5.632-3.686-13.015-8.192-16.394l-24.576-18.452c-4.506-3.379-8.192-10.762-8.192-16.394L 174.080-11.52
135
- c0-5.632, 4.434-8.97, 9.841-7.414l 62.208,17.869c 5.407,1.556, 14.275,1.556, 19.681,0l 62.269-17.869C 333.486-20.49, 337.92-17.152, 337.92-11.52l0,23.941
136
- c0,5.632-3.686,13.015-8.192,16.394l-24.576,18.452c-4.495,3.379-8.192,10.762-8.192,16.394l0,97.618 c0,5.632, 4.383,8.817, 9.738,7.076L 492.022,108.186z" data-tags="airport" />
137
- <glyph unicode="&#xe013;" d="M 355.144,215.798c-14.725,11.612-36.823,20.89-66.294,27.822L 266.24,248.955l0,96.563 c 1.004-0.44, 2.099-0.768, 3.062-1.249
138
- C 288.492,334.551, 298.803,316.16, 300.216,295.68l 76.964,0 c-1.403,40.96-16.538,71.25-45.404,92.652C 312.596,402.555, 290.724,411.699, 266.24,416.307L 266.24,469.76 l-71.68,0 l0-51.814
139
- c-33.147-4.096-59.433-14.766-78.735-32.113c-25.272-22.712-37.898-51.22-37.898-85.545c0-37.612, 12.913-65.26, 38.738-82.944
140
- c 14.459-10.025, 40.52-19.333, 77.896-27.955l0-104.612 c-13.629,3.758-24.31,9.943-31.836,18.883C 155.464,112.343, 150.6,121.6, 148.122,142.080L 71.68,142.080
141
- c0-40.96, 14.449-70.349, 43.356-93.143c 20.869-16.445, 47.432-26.44, 79.524-30.771L 194.56-21.76 l 71.68,0 l0,39.25 c 34.13,4.086, 61.686,14.981, 82.555,32.809
142
- c 27.064,23.142, 40.602,52.224, 40.602,87.235C 389.396,171.684, 377.979,197.765, 355.144,215.798z M 170.68,275.364c-12.442,6.758-18.657,17.019-18.657,30.72
143
- c0,14.909, 6.308,26.593, 18.924,34.908c 6.656,4.393, 14.582,7.588, 23.613,9.697l0-84.214 C 183.45,269.711, 175.432,272.681, 170.68,275.364z
144
- M 277.944,86.876c-3.553-1.229-7.516-2.243-11.704-3.133L 266.24,172.8 c 12.339-3.656, 22.077-7.639, 29.164-11.919c 11.182-6.932, 16.783-16.794, 16.783-29.44
145
- C 312.177,109.773, 300.759,94.853, 277.944,86.876z" data-tags="bank" />
146
- <glyph unicode="&#xe016;" d="M 419.84,439.040L 226.068,439.040 c-15.391,20.48-40.612,38.42-69.14,38.42c-46.868,0-84.859-36.618-84.859-83.487c0-46.879, 37.99-82.299, 84.859-82.299
147
- c 35.645,0, 66.14,24.965, 78.725,55.685l 28.211,0 l 20.449,20.46L 304.753,367.36l 12.749,0 l 20.439,20.46L 358.39,367.36l 12.739,0 l 20.449,20.46L 412.027,367.36L 419.84,367.36 l0-2.877
148
- l-1.782-0.42l 40.346,39.547L 419.84,439.040z M 129.464,371.354c-13.558,0-24.566,11.008-24.566,24.586s 11.008,24.576, 24.566,24.576
149
- c 13.578,0, 24.586-10.998, 24.586-24.576S 143.043,371.354, 129.464,371.354zM 440.32,172.8l-5.663,0 l-62.915,113.92C 369.029,291.645, 362.189,295.68, 356.557,295.68L 165.683,295.68 c-5.632,0-12.472-4.035-15.186-8.96L 87.572,172.8L 81.92,172.8
150
- c-11.264,0-20.48-9.216-20.48-20.48l0-102.4 c0-11.264, 9.216-20.48, 20.48-20.48l 20.48,0 l0-30.72 c0-16.896, 13.824-30.72, 30.72-30.72l 10.24,0 c 16.896,0, 30.72,13.824, 30.72,30.72l0,30.72 l 174.080,0 l0-30.72 c0-16.896, 13.824-30.72, 30.72-30.72l 10.24,0 c 16.896,0, 30.72,13.824, 30.72,30.72l0,30.72
151
- l 20.48,0 c 11.264,0, 20.48,9.216, 20.48,20.48L 460.8,152.32 C 460.8,163.584, 451.584,172.8, 440.32,172.8z M 117.76,90.88C 103.619,90.88, 92.16,102.339, 92.16,116.48s 11.459,25.6, 25.6,25.6s 25.6-11.459, 25.6-25.6
152
- S 131.901,90.88, 117.76,90.88z M 138.24,172.8l 41.503,82.995C 182.262,260.844, 188.928,264.96, 194.56,264.96l 133.12,0 c 5.632,0, 12.298-4.116, 14.817-9.165L 384,172.8L 138.24,172.8 z M 404.48,90.88
153
- c-14.141,0-25.6,11.459-25.6,25.6s 11.459,25.6, 25.6,25.6s 25.6-11.459, 25.6-25.6S 418.621,90.88, 404.48,90.88z" data-tags="car_rental" />
154
- <glyph unicode="&#xe017;" d="M 489.298,358.318c-7.045,5.55-25.938,10.004-40.079,13.322L 430.080,374.2L 430.080,420.465 c0-0.205, 9.339,0.379, 9.8,0.154
155
- C 449.065,415.959, 462.295,408.32, 462.981,398.080l 36.905,0 c-0.686,20.48-16.241,33.403-30.085,43.663C 460.616,448.553, 450.56,452.188, 430.080,454.39L 430.080,480 l-20.48,0 l0-24.822
156
- c-20.48-1.966-27.095-7.066-36.342-15.391C 361.165,428.902, 355.779,415.242, 355.779,398.797c0-18.022, 5.151-31.263, 17.531-39.741
157
- C 380.232,354.253, 389.12,349.788, 409.6,345.651l0-50.125 c-10.24,1.812-10.26,1.352-13.875,5.642C 392.243,305.326, 391.291,316.16, 390.103,316.16L 353.485,316.16
158
- c0-20.48, 5.54-30.29, 19.405-41.216C 382.884,267.069, 389.12,265.677, 409.6,263.608L 409.6,244.48 l 20.48,0 l0,18.801 c 20.48,1.976, 37.878,7.188, 47.882,15.729
159
- c 12.984,11.090, 23.603,25.027, 23.603,41.8C 501.555,337.172, 500.244,349.665, 489.298,358.318z M 399.544,386.847
160
- c-5.96,3.246-8.253,8.161-8.253,14.725c0,7.148, 1.976,12.739, 8.018,16.732C 402.493,420.403, 399.36,421.929, 409.6,422.943l0-40.346
161
- C 399.36,384.154, 401.797,385.567, 399.544,386.847z M 444.017,296.53C 442.296,295.936, 430.080,295.465, 430.080,295.045l0,42.67 c 20.48-1.761, 18.903-3.656, 22.303-5.714
162
- c 5.335-3.318, 8.018-8.049, 8.018-14.1C 460.401,307.497, 454.922,300.36, 444.017,296.53zM 394.445,172.8l-5.663,0 l-62.915,113.92C 323.154,291.645, 316.314,295.68, 310.682,295.68L 119.798,295.68 c-5.632,0-12.472-4.035-15.186-8.96L 41.697,172.8L 36.045,172.8
163
- C 24.771,172.8, 10.24,163.584, 10.24,152.32l0-102.4 c0-11.264, 14.531-20.48, 25.805-20.48L 51.2,29.44 l0-30.72 c0-16.896, 19.149-30.72, 36.045-30.72l 10.24,0 c 16.896,0, 25.395,13.824, 25.395,30.72l0,30.72 l 174.080,0 l0-30.72 c0-16.896, 19.139-30.72, 36.045-30.72
164
- l 10.24,0 c 16.896,0, 25.395,13.824, 25.395,30.72l0,30.72 l 25.805,0 c 11.264,0, 15.155,9.216, 15.155,20.48L 409.6,152.32 C 409.6,163.584, 405.699,172.8, 394.445,172.8z M 71.885,90.88c-14.141,0-25.6,11.459-25.6,25.6
165
- S 57.743,142.080, 71.885,142.080s 25.6-11.459, 25.6-25.6S 86.016,90.88, 71.885,90.88z M 92.365,172.8l 41.503,82.995C 136.376,260.844, 143.053,264.96, 148.685,264.96l 133.12,0
166
- c 5.632,0, 12.298-4.116, 14.817-9.165L 338.125,172.8L 92.365,172.8 z M 358.605,90.88c-14.141,0-25.6,11.459-25.6,25.6s 11.459,25.6, 25.6,25.6s 25.6-11.459, 25.6-25.6
167
- S 372.736,90.88, 358.605,90.88z" data-tags="car_dealer" />
168
- <glyph unicode="&#xe018;" d="M 378.88,469.76c-5.632,0-10.24-4.608-10.24-10.24l0-143.36 c0-5.632-4.608-10.24-10.24-10.24L 153.6,305.92 c-5.632,0-10.24,4.608-10.24,10.24L 143.36,459.52 c0,5.632-4.608,10.24-10.24,10.24L 40.96,469.76 C 35.328,469.76, 30.72,465.152, 30.72,459.52l0-471.040
169
- c0-5.632, 4.608-10.24, 10.24-10.24l 92.16,0 c 5.632,0, 10.24,4.608, 10.24,10.24L 143.36,152.32 c0,5.632, 4.608,10.24, 10.24,10.24l 204.8,0 c 5.632,0, 10.24-4.608, 10.24-10.24l0-163.84 c0-5.632, 4.608-10.24, 10.24-10.24l 92.16,0 c 5.632,0, 10.24,4.608, 10.24,10.24L 481.28,459.52
170
- c0,5.632-4.608,10.24-10.24,10.24L 378.88,469.76 z" data-tags="hospital" />
171
- <glyph unicode="&#xe019;" d="M 432.466,220.826c 3.553,4.372, 10.834,9.4, 16.169,11.162l 43.971,17.951C 497.644,252.467, 501.76,259.144, 501.76,264.765L 501.76,390.195
172
- c0,5.632-4.311,11.878-9.574,13.875c0,0-91.986,34.97-153.61,34.97c-57.344,0-136.622-30.239-136.622-30.239
173
- c-5.263-2.007-14.141-4.209-19.732-4.905L 20.408,386.509C 14.817,385.823, 10.24,380.652, 10.24,375.020l0-85.135 c0-5.632, 4.526-11.090, 10.066-12.124l 161.741-26.102
174
- c 5.55-0.922, 14.387-3.379, 19.62-5.458l 110.766-28.334c 5.56-0.84, 11.633-5.878, 13.466-11.213l 65.116-188.017
175
- c 1.843-5.335, 7.721-8.212, 13.056-6.42l 68.844,23.153c 5.335,1.792, 8.202,7.608, 6.359,12.943l-45.199,130.386
176
- c-1.843,5.335-3.4,9.994-3.471,10.373c0,0,0,0-0.082,0.389C 425.103,211.722, 432.466,220.826, 432.466,220.826z M 353.884,288.502
177
- c-25.702,0-46.459,20.48-46.459,45.722c0,25.252, 20.756,45.722, 46.459,45.722c 25.62,0, 46.438-20.48, 46.438-45.722
178
- C 400.323,308.982, 379.505,288.502, 353.884,288.502z" data-tags="hair_care" />
179
- <glyph unicode="&#xe01a;" d="M 183.931,20.49c 3.83-4.127, 3.604-10.66-0.512-14.5l-22.241-20.797c-4.116-3.84-10.619-3.615-14.449,0.522L 17.203,125.307
180
- c-3.83,4.127-3.594,10.65, 0.522,14.5l 22.272,20.767c 4.116,3.85, 10.619,3.615, 14.449-0.522L 183.931,20.49zM 349.204,283.146c 3.83-4.127, 3.594-10.66-0.522-14.5L 208.701,137.882c-4.116-3.84-10.619-3.615-14.449,0.522l-33.413,36.055
181
- c-3.83,4.127-3.594,10.66, 0.522,14.5l 139.95,130.765c 4.106,3.84, 10.609,3.615, 14.438-0.522L 349.204,283.146zM 231.557,65.004c 3.83-4.127, 3.594-10.65-0.522-14.5l-22.272-20.787c-4.116-3.85-10.619-3.615-14.449,0.522L 64.86,169.83
182
- c-3.83,4.127-3.604,10.66, 0.512,14.5l 22.231,20.777c 4.116,3.84, 10.619,3.615, 14.449-0.522L 231.557,65.004zM 447.242,278.139c 3.83-4.127, 3.594-10.66-0.532-14.5l-22.262-20.787c-4.116-3.84-10.619-3.615-14.459,0.512L 280.515,382.925
183
- c-3.84,4.127-3.604,10.65, 0.512,14.5l 22.323,20.838c 4.106,3.84, 10.609,3.615, 14.438-0.522L 447.242,278.139zM 494.797,322.58c 3.83-4.127, 3.594-10.66-0.522-14.51l-22.221-20.777c-4.106-3.85-10.609-3.615-14.438,0.512L 328.161,427.428
184
- c-3.83,4.127-3.604,10.66, 0.512,14.51l 22.241,20.818c 4.106,3.85, 10.598,3.625, 14.428-0.512L 494.797,322.58z" data-tags="gym" />
185
- <glyph unicode="&#xe01b;" d="M 409.6,49.92A40.96,40.96 180 1 1 491.52,49.920000000000016A40.96,40.96 180 1 1 409.6,49.920000000000016zM 112.64,49.92A40.96,40.96 180 1 1 194.56,49.920000000000016A40.96,40.96 180 1 1 112.64,49.920000000000016zM 481.28,142.080L 161.495,142.080 l 6.83,11.080c 2.929,4.751, 3.789,10.496, 2.386,15.903l-6.666,25.661l 296.786,15.421C 472.084,210.719, 481.28,220.416, 481.28,231.68
186
- L 481.28,367.36 c0,11.264-9.216,20.48-20.48,20.48L 113.859,387.84 l-4.004,15.391C 107.51,412.262, 99.359,418.56, 90.030,418.56L 20.48,418.56 C 9.175,418.56,0,409.385,0,398.080s 9.175-20.48, 20.48-20.48l 53.719,0 l 54.682-210.381
187
- l-21.504-34.867c-3.891-6.318-4.065-14.254-0.44-20.726C 110.541,105.144, 117.381,101.12, 124.805,101.12L 481.28,101.12 c 11.305,0, 20.48,9.175, 20.48,20.48S 492.585,142.080, 481.28,142.080z" data-tags="grocery_or_supermarket" />
188
- <glyph unicode="&#xe01c;" d="M 363.356,326.052c-2.54,0-4.956,1.71-4.956,4.209l0,63.283 C 358.4,396.042, 357.028,398.080, 354.478,398.080L 157.512,398.080 C 154.962,398.080, 153.6,396.042, 153.6,393.544
189
- l0-63.283 C 153.6,327.762, 150.845,326.4, 148.285,326.4L 14.838,326.4 C 12.319,326.4, 10.24,323.666, 10.24,321.198l0-70.349 C 10.24,248.371, 12.319,244.48, 14.838,244.48l 214.897,0
190
- C 232.284,244.48, 235.52,248.371, 235.52,250.849l0,15.002 C 235.52,268.349, 236.462,275.2, 239.002,275.2l 34.007,0 C 275.548,275.2, 276.48,268.349, 276.48,265.851l0-15.002
191
- C 276.48,248.371, 279.716,244.48, 282.245,244.48l 214.886,0 C 499.692,244.48, 501.76,248.371, 501.76,250.849l0,70.349 C 501.76,323.676, 499.692,326.4, 497.142,326.4L 363.704,326.4 L 363.356,326.052z
192
- M 185.272,326.4C 182.733,326.4, 184.32,327.762, 184.32,330.25l0,35.973 C 184.32,368.732, 182.733,367.36, 185.272,367.36l 141.455,0 C 329.267,367.36, 327.68,368.732, 327.68,366.223l0-35.973
193
- C 327.68,327.762, 329.267,326.4, 326.728,326.4L 185.272,326.4 zM 277.043,175.749c0-2.478-1.495-2.949-4.035-2.949L 239.002,172.8 C 236.462,172.8, 235.52,171.704, 235.52,174.182l0,50.565
194
- C 235.52,227.226, 232.284,234.24, 229.745,234.24L 14.838,234.24 C 12.319,234.24, 10.24,227.226, 10.24,224.748l0-149.801 C 10.24,72.458, 12.319,70.4, 14.838,70.4l 482.304,0
195
- C 499.692,70.4, 501.76,72.458, 501.76,74.936L 501.76,224.748 C 501.76,227.226, 499.692,234.24, 497.142,234.24L 282.245,234.24 C 279.716,234.24, 276.48,227.226, 276.48,224.748l0-50.565 L 277.043,175.749z
196
- " data-tags="general_contractor" />
197
- <glyph unicode="&#xe01d;" d="M 402.964,305.92L 106.496,305.92 C 53.555,305.92, 10.24,268.646, 10.24,218.88c0-49.766, 43.315-87.040, 96.256-87.040l 296.468,0 c 52.92,0, 96.236,37.284, 96.236,87.040
198
- C 499.2,268.646, 455.885,305.92, 402.964,305.92z M 402.995,152.32L 256,152.32 L 256,285.44 l 146.995,0 c 39.035,0, 71.004-29.85, 71.004-66.56S 442.040,152.32, 402.995,152.32z" data-tags="pharmacy" />
199
- <glyph unicode="&#xe01e;" d="M 317.44,223.98c-33.884,0-61.399-27.494-61.399-61.42c0-33.956, 27.525-61.44, 61.399-61.44c 33.894,0, 61.42,27.484, 61.42,61.44
200
- C 378.86,196.475, 351.334,223.98, 317.44,223.98zM 440.33,346.911L 389.734,448.973C 385.649,461.076, 374.19,469.76, 360.663,469.76l-84.388,0 c-13.763,0-25.242-8.929-29.225-21.248L 194.632,346.88L 71.67,346.88
201
- C 37.796,346.88, 10.24,319.355, 10.24,285.43L 10.24-21.76 l 491.52,0 L 501.76,285.43 C 501.76,319.355, 474.225,346.911, 440.33,346.911z M 102.4,223.98c-16.998,0-30.73,13.742-30.73,30.7
202
- c0,17.019, 13.742,30.751, 30.73,30.751s 30.71-13.732, 30.71-30.751C 133.11,237.722, 119.398,223.98, 102.4,223.98z M 317.44,39.619
203
- c-67.84,0-122.89,55.060-122.89,122.941c0,67.85, 55.040,122.87, 122.89,122.87c 67.85,0, 122.89-55.009, 122.89-122.87
204
- C 440.33,94.679, 385.29,39.619, 317.44,39.619z" data-tags="point_of_interest" />
205
- <glyph unicode="&#xe01f;" d="M 126.29,254.72L 153.6,254.72 l0-163.84 l 40.96,0 L 194.56,234.24 l 40.96,0 l0-143.36 l 40.96,0 L 276.48,234.24 l 40.96,0 l0-143.36 l 40.96,0 L 358.4,254.72 l 27.3,0 C 393.236,254.72, 399.36,262.257, 399.36,269.046c0,4.106-2.263,8.735-5.683,10.967
206
- l 0.020,0.532l-0.215,0.379c-0.123,0.072, 1.475,0.266, 1.372,0.338L 266.24,347.505l0,19.374 c 20.48-10.844, 40.458,7.834, 71.68-3.4L 337.92,406.272
207
- c-31.242,11.223-51.2-7.444-71.68,3.4L 266.24,412.416 C 266.24,415.805, 259.779,418.56, 256,418.56s-10.24-2.755-10.24-6.144l0-64.911 l-128.604-66.109
208
- c-0.123-0.061, 2.898-0.133, 2.775-0.215L 122.88,281.068l0-0.020 c-10.24-2.232-7.946-7.885-7.946-11.991C 114.924,262.257, 118.753,254.72, 126.29,254.72zM 143.36,80.64L 112.64,49.92L 399.36,49.92L 368.64,80.64 zM 368.64,244.48l0-153.6 l 9.062,0 l 4.004-5.663l 27.3-25.59L 418.662,49.92L 501.76,49.92 L 501.76,244.48 L 368.64,244.48 z M 430.080,121.6l-30.72,0 l0,30.72 l 30.72,0 L 430.080,121.6 z M 430.080,183.040l-30.72,0 l0,30.72 l 30.72,0 L 430.080,183.040 z M 471.040,121.6l-20.48,0 l0,30.72 l 20.48,0 L 471.040,121.6 z
209
- M 471.040,183.040l-20.48,0 l0,30.72 l 20.48,0 L 471.040,183.040 zM 134.287,90.88L 143.36,90.88 L 143.36,244.48 L 10.24,244.48 l0-194.56 l 83.087,0 l 9.646,8.684l 27.31,26.624L 134.287,90.88z M 61.44,121.6L 40.96,121.6 l0,30.72 l 20.48,0 L 61.44,121.6 L 61.44,121.6z M 61.44,183.040L 40.96,183.040 l0,30.72 l 20.48,0 L 61.44,183.040 L 61.44,183.040z M 112.64,121.6L 81.92,121.6 l0,30.72 l 30.72,0
210
- L 112.64,121.6 z M 112.64,183.040L 81.92,183.040 l0,30.72 l 30.72,0 L 112.64,183.040 z" data-tags="political" />
211
- <glyph unicode="&#xe020;" d="M 296.95,433.736C 222.218,433.736, 163.84,374.559, 163.84,301.548l0-211.005 L 163.84-11.52 l 51.2,0 L 215.040,90.88 l 163.84,0 l0-102.4 l 51.2,0 l0,102.062 L 430.080,301.548 C 430.080,374.559, 371.712,433.736, 296.95,433.736z
212
- M 40.96,459.52l 75.407-122.88l 7.864,0 C 129.004,387.84, 163.84,429.865, 215.040,448.84L 215.040,459.52 L 40.96,459.52 z" data-tags="post_box" />
213
- <glyph unicode="&#xe021;" d="M 501.76,305.92c0,5.632-4.608,10.24-10.24,10.24L 358.4,316.16 c-5.632,0-10.24,4.608-10.24,10.24L 348.16,459.52 c0,5.632-4.608,10.24-10.24,10.24L 174.080,469.76 c-5.632,0-10.24-4.608-10.24-10.24l0-133.12 c0-5.632-4.608-10.24-10.24-10.24L 20.48,316.16
214
- c-5.632,0-10.24-4.608-10.24-10.24l0-163.84 c0-5.632, 4.608-10.24, 10.24-10.24l 133.12,0 c 5.632,0, 10.24-4.608, 10.24-10.24l0-133.12 c0-5.632, 4.608-10.24, 10.24-10.24l 163.84,0 c 5.632,0, 10.24,4.608, 10.24,10.24L 348.16,121.6 c0,5.632, 4.608,10.24, 10.24,10.24l 133.12,0
215
- c 5.632,0, 10.24,4.608, 10.24,10.24L 501.76,305.92 z" data-tags="health" />
216
- <glyph unicode="&#xe022;" d="M 30.116,398.080c-30.116,0-15.053-7.977,0-20.214L 256,205.947l 225.884,171.387c 15.073,12.237, 30.116,20.746,0,20.746
217
- L 240.937,398.080 L 30.116,398.080 z M0,357.673l0-253.215 c0-14.899, 15.237-34.058, 27.29-34.058l 457.421,0 c 12.063,0, 27.29,19.159, 27.29,34.058l0,253.215 l-256-195.328
218
- L0,357.673z" data-tags="post_office" />
219
- <glyph unicode="&#xe023;" d="M 112.64,60.16c0-5.632, 4.608-10.24, 10.24-10.24l 348.16,0 c 5.632,0, 10.24,4.608, 10.24,10.24L 481.28,357.12 c0,5.632-4.608,10.24-10.24,10.24L 122.88,367.36 c-5.632,0-10.24-4.608-10.24-10.24L 112.64,60.16 z M 289.751,319.939
220
- c 4.28,3.666, 11.254,3.625, 15.493-0.072l 113.787-99.369C 423.27,216.791, 422.134,213.76, 416.502,213.76L 409.6,213.76 c-5.632,0-10.24-4.608-10.24-10.24l0-112.64
221
- c0-5.632-4.608-10.24-10.24-10.24l-51.2,0 c-5.632,0-10.24,4.608-10.24,10.24l0,81.92 c0,5.632-4.608,10.24-10.24,10.24l-40.96,0 c-5.632,0-10.24-4.608-10.24-10.24l0-81.92 c0-5.632-4.608-10.24-10.24-10.24l-51.2,0 c-5.632,0-10.24,4.608-10.24,10.24
222
- L 194.56,203.52 c0,5.632-4.608,10.24-10.24,10.24l-8.417,0 c-5.632,0-6.738,2.99-2.458,6.656L 289.751,319.939zM 102.4,418.56C 96.768,418.56, 92.16,423.168, 92.16,428.8L 92.16,459.52 c0,5.632-4.608,10.24-10.24,10.24L 40.96,469.76 C 35.328,469.76, 30.72,465.152, 30.72,459.52l0-471.040 c0-5.632, 4.608-10.24, 10.24-10.24l 40.96,0 c 5.632,0, 10.24,4.608, 10.24,10.24L 92.16,377.6
223
- c0,5.632, 4.608,10.24, 10.24,10.24l 368.64,0 c 5.632,0, 10.24,4.608, 10.24,10.24L 481.28,408.32 c0,5.632-4.608,10.24-10.24,10.24L 102.4,418.56 z" data-tags="real_estate_agency copy" />
224
- <glyph unicode="&#xe024;" d="M 281.692,381.911c 6.195-5.673, 12.063-11.028, 16.466-17.756l 2.447-3.738l 4.045,1.925c 11.244,5.376, 18.913,13.978, 26.327,22.292
225
- c 5.591,6.267, 10.875,12.196, 17.5,16.65l 4.116,2.775l-2.652,4.209c-11.54,18.309-26.593,33.546-44.728,45.302l-3.799,2.468l-2.908-3.482
226
- c-11.407-13.67-24.033-26.45-37.519-37.98l-2.959-2.54l 1.659-3.533C 265.011,397.169, 273.49,389.417, 281.692,381.911zM 347.546,304.425c 38.492,0, 70.011,15.729, 88.75,44.298l 2.232,3.4l-2.796,2.949c-3.256,3.42-6.369,6.994-9.482,10.568
227
- c-9.288,10.66-18.903,21.678-32.44,28.989l-4.721,2.55L 386.765,392.325c-15.831-32.973-46.479-39.895-69.396-39.895
228
- c-40.172,0-88.453,22.415-109.916,51.046l-16.896,22.538l 7.895-27.044C 213.125,348.6, 282.808,304.425, 347.546,304.425zM 214.712,216.023c 15.995,30.433, 16.66,66.068, 1.69,98.376c-14.766,31.887-42.097,54.364-73.093,60.16
229
- c-6.564,1.229-13.036,1.833-19.241,1.833c-37.642,0-62.28-21.975-86.098-43.213c-8.673-7.731-16.865-15.084-25.61-21.32l-6.113-4.465
230
- l 6.287-4.311c 2.007-1.3, 7.055-8.97, 11.121-14.807C 36.557,269.742, 47.309,254.72, 58.737,254.72c0,0, 0.010,0, 0.010,0
231
- c 4.024,0, 7.782,4.772, 20.879,19.497c 5.519,6.195, 11.766,14.070, 15.114,16.722c 14.971,11.889, 35.492,28.17, 57.907,28.17
232
- c 3.021,0, 6.062-0.297, 9.021-0.891c 10.373-2.079, 16.64-6.881, 19.149-14.694c 5.14-16.005-6.666-40.54-16.794-51.374
233
- c-5.11-5.478-10.701-9.421-16.63-13.599c-8.499-5.99-17.285-12.196-24.545-23.101l-2.355-3.543l 3.062-2.97
234
- c 4.424-4.28, 8.817-8.581, 13.21-12.882c 11.366-11.131, 23.122-22.641, 35.185-33.516l 4.045-3.645l 3.4,4.26
235
- c 7.649,9.595, 15.718,19.804, 23.634,30.239c 2.13-3.164, 4.393-6.4, 6.717-9.718c 17.459-24.965, 37.253-53.258, 24.34-90.235
236
- c-9.615-27.556-42.086-45.496-78.664-42.865c-43.254,3.031-81.756,39.956-117.729,112.886c-2.243,4.557-4.086,9.667-5.868,14.612
237
- c-4.168,11.571-8.489,23.532-18.545,30.966l-10.086,7.455l 1.987-12.38c 10.557-65.864, 41.503-129.423, 82.79-170.025
238
- c 24.975-24.596, 65.956-40.489, 104.397-40.489c 44.411,0, 91.996,23.081, 92.324,87.859c 0.287,60.672-37.181,100.076-67.297,131.738L 214.712,216.023zM 494.971,271.657c-11.93,22.19-56.781,38.369-79.278,33.444c-34.079-7.434-57.969-26.716-79.053-43.735
239
- c-21.576-17.428-40.223-32.471-65.106-32.471c-7.475,0-15.124,1.331-23.378,4.055l-13.107,4.332l 7.107-11.827
240
- c 16.323-27.167, 35.379-40.376, 58.255-40.376c 18.586,0.010, 37.612,8.919, 56.463,20.46l 4.229-12.534c 9.574-28.355, 51.251-70.41, 89.19-70.41
241
- c 0.758,0, 1.516,0.020, 2.273,0.061c 16.558,0.737, 30.382,10.066, 39.987,27.003C 512.236,184.34, 510.013,243.722, 494.971,271.657z M 382.935,222.648
242
- c 27.976,19.016, 57.364,38.543, 81.439,34.294c 10.476-18.207, 6.195-33.884, 0.625-43.96c-10.629-19.18-33.915-32.584-56.648-32.584
243
- c-10.711,0-26.081,3.052-38.492,17.572l-8.735,10.209C 368.425,212.797, 375.706,217.743, 382.935,222.648z" data-tags="hindu_temple" />
244
- <glyph unicode="&#xe025;" d="M 225.28,460.216L 225.28,346.88 l-20.48,0 L 204.8,459.52 c0,5.652-4.588,10.24-10.24,10.24s-10.24-4.588-10.24-10.24l0-112.64 l-20.48,0 L 163.84,459.889 c0,13.179-20.48,12.728-20.48,0.338L 143.36,346.88 l-20.48,0 L 122.88,459.418
245
- c0,13.957-20.48,13.445-20.48,0.553l0-148.193 c0-21.371, 20.48-35.461, 40.96-35.461L 143.36,8.96 c0-40.96, 61.44-40.96, 61.44,0L 204.8,276.306 c 20.48,0, 40.96,17.019, 40.96,33.044L 245.76,459.889
246
- C 245.76,472.945, 225.28,472.443, 225.28,460.216zM 317.44,428.8l0-256 l 20.48,0 l0-163.84 c0-40.96, 71.68-40.96, 71.68,0L 409.6,428.8 C 409.6,480, 317.44,480, 317.44,428.8z" data-tags="restaurant" />
247
- <glyph unicode="&#xe026;" d="M 337.029,152.32l-60.508,166.267c-0.225,0.522-0.348,1.106-0.348,1.71c0,2.427, 2.038,4.393, 4.577,4.393
248
- c 2.161,0, 3.973-1.444, 4.454-3.369L 326.339,213.76c 2.734-6.154, 13.978-10.24, 21.371-10.24c 9.882,0, 10.906,19.405, 10.691,20.48l-41.134,106.056
249
- C 313.692,353.823, 289.69,377.6, 262.298,377.6L 208.691,377.6 c-27.392,0-53.176-23.777-56.75-47.544L 112.65,224c-0.891-2.038,0-20.48, 10.68-20.48
250
- c 8.305,0, 19.354,2.898, 21.371,10.24l 39.68,108.022c 0.635,1.7, 2.335,2.908, 4.311,2.908c 2.529,0, 4.567-1.966, 4.567-4.383
251
- c0-0.553-0.092-1.085-0.287-1.567L 134.021,152.32c-0.113-0.492,0-9.738,0-10.24c0-3.543, 8.55-10.24, 12.268-10.24L 184.32,131.84 l0-134.093
252
- C 184.32-12.902, 193.7-21.76, 204.8-21.76c 11.1,0, 20.48,8.868, 20.48,19.507L 225.28,131.932 c0,2.898, 20.48,2.806, 20.48-0.092l0-133.12 c0-10.65, 9.39-20.48, 20.48-20.48c 11.121,0, 20.48,9.841, 20.48,20.48L 286.72,131.84
253
- l 39.619,0 c 3.707,0, 10.691,6.697, 10.691,10.24C 337.029,142.899, 337.326,151.613, 337.029,152.32zM 192,432.64A42.24,42.24 180 1 1 276.48,432.64A42.24,42.24 180 1 1 192,432.64z" data-tags="female" />
254
- <glyph unicode="&#xe027;" d="M 184.32-1.28c0-12.626, 7.864-20.48, 20.48-20.48c 12.646,0, 20.48,7.854, 20.48,20.48L 225.28,193.28 l 20.48,0 l0-194.56 c0-12.605, 7.854-20.48, 20.48-20.48c 12.626,0, 20.48,7.854, 20.48,20.48L 286.72,326.4 l 10.24,0 l0-120.975
255
- c0-24.525, 30.781-24.525, 30.72,0L 327.68,329.871 C 327.68,356.966, 308.163,377.6, 276.48,377.6l-81.92,0 c-28.877,0-51.2-17.603-51.2-46.971L 143.36,203.52 c0-20.48, 30.72-20.48, 30.72,0L 174.080,326.4 l 10.24,0 L 184.32-1.28 zM 192,432.64A42.24,42.24 180 1 1 276.48,432.64A42.24,42.24 180 1 1 192,432.64z" data-tags="male" />
256
- <glyph unicode="&#xe028;" d="M 470.303,183.562l-1.116,3.011c-3.502,9.441-7.834,21.176-18.934,27.822c-7.731,4.628-16.722,6.236-24.648,7.649
257
- c-4.076,0.727-7.936,1.434-11.244,2.437c-0.973,0.287-1.935,0.655-2.908,1.024c-0.154,0.051-0.307,0.092-0.461,0.154
258
- c-31.826,25.559-96.266,26.255-136.407,62.403C 217.057,339.835, 170.885,391.895, 118.958,469.76L 54.077,417.843c-4.506-3.604-13.107-6.492-13.107-19.466
259
- c0-6.482, 6.595-7.475, 14.367-5.069l 36.598,11.561L 194.56,262.083c0-25.958,0-53.688,0-77.885c0-18.022-0.297-34.427, 14.991-43.745L 171.008-21.76l 25.958,0
260
- l 24.392,77.025L 245.76,93.358l0-38.943 L 245.76-21.76 l 30.72,0 L 276.48,106.322 c0,0-0.358,25.958, 25.6,25.958s 25.6-25.958, 25.6-25.958l0-90.839 L 327.68-21.76 l 20.48,0 L 348.16,80.64 l 56.484-102.4l 25.958,0
261
- C 417.618,19.2, 399.36,15.483, 399.36,54.415l0,25.958 c0,27.218, 30.72,51.917, 30.72,77.875l0,25.938 c0,6.164-0.799,11.622-2.202,16.558
262
- c 4.526-0.922, 8.684-2.038, 11.848-3.942c 4.905-2.939, 7.619-10.271, 10.24-17.357l 1.188-3.195c 2.017-5.274, 7.926-7.926, 13.21-5.919l 0.010,0.010
263
- C 469.668,172.37, 472.32,178.278, 470.303,183.562z" data-tags="zoo" />
264
- <glyph unicode="&#xe029;" d="M 189.235,286.72c 23.859,4.055, 41.554,25.784, 44.247,51.743c 2.734,26.399, 8.899,132.485-30.925,125.737
265
- C 99.256,446.679, 106.506,272.691, 189.235,286.72zM 325.151,286.72c 82.708-14.029, 89.958,159.959-13.343,177.49c-39.813,6.748-33.659-99.338-30.935-125.737
266
- C 283.576,312.504, 301.292,290.775, 325.151,286.72zM 146.801,204.749c0,13.804-4.925,26.317-12.861,35.42c-13.056,17.060-54.559,51.558-64.748,42.721C 47.923,264.397, 48.609,218.88, 61.42,185.805
267
- c 6.584-18.391, 22.487-31.324, 41.073-31.324C 126.956,154.481, 146.801,176.988, 146.801,204.749zM 445.164,282.89c-10.168,8.837-51.671-25.661-64.727-42.721c-7.936-9.103-12.872-21.617-12.872-35.42
268
- c0-27.761, 19.866-50.268, 44.308-50.268c 18.596,0, 34.509,12.933, 41.093,31.324C 465.746,218.88, 466.452,264.397, 445.164,282.89zM 361.851,126.454c-37.642,18.77-36.475,54.917-45.036,87.9c-6.81,26.307-30.925,45.763-59.628,45.763
269
- c-28.088,0-51.784-18.647-59.177-44.155c-9.165-31.56-3.645-68.301-44.677-89.262c-33.331-10.865-46.828-26.716-46.828-64.205
270
- c0-30.454, 26.143-63.058, 59.884-67.113c 37.642-5.673, 67.011,1.741, 90.798,15.299c 23.788-13.558, 53.135-20.961, 90.839-15.299
271
- c 33.72,4.055, 59.873,36.536, 59.873,67.113C 407.89,100.803, 395.254,115.077, 361.851,126.454z M 317.44,80.64l-39.025,0 l 0.051-40.96l-42.557,0 l 0.061,40.96L 194.56,80.64 l0,40.96
272
- l 41.421,0 l-0.061,40.96l 42.557,0 l-0.051-40.96L 317.44,121.6 L 317.44,80.64 z" data-tags="veterinary_care" />
273
- <glyph unicode="&#xe02a;" d="M 219.484,401.265L 194.56,367.36l-58.204,0 c 7.178-20.48, 30.679-39.793, 63.498-33.382c 9.728,0.655, 42.547,5.868, 56.146,2.662
274
- c 18.104-4.342, 10.557-4.362, 43.018-30.413L 460.8,172.8c 9.912-8.755, 22.589-5.171, 31.365,4.721C 500.941,187.433, 501.432,205.005, 491.52,213.76L 286.72,377.6
275
- c-12.82,10.291-16.056,24.545-20.48,40.96c-8.602,28.211-40.233,50.842-71.281,50.842C 169.943,469.402, 143.022,447.764, 133.12,428.8l 61.44,0 L 219.484,401.265zM 359.977,152.32L 359.977,152.32l-63.304,109.875C 294.175,266.752, 287.857,275.2, 282.665,275.2L 106.455,275.2 c-5.192,0-11.51-8.448-14.019-13.005L 30.72,152.32L 29.143,152.32
276
- C 18.749,152.32, 10.24,148.541, 10.24,138.138l0-94.515 C 10.24,33.219, 18.749,29.44, 29.143,29.44L 51.2,29.44 l0-33.075 C 51.2-19.241, 60.805-32, 76.401-32l 9.452,0
277
- C 101.458-32, 112.64-19.241, 112.64-3.635L 112.64,29.44 l 163.84,0 l0-33.075 c0-15.596, 11.182-28.365, 26.778-28.365l 9.452,0 C 328.315-32, 337.92-19.241, 337.92-3.635L 337.92,29.44 l 22.057,0
278
- C 370.371,29.44, 378.88,33.219, 378.88,43.622l0,94.515 C 378.88,148.541, 370.371,152.32, 359.977,152.32z M 62.228,81.428c-13.056,0-23.634,10.578-23.634,23.634
279
- s 10.578,23.634, 23.634,23.634c 13.046,0, 23.634-10.578, 23.634-23.634S 75.284,81.428, 62.228,81.428z M 81.132,152.32l 38.308,80.159
280
- C 121.764,237.128, 127.928,244.48, 133.12,244.48l 122.88,0 c 5.192,0, 11.346-7.352, 13.681-12.001L 307.988,152.32L 81.132,152.32 z M 326.892,81.428
281
- c-13.046,0-23.634,10.578-23.634,23.634s 10.578,23.634, 23.634,23.634s 23.634-10.578, 23.634-23.634S 339.937,81.428, 326.892,81.428zM-163.84,469.76L-163.84,469.76L-163.84,469.76L-163.84,469.76z" data-tags="car_repair" />
282
- <glyph unicode="&#xe02b;" d="M 255.99,199.619c-55.357,0-102.39-16.097-133.11-41.329L 122.88,111.36 l 266.24,0 l0,46.93 C 358.4,183.521, 311.357,199.619, 255.99,199.619zM 500.429,223.703L 255.345,336.64L 10.363,223.703L 51.2,205.015l0-28.744 c-10.24-2.12-10.271-7.485-10.271-13.865c0-3.768, 1.249-8.182, 3.625-10.824
283
- L 30.546,121.6l 49.971,0 l-13.885,30.003c 2.335,2.642, 4.25,6.533, 4.25,10.301C 70.881,168.274, 61.44,174.162, 61.44,176.282l0,23.931 l 51.2-22.999L 112.64,179.251
284
- c 30.72,26.716, 84.695,43.674, 143.34,43.674C 314.644,222.925, 368.64,205.967, 399.36,179.251l0-2.038 L 500.429,223.703z" data-tags="university" />
285
- <glyph unicode="&#xe02c;" d="M 471.040,336.64L 348.16,336.64 l0,40.714 C 348.16,406.548, 329.308,439.040, 300.145,439.040l-98.222,0 C 172.728,439.040, 153.6,406.548, 153.6,377.354L 153.6,336.64 L 40.96,336.64 c-11.264,0-20.48-9.216-20.48-20.48l0-296.96 c0-11.264, 9.216-20.48, 20.48-20.48
286
- l 430.080,0 c 11.264,0, 20.48,9.216, 20.48,20.48L 491.52,316.16 C 491.52,327.424, 482.304,336.64, 471.040,336.64z M 307.2,29.44L 194.56,29.44 l0,10.926 c0,0.236, 6.277,0.543, 9.277,0.901s 5.632,0.963, 7.793,1.802
287
- c 3.84,1.444, 8.141,3.512, 9.708,6.205S 225.28,55.552, 225.28,59.986l0,104.755 c0,4.198-2.54,7.895-4.465,11.069s-5.11,5.734-7.987,7.649
288
- c-2.161,1.444-3.676,2.816-8.059,4.137S 194.56,189.768, 194.56,190.126l0,13.138 l 83.712,4.68L 276.48,205.251l0-142.92 c0-4.198, 3.236-7.772, 5.038-10.711
289
- s 5.55-5.13, 8.909-6.574c 2.396-1.075, 4.966-2.038, 7.854-2.877S 307.2,40.735, 307.2,40.366L 307.2,29.44 z M 211.139,272.753
290
- c0,9.124, 3.512,16.916, 10.527,23.398s 15.391,9.718, 25.108,9.718s 18.063-3.236, 25.016-9.718s 10.445-14.285, 10.445-23.398s-3.512-16.886-10.527-23.306
291
- s-15.329-9.626-24.934-9.626c-9.718,0-18.094,3.205-25.108,9.626S 211.139,263.629, 211.139,272.753z M 317.44,336.64L 184.32,336.64 l0,40.714 C 184.32,388.28, 195.379,408.32, 206.305,408.32
292
- l 82.452,0 C 299.663,408.32, 317.44,388.28, 317.44,377.354L 317.44,336.64 z" data-tags="travel_agency" />
293
- <glyph unicode="&#xe02d;" d="M 212.132,234.24L 32.348,234.24 c-5.243,0-9.554,3.215-9.554,8.346c0,0.85, 0.154,1.178, 0.328,1.946l 9.574,61.501
294
- C 33.495,310.374, 37.396,305.92, 42.086,305.92l 160.328,0 c 4.649,0, 8.581,4.219, 9.37-0.123l 9.585-65.526c 0.154-0.788, 0.338,1.27, 0.338,0.389
295
- C 221.706,235.571, 217.364,234.24, 212.132,234.24z M 204.933,156.733c-10.107,0-18.34,7.997-18.34,17.92c0,9.871, 8.223,17.818, 18.34,17.818
296
- c 10.056,0, 18.278-7.946, 18.278-17.818C 223.212,164.731, 214.999,156.733, 204.933,156.733z M 39.281,156.733c-10.025,0-18.248,7.997-18.248,17.92
297
- c0,9.871, 8.212,17.818, 18.248,17.818c 10.168,0, 18.371-7.946, 18.371-17.818C 57.651,164.731, 49.449,156.733, 39.281,156.733z M 61.44,357.12l 112.64,0 l0-30.72 L 61.44,326.4
298
- C 51.2,326.4, 51.2,357.12, 61.44,357.12z M 232.428,329.441c-3.267,15.79-14.459,22.139-30.095,28.498c-15.606,6.339-52.562,13.926-79.749,13.926
299
- c-27.3,0-64.051-7.598-79.657-13.926c-15.616-6.359-26.982-12.708-30.249-28.498L0,241.521L0,121.6 l 18.278,0 l0,0c0-51.2, 34.417-51.2, 34.417,0l0,0l 137.636,0 l0,0
300
- c0-51.2, 34.406-51.2, 34.406,0l0,0L 245.76,121.6 L 245.76,241.521 L 232.428,329.441zM-163.84,469.76L-163.84,469.76L-163.84,469.76L-163.84,469.76zM 458.332,120.637c0,0.256-0.276,0.666-0.819,1.485c0,0.236, 0.154,0.41, 0.41,0.563c 0.246,0.154, 0.41,0.276, 0.41,0.563
301
- c 7.66,3.164, 14.633,7.066, 20.869,11.684c 6.216,4.669, 9.503,11.469, 11.663,20.47C 491.080,156.447, 491.52,158.884, 491.52,162.601L 491.52,348.713
302
- c0,4.495-0.44,9.155-3.082,13.885c-2.662,4.823-5.519,9.134-9.523,12.964c-3.963,3.789-9.697,7.014-14.633,9.554
303
- C 460.012,387.308, 450.56,388.475, 450.56,388.751L 450.56,387.84 l 1.382,0 L 318.74,387.84 L 317.44,387.84 L 317.44,388.577 c-10.24-0.471-7.741-1.536-11.284-3.256c-4.915-2.396-10.025-5.448-14.121-9.165
304
- c-4.096-3.686-8.202-7.875-10.854-12.493C 278.528,358.963, 276.48,354.427, 276.48,349.88l0-188.887 c0-3.174, 1.26-6.492, 2.796-9.943
305
- c 1.618-3.451, 3.809-6.676, 6.185-9.697c 2.376-3.113, 5.1-5.888, 7.895-8.387c 2.775-2.509, 5.55-4.577, 8.212-6.164
306
- c 1.28-0.543, 3.656-1.362, 7.004-2.417c 3.256-1.055, 4.813-1.638, 4.567-2.161L 258.642,39.68l 31.805,0 l 39.793,61.44l 109.793,0 l 39.752-61.44L 512,39.68 L 458.332,120.637z
307
- M 366.152,377.6l 36.465,0 c 8.018,0, 14.592-2.212, 14.592-10.24c0-8.018-6.574-10.24-14.592-10.24l-36.465,0 c-8.028,0-14.592,2.222-14.592,10.24
308
- C 351.56,375.388, 358.124,377.6, 366.152,377.6z M 460.8,283.894C 460.8,267.776, 447.744,254.72, 431.626,254.72L 326.134,254.72 C 310.016,254.72, 296.96,267.776, 296.96,283.894l0,23.583
309
- C 296.96,323.584, 310.016,336.64, 326.134,336.64l 105.503,0 C 447.744,336.64, 460.8,323.584, 460.8,307.466L 460.8,283.894 z M 339.21,154.225c-4.106-4.239-9.247-6.349-15.309-6.349
310
- c-6.113,0-11.090,2.109-14.961,6.349c-3.83,4.229-5.755,9.441-5.755,15.544c0,5.56, 1.997,10.394, 5.99,14.49
311
- c 3.963,4.116, 8.878,6.195, 14.725,6.195c 6.062,0, 11.203-1.966, 15.309-5.755c 4.106-3.891, 6.164-8.94, 6.164-15.36
312
- C 345.375,163.502, 343.316,158.454, 339.21,154.225z M 430.295,154.225c-4.106,4.229-6.185,9.441-6.185,15.544c0,6.113, 2.181,11.049, 6.574,14.94
313
- c 4.393,3.779, 9.492,5.755, 15.34,5.755c 6.052,0, 11.049-2.079, 14.899-6.195c 3.83-4.096, 5.775-8.929, 5.775-14.49
314
- c0-6.103-2.007-11.305-5.98-15.544c-4.004-4.239-9.021-6.349-15.145-6.349C 439.491,147.866, 434.391,149.975, 430.295,154.225z" data-tags="transit_station" />
315
- <glyph unicode="&#xe02e;" d="M 356.157,411.761L 284.979,411.761 c-12.861-0.041-12.38-19.21,0-19.098l 71.178,0 l0-9.8 L 284.979,382.863 c-12.79,0.113-12.319-19.046,0-19.098l 71.178,0 l0-9.544
316
- l0-0.471 L 284.979,353.751 c-12.79,0-12.319-19.149,0-19.098l 71.178,0 l0-9.544 L 284.979,325.11 c-12.524-0.092-12.319-19.261,0-19.323l 71.178,0 l0-9.564 L 284.979,296.223
317
- c-12.524,0.041-12.575-19.098,0-19.098l 71.178,0 l0-9.544 L 284.979,267.581 c-12.524-0.041-12.575-19.2,0-19.108l 71.178,0 l0-9.779 L 284.979,238.694
318
- c-12.524,0.113-12.575-19.026,0-19.098l 71.178,0 l0-9.523 L 284.979,210.074 c-12.524,0.010-12.319-19.169,0-19.108l 71.178,0 l0-185.948
319
- c 0.041-28.334, 43.080-27.822, 43.203,0L 399.36,440.166 c-0.123,12.943-10.752,29.307-28.242,29.358L 284.979,469.524 c-12.861-0.010-12.38-19.18,0-19.098l 71.178-0.236
320
- l0-9.523 L 284.979,440.668 c-12.841,0.061-12.36-19.098,0-19.108l 71.178,0 L 356.157,411.761 L 356.157,411.761zM 280.084,82.094C 280.044,115.169, 245.76,150.743, 204.8,127.703L 204.8,254.208 L 178.309,462.848C 177.756,468.367, 173.076,469.668, 169.933,469.76
321
- c-3.246-0.092-9.748-1.393-10.455-6.912L 133.12,254.208l0-126.505 c-40.96,23.040-74.138-12.759-74.148-45.353c 0.010-29, 22.333-52.818, 52.541-52.746
322
- c 30.433-0.072, 52.326,26.624, 52.326,52.746L 163.84,213.76 l 10.24,0 l0-131.41 c0-29.245, 22.651-50.893, 47.821-52.265c-0.42-16.036, 4.813-38.912, 14.664-47.985
323
- c 11.551-10.65, 25.303,2.97, 19.661,14.060c-5.448,10.322-10.793,16.435-6.451,38.973C 267.919,43.53, 280.044,61.204, 280.084,82.094z
324
- M 112.681,56.074c-14.295,0.092-25.846,11.684-25.866,26.020c 0.020,14.326, 11.571,25.969, 25.866,26.051c 14.193-0.082, 25.754-11.725, 25.856-26.051
325
- C 138.435,67.748, 126.874,56.156, 112.681,56.074z M 200.448,82.094c 0.092,14.326, 11.633,25.969, 25.866,26.051
326
- c 14.254-0.082, 25.815-11.725, 25.856-26.051c-0.041-14.336-11.592-25.928-25.856-26.020C 212.081,56.156, 200.53,67.748, 200.448,82.094z" data-tags="beauty_salon" />
327
- <glyph unicode="&#xe02f;" d="M 253.112-21.76C 134.943-21.76, 38.799,74.383, 38.799,192.563c0,75.633, 38.666,144.21, 103.444,183.429c 13.885,8.407, 31.928,3.963, 40.325-9.902
328
- c 8.397-13.865, 3.953-31.918-9.902-40.325c-47.053-28.488-75.141-78.295-75.141-133.202c0-85.801, 69.796-155.597, 155.597-155.597
329
- c 85.801,0, 155.587,69.796, 155.587,155.597c0,55.808-30.147,107.674-78.715,135.322c-14.1,8.028-19.005,25.948-10.988,40.038
330
- c 8.028,14.080, 25.948,18.995, 40.038,10.977c 66.867-38.072, 108.39-109.486, 108.39-186.348C 467.425,74.383, 371.302-21.76, 253.112-21.76zM 250.88,195.492c-16.21,0-35.84,13.148-35.84,29.358L 215.040,436.234 c0,16.21, 19.63,29.358, 35.84,29.358c 16.21,0, 35.84-13.148, 35.84-29.358l0-211.384
331
- C 286.72,208.64, 267.090,195.492, 250.88,195.492z" data-tags="electronics_store" />
332
- <glyph unicode="&#xe030;" d="M 365.158,177.521c 17.009,28.047, 26.952,60.908, 26.952,96.102c0,102.697-83.098,185.856-185.815,185.897
333
- C 103.67,459.489, 20.48,376.32, 20.48,273.644c0-102.584, 83.2-185.743, 185.876-185.743c 35.226,0, 68.045,9.953, 96.092,26.962L 428.841-11.52L 491.52,51.19
334
- L 365.158,177.521z M 206.336,158.669c-63.508,0.154-114.852,51.476-114.964,114.852C 91.494,337.029, 142.848,388.362, 206.336,388.506
335
- c 63.478-0.164, 114.842-51.487, 114.975-114.985C 321.178,210.217, 269.793,158.822, 206.336,158.669z" data-tags="search" />
336
- <glyph unicode="&#xe031;" d="M 365.158,177.521c 17.009,28.047, 26.952,60.908, 26.952,96.102c0,102.697-83.098,185.856-185.815,185.897
337
- C 103.67,459.489, 20.48,376.32, 20.48,273.644c0-102.584, 83.2-185.743, 185.876-185.743c 35.226,0, 68.045,9.953, 96.092,26.962L 428.841-11.52L 491.52,51.19
338
- L 365.158,177.521z M 206.336,158.669c-63.508,0.154-114.852,51.476-114.964,114.852C 91.494,337.029, 142.848,388.362, 206.336,388.506
339
- c 63.478-0.164, 114.842-51.487, 114.975-114.985C 321.178,210.217, 269.793,158.822, 206.336,158.669zM 122.88,295.68L 286.72,295.68L 286.72,254.72L 122.88,254.72z" data-tags="zoom-out-alt" />
340
- <glyph unicode="&#xe032;" d="M 261.192,248.863c-15.483,0-28.068-12.585-28.068-28.058c0-15.473, 12.585-28.058, 28.068-28.058c 15.473,0, 28.068,12.585, 28.068,28.058
341
- C 289.26,236.278, 276.664,248.863, 261.192,248.863zM 428.278,438.292C 428.278,450.017, 418.775,459.52, 407.060,459.52L 103.148,459.52 C 91.423,459.52, 81.92,450.017, 81.92,438.292l0-428.605 C 81.92-2.028, 91.423-11.52, 103.148-11.52l 303.913,0
342
- c 11.725,0, 21.217,9.492, 21.217,21.207L 428.278,438.292 z M 261.192,86.63c-73.984,0-134.175,60.18-134.175,134.175c0,73.974, 60.191,134.164, 134.175,134.164
343
- c 73.974,0, 134.154-60.191, 134.154-134.164C 395.336,146.811, 335.155,86.63, 261.192,86.63z" data-tags="movie_rental" />
344
- <glyph unicode="&#xe033;" d="M 423.987,255.867l-25.18,105.124c-4.413,18.34-22.999,29.86-41.441,25.334c-16.22-3.963-24.105-15.196-27.3-23.101
345
- c-3.779-9.329-20.644-51.599-24.586-60.334c-1.382-3.031-4.301-4.628-4.895-4.895c-3.348-1.485-36.864-15.626-36.864-15.626l0-0.061
346
- c-6.615-3.103-11.203-9.718-11.203-17.439c0-10.68, 8.745-19.343, 19.528-19.343c 2.324,0, 4.536,0.481, 6.615,1.219
347
- c0-0.010-0.020-0.041,0-0.072c 0.215,0.092, 44.493,18.493, 44.493,18.493c 6.103,2.847, 9.083,6.451, 12.114,11.704
348
- c 1.27,2.212, 5.13,11.469, 8.274,19.067l 26.849-112.282C 370.381,121.498, 370.36,9.677, 370.36,9.677c-0.051-17.285, 11.889-31.375, 29.338-31.437
349
- c 17.469-0.061, 30.095,13.896, 30.208,31.212c0,0, 0.174,195.656, 0.174,205.343C 430.060,224.451, 426.22,247.398, 423.987,255.867zM 287.171,430.643A39.475,39.117 180 1 1 366.121,430.64300000000003A39.475,39.117 180 1 1 287.171,430.64300000000003zM 175.421,100.076l0-43.827 c 5.683,1.044, 10.281,3.645, 13.855,7.813c 3.543,4.168, 5.315,9.042, 5.315,14.653
350
- c0,5.018-1.485,9.349-4.454,12.995C 187.126,95.314, 182.221,98.099, 175.421,100.076zM 148.347,168.141c-2.662-3.584-4.004-7.557-4.004-11.899c0-3.994, 1.219-7.66, 3.625-11.059c 2.437-3.42, 6.113-6.185, 10.998-8.274
351
- l0,38.881 l0,0C 154.511,174.295, 150.958,171.735, 148.347,168.141zM 252.488,220.201l 0.041,0 l-61.184,122.747l-0.010-0.113c-4.495,9.298-14.039,15.718-25.139,15.718l-56.392,0
352
- C 94.413,358.564, 81.92,346.194, 81.92,330.936l0-215.081 c0-0.031,0-0.061,0-0.092L 81.92-21.76 l 173.732,0 L 255.652,206.356 C 255.631,211.313, 254.495,216.003, 252.488,220.201z
353
- M 209.971,48.486c-8.294-9.288-19.804-14.981-34.519-17.070l0-21.023 l-16.456,0 l0,20.46 c-13.087,1.567-23.685,6.41-31.877,14.49
354
- c-8.151,8.1-13.363,19.517-15.626,34.273l 29.594,3.164c 1.198-6.001, 3.461-11.172, 6.81-15.534c 3.308-4.342, 7.014-7.485, 11.090-9.431
355
- l0,47.084 c-14.807,4.198-25.692,10.557-32.584,19.026c-6.932,8.499-10.394,18.811-10.394,30.956c0,12.288, 3.901,22.61, 11.756,30.976
356
- c 7.823,8.346, 18.227,13.169, 31.232,14.428l0,11.131 l 16.456,0 l0-11.131 c 12.001-1.413, 21.576-5.478, 28.682-12.175c 7.086-6.687, 11.622-15.688, 13.599-26.921
357
- l-28.682-3.707c-1.751,8.827-6.277,14.838-13.599,17.981l0-43.93 c 18.135-4.884, 30.495-11.192, 37.079-18.934
358
- c 6.564-7.762, 9.861-17.705, 9.861-29.839C 222.392,69.202, 218.255,57.784, 209.971,48.486z" data-tags="atm" />
359
- <glyph unicode="&#xe034;" d="M 475.914,268.421l-0.133,1.034c-0.287,1.444-0.819,2.898-1.3,3.707L 409.6,377.6c0,0-8.274,10.24-10.24,10.24c-30.72,0-245.76,0-276.48,0L 39.731,276.705
360
- l-0.983-1.024L 38.615,275.2c-0.655-1.034-1.219-2.202-1.72-3.584L 36.557,270.623c-0.492-1.7-0.717-3.174-0.655-5.386
361
- c 0.072-1.434, 0.328-2.857, 0.788-4.342l 0.389-1.116c 0.522-1.321, 1.167-2.529, 1.925-3.604l 201.021-254.638l 0.41-0.584
362
- c 1.034-1.331, 2.294-2.509, 3.83-3.584l 1.167-0.727c 1.147-0.717, 2.345-1.29, 4.086-1.925l 1.137-0.379C 252.621-6.164, 254.331-6.4, 256-6.4
363
- c 1.69,0, 3.338,0.225, 5.56,0.799l 1.362,0.481c 1.331,0.471, 2.529,1.055, 3.973,1.946l 0.901,0.563c 1.546,1.096, 2.785,2.284, 3.471,3.215
364
- l 201.277,254.904c 0.901,1.167, 1.659,2.478, 2.56,4.803c 0.492,1.29, 0.707,2.54, 0.819,3.287c 0.092,0.522, 0.154,1.055, 0.154,1.321
365
- l 0.082,1.044C 476.16,266.988, 476.047,268.012, 475.914,268.421z M 367.985,275.2l 28.652,51.845L 425.267,275.2L 367.985,275.2 z M 350.802,244.48l 67.973,0 L 305.48,100.966
366
- L 350.802,244.48z M 333.988,290.744L 292.608,346.88l 72.397,0 L 333.988,290.744z M 201.441,244.48l 109.148,0 L 256,71.66L 201.441,244.48z M 212.265,275.2L 256,334.551L 299.735,275.2
367
- L 212.265,275.2 z M 181.463,295.393L 162.499,346.88l 56.904,0 L 181.463,295.393z M 206.541,100.956L 93.235,244.48l 67.983,0 L 206.541,100.956z M 129.69,326.687L 148.664,275.2L 91.75,275.2
368
- L 129.69,326.687z" data-tags="jewelry_store" />
369
- <glyph unicode="&#xe035;" d="M-163.84,469.76L-163.84,469.76L-163.84,469.76L-163.84,469.76zM 440.32,418.56L 440.32,459.52L 71.68,459.52L 71.68,418.56L0,418.56L0-21.76L 40.96-21.76L 40.96,377.6L 71.68,377.6L 71.68,336.64L 440.32,336.64L 440.32,377.6L 471.040,377.6L 471.040-21.76L 512-21.76L 512,418.56 zM 430.612,183.040L 430.612,183.040l-66.816,113.92C 361.144,301.885, 354.478,305.92, 348.989,305.92L 163,305.92 c-5.489,0-12.155-4.035-14.797-8.96L 81.398,183.040
370
- l0,0C 70.42,183.040, 61.44,173.824, 61.44,162.56l0-102.4 c0-11.264, 8.98-20.48, 19.958-20.48L 102.4,39.68 l0-30.72 c0-16.896, 12.421-30.72, 28.877-30.72l 9.984,0 C 157.716-21.76, 174.080-7.936, 174.080,8.96l0,30.72 l 163.84,0 l0-30.72
371
- c0-16.896, 16.353-30.72, 32.819-30.72l 9.984,0 c 16.456,0, 28.877,13.824, 28.877,30.72l0,30.72 l 21.012,0 C 441.58,39.68, 450.56,48.896, 450.56,60.16L 450.56,162.56 C 450.56,173.824, 441.58,183.040, 430.612,183.040z
372
- M 116.316,101.12c-13.773,0-24.945,11.459-24.945,25.6s 11.172,25.6, 24.945,25.6c 13.783,0, 24.945-11.459, 24.945-25.6S 130.099,101.12, 116.316,101.12z M 131.277,183.040
373
- l 45.425,83.005c 2.458,5.038, 8.96,9.155, 14.438,9.155l 129.71,0 c 5.489,0, 11.991-4.116, 14.438-9.155L 380.723,183.040L 131.277,183.040 z M 395.684,101.12
374
- c-13.773,0-24.945,11.459-24.945,25.6s 11.172,25.6, 24.945,25.6c 13.783,0, 24.955-11.459, 24.955-25.6S 409.457,101.12, 395.684,101.12z" data-tags="car_wash" />
375
- <glyph unicode="&#xe036;" d="M 192,432.64A42.24,42.24 180 1 1 276.48,432.64A42.24,42.24 180 1 1 192,432.64zM 225.28,377.6l-30.72,0 c-28.877,0-51.2-17.603-51.2-46.971L 143.36,203.52 c0-20.48, 30.72-20.48, 30.72,0L 174.080,326.4 l 10.24,0 l0-327.68 c0-12.626, 7.864-20.48, 20.48-20.48c 12.646,0, 20.48,7.854, 20.48,20.48L 225.28,193.28 L 225.28,377.6 zM 358.4,224l-41.134,106.056C 313.692,353.823, 289.69,377.6, 262.298,377.6L 235.52,377.6 l0-243.538 c 5.12-0.020, 10.24-0.768, 10.24-2.222l0-133.12 c0-10.65, 9.39-20.48, 20.48-20.48
376
- c 11.121,0, 20.48,9.841, 20.48,20.48L 286.72,131.84 l 39.619,0 c 3.707,0, 10.691,6.697, 10.691,10.24c0,0.819, 0.297,9.533,0,10.24l-60.508,166.267
377
- c-0.225,0.522-0.348,1.106-0.348,1.71c0,2.427, 2.038,4.393, 4.577,4.393c 2.161,0, 3.973-1.444, 4.454-3.369L 326.339,213.76
378
- c 2.734-6.154, 13.978-10.24, 21.371-10.24C 357.591,203.52, 358.615,222.925, 358.4,224z" data-tags="unisex" />
379
- <glyph unicode="&#xe037;" d="M 286.556,165.335c-23.050,0-41.759-18.944-41.759-42.342c0-23.388, 18.719-42.363, 41.759-42.363c 23.060,0, 41.748,18.975, 41.748,42.363
380
- C 328.315,146.401, 309.617,165.335, 286.556,165.335z M 286.556,100.577c-12.237,0-22.118,10.025-22.118,22.415c0,12.38, 9.882,22.456, 22.118,22.456
381
- c 12.196,0, 22.129-10.076, 22.129-22.456C 308.695,110.602, 298.762,100.577, 286.556,100.577zM 459.336,352.061C 444.559,357.161, 349.204,367.36, 286.433,367.36c-62.761,0-163.84-10.332-178.801-14.756C 106.086,352.154, 61.44,339.845, 61.44,291.441L 61.44,162.253
382
- C 61.44,153.477, 64.727,142.080, 69.581,142.080L 10.24,142.080 l0-20.48 l 224.922,0 c0,30.72, 23.163,52.449, 51.692,52.449c 28.57,0, 51.722-21.729, 51.722-52.449l 125.245,0
383
- C 484.803,121.6, 501.76,141.015, 501.76,162.253L 501.76,298.312 C 501.76,319.56, 485.786,342.917, 459.336,352.061z M 205.169,250.9c0-4.035-2.877-6.42-6.83-6.42
384
- l-67.41,0 C 126.945,244.48, 122.88,245.996, 122.88,250.030l0,47.739 C 122.88,301.783, 126.945,305.92, 130.918,305.92l 67.41,0 C 202.281,305.92, 204.8,301.783, 204.8,297.769l0-47.739
385
- L 205.169,250.9z M 450.56,250.030C 450.56,245.996, 447.386,244.48, 443.392,244.48L 294.236,244.48 C 290.253,244.48, 286.72,245.996, 286.72,250.030l0,47.739
386
- C 286.72,301.783, 290.253,305.92, 294.236,305.92L 443.392,305.92 c 4.004,0, 7.168-4.137, 7.168-8.151L 450.56,250.030 z" data-tags="rv_park" />
387
- <glyph unicode="&#xe038;" d="M 307.2,398.080l0-337.92 L 61.44,60.16 L 61.44,398.080 L 307.2,398.080 M 348.16,439.040L 20.48,439.040 l0-430.080 l 327.68,0 L 348.16,439.040 L 348.16,439.040zM 92.16,357.12L 276.48,357.12L 276.48,316.16L 92.16,316.16zM 92.16,285.44L 276.48,285.44L 276.48,244.48L 92.16,244.48zM 92.16,213.76L 276.48,213.76L 276.48,172.8L 92.16,172.8zM 92.16,142.080L 276.48,142.080L 276.48,101.12L 92.16,101.12zM 409.6,357.12L 491.52,357.12L 491.52,70.4L 409.6,70.4zM 450.621,469.76C 428.155,469.76, 409.6,451.686, 409.6,429.445L 409.6,387.84 l 81.92,0 L 491.52,429.445 C 491.52,451.686, 472.996,469.76, 450.621,469.76zM 408.965,39.68L 450.345-25.723L 491.52,39.68 z" data-tags="school" />
388
- <glyph unicode="&#xe039;" d="M 484.966,328.96c 0.819-2.97-0.215-6.246-1.946-8.806l-55.194-82.125c-2.048-3.174-6.349-4.915-9.943-4.915c-1.024,0-3.891,0.205-5.007,0.512
389
- L 368.64,244.48l0-194.56 c0-5.939-4.198-10.24-10.24-10.24L 143.36,39.68 c-6.042,0-10.24,4.301-10.24,10.24L 133.12,244.48 l-39.731-10.957c-4.608-1.434-8.602,0.41-11.162,4.403l-54.784,81.92
390
- c-1.741,2.662-2.253,5.632-1.434,8.602c 0.717,3.072, 2.867,5.12, 5.632,6.554L 143.36,387.84c 10.24,0, 51.2,0, 51.2,0c 6.042,0, 10.24-4.198, 10.24-10.24c0-21.094, 29.594-36.045, 50.688-36.045
391
- c 21.094,0, 51.712,14.848, 51.712,36.045c0,5.939, 4.198,10.24, 10.24,10.24c0,0, 40.96,0, 51.2,0l 110.592-51.814C 482.099,334.592, 484.147,332.032, 484.966,328.96z" data-tags="clothing_store" />
392
- <glyph unicode="&#xe03a;" d="M 61.44,367.36l0-345.498 C 61.44,6.81, 74.107-11.52, 89.702-11.52l 340.152,0 C 445.409-11.52, 460.8,6.81, 460.8,21.862L 460.8,367.36 L 61.44,367.36 z M 260.71,93.174
393
- c-60.006,0-108.657,47.043-108.657,105.093c0,58.051, 48.65,105.093, 108.657,105.093s 108.657-47.043, 108.657-105.093
394
- C 369.367,140.206, 320.717,93.174, 260.71,93.174zM 429.855,469.76L 89.702,469.76 C 74.107,469.76, 61.44,459.182, 61.44,444.109L 61.44,387.84 l 399.36,0 L 460.8,444.109 C 460.8,459.182, 445.409,469.76, 429.855,469.76z M 194.56,408.32L 81.92,408.32 L 81.92,449.28 l 112.64,0 L 194.56,408.32 z M 390.615,411.187
395
- c-12.79,0-23.122,10.025-23.122,22.405c0,12.36, 10.332,22.385, 23.122,22.385s 23.153-10.025, 23.153-22.385C 413.757,421.222, 403.405,411.187, 390.615,411.187z
396
- " data-tags="laundry" />
397
- <glyph unicode="&#xe03b;" d="M 501.76,372.593c 6.185,4.68, 10.24,12.012, 10.24,20.367C 512,407.101, 500.541,418.56, 486.4,418.56S 460.8,407.101, 460.8,392.96c0-8.346, 4.055-15.688, 10.24-20.367L 471.040,213.76 l-92.16,0 l0-81.92 l 102.4,0
398
- l0,3.041 c 15.002,6.083, 25.6,20.726, 25.6,37.919c0,7.076-1.956,13.64-5.12,19.446L 501.76,372.593 zM 61.44,305.92c 10.455,0, 17.715-1.761, 30.72,0c0,0-41.124-27.3-41.124-61.44L 102.4,244.48 c0,0, 0.061,56.873, 30.72,92.16l-10.24,10.24c0,0-20.48-10.24-40.96,0c0,0-20.48,0-40.96-10.24l0,10.24 L 30.72,346.88 l0-61.44 l 10.24,0
399
- C 40.96,285.44, 40.96,305.92, 61.44,305.92zM 204.8,305.92c 10.455,0, 17.715-1.761, 30.72,0c0,0-41.124-27.3-41.124-61.44L 245.76,244.48 c0,0, 0.061,56.873, 30.72,92.16l-10.24,10.24c0,0-20.48-10.24-40.96,0c0,0-20.48,0-40.96-10.24l0,10.24 l-10.24,0 l0-61.44 l 10.24,0
400
- C 184.32,285.44, 184.32,305.92, 204.8,305.92zM 389.12,408.32L 389.12,428.8 L 265.011,428.8 c-4.669,20.5-22.927,35.84-44.851,35.84S 179.978,449.3, 175.309,428.8L 51.2,428.8 l0-20.48 L0,408.32 l0-419.84 l 450.56,0 L 450.56,408.32 L 389.12,408.32 z M 163.84,367.36l 122.88,0 l0-143.36 L 163.84,224 L 163.84,367.36 z M 20.48,367.36l 122.88,0 l0-143.36 L 20.48,224
401
- L 20.48,367.36 z M 389.12,39.68L 51.2,39.68 l0,71.68 l 337.92,0 L 389.12,39.68 z M 430.080,224L 307.2,224 L 307.2,367.36 l 122.88,0 L 430.080,224 zM 348.16,305.92c 10.455,0, 17.715-1.761, 30.72,0c0,0-41.124-27.3-41.124-61.44L 389.12,244.48 c0,0, 0.061,56.873, 30.72,92.16l-10.24,10.24c0,0-20.48-10.24-40.96,0c0,0-20.48,0-40.96-10.24l0,10.24 l-10.24,0 l0-61.44 l 10.24,0
402
- C 327.68,285.44, 327.68,305.92, 348.16,305.92z" data-tags="casino" />
403
- <glyph unicode="&#xe03c;" d="M 443.187,337.705L 255.57,469.76l-42.24-29.778l 0.635-0.492L 48.742,322.038l0,0l0,0L 10.24,295.342l0-62.495 l 39.311,26.491L 49.551-21.76 l 3.973,0 l 42.854,0 l 6.359,0
404
- l 303.237,0 l 13.23,0 l 39.465,0 l 3.789,0 L 462.459,261.847 L 501.76,232.847l0,62.495 L 443.187,337.705z M 403.456,38.124L 101.99,38.124 L 101.99,297.134 L 256.174,408.125L 403.456,302.131L 403.456,38.124 zM 186.726,267.356c 10.977,0, 20.050,9.042, 20.050,20.347c0,11.284-9.073,20.419-20.050,20.419c-11.11,0-20.101-9.144-20.101-20.419
405
- C 166.625,276.398, 175.616,267.356, 186.726,267.356zM 159.355,70.676c0-6.277, 4.485-12.196, 10.68-12.196c 6.226,0, 10.588,4.495, 10.588,10.803l0,95.242 l 13.117,0 l0-95.242
406
- c0-6.298, 3.84-11.5, 10.035-11.5c 6.226,0, 10.742,6.615, 10.742,12.902l-0.502,167.035l 12.472,0 l0-66.529 c0-6.656, 13.107-6.656, 13.107,0l0,65.044
407
- c0,13.548-10.547,26.778-26.235,26.778l-53.217,0.123c-14.223,0-25.395-11.858-25.395-26.573l0-65.372 c0-6.656, 13.097-6.656, 13.097,0l0,66.529 l 11.653,0
408
- L 159.355,70.676zM 329.134,267.356c 11.018,0, 20.101,9.042, 20.101,20.347c0,11.284-9.083,20.419-20.101,20.419c-11.049,0-20.142-9.144-20.142-20.419
409
- C 308.992,276.398, 318.075,267.356, 329.134,267.356zM 301.814,70.676c0-6.277, 5.263-12.196, 11.459-12.196c 6.277,0, 11.54,4.495, 11.54,10.803l0,95.242 l 6.564,0 l0-95.242
410
- c0-6.298, 6.195-11.5, 12.431-11.5c 6.236,0, 11.94,6.615, 11.94,12.902l 0.696,167.035l 7.711,0 l0-66.529 c0-6.656, 19.651-6.656, 19.651,0l0,65.044
411
- c0,13.548-11.438,26.778-27.105,26.778l-52.746,0.123c-14.254,0-24.996-11.858-24.996-26.573l0-65.372 c0-6.656, 13.107-6.656, 13.107,0l0,66.529 l 9.841,0
412
- L 301.814,70.676z" data-tags="place_of_worship" />
413
- <glyph unicode="&#xe03d;" d="M 476.109,367.36L 36.055,367.36 c-14.152,0-25.733-12.872-25.733-25.6c0-12.728, 11.581-25.59, 25.733-25.59l 6.216,0 l0-51.2 l 428.247,0 l0,51.2 l 5.591,0
414
- c 14.162,0, 25.733,12.861, 25.733,25.59C 501.842,354.488, 490.271,367.36, 476.109,367.36z M 256.082,290.355c-7.107,0-12.861,5.929-12.861,13.23
415
- s 5.755,13.23, 12.861,13.23c 7.117,0, 12.861-5.929, 12.861-13.23S 263.199,290.355, 256.082,290.355zM 42.271,162.58l 428.247,0 L 470.518,244.48 L 42.271,244.48 L 42.271,162.58 z M 256.082,217.61c 7.117,0, 12.861-5.919, 12.861-13.22c0-7.311-5.745-13.23-12.861-13.23
416
- c-7.107,0-12.861,5.919-12.861,13.23C 243.21,211.692, 248.975,217.61, 256.082,217.61zM 42.271,91.955l0-26.47 l0-33.065 c0-7.27, 0.911-13.23, 7.987-13.23l 51.446,0 c 7.076,0, 10.281,5.96, 10.281,13.23l0,37.99 l 288.819,0 l0-37.99
417
- c0-7.27, 2.58-13.23, 9.646-13.23l 51.456,0 c 7.055,0, 8.602,5.96, 8.602,13.23l0,33.065 l0,26.47 L 470.508,142.080 L 42.271,142.080 L 42.271,91.955 z M 256.082,118.405
418
- c 7.117,0, 12.861-5.929, 12.861-13.22c0-7.322-5.745-13.22-12.861-13.22c-7.107,0-12.861,5.898-12.861,13.22
419
- C 243.21,112.466, 248.975,118.405, 256.082,118.405z" data-tags="furniture_store" />
420
- <glyph unicode="&#xe03e;" d="M 365.158,177.521c 17.009,28.047, 26.952,60.908, 26.952,96.102c0,102.697-83.098,185.856-185.815,185.897
421
- C 103.67,459.489, 20.48,376.32, 20.48,273.644c0-102.584, 83.2-185.743, 185.876-185.743c 35.226,0, 68.045,9.953, 96.092,26.962L 428.841-11.52L 491.52,51.19
422
- L 365.158,177.521z M 206.336,158.669c-63.508,0.154-114.852,51.476-114.964,114.852C 91.494,337.029, 142.848,388.362, 206.336,388.506
423
- c 63.478-0.164, 114.842-51.487, 114.975-114.985C 321.178,210.217, 269.793,158.822, 206.336,158.669zM 286.72,295.68L 225.28,295.68L 225.28,357.12L 184.32,357.12L 184.32,295.68L 122.88,295.68L 122.88,254.72L 184.32,254.72L 184.32,193.28L 225.28,193.28L 225.28,254.72L 286.72,254.72 z" data-tags="zoom-in-alt" />
424
- <glyph unicode="&#xe03f;" d="M 491.52,275.2L 307.2,275.2L 307.2,459.52L 204.8,459.52L 204.8,275.2L 20.48,275.2L 20.48,172.8L 204.8,172.8L 204.8-11.52L 307.2-11.52L 307.2,172.8L 491.52,172.8 z" data-tags="zoom-in" />
425
- <glyph unicode="&#xe040;" d="M 348.16,367.36L 348.16,398.449 C 348.16,423.854, 326.564,449.28, 301.169,449.28l-85.432,0 C 190.351,449.28, 163.84,423.854, 163.84,398.449L 163.84,367.36 l-54.395,0 L 51.2,8.96l 411.515,0 l-59.167,358.4L 348.16,367.36 z
426
- M 194.56,398.449C 194.56,407.962, 206.234,418.56, 215.736,418.56l 85.432,0 C 310.661,418.56, 317.44,407.962, 317.44,398.449L 317.44,367.36 L 194.56,367.36 L 194.56,398.449 z" data-tags="department_store" />
427
- <glyph unicode="&#xe041;" d="M 259.43,231.199c0,0-49.551-39.864-49.551-72.090c0-14.428, 21.238-28.846, 49.551-28.846c 28.293,0, 49.531,14.418, 49.531,28.846
428
- C 308.961,192.492, 259.43,231.199, 259.43,231.199zM 440.074,304.067c 2.867,35.103, 13.046,67.328, 30.966,96.86L 402.237,469.76c-21.729-18.719-46.49-29.082-74.547-30.915
429
- c-25.702-2.324-50.063,2.56-72.97,14.694c-23.572-11.735-47.841-16.64-73.144-14.694c-26.163,2.345-49.787,11.622-70.932,28.068L 41.646,398.111
430
- c 16.968-29.962, 26.419-61.307, 28.273-94.044c 0.881-15.073-3.42-35.809-13.066-62.638c-5.048-14.868-8.858-27.761-11.469-38.543
431
- c-2.417-10.701-3.922-19.405-4.413-25.917c-0.358-28.57, 7.66-54.385, 24.095-77.312c 12.841-16.742, 34.017-35.236, 63.427-55.45
432
- c 32.184-16.384, 57.078-27.013, 74.516-31.56c 4.987-2.335, 9.892-4.567, 14.459-6.717c 4.557-2.171, 9.431-4.301, 14.51-6.625
433
- c 10.967-6.564, 18.668-13.691, 22.743-21.053c 4.966,7.956, 12.841,14.909, 23.327,21.053c 7.393,3.226, 13.629,6.031, 18.657,8.479
434
- c 5.007,2.222, 8.755,3.871, 10.916,4.874c 3.727,1.853, 8.632,3.973, 14.531,6.308c 5.949,2.345, 13.332,5.212, 22.118,8.407
435
- c 16.988,6.011, 29.379,11.704, 37.222,16.845c 28.529,20.214, 49.388,38.4, 62.648,54.682c 17.029,23.020, 25.293,48.937, 24.914,78.080
436
- c-1.014,13.046-6.533,33.925-16.558,62.362C 442.941,267.039, 438.702,288.543, 440.074,304.067z M 259.43,101.427
437
- c-62.536,0-120.32,51.651-120.32,115.354c0,43.264, 33.075,84.132, 42.465,100.936l 28.303-43.264l 49.551,72.090l 49.531-72.090l 28.344,43.264
438
- c 9.359-16.804, 42.465-57.672, 42.465-100.936C 379.771,153.078, 321.976,101.427, 259.43,101.427z" data-tags="fire_station" />
439
- <glyph unicode="&#xe042;" d="M 501.76,250.665L 266.24,362.076L 266.24,408.32L 296.96,408.32L 296.96,428.8L 266.24,428.8L 266.24,469.76L 245.76,469.76L 245.76,428.8L 215.040,428.8L 215.040,408.32L 245.76,408.32L 245.76,362.076L 81.326,284.201L 81.326,284.201L 81.326,284.201L 10.24,250.665L 10.24,234.24L 81.92,234.24L 81.92-21.76L 204.8-21.76L 204.8,131.84L 307.2,131.84L 307.2-21.76L 430.080-21.76L 430.080,234.24L 501.76,234.24 z" data-tags="church" />
440
- <glyph unicode="&#xe043;" d="M 257.577,302.367c 40.479,0, 73.155,32.942, 73.155,73.554c0,40.53-32.666,73.359-73.155,73.359c-40.428,0-73.247-32.84-73.247-73.359
441
- C 184.33,335.319, 217.16,302.367, 257.577,302.367zM 328.755,285.44c 33.495,0, 47.555-28.611, 47.555-28.611l 108.104-148.941c 4.475-6.646, 7.107-14.776, 7.107-23.552
442
- c0-23.142-18.719-41.953-41.789-41.953c-5.519,0-10.865,1.198-15.555,3.021L 368.64,63.57L 368.64-1.28 L 143.36-1.28 l0,64.85 l-65.556-18.196
443
- C 73.196,43.571, 67.891,42.342, 62.351,42.342c-23.050,0-41.861,18.739-41.861,41.882c0,8.765, 2.591,16.763, 7.229,23.429l 108.032,149.176
444
- c0,0, 14.049,28.611, 47.401,28.611L 328.755,285.44 z M 256.061,43.899L 256.061,43.899l 84.439,28.058l-1.833,0.512c-58.419,17.121-36.024,94.495, 22.252,77.179
445
- L 368.64,146.903l0,87.255 l-112.527-37.1L 143.36,234.158l0-87.255 l 7.721,2.755c 58.245,17.306, 80.876-60.058, 22.497-77.179l-2.048-0.512L 256.061,43.899
446
- L 256.061,43.899z" data-tags="library" />
447
- <glyph unicode="&#xe044;" d="M 261.908,388.475c 23.521-1.731, 44.093,15.032, 45.957,37.356c 1.884,22.436-15.667,42.066-39.188,43.796c-23.552,1.71-44.124-14.95-45.947-37.386
448
- C 220.897,409.815, 238.459,390.226, 261.908,388.475zM 438.098,60.16l-14.213,122.88l-23.060,0 c 0.215,10.24, 0.184,11.377-0.522,17.592c-0.686,6.359-2.703,11.008-5.99,12.472
449
- c 2.693,2.867, 4.485,6.513, 4.833,10.619c 0.522,6.472-2.509,12.524-7.578,16.128l-58.696,38.584l-43.213,81.367
450
- c-7.158,10.65-19.282,19.241-33.915,20.47c-11.244,0.778-21.586-2.939-29.952-8.468l-85.75-66.376c-2.826-2.273-4.946-5.263-5.908-8.858
451
- l-19.978-80.394C 113.981,215.409, 112.64,214.548, 112.64,213.791c0-0.010,0-0.020,0-0.031l-0.164,0 c-3.348,0-6.4-3.195-7.567-7.424
452
- C 103.782,202.189, 102.4,196.71, 102.4,192.276C 102.4,189.082, 102.4,183.040, 102.4,183.040L 80.138,183.040 L 65.925,60.16l 57.436,0 l-25.18-40.294c-1.638-3.123-3.564-7.537-3.901-11.796
453
- c-1.239-15.258, 10.639-28.518, 26.563-29.737c 11.377-0.758, 21.166,4.731, 27.116,13.496L 190.454,60.16l 5.56,0 l-0.87,7.547l 11.786,18.964
454
- c 1.28,2.54, 5.345,8.755, 5.796,11.704l 14.397,62.566l 61.45-64.236l 19.292-96.573c 3.082-11.418, 12.933-20.838, 26.040-21.801
455
- c 15.944-1.208, 29.901,10.045, 31.171,25.272c 0.113,1.905-0.225,3.338-0.174,5.612L 354.826,60.16l 18.207,0 L 438.098,60.16 z M 112.2,193.382
456
- c 0.573,4.844, 2.386,7.598, 5.581,7.598c 0.42,0, 0.778,0.010, 1.198,0.020c 3.226-3.901, 8.018-6.574, 13.548-7.025
457
- c 6.339-0.492, 12.032,2.243, 15.903,6.482c 0.86-0.727, 1.546-1.823, 2.017-3.338c 0.85-2.939, 1.341-6.308, 1.341-9.083
458
- c0-1.659-0.082-4.997-0.195-4.997l-20.644,0 l-19.046,0 C 111.77,183.040, 111.811,189.624, 112.2,193.382z M 170.885,183.040l-12.134,0
459
- c 0.256,10.24, 0.184,11.377-0.481,17.592c-0.573,5.325-2.079,9.441-4.465,11.551l 15.145,65.966l 29.87,23.112L 170.885,183.040z M 393.687,183.040L 373.043,183.040
460
- l-19.077,0 c-0.164,0-0.113,6.584, 0.297,10.342c 0.532,4.844, 2.376,7.598, 5.581,7.598c 4.598,0, 8.765,0.143, 12.462,0.225
461
- c 3.717,0.133, 8.786,0.317, 15.165,0.317c 2.447,0, 4.106-1.454, 5.028-4.413c 0.881-2.939, 1.352-6.308, 1.352-9.083
462
- C 393.851,186.378, 393.759,183.040, 393.687,183.040z M 265.216,206.418l 19.251,81.265l 16.189-30.546c 1.28-2.099, 2.796-3.83, 4.792-5.458L 363.274,213.76l-8.735,0
463
- c-3.348,0-4.577-3.195-5.734-7.424C 347.709,202.189, 348.16,196.71, 348.16,192.276C 348.16,189.082, 348.16,183.040, 348.16,183.040l-25.928,0 l-4.188-36.147L 265.216,206.418z" data-tags="shopping_mall" />
464
- <glyph unicode="&#xe045;" d="M 471.040,183.040L 471.040-21.76L 317.44-21.76L 317.44,19.2L 184.32,19.2L 184.32-21.76L 40.96-21.76L 40.96,183.040 zM 378.358,220.365c-5.878,25.692-19.139,48.282-40.038,65.546C 318.075,302.735, 294.124,305.92, 266.342,316.16L 266.24,316.16 L 266.24,380.959
465
- c0,0.287, 2.775,0.512, 5.366,1.444c 3.676,1.28, 7.148,2.755, 11.745,4.352c 4.516,1.526, 8.602,2.806, 12.861,3.707
466
- c 4.178,0.993, 7.076,1.413, 9.062,1.413c 3.86,0, 8.745-0.614, 14.459-1.864c 5.816-1.413, 12.012-2.939, 18.309-4.669
467
- c 6.564-1.987, 12.421-3.492, 18.104-4.772c 5.417-1.239, 9.953-1.751, 13.711-1.751C 375.839,378.808, 378.88,379.638, 389.12,381.46L 389.12,455.619
468
- c-10.24-2.437-12.052-3.779-19.272-3.779c-3.758,0-8.407,0.573-13.834,1.946c-5.663,1.085-11.5,2.775-18.063,4.68
469
- c-6.298,1.915-12.247,3.359-17.746,4.567c-5.56,1.321-9.175,1.956-13.107,1.956c-13.036,0-30.618-3.082-40.858-8.765L 266.24,469.76 l-20.48,0 l0-153.6 l-0.645,0
470
- c-27.566-10.24-51.702-14.008-71.926-30.833c-20.5-17.285-33.812-38.41-40.11-64.113c0,0-19.63,2.785-19.63-17.695l 286.413,0
471
- C 399.862,224, 378.358,220.365, 378.358,220.365z" data-tags="local_government" />
472
- <glyph unicode="&#xe046;" d="M 483.645,60.16c0,0-74.045,0-166.205,0l0-40.735 L 317.44,19.2 c 40.96,0, 66.877,0, 66.877,0c 28.959,0, 41.513,0, 56.689,0l 44.339,0
473
- C 499.149,19.2, 501.76,31.232, 501.76,31.232l0,9.933 C 501.76,41.165, 501.637,60.16, 483.645,60.16zM 460.657,68.25C 483.328,68.25, 501.76,86.702, 501.76,109.435c0,22.804-18.432,41.196-41.103,41.196c-22.641,0-41.021-18.401-41.021-41.196
474
- C 419.635,86.712, 438.016,68.25, 460.657,68.25zM 374.088,70.4c 21.565,0, 38.912,15.196, 38.912,36.731c-0.010,21.494-17.418,32.768-38.82,32.932L 317.44,132.874L 317.44,70.4 L 374.088,70.4 L 374.088,70.4zM 189.676,337.326c 25.18,0, 45.548,20.48, 45.548,45.742C 235.223,408.33, 214.856,428.8, 189.676,428.8c-25.16,0-45.558-20.47-45.558-45.732
475
- C 144.118,357.806, 164.516,337.326, 189.676,337.326zM 143.165,189.297c-0.113,0.215-0.297,0.338-0.41,0.594l-20.644,48.067L 122.081,142.080l 61.696,0 l 13.476,14.336l-36.547,14.070
476
- C 152.044,173.742, 145.889,181.115, 143.165,189.297zM 156.242,193.608c 1.997-4.485, 5.693-8.12, 10.342-9.789l 70.42-26.102c 9.011-3.983, 19.538,0.154, 23.491,9.196
477
- c 3.953,9.103-0.154,19.702-9.175,23.665l-64.973,24.535l-20.070,48.138l 13.087,4.874l 17.009-41.247L 245.76,208.568l0,50.401 l 26.214-15.596l 13.066-65.823
478
- c 3.205-9.4, 13.353-14.346, 22.712-11.1c 9.267,3.215, 14.193,13.466, 11.008,22.825l-14.643,63.396c-0.963,3.553-3,6.656-5.755,8.98
479
- c-7.506,8.315-45.466,50.76-48.169,53.596C 246.231,319.222, 237.169,326.4, 220.047,326.4l-61.44,0 c-34.918,0-41.636-35.635-34.499-53.76L 156.242,193.608zM 307.2,131.84L 30.382,131.84 C 20.306,131.84, 10.24,126.157, 10.24,113.654c0-2.898,0-8.202,0-8.202L 10.24,19.2 c0,0, 18.012,0, 23.859,0L 307.2,19.2 L 307.2,131.84 z" data-tags="spa" />
480
- <glyph unicode="&#xe047;" d="M 419.84,285.44l-2.785,0 c-0.758,1.311-1.638,2.58-2.724,3.738L 296.12,415.826C 296.643,418.355, 296.96,420.977, 296.96,423.68C 296.96,443.474, 282.378,459.52, 264.376,459.52
481
- c-6.943,0-30.3,0-37.243,0C 209.142,459.52, 194.56,443.474, 194.56,423.68c0-2.703, 0.328-5.325, 0.84-7.854L 77.189,289.178
482
- C 76.114,288.020, 75.233,286.751, 74.465,285.44L 20.48,285.44 l0-71.68 l 20.48,0 l0-153.6 c0-28.283, 22.927-51.2, 51.2-51.2l 327.68,0 c 28.283,0, 51.2,22.917, 51.2,51.2L 471.040,213.76 l 20.48,0 l0,71.68 L 419.84,285.44 z M 227.144,387.84
483
- c 6.943,0, 30.3,0, 37.243,0c 0.573,0, 1.096,0.154, 1.669,0.184L 361.789,285.44L 129.731,285.44 l 95.744,102.584C 226.038,387.994, 226.57,387.84, 227.144,387.84z M 133.12,70.4
484
- c0-11.264-9.216-20.48-20.48-20.48s-20.48,9.216-20.48,20.48L 92.16,193.28 c0,11.264, 9.216,20.48, 20.48,20.48s 20.48-9.216, 20.48-20.48L 133.12,70.4 z M 225.28,70.4c0-11.264-9.216-20.48-20.48-20.48s-20.48,9.216-20.48,20.48L 184.32,193.28 c0,11.264, 9.216,20.48, 20.48,20.48s 20.48-9.216, 20.48-20.48L 225.28,70.4 z
485
- M 327.68,70.4c0-11.264-9.216-20.48-20.48-20.48s-20.48,9.216-20.48,20.48L 286.72,193.28 c0,11.264, 9.216,20.48, 20.48,20.48s 20.48-9.216, 20.48-20.48L 327.68,70.4 z M 419.84,70.4c0-11.264-9.216-20.48-20.48-20.48s-20.48,9.216-20.48,20.48L 378.88,193.28 c0,11.264, 9.216,20.48, 20.48,20.48
486
- s 20.48-9.216, 20.48-20.48L 419.84,70.4 z" data-tags="convenience_store" />
487
- <glyph unicode="&#xe048;" d="M 292.669,269.629c0-34.499-28.559-34.499-43.95-34.499l-19.19,0 l0,65.219 l 24.115,0 C 267.131,300.349, 292.669,300.349, 292.669,269.629zM 440.084,304.067c 2.847,35.103, 13.015,67.318, 30.956,96.85L 402.237,469.76c-21.74-18.719-46.479-29.082-74.537-30.915
488
- c-25.692-2.324-50.084,2.56-72.98,14.684c-23.562-11.735-47.831-16.64-73.134-14.684c-26.173,2.345-49.787,11.622-70.943,28.068L 41.646,398.1
489
- c 16.968-29.952, 26.419-61.307, 28.283-94.034c 0.881-15.073-3.42-35.82-13.066-62.638C 51.814,226.56, 47.995,213.658, 45.394,202.885
490
- c-2.406-10.701-3.912-19.405-4.413-25.917c-0.358-28.58, 7.66-54.385, 24.095-77.312c 12.841-16.742, 34.017-35.226, 63.427-55.45
491
- c 32.174-16.384, 57.078-27.023, 74.516-31.549c 4.987-2.345, 9.892-4.588, 14.459-6.717c 4.547-2.191, 9.421-4.311, 14.51-6.625
492
- c 10.967-6.574, 18.678-13.711, 22.733-21.064c 4.977,7.956, 12.851,14.909, 23.316,21.064c 7.393,3.215, 13.65,6.021, 18.668,8.479
493
- c 5.018,2.202, 8.755,3.86, 10.926,4.874c 3.717,1.853, 8.602,3.963, 14.51,6.298c 5.97,2.345, 13.332,5.222, 22.129,8.397
494
- c 16.998,6.031, 29.368,11.715, 37.233,16.855c 28.518,20.224, 49.367,38.4, 62.638,54.671c 17.019,23.030, 25.283,48.947, 24.904,78.090
495
- c-1.004,13.046-6.523,33.925-16.548,62.372C 442.931,267.039, 438.692,288.543, 440.084,304.067z M 313.62,209.756
496
- c-16.333-10.691-38.789-10.691-50.514-10.691l-32.205,0 l0-88.125 l-48.425,0 L 182.477,336.998 l 68.741,0 c 31.949,0, 58.665-2.058, 77.22-24.678
497
- c 11.581-14.397, 13.537-30.751, 13.537-42.373C 341.955,243.62, 331.11,221.399, 313.62,209.756z" data-tags="police" />
498
- <glyph unicode="&#xe049;" d="M 486.451,269.527C 484.076,398.94, 409.385,450.365, 406.323,452.413L 394.752,460.339l-11.633-7.905c-19.343-13.189-39.393-19.886-59.566-19.886
499
- c-33.475,0-56.156,18.104-57.129,18.883l-13.025,10.506l-12.933-10.527c-0.942-0.768-23.654-18.872-57.108-18.872
500
- c-20.183,0-40.223,6.687-59.587,19.917l-11.592,7.864l-11.674-7.926C 92.57,446.915, 23.030,395.295, 20.511,270.162
501
- c-1.004-10.885, 28.908-216.842, 232.97-276.593C 475.392,58.737, 487.578,255.928, 486.451,269.527z M 61.604,267.049l 0.031-2.918
502
- C 62.044,287.754, 65.341,316.16, 71.731,326.4l 363.407,0 c 6.42-10.24, 9.748-38.717, 10.117-62.505l 0.143,0.102c 0.809-6.595-7.311-192-191.918-229.222
503
- C 88.207,71.25, 60.877,260.966, 61.604,267.049z" data-tags="route" />
504
- <glyph unicode="&#xe04a;" d="M 20.48,275.2L 491.52,275.2L 491.52,172.8L 20.48,172.8z" data-tags="zoom-out" />
505
- <glyph unicode="&#xe04b;" d="M 332.974-12.616L 260.557,203.52L 25.211,203.52L 477.798,457.513 z" data-tags="location-arrow" />
506
- <glyph unicode="&#xe04c;" d="M 256,480c-84.828,0-153.6-68.157-153.6-152.228c0-84.081, 153.6-359.782, 153.6-359.782s 153.6,275.702, 153.6,359.782C 409.6,411.843, 340.828,480, 256,480z
507
- M 255.498,282.245c-26.184,0-47.401,21.043-47.401,46.981c0,25.958, 21.217,46.991, 47.401,46.991c 26.204,0, 47.421-21.033, 47.421-46.991
508
- C 302.92,303.288, 281.702,282.245, 255.498,282.245z" data-tags="postal_code" />
509
- <glyph unicode="&#xe04d;" d="M 441.958,264.96L 419.84,264.96 l0,88.392 C 419.84,411.494, 361.513,469.76, 303.37,469.76l-97.085,0 C 148.173,469.76, 92.16,411.494, 92.16,353.352L 92.16,264.96 L 67.686,264.96 C 60.754,264.96, 51.2,254.085, 51.2,247.962l0-260.69
510
- C 51.2-18.852, 60.754-21.76, 67.686-21.76l 374.272,0 c 6.953,0, 18.842,2.908, 18.842,9.032L 460.8,247.962 C 460.8,254.085, 448.911,264.96, 441.958,264.96z M 304.261,19.2l-98.826,0
511
- l 20.736,102.062c-12.534,8.878-20.736,25.61-20.736,42.035c0,27.064, 22.129,50.115, 49.408,50.115c 27.279,0, 49.418-21.391, 49.418-48.435
512
- c0-16.435-8.202-35.113-20.716-44.001L 304.261,19.2z M 348.16,264.96L 163.84,264.96 l0,88.392 C 163.84,379.75, 181.176,398.080, 207.268,398.080l 95.119,0 C 328.479,398.080, 348.16,379.75, 348.16,353.352L 348.16,264.96 z" data-tags="locksmith" />
513
- <glyph unicode="&#xe04e;" d="M 439.542,346.88L 389.12,346.88 L 389.12,400.394 C 389.12,438.651, 358.932,469.76, 320.573,469.76L 191.437,469.76 C 153.057,469.76, 122.88,438.651, 122.88,400.394L 122.88,346.88 L 72.448,346.88 C 38.083,346.88, 10.24,320.348, 10.24,286.085
514
- l0-235.592 C 10.24,16.241, 38.083-11.52, 72.448-11.52l 367.094,0 C 473.897-11.52, 501.76,16.241, 501.76,50.504L 501.76,286.085 C 501.76,320.348, 473.897,346.88, 439.542,346.88z M 163.84,400.394
515
- C 163.84,414.72, 177.070,428.8, 191.437,428.8l 129.137,0 C 334.899,428.8, 348.16,414.72, 348.16,400.394L 348.16,346.88 L 163.84,346.88 L 163.84,400.394 z M 368.64,121.6l-71.68,0 l0-71.68 l-81.92,0 l0,71.68 l-71.68,0 l0,81.92 l 71.68,0 l0,71.68 l 81.92,0 l0-71.68 l 71.68,0 L 368.64,121.6 z" data-tags="doctor" />
516
- <glyph unicode="&#xe04f;" d="M 491.745,207.084c-14.295-66.755-63.406-121.59-128.164-143.114c-19.866-6.615-40.448-9.964-61.184-9.964
517
- c-83.446,0-157.225,53.146-183.603,132.239c-16.333,48.957-12.585,101.335, 10.547,147.497c 23.132,46.152, 62.884,80.558, 111.923,96.87
518
- c 46.131,15.319, 96.225,12.759, 140.39-7.055l 9.574,18.053C 327.096,481.229, 247.214,490.711, 175.391,466.821C 110.438,445.225, 57.795,399.657, 27.156,338.534
519
- c-30.638-61.133-35.594-130.519-13.967-195.379C 48.128,38.39, 145.848-32, 256.358-32c 27.464,0, 54.712,4.434, 81.009,13.169
520
- c 98.028,32.604, 166.564,120.115, 174.612,222.966L 491.745,207.084zM 365.537,330.465L 314.194,426.557L 288.082,319.273L 181.289,298.281L 279.050,242.77L 262.236,132.219L 345.252,207.729L 448.123,158.372L 395.581,261.048L 478.771,341.35 z" data-tags="mosque" />
521
- <glyph unicode="&#xe050;" d="M 352.645,300.268c 35.82,0, 64.983,28.682, 64.983,64.215C 417.628,400.005, 388.475,428.8, 352.645,428.8c-35.963,0-65.178-28.795-65.178-64.317
522
- C 287.468,328.95, 316.692,300.268, 352.645,300.268zM 501.76,143.544l0,81.306 L 414.054,274.176c-14.858,7.455-31.375,9.984-47.882,6.502c-6.758-1.382-13.117-3.963-20.265-7.895
523
- c-0.778-0.215-26.819-11.571-41.953-46.5L 243.558,106.138c0,0-59.505-11.397-84.408-16.148c-1.966-1.3-4.076-2.355-6.093-3.594l-15.411,55.101
524
- c-6.38,22.405, 17.418,54.886, 18.309,56.207c 15.749,22.784, 20.060,52.797, 11.786,82.524c-7.537,26.88-24.699,49.541-47.043,62.29
525
- c-17.48,9.82-37.13,12.524-54.968,7.67c-13.855-3.758-26.204-11.817-35.748-23.398c-0.123-0.113-7.383-10.752-7.383-10.752
526
- c-12.841-22.354-15.8-50.371-8.376-77.394c 7.537-27.136, 24.504-49.705, 46.961-62.28l 5.376-2.816c 0.717-0.051, 37.704-14.961, 44.134-36.352
527
- c-0.082-0.113, 9.708-35.092, 17.695-63.601c-2.048-0.881-4.014-1.946-6.083-2.765c 0.297-0.215, 0.85-0.553, 1.188-0.788
528
- c-1.802-2.755-4.966-8.858-4.741-15.104c0-1.987, 0.164-3.973, 0.543-5.898c 3.41-17.664, 20.91-29.46, 38.789-25.866l 114.125,21.955
529
- c0,0, 9.708,2.918, 13.865,5.847c 5.356,3.758, 9.39,11.643, 9.39,11.643l 29.993,59.628c0,0, 20.675-96.358, 21.074-98.14
530
- c-0.348-0.266-2.028-2.099-4.762-4.905l 155.679,0 c-2.345,13.681-3.901,22.456-3.901,22.559c0,0.225-4.905,21.617-4.905,21.617
531
- c 0.164-0.154-13.353,60.027-23.685,107.131c 16.466-9.421, 31.386-17.797, 32.215-18.248C 497.295,151.992, 499.067,148.623, 501.76,143.544z M 109.435,192.963
532
- c-11.561-3.072-23.91-1.208-35.748,5.315c-16.486,9.216-29.225,26.368-34.683,47.063c-5.816,20.623-3.697,41.748, 5.693,58.030l 5.243,7.557
533
- c 6.185,7.506, 13.681,12.524, 22.671,15.012c 28.713,7.711, 60.334-15.78, 70.554-52.47C 153.231,236.943, 138.158,200.694, 109.435,192.963z" data-tags="stadium" />
534
- <glyph unicode="&#xe051;" d="M 30.72,418.56L 481.28,418.56L 481.28,367.36L 30.72,367.36zM 61.44,346.88l0-337.92 l 389.12,0 L 450.56,346.88 L 61.44,346.88 z M 327.68,254.72L 174.080,254.72 l0,30.72 l 153.6,0 L 327.68,254.72 z" data-tags="storage" />
535
- <glyph unicode="&#xe052;" d="M 432.282,346.88l-58.102,0 l 58.46,56.054L 374.804,459.52l-81.859,0 l 58.644-56.044L 291.471,346.88l-69.519,0 l 59.781,56.054L 222.679,459.52l-83.261,0 l 58.644-56.044
536
- L 137.861,346.88L 78.94,346.88 l 59.812,56.054L 79.585,459.52L 20.48,459.52 l0-471.040 l 471.040,0 L 491.52,459.52 l-57.774,0 L 491.52,403.159L 432.282,346.88z M 430.080,49.92L 81.92,49.92 l0,61.44 l 348.16,0 L 430.080,49.92 z M 430.080,162.56L 81.92,162.56 l0,61.44 l 348.16,0 L 430.080,162.56 z" data-tags="movie_theater" />
537
- <glyph unicode="&#xe053;" d="M 419.84,336.64l-51.2,0 L 368.64,450.109 C 368.64,460.964, 359.475,469.76, 348.16,469.76s-20.48-8.796-20.48-19.651L 327.68,336.64 L 163.84,336.64 L 163.84,450.109 C 163.84,460.964, 154.675,469.76, 143.35,469.76
538
- C 132.035,469.76, 122.88,460.964, 122.88,450.109L 122.88,336.64 L 71.68,336.64 c-5.663,0-10.24-8.899-10.24-14.326L 61.44,273.152 c0-58.972, 102.4-127.447, 102.4-222.167L 163.84,19.2 l 40.96,0 l0-40.96 l 81.92,0 l0,40.96 l 40.96,0 l0,31.785
539
- c0,94.72, 102.4,163.205, 102.4,222.167l0,49.162 C 430.080,327.741, 425.503,336.64, 419.84,336.64 M 234.568,168.827C 235.233,170.977, 233.882,172.8, 231.537,172.8l-39.782,0
540
- c-2.355,0-3.021,1.331-1.526,3.062c0,0, 81.971,104.028, 83.569,106.035c 1.208,1.905, 2.54,1.239, 2.12-0.952
541
- c-0.635-2.775-18.135-73.748-18.135-73.748C 256.932,205.107, 258.161,203.52, 260.485,203.52l 39.803,0 c 2.345,0, 3.092-1.577, 1.659-3.359
542
- c0,0-82.094-106.516-83.569-108.298c-1.485-1.782-2.857-1.239-2.109,1.792C 217.016,96.696, 234.568,168.827, 234.568,168.827" data-tags="electrician" />
543
- <glyph unicode="&#xe054;" d="M 87.286,164.659c-20.255,0-36.71-16.558-36.71-36.905C 50.575,107.397, 67.041,90.88, 87.286,90.88c 20.296,0, 36.762,16.517, 36.762,36.884
544
- C 124.047,148.101, 107.592,164.659, 87.286,164.659z M 87.286,108.739c-10.117,0-18.35,8.264-18.35,18.463c0,10.158, 8.233,18.442, 18.35,18.442
545
- c 10.168,0, 18.401-8.284, 18.401-18.442C 105.697,117.002, 97.464,108.739, 87.286,108.739zM 410.286,164.659c-20.285,0-36.731-16.558-36.731-36.905c0-20.357, 16.435-36.884, 36.731-36.884c 20.275,0, 36.762,16.517, 36.762,36.884
546
- C 447.048,148.101, 430.572,164.659, 410.286,164.659z M 410.286,108.739c-10.127,0-18.371,8.264-18.371,18.463
547
- c 0.010,10.158, 8.243,18.442, 18.371,18.442c 10.158,0, 18.401-8.284, 18.401-18.442C 428.687,117.002, 420.454,108.739, 410.286,108.739zM 491.592,336.64L 168.561,336.64 c-5.601,0-10.168-4.567-10.168-10.209l0-92.59 l-20.347,0 l0,56.842 c0,5.652-4.557,10.209-10.179,10.209L 58.563,300.892
548
- c-12.083,0-22.876-8.929-24.812-21.709l0,0.666 l-10.813-61.307l 0.020-0.215C 15.616,217.078, 10.24,210.698, 10.24,203.213c0-1.096, 0.123-2.222, 0.338-3.277
549
- L 10.24,200.028l 15.258-68.966l 15.892,0 l0,0.625 c0,24.719, 20.224,44.739, 45.158,44.739c 24.914,0, 45.148-20.019, 45.148-44.739l0-0.625 l 232.714,0 l0,0.625
550
- c0,24.719, 20.234,44.739, 45.128,44.739c 24.934,0, 45.169-20.019, 45.169-44.739c0-0.205,0-0.42-0.041-0.625l 0.041,0 L 501.76,131.062 L 501.76,326.431
551
- C 501.76,332.063, 497.213,336.64, 491.592,336.64z M 102.431,284.303l0-50.463 l-61.030,0 l 7.629,42.813c 0.635,5.12, 5.089,8.899, 9.533,8.899l 43.868,0 L 102.431,284.303 z" data-tags="moving_company" />
552
- <glyph unicode="&#xe055;" d="M 256,480c-84.828,0-153.6-68.157-153.6-152.228c0-84.081, 153.6-359.782, 153.6-359.782s 153.6,275.702, 153.6,359.782C 409.6,411.843, 340.828,480, 256,480z
553
- M 255.498,282.245c-26.184,0-47.401,21.043-47.401,46.981c0,25.958, 21.217,46.991, 47.401,46.991c 26.204,0, 47.421-21.033, 47.421-46.991
554
- C 302.92,303.288, 281.702,282.245, 255.498,282.245z" data-tags="postal_code_prefix" />
555
- <glyph unicode="&#xe056;" d="M 256,469.76C 120.484,469.76, 10.24,359.516, 10.24,224c0-135.506, 110.244-245.76, 245.76-245.76c 135.506,0, 245.76,110.254, 245.76,245.76C 501.76,359.516, 391.506,469.76, 256,469.76z M 286.72,21.76L 286.72,111.36 l-61.44,0
556
- l0-89.6 C 136.96,35.144, 67.144,104.96, 53.76,193.28L 143.36,193.28 l0,61.44 L 53.76,254.72 C 67.144,343.040, 136.96,412.856, 225.28,426.24L 225.28,336.64 l 61.44,0 L 286.72,426.24
557
- C 375.040,412.856, 444.856,343.040, 458.24,254.72L 368.64,254.72 l0-61.44 l 89.6,0 C 444.856,104.96, 375.040,35.144, 286.72,21.76z" data-tags="crosshairs" />
558
- <glyph unicode="&#xe057;" d="M 256-21.76C 120.484-21.76, 10.24,88.494, 10.24,224C 10.24,359.516, 120.484,469.76, 256,469.76c 135.506,0, 245.76-110.244, 245.76-245.76C 501.76,88.494, 391.506-21.76, 256-21.76z M 256,428.8
559
- C 143.073,428.8, 51.2,336.927, 51.2,224c0-112.927, 91.873-204.8, 204.8-204.8c 112.927,0, 204.8,91.873, 204.8,204.8C 460.8,336.927, 368.927,428.8, 256,428.8zM 256.461,395.52C 256.461,395.52, 184.32,271.913, 184.32,234.24c0-3.983,0-16.548,0-20.48c0-37.663, 72.356-163.84, 72.356-163.84S 327.68,173.476, 327.68,211.139
560
- c0,3.963,0,19.22,0,23.163C 327.68,271.974, 256.461,395.52, 256.461,395.52z M 256,183.040c-22.62,0-40.96,18.34-40.96,40.96c0,22.62, 18.34,40.96, 40.96,40.96c 22.62,0, 40.96-18.34, 40.96-40.96
561
- C 296.96,201.38, 278.62,183.040, 256,183.040z" data-tags="compass" />
562
- <glyph unicode="&#xe058;" d="M 254.433,200.776c 36.321,0, 53.156-27.546, 56.689-66.683c 0.829-9.359-0.010-23.009-1.229-38.82C 305.818,42.762, 301.128-21.76, 336.077-21.76
563
- c 29.594,0, 44.759,56.73, 53.545,121.405c 8.458,64.020-0.522,95.877, 3.912,124.314c 8.407,53.862, 55.419,102.154, 40.899,170.834
564
- c-8.049,38.103-29.041,56.013-49.807,63.56c-47.862,17.418-78.787-16.148-130.191-16.148c-51.395,0-82.299,33.567-130.181,16.148
565
- c-20.756-7.537-41.759-25.457-49.828-63.56c-14.49-68.68, 32.512-116.961, 40.95-170.834c 4.393-28.426-4.536-60.293, 3.912-124.314
566
- C 128.051,34.97, 143.247-21.76, 172.81-21.76c 34.929,0, 30.269,64.522, 26.194,117.033c-1.188,15.821-2.089,29.471-1.239,38.83
567
- C 201.288,173.23, 218.368,200.776, 254.433,200.776z" data-tags="dentist" />
568
- <glyph unicode="&#xe059;" d="M 201.38,345.129l-75.069,0 L 126.31,419.133 l 20.47,0 L 146.78,459.52 L 10.24,459.52 l0-40.387 l 20.48,0 l0-114.381 c0-29.737, 24.453-53.832, 54.61-53.832l 116.050,0 l0-20.193 l 40.97,0 L 242.35,365.302 l-40.97,0
569
- L 201.38,345.129 zM 481.26,176.906l0,114.381 c0,29.727-24.443,53.832-54.569,53.832L 310.62,345.119 l0,20.173 l-40.97,0 l0-134.584 l 40.97,0 l0,20.204 l 75.080,0 l0-74.004 l-20.449,0
570
- l0-40.387 L 501.76,136.52 l0,40.387 L 481.26,176.906 zM 470.743,25.385c0,20.419-37.253,77.486-37.253,77.486s-37.816-57.068-37.816-77.486c0-20.378, 16.814-36.905, 37.54-36.905
571
- C 453.929-11.52, 470.743,5.007, 470.743,25.385z" data-tags="plumber" />
572
- <glyph unicode="&#xe05b;" d="M 94.925,285.44l 40.1,0 l 6.164-184.32L 89.59,101.12 L 94.925,285.44L 94.925,285.44z M 61.44,90.88l 389.12,0 l0-20.48 l 30.72,0 l0-30.72 l 20.48,0 l0-20.48 L 10.24,19.2 l0,20.48 l 20.48,0 l0,30.72 l 30.72,0 L 61.44,90.88 L 61.44,90.88z M 471.040,338.565L 256.020,428.8L 40.96,338.565L 40.96,326.4
573
- l 430.080,0 L 471.040,338.565 L 471.040,338.565z M 81.92,316.16l 348.16,0 l0-20.48 L 81.92,295.68 L 81.92,316.16 z M 376.177,285.44l 40.079,0 l 6.216-184.32l-51.671,0 L 376.177,285.44z M 282.46,285.44l 40.079,0 l 6.144-184.32l-51.62,0 L 282.46,285.44
574
- L 282.46,285.44z M 188.723,285.44l 40.090,0 l 6.103-184.32l-51.599,0 L 188.723,285.44z" data-tags="museum" />
575
- <glyph unicode="&#xe05a;" d="M 277.668,202.957C 275.313,204.39, 276.48,205.711, 266.24,206.93l0-29.665 c0,0.287, 4.424,0.635, 5.612,1.044
576
- c 7.598,2.662, 11.407,7.629, 11.407,14.858C 283.259,197.356, 281.385,200.653, 277.668,202.957zM 231.578,251.361c0-4.557, 2.079-7.987, 6.216-10.24c 1.587-0.891, 4.26-1.884, 7.956-2.959l0,28.068
577
- c-3.011-0.707-5.652-1.772-7.875-3.226C 233.677,260.219, 231.578,256.328, 231.578,251.361zM 256,326.4c-50.903,0-92.16-45.855-92.16-102.4c0-56.535, 41.257-102.4, 92.16-102.4c 50.903,0, 92.16,45.865, 92.16,102.4C 348.16,280.545, 306.903,326.4, 256,326.4z M 295.465,166.103
578
- C 288.512,160.164, 276.48,156.529, 266.24,155.156L 266.24,142.080 l-20.48,0 l0,13.312 c-10.691,1.454-19.548,3.072-26.501,8.55C 209.613,171.54, 204.8,183.040, 204.8,193.28l 25.477,0
579
- c 0.829,0, 2.447-8.202, 4.864-11.1c 2.509-2.98, 6.072-3.328, 10.619-4.588l0,34.867 c-12.462,2.877-21.146,5.98-25.969,9.318
580
- c-8.612,5.888-12.913,15.114-12.913,27.648c0,11.438, 4.209,20.941, 12.636,28.508c 6.431,5.786, 15.196,9.339, 26.245,10.711L 245.76,305.92 l 20.48,0 l0-17.818
581
- c 10.24-1.526, 17.162-6.277, 23.552-11.018C 299.407,269.947, 306.176,264.96, 306.637,244.48l-25.661,0 c-0.481,10.24-5.622,14.664-12.001,17.9
582
- C 268.636,262.543, 266.24,264.356, 266.24,264.499l0-32.184 l 9.236-1.782c 9.82-2.314, 18.903-5.407, 23.798-9.267c 7.619-6.021, 10.568-14.715, 10.568-26.081
583
- C 309.862,183.511, 304.476,173.824, 295.465,166.103zM 440.32,357.12L 71.68,357.12 L0,357.12 l0-71.68 l0-122.88 l0-71.68 l 71.68,0 l 368.64,0 l 71.68,0 l0,71.68 L 512,285.44 l0,71.68 L 440.32,357.12 z M 491.52,159.785c-23.839-6.584-41.841-24.566-48.425-48.425L 68.905,111.36
584
- c-6.595,23.839-24.576,41.841-48.425,48.425L 20.48,288.215 c 23.849,6.595, 41.83,24.576, 48.425,48.425l 374.426,0 c 6.881-23.112, 25.078-41.308, 48.189-48.189L 491.52,159.785 z
585
- " data-tags="finance" />
586
- <glyph unicode="&#xe05c;" d="M 303.278,480L 71.68,480 l0-512 l 112.64,0 L 184.32,131.84 l 118.958,0 c 127.631,0, 177.091,101.079, 177.091,184.525C 480.369,399.38, 430.909,480, 303.278,480z M 272.425,234.24L 184.32,234.24 L 184.32,387.84 l 88.105,0
587
- c 52.357,0, 99-11.551, 99-76.667C 371.415,245.658, 324.782,234.24, 272.425,234.24zM-163.84,469.76L-163.84,469.76L-163.84,469.76L-163.84,469.76z" data-tags="parking" />
588
- <glyph unicode="&#xe05d;" d="M 185.344,228.68L 91.095,281.825L 123.853,339.272L 218.122,286.157 zM 373.453,179.651L 214.2,269.353L 197.827,240.599L 357.059,150.886 zM 392.786,168.745L 376.361,140.012L 458.486,93.788L 474.911,122.491 zM 370.668,140.012c-1.26-2.243-4.7-2.775-7.69-1.137l0,0c-2.98,1.679-4.301,4.864-3.031,7.137l 19.2,33.638
589
- c 1.321,2.284, 4.762,2.836, 7.721,1.137l0,0c 2.939-1.679, 4.27-4.936, 3-7.219L 370.668,140.012zM 491.827,121.59c-3.267,1.802-6.871,2.642-10.353,2.54l-21.002-36.782c 1.69-3.082, 4.209-5.775, 7.526-7.578
590
- c 9.257-5.243, 20.9-2.222, 25.989,6.676l 5.386,9.523C 504.474,104.929, 501.115,116.347, 491.827,121.59zM 227.236,297.226c-2.468-4.465-8.090-5.96-12.544-3.502l-82.493,46.51c-4.465,2.478-5.97,8.059-3.471,12.524l0,0
591
- c 2.509,4.383, 8.141,5.949, 12.595,3.42l 82.473-46.449C 228.219,307.2, 229.796,301.609, 227.236,297.226L 227.236,297.226zM 238.797,317.42c-2.54-4.454-8.161-5.96-12.564-3.482l-82.524,46.5c-4.434,2.478-5.99,8.069-3.451,12.462l0,0
592
- c 2.478,4.454, 8.11,6.001, 12.595,3.492l 82.493-46.459C 239.8,327.424, 241.316,321.823, 238.797,317.42L 238.797,317.42zM 169.083,195.113c-2.54-4.403-8.161-5.898-12.585-3.42l-82.555,46.51c-4.424,2.458-5.97,8.059-3.461,12.524l0,0
593
- c 2.509,4.321, 8.212,5.949, 12.585,3.42l 82.514-46.51C 170.015,205.169, 171.551,199.567, 169.083,195.113L 169.083,195.113zM 180.613,215.378c-2.509-4.454-8.131-5.949-12.636-3.43L 85.484,258.406c-4.403,2.529-5.97,8.12-3.471,12.524l0,0
594
- c 2.55,4.444, 8.172,5.949, 12.605,3.43l 82.483-46.459C 181.524,225.382, 183.122,219.771, 180.613,215.378L 180.613,215.378zM 42.179,132.649L 187.628,132.649L 187.628,115.927L 42.179,115.927zM 219.392,97.772c-0.932,5.581-5.755,9.861-11.622,9.861L 22.077,107.633 c-5.857,0-10.711-4.28-11.622-9.861L 10.24,97.772 l0-27.382 l 209.367,0 l0,27.382
595
- L 219.392,97.772 z" data-tags="courthouse" />
596
- <glyph unicode="&#xe05e;" d="M 419.84,469.76L 92.16,469.76 C 69.632,469.76, 51.2,451.328, 51.2,428.8l0-409.6 c0-22.528, 18.432-40.96, 40.96-40.96l 327.68,0 c 22.528,0, 40.96,18.432, 40.96,40.96L 460.8,428.8 C 460.8,451.328, 442.368,469.76, 419.84,469.76z M 174.080,60.16c0-11.264-9.216-20.48-20.48-20.48l-40.96,0
597
- c-11.264,0-20.48,9.216-20.48,20.48l0,10.24 c0,11.264, 9.216,20.48, 20.48,20.48l 40.96,0 c 11.264,0, 20.48-9.216, 20.48-20.48L 174.080,60.16 z M 174.080,142.080c0-11.264-9.216-20.48-20.48-20.48l-40.96,0 c-11.264,0-20.48,9.216-20.48,20.48l0,10.24 c0,11.264, 9.216,20.48, 20.48,20.48l 40.96,0
598
- c 11.264,0, 20.48-9.216, 20.48-20.48L 174.080,142.080 z M 174.080,224c0-11.264-9.216-20.48-20.48-20.48l-40.96,0 c-11.264,0-20.48,9.216-20.48,20.48l0,10.24 c0,11.264, 9.216,20.48, 20.48,20.48l 40.96,0 c 11.264,0, 20.48-9.216, 20.48-20.48L 174.080,224 z M 296.96,60.16c0-11.264-9.216-20.48-20.48-20.48
599
- l-40.96,0 c-11.264,0-20.48,9.216-20.48,20.48l0,10.24 c0,11.264, 9.216,20.48, 20.48,20.48l 40.96,0 c 11.264,0, 20.48-9.216, 20.48-20.48L 296.96,60.16 z M 296.96,142.080c0-11.264-9.216-20.48-20.48-20.48l-40.96,0 c-11.264,0-20.48,9.216-20.48,20.48l0,10.24 c0,11.264, 9.216,20.48, 20.48,20.48l 40.96,0
600
- c 11.264,0, 20.48-9.216, 20.48-20.48L 296.96,142.080 z M 296.96,224c0-11.264-9.216-20.48-20.48-20.48l-40.96,0 c-11.264,0-20.48,9.216-20.48,20.48l0,10.24 c0,11.264, 9.216,20.48, 20.48,20.48l 40.96,0 c 11.264,0, 20.48-9.216, 20.48-20.48L 296.96,224 z M 419.84,60.16c0-11.264-9.216-20.48-20.48-20.48
601
- l-40.96,0 c-11.264,0-20.48,9.216-20.48,20.48l0,10.24 c0,11.264, 9.216,20.48, 20.48,20.48l 40.96,0 c 11.264,0, 20.48-9.216, 20.48-20.48L 419.84,60.16 z M 419.84,142.080c0-11.264-9.216-20.48-20.48-20.48l-40.96,0 c-11.264,0-20.48,9.216-20.48,20.48l0,10.24 c0,11.264, 9.216,20.48, 20.48,20.48l 40.96,0
602
- c 11.264,0, 20.48-9.216, 20.48-20.48L 419.84,142.080 z M 419.84,224c0-11.264-9.216-20.48-20.48-20.48l-40.96,0 c-11.264,0-20.48,9.216-20.48,20.48l0,10.24 c0,11.264, 9.216,20.48, 20.48,20.48l 40.96,0 c 11.264,0, 20.48-9.216, 20.48-20.48L 419.84,224 z M 419.84,316.16c0-11.264-9.216-20.48-20.48-20.48
603
- L 112.64,295.68 c-11.264,0-20.48,9.216-20.48,20.48L 92.16,398.080 c0,11.264, 9.216,20.48, 20.48,20.48l 286.72,0 c 11.264,0, 20.48-9.216, 20.48-20.48L 419.84,316.16 z" data-tags="accounting" />
604
- <glyph unicode="&#xe05f;" d="M 409.6,285.44l0-40.96 L 112.64,244.48 l0,40.96 L 409.6,285.44 M 419.84,295.68L 102.4,295.68 l0-61.44 l 317.44,0 L 419.84,295.68 L 419.84,295.68zM 261.755,449.628L0,264.96l 61.44,0 l0-36.936 L 61.44,39.68 l 40.96,0 L 102.4,193.28 l 81.92,0 l0-153.6 l 26.931,0 L 460.8,39.68 l0,8.98 L 460.8,228.024 L 460.8,264.96 l 51.2,0 L 261.755,449.628z M 430.080,101.12L 235.52,101.12 l0,92.16 l 194.56,0 L 430.080,101.12 z M 430.080,224L 92.16,224 l0,81.92 l 337.92,0 L 430.080,224
605
- z" data-tags="store" />
606
- <glyph unicode="&#xe060;" d="M 512-32l-0.154,256.604c0,141.117-114.545,255.447-255.662,255.447c-141.117,0-255.662-114.412-255.662-255.539l 2.058-256.87L 61.44-32.215
607
- l0,256.717 C 61.44,334.49, 146.043,423.639, 256,423.639c 109.978,0, 194.56-89.16, 194.56-199.148L 450.56-32 L 512-32 zM 339.937,60.918c0,0.276-0.297,0.778-0.942,1.72c0,0.266, 0.164,0.461, 0.492,0.635c 0.266,0.143, 0.451,0.307, 0.451,0.635
608
- c 8.806,3.635, 16.804,8.090, 23.951,13.414c 7.148,5.345, 11.325,13.169, 13.804,23.511C 377.969,102.031, 378.88,104.817, 378.88,109.066L 378.88,322.601
609
- c0,5.151-0.911,10.496-3.963,15.933c-3.031,5.53-6.523,10.476-11.162,14.868c-4.495,4.352-9.431,7.383-15.073,10.301
610
- C 343.050,366.592, 337.787,367.36, 332.595,367.36L 317.44,367.36 L 194.56,367.36 l-14.766,0 c-4.874,0-10.117-0.686-15.77-3.43c-5.642-2.734-10.834-5.908-15.524-10.189
611
- c-4.7-4.229-8.172-8.858-11.223-14.152C 134.267,334.193, 133.12,329.165, 133.12,323.942l0-216.719 c0-3.615, 0.553-7.455, 2.335-11.366
612
- c 1.833-3.983, 3.901-7.7, 6.636-11.141c 2.744-3.564, 5.622-6.769, 8.827-9.636c 3.195-2.888, 6.226-5.243, 9.298-7.045
613
- c 1.485-0.625, 4.127-1.577, 7.956-2.775c 3.779-1.219, 5.519-1.946, 5.233-2.519L 110.889-32l 36.465,0 l 45.65,61.44L 318.976,29.44 l 45.588-61.44l 36.925,0
614
- L 339.937,60.918z M 204.8,346.88c0,5.632, 4.608,10.24, 10.24,10.24l 81.92,0 c 5.632,0, 10.24-4.608, 10.24-10.24l0-10.24 c0-5.632-4.608-10.24-10.24-10.24l-81.92,0 c-5.632,0-10.24,4.608-10.24,10.24L 204.8,346.88 z M 164.495,296.858
615
- c 1.362,2.888, 2.427,5.509, 4.547,7.977c 2.161,2.437, 4.321,5.939, 7.199,7.465C 179.118,313.836, 181.77,316.16, 184.812,316.16L 194.56,316.16 l 122.88,0 l 9.267,0
616
- c 2.734,0, 5.448-2.202, 8.202-3.359c 2.744-1.229, 5.243-3.717, 7.547-5.827c 2.273-2.12, 3.174-4.833, 4.588-7.26
617
- C 348.385,297.339, 348.16,294.328, 348.16,291.594l0-48.374 c0-2.765, 0.133-5.335-1.362-7.936c-1.516-2.662-3.052-4.956-5.509-6.932
618
- c-2.447-1.935-4.772-2.437-7.506-3.615C 331.039,223.447, 328.52,224, 325.816,224L 185.723,224 c-0.338,0-1.096-0.952-2.304-0.707
619
- c-1.208,0.328-2.15,0.092-2.765,0.399c-5.151,0.901-8.315,3.369-12.288,7.936C 164.424,236.227, 163.84,240.916, 163.84,246.405l0,41.513
620
- C 163.84,290.959, 163.144,293.949, 164.495,296.858z M 203.274,99.482c-4.7-4.864-10.588-7.291-17.551-7.291c-6.994,0-12.708,2.427-17.132,7.291
621
- c-4.424,4.854-6.615,10.834-6.615,17.807c0,6.39, 2.304,11.93, 6.851,16.63c 4.557,4.731, 10.199,7.096, 16.896,7.096
622
- c 6.963,0, 12.841-2.243, 17.551-6.584c 4.721-4.485, 7.086-10.26, 7.086-17.623C 210.36,110.111, 207.995,104.325, 203.274,99.482z M 307.753,99.482
623
- c-4.69,4.854-7.055,10.834-7.055,17.807c0,7.025, 2.488,12.667, 7.516,17.152c 5.048,4.342, 10.885,6.584, 17.613,6.584
624
- c 6.943,0, 12.657-2.365, 17.060-7.096c 4.434-4.7, 6.646-10.24, 6.646-16.63c0-6.984-2.263-12.964-6.871-17.807
625
- c-4.547-4.864-10.332-7.291-17.336-7.291C 318.331,92.191, 312.494,94.618, 307.753,99.482z" data-tags="subway_station" />
626
- <glyph unicode="&#xe061;" d="M 122.88,469.76L 215.040,469.76L 215.040,398.080L 122.88,398.080zM 314.604,174.623c-8.94,0-17.644,9.124-17.644,18.125L 296.96,377.6 l 145.275,0 l 59.689-254.751L 501.76,107.735L 501.76-5.478 c0-8.704-7.24-16.282-15.862-16.282
627
- L 348.467-21.76 C 339.937-21.76, 337.92-14.182, 337.92-5.478L 337.92,172.8 l-20.48,0 M 197.437,174.418c 8.868,0, 17.603,8.796, 17.603,17.859L 215.040,377.6 L 69.857,377.6 L 10.097,122.706L 10.24,107.264l0-113.183 C 10.24-14.664, 17.48-21.76, 26.092-21.76l 137.267,0
628
- C 172.104-21.76, 174.080-14.664, 174.080-5.919L 174.080,172.8 l 20.48,0 M 235.52,377.6L 276.48,377.6L 276.48,203.52L 235.52,203.52zM 296.96,469.76L 399.36,469.76L 399.36,398.080L 296.96,398.080z" data-tags="natural_feature" />
629
- <glyph unicode="&#xe062;" d="M 261.673,109.599c 36.874-172.145, 244.931-31.222, 38.298,88.689c 227.738-132.178, 228.28,183.46, 0.461,51.384
630
- c 227.82,132.065-44.206,289.946-44.257,25.692c 0.051,264.253-272.015,106.496-44.308-25.692c-227.707,132.198-227.973-183.45-0.195-51.364
631
- c-206.746-119.849, 0.84-260.936, 37.724-88.443L 261.673,109.599z M 228.772,223.969c0,15.217, 12.268,27.525, 27.382,27.525
632
- c 15.124,0, 27.372-12.308, 27.372-27.525c0-15.196-12.247-27.525-27.372-27.525C 241.050,196.454, 228.772,208.773, 228.772,223.969z" data-tags="florist" />
633
- <glyph unicode="&#xe063;" d="M 500.675,324.823L 460.38,8.96L 324.28,8.96 l-40.131,317.44l 166.154,0 l 32.84,113.428L 501.76,434.217l-31.508-109.158L 500.675,324.823zM 264.909,142.080c0,0, 5.089,40.96-65.485,40.96L 87.030,183.040 c-70.472,0-65.485-40.96-65.485-40.96L 264.909,142.080 zM 21.545,49.92c0,0-4.987-40.96, 65.485-40.96l 112.404,0 c 70.574,0, 65.485,40.96, 65.485,40.96L 21.545,49.92 zM 254.351,70.4c 11.551,0, 20.879,11.407, 20.879,25.59c0,14.264-9.329,25.61-20.879,25.61L 31.13,121.6
634
- C 19.63,121.6, 10.24,110.254, 10.24,95.99C 10.24,81.807, 19.63,70.4, 31.13,70.4L 254.351,70.4 z" data-tags="food" />
635
- <glyph unicode="&#xe064;" d="M-163.84,469.76L-163.84,469.76L-163.84,469.76L-163.84,469.76zM 481.28,387.84L 327.68,387.84 c0,0-10.24-81.92, 10.24-163.84c 8.233-13.722, 28.57-21.115, 51.2-22.989L 389.12,101.12 l-3.41,0 L 348.16,70.4l 112.64,0 l-36.7,30.72L 419.84,101.12 l0,100.639
636
- c 21.709,2.816, 41.605,10.383, 51.2,22.241C 491.52,295.68, 481.28,387.84, 481.28,387.84z M 471.040,326.4L 337.92,326.4 l0,51.2 l 133.12,0 L 471.040,326.4 zM 220.16,101.12L 163.84,101.12 l0,87.040 L 276.48,357.12L 10.24,357.12 l 112.64-168.96L 122.88,101.12 L 66.56,101.12 C 58.071,101.12, 51.2,94.239, 51.2,85.76S 58.071,70.4, 66.56,70.4l 153.6,0 c 8.489,0, 15.36,6.881, 15.36,15.36
637
- S 228.649,101.12, 220.16,101.12z" data-tags="night_club" />
638
- <glyph unicode="&#xe065;" d="M 256,469.76l 72.52-123.965L 471.040,345.764l-71.25-121.754L 471.040,102.216l-142.5-0.020L 256-21.76l-72.53,123.955L 40.96,102.216l 71.25,121.795L 40.96,345.764
639
- l 142.52,0.031L 256,469.76z M 163.041,223.898L 209.009,142.080l 93.85,0 l 46.090,81.818L 302.868,305.92l-93.706,0 L 163.041,223.898z M 353.679,142.080l 41.38,0 l-20.675,35.359
640
- L 353.679,142.080z M 116.91,142.080l 41.39,0 l-20.705,35.369L 116.91,142.080z M 235.428,346.88l 41.39,0 l-20.695,35.348L 235.428,346.88z M 374.385,270.582L 395.059,305.92l-41.38,0
641
- L 374.385,270.582z M 137.595,270.561L 158.29,305.92l-41.39,0 L 137.595,270.561z M 256.123,65.792L 276.818,101.12L 235.418,101.12 L 256.123,65.792z" data-tags="synagogue" />
642
- <glyph unicode="&#xe066;" d="M 467.958,232.755l-80.794,136.12C 383.949,374.856, 376.187,377.6, 369.541,377.6L 296.96,377.6 L 296.96,439.040 c0,11.264-9.216,20.48-20.48,20.48l-51.2,0 c-11.264,0-20.48-9.216-20.48-20.48l0-61.44 l-61.030,0
643
- c-6.656,0-14.746-2.744-17.961-8.724L 44.698,231.68C 31.375,231.68, 20.48,221.573, 20.48,207.903l0-124.303 C 20.48,69.929, 31.375,60.16, 44.698,60.16L 71.68,60.16 l0-38.707
644
- C 71.68,0.932, 85.279-11.52, 105.257-11.52l 12.114,0 C 137.349-11.52, 153.6,0.932, 153.6,21.453L 153.6,60.16 l 204.8,0 l0-38.707 c0-20.521, 17.551-32.973, 37.53-32.973l 12.124,0
645
- C 428.032-11.52, 440.32,0.932, 440.32,21.453L 440.32,60.16 l 28.293,0 C 481.925,60.16, 491.52,69.929, 491.52,83.599L 491.52,207.903 C 491.52,221.573, 481.28,232.755, 467.958,232.755z M 87.091,133.325
646
- c-16.722,0-30.29,13.906-30.29,31.068c0,17.172, 13.558,31.078, 30.29,31.078s 30.28-13.906, 30.28-31.078
647
- C 117.371,147.231, 103.823,133.325, 87.091,133.325z M 105.257,234.24l 55.132,96.020C 163.379,336.384, 171.274,336.64, 177.93,336.64l 157.45,0
648
- c 6.656,0, 14.551-0.256, 17.531-6.38L 408.054,234.24L 105.257,234.24 z M 426.209,133.325c-16.712,0-30.28,13.906-30.28,31.068
649
- c0,17.172, 13.568,31.078, 30.28,31.078c 16.722,0, 30.29-13.906, 30.29-31.078C 456.499,147.231, 442.931,133.325, 426.209,133.325z" data-tags="taxi_stand" />
650
- <glyph unicode="&#xe067;" d="M 499.292,395.735C 496.814,406.876, 496.66,408.32, 471.644,408.32l-25.149,0 l-5.028,13.814c-6.636,20.040-28.938,39.137-51.159,44.708
651
- c-12.861,3.215-58.675,3.779-170.486,3C 79.258,468.859, 65.71,468.060, 51.804,461.804C 20.675,447.816, 3.523,412.549, 12.718,381.491
652
- c 6.42-21.647, 19.917-37.673, 39.086-46.285c 13.896-6.246, 27.443-6.902, 168.008-7.875c 111.8-0.788, 157.624,0.102, 170.476,3.328
653
- c 22.292,5.581, 44.534,25.364, 51.231,45.588c 5.048,15.206, 5.274,15.36, 21.76,14.275l 16.64-1.096l 1.106-52.49l 1.096-52.48l-48.773-11.52
654
- c-26.788-6.339-60.344-14.438-74.547-18.012c-14.193-3.564-48.589-11.93-76.431-18.586l-50.627-12.114l-0.010-26.583
655
- c-0.010-26.419, 2.304-26.665-13.476-39.854L 204.8,144.527l0-83.149 l0,0L 204.8-21.76 l 34.857,0 L 276.48-21.76 l0,83.139 l0,83.149 l-14.653,13.435
656
- c-15.626,13.066-15.34,14.019-14.152,34.12l 1.546,20.664l 18.063,4.495c 9.841,2.488, 41.185,10.107, 69.581,16.978
657
- c 28.396,6.851, 77.148,18.616, 108.288,26.153L 501.76,274.053l0,54.559 C 501.76,358.595, 500.644,389.55, 499.292,395.735z M 253.696,22.927
658
- c0-8.622-1.628-10.404-10.394-11.315c-11.039-1.126-15.811,4.342-13.455,15.401c 0.922,4.311, 4.721,6.175, 12.585,6.175
659
- C 252.426,33.178, 253.696,32.010, 253.696,22.927z" data-tags="painter" />
660
- <glyph unicode="&#xe068;" d="M 354.724,92.856c0,0.348-0.399,1.065-1.157,2.212c0,0.328, 0.215,0.625, 0.584,0.829c 0.358,0.215, 0.584,0.44, 0.584,0.829
661
- c 10.762,4.444, 20.541,9.943, 29.297,16.425c 8.745,6.554, 14.602,16.118, 17.623,28.764c 0.317,1.495, 1.116,4.905, 2.202,10.117L 403.855,413.368
662
- c0,6.308-1.884,12.851-5.601,19.507c-3.717,6.769-8.356,12.82-13.978,18.196c-5.56,5.325-11.756,9.841-18.678,13.425
663
- C 358.676,468.019, 352.082,469.76, 345.743,469.76L 158.71,469.76 c-5.97,0-12.411-1.638-19.302-4.987c-6.912-3.359-13.251-7.649-18.985-12.872
664
- c-5.755-5.171-10.516-11.059-14.234-17.541c-3.727-6.605-5.601-12.974-5.601-19.354l0-265.226 c0-4.465, 1.178-9.124, 3.348-13.957
665
- c 2.253-4.854, 5.038-9.39, 8.376-13.629c 3.338-4.362, 7.014-8.264, 10.926-11.776s 7.711-6.42, 11.448-8.643
666
- c 1.802-0.758, 5.11-1.925, 9.8-3.41c 4.588-1.475, 6.738-2.57, 6.39-3.287L 74.322-21.105l 44.657,0 l 55.88,80.988l 154.163,0 l 55.818-80.988L 430.080-21.105
667
- L 354.724,92.856z M 207.811,447.447c0,1.874, 0.891,3.789, 2.796,5.888c 1.833,2.038, 3.686,3.021, 5.581,3.021l 71.496,0
668
- c 0.717,0, 2.263-0.717, 4.485-2.181c 2.202-1.495, 3.318-2.98, 3.318-4.465l0-27.361 c0-1.874-0.942-3.594-2.775-5.018
669
- c-1.884-1.536-3.584-2.314-5.018-2.314l-72.038,0 c-1.167,0.778-1.874,1.331-2.273,1.772c-1.075,0.717-2.324,1.7-3.615,3.082
670
- c-1.311,1.249-1.956,2.621-1.956,4.106L 207.811,447.447 z M 135.752,370.934c0,3.717, 0.881,7.363, 2.529,10.916c 1.659,3.533, 3.82,6.758, 6.42,9.779
671
- c 2.621,2.99, 5.693,5.335, 9.196,7.209c 3.564,1.884, 7.219,2.806, 10.936,2.806l 173.701,0 c 3.297,0, 6.656-0.778, 10.004-2.191
672
- c 3.359-1.495, 6.42-3.584, 9.236-6.164C 360.581,390.707, 362.783,387.84, 364.483,384.87c 1.659-2.908, 2.478-6.103, 2.478-9.452l0-59.218
673
- c0-3.359-0.901-6.533-2.765-9.728c-1.864-3.246-4.28-6.052-7.26-8.468c-3.021-2.376-6.124-4.342-9.503-5.775
674
- c-3.338-1.587-6.697-2.253-10.025-2.253L 165.949,289.976 c-0.41,0-1.341,0.174-2.826,0.502c-1.475,0.389-2.621,0.758-3.369,1.157
675
- c-6.298,1.085-11.868,4.454-16.722,10.056c-4.854,5.591-7.281,11.715-7.281,18.401L 135.752,370.934 z M 187.453,140.268
676
- c-5.765-5.949-12.984-8.919-21.504-8.919c-8.571,0-15.565,2.97-20.992,8.919c-5.386,5.939-8.079,13.251-8.079,21.821
677
- c0,7.813, 2.806,14.582, 8.407,20.337c 5.571,5.786, 12.462,8.714, 20.664,8.714c 8.52,0, 15.729-2.765, 21.504-8.079
678
- c 5.775-5.458, 8.653-12.554, 8.653-21.555C 196.106,153.303, 193.229,146.207, 187.453,140.268z M 315.341,140.268
679
- c-5.755,5.939-8.684,13.251-8.684,21.821c0,8.581, 3.062,15.514, 9.216,20.972c 6.164,5.325, 13.322,8.079, 21.545,8.079
680
- c 8.499,0, 15.524-2.918, 20.92-8.714c 5.376-5.755, 8.12-12.534, 8.12-20.337c0-8.571-2.816-15.882-8.397-21.821
681
- c-5.622-5.949-12.657-8.919-21.258-8.919C 328.264,131.348, 321.096,134.318, 315.341,140.268z" data-tags="train_station" />
682
- <glyph unicode="&#xe069;" d="M 256,260.116c 28.713,0, 52.818-19.456, 59.628-45.763c 8.561-32.983, 7.404-69.13, 45.036-87.9c 33.403-11.366, 46.039-25.651, 46.039-63.949
683
- c0-30.566-26.153-63.058-59.873-67.113c-37.704-5.663-67.052,1.741-90.839,15.299c-23.788-13.558-53.146-20.972-90.798-15.299
684
- c-33.741,4.055-59.884,36.659-59.884,67.113c0,37.478, 13.486,53.34, 46.828,64.205c 41.032,20.961, 35.523,57.702, 44.677,89.262
685
- C 204.216,241.469, 227.912,260.116, 256,260.116L 256,260.116z M 443.976,282.89c-10.168,8.837-51.671-25.661-64.727-42.721
686
- c-7.936-9.103-12.872-21.617-12.872-35.42c0-27.761, 19.866-50.268, 44.308-50.268c 18.596,0, 34.509,12.933, 41.093,31.324
687
- C 464.568,218.88, 465.275,264.397, 443.976,282.89L 443.976,282.89z M 68.004,282.89C 46.735,264.397, 47.421,218.88, 60.232,185.805
688
- c 6.584-18.391, 22.487-31.324, 41.073-31.324c 24.463,0, 44.308,22.508, 44.308,50.268c0,13.804-4.925,26.317-12.861,35.42
689
- C 119.685,257.229, 78.193,291.727, 68.004,282.89L 68.004,282.89z M 310.63,464.21c 103.301-17.531, 96.051-191.508, 13.343-177.49
690
- c-23.859,4.055-41.574,25.784-44.268,51.743C 276.972,364.861, 270.817,470.948, 310.63,464.21L 310.63,464.21z M 201.37,464.21
691
- c 39.823,6.748, 33.659-99.338, 30.925-125.737c-2.693-25.969-20.388-47.688-44.247-51.743C 105.318,272.691, 98.079,446.679, 201.37,464.21z" data-tags="pet_store" />
692
- <glyph unicode="&#xe06a;" d="M 461.844,376.781c 5.622,5.622, 13.537,11.735, 21.617,19.108l 7.465,6.257l-20.347,22.835L 463.933,418.765
693
- c-28.119-25.549-45.036-40.991-53.299-72.643c-8.202-31.468-8.53-63.324-7.67-93.102c 0.901-30.7, 2.058-50.954, 10.639-73.544l 3.236-8.325
694
- c 8.233-20.716, 20.695-52.009, 20.695-92.262c0-48.63-19.702-73.298-58.552-73.298c-35.348,0-54.415,23.593-56.648,70.205
695
- c-1.014,20.654, 4.782,46.152, 10.875,73.093c 5.151,22.743, 10.455,46.275, 13.066,71.25c 2.888,27.535-0.727,47.217-11.305,59.034
696
- C 321.393,294.339, 300.493,295.68, 282.081,295.68L 276.48,295.68 L 276.48,437.617 C 276.48,449.905, 267.561,459.52, 255.345,459.52L 43.981,459.52 C 31.785,459.52, 20.48,449.905, 20.48,437.617L 20.48-11.52 l 256,0 L 276.48,264.96 l 5.612,0
697
- c 12.595,0, 25.641-1.413, 30.075-6.359c 2.376-2.662, 6.021-11.284, 3.615-34.54c-2.427-23.183-7.567-46.111-12.524-67.953
698
- c-6.564-29.071-12.79-56.719-11.561-81.644c 3.021-63.273, 34.857-99.635, 87.286-99.635c 55.88,0, 89.242,38.892, 89.242,104.12
699
- c0,46.172-14.285,82.145-22.856,103.7l-3.092,7.854c-6.164,16.271-7.547,31.355-8.397,57.672c 9.861,0.225, 21.801,0.461, 27.167,0.461
700
- c 12.278,0, 18.452,7.199, 21.084,19.671c 1.536,7.27-0.84,16.804-0.84,34.109l0,4.588 C 481.28,352.748, 474.286,365.814, 461.844,376.781z M 245.76,285.44L 51.2,285.44 L 51.2,418.56 l 194.56,0
701
- L 245.76,285.44 z M 450.56,302.377c0-8.94, 2.355-17.49, 2.058-22.927c-6.124-0.092-13.169-0.256-20.337-0.42c 0.266,19.753, 2.458,39.864, 7.506,59.228
702
- c 1.372,5.161, 0.963,9.708, 3.031,13.947C 448.276,346.952, 450.56,339.077, 450.56,306.985L 450.56,302.377 z" data-tags="gas_station" />
703
- <glyph unicode="&#xe06b;" d="M 258.478,458.609L 10.24,244.48l 61.44,0 l0-256 l 368.64,0 L 440.32,244.48 l 61.44,0 L 258.478,458.609z M 348.16,172.8l-71.68,0 l0-123.781 L 276.009,49.92l-48.896,0 L 225.28,49.019L 225.28,172.8 l-61.44,0 l0,40.96 l 61.44,0 l0,92.16 l 51.2,0 l0-92.16 l 71.68,0 L 348.16,172.8 z" data-tags="funeral_home" />
704
- <glyph unicode="&#xe06c;" d="M 256,469.76C 154.235,469.76, 71.68,388.772, 71.68,288.881L 71.68-21.76 l 368.64,0 L 440.32,288.881 C 440.32,388.772, 357.827,469.76, 256,469.76z" data-tags="cemetery" />
705
- <glyph unicode="&#xe06d;" d="M 323.277,171.192c0,0-19.22,48.056-37.868,93.942c0,0-6.246,27.576-1.362,64.174c0,0, 13.271,55.941, 5.888,82.391
706
- c0,0-11.336,22.661-34.888,24.238c0,0-32.502-2.294-38.574-33.915c0,0-1.587-18.227, 3.461-39.26c0,0, 18.196-69.601-1.761-115.026
707
- c0,0-27.843-58.173-30.054-71.496c0,0-10.424-56.996-0.164-98.97c0,0, 21.545-71.813, 37.315-95.601c0,0, 31.99-8.161, 59.433,0.727
708
- c0,0, 32.901,53.268, 39.475,101.407C 324.198,83.804, 332.411,134.666, 323.277,171.192zM 425.769,205.025c0,0-19.21,48.067-37.939,93.932c0,0-6.236,27.587-1.372,64.123c0,0, 13.292,55.941, 5.888,82.452
709
- c0,0-11.284,22.661-34.857,24.218c0,0-32.512-2.284-38.574-33.894c0,0-1.597-18.237, 3.512-39.27c0,0, 18.207-69.663-1.812-115.016
710
- c0,0-4.321-9.124-9.708-20.818c 17.48-42.957, 34.273-84.92, 34.273-84.92l 0.266-0.727l 0.174-0.717c 9.605-38.205, 1.434-89.569, 1.137-91.474
711
- c-3.113-22.876-11.735-46.264-20.244-65.331c 0.379-0.686, 0.85-1.475, 1.26-2.079c0,0, 31.959-8.172, 59.433,0.778
712
- c0,0, 32.881,53.197, 39.465,101.366C 426.67,117.658, 434.913,168.509, 425.769,205.025zM 196.864,252.099c 1.085,2.386, 1.987,5.018, 2.836,7.598c-4.997,12.411-10.445,25.743-15.821,39.035c0,0-6.308,27.648-1.372,64.174
713
- c0,0, 13.281,55.89, 5.908,82.401c0,0-11.336,22.671-34.898,24.228c0,0-32.532-2.345-38.564-33.833c0,0-1.577-18.309, 3.523-39.281
714
- c0,0, 18.207-69.642-1.812-115.067c0,0-27.843-58.184-30.065-71.496c0,0-10.435-57.006-0.164-98.97c0,0, 21.545-71.823, 37.304-95.549
715
- c0,0, 32-8.233, 59.433,0.737c0,0, 0.635,0.993, 1.71,2.847c-10.035,26.399-18.248,53.576-18.872,55.767c-10.67,43.745-0.399,101.079,0,103.27
716
- C 168.325,192.133, 192.215,242.473, 196.864,252.099z" data-tags="bowling_alley" />
717
- <glyph unicode="&#xe06e;" d="M 83.446,315.525l 62.054,0 l-0.543-36.608l-61.512-55.357L 83.446,315.525 L 83.446,315.525zM 255.048,335.79L 10.24,119.869L 36.045,90.88l 220.006,194.089L 476.017,90.88L 501.76,119.869L 256.993,335.79L 256,336.64L 255.048,335.79z" data-tags="roofing_contractor" />
718
- <glyph unicode="&#xe06f;" d="M 359.434,372.951c 19.241,0, 34.806,16.005, 34.806,35.789c0,19.661-15.575,35.676-34.806,35.676c-19.098,0-34.683-16.005-34.683-35.676
719
- C 324.751,388.956, 340.326,372.951, 359.434,372.951zM 385.3,364.943l-50.698,0 l-86.405,88.893c-6.748,7.301-17.961,7.649-25.068,0.594c-7.096-6.943-7.444-18.483-0.676-25.784
720
- l 90.296-93.010l0-308.244 c0-11.182, 8.704-20.122, 19.456-20.122c 10.875,0, 19.569,8.94, 19.569,20.122L 351.775,194.58 l 15.79,0 l 0.123-167.199
721
- c0-11.182, 8.806-20.122, 19.558-20.122c 10.783,0, 19.466,8.94, 19.466,20.122L 406.6,335.616l 90.307,93.010c 6.748,7.301, 6.4,18.842-0.696,25.784
722
- c-7.086,7.055-18.309,6.717-25.068-0.594L 385.3,364.943zM 201.605,228.956c-5.263,5.54-12.483,8.827-20.48,8.827l-72.694,0 c-8.008,0-15.217-3.297-20.367-8.827l-72.919-75.008
723
- c-6.748-7.301-6.513-18.831, 0.584-25.784c 7.086-6.943, 18.432-6.707, 25.068,0.594l 56.535,58.163l0-77.701 L 33.925,109.22
724
- c-11.663,0-21.074-9.646-21.074-21.668c0-6.236, 2.294-11.776, 6.42-15.78l 71.414-73.462c 6.298-9.544, 18.657-12.605, 28.508-6.707
725
- c 10.404,6.113, 13.855,19.651, 7.895,30.239l-40.745,41.81l 0.799-0.113l 116.972,0 l-40.858-41.8c-5.837-10.598-2.406-24.136, 7.885-30.249
726
- c 9.851-5.898, 22.333-2.847, 28.631,6.697l 71.414,73.462c 4.106,4.014, 6.41,9.554, 6.41,15.78c0,12.022-9.39,21.658-21.053,21.658l-63.304,0
727
- l0,76.892 l 55.511-57.334c 6.758-7.311, 17.961-7.547, 25.057-0.594c 7.096,6.943, 7.342,18.483, 0.584,25.774L 201.605,228.956zM 145.531,245.443c 19.108,0, 34.56,15.995, 34.56,35.676c0,19.784-15.452,35.676-34.56,35.676c-19.128,0-34.703-15.892-34.703-35.676
728
- C 110.828,261.437, 126.413,245.443, 145.531,245.443z" data-tags="physiotherapist" />
729
- <glyph unicode="&#xe070;" d="M 117.371,469.76c-13.957,0-25.211-11.54-25.211-25.866l0-25.866 l0-25.876 l0-155.208 l0-232.817
730
- c0-12.923, 12.605-25.876, 25.211-25.876c 12.595,0, 25.201,12.964, 25.201,25.876l0,265.155 c 8.612,3.758, 16.988,6.472, 25.211,6.472
731
- c 50.412,0, 124.774-64.686, 176.445-64.686c 22.026,0, 53.565,8.919, 75.612,25.876l0,181.084 c-25.006-19.241-50.34-38.81-75.612-38.81
732
- c-50.412,0-125.86,64.676-176.445,64.676c-8.499,0-16.794-1.556-25.211-3.236l0,3.236 C 142.572,458.22, 131.318,469.76, 117.371,469.76z" data-tags="embassy" />
733
- <glyph unicode="&#xe071;" d="M 79.288,256.768l 35.686,0 l0-229.376 l 53.545,0 L 168.52,224 l 53.545,0 l0-196.608 l 53.535,0 L 275.599,224 l 53.555,0 l0-196.608 l 53.545,0 L 382.7,256.768 l 35.676,0 c 9.861,0, 17.859,7.332, 17.859,16.384
734
- c0,5.468-2.949,10.281-7.444,13.251l 0.031,0.031l-0.266,0.154c-0.154,0.102-0.317,0.184-0.461,0.276l-170.342,88.156L 257.751,400.845
735
- c 31.457-14.459, 57.354,10.445, 98.15-4.526L 355.901,453.366 c-40.817,14.971-66.703-9.912-98.15,4.536L 257.751,461.568 c0,4.536-3.983,8.192-8.919,8.192
736
- S 239.923,466.104, 239.923,461.568l0-86.548 L 69.581,286.884c-0.154-0.092-0.307-0.195-0.461-0.276l-0.256-0.174l0-0.031
737
- c-4.475-2.97-7.414-7.793-7.414-13.251C 61.44,264.1, 69.437,256.768, 79.288,256.768zM 97.126,10.998L 61.44-21.76L 436.244-21.76L 400.538,10.998 z" data-tags="city_hall" />
738
- <glyph unicode="&#xe072;" d="M 421.499,224L 93.614,224 c-9.554,0-17.418,8.212-17.418,17.551c0,1.556, 0.287,3.318, 0.604,4.731l 17.449,121.846
739
- C 95.734,376.044, 102.861,377.6, 111.391,377.6l 292.383,0 c 8.468,0, 15.657-1.423, 17.121-9.308l 17.449-124.068c 0.266-1.444, 0.614-2.294, 0.614-3.85
740
- C 438.948,231.035, 431.043,224, 421.499,224z M 408.381,87.347c-18.463,0-33.434,14.531-33.434,32.645c0,17.992, 14.971,32.502, 33.434,32.502
741
- c 18.34,0, 33.341-14.51, 33.341-32.502C 441.723,101.878, 426.721,87.347, 408.381,87.347z M 106.291,87.347c-18.33,0-33.311,14.531-33.311,32.645
742
- c0,17.992, 14.981,32.502, 33.311,32.502c 18.514,0, 33.464-14.51, 33.464-32.502C 139.756,101.878, 124.805,87.347, 106.291,87.347z M 163.84,449.28l 204.8,0 l0-30.72 L 163.84,418.56
743
- C 143.36,418.56, 143.36,449.28, 163.84,449.28z M 452.628,402.278c-5.98,28.805-23.45,40.407-51.948,51.999c-28.447,11.551-94.372,25.395-143.954,25.395
744
- c-49.797,0-116.060-13.855-144.538-25.395C 83.702,442.675, 66.519,431.084, 60.59,402.278L 40.96,241.93L 40.96,19.2 l 30.72,0 l0-20.48 c0-40.96, 51.2-40.96, 51.2,0l0,20.48 l 256,0 l0-20.48 c0-40.96, 61.44-40.96, 61.44,0l0,20.48 l 30.72,0
745
- L 471.040,241.93 L 452.628,402.278z" data-tags="bus_station" />
746
- <glyph unicode="&#xe073;" d="M 175.104,213.76l 152.269,0 l-50.104,133.12l-51.948,0 L 175.104,213.76z M 92.16,346.88L 92.16,387.84 l 327.68,0 l0-40.96 l-80.599,0 l 50.227-133.12L 512,213.76 l0-40.96 L 408.197,172.8 l 58.665-143.36l-56.924,0 l-58.655,143.36L 161.608,172.8
747
- L 103.219,29.44L 46.285,29.44 l 58.337,143.36L0,172.8 l0,40.96 l 123.31,0 l 50.186,133.12L 92.16,346.88 z" data-tags="park" />
748
- <glyph unicode="&#xe074;" d="M 471.040,152.32l0-81.92 l 40.96,0 L 512,193.28 L 40.96,193.28 L 40.96,360.602 c0,11.5-8.899,20.91-20.48,20.91l0,0c-11.54,0-20.48-9.4-20.48-20.91L0,70.4 l 40.96,0 l0,81.92 L 471.040,152.32 zM 105.779,276.716c 20.9,0, 37.755,16.927, 37.755,37.827c0,20.756-16.855,37.632-37.755,37.632c-20.869,0-37.714-16.865-37.714-37.632
749
- C 68.065,293.652, 84.91,276.716, 105.779,276.716zM 512,224l-0.143,49.879c-0.133,16.445-13.926,26.808-30.095,28.764L 185.242,331.653c-0.532,0.143-1.71,0.092-2.202,0.092
750
- c-10.301,0-19.2-8.54-19.2-18.79L 163.84,254.72 L 87.521,254.72 c-10.353,0-18.698-5.12-18.698-15.35C 68.823,228.977, 77.169,224, 87.521,224L 512,224 z" data-tags="lodging" />
751
- <glyph unicode="&#xe075;" d="M 61.44-6.4c0-12.626, 7.864-20.48, 20.48-20.48c 12.646,0, 20.48,7.854, 20.48,20.48L 102.4,183.040 l 20.48,0 l0-189.44 c0-12.605, 7.854-20.48, 20.48-20.48c 12.626,0, 20.48,7.854, 20.48,20.48L 163.84,316.16 l 10.24,0 l0-115.855
752
- c0-24.525, 30.781-24.525, 30.72,0L 204.8,324.751 C 204.8,351.846, 185.283,367.36, 153.6,367.36L 71.68,367.36 c-28.877,0-51.2-12.483-51.2-41.851L 20.48,193.28 c0-20.48, 30.72-20.48, 30.72,0L 51.2,316.16 l 10.24,0 L 61.44-6.4 zM 470.149,147.2l-60.508,166.267c-0.225,0.522-0.348,1.106-0.348,1.71c0,2.427, 2.038,4.393, 4.577,4.393
753
- c 2.161,0, 3.973-1.444, 4.454-3.369L 459.459,208.64c 2.734-6.154, 13.978-10.24, 21.371-10.24c 9.882,0, 10.906,19.405, 10.691,20.48l-41.134,103.496
754
- C 446.812,346.143, 422.81,367.36, 395.418,367.36L 341.811,367.36 c-27.392,0-53.166-21.217-56.75-44.984l-39.291-104.776c-0.891-2.038,0-19.845, 10.691-19.845
755
- c 8.305,0, 19.354,3.215, 21.361,10.557l 39.68,108.175c 0.635,1.7, 2.345,2.99, 4.321,2.99c 2.519,0, 4.557-1.925, 4.557-4.342
756
- c0-0.553-0.092-1.065-0.276-1.546l-58.962-166.41c-0.123-0.492,0-12.288,0-12.79c0-3.543, 8.561-12.8, 12.268-12.8L 317.44,121.59 l0-128.973
757
- c0-10.65, 9.38-19.507, 20.48-19.507s 20.48,8.868, 20.48,19.507L 358.4,126.812 c0,2.898, 20.48,2.806, 20.48-0.092l0-133.12 c0-10.65, 9.39-20.48, 20.48-20.48c 11.121,0, 20.48,9.841, 20.48,20.48L 419.84,121.6 l 39.619,0
758
- c 3.707,0, 10.691,9.257, 10.691,12.8C 470.149,135.219, 470.446,146.493, 470.149,147.2zM 69.12,427.52A42.24,42.24 180 1 1 153.6,427.52A42.24,42.24 180 1 1 69.12,427.52zM 325.12,427.52A42.24,42.24 180 1 1 409.6,427.52A42.24,42.24 180 1 1 325.12,427.52z" data-tags="toilet" />
759
- <glyph unicode="&#xe076;" d="M 10.24,224A245.76,245.76 180 1 1 501.76,224A245.76,245.76 180 1 1 10.24,224z" data-tags="circle" />
760
- <glyph unicode="&#xe077;" d="M 501.76,60.16c0-45.056-36.864-81.92-81.92-81.92L 92.16-21.76 c-45.056,0-81.92,36.864-81.92,81.92L 10.24,387.84 c0,45.056, 36.864,81.92, 81.92,81.92l 327.68,0 c 45.056,0, 81.92-36.864, 81.92-81.92L 501.76,60.16 z" data-tags="square-rounded" />
761
- <glyph unicode="&#xe078;" d="M 10.24,469.76L 501.76,469.76L 501.76-21.76L 10.24-21.76z" data-tags="square" />
762
- <glyph unicode="&#xe014;" d="M 419.84,70.4L 419.84,418.56 c0,22.528-18.432,40.96-40.96,40.96L 133.12,459.52 c-22.528,0-40.96-18.432-40.96-40.96l0-389.12 c0-22.528, 18.432-40.96, 40.96-40.96l 245.76,0 c 19.026,0, 40.96,0, 40.96,20.48c0,4.26,0,0,0,10.24L 143.36,19.2 c-11.264,0-20.48,9.216-20.48,20.48
763
- l0,30.72 L 419.84,70.4 z M 143.36,377.6c0,5.632, 4.608,10.24, 10.24,10.24l 204.8,0 c 5.632,0, 10.24-4.608, 10.24-10.24l0-20.48 c0-5.632-4.608-10.24-10.24-10.24L 153.6,346.88 c-5.632,0-10.24,4.608-10.24,10.24L 143.36,377.6 z M 143.36,295.68c0,5.632, 4.608,10.24, 10.24,10.24l 204.8,0
764
- c 5.632,0, 10.24-4.608, 10.24-10.24l0-20.48 c0-5.632-4.608-10.24-10.24-10.24L 153.6,264.96 c-5.632,0-10.24,4.608-10.24,10.24L 143.36,295.68 z" data-tags="book_store" />
765
- <glyph unicode="&#xe015;" d="M 378.88,408.32l-40.96,0 L 133.12,408.32 L 92.16,408.32 l0-40.96 l0-102.4 l0-133.12 c0-22.528, 18.432-40.96, 40.96-40.96l 204.8,0 c 22.528,0, 40.96,18.432, 40.96,40.96l0,51.2 c 62.218,0, 112.64,50.432, 112.64,112.64S 441.098,408.32, 378.88,408.32z M 378.88,234.24l0,30.72 l0,92.16
766
- c 33.935,0, 61.44-27.505, 61.44-61.44C 440.32,261.755, 412.815,234.24, 378.88,234.24zM 20.48,70.4l0-23.562 C 20.48,27.423, 41.667,19.2, 67.584,19.2L 444.416,19.2 c 25.907,0, 47.104,8.223, 47.104,27.638L 491.52,70.4 L 20.48,70.4 z" data-tags="cafe" />
767
- <glyph unicode="&#xe079;" d="M 171.858,387.84c 22.723,0, 40.96,18.483, 40.96,40.96c0,22.723-18.237,40.96-40.96,40.96c-22.589,0-40.96-18.248-40.96-40.96C 130.898,406.323, 149.268,387.84, 171.858,387.84zM 200.776,12.288c-69.755,0-126.321,57.354-126.321,128.379c0,38.881, 17.295,73.574, 44.278,97.167l-2.243,40.161
768
- C 71.311,249.303, 40.96,198.83, 40.96,140.667C 40.96,51.046, 112.466-21.76, 200.776-21.76C 265.759-21.76, 323.195,24.023, 348.16,80.64l-24.33,33.505
769
- C 311.808,56.136, 261.468,12.288, 200.776,12.288zM 450.56,90.88l-20.48,0 l-81.92,112.64c-4.434,7.793-20.48,30.72-40.96,30.72l-92.16,0 l0,40.96 l 81.92,0 c 10.609,0, 22.057,4.516, 22.057,15.421
770
- C 319.017,301.445, 307.866,305.92, 296.96,305.92l-81.92,0 l0,40.96 c-1.505,22.712-20.48,30.72-40.858,30.249C 153.6,376.658, 143.36,367.36, 143.36,346.88l0-143.36 c 1.946-22.999, 18.504-30.72, 40.96-30.72l 122.88,0 l 71.68-92.16
771
- c 4.618-7.639, 20.48-30.72, 20.48-30.72l 51.2,0 c 10.568,0, 20.48,9.605, 20.48,20.48C 471.040,81.224, 461.455,90.88, 450.56,90.88z" data-tags="wheelchair" />
772
- <glyph unicode="&#xe07a;" d="M 174.080,264.96l 27.464,0 C 209.777,264.96, 215.040,277.064, 215.040,285.235l0,86.467 C 215.040,379.884, 209.777,377.6, 201.544,377.6L 174.080,377.6 L 174.080,264.96 zM 174.080,101.12l 27.464,0 C 209.777,101.12, 215.040,91.617, 215.040,83.425l0-86.446 c0-8.131-5.263-18.739-13.496-18.739L 174.080-21.76 L 174.080,101.12 zM 137.83,183.040c-0.236,79.022, 14.623,81.92, 23.091,81.92C 161.853,264.96, 163.84,264.96, 163.84,264.96L 163.84,377.6 c0,0-2.683,0-3.502,0C 145.254,377.6, 71.68,352.809, 71.68,177.93
773
- C 71.68,3.041, 145.254-21.76, 160.338-21.76C 161.157-21.76, 163.84-21.76, 163.84-21.76L 163.84,101.12 c0,0-1.987,0-2.918,0C 152.453,101.12, 138.056,104.059, 137.83,183.040zM 237.527,353.239c 4.987-5.97, 7.649-13.517, 7.649-21.289c0-7.772-2.662-15.319-7.649-21.299l 16.353-13.455
774
- c 7.997,9.748, 12.431,22.098, 12.431,34.755c0,12.646-4.434,25.016-12.431,34.755L 237.527,353.239zM 290.099,258.376c 17.859,19.558, 27.73,44.913, 27.73,71.434c0,26.399-9.748,51.753-27.617,71.25l-15.903-13.865
775
- c 14.387-15.667, 22.395-36.024, 22.395-57.385c0-21.412-7.997-41.841-22.63-57.569L 290.099,258.376zM 326.287,219.556c 27.74,29.297, 43.059,67.707, 43.059,108.042c0,40.212-15.186,78.51-42.701,107.807l-15.667-14.275
776
- c 23.9-25.364, 37.14-58.614, 37.14-93.542c0-35.052-13.24-68.352-37.376-93.768L 326.287,219.556zM 362.619,180.726c 37.478,39.117, 58.143,90.522, 58.143,144.722c0,54.016-20.521,105.267-57.805,144.312l-15.299-14.623
777
- c 33.526-35.103, 51.978-81.172, 51.978-129.69c0-48.742-18.565-94.935-52.326-130.017L 362.619,180.726z" data-tags="volume-control-telephone" />
778
- <glyph unicode="&#xe07b;" d="M 367.411,44.155c-3.318-4.506-4.874-5.458-9.021-11.274c-6.902-8.909, 1.894-22.436, 6.277-20.306
779
- c 5.11,1.915, 8.428,12.114, 14.008,15.442c 2.857,1.536, 10.455,12.698, 17.572,20.285c 5.233,5.949, 9.032,8.561, 14.008,14.725
780
- c 8.428,10.455, 10.209,18.401, 17.572,29.563c 4.516,5.816, 7.731,7.598, 11.878,14.725c 21.965,41.554, 15.544,60.18, 36.567,89.856
781
- c 6.4,8.776, 13.64,10.916, 23.849,16.138c 9.503,69.222-21.965,107.919-21.719,108.042c-26.481-15.432-40.724-21.729-68.147-20.296
782
- c-10.322,0.113-15.79,4.506-25.989,3.564c-9.513-0.358-14.356-3.912-23.869-7.127c-14.592-4.506-22.548-8.54-37.857-13.292
783
- c-9.738-2.734-15.913-2.847-26.010-6.287c-8.663-3.686-4.506-0.717-10.557-7.721c-7.844-8.673-5.939-15.432-13.302-30.28
784
- c-9.144-19.466-8.069-22.077-2.847-24.453c-3.441-9.964-4.27-16.62-3.441-27.423c 0.952-8.192-2.499-13.885, 6.287-20.419
785
- c 11.991-8.899, 37.161-29.798, 43.571-30.147c 9.615,0.348, 37.632-0.717, 51.866,9.144c 3.205,2.007, 4.157,4.045, 1.434-3.564
786
- c-0.594-0.963-35.502-28.14-39.291-28.017c-44.401-1.434-29.563-3.922-32.287-2.857c-2.263,0-23.634,26.132-36.567,16.865
787
- c-4.874-2.97-7.127-5.816-9.021-11.172c 1.659-3.441, 9.492-8.888, 16.742-13.414c 10.455-6.646, 11.397-13.65, 21.842-16.138
788
- c 12.708-2.857, 26.235-0.952, 34.314-2.028c 3.092-0.829, 31.099,7.373, 48.548,16.742c 16.159,8.315-22.19-16.015-31.57-28.006
789
- c-28.262-8.899-20.296-9.257-33.72-11.991c-12.462-2.847-11.868-2.13-20.419-4.874c-8.776-2.13-16.015-14.131-7.711-20.419
790
- c 4.987-4.147, 20.541,1.669, 35.85,2.13c 6.769,0.123, 34.417,12.831, 40.724,16.159c 15.667,8.417, 27.187,20.060, 36.454,26.706
791
- C 406.221,91.638, 378.921,58.163, 367.411,44.155L 367.411,44.155z M 281.815,214.753c 9.38-7.475, 14.131-29.798, 14.008-29.563
792
- c 17.213-5.458, 28.129-16.855, 28.129-16.855c 26.481,14.725, 27.085,8.079, 38.595,16.855c 9.503,6.533, 9.032,8.55, 14.008,25.989
793
- c 4.628,14.141-11.756,12.831-25.293,38.595c-23.501-8.899-36.198-4.874-44.155-4.157C 303.544,246.088, 304.128,231.731, 281.815,214.753L 281.815,214.753
794
- zM 144.22,397.926c 3.328,4.751, 4.864,5.704, 9.144,11.284c 6.646,9.144-2.017,22.671-6.298,21.012
795
- c-5.222-2.376-8.54-12.585-14.838-16.148c-2.263-1.3-9.851-12.462-16.855-20.306c-5.222-5.704-9.021-8.315-14.008-14.838
796
- c-8.54-10.086-10.209-18.043-17.572-28.733c-4.506-6.4-7.834-8.069-11.878-15.432c-21.955-41.318-15.667-59.945-36.567-89.16
797
- c-6.4-9.38-13.65-11.397-23.859-16.855c-9.492-69.1, 21.852-107.684, 21.729-107.448c 26.47,15.094, 40.602,21.381, 68.147,20.429
798
- c 10.322-0.604, 15.79-4.987, 25.999-4.27c 9.503,0.594, 14.367,4.147, 23.859,7.004c 14.602,4.864, 22.559,8.899, 37.161,13.414
799
- c 10.445,2.97, 16.62,3.092, 26.706,7.014c 8.673,3.195, 4.516,0.225, 10.568,7.014c 7.711,8.899, 5.939,15.657, 12.585,30.136
800
- c 9.851,19.845, 8.786,22.436, 3.564,24.576c 3.328,10.209, 4.27,16.742, 3.441,27.423c-1.065,8.315, 2.499,14.131-6.287,20.296
801
- c-11.991,9.267-37.161,30.157-43.448,30.28c-9.738-0.123-37.755,0.952-51.999-8.428c-3.205-2.488-4.157-4.506-1.423,2.734
802
- c 0.594,1.3, 35.502,28.488, 39.291,28.846c 44.401,0.952, 29.563,3.441, 32.297,2.13c 2.253,0.236, 23.624-25.876, 36.567-16.855
803
- c 4.741,3.195, 7.117,6.052, 9.144,11.151c-1.782,3.676-9.615,9.155-16.855,13.302c-10.445,6.994-11.51,13.998-21.842,16.261
804
- c-12.708,3.082-26.358,1.188-34.314,2.734c-3.082,0.358-31.109-7.844-48.435-16.855c-16.384-8.673, 22.088,15.667, 31.57,28.129
805
- c 28.14,8.438, 20.070,8.786, 33.72,11.878c 12.349,2.499, 11.756,1.782, 20.306,4.27c 8.663,2.376, 16.015,14.254, 7.711,21.012
806
- c-5.1,3.799-20.531-2.017-35.727-2.13c-6.881-0.471-34.55-13.179-40.837-16.742c-15.667-8.192-27.187-19.825-36.444-25.999
807
- C 105.277,350.679, 132.7,384.041, 144.22,397.926L 144.22,397.926z M 229.816,227.338c-9.38,7.711-14.131,30.024-14.008,30.147
808
- c-17.213,5.11-28.14,16.507-28.14,16.148c-26.47-14.367-27.177-7.721-38.584-16.148c-9.615-6.892-9.021-9.021-14.008-25.887
809
- c-4.639-14.725, 11.633-13.292, 25.283-38.697c 23.511,8.561, 36.219,4.516, 44.165,3.574C 208.087,196.229, 207.493,210.596, 229.816,227.338
810
- L 229.816,227.338z" data-tags="sign-language" />
811
- <glyph unicode="&#xe07c;" d="M 226.632,436.357c 0.225,21.053-17.080,38.482-38.185,38.257c-21.565,0.225-38.994-17.203-38.881-38.257
812
- c-0.113-21.555, 17.316-38.82, 38.881-38.871C 209.541,397.537, 226.857,414.802, 226.632,436.357L 226.632,436.357zM 337.654,225.106L 214.139,374.948c-6.42,9.523-42.209,13.527-57.344,1.372L 96.696,266.967l 14.787-92.436
813
- c 15.032-24.136, 44.851,0.287, 36.475,13.476l-10.086,65.485L 163.84,305.92l0-122.88 l-61.44-163.84c-10.67-35.779, 40.643-54.938, 51.2-20.48l 71.68,184.32l0,92.16 l-30.075,41.595
814
- c-1.495,1.782-1.27,4.475, 0.573,6.021c 1.833,1.495, 4.475,1.26, 5.97-0.512l 102.748-121.508
815
- C 321.034,178.196, 354.171,202.23, 337.654,225.106zM 290.396,17.254l-60.672,150.968L 204.8,101.12l 35.604-104.131C 254.73-36.547, 305.080-16.927, 290.396,17.254zM 451.297-17.388c 0.123-0.123, 0.225-0.287, 0.225-0.348c 2.406-2.867, 6.656-3.154, 9.523-0.799
816
- c 2.519,2.181, 2.99,6.021, 1.26,8.765L 347.965,188.754c-0.123,0.123-0.225,0.236-0.338,0.399c-2.304,2.765-6.543,3.164-9.411,0.748
817
- c-2.519-2.181-2.755-5.847-1.137-8.765L 451.297-17.388z" data-tags="low-vision-access" />
818
- <glyph unicode="&#xe07d;" d="M 130.949,124.621c-63.539,0-112.486,35.717-112.486,102.246c0,67.318, 47.36,106.035, 112.486,106.035c 65.106,0, 112.476-38.728, 112.476-106.035
819
- C 243.415,160.338, 194.478,124.621, 130.949,124.621z M 130.949,177.244c 22.948,0, 34.253,19.558, 34.253,49.234c0,23.347-4.864,53.811-34.253,53.811
820
- c-29.399,0-34.263-30.464-34.263-53.811C 96.686,196.803, 107.991,177.244, 130.949,177.244zM 410.276,254.72c-0.338,10.24-3.389,14.111-8.253,18.975c-4.864,5.263-11.643,7.25-20.357,7.25c-29.266,0-34.13-30.792-34.13-54.139
821
- c0-29.676, 11.305-50.924, 34.13-50.924c 20.357,0, 28.273,17.398, 30.525,27.638l 79.022,0 c-6.779-61.44-54.938-80.425-109.548-80.425
822
- c-63.519,0-112.364,36.485-112.364,103.014c0,67.318, 47.37,107.745, 112.364,107.745c 52.695,0, 102.318-27.935, 107.96-79.135L 410.276,254.72 z" data-tags="open-captioning" />
823
- <glyph unicode="&#xe07e;" d="M 159.734,244.48c-0.338,10.24-3.277,17.725-8.253,22.589c-4.864,5.253-11.643,9.062-20.234,9.062c-29.399,0-34.253-29.891-34.253-53.238
824
- c0-29.665, 11.305-48.978, 34.253-48.978c 20.234,0, 28.15,9.134, 30.403,29.614l 79.022,0 c-6.779-61.44-54.938-81.94-109.425-81.94
825
- c-63.539,0-112.486,35.738-112.486,102.267c0,67.318, 47.36,103.741, 112.486,103.741c 52.562,0, 102.308-21.678, 107.848-83.118L 159.734,244.48 zM 410.583,244.48c-0.338,10.24-3.389,17.725-8.253,22.589c-4.864,5.253-11.643,9.062-20.357,9.062c-29.266,0-34.13-29.891-34.13-53.238
826
- c0-29.665, 11.305-48.978, 34.13-48.978c 20.357,0, 28.273,9.134, 30.525,29.614L 491.52,203.53 c-6.779-61.44-54.938-81.94-109.548-81.94
827
- c-63.529,0-112.364,35.738-112.364,102.267c0,67.318, 47.37,103.741, 112.364,103.741c 52.695,0, 102.308-21.678, 107.971-83.118L 410.583,244.48 z" data-tags="closed-captioning" />
828
- <glyph unicode="&#xe07f;" d="M 40.96,70.4l 50.115,0 c 18.821,0, 31.611-6.697, 31.611-25.231c0-9.708-4.823-16.835-13.394-20.992c 12.063-3.441, 18.217-13.906, 18.217-26.286
829
- c0-20.142-17.132-29.891-35.113-29.891L 40.96-32 L 40.96,70.4 z M 61.44,29.44l 26.86,0 c 7.598,0, 13.261,2.12, 13.261,10.455C 101.56,49.357, 94.321,49.92, 86.61,49.92L 61.44,49.92 L 61.44,29.44 z M 61.44-11.52
830
- l 28.068,0 c 8.684,0, 16.169,4.495, 16.169,14.817c0,10.117-6.4,15.903-15.688,15.903L 61.44,19.2 L 61.44-11.52 zM 143.36,39.68l 20.48,0 l0-10.24 l 0.225,0 c 3.625,10.24, 14.94,14.828, 24.596,14.828c 1.331,0, 5.898-0.788, 5.898-1.208l0-18.35 c-10.24,0.43-6.789,0.666-9.083,0.666
831
- c-14.479,0-21.637-10.383-21.637-23.050L 163.84-32 l-20.48,0 L 143.36,39.68 zM 203.049,19.2c 1.085,20.48, 16.64,24.33, 32.686,24.33c 14.356,0, 30.505-2.949, 30.505-20.204l0-37.407 c0-6.513, 2.796-17.92, 4.618-17.92l-19.907,0
832
- c-0.727,0-1.331,5.55-1.454,7.905c-6.277-6.523-15.442-8.387-24.125-8.387c-13.64,0-24.494,7.055-24.494,21.78
833
- c0,16.302, 12.175,20.152, 24.494,21.965c 12.073,1.69, 23.286,1.444, 23.286,9.482c0,8.499-5.786,9.554-12.79,9.554
834
- c-7.475,0-12.308-0.85-13.025-11.090L 203.049,19.21 z M 245.76,5.1c0-2.888-8.796-3.011-14.961-4.147c-6.154-1.27-10.988-3.318-10.988-10.568
835
- c0-7.352, 4.71-9.165, 11.1-9.165c 15.442,0, 14.838,12.237, 14.838,16.527L 245.75,5.1 zM 308.879,52.951L 289.075,52.951 l0,16.23 l 19.804,0 L 308.879,52.951 z M 286.72,39.68l 20.48,0 l0-71.68 l-20.48,0 L 286.72,39.68 zM 327.68,70.4l 20.48,0 l0-102.4 l-20.48,0 L 327.68,70.4 zM 368.64,70.4l 20.48,0 l0-102.4 l-20.48,0 L 368.64,70.4 zM 426.998-1.28c 0.614-10.24, 6.625-18.842, 17.623-18.842c 7.967,0, 14.356,8.602, 15.565,8.602l 17.367,0 c-5.54-10.24-17.367-22.344-33.536-22.344
836
- c-22.671,0-36.68,16.486-36.68,38.769c0,21.524, 14.848,37.233, 36.68,37.233c 24.381,0, 36.209-22.938, 34.867-43.418L 426.998-1.28 z M 459.1,8.96
837
- c-1.812,10.24-6.031,15.258-15.688,15.258c-12.554,0-16.169-5.018-16.415-15.258L 459.1,8.96 zM 112.64,147.2A35.84,35.84 180 1 1 184.32,147.2A35.84,35.84 180 1 1 112.64,147.2zM 112.64,290.56A35.84,35.84 180 1 1 184.32,290.56A35.84,35.84 180 1 1 112.64,290.56zM 112.64,433.92A35.84,35.84 180 1 1 184.32,433.92A35.84,35.84 180 1 1 112.64,433.92zM 327.68,147.2A35.84,35.84 180 1 1 399.36,147.2A35.84,35.84 180 1 1 327.68,147.2zM 327.68,290.56A35.84,35.84 180 1 1 399.36,290.56A35.84,35.84 180 1 1 327.68,290.56zM 327.68,433.92A35.84,35.84 180 1 1 399.36,433.92A35.84,35.84 180 1 1 327.68,433.92z" data-tags="braille" />
838
- <glyph unicode="&#xe080;" d="M 263.946,275.2L 256,275.2 l0-92.16 l 7.946,0 c 24.402,0, 44.042,21.75, 44.042,46.152C 307.988,253.46, 288.348,275.2, 263.946,275.2zM 409.6,408.32L 102.4,408.32 C 46.080,408.32,0,362.24,0,305.92l0-143.36 c0-56.32, 46.080-102.4, 102.4-102.4l 307.2,0 c 56.32,0, 102.4,46.080, 102.4,102.4L 512,305.92 C 512,362.24, 465.92,408.32, 409.6,408.32z M 204.8,152.32l-40.96,0 l0,20.48 l-60.314,0
839
- l-14.019-20.48L 36.321,152.32 l 118.876,163.84L 204.8,316.16 L 204.8,152.32 z M 276.48,152.32l-10.24,0 l-51.2,0 L 215.040,316.16 l 53.289,0 l 0.502,0 c 45.67,0, 81.91-37.14, 81.91-82.944C 350.74,187.535, 322.161,152.32, 276.48,152.32z
840
- M 366.182,152.32l-8.878,0 l-5.263,0 c 18.268,20.48, 28.662,48.886, 28.662,77.793c0,32.532-13.148,65.567-36.168,86.047l 5.14,0 l 10.015,0 l 5.263,0
841
- c 20.511-30.72, 32.031-54.139, 32.031-86.047c0-28.396-9.011-57.313-25.539-77.793L 366.182,152.32 z M 407.972,152.32l-9.001,0 l-5.263,0
842
- c 18.391,20.48, 28.785,48.886, 28.785,77.793c0,32.532-13.271,65.567-36.291,86.047l 5.263,0 l 9.892,0 l 5.243,0 c 20.531-30.72, 32.174-54.139, 32.174-86.047
843
- c0-28.396-9.144-57.313-25.661-77.793L 407.972,152.32 z M 454.902,152.32L 449.638,152.32 l-9.001,0 l-5.263,0 c 18.391,20.48, 28.785,48.886, 28.785,77.793
844
- c0,32.532-13.271,65.567-36.291,86.047l 5.263,0 l 9.892,0 l 5.243,0 c 20.531-30.72, 32.174-54.139, 32.174-86.047C 480.43,201.708, 471.286,172.8, 454.902,152.32zM 163.84,203.52L 163.84,263.967L 126.3,203.52 zM 253.809,231.188M 253.809,231.188M 253.809,231.188" data-tags="audio-description" />
845
- <glyph unicode="&#xe081;" d="M 456.796,469.76l-29.143,0 l-99.246-108.81c 10.435-5.396, 20.060-13.097, 28.621-21.248c 14.131-13.414, 22.6-30.208, 29.020-48.292L 501.76,406.999L 501.76,469.76
846
- C 465.121,469.76, 478.73,469.76, 456.796,469.76zM 10.24-21.76l 92.948,0 l 138.721,150.497l-82.872,55.214L 10.24,27.761l0-2.314 C 10.24,2.099, 10.24,7.496, 10.24-21.76zM 253.952,224.809M 253.952,224.809M 253.952,224.809M 246.415,326.4l 9.892,0 c 55.296,0, 87.081-53.975, 87.296-89.631c-0.215-6.943-1.935-13.507-9.789-13.353
847
- c-16.568-0.154-10.66,27.556-24.361,50.207C 303.002,284.805, 282.235,305.92, 258.57,305.92l-8.714,0 c-12.698,0-36.577-8.448-52.603-32.604
848
- c-20.060-29.102-6.881-51.067-23.726-50.964c-2.58-0.113-10.004,1.505-9.892,13.568C 164.393,290.673, 214.579,326.4, 246.415,326.4L 246.415,326.4zM 253.952,19.2c 20.756,0, 32.768,23.112, 32.768,37.571l0,30.126 c0,61.532, 66.601,85.832, 66.376,147.476c 0.215,57.764-50.944,101.325-100.209,101.222
849
- c-40.878,0.102-68.27-26.255-78.807-39.905c-31.631-39.107-13.189-76.38-35.553-76.38c-6.349,0-12.462,3.604-12.564,16.241
850
- c-0.983,61.204, 49.551,125.972, 129.096,126.075c 64.164-0.113, 126.566-51.21, 126.566-129.577c0-72.612-64.205-87.839-64.205-151.511l0-27.218
851
- c0-28.017-24.361-60.017-65.341-60.191c-1.495,0.44-2.888,0.973-4.823,1.188c-7.526,2.253-12.636,9.032-10.803,16.773
852
- C 238.623,17.818, 245.023,19.2, 253.42,19.2L 253.952,19.2 L 253.952,19.2z" data-tags="assistive-listening-system" />
853
- <glyph unicode="&#xe082;" d="M 358.492,218.45c-3.348,13.24-20.204,23.695-32.87,17.572L 276.48,213.76l0,87.9 l 86.354,135.608c 6.267,9.902, 3.85,23.030-6.236,29.379
854
- c-9.964,6.236-22.938,3.338-28.539-6.349L 255.693,345.047l-43.633-0.113c-2.796,0-5.571-0.451-8.376-1.556l-75.428-29.379L 89.395,372.521
855
- C 83.005,382.31, 69.796,385.208, 59.832,378.87s-12.872-19.579-6.482-29.481l 48.497-72.98c 5.489-8.458, 17.019-12.237, 26.757-8.233L 184.32,289.649L 184.32,193.28
856
- l-75.745-167.803c-5.714-12.81, 0.553-26.88, 13.885-34.345c 13.332-7.465, 28.682-3.113, 34.222,9.677l 60.938,139.080
857
- c 5.366-1.556, 11.192-2.243, 17.132-2.243c 5.489,0, 10.865,1.004, 15.677,2.785l 68.413,31.826l 14.991-59.976
858
- c 3.338-13.343, 16.957-21.473, 30.413-18.135c 13.435,3.338, 21.484,16.814, 18.125,30.157L 358.492,218.45zM 296.96,253.819l0-15.903 C 399.36,289.3, 439.071,465.306, 439.071,480l-14.326,0 C 419.369,443.29, 378.88,296.438, 296.96,253.819zM 224.338,352.717c 20.951,0, 37.97,16.794, 37.97,37.601c0,20.797-17.019,37.724-37.97,37.724c-20.951,0-37.97-16.916-37.97-37.724
859
- C 186.368,369.51, 203.387,352.717, 224.338,352.717zM 256-32L 276.48-32L 276.48,137.656L 256,121.6 z" data-tags="abseiling" />
860
- <glyph unicode="&#xe083;" d="M 59.484,232.090c-10.353,0-18.821-8.468-18.821-18.79c0-10.312, 8.479-18.637, 18.821-18.637c 10.342,0, 18.698,8.325, 18.698,18.637
861
- C 78.182,223.621, 69.827,232.090, 59.484,232.090zM 320.481,388.342c 22.436,0, 40.755,18.135, 40.755,40.643c0,22.508-18.319,40.776-40.755,40.776c-22.559,0-40.888-18.268-40.888-40.776
862
- C 279.593,406.477, 297.923,388.342, 320.481,388.342zM 495.903,25.723l-66.324,78.090c0,0-20.716,120.566-20.716,120.822c0,0.113-3.103,13.67-3.103,13.67
863
- c 0.123-0.133-8.335,38.031-14.817,67.86c 10.342-5.96, 19.681-11.305, 20.183-11.561c 0.502-1.106, 35.144-66.867, 35.144-66.867
864
- c 2.642-4.864, 7.025-8.468, 12.237-10.066c 5.356-1.618, 10.977-1.126, 15.841,1.495c 4.864,2.478, 8.479,6.83, 10.076,12.175
865
- c 1.782,5.212, 1.239,10.824-1.382,15.657L 445.061,319.232c0,0-1.516,2.611-3.502,4.588c-2.744,2.734-8.755,6.093-8.755,6.093l-73.779,41.902
866
- c-9.359,4.721-19.702,6.328-30.065,4.096c-4.26-0.87-8.223-2.488-12.698-4.977c-0.522-0.113-16.855-7.322-26.317-29.471l-37.888-76.073
867
- c0,0-57.733-11.182-59.73-11.561c-0.492-0.123-1.014-0.246-1.372-0.492l-53.924,38.042c-12.093,8.448-13.578,33.812-13.722,34.806
868
- c-1.485,17.398-11.469,33.812-27.423,45.128C 81.439,381.501, 63.969,385.843, 48.005,383.252c-12.472-2.12-23.060-8.581-29.798-18.043
869
- C 12.984,357.878, 10.24,349.051, 10.24,339.61c0-0.133, 0.748-8.223, 0.748-8.223c 2.755-16.015, 12.595-30.935, 27.064-41.257
870
- c 14.582-10.312, 31.918-14.674, 47.872-11.94l 3.748,0.748c 0.369,0.246, 24.31,7.598, 36.024-0.379c0-0.113, 40.325-28.457, 51.057-36.045
871
- c-1.116-1.741-3.113-5.581-2.99-9.574c0-1.249, 0.133-2.478, 0.379-3.717c 2.12-11.203, 13.076-18.657, 24.31-16.425l 71.547,13.937
872
- c0,0, 6.124,1.864, 8.745,3.738c 3.379,2.355, 5.857,7.322, 5.857,7.322l 18.821,37.796c0,0, 12.984-61.030, 13.199-62.147
873
- c-1.485-1.495-58.696-62.034-58.696-62.034l-2.202-1.249C 250.081,145.080, 245.76,138.373, 245.76,131.267l0-128.266 C 245.76-10.701, 257.71-21.76, 271.421-21.76
874
- C 285.020-21.76, 296.96-10.701, 296.96,3c0,0,0,105.39,0,107.141c 10.24,5.458, 49.603,51.569, 61.317,63.785c 1.26-7.209, 12.82-72.253, 12.82-72.253
875
- c 1.004-5.724, 3.881-10.936, 7.997-15.145c0-0.143, 78.838-92.887, 78.838-92.887c 4.383-4.936, 10.373-8.069, 16.968-8.684
876
- c 6.615-0.502, 12.995,1.597, 18.115,5.816c 5.724,4.864, 8.735,11.95, 8.735,18.924C 501.75,15.401, 499.896,21.002, 495.903,25.723z
877
- M 102.625,305.418c-4.362-6.093-11.090-10.066-19.446-11.561c-11.725-1.976-24.822,1.372-35.779,9.329c-11.090,7.844-18.586,19.016-20.572,30.7
878
- L 26.317,339.732c0,6.093, 1.628,11.551, 4.997,16.282c 10.844,15.155, 35.645,16.148, 55.337,2.232C 106.24,344.32, 113.469,320.584, 102.625,305.418z" data-tags="tennis" />
879
- <glyph unicode="&#xe084;" d="M 182.6-7.485A13.885,14.275 180 1 1 210.371-7.485000000000014A13.885,14.275 180 1 1 182.6-7.485000000000014zM 308.716-21.494c 7.66,0, 13.865,6.451, 13.865,14.449c0,7.905-6.195,14.326-13.865,14.326c-7.68,0-13.875-6.42-13.875-14.326
880
- C 294.84-15.043, 301.036-21.494, 308.716-21.494zM 284.764,393.943c 20.357,0, 36.905,17.029, 36.905,37.97C 321.659,452.844, 305.121,469.76, 284.764,469.76c-20.347,0-36.905-16.916-36.905-37.847
881
- C 247.859,410.972, 264.417,393.943, 284.764,393.943zM 84.644,62.228C 82.903,58.87, 81.92,55.060, 81.92,50.934c0-13.332, 10.568-24.207, 23.624-24.207c 9.37,0, 17.418,5.601, 21.228,13.67
882
- l 80.497,142.336l-33.423,34.386L 84.644,62.228zM 259.062,68.618c-3.799-8.069-11.858-13.681-21.217-13.681c-12.954,0-23.501,10.875-23.501,24.207c0,4.137, 0.973,7.936, 2.724,11.305
883
- l 35.052,63.375l-68.362,69.898c-26.235,27.095-7.506,56.433-7.506,56.433l 36.792,66.857l-97.587-0.113c-10.772,0-19.374,9.554-19.374,20.531
884
- C 96.072,378.296, 104.673,387.84, 115.446,387.84l 295.352,0 C 421.478,387.84, 430.080,378.276, 430.080,367.309C 430.080,356.332, 421.478,346.88, 410.798,346.88L 298.138,346.88 l-53.76-96.85l 54.743-55.654
885
- c 19.18-18.934, 6.758-40.202, 6.758-40.202L 259.062,68.618zM 348.16,29.44c0-5.663-4.577-10.24-10.24-10.24L 163.84,19.2 c-5.652,0-10.24,4.577-10.24,10.24l0,0c0,5.663, 4.588,10.24, 10.24,10.24l 174.080,0 C 343.583,39.68, 348.16,35.103, 348.16,29.44L 348.16,29.44z" data-tags="skateboarding" />
886
- <glyph unicode="&#xe085;" d="M 73.789,161.116c 29.542,0, 53.443,24.566, 53.443,54.968c0,30.239-23.9,54.815-53.443,54.815C 44.37,270.899, 20.48,246.323, 20.48,216.084
887
- C 20.48,185.692, 44.37,161.116, 73.789,161.116zM 373.105,66.744c 2.488,1.761, 5.775,1.229, 7.588-1.198l 9.882-14.049c 1.679-2.437, 1.167-5.939-1.188-7.844l-72.499-54.139
888
- c-2.345-1.761-5.755-1.208-7.608,1.208l-9.851,14.049c-1.69,2.437-1.157,5.929, 1.188,7.823L 373.105,66.744zM 291.154,136.55L 262.4,188.396L 247.306,177.060L 276.060,124.938 zM 224.072,257.659L 112.251,459.52L 90.86,459.377L 208.845,246.18 zM 329.349,150.856C 335.667,155.576, 350.126,162.56, 358.4,162.56l 102.4,0 c 20.214,0, 30.72-20.337, 30.72-41.001C 491.52,100.772, 481.014,90.88, 460.8,90.88l-92.16,0 l-110.961-87.060
889
- c-38.994-28.867-62.628,2.847-62.628,2.847l-86.866,89.385c-14.572,17.951-11.418,52.111, 6.052,67.236l 120.207,88.033
890
- c 11.94,10.24, 29.665,8.632, 39.782-3.512c 9.994-12.288, 8.417-30.659-3.543-40.919l-76.954-57.928l 55.286-56.156L 329.349,150.856z" data-tags="playground" />
891
- <glyph unicode="&#xe086;" d="M 360.233,469.76c-23.101,0-41.851-19.036-41.851-42.383c0-23.439, 18.749-42.363, 41.851-42.363c 23.235,0, 42.056,18.924, 42.056,42.363
892
- C 402.289,450.724, 383.457,469.76, 360.233,469.76zM 43.387,177.51c-3.625,5.898-11.244,7.69-17.039,4.045c-5.847-3.676-7.608-11.356-3.973-17.265
893
- c 3.645-5.786, 11.233-7.567, 17.162-3.983C 45.261,164.004, 47.012,171.674, 43.387,177.51zM 52.009,142.94c-3.625,5.786-11.244,7.578-17.152,3.901c-5.734-3.604-7.485-11.336-3.86-17.121
894
- c 3.635-5.99, 11.254-7.69, 16.978-4.045C 53.821,129.362, 55.593,137.052, 52.009,142.94zM 60.58,108.257c-3.574,5.96-11.346,7.68-17.091,4.004c-5.908-3.645-7.608-11.315-3.963-17.265
895
- c 3.574-5.775, 11.336-7.537, 17.080-3.891C 62.464,94.74, 64.215,102.482, 60.58,108.257zM 69.1,73.687c-3.625,5.786-11.244,7.567-16.968,4.055c-5.919-3.789-7.619-11.459-4.045-17.306
896
- c 3.635-5.898, 11.254-7.68, 17.152-4.004C 70.973,60.109, 72.735,67.799, 69.1,73.687zM 270.51,3.226c-6.584-2.212-10.23-9.226-8.12-15.841c 2.171-6.646, 9.155-10.189, 15.636-8.141
897
- c 6.523,2.14, 10.148,9.175, 8.11,15.708C 284.017,1.567, 277.033,5.171, 270.51,3.226zM 305.777,2.918c-6.554-1.997-10.107-9.124-8.018-15.636c 2.109-6.656, 9.134-10.322, 15.626-8.182
898
- c 6.461,2.089, 10.086,9.206, 7.997,15.749C 319.232,1.382, 312.381,5.059, 305.777,2.918zM 341.258,2.806c-6.636-2.109-10.281-9.124-8.11-15.77c 2.089-6.523, 9.083-10.189, 15.626-8.059
899
- c 6.472,1.997, 10.076,9.083, 7.916,15.739C 354.724,1.26, 347.72,4.956, 341.258,2.806zM 376.474,2.662c-6.461-2.14-10.097-9.175-8.018-15.729c 2.161-6.595, 9.165-10.189, 15.626-8.1
900
- c 6.513,2.15, 10.076,9.083, 8.018,15.677C 389.99,1.157, 382.966,4.71, 376.474,2.662zM 460.78,305.92l-73.277,0 l-36.239,59.259c-6.257,13.384-19.364,22.589-34.847,23.214c-3.021,0.154-5.755-0.297-8.53-0.911l-184.197-43.756
901
- c-11.141-2.632-18.125-13.793-15.462-25.139c 2.499-11.244, 13.466-18.196, 24.596-15.657l 122.993,22.405L 162.335,162.56L 94.31,162.56 L 94.208,162.56 L 62.341,162.56 l 22.139-80.824
902
- c 0.748-2.621, 0.748,0.266, 1.608-1.116c 3.113-5.14, 9.769-5.028, 14.746-1.894c 2.724,1.608, 4.495,5.304, 4.997,8.233l 13.24,41.155
903
- l 0.502,1.884c0,0, 61.153,0.358, 61.614,0.358c 12.268,0, 22.774,3.43, 29.010,13.824l 28.344,47.442l 63.089-64.748L 274.893,19.2c0,0, 92.211,0, 92.6,0
904
- c 5.96,0, 10.844,6.236, 10.844,12.175c0,4.7-2.877,8.612-6.451,10.609l-39.977,22.692l 19.19,76.544c0,0, 4.762,16.271-10.332,31.171
905
- l-51.61,52.255c0,0, 27.576,45.793, 45.251,75.213L 358.4,264.96c 10.24,0, 11.612,0, 15.79,0l 86.211,0 c 11.5,0, 20.767,8.94, 20.879,20.408
906
- C 481.382,296.98, 472.136,305.92, 460.78,305.92z" data-tags="inline-skating" />
907
- <glyph unicode="&#xe087;" d="M 295.465,185.784c 13.281-4.495, 27.72,2.253, 32.358,15.227c 4.618,12.943-2.427,27.013-15.718,31.519
908
- c-13.302,4.506-27.74-2.365-32.358-15.309C 275.231,204.329, 282.173,190.157, 295.465,185.784zM 503.828,347.116c0,0-85.975,10.076-264.53,10.076C 107.592,357.192,0,347.116,0,347.116s 44.616-19.139, 36.874-78.469
909
- c0,0, 64.020,7.434, 90.839-45.978l 120.248,35.523l-7.864-78.152L 189.235,167.885c-4.506-1.014-8.315-3.154-11.428-5.847L 66.222,57.108
910
- c-6.584-6.072-6.697-16.323-0.338-22.61c 6.236-6.431, 16.753-6.656, 23.224-0.573l 83.958,78.787l 102.861,24.535l-0.696-0.215l 17.101,4.28
911
- l 15.718-17.459c 2.427-2.58, 5.888-4.157, 9.595-4.157l 55.357-0.215c 6.943,0, 12.708,5.509, 12.708,12.38l0,0
912
- c0,5.97-4.27,10.578-9.933,11.94l-41.257,139.889l 171.848,50.708C 514.58,337.9, 513.884,346.051, 503.828,347.116z M 363.418,144.364
913
- c-12.595,0-33.638,0.113-39.987,0.113c-6.011,6.636-29.829,32.87-29.829,32.87c-0.338,0.451-0.922,0.563-1.27,0.901
914
- c-6.011,6.861-15.596,10.455-25.18,8.223l-14.92-3.615l 7.977,78.94l 62.976,18.565L 363.418,144.364z" data-tags="hang-gliding" />
915
- <glyph unicode="&#xe088;" d="M 65.864,259.328c-2.222-4.557-3.84-9.605-4.69-15.032c-0.379-2.693-0.625-5.417-0.625-8.12l 1.976-124.16L 19.466,19.61
916
- c-1.485-2.724-2.591-5.898-3.082-9.236c-2.355-15.278, 8.161-29.45, 23.501-31.795c 11.878-1.843, 23.255,4.188, 28.703,14.193l 47.37,101.007
917
- c 0.983,2.345, 1.864,4.813, 2.222,7.516c 0.133,1.229, 0.256,2.591, 0.256,3.809l-0.369,76.759l 72.796-31.662l 11.756-75.018
918
- c 2.345-10.967, 11.377-19.732, 23.132-21.565c 15.34-2.212, 29.563,8.264, 31.928,23.398c 0.358,2.591, 0.358,5.181, 0.113,7.639l-14.346,90.563
919
- c-1.731,8.745-7.537,16.261-15.708,20.091l-65.065,28.795l 41.431,71.823l 20.552-25.999c 2.099-2.335, 4.823-4.311, 7.905-5.54l 78.316-22.784
920
- c 10.404-2.222, 21.043,3.185, 25.108,13.169c 4.577,11.336-0.85,24.146-12.114,28.703c-0.379,0.123-0.748,0.246-1.116,0.369l-68.045,19.958
921
- l-51.22,61.225c-7.67,8.131-17.94,13.916-29.809,15.78c-20.787,3.072-40.52-6.779-50.913-23.532L 65.864,259.328zM 290.519,81.316l-4.946-37.202l-134.717-32.635L 152.156-11.52l 328.561,0 C 492.36-11.52, 501.76-2.181, 501.76,9.4L 501.391,450.427l-45.015,10.465
922
- l-25.866-115.948l-43.244-18.104l-38.349-106.916l 36.434-81.807l-10.26-31.406L 290.519,81.316zM 199.045,386.232c 23.132,0, 41.933,18.719, 41.933,41.759C 240.968,451.021, 222.177,469.76, 199.045,469.76s-41.943-18.739-41.943-41.769
923
- C 157.092,404.951, 175.903,386.232, 199.045,386.232zM 115.599,379.699c 3.215,5.663, 1.352,13.056-4.454,16.261L 90.849,407.788C 85.043,410.993, 77.732,409.139, 74.394,403.354L 11.807,295.793
924
- c-3.215-5.663-1.362-12.933, 4.444-16.261l 20.419-11.715c 5.683-3.318, 12.995-1.352, 16.323,4.321L 115.599,379.699z" data-tags="climbing" />
925
- <glyph unicode="&#xe089;" d="M 300.38,340.644c 19.425,0, 35.236,17.285, 35.236,38.543c0,21.268-15.811,38.554-35.236,38.554c-19.456,0-35.277-17.285-35.277-38.554
926
- C 265.103,357.929, 280.924,340.644, 300.38,340.644zM 398.141,4.024L 348.16,172.8L 348.16,305.92 c0,18.084-20.541,20.48-20.541,20.48l-53.146,0 l-14.049,0 c0,0-8.837-5.069-14.664-10.24l-33.065-15.155l-40.837,45.404
927
- c-6.656,8.643-18.401,10.25-26.307,2.98c-8.008-7.27-8.417-20.285-1.772-29.041l 52.060-56.883c 3.553-4.106, 8.428-6.84, 13.937-6.84
928
- c 4.055,0-1.966,1.444, 1.167,3.779L 245.76,275.2l0-102.4 l-53.002-168.448c-3.85-15.237, 9.339-30.925, 23.357-35.021c 13.947-4.086, 30.751,4.997, 34.499,20.244
929
- l 47.073,151.347l 47.329-151.695c 3.717-15.34, 19.405-24.33, 33.341-20.234C 392.294-26.931, 401.961-11.223, 398.141,4.024zM 134.523,301.066c 1.761-1.987, 4.782-2.038, 6.656,0l 0.625,0.573c 1.782,2.058, 1.884,5.345,0,7.332l-10.189,11.428
930
- c-1.884,2.048-4.905,2.048-6.779,0.051l-0.512-0.625c-1.864-2.048-1.976-5.294-0.102-7.281L 134.523,301.066zM 232.018,430.469l-60.16-71.127l 7.301-8.131l 67.123,63.283l 44.626,44.974c 1.782,2.161, 2.908,4.997, 2.908,8.079
931
- c0,6.82-4.997,12.39-11.131,12.452c-3.011,0.051-5.612-1.198-7.68-3.133L 232.018,430.469z" data-tags="baseball" />
932
- <glyph unicode="&#xe08a;" d="M 193.075,371.487c 22.958,0, 41.38,18.985, 41.38,42.373c0,23.398-18.422,42.383-41.38,42.383c-22.784,0-41.39-18.985-41.39-42.383
933
- C 151.685,390.472, 170.291,371.487, 193.075,371.487zM 204.8,357.12L 81.92,357.12 c-20.48,0-20.48-30.72,0-30.72l 122.88,0 C 225.28,326.4, 225.28,357.12, 204.8,357.12zM 399.36,344.279c0,46.971-16.435,91.843-46.387,127.201C 353.106,471.603, 345.416,480, 345.416,480l-116.531-119.276l-1.987-1.966
934
- c 0.358-0.532, 0.881-0.891, 1.106-1.495c 1.792-3.267, 2.785-6.902, 3.195-10.527c 0.123-1.495,0-3.041-0.174-4.588
935
- c-0.225-3.154-0.819-6.246-2.14-9.175l-0.123-0.297c-0.287-0.532-0.41-1.188-0.748-1.782c-0.225-0.42-0.471-1.147-0.758-1.495
936
- C 222.136,321.352, 213.371,316.16, 202.721,316.16L 133.12,316.16 l0-154.47 c0-0.123,0-9.236,0-9.37l-22.395-155.986c-2.447-12.851, 7.342-25.354, 19.896-27.853
937
- C 143.176-34.15, 161.28-24.504, 163.84-11.52l 20.48,174.080l 10.24,0 l 34.714-175.391c 2.56-12.984, 20.5-21.32, 33.167-18.688c 12.452,2.499, 19.395,15.002, 16.947,27.853
938
- L 245.76,162.877L 245.76,302.264 l 95.498-93.542c0,0, 9.759,8.448, 9.759,8.561C 380.826,252.611, 399.36,297.492, 399.36,344.279z M 378.255,326.4
939
- c-3.42-30.72-21.32-67.871-43.756-95.048C 313.764,252.518, 266.24,292.383, 245.76,318.505L 245.76,326.4 L 378.255,326.4 z M 378.255,357.12L 244.756,357.12
940
- c 24.525,30.72, 70.38,72.018, 93.88,96C 361.175,425.984, 374.958,398.080, 378.255,357.12z" data-tags="archery" />
941
- <glyph unicode="&#xe08b;" d="M 491.52-21.76c-10.199,0-20.173,2.324-28.979,6.236c-9.042,4.157-19.231,6.584-29.901,6.584
942
- c-10.557,0-20.756-2.417-29.798-6.584C 393.943-19.436, 384.072-21.76, 373.76-21.76c-10.301,0-20.173,2.324-28.989,6.236
943
- c-9.042,4.157-19.241,6.584-29.911,6.584c-10.547,0-20.746-2.417-29.85-6.584C 276.214-19.436, 266.312-21.76, 255.99-21.76
944
- c-10.26,0-20.183,2.324-28.969,6.236c-9.103,4.157-19.241,6.584-29.901,6.584c-10.619,0-20.756-2.417-29.85-6.584
945
- C 158.413-19.436, 148.552-21.76, 138.24-21.76c-10.332,0-20.183,2.324-29.020,6.236c-9.021,4.157-19.241,6.584-29.86,6.584
946
- c-10.67,0-20.828-2.417-29.85-6.584C 40.663-19.436, 30.802-21.76, 20.48-21.76l0,42.803 c 10.322,0, 20.183,2.324, 29.020,6.236
947
- c 9.021,4.055, 19.19,6.482, 29.85,6.482c 10.619,0, 20.828-2.417, 29.86-6.482c 8.847-3.922, 18.698-6.236, 29.020-6.236
948
- c 10.322,0, 20.173,2.324, 29.020,6.236c 9.093,4.055, 19.231,6.482, 29.85,6.482c 10.67,0, 20.808-2.417, 29.901-6.482
949
- c 8.786-3.922, 18.708-6.236, 28.969-6.236c 10.322,0, 20.224,2.324, 29.020,6.236c 9.103,4.055, 19.302,6.482, 29.85,6.482
950
- c 10.67,0, 20.869-2.417, 29.911-6.482c 8.817-3.922, 18.688-6.236, 28.989-6.236c 10.312,0, 20.183,2.324, 29.082,6.236
951
- c 9.042,4.055, 19.241,6.482, 29.798,6.482c 10.67,0, 20.859-2.417, 29.901-6.482c 8.806-3.922, 18.78-6.236, 28.979-6.236L 491.5-21.76 zM 71.035,225.915c 15.77,0, 28.559,12.575, 28.559,28.047c0,15.452-12.79,28.037-28.559,28.037
952
- c-15.729,0-28.508-12.585-28.508-28.037C 42.527,238.479, 55.306,225.915, 71.035,225.915zM 196.465,101.12l-81.633,0 c-12.012,0-22.446,5.765-27.146,15.954l-30.198,67.113c-0.584,2.304-0.881,4.291-0.881,6.728
953
- c0,16.261, 13.373,29.266, 29.86,29.266l 66.314,0.041l 45.507,20.275c 0.707,0.451, 2.57,0.891, 4.577,0.891c 7.793,0, 14.193-6.359, 14.193-13.978
954
- c0-4.741-2.468-9.011-6.103-11.551l-49.49-20.808C 158.177,192.522, 151.962,193.28, 151.962,193.28l-29.798,0 l 24.986-61.44l 55.183,0 l0,0
955
- c 5.448,0, 9.267,0.461, 12.595-2.417l 54.088-49.418l0,0c 7.557-6.902, 7.967-17.981, 0.932-25.477c-7.086-7.383-18.944-6.298-26.511,0.625l0,0
956
- L 196.465,101.12zM 450.836,190.362c 1.044-1.741, 3.604-2.417, 5.98-2.417c 4.536,0, 8.315,3.697, 8.315,8.305
957
- c0,2.202-1.075,4.157-2.12,6.021c-51.016,95.775-188.744,67.277-205.629,61.041c-2.806-1.044-4.454-4.157-4.454-7.281
958
- c0-4.485, 3.748-8.192, 8.315-8.192c 1.413,0, 2.109,0.123, 3.338,0.461C 399.677,278.19, 443.668,202.476, 450.836,190.362z M 474.296,181.699
959
- L 301.548,74.496L 144.271,469.76C 285.010,451.41, 463.954,343.849, 474.296,181.699z" data-tags="wind-surfing" />
960
- <glyph unicode="&#xe08c;" d="M 10.24,428.8L 88.238,347.976L 118.211,375.255L 91.075,428.554 zM 361.841,202.414c 14.735-4.116, 30.597,4.342, 34.775,19.548c 4.045,14.93-4.557,30.628-19.436,34.867l-11.54,3.226
961
- l-14.981-54.292L 361.841,202.414zM 352.758,263.547l-93.338,26.655c-6.144,1.618-12.339-2.13-14.070-8.346l-8.724-31.631
962
- c-1.71-6.226, 1.597-12.575, 7.864-14.449l 93.409-26.409L 352.758,263.547zM 367.483,173.629c-7.117,6.851-15.964,12.329-26.255,15.196l-113.183,32.123l0,0l-69.53,125.030
963
- c-3.686,6.472-9.585,11.581-17.203,13.701c-15.237,4.352-31.089-4.731-35.256-20.173c-2.089-7.352-1.106-14.817, 2.212-21.166l 86.979-154.665
964
- c0,0, 7.127-11.581, 25.057-17.572l 158.126-44.964l 73.339-75.459c 2.458-2.611, 5.663-4.598, 9.462-5.734c 11.059-3.113, 22.6,3.625, 25.805,14.715
965
- c 2.099,7.834-0.358,16.056-5.898,21.166L 367.483,173.629zM 451.901,142.367l 16.435-21.791L 501.76,157.573l-28.242,15.954c 2.683,20.050-9.605,39.465-29.256,45.066
966
- c-21.617,6.113-44.104-6.595-50.104-28.518c-6.164-22.047, 6.502-44.698, 28.119-50.811C 432.599,136.284, 443.044,137.902, 451.901,142.367z" data-tags="scuba-diving" />
967
- <glyph unicode="&#xe08d;" d="M 481.28-21.76c-9.748,0-19.292,2.253-27.699,6.113c-8.632,4.065-18.381,6.451-28.611,6.451
968
- c-10.097,0-19.845-2.376-28.477-6.451C 387.953-19.507, 378.511-21.76, 368.66-21.76c-9.769,0-19.292,2.253-27.73,6.113
969
- c-8.612,4.065-18.381,6.451-28.59,6.451c-10.107,0-19.855-2.376-28.518-6.451C 275.343-19.507, 265.861-21.76, 256.051-21.76
970
- c-9.871,0-19.292,2.253-27.771,6.113c-8.632,4.065-18.401,6.451-28.539,6.451c-10.209,0-19.978-2.376-28.611-6.451
971
- C 162.703-19.507, 153.231-21.76, 143.35-21.76c-9.81,0-19.292,2.253-27.75,6.113c-8.643,4.065-18.401,6.451-28.559,6.451
972
- c-10.158,0-19.917-2.376-28.559-6.451C 50.012-19.507, 40.591-21.76, 30.72-21.76l0,42.004 c 9.871,0, 19.292,2.253, 27.761,6.113
973
- c 8.643,3.963, 18.401,6.339, 28.559,6.339c 10.148,0, 19.907-2.376, 28.559-6.339c 8.468-3.86, 17.94-6.113, 27.75-6.113
974
- c 9.882,0, 19.354,2.253, 27.771,6.113c 8.632,3.963, 18.401,6.339, 28.611,6.339c 10.138,0, 19.907-2.376, 28.539-6.339
975
- c 8.489-3.86, 17.9-6.113, 27.771-6.113c 9.81,0, 19.292,2.253, 27.771,6.113c 8.663,3.963, 18.412,6.339, 28.518,6.339
976
- c 10.209,0, 19.978-2.376, 28.59-6.339c 8.438-3.86, 17.961-6.113, 27.73-6.113c 9.851,0, 19.292,2.253, 27.832,6.113
977
- c 8.632,3.963, 18.381,6.339, 28.477,6.339c 10.23,0, 19.978-2.376, 28.611-6.339c 8.407-3.86, 17.951-6.113, 27.699-6.113L 481.27-21.76 zM 296.96,469.76L 296.96,152.32L 43.899,152.32 zM 327.68,396.861C 327.68,361.421, 489.953,264.96, 478.136,152.32L 327.68,152.32 L 327.68,396.861 L 327.68,396.861zM 445.716,131.84l-69.99,0 L 102.4,131.84 l0-63.488 c 10.24-1.024, 8.663-2.161, 12.155-3.86c 8.468-3.738, 18.473-5.99, 28.283-5.99
978
- c 9.882,0, 19.62,2.253, 28.037,5.99c 8.632,4.076, 18.534,6.451, 28.744,6.451c 10.138,0, 19.968-2.365, 28.6-6.451
979
- c 8.489-3.738, 17.93-5.99, 27.802-5.99c 9.81,0, 19.302,2.253, 27.781,5.99c 8.663,4.076, 18.422,6.451, 28.529,6.451
980
- c 10.209,0, 19.988-2.365, 28.6-6.451c 8.438-3.738, 17.961-5.99, 27.73-5.99c 1.915,0, 3.686,0.451, 5.489,0.676
981
- c 0.225,0, 0.225-0.225, 0.461-0.225c 1.219,0, 2.12,0.563, 3.359,0.563c 2.243,0.338, 4.475,0.573, 6.728,1.126
982
- c 20.173,4.188, 33.219,20.541, 33.219,20.541L 457.185,131.84L 445.716,131.84 z" data-tags="sailing" />
983
- <glyph unicode="&#xe08e;" d="M 257.198,374.17c-15.104,0-27.556,12.513-27.556,27.853c0,15.442, 12.452,27.843, 27.556,27.843
984
- c 15.37,0, 27.699-12.401, 27.699-27.843C 284.897,386.683, 272.568,374.17, 257.198,374.17z M 480.799,130.396l-14.756,92.436
985
- c-1.679,8.643-9.196,15.217-18.135,15.217c-5.437,0-10.281-2.314-13.793-6.093l-67.983-64.102c-1.065-0.973-2.161-2.058-3.144-3.41
986
- c-6.39-8.745-4.567-21.156, 4.137-27.73c 1.659-1.198, 3.502-2.058, 5.315-2.796l 17.029-5.724C 373.064,81.51, 325.816,39.281, 276.48,29.44L 276.48,336.64
987
- c 24.177,10.342, 48.077,37.396, 48.077,65.382C 324.557,439.48, 294.431,469.76, 257.198,469.76c-37.1,0-67.338-30.28-67.338-67.738
988
- c0-27.986, 21.586-55.040, 45.65-65.382l0-307.2 c-50.422,9.124-96.317,51.2-113.132,98.765l 17.183,5.724c 1.812,0.737, 3.615,1.597, 5.315,2.796
989
- c 8.694,6.574, 10.629,18.985, 4.116,27.73c-0.983,1.352-1.935,2.437-3.154,3.41l-67.973,64.102c-3.389,3.779-8.346,6.093-13.67,6.093
990
- c-9.062,0-16.691-6.574-18.258-15.217l-14.756-92.436C 30.843,128.942, 30.72,127.365, 30.72,125.768c0-10.916, 8.827-19.825, 19.722-19.825
991
- c 2.048,0, 3.983,0.256, 5.796,0.87l 15.964,5.222C 97.597,34.437, 170.25-21.76, 256-21.76c 85.74,0, 158.423,56.197, 183.818,133.919l 15.974-5.335
992
- c 1.792-0.614, 3.758-0.87, 5.786-0.87c 10.885,0, 19.712,8.899, 19.712,19.825C 481.28,127.365, 481.167,128.942, 480.799,130.396z" data-tags="marina" />
993
- <glyph unicode="&#xe08f;" d="M 178.555,348.058c 25.231,0, 45.568,20.408, 45.568,45.527C 224.123,418.693, 203.776,439.040, 178.555,439.040
994
- c-25.18,0-45.578-20.347-45.578-45.455C 132.966,368.466, 153.375,348.058, 178.555,348.058zM 10.24,99.41c 10.24,0, 20.982,2.458, 30.177,6.584c 9.441,4.362, 20.142,6.922, 31.212,6.922c 11.080,0, 21.76-2.56, 31.15-6.922
995
- c 9.257-4.116, 19.589-6.523, 30.362-6.523c 10.721,0, 21.043,2.396, 30.249,6.523c 9.38,4.362, 20.050,6.922, 31.191,6.922
996
- c 11.069,0, 21.668-2.56, 31.171-6.922c 9.155-4.116, 19.528-6.523, 30.249-6.523c 10.721,0, 21.094,2.396, 30.239,6.523
997
- c 9.503,4.362, 20.122,6.922, 31.242,6.922c 11.080,0, 21.678-2.56, 31.119-6.922c 9.257-4.116, 19.589-6.523, 30.321-6.523
998
- c 10.752,0, 21.043,2.396, 30.3,6.523c 9.38,4.362, 20.040,6.922, 31.109,6.922c 9.503,0, 18.719-1.812, 27.034-5.059
999
- c 13.537,14.756, 21.934,34.406, 21.934,55.921c0,45.814-37.181,82.903-83.046,82.903l-9.308-0.993c-10.209-41.339-51.651-43.080-51.651-43.080
1000
- L 155.648,202.66l-15.852,9.308l 38.226,64l 41.851-24.125c 25.057-16.21, 38.103,6.513, 38.103,6.513l 41.964,68.26
1001
- c 18.237,29.655-20.449,53.432-38.574,23.665l-29.379-47.841l-69.816,38.543c-48.384,26.921-68.884-17.674-68.884-17.674l-54.835-93.716
1002
- c-9.329-19.476-1.065-27.843-1.065-27.843L 10.24,201.789L 10.24,99.41 zM 501.76,8.96c-10.732,0-21.043,2.376-30.188,6.513c-9.492,4.362-20.111,6.912-31.242,6.912
1003
- c-11.069,0-21.729-2.55-31.109-6.912C 399.964,11.336, 389.673,8.96, 378.921,8.96c-10.732,0-21.064,2.376-30.321,6.513
1004
- c-9.441,4.362-20.040,6.912-31.119,6.912c-11.121,0-21.74-2.55-31.242-6.912C 277.094,11.336, 266.721,8.96, 256,8.96
1005
- c-10.711,0-21.094,2.376-30.249,6.513c-9.503,4.362-20.101,6.912-31.171,6.912c-11.131,0-21.801-2.55-31.181-6.912
1006
- C 154.194,11.336, 143.872,8.96, 133.151,8.96c-10.783,0-21.105,2.376-30.362,6.513c-9.39,4.362-20.050,6.912-31.13,6.912
1007
- c-11.069,0-21.74-2.55-31.171-6.912C 31.283,11.336, 20.961,8.96, 10.24,8.96l0,45.23 c 10.721,0, 21.043,2.437, 30.249,6.574
1008
- c 9.441,4.352, 20.101,6.912, 31.171,6.912c 11.080,0, 21.75-2.56, 31.13-6.912c 9.257-4.127, 19.579-6.574, 30.362-6.574
1009
- c 10.721,0, 21.043,2.437, 30.249,6.574c 9.38,4.352, 20.050,6.912, 31.181,6.912c 11.069,0, 21.668-2.56, 31.171-6.912
1010
- c 9.155-4.127, 19.528-6.574, 30.249-6.574c 10.721,0, 21.094,2.437, 30.239,6.574c 9.503,4.352, 20.122,6.912, 31.242,6.912
1011
- c 11.080,0, 21.678-2.56, 31.119-6.912c 9.257-4.127, 19.589-6.574, 30.321-6.574c 10.752,0, 21.043,2.437, 30.3,6.574
1012
- c 9.38,4.352, 20.040,6.912, 31.109,6.912c 11.131,0, 21.75-2.56, 31.242-6.912c 9.155-4.127, 19.456-6.574, 30.188-6.574L 501.76,8.96 z" data-tags="canoe" />
1013
- <glyph unicode="&#xe090;" d="M 491.52,60.16c-10.24,0-18.985,2.314-27.996,6.298c-9.38,4.209-18.964,6.676-29.932,6.676
1014
- c-10.916,0-21.012-2.468-30.249-6.676C 394.209,62.474, 384.307,60.16, 373.678,60.16c-10.568,0-20.654,2.314-29.778,6.298
1015
- c-9.308,4.209-19.712,6.676-30.628,6.676c-10.957,0-21.412-2.468-30.792-6.676c-9.011-3.994-19.22-6.298-29.798-6.298
1016
- c-10.578,0-20.787,2.314-29.819,6.298c-9.37,4.209-19.825,6.676-30.74,6.676c-10.977,0-21.494-2.468-30.74-6.676
1017
- C 152.3,62.474, 142.131,60.16, 131.553,60.16c-10.629,0-20.797,2.314-29.932,6.298c-9.257,4.209-19.773,6.676-30.689,6.676
1018
- c-10.916,0-21.494-2.468-30.802-6.676C 31.037,62.474, 20.48,60.16, 10.24,60.16l0,43.725 c 10.24,0, 20.797,2.355, 29.88,6.359c 9.318,4.198, 19.855,6.676, 30.771,6.676
1019
- c 10.916,0, 21.453-2.478, 30.71-6.676c 9.144-4.004, 19.313-6.359, 29.942-6.359c 10.588,0, 20.746,2.355, 29.829,6.359
1020
- c 9.247,4.198, 19.773,6.676, 30.751,6.676c 10.916,0, 21.371-2.478, 30.74-6.676c 9.021-4.004, 19.251-6.359, 29.829-6.359
1021
- c 10.578,0, 20.808,2.355, 29.819,6.359c 9.38,4.198, 19.845,6.676, 30.812,6.676c 10.916,0, 21.381-2.478, 30.689-6.676
1022
- c 9.134-4.004, 19.323-6.359, 29.891-6.359c 10.629,0, 20.746,2.355, 29.88,6.359c 9.236,4.198, 19.773,6.676, 30.689,6.676
1023
- c 10.967,0, 19.671-2.478, 29.051-6.676C 472.535,106.24, 481.28,103.885, 491.52,103.885L 491.52,60.16 zM 10.527,244.48l-0.174-101.478c 10.578,0, 20.746,3.185, 29.829,7.178c 9.318,4.219, 19.835,7.137, 30.74,7.137
1024
- c 10.916,0, 21.432-2.243, 30.689-6.461c 9.144-4.004, 19.302-6.185, 29.932-6.185c 10.588,0, 20.746,2.345, 29.829,6.339
1025
- c 9.247,4.219, 19.773,6.717, 30.74,6.717c 10.916,0, 21.371-2.447, 30.74-6.666c 9.021-4.004, 19.251-6.287, 29.829-6.287
1026
- c 10.578,0, 20.808,2.304, 29.819,6.298c 9.38,4.219, 19.845,6.687, 30.812,6.687c 10.916,0, 21.381-2.468, 30.689-6.687
1027
- c 9.134-4.004, 19.323-6.287, 29.891-6.287c 2.99,0, 5.857,0.625, 8.786,0.952c 5.335,1.116, 10.742,1.628, 15.923,3.645
1028
- c 0.113,0.051, 0.236,0.113, 0.348,0.174c 38.502,15.278, 71.711,51.313, 92.447,79.524L 501.76,244.48L 10.527,244.48 zM 284.713,357.12l 71.035,0 l 0.635,0 l 0.461,0 c 0.809,0, 19.476,2.877, 25.743-10.783L 409.692,285.44c-13.036,0-45.046,0-92.396,0
1029
- L 284.713,357.12z M 92.16,291.768C 92.16,286.996, 88.228,285.44, 83.405,285.44L 43.745,285.44 C 38.912,285.44, 30.72,286.996, 30.72,291.768l0,58.665 C 30.72,355.144, 38.912,357.12, 43.745,357.12l 39.649,0
1030
- C 88.228,357.12, 92.16,355.144, 92.16,350.433L 92.16,291.768 z M 256,291.768C 256,286.996, 251.72,285.44, 246.835,285.44l-39.598,0 C 202.353,285.44, 194.56,286.996, 194.56,291.768l0,58.665
1031
- C 194.56,355.144, 202.353,357.12, 207.237,357.12l 39.598,0 C 251.72,357.12, 256,355.144, 256,350.433L 256,291.768 z M 174.080,291.768C 174.080,286.996, 169.82,285.44, 164.946,285.44l-39.363,0
1032
- C 120.689,285.44, 112.64,286.996, 112.64,291.768l0,58.665 C 112.64,355.144, 120.689,357.12, 125.583,357.12l 39.363,0 C 169.82,357.12, 174.080,355.144, 174.080,350.433L 174.080,291.768 z M 394.701,364.237
1033
- C 382.915,389.857, 351.017,387.84, 351.017,387.84L 10.291,387.84 L 10.24,264.96l 427.162,0 L 394.701,364.237z" data-tags="boat-tour" />
1034
- <glyph unicode="&#xe091;" d="M 87.040,407.378l 97.946-27.023L 239.35,418.56l 18.913-4.659l-53.852-38.318l 296.806-82.463l-21.719-80.712l-297.912,82.237
1035
- C 66.171,329.452, 87.214,407.378, 87.214,407.378M 347.72,200.878c-0.358,6.738-1.638,13.158-3.84,19.22l 135.997-37.857l-4.362-16.783L 347.72,200.878zM 224.164,234.998c 3.666,5.335, 8.008,10.148, 12.943,14.316L 10.24,311.982l0-18.053 L 224.164,234.998zM 280.34,175.237c 12.196,0, 22.098,9.923, 22.098,22.118c0,12.237-9.902,22.139-22.098,22.139
1036
- c-12.237,0-22.129-9.902-22.129-22.139C 258.212,185.16, 268.104,175.237, 280.34,175.237z M 501.76,39.68c-10.762,0-21.002,2.437-30.136,6.636
1037
- c-9.503,4.301-20.101,6.881-31.201,6.881c-11.059,0-21.719-2.58-31.078-6.881C 400.077,42.117, 389.857,39.68, 379.085,39.68
1038
- c-10.762,0-21.023,2.437-30.259,6.636c-9.421,4.301-19.999,6.881-31.078,6.881c-11.121,0-21.699-2.58-31.181-6.881
1039
- C 277.422,42.117, 267.059,39.68, 256.348,39.68c-10.701,0-21.002,2.437-30.198,6.636c-9.482,4.301-20.142,6.881-31.191,6.881
1040
- c-11.059,0-21.709-2.58-31.078-6.881C 154.685,42.117, 144.333,39.68, 133.612,39.68c-10.701,0-21.002,2.437-30.259,6.636
1041
- c-9.38,4.301-20.029,6.881-31.089,6.881c-11.049,0-21.699-2.58-31.13-6.881C 31.949,42.117, 21.586,39.68, 10.936,39.68L 10.24,219.955l 248.084-68.465
1042
- c-17.101,8.264-28.979,25.6-28.979,45.865c0,28.201, 22.804,51.026, 50.985,51.026c 28.099,0, 50.964-22.825, 50.964-51.026c0-28.18-22.856-50.995-50.964-50.995
1043
- c-1.7,0-3.379,0.338-5.018,0.481l 226.079-62.341L 501.76,39.68z" data-tags="boat-ramp" />
1044
- <glyph unicode="&#xe092;" d="M 501.76,70.4c-10.762,0-21.012,2.376-30.228,6.564c-9.39,4.239-20.029,6.799-31.15,6.799c-11.172,0-21.821-2.58-31.222-6.799
1045
- C 399.954,72.776, 389.693,70.4, 378.921,70.4c-10.752,0-21.053,2.376-30.208,6.564c-9.554,4.239-20.214,6.799-31.212,6.799
1046
- c-11.131,0-21.791-2.58-31.222-6.799C 277.115,72.776, 266.701,70.4, 256.041,70.4c-10.772,0-21.023,2.376-30.31,6.564
1047
- c-9.431,4.239-20.050,6.799-31.089,6.799c-11.131,0-21.78-2.58-31.212-6.799C 154.266,72.776, 143.852,70.4, 133.079,70.4
1048
- c-10.609,0-21.023,2.376-30.188,6.564C 93.46,81.203, 82.801,83.763, 71.68,83.763c-11.049,0-21.647-2.58-31.099-6.799
1049
- C 31.273,72.776, 21.012,70.4, 10.24,70.4l0,45.015 c 10.762,0, 21.023,2.437, 30.341,6.461C 50.033,126.218, 60.631,128.778, 71.68,128.778
1050
- c 11.121,0, 21.78-2.56, 31.212-6.902c 9.165-4.024, 19.579-6.461, 30.188-6.461c 10.762,0, 21.187,2.437, 30.351,6.461
1051
- c 9.421,4.342, 20.081,6.902, 31.212,6.902c 11.039,0, 21.647-2.56, 31.089-6.902c 9.288-4.024, 19.538-6.461, 30.31-6.461
1052
- c 10.66,0, 21.064,2.437, 30.239,6.461c 9.431,4.342, 20.091,6.902, 31.222,6.902c 10.988,0, 21.637-2.56, 31.212-6.902
1053
- c 9.165-4.024, 19.456-6.461, 30.208-6.461c 10.772,0, 21.033,2.437, 30.239,6.461c 9.4,4.342, 20.050,6.902, 31.222,6.902
1054
- c 11.121,0, 21.76-2.56, 31.15-6.902c 9.216-4.024, 19.466-6.461, 30.228-6.461L 501.76,70.4 zM 430.572,197.745c 32.276,0, 58.47,26.112, 58.47,58.143c0,32.061-26.194,58.040-58.47,58.040c-32.328,0-58.491-25.989-58.491-58.040
1055
- C 372.081,223.857, 395.919,197.745, 430.572,197.745zM 90.020,165.059c 4.536-1.075, 8.817-2.642, 12.882-4.465c 9.165-4.116, 19.579-6.564, 30.198-6.564c 10.752,0, 21.187,2.437, 30.341,6.564
1056
- c 9.431,4.239, 20.081,6.922, 31.212,6.922c 11.039,0, 21.668-2.683, 31.089-6.922c 9.277-4.116, 19.538-6.564, 30.31-6.564
1057
- c 10.65,0, 21.074,2.437, 30.228,6.564c 9.441,4.239, 20.091,6.922, 31.222,6.922c 10.998,0, 21.658-2.683, 31.212-6.922
1058
- c 9.175-4.116, 19.456-6.564, 30.228-6.564c 7.834,0, 15.38,1.321, 22.497,3.543l-97.536,174.653l 113.449,20.552
1059
- c 16.65,3.154, 28.733,16.138, 28.733,32.758c0,18.33-15.022,33.024-33.403,33.024c-1.321,0-2.55,0-3.789-0.113L 233.646,386.785
1060
- c-12.298-2.796-28.59-20.675-19.313-42.609c 0.512-1.208, 0.973-2.335, 1.495-3.533l 45.732-81.951L 90.020,165.059z" data-tags="swimming" />
1061
- <glyph unicode="&#xe093;" d="M 491.52-21.76c-10.301,0-20.183,2.355-28.979,6.369c-9.144,4.25-19.343,6.728-29.901,6.728c-10.66,0-20.879-2.478-29.901-6.728
1062
- C 393.943-19.405, 383.959-21.76, 373.77-21.76c-10.332,0-20.285,2.355-29.092,6.369c-9.042,4.25-19.241,6.728-29.901,6.728
1063
- c-10.557,0-20.767-2.478-29.798-6.728C 276.193-19.405, 266.22-21.76, 255.898-21.76c-10.322,0-20.173,2.355-28.969,6.369
1064
- c-9.042,4.25-19.21,6.728-29.88,6.728c-10.557,0-20.777-2.478-29.911-6.728C 158.341-19.405, 148.5-21.76, 138.23-21.76
1065
- c-10.322,0-20.173,2.355-28.969,6.369c-9.021,4.25-19.241,6.728-29.901,6.728c-10.557,0-20.756-2.478-29.901-6.728C 40.653-19.405, 30.802-21.76, 20.48-21.76
1066
- l0,43.786 c 10.322,0, 20.173,2.365, 28.969,6.4c 9.155,4.106, 19.343,6.595, 29.901,6.595c 10.67,0, 20.879-2.478, 29.901-6.595
1067
- c 8.796-4.035, 18.647-6.4, 28.969-6.4c 10.271,0, 20.111,2.365, 28.918,6.4c 9.134,4.106, 19.354,6.595, 29.911,6.595
1068
- c 10.67,0, 20.838-2.478, 29.88-6.595c 8.796-4.035, 18.647-6.4, 28.969-6.4c 10.312,0, 20.285,2.365, 29.082,6.4
1069
- c 9.032,4.106, 19.241,6.595, 29.798,6.595c 10.66,0, 20.859-2.478, 29.901-6.595c 8.796-4.035, 18.76-6.4, 29.092-6.4
1070
- c 10.189,0, 20.173,2.365, 28.969,6.4c 9.021,4.106, 19.241,6.595, 29.901,6.595c 10.557,0, 20.756-2.478, 29.901-6.595
1071
- c 8.796-4.035, 18.678-6.4, 28.979-6.4L 491.52-21.76 zM 301.281,68.659c 4.465,0.942, 8.919,1.413, 13.496,1.413c 10.66,0, 20.859-2.468, 29.901-6.595c 8.796-4.035, 18.76-6.39, 29.092-6.39
1072
- c 10.189,0, 20.173,2.355, 28.969,6.39c 6.216,2.806, 12.902,5.069, 20.060,6.011C 418.918,186.972, 297.175,291.789, 291.441,297.216
1073
- c-5.98,5.437-11.5,17.347-7.619,31.406l 29.071,96.799c 5.171,15.002, 2.591,35.062-4.557,41.083c-4.106,3.308-12.79,5.673-18.668-1.065
1074
- l-78.664-89.825c-17.244-18.422-2.806-38.134-3.154-38.021c-26.757,9.687-58.173,3.195-77.23-4.71l-64.983-33.188
1075
- c-6.451-2.714-9.257-10.967-5.857-16.517c 10.793-17.367, 46.561-17.48, 121.088-9.329C 301.281,286.843, 301.404,92.621, 301.281,68.659z" data-tags="whale-watching" />
1076
- <glyph unicode="&#xe094;" d="M 303.196,35.195c 3.523,0.594, 7.045,0.809, 10.68,0.809c 10.977,0, 21.504-2.499, 30.843-6.84c 9.083-3.953, 19.241-6.349, 29.88-6.349
1077
- s 20.941,2.396, 30.024,6.349c 9.298,4.342, 19.825,6.84, 30.72,6.84c 11.018,0, 19.292-2.499, 28.59-6.84c 9.083-3.953, 17.347-6.349, 27.587-6.349L 491.52-21.76
1078
- c-10.24,0-18.514,2.396-27.587,6.513c-9.298,4.157-18.708,6.717-29.727,6.717c-10.895,0-20.849-2.56-30.147-6.717
1079
- C 394.967-19.364, 384.963-21.76, 374.323-21.76s-20.664,2.396-29.737,6.513c-9.339,4.157-19.794,6.717-30.771,6.717
1080
- c-10.895,0-21.412-2.56-30.853-6.717C 273.889-19.364, 263.731-21.76, 253.092-21.76c-10.65,0-20.808,2.396-29.88,6.513
1081
- c-9.298,4.157-19.794,6.717-30.802,6.717c-11.018,0-21.545-2.56-30.863-6.717C 152.484-19.364, 142.305-21.76, 131.727-21.76
1082
- c-10.65,0-20.818,2.396-29.88,6.513c-9.441,4.157-19.978,6.717-30.863,6.717c-11.008,0-21.545-2.56-30.843-6.717
1083
- C 31.058-19.364, 20.89-21.76, 10.24-21.76l0,44.575 c 10.65,0, 20.818,2.396, 29.901,6.349c 9.298,4.342, 19.835,6.84, 30.843,6.84
1084
- c 10.885,0, 21.412-2.499, 30.863-6.84c 9.062-3.953, 19.241-6.349, 29.88-6.349c 10.578,0, 20.756,2.396, 29.819,6.349
1085
- c 5.345,2.396, 10.895,4.342, 16.701,5.396l 283.116,50.104c 9.175,2.161, 21.658,8.509, 25.999,19.446c 0.86,2.079, 3.86,2.673, 6.4,2.56
1086
- C 498.381,106.404, 501.76,102.451, 501.76,97.874c0-7.209-5.581-27.392-36.516-33.628L 303.196,35.195zM 57.549,388.444c 22.62,0, 41.021,18.258, 41.021,40.724C 98.57,451.625, 80.169,469.76, 57.549,469.76C 34.939,469.76, 16.66,451.625, 16.66,429.169
1087
- C 16.66,406.692, 34.939,388.444, 57.549,388.444zM 176.66,59.802c 2.068-9.021, 13.076-17.664, 24.576-17.664l-0.133-0.123c 14.367,0, 26.112,11.54, 26.112,25.938l-0.481,4.219l-31.191,132.956
1088
- c-2.662,8.53-10.783,16.589-19.128,19.958l0,0l-45.906,27.382l-20.931,89.6l 129.004,0.236c 10.537,0, 19.016,7.117, 19.016,17.582
1089
- c0,10.445-8.479,17.705-19.016,17.705L 52.337,377.59 c-18.606,0-27.218-11.94-25.027-23.47l 26.378-118.159c 2.068-11.172, 9.431-20.224, 19.374-25.16
1090
- l 0.594-0.072l 76.78-44.739L 176.66,59.802zM 266.24,357.12L 501.76,357.12L 501.76,346.88L 266.24,346.88z" data-tags="waterskiing" />
1091
- <glyph unicode="&#xe095;" d="M 96.42,116.838c 137.411-58.092, 241.777-91.965, 388.782-138.537c 3.011-0.461, 5.786,1.628, 6.246,4.772
1092
- c 0.461,3.021-1.608,5.939-4.628,6.523C 255.263,62.822, 73.492,143.964, 32.020,162.826c-4.291,1.731-9.277-0.236-10.885-4.444
1093
- c-1.741-4.311, 0.113-8.96, 4.28-10.588c 10.312-4.649, 20.5-9.185, 30.351-13.496l-32.666-25.027c-3.707-5.468-2.089-12.462, 3.359-16.179
1094
- c 4.055-2.796, 9.851-2.447, 13.783,0.123L 96.42,116.838zM 475.689,263.465l-106.957,98.734c 0.799-0.051, 1.556-0.236, 2.365-0.236c 21.658,0, 39.148,17.695, 39.148,39.465
1095
- S 392.755,440.883, 371.098,440.883c-21.78,0-39.27-17.695-39.27-39.465c0-8.315, 2.591-16.015, 6.963-22.395l-72.52,25.999l-39.158,56.924
1096
- c-3.011,4.198-7.649,6.994-13.066,7.69c-10.189,1.157-19.579-6.287-20.726-16.65c-0.461-4.311, 0.584-8.499, 2.662-11.991l 39.926-58.204
1097
- c 1.853-2.324, 4.178-4.301, 6.953-5.591l 46.336-18.278l-76.073-39.117c-10.65-6.052-18.186-16.763-20.265-29.225l 0.348-69.97l-70.369-31.887
1098
- c-7.875-3.84-13.548-11.756-13.896-21.197c-0.573-13.507, 9.851-24.791, 23.286-25.385c 4.168-0.215, 8.223,0.696, 11.704,2.458l 86.098,39.096
1099
- c 6.144,3.267, 10.772,9.196, 12.278,16.425l-0.113,43.54l 59.761-53.791l-11.008-91.607c0-0.584-0.113-1.157-0.113-1.751
1100
- c-0.584-13.496, 9.861-24.914, 23.286-25.498c 12.616-0.461, 23.388,8.735, 25.129,21.187l 12.861,104.55c0,0.461, 0.113,0.922, 0.113,1.403
1101
- c 0.225,7.332-2.652,13.967-7.526,18.616l-55.357,49.48l 83.405,41.216l 77.384-71.598c 3.471-3.379, 8.223-5.468, 13.322-5.468
1102
- c 10.424,0.113, 18.76,8.612, 18.657,18.975C 482.079,254.966, 479.519,259.973, 475.689,263.465z" data-tags="surfing" />
1103
- <glyph unicode="&#xe096;" d="M 220.088,398.070l-5.55-9.933C 210.913,380.785, 203.418,377.6, 194.847,377.6l-13.046,0 c 7.485-10.24, 19.466-18.627, 33.352-18.627
1104
- c 22.712,0, 40.847,17.162, 40.847,39.813L 256,398.080 l-33.976,0 C 221.174,398.080, 220.324,398.92, 220.088,398.070zM 194.847,387.84c 4.475,0, 8.448,1.556, 10.271,5.407l 5.427,9.708C 212.603,407.409, 216.955,408.32, 222.024,408.32l 42.527,0
1105
- c-5.56,20.48-25.487,39.404-49.060,39.404c-27.904,0-50.493-20.664-50.493-48.62c0-4.465, 0.481-11.264, 1.69-11.264L 194.847,387.84 zM 334.684,162.56c 37.878,0, 136.817,11.602, 164.055,37.642c-12.257,37.642-60.58,40.653-104.919,21.484c-7.619-3.297-17.756-5.734-29.358-7.905
1106
- l-9.062,35.082c 7.24,3.738, 12.022,11.397, 11.581,20.009c-0.461,11.756-10.322,20.941-22.077,20.46l-6.656,25.692
1107
- c 6.543,4.936, 9.984,13.261, 8.038,21.75c-2.662,11.51-14.080,18.801-25.62,16.21c0,0-93.809-0.84-123.228-8.735
1108
- c-29.358-7.895-39.26-57.231-39.26-57.231L 132.383,203.52L 10.24,203.52 l0-40.96 L 334.684,162.56 z M 250.358,307.927l 72.786,3l 5.796-22.292
1109
- c-19.681-0.963-54.661-2.775-85.893-4.516L 250.358,307.927z M 230.062,241.408l 109.814,4.936l 9.124-34.949
1110
- c-44.82-6.441-102.932-7.363-130.417-7.475L 230.062,241.408zM 435.261,115.364c0,0, 66.499,0.84, 66.499,65.741c0,2.601-0.256,4.557-0.481,6.963C 459.776,158.075, 348.877,152.32, 334.858,152.32L 10.24,152.32 l0-50.217
1111
- c 7.854,0, 15.954,1.823, 23.071,4.936c 11.725,5.417, 24.771,8.315, 37.581,8.315c 12.8,0, 25.733-2.898, 37.202-8.202
1112
- c 7.608-3.379, 15.462-5.059, 23.439-5.059c 8.1,0, 15.944,1.679, 23.194,4.936c 11.837,5.417, 24.76,8.315, 37.571,8.315
1113
- c 12.923,0, 25.61-2.775, 37.335-8.202c 7.363-3.379, 15.452-5.059, 23.439-5.059c 7.967,0, 15.821,1.679, 23.183,4.936
1114
- c 11.725,5.417, 24.781,8.315, 37.458,8.315c 13.036,0, 25.62-2.775, 37.325-8.202c 7.496-3.379, 15.575-5.059, 23.439-5.059
1115
- c 0.983,0, 1.884,0.123, 2.836,0.123l 9.677-37.1c-4.178-0.717-8.335-1.219-12.636-1.219c-10.619,0-20.9,2.304-29.962,6.4
1116
- c-9.298,4.342-19.804,6.861-30.802,6.861c-10.977,0-21.504-2.519-30.802-6.861c-9.062-4.096-19.22-6.4-29.85-6.4s-20.9,2.304-29.962,6.4
1117
- c-9.298,4.342-19.804,6.861-30.802,6.861c-10.998,0-21.504-2.519-30.802-6.861c-9.062-4.096-19.21-6.4-29.839-6.4
1118
- c-10.506,0-20.777,2.304-29.839,6.4c-9.308,4.342-19.814,6.861-30.802,6.861c-10.875,0-21.391-2.519-30.689-6.861
1119
- C 31.027,66.202, 20.869,63.898, 10.24,63.898L 10.24,19.2 c 10.629,0, 20.787,2.284, 29.962,6.38c 9.298,4.342, 19.814,6.881, 30.689,6.881
1120
- c 10.988,0, 21.494-2.54, 30.802-6.881c 9.062-4.096, 19.333-6.38, 29.839-6.38c 10.629,0, 20.777,2.284, 29.839,6.38
1121
- c 9.298,4.342, 19.814,6.881, 30.802,6.881c 11.008,0, 21.504-2.54, 30.802-6.881c 9.062-4.096, 19.333-6.38, 29.962-6.38s 20.787,2.284, 29.85,6.38
1122
- c 9.298,4.342, 19.825,6.881, 30.802,6.881c 10.998,0, 21.504-2.54, 30.802-6.881c 9.062-4.096, 19.343-6.38, 29.962-6.38
1123
- c 10.496,0, 20.797,2.284, 29.839,6.38c 9.318,4.342, 19.825,6.881, 30.822,6.881c 10.977,0, 19.374-2.54, 28.672-6.881C 472.75,21.484, 481.28,19.2, 491.52,19.2
1124
- l0,44.698 c-10.24,0-18.77,2.304-27.832,6.4c-9.298,4.342-18.749,6.861-29.727,6.861c-10.998,0-20.972-2.519-30.29-6.861
1125
- c-0.717-0.317-1.178-0.543-1.925-0.84l-9.165,35.656c 1.7,0.604, 3.4,1.198, 5.018,1.925C 409.334,112.456, 422.461,115.364, 435.261,115.364z
1126
- " data-tags="rafting" />
1127
- <glyph unicode="&#xe097;" d="M 424.407,164.403c-10.209,0-19.958-2.437-28.6-6.636c-8.54-3.84-17.951-6.164-27.832-6.164c-9.851,0-19.272,2.324-27.802,6.164
1128
- c-8.653,4.198-18.401,6.636-28.6,6.636c-10.097,0-19.855-2.437-28.611-6.636c-8.428-3.84-17.828-6.164-27.699-6.164
1129
- c-9.882,0-19.415,2.324-27.853,6.164c-8.643,4.198-18.391,6.636-28.611,6.636c-10.199,0-19.948-2.437-28.59-6.636
1130
- c-8.53-3.84-17.94-6.164-27.761-6.164c-9.871,0-19.292,2.324-27.822,6.164c-8.632,4.198-18.278,6.636-28.477,6.636
1131
- c-10.22,0-19.476-2.437-28.129-6.636C 49.51,153.917, 40.96,151.603, 30.72,151.603l0-43.131 c 10.24,0, 18.79,2.345, 27.32,6.175
1132
- c 8.643,4.188, 18.156,6.625, 28.375,6.625c 10.199,0, 19.722-2.437, 28.355-6.625c 7.188-3.256, 15.084-5.1, 23.276-5.704l-34.57-35.666
1133
- c-10.998,7.076-25.6,5.806-35.133-4.086l-39.598-41.021c-10.998-11.397-11.008-29.86,0-41.37c 11.1-11.397, 28.938-11.397, 39.916,0l 39.608,41.011
1134
- c 8.98,9.329, 10.537,23.255, 4.925,34.304l 47.616,49.275c 3.256,1.065, 6.39,1.864, 9.421,3.256c 8.643,4.188, 18.401,6.625, 28.59,6.625
1135
- c 10.22,0, 19.968-2.437, 28.611-6.625c 8.438-3.83, 17.971-6.175, 27.853-6.175c 9.871,0, 19.261,2.345, 27.699,6.175
1136
- c 8.745,4.188, 18.514,6.625, 28.611,6.625c 10.199,0, 19.948-2.437, 28.6-6.625c 8.53-3.83, 17.951-6.175, 27.802-6.175
1137
- c 9.882,0, 19.292,2.345, 27.832,6.175c 8.643,4.188, 18.391,6.625, 28.6,6.625c 10.189,0, 20.081-2.437, 28.826-6.625
1138
- C 461.65,110.807, 471.040,108.472, 481.28,108.472L 481.28,151.603 c-10.24,0-19.63,2.324-28.037,6.164C 444.488,161.956, 434.596,164.403, 424.407,164.403zM 443.587,375.306l 39.598,41.032c 11.1,11.5, 11.1,29.993,0,41.39c-10.998,11.5-28.948,11.5-39.936,0L 403.661,416.696
1139
- c-9.544-9.882-10.762-24.996-3.809-36.27l-49.244-51.098l-97.812,37.55c-2.57,1.516-5.274,2.785-8.294,3.727
1140
- c-21.34,6.615-43.889-5.929-50.289-28.027l-30.054-104.704C 163.768,236.657, 163.666,234.24, 163.553,234.24L 30.72,234.24 l0-55.368 c 10.24,0, 14.367,1.751, 20.992,4.762
1141
- c 10.875,5.233, 22.774,8.028, 34.673,8.028c 11.878,0, 23.777-2.796, 34.437-7.926c 7.055-3.246, 14.295-4.864, 21.699-4.864
1142
- c 7.465,0, 14.715,1.608, 21.453,4.762c 10.988,5.233, 22.989,8.028, 34.857,8.028c 12.012,0, 23.777-2.673, 34.683-7.926
1143
- c 6.84-3.246, 14.356-4.864, 21.76-4.864c 7.414,0, 14.674,1.608, 21.514,4.762c 10.885,5.233, 22.999,8.028, 34.785,8.028
1144
- c 12.104,0, 23.777-2.673, 34.642-7.926c 6.963-3.246, 14.49-4.864, 21.76-4.864c 7.424,0, 14.817,1.608, 21.545,4.762
1145
- c 10.885,5.233, 22.999,8.028, 34.888,8.028c 1.997,0, 10.189-0.645, 18.289,4.925c 14.346,6.502, 19.743,10.22, 32.287,18.186
1146
- C 485.325,221.338, 493.496,234.24, 471.040,234.24c-10.24,0-194.56,0-194.56,0l 60.099,59.412l 7.629-3.011c 9.646-3.604, 20.408,1.505, 24.003,11.51
1147
- c 2.468,7.076, 0.573,14.756-4.147,19.866l 46.438,48.302C 421.151,364.493, 434.596,366.019, 443.587,375.306z M 259.41,234.24l-11.991,0 l 24.218,83.958
1148
- l 50.033-19.343L 259.41,234.24zM 259.082,419.451l-5.161-10.404C 250.552,401.971, 243.61,398.080, 235.633,398.080l-12.134,0 c 6.973-10.24, 20.367-16.712, 33.26-16.712
1149
- C 277.842,381.368, 296.96,399.196, 296.96,421.059L 296.96,418.56 l-36.076,0 C 260.096,418.56, 259.308,420.27, 259.082,419.451zM 235.633,408.32c 4.157,0, 7.864,2.591, 9.544,6.298l 5.048,9.185C 252.129,428.114, 256.164,428.8, 260.884,428.8l 39.465,0
1150
- c-5.171,20.48-23.665,38.728-45.527,38.728c-25.938,0-46.92-20.664-46.92-47.616c0-4.301, 0.451-11.592, 1.577-11.592L 235.633,408.32 z" data-tags="kayaking" />
1151
- <glyph unicode="&#xe099;" d="M 168.755,358.267c 21.832,2.632, 37.325,22.845, 34.744,45.087c-2.58,22.252-22.415,38.031-44.247,35.41
1152
- c-21.832-2.775-37.263-22.845-34.683-45.087C 127.273,371.415, 146.924,355.635, 168.755,358.267zM 495.841,167.168c-2.109,1.075-164.321,85.023-164.321,85.023l-41.185,54.057l-2.55,0.604C 282.163,312.105, 276.48,311.624, 266.24,305.889l0-0.123
1153
- c0-4.301-2.273-10.639, 0.563-15.79l 31.539-40.172l 0.625-0.369l-25.088-59.187l-67.092,17.111l-2.867,24.525l 55.286,6.799
1154
- c 2.468,0.113, 5.059,0.84, 7.404,2.15c 9.165,4.895, 12.687,16.507, 7.875,25.825c-3.758,7.178-11.264,11.008-18.657,10.168l-56.31-6.932
1155
- l-5.048,42.568c-2.693,22.129-22.538,38.031-44.247,35.4c-21.76-2.755-37.376-22.979-34.796-45.21l 11.735-98.417
1156
- c 1.413-12.564, 8.745-23.439, 18.483-29.778l-88.443-10.762l-27.576-69.591c 1.055,0.471, 2.222,0.594, 3.164,1.065
1157
- c 11.387,5.386, 24.064,8.264, 36.506,8.264c 12.442,0, 24.996-2.867, 36.27-8.131c 7.158-3.338, 15.022-5.018, 22.651-5.018
1158
- c 7.69,0, 15.432,1.679, 22.477,4.895c 11.387,5.386, 23.941,8.264, 36.506,8.264c 12.442,0, 24.965-2.867, 36.127-8.131
1159
- c 7.27-3.338, 15.135-5.018, 22.774-5.018c 7.741,0, 15.37,1.679, 22.528,4.895c 11.387,5.386, 24.074,8.264, 36.506,8.264s 24.996-2.867, 36.147-8.131
1160
- c 2.703-1.188, 5.642-2.028, 8.571-2.867c 45.189,12.104, 125.235,35.4, 146.821,55.132C 502.999,153.303, 504.187,162.99, 495.841,167.168zM 10.24,8.96c 10.332,0, 20.306,2.386, 29.112,6.451c 9.032,4.311, 19.251,6.81, 29.932,6.81s 20.777-2.499, 29.932-6.81
1161
- C 108.012,11.346, 117.873,8.96, 128.205,8.96c 10.271,0, 20.132,2.386, 29.051,6.451c 9.032,4.311, 19.241,6.81, 29.932,6.81
1162
- c 10.568,0, 20.777-2.499, 29.901-6.81c 8.806-4.055, 18.668-6.451, 29-6.451c 10.322,0, 20.183,2.386, 29.102,6.451
1163
- c 9.052,4.311, 19.251,6.81, 29.942,6.81c 10.557,0, 20.777-2.499, 29.809-6.81C 343.849,11.346, 353.71,8.96, 364.032,8.96
1164
- c 10.342,0, 20.193,2.386, 29,6.451c 9.165,4.311, 19.374,6.81, 29.932,6.81c 10.67,0, 20.541-2.499, 29.563-6.81C 461.332,11.346, 471.040,8.96, 481.28,8.96
1165
- l0,44.37 c-10.24,0-19.948,2.365-28.764,6.441c-9.021,4.321-19.067,6.707-29.737,6.707c-10.557,0-20.685-2.386-29.839-6.707
1166
- c-8.806-4.065-18.616-6.441-28.959-6.441c-10.322,0-20.152,2.365-29.071,6.441c-9.032,4.321-19.241,6.707-29.798,6.707
1167
- c-10.691,0-20.89-2.386-29.942-6.707c-8.919-4.065-18.77-6.441-29.092-6.441c-10.332,0-20.183,2.365-28.989,6.441
1168
- c-9.124,4.321-19.333,6.707-29.901,6.707c-10.68,0-20.9-2.386-29.932-6.707c-8.919-4.065-18.78-6.441-29.051-6.441
1169
- c-10.332,0-20.193,2.365-28.989,6.441c-9.155,4.321-19.251,6.707-29.932,6.707s-20.9-2.386-29.932-6.707
1170
- C 30.546,55.695, 20.572,53.33, 10.24,53.33L 10.24,8.96 z" data-tags="jet-skiing" />
1171
- <glyph unicode="&#xe09a;" d="M 256.778,402.627c 18.156,0, 32.799,14.602, 32.799,32.707c0,17.971-14.643,32.696-32.799,32.696s-32.799-14.725-32.799-32.696
1172
- C 223.98,417.239, 238.623,402.627, 256.778,402.627zM 462.479,27.761c-9.042,4.198-19.22,6.646-29.88,6.646c-10.537,0-20.716-2.447-29.88-6.646
1173
- c-8.776-3.86-18.616-6.195-28.918-6.195s-20.265,2.345-29.061,6.195c-9.021,4.198-19.2,6.646-29.86,6.646s-20.859-2.447-29.88-6.646
1174
- c-8.899-3.86-18.739-6.195-29.041-6.195c-10.312,0-20.152,2.345-29.051,6.195c-9.021,4.198-19.21,6.646-29.87,6.646
1175
- c-10.537,0-20.726-2.447-29.87-6.646c-8.786-3.86-18.596-6.195-28.846-6.195c-10.301,0-20.265,2.345-29.051,6.195
1176
- c-9.021,4.198-19.21,6.646-29.87,6.646c-10.66,0-20.849-2.447-29.87-6.646C 40.632,23.9, 30.792,21.555, 20.48,21.555L 20.48-21.76
1177
- c 10.312,0, 20.152,2.222, 29.051,6.195c 9.021,4.198, 19.21,6.646, 29.87,6.646c 10.66,0, 20.849-2.447, 29.87-6.646
1178
- C 118.047-19.538, 128.020-21.76, 138.322-21.76c 10.25,0, 20.060,2.222, 28.846,6.195c 9.144,4.198, 19.323,6.646, 29.87,6.646
1179
- c 10.66,0, 20.849-2.447, 29.87-6.646C 235.807-19.538, 245.647-21.76, 255.959-21.76c 10.301,0, 20.142,2.222, 29.041,6.195
1180
- c 9.021,4.198, 19.22,6.646, 29.88,6.646s 20.838-2.447, 29.86-6.646C 353.536-19.538, 363.5-21.76, 373.801-21.76s 20.142,2.222, 28.918,6.195
1181
- c 9.165,4.198, 19.343,6.646, 29.88,6.646c 10.66,0, 20.838-2.447, 29.88-6.646C 471.357-19.538, 481.219-21.76, 491.52-21.76l0,43.315
1182
- C 481.219,21.555, 471.357,23.9, 462.479,27.761zM 465.183,469.32c-2.355,0.932-5.919,0.358-7.803-1.403L 337.398,347.126C 335.524,347.945, 333.036,346.88, 330.803,346.88c0,0-35.144,0-45.322,0
1183
- c-7.741,10.24-48.732,50.237-48.732,50.237c-2.099,2.109-4.803,4.045-7.496,4.741c-9.37,8.182-23.542,8.448-32.563-0.543l-70.124-70.349
1184
- C 123.873,328.284, 122.88,324.741, 122.88,320.768L 122.88,275.2 L 20.48,275.2 l0-20.48 l 102.4,0 l0-117.996 c0-14.602, 10.936-26.399, 25.528-26.399c 14.5,0, 25.672,11.796, 25.672,26.399L 174.080,254.72 l 71.68,0 l0-153.6 L 20.48,101.12 l0-30.72
1185
- l 245.76,0 L 266.24,254.72 l 30.72,0 l0,20.48 L 174.080,275.2 l0,8.438 l 66.304,65.853l 27.064-27.761C 270.356,318.7, 274.575,316.16, 278.917,316.16l 51.876,0 C 339.722,316.16, 348.16,317.522, 348.16,326.4
1186
- c0,2.109, 0.676,8.366,0,10.24c 28.344,28.262, 102.4,97.761, 112.64,111.892C 460.8,420.618, 460.8,70.4, 460.8,70.4l 10.24,0 L 471.040,463.483 C 471.040,466.053, 467.517,468.265, 465.183,469.32z" data-tags="fishing-pier" />
1187
- <glyph unicode="&#xe09b;" d="M 24.832,135.793L 24.832,135.793c-0.338,0.379-0.461,0.727-0.461,1.219c0,0.993, 0.696,1.833, 1.731,1.833l 49.787-0.133
1188
- c 2.529,0, 4.485,2.079, 4.485,4.649c0,1.956-0.922,3.308-2.765,4.403l-45.199,22.856c-0.799,0.604-1.382,1.577-1.382,2.693
1189
- c0,0.86, 0.348,1.72, 0.809,2.212l0,0c0,0, 118.62,111.473, 381.010,3.4l 72.1,37.417c 0.686,0.379, 1.505,0.625, 2.417,0.625
1190
- c 2.98,0, 5.53-2.703, 5.53-5.878c0-1.219-0.348-2.202-0.819-3.041l-42.537-56.228l 42.537-56.248c 0.471-0.85, 0.819-1.946, 0.819-3.041
1191
- c0-3.297-2.55-5.99-5.53-5.99c-0.911,0-1.731,0.246-2.417,0.604l-72.1,37.53C 412.856,124.662, 161.966,18.565, 24.832,135.793z
1192
- M 104.868,158.761c 9.544,0, 17.080,8.090, 17.080,18.145c0,10.23-7.537,18.278-17.080,18.278c-9.421,0-16.957-8.049-16.957-18.278
1193
- C 87.91,166.851, 95.447,158.761, 104.868,158.761zM 327.68,346.88l0-61.44 l 145.101,0 C 488.755,285.44, 501.76,299.172, 501.76,316.16c0,17.121-13.005,30.72-28.979,30.72L 327.68,346.88 zM 60.375,302.643l 13.23,5.868l 8.274-15.043l0,0l 13.343,10.271l 9.544-14.182l 12.769,11.008l 10.353-13.455l 12.073,11.735l 10.977-12.82
1194
- l 11.622,12.339l 11.612-12.339l 11.612,12.339l 11.5-12.339l 11.622,12.339l 11.571-12.339l 11.622,12.339l 11.612-12.339l 11.5,12.339l 11.622-12.339
1195
- l 11.622,12.339l 11.612-12.339l 13.588,12.339L 317.44,286.013L 317.44,346.88 L 10.24,346.88 l0-0.369 C 20.48,328.796, 41.175,313.754, 60.375,302.643z" data-tags="fish-cleaning" />
1196
- <glyph unicode="&#xe09c;" d="M 481.28-11.53c-9.861,0-19.302,2.243-27.709,6.042c-8.653,4.024-18.422,6.359-28.6,6.359c-10.189,0-19.855-2.345-28.611-6.359
1197
- c-8.397-3.799-17.807-6.042-27.709-6.042c-9.861,0-19.302,2.243-27.72,6.042c-8.745,4.024-18.381,6.359-28.611,6.359
1198
- c-10.199,0-19.948-2.345-28.611-6.359c-8.387-3.799-17.828-6.042-27.689-6.042c-9.892,0-19.313,2.243-27.832,6.042
1199
- c-8.643,4.024-18.371,6.359-28.477,6.359c-10.199,0-19.968-2.345-28.59-6.359c-8.417-3.799-17.848-6.042-27.668-6.042
1200
- c-9.861,0-19.282,2.243-27.822,6.042c-8.632,4.024-18.391,6.359-28.488,6.359c-10.22,0-19.968-2.345-28.611-6.359
1201
- c-8.417-3.799-17.951-6.042-27.822-6.042L 30.71,29.952 c 9.861,0, 19.405,2.243, 27.822,6.042c 8.643,3.901, 18.401,6.257, 28.611,6.257
1202
- c 10.086,0, 19.845-2.355, 28.488-6.257c 8.54-3.799, 17.961-6.042, 27.822-6.042c 9.82,0, 19.241,2.243, 27.668,6.042
1203
- c 8.632,3.901, 18.391,6.257, 28.59,6.257c 10.097,0, 19.835-2.355, 28.477-6.257c 8.52-3.799, 17.94-6.042, 27.832-6.042
1204
- c 9.861,0, 19.292,2.243, 27.689,6.042c 8.663,3.901, 18.412,6.257, 28.611,6.257c 10.23,0, 19.855-2.355, 28.611-6.257
1205
- c 8.417-3.799, 17.859-6.042, 27.72-6.042c 9.902,0, 19.313,2.243, 27.709,6.042c 8.745,3.901, 18.422,6.257, 28.611,6.257
1206
- c 10.179,0, 19.948-2.355, 28.6-6.257c 8.407-3.799, 17.848-6.042, 27.709-6.042L 481.28-11.53 zM 158.218,191.826c 20.982,0, 38.021,16.988, 38.021,37.908c0,20.91-17.039,37.796-38.021,37.796c-20.931,0-37.97-16.886-37.97-37.796
1207
- C 120.248,208.824, 137.288,191.826, 158.218,191.826zM 163.604,60.805c-5.949-10.179-19.077-13.65-29.225-7.619c-10.199,5.919-13.681,19.016-7.741,29.204l 88.125,151.255
1208
- c 3.215,5.704, 7.936,10.404, 13.537,13.527l 113.316,68.424l 76.954,130.57l0,0c 7.301,12.749, 23.552,17.101, 36.362,9.841
1209
- c 12.657-7.383, 17.039-23.593, 9.728-36.229l0,0l-92.201-156.396c-3.144-5.714-7.854-10.404-13.568-13.527l-133.724-82.852L 163.604,60.805z" data-tags="diving" />
1210
- <glyph unicode="&#xe09d;" d="M 512,70.4c-10.24,0-20.552,2.417-29.45,6.523c-9.144,4.342-19.466,6.902-30.147,6.902c-10.824,0-21.125-2.56-30.29-6.902
1211
- c-9.011-4.096-18.985-6.523-29.44-6.523c-10.322,0-20.429,2.417-29.317,6.523c-9.165,4.342-19.476,6.902-30.269,6.902
1212
- c-10.701,0-21.033-2.56-30.157-6.902C 293.888,72.817, 283.914,70.4, 273.469,70.4c-10.445,0-20.429,2.417-29.327,6.523
1213
- c-9.144,4.342-19.476,6.902-30.249,6.902c-10.813,0-21.012-2.56-30.167-6.902C 174.715,72.817, 164.751,70.4, 154.296,70.4
1214
- c-10.455,0-20.357,2.417-29.266,6.523c-9.257,4.342-19.476,6.902-30.28,6.902c-10.803,0-18.104-2.56-27.372-6.902C 58.481,72.817, 51.2,70.4, 40.96,70.4
1215
- l0,44.831 c 10.24,0, 17.521,2.417, 26.419,6.523c 9.257,4.229, 18.022,6.789, 28.826,6.789c 10.803,0, 20.285-2.56, 29.553-6.789
1216
- c 8.909-4.096, 18.452-6.523, 28.908-6.523c 10.455,0, 20.234,2.417, 29.256,6.523c 9.155,4.229, 19.261,6.789, 30.075,6.789
1217
- c 10.772,0, 21.053-2.56, 30.198-6.789c 8.899-4.096, 18.852-6.523, 29.297-6.523c 10.445,0, 20.408,2.417, 29.44,6.523
1218
- c 9.134,4.229, 19.446,6.789, 30.147,6.789c 10.793,0, 21.115-2.56, 30.269-6.789c 8.888-4.096, 18.995-6.523, 29.317-6.523
1219
- c 10.455,0, 20.429,2.417, 29.44,6.523c 9.165,4.229, 19.466,6.789, 30.29,6.789c 10.68,0, 21.012-2.56, 30.147-6.789
1220
- c 8.899-4.096, 19.21-6.523, 29.45-6.523L 511.99,70.4 zM 392.069,257.649l 86.692-6.892l-6.543,45.087L 408.576,300.421c-17.203,0.85-14.725-16.681-14.725-16.681L 392.069,257.649zM 231.311,267.919c 15.923,0, 28.744,13.046, 28.744,29.235c0,16.2-12.81,29.235-28.744,29.235c-15.903,0-28.692-13.046-28.692-29.235
1221
- C 202.619,280.965, 215.409,267.919, 231.311,267.919zM 53.914,155.228c 3.676,1.085, 7.25,2.529, 10.568,4.106c 9.267,4.342, 19.476,6.892, 30.28,6.892c 10.803,0, 21.023-2.55, 30.28-6.892
1222
- c 8.909-4.106, 18.811-6.523, 29.266-6.523c 10.455,0, 20.419,2.406, 29.44,6.523c 9.155,4.342, 19.354,6.892, 30.167,6.892
1223
- c 10.772,0, 21.105-2.55, 30.249-6.892c 8.899-4.106, 18.883-6.523, 29.327-6.523c 10.445,0, 20.419,2.406, 29.45,6.523
1224
- c 9.134,4.342, 19.456,6.892, 30.157,6.892c 10.793,0, 21.115-2.55, 30.269-6.892c 8.888-4.106, 18.995-6.523, 29.317-6.523
1225
- c 10.455,0, 20.429,2.406, 29.44,6.523c 9.165,4.342, 19.466,6.892, 30.29,6.892c 10.68,0, 21.012-2.55, 30.147-6.892
1226
- c 8.899-4.106, 18.883-6.523, 29.338-6.523l-9.748,79.944L 141.824,263.455l 54.385,55.828l-23.869,2.171l-54.313-55.951L 0.010,275.415
1227
- C-0.707,234.455, 44.165,166.349, 53.914,155.228L 53.914,155.228z" data-tags="boating" />
1228
- <glyph unicode="&#xe098;" d="M 299.121,141.967c 11.141,0, 20.070,8.878, 20.070,19.855c0,10.906-8.929,19.855-20.070,19.855s-20.193-8.95-20.193-19.855
1229
- C 278.927,150.845, 287.98,141.967, 299.121,141.967z M 501.76-1.178c-122.88-1.761-245.647,20.746-341.115,96.389l0,0
1230
- c-0.614,0.532-1.628,1.26-1.628,2.099c0,1.812, 1.075,3.195, 2.796,3.195l 93.921-0.123c 4.526,0, 8.212,3.676, 8.212,8.202
1231
- c0,3.379-1.618,5.745-5.284,7.547l-85.115,40.069c-1.577,0.973-2.703,2.652-2.703,4.721c0,1.444, 2.161,2.826, 3.144,3.86l0,0
1232
- c0,0, 102.492,90.317, 327.772,88.34L 501.76-1.178 zM 453.161,449.27c-73.667-0.819-145.828-31.805-226.755-97.26c-3,0.819-9.667,2.56-9.667,2.56
1233
- c-12.851,0-23.327-10.25-23.327-22.897c0,0, 0.911-4.28, 1.464-6.912c-2.427-2.294-65.382-60.498-65.382-60.498l-55.613-51.681
1234
- c-5.233-4.7-11.96-7.045-19.036-6.748C 47.821,206.182, 41.37,209.203, 36.68,214.262c-4.557,5.018-6.799,11.244-6.799,17.5
1235
- c0,7.066, 2.877,14.121, 8.53,19.2c0,0, 4.198,2.304, 7.383,4.096c 0.676-4.69, 2.632-19.046, 2.632-19.046l 45.353,56.965l-50.033-16.814
1236
- c-13.189-4.475-18.606-11.028-18.811-11.295c-18.34-16.312-19.773-45.036-2.826-63.508c 17.050-18.524, 46.162-19.845, 64.911-3.062l 0.481,0.604
1237
- l 52.726,49.469c0,0, 65.055,60.713, 67.205,62.72c 3.123-0.829, 9.308-2.365, 9.308-2.365c 12.79,0, 23.194,10.281, 23.194,22.968
1238
- c0,0-0.625,3.348-1.106,5.765c 78.295,63.488, 146.77,93.604, 215.316,94.382c 14.080,0.154, 25.334-1.69, 43.817-5.581L 501.76,425.421L 501.76,443.505
1239
- l-2.447,0.512C 480.215,448.031, 467.681,449.444, 453.161,449.27z" data-tags="fishing" />
1240
- <glyph unicode="&#xe09e;" d="M 337.224,411.443A37.714,37.837 180 1 1 412.652,411.443A37.714,37.837 180 1 1 337.224,411.443zM 135.782,47.852L 10.24,174.141l 0.051-22.057l 116.849-117.627c 13.425-14.592, 36.424,2.284, 36.424,2.284l-11.028,11.848
1241
- c0,0-10.865-7.148-16.486-1.065L 135.782,47.852zM 10.24,285.44L 143.36,285.44L 143.36,275.2L 10.24,275.2zM 487.117,321.341L 501.76,314.409L 355.891,19.2L 339.743,19.2 zM 245.053,345.508l-58.706-67.973c-3.451-4.301-8.745-6.984-14.653-6.984c-10.527,0-18.985,8.54-18.985,19.046
1242
- c0,5.693, 2.447,10.772, 6.4,14.244l 63.273,73.114c 3.502,4.188, 8.745,6.871, 14.643,6.871l 91.628,0.051c 6.738,0, 12.759-2.744, 17.213-6.984
1243
- l 58.419-58.593l 48.404,48.425c 3.4,2.898, 7.813,4.639, 12.585,4.639c 10.865,0, 19.61-8.827, 19.61-19.661c0-4.741-1.618-9.042-4.403-12.452
1244
- l-58.368-58.982c-17.705-17.766-31.98-2.683-31.98-2.683l-35.799,36.076l-55.982-64.901l 51.292-51.436c0,0, 10.803-10.056, 4.628-30.106l-28.744-128.471
1245
- C 323.246,27.576, 313.385,19.2, 301.64,19.2c-13.466,0-24.402,10.936-24.402,24.463c0,2.13, 0.215,4.188, 0.788,6.154l 23.613,105.441l-58.255,56.76
1246
- l-50.125-56.023c0,0-8.131-10.056-29.635-9.277l-101.642-0.174c-11.366-0.215-21.668,7.608-24.228,19.108c-3.011,13.179, 5.12,26.143, 18.268,29.041
1247
- c 2.058,0.461, 4.116,0.676, 6.124,0.563l 87.45-0.215l 129.28,150.303L 245.053,345.508zM 469.248,17.48C 469.217,7.578, 461.015-1.28, 451.174-1.28L 153.6-1.28 l0-10.24 l 297.533,0 c 16.558-0.092, 30.065,12.687, 30.147,29.327
1248
- L 469.248,17.48z" data-tags="cross-country-skiing" />
1249
- <glyph unicode="&#xe09f;" d="M 452.301,289.106c 21.688,0, 39.219,17.736, 39.219,39.567c0,21.811-17.531,39.444-39.219,39.444
1250
- c-21.586,0-39.158-17.623-39.158-39.444C 413.143,306.852, 430.715,289.106, 452.301,289.106zM 441.252,18.381L 28.57,262.738L 20.48,248.791l 412.498-244.419c 18.913-11.315, 43.325-5.14, 54.6,13.998l-13.691,8.305
1251
- C 467.159,15.237, 452.475,11.602, 441.252,18.381zM 480.932,201.82l-70.185,41.308l-8.1,105.841c-1.208,12.667-8.038,24.033-17.981,31.037l-101.079,60.334
1252
- c-23.839,16.169-56.064,9.81-72.141-14.356c-8.847-13.189-11.284-29.87-6.943-43.407l 27.423-90.563l-82.729-26.604
1253
- c-10.353-4.198-18.35-13.998-19.732-26.020c-2.14-17.623, 10.875-29.297, 28.406-31.375c 3.994-0.481, 6.646,0.676, 10.353,1.618l 112.927,37.693
1254
- c 8.284,3.031, 17.336,11.325, 18.217,18.555c 0.645,5.253, 2.314,9.687, 1.219,12.841l-17.183,61.962l 67.912-40.735l 8.212-59.402
1255
- c 0.707-10.383, 5.396-17.848, 13.322-22.282l 88.75-52.275c 9.708-5.376, 21.975-1.761, 27.29,8.161C 494.295,183.982, 490.639,196.465, 480.932,201.82
1256
- z" data-tags="skiing" />
1257
- <glyph unicode="&#xe0a0;" d="M 211.855,353.096c 20.275,0, 36.669,16.886, 36.669,37.908C 248.525,411.802, 232.131,428.8, 211.855,428.8
1258
- C 191.57,428.8, 175.104,411.802, 175.104,391.004C 175.104,369.981, 191.57,353.096, 211.855,353.096zM 255.037,49.92l 174.684,0 c0,0, 11.295-2.048, 33.751,16.507L 501.76,95.242l0-33.997 l-39.055-30.085c0,0-11.602-9.718-31.15-11.96
1259
- L 240.394,19.2 L 255.037,49.92zM 11.704,19.2L 186.47,19.2L 201.001,49.92L 199.598,49.92L 24.832,49.92L 10.24,19.2 zM 230.308,305.736c0,21.627-18.104,39.199-38.339,39.199c-20.265,0-38.369-17.572-38.369-39.199l0-95.836
1260
- C 153.6,197.765, 162.468,183.040, 170.639,183.040L 88.535,183.040 l-44.39-87.89c-0.973-1.956-1.403-6.134-1.403-8.448C 42.732,78.838, 54.077,70.4, 61.44,70.4l 296.96,0
1261
- c0,0, 13.404-1.178, 32.993,15.258l 78.592,62.228L 440.32,203.52c0,0-6.717,13.527-31.816,17.592l-59.331,10.701l-31.826,56.791l-1.362,0.594
1262
- C 311.327,294.861, 307.2,295.455, 296.96,290.601l0-0.123 c0-3.697-5.233-9.708-3.164-15.022L 317.44,233.359l0-0.338 l-31.099-53.76L 225.28,203.561L 225.28,224 l 52.111,0
1263
- c 2.294,0, 4.669,1.925, 6.932,2.959c 9.001,3.564, 13.435,15.155, 9.964,24.648c-2.57,7.404-9.103,12.216-15.903,12.329l-48.179,0.328
1264
- L 230.308,305.736" data-tags="snowmobile" />
1265
- <glyph unicode="&#xe0a1;" d="M 355.144,402.647A39.342,38.717 180 1 1 433.828,402.647A39.342,38.717 180 1 1 355.144,402.647zM 485.13,256.932l-110.838,100.27c-3.717,3.533-7.997,6.4-12.769,8.458l-86.354,30.249l-39.229,55.972
1266
- c-3.011,3.983-7.639,6.83-13.087,7.526c-10.332,1.137-19.61-6.164-20.9-16.333c-0.461-4.332, 0.584-8.448, 2.785-11.868l 40.018-56.986
1267
- c 1.853-2.386, 4.178-4.219, 6.963-5.478l 46.438-18.043l-76.36-38.369c-10.568-6.052-18.217-16.445-20.306-28.785l 0.461-68.639l-70.502-31.293
1268
- c-8.008-3.645-13.701-11.53-14.060-20.767c-0.236-5.468, 1.485-10.527, 4.434-14.694l-38.021,14.234c-7.137,2.693-12.708,8.387-15.135,15.636
1269
- c-4.352,12.749-18.401,19.599-31.345,15.299c-12.943-4.28-19.896-18.094-15.555-30.843c 7.199-21.043, 23.45-37.683, 44.452-45.548L 396.452-6.605
1270
- c 21.125-7.956, 44.472-6.185, 63.836,4.823c 11.848,6.687, 15.903,21.535, 9.175,33.178c-6.851,11.663-21.944,15.647-33.761,8.98
1271
- c-6.502-3.707-14.531-4.311-21.719-1.567l-81.879,30.648c 8.509,2.877, 14.971,10.291, 16.2,19.374l 12.892,102.666
1272
- c 0.102,0.461, 0.102,0.922, 0.102,1.382c 0.358,7.188-2.56,13.814-7.557,18.371l-55.46,48.425l 83.569,40.53l 77.629-70.328
1273
- c 3.502-3.318, 8.141-5.376, 13.353-5.376c 10.455,0.113, 18.811,8.458, 18.698,18.729C 491.52,248.719, 488.95,253.635, 485.13,256.932z M 310.917,184.893
1274
- l-11.039-90.122c0-0.44-0.102-1.024-0.102-1.577c-0.205-4.68, 1.004-9.052, 3.195-12.82l-155.576,58.225
1275
- c 1.761,0.43, 3.492,0.983, 5.069,1.761l 86.374,38.39c 6.154,3.287, 10.793,9.103, 12.308,16.087l-0.225,42.691L 310.917,184.893z" data-tags="snowboarding" />
1276
- <glyph unicode="&#xe0a2;" d="M 235.52-8.335l0,64.942 l-34.376-20.398L 184.32,46.797l0,22.825 l 51.2,30.577l0,42.68 l-40.96-25.098l0,45.22 l-40.96-21.443l0-61.338 l-16.927-12.595L 122.88,79.002
1277
- l0,41.083 L 65.802,88.115L 40.96,98.345l0,25.897 l 58.214,32.461L 61.44,175.36l0,23.757 l 21.74,11.54l 53.391-31.416l 36.987,21.34l-0.84,0.666l-37.53,21.74
1278
- l 36.536,22.815l-36.628,21.33L 81.715,235.878L 61.44,245.801l0,23.624 l 36.27,20.255L 40.96,320.942l0,25.897 l 23.767,11.407L 122.88,325.509l0,41.738 l 15.206,11.54
1279
- l 19.896-12.083l-0.573-62.515l 37.612-21.729l 0.338,44.145L 235.52,305.111l0,42.67 l-51.2,30.597L 184.32,401.050 l 16.824,10.752L 235.52,391.404L 235.52,456.202 L 255.939,469.76L 276.48,456.202
1280
- l0-64.799 l 39.997,20.797L 337.92,399.718l0-20.398 l-61.44-31.539l0-42.67 l 40.96,23.214l0-46.428 l 40.96,21.34l0,66.806 l 14.899,8.868L 389.12,370.053l0-42.67 l 59.822,31.539L 471.040,346.45
1281
- l0-24.156 l-56.269-32.461L 450.56,269.824l0-23.081 l-18.739-10.199l-54.548,32.338l-37.673-24.023l 36.342-22.815l-37.468-21.729l 38.625-20.398l 55.183,30.577
1282
- L 450.56,198.042l0-22.016 l-33.997-19.323l 54.477-32.461l0-25.498 l-25.825-10.619L 389.12,118.723l0-40.499 l-15.565-10.742L 358.4,78.223l0,61.46 l-40.96,22.661l0-42.68 l-40.96,23.224
1283
- l0-42.68 l 51.2-30.577l0-24.156 l-16.865-9.257L 276.48,56.596l0-64.942 L 255.939-21.76L 235.52-8.335z M 220.508,223.058L 239.821,193.28l 35.983,0 l 16.517,29.778L 274.872,254.72
1284
- l-35.983,0 L 220.508,223.058z" data-tags="snow" />
1285
- <glyph unicode="&#xe0a3;" d="M 354.478,390.554c 21.647,0, 39.127,17.756, 39.127,39.608C 393.605,452.004, 376.125,469.76, 354.478,469.76c-21.668,0-39.281-17.756-39.281-39.608
1286
- C 315.197,408.31, 332.81,390.554, 354.478,390.554zM 459.745,239.483c-6.83-15.882-21.412-11.11-21.412-11.11l-61.399,23.378c-6.154,2.222-10.885,7.363-12.524,13.67l-13.885,40.888
1287
- l-21.668-60.17l 63.713-67.41C 400.548,164.577, 399.36,154.194, 399.36,154.194l0-93 l0,0c0,0, 41.605-18.575, 41.605-41.472
1288
- c0-22.907-18.166-41.482-40.868-41.482c-3.236,0-6.257,0.348-9.38,1.167L 256,9.656l0,20.101 l 102.4,22.671l0,84.695 l-68.803,68.588l-10.783-71.864
1289
- c-1.72-9.124-8.387-17.644-12.114-21.852l-47.309-55.255c-0.686,0.594-1.649,0.594-2.57,0.471l 2.509-0.471
1290
- c 12.247-9.697, 18.616-25.928, 14.797-42.179c-5.181-22.313-27.433-36.096-49.449-30.843c-3.236,0.809-6.246,1.874-9.144,3.267L 51.2,47.995
1291
- l 4.639,19.517l 114.022-1.638l 54.211,63.191L 240.845,253.389l 35.195,94.054l-48.722-28.273L 198.246,261.683c-8.806-18.227-24.668-8.643-24.668-8.643
1292
- c-14.367,8.294-8.806,22.313-8.806,22.313l 29.768,60.754c 7.997,15.421, 14.367,17.756, 14.367,17.756l 69.571,38.441
1293
- c 15.165,10.516, 32.778,2.335, 32.778,2.335l 40.069-15.309c 20.040-7.25, 20.859-18.575, 20.859-18.575l 24.791-80.036l 53.391-19.036
1294
- C 450.365,261.683, 464.732,255.488, 459.745,239.483z M 397.199-2.949c 1.065-0.123, 2.089-0.236, 3.144-0.236c 12.513,0, 22.211,10.281, 22.211,22.907
1295
- c0,12.605-12.954,22.886-23.194,22.886l0-4.792 c0-12.032-9.216-21.842-21.176-21.842c-10.527,0-18.637,7.711-20.582,17.756l-62.925-14.019L 397.199-2.949
1296
- z M 185.969,2.775c 0.932-0.471, 1.853-0.686, 2.888-0.942c 12.278-2.908, 24.443,4.69, 27.341,16.947c 2.191,9.349-1.628,18.698-8.929,23.951
1297
- l-9.267-10.875c-7.875-9.103-21.545-10.148-30.577-2.212c-5.325,4.68-7.404,11.315-7.055,17.869l-68.977,1.178L 185.969,2.775z" data-tags="snow-shoeing" />
1298
- <glyph unicode="&#xe0a4;" d="M 440.044,137.124c 25.774,0, 46.725,21.699, 46.725,48.517c0,26.675-20.961,48.271-46.725,48.271
1299
- c-25.897,0-46.746-21.586-46.746-48.271C 393.288,158.822, 414.136,137.124, 440.044,137.124zM 475.904,28.918c 2.099-0.737, 3.092-1.096, 5.427-1.096c 11.96,0, 21.053,10.056, 21.053,22.436
1300
- c0,9.339-5.908,17.459-13.783,20.736l-64.819,26.081l-47.155,86.62c0,0-3.912,9.564-17.5,14.797L 204.698,262.543l-91.761,160.973
1301
- C 107.602,432.732, 97.812,439.040, 86.569,439.040C 69.581,439.040, 55.869,424.735, 55.869,407.142c0-5.581, 1.413-10.803, 3.871-15.411l 113.92-200.028L 101.437,221.542
1302
- l-18.156-12.206L 371.845,90.88l-0.123,0 l 11.827-18.504c0,0, 4.68-9.964, 18.637-15.657l 35.84-14.213c-23.316-24.136-56.003-13.609-56.003-13.609
1303
- L 29.686,175.503L 10.24,163.533l 370.422-150.641C 423.424-3.246, 460.8,35.461, 460.8,35.461l0-0.123 L 475.904,28.918z" data-tags="sledding" />
1304
- <glyph unicode="&#xe0a5;" d="M 346.685,392.131c 21.289,0, 38.39,17.316, 38.39,38.758S 367.985,469.76, 346.685,469.76c-21.197,0-38.318-17.428-38.318-38.871
1305
- S 325.489,392.131, 346.685,392.131zM 183.849,234.721l 138.004,90.235c 18.022,11.571, 23.47,35.656, 12.022,53.883c-11.315,18.237-35.236,23.736-53.268,12.155l-101.745-66.488
1306
- c-5.775-3.789-10.312-8.724-13.251-14.449L 59.689,98.857c-6.236-12.503-1.352-27.638, 10.885-33.946c 12.237-6.287, 27.31-1.372, 33.536,11.018
1307
- L 183.849,234.721zM 452.649,249.508c 18.248,11.581, 23.921,35.881, 12.462,54.354l-13.384-8.253c 6.912-11.121, 3.523-25.682-7.465-32.563L 20.48-8.335L 28.867-21.76
1308
- L 452.649,249.508z" data-tags="ski-jumping" />
1309
- <glyph unicode="&#xe0a6;" d="M 446.802,379.617C 471.552,379.617, 491.52,399.841, 491.52,424.694C 491.52,449.597, 471.552,469.76, 446.802,469.76c-24.617,0-44.585-20.163-44.585-45.066
1310
- C 402.207,399.841, 422.185,379.617, 446.802,379.617zM 317.44-11.52l 122.88,0 c0,0, 10.24,1.055, 10.24,10.24l0,10.24 l 10.24,0 c0,0, 4.209-27.74-19.016-30.72L 317.44-21.76 L 317.44-11.52 zM 30.72,80.64l 81.92-81.92c0,0, 6.748-2.54, 13.22,3.932l 6.472,6.523L 143.36-1.28c0,0-18.381-26.829-36.905-12.36L 20.48,73.196L 30.72,80.64zM 347.187,113.9l 0.143-81.592c0-15.34, 10.813-27.761, 26.010-27.761c 13.937,0, 26.020,16.23, 26.020,27.761L 399.36,145.848
1311
- c0,7.905-1.782,15.084-7.045,20.142l-65.331,66.437l 87.921,88.371c 16.456,20.726, 7.967,45.578, 7.967,45.578
1312
- c-9.042,27.566-39.956,28.518-39.956,28.518L 157.338,394.957c-11.991,0-21.77-9.82-21.77-21.985c0-12.237, 9.81-21.996, 21.811-21.996
1313
- l 155.771-0.246l-65.556-65.925c-9.411-9.697-14.182-20.603-14.182-34.857c0-13.691, 5.396-25.928, 14.449-34.867L 347.187,113.9zM 233.902,202.639c-2.13,2.028-4.024,4.239-5.765,6.595L 97.966,77.568c-9.851-7.987-13.056-22.057-7.148-33.782
1314
- c 6.779-13.435, 23.173-18.77, 36.475-11.858c 1.823,0.963, 3.461,2.099, 5.028,3.359L 265.933,170.373L 233.902,202.639z" data-tags="ice-skating" />
1315
- <glyph unicode="&#xe0a7;" d="M 501.76-5.325c-112.64-1.649-234.496,20.398-327.619,94.72l0,0c-0.481,0.594, 0.758,1.178, 0.758,2.14c0,1.649, 2.232,3.072, 4.014,3.072
1316
- l 91.965-0.123c 4.536,0, 8.325,3.564, 8.325,8.069c0,3.308-1.464,5.571-4.905,7.352l-82.831,39.352c-1.669,0.952-2.591,2.611-2.591,4.618
1317
- c0,1.546-2.58,2.847-1.628,3.799l0,0c0,0, 99.461,88.781, 314.501,86.764L 501.75-5.325 z M 313.743,135.281c 10.865,0, 19.681,8.765, 19.681,19.538
1318
- c0,10.803-8.817,19.456-19.681,19.456c-10.742,0-19.558-8.663-19.558-19.456C 294.185,144.046, 303.002,135.281, 313.743,135.281zM 10.24,459.52L 102.4,459.52L 102.4,387.84L 10.24,387.84zM 194.56,459.52L 501.76,459.52L 501.76,387.84L 194.56,387.84zM 143.36,352c-10.24-2.488-13.302-9.841-13.302-18.36c0-8.54, 3.062-15.892, 13.302-18.616l0-120.32 c0-15.524-14.766-27.965-30.392-27.965
1319
- c-15.503,0-29.184,12.452-29.184,27.965c0,3.789, 0.133,7.465, 1.567,10.793l 0.901-0.952l 9.759-9.021l-6.277,54.897l-16.138-36.997
1320
- c-4.884-11.377-3.717-18.719-3.717-18.719c0-22.405, 19.282-40.663, 41.82-40.663c 22.661,0, 41.882,18.258, 41.882,40.663L 153.58,315.259
1321
- c 10.24,2.734, 13.117,9.953, 13.117,18.381c0,8.53-2.877,15.882-13.117,18.596L 153.58,459.52 l-10.24,0 L 143.34,352 z" data-tags="ice-fishing" />
1322
- <glyph unicode="&#xe0a8;" d="M 436.214,99.379c 18.831,6.164, 28.969,26.184, 22.774,44.861l-13.65-4.362c 3.727-11.192-2.478-23.265-13.64-26.962L 72.991-8.335
1323
- L 77.609-21.76L 436.214,99.379zM 105.912,308.91c 19.681,5.704, 30.945,26.286, 25.201,45.865c-5.755,19.569-26.44,30.761-46.182,25.057
1324
- c-19.732-5.704-31.119-26.286-25.252-45.865C 65.434,314.388, 86.067,303.196, 105.912,308.91zM 90.685,257.679c-19.63,37.13, 36.7,67.215, 57.446,31.201l 40.448-76.298l 77.015,21.719c 12.739,3.584, 30.341-10.189, 30.341-26.399
1325
- l 0.43-108.739c 0.123-26.952-40.243-27.064-40.243,0.215c-0.123,25.293-0.788,79.196-0.788,79.196l-80.364-23.931
1326
- c-17.592-5.038-32.143,3.676-39.014,16.548L 90.685,257.679zM 215.040,240.445L 215.040,469.76L 194.56,469.76L 194.56,236.083 zM 53.699,208.118c-11.049,21.586, 17.48,35.901, 28.529,14.316l 34.785-67.564c 7.557-13.978, 22.333-23.501, 39.363-23.501
1327
- c 5.294,0, 10.25,1.352, 15.104,2.355l 43.827,12.739c 23.235,6.943, 32.246-23.47, 8.806-30.321l-46.1-13.292
1328
- c-6.871-2.13-14.316-3.236-21.985-3.236c-29.655,0-55.306,16.66-67.932,41.042L 53.699,208.118z" data-tags="chairlift" />
1329
- <glyph unicode="&#xe0a9;" d="M 204.001,387.062c-20.173,0-36.506-16.138-36.506-36.045c0-20.009, 16.333-36.137, 36.506-36.137c 20.070,0, 36.403,16.138, 36.403,36.137
1330
- C 240.404,370.924, 224.082,387.062, 204.001,387.062zM 388.844,315.761c-1.311,7.741-7.721,12.165-8.038,12.493L 166.513,469.76L 146.637,440.904c-3.697-5.755-2.109-13.261, 3.553-17.029
1331
- c 5.734-3.758, 13.24-2.202, 16.988,3.543l 11.581,16.691l 174.029-115.087l-142.602-25.764c-10.025-1.659-17.316-11.827-15.114-21.668l 30.996-120.289
1332
- l-100.28-150.794c-6.011-10.281-2.376-23.552, 7.997-29.399c 10.465-5.97, 23.798-2.335, 29.747,7.956c0,0, 104.663,157.747, 105.103,158.751
1333
- c0,0, 5.407-21.893, 5.407-22.006L 258.263,7.424c-1.976-11.725, 6.072-22.774, 17.869-24.76c 11.909-1.997, 23.163,5.97, 25.16,17.684
1334
- l 16.189,121.733c 0.451,3.103-0.102,9.943-0.87,12.933L 280.883,277.504l 93.071,16.804C 383.877,296.079, 390.615,305.695, 388.844,315.761z" data-tags="golf" />
1335
- <glyph unicode="&#xe0aa;" d="M 201.513,393.452c 18.975,0, 34.284,14.776, 34.284,32.973C 235.796,444.744, 220.488,459.52, 201.513,459.52
1336
- c-18.842,0-34.15-14.776-34.15-33.096C 167.363,408.228, 182.671,393.452, 201.513,393.452zM 455.803,298.26l-36.25,6.697l-21.094-40.479c 3.41-0.788, 6.932-1.137, 10.588-1.137
1337
- C 431.555,263.352, 450.396,278.129, 455.803,298.26z M 10.24,229.919C 10.24,256.748, 32.737,275.2, 60.539,275.2L 163.84,275.2 l0,76.964 c0,18.309, 16.886,33.085, 35.85,33.085
1338
- S 235.52,370.473, 235.52,352.164l0-11.366 l 50.371-12.513c 8.817-1.925, 14.397-10.455, 12.411-18.985c-1.997-8.653-10.732-13.988-19.671-12.063L 235.52,307.016L 235.52,275.2
1339
- l 50.575,0 L 425.318,415.98l-4.137-35.318l 68.547-43.592c 11.325-6.257, 15.442-20.142, 8.97-31.048c-5.079-8.765-15.206-12.872-24.75-11.162
1340
- l-5.53,1.075c-6.605-25.815-30.761-44.78-59.372-44.78c-5.642,0-12.585,0.809-17.766,2.171L 337.92,150.876l0-140.575
1341
- C 337.92-1.751, 329.861-11.52, 317.379-11.52C 304.876-11.52, 296.96-1.751, 296.96,10.312L 296.96,152.32 L 180.797,152.32 l-20.5-33.024l 42.885-98.284
1342
- c 6.236-10.557, 2.355-23.665-8.468-29.573c-10.967-6.031-25.262-2.171-31.508,8.407L 112.64,113.797L 112.64,150.067 l-20.48-34.007l0-105.748
1343
- C 92.16-1.751, 79.084-11.52, 66.601-11.52C 54.118-11.52, 40.96-1.751, 40.96,10.312L 40.96,132.465 l 20.48,28.334l0,95.846 L 40.96,229.12L 40.96,152.32 L 10.24,152.32 L 10.24,229.919 z" data-tags="horse-riding" />
1344
- <glyph unicode="&#xe0ab;" d="M 281.487,408.32c-6.257,20.48-28.18,40.714-54.077,40.714c-30.925,0-55.931-25.754-55.931-55.634
1345
- c0-5.028, 0.604-5.56, 1.935-15.8l 22.405,0 c 1.659,0, 3.441-4.086, 3.441-4.086c 6.748-9.421, 18.033-14.623, 30.751-14.623
1346
- c 20.695,0, 37.519,16.466, 37.519,36.485C 267.54,399.985, 268.769,408.32, 266.752,408.32L 281.487,408.32 zM 279.941,86.282c-5.857-5.775-13.988-10.168-23.132-10.168l-0.041,117.545l 84.081,23.337l 21.105-40.151
1347
- L 279.941,86.282zM 209.336,353.71c-5.55,6.001-13.568,10.476-22.6,10.476c-9.554,0-18.135-3.901-23.624-10.65l-66.724-98.417
1348
- c-2.714-4.383-4.27-9.421-4.27-14.889c0-10.168, 5.069-18.995, 13.148-24.259L 194.56,167.956l0-81.787 c0-11.561, 8.54-20.982, 20.48-20.982
1349
- c 11.909,0, 20.48,9.421, 20.48,20.982l0,102.134 c0,0, 4.229,16.282-14.858,25.149l-55.142,28.273l 41.011,60.047l 21.76-32.758
1350
- c 4.321-6.636, 10.24-9.206, 15.585-9.103l 55.429-1.26c 22.569,0, 22.61,26.788, 0.041,26.788l-44.923,0 L 209.336,353.71zM 454.666,221.184c 0.901-0.86, 1.403-1.935, 1.403-3.328c0-2.57-2.232-4.721-4.874-4.721
1351
- c-0.727,0-1.188,0-1.782,0.225c-9.585,3.963-15.667,6.4-26.778,6.4c-7.363,0-16.486-2.437-27.013-10.691l-9.718,18.606
1352
- c 12.155,3.553, 22.129,6.646, 32.594,6.646C 435.067,234.332, 443.771,231.014, 454.666,221.184zM 82.401,206.807l 93.952-50.094l 0.215-20.122L 69.274,193.751c-7.741,3.86-18.196,6.113-25.61,6.113
1353
- c-11.069,0-17.203-2.447-26.726-6.41c-0.614-0.215-1.116-0.215-1.761-0.215c-2.673,0-4.936,2.15-4.936,4.71
1354
- c0,1.393, 0.543,2.458, 1.434,3.318c 10.895,9.841, 21.975,13.148, 38.574,13.148C 58.767,214.405, 69.11,213.453, 82.401,206.807zM 91.136,22.487c 30.607,0, 55.398,23.962, 55.398,53.617c0,29.655-24.781,53.637-55.398,53.637
1355
- c-30.597,0-55.388-23.992-55.388-53.637C 35.748,46.449, 60.539,22.487, 91.136,22.487z M 11.182,76.114c0,42.711, 35.799,77.414, 79.954,77.414
1356
- c 44.206,0, 80.005-34.703, 80.005-77.414S 135.342-1.28, 91.136-1.28C 46.971-1.28, 11.182,33.403, 11.182,76.114zM 421.786,22.487c 30.607,0, 55.47,23.962, 55.47,53.617c0,29.655-24.863,53.637-55.47,53.637
1357
- c-30.566,0-55.368-23.992-55.368-53.637C 366.418,46.449, 391.219,22.487, 421.786,22.487z M 341.852,76.114c0,42.711, 35.738,77.414, 79.944,77.414
1358
- c 44.155,0, 79.974-34.703, 79.974-77.414S 465.951-1.28, 421.786-1.28C 377.59-1.28, 341.852,33.403, 341.852,76.114zM 404.163,164.536l-38.84,75.059C 360.223,248.586, 350.3,254.72, 338.934,254.72l-25.405,0 c-4.905,0-8.96-3.881-8.96-8.704
1359
- c0-4.803, 4.055-8.632, 8.96-8.632l 25.405,0.143c 4.26,0, 9.021-2.785, 10.824-6.861l 36.598-72.131L 404.163,164.536z" data-tags="motobike-trail" />
1360
- <glyph unicode="&#xe0ac;" d="M 246.477,385.464c 21.012,0, 37.98,16.63, 37.98,37.089C 284.457,443.003, 267.489,459.52, 246.477,459.52
1361
- c-21.023,0-38.113-16.517-38.113-36.977C 208.364,402.084, 225.454,385.464, 246.477,385.464zM 182.19,379.331c 1.454,5.693-2.253,11.377-7.987,12.8l-31.693,7.444c-5.96,1.311-11.796-2.089-13.158-7.762
1362
- l-26.634-107.315c-1.464-5.693, 2.13-11.377, 7.977-12.8l 31.805-7.444c 5.734-1.423, 11.694,2.079, 13.036,7.772L 182.19,379.331zM 328.458-2.335c0-0.215-0.113-0.44-0.113-0.543c0-4.7, 3.932-8.54, 8.755-8.54
1363
- c 4.383,0, 8.090,3.277, 8.663,7.444L 409.6,333.056c0,0.215,0,0.44,0,0.655c0,4.598-3.82,8.428-8.653,8.428
1364
- c-4.383,0-7.762-3.287-8.653-7.444L 328.458-2.335zM 116.091,19.763c-0.338-1.751-0.44-3.492-0.44-5.253c0-14.438, 11.919-26.030, 26.747-26.030
1365
- c 12.145,0, 22.364,7.875, 25.62,18.586l 45.967,185.211l 43.827-184.105C 260.628-3.205, 271.196-11.52, 283.668-11.52c 14.838,0, 26.747,11.592, 26.747,26.030
1366
- c0,1.976-0.225,3.83-0.573,5.693l-60.119,244.603l 5.059,21.555l 3.942-16.957c 3.594-11.049, 13.926-12.145, 13.926-12.145l 61.932-15.319
1367
- c 1.239-0.215, 2.468-0.328, 3.717-0.328c 10.107,0, 18.319,7.875, 18.319,17.715c0,8.417-5.96,15.534-14.060,17.388l-53.596,13.128
1368
- l-14.725,58.194c-6.973,32.492-38.881,31.724-38.881,31.724c-31.017,0.768-38.779-30.945-38.779-30.945L 116.091,19.763z" data-tags="trail-walking" />
1369
- <glyph unicode="&#xe0ad;" d="M 51.2,428.8L 225.28,428.8L 225.28,408.32L 204.8,408.32L 204.8,393.943L 51.2,380.283 zM 297.37,379.095c 22.098,0, 39.946,17.94, 39.946,40.151C 337.316,441.467, 319.468,459.52, 297.37,459.52c-22.088,0-40.049-18.053-40.049-40.274
1370
- C 257.321,397.036, 275.282,379.095, 297.37,379.095zM 327.629,381.358c 11.448,11.407, 29.88,11.407, 41.359,0l 86.497-86.845C 458.793,291.185, 460.8,286.546, 460.8,281.559l0-260.659
1371
- C 460.8,2.959, 448.041-11.52, 430.213-11.52C 412.355-11.52, 399.36,2.959, 399.36,20.9l0,215.040 l-82.258,81.132l-33.075-32.43
1372
- c-3.656-4.393-9.503-7.25-15.78-7.25c-5.775,0-11.192,2.499-14.858,6.533l-55.665,55.951c-7.086,8.438-6.564,21.268, 1.833,28.396
1373
- c 8.387,7.127, 20.89,5.939, 28.006-2.499l 42.168-42.65L 327.629,381.358zM 159.437,368.998c-0.829,3.922-4.26,6.769-8.274,6.769c-4.137,0-5.714-2.97-6.42-7.004L 133.12,291.185L 133.12-11.52 l 112.64,0 l0,40.96 l-72.253,0
1374
- l-0.471,259.891L 159.437,368.998z" data-tags="viewing" />
1375
- <glyph unicode="&#xe0ae;" d="M 244.183,383.242c 20.613,0.543, 36.844,18.084, 36.311,39.014C 279.951,443.453, 262.871,459.899, 242.258,459.52
1376
- c-20.511-0.553-36.741-18.084-36.311-39.117C 206.479,399.36, 223.672,382.7, 244.183,383.242zM 370.739,256.87l-54.569,30.484l-45.189,71.854c-7.25,9.236-18.575,16.067-31.498,15.903
1377
- c-9.718-0.328-18.268-4.803-25.108-10.813l-68.065-69.55c-2.243-2.406-3.789-5.458-4.321-8.796l-8.714-76.605
1378
- c-0.102-0.829-0.102-1.526-0.154-2.355c 0.266-9.503, 8.008-16.876, 17.295-16.712c 8.714,0.215, 15.38,7.762, 16.343,16.056l 7.168,65.741
1379
- l 23.706,24.095l-21.197-184.238l-39.311-86.927c-1.178-3.062-2.406-7.332-2.304-11.356c 0.379-14.203, 11.971-25.457, 25.907-25.139
1380
- c 9.871,0.276, 17.9,6.349, 22.221,14.971l 42.107,93.819c 0.85,2.509, 3.84,8.632, 3.942,11.407l 4.915,45.404l 43.366-147.681
1381
- c 3.727-10.322, 13.24-18.135, 24.668-17.807c 13.885,0.379, 24.996,12.145, 24.678,26.399c-0.113,1.864-0.655,3.052-0.748,5.192l-60.252,204.78
1382
- l 7.69,66.55l 16.988-26.88c 1.167-1.751, 2.775-3.389, 4.588-4.526l 59.607-33.382c 2.877-0.932, 5.13-1.7, 7.782-1.7
1383
- c 9.421,0.266, 16.783,8.192, 16.579,17.756C 378.665,248.668, 375.439,254.024, 370.739,256.87z" data-tags="walking" />
1384
- <glyph unicode="&#xe0af;" d="M 115.743,38.185c 42.895,0, 77.67,35.686, 77.67,79.606c0,44.052-34.775,79.749-77.67,79.749
1385
- c-42.793,0-77.599-35.697-77.599-79.749C 38.144,73.871, 72.95,38.185, 115.743,38.185z M 20.48,117.791c0,54.026, 42.742,97.751, 95.263,97.751
1386
- c 52.675,0, 95.334-43.725, 95.334-97.751c0-54.006-42.66-97.608-95.334-97.608C 63.222,20.183, 20.48,63.785, 20.48,117.791zM 396.298,37.212c 42.742,0, 77.558,35.686, 77.558,79.626c0,44.022-34.816,79.708-77.558,79.708
1387
- c-42.916,0-77.742-35.686-77.742-79.708C 318.556,72.899, 353.382,37.212, 396.298,37.212z M 300.902,116.838c0,54.006, 42.742,97.72, 95.396,97.72
1388
- c 52.48,0, 95.222-43.715, 95.222-97.72C 491.52,62.915, 448.778,19.2, 396.298,19.2C 343.644,19.2, 300.902,62.915, 300.902,116.838zM 301.199,355.369c 19.784,0, 35.86,16.384, 35.86,36.659C 337.060,412.314, 320.983,428.8, 301.199,428.8s-35.85-16.486-35.85-36.772
1389
- C 265.349,371.743, 281.416,355.369, 301.199,355.369zM 302.705,264.96c-5.202,0-10.803,3.113-14.92,9.841l-23.276,37.622l-48.026-48.66l 44.493-23.9
1390
- c 18.319-8.991, 15.514-25.395, 15.514-25.395l0-103.383 c0-11.725-9.052-21.258-20.48-21.258c-11.428,0-20.48,9.544-20.48,21.258l0,82.76 l-77.353,43.94
1391
- c-9.206,5.315-15.503,15.401-15.503,26.89c0,7.926, 2.826,15.196, 7.69,20.613l 75.756,77.783c 9.4,10.957, 22.518,9.216, 22.518,9.216
1392
- c 15.872,0, 24.228-14.213, 24.228-14.213l 37.693-63.242L 368.64,294.943c 20.48,0, 20.48-29.983,0-29.983L 302.705,264.96 z" data-tags="bicycling" />
1393
- <glyph unicode="&#x20;" horiz-adv-x="256" />
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
+ <svg xmlns="http://www.w3.org/2000/svg">
4
+ <metadata>
5
+ This is a custom SVG font generated by IcoMoon.
6
+ <iconset grid="16"></iconset>
7
+ </metadata>
8
+ <defs>
9
+ <font id="map-icons" horiz-adv-x="512" >
10
+ <font-face units-per-em="512" ascent="480" descent="-32" />
11
+ <missing-glyph horiz-adv-x="512" />
12
+ <glyph class="hidden" unicode="&#xf000;" d="M0,480L 512 -32L0 -32 z" horiz-adv-x="0" />
13
+ <glyph unicode="&#xe000;" d="M 256.154,455.424c-79.872,0-144.599-63.529-144.599-141.865C 111.555,235.203, 256.154-21.76, 256.154-21.76s 144.609,256.963, 144.609,335.319
14
+ C 400.763,391.895, 335.995,455.424, 256.154,455.424z" data-tags="map-pin" />
15
+ <glyph unicode="&#xe001;" d="M 20.48,318.638L 20.48,459.52L 166.902,459.52L 220.785,418.56L 130.99,418.56L 225.28,318.638L 166.902,264.96L 71.68,354.55L 71.68,264.755 zM 491.52,134.38L 491.52-11.52L 345.098-11.52L 291.215,29.44L 381.010,29.44L 286.72,131.871L 345.098,186.798L 440.32,98.468L 440.32,188.262 z" data-tags="expand" />
16
+ <glyph unicode="&#xe002;" d="M 20.48,318.638L 20.48,459.52L 166.902,459.52L 220.785,418.56L 130.99,418.56L 225.28,318.638L 166.902,264.96L 71.68,354.55L 71.68,264.755 zM 345.62,459.52L 491.52,459.52L 491.52,318.116L 450.56,264.243L 450.56,354.028L 348.129,259.738L 293.202,315.607L 381.532,408.32L 291.738,408.32 zM 491.52,134.38L 491.52-11.52L 345.098-11.52L 291.215,29.44L 381.010,29.44L 286.72,131.871L 345.098,186.798L 440.32,98.468L 440.32,188.262 zM 166.38-11.52L 20.48-11.52L 20.48,134.902L 61.44,188.785L 61.44,98.99L 163.871,193.28L 218.798,134.902L 130.468,39.68L 220.262,39.68 z" data-tags="fullscreen" />
17
+ <glyph unicode="&#xe003;" d="M 460.8,469.76L 51.2,469.76L 51.2,60.16L 205.752,60.16L 261.448-22.272L 317.153,60.16L 460.8,60.16 z" data-tags="square-pin" />
18
+ <glyph unicode="&#xe004;" d="M 486.349,259.072C 484.045,383.57, 411.822,433.039, 408.863,434.995l-11.172,7.639l-11.254-7.619c-18.698-12.687-38.083-19.128-57.61-19.128
19
+ c-32.338,0-54.292,17.408-55.224,18.166L 261.007,444.16l-12.503-10.138c-0.922-0.737-22.866-18.135-55.214-18.135c-19.507,0-38.881,6.431-57.61,19.159
20
+ l-11.203,7.557l-11.284-7.629C 105.533,429.711, 38.298,380.047, 35.86,259.686C 34.888,249.201, 63.805,51.057, 261.11-6.4
21
+ C 475.617,56.289, 487.455,245.996, 486.349,259.072z" data-tags="route-pin" />
22
+ <glyph unicode="&#xe005;" d="M 435.814,304.814c 2.847,33.853, 13.056,64.932, 31.027,93.43L 397.885,464.64c-21.78-18.053-46.602-28.058-74.701-29.819
23
+ c-25.764-2.243-50.176,2.468-73.155,14.162c-23.613-11.305-47.933-16.046-73.277-14.162c-26.235,2.253-49.9,11.213-71.096,27.075L 36.526,395.52
24
+ c 17.009-28.897, 26.481-59.136, 28.334-90.706c 0.881-14.531-3.42-34.56-13.097-60.416c-5.059-14.336-8.878-26.778-11.5-37.171
25
+ c-2.417-10.332-3.922-18.708-4.434-25.006c-0.348-27.556, 7.68-52.439, 24.146-74.568c 12.872-16.148, 34.099-33.987, 63.57-53.494
26
+ c 32.236-15.8, 57.19-26.051, 74.67-30.423c 5.018-2.263, 9.912-4.424, 14.5-6.502c 4.557-2.089, 9.441-4.147, 14.531-6.38
27
+ c 11.008-6.349, 18.719-13.22, 22.784-20.316c 4.997,7.69, 12.892,14.377, 23.378,20.316c 7.393,3.113, 13.67,5.786, 18.698,8.161
28
+ c 5.028,2.15, 8.776,3.738, 10.947,4.71c 3.738,1.772, 8.622,3.82, 14.561,6.083c 5.96,2.263, 13.363,5.028, 22.159,8.1
29
+ c 17.029,5.796, 29.43,11.295, 37.304,16.251c 28.59,19.497, 49.49,37.059, 62.792,52.736c 17.050,22.2, 25.344,47.206, 24.965,75.305
30
+ c-1.014,12.595-6.554,32.727-16.609,60.16C 438.661,269.097, 434.432,289.843, 435.814,304.814z" data-tags="sheild" />
31
+ <glyph unicode="&#xe006;" d="M 143.36,316.16c 30.72-10.24, 51.2-36.332, 51.2-70.738l0-264.366 C 194.56-27.075, 202.783-32, 194.386-32L 42.824-32 C 34.447-32, 30.72-27.075, 30.72-18.954L 30.72,245.422
32
+ C 30.72,279.91, 51.2,308.439, 81.92,316.16L 81.92,439.040 l 61.44,0 L 143.36,316.16 zM 81.92,480L 143.36,480L 143.36,459.52L 81.92,459.52zM 361.011,431.002c-4.68,0.666-8.274,4.465-8.274,9.042c0,3.348, 2.007,6.267, 4.925,7.926c-2.918,1.536-4.925,6.943-4.925,10.322
33
+ C 352.737,463.37, 357.018,469.76, 362.322,469.76l 47.964,0 c 5.335,0, 9.585-6.39, 9.585-11.459c0-3.533-1.997-7.649-5.038-9.134
34
+ c 2.918-1.587, 5.038-5.059, 5.038-8.53c0-4.588-3.461-8.673-8.12-9.288l 61.082-149.504C 476.416,272.128, 481.28,261.202, 481.28,250.47L 481.28-11.52
35
+ c0-9.994, 0.266-20.48-10.24-20.48L 316.529-32 C 305.859-32, 307.2-21.514, 307.2-11.52L 307.2,254.72 c0,10.721, 1.997,17.265, 5.601,26.993L 361.011,431.002zM-163.84,469.76L-163.84,469.76L-163.84,469.76L-163.84,469.76z" data-tags="liquor_store" />
36
+ <glyph unicode="&#xe007;" d="M 418.908,248.054c-12.964,0-25.283-2.662-36.475-7.444l-31.498,53.975l 23.736,40.684c 3.226,5.55, 1.352,12.677-4.188,15.923
37
+ c-2.437,1.413-5.151,3.973-7.721,3.553C 362.086,354.857, 361.431,357.12, 360.745,357.12l-46.561,0 c-6.42,0-11.633-8.94-11.633-15.36
38
+ c0-6.431, 5.212-15.36, 11.633-15.36l 30.177,0 l-13.588-20.48L 194.806,305.92 l 27.156,51.2l 10.762,0 c 6.42,0, 11.633,3.809, 11.633,10.24s-5.212,10.24-11.633,10.24l-58.194,0
39
+ c-6.41,0-11.633-3.809-11.633-10.24s 5.212-10.24, 11.633-10.24l 20.47,0 l-65.423-114.33c-11.203,4.782-23.542,6.349-36.495,6.349
40
+ C 41.677,249.139,0,206.909,0,155.505c0-51.415, 41.677-93.358, 93.092-93.358s 93.092,41.544, 93.092,92.959c0,30.106-14.356,56.74-36.557,73.769l 24.914,42.66
41
+ l 71.414-122.429c 0.082-0.133, 0.184-0.256, 0.276-0.389c 0.092-0.174, 0.205-0.317, 0.307-0.461c 0.082-0.133, 0.143-0.236, 0.236-0.348
42
+ c 0.287-0.379, 0.604-0.727, 0.922-1.065c 0.031-0.041, 0.072-0.082, 0.113-0.133c 0.102-0.102, 0.205-0.195, 0.317-0.287
43
+ c 0.102-0.092, 0.215-0.184, 0.328-0.266c 0.287-0.246, 0.594-0.502, 0.901-0.717c 0.123-0.092, 0.246-0.164, 0.379-0.246
44
+ c 0.102-0.061, 0.195-0.123, 0.297-0.195c 0.041-0.020, 0.072-0.051, 0.123-0.072c 0.010-0.020, 0.031-0.020, 0.041-0.041
45
+ c 0.317-0.174, 0.645-0.328, 0.983-0.481c 0.041-0.031, 0.072-0.041, 0.113-0.051c 0.072-0.031, 0.154-0.092, 0.236-0.123
46
+ c 0.020,0, 0.051-0.020, 0.082-0.020c 0.236-0.102, 0.502-0.184, 0.748-0.266c 0.236-0.082, 0.461-0.174, 0.696-0.225
47
+ c 0.051-0.010, 0.102-0.010, 0.143-0.041c 0.092-0.010, 0.174-0.020, 0.256-0.041c 0.143-0.031, 0.297-0.051, 0.451-0.092
48
+ c 0.696-0.133, 1.382-0.215, 2.089-0.215l0,0 c 0.010,0, 0.010-0.635, 0.010-0.635c 0.020,0, 0.031-0.604, 0.041-0.604l 70.564,0
49
+ c 5.755-40.96, 44.831-80.845, 92.293-80.845c 51.415,0, 93.092,41.994, 93.092,93.409C 512,206.060, 470.323,248.054, 418.908,248.054z M 162.908,154.962
50
+ c0-38.574-31.252-69.827-69.816-69.827c-38.564,0-69.816,31.263-69.816,69.827c0,38.554, 31.252,69.806, 69.816,69.806
51
+ c 8.673,0, 16.947-1.649, 24.607-4.547l-34.662-59.412c-3.236-5.54-1.352-12.667, 4.198-15.923c 1.843-1.065, 3.86-1.577, 5.847-1.577
52
+ c 4.004,0, 7.895,2.068, 10.066,5.765l 34.673,59.453C 153.139,195.717, 162.908,176.476, 162.908,154.962z M 256,180.541L 194.806,285.44l 122.399,0 L 256,180.541z
53
+ M 337.449,269.476l 24.924-43.704C 343.101,210.985, 329.789,193.28, 326.615,162.56l-50.36,0 L 337.449,269.476z M 374.18,204.503L 398.664,162.56l-48.517,0
54
+ C 352.952,183.040, 361.677,194.048, 374.18,204.503z M 418.908,84.5c-34.58,0-63.232,26.86-68.772,57.58l 68.741,0 c 0.031,0, 0.031,0.604, 0.051,0.604
55
+ c 0.696,0, 1.393,0.41, 2.079,0.543c 0.164,0.041, 0.307,0.215, 0.471,0.236c 0.635,0.154, 1.28,0.42, 1.935,0.676
56
+ c 0.061,0.031, 0.133,0.133, 0.215,0.164c 0.379,0.174, 0.768,0.379, 1.157,0.594c 0.092,0.051, 0.174,0.154, 0.276,0.215
57
+ c 0.348,0.225, 0.676,0.492, 1.034,0.748c 0.266,0.225, 0.573,0.44, 0.799,0.676c 0.287,0.256, 0.532,0.553, 0.778,0.85
58
+ c 0.236,0.266, 0.502,0.553, 0.696,0.87c 0.205,0.276, 0.41,0.625, 0.584,0.942c 0.184,0.328, 0.369,0.635, 0.532,0.973
59
+ c 0.154,0.348, 0.266,0.707, 0.399,1.065c 0.123,0.348, 0.236,0.696, 0.317,1.065c 0.092,0.369, 0.123,0.696, 0.174,1.065
60
+ c 0.061,0.44, 0.113,0.819, 0.133,1.26c0,0.123, 0.031,0.236, 0.031,0.358c0,0.215-0.051,0.43-0.051,0.655
61
+ c-0.041,0.44-0.072,0.84-0.143,1.27c-0.051,0.379-0.154,0.707-0.236,1.085c-0.102,0.358-0.195,0.707-0.338,1.065
62
+ c-0.164,0.399-0.338,0.778-0.532,1.157c-0.102,0.205-0.174,0.41-0.276,0.604l-34.662,59.412c 7.68,2.898, 15.944,4.547, 24.607,4.547
63
+ c 38.574,0, 69.827-31.57, 69.827-70.124C 488.745,116.081, 457.482,84.5, 418.908,84.5z" data-tags="bicycle_store" />
64
+ <glyph unicode="&#xe008;" d="M 128.522-26.726c-3.482-6.103-13.394-7.066-22.139-2.048l-54.743,31.16c-8.704,4.966-12.954,13.947-9.462,20.040L 275.005,391.506
65
+ c 33.485,54.129-83.558,49.357-112.292,33.423C 184.443,463.892, 253.696,476.754, 298.609,480l 13.066-0.85c 25.385-12.646, 61.788-31.621, 85.78-47.534
66
+ c 17.623-27.679, 36.209-42.25, 62.525-42.179c 34.345-26.317-19.302-98.109-53.053-64.86c 0.184,16.425-47.473,58.921-80.855,23.91L 128.522-26.726z" data-tags="hardware_store" />
67
+ <glyph unicode="&#xe009;" d="M 261.233,450.386L 12.984,244.48L 71.68,244.48 l0-245.76 l 368.64,0 L 440.32,244.48 l 64.184,0 L 261.233,450.386z M 316.846,70.4L 200.632,70.4 l 24.371,109.681c-14.735,10.24-24.371,25.661-24.371,44.544
68
+ c0,31.109, 26.020,55.695, 58.102,55.695c 32.102,0, 58.112-25.528, 58.112-56.637c0-18.893-9.636-33.229-24.361-43.438L 316.846,70.4z" data-tags="insurance_agency" />
69
+ <glyph unicode="&#xe00a;" d="M 3.021,197.571c 4.198-32.512, 31.918-57.61, 65.587-57.61c 33.628,0, 61.327,25.098, 65.536,57.61L 3.021,197.571 zM 360.264,64.461c0-5.663-4.567-10.271-10.22-10.271L 159.007,54.19 c-5.612,0-10.24,4.608-10.24,10.271l0,0c0,5.622, 4.618,10.168, 10.24,10.168l 191.027,0
70
+ C 355.686,74.629, 360.264,70.083, 360.264,64.461L 360.264,64.461zM 149.883,48.957L 359.158,48.957L 359.158,19.395L 149.883,19.395zM 377.856,197.571c 4.188-32.512, 31.939-57.61, 65.556-57.61c 33.638,0, 61.348,25.098, 65.526,57.61L 377.856,197.571 zM 505.334,218.143l-53.688,73.953l 28.703,0 c 6.984,0, 12.605,5.724, 12.605,12.8c0,7.014-5.632,12.677-12.605,12.677L 328.305,317.573
71
+ c-9.062,24.996-30.935,43.776-57.692,48.456L 270.612,391.229 L 270.612,405.934 c0,7.096-5.693,12.759-12.749,12.759c-0.389,0-0.768-0.082-1.188-0.133
72
+ c-0.379,0.051-0.788,0.133-1.188,0.133c-7.055,0-12.728-5.663-12.728-12.759l0-14.705 l0-25.18 c-26.757-4.68-48.62-23.46-57.672-48.456L 33.014,317.594
73
+ c-6.932,0-12.585-5.663-12.585-12.677c0-7.086, 5.652-12.8, 12.585-12.8l 27.392,0 l-53.699-73.953L0,218.163 l0-13.66 l 137.196,0 l0,13.66 L 130.458,218.163 L 76.78,292.096
74
+ l 103.741,0 l 9.8,0 l 11.069,0 c0,2.888, 0.317,5.724, 0.748,8.438c 0.44,1.28, 0.737,2.58, 0.737,3.922c 4.69,19.763, 20.132,35.461, 39.885,40.274
75
+ l0-97.403 l0-42.854 l-0.532,0 c-1.096-52.756-26.194-98.765-63.427-124.621l 74.404,0 l 3.482,0 l 6.973,0 l 70.932,0 c-37.243,25.856-62.321,71.864-63.478,124.621l-0.492,0
76
+ l0,42.854 l0,97.403 c 19.722-4.813, 35.215-20.511, 39.875-40.274c 0.041-1.341, 0.317-2.642, 0.768-3.922c 0.41-2.724, 0.666-5.55, 0.666-8.438l 11.141,0
77
+ l 9.789,0 l 102.38,0 l-53.699-73.953l-6.697,0 l0-13.66 L 512,204.483 l0,13.66 L 505.334,218.143 z M 63.13,218.143L 20.275,218.143 l 42.854,59.034L 63.13,218.143 z M 74.097,218.143l0,59.034
78
+ l 42.854-59.034L 74.097,218.143 z M 437.944,218.143l-42.875,0 l 42.875,59.034L 437.944,218.143 z M 448.86,218.143l0,59.034 l 42.906-59.034L 448.86,218.143 zM 81.316,335.37c0-6.953-5.693-12.687-12.698-12.687c-7.035,0-12.749,5.734-12.749,12.687c0,7.025, 5.714,12.759, 12.749,12.759
79
+ C 75.622,348.14, 81.316,342.395, 81.316,335.37zM 456.141,336.046c0-7.076-5.693-12.687-12.718-12.687c-7.055,0-12.718,5.612-12.718,12.687c0,7.025, 5.663,12.749, 12.718,12.749
80
+ C 450.447,348.795, 456.141,343.071, 456.141,336.046z" data-tags="lawyer" />
81
+ <glyph unicode="&#xe00b;" d="M 145.787,75.52l 312.146,0 L 457.933,342.589 L 145.787,342.589 L 145.787,75.52 z M 304.394,316.006l 112.538-98.284l-28.355,0 l0-117.924 l-65.905,0 L 322.673,183.040 l-41.626,0 l0-83.241 L 218.624,99.799 L 218.624,217.723
82
+ l-29.082,0 L 304.394,316.006zM 111.104,408.484L 111.104,469.576L 41.738,469.576L 41.738-32L 111.104-32L 111.104,377.262L 471.818,377.262L 471.818,408.484 z" data-tags="real_estate_agency" />
83
+ <glyph unicode="&#xe00c;" d="M 217.201,418.56C 87.849,418.56, 10.24,314.798, 10.24,262.912c0-51.886, 25.866-90.798, 77.609-90.798
84
+ c 51.743,0, 77.619-12.964, 77.619-51.876c0-51.876, 38.799-90.788, 90.542-90.788c 168.161,0, 245.76,90.788, 245.76,181.576
85
+ C 501.76,366.674, 372.388,418.56, 217.201,418.56L 217.201,418.56z M 184.863,366.674c 17.859,0, 32.338-14.52, 32.338-32.42
86
+ c0-17.92-14.479-32.43-32.338-32.43s-32.338,14.52-32.338,32.43C 152.525,352.154, 167.004,366.674, 184.863,366.674z M 288.328,366.674
87
+ c 17.859,0, 32.338-14.52, 32.338-32.42c0-17.92-14.479-32.43-32.338-32.43c-17.848,0-32.328,14.52-32.328,32.43
88
+ C 256,352.154, 270.479,366.674, 288.328,366.674z M 391.813,314.798c 17.869,0, 32.348-14.51, 32.348-32.43c0-17.92-14.479-32.42-32.348-32.42
89
+ c-17.859,0-32.328,14.51-32.328,32.42C 359.475,300.278, 373.955,314.798, 391.813,314.798z M 94.321,288.85c 17.859,0, 32.328-14.51, 32.328-32.41
90
+ c0-17.92-14.479-32.43-32.328-32.43s-32.338,14.52-32.338,32.43C 61.983,274.34, 76.462,288.85, 94.321,288.85z M 256,159.15
91
+ c 21.432,0, 38.799-17.408, 38.799-38.922c0-21.484-17.367-38.902-38.799-38.902s-38.799,17.418-38.799,38.902
92
+ C 217.201,141.742, 234.568,159.15, 256,159.15L 256,159.15z" data-tags="art_gallery" />
93
+ <glyph unicode="&#xe00d;" d="M 256,418.56c-12.933,0-18.78-6.308-22.63-13.169L 72.499,102.574L 37.734,102.574 c-15.176,0-27.494-11.725-27.494-26.327
94
+ c0-14.572, 12.319-26.317, 27.494-26.317l 50.125,0 l 336.302,0 l 50.125,0 c 15.165,0, 27.494,11.745, 27.494,26.317c0,14.612-12.319,26.327-27.494,26.327L 439.501,102.574
95
+ l-160.86,302.828C 274.78,412.252, 268.943,418.56, 256,418.56L 256,418.56z M 256,286.904l 90.542-184.33L 165.458,102.574 L 256,286.904z" data-tags="campground" />
96
+ <glyph unicode="&#xe00e;" d="M 387.41,328.325c 3.41-53.299-22.446-90.665-22.446-90.665c 3.359,41.052-13.281,97.792-13.281,97.792c-14.213,2.785-36.925-0.205-36.925-0.205
97
+ c 3.277-44.278-19.241-82.944-35.871-97.178c 8.223,49.101-4.864,86.252-4.864,86.252c-22.497,5.673-54.743,2.202-54.743,2.202
98
+ c 7.004-52.234-21.811-90.665-21.811-90.665c 4.772,36.413-14.684,83.118-14.684,83.118c-16.517,1.075-42.834-4.301-42.834-4.301
99
+ c 13.875-24.791, 2.796-79.278, 2.796-79.278c-7.567,44.554-33.004,70.83-33.004,70.83C-36.116,244.111, 2.304,158.536, 73.626,133.048
100
+ c 67.287-24.003, 284.099-35.83, 381.102,6.257C 551.741,181.412, 483.43,299.735, 387.41,328.325z" data-tags="bakery" />
101
+ <glyph unicode="&#xe00f;" d="M 40.96,469.76l 57.344-462.643c 1.792-14.428, 14.326-28.877, 28.682-28.877l 258.028,0 c 14.346,0, 26.9,14.449, 28.662,28.877L 471.040,469.76
102
+ L 40.96,469.76 z M 105.472,411.945l 301.046,0 l-13.435-115.661L 118.917,296.284 L 105.472,411.945z" data-tags="bar" />
103
+ <glyph unicode="&#xe010;" d="M 408.801,192.389c 4.741-2.324, 10.516-2.284, 12.831,0.113c 2.345,2.386, 0.317,6.154-4.485,8.366l-83.743,38.789
104
+ c-4.803,2.232-12.872,2.796-17.91,1.28l-29.952-8.98c-5.089-1.526-11.725-2.775-14.735-2.775c-3.011,0-5.519,4.239-5.519,9.441l0,91.331
105
+ c0,5.192, 4.332,9.452, 9.636,9.452l 217.18,0 c 5.325,0, 9.646,4.25, 9.646,9.452L 501.75,379.525 c0,5.202-4.168,10.67-9.236,12.155L 263.803,458.414
106
+ c-5.069,1.485-13.384,1.485-18.452-0.020L 19.446,391.69C 14.387,390.205, 10.24,384.717, 10.24,379.525l0-30.659 c0-5.202, 4.332-9.452, 9.626-9.452l 214.323,0
107
+ c 5.304,0, 9.636-4.26, 9.636-9.452l0-91.382 c0-5.192-4.332-9.452-9.636-9.462l-3.891,0 c-5.304-0.010-12.739,2.959-16.548,6.584l-51.671,49.347
108
+ c-3.82,3.635-11.254,6.595-16.558,6.595l-23.9,0 c-5.284,0-11.663,3.123-14.152,6.922c-2.468,3.809-8.223,6.902-12.78,6.902
109
+ s-5.96-3.564-3.092-7.946l 0.451-0.686c 2.867-4.372, 2.877-11.571, 0.061-15.964l-25.846-40.182c-2.806-4.413-1.935-10.865, 2.007-14.356
110
+ l 1.833-1.649c 3.942-3.482, 10.967-4.383, 15.667-1.956l 27.689,14.408c 4.71,2.437, 10.865,0.85, 13.722-3.523l 30.382-46.51
111
+ c 2.877-4.383, 1.915-10.732-2.13-14.090l-13.896-11.602c-4.045-3.359-6.4-10.25-5.233-15.34l 18.012-78.356
112
+ c 1.167-5.089, 6.339-8.192, 11.479-6.912l 12.524,3.092c 5.151,1.29, 8.387,6.472, 7.26,11.551l-12.196,52.992
113
+ c-1.167,5.069, 2.058,10.373, 7.188,11.735l 30.792,8.253c 5.1,1.372, 13.629,2.468, 18.934,2.468l 3.891,0 c 5.304,0, 9.636-4.25, 9.636-9.421l0-93.972
114
+ c0-5.181-4.332-9.431-9.636-9.431L 19.866,38.072 c-5.294,0-9.626-4.239-9.626-9.462l0-30.638 C 10.24-7.281, 14.572-11.52, 19.866-11.52l 468.255,0
115
+ c 5.304,0, 9.626,4.239, 9.626,9.472l0,30.638 c0,5.222-4.332,9.462-9.626,9.462L 274.934,38.052 c-5.315,0-9.636,4.25-9.636,9.431l0,93.972
116
+ c0,5.171, 4.332,9.421, 9.636,9.421l 11.1,0 c 5.304,0, 13.773-1.096, 18.924-2.468l 30.792-8.253c 5.14-1.362, 8.376-6.656, 7.188-11.735
117
+ l-12.165-52.992c-1.188-5.079, 2.068-10.26, 7.219-11.551l 12.544-3.092c 5.151-1.28, 10.281,1.823, 11.469,6.912l 18.033,78.356
118
+ c 1.198,5.089-1.075,11.878-4.997,15.176c-3.912,3.256-7.363,10.199-7.67,15.38l-1.567,27.72c-0.317,5.181, 3.338,7.526, 8.090,5.192
119
+ L 408.801,192.389z" data-tags="amusement_park" />
120
+ <glyph unicode="&#xe011;" d="M 10.24,414.659c0,0, 23.112-40.96, 23.112-67.133s-22.979-65.075-22.979-65.075c0-6.083, 4.106-8.151, 8.97-4.669l 75.602,54.231
121
+ c 15.268-11.274, 45.179-26.235, 66.898-38.523l0-43.889 l 48.486,27.607c 15.565-3.533, 31.355-5.775, 48.261-5.775c 101.878,0, 184.586,66.099, 184.586,77.117
122
+ c0,9.574-62.198,60.754-145.418,73.964L 205.23,469.76l0-51.067 c-43.377-12.022-87.747-36.956-110.275-53.596l-75.878,54.231C 14.223,422.82, 10.24,420.741, 10.24,414.659
123
+ M 360.97,335.135c-11.991,0-21.729,9.861-21.729,22.047s 9.738,22.036, 21.729,22.036c 12.012,0, 21.688-9.851, 21.688-22.036
124
+ S 372.982,335.135, 360.97,335.135 M 501.76,143.309c0,6.093-3.983,8.172-8.837,4.669l-75.51-54.252c-22.528,16.64-66.447,41.574-109.885,53.586L 307.528,198.4
125
+ l-92.897-47.237c-83.251-13.199-145.623-64.399-145.623-73.974c0-11.018, 82.627-77.148, 184.494-77.148c 16.896,0, 33.065,2.294, 48.609,5.837L 350.956-21.76
126
+ l0,43.878 c 21.688,12.319, 51.251,27.259, 66.447,38.574l 75.407-54.241c 4.905-3.533, 8.899-1.423, 8.899,4.618c0,0-23.020,38.902-23.020,65.096
127
+ C 478.7,102.359, 501.76,143.309, 501.76,143.309 M 166.042,77.896c-12.001,0-21.699,9.841-21.699,22.047c0,12.165, 9.697,21.996, 21.699,21.996
128
+ c 11.981,0, 21.709-9.841, 21.709-21.996C 187.75,87.736, 178.033,77.896, 166.042,77.896" data-tags="aquarium" />
129
+ <glyph unicode="&#xe012;" d="M 492.022,108.186C 497.377,106.455, 501.76,109.64, 501.76,115.272l0,35.779 c0,5.632-3.963,12.595-8.796,15.483L 305.756,278.098
130
+ C 300.923,280.975, 296.96,287.949, 296.96,293.571L 296.96,418.56 c0,5.632-1.72,14.51-3.83,19.743c0,0-11.172,27.73-30.72,30.822C 260.321,469.494, 258.202,469.76, 256.072,469.76
131
+ C 256.051,469.76, 256.020,469.76, 256,469.76c-0.010,0-0.020,0-0.031,0c-2.468,0.020-4.905-0.287-7.301-0.737C 247.91,468.89, 247.194,468.705, 246.456,468.531
132
+ c-1.147-0.297-2.263-0.635-3.359-1.044c-16.261-5.427-24.637-29.030-24.637-29.030C 216.576,433.142, 215.040,424.192, 215.040,418.56l0-124.989
133
+ c0-5.632-3.963-12.595-8.796-15.483L 19.036,166.533C 14.203,163.645, 10.24,156.682, 10.24,151.050l0-35.779 c0-5.632, 4.383-8.817, 9.738-7.076l 185.324,60.16
134
+ C 210.657,170.086, 215.040,166.902, 215.040,161.27l0-97.618 c0-5.632-3.686-13.015-8.192-16.394l-24.576-18.452c-4.506-3.379-8.192-10.762-8.192-16.394L 174.080-11.52
135
+ c0-5.632, 4.434-8.97, 9.841-7.414l 62.208,17.869c 5.407,1.556, 14.275,1.556, 19.681,0l 62.269-17.869C 333.486-20.49, 337.92-17.152, 337.92-11.52l0,23.941
136
+ c0,5.632-3.686,13.015-8.192,16.394l-24.576,18.452c-4.495,3.379-8.192,10.762-8.192,16.394l0,97.618 c0,5.632, 4.383,8.817, 9.738,7.076L 492.022,108.186z" data-tags="airport" />
137
+ <glyph unicode="&#xe013;" d="M 355.144,215.798c-14.725,11.612-36.823,20.89-66.294,27.822L 266.24,248.955l0,96.563 c 1.004-0.44, 2.099-0.768, 3.062-1.249
138
+ C 288.492,334.551, 298.803,316.16, 300.216,295.68l 76.964,0 c-1.403,40.96-16.538,71.25-45.404,92.652C 312.596,402.555, 290.724,411.699, 266.24,416.307L 266.24,469.76 l-71.68,0 l0-51.814
139
+ c-33.147-4.096-59.433-14.766-78.735-32.113c-25.272-22.712-37.898-51.22-37.898-85.545c0-37.612, 12.913-65.26, 38.738-82.944
140
+ c 14.459-10.025, 40.52-19.333, 77.896-27.955l0-104.612 c-13.629,3.758-24.31,9.943-31.836,18.883C 155.464,112.343, 150.6,121.6, 148.122,142.080L 71.68,142.080
141
+ c0-40.96, 14.449-70.349, 43.356-93.143c 20.869-16.445, 47.432-26.44, 79.524-30.771L 194.56-21.76 l 71.68,0 l0,39.25 c 34.13,4.086, 61.686,14.981, 82.555,32.809
142
+ c 27.064,23.142, 40.602,52.224, 40.602,87.235C 389.396,171.684, 377.979,197.765, 355.144,215.798z M 170.68,275.364c-12.442,6.758-18.657,17.019-18.657,30.72
143
+ c0,14.909, 6.308,26.593, 18.924,34.908c 6.656,4.393, 14.582,7.588, 23.613,9.697l0-84.214 C 183.45,269.711, 175.432,272.681, 170.68,275.364z
144
+ M 277.944,86.876c-3.553-1.229-7.516-2.243-11.704-3.133L 266.24,172.8 c 12.339-3.656, 22.077-7.639, 29.164-11.919c 11.182-6.932, 16.783-16.794, 16.783-29.44
145
+ C 312.177,109.773, 300.759,94.853, 277.944,86.876z" data-tags="bank" />
146
+ <glyph unicode="&#xe016;" d="M 419.84,439.040L 226.068,439.040 c-15.391,20.48-40.612,38.42-69.14,38.42c-46.868,0-84.859-36.618-84.859-83.487c0-46.879, 37.99-82.299, 84.859-82.299
147
+ c 35.645,0, 66.14,24.965, 78.725,55.685l 28.211,0 l 20.449,20.46L 304.753,367.36l 12.749,0 l 20.439,20.46L 358.39,367.36l 12.739,0 l 20.449,20.46L 412.027,367.36L 419.84,367.36 l0-2.877
148
+ l-1.782-0.42l 40.346,39.547L 419.84,439.040z M 129.464,371.354c-13.558,0-24.566,11.008-24.566,24.586s 11.008,24.576, 24.566,24.576
149
+ c 13.578,0, 24.586-10.998, 24.586-24.576S 143.043,371.354, 129.464,371.354zM 440.32,172.8l-5.663,0 l-62.915,113.92C 369.029,291.645, 362.189,295.68, 356.557,295.68L 165.683,295.68 c-5.632,0-12.472-4.035-15.186-8.96L 87.572,172.8L 81.92,172.8
150
+ c-11.264,0-20.48-9.216-20.48-20.48l0-102.4 c0-11.264, 9.216-20.48, 20.48-20.48l 20.48,0 l0-30.72 c0-16.896, 13.824-30.72, 30.72-30.72l 10.24,0 c 16.896,0, 30.72,13.824, 30.72,30.72l0,30.72 l 174.080,0 l0-30.72 c0-16.896, 13.824-30.72, 30.72-30.72l 10.24,0 c 16.896,0, 30.72,13.824, 30.72,30.72l0,30.72
151
+ l 20.48,0 c 11.264,0, 20.48,9.216, 20.48,20.48L 460.8,152.32 C 460.8,163.584, 451.584,172.8, 440.32,172.8z M 117.76,90.88C 103.619,90.88, 92.16,102.339, 92.16,116.48s 11.459,25.6, 25.6,25.6s 25.6-11.459, 25.6-25.6
152
+ S 131.901,90.88, 117.76,90.88z M 138.24,172.8l 41.503,82.995C 182.262,260.844, 188.928,264.96, 194.56,264.96l 133.12,0 c 5.632,0, 12.298-4.116, 14.817-9.165L 384,172.8L 138.24,172.8 z M 404.48,90.88
153
+ c-14.141,0-25.6,11.459-25.6,25.6s 11.459,25.6, 25.6,25.6s 25.6-11.459, 25.6-25.6S 418.621,90.88, 404.48,90.88z" data-tags="car_rental" />
154
+ <glyph unicode="&#xe017;" d="M 489.298,358.318c-7.045,5.55-25.938,10.004-40.079,13.322L 430.080,374.2L 430.080,420.465 c0-0.205, 9.339,0.379, 9.8,0.154
155
+ C 449.065,415.959, 462.295,408.32, 462.981,398.080l 36.905,0 c-0.686,20.48-16.241,33.403-30.085,43.663C 460.616,448.553, 450.56,452.188, 430.080,454.39L 430.080,480 l-20.48,0 l0-24.822
156
+ c-20.48-1.966-27.095-7.066-36.342-15.391C 361.165,428.902, 355.779,415.242, 355.779,398.797c0-18.022, 5.151-31.263, 17.531-39.741
157
+ C 380.232,354.253, 389.12,349.788, 409.6,345.651l0-50.125 c-10.24,1.812-10.26,1.352-13.875,5.642C 392.243,305.326, 391.291,316.16, 390.103,316.16L 353.485,316.16
158
+ c0-20.48, 5.54-30.29, 19.405-41.216C 382.884,267.069, 389.12,265.677, 409.6,263.608L 409.6,244.48 l 20.48,0 l0,18.801 c 20.48,1.976, 37.878,7.188, 47.882,15.729
159
+ c 12.984,11.090, 23.603,25.027, 23.603,41.8C 501.555,337.172, 500.244,349.665, 489.298,358.318z M 399.544,386.847
160
+ c-5.96,3.246-8.253,8.161-8.253,14.725c0,7.148, 1.976,12.739, 8.018,16.732C 402.493,420.403, 399.36,421.929, 409.6,422.943l0-40.346
161
+ C 399.36,384.154, 401.797,385.567, 399.544,386.847z M 444.017,296.53C 442.296,295.936, 430.080,295.465, 430.080,295.045l0,42.67 c 20.48-1.761, 18.903-3.656, 22.303-5.714
162
+ c 5.335-3.318, 8.018-8.049, 8.018-14.1C 460.401,307.497, 454.922,300.36, 444.017,296.53zM 394.445,172.8l-5.663,0 l-62.915,113.92C 323.154,291.645, 316.314,295.68, 310.682,295.68L 119.798,295.68 c-5.632,0-12.472-4.035-15.186-8.96L 41.697,172.8L 36.045,172.8
163
+ C 24.771,172.8, 10.24,163.584, 10.24,152.32l0-102.4 c0-11.264, 14.531-20.48, 25.805-20.48L 51.2,29.44 l0-30.72 c0-16.896, 19.149-30.72, 36.045-30.72l 10.24,0 c 16.896,0, 25.395,13.824, 25.395,30.72l0,30.72 l 174.080,0 l0-30.72 c0-16.896, 19.139-30.72, 36.045-30.72
164
+ l 10.24,0 c 16.896,0, 25.395,13.824, 25.395,30.72l0,30.72 l 25.805,0 c 11.264,0, 15.155,9.216, 15.155,20.48L 409.6,152.32 C 409.6,163.584, 405.699,172.8, 394.445,172.8z M 71.885,90.88c-14.141,0-25.6,11.459-25.6,25.6
165
+ S 57.743,142.080, 71.885,142.080s 25.6-11.459, 25.6-25.6S 86.016,90.88, 71.885,90.88z M 92.365,172.8l 41.503,82.995C 136.376,260.844, 143.053,264.96, 148.685,264.96l 133.12,0
166
+ c 5.632,0, 12.298-4.116, 14.817-9.165L 338.125,172.8L 92.365,172.8 z M 358.605,90.88c-14.141,0-25.6,11.459-25.6,25.6s 11.459,25.6, 25.6,25.6s 25.6-11.459, 25.6-25.6
167
+ S 372.736,90.88, 358.605,90.88z" data-tags="car_dealer" />
168
+ <glyph unicode="&#xe018;" d="M 378.88,469.76c-5.632,0-10.24-4.608-10.24-10.24l0-143.36 c0-5.632-4.608-10.24-10.24-10.24L 153.6,305.92 c-5.632,0-10.24,4.608-10.24,10.24L 143.36,459.52 c0,5.632-4.608,10.24-10.24,10.24L 40.96,469.76 C 35.328,469.76, 30.72,465.152, 30.72,459.52l0-471.040
169
+ c0-5.632, 4.608-10.24, 10.24-10.24l 92.16,0 c 5.632,0, 10.24,4.608, 10.24,10.24L 143.36,152.32 c0,5.632, 4.608,10.24, 10.24,10.24l 204.8,0 c 5.632,0, 10.24-4.608, 10.24-10.24l0-163.84 c0-5.632, 4.608-10.24, 10.24-10.24l 92.16,0 c 5.632,0, 10.24,4.608, 10.24,10.24L 481.28,459.52
170
+ c0,5.632-4.608,10.24-10.24,10.24L 378.88,469.76 z" data-tags="hospital" />
171
+ <glyph unicode="&#xe019;" d="M 432.466,220.826c 3.553,4.372, 10.834,9.4, 16.169,11.162l 43.971,17.951C 497.644,252.467, 501.76,259.144, 501.76,264.765L 501.76,390.195
172
+ c0,5.632-4.311,11.878-9.574,13.875c0,0-91.986,34.97-153.61,34.97c-57.344,0-136.622-30.239-136.622-30.239
173
+ c-5.263-2.007-14.141-4.209-19.732-4.905L 20.408,386.509C 14.817,385.823, 10.24,380.652, 10.24,375.020l0-85.135 c0-5.632, 4.526-11.090, 10.066-12.124l 161.741-26.102
174
+ c 5.55-0.922, 14.387-3.379, 19.62-5.458l 110.766-28.334c 5.56-0.84, 11.633-5.878, 13.466-11.213l 65.116-188.017
175
+ c 1.843-5.335, 7.721-8.212, 13.056-6.42l 68.844,23.153c 5.335,1.792, 8.202,7.608, 6.359,12.943l-45.199,130.386
176
+ c-1.843,5.335-3.4,9.994-3.471,10.373c0,0,0,0-0.082,0.389C 425.103,211.722, 432.466,220.826, 432.466,220.826z M 353.884,288.502
177
+ c-25.702,0-46.459,20.48-46.459,45.722c0,25.252, 20.756,45.722, 46.459,45.722c 25.62,0, 46.438-20.48, 46.438-45.722
178
+ C 400.323,308.982, 379.505,288.502, 353.884,288.502z" data-tags="hair_care" />
179
+ <glyph unicode="&#xe01a;" d="M 183.931,20.49c 3.83-4.127, 3.604-10.66-0.512-14.5l-22.241-20.797c-4.116-3.84-10.619-3.615-14.449,0.522L 17.203,125.307
180
+ c-3.83,4.127-3.594,10.65, 0.522,14.5l 22.272,20.767c 4.116,3.85, 10.619,3.615, 14.449-0.522L 183.931,20.49zM 349.204,283.146c 3.83-4.127, 3.594-10.66-0.522-14.5L 208.701,137.882c-4.116-3.84-10.619-3.615-14.449,0.522l-33.413,36.055
181
+ c-3.83,4.127-3.594,10.66, 0.522,14.5l 139.95,130.765c 4.106,3.84, 10.609,3.615, 14.438-0.522L 349.204,283.146zM 231.557,65.004c 3.83-4.127, 3.594-10.65-0.522-14.5l-22.272-20.787c-4.116-3.85-10.619-3.615-14.449,0.522L 64.86,169.83
182
+ c-3.83,4.127-3.604,10.66, 0.512,14.5l 22.231,20.777c 4.116,3.84, 10.619,3.615, 14.449-0.522L 231.557,65.004zM 447.242,278.139c 3.83-4.127, 3.594-10.66-0.532-14.5l-22.262-20.787c-4.116-3.84-10.619-3.615-14.459,0.512L 280.515,382.925
183
+ c-3.84,4.127-3.604,10.65, 0.512,14.5l 22.323,20.838c 4.106,3.84, 10.609,3.615, 14.438-0.522L 447.242,278.139zM 494.797,322.58c 3.83-4.127, 3.594-10.66-0.522-14.51l-22.221-20.777c-4.106-3.85-10.609-3.615-14.438,0.512L 328.161,427.428
184
+ c-3.83,4.127-3.604,10.66, 0.512,14.51l 22.241,20.818c 4.106,3.85, 10.598,3.625, 14.428-0.512L 494.797,322.58z" data-tags="gym" />
185
+ <glyph unicode="&#xe01b;" d="M 409.6,49.92A40.96,40.96 180 1 1 491.52,49.920000000000016A40.96,40.96 180 1 1 409.6,49.920000000000016zM 112.64,49.92A40.96,40.96 180 1 1 194.56,49.920000000000016A40.96,40.96 180 1 1 112.64,49.920000000000016zM 481.28,142.080L 161.495,142.080 l 6.83,11.080c 2.929,4.751, 3.789,10.496, 2.386,15.903l-6.666,25.661l 296.786,15.421C 472.084,210.719, 481.28,220.416, 481.28,231.68
186
+ L 481.28,367.36 c0,11.264-9.216,20.48-20.48,20.48L 113.859,387.84 l-4.004,15.391C 107.51,412.262, 99.359,418.56, 90.030,418.56L 20.48,418.56 C 9.175,418.56,0,409.385,0,398.080s 9.175-20.48, 20.48-20.48l 53.719,0 l 54.682-210.381
187
+ l-21.504-34.867c-3.891-6.318-4.065-14.254-0.44-20.726C 110.541,105.144, 117.381,101.12, 124.805,101.12L 481.28,101.12 c 11.305,0, 20.48,9.175, 20.48,20.48S 492.585,142.080, 481.28,142.080z" data-tags="grocery_or_supermarket" />
188
+ <glyph unicode="&#xe01c;" d="M 363.356,326.052c-2.54,0-4.956,1.71-4.956,4.209l0,63.283 C 358.4,396.042, 357.028,398.080, 354.478,398.080L 157.512,398.080 C 154.962,398.080, 153.6,396.042, 153.6,393.544
189
+ l0-63.283 C 153.6,327.762, 150.845,326.4, 148.285,326.4L 14.838,326.4 C 12.319,326.4, 10.24,323.666, 10.24,321.198l0-70.349 C 10.24,248.371, 12.319,244.48, 14.838,244.48l 214.897,0
190
+ C 232.284,244.48, 235.52,248.371, 235.52,250.849l0,15.002 C 235.52,268.349, 236.462,275.2, 239.002,275.2l 34.007,0 C 275.548,275.2, 276.48,268.349, 276.48,265.851l0-15.002
191
+ C 276.48,248.371, 279.716,244.48, 282.245,244.48l 214.886,0 C 499.692,244.48, 501.76,248.371, 501.76,250.849l0,70.349 C 501.76,323.676, 499.692,326.4, 497.142,326.4L 363.704,326.4 L 363.356,326.052z
192
+ M 185.272,326.4C 182.733,326.4, 184.32,327.762, 184.32,330.25l0,35.973 C 184.32,368.732, 182.733,367.36, 185.272,367.36l 141.455,0 C 329.267,367.36, 327.68,368.732, 327.68,366.223l0-35.973
193
+ C 327.68,327.762, 329.267,326.4, 326.728,326.4L 185.272,326.4 zM 277.043,175.749c0-2.478-1.495-2.949-4.035-2.949L 239.002,172.8 C 236.462,172.8, 235.52,171.704, 235.52,174.182l0,50.565
194
+ C 235.52,227.226, 232.284,234.24, 229.745,234.24L 14.838,234.24 C 12.319,234.24, 10.24,227.226, 10.24,224.748l0-149.801 C 10.24,72.458, 12.319,70.4, 14.838,70.4l 482.304,0
195
+ C 499.692,70.4, 501.76,72.458, 501.76,74.936L 501.76,224.748 C 501.76,227.226, 499.692,234.24, 497.142,234.24L 282.245,234.24 C 279.716,234.24, 276.48,227.226, 276.48,224.748l0-50.565 L 277.043,175.749z
196
+ " data-tags="general_contractor" />
197
+ <glyph unicode="&#xe01d;" d="M 402.964,305.92L 106.496,305.92 C 53.555,305.92, 10.24,268.646, 10.24,218.88c0-49.766, 43.315-87.040, 96.256-87.040l 296.468,0 c 52.92,0, 96.236,37.284, 96.236,87.040
198
+ C 499.2,268.646, 455.885,305.92, 402.964,305.92z M 402.995,152.32L 256,152.32 L 256,285.44 l 146.995,0 c 39.035,0, 71.004-29.85, 71.004-66.56S 442.040,152.32, 402.995,152.32z" data-tags="pharmacy" />
199
+ <glyph unicode="&#xe01e;" d="M 317.44,223.98c-33.884,0-61.399-27.494-61.399-61.42c0-33.956, 27.525-61.44, 61.399-61.44c 33.894,0, 61.42,27.484, 61.42,61.44
200
+ C 378.86,196.475, 351.334,223.98, 317.44,223.98zM 440.33,346.911L 389.734,448.973C 385.649,461.076, 374.19,469.76, 360.663,469.76l-84.388,0 c-13.763,0-25.242-8.929-29.225-21.248L 194.632,346.88L 71.67,346.88
201
+ C 37.796,346.88, 10.24,319.355, 10.24,285.43L 10.24-21.76 l 491.52,0 L 501.76,285.43 C 501.76,319.355, 474.225,346.911, 440.33,346.911z M 102.4,223.98c-16.998,0-30.73,13.742-30.73,30.7
202
+ c0,17.019, 13.742,30.751, 30.73,30.751s 30.71-13.732, 30.71-30.751C 133.11,237.722, 119.398,223.98, 102.4,223.98z M 317.44,39.619
203
+ c-67.84,0-122.89,55.060-122.89,122.941c0,67.85, 55.040,122.87, 122.89,122.87c 67.85,0, 122.89-55.009, 122.89-122.87
204
+ C 440.33,94.679, 385.29,39.619, 317.44,39.619z" data-tags="point_of_interest" />
205
+ <glyph unicode="&#xe01f;" d="M 126.29,254.72L 153.6,254.72 l0-163.84 l 40.96,0 L 194.56,234.24 l 40.96,0 l0-143.36 l 40.96,0 L 276.48,234.24 l 40.96,0 l0-143.36 l 40.96,0 L 358.4,254.72 l 27.3,0 C 393.236,254.72, 399.36,262.257, 399.36,269.046c0,4.106-2.263,8.735-5.683,10.967
206
+ l 0.020,0.532l-0.215,0.379c-0.123,0.072, 1.475,0.266, 1.372,0.338L 266.24,347.505l0,19.374 c 20.48-10.844, 40.458,7.834, 71.68-3.4L 337.92,406.272
207
+ c-31.242,11.223-51.2-7.444-71.68,3.4L 266.24,412.416 C 266.24,415.805, 259.779,418.56, 256,418.56s-10.24-2.755-10.24-6.144l0-64.911 l-128.604-66.109
208
+ c-0.123-0.061, 2.898-0.133, 2.775-0.215L 122.88,281.068l0-0.020 c-10.24-2.232-7.946-7.885-7.946-11.991C 114.924,262.257, 118.753,254.72, 126.29,254.72zM 143.36,80.64L 112.64,49.92L 399.36,49.92L 368.64,80.64 zM 368.64,244.48l0-153.6 l 9.062,0 l 4.004-5.663l 27.3-25.59L 418.662,49.92L 501.76,49.92 L 501.76,244.48 L 368.64,244.48 z M 430.080,121.6l-30.72,0 l0,30.72 l 30.72,0 L 430.080,121.6 z M 430.080,183.040l-30.72,0 l0,30.72 l 30.72,0 L 430.080,183.040 z M 471.040,121.6l-20.48,0 l0,30.72 l 20.48,0 L 471.040,121.6 z
209
+ M 471.040,183.040l-20.48,0 l0,30.72 l 20.48,0 L 471.040,183.040 zM 134.287,90.88L 143.36,90.88 L 143.36,244.48 L 10.24,244.48 l0-194.56 l 83.087,0 l 9.646,8.684l 27.31,26.624L 134.287,90.88z M 61.44,121.6L 40.96,121.6 l0,30.72 l 20.48,0 L 61.44,121.6 L 61.44,121.6z M 61.44,183.040L 40.96,183.040 l0,30.72 l 20.48,0 L 61.44,183.040 L 61.44,183.040z M 112.64,121.6L 81.92,121.6 l0,30.72 l 30.72,0
210
+ L 112.64,121.6 z M 112.64,183.040L 81.92,183.040 l0,30.72 l 30.72,0 L 112.64,183.040 z" data-tags="political" />
211
+ <glyph unicode="&#xe020;" d="M 296.95,433.736C 222.218,433.736, 163.84,374.559, 163.84,301.548l0-211.005 L 163.84-11.52 l 51.2,0 L 215.040,90.88 l 163.84,0 l0-102.4 l 51.2,0 l0,102.062 L 430.080,301.548 C 430.080,374.559, 371.712,433.736, 296.95,433.736z
212
+ M 40.96,459.52l 75.407-122.88l 7.864,0 C 129.004,387.84, 163.84,429.865, 215.040,448.84L 215.040,459.52 L 40.96,459.52 z" data-tags="post_box" />
213
+ <glyph unicode="&#xe021;" d="M 501.76,305.92c0,5.632-4.608,10.24-10.24,10.24L 358.4,316.16 c-5.632,0-10.24,4.608-10.24,10.24L 348.16,459.52 c0,5.632-4.608,10.24-10.24,10.24L 174.080,469.76 c-5.632,0-10.24-4.608-10.24-10.24l0-133.12 c0-5.632-4.608-10.24-10.24-10.24L 20.48,316.16
214
+ c-5.632,0-10.24-4.608-10.24-10.24l0-163.84 c0-5.632, 4.608-10.24, 10.24-10.24l 133.12,0 c 5.632,0, 10.24-4.608, 10.24-10.24l0-133.12 c0-5.632, 4.608-10.24, 10.24-10.24l 163.84,0 c 5.632,0, 10.24,4.608, 10.24,10.24L 348.16,121.6 c0,5.632, 4.608,10.24, 10.24,10.24l 133.12,0
215
+ c 5.632,0, 10.24,4.608, 10.24,10.24L 501.76,305.92 z" data-tags="health" />
216
+ <glyph unicode="&#xe022;" d="M 30.116,398.080c-30.116,0-15.053-7.977,0-20.214L 256,205.947l 225.884,171.387c 15.073,12.237, 30.116,20.746,0,20.746
217
+ L 240.937,398.080 L 30.116,398.080 z M0,357.673l0-253.215 c0-14.899, 15.237-34.058, 27.29-34.058l 457.421,0 c 12.063,0, 27.29,19.159, 27.29,34.058l0,253.215 l-256-195.328
218
+ L0,357.673z" data-tags="post_office" />
219
+ <glyph unicode="&#xe023;" d="M 112.64,60.16c0-5.632, 4.608-10.24, 10.24-10.24l 348.16,0 c 5.632,0, 10.24,4.608, 10.24,10.24L 481.28,357.12 c0,5.632-4.608,10.24-10.24,10.24L 122.88,367.36 c-5.632,0-10.24-4.608-10.24-10.24L 112.64,60.16 z M 289.751,319.939
220
+ c 4.28,3.666, 11.254,3.625, 15.493-0.072l 113.787-99.369C 423.27,216.791, 422.134,213.76, 416.502,213.76L 409.6,213.76 c-5.632,0-10.24-4.608-10.24-10.24l0-112.64
221
+ c0-5.632-4.608-10.24-10.24-10.24l-51.2,0 c-5.632,0-10.24,4.608-10.24,10.24l0,81.92 c0,5.632-4.608,10.24-10.24,10.24l-40.96,0 c-5.632,0-10.24-4.608-10.24-10.24l0-81.92 c0-5.632-4.608-10.24-10.24-10.24l-51.2,0 c-5.632,0-10.24,4.608-10.24,10.24
222
+ L 194.56,203.52 c0,5.632-4.608,10.24-10.24,10.24l-8.417,0 c-5.632,0-6.738,2.99-2.458,6.656L 289.751,319.939zM 102.4,418.56C 96.768,418.56, 92.16,423.168, 92.16,428.8L 92.16,459.52 c0,5.632-4.608,10.24-10.24,10.24L 40.96,469.76 C 35.328,469.76, 30.72,465.152, 30.72,459.52l0-471.040 c0-5.632, 4.608-10.24, 10.24-10.24l 40.96,0 c 5.632,0, 10.24,4.608, 10.24,10.24L 92.16,377.6
223
+ c0,5.632, 4.608,10.24, 10.24,10.24l 368.64,0 c 5.632,0, 10.24,4.608, 10.24,10.24L 481.28,408.32 c0,5.632-4.608,10.24-10.24,10.24L 102.4,418.56 z" data-tags="real_estate_agency copy" />
224
+ <glyph unicode="&#xe024;" d="M 281.692,381.911c 6.195-5.673, 12.063-11.028, 16.466-17.756l 2.447-3.738l 4.045,1.925c 11.244,5.376, 18.913,13.978, 26.327,22.292
225
+ c 5.591,6.267, 10.875,12.196, 17.5,16.65l 4.116,2.775l-2.652,4.209c-11.54,18.309-26.593,33.546-44.728,45.302l-3.799,2.468l-2.908-3.482
226
+ c-11.407-13.67-24.033-26.45-37.519-37.98l-2.959-2.54l 1.659-3.533C 265.011,397.169, 273.49,389.417, 281.692,381.911zM 347.546,304.425c 38.492,0, 70.011,15.729, 88.75,44.298l 2.232,3.4l-2.796,2.949c-3.256,3.42-6.369,6.994-9.482,10.568
227
+ c-9.288,10.66-18.903,21.678-32.44,28.989l-4.721,2.55L 386.765,392.325c-15.831-32.973-46.479-39.895-69.396-39.895
228
+ c-40.172,0-88.453,22.415-109.916,51.046l-16.896,22.538l 7.895-27.044C 213.125,348.6, 282.808,304.425, 347.546,304.425zM 214.712,216.023c 15.995,30.433, 16.66,66.068, 1.69,98.376c-14.766,31.887-42.097,54.364-73.093,60.16
229
+ c-6.564,1.229-13.036,1.833-19.241,1.833c-37.642,0-62.28-21.975-86.098-43.213c-8.673-7.731-16.865-15.084-25.61-21.32l-6.113-4.465
230
+ l 6.287-4.311c 2.007-1.3, 7.055-8.97, 11.121-14.807C 36.557,269.742, 47.309,254.72, 58.737,254.72c0,0, 0.010,0, 0.010,0
231
+ c 4.024,0, 7.782,4.772, 20.879,19.497c 5.519,6.195, 11.766,14.070, 15.114,16.722c 14.971,11.889, 35.492,28.17, 57.907,28.17
232
+ c 3.021,0, 6.062-0.297, 9.021-0.891c 10.373-2.079, 16.64-6.881, 19.149-14.694c 5.14-16.005-6.666-40.54-16.794-51.374
233
+ c-5.11-5.478-10.701-9.421-16.63-13.599c-8.499-5.99-17.285-12.196-24.545-23.101l-2.355-3.543l 3.062-2.97
234
+ c 4.424-4.28, 8.817-8.581, 13.21-12.882c 11.366-11.131, 23.122-22.641, 35.185-33.516l 4.045-3.645l 3.4,4.26
235
+ c 7.649,9.595, 15.718,19.804, 23.634,30.239c 2.13-3.164, 4.393-6.4, 6.717-9.718c 17.459-24.965, 37.253-53.258, 24.34-90.235
236
+ c-9.615-27.556-42.086-45.496-78.664-42.865c-43.254,3.031-81.756,39.956-117.729,112.886c-2.243,4.557-4.086,9.667-5.868,14.612
237
+ c-4.168,11.571-8.489,23.532-18.545,30.966l-10.086,7.455l 1.987-12.38c 10.557-65.864, 41.503-129.423, 82.79-170.025
238
+ c 24.975-24.596, 65.956-40.489, 104.397-40.489c 44.411,0, 91.996,23.081, 92.324,87.859c 0.287,60.672-37.181,100.076-67.297,131.738L 214.712,216.023zM 494.971,271.657c-11.93,22.19-56.781,38.369-79.278,33.444c-34.079-7.434-57.969-26.716-79.053-43.735
239
+ c-21.576-17.428-40.223-32.471-65.106-32.471c-7.475,0-15.124,1.331-23.378,4.055l-13.107,4.332l 7.107-11.827
240
+ c 16.323-27.167, 35.379-40.376, 58.255-40.376c 18.586,0.010, 37.612,8.919, 56.463,20.46l 4.229-12.534c 9.574-28.355, 51.251-70.41, 89.19-70.41
241
+ c 0.758,0, 1.516,0.020, 2.273,0.061c 16.558,0.737, 30.382,10.066, 39.987,27.003C 512.236,184.34, 510.013,243.722, 494.971,271.657z M 382.935,222.648
242
+ c 27.976,19.016, 57.364,38.543, 81.439,34.294c 10.476-18.207, 6.195-33.884, 0.625-43.96c-10.629-19.18-33.915-32.584-56.648-32.584
243
+ c-10.711,0-26.081,3.052-38.492,17.572l-8.735,10.209C 368.425,212.797, 375.706,217.743, 382.935,222.648z" data-tags="hindu_temple" />
244
+ <glyph unicode="&#xe025;" d="M 225.28,460.216L 225.28,346.88 l-20.48,0 L 204.8,459.52 c0,5.652-4.588,10.24-10.24,10.24s-10.24-4.588-10.24-10.24l0-112.64 l-20.48,0 L 163.84,459.889 c0,13.179-20.48,12.728-20.48,0.338L 143.36,346.88 l-20.48,0 L 122.88,459.418
245
+ c0,13.957-20.48,13.445-20.48,0.553l0-148.193 c0-21.371, 20.48-35.461, 40.96-35.461L 143.36,8.96 c0-40.96, 61.44-40.96, 61.44,0L 204.8,276.306 c 20.48,0, 40.96,17.019, 40.96,33.044L 245.76,459.889
246
+ C 245.76,472.945, 225.28,472.443, 225.28,460.216zM 317.44,428.8l0-256 l 20.48,0 l0-163.84 c0-40.96, 71.68-40.96, 71.68,0L 409.6,428.8 C 409.6,480, 317.44,480, 317.44,428.8z" data-tags="restaurant" />
247
+ <glyph unicode="&#xe026;" d="M 337.029,152.32l-60.508,166.267c-0.225,0.522-0.348,1.106-0.348,1.71c0,2.427, 2.038,4.393, 4.577,4.393
248
+ c 2.161,0, 3.973-1.444, 4.454-3.369L 326.339,213.76c 2.734-6.154, 13.978-10.24, 21.371-10.24c 9.882,0, 10.906,19.405, 10.691,20.48l-41.134,106.056
249
+ C 313.692,353.823, 289.69,377.6, 262.298,377.6L 208.691,377.6 c-27.392,0-53.176-23.777-56.75-47.544L 112.65,224c-0.891-2.038,0-20.48, 10.68-20.48
250
+ c 8.305,0, 19.354,2.898, 21.371,10.24l 39.68,108.022c 0.635,1.7, 2.335,2.908, 4.311,2.908c 2.529,0, 4.567-1.966, 4.567-4.383
251
+ c0-0.553-0.092-1.085-0.287-1.567L 134.021,152.32c-0.113-0.492,0-9.738,0-10.24c0-3.543, 8.55-10.24, 12.268-10.24L 184.32,131.84 l0-134.093
252
+ C 184.32-12.902, 193.7-21.76, 204.8-21.76c 11.1,0, 20.48,8.868, 20.48,19.507L 225.28,131.932 c0,2.898, 20.48,2.806, 20.48-0.092l0-133.12 c0-10.65, 9.39-20.48, 20.48-20.48c 11.121,0, 20.48,9.841, 20.48,20.48L 286.72,131.84
253
+ l 39.619,0 c 3.707,0, 10.691,6.697, 10.691,10.24C 337.029,142.899, 337.326,151.613, 337.029,152.32zM 192,432.64A42.24,42.24 180 1 1 276.48,432.64A42.24,42.24 180 1 1 192,432.64z" data-tags="female" />
254
+ <glyph unicode="&#xe027;" d="M 184.32-1.28c0-12.626, 7.864-20.48, 20.48-20.48c 12.646,0, 20.48,7.854, 20.48,20.48L 225.28,193.28 l 20.48,0 l0-194.56 c0-12.605, 7.854-20.48, 20.48-20.48c 12.626,0, 20.48,7.854, 20.48,20.48L 286.72,326.4 l 10.24,0 l0-120.975
255
+ c0-24.525, 30.781-24.525, 30.72,0L 327.68,329.871 C 327.68,356.966, 308.163,377.6, 276.48,377.6l-81.92,0 c-28.877,0-51.2-17.603-51.2-46.971L 143.36,203.52 c0-20.48, 30.72-20.48, 30.72,0L 174.080,326.4 l 10.24,0 L 184.32-1.28 zM 192,432.64A42.24,42.24 180 1 1 276.48,432.64A42.24,42.24 180 1 1 192,432.64z" data-tags="male" />
256
+ <glyph unicode="&#xe028;" d="M 470.303,183.562l-1.116,3.011c-3.502,9.441-7.834,21.176-18.934,27.822c-7.731,4.628-16.722,6.236-24.648,7.649
257
+ c-4.076,0.727-7.936,1.434-11.244,2.437c-0.973,0.287-1.935,0.655-2.908,1.024c-0.154,0.051-0.307,0.092-0.461,0.154
258
+ c-31.826,25.559-96.266,26.255-136.407,62.403C 217.057,339.835, 170.885,391.895, 118.958,469.76L 54.077,417.843c-4.506-3.604-13.107-6.492-13.107-19.466
259
+ c0-6.482, 6.595-7.475, 14.367-5.069l 36.598,11.561L 194.56,262.083c0-25.958,0-53.688,0-77.885c0-18.022-0.297-34.427, 14.991-43.745L 171.008-21.76l 25.958,0
260
+ l 24.392,77.025L 245.76,93.358l0-38.943 L 245.76-21.76 l 30.72,0 L 276.48,106.322 c0,0-0.358,25.958, 25.6,25.958s 25.6-25.958, 25.6-25.958l0-90.839 L 327.68-21.76 l 20.48,0 L 348.16,80.64 l 56.484-102.4l 25.958,0
261
+ C 417.618,19.2, 399.36,15.483, 399.36,54.415l0,25.958 c0,27.218, 30.72,51.917, 30.72,77.875l0,25.938 c0,6.164-0.799,11.622-2.202,16.558
262
+ c 4.526-0.922, 8.684-2.038, 11.848-3.942c 4.905-2.939, 7.619-10.271, 10.24-17.357l 1.188-3.195c 2.017-5.274, 7.926-7.926, 13.21-5.919l 0.010,0.010
263
+ C 469.668,172.37, 472.32,178.278, 470.303,183.562z" data-tags="zoo" />
264
+ <glyph unicode="&#xe029;" d="M 189.235,286.72c 23.859,4.055, 41.554,25.784, 44.247,51.743c 2.734,26.399, 8.899,132.485-30.925,125.737
265
+ C 99.256,446.679, 106.506,272.691, 189.235,286.72zM 325.151,286.72c 82.708-14.029, 89.958,159.959-13.343,177.49c-39.813,6.748-33.659-99.338-30.935-125.737
266
+ C 283.576,312.504, 301.292,290.775, 325.151,286.72zM 146.801,204.749c0,13.804-4.925,26.317-12.861,35.42c-13.056,17.060-54.559,51.558-64.748,42.721C 47.923,264.397, 48.609,218.88, 61.42,185.805
267
+ c 6.584-18.391, 22.487-31.324, 41.073-31.324C 126.956,154.481, 146.801,176.988, 146.801,204.749zM 445.164,282.89c-10.168,8.837-51.671-25.661-64.727-42.721c-7.936-9.103-12.872-21.617-12.872-35.42
268
+ c0-27.761, 19.866-50.268, 44.308-50.268c 18.596,0, 34.509,12.933, 41.093,31.324C 465.746,218.88, 466.452,264.397, 445.164,282.89zM 361.851,126.454c-37.642,18.77-36.475,54.917-45.036,87.9c-6.81,26.307-30.925,45.763-59.628,45.763
269
+ c-28.088,0-51.784-18.647-59.177-44.155c-9.165-31.56-3.645-68.301-44.677-89.262c-33.331-10.865-46.828-26.716-46.828-64.205
270
+ c0-30.454, 26.143-63.058, 59.884-67.113c 37.642-5.673, 67.011,1.741, 90.798,15.299c 23.788-13.558, 53.135-20.961, 90.839-15.299
271
+ c 33.72,4.055, 59.873,36.536, 59.873,67.113C 407.89,100.803, 395.254,115.077, 361.851,126.454z M 317.44,80.64l-39.025,0 l 0.051-40.96l-42.557,0 l 0.061,40.96L 194.56,80.64 l0,40.96
272
+ l 41.421,0 l-0.061,40.96l 42.557,0 l-0.051-40.96L 317.44,121.6 L 317.44,80.64 z" data-tags="veterinary_care" />
273
+ <glyph unicode="&#xe02a;" d="M 219.484,401.265L 194.56,367.36l-58.204,0 c 7.178-20.48, 30.679-39.793, 63.498-33.382c 9.728,0.655, 42.547,5.868, 56.146,2.662
274
+ c 18.104-4.342, 10.557-4.362, 43.018-30.413L 460.8,172.8c 9.912-8.755, 22.589-5.171, 31.365,4.721C 500.941,187.433, 501.432,205.005, 491.52,213.76L 286.72,377.6
275
+ c-12.82,10.291-16.056,24.545-20.48,40.96c-8.602,28.211-40.233,50.842-71.281,50.842C 169.943,469.402, 143.022,447.764, 133.12,428.8l 61.44,0 L 219.484,401.265zM 359.977,152.32L 359.977,152.32l-63.304,109.875C 294.175,266.752, 287.857,275.2, 282.665,275.2L 106.455,275.2 c-5.192,0-11.51-8.448-14.019-13.005L 30.72,152.32L 29.143,152.32
276
+ C 18.749,152.32, 10.24,148.541, 10.24,138.138l0-94.515 C 10.24,33.219, 18.749,29.44, 29.143,29.44L 51.2,29.44 l0-33.075 C 51.2-19.241, 60.805-32, 76.401-32l 9.452,0
277
+ C 101.458-32, 112.64-19.241, 112.64-3.635L 112.64,29.44 l 163.84,0 l0-33.075 c0-15.596, 11.182-28.365, 26.778-28.365l 9.452,0 C 328.315-32, 337.92-19.241, 337.92-3.635L 337.92,29.44 l 22.057,0
278
+ C 370.371,29.44, 378.88,33.219, 378.88,43.622l0,94.515 C 378.88,148.541, 370.371,152.32, 359.977,152.32z M 62.228,81.428c-13.056,0-23.634,10.578-23.634,23.634
279
+ s 10.578,23.634, 23.634,23.634c 13.046,0, 23.634-10.578, 23.634-23.634S 75.284,81.428, 62.228,81.428z M 81.132,152.32l 38.308,80.159
280
+ C 121.764,237.128, 127.928,244.48, 133.12,244.48l 122.88,0 c 5.192,0, 11.346-7.352, 13.681-12.001L 307.988,152.32L 81.132,152.32 z M 326.892,81.428
281
+ c-13.046,0-23.634,10.578-23.634,23.634s 10.578,23.634, 23.634,23.634s 23.634-10.578, 23.634-23.634S 339.937,81.428, 326.892,81.428zM-163.84,469.76L-163.84,469.76L-163.84,469.76L-163.84,469.76z" data-tags="car_repair" />
282
+ <glyph unicode="&#xe02b;" d="M 255.99,199.619c-55.357,0-102.39-16.097-133.11-41.329L 122.88,111.36 l 266.24,0 l0,46.93 C 358.4,183.521, 311.357,199.619, 255.99,199.619zM 500.429,223.703L 255.345,336.64L 10.363,223.703L 51.2,205.015l0-28.744 c-10.24-2.12-10.271-7.485-10.271-13.865c0-3.768, 1.249-8.182, 3.625-10.824
283
+ L 30.546,121.6l 49.971,0 l-13.885,30.003c 2.335,2.642, 4.25,6.533, 4.25,10.301C 70.881,168.274, 61.44,174.162, 61.44,176.282l0,23.931 l 51.2-22.999L 112.64,179.251
284
+ c 30.72,26.716, 84.695,43.674, 143.34,43.674C 314.644,222.925, 368.64,205.967, 399.36,179.251l0-2.038 L 500.429,223.703z" data-tags="university" />
285
+ <glyph unicode="&#xe02c;" d="M 471.040,336.64L 348.16,336.64 l0,40.714 C 348.16,406.548, 329.308,439.040, 300.145,439.040l-98.222,0 C 172.728,439.040, 153.6,406.548, 153.6,377.354L 153.6,336.64 L 40.96,336.64 c-11.264,0-20.48-9.216-20.48-20.48l0-296.96 c0-11.264, 9.216-20.48, 20.48-20.48
286
+ l 430.080,0 c 11.264,0, 20.48,9.216, 20.48,20.48L 491.52,316.16 C 491.52,327.424, 482.304,336.64, 471.040,336.64z M 307.2,29.44L 194.56,29.44 l0,10.926 c0,0.236, 6.277,0.543, 9.277,0.901s 5.632,0.963, 7.793,1.802
287
+ c 3.84,1.444, 8.141,3.512, 9.708,6.205S 225.28,55.552, 225.28,59.986l0,104.755 c0,4.198-2.54,7.895-4.465,11.069s-5.11,5.734-7.987,7.649
288
+ c-2.161,1.444-3.676,2.816-8.059,4.137S 194.56,189.768, 194.56,190.126l0,13.138 l 83.712,4.68L 276.48,205.251l0-142.92 c0-4.198, 3.236-7.772, 5.038-10.711
289
+ s 5.55-5.13, 8.909-6.574c 2.396-1.075, 4.966-2.038, 7.854-2.877S 307.2,40.735, 307.2,40.366L 307.2,29.44 z M 211.139,272.753
290
+ c0,9.124, 3.512,16.916, 10.527,23.398s 15.391,9.718, 25.108,9.718s 18.063-3.236, 25.016-9.718s 10.445-14.285, 10.445-23.398s-3.512-16.886-10.527-23.306
291
+ s-15.329-9.626-24.934-9.626c-9.718,0-18.094,3.205-25.108,9.626S 211.139,263.629, 211.139,272.753z M 317.44,336.64L 184.32,336.64 l0,40.714 C 184.32,388.28, 195.379,408.32, 206.305,408.32
292
+ l 82.452,0 C 299.663,408.32, 317.44,388.28, 317.44,377.354L 317.44,336.64 z" data-tags="travel_agency" />
293
+ <glyph unicode="&#xe02d;" d="M 212.132,234.24L 32.348,234.24 c-5.243,0-9.554,3.215-9.554,8.346c0,0.85, 0.154,1.178, 0.328,1.946l 9.574,61.501
294
+ C 33.495,310.374, 37.396,305.92, 42.086,305.92l 160.328,0 c 4.649,0, 8.581,4.219, 9.37-0.123l 9.585-65.526c 0.154-0.788, 0.338,1.27, 0.338,0.389
295
+ C 221.706,235.571, 217.364,234.24, 212.132,234.24z M 204.933,156.733c-10.107,0-18.34,7.997-18.34,17.92c0,9.871, 8.223,17.818, 18.34,17.818
296
+ c 10.056,0, 18.278-7.946, 18.278-17.818C 223.212,164.731, 214.999,156.733, 204.933,156.733z M 39.281,156.733c-10.025,0-18.248,7.997-18.248,17.92
297
+ c0,9.871, 8.212,17.818, 18.248,17.818c 10.168,0, 18.371-7.946, 18.371-17.818C 57.651,164.731, 49.449,156.733, 39.281,156.733z M 61.44,357.12l 112.64,0 l0-30.72 L 61.44,326.4
298
+ C 51.2,326.4, 51.2,357.12, 61.44,357.12z M 232.428,329.441c-3.267,15.79-14.459,22.139-30.095,28.498c-15.606,6.339-52.562,13.926-79.749,13.926
299
+ c-27.3,0-64.051-7.598-79.657-13.926c-15.616-6.359-26.982-12.708-30.249-28.498L0,241.521L0,121.6 l 18.278,0 l0,0c0-51.2, 34.417-51.2, 34.417,0l0,0l 137.636,0 l0,0
300
+ c0-51.2, 34.406-51.2, 34.406,0l0,0L 245.76,121.6 L 245.76,241.521 L 232.428,329.441zM-163.84,469.76L-163.84,469.76L-163.84,469.76L-163.84,469.76zM 458.332,120.637c0,0.256-0.276,0.666-0.819,1.485c0,0.236, 0.154,0.41, 0.41,0.563c 0.246,0.154, 0.41,0.276, 0.41,0.563
301
+ c 7.66,3.164, 14.633,7.066, 20.869,11.684c 6.216,4.669, 9.503,11.469, 11.663,20.47C 491.080,156.447, 491.52,158.884, 491.52,162.601L 491.52,348.713
302
+ c0,4.495-0.44,9.155-3.082,13.885c-2.662,4.823-5.519,9.134-9.523,12.964c-3.963,3.789-9.697,7.014-14.633,9.554
303
+ C 460.012,387.308, 450.56,388.475, 450.56,388.751L 450.56,387.84 l 1.382,0 L 318.74,387.84 L 317.44,387.84 L 317.44,388.577 c-10.24-0.471-7.741-1.536-11.284-3.256c-4.915-2.396-10.025-5.448-14.121-9.165
304
+ c-4.096-3.686-8.202-7.875-10.854-12.493C 278.528,358.963, 276.48,354.427, 276.48,349.88l0-188.887 c0-3.174, 1.26-6.492, 2.796-9.943
305
+ c 1.618-3.451, 3.809-6.676, 6.185-9.697c 2.376-3.113, 5.1-5.888, 7.895-8.387c 2.775-2.509, 5.55-4.577, 8.212-6.164
306
+ c 1.28-0.543, 3.656-1.362, 7.004-2.417c 3.256-1.055, 4.813-1.638, 4.567-2.161L 258.642,39.68l 31.805,0 l 39.793,61.44l 109.793,0 l 39.752-61.44L 512,39.68 L 458.332,120.637z
307
+ M 366.152,377.6l 36.465,0 c 8.018,0, 14.592-2.212, 14.592-10.24c0-8.018-6.574-10.24-14.592-10.24l-36.465,0 c-8.028,0-14.592,2.222-14.592,10.24
308
+ C 351.56,375.388, 358.124,377.6, 366.152,377.6z M 460.8,283.894C 460.8,267.776, 447.744,254.72, 431.626,254.72L 326.134,254.72 C 310.016,254.72, 296.96,267.776, 296.96,283.894l0,23.583
309
+ C 296.96,323.584, 310.016,336.64, 326.134,336.64l 105.503,0 C 447.744,336.64, 460.8,323.584, 460.8,307.466L 460.8,283.894 z M 339.21,154.225c-4.106-4.239-9.247-6.349-15.309-6.349
310
+ c-6.113,0-11.090,2.109-14.961,6.349c-3.83,4.229-5.755,9.441-5.755,15.544c0,5.56, 1.997,10.394, 5.99,14.49
311
+ c 3.963,4.116, 8.878,6.195, 14.725,6.195c 6.062,0, 11.203-1.966, 15.309-5.755c 4.106-3.891, 6.164-8.94, 6.164-15.36
312
+ C 345.375,163.502, 343.316,158.454, 339.21,154.225z M 430.295,154.225c-4.106,4.229-6.185,9.441-6.185,15.544c0,6.113, 2.181,11.049, 6.574,14.94
313
+ c 4.393,3.779, 9.492,5.755, 15.34,5.755c 6.052,0, 11.049-2.079, 14.899-6.195c 3.83-4.096, 5.775-8.929, 5.775-14.49
314
+ c0-6.103-2.007-11.305-5.98-15.544c-4.004-4.239-9.021-6.349-15.145-6.349C 439.491,147.866, 434.391,149.975, 430.295,154.225z" data-tags="transit_station" />
315
+ <glyph unicode="&#xe02e;" d="M 356.157,411.761L 284.979,411.761 c-12.861-0.041-12.38-19.21,0-19.098l 71.178,0 l0-9.8 L 284.979,382.863 c-12.79,0.113-12.319-19.046,0-19.098l 71.178,0 l0-9.544
316
+ l0-0.471 L 284.979,353.751 c-12.79,0-12.319-19.149,0-19.098l 71.178,0 l0-9.544 L 284.979,325.11 c-12.524-0.092-12.319-19.261,0-19.323l 71.178,0 l0-9.564 L 284.979,296.223
317
+ c-12.524,0.041-12.575-19.098,0-19.098l 71.178,0 l0-9.544 L 284.979,267.581 c-12.524-0.041-12.575-19.2,0-19.108l 71.178,0 l0-9.779 L 284.979,238.694
318
+ c-12.524,0.113-12.575-19.026,0-19.098l 71.178,0 l0-9.523 L 284.979,210.074 c-12.524,0.010-12.319-19.169,0-19.108l 71.178,0 l0-185.948
319
+ c 0.041-28.334, 43.080-27.822, 43.203,0L 399.36,440.166 c-0.123,12.943-10.752,29.307-28.242,29.358L 284.979,469.524 c-12.861-0.010-12.38-19.18,0-19.098l 71.178-0.236
320
+ l0-9.523 L 284.979,440.668 c-12.841,0.061-12.36-19.098,0-19.108l 71.178,0 L 356.157,411.761 L 356.157,411.761zM 280.084,82.094C 280.044,115.169, 245.76,150.743, 204.8,127.703L 204.8,254.208 L 178.309,462.848C 177.756,468.367, 173.076,469.668, 169.933,469.76
321
+ c-3.246-0.092-9.748-1.393-10.455-6.912L 133.12,254.208l0-126.505 c-40.96,23.040-74.138-12.759-74.148-45.353c 0.010-29, 22.333-52.818, 52.541-52.746
322
+ c 30.433-0.072, 52.326,26.624, 52.326,52.746L 163.84,213.76 l 10.24,0 l0-131.41 c0-29.245, 22.651-50.893, 47.821-52.265c-0.42-16.036, 4.813-38.912, 14.664-47.985
323
+ c 11.551-10.65, 25.303,2.97, 19.661,14.060c-5.448,10.322-10.793,16.435-6.451,38.973C 267.919,43.53, 280.044,61.204, 280.084,82.094z
324
+ M 112.681,56.074c-14.295,0.092-25.846,11.684-25.866,26.020c 0.020,14.326, 11.571,25.969, 25.866,26.051c 14.193-0.082, 25.754-11.725, 25.856-26.051
325
+ C 138.435,67.748, 126.874,56.156, 112.681,56.074z M 200.448,82.094c 0.092,14.326, 11.633,25.969, 25.866,26.051
326
+ c 14.254-0.082, 25.815-11.725, 25.856-26.051c-0.041-14.336-11.592-25.928-25.856-26.020C 212.081,56.156, 200.53,67.748, 200.448,82.094z" data-tags="beauty_salon" />
327
+ <glyph unicode="&#xe02f;" d="M 253.112-21.76C 134.943-21.76, 38.799,74.383, 38.799,192.563c0,75.633, 38.666,144.21, 103.444,183.429c 13.885,8.407, 31.928,3.963, 40.325-9.902
328
+ c 8.397-13.865, 3.953-31.918-9.902-40.325c-47.053-28.488-75.141-78.295-75.141-133.202c0-85.801, 69.796-155.597, 155.597-155.597
329
+ c 85.801,0, 155.587,69.796, 155.587,155.597c0,55.808-30.147,107.674-78.715,135.322c-14.1,8.028-19.005,25.948-10.988,40.038
330
+ c 8.028,14.080, 25.948,18.995, 40.038,10.977c 66.867-38.072, 108.39-109.486, 108.39-186.348C 467.425,74.383, 371.302-21.76, 253.112-21.76zM 250.88,195.492c-16.21,0-35.84,13.148-35.84,29.358L 215.040,436.234 c0,16.21, 19.63,29.358, 35.84,29.358c 16.21,0, 35.84-13.148, 35.84-29.358l0-211.384
331
+ C 286.72,208.64, 267.090,195.492, 250.88,195.492z" data-tags="electronics_store" />
332
+ <glyph unicode="&#xe030;" d="M 365.158,177.521c 17.009,28.047, 26.952,60.908, 26.952,96.102c0,102.697-83.098,185.856-185.815,185.897
333
+ C 103.67,459.489, 20.48,376.32, 20.48,273.644c0-102.584, 83.2-185.743, 185.876-185.743c 35.226,0, 68.045,9.953, 96.092,26.962L 428.841-11.52L 491.52,51.19
334
+ L 365.158,177.521z M 206.336,158.669c-63.508,0.154-114.852,51.476-114.964,114.852C 91.494,337.029, 142.848,388.362, 206.336,388.506
335
+ c 63.478-0.164, 114.842-51.487, 114.975-114.985C 321.178,210.217, 269.793,158.822, 206.336,158.669z" data-tags="search" />
336
+ <glyph unicode="&#xe031;" d="M 365.158,177.521c 17.009,28.047, 26.952,60.908, 26.952,96.102c0,102.697-83.098,185.856-185.815,185.897
337
+ C 103.67,459.489, 20.48,376.32, 20.48,273.644c0-102.584, 83.2-185.743, 185.876-185.743c 35.226,0, 68.045,9.953, 96.092,26.962L 428.841-11.52L 491.52,51.19
338
+ L 365.158,177.521z M 206.336,158.669c-63.508,0.154-114.852,51.476-114.964,114.852C 91.494,337.029, 142.848,388.362, 206.336,388.506
339
+ c 63.478-0.164, 114.842-51.487, 114.975-114.985C 321.178,210.217, 269.793,158.822, 206.336,158.669zM 122.88,295.68L 286.72,295.68L 286.72,254.72L 122.88,254.72z" data-tags="zoom-out-alt" />
340
+ <glyph unicode="&#xe032;" d="M 261.192,248.863c-15.483,0-28.068-12.585-28.068-28.058c0-15.473, 12.585-28.058, 28.068-28.058c 15.473,0, 28.068,12.585, 28.068,28.058
341
+ C 289.26,236.278, 276.664,248.863, 261.192,248.863zM 428.278,438.292C 428.278,450.017, 418.775,459.52, 407.060,459.52L 103.148,459.52 C 91.423,459.52, 81.92,450.017, 81.92,438.292l0-428.605 C 81.92-2.028, 91.423-11.52, 103.148-11.52l 303.913,0
342
+ c 11.725,0, 21.217,9.492, 21.217,21.207L 428.278,438.292 z M 261.192,86.63c-73.984,0-134.175,60.18-134.175,134.175c0,73.974, 60.191,134.164, 134.175,134.164
343
+ c 73.974,0, 134.154-60.191, 134.154-134.164C 395.336,146.811, 335.155,86.63, 261.192,86.63z" data-tags="movie_rental" />
344
+ <glyph unicode="&#xe033;" d="M 423.987,255.867l-25.18,105.124c-4.413,18.34-22.999,29.86-41.441,25.334c-16.22-3.963-24.105-15.196-27.3-23.101
345
+ c-3.779-9.329-20.644-51.599-24.586-60.334c-1.382-3.031-4.301-4.628-4.895-4.895c-3.348-1.485-36.864-15.626-36.864-15.626l0-0.061
346
+ c-6.615-3.103-11.203-9.718-11.203-17.439c0-10.68, 8.745-19.343, 19.528-19.343c 2.324,0, 4.536,0.481, 6.615,1.219
347
+ c0-0.010-0.020-0.041,0-0.072c 0.215,0.092, 44.493,18.493, 44.493,18.493c 6.103,2.847, 9.083,6.451, 12.114,11.704
348
+ c 1.27,2.212, 5.13,11.469, 8.274,19.067l 26.849-112.282C 370.381,121.498, 370.36,9.677, 370.36,9.677c-0.051-17.285, 11.889-31.375, 29.338-31.437
349
+ c 17.469-0.061, 30.095,13.896, 30.208,31.212c0,0, 0.174,195.656, 0.174,205.343C 430.060,224.451, 426.22,247.398, 423.987,255.867zM 287.171,430.643A39.475,39.117 180 1 1 366.121,430.64300000000003A39.475,39.117 180 1 1 287.171,430.64300000000003zM 175.421,100.076l0-43.827 c 5.683,1.044, 10.281,3.645, 13.855,7.813c 3.543,4.168, 5.315,9.042, 5.315,14.653
350
+ c0,5.018-1.485,9.349-4.454,12.995C 187.126,95.314, 182.221,98.099, 175.421,100.076zM 148.347,168.141c-2.662-3.584-4.004-7.557-4.004-11.899c0-3.994, 1.219-7.66, 3.625-11.059c 2.437-3.42, 6.113-6.185, 10.998-8.274
351
+ l0,38.881 l0,0C 154.511,174.295, 150.958,171.735, 148.347,168.141zM 252.488,220.201l 0.041,0 l-61.184,122.747l-0.010-0.113c-4.495,9.298-14.039,15.718-25.139,15.718l-56.392,0
352
+ C 94.413,358.564, 81.92,346.194, 81.92,330.936l0-215.081 c0-0.031,0-0.061,0-0.092L 81.92-21.76 l 173.732,0 L 255.652,206.356 C 255.631,211.313, 254.495,216.003, 252.488,220.201z
353
+ M 209.971,48.486c-8.294-9.288-19.804-14.981-34.519-17.070l0-21.023 l-16.456,0 l0,20.46 c-13.087,1.567-23.685,6.41-31.877,14.49
354
+ c-8.151,8.1-13.363,19.517-15.626,34.273l 29.594,3.164c 1.198-6.001, 3.461-11.172, 6.81-15.534c 3.308-4.342, 7.014-7.485, 11.090-9.431
355
+ l0,47.084 c-14.807,4.198-25.692,10.557-32.584,19.026c-6.932,8.499-10.394,18.811-10.394,30.956c0,12.288, 3.901,22.61, 11.756,30.976
356
+ c 7.823,8.346, 18.227,13.169, 31.232,14.428l0,11.131 l 16.456,0 l0-11.131 c 12.001-1.413, 21.576-5.478, 28.682-12.175c 7.086-6.687, 11.622-15.688, 13.599-26.921
357
+ l-28.682-3.707c-1.751,8.827-6.277,14.838-13.599,17.981l0-43.93 c 18.135-4.884, 30.495-11.192, 37.079-18.934
358
+ c 6.564-7.762, 9.861-17.705, 9.861-29.839C 222.392,69.202, 218.255,57.784, 209.971,48.486z" data-tags="atm" />
359
+ <glyph unicode="&#xe034;" d="M 475.914,268.421l-0.133,1.034c-0.287,1.444-0.819,2.898-1.3,3.707L 409.6,377.6c0,0-8.274,10.24-10.24,10.24c-30.72,0-245.76,0-276.48,0L 39.731,276.705
360
+ l-0.983-1.024L 38.615,275.2c-0.655-1.034-1.219-2.202-1.72-3.584L 36.557,270.623c-0.492-1.7-0.717-3.174-0.655-5.386
361
+ c 0.072-1.434, 0.328-2.857, 0.788-4.342l 0.389-1.116c 0.522-1.321, 1.167-2.529, 1.925-3.604l 201.021-254.638l 0.41-0.584
362
+ c 1.034-1.331, 2.294-2.509, 3.83-3.584l 1.167-0.727c 1.147-0.717, 2.345-1.29, 4.086-1.925l 1.137-0.379C 252.621-6.164, 254.331-6.4, 256-6.4
363
+ c 1.69,0, 3.338,0.225, 5.56,0.799l 1.362,0.481c 1.331,0.471, 2.529,1.055, 3.973,1.946l 0.901,0.563c 1.546,1.096, 2.785,2.284, 3.471,3.215
364
+ l 201.277,254.904c 0.901,1.167, 1.659,2.478, 2.56,4.803c 0.492,1.29, 0.707,2.54, 0.819,3.287c 0.092,0.522, 0.154,1.055, 0.154,1.321
365
+ l 0.082,1.044C 476.16,266.988, 476.047,268.012, 475.914,268.421z M 367.985,275.2l 28.652,51.845L 425.267,275.2L 367.985,275.2 z M 350.802,244.48l 67.973,0 L 305.48,100.966
366
+ L 350.802,244.48z M 333.988,290.744L 292.608,346.88l 72.397,0 L 333.988,290.744z M 201.441,244.48l 109.148,0 L 256,71.66L 201.441,244.48z M 212.265,275.2L 256,334.551L 299.735,275.2
367
+ L 212.265,275.2 z M 181.463,295.393L 162.499,346.88l 56.904,0 L 181.463,295.393z M 206.541,100.956L 93.235,244.48l 67.983,0 L 206.541,100.956z M 129.69,326.687L 148.664,275.2L 91.75,275.2
368
+ L 129.69,326.687z" data-tags="jewelry_store" />
369
+ <glyph unicode="&#xe035;" d="M-163.84,469.76L-163.84,469.76L-163.84,469.76L-163.84,469.76zM 440.32,418.56L 440.32,459.52L 71.68,459.52L 71.68,418.56L0,418.56L0-21.76L 40.96-21.76L 40.96,377.6L 71.68,377.6L 71.68,336.64L 440.32,336.64L 440.32,377.6L 471.040,377.6L 471.040-21.76L 512-21.76L 512,418.56 zM 430.612,183.040L 430.612,183.040l-66.816,113.92C 361.144,301.885, 354.478,305.92, 348.989,305.92L 163,305.92 c-5.489,0-12.155-4.035-14.797-8.96L 81.398,183.040
370
+ l0,0C 70.42,183.040, 61.44,173.824, 61.44,162.56l0-102.4 c0-11.264, 8.98-20.48, 19.958-20.48L 102.4,39.68 l0-30.72 c0-16.896, 12.421-30.72, 28.877-30.72l 9.984,0 C 157.716-21.76, 174.080-7.936, 174.080,8.96l0,30.72 l 163.84,0 l0-30.72
371
+ c0-16.896, 16.353-30.72, 32.819-30.72l 9.984,0 c 16.456,0, 28.877,13.824, 28.877,30.72l0,30.72 l 21.012,0 C 441.58,39.68, 450.56,48.896, 450.56,60.16L 450.56,162.56 C 450.56,173.824, 441.58,183.040, 430.612,183.040z
372
+ M 116.316,101.12c-13.773,0-24.945,11.459-24.945,25.6s 11.172,25.6, 24.945,25.6c 13.783,0, 24.945-11.459, 24.945-25.6S 130.099,101.12, 116.316,101.12z M 131.277,183.040
373
+ l 45.425,83.005c 2.458,5.038, 8.96,9.155, 14.438,9.155l 129.71,0 c 5.489,0, 11.991-4.116, 14.438-9.155L 380.723,183.040L 131.277,183.040 z M 395.684,101.12
374
+ c-13.773,0-24.945,11.459-24.945,25.6s 11.172,25.6, 24.945,25.6c 13.783,0, 24.955-11.459, 24.955-25.6S 409.457,101.12, 395.684,101.12z" data-tags="car_wash" />
375
+ <glyph unicode="&#xe036;" d="M 192,432.64A42.24,42.24 180 1 1 276.48,432.64A42.24,42.24 180 1 1 192,432.64zM 225.28,377.6l-30.72,0 c-28.877,0-51.2-17.603-51.2-46.971L 143.36,203.52 c0-20.48, 30.72-20.48, 30.72,0L 174.080,326.4 l 10.24,0 l0-327.68 c0-12.626, 7.864-20.48, 20.48-20.48c 12.646,0, 20.48,7.854, 20.48,20.48L 225.28,193.28 L 225.28,377.6 zM 358.4,224l-41.134,106.056C 313.692,353.823, 289.69,377.6, 262.298,377.6L 235.52,377.6 l0-243.538 c 5.12-0.020, 10.24-0.768, 10.24-2.222l0-133.12 c0-10.65, 9.39-20.48, 20.48-20.48
376
+ c 11.121,0, 20.48,9.841, 20.48,20.48L 286.72,131.84 l 39.619,0 c 3.707,0, 10.691,6.697, 10.691,10.24c0,0.819, 0.297,9.533,0,10.24l-60.508,166.267
377
+ c-0.225,0.522-0.348,1.106-0.348,1.71c0,2.427, 2.038,4.393, 4.577,4.393c 2.161,0, 3.973-1.444, 4.454-3.369L 326.339,213.76
378
+ c 2.734-6.154, 13.978-10.24, 21.371-10.24C 357.591,203.52, 358.615,222.925, 358.4,224z" data-tags="unisex" />
379
+ <glyph unicode="&#xe037;" d="M 286.556,165.335c-23.050,0-41.759-18.944-41.759-42.342c0-23.388, 18.719-42.363, 41.759-42.363c 23.060,0, 41.748,18.975, 41.748,42.363
380
+ C 328.315,146.401, 309.617,165.335, 286.556,165.335z M 286.556,100.577c-12.237,0-22.118,10.025-22.118,22.415c0,12.38, 9.882,22.456, 22.118,22.456
381
+ c 12.196,0, 22.129-10.076, 22.129-22.456C 308.695,110.602, 298.762,100.577, 286.556,100.577zM 459.336,352.061C 444.559,357.161, 349.204,367.36, 286.433,367.36c-62.761,0-163.84-10.332-178.801-14.756C 106.086,352.154, 61.44,339.845, 61.44,291.441L 61.44,162.253
382
+ C 61.44,153.477, 64.727,142.080, 69.581,142.080L 10.24,142.080 l0-20.48 l 224.922,0 c0,30.72, 23.163,52.449, 51.692,52.449c 28.57,0, 51.722-21.729, 51.722-52.449l 125.245,0
383
+ C 484.803,121.6, 501.76,141.015, 501.76,162.253L 501.76,298.312 C 501.76,319.56, 485.786,342.917, 459.336,352.061z M 205.169,250.9c0-4.035-2.877-6.42-6.83-6.42
384
+ l-67.41,0 C 126.945,244.48, 122.88,245.996, 122.88,250.030l0,47.739 C 122.88,301.783, 126.945,305.92, 130.918,305.92l 67.41,0 C 202.281,305.92, 204.8,301.783, 204.8,297.769l0-47.739
385
+ L 205.169,250.9z M 450.56,250.030C 450.56,245.996, 447.386,244.48, 443.392,244.48L 294.236,244.48 C 290.253,244.48, 286.72,245.996, 286.72,250.030l0,47.739
386
+ C 286.72,301.783, 290.253,305.92, 294.236,305.92L 443.392,305.92 c 4.004,0, 7.168-4.137, 7.168-8.151L 450.56,250.030 z" data-tags="rv_park" />
387
+ <glyph unicode="&#xe038;" d="M 307.2,398.080l0-337.92 L 61.44,60.16 L 61.44,398.080 L 307.2,398.080 M 348.16,439.040L 20.48,439.040 l0-430.080 l 327.68,0 L 348.16,439.040 L 348.16,439.040zM 92.16,357.12L 276.48,357.12L 276.48,316.16L 92.16,316.16zM 92.16,285.44L 276.48,285.44L 276.48,244.48L 92.16,244.48zM 92.16,213.76L 276.48,213.76L 276.48,172.8L 92.16,172.8zM 92.16,142.080L 276.48,142.080L 276.48,101.12L 92.16,101.12zM 409.6,357.12L 491.52,357.12L 491.52,70.4L 409.6,70.4zM 450.621,469.76C 428.155,469.76, 409.6,451.686, 409.6,429.445L 409.6,387.84 l 81.92,0 L 491.52,429.445 C 491.52,451.686, 472.996,469.76, 450.621,469.76zM 408.965,39.68L 450.345-25.723L 491.52,39.68 z" data-tags="school" />
388
+ <glyph unicode="&#xe039;" d="M 484.966,328.96c 0.819-2.97-0.215-6.246-1.946-8.806l-55.194-82.125c-2.048-3.174-6.349-4.915-9.943-4.915c-1.024,0-3.891,0.205-5.007,0.512
389
+ L 368.64,244.48l0-194.56 c0-5.939-4.198-10.24-10.24-10.24L 143.36,39.68 c-6.042,0-10.24,4.301-10.24,10.24L 133.12,244.48 l-39.731-10.957c-4.608-1.434-8.602,0.41-11.162,4.403l-54.784,81.92
390
+ c-1.741,2.662-2.253,5.632-1.434,8.602c 0.717,3.072, 2.867,5.12, 5.632,6.554L 143.36,387.84c 10.24,0, 51.2,0, 51.2,0c 6.042,0, 10.24-4.198, 10.24-10.24c0-21.094, 29.594-36.045, 50.688-36.045
391
+ c 21.094,0, 51.712,14.848, 51.712,36.045c0,5.939, 4.198,10.24, 10.24,10.24c0,0, 40.96,0, 51.2,0l 110.592-51.814C 482.099,334.592, 484.147,332.032, 484.966,328.96z" data-tags="clothing_store" />
392
+ <glyph unicode="&#xe03a;" d="M 61.44,367.36l0-345.498 C 61.44,6.81, 74.107-11.52, 89.702-11.52l 340.152,0 C 445.409-11.52, 460.8,6.81, 460.8,21.862L 460.8,367.36 L 61.44,367.36 z M 260.71,93.174
393
+ c-60.006,0-108.657,47.043-108.657,105.093c0,58.051, 48.65,105.093, 108.657,105.093s 108.657-47.043, 108.657-105.093
394
+ C 369.367,140.206, 320.717,93.174, 260.71,93.174zM 429.855,469.76L 89.702,469.76 C 74.107,469.76, 61.44,459.182, 61.44,444.109L 61.44,387.84 l 399.36,0 L 460.8,444.109 C 460.8,459.182, 445.409,469.76, 429.855,469.76z M 194.56,408.32L 81.92,408.32 L 81.92,449.28 l 112.64,0 L 194.56,408.32 z M 390.615,411.187
395
+ c-12.79,0-23.122,10.025-23.122,22.405c0,12.36, 10.332,22.385, 23.122,22.385s 23.153-10.025, 23.153-22.385C 413.757,421.222, 403.405,411.187, 390.615,411.187z
396
+ " data-tags="laundry" />
397
+ <glyph unicode="&#xe03b;" d="M 501.76,372.593c 6.185,4.68, 10.24,12.012, 10.24,20.367C 512,407.101, 500.541,418.56, 486.4,418.56S 460.8,407.101, 460.8,392.96c0-8.346, 4.055-15.688, 10.24-20.367L 471.040,213.76 l-92.16,0 l0-81.92 l 102.4,0
398
+ l0,3.041 c 15.002,6.083, 25.6,20.726, 25.6,37.919c0,7.076-1.956,13.64-5.12,19.446L 501.76,372.593 zM 61.44,305.92c 10.455,0, 17.715-1.761, 30.72,0c0,0-41.124-27.3-41.124-61.44L 102.4,244.48 c0,0, 0.061,56.873, 30.72,92.16l-10.24,10.24c0,0-20.48-10.24-40.96,0c0,0-20.48,0-40.96-10.24l0,10.24 L 30.72,346.88 l0-61.44 l 10.24,0
399
+ C 40.96,285.44, 40.96,305.92, 61.44,305.92zM 204.8,305.92c 10.455,0, 17.715-1.761, 30.72,0c0,0-41.124-27.3-41.124-61.44L 245.76,244.48 c0,0, 0.061,56.873, 30.72,92.16l-10.24,10.24c0,0-20.48-10.24-40.96,0c0,0-20.48,0-40.96-10.24l0,10.24 l-10.24,0 l0-61.44 l 10.24,0
400
+ C 184.32,285.44, 184.32,305.92, 204.8,305.92zM 389.12,408.32L 389.12,428.8 L 265.011,428.8 c-4.669,20.5-22.927,35.84-44.851,35.84S 179.978,449.3, 175.309,428.8L 51.2,428.8 l0-20.48 L0,408.32 l0-419.84 l 450.56,0 L 450.56,408.32 L 389.12,408.32 z M 163.84,367.36l 122.88,0 l0-143.36 L 163.84,224 L 163.84,367.36 z M 20.48,367.36l 122.88,0 l0-143.36 L 20.48,224
401
+ L 20.48,367.36 z M 389.12,39.68L 51.2,39.68 l0,71.68 l 337.92,0 L 389.12,39.68 z M 430.080,224L 307.2,224 L 307.2,367.36 l 122.88,0 L 430.080,224 zM 348.16,305.92c 10.455,0, 17.715-1.761, 30.72,0c0,0-41.124-27.3-41.124-61.44L 389.12,244.48 c0,0, 0.061,56.873, 30.72,92.16l-10.24,10.24c0,0-20.48-10.24-40.96,0c0,0-20.48,0-40.96-10.24l0,10.24 l-10.24,0 l0-61.44 l 10.24,0
402
+ C 327.68,285.44, 327.68,305.92, 348.16,305.92z" data-tags="casino" />
403
+ <glyph unicode="&#xe03c;" d="M 443.187,337.705L 255.57,469.76l-42.24-29.778l 0.635-0.492L 48.742,322.038l0,0l0,0L 10.24,295.342l0-62.495 l 39.311,26.491L 49.551-21.76 l 3.973,0 l 42.854,0 l 6.359,0
404
+ l 303.237,0 l 13.23,0 l 39.465,0 l 3.789,0 L 462.459,261.847 L 501.76,232.847l0,62.495 L 443.187,337.705z M 403.456,38.124L 101.99,38.124 L 101.99,297.134 L 256.174,408.125L 403.456,302.131L 403.456,38.124 zM 186.726,267.356c 10.977,0, 20.050,9.042, 20.050,20.347c0,11.284-9.073,20.419-20.050,20.419c-11.11,0-20.101-9.144-20.101-20.419
405
+ C 166.625,276.398, 175.616,267.356, 186.726,267.356zM 159.355,70.676c0-6.277, 4.485-12.196, 10.68-12.196c 6.226,0, 10.588,4.495, 10.588,10.803l0,95.242 l 13.117,0 l0-95.242
406
+ c0-6.298, 3.84-11.5, 10.035-11.5c 6.226,0, 10.742,6.615, 10.742,12.902l-0.502,167.035l 12.472,0 l0-66.529 c0-6.656, 13.107-6.656, 13.107,0l0,65.044
407
+ c0,13.548-10.547,26.778-26.235,26.778l-53.217,0.123c-14.223,0-25.395-11.858-25.395-26.573l0-65.372 c0-6.656, 13.097-6.656, 13.097,0l0,66.529 l 11.653,0
408
+ L 159.355,70.676zM 329.134,267.356c 11.018,0, 20.101,9.042, 20.101,20.347c0,11.284-9.083,20.419-20.101,20.419c-11.049,0-20.142-9.144-20.142-20.419
409
+ C 308.992,276.398, 318.075,267.356, 329.134,267.356zM 301.814,70.676c0-6.277, 5.263-12.196, 11.459-12.196c 6.277,0, 11.54,4.495, 11.54,10.803l0,95.242 l 6.564,0 l0-95.242
410
+ c0-6.298, 6.195-11.5, 12.431-11.5c 6.236,0, 11.94,6.615, 11.94,12.902l 0.696,167.035l 7.711,0 l0-66.529 c0-6.656, 19.651-6.656, 19.651,0l0,65.044
411
+ c0,13.548-11.438,26.778-27.105,26.778l-52.746,0.123c-14.254,0-24.996-11.858-24.996-26.573l0-65.372 c0-6.656, 13.107-6.656, 13.107,0l0,66.529 l 9.841,0
412
+ L 301.814,70.676z" data-tags="place_of_worship" />
413
+ <glyph unicode="&#xe03d;" d="M 476.109,367.36L 36.055,367.36 c-14.152,0-25.733-12.872-25.733-25.6c0-12.728, 11.581-25.59, 25.733-25.59l 6.216,0 l0-51.2 l 428.247,0 l0,51.2 l 5.591,0
414
+ c 14.162,0, 25.733,12.861, 25.733,25.59C 501.842,354.488, 490.271,367.36, 476.109,367.36z M 256.082,290.355c-7.107,0-12.861,5.929-12.861,13.23
415
+ s 5.755,13.23, 12.861,13.23c 7.117,0, 12.861-5.929, 12.861-13.23S 263.199,290.355, 256.082,290.355zM 42.271,162.58l 428.247,0 L 470.518,244.48 L 42.271,244.48 L 42.271,162.58 z M 256.082,217.61c 7.117,0, 12.861-5.919, 12.861-13.22c0-7.311-5.745-13.23-12.861-13.23
416
+ c-7.107,0-12.861,5.919-12.861,13.23C 243.21,211.692, 248.975,217.61, 256.082,217.61zM 42.271,91.955l0-26.47 l0-33.065 c0-7.27, 0.911-13.23, 7.987-13.23l 51.446,0 c 7.076,0, 10.281,5.96, 10.281,13.23l0,37.99 l 288.819,0 l0-37.99
417
+ c0-7.27, 2.58-13.23, 9.646-13.23l 51.456,0 c 7.055,0, 8.602,5.96, 8.602,13.23l0,33.065 l0,26.47 L 470.508,142.080 L 42.271,142.080 L 42.271,91.955 z M 256.082,118.405
418
+ c 7.117,0, 12.861-5.929, 12.861-13.22c0-7.322-5.745-13.22-12.861-13.22c-7.107,0-12.861,5.898-12.861,13.22
419
+ C 243.21,112.466, 248.975,118.405, 256.082,118.405z" data-tags="furniture_store" />
420
+ <glyph unicode="&#xe03e;" d="M 365.158,177.521c 17.009,28.047, 26.952,60.908, 26.952,96.102c0,102.697-83.098,185.856-185.815,185.897
421
+ C 103.67,459.489, 20.48,376.32, 20.48,273.644c0-102.584, 83.2-185.743, 185.876-185.743c 35.226,0, 68.045,9.953, 96.092,26.962L 428.841-11.52L 491.52,51.19
422
+ L 365.158,177.521z M 206.336,158.669c-63.508,0.154-114.852,51.476-114.964,114.852C 91.494,337.029, 142.848,388.362, 206.336,388.506
423
+ c 63.478-0.164, 114.842-51.487, 114.975-114.985C 321.178,210.217, 269.793,158.822, 206.336,158.669zM 286.72,295.68L 225.28,295.68L 225.28,357.12L 184.32,357.12L 184.32,295.68L 122.88,295.68L 122.88,254.72L 184.32,254.72L 184.32,193.28L 225.28,193.28L 225.28,254.72L 286.72,254.72 z" data-tags="zoom-in-alt" />
424
+ <glyph unicode="&#xe03f;" d="M 491.52,275.2L 307.2,275.2L 307.2,459.52L 204.8,459.52L 204.8,275.2L 20.48,275.2L 20.48,172.8L 204.8,172.8L 204.8-11.52L 307.2-11.52L 307.2,172.8L 491.52,172.8 z" data-tags="zoom-in" />
425
+ <glyph unicode="&#xe040;" d="M 348.16,367.36L 348.16,398.449 C 348.16,423.854, 326.564,449.28, 301.169,449.28l-85.432,0 C 190.351,449.28, 163.84,423.854, 163.84,398.449L 163.84,367.36 l-54.395,0 L 51.2,8.96l 411.515,0 l-59.167,358.4L 348.16,367.36 z
426
+ M 194.56,398.449C 194.56,407.962, 206.234,418.56, 215.736,418.56l 85.432,0 C 310.661,418.56, 317.44,407.962, 317.44,398.449L 317.44,367.36 L 194.56,367.36 L 194.56,398.449 z" data-tags="department_store" />
427
+ <glyph unicode="&#xe041;" d="M 259.43,231.199c0,0-49.551-39.864-49.551-72.090c0-14.428, 21.238-28.846, 49.551-28.846c 28.293,0, 49.531,14.418, 49.531,28.846
428
+ C 308.961,192.492, 259.43,231.199, 259.43,231.199zM 440.074,304.067c 2.867,35.103, 13.046,67.328, 30.966,96.86L 402.237,469.76c-21.729-18.719-46.49-29.082-74.547-30.915
429
+ c-25.702-2.324-50.063,2.56-72.97,14.694c-23.572-11.735-47.841-16.64-73.144-14.694c-26.163,2.345-49.787,11.622-70.932,28.068L 41.646,398.111
430
+ c 16.968-29.962, 26.419-61.307, 28.273-94.044c 0.881-15.073-3.42-35.809-13.066-62.638c-5.048-14.868-8.858-27.761-11.469-38.543
431
+ c-2.417-10.701-3.922-19.405-4.413-25.917c-0.358-28.57, 7.66-54.385, 24.095-77.312c 12.841-16.742, 34.017-35.236, 63.427-55.45
432
+ c 32.184-16.384, 57.078-27.013, 74.516-31.56c 4.987-2.335, 9.892-4.567, 14.459-6.717c 4.557-2.171, 9.431-4.301, 14.51-6.625
433
+ c 10.967-6.564, 18.668-13.691, 22.743-21.053c 4.966,7.956, 12.841,14.909, 23.327,21.053c 7.393,3.226, 13.629,6.031, 18.657,8.479
434
+ c 5.007,2.222, 8.755,3.871, 10.916,4.874c 3.727,1.853, 8.632,3.973, 14.531,6.308c 5.949,2.345, 13.332,5.212, 22.118,8.407
435
+ c 16.988,6.011, 29.379,11.704, 37.222,16.845c 28.529,20.214, 49.388,38.4, 62.648,54.682c 17.029,23.020, 25.293,48.937, 24.914,78.080
436
+ c-1.014,13.046-6.533,33.925-16.558,62.362C 442.941,267.039, 438.702,288.543, 440.074,304.067z M 259.43,101.427
437
+ c-62.536,0-120.32,51.651-120.32,115.354c0,43.264, 33.075,84.132, 42.465,100.936l 28.303-43.264l 49.551,72.090l 49.531-72.090l 28.344,43.264
438
+ c 9.359-16.804, 42.465-57.672, 42.465-100.936C 379.771,153.078, 321.976,101.427, 259.43,101.427z" data-tags="fire_station" />
439
+ <glyph unicode="&#xe042;" d="M 501.76,250.665L 266.24,362.076L 266.24,408.32L 296.96,408.32L 296.96,428.8L 266.24,428.8L 266.24,469.76L 245.76,469.76L 245.76,428.8L 215.040,428.8L 215.040,408.32L 245.76,408.32L 245.76,362.076L 81.326,284.201L 81.326,284.201L 81.326,284.201L 10.24,250.665L 10.24,234.24L 81.92,234.24L 81.92-21.76L 204.8-21.76L 204.8,131.84L 307.2,131.84L 307.2-21.76L 430.080-21.76L 430.080,234.24L 501.76,234.24 z" data-tags="church" />
440
+ <glyph unicode="&#xe043;" d="M 257.577,302.367c 40.479,0, 73.155,32.942, 73.155,73.554c0,40.53-32.666,73.359-73.155,73.359c-40.428,0-73.247-32.84-73.247-73.359
441
+ C 184.33,335.319, 217.16,302.367, 257.577,302.367zM 328.755,285.44c 33.495,0, 47.555-28.611, 47.555-28.611l 108.104-148.941c 4.475-6.646, 7.107-14.776, 7.107-23.552
442
+ c0-23.142-18.719-41.953-41.789-41.953c-5.519,0-10.865,1.198-15.555,3.021L 368.64,63.57L 368.64-1.28 L 143.36-1.28 l0,64.85 l-65.556-18.196
443
+ C 73.196,43.571, 67.891,42.342, 62.351,42.342c-23.050,0-41.861,18.739-41.861,41.882c0,8.765, 2.591,16.763, 7.229,23.429l 108.032,149.176
444
+ c0,0, 14.049,28.611, 47.401,28.611L 328.755,285.44 z M 256.061,43.899L 256.061,43.899l 84.439,28.058l-1.833,0.512c-58.419,17.121-36.024,94.495, 22.252,77.179
445
+ L 368.64,146.903l0,87.255 l-112.527-37.1L 143.36,234.158l0-87.255 l 7.721,2.755c 58.245,17.306, 80.876-60.058, 22.497-77.179l-2.048-0.512L 256.061,43.899
446
+ L 256.061,43.899z" data-tags="library" />
447
+ <glyph unicode="&#xe044;" d="M 261.908,388.475c 23.521-1.731, 44.093,15.032, 45.957,37.356c 1.884,22.436-15.667,42.066-39.188,43.796c-23.552,1.71-44.124-14.95-45.947-37.386
448
+ C 220.897,409.815, 238.459,390.226, 261.908,388.475zM 438.098,60.16l-14.213,122.88l-23.060,0 c 0.215,10.24, 0.184,11.377-0.522,17.592c-0.686,6.359-2.703,11.008-5.99,12.472
449
+ c 2.693,2.867, 4.485,6.513, 4.833,10.619c 0.522,6.472-2.509,12.524-7.578,16.128l-58.696,38.584l-43.213,81.367
450
+ c-7.158,10.65-19.282,19.241-33.915,20.47c-11.244,0.778-21.586-2.939-29.952-8.468l-85.75-66.376c-2.826-2.273-4.946-5.263-5.908-8.858
451
+ l-19.978-80.394C 113.981,215.409, 112.64,214.548, 112.64,213.791c0-0.010,0-0.020,0-0.031l-0.164,0 c-3.348,0-6.4-3.195-7.567-7.424
452
+ C 103.782,202.189, 102.4,196.71, 102.4,192.276C 102.4,189.082, 102.4,183.040, 102.4,183.040L 80.138,183.040 L 65.925,60.16l 57.436,0 l-25.18-40.294c-1.638-3.123-3.564-7.537-3.901-11.796
453
+ c-1.239-15.258, 10.639-28.518, 26.563-29.737c 11.377-0.758, 21.166,4.731, 27.116,13.496L 190.454,60.16l 5.56,0 l-0.87,7.547l 11.786,18.964
454
+ c 1.28,2.54, 5.345,8.755, 5.796,11.704l 14.397,62.566l 61.45-64.236l 19.292-96.573c 3.082-11.418, 12.933-20.838, 26.040-21.801
455
+ c 15.944-1.208, 29.901,10.045, 31.171,25.272c 0.113,1.905-0.225,3.338-0.174,5.612L 354.826,60.16l 18.207,0 L 438.098,60.16 z M 112.2,193.382
456
+ c 0.573,4.844, 2.386,7.598, 5.581,7.598c 0.42,0, 0.778,0.010, 1.198,0.020c 3.226-3.901, 8.018-6.574, 13.548-7.025
457
+ c 6.339-0.492, 12.032,2.243, 15.903,6.482c 0.86-0.727, 1.546-1.823, 2.017-3.338c 0.85-2.939, 1.341-6.308, 1.341-9.083
458
+ c0-1.659-0.082-4.997-0.195-4.997l-20.644,0 l-19.046,0 C 111.77,183.040, 111.811,189.624, 112.2,193.382z M 170.885,183.040l-12.134,0
459
+ c 0.256,10.24, 0.184,11.377-0.481,17.592c-0.573,5.325-2.079,9.441-4.465,11.551l 15.145,65.966l 29.87,23.112L 170.885,183.040z M 393.687,183.040L 373.043,183.040
460
+ l-19.077,0 c-0.164,0-0.113,6.584, 0.297,10.342c 0.532,4.844, 2.376,7.598, 5.581,7.598c 4.598,0, 8.765,0.143, 12.462,0.225
461
+ c 3.717,0.133, 8.786,0.317, 15.165,0.317c 2.447,0, 4.106-1.454, 5.028-4.413c 0.881-2.939, 1.352-6.308, 1.352-9.083
462
+ C 393.851,186.378, 393.759,183.040, 393.687,183.040z M 265.216,206.418l 19.251,81.265l 16.189-30.546c 1.28-2.099, 2.796-3.83, 4.792-5.458L 363.274,213.76l-8.735,0
463
+ c-3.348,0-4.577-3.195-5.734-7.424C 347.709,202.189, 348.16,196.71, 348.16,192.276C 348.16,189.082, 348.16,183.040, 348.16,183.040l-25.928,0 l-4.188-36.147L 265.216,206.418z" data-tags="shopping_mall" />
464
+ <glyph unicode="&#xe045;" d="M 471.040,183.040L 471.040-21.76L 317.44-21.76L 317.44,19.2L 184.32,19.2L 184.32-21.76L 40.96-21.76L 40.96,183.040 zM 378.358,220.365c-5.878,25.692-19.139,48.282-40.038,65.546C 318.075,302.735, 294.124,305.92, 266.342,316.16L 266.24,316.16 L 266.24,380.959
465
+ c0,0.287, 2.775,0.512, 5.366,1.444c 3.676,1.28, 7.148,2.755, 11.745,4.352c 4.516,1.526, 8.602,2.806, 12.861,3.707
466
+ c 4.178,0.993, 7.076,1.413, 9.062,1.413c 3.86,0, 8.745-0.614, 14.459-1.864c 5.816-1.413, 12.012-2.939, 18.309-4.669
467
+ c 6.564-1.987, 12.421-3.492, 18.104-4.772c 5.417-1.239, 9.953-1.751, 13.711-1.751C 375.839,378.808, 378.88,379.638, 389.12,381.46L 389.12,455.619
468
+ c-10.24-2.437-12.052-3.779-19.272-3.779c-3.758,0-8.407,0.573-13.834,1.946c-5.663,1.085-11.5,2.775-18.063,4.68
469
+ c-6.298,1.915-12.247,3.359-17.746,4.567c-5.56,1.321-9.175,1.956-13.107,1.956c-13.036,0-30.618-3.082-40.858-8.765L 266.24,469.76 l-20.48,0 l0-153.6 l-0.645,0
470
+ c-27.566-10.24-51.702-14.008-71.926-30.833c-20.5-17.285-33.812-38.41-40.11-64.113c0,0-19.63,2.785-19.63-17.695l 286.413,0
471
+ C 399.862,224, 378.358,220.365, 378.358,220.365z" data-tags="local_government" />
472
+ <glyph unicode="&#xe046;" d="M 483.645,60.16c0,0-74.045,0-166.205,0l0-40.735 L 317.44,19.2 c 40.96,0, 66.877,0, 66.877,0c 28.959,0, 41.513,0, 56.689,0l 44.339,0
473
+ C 499.149,19.2, 501.76,31.232, 501.76,31.232l0,9.933 C 501.76,41.165, 501.637,60.16, 483.645,60.16zM 460.657,68.25C 483.328,68.25, 501.76,86.702, 501.76,109.435c0,22.804-18.432,41.196-41.103,41.196c-22.641,0-41.021-18.401-41.021-41.196
474
+ C 419.635,86.712, 438.016,68.25, 460.657,68.25zM 374.088,70.4c 21.565,0, 38.912,15.196, 38.912,36.731c-0.010,21.494-17.418,32.768-38.82,32.932L 317.44,132.874L 317.44,70.4 L 374.088,70.4 L 374.088,70.4zM 189.676,337.326c 25.18,0, 45.548,20.48, 45.548,45.742C 235.223,408.33, 214.856,428.8, 189.676,428.8c-25.16,0-45.558-20.47-45.558-45.732
475
+ C 144.118,357.806, 164.516,337.326, 189.676,337.326zM 143.165,189.297c-0.113,0.215-0.297,0.338-0.41,0.594l-20.644,48.067L 122.081,142.080l 61.696,0 l 13.476,14.336l-36.547,14.070
476
+ C 152.044,173.742, 145.889,181.115, 143.165,189.297zM 156.242,193.608c 1.997-4.485, 5.693-8.12, 10.342-9.789l 70.42-26.102c 9.011-3.983, 19.538,0.154, 23.491,9.196
477
+ c 3.953,9.103-0.154,19.702-9.175,23.665l-64.973,24.535l-20.070,48.138l 13.087,4.874l 17.009-41.247L 245.76,208.568l0,50.401 l 26.214-15.596l 13.066-65.823
478
+ c 3.205-9.4, 13.353-14.346, 22.712-11.1c 9.267,3.215, 14.193,13.466, 11.008,22.825l-14.643,63.396c-0.963,3.553-3,6.656-5.755,8.98
479
+ c-7.506,8.315-45.466,50.76-48.169,53.596C 246.231,319.222, 237.169,326.4, 220.047,326.4l-61.44,0 c-34.918,0-41.636-35.635-34.499-53.76L 156.242,193.608zM 307.2,131.84L 30.382,131.84 C 20.306,131.84, 10.24,126.157, 10.24,113.654c0-2.898,0-8.202,0-8.202L 10.24,19.2 c0,0, 18.012,0, 23.859,0L 307.2,19.2 L 307.2,131.84 z" data-tags="spa" />
480
+ <glyph unicode="&#xe047;" d="M 419.84,285.44l-2.785,0 c-0.758,1.311-1.638,2.58-2.724,3.738L 296.12,415.826C 296.643,418.355, 296.96,420.977, 296.96,423.68C 296.96,443.474, 282.378,459.52, 264.376,459.52
481
+ c-6.943,0-30.3,0-37.243,0C 209.142,459.52, 194.56,443.474, 194.56,423.68c0-2.703, 0.328-5.325, 0.84-7.854L 77.189,289.178
482
+ C 76.114,288.020, 75.233,286.751, 74.465,285.44L 20.48,285.44 l0-71.68 l 20.48,0 l0-153.6 c0-28.283, 22.927-51.2, 51.2-51.2l 327.68,0 c 28.283,0, 51.2,22.917, 51.2,51.2L 471.040,213.76 l 20.48,0 l0,71.68 L 419.84,285.44 z M 227.144,387.84
483
+ c 6.943,0, 30.3,0, 37.243,0c 0.573,0, 1.096,0.154, 1.669,0.184L 361.789,285.44L 129.731,285.44 l 95.744,102.584C 226.038,387.994, 226.57,387.84, 227.144,387.84z M 133.12,70.4
484
+ c0-11.264-9.216-20.48-20.48-20.48s-20.48,9.216-20.48,20.48L 92.16,193.28 c0,11.264, 9.216,20.48, 20.48,20.48s 20.48-9.216, 20.48-20.48L 133.12,70.4 z M 225.28,70.4c0-11.264-9.216-20.48-20.48-20.48s-20.48,9.216-20.48,20.48L 184.32,193.28 c0,11.264, 9.216,20.48, 20.48,20.48s 20.48-9.216, 20.48-20.48L 225.28,70.4 z
485
+ M 327.68,70.4c0-11.264-9.216-20.48-20.48-20.48s-20.48,9.216-20.48,20.48L 286.72,193.28 c0,11.264, 9.216,20.48, 20.48,20.48s 20.48-9.216, 20.48-20.48L 327.68,70.4 z M 419.84,70.4c0-11.264-9.216-20.48-20.48-20.48s-20.48,9.216-20.48,20.48L 378.88,193.28 c0,11.264, 9.216,20.48, 20.48,20.48
486
+ s 20.48-9.216, 20.48-20.48L 419.84,70.4 z" data-tags="convenience_store" />
487
+ <glyph unicode="&#xe048;" d="M 292.669,269.629c0-34.499-28.559-34.499-43.95-34.499l-19.19,0 l0,65.219 l 24.115,0 C 267.131,300.349, 292.669,300.349, 292.669,269.629zM 440.084,304.067c 2.847,35.103, 13.015,67.318, 30.956,96.85L 402.237,469.76c-21.74-18.719-46.479-29.082-74.537-30.915
488
+ c-25.692-2.324-50.084,2.56-72.98,14.684c-23.562-11.735-47.831-16.64-73.134-14.684c-26.173,2.345-49.787,11.622-70.943,28.068L 41.646,398.1
489
+ c 16.968-29.952, 26.419-61.307, 28.283-94.034c 0.881-15.073-3.42-35.82-13.066-62.638C 51.814,226.56, 47.995,213.658, 45.394,202.885
490
+ c-2.406-10.701-3.912-19.405-4.413-25.917c-0.358-28.58, 7.66-54.385, 24.095-77.312c 12.841-16.742, 34.017-35.226, 63.427-55.45
491
+ c 32.174-16.384, 57.078-27.023, 74.516-31.549c 4.987-2.345, 9.892-4.588, 14.459-6.717c 4.547-2.191, 9.421-4.311, 14.51-6.625
492
+ c 10.967-6.574, 18.678-13.711, 22.733-21.064c 4.977,7.956, 12.851,14.909, 23.316,21.064c 7.393,3.215, 13.65,6.021, 18.668,8.479
493
+ c 5.018,2.202, 8.755,3.86, 10.926,4.874c 3.717,1.853, 8.602,3.963, 14.51,6.298c 5.97,2.345, 13.332,5.222, 22.129,8.397
494
+ c 16.998,6.031, 29.368,11.715, 37.233,16.855c 28.518,20.224, 49.367,38.4, 62.638,54.671c 17.019,23.030, 25.283,48.947, 24.904,78.090
495
+ c-1.004,13.046-6.523,33.925-16.548,62.372C 442.931,267.039, 438.692,288.543, 440.084,304.067z M 313.62,209.756
496
+ c-16.333-10.691-38.789-10.691-50.514-10.691l-32.205,0 l0-88.125 l-48.425,0 L 182.477,336.998 l 68.741,0 c 31.949,0, 58.665-2.058, 77.22-24.678
497
+ c 11.581-14.397, 13.537-30.751, 13.537-42.373C 341.955,243.62, 331.11,221.399, 313.62,209.756z" data-tags="police" />
498
+ <glyph unicode="&#xe049;" d="M 486.451,269.527C 484.076,398.94, 409.385,450.365, 406.323,452.413L 394.752,460.339l-11.633-7.905c-19.343-13.189-39.393-19.886-59.566-19.886
499
+ c-33.475,0-56.156,18.104-57.129,18.883l-13.025,10.506l-12.933-10.527c-0.942-0.768-23.654-18.872-57.108-18.872
500
+ c-20.183,0-40.223,6.687-59.587,19.917l-11.592,7.864l-11.674-7.926C 92.57,446.915, 23.030,395.295, 20.511,270.162
501
+ c-1.004-10.885, 28.908-216.842, 232.97-276.593C 475.392,58.737, 487.578,255.928, 486.451,269.527z M 61.604,267.049l 0.031-2.918
502
+ C 62.044,287.754, 65.341,316.16, 71.731,326.4l 363.407,0 c 6.42-10.24, 9.748-38.717, 10.117-62.505l 0.143,0.102c 0.809-6.595-7.311-192-191.918-229.222
503
+ C 88.207,71.25, 60.877,260.966, 61.604,267.049z" data-tags="route" />
504
+ <glyph unicode="&#xe04a;" d="M 20.48,275.2L 491.52,275.2L 491.52,172.8L 20.48,172.8z" data-tags="zoom-out" />
505
+ <glyph unicode="&#xe04b;" d="M 332.974-12.616L 260.557,203.52L 25.211,203.52L 477.798,457.513 z" data-tags="location-arrow" />
506
+ <glyph unicode="&#xe04c;" d="M 256,480c-84.828,0-153.6-68.157-153.6-152.228c0-84.081, 153.6-359.782, 153.6-359.782s 153.6,275.702, 153.6,359.782C 409.6,411.843, 340.828,480, 256,480z
507
+ M 255.498,282.245c-26.184,0-47.401,21.043-47.401,46.981c0,25.958, 21.217,46.991, 47.401,46.991c 26.204,0, 47.421-21.033, 47.421-46.991
508
+ C 302.92,303.288, 281.702,282.245, 255.498,282.245z" data-tags="postal_code" />
509
+ <glyph unicode="&#xe04d;" d="M 441.958,264.96L 419.84,264.96 l0,88.392 C 419.84,411.494, 361.513,469.76, 303.37,469.76l-97.085,0 C 148.173,469.76, 92.16,411.494, 92.16,353.352L 92.16,264.96 L 67.686,264.96 C 60.754,264.96, 51.2,254.085, 51.2,247.962l0-260.69
510
+ C 51.2-18.852, 60.754-21.76, 67.686-21.76l 374.272,0 c 6.953,0, 18.842,2.908, 18.842,9.032L 460.8,247.962 C 460.8,254.085, 448.911,264.96, 441.958,264.96z M 304.261,19.2l-98.826,0
511
+ l 20.736,102.062c-12.534,8.878-20.736,25.61-20.736,42.035c0,27.064, 22.129,50.115, 49.408,50.115c 27.279,0, 49.418-21.391, 49.418-48.435
512
+ c0-16.435-8.202-35.113-20.716-44.001L 304.261,19.2z M 348.16,264.96L 163.84,264.96 l0,88.392 C 163.84,379.75, 181.176,398.080, 207.268,398.080l 95.119,0 C 328.479,398.080, 348.16,379.75, 348.16,353.352L 348.16,264.96 z" data-tags="locksmith" />
513
+ <glyph unicode="&#xe04e;" d="M 439.542,346.88L 389.12,346.88 L 389.12,400.394 C 389.12,438.651, 358.932,469.76, 320.573,469.76L 191.437,469.76 C 153.057,469.76, 122.88,438.651, 122.88,400.394L 122.88,346.88 L 72.448,346.88 C 38.083,346.88, 10.24,320.348, 10.24,286.085
514
+ l0-235.592 C 10.24,16.241, 38.083-11.52, 72.448-11.52l 367.094,0 C 473.897-11.52, 501.76,16.241, 501.76,50.504L 501.76,286.085 C 501.76,320.348, 473.897,346.88, 439.542,346.88z M 163.84,400.394
515
+ C 163.84,414.72, 177.070,428.8, 191.437,428.8l 129.137,0 C 334.899,428.8, 348.16,414.72, 348.16,400.394L 348.16,346.88 L 163.84,346.88 L 163.84,400.394 z M 368.64,121.6l-71.68,0 l0-71.68 l-81.92,0 l0,71.68 l-71.68,0 l0,81.92 l 71.68,0 l0,71.68 l 81.92,0 l0-71.68 l 71.68,0 L 368.64,121.6 z" data-tags="doctor" />
516
+ <glyph unicode="&#xe04f;" d="M 491.745,207.084c-14.295-66.755-63.406-121.59-128.164-143.114c-19.866-6.615-40.448-9.964-61.184-9.964
517
+ c-83.446,0-157.225,53.146-183.603,132.239c-16.333,48.957-12.585,101.335, 10.547,147.497c 23.132,46.152, 62.884,80.558, 111.923,96.87
518
+ c 46.131,15.319, 96.225,12.759, 140.39-7.055l 9.574,18.053C 327.096,481.229, 247.214,490.711, 175.391,466.821C 110.438,445.225, 57.795,399.657, 27.156,338.534
519
+ c-30.638-61.133-35.594-130.519-13.967-195.379C 48.128,38.39, 145.848-32, 256.358-32c 27.464,0, 54.712,4.434, 81.009,13.169
520
+ c 98.028,32.604, 166.564,120.115, 174.612,222.966L 491.745,207.084zM 365.537,330.465L 314.194,426.557L 288.082,319.273L 181.289,298.281L 279.050,242.77L 262.236,132.219L 345.252,207.729L 448.123,158.372L 395.581,261.048L 478.771,341.35 z" data-tags="mosque" />
521
+ <glyph unicode="&#xe050;" d="M 352.645,300.268c 35.82,0, 64.983,28.682, 64.983,64.215C 417.628,400.005, 388.475,428.8, 352.645,428.8c-35.963,0-65.178-28.795-65.178-64.317
522
+ C 287.468,328.95, 316.692,300.268, 352.645,300.268zM 501.76,143.544l0,81.306 L 414.054,274.176c-14.858,7.455-31.375,9.984-47.882,6.502c-6.758-1.382-13.117-3.963-20.265-7.895
523
+ c-0.778-0.215-26.819-11.571-41.953-46.5L 243.558,106.138c0,0-59.505-11.397-84.408-16.148c-1.966-1.3-4.076-2.355-6.093-3.594l-15.411,55.101
524
+ c-6.38,22.405, 17.418,54.886, 18.309,56.207c 15.749,22.784, 20.060,52.797, 11.786,82.524c-7.537,26.88-24.699,49.541-47.043,62.29
525
+ c-17.48,9.82-37.13,12.524-54.968,7.67c-13.855-3.758-26.204-11.817-35.748-23.398c-0.123-0.113-7.383-10.752-7.383-10.752
526
+ c-12.841-22.354-15.8-50.371-8.376-77.394c 7.537-27.136, 24.504-49.705, 46.961-62.28l 5.376-2.816c 0.717-0.051, 37.704-14.961, 44.134-36.352
527
+ c-0.082-0.113, 9.708-35.092, 17.695-63.601c-2.048-0.881-4.014-1.946-6.083-2.765c 0.297-0.215, 0.85-0.553, 1.188-0.788
528
+ c-1.802-2.755-4.966-8.858-4.741-15.104c0-1.987, 0.164-3.973, 0.543-5.898c 3.41-17.664, 20.91-29.46, 38.789-25.866l 114.125,21.955
529
+ c0,0, 9.708,2.918, 13.865,5.847c 5.356,3.758, 9.39,11.643, 9.39,11.643l 29.993,59.628c0,0, 20.675-96.358, 21.074-98.14
530
+ c-0.348-0.266-2.028-2.099-4.762-4.905l 155.679,0 c-2.345,13.681-3.901,22.456-3.901,22.559c0,0.225-4.905,21.617-4.905,21.617
531
+ c 0.164-0.154-13.353,60.027-23.685,107.131c 16.466-9.421, 31.386-17.797, 32.215-18.248C 497.295,151.992, 499.067,148.623, 501.76,143.544z M 109.435,192.963
532
+ c-11.561-3.072-23.91-1.208-35.748,5.315c-16.486,9.216-29.225,26.368-34.683,47.063c-5.816,20.623-3.697,41.748, 5.693,58.030l 5.243,7.557
533
+ c 6.185,7.506, 13.681,12.524, 22.671,15.012c 28.713,7.711, 60.334-15.78, 70.554-52.47C 153.231,236.943, 138.158,200.694, 109.435,192.963z" data-tags="stadium" />
534
+ <glyph unicode="&#xe051;" d="M 30.72,418.56L 481.28,418.56L 481.28,367.36L 30.72,367.36zM 61.44,346.88l0-337.92 l 389.12,0 L 450.56,346.88 L 61.44,346.88 z M 327.68,254.72L 174.080,254.72 l0,30.72 l 153.6,0 L 327.68,254.72 z" data-tags="storage" />
535
+ <glyph unicode="&#xe052;" d="M 432.282,346.88l-58.102,0 l 58.46,56.054L 374.804,459.52l-81.859,0 l 58.644-56.044L 291.471,346.88l-69.519,0 l 59.781,56.054L 222.679,459.52l-83.261,0 l 58.644-56.044
536
+ L 137.861,346.88L 78.94,346.88 l 59.812,56.054L 79.585,459.52L 20.48,459.52 l0-471.040 l 471.040,0 L 491.52,459.52 l-57.774,0 L 491.52,403.159L 432.282,346.88z M 430.080,49.92L 81.92,49.92 l0,61.44 l 348.16,0 L 430.080,49.92 z M 430.080,162.56L 81.92,162.56 l0,61.44 l 348.16,0 L 430.080,162.56 z" data-tags="movie_theater" />
537
+ <glyph unicode="&#xe053;" d="M 419.84,336.64l-51.2,0 L 368.64,450.109 C 368.64,460.964, 359.475,469.76, 348.16,469.76s-20.48-8.796-20.48-19.651L 327.68,336.64 L 163.84,336.64 L 163.84,450.109 C 163.84,460.964, 154.675,469.76, 143.35,469.76
538
+ C 132.035,469.76, 122.88,460.964, 122.88,450.109L 122.88,336.64 L 71.68,336.64 c-5.663,0-10.24-8.899-10.24-14.326L 61.44,273.152 c0-58.972, 102.4-127.447, 102.4-222.167L 163.84,19.2 l 40.96,0 l0-40.96 l 81.92,0 l0,40.96 l 40.96,0 l0,31.785
539
+ c0,94.72, 102.4,163.205, 102.4,222.167l0,49.162 C 430.080,327.741, 425.503,336.64, 419.84,336.64 M 234.568,168.827C 235.233,170.977, 233.882,172.8, 231.537,172.8l-39.782,0
540
+ c-2.355,0-3.021,1.331-1.526,3.062c0,0, 81.971,104.028, 83.569,106.035c 1.208,1.905, 2.54,1.239, 2.12-0.952
541
+ c-0.635-2.775-18.135-73.748-18.135-73.748C 256.932,205.107, 258.161,203.52, 260.485,203.52l 39.803,0 c 2.345,0, 3.092-1.577, 1.659-3.359
542
+ c0,0-82.094-106.516-83.569-108.298c-1.485-1.782-2.857-1.239-2.109,1.792C 217.016,96.696, 234.568,168.827, 234.568,168.827" data-tags="electrician" />
543
+ <glyph unicode="&#xe054;" d="M 87.286,164.659c-20.255,0-36.71-16.558-36.71-36.905C 50.575,107.397, 67.041,90.88, 87.286,90.88c 20.296,0, 36.762,16.517, 36.762,36.884
544
+ C 124.047,148.101, 107.592,164.659, 87.286,164.659z M 87.286,108.739c-10.117,0-18.35,8.264-18.35,18.463c0,10.158, 8.233,18.442, 18.35,18.442
545
+ c 10.168,0, 18.401-8.284, 18.401-18.442C 105.697,117.002, 97.464,108.739, 87.286,108.739zM 410.286,164.659c-20.285,0-36.731-16.558-36.731-36.905c0-20.357, 16.435-36.884, 36.731-36.884c 20.275,0, 36.762,16.517, 36.762,36.884
546
+ C 447.048,148.101, 430.572,164.659, 410.286,164.659z M 410.286,108.739c-10.127,0-18.371,8.264-18.371,18.463
547
+ c 0.010,10.158, 8.243,18.442, 18.371,18.442c 10.158,0, 18.401-8.284, 18.401-18.442C 428.687,117.002, 420.454,108.739, 410.286,108.739zM 491.592,336.64L 168.561,336.64 c-5.601,0-10.168-4.567-10.168-10.209l0-92.59 l-20.347,0 l0,56.842 c0,5.652-4.557,10.209-10.179,10.209L 58.563,300.892
548
+ c-12.083,0-22.876-8.929-24.812-21.709l0,0.666 l-10.813-61.307l 0.020-0.215C 15.616,217.078, 10.24,210.698, 10.24,203.213c0-1.096, 0.123-2.222, 0.338-3.277
549
+ L 10.24,200.028l 15.258-68.966l 15.892,0 l0,0.625 c0,24.719, 20.224,44.739, 45.158,44.739c 24.914,0, 45.148-20.019, 45.148-44.739l0-0.625 l 232.714,0 l0,0.625
550
+ c0,24.719, 20.234,44.739, 45.128,44.739c 24.934,0, 45.169-20.019, 45.169-44.739c0-0.205,0-0.42-0.041-0.625l 0.041,0 L 501.76,131.062 L 501.76,326.431
551
+ C 501.76,332.063, 497.213,336.64, 491.592,336.64z M 102.431,284.303l0-50.463 l-61.030,0 l 7.629,42.813c 0.635,5.12, 5.089,8.899, 9.533,8.899l 43.868,0 L 102.431,284.303 z" data-tags="moving_company" />
552
+ <glyph unicode="&#xe055;" d="M 256,480c-84.828,0-153.6-68.157-153.6-152.228c0-84.081, 153.6-359.782, 153.6-359.782s 153.6,275.702, 153.6,359.782C 409.6,411.843, 340.828,480, 256,480z
553
+ M 255.498,282.245c-26.184,0-47.401,21.043-47.401,46.981c0,25.958, 21.217,46.991, 47.401,46.991c 26.204,0, 47.421-21.033, 47.421-46.991
554
+ C 302.92,303.288, 281.702,282.245, 255.498,282.245z" data-tags="postal_code_prefix" />
555
+ <glyph unicode="&#xe056;" d="M 256,469.76C 120.484,469.76, 10.24,359.516, 10.24,224c0-135.506, 110.244-245.76, 245.76-245.76c 135.506,0, 245.76,110.254, 245.76,245.76C 501.76,359.516, 391.506,469.76, 256,469.76z M 286.72,21.76L 286.72,111.36 l-61.44,0
556
+ l0-89.6 C 136.96,35.144, 67.144,104.96, 53.76,193.28L 143.36,193.28 l0,61.44 L 53.76,254.72 C 67.144,343.040, 136.96,412.856, 225.28,426.24L 225.28,336.64 l 61.44,0 L 286.72,426.24
557
+ C 375.040,412.856, 444.856,343.040, 458.24,254.72L 368.64,254.72 l0-61.44 l 89.6,0 C 444.856,104.96, 375.040,35.144, 286.72,21.76z" data-tags="crosshairs" />
558
+ <glyph unicode="&#xe057;" d="M 256-21.76C 120.484-21.76, 10.24,88.494, 10.24,224C 10.24,359.516, 120.484,469.76, 256,469.76c 135.506,0, 245.76-110.244, 245.76-245.76C 501.76,88.494, 391.506-21.76, 256-21.76z M 256,428.8
559
+ C 143.073,428.8, 51.2,336.927, 51.2,224c0-112.927, 91.873-204.8, 204.8-204.8c 112.927,0, 204.8,91.873, 204.8,204.8C 460.8,336.927, 368.927,428.8, 256,428.8zM 256.461,395.52C 256.461,395.52, 184.32,271.913, 184.32,234.24c0-3.983,0-16.548,0-20.48c0-37.663, 72.356-163.84, 72.356-163.84S 327.68,173.476, 327.68,211.139
560
+ c0,3.963,0,19.22,0,23.163C 327.68,271.974, 256.461,395.52, 256.461,395.52z M 256,183.040c-22.62,0-40.96,18.34-40.96,40.96c0,22.62, 18.34,40.96, 40.96,40.96c 22.62,0, 40.96-18.34, 40.96-40.96
561
+ C 296.96,201.38, 278.62,183.040, 256,183.040z" data-tags="compass" />
562
+ <glyph unicode="&#xe058;" d="M 254.433,200.776c 36.321,0, 53.156-27.546, 56.689-66.683c 0.829-9.359-0.010-23.009-1.229-38.82C 305.818,42.762, 301.128-21.76, 336.077-21.76
563
+ c 29.594,0, 44.759,56.73, 53.545,121.405c 8.458,64.020-0.522,95.877, 3.912,124.314c 8.407,53.862, 55.419,102.154, 40.899,170.834
564
+ c-8.049,38.103-29.041,56.013-49.807,63.56c-47.862,17.418-78.787-16.148-130.191-16.148c-51.395,0-82.299,33.567-130.181,16.148
565
+ c-20.756-7.537-41.759-25.457-49.828-63.56c-14.49-68.68, 32.512-116.961, 40.95-170.834c 4.393-28.426-4.536-60.293, 3.912-124.314
566
+ C 128.051,34.97, 143.247-21.76, 172.81-21.76c 34.929,0, 30.269,64.522, 26.194,117.033c-1.188,15.821-2.089,29.471-1.239,38.83
567
+ C 201.288,173.23, 218.368,200.776, 254.433,200.776z" data-tags="dentist" />
568
+ <glyph unicode="&#xe059;" d="M 201.38,345.129l-75.069,0 L 126.31,419.133 l 20.47,0 L 146.78,459.52 L 10.24,459.52 l0-40.387 l 20.48,0 l0-114.381 c0-29.737, 24.453-53.832, 54.61-53.832l 116.050,0 l0-20.193 l 40.97,0 L 242.35,365.302 l-40.97,0
569
+ L 201.38,345.129 zM 481.26,176.906l0,114.381 c0,29.727-24.443,53.832-54.569,53.832L 310.62,345.119 l0,20.173 l-40.97,0 l0-134.584 l 40.97,0 l0,20.204 l 75.080,0 l0-74.004 l-20.449,0
570
+ l0-40.387 L 501.76,136.52 l0,40.387 L 481.26,176.906 zM 470.743,25.385c0,20.419-37.253,77.486-37.253,77.486s-37.816-57.068-37.816-77.486c0-20.378, 16.814-36.905, 37.54-36.905
571
+ C 453.929-11.52, 470.743,5.007, 470.743,25.385z" data-tags="plumber" />
572
+ <glyph unicode="&#xe05b;" d="M 94.925,285.44l 40.1,0 l 6.164-184.32L 89.59,101.12 L 94.925,285.44L 94.925,285.44z M 61.44,90.88l 389.12,0 l0-20.48 l 30.72,0 l0-30.72 l 20.48,0 l0-20.48 L 10.24,19.2 l0,20.48 l 20.48,0 l0,30.72 l 30.72,0 L 61.44,90.88 L 61.44,90.88z M 471.040,338.565L 256.020,428.8L 40.96,338.565L 40.96,326.4
573
+ l 430.080,0 L 471.040,338.565 L 471.040,338.565z M 81.92,316.16l 348.16,0 l0-20.48 L 81.92,295.68 L 81.92,316.16 z M 376.177,285.44l 40.079,0 l 6.216-184.32l-51.671,0 L 376.177,285.44z M 282.46,285.44l 40.079,0 l 6.144-184.32l-51.62,0 L 282.46,285.44
574
+ L 282.46,285.44z M 188.723,285.44l 40.090,0 l 6.103-184.32l-51.599,0 L 188.723,285.44z" data-tags="museum" />
575
+ <glyph unicode="&#xe05a;" d="M 277.668,202.957C 275.313,204.39, 276.48,205.711, 266.24,206.93l0-29.665 c0,0.287, 4.424,0.635, 5.612,1.044
576
+ c 7.598,2.662, 11.407,7.629, 11.407,14.858C 283.259,197.356, 281.385,200.653, 277.668,202.957zM 231.578,251.361c0-4.557, 2.079-7.987, 6.216-10.24c 1.587-0.891, 4.26-1.884, 7.956-2.959l0,28.068
577
+ c-3.011-0.707-5.652-1.772-7.875-3.226C 233.677,260.219, 231.578,256.328, 231.578,251.361zM 256,326.4c-50.903,0-92.16-45.855-92.16-102.4c0-56.535, 41.257-102.4, 92.16-102.4c 50.903,0, 92.16,45.865, 92.16,102.4C 348.16,280.545, 306.903,326.4, 256,326.4z M 295.465,166.103
578
+ C 288.512,160.164, 276.48,156.529, 266.24,155.156L 266.24,142.080 l-20.48,0 l0,13.312 c-10.691,1.454-19.548,3.072-26.501,8.55C 209.613,171.54, 204.8,183.040, 204.8,193.28l 25.477,0
579
+ c 0.829,0, 2.447-8.202, 4.864-11.1c 2.509-2.98, 6.072-3.328, 10.619-4.588l0,34.867 c-12.462,2.877-21.146,5.98-25.969,9.318
580
+ c-8.612,5.888-12.913,15.114-12.913,27.648c0,11.438, 4.209,20.941, 12.636,28.508c 6.431,5.786, 15.196,9.339, 26.245,10.711L 245.76,305.92 l 20.48,0 l0-17.818
581
+ c 10.24-1.526, 17.162-6.277, 23.552-11.018C 299.407,269.947, 306.176,264.96, 306.637,244.48l-25.661,0 c-0.481,10.24-5.622,14.664-12.001,17.9
582
+ C 268.636,262.543, 266.24,264.356, 266.24,264.499l0-32.184 l 9.236-1.782c 9.82-2.314, 18.903-5.407, 23.798-9.267c 7.619-6.021, 10.568-14.715, 10.568-26.081
583
+ C 309.862,183.511, 304.476,173.824, 295.465,166.103zM 440.32,357.12L 71.68,357.12 L0,357.12 l0-71.68 l0-122.88 l0-71.68 l 71.68,0 l 368.64,0 l 71.68,0 l0,71.68 L 512,285.44 l0,71.68 L 440.32,357.12 z M 491.52,159.785c-23.839-6.584-41.841-24.566-48.425-48.425L 68.905,111.36
584
+ c-6.595,23.839-24.576,41.841-48.425,48.425L 20.48,288.215 c 23.849,6.595, 41.83,24.576, 48.425,48.425l 374.426,0 c 6.881-23.112, 25.078-41.308, 48.189-48.189L 491.52,159.785 z
585
+ " data-tags="finance" />
586
+ <glyph unicode="&#xe05c;" d="M 303.278,480L 71.68,480 l0-512 l 112.64,0 L 184.32,131.84 l 118.958,0 c 127.631,0, 177.091,101.079, 177.091,184.525C 480.369,399.38, 430.909,480, 303.278,480z M 272.425,234.24L 184.32,234.24 L 184.32,387.84 l 88.105,0
587
+ c 52.357,0, 99-11.551, 99-76.667C 371.415,245.658, 324.782,234.24, 272.425,234.24zM-163.84,469.76L-163.84,469.76L-163.84,469.76L-163.84,469.76z" data-tags="parking" />
588
+ <glyph unicode="&#xe05d;" d="M 185.344,228.68L 91.095,281.825L 123.853,339.272L 218.122,286.157 zM 373.453,179.651L 214.2,269.353L 197.827,240.599L 357.059,150.886 zM 392.786,168.745L 376.361,140.012L 458.486,93.788L 474.911,122.491 zM 370.668,140.012c-1.26-2.243-4.7-2.775-7.69-1.137l0,0c-2.98,1.679-4.301,4.864-3.031,7.137l 19.2,33.638
589
+ c 1.321,2.284, 4.762,2.836, 7.721,1.137l0,0c 2.939-1.679, 4.27-4.936, 3-7.219L 370.668,140.012zM 491.827,121.59c-3.267,1.802-6.871,2.642-10.353,2.54l-21.002-36.782c 1.69-3.082, 4.209-5.775, 7.526-7.578
590
+ c 9.257-5.243, 20.9-2.222, 25.989,6.676l 5.386,9.523C 504.474,104.929, 501.115,116.347, 491.827,121.59zM 227.236,297.226c-2.468-4.465-8.090-5.96-12.544-3.502l-82.493,46.51c-4.465,2.478-5.97,8.059-3.471,12.524l0,0
591
+ c 2.509,4.383, 8.141,5.949, 12.595,3.42l 82.473-46.449C 228.219,307.2, 229.796,301.609, 227.236,297.226L 227.236,297.226zM 238.797,317.42c-2.54-4.454-8.161-5.96-12.564-3.482l-82.524,46.5c-4.434,2.478-5.99,8.069-3.451,12.462l0,0
592
+ c 2.478,4.454, 8.11,6.001, 12.595,3.492l 82.493-46.459C 239.8,327.424, 241.316,321.823, 238.797,317.42L 238.797,317.42zM 169.083,195.113c-2.54-4.403-8.161-5.898-12.585-3.42l-82.555,46.51c-4.424,2.458-5.97,8.059-3.461,12.524l0,0
593
+ c 2.509,4.321, 8.212,5.949, 12.585,3.42l 82.514-46.51C 170.015,205.169, 171.551,199.567, 169.083,195.113L 169.083,195.113zM 180.613,215.378c-2.509-4.454-8.131-5.949-12.636-3.43L 85.484,258.406c-4.403,2.529-5.97,8.12-3.471,12.524l0,0
594
+ c 2.55,4.444, 8.172,5.949, 12.605,3.43l 82.483-46.459C 181.524,225.382, 183.122,219.771, 180.613,215.378L 180.613,215.378zM 42.179,132.649L 187.628,132.649L 187.628,115.927L 42.179,115.927zM 219.392,97.772c-0.932,5.581-5.755,9.861-11.622,9.861L 22.077,107.633 c-5.857,0-10.711-4.28-11.622-9.861L 10.24,97.772 l0-27.382 l 209.367,0 l0,27.382
595
+ L 219.392,97.772 z" data-tags="courthouse" />
596
+ <glyph unicode="&#xe05e;" d="M 419.84,469.76L 92.16,469.76 C 69.632,469.76, 51.2,451.328, 51.2,428.8l0-409.6 c0-22.528, 18.432-40.96, 40.96-40.96l 327.68,0 c 22.528,0, 40.96,18.432, 40.96,40.96L 460.8,428.8 C 460.8,451.328, 442.368,469.76, 419.84,469.76z M 174.080,60.16c0-11.264-9.216-20.48-20.48-20.48l-40.96,0
597
+ c-11.264,0-20.48,9.216-20.48,20.48l0,10.24 c0,11.264, 9.216,20.48, 20.48,20.48l 40.96,0 c 11.264,0, 20.48-9.216, 20.48-20.48L 174.080,60.16 z M 174.080,142.080c0-11.264-9.216-20.48-20.48-20.48l-40.96,0 c-11.264,0-20.48,9.216-20.48,20.48l0,10.24 c0,11.264, 9.216,20.48, 20.48,20.48l 40.96,0
598
+ c 11.264,0, 20.48-9.216, 20.48-20.48L 174.080,142.080 z M 174.080,224c0-11.264-9.216-20.48-20.48-20.48l-40.96,0 c-11.264,0-20.48,9.216-20.48,20.48l0,10.24 c0,11.264, 9.216,20.48, 20.48,20.48l 40.96,0 c 11.264,0, 20.48-9.216, 20.48-20.48L 174.080,224 z M 296.96,60.16c0-11.264-9.216-20.48-20.48-20.48
599
+ l-40.96,0 c-11.264,0-20.48,9.216-20.48,20.48l0,10.24 c0,11.264, 9.216,20.48, 20.48,20.48l 40.96,0 c 11.264,0, 20.48-9.216, 20.48-20.48L 296.96,60.16 z M 296.96,142.080c0-11.264-9.216-20.48-20.48-20.48l-40.96,0 c-11.264,0-20.48,9.216-20.48,20.48l0,10.24 c0,11.264, 9.216,20.48, 20.48,20.48l 40.96,0
600
+ c 11.264,0, 20.48-9.216, 20.48-20.48L 296.96,142.080 z M 296.96,224c0-11.264-9.216-20.48-20.48-20.48l-40.96,0 c-11.264,0-20.48,9.216-20.48,20.48l0,10.24 c0,11.264, 9.216,20.48, 20.48,20.48l 40.96,0 c 11.264,0, 20.48-9.216, 20.48-20.48L 296.96,224 z M 419.84,60.16c0-11.264-9.216-20.48-20.48-20.48
601
+ l-40.96,0 c-11.264,0-20.48,9.216-20.48,20.48l0,10.24 c0,11.264, 9.216,20.48, 20.48,20.48l 40.96,0 c 11.264,0, 20.48-9.216, 20.48-20.48L 419.84,60.16 z M 419.84,142.080c0-11.264-9.216-20.48-20.48-20.48l-40.96,0 c-11.264,0-20.48,9.216-20.48,20.48l0,10.24 c0,11.264, 9.216,20.48, 20.48,20.48l 40.96,0
602
+ c 11.264,0, 20.48-9.216, 20.48-20.48L 419.84,142.080 z M 419.84,224c0-11.264-9.216-20.48-20.48-20.48l-40.96,0 c-11.264,0-20.48,9.216-20.48,20.48l0,10.24 c0,11.264, 9.216,20.48, 20.48,20.48l 40.96,0 c 11.264,0, 20.48-9.216, 20.48-20.48L 419.84,224 z M 419.84,316.16c0-11.264-9.216-20.48-20.48-20.48
603
+ L 112.64,295.68 c-11.264,0-20.48,9.216-20.48,20.48L 92.16,398.080 c0,11.264, 9.216,20.48, 20.48,20.48l 286.72,0 c 11.264,0, 20.48-9.216, 20.48-20.48L 419.84,316.16 z" data-tags="accounting" />
604
+ <glyph unicode="&#xe05f;" d="M 409.6,285.44l0-40.96 L 112.64,244.48 l0,40.96 L 409.6,285.44 M 419.84,295.68L 102.4,295.68 l0-61.44 l 317.44,0 L 419.84,295.68 L 419.84,295.68zM 261.755,449.628L0,264.96l 61.44,0 l0-36.936 L 61.44,39.68 l 40.96,0 L 102.4,193.28 l 81.92,0 l0-153.6 l 26.931,0 L 460.8,39.68 l0,8.98 L 460.8,228.024 L 460.8,264.96 l 51.2,0 L 261.755,449.628z M 430.080,101.12L 235.52,101.12 l0,92.16 l 194.56,0 L 430.080,101.12 z M 430.080,224L 92.16,224 l0,81.92 l 337.92,0 L 430.080,224
605
+ z" data-tags="store" />
606
+ <glyph unicode="&#xe060;" d="M 512-32l-0.154,256.604c0,141.117-114.545,255.447-255.662,255.447c-141.117,0-255.662-114.412-255.662-255.539l 2.058-256.87L 61.44-32.215
607
+ l0,256.717 C 61.44,334.49, 146.043,423.639, 256,423.639c 109.978,0, 194.56-89.16, 194.56-199.148L 450.56-32 L 512-32 zM 339.937,60.918c0,0.276-0.297,0.778-0.942,1.72c0,0.266, 0.164,0.461, 0.492,0.635c 0.266,0.143, 0.451,0.307, 0.451,0.635
608
+ c 8.806,3.635, 16.804,8.090, 23.951,13.414c 7.148,5.345, 11.325,13.169, 13.804,23.511C 377.969,102.031, 378.88,104.817, 378.88,109.066L 378.88,322.601
609
+ c0,5.151-0.911,10.496-3.963,15.933c-3.031,5.53-6.523,10.476-11.162,14.868c-4.495,4.352-9.431,7.383-15.073,10.301
610
+ C 343.050,366.592, 337.787,367.36, 332.595,367.36L 317.44,367.36 L 194.56,367.36 l-14.766,0 c-4.874,0-10.117-0.686-15.77-3.43c-5.642-2.734-10.834-5.908-15.524-10.189
611
+ c-4.7-4.229-8.172-8.858-11.223-14.152C 134.267,334.193, 133.12,329.165, 133.12,323.942l0-216.719 c0-3.615, 0.553-7.455, 2.335-11.366
612
+ c 1.833-3.983, 3.901-7.7, 6.636-11.141c 2.744-3.564, 5.622-6.769, 8.827-9.636c 3.195-2.888, 6.226-5.243, 9.298-7.045
613
+ c 1.485-0.625, 4.127-1.577, 7.956-2.775c 3.779-1.219, 5.519-1.946, 5.233-2.519L 110.889-32l 36.465,0 l 45.65,61.44L 318.976,29.44 l 45.588-61.44l 36.925,0
614
+ L 339.937,60.918z M 204.8,346.88c0,5.632, 4.608,10.24, 10.24,10.24l 81.92,0 c 5.632,0, 10.24-4.608, 10.24-10.24l0-10.24 c0-5.632-4.608-10.24-10.24-10.24l-81.92,0 c-5.632,0-10.24,4.608-10.24,10.24L 204.8,346.88 z M 164.495,296.858
615
+ c 1.362,2.888, 2.427,5.509, 4.547,7.977c 2.161,2.437, 4.321,5.939, 7.199,7.465C 179.118,313.836, 181.77,316.16, 184.812,316.16L 194.56,316.16 l 122.88,0 l 9.267,0
616
+ c 2.734,0, 5.448-2.202, 8.202-3.359c 2.744-1.229, 5.243-3.717, 7.547-5.827c 2.273-2.12, 3.174-4.833, 4.588-7.26
617
+ C 348.385,297.339, 348.16,294.328, 348.16,291.594l0-48.374 c0-2.765, 0.133-5.335-1.362-7.936c-1.516-2.662-3.052-4.956-5.509-6.932
618
+ c-2.447-1.935-4.772-2.437-7.506-3.615C 331.039,223.447, 328.52,224, 325.816,224L 185.723,224 c-0.338,0-1.096-0.952-2.304-0.707
619
+ c-1.208,0.328-2.15,0.092-2.765,0.399c-5.151,0.901-8.315,3.369-12.288,7.936C 164.424,236.227, 163.84,240.916, 163.84,246.405l0,41.513
620
+ C 163.84,290.959, 163.144,293.949, 164.495,296.858z M 203.274,99.482c-4.7-4.864-10.588-7.291-17.551-7.291c-6.994,0-12.708,2.427-17.132,7.291
621
+ c-4.424,4.854-6.615,10.834-6.615,17.807c0,6.39, 2.304,11.93, 6.851,16.63c 4.557,4.731, 10.199,7.096, 16.896,7.096
622
+ c 6.963,0, 12.841-2.243, 17.551-6.584c 4.721-4.485, 7.086-10.26, 7.086-17.623C 210.36,110.111, 207.995,104.325, 203.274,99.482z M 307.753,99.482
623
+ c-4.69,4.854-7.055,10.834-7.055,17.807c0,7.025, 2.488,12.667, 7.516,17.152c 5.048,4.342, 10.885,6.584, 17.613,6.584
624
+ c 6.943,0, 12.657-2.365, 17.060-7.096c 4.434-4.7, 6.646-10.24, 6.646-16.63c0-6.984-2.263-12.964-6.871-17.807
625
+ c-4.547-4.864-10.332-7.291-17.336-7.291C 318.331,92.191, 312.494,94.618, 307.753,99.482z" data-tags="subway_station" />
626
+ <glyph unicode="&#xe061;" d="M 122.88,469.76L 215.040,469.76L 215.040,398.080L 122.88,398.080zM 314.604,174.623c-8.94,0-17.644,9.124-17.644,18.125L 296.96,377.6 l 145.275,0 l 59.689-254.751L 501.76,107.735L 501.76-5.478 c0-8.704-7.24-16.282-15.862-16.282
627
+ L 348.467-21.76 C 339.937-21.76, 337.92-14.182, 337.92-5.478L 337.92,172.8 l-20.48,0 M 197.437,174.418c 8.868,0, 17.603,8.796, 17.603,17.859L 215.040,377.6 L 69.857,377.6 L 10.097,122.706L 10.24,107.264l0-113.183 C 10.24-14.664, 17.48-21.76, 26.092-21.76l 137.267,0
628
+ C 172.104-21.76, 174.080-14.664, 174.080-5.919L 174.080,172.8 l 20.48,0 M 235.52,377.6L 276.48,377.6L 276.48,203.52L 235.52,203.52zM 296.96,469.76L 399.36,469.76L 399.36,398.080L 296.96,398.080z" data-tags="natural_feature" />
629
+ <glyph unicode="&#xe062;" d="M 261.673,109.599c 36.874-172.145, 244.931-31.222, 38.298,88.689c 227.738-132.178, 228.28,183.46, 0.461,51.384
630
+ c 227.82,132.065-44.206,289.946-44.257,25.692c 0.051,264.253-272.015,106.496-44.308-25.692c-227.707,132.198-227.973-183.45-0.195-51.364
631
+ c-206.746-119.849, 0.84-260.936, 37.724-88.443L 261.673,109.599z M 228.772,223.969c0,15.217, 12.268,27.525, 27.382,27.525
632
+ c 15.124,0, 27.372-12.308, 27.372-27.525c0-15.196-12.247-27.525-27.372-27.525C 241.050,196.454, 228.772,208.773, 228.772,223.969z" data-tags="florist" />
633
+ <glyph unicode="&#xe063;" d="M 500.675,324.823L 460.38,8.96L 324.28,8.96 l-40.131,317.44l 166.154,0 l 32.84,113.428L 501.76,434.217l-31.508-109.158L 500.675,324.823zM 264.909,142.080c0,0, 5.089,40.96-65.485,40.96L 87.030,183.040 c-70.472,0-65.485-40.96-65.485-40.96L 264.909,142.080 zM 21.545,49.92c0,0-4.987-40.96, 65.485-40.96l 112.404,0 c 70.574,0, 65.485,40.96, 65.485,40.96L 21.545,49.92 zM 254.351,70.4c 11.551,0, 20.879,11.407, 20.879,25.59c0,14.264-9.329,25.61-20.879,25.61L 31.13,121.6
634
+ C 19.63,121.6, 10.24,110.254, 10.24,95.99C 10.24,81.807, 19.63,70.4, 31.13,70.4L 254.351,70.4 z" data-tags="food" />
635
+ <glyph unicode="&#xe064;" d="M-163.84,469.76L-163.84,469.76L-163.84,469.76L-163.84,469.76zM 481.28,387.84L 327.68,387.84 c0,0-10.24-81.92, 10.24-163.84c 8.233-13.722, 28.57-21.115, 51.2-22.989L 389.12,101.12 l-3.41,0 L 348.16,70.4l 112.64,0 l-36.7,30.72L 419.84,101.12 l0,100.639
636
+ c 21.709,2.816, 41.605,10.383, 51.2,22.241C 491.52,295.68, 481.28,387.84, 481.28,387.84z M 471.040,326.4L 337.92,326.4 l0,51.2 l 133.12,0 L 471.040,326.4 zM 220.16,101.12L 163.84,101.12 l0,87.040 L 276.48,357.12L 10.24,357.12 l 112.64-168.96L 122.88,101.12 L 66.56,101.12 C 58.071,101.12, 51.2,94.239, 51.2,85.76S 58.071,70.4, 66.56,70.4l 153.6,0 c 8.489,0, 15.36,6.881, 15.36,15.36
637
+ S 228.649,101.12, 220.16,101.12z" data-tags="night_club" />
638
+ <glyph unicode="&#xe065;" d="M 256,469.76l 72.52-123.965L 471.040,345.764l-71.25-121.754L 471.040,102.216l-142.5-0.020L 256-21.76l-72.53,123.955L 40.96,102.216l 71.25,121.795L 40.96,345.764
639
+ l 142.52,0.031L 256,469.76z M 163.041,223.898L 209.009,142.080l 93.85,0 l 46.090,81.818L 302.868,305.92l-93.706,0 L 163.041,223.898z M 353.679,142.080l 41.38,0 l-20.675,35.359
640
+ L 353.679,142.080z M 116.91,142.080l 41.39,0 l-20.705,35.369L 116.91,142.080z M 235.428,346.88l 41.39,0 l-20.695,35.348L 235.428,346.88z M 374.385,270.582L 395.059,305.92l-41.38,0
641
+ L 374.385,270.582z M 137.595,270.561L 158.29,305.92l-41.39,0 L 137.595,270.561z M 256.123,65.792L 276.818,101.12L 235.418,101.12 L 256.123,65.792z" data-tags="synagogue" />
642
+ <glyph unicode="&#xe066;" d="M 467.958,232.755l-80.794,136.12C 383.949,374.856, 376.187,377.6, 369.541,377.6L 296.96,377.6 L 296.96,439.040 c0,11.264-9.216,20.48-20.48,20.48l-51.2,0 c-11.264,0-20.48-9.216-20.48-20.48l0-61.44 l-61.030,0
643
+ c-6.656,0-14.746-2.744-17.961-8.724L 44.698,231.68C 31.375,231.68, 20.48,221.573, 20.48,207.903l0-124.303 C 20.48,69.929, 31.375,60.16, 44.698,60.16L 71.68,60.16 l0-38.707
644
+ C 71.68,0.932, 85.279-11.52, 105.257-11.52l 12.114,0 C 137.349-11.52, 153.6,0.932, 153.6,21.453L 153.6,60.16 l 204.8,0 l0-38.707 c0-20.521, 17.551-32.973, 37.53-32.973l 12.124,0
645
+ C 428.032-11.52, 440.32,0.932, 440.32,21.453L 440.32,60.16 l 28.293,0 C 481.925,60.16, 491.52,69.929, 491.52,83.599L 491.52,207.903 C 491.52,221.573, 481.28,232.755, 467.958,232.755z M 87.091,133.325
646
+ c-16.722,0-30.29,13.906-30.29,31.068c0,17.172, 13.558,31.078, 30.29,31.078s 30.28-13.906, 30.28-31.078
647
+ C 117.371,147.231, 103.823,133.325, 87.091,133.325z M 105.257,234.24l 55.132,96.020C 163.379,336.384, 171.274,336.64, 177.93,336.64l 157.45,0
648
+ c 6.656,0, 14.551-0.256, 17.531-6.38L 408.054,234.24L 105.257,234.24 z M 426.209,133.325c-16.712,0-30.28,13.906-30.28,31.068
649
+ c0,17.172, 13.568,31.078, 30.28,31.078c 16.722,0, 30.29-13.906, 30.29-31.078C 456.499,147.231, 442.931,133.325, 426.209,133.325z" data-tags="taxi_stand" />
650
+ <glyph unicode="&#xe067;" d="M 499.292,395.735C 496.814,406.876, 496.66,408.32, 471.644,408.32l-25.149,0 l-5.028,13.814c-6.636,20.040-28.938,39.137-51.159,44.708
651
+ c-12.861,3.215-58.675,3.779-170.486,3C 79.258,468.859, 65.71,468.060, 51.804,461.804C 20.675,447.816, 3.523,412.549, 12.718,381.491
652
+ c 6.42-21.647, 19.917-37.673, 39.086-46.285c 13.896-6.246, 27.443-6.902, 168.008-7.875c 111.8-0.788, 157.624,0.102, 170.476,3.328
653
+ c 22.292,5.581, 44.534,25.364, 51.231,45.588c 5.048,15.206, 5.274,15.36, 21.76,14.275l 16.64-1.096l 1.106-52.49l 1.096-52.48l-48.773-11.52
654
+ c-26.788-6.339-60.344-14.438-74.547-18.012c-14.193-3.564-48.589-11.93-76.431-18.586l-50.627-12.114l-0.010-26.583
655
+ c-0.010-26.419, 2.304-26.665-13.476-39.854L 204.8,144.527l0-83.149 l0,0L 204.8-21.76 l 34.857,0 L 276.48-21.76 l0,83.139 l0,83.149 l-14.653,13.435
656
+ c-15.626,13.066-15.34,14.019-14.152,34.12l 1.546,20.664l 18.063,4.495c 9.841,2.488, 41.185,10.107, 69.581,16.978
657
+ c 28.396,6.851, 77.148,18.616, 108.288,26.153L 501.76,274.053l0,54.559 C 501.76,358.595, 500.644,389.55, 499.292,395.735z M 253.696,22.927
658
+ c0-8.622-1.628-10.404-10.394-11.315c-11.039-1.126-15.811,4.342-13.455,15.401c 0.922,4.311, 4.721,6.175, 12.585,6.175
659
+ C 252.426,33.178, 253.696,32.010, 253.696,22.927z" data-tags="painter" />
660
+ <glyph unicode="&#xe068;" d="M 354.724,92.856c0,0.348-0.399,1.065-1.157,2.212c0,0.328, 0.215,0.625, 0.584,0.829c 0.358,0.215, 0.584,0.44, 0.584,0.829
661
+ c 10.762,4.444, 20.541,9.943, 29.297,16.425c 8.745,6.554, 14.602,16.118, 17.623,28.764c 0.317,1.495, 1.116,4.905, 2.202,10.117L 403.855,413.368
662
+ c0,6.308-1.884,12.851-5.601,19.507c-3.717,6.769-8.356,12.82-13.978,18.196c-5.56,5.325-11.756,9.841-18.678,13.425
663
+ C 358.676,468.019, 352.082,469.76, 345.743,469.76L 158.71,469.76 c-5.97,0-12.411-1.638-19.302-4.987c-6.912-3.359-13.251-7.649-18.985-12.872
664
+ c-5.755-5.171-10.516-11.059-14.234-17.541c-3.727-6.605-5.601-12.974-5.601-19.354l0-265.226 c0-4.465, 1.178-9.124, 3.348-13.957
665
+ c 2.253-4.854, 5.038-9.39, 8.376-13.629c 3.338-4.362, 7.014-8.264, 10.926-11.776s 7.711-6.42, 11.448-8.643
666
+ c 1.802-0.758, 5.11-1.925, 9.8-3.41c 4.588-1.475, 6.738-2.57, 6.39-3.287L 74.322-21.105l 44.657,0 l 55.88,80.988l 154.163,0 l 55.818-80.988L 430.080-21.105
667
+ L 354.724,92.856z M 207.811,447.447c0,1.874, 0.891,3.789, 2.796,5.888c 1.833,2.038, 3.686,3.021, 5.581,3.021l 71.496,0
668
+ c 0.717,0, 2.263-0.717, 4.485-2.181c 2.202-1.495, 3.318-2.98, 3.318-4.465l0-27.361 c0-1.874-0.942-3.594-2.775-5.018
669
+ c-1.884-1.536-3.584-2.314-5.018-2.314l-72.038,0 c-1.167,0.778-1.874,1.331-2.273,1.772c-1.075,0.717-2.324,1.7-3.615,3.082
670
+ c-1.311,1.249-1.956,2.621-1.956,4.106L 207.811,447.447 z M 135.752,370.934c0,3.717, 0.881,7.363, 2.529,10.916c 1.659,3.533, 3.82,6.758, 6.42,9.779
671
+ c 2.621,2.99, 5.693,5.335, 9.196,7.209c 3.564,1.884, 7.219,2.806, 10.936,2.806l 173.701,0 c 3.297,0, 6.656-0.778, 10.004-2.191
672
+ c 3.359-1.495, 6.42-3.584, 9.236-6.164C 360.581,390.707, 362.783,387.84, 364.483,384.87c 1.659-2.908, 2.478-6.103, 2.478-9.452l0-59.218
673
+ c0-3.359-0.901-6.533-2.765-9.728c-1.864-3.246-4.28-6.052-7.26-8.468c-3.021-2.376-6.124-4.342-9.503-5.775
674
+ c-3.338-1.587-6.697-2.253-10.025-2.253L 165.949,289.976 c-0.41,0-1.341,0.174-2.826,0.502c-1.475,0.389-2.621,0.758-3.369,1.157
675
+ c-6.298,1.085-11.868,4.454-16.722,10.056c-4.854,5.591-7.281,11.715-7.281,18.401L 135.752,370.934 z M 187.453,140.268
676
+ c-5.765-5.949-12.984-8.919-21.504-8.919c-8.571,0-15.565,2.97-20.992,8.919c-5.386,5.939-8.079,13.251-8.079,21.821
677
+ c0,7.813, 2.806,14.582, 8.407,20.337c 5.571,5.786, 12.462,8.714, 20.664,8.714c 8.52,0, 15.729-2.765, 21.504-8.079
678
+ c 5.775-5.458, 8.653-12.554, 8.653-21.555C 196.106,153.303, 193.229,146.207, 187.453,140.268z M 315.341,140.268
679
+ c-5.755,5.939-8.684,13.251-8.684,21.821c0,8.581, 3.062,15.514, 9.216,20.972c 6.164,5.325, 13.322,8.079, 21.545,8.079
680
+ c 8.499,0, 15.524-2.918, 20.92-8.714c 5.376-5.755, 8.12-12.534, 8.12-20.337c0-8.571-2.816-15.882-8.397-21.821
681
+ c-5.622-5.949-12.657-8.919-21.258-8.919C 328.264,131.348, 321.096,134.318, 315.341,140.268z" data-tags="train_station" />
682
+ <glyph unicode="&#xe069;" d="M 256,260.116c 28.713,0, 52.818-19.456, 59.628-45.763c 8.561-32.983, 7.404-69.13, 45.036-87.9c 33.403-11.366, 46.039-25.651, 46.039-63.949
683
+ c0-30.566-26.153-63.058-59.873-67.113c-37.704-5.663-67.052,1.741-90.839,15.299c-23.788-13.558-53.146-20.972-90.798-15.299
684
+ c-33.741,4.055-59.884,36.659-59.884,67.113c0,37.478, 13.486,53.34, 46.828,64.205c 41.032,20.961, 35.523,57.702, 44.677,89.262
685
+ C 204.216,241.469, 227.912,260.116, 256,260.116L 256,260.116z M 443.976,282.89c-10.168,8.837-51.671-25.661-64.727-42.721
686
+ c-7.936-9.103-12.872-21.617-12.872-35.42c0-27.761, 19.866-50.268, 44.308-50.268c 18.596,0, 34.509,12.933, 41.093,31.324
687
+ C 464.568,218.88, 465.275,264.397, 443.976,282.89L 443.976,282.89z M 68.004,282.89C 46.735,264.397, 47.421,218.88, 60.232,185.805
688
+ c 6.584-18.391, 22.487-31.324, 41.073-31.324c 24.463,0, 44.308,22.508, 44.308,50.268c0,13.804-4.925,26.317-12.861,35.42
689
+ C 119.685,257.229, 78.193,291.727, 68.004,282.89L 68.004,282.89z M 310.63,464.21c 103.301-17.531, 96.051-191.508, 13.343-177.49
690
+ c-23.859,4.055-41.574,25.784-44.268,51.743C 276.972,364.861, 270.817,470.948, 310.63,464.21L 310.63,464.21z M 201.37,464.21
691
+ c 39.823,6.748, 33.659-99.338, 30.925-125.737c-2.693-25.969-20.388-47.688-44.247-51.743C 105.318,272.691, 98.079,446.679, 201.37,464.21z" data-tags="pet_store" />
692
+ <glyph unicode="&#xe06a;" d="M 461.844,376.781c 5.622,5.622, 13.537,11.735, 21.617,19.108l 7.465,6.257l-20.347,22.835L 463.933,418.765
693
+ c-28.119-25.549-45.036-40.991-53.299-72.643c-8.202-31.468-8.53-63.324-7.67-93.102c 0.901-30.7, 2.058-50.954, 10.639-73.544l 3.236-8.325
694
+ c 8.233-20.716, 20.695-52.009, 20.695-92.262c0-48.63-19.702-73.298-58.552-73.298c-35.348,0-54.415,23.593-56.648,70.205
695
+ c-1.014,20.654, 4.782,46.152, 10.875,73.093c 5.151,22.743, 10.455,46.275, 13.066,71.25c 2.888,27.535-0.727,47.217-11.305,59.034
696
+ C 321.393,294.339, 300.493,295.68, 282.081,295.68L 276.48,295.68 L 276.48,437.617 C 276.48,449.905, 267.561,459.52, 255.345,459.52L 43.981,459.52 C 31.785,459.52, 20.48,449.905, 20.48,437.617L 20.48-11.52 l 256,0 L 276.48,264.96 l 5.612,0
697
+ c 12.595,0, 25.641-1.413, 30.075-6.359c 2.376-2.662, 6.021-11.284, 3.615-34.54c-2.427-23.183-7.567-46.111-12.524-67.953
698
+ c-6.564-29.071-12.79-56.719-11.561-81.644c 3.021-63.273, 34.857-99.635, 87.286-99.635c 55.88,0, 89.242,38.892, 89.242,104.12
699
+ c0,46.172-14.285,82.145-22.856,103.7l-3.092,7.854c-6.164,16.271-7.547,31.355-8.397,57.672c 9.861,0.225, 21.801,0.461, 27.167,0.461
700
+ c 12.278,0, 18.452,7.199, 21.084,19.671c 1.536,7.27-0.84,16.804-0.84,34.109l0,4.588 C 481.28,352.748, 474.286,365.814, 461.844,376.781z M 245.76,285.44L 51.2,285.44 L 51.2,418.56 l 194.56,0
701
+ L 245.76,285.44 z M 450.56,302.377c0-8.94, 2.355-17.49, 2.058-22.927c-6.124-0.092-13.169-0.256-20.337-0.42c 0.266,19.753, 2.458,39.864, 7.506,59.228
702
+ c 1.372,5.161, 0.963,9.708, 3.031,13.947C 448.276,346.952, 450.56,339.077, 450.56,306.985L 450.56,302.377 z" data-tags="gas_station" />
703
+ <glyph unicode="&#xe06b;" d="M 258.478,458.609L 10.24,244.48l 61.44,0 l0-256 l 368.64,0 L 440.32,244.48 l 61.44,0 L 258.478,458.609z M 348.16,172.8l-71.68,0 l0-123.781 L 276.009,49.92l-48.896,0 L 225.28,49.019L 225.28,172.8 l-61.44,0 l0,40.96 l 61.44,0 l0,92.16 l 51.2,0 l0-92.16 l 71.68,0 L 348.16,172.8 z" data-tags="funeral_home" />
704
+ <glyph unicode="&#xe06c;" d="M 256,469.76C 154.235,469.76, 71.68,388.772, 71.68,288.881L 71.68-21.76 l 368.64,0 L 440.32,288.881 C 440.32,388.772, 357.827,469.76, 256,469.76z" data-tags="cemetery" />
705
+ <glyph unicode="&#xe06d;" d="M 323.277,171.192c0,0-19.22,48.056-37.868,93.942c0,0-6.246,27.576-1.362,64.174c0,0, 13.271,55.941, 5.888,82.391
706
+ c0,0-11.336,22.661-34.888,24.238c0,0-32.502-2.294-38.574-33.915c0,0-1.587-18.227, 3.461-39.26c0,0, 18.196-69.601-1.761-115.026
707
+ c0,0-27.843-58.173-30.054-71.496c0,0-10.424-56.996-0.164-98.97c0,0, 21.545-71.813, 37.315-95.601c0,0, 31.99-8.161, 59.433,0.727
708
+ c0,0, 32.901,53.268, 39.475,101.407C 324.198,83.804, 332.411,134.666, 323.277,171.192zM 425.769,205.025c0,0-19.21,48.067-37.939,93.932c0,0-6.236,27.587-1.372,64.123c0,0, 13.292,55.941, 5.888,82.452
709
+ c0,0-11.284,22.661-34.857,24.218c0,0-32.512-2.284-38.574-33.894c0,0-1.597-18.237, 3.512-39.27c0,0, 18.207-69.663-1.812-115.016
710
+ c0,0-4.321-9.124-9.708-20.818c 17.48-42.957, 34.273-84.92, 34.273-84.92l 0.266-0.727l 0.174-0.717c 9.605-38.205, 1.434-89.569, 1.137-91.474
711
+ c-3.113-22.876-11.735-46.264-20.244-65.331c 0.379-0.686, 0.85-1.475, 1.26-2.079c0,0, 31.959-8.172, 59.433,0.778
712
+ c0,0, 32.881,53.197, 39.465,101.366C 426.67,117.658, 434.913,168.509, 425.769,205.025zM 196.864,252.099c 1.085,2.386, 1.987,5.018, 2.836,7.598c-4.997,12.411-10.445,25.743-15.821,39.035c0,0-6.308,27.648-1.372,64.174
713
+ c0,0, 13.281,55.89, 5.908,82.401c0,0-11.336,22.671-34.898,24.228c0,0-32.532-2.345-38.564-33.833c0,0-1.577-18.309, 3.523-39.281
714
+ c0,0, 18.207-69.642-1.812-115.067c0,0-27.843-58.184-30.065-71.496c0,0-10.435-57.006-0.164-98.97c0,0, 21.545-71.823, 37.304-95.549
715
+ c0,0, 32-8.233, 59.433,0.737c0,0, 0.635,0.993, 1.71,2.847c-10.035,26.399-18.248,53.576-18.872,55.767c-10.67,43.745-0.399,101.079,0,103.27
716
+ C 168.325,192.133, 192.215,242.473, 196.864,252.099z" data-tags="bowling_alley" />
717
+ <glyph unicode="&#xe06e;" d="M 83.446,315.525l 62.054,0 l-0.543-36.608l-61.512-55.357L 83.446,315.525 L 83.446,315.525zM 255.048,335.79L 10.24,119.869L 36.045,90.88l 220.006,194.089L 476.017,90.88L 501.76,119.869L 256.993,335.79L 256,336.64L 255.048,335.79z" data-tags="roofing_contractor" />
718
+ <glyph unicode="&#xe06f;" d="M 359.434,372.951c 19.241,0, 34.806,16.005, 34.806,35.789c0,19.661-15.575,35.676-34.806,35.676c-19.098,0-34.683-16.005-34.683-35.676
719
+ C 324.751,388.956, 340.326,372.951, 359.434,372.951zM 385.3,364.943l-50.698,0 l-86.405,88.893c-6.748,7.301-17.961,7.649-25.068,0.594c-7.096-6.943-7.444-18.483-0.676-25.784
720
+ l 90.296-93.010l0-308.244 c0-11.182, 8.704-20.122, 19.456-20.122c 10.875,0, 19.569,8.94, 19.569,20.122L 351.775,194.58 l 15.79,0 l 0.123-167.199
721
+ c0-11.182, 8.806-20.122, 19.558-20.122c 10.783,0, 19.466,8.94, 19.466,20.122L 406.6,335.616l 90.307,93.010c 6.748,7.301, 6.4,18.842-0.696,25.784
722
+ c-7.086,7.055-18.309,6.717-25.068-0.594L 385.3,364.943zM 201.605,228.956c-5.263,5.54-12.483,8.827-20.48,8.827l-72.694,0 c-8.008,0-15.217-3.297-20.367-8.827l-72.919-75.008
723
+ c-6.748-7.301-6.513-18.831, 0.584-25.784c 7.086-6.943, 18.432-6.707, 25.068,0.594l 56.535,58.163l0-77.701 L 33.925,109.22
724
+ c-11.663,0-21.074-9.646-21.074-21.668c0-6.236, 2.294-11.776, 6.42-15.78l 71.414-73.462c 6.298-9.544, 18.657-12.605, 28.508-6.707
725
+ c 10.404,6.113, 13.855,19.651, 7.895,30.239l-40.745,41.81l 0.799-0.113l 116.972,0 l-40.858-41.8c-5.837-10.598-2.406-24.136, 7.885-30.249
726
+ c 9.851-5.898, 22.333-2.847, 28.631,6.697l 71.414,73.462c 4.106,4.014, 6.41,9.554, 6.41,15.78c0,12.022-9.39,21.658-21.053,21.658l-63.304,0
727
+ l0,76.892 l 55.511-57.334c 6.758-7.311, 17.961-7.547, 25.057-0.594c 7.096,6.943, 7.342,18.483, 0.584,25.774L 201.605,228.956zM 145.531,245.443c 19.108,0, 34.56,15.995, 34.56,35.676c0,19.784-15.452,35.676-34.56,35.676c-19.128,0-34.703-15.892-34.703-35.676
728
+ C 110.828,261.437, 126.413,245.443, 145.531,245.443z" data-tags="physiotherapist" />
729
+ <glyph unicode="&#xe070;" d="M 117.371,469.76c-13.957,0-25.211-11.54-25.211-25.866l0-25.866 l0-25.876 l0-155.208 l0-232.817
730
+ c0-12.923, 12.605-25.876, 25.211-25.876c 12.595,0, 25.201,12.964, 25.201,25.876l0,265.155 c 8.612,3.758, 16.988,6.472, 25.211,6.472
731
+ c 50.412,0, 124.774-64.686, 176.445-64.686c 22.026,0, 53.565,8.919, 75.612,25.876l0,181.084 c-25.006-19.241-50.34-38.81-75.612-38.81
732
+ c-50.412,0-125.86,64.676-176.445,64.676c-8.499,0-16.794-1.556-25.211-3.236l0,3.236 C 142.572,458.22, 131.318,469.76, 117.371,469.76z" data-tags="embassy" />
733
+ <glyph unicode="&#xe071;" d="M 79.288,256.768l 35.686,0 l0-229.376 l 53.545,0 L 168.52,224 l 53.545,0 l0-196.608 l 53.535,0 L 275.599,224 l 53.555,0 l0-196.608 l 53.545,0 L 382.7,256.768 l 35.676,0 c 9.861,0, 17.859,7.332, 17.859,16.384
734
+ c0,5.468-2.949,10.281-7.444,13.251l 0.031,0.031l-0.266,0.154c-0.154,0.102-0.317,0.184-0.461,0.276l-170.342,88.156L 257.751,400.845
735
+ c 31.457-14.459, 57.354,10.445, 98.15-4.526L 355.901,453.366 c-40.817,14.971-66.703-9.912-98.15,4.536L 257.751,461.568 c0,4.536-3.983,8.192-8.919,8.192
736
+ S 239.923,466.104, 239.923,461.568l0-86.548 L 69.581,286.884c-0.154-0.092-0.307-0.195-0.461-0.276l-0.256-0.174l0-0.031
737
+ c-4.475-2.97-7.414-7.793-7.414-13.251C 61.44,264.1, 69.437,256.768, 79.288,256.768zM 97.126,10.998L 61.44-21.76L 436.244-21.76L 400.538,10.998 z" data-tags="city_hall" />
738
+ <glyph unicode="&#xe072;" d="M 421.499,224L 93.614,224 c-9.554,0-17.418,8.212-17.418,17.551c0,1.556, 0.287,3.318, 0.604,4.731l 17.449,121.846
739
+ C 95.734,376.044, 102.861,377.6, 111.391,377.6l 292.383,0 c 8.468,0, 15.657-1.423, 17.121-9.308l 17.449-124.068c 0.266-1.444, 0.614-2.294, 0.614-3.85
740
+ C 438.948,231.035, 431.043,224, 421.499,224z M 408.381,87.347c-18.463,0-33.434,14.531-33.434,32.645c0,17.992, 14.971,32.502, 33.434,32.502
741
+ c 18.34,0, 33.341-14.51, 33.341-32.502C 441.723,101.878, 426.721,87.347, 408.381,87.347z M 106.291,87.347c-18.33,0-33.311,14.531-33.311,32.645
742
+ c0,17.992, 14.981,32.502, 33.311,32.502c 18.514,0, 33.464-14.51, 33.464-32.502C 139.756,101.878, 124.805,87.347, 106.291,87.347z M 163.84,449.28l 204.8,0 l0-30.72 L 163.84,418.56
743
+ C 143.36,418.56, 143.36,449.28, 163.84,449.28z M 452.628,402.278c-5.98,28.805-23.45,40.407-51.948,51.999c-28.447,11.551-94.372,25.395-143.954,25.395
744
+ c-49.797,0-116.060-13.855-144.538-25.395C 83.702,442.675, 66.519,431.084, 60.59,402.278L 40.96,241.93L 40.96,19.2 l 30.72,0 l0-20.48 c0-40.96, 51.2-40.96, 51.2,0l0,20.48 l 256,0 l0-20.48 c0-40.96, 61.44-40.96, 61.44,0l0,20.48 l 30.72,0
745
+ L 471.040,241.93 L 452.628,402.278z" data-tags="bus_station" />
746
+ <glyph unicode="&#xe073;" d="M 175.104,213.76l 152.269,0 l-50.104,133.12l-51.948,0 L 175.104,213.76z M 92.16,346.88L 92.16,387.84 l 327.68,0 l0-40.96 l-80.599,0 l 50.227-133.12L 512,213.76 l0-40.96 L 408.197,172.8 l 58.665-143.36l-56.924,0 l-58.655,143.36L 161.608,172.8
747
+ L 103.219,29.44L 46.285,29.44 l 58.337,143.36L0,172.8 l0,40.96 l 123.31,0 l 50.186,133.12L 92.16,346.88 z" data-tags="park" />
748
+ <glyph unicode="&#xe074;" d="M 471.040,152.32l0-81.92 l 40.96,0 L 512,193.28 L 40.96,193.28 L 40.96,360.602 c0,11.5-8.899,20.91-20.48,20.91l0,0c-11.54,0-20.48-9.4-20.48-20.91L0,70.4 l 40.96,0 l0,81.92 L 471.040,152.32 zM 105.779,276.716c 20.9,0, 37.755,16.927, 37.755,37.827c0,20.756-16.855,37.632-37.755,37.632c-20.869,0-37.714-16.865-37.714-37.632
749
+ C 68.065,293.652, 84.91,276.716, 105.779,276.716zM 512,224l-0.143,49.879c-0.133,16.445-13.926,26.808-30.095,28.764L 185.242,331.653c-0.532,0.143-1.71,0.092-2.202,0.092
750
+ c-10.301,0-19.2-8.54-19.2-18.79L 163.84,254.72 L 87.521,254.72 c-10.353,0-18.698-5.12-18.698-15.35C 68.823,228.977, 77.169,224, 87.521,224L 512,224 z" data-tags="lodging" />
751
+ <glyph unicode="&#xe075;" d="M 61.44-6.4c0-12.626, 7.864-20.48, 20.48-20.48c 12.646,0, 20.48,7.854, 20.48,20.48L 102.4,183.040 l 20.48,0 l0-189.44 c0-12.605, 7.854-20.48, 20.48-20.48c 12.626,0, 20.48,7.854, 20.48,20.48L 163.84,316.16 l 10.24,0 l0-115.855
752
+ c0-24.525, 30.781-24.525, 30.72,0L 204.8,324.751 C 204.8,351.846, 185.283,367.36, 153.6,367.36L 71.68,367.36 c-28.877,0-51.2-12.483-51.2-41.851L 20.48,193.28 c0-20.48, 30.72-20.48, 30.72,0L 51.2,316.16 l 10.24,0 L 61.44-6.4 zM 470.149,147.2l-60.508,166.267c-0.225,0.522-0.348,1.106-0.348,1.71c0,2.427, 2.038,4.393, 4.577,4.393
753
+ c 2.161,0, 3.973-1.444, 4.454-3.369L 459.459,208.64c 2.734-6.154, 13.978-10.24, 21.371-10.24c 9.882,0, 10.906,19.405, 10.691,20.48l-41.134,103.496
754
+ C 446.812,346.143, 422.81,367.36, 395.418,367.36L 341.811,367.36 c-27.392,0-53.166-21.217-56.75-44.984l-39.291-104.776c-0.891-2.038,0-19.845, 10.691-19.845
755
+ c 8.305,0, 19.354,3.215, 21.361,10.557l 39.68,108.175c 0.635,1.7, 2.345,2.99, 4.321,2.99c 2.519,0, 4.557-1.925, 4.557-4.342
756
+ c0-0.553-0.092-1.065-0.276-1.546l-58.962-166.41c-0.123-0.492,0-12.288,0-12.79c0-3.543, 8.561-12.8, 12.268-12.8L 317.44,121.59 l0-128.973
757
+ c0-10.65, 9.38-19.507, 20.48-19.507s 20.48,8.868, 20.48,19.507L 358.4,126.812 c0,2.898, 20.48,2.806, 20.48-0.092l0-133.12 c0-10.65, 9.39-20.48, 20.48-20.48c 11.121,0, 20.48,9.841, 20.48,20.48L 419.84,121.6 l 39.619,0
758
+ c 3.707,0, 10.691,9.257, 10.691,12.8C 470.149,135.219, 470.446,146.493, 470.149,147.2zM 69.12,427.52A42.24,42.24 180 1 1 153.6,427.52A42.24,42.24 180 1 1 69.12,427.52zM 325.12,427.52A42.24,42.24 180 1 1 409.6,427.52A42.24,42.24 180 1 1 325.12,427.52z" data-tags="toilet" />
759
+ <glyph unicode="&#xe076;" d="M 10.24,224A245.76,245.76 180 1 1 501.76,224A245.76,245.76 180 1 1 10.24,224z" data-tags="circle" />
760
+ <glyph unicode="&#xe077;" d="M 501.76,60.16c0-45.056-36.864-81.92-81.92-81.92L 92.16-21.76 c-45.056,0-81.92,36.864-81.92,81.92L 10.24,387.84 c0,45.056, 36.864,81.92, 81.92,81.92l 327.68,0 c 45.056,0, 81.92-36.864, 81.92-81.92L 501.76,60.16 z" data-tags="square-rounded" />
761
+ <glyph unicode="&#xe078;" d="M 10.24,469.76L 501.76,469.76L 501.76-21.76L 10.24-21.76z" data-tags="square" />
762
+ <glyph unicode="&#xe014;" d="M 419.84,70.4L 419.84,418.56 c0,22.528-18.432,40.96-40.96,40.96L 133.12,459.52 c-22.528,0-40.96-18.432-40.96-40.96l0-389.12 c0-22.528, 18.432-40.96, 40.96-40.96l 245.76,0 c 19.026,0, 40.96,0, 40.96,20.48c0,4.26,0,0,0,10.24L 143.36,19.2 c-11.264,0-20.48,9.216-20.48,20.48
763
+ l0,30.72 L 419.84,70.4 z M 143.36,377.6c0,5.632, 4.608,10.24, 10.24,10.24l 204.8,0 c 5.632,0, 10.24-4.608, 10.24-10.24l0-20.48 c0-5.632-4.608-10.24-10.24-10.24L 153.6,346.88 c-5.632,0-10.24,4.608-10.24,10.24L 143.36,377.6 z M 143.36,295.68c0,5.632, 4.608,10.24, 10.24,10.24l 204.8,0
764
+ c 5.632,0, 10.24-4.608, 10.24-10.24l0-20.48 c0-5.632-4.608-10.24-10.24-10.24L 153.6,264.96 c-5.632,0-10.24,4.608-10.24,10.24L 143.36,295.68 z" data-tags="book_store" />
765
+ <glyph unicode="&#xe015;" d="M 378.88,408.32l-40.96,0 L 133.12,408.32 L 92.16,408.32 l0-40.96 l0-102.4 l0-133.12 c0-22.528, 18.432-40.96, 40.96-40.96l 204.8,0 c 22.528,0, 40.96,18.432, 40.96,40.96l0,51.2 c 62.218,0, 112.64,50.432, 112.64,112.64S 441.098,408.32, 378.88,408.32z M 378.88,234.24l0,30.72 l0,92.16
766
+ c 33.935,0, 61.44-27.505, 61.44-61.44C 440.32,261.755, 412.815,234.24, 378.88,234.24zM 20.48,70.4l0-23.562 C 20.48,27.423, 41.667,19.2, 67.584,19.2L 444.416,19.2 c 25.907,0, 47.104,8.223, 47.104,27.638L 491.52,70.4 L 20.48,70.4 z" data-tags="cafe" />
767
+ <glyph unicode="&#xe079;" d="M 171.858,387.84c 22.723,0, 40.96,18.483, 40.96,40.96c0,22.723-18.237,40.96-40.96,40.96c-22.589,0-40.96-18.248-40.96-40.96C 130.898,406.323, 149.268,387.84, 171.858,387.84zM 200.776,12.288c-69.755,0-126.321,57.354-126.321,128.379c0,38.881, 17.295,73.574, 44.278,97.167l-2.243,40.161
768
+ C 71.311,249.303, 40.96,198.83, 40.96,140.667C 40.96,51.046, 112.466-21.76, 200.776-21.76C 265.759-21.76, 323.195,24.023, 348.16,80.64l-24.33,33.505
769
+ C 311.808,56.136, 261.468,12.288, 200.776,12.288zM 450.56,90.88l-20.48,0 l-81.92,112.64c-4.434,7.793-20.48,30.72-40.96,30.72l-92.16,0 l0,40.96 l 81.92,0 c 10.609,0, 22.057,4.516, 22.057,15.421
770
+ C 319.017,301.445, 307.866,305.92, 296.96,305.92l-81.92,0 l0,40.96 c-1.505,22.712-20.48,30.72-40.858,30.249C 153.6,376.658, 143.36,367.36, 143.36,346.88l0-143.36 c 1.946-22.999, 18.504-30.72, 40.96-30.72l 122.88,0 l 71.68-92.16
771
+ c 4.618-7.639, 20.48-30.72, 20.48-30.72l 51.2,0 c 10.568,0, 20.48,9.605, 20.48,20.48C 471.040,81.224, 461.455,90.88, 450.56,90.88z" data-tags="wheelchair" />
772
+ <glyph unicode="&#xe07a;" d="M 174.080,264.96l 27.464,0 C 209.777,264.96, 215.040,277.064, 215.040,285.235l0,86.467 C 215.040,379.884, 209.777,377.6, 201.544,377.6L 174.080,377.6 L 174.080,264.96 zM 174.080,101.12l 27.464,0 C 209.777,101.12, 215.040,91.617, 215.040,83.425l0-86.446 c0-8.131-5.263-18.739-13.496-18.739L 174.080-21.76 L 174.080,101.12 zM 137.83,183.040c-0.236,79.022, 14.623,81.92, 23.091,81.92C 161.853,264.96, 163.84,264.96, 163.84,264.96L 163.84,377.6 c0,0-2.683,0-3.502,0C 145.254,377.6, 71.68,352.809, 71.68,177.93
773
+ C 71.68,3.041, 145.254-21.76, 160.338-21.76C 161.157-21.76, 163.84-21.76, 163.84-21.76L 163.84,101.12 c0,0-1.987,0-2.918,0C 152.453,101.12, 138.056,104.059, 137.83,183.040zM 237.527,353.239c 4.987-5.97, 7.649-13.517, 7.649-21.289c0-7.772-2.662-15.319-7.649-21.299l 16.353-13.455
774
+ c 7.997,9.748, 12.431,22.098, 12.431,34.755c0,12.646-4.434,25.016-12.431,34.755L 237.527,353.239zM 290.099,258.376c 17.859,19.558, 27.73,44.913, 27.73,71.434c0,26.399-9.748,51.753-27.617,71.25l-15.903-13.865
775
+ c 14.387-15.667, 22.395-36.024, 22.395-57.385c0-21.412-7.997-41.841-22.63-57.569L 290.099,258.376zM 326.287,219.556c 27.74,29.297, 43.059,67.707, 43.059,108.042c0,40.212-15.186,78.51-42.701,107.807l-15.667-14.275
776
+ c 23.9-25.364, 37.14-58.614, 37.14-93.542c0-35.052-13.24-68.352-37.376-93.768L 326.287,219.556zM 362.619,180.726c 37.478,39.117, 58.143,90.522, 58.143,144.722c0,54.016-20.521,105.267-57.805,144.312l-15.299-14.623
777
+ c 33.526-35.103, 51.978-81.172, 51.978-129.69c0-48.742-18.565-94.935-52.326-130.017L 362.619,180.726z" data-tags="volume-control-telephone" />
778
+ <glyph unicode="&#xe07b;" d="M 367.411,44.155c-3.318-4.506-4.874-5.458-9.021-11.274c-6.902-8.909, 1.894-22.436, 6.277-20.306
779
+ c 5.11,1.915, 8.428,12.114, 14.008,15.442c 2.857,1.536, 10.455,12.698, 17.572,20.285c 5.233,5.949, 9.032,8.561, 14.008,14.725
780
+ c 8.428,10.455, 10.209,18.401, 17.572,29.563c 4.516,5.816, 7.731,7.598, 11.878,14.725c 21.965,41.554, 15.544,60.18, 36.567,89.856
781
+ c 6.4,8.776, 13.64,10.916, 23.849,16.138c 9.503,69.222-21.965,107.919-21.719,108.042c-26.481-15.432-40.724-21.729-68.147-20.296
782
+ c-10.322,0.113-15.79,4.506-25.989,3.564c-9.513-0.358-14.356-3.912-23.869-7.127c-14.592-4.506-22.548-8.54-37.857-13.292
783
+ c-9.738-2.734-15.913-2.847-26.010-6.287c-8.663-3.686-4.506-0.717-10.557-7.721c-7.844-8.673-5.939-15.432-13.302-30.28
784
+ c-9.144-19.466-8.069-22.077-2.847-24.453c-3.441-9.964-4.27-16.62-3.441-27.423c 0.952-8.192-2.499-13.885, 6.287-20.419
785
+ c 11.991-8.899, 37.161-29.798, 43.571-30.147c 9.615,0.348, 37.632-0.717, 51.866,9.144c 3.205,2.007, 4.157,4.045, 1.434-3.564
786
+ c-0.594-0.963-35.502-28.14-39.291-28.017c-44.401-1.434-29.563-3.922-32.287-2.857c-2.263,0-23.634,26.132-36.567,16.865
787
+ c-4.874-2.97-7.127-5.816-9.021-11.172c 1.659-3.441, 9.492-8.888, 16.742-13.414c 10.455-6.646, 11.397-13.65, 21.842-16.138
788
+ c 12.708-2.857, 26.235-0.952, 34.314-2.028c 3.092-0.829, 31.099,7.373, 48.548,16.742c 16.159,8.315-22.19-16.015-31.57-28.006
789
+ c-28.262-8.899-20.296-9.257-33.72-11.991c-12.462-2.847-11.868-2.13-20.419-4.874c-8.776-2.13-16.015-14.131-7.711-20.419
790
+ c 4.987-4.147, 20.541,1.669, 35.85,2.13c 6.769,0.123, 34.417,12.831, 40.724,16.159c 15.667,8.417, 27.187,20.060, 36.454,26.706
791
+ C 406.221,91.638, 378.921,58.163, 367.411,44.155L 367.411,44.155z M 281.815,214.753c 9.38-7.475, 14.131-29.798, 14.008-29.563
792
+ c 17.213-5.458, 28.129-16.855, 28.129-16.855c 26.481,14.725, 27.085,8.079, 38.595,16.855c 9.503,6.533, 9.032,8.55, 14.008,25.989
793
+ c 4.628,14.141-11.756,12.831-25.293,38.595c-23.501-8.899-36.198-4.874-44.155-4.157C 303.544,246.088, 304.128,231.731, 281.815,214.753L 281.815,214.753
794
+ zM 144.22,397.926c 3.328,4.751, 4.864,5.704, 9.144,11.284c 6.646,9.144-2.017,22.671-6.298,21.012
795
+ c-5.222-2.376-8.54-12.585-14.838-16.148c-2.263-1.3-9.851-12.462-16.855-20.306c-5.222-5.704-9.021-8.315-14.008-14.838
796
+ c-8.54-10.086-10.209-18.043-17.572-28.733c-4.506-6.4-7.834-8.069-11.878-15.432c-21.955-41.318-15.667-59.945-36.567-89.16
797
+ c-6.4-9.38-13.65-11.397-23.859-16.855c-9.492-69.1, 21.852-107.684, 21.729-107.448c 26.47,15.094, 40.602,21.381, 68.147,20.429
798
+ c 10.322-0.604, 15.79-4.987, 25.999-4.27c 9.503,0.594, 14.367,4.147, 23.859,7.004c 14.602,4.864, 22.559,8.899, 37.161,13.414
799
+ c 10.445,2.97, 16.62,3.092, 26.706,7.014c 8.673,3.195, 4.516,0.225, 10.568,7.014c 7.711,8.899, 5.939,15.657, 12.585,30.136
800
+ c 9.851,19.845, 8.786,22.436, 3.564,24.576c 3.328,10.209, 4.27,16.742, 3.441,27.423c-1.065,8.315, 2.499,14.131-6.287,20.296
801
+ c-11.991,9.267-37.161,30.157-43.448,30.28c-9.738-0.123-37.755,0.952-51.999-8.428c-3.205-2.488-4.157-4.506-1.423,2.734
802
+ c 0.594,1.3, 35.502,28.488, 39.291,28.846c 44.401,0.952, 29.563,3.441, 32.297,2.13c 2.253,0.236, 23.624-25.876, 36.567-16.855
803
+ c 4.741,3.195, 7.117,6.052, 9.144,11.151c-1.782,3.676-9.615,9.155-16.855,13.302c-10.445,6.994-11.51,13.998-21.842,16.261
804
+ c-12.708,3.082-26.358,1.188-34.314,2.734c-3.082,0.358-31.109-7.844-48.435-16.855c-16.384-8.673, 22.088,15.667, 31.57,28.129
805
+ c 28.14,8.438, 20.070,8.786, 33.72,11.878c 12.349,2.499, 11.756,1.782, 20.306,4.27c 8.663,2.376, 16.015,14.254, 7.711,21.012
806
+ c-5.1,3.799-20.531-2.017-35.727-2.13c-6.881-0.471-34.55-13.179-40.837-16.742c-15.667-8.192-27.187-19.825-36.444-25.999
807
+ C 105.277,350.679, 132.7,384.041, 144.22,397.926L 144.22,397.926z M 229.816,227.338c-9.38,7.711-14.131,30.024-14.008,30.147
808
+ c-17.213,5.11-28.14,16.507-28.14,16.148c-26.47-14.367-27.177-7.721-38.584-16.148c-9.615-6.892-9.021-9.021-14.008-25.887
809
+ c-4.639-14.725, 11.633-13.292, 25.283-38.697c 23.511,8.561, 36.219,4.516, 44.165,3.574C 208.087,196.229, 207.493,210.596, 229.816,227.338
810
+ L 229.816,227.338z" data-tags="sign-language" />
811
+ <glyph unicode="&#xe07c;" d="M 226.632,436.357c 0.225,21.053-17.080,38.482-38.185,38.257c-21.565,0.225-38.994-17.203-38.881-38.257
812
+ c-0.113-21.555, 17.316-38.82, 38.881-38.871C 209.541,397.537, 226.857,414.802, 226.632,436.357L 226.632,436.357zM 337.654,225.106L 214.139,374.948c-6.42,9.523-42.209,13.527-57.344,1.372L 96.696,266.967l 14.787-92.436
813
+ c 15.032-24.136, 44.851,0.287, 36.475,13.476l-10.086,65.485L 163.84,305.92l0-122.88 l-61.44-163.84c-10.67-35.779, 40.643-54.938, 51.2-20.48l 71.68,184.32l0,92.16 l-30.075,41.595
814
+ c-1.495,1.782-1.27,4.475, 0.573,6.021c 1.833,1.495, 4.475,1.26, 5.97-0.512l 102.748-121.508
815
+ C 321.034,178.196, 354.171,202.23, 337.654,225.106zM 290.396,17.254l-60.672,150.968L 204.8,101.12l 35.604-104.131C 254.73-36.547, 305.080-16.927, 290.396,17.254zM 451.297-17.388c 0.123-0.123, 0.225-0.287, 0.225-0.348c 2.406-2.867, 6.656-3.154, 9.523-0.799
816
+ c 2.519,2.181, 2.99,6.021, 1.26,8.765L 347.965,188.754c-0.123,0.123-0.225,0.236-0.338,0.399c-2.304,2.765-6.543,3.164-9.411,0.748
817
+ c-2.519-2.181-2.755-5.847-1.137-8.765L 451.297-17.388z" data-tags="low-vision-access" />
818
+ <glyph unicode="&#xe07d;" d="M 130.949,124.621c-63.539,0-112.486,35.717-112.486,102.246c0,67.318, 47.36,106.035, 112.486,106.035c 65.106,0, 112.476-38.728, 112.476-106.035
819
+ C 243.415,160.338, 194.478,124.621, 130.949,124.621z M 130.949,177.244c 22.948,0, 34.253,19.558, 34.253,49.234c0,23.347-4.864,53.811-34.253,53.811
820
+ c-29.399,0-34.263-30.464-34.263-53.811C 96.686,196.803, 107.991,177.244, 130.949,177.244zM 410.276,254.72c-0.338,10.24-3.389,14.111-8.253,18.975c-4.864,5.263-11.643,7.25-20.357,7.25c-29.266,0-34.13-30.792-34.13-54.139
821
+ c0-29.676, 11.305-50.924, 34.13-50.924c 20.357,0, 28.273,17.398, 30.525,27.638l 79.022,0 c-6.779-61.44-54.938-80.425-109.548-80.425
822
+ c-63.519,0-112.364,36.485-112.364,103.014c0,67.318, 47.37,107.745, 112.364,107.745c 52.695,0, 102.318-27.935, 107.96-79.135L 410.276,254.72 z" data-tags="open-captioning" />
823
+ <glyph unicode="&#xe07e;" d="M 159.734,244.48c-0.338,10.24-3.277,17.725-8.253,22.589c-4.864,5.253-11.643,9.062-20.234,9.062c-29.399,0-34.253-29.891-34.253-53.238
824
+ c0-29.665, 11.305-48.978, 34.253-48.978c 20.234,0, 28.15,9.134, 30.403,29.614l 79.022,0 c-6.779-61.44-54.938-81.94-109.425-81.94
825
+ c-63.539,0-112.486,35.738-112.486,102.267c0,67.318, 47.36,103.741, 112.486,103.741c 52.562,0, 102.308-21.678, 107.848-83.118L 159.734,244.48 zM 410.583,244.48c-0.338,10.24-3.389,17.725-8.253,22.589c-4.864,5.253-11.643,9.062-20.357,9.062c-29.266,0-34.13-29.891-34.13-53.238
826
+ c0-29.665, 11.305-48.978, 34.13-48.978c 20.357,0, 28.273,9.134, 30.525,29.614L 491.52,203.53 c-6.779-61.44-54.938-81.94-109.548-81.94
827
+ c-63.529,0-112.364,35.738-112.364,102.267c0,67.318, 47.37,103.741, 112.364,103.741c 52.695,0, 102.308-21.678, 107.971-83.118L 410.583,244.48 z" data-tags="closed-captioning" />
828
+ <glyph unicode="&#xe07f;" d="M 40.96,70.4l 50.115,0 c 18.821,0, 31.