Ultimate CSV Importer - Version 3.6.0

Version Description

Download this release

Release Info

Developer smackcoders
Plugin Icon 128x128 Ultimate CSV Importer
Version 3.6.0
Comparing to
See all releases

Code changes from version 3.5.5 to 3.6.0

Files changed (79) hide show
  1. Readme.txt +59 -173
  2. config/schema.php +34 -34
  3. config/settings.php +10 -21
  4. css/blank.gif +0 -0
  5. css/bootstrap.css +21 -17
  6. css/bootstrap.min.css +1 -6353
  7. css/custom-style.css +505 -0
  8. css/fancybox_loading.gif +0 -0
  9. css/fancybox_loading@2x.gif +0 -0
  10. css/fancybox_overlay.png +0 -0
  11. css/fancybox_sprite.png +0 -0
  12. css/fancybox_sprite@2x.png +0 -0
  13. css/font-awesome.css +484 -885
  14. css/jquery-ui.css +402 -1686
  15. css/jquery.fileupload.css +17 -18
  16. css/main.css +468 -531
  17. css/style.css +199 -183
  18. images/Filemanager.png +0 -0
  19. images/HeadersExplained.jpeg +0 -0
  20. images/SubscribeViaEmail.gif +0 -0
  21. images/arrow_down.gif +0 -0
  22. images/arrow_up.gif +0 -0
  23. images/bg.gif +0 -0
  24. images/csv-pro_01.png +0 -0
  25. images/csv-pro_02.png +0 -0
  26. images/csv-pro_04.png +0 -0
  27. images/csv-pro_06.png +0 -0
  28. images/csv-pro_07.png +0 -0
  29. images/csv-pro_08.png +0 -0
  30. images/csv-pro_10.png +0 -0
  31. images/csv-pro_11.png +0 -0
  32. images/csv-pro_13.png +0 -0
  33. images/csv-pro_14.png +0 -0
  34. images/csv-pro_16.png +0 -0
  35. images/csv-pro_18.png +0 -0
  36. images/csv-pro_19.png +0 -0
  37. images/csv-pro_20.png +0 -0
  38. images/csv-pro_21.png +0 -0
  39. images/csv_delete.png +0 -0
  40. images/csv_download.png +0 -0
  41. images/csv_download_all.png +0 -0
  42. images/csv_importer_dashboard_v3.5.png +0 -0
  43. images/csv_records_delete.png +0 -0
  44. images/custompostuitype.png +0 -0
  45. images/delete_records.png +0 -0
  46. images/eshop.png +0 -0
  47. images/importerpro.png +0 -0
  48. images/notactive.png +0 -0
  49. images/notok.png +0 -0
  50. images/ok.png +0 -0
  51. images/paypal_donate_button.png +0 -0
  52. images/schedule.png +0 -0
  53. images/spacer.gif +0 -0
  54. images/sprite.png +0 -0
  55. images/stats.png +0 -0
  56. images/stats5263_03.png +0 -0
  57. images/stats5263_05.png +0 -0
  58. images/stats5263_09.png +0 -0
  59. images/stats5263_12.png +0 -0
  60. images/stats5263_15.png +0 -0
  61. images/stats5263_17.png +0 -0
  62. images/sugarcrm.png +0 -0
  63. images/templates.png +0 -0
  64. images/tigercrm.png +0 -0
  65. images/trash_records.png +0 -0
  66. images/zohocrm.jpg +0 -0
  67. includes/ImportLib.php +601 -0
  68. includes/WPImporter_includes_helper.php +1669 -864
  69. index.php +132 -44
  70. js/bootstrap-collapse.js +99 -87
  71. js/bootstrap.min.js +5 -562
  72. js/buttons.js +78 -79
  73. js/dashchart.js +123 -0
  74. js/dropdown.js +163 -0
  75. js/exporting.js +22 -0
  76. js/highcharts-3d.js +41 -0
  77. js/highcharts.js +305 -0
  78. js/jquery.fileupload.js +86 -87
  79. js/jquery.js +3383 -3411
Readme.txt CHANGED
@@ -4,18 +4,18 @@ Donate link: http://www.smackcoders.com/donate.html
4
  Tags: batch, csv, excel, import, spreadsheet, autoblog, Autoblogger, csvimporter, data, dataimport, importer, wpcsvimporter, wpimporter, acf, auto blog, csv import, csv to post, data import, Easy CSV Importer, eci, import plugin, admin, user, users, Advanced CSV Import, Advanced CSV Importer, affiliate, amazon, author, automatic, blog, buddypress, bulk, bulk edit, bulk editor, categories, comments, content, csv file, csv format, csv importer, custom post, e-commerce, free, images, language, manage, media, meta, multisite, News, page, photos, pictures, plugin, Post, seo, shop, shortcode, tags, Taxonomy, text, title, video, woocommerce, wordpress, xml, youtube
5
  Requires at least: 3.6.0
6
  Tested up to: 3.9.1
7
- Stable tag: 3.5.5
8
- Version: 3.5.5
9
  Author: smackcoders
10
  Author URI: http://profiles.wordpress.org/smackcoders/
11
 
12
  License: GPLv2 or later
13
 
14
- Advanced CSV Importer plugin to import data as bulk post, page, custom post etc., simple clicks even for multisite and buddypress blog.
15
 
16
  == Description ==
17
 
18
- **Version 3.5.5 is now available with post format and page template attributes.
19
 
20
  WP Ultimate CSV Importer Plugin proven much effective advanced CSV File Importer With Ultimate User Friendly Features. It is much easy now even for newbies to import any csv file as any wordpress post type and associated fields by simple mapping feature. Now import any CSV file as thousands of post, page and custom post types. This is admin side free plugin helps you in bulk edit, create and import posts type for your blog or site.
21
 
@@ -24,6 +24,8 @@ WP Ultimate CSV Importer Plugin proven much effective advanced CSV File Importer
24
  <p>http://www.youtube.com/watch?v=OwKdt_NlT2U&list=PL2k3Ck1bFtbQqFhOK7g08kxENI4qQkmC</p>
25
 
26
  = Highlights =
 
 
27
  * All-in-SEO import support.
28
  * Drag drop import
29
  * Define any type of post
@@ -36,7 +38,8 @@ WP Ultimate CSV Importer Plugin proven much effective advanced CSV File Importer
36
  * Mutisite and Buddypress also supported now
37
  * Compatible to wordpress themes
38
  * Better alternative for xml
39
- * Post Format(Not available now)
 
40
 
41
  = Power Import Features to Control your csv import =
42
  * Post title, content and even excerpt
@@ -69,18 +72,27 @@ The csv importer supports almost every wordpress modules and plugin fields as fo
69
  * Categories
70
 
71
  It is more easy to convert any off line database maintained in Excel xls or spread sheets into valuable content for your web site without missing any. It is possible now to schedule a periodical content update, maintenance, prices, offers, coupons and inventory etc.
72
-
73
- = About Version 3.5.0 =
74
- * Extended user experience
75
- * Better performance
76
- * No more time out issues
77
- * Advanced Log for proper tracking
78
- * Drag drop import
79
- * Advanced CMS administration
80
 
81
  Much improved User interface with most flexible jquery plugin features and bootstrap UI design makes csv import more simple, easy, fast and even more flexible for better user experience. With improved Multi site, buddy press compatibility (except user import module) works well for most of the best wordpress themes available online. Now manage multi site & buddy press, amazon data import, affiliates blog, product inventory, ecommerce store, multi author blog, automatic news import, photo blog etc periodically with simple click import.
82
 
 
 
 
 
 
 
 
 
 
 
 
 
83
  = Extended Pro Power Features in Wp Ultimate CSV Importer =
 
 
 
 
 
84
  * Auto Schedule all your Imports
85
  * Save mapping as Templates for reuse
86
  * Auto Mapping Feature
@@ -90,21 +102,20 @@ Much improved User interface with most flexible jquery plugin features and boots
90
  * Custom Post Type UI plugin import
91
  * Advanced Custom Fields Import
92
  * CCTM Posts and Fields Import
93
- * Woo commerce CSV Importer,
94
  * eshop CSV Importer
95
  * wp ecommerce Products CSV Importer with WP e-Commerce Custom Fields
96
  * Categories & tags Import with Category icons plugin support
97
  * Custom Taxonomy import
98
  * [Get Complete List of supported 3rd party plugins here](http://www.smackcoders.com/wp-ultimate-csv-importer-pro.html)
99
- * Types and more supports are in pipeline
100
 
101
  [Read More about Pro>>](http://www.smackcoders.com/wp-ultimate-csv-importer-pro.html) or [Test Drive Our Live Demo](http://demo.smackcoders.com/demowpthree/wp-admin/admin.php?page=wp-ultimate-csv-importer-pro/index.php&__module=dashboard)
102
 
103
  = Imp. Notes =
104
- * It is advised to remove older version files completely and install/reinstall version 3.5.0.
105
- * All CSV files should be should be strictly UTF-8 CSV format.
106
  * All wordpress supported languages can imported with csv format as UTF-8 without BOM (See FAQ for instructions).
107
- * User import option is switched off in multi site mode.
108
  * To Schedule posts for publishing provide future date and time in date column in CSV File.
109
 
110
  Featured Image Support
@@ -120,9 +131,6 @@ Also you can follow the instructions as given here
120
  Need More Help, Cool. Browse Below Links
121
 
122
  * [Get Pro Power Features, check here](http://www.smackcoders.com/wp-ultimate-csv-importer-pro.html)
123
- * [Step By Step Installation Wiki with Snaps](http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer#Installations)
124
- * [Detailed FAQ](http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer_FAQ)
125
- * [Old Support Threads](http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer_Support_Threads)
126
  * [Wiki and Documentation](http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer)
127
  * [Tutorials, Guides, Blog News and Updates](http://blog.smackcoders.com/category/free-wordpress-plugins/wordpress-ultimate-csv-importer-plugin/)
128
  * [Video Walkthrough](http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer_Videos)
@@ -131,174 +139,49 @@ Need More Help, Cool. Browse Below Links
131
 
132
  == Installation ==
133
 
134
- Wp Ultimate CSV Importer is very easy to install like any other wordpress plugin. No need to edit or modify anything here. Users can install the plugin in 3 ways, choose one that suites you from below
135
-
136
- = Imp. Notes =
137
- * It is advised to remove older version files completely and install/reinstall version 3.5.0.
138
-
139
- I. For simple general way to install
140
-
141
- * Download the plugin (.zip file) on the right side above menu
142
- * Click the Red Download Button ( Download Version X.X.X)
143
- * Login to your Wordpress Admin (e.g. yourdomain.com/wp-admin/)
144
- * Go to Plugins >> Add New
145
- * Select the tab "Upload"
146
- * Browse and Upload the downloaded zip file
147
- * Activate the plugin after install
148
- * You can see a new menu WP Ultimate CSV Importer in your Admin now
149
-
150
- II. For familiar FTP users
151
-
152
- * Download the plugin (.zip file) on the right side above menu
153
- * Click the Red Download Button ( Download Version X.X.X)
154
- * Extract the plugin zip
155
- * Upload wp-ultimate-csv-importer folder to /wp-content/plugins/
156
- * Go to Plugins >> Installed Plugins >> Inactive
157
- * Click Activate to activate the plugin
158
- * You can see a new menu WP Ultimate CSV Importer in your Admin now
159
-
160
- III. Straight from Wordpress Admin
161
-
162
- * Login to your Wordpress Admin (e.g. yourdomain.com/wp-admin/)
163
- * Go to Plugins >> Add New
164
- * Search for WP Ultimate CSV Importer
165
- * Click Install Now to install
166
- * Activate the plugin after install
167
- * You can see a new menu WP Ultimate CSV Importer in your Admin now
168
-
169
- Not clear. You can use [step by step installation wiki with snaps here](http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer#Installations)
170
 
171
 
172
  == Screenshots ==
173
 
174
- 1. Advanced CSV Importer With Ultimate User Friendly Features with drag and drop etc.
175
- 2. User friendly easy mapping for any csv file data to wordpress field attributes with sampling.
176
- 3. Advanced duplicate post name and content check with server request control for high performance factor.
177
- 4. Detailed real time log to know pinpoint status.
178
- 5. Module based environment for easy and reduced interface to enable most required modules and when ever needed.
179
- 6. Inbuilt support form for easy feedback, support, feature request with all useful links for easy and better csv import.
180
- 7. New export module for posts, page and all custom posts type plugins.
 
181
 
182
- == Frequently Asked Questions ==
183
 
184
- = '''How to define post_format in a csv?''' =
185
-
186
- The post_format attribute should be assigned like 1,2,3,4,5,6 or 7 relevant to each row in csv. The values are as follows
187
 
188
- 1 - Aside
189
- 3 - Video
190
- 4 - Audio
191
- 5 - Quote
192
- 6 - Link
193
- 7 - Gallery
194
 
195
- You can skip these fields leaving empty to assign standard as format.
196
 
197
- = '''How to define page_template in a csv?''' =
198
 
199
- The page_template attribute should be assigned like 'page-template/full-width.php' for each row in csv depending on theme templates. You can skip these fields leaving empty to assign default template.
 
 
200
 
201
- = Imp. Notes =
202
- * It is advised to remove older version files completely and install/reinstall version 3.5.0.
203
 
 
204
  [CSV File and Format Related](http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer_FAQ#CSV_File_and_Format_Related)
205
 
206
- = '''What is csv file?''' =
207
-
208
- CSV stands for "Comma Separated Values". CSV file format is used to store data in a structured table of lists as columns and rows. CSV File otherwise Comma Separated Values file is a simple text file that stores attribute names as headers and their related values in comma separated format.
209
-
210
- In general opening csv files in MS Excel or any spread sheet editor will show all values under each header as columns and rows. Each column have a attribute name called as CSV file header and their data/values in rows for each entry.
211
-
212
- For ultimate csv importer each row is imported as a post for a selected post type and columns are imported as filed attribute values of the posts. This is done by simple interface of drop downs of header or attribute names are mapped to wordpress post field attributes like post title, content, status. So no of rows are equal to no of posts that to be imported. And columns or csv headers are equal to no of field attributes assigned under each post like author, category, tags, custom fields etc.
213
-
214
- = '''What is csv format and types of it?''' =
215
-
216
- The CSV file type 'Comma-Separated Variables' or comma delimited file is a records and data from a database or software exported, where each record/data in single line and each field attributes in records are indicated as comma separated. In some cases instead of comma other delimiters also can be used like ; separated.
217
-
218
-
219
- CSV Format is chosen encoding while saving as a csv file. There are several formats available like ANSI, UCS-2 Big Endian, UCS-2 Little Endian, UTF-8, UTF-8 without BOM etc.
220
-
221
- For ultimate csv importer to import csv as wordpress post type, UTF-8 is advised for successful import. In case of other language import or any special characters, diacritics, Cyrillic or Han characters are included in csv import, UTF-8 without BOM format is suggested.
222
-
223
- How to choose separator or delimiter for ultimate CSV Importer?
224
-
225
- In ultimate csv importer you can choose the delimiter as , or ; while importing the csv file.
226
-
227
- = '''How to open csv files? read csv file?''' =
228
-
229
- In general to read or open existing CSV files simple text editors can be used. For easy editing and best view, any spread sheet editor like MS Excel or OpenOffice Calc is useful.
230
-
231
- = '''How to convert my existing data to csv format?''' =
232
-
233
- In general to read or open existing CSV files simple text editors can be used. For easy editing and best view, any spread sheet editor like MS Excel or OpenOffice Calc is useful. To convert encoding format of a csv file open it in text editor and save as with needed file format.
234
-
235
- For E.g. open your csv file in Notepad++ copy the text. Now open a new empty file choose UTF-8 without BOM or other from Menus >> Encoding and paste the copied text. Now save and replace the old CSV file. Now your CSV file with choosen format can be imported without any issues in Ultimate CSV importer.
236
-
237
- [Plugin Related](http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer_FAQ#Plugin_Related)
238
-
239
- = '''How to install the plugin?''' =
240
-
241
- For detailed installation instruction read here - http://wiki.smackcoders.com/index.php?title=WP_Ultimate_CSV_Importer#Installations
242
-
243
- = '''How to use the plugin to import a csv file?''' =
244
-
245
- Refer here as below
246
-
247
- 1.http://blog.smackcoders.com/how-to-import-content-to-wordpress-simple-steps-tutorial-wordpress-ultimate-csv-importer-plugin-part-i.html<br>
248
-
249
- 2.http://blog.smackcoders.com/how-to-import-content-to-wordpress-simple-steps-tutorial-wordpress-ultimate-csv-importer-plugin-part-ii.html
250
-
251
- = '''What is a csv importer plugin?''' =
252
-
253
- Csv importer plugin is a tool/plugin that can import your data and records from exported, stored, saved as csv files to your software as useful viewable content to analyse, manage etc. In such way Ultimate CSV importer is a worpdress plugin that imports your off line records or data stored/exported as a csv file into any wordpress post type web content by simple easy mapping feature.
254
-
255
- = '''Why we need CSV import for wordpress?''' =
256
-
257
- If you need to move data from our local system to live website as post content and their field attributes in bulk you should need a csv importer plugin for reduce manual work and time. In normal affiliates data like amazon, auto blogging, drop shipping ecommerce, inventory management, periodical changes to content in bulk, bulk editing cms content etc can be handled as simple as few easy clicks by an advanced csv importer plugin like Ultimate CSV importer plugin.
258
-
259
- More to that features like auto mapping headers, mapping templates, smart scheduling etc in pro version makes periodical imports more easy and automatic even without mapping itself.
260
-
261
- Read More FAQs from below wiki links.
262
-
263
- [CSV Import Related](http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer_FAQ#CSV_Import_Related)
264
-
265
- * What csv format is supported?
266
- * How to import other languages using ultimate csv importer?
267
- * How to Format a CSV file for simple sleek import using WP Ultimate CSV Importer Plugin?
268
- * How to create a well formatted csv for ultimate power import? - the other way to learn tweaking
269
- * Where can i get sample files, cheat sheets and other references?
270
- * What you mean by mapping?
271
- * What are mandatory fields?
272
- * What can be imported to wordpress using ultimate csv importer?
273
- * What are the list of 3rd party plugins supported?
274
- * Why my custom fields or custom posts are supported by plugin?
275
- * Can i bulk edit/update existing posts created manually?
276
- * How to schedule post for publishing?
277
- * What is auto mapping feature?
278
- * What is mapping template feature? How to use it?
279
- * How saved mapping template can be reused?
280
- * How to schedule csv files for import?
281
- * Is schedule import possible from remote location?
282
- * how to automate periodical scheduled import?
283
- * Is auto split up schedule import possible?
284
-
285
- [Data Export Related](http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer_FAQ#Data_Export_Related)
286
-
287
- * How to export data or export-csv from wordpress? data export export to csv
288
- * Can i schedule export?
289
- * How the export feature works?
290
- * Is export feature available to all modules?
291
-
292
- [Common Issues](http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer_FAQ#Common_Issues)
293
-
294
- * Why and What to do if my import broke in the middle?
295
- * Cant get my featured image imported?
296
- * Why image import is broken
297
- * I am getting time out error? how to solve it?
298
- * How to handle large data import?
299
-
300
  == Changelog ==
301
 
 
 
 
 
 
 
 
 
302
  = 3.5.5 =
303
  * post_format attribute support added
304
  * page_template attribute added
@@ -453,6 +336,9 @@ Read More FAQs from below wiki links.
453
 
454
  == Upgrade Notice ==
455
 
 
 
 
456
  = 3.5.5 =
457
  * Upgrade for minor bug fix, conflicts and new attribute support.
458
 
4
  Tags: batch, csv, excel, import, spreadsheet, autoblog, Autoblogger, csvimporter, data, dataimport, importer, wpcsvimporter, wpimporter, acf, auto blog, csv import, csv to post, data import, Easy CSV Importer, eci, import plugin, admin, user, users, Advanced CSV Import, Advanced CSV Importer, affiliate, amazon, author, automatic, blog, buddypress, bulk, bulk edit, bulk editor, categories, comments, content, csv file, csv format, csv importer, custom post, e-commerce, free, images, language, manage, media, meta, multisite, News, page, photos, pictures, plugin, Post, seo, shop, shortcode, tags, Taxonomy, text, title, video, woocommerce, wordpress, xml, youtube
5
  Requires at least: 3.6.0
6
  Tested up to: 3.9.1
7
+ Stable tag: 3.6
8
+ Version: 3.6
9
  Author: smackcoders
10
  Author URI: http://profiles.wordpress.org/smackcoders/
11
 
12
  License: GPLv2 or later
13
 
14
+ Advanced CSV Importer plugin to import posts, pages, custom posts with custom fields with few simple clicks
15
 
16
  == Description ==
17
 
18
+ **Version 3.6 is now available with new users much requested features like auto UTF-8 handling, auto mapping, auto delimiter and more. Visit [www.wpultimatecsvimporter.com](http://www.wpultimatecsvimporter.com) for more news and future plans.
19
 
20
  WP Ultimate CSV Importer Plugin proven much effective advanced CSV File Importer With Ultimate User Friendly Features. It is much easy now even for newbies to import any csv file as any wordpress post type and associated fields by simple mapping feature. Now import any CSV file as thousands of post, page and custom post types. This is admin side free plugin helps you in bulk edit, create and import posts type for your blog or site.
21
 
24
  <p>http://www.youtube.com/watch?v=OwKdt_NlT2U&list=PL2k3Ck1bFtbQqFhOK7g08kxENI4qQkmC</p>
25
 
26
  = Highlights =
27
+ * Auto delimiter
28
+ * Auto UTF-8 handling
29
  * All-in-SEO import support.
30
  * Drag drop import
31
  * Define any type of post
38
  * Mutisite and Buddypress also supported now
39
  * Compatible to wordpress themes
40
  * Better alternative for xml
41
+ * Post Format option added
42
+ * Page template attribute feature
43
 
44
  = Power Import Features to Control your csv import =
45
  * Post title, content and even excerpt
72
  * Categories
73
 
74
  It is more easy to convert any off line database maintained in Excel xls or spread sheets into valuable content for your web site without missing any. It is possible now to schedule a periodical content update, maintenance, prices, offers, coupons and inventory etc.
 
 
 
 
 
 
 
 
75
 
76
  Much improved User interface with most flexible jquery plugin features and bootstrap UI design makes csv import more simple, easy, fast and even more flexible for better user experience. With improved Multi site, buddy press compatibility (except user import module) works well for most of the best wordpress themes available online. Now manage multi site & buddy press, amazon data import, affiliates blog, product inventory, ecommerce store, multi author blog, automatic news import, photo blog etc periodically with simple click import.
77
 
78
+ = Common Issues =
79
+
80
+ How to solve auto_prepend_file and auto_append_file error?
81
+
82
+ Check your phpinfo.php. Ensure that auto_prepend_file and auto_append_file options are disabled. If not you can disable it in php.ini settings file your self. You can also do it by a .htaccess file
83
+
84
+ Create an .htaccess file in root and set the following values.
85
+ php_value auto_prepend_file none
86
+ php_value auto_append_file none
87
+
88
+ This will solve your issue or get support from hosting if you dint have sufficient permission.
89
+
90
  = Extended Pro Power Features in Wp Ultimate CSV Importer =
91
+ * Types Plugin support
92
+ * Woocommerce CSV importer with product variation
93
+ * Marketpress Lite Importer
94
+ * WP Members Importer
95
+ * WP Customer Reviews Importer
96
  * Auto Schedule all your Imports
97
  * Save mapping as Templates for reuse
98
  * Auto Mapping Feature
102
  * Custom Post Type UI plugin import
103
  * Advanced Custom Fields Import
104
  * CCTM Posts and Fields Import
105
+ * Woocommerce CSV Importer,
106
  * eshop CSV Importer
107
  * wp ecommerce Products CSV Importer with WP e-Commerce Custom Fields
108
  * Categories & tags Import with Category icons plugin support
109
  * Custom Taxonomy import
110
  * [Get Complete List of supported 3rd party plugins here](http://www.smackcoders.com/wp-ultimate-csv-importer-pro.html)
111
+
112
 
113
  [Read More about Pro>>](http://www.smackcoders.com/wp-ultimate-csv-importer-pro.html) or [Test Drive Our Live Demo](http://demo.smackcoders.com/demowpthree/wp-admin/admin.php?page=wp-ultimate-csv-importer-pro/index.php&__module=dashboard)
114
 
115
  = Imp. Notes =
116
+ * All CSV files should be should be strictly UTF-8 CSV format. Now this can be handled by plugin.
 
117
  * All wordpress supported languages can imported with csv format as UTF-8 without BOM (See FAQ for instructions).
118
+ * User import option is disabled for multi site mode.
119
  * To Schedule posts for publishing provide future date and time in date column in CSV File.
120
 
121
  Featured Image Support
131
  Need More Help, Cool. Browse Below Links
132
 
133
  * [Get Pro Power Features, check here](http://www.smackcoders.com/wp-ultimate-csv-importer-pro.html)
 
 
 
134
  * [Wiki and Documentation](http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer)
135
  * [Tutorials, Guides, Blog News and Updates](http://blog.smackcoders.com/category/free-wordpress-plugins/wordpress-ultimate-csv-importer-plugin/)
136
  * [Video Walkthrough](http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer_Videos)
139
 
140
  == Installation ==
141
 
142
+ * [Step By Step Installation Wiki with Snaps](http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer_Free_Version_1.1.1_Installation_and_Configuration)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
 
144
 
145
  == Screenshots ==
146
 
147
+ 1. New Interactive Dashboard with Chart and Graph
148
+ 2. Advanced CSV Importer With Ultimate User Friendly Features with drag and drop etc.
149
+ 3. User friendly easy mapping for any csv file data to wordpress field attributes with sampling.
150
+ 4. Advanced duplicate post name and content check with server request control for high performance factor.
151
+ 5. Detailed real time log to know pinpoint status.
152
+ 6. Module based environment for easy and reduced interface to enable most required modules and when ever needed.
153
+ 7. Inbuilt support form for easy feedback, support, feature request with all useful links for easy and better csv import.
154
+ 8. New export module for posts, page, users, comments and all custom posts type plugins.
155
 
 
156
 
157
+ == Frequently Asked Questions ==
 
 
158
 
159
+ = Common Issues =
 
 
 
 
 
160
 
161
+ How to solve auto_prepend_file and auto_append_file error?
162
 
163
+ Check your phpinfo.php. Ensure that auto_prepend_file and auto_append_file options are disabled. If not you can disable it in php.ini settings file your self. You can also do it by a .htaccess file
164
 
165
+ Create an .htaccess file in root and set the following values.
166
+ php_value auto_prepend_file none
167
+ php_value auto_append_file none
168
 
169
+ This will solve your issue or get support from hosting if you dint have sufficient permission.
 
170
 
171
+ [Click Here for Detailed FAQs](http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer_FAQ)
172
  [CSV File and Format Related](http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer_FAQ#CSV_File_and_Format_Related)
173
 
174
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
175
  == Changelog ==
176
 
177
+ = 3.6 =
178
+ * New interactive graphs and charts in plugin dashboard
179
+ * New Admin dashboard widgets
180
+ * Added Users and comments export feature
181
+ * Auto delimiter handling
182
+ * Auto mapping feature
183
+ * Now allow authors to access import features
184
+
185
  = 3.5.5 =
186
  * post_format attribute support added
187
  * page_template attribute added
336
 
337
  == Upgrade Notice ==
338
 
339
+ = 3.6 =
340
+ * Must upgrade with major values added features
341
+
342
  = 3.5.5 =
343
  * Upgrade for minor bug fix, conflicts and new attribute support.
344
 
config/schema.php CHANGED
@@ -1,36 +1,36 @@
1
  <?php
2
  /*********************************************************************************
3
- * WP Ultimate CSV Importer is a Tool for importing CSV for the Wordpress
4
- * plugin developed by Smackcoder. Copyright (C) 2014 Smackcoders.
5
- *
6
- * WP Ultimate CSV Importer is free software; you can redistribute it and/or
7
- * modify it under the terms of the GNU Affero General Public License version 3
8
- * as published by the Free Software Foundation with the addition of the
9
- * following permission added to Section 15 as permitted in Section 7(a): FOR
10
- * ANY PART OF THE COVERED WORK IN WHICH THE COPYRIGHT IS OWNED BY WP Ultimate
11
- * CSV Importer, WP Ultimate CSV Importer DISCLAIMS THE WARRANTY OF NON
12
- * INFRINGEMENT OF THIRD PARTY RIGHTS.
13
- *
14
- * WP Ultimate CSV Importer is distributed in the hope that it will be useful,
15
- * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public
17
- * License for more details.
18
- *
19
- * You should have received a copy of the GNU Affero General Public License
20
- * along with this program; if not, see http://www.gnu.org/licenses or write
21
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
22
- * Boston, MA 02110-1301 USA.
23
- *
24
- * You can contact Smackcoders at email address info@smackcoders.com.
25
- *
26
- * The interactive user interfaces in original and modified versions
27
- * of this program must display Appropriate Legal Notices, as required under
28
- * Section 5 of the GNU Affero General Public License version 3.
29
- *
30
- * In accordance with Section 7(b) of the GNU Affero General Public License
31
- * version 3, these Appropriate Legal Notices must retain the display of the
32
- * WP Ultimate CSV Importer copyright notice. If the display of the logo is
33
- * not reasonably feasible for technical reasons, the Appropriate Legal
34
- * Notices must display the words
35
- * "Copyright Smackcoders. 2014. All rights reserved".
36
- ********************************************************************************/
1
  <?php
2
  /*********************************************************************************
3
+ * WP Ultimate CSV Importer is a Tool for importing CSV for the Wordpress
4
+ * plugin developed by Smackcoder. Copyright (C) 2014 Smackcoders.
5
+ *
6
+ * WP Ultimate CSV Importer is free software; you can redistribute it and/or
7
+ * modify it under the terms of the GNU Affero General Public License version 3
8
+ * as published by the Free Software Foundation with the addition of the
9
+ * following permission added to Section 15 as permitted in Section 7(a): FOR
10
+ * ANY PART OF THE COVERED WORK IN WHICH THE COPYRIGHT IS OWNED BY WP Ultimate
11
+ * CSV Importer, WP Ultimate CSV Importer DISCLAIMS THE WARRANTY OF NON
12
+ * INFRINGEMENT OF THIRD PARTY RIGHTS.
13
+ *
14
+ * WP Ultimate CSV Importer is distributed in the hope that it will be useful,
15
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public
17
+ * License for more details.
18
+ *
19
+ * You should have received a copy of the GNU Affero General Public License
20
+ * along with this program; if not, see http://www.gnu.org/licenses or write
21
+ * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
22
+ * Boston, MA 02110-1301 USA.
23
+ *
24
+ * You can contact Smackcoders at email address info@smackcoders.com.
25
+ *
26
+ * The interactive user interfaces in original and modified versions
27
+ * of this program must display Appropriate Legal Notices, as required under
28
+ * Section 5 of the GNU Affero General Public License version 3.
29
+ *
30
+ * In accordance with Section 7(b) of the GNU Affero General Public License
31
+ * version 3, these Appropriate Legal Notices must retain the display of the
32
+ * WP Ultimate CSV Importer copyright notice. If the display of the logo is
33
+ * not reasonably feasible for technical reasons, the Appropriate Legal
34
+ * Notices must display the words
35
+ * "Copyright Smackcoders. 2014. All rights reserved".
36
+ ********************************************************************************/
config/settings.php CHANGED
@@ -41,29 +41,18 @@ DEFINE('WP_DBHOST_CSVIMPORTER', $wpdb->dbhost);
41
  DEFINE('WP_DBUSER_CSVIMPORTER', $wpdb->dbuser);
42
  DEFINE('WP_DBPASSWORD_CSVIMPORTER', $wpdb->dbpassword);
43
 
44
- class SkinnySettings
45
- {
46
- public static $CONFIG = array(
47
 
48
 
49
- "project name" => WP_CONST_ULTIMATE_CSV_IMP_NAME,
50
- "debug" => false,
51
- "preload model" => true, //true = all model classes will be loaded with each request;
52
- //false = model classes will be loaded only if explicitly required (use require_once)
53
 
54
- "session persistency" => false, //tmp in your project dir must be writeable by the server!
55
- "session timeout" => 1800, //in seconds!
56
 
57
- "unauthenticated default module" => "default", //set this to where you want unauthenticated users redirected.
58
- "unauthenticated default action" => "index",
59
-
60
- "dbdriver" => "mysql",
61
- "dbname" => "WP_DBNAME_CSVIMPORTER",
62
- "dbhost" => "WP_DBHOST_CSVIMPORTER",
63
- "dbuser" => "WP_DBUSER_CSVIMPORTER",
64
- "dbpassword" => "WP_DBPASSWORD_CSVIMPORTER",
65
-
66
-
67
- );
68
- }
69
 
41
  DEFINE('WP_DBUSER_CSVIMPORTER', $wpdb->dbuser);
42
  DEFINE('WP_DBPASSWORD_CSVIMPORTER', $wpdb->dbpassword);
43
 
44
+ class SkinnySettings { public static $CONFIG = array(
 
 
45
 
46
 
47
+ "project name" => WP_CONST_ULTIMATE_CSV_IMP_NAME,
48
+ "debug" => false,
49
+ "preload model" => true, //true = all model classes will be loaded with each request;
50
+ //false = model classes will be loaded only if explicitly required (use require_once)
51
 
52
+ "session persistency" => false, //tmp in your project dir must be writeable by the server!
53
+ "session timeout" => 1800, //in seconds!
54
 
55
+ "unauthenticated default module" => "default", //set this to where you want unauthenticated users redirected.
56
+ "unauthenticated default action" => "index",
57
+ );}
 
 
 
 
 
 
 
 
 
58
 
css/blank.gif ADDED
Binary file
css/bootstrap.css CHANGED
@@ -3718,7 +3718,8 @@ input[type="button"].btn-block {
3718
  margin: 2px 0 0;
3719
  font-size: 14px;
3720
  list-style: none;
3721
- background-color: #ffffff;
 
3722
  border: 1px solid #cccccc;
3723
  border: 1px solid rgba(0, 0, 0, 0.15);
3724
  border-radius: 4px;
@@ -3745,15 +3746,15 @@ input[type="button"].btn-block {
3745
  clear: both;
3746
  font-weight: normal;
3747
  line-height: 1.428571429;
3748
- color: #333333;
3749
  white-space: nowrap;
3750
  }
3751
 
3752
  .dropdown-menu > li > a:hover,
3753
  .dropdown-menu > li > a:focus {
3754
- color: #262626;
3755
  text-decoration: none;
3756
- background-color: #f5f5f5;
3757
  }
3758
 
3759
  .dropdown-menu > .active > a,
@@ -3761,7 +3762,7 @@ input[type="button"].btn-block {
3761
  .dropdown-menu > .active > a:focus {
3762
  color: #ffffff;
3763
  text-decoration: none;
3764
- background-color: #428bca;
3765
  outline: 0;
3766
  }
3767
 
@@ -4514,6 +4515,8 @@ textarea.input-group-sm > .input-group-btn > .btn {
4514
  min-height: 50px;
4515
  margin-bottom: 20px;
4516
  border: 1px solid transparent;
 
 
4517
  }
4518
 
4519
  .navbar:before,
@@ -4538,7 +4541,8 @@ textarea.input-group-sm > .input-group-btn > .btn {
4538
 
4539
  @media (min-width: 768px) {
4540
  .navbar {
4541
- border-radius: 4px;
 
4542
  }
4543
  }
4544
 
@@ -4923,24 +4927,24 @@ textarea.input-group-sm > .input-group-btn > .btn {
4923
  }
4924
 
4925
  .navbar-default .navbar-text {
4926
- color: #777777;
4927
  }
4928
 
4929
  .navbar-default .navbar-nav > li > a {
4930
- color: #777777;
4931
  }
4932
 
4933
  .navbar-default .navbar-nav > li > a:hover,
4934
  .navbar-default .navbar-nav > li > a:focus {
4935
- color: #333333;
4936
- background-color: transparent;
4937
  }
4938
 
4939
  .navbar-default .navbar-nav > .active > a,
4940
  .navbar-default .navbar-nav > .active > a:hover,
4941
  .navbar-default .navbar-nav > .active > a:focus {
4942
- color: #555555;
4943
- background-color: #e7e7e7;
4944
  }
4945
 
4946
  .navbar-default .navbar-nav > .disabled > a,
@@ -4971,7 +4975,7 @@ textarea.input-group-sm > .input-group-btn > .btn {
4971
  .navbar-default .navbar-nav > .open > a,
4972
  .navbar-default .navbar-nav > .open > a:hover,
4973
  .navbar-default .navbar-nav > .open > a:focus {
4974
- color: #555555;
4975
  background-color: #e7e7e7;
4976
  }
4977
 
@@ -5312,8 +5316,7 @@ textarea.input-group-sm > .input-group-btn > .btn {
5312
 
5313
  .label {
5314
  display: inline;
5315
- /* padding: .2em .6em .3em; */
5316
- padding: 5px;
5317
  font-size: 75%;
5318
  font-weight: bold;
5319
  line-height: 1;
@@ -7448,8 +7451,9 @@ td.visible-print {
7448
  .nav .open > a,
7449
  .nav .open > a:hover,
7450
  .nav .open > a:focus {
7451
- background-color: #eeeeee;
7452
- border-color: #428bca;
 
7453
  }
7454
 
7455
  .nav .nav-divider {
3718
  margin: 2px 0 0;
3719
  font-size: 14px;
3720
  list-style: none;
3721
+ color:#fff;
3722
+ background-color: #222222;
3723
  border: 1px solid #cccccc;
3724
  border: 1px solid rgba(0, 0, 0, 0.15);
3725
  border-radius: 4px;
3746
  clear: both;
3747
  font-weight: normal;
3748
  line-height: 1.428571429;
3749
+ color: #fff;
3750
  white-space: nowrap;
3751
  }
3752
 
3753
  .dropdown-menu > li > a:hover,
3754
  .dropdown-menu > li > a:focus {
3755
+ color: #fff;
3756
  text-decoration: none;
3757
+ background-color: #0074A2;
3758
  }
3759
 
3760
  .dropdown-menu > .active > a,
3762
  .dropdown-menu > .active > a:focus {
3763
  color: #ffffff;
3764
  text-decoration: none;
3765
+ background-color: #0074A2;
3766
  outline: 0;
3767
  }
3768
 
4515
  min-height: 50px;
4516
  margin-bottom: 20px;
4517
  border: 1px solid transparent;
4518
+ background-color:#222222 !important;
4519
+ width:98%;
4520
  }
4521
 
4522
  .navbar:before,
4541
 
4542
  @media (min-width: 768px) {
4543
  .navbar {
4544
+ margin-top:25px;
4545
+ margin-right:15px;
4546
  }
4547
  }
4548
 
4927
  }
4928
 
4929
  .navbar-default .navbar-text {
4930
+ color: #fff;
4931
  }
4932
 
4933
  .navbar-default .navbar-nav > li > a {
4934
+ color: #fff;
4935
  }
4936
 
4937
  .navbar-default .navbar-nav > li > a:hover,
4938
  .navbar-default .navbar-nav > li > a:focus {
4939
+ color: #fff;
4940
+ background-color: #0074A2;
4941
  }
4942
 
4943
  .navbar-default .navbar-nav > .active > a,
4944
  .navbar-default .navbar-nav > .active > a:hover,
4945
  .navbar-default .navbar-nav > .active > a:focus {
4946
+ color: #fff;
4947
+ background-color: #0074A2;
4948
  }
4949
 
4950
  .navbar-default .navbar-nav > .disabled > a,
4975
  .navbar-default .navbar-nav > .open > a,
4976
  .navbar-default .navbar-nav > .open > a:hover,
4977
  .navbar-default .navbar-nav > .open > a:focus {
4978
+ color: #fff;
4979
  background-color: #e7e7e7;
4980
  }
4981
 
5316
 
5317
  .label {
5318
  display: inline;
5319
+ padding: .2em .6em .3em;
 
5320
  font-size: 75%;
5321
  font-weight: bold;
5322
  line-height: 1;
7451
  .nav .open > a,
7452
  .nav .open > a:hover,
7453
  .nav .open > a:focus {
7454
+ background-color: #0074A2 !important;
7455
+ color:#fff;
7456
+ /* border-color: #428bca; */
7457
  }
7458
 
7459
  .nav .nav-divider {
css/bootstrap.min.css CHANGED
@@ -6,6356 +6,4 @@
6
  * http://www.apache.org/licenses/LICENSE-2.0
7
  *
8
  * Designed and built with all the love in the world by @mdo and @fat.
9
- *//*! normalize.css v2.1.0 | MIT License | git.io/normalize */
10
- article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary {
11
- display: block
12
- }
13
-
14
- audio, canvas, video {
15
- display: inline-block
16
- }
17
-
18
- audio:not([controls]) {
19
- display: none;
20
- height: 0
21
- }
22
-
23
- [hidden] {
24
- display: none
25
- }
26
-
27
- html {
28
- font-family: sans-serif;
29
- -webkit-text-size-adjust: 100%;
30
- -ms-text-size-adjust: 100%
31
- }
32
-
33
- body {
34
- margin: 0
35
- }
36
-
37
- a:focus {
38
- outline: thin dotted
39
- }
40
-
41
- a:active, a:hover {
42
- outline: 0
43
- }
44
-
45
- h1 {
46
- margin: .67em 0;
47
- font-size: 2em
48
- }
49
-
50
- abbr[title] {
51
- border-bottom: 1px dotted
52
- }
53
-
54
- b, strong {
55
- font-weight: bold
56
- }
57
-
58
- dfn {
59
- font-style: italic
60
- }
61
-
62
- hr {
63
- height: 0;
64
- -moz-box-sizing: content-box;
65
- box-sizing: content-box
66
- }
67
-
68
- mark {
69
- color: #000;
70
- background: #ff0
71
- }
72
-
73
- code, kbd, pre, samp {
74
- font-family: monospace, serif;
75
- font-size: 1em
76
- }
77
-
78
- pre {
79
- white-space: pre-wrap
80
- }
81
-
82
- q {
83
- quotes: "\201C" "\201D" "\2018" "\2019"
84
- }
85
-
86
- small {
87
- font-size: 80%
88
- }
89
-
90
- sub, sup {
91
- position: relative;
92
- font-size: 75%;
93
- line-height: 0;
94
- vertical-align: baseline
95
- }
96
-
97
- sup {
98
- top: -0.5em
99
- }
100
-
101
- sub {
102
- bottom: -0.25em
103
- }
104
-
105
- img {
106
- border: 0
107
- }
108
-
109
- svg:not(:root) {
110
- overflow: hidden
111
- }
112
-
113
- figure {
114
- margin: 0
115
- }
116
-
117
- fieldset {
118
- padding: .35em .625em .75em;
119
- margin: 0 2px;
120
- border: 1px solid #c0c0c0
121
- }
122
-
123
- legend {
124
- padding: 0;
125
- border: 0
126
- }
127
-
128
- button, input, select, textarea {
129
- margin: 0;
130
- font-family: inherit;
131
- font-size: 100%
132
- }
133
-
134
- button, input {
135
- line-height: normal
136
- }
137
-
138
- button, select {
139
- text-transform: none
140
- }
141
-
142
- button, html input[type="button"], input[type="reset"], input[type="submit"] {
143
- cursor: pointer;
144
- -webkit-appearance: button
145
- }
146
-
147
- button[disabled], html input[disabled] {
148
- cursor: default
149
- }
150
-
151
- input[type="checkbox"], input[type="radio"] {
152
- padding: 0;
153
- box-sizing: border-box
154
- }
155
-
156
- input[type="search"] {
157
- -webkit-box-sizing: content-box;
158
- -moz-box-sizing: content-box;
159
- box-sizing: content-box;
160
- -webkit-appearance: textfield
161
- }
162
-
163
- input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration {
164
- -webkit-appearance: none
165
- }
166
-
167
- button::-moz-focus-inner, input::-moz-focus-inner {
168
- padding: 0;
169
- border: 0
170
- }
171
-
172
- textarea {
173
- overflow: auto;
174
- vertical-align: top
175
- }
176
-
177
- table {
178
- border-collapse: collapse;
179
- border-spacing: 0
180
- }
181
-
182
- @media print {
183
- * {
184
- color: #000 !important;
185
- text-shadow: none !important;
186
- background: transparent !important;
187
- box-shadow: none !important
188
- }
189
-
190
- a, a:visited {
191
- text-decoration: underline
192
- }
193
-
194
- a[href]:after {
195
- content: " (" attr(href) ")"
196
- }
197
-
198
- abbr[title]:after {
199
- content: " (" attr(title) ")"
200
- }
201
-
202
- .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after {
203
- content: ""
204
- }
205
-
206
- pre, blockquote {
207
- border: 1px solid #999;
208
- page-break-inside: avoid
209
- }
210
-
211
- thead {
212
- display: table-header-group
213
- }
214
-
215
- tr, img {
216
- page-break-inside: avoid
217
- }
218
-
219
- img {
220
- max-width: 100% !important
221
- }
222
-
223
- @page {
224
- margin: 2cm .5cm
225
- }
226
-
227
- p, h2, h3 {
228
- orphans: 3;
229
- widows: 3
230
- }
231
-
232
- h2, h3 {
233
- page-break-after: avoid
234
- }
235
-
236
- .navbar {
237
- display: none
238
- }
239
-
240
- .table td, .table th {
241
- background-color: #fff !important
242
- }
243
-
244
- .btn > .caret, .dropup > .btn > .caret {
245
- border-top-color: #000 !important
246
- }
247
-
248
- .label {
249
- border: 1px solid #000
250
- }
251
-
252
- .table {
253
- border-collapse: collapse !important
254
- }
255
-
256
- .table-bordered th, .table-bordered td {
257
- border: 1px solid #ddd !important
258
- }
259
- }
260
-
261
- *, *:before, *:after {
262
- -webkit-box-sizing: border-box;
263
- -moz-box-sizing: border-box;
264
- box-sizing: border-box
265
- }
266
-
267
- html {
268
- font-size: 62.5%;
269
- -webkit-tap-highlight-color: rgba(0, 0, 0, 0)
270
- }
271
-
272
- body {
273
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
274
- font-size: 14px;
275
- line-height: 1.428571429;
276
- color: #333;
277
- background-color: #fff
278
- }
279
-
280
- input, button, select, textarea {
281
- font-family: inherit;
282
- font-size: inherit;
283
- line-height: inherit
284
- }
285
-
286
- button, input, select[multiple], textarea {
287
- background-image: none
288
- }
289
-
290
- a {
291
- color: #428bca;
292
- text-decoration: none
293
- }
294
-
295
- a:hover, a:focus {
296
- color: #2a6496;
297
- text-decoration: underline
298
- }
299
-
300
- a:focus {
301
- outline: thin dotted #333;
302
- outline: 5px auto -webkit-focus-ring-color;
303
- outline-offset: -2px
304
- }
305
-
306
- img {
307
- vertical-align: middle
308
- }
309
-
310
- .img-responsive {
311
- display: block;
312
- height: auto;
313
- max-width: 100%
314
- }
315
-
316
- .img-rounded {
317
- border-radius: 6px
318
- }
319
-
320
- .img-thumbnail {
321
- display: inline-block;
322
- height: auto;
323
- max-width: 100%;
324
- padding: 4px;
325
- line-height: 1.428571429;
326
- background-color: #fff;
327
- border: 1px solid #ddd;
328
- border-radius: 4px;
329
- -webkit-transition: all .2s ease-in-out;
330
- transition: all .2s ease-in-out
331
- }
332
-
333
- .img-circle {
334
- border-radius: 50%
335
- }
336
-
337
- hr {
338
- margin-top: 20px;
339
- margin-bottom: 20px;
340
- border: 0;
341
- border-top: 1px solid #eee
342
- }
343
-
344
- .sr-only {
345
- position: absolute;
346
- width: 1px;
347
- height: 1px;
348
- padding: 0;
349
- margin: -1px;
350
- overflow: hidden;
351
- clip: rect(0 0 0 0);
352
- border: 0
353
- }
354
-
355
- p {
356
- margin: 0 0 10px
357
- }
358
-
359
- .lead {
360
- margin-bottom: 20px;
361
- font-size: 16.099999999999998px;
362
- font-weight: 200;
363
- line-height: 1.4
364
- }
365
-
366
- @media (min-width: 768px) {
367
- .lead {
368
- font-size: 21px
369
- }
370
- }
371
-
372
- small {
373
- font-size: 85%
374
- }
375
-
376
- cite {
377
- font-style: normal
378
- }
379
-
380
- .text-muted {
381
- color: #999
382
- }
383
-
384
- .text-primary {
385
- color: #428bca
386
- }
387
-
388
- .text-warning {
389
- color: #c09853
390
- }
391
-
392
- .text-danger {
393
- color: #b94a48
394
- }
395
-
396
- .text-success {
397
- color: #468847
398
- }
399
-
400
- .text-info {
401
- color: #3a87ad
402
- }
403
-
404
- .text-left {
405
- text-align: left
406
- }
407
-
408
- .text-right {
409
- text-align: right
410
- }
411
-
412
- .text-center {
413
- text-align: center
414
- }
415
-
416
- h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 {
417
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
418
- font-weight: 500;
419
- line-height: 1.1
420
- }
421
-
422
- h1 small, h2 small, h3 small, h4 small, h5 small, h6 small, .h1 small, .h2 small, .h3 small, .h4 small, .h5 small, .h6 small {
423
- font-weight: normal;
424
- line-height: 1;
425
- color: #999
426
- }
427
-
428
- h1, h2, h3 {
429
- margin-top: 20px;
430
- margin-bottom: 10px
431
- }
432
-
433
- h4, h5, h6 {
434
- margin-top: 10px;
435
- margin-bottom: 10px
436
- }
437
-
438
- h1, .h1 {
439
- font-size: 36px
440
- }
441
-
442
- h2, .h2 {
443
- font-size: 30px
444
- }
445
-
446
- h3, .h3 {
447
- font-size: 24px
448
- }
449
-
450
- h4, .h4 {
451
- font-size: 18px
452
- }
453
-
454
- h5, .h5 {
455
- font-size: 14px
456
- }
457
-
458
- h6, .h6 {
459
- font-size: 12px
460
- }
461
-
462
- h1 small, .h1 small {
463
- font-size: 24px
464
- }
465
-
466
- h2 small, .h2 small {
467
- font-size: 18px
468
- }
469
-
470
- h3 small, .h3 small, h4 small, .h4 small {
471
- font-size: 14px
472
- }
473
-
474
- .page-header {
475
- padding-bottom: 9px;
476
- margin: 40px 0 20px;
477
- border-bottom: 1px solid #eee
478
- }
479
-
480
- ul, ol {
481
- margin-top: 0;
482
- margin-bottom: 10px
483
- }
484
-
485
- ul ul, ol ul, ul ol, ol ol {
486
- margin-bottom: 0
487
- }
488
-
489
- .list-unstyled {
490
- padding-left: 0;
491
- list-style: none
492
- }
493
-
494
- .list-inline {
495
- padding-left: 0;
496
- list-style: none
497
- }
498
-
499
- .list-inline > li {
500
- display: inline-block;
501
- padding-right: 5px;
502
- padding-left: 5px
503
- }
504
-
505
- dl {
506
- margin-bottom: 20px
507
- }
508
-
509
- dt, dd {
510
- line-height: 1.428571429
511
- }
512
-
513
- dt {
514
- font-weight: bold
515
- }
516
-
517
- dd {
518
- margin-left: 0
519
- }
520
-
521
- @media (min-width: 768px) {
522
- .dl-horizontal dt {
523
- float: left;
524
- width: 160px;
525
- overflow: hidden;
526
- clear: left;
527
- text-align: right;
528
- text-overflow: ellipsis;
529
- white-space: nowrap
530
- }
531
-
532
- .dl-horizontal dd {
533
- margin-left: 180px
534
- }
535
-
536
- .dl-horizontal dd:before, .dl-horizontal dd:after {
537
- display: table;
538
- content: " "
539
- }
540
-
541
- .dl-horizontal dd:after {
542
- clear: both
543
- }
544
-
545
- .dl-horizontal dd:before, .dl-horizontal dd:after {
546
- display: table;
547
- content: " "
548
- }
549
-
550
- .dl-horizontal dd:after {
551
- clear: both
552
- }
553
- }
554
-
555
- abbr[title], abbr[data-original-title] {
556
- cursor: help;
557
- border-bottom: 1px dotted #999
558
- }
559
-
560
- abbr.initialism {
561
- font-size: 90%;
562
- text-transform: uppercase
563
- }
564
-
565
- blockquote {
566
- padding: 10px 20px;
567
- margin: 0 0 20px;
568
- border-left: 5px solid #eee
569
- }
570
-
571
- blockquote p {
572
- font-size: 17.5px;
573
- font-weight: 300;
574
- line-height: 1.25
575
- }
576
-
577
- blockquote p:last-child {
578
- margin-bottom: 0
579
- }
580
-
581
- blockquote small {
582
- display: block;
583
- line-height: 1.428571429;
584
- color: #999
585
- }
586
-
587
- blockquote small:before {
588
- content: '\2014 \00A0'
589
- }
590
-
591
- blockquote.pull-right {
592
- padding-right: 15px;
593
- padding-left: 0;
594
- border-right: 5px solid #eee;
595
- border-left: 0
596
- }
597
-
598
- blockquote.pull-right p, blockquote.pull-right small {
599
- text-align: right
600
- }
601
-
602
- blockquote.pull-right small:before {
603
- content: ''
604
- }
605
-
606
- blockquote.pull-right small:after {
607
- content: '\00A0 \2014'
608
- }
609
-
610
- q:before, q:after, blockquote:before, blockquote:after {
611
- content: ""
612
- }
613
-
614
- address {
615
- display: block;
616
- margin-bottom: 20px;
617
- font-style: normal;
618
- line-height: 1.428571429
619
- }
620
-
621
- code, pre {
622
- font-family: Monaco, Menlo, Consolas, "Courier New", monospace
623
- }
624
-
625
- code {
626
- padding: 2px 4px;
627
- font-size: 90%;
628
- color: #c7254e;
629
- white-space: nowrap;
630
- background-color: #f9f2f4;
631
- border-radius: 4px
632
- }
633
-
634
- pre {
635
- display: block;
636
- padding: 9.5px;
637
- margin: 0 0 10px;
638
- font-size: 13px;
639
- line-height: 1.428571429;
640
- color: #333;
641
- word-break: break-all;
642
- word-wrap: break-word;
643
- background-color: #f5f5f5;
644
- border: 1px solid #ccc;
645
- border-radius: 4px
646
- }
647
-
648
- pre.prettyprint {
649
- margin-bottom: 20px
650
- }
651
-
652
- pre code {
653
- padding: 0;
654
- font-size: inherit;
655
- color: inherit;
656
- white-space: pre-wrap;
657
- background-color: transparent;
658
- border: 0
659
- }
660
-
661
- .pre-scrollable {
662
- max-height: 340px;
663
- overflow-y: scroll
664
- }
665
-
666
- .container {
667
- padding-right: 15px;
668
- padding-left: 15px;
669
- margin-right: auto;
670
- margin-left: auto
671
- }
672
-
673
- .container:before, .container:after {
674
- display: table;
675
- content: " "
676
- }
677
-
678
- .container:after {
679
- clear: both
680
- }
681
-
682
- .container:before, .container:after {
683
- display: table;
684
- content: " "
685
- }
686
-
687
- .container:after {
688
- clear: both
689
- }
690
-
691
- .row {
692
- margin-right: -15px;
693
- margin-left: -15px
694
- }
695
-
696
- .row:before, .row:after {
697
- display: table;
698
- content: " "
699
- }
700
-
701
- .row:after {
702
- clear: both
703
- }
704
-
705
- .row:before, .row:after {
706
- display: table;
707
- content: " "
708
- }
709
-
710
- .row:after {
711
- clear: both
712
- }
713
-
714
- .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
715
- position: relative;
716
- min-height: 1px;
717
- padding-right: 15px;
718
- padding-left: 15px
719
- }
720
-
721
- .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11 {
722
- float: left
723
- }
724
-
725
- .col-xs-1 {
726
- width: 8.333333333333332%
727
- }
728
-
729
- .col-xs-2 {
730
- width: 16.666666666666664%
731
- }
732
-
733
- .col-xs-3 {
734
- width: 25%
735
- }
736
-
737
- .col-xs-4 {
738
- width: 33.33333333333333%
739
- }
740
-
741
- .col-xs-5 {
742
- width: 41.66666666666667%
743
- }
744
-
745
- .col-xs-6 {
746
- width: 50%
747
- }
748
-
749
- .col-xs-7 {
750
- width: 58.333333333333336%
751
- }
752
-
753
- .col-xs-8 {
754
- width: 66.66666666666666%
755
- }
756
-
757
- .col-xs-9 {
758
- width: 75%
759
- }
760
-
761
- .col-xs-10 {
762
- width: 83.33333333333334%
763
- }
764
-
765
- .col-xs-11 {
766
- width: 91.66666666666666%
767
- }
768
-
769
- .col-xs-12 {
770
- width: 100%
771
- }
772
-
773
- @media (min-width: 768px) {
774
- .container {
775
- max-width: 750px
776
- }
777
-
778
- .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11 {
779
- float: left
780
- }
781
-
782
- .col-sm-1 {
783
- width: 8.333333333333332%
784
- }
785
-
786
- .col-sm-2 {
787
- width: 16.666666666666664%
788
- }
789
-
790
- .col-sm-3 {
791
- width: 25%
792
- }
793
-
794
- .col-sm-4 {
795
- width: 33.33333333333333%
796
- }
797
-
798
- .col-sm-5 {
799
- width: 41.66666666666667%
800
- }
801
-
802
- .col-sm-6 {
803
- width: 50%
804
- }
805
-
806
- .col-sm-7 {
807
- width: 58.333333333333336%
808
- }
809
-
810
- .col-sm-8 {
811
- width: 66.66666666666666%
812
- }
813
-
814
- .col-sm-9 {
815
- width: 75%
816
- }
817
-
818
- .col-sm-10 {
819
- width: 83.33333333333334%
820
- }
821
-
822
- .col-sm-11 {
823
- width: 91.66666666666666%
824
- }
825
-
826
- .col-sm-12 {
827
- width: 100%
828
- }
829
-
830
- .col-sm-push-1 {
831
- left: 8.333333333333332%
832
- }
833
-
834
- .col-sm-push-2 {
835
- left: 16.666666666666664%
836
- }
837
-
838
- .col-sm-push-3 {
839
- left: 25%
840
- }
841
-
842
- .col-sm-push-4 {
843
- left: 33.33333333333333%
844
- }
845
-
846
- .col-sm-push-5 {
847
- left: 41.66666666666667%
848
- }
849
-
850
- .col-sm-push-6 {
851
- left: 50%
852
- }
853
-
854
- .col-sm-push-7 {
855
- left: 58.333333333333336%
856
- }
857
-
858
- .col-sm-push-8 {
859
- left: 66.66666666666666%
860
- }
861
-
862
- .col-sm-push-9 {
863
- left: 75%
864
- }
865
-
866
- .col-sm-push-10 {
867
- left: 83.33333333333334%
868
- }
869
-
870
- .col-sm-push-11 {
871
- left: 91.66666666666666%
872
- }
873
-
874
- .col-sm-pull-1 {
875
- right: 8.333333333333332%
876
- }
877
-
878
- .col-sm-pull-2 {
879
- right: 16.666666666666664%
880
- }
881
-
882
- .col-sm-pull-3 {
883
- right: 25%
884
- }
885
-
886
- .col-sm-pull-4 {
887
- right: 33.33333333333333%
888
- }
889
-
890
- .col-sm-pull-5 {
891
- right: 41.66666666666667%
892
- }
893
-
894
- .col-sm-pull-6 {
895
- right: 50%
896
- }
897
-
898
- .col-sm-pull-7 {
899
- right: 58.333333333333336%
900
- }
901
-
902
- .col-sm-pull-8 {
903
- right: 66.66666666666666%
904
- }
905
-
906
- .col-sm-pull-9 {
907
- right: 75%
908
- }
909
-
910
- .col-sm-pull-10 {
911
- right: 83.33333333333334%
912
- }
913
-
914
- .col-sm-pull-11 {
915
- right: 91.66666666666666%
916
- }
917
-
918
- .col-sm-offset-1 {
919
- margin-left: 8.333333333333332%
920
- }
921
-
922
- .col-sm-offset-2 {
923
- margin-left: 16.666666666666664%
924
- }
925
-
926
- .col-sm-offset-3 {
927
- margin-left: 25%
928
- }
929
-
930
- .col-sm-offset-4 {
931
- margin-left: 33.33333333333333%
932
- }
933
-
934
- .col-sm-offset-5 {
935
- margin-left: 41.66666666666667%
936
- }
937
-
938
- .col-sm-offset-6 {
939
- margin-left: 50%
940
- }
941
-
942
- .col-sm-offset-7 {
943
- margin-left: 58.333333333333336%
944
- }
945
-
946
- .col-sm-offset-8 {
947
- margin-left: 66.66666666666666%
948
- }
949
-
950
- .col-sm-offset-9 {
951
- margin-left: 75%
952
- }
953
-
954
- .col-sm-offset-10 {
955
- margin-left: 83.33333333333334%
956
- }
957
-
958
- .col-sm-offset-11 {
959
- margin-left: 91.66666666666666%
960
- }
961
- }
962
-
963
- @media (min-width: 992px) {
964
- .container {
965
- max-width: 970px
966
- }
967
-
968
- .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11 {
969
- float: left
970
- }
971
-
972
- .col-md-1 {
973
- width: 8.333333333333332%
974
- }
975
-
976
- .col-md-2 {
977
- width: 16.666666666666664%
978
- }
979
-
980
- .col-md-3 {
981
- width: 25%
982
- }
983
-
984
- .col-md-4 {
985
- width: 33.33333333333333%
986
- }
987
-
988
- .col-md-5 {
989
- width: 41.66666666666667%
990
- }
991
-
992
- .col-md-6 {
993
- width: 50%
994
- }
995
-
996
- .col-md-7 {
997
- width: 58.333333333333336%
998
- }
999
-
1000
- .col-md-8 {
1001
- width: 66.66666666666666%
1002
- }
1003
-
1004
- .col-md-9 {
1005
- width: 75%
1006
- }
1007
-
1008
- .col-md-10 {
1009
- width: 83.33333333333334%
1010
- }
1011
-
1012
- .col-md-11 {
1013
- width: 91.66666666666666%
1014
- }
1015
-
1016
- .col-md-12 {
1017
- width: 100%
1018
- }
1019
-
1020
- .col-md-push-0 {
1021
- left: auto
1022
- }
1023
-
1024
- .col-md-push-1 {
1025
- left: 8.333333333333332%
1026
- }
1027
-
1028
- .col-md-push-2 {
1029
- left: 16.666666666666664%
1030
- }
1031
-
1032
- .col-md-push-3 {
1033
- left: 25%
1034
- }
1035
-
1036
- .col-md-push-4 {
1037
- left: 33.33333333333333%
1038
- }
1039
-
1040
- .col-md-push-5 {
1041
- left: 41.66666666666667%
1042
- }
1043
-
1044
- .col-md-push-6 {
1045
- left: 50%
1046
- }
1047
-
1048
- .col-md-push-7 {
1049
- left: 58.333333333333336%
1050
- }
1051
-
1052
- .col-md-push-8 {
1053
- left: 66.66666666666666%
1054
- }
1055
-
1056
- .col-md-push-9 {
1057
- left: 75%
1058
- }
1059
-
1060
- .col-md-push-10 {
1061
- left: 83.33333333333334%
1062
- }
1063
-
1064
- .col-md-push-11 {
1065
- left: 91.66666666666666%
1066
- }
1067
-
1068
- .col-md-pull-0 {
1069
- right: auto
1070
- }
1071
-
1072
- .col-md-pull-1 {
1073
- right: 8.333333333333332%
1074
- }
1075
-
1076
- .col-md-pull-2 {
1077
- right: 16.666666666666664%
1078
- }
1079
-
1080
- .col-md-pull-3 {
1081
- right: 25%
1082
- }
1083
-
1084
- .col-md-pull-4 {
1085
- right: 33.33333333333333%
1086
- }
1087
-
1088
- .col-md-pull-5 {
1089
- right: 41.66666666666667%
1090
- }
1091
-
1092
- .col-md-pull-6 {
1093
- right: 50%
1094
- }
1095
-
1096
- .col-md-pull-7 {
1097
- right: 58.333333333333336%
1098
- }
1099
-
1100
- .col-md-pull-8 {
1101
- right: 66.66666666666666%
1102
- }
1103
-
1104
- .col-md-pull-9 {
1105
- right: 75%
1106
- }
1107
-
1108
- .col-md-pull-10 {
1109
- right: 83.33333333333334%
1110
- }
1111
-
1112
- .col-md-pull-11 {
1113
- right: 91.66666666666666%
1114
- }
1115
-
1116
- .col-md-offset-0 {
1117
- margin-left: 0
1118
- }
1119
-
1120
- .col-md-offset-1 {
1121
- margin-left: 8.333333333333332%
1122
- }
1123
-
1124
- .col-md-offset-2 {
1125
- margin-left: 16.666666666666664%
1126
- }
1127
-
1128
- .col-md-offset-3 {
1129
- margin-left: 25%
1130
- }
1131
-
1132
- .col-md-offset-4 {
1133
- margin-left: 33.33333333333333%
1134
- }
1135
-
1136
- .col-md-offset-5 {
1137
- margin-left: 41.66666666666667%
1138
- }
1139
-
1140
- .col-md-offset-6 {
1141
- margin-left: 50%
1142
- }
1143
-
1144
- .col-md-offset-7 {
1145
- margin-left: 58.333333333333336%
1146
- }
1147
-
1148
- .col-md-offset-8 {
1149
- margin-left: 66.66666666666666%
1150
- }
1151
-
1152
- .col-md-offset-9 {
1153
- margin-left: 75%
1154
- }
1155
-
1156
- .col-md-offset-10 {
1157
- margin-left: 83.33333333333334%
1158
- }
1159
-
1160
- .col-md-offset-11 {
1161
- margin-left: 91.66666666666666%
1162
- }
1163
- }
1164
-
1165
- @media (min-width: 1200px) {
1166
- .container {
1167
- max-width: 1170px
1168
- }
1169
-
1170
- .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11 {
1171
- float: left
1172
- }
1173
-
1174
- .col-lg-1 {
1175
- width: 8.333333333333332%
1176
- }
1177
-
1178
- .col-lg-2 {
1179
- width: 16.666666666666664%
1180
- }
1181
-
1182
- .col-lg-3 {
1183
- width: 25%
1184
- }
1185
-
1186
- .col-lg-4 {
1187
- width: 33.33333333333333%
1188
- }
1189
-
1190
- .col-lg-5 {
1191
- width: 41.66666666666667%
1192
- }
1193
-
1194
- .col-lg-6 {
1195
- width: 50%
1196
- }
1197
-
1198
- .col-lg-7 {
1199
- width: 58.333333333333336%
1200
- }
1201
-
1202
- .col-lg-8 {
1203
- width: 66.66666666666666%
1204
- }
1205
-
1206
- .col-lg-9 {
1207
- width: 75%
1208
- }
1209
-
1210
- .col-lg-10 {
1211
- width: 83.33333333333334%
1212
- }
1213
-
1214
- .col-lg-11 {
1215
- width: 91.66666666666666%
1216
- }
1217
-
1218
- .col-lg-12 {
1219
- width: 100%
1220
- }
1221
-
1222
- .col-lg-push-0 {
1223
- left: auto
1224
- }
1225
-
1226
- .col-lg-push-1 {
1227
- left: 8.333333333333332%
1228
- }
1229
-
1230
- .col-lg-push-2 {
1231
- left: 16.666666666666664%
1232
- }
1233
-
1234
- .col-lg-push-3 {
1235
- left: 25%
1236
- }
1237
-
1238
- .col-lg-push-4 {
1239
- left: 33.33333333333333%
1240
- }
1241
-
1242
- .col-lg-push-5 {
1243
- left: 41.66666666666667%
1244
- }
1245
-
1246
- .col-lg-push-6 {
1247
- left: 50%
1248
- }
1249
-
1250
- .col-lg-push-7 {
1251
- left: 58.333333333333336%
1252
- }
1253
-
1254
- .col-lg-push-8 {
1255
- left: 66.66666666666666%
1256
- }
1257
-
1258
- .col-lg-push-9 {
1259
- left: 75%
1260
- }
1261
-
1262
- .col-lg-push-10 {
1263
- left: 83.33333333333334%
1264
- }
1265
-
1266
- .col-lg-push-11 {
1267
- left: 91.66666666666666%
1268
- }
1269
-
1270
- .col-lg-pull-0 {
1271
- right: auto
1272
- }
1273
-
1274
- .col-lg-pull-1 {
1275
- right: 8.333333333333332%
1276
- }
1277
-
1278
- .col-lg-pull-2 {
1279
- right: 16.666666666666664%
1280
- }
1281
-
1282
- .col-lg-pull-3 {
1283
- right: 25%
1284
- }
1285
-
1286
- .col-lg-pull-4 {
1287
- right: 33.33333333333333%
1288
- }
1289
-
1290
- .col-lg-pull-5 {
1291
- right: 41.66666666666667%
1292
- }
1293
-
1294
- .col-lg-pull-6 {
1295
- right: 50%
1296
- }
1297
-
1298
- .col-lg-pull-7 {
1299
- right: 58.333333333333336%
1300
- }
1301
-
1302
- .col-lg-pull-8 {
1303
- right: 66.66666666666666%
1304
- }
1305
-
1306
- .col-lg-pull-9 {
1307
- right: 75%
1308
- }
1309
-
1310
- .col-lg-pull-10 {
1311
- right: 83.33333333333334%
1312
- }
1313
-
1314
- .col-lg-pull-11 {
1315
- right: 91.66666666666666%
1316
- }
1317
-
1318
- .col-lg-offset-0 {
1319
- margin-left: 0
1320
- }
1321
-
1322
- .col-lg-offset-1 {
1323
- margin-left: 8.333333333333332%
1324
- }
1325
-
1326
- .col-lg-offset-2 {
1327
- margin-left: 16.666666666666664%
1328
- }
1329
-
1330
- .col-lg-offset-3 {
1331
- margin-left: 25%
1332
- }
1333
-
1334
- .col-lg-offset-4 {
1335
- margin-left: 33.33333333333333%
1336
- }
1337
-
1338
- .col-lg-offset-5 {
1339
- margin-left: 41.66666666666667%
1340
- }
1341
-
1342
- .col-lg-offset-6 {
1343
- margin-left: 50%
1344
- }
1345
-
1346
- .col-lg-offset-7 {
1347
- margin-left: 58.333333333333336%
1348
- }
1349
-
1350
- .col-lg-offset-8 {
1351
- margin-left: 66.66666666666666%
1352
- }
1353
-
1354
- .col-lg-offset-9 {
1355
- margin-left: 75%
1356
- }
1357
-
1358
- .col-lg-offset-10 {
1359
- margin-left: 83.33333333333334%
1360
- }
1361
-
1362
- .col-lg-offset-11 {
1363
- margin-left: 91.66666666666666%
1364
- }
1365
- }
1366
-
1367
- table {
1368
- max-width: 100%;
1369
- background-color: transparent
1370
- }
1371
-
1372
- th {
1373
- text-align: left
1374
- }
1375
-
1376
- .table {
1377
- width: 100%;
1378
- margin-bottom: 20px
1379
- }
1380
-
1381
- .table thead > tr > th, .table tbody > tr > th, .table tfoot > tr > th, .table thead > tr > td, .table tbody > tr > td, .table tfoot > tr > td {
1382
- padding: 8px;
1383
- line-height: 1.428571429;
1384
- vertical-align: top;
1385
- border-top: 1px solid #ddd
1386
- }
1387
-
1388
- .table thead > tr > th {
1389
- vertical-align: bottom;
1390
- border-bottom: 2px solid #ddd
1391
- }
1392
-
1393
- .table caption + thead tr:first-child th, .table colgroup + thead tr:first-child th, .table thead:first-child tr:first-child th, .table caption + thead tr:first-child td, .table colgroup + thead tr:first-child td, .table thead:first-child tr:first-child td {
1394
- border-top: 0
1395
- }
1396
-
1397
- .table tbody + tbody {
1398
- border-top: 2px solid #ddd
1399
- }
1400
-
1401
- .table .table {
1402
- background-color: #fff
1403
- }
1404
-
1405
- .table-condensed thead > tr > th, .table-condensed tbody > tr > th, .table-condensed tfoot > tr > th, .table-condensed thead > tr > td, .table-condensed tbody > tr > td, .table-condensed tfoot > tr > td {
1406
- padding: 5px
1407
- }
1408
-
1409
- .table-bordered {
1410
- border: 1px solid #ddd
1411
- }
1412
-
1413
- .table-bordered > thead > tr > th, .table-bordered > tbody > tr > th, .table-bordered > tfoot > tr > th, .table-bordered > thead > tr > td, .table-bordered > tbody > tr > td, .table-bordered > tfoot > tr > td {
1414
- border: 1px solid #ddd
1415
- }
1416
-
1417
- .table-bordered > thead > tr > th, .table-bordered > thead > tr > td {
1418
- border-bottom-width: 2px
1419
- }
1420
-
1421
- .table-striped > tbody > tr:nth-child(odd) > td, .table-striped > tbody > tr:nth-child(odd) > th {
1422
- background-color: #f9f9f9
1423
- }
1424
-
1425
- .table-hover > tbody > tr:hover > td, .table-hover > tbody > tr:hover > th {
1426
- background-color: #f5f5f5
1427
- }
1428
-
1429
- table col[class*="col-"] {
1430
- display: table-column;
1431
- float: none
1432
- }
1433
-
1434
- table td[class*="col-"], table th[class*="col-"] {
1435
- display: table-cell;
1436
- float: none
1437
- }
1438
-
1439
- .table > thead > tr > td.active, .table > tbody > tr > td.active, .table > tfoot > tr > td.active, .table > thead > tr > th.active, .table > tbody > tr > th.active, .table > tfoot > tr > th.active, .table > thead > tr.active > td, .table > tbody > tr.active > td, .table > tfoot > tr.active > td, .table > thead > tr.active > th, .table > tbody > tr.active > th, .table > tfoot > tr.active > th {
1440
- background-color: #f5f5f5
1441
- }
1442
-
1443
- .table > thead > tr > td.success, .table > tbody > tr > td.success, .table > tfoot > tr > td.success, .table > thead > tr > th.success, .table > tbody > tr > th.success, .table > tfoot > tr > th.success, .table > thead > tr.success > td, .table > tbody > tr.success > td, .table > tfoot > tr.success > td, .table > thead > tr.success > th, .table > tbody > tr.success > th, .table > tfoot > tr.success > th {
1444
- background-color: #dff0d8;
1445
- border-color: #d6e9c6
1446
- }
1447
-
1448
- .table-hover > tbody > tr > td.success:hover, .table-hover > tbody > tr > th.success:hover, .table-hover > tbody > tr.success:hover > td {
1449
- background-color: #d0e9c6;
1450
- border-color: #c9e2b3
1451
- }
1452
-
1453
- .table > thead > tr > td.danger, .table > tbody > tr > td.danger, .table > tfoot > tr > td.danger, .table > thead > tr > th.danger, .table > tbody > tr > th.danger, .table > tfoot > tr > th.danger, .table > thead > tr.danger > td, .table > tbody > tr.danger > td, .table > tfoot > tr.danger > td, .table > thead > tr.danger > th, .table > tbody > tr.danger > th, .table > tfoot > tr.danger > th {
1454
- background-color: #f2dede;
1455
- border-color: #eed3d7
1456
- }
1457
-
1458
- .table-hover > tbody > tr > td.danger:hover, .table-hover > tbody > tr > th.danger:hover, .table-hover > tbody > tr.danger:hover > td {
1459
- background-color: #ebcccc;
1460
- border-color: #e6c1c7
1461
- }
1462
-
1463
- .table > thead > tr > td.warning, .table > tbody > tr > td.warning, .table > tfoot > tr > td.warning, .table > thead > tr > th.warning, .table > tbody > tr > th.warning, .table > tfoot > tr > th.warning, .table > thead > tr.warning > td, .table > tbody > tr.warning > td, .table > tfoot > tr.warning > td, .table > thead > tr.warning > th, .table > tbody > tr.warning > th, .table > tfoot > tr.warning > th {
1464
- background-color: #fcf8e3;
1465
- border-color: #fbeed5
1466
- }
1467
-
1468
- .table-hover > tbody > tr > td.warning:hover, .table-hover > tbody > tr > th.warning:hover, .table-hover > tbody > tr.warning:hover > td {
1469
- background-color: #faf2cc;
1470
- border-color: #f8e5be
1471
- }
1472
-
1473
- @media (max-width: 768px) {
1474
- .table-responsive {
1475
- width: 100%;
1476
- margin-bottom: 15px;
1477
- overflow-x: scroll;
1478
- overflow-y: hidden;
1479
- border: 1px solid #ddd
1480
- }
1481
-
1482
- .table-responsive > .table {
1483
- margin-bottom: 0;
1484
- background-color: #fff
1485
- }
1486
-
1487
- .table-responsive > .table > thead > tr > th, .table-responsive > .table > tbody > tr > th, .table-responsive > .table > tfoot > tr > th, .table-responsive > .table > thead > tr > td, .table-responsive > .table > tbody > tr > td, .table-responsive > .table > tfoot > tr > td {
1488
- white-space: nowrap
1489
- }
1490
-
1491
- .table-responsive > .table-bordered {
1492
- border: 0
1493
- }
1494
-
1495
- .table-responsive > .table-bordered > thead > tr > th:first-child, .table-responsive > .table-bordered > tbody > tr > th:first-child, .table-responsive > .table-bordered > tfoot > tr > th:first-child, .table-responsive > .table-bordered > thead > tr > td:first-child, .table-responsive > .table-bordered > tbody > tr > td:first-child, .table-responsive > .table-bordered > tfoot > tr > td:first-child {
1496
- border-left: 0
1497
- }
1498
-
1499
- .table-responsive > .table-bordered > thead > tr > th:last-child, .table-responsive > .table-bordered > tbody > tr > th:last-child, .table-responsive > .table-bordered > tfoot > tr > th:last-child, .table-responsive > .table-bordered > thead > tr > td:last-child, .table-responsive > .table-bordered > tbody > tr > td:last-child, .table-responsive > .table-bordered > tfoot > tr > td:last-child {
1500
- border-right: 0
1501
- }
1502
-
1503
- .table-responsive > .table-bordered > thead > tr:last-child > th, .table-responsive > .table-bordered > tbody > tr:last-child > th, .table-responsive > .table-bordered > tfoot > tr:last-child > th, .table-responsive > .table-bordered > thead > tr:last-child > td, .table-responsive > .table-bordered > tbody > tr:last-child > td, .table-responsive > .table-bordered > tfoot > tr:last-child > td {
1504
- border-bottom: 0
1505
- }
1506
- }
1507
-
1508
- fieldset {
1509
- padding: 0;
1510
- margin: 0;
1511
- border: 0
1512
- }
1513
-
1514
- legend {
1515
- display: block;
1516
- width: 100%;
1517
- padding: 0;
1518
- margin-bottom: 20px;
1519
- font-size: 21px;
1520
- line-height: inherit;
1521
- color: #333;
1522
- border: 0;
1523
- border-bottom: 1px solid #e5e5e5
1524
- }
1525
-
1526
- label {
1527
- display: inline-block;
1528
- margin-bottom: 5px;
1529
- font-weight: bold
1530
- }
1531
-
1532
- input[type="search"] {
1533
- -webkit-box-sizing: border-box;
1534
- -moz-box-sizing: border-box;
1535
- box-sizing: border-box
1536
- }
1537
-
1538
- input[type="radio"], input[type="checkbox"] {
1539
- margin: 4px 0 0;
1540
- margin-top: 1px \9;
1541
- line-height: normal
1542
- }
1543
-
1544
- input[type="file"] {
1545
- display: block
1546
- }
1547
-
1548
- select[multiple], select[size] {
1549
- height: auto
1550
- }
1551
-
1552
- select optgroup {
1553
- font-family: inherit;
1554
- font-size: inherit;
1555
- font-style: inherit
1556
- }
1557
-
1558
- input[type="file"]:focus, input[type="radio"]:focus, input[type="checkbox"]:focus {
1559
- outline: thin dotted #333;
1560
- outline: 5px auto -webkit-focus-ring-color;
1561
- outline-offset: -2px
1562
- }
1563
-
1564
- input[type="number"]::-webkit-outer-spin-button, input[type="number"]::-webkit-inner-spin-button {
1565
- height: auto
1566
- }
1567
-
1568
- .form-control:-moz-placeholder {
1569
- color: #999
1570
- }
1571
-
1572
- .form-control::-moz-placeholder {
1573
- color: #999
1574
- }
1575
-
1576
- .form-control:-ms-input-placeholder {
1577
- color: #999
1578
- }
1579
-
1580
- .form-control::-webkit-input-placeholder {
1581
- color: #999
1582
- }
1583
-
1584
- .form-control {
1585
- display: block;
1586
- width: 100%;
1587
- height: 34px;
1588
- padding: 6px 12px;
1589
- font-size: 14px;
1590
- line-height: 1.428571429;
1591
- color: #555;
1592
- vertical-align: middle;
1593
- background-color: #fff;
1594
- border: 1px solid #ccc;
1595
- border-radius: 4px;
1596
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1597
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1598
- -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
1599
- transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s
1600
- }
1601
-
1602
- .form-control:focus {
1603
- border-color: #66afe9;
1604
- outline: 0;
1605
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
1606
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6)
1607
- }
1608
-
1609
- .form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control {
1610
- cursor: not-allowed;
1611
- background-color: #eee
1612
- }
1613
-
1614
- textarea.form-control {
1615
- height: auto
1616
- }
1617
-
1618
- .form-group {
1619
- margin-bottom: 15px
1620
- }
1621
-
1622
- .radio, .checkbox {
1623
- display: block;
1624
- min-height: 20px;
1625
- padding-left: 20px;
1626
- margin-top: 10px;
1627
- margin-bottom: 10px;
1628
- vertical-align: middle
1629
- }
1630
-
1631
- .radio label, .checkbox label {
1632
- display: inline;
1633
- margin-bottom: 0;
1634
- font-weight: normal;
1635
- cursor: pointer
1636
- }
1637
-
1638
- .radio input[type="radio"], .radio-inline input[type="radio"], .checkbox input[type="checkbox"], .checkbox-inline input[type="checkbox"] {
1639
- float: left;
1640
- margin-left: -20px
1641
- }
1642
-
1643
- .radio + .radio, .checkbox + .checkbox {
1644
- margin-top: -5px
1645
- }
1646
-
1647
- .radio-inline, .checkbox-inline {
1648
- display: inline-block;
1649
- padding-left: 20px;
1650
- margin-bottom: 0;
1651
- font-weight: normal;
1652
- vertical-align: middle;
1653
- cursor: pointer
1654
- }
1655
-
1656
- .radio-inline + .radio-inline, .checkbox-inline + .checkbox-inline {
1657
- margin-top: 0;
1658
- margin-left: 10px
1659
- }
1660
-
1661
- input[type="radio"][disabled], input[type="checkbox"][disabled], .radio[disabled], .radio-inline[disabled], .checkbox[disabled], .checkbox-inline[disabled], fieldset[disabled] input[type="radio"], fieldset[disabled] input[type="checkbox"], fieldset[disabled] .radio, fieldset[disabled] .radio-inline, fieldset[disabled] .checkbox, fieldset[disabled] .checkbox-inline {
1662
- cursor: not-allowed
1663
- }
1664
-
1665
- .input-sm {
1666
- height: 30px;
1667
- padding: 5px 10px;
1668
- font-size: 12px;
1669
- line-height: 1.5;
1670
- border-radius: 3px
1671
- }
1672
-
1673
- select.input-sm {
1674
- height: 30px;
1675
- line-height: 30px
1676
- }
1677
-
1678
- textarea.input-sm {
1679
- height: auto
1680
- }
1681
-
1682
- .input-lg {
1683
- height: 45px;
1684
- padding: 10px 16px;
1685
- font-size: 18px;
1686
- line-height: 1.33;
1687
- border-radius: 6px
1688
- }
1689
-
1690
- select.input-lg {
1691
- height: 45px;
1692
- line-height: 45px
1693
- }
1694
-
1695
- textarea.input-lg {
1696
- height: auto
1697
- }
1698
-
1699
- .has-warning .help-block, .has-warning .control-label {
1700
- color: #c09853
1701
- }
1702
-
1703
- .has-warning .form-control {
1704
- border-color: #c09853;
1705
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1706
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075)
1707
- }
1708
-
1709
- .has-warning .form-control:focus {
1710
- border-color: #a47e3c;
1711
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
1712
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e
1713
- }
1714
-
1715
- .has-warning .input-group-addon {
1716
- color: #c09853;
1717
- background-color: #fcf8e3;
1718
- border-color: #c09853
1719
- }
1720
-
1721
- .has-error .help-block, .has-error .control-label {
1722
- color: #b94a48
1723
- }
1724
-
1725
- .has-error .form-control {
1726
- border-color: #b94a48;
1727
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1728
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075)
1729
- }
1730
-
1731
- .has-error .form-control:focus {
1732
- border-color: #953b39;
1733
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
1734
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392
1735
- }
1736
-
1737
- .has-error .input-group-addon {
1738
- color: #b94a48;
1739
- background-color: #f2dede;
1740
- border-color: #b94a48
1741
- }
1742
-
1743
- .has-success .help-block, .has-success .control-label {
1744
- color: #468847
1745
- }
1746
-
1747
- .has-success .form-control {
1748
- border-color: #468847;
1749
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1750
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075)
1751
- }
1752
-
1753
- .has-success .form-control:focus {
1754
- border-color: #356635;
1755
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
1756
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b
1757
- }
1758
-
1759
- .has-success .input-group-addon {
1760
- color: #468847;
1761
- background-color: #dff0d8;
1762
- border-color: #468847
1763
- }
1764
-
1765
- .form-control-static {
1766
- padding-top: 7px;
1767
- margin-bottom: 0
1768
- }
1769
-
1770
- .help-block {
1771
- display: block;
1772
- margin-top: 5px;
1773
- margin-bottom: 10px;
1774
- color: #737373
1775
- }
1776
-
1777
- @media (min-width: 768px) {
1778
- .form-inline .form-group {
1779
- display: inline-block;
1780
- margin-bottom: 0;
1781
- vertical-align: middle
1782
- }
1783
-
1784
- .form-inline .form-control {
1785
- display: inline-block
1786
- }
1787
-
1788
- .form-inline .radio, .form-inline .checkbox {
1789
- display: inline-block;
1790
- padding-left: 0;
1791
- margin-top: 0;
1792
- margin-bottom: 0
1793
- }
1794
-
1795
- .form-inline .radio input[type="radio"], .form-inline .checkbox input[type="checkbox"] {
1796
- float: none;
1797
- margin-left: 0
1798
- }
1799
- }
1800
-
1801
- .form-horizontal .control-label, .form-horizontal .radio, .form-horizontal .checkbox, .form-horizontal .radio-inline, .form-horizontal .checkbox-inline {
1802
- padding-top: 7px;
1803
- margin-top: 0;
1804
- margin-bottom: 0
1805
- }
1806
-
1807
- .form-horizontal .form-group {
1808
- margin-right: -15px;
1809
- margin-left: -15px
1810
- }
1811
-
1812
- .form-horizontal .form-group:before, .form-horizontal .form-group:after {
1813
- display: table;
1814
- content: " "
1815
- }
1816
-
1817
- .form-horizontal .form-group:after {
1818
- clear: both
1819
- }
1820
-
1821
- .form-horizontal .form-group:before, .form-horizontal .form-group:after {
1822
- display: table;
1823
- content: " "
1824
- }
1825
-
1826
- .form-horizontal .form-group:after {
1827
- clear: both
1828
- }
1829
-
1830
- @media (min-width: 768px) {
1831
- .form-horizontal .control-label {
1832
- text-align: right
1833
- }
1834
- }
1835
-
1836
- .btn {
1837
- display: inline-block;
1838
- padding: 6px 12px;
1839
- margin-bottom: 0;
1840
- font-size: 14px;
1841
- font-weight: normal;
1842
- line-height: 1.428571429;
1843
- text-align: center;
1844
- white-space: nowrap;
1845
- vertical-align: middle;
1846
- cursor: pointer;
1847
- border: 1px solid transparent;
1848
- border-radius: 4px;
1849
- -webkit-user-select: none;
1850
- -moz-user-select: none;
1851
- -ms-user-select: none;
1852
- -o-user-select: none;
1853
- user-select: none
1854
- }
1855
-
1856
- .btn:focus {
1857
- outline: thin dotted #333;
1858
- outline: 5px auto -webkit-focus-ring-color;
1859
- outline-offset: -2px
1860
- }
1861
-
1862
- .btn:hover, .btn:focus {
1863
- color: #333;
1864
- text-decoration: none
1865
- }
1866
-
1867
- .btn:active, .btn.active {
1868
- background-image: none;
1869
- outline: 0;
1870
- -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
1871
- box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125)
1872
- }
1873
-
1874
- .btn.disabled, .btn[disabled], fieldset[disabled] .btn {
1875
- pointer-events: none;
1876
- cursor: not-allowed;
1877
- opacity: .65;
1878
- filter: alpha(opacity=65);
1879
- -webkit-box-shadow: none;
1880
- box-shadow: none
1881
- }
1882
-
1883
- .btn-default {
1884
- color: #333;
1885
- background-color: #fff;
1886
- border-color: #ccc
1887
- }
1888
-
1889
- .btn-default:hover, .btn-default:focus, .btn-default:active, .btn-default.active, .open .dropdown-toggle.btn-default {
1890
- color: #333;
1891
- background-color: #ebebeb;
1892
- border-color: #adadad
1893
- }
1894
-
1895
- .btn-default:active, .btn-default.active, .open .dropdown-toggle.btn-default {
1896
- background-image: none
1897
- }
1898
-
1899
- .btn-default.disabled, .btn-default[disabled], fieldset[disabled] .btn-default, .btn-default.disabled:hover, .btn-default[disabled]:hover, fieldset[disabled] .btn-default:hover, .btn-default.disabled:focus, .btn-default[disabled]:focus, fieldset[disabled] .btn-default:focus, .btn-default.disabled:active, .btn-default[disabled]:active, fieldset[disabled] .btn-default:active, .btn-default.disabled.active, .btn-default[disabled].active, fieldset[disabled] .btn-default.active {
1900
- background-color: #fff;
1901
- border-color: #ccc
1902
- }
1903
-
1904
- .btn-primary {
1905
- color: #fff;
1906
- background-color: #428bca;
1907
- border-color: #357ebd
1908
- }
1909
-
1910
- .btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .open .dropdown-toggle.btn-primary {
1911
- color: #fff;
1912
- background-color: #3276b1;
1913
- border-color: #285e8e
1914
- }
1915
-
1916
- .btn-primary:active, .btn-primary.active, .open .dropdown-toggle.btn-primary {
1917
- background-image: none
1918
- }
1919
-
1920
- .btn-primary.disabled, .btn-primary[disabled], fieldset[disabled] .btn-primary, .btn-primary.disabled:hover, .btn-primary[disabled]:hover, fieldset[disabled] .btn-primary:hover, .btn-primary.disabled:focus, .btn-primary[disabled]:focus, fieldset[disabled] .btn-primary:focus, .btn-primary.disabled:active, .btn-primary[disabled]:active, fieldset[disabled] .btn-primary:active, .btn-primary.disabled.active, .btn-primary[disabled].active, fieldset[disabled] .btn-primary.active {
1921
- background-color: #428bca;
1922
- border-color: #357ebd
1923
- }
1924
-
1925
- .btn-warning {
1926
- color: #fff;
1927
- background-color: #f0ad4e;
1928
- border-color: #eea236
1929
- }
1930
-
1931
- .btn-warning:hover, .btn-warning:focus, .btn-warning:active, .btn-warning.active, .open .dropdown-toggle.btn-warning {
1932
- color: #fff;
1933
- background-color: #ed9c28;
1934
- border-color: #d58512
1935
- }
1936
-
1937
- .btn-warning:active, .btn-warning.active, .open .dropdown-toggle.btn-warning {
1938
- background-image: none
1939
- }
1940
-
1941
- .btn-warning.disabled, .btn-warning[disabled], fieldset[disabled] .btn-warning, .btn-warning.disabled:hover, .btn-warning[disabled]:hover, fieldset[disabled] .btn-warning:hover, .btn-warning.disabled:focus, .btn-warning[disabled]:focus, fieldset[disabled] .btn-warning:focus, .btn-warning.disabled:active, .btn-warning[disabled]:active, fieldset[disabled] .btn-warning:active, .btn-warning.disabled.active, .btn-warning[disabled].active, fieldset[disabled] .btn-warning.active {
1942
- background-color: #f0ad4e;
1943
- border-color: #eea236
1944
- }
1945
-
1946
- .btn-danger {
1947
- color: #fff;
1948
- background-color: #d9534f;
1949
- border-color: #d43f3a
1950
- }
1951
-
1952
- .btn-danger:hover, .btn-danger:focus, .btn-danger:active, .btn-danger.active, .open .dropdown-toggle.btn-danger {
1953
- color: #fff;
1954
- background-color: #d2322d;
1955
- border-color: #ac2925
1956
- }
1957
-
1958
- .btn-danger:active, .btn-danger.active, .open .dropdown-toggle.btn-danger {
1959
- background-image: none
1960
- }
1961
-
1962
- .btn-danger.disabled, .btn-danger[disabled], fieldset[disabled] .btn-danger, .btn-danger.disabled:hover, .btn-danger[disabled]:hover, fieldset[disabled] .btn-danger:hover, .btn-danger.disabled:focus, .btn-danger[disabled]:focus, fieldset[disabled] .btn-danger:focus, .btn-danger.disabled:active, .btn-danger[disabled]:active, fieldset[disabled] .btn-danger:active, .btn-danger.disabled.active, .btn-danger[disabled].active, fieldset[disabled] .btn-danger.active {
1963
- background-color: #d9534f;
1964
- border-color: #d43f3a
1965
- }
1966
-
1967
- .btn-success {
1968
- color: #fff;
1969
- background-color: #5cb85c;
1970
- border-color: #4cae4c
1971
- }
1972
-
1973
- .btn-success:hover, .btn-success:focus, .btn-success:active, .btn-success.active, .open .dropdown-toggle.btn-success {
1974
- color: #fff;
1975
- background-color: #47a447;
1976
- border-color: #398439
1977
- }
1978
-
1979
- .btn-success:active, .btn-success.active, .open .dropdown-toggle.btn-success {
1980
- background-image: none
1981
- }
1982
-
1983
- .btn-success.disabled, .btn-success[disabled], fieldset[disabled] .btn-success, .btn-success.disabled:hover, .btn-success[disabled]:hover, fieldset[disabled] .btn-success:hover, .btn-success.disabled:focus, .btn-success[disabled]:focus, fieldset[disabled] .btn-success:focus, .btn-success.disabled:active, .btn-success[disabled]:active, fieldset[disabled] .btn-success:active, .btn-success.disabled.active, .btn-success[disabled].active, fieldset[disabled] .btn-success.active {
1984
- background-color: #5cb85c;
1985
- border-color: #4cae4c
1986
- }
1987
-
1988
- .btn-info {
1989
- color: #fff;
1990
- background-color: #5bc0de;
1991
- border-color: #46b8da
1992
- }
1993
-
1994
- .btn-info:hover, .btn-info:focus, .btn-info:active, .btn-info.active, .open .dropdown-toggle.btn-info {
1995
- color: #fff;
1996
- background-color: #39b3d7;
1997
- border-color: #269abc
1998
- }
1999
-
2000
- .btn-info:active, .btn-info.active, .open .dropdown-toggle.btn-info {
2001
- background-image: none
2002
- }
2003
-
2004
- .btn-info.disabled, .btn-info[disabled], fieldset[disabled] .btn-info, .btn-info.disabled:hover, .btn-info[disabled]:hover, fieldset[disabled] .btn-info:hover, .btn-info.disabled:focus, .btn-info[disabled]:focus, fieldset[disabled] .btn-info:focus, .btn-info.disabled:active, .btn-info[disabled]:active, fieldset[disabled] .btn-info:active, .btn-info.disabled.active, .btn-info[disabled].active, fieldset[disabled] .btn-info.active {
2005
- background-color: #5bc0de;
2006
- border-color: #46b8da
2007
- }
2008
-
2009
- .btn-link {
2010
- font-weight: normal;
2011
- color: #428bca;
2012
- cursor: pointer;
2013
- border-radius: 0
2014
- }
2015
-
2016
- .btn-link, .btn-link:active, .btn-link[disabled], fieldset[disabled] .btn-link {
2017
- background-color: transparent;
2018
- -webkit-box-shadow: none;
2019
- box-shadow: none
2020
- }
2021
-
2022
- .btn-link, .btn-link:hover, .btn-link:focus, .btn-link:active {
2023
- border-color: transparent
2024
- }
2025
-
2026
- .btn-link:hover, .btn-link:focus {
2027
- color: #2a6496;
2028
- text-decoration: underline;
2029
- background-color: transparent
2030
- }
2031
-
2032
- .btn-link[disabled]:hover, fieldset[disabled] .btn-link:hover, .btn-link[disabled]:focus, fieldset[disabled] .btn-link:focus {
2033
- color: #999;
2034
- text-decoration: none
2035
- }
2036
-
2037
- .btn-lg {
2038
- padding: 10px 16px;
2039
- font-size: 18px;
2040
- line-height: 1.33;
2041
- border-radius: 6px
2042
- }
2043
-
2044
- .btn-sm, .btn-xs {
2045
- padding: 5px 10px;
2046
- font-size: 12px;
2047
- line-height: 1.5;
2048
- border-radius: 3px
2049
- }
2050
-
2051
- .btn-xs {
2052
- padding: 1px 5px
2053
- }
2054
-
2055
- .btn-block {
2056
- display: block;
2057
- width: 100%;
2058
- padding-right: 0;
2059
- padding-left: 0
2060
- }
2061
-
2062
- .btn-block + .btn-block {
2063
- margin-top: 5px
2064
- }
2065
-
2066
- input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="button"].btn-block {
2067
- width: 100%
2068
- }
2069
-
2070
- .fade {
2071
- opacity: 0;
2072
- -webkit-transition: opacity .15s linear;
2073
- transition: opacity .15s linear
2074
- }
2075
-
2076
- .fade.in {
2077
- opacity: 1
2078
- }
2079
-
2080
- .collapse {
2081
- display: none
2082
- }
2083
-
2084
- .collapse.in {
2085
- display: block
2086
- }
2087
-
2088
- .collapsing {
2089
- position: relative;
2090
- height: 0;
2091
- overflow: hidden;
2092
- -webkit-transition: height .35s ease;
2093
- transition: height .35s ease
2094
- }
2095
-
2096
- @font-face {
2097
- font-family: 'Glyphicons Halflings';
2098
- src: url('../fonts/glyphicons-halflings-regular.eot');
2099
- src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg')
2100
- }
2101
-
2102
- .glyphicon {
2103
- position: relative;
2104
- top: 1px;
2105
- display: inline-block;
2106
- font-family: 'Glyphicons Halflings';
2107
- -webkit-font-smoothing: antialiased;
2108
- font-style: normal;
2109
- font-weight: normal;
2110
- line-height: 1
2111
- }
2112
-
2113
- .glyphicon-asterisk:before {
2114
- content: "\2a"
2115
- }
2116
-
2117
- .glyphicon-plus:before {
2118
- content: "\2b"
2119
- }
2120
-
2121
- .glyphicon-euro:before {
2122
- content: "\20ac"
2123
- }
2124
-
2125
- .glyphicon-minus:before {
2126
- content: "\2212"
2127
- }
2128
-
2129
- .glyphicon-cloud:before {
2130
- content: "\2601"
2131
- }
2132
-
2133
- .glyphicon-envelope:before {
2134
- content: "\2709"
2135
- }
2136
-
2137
- .glyphicon-pencil:before {
2138
- content: "\270f"
2139
- }
2140
-
2141
- .glyphicon-glass:before {
2142
- content: "\e001"
2143
- }
2144
-
2145
- .glyphicon-music:before {
2146
- content: "\e002"
2147
- }
2148
-
2149
- .glyphicon-search:before {
2150
- content: "\e003"
2151
- }
2152
-
2153
- .glyphicon-heart:before {
2154
- content: "\e005"
2155
- }
2156
-
2157
- .glyphicon-star:before {
2158
- content: "\e006"
2159
- }
2160
-
2161
- .glyphicon-star-empty:before {
2162
- content: "\e007"
2163
- }
2164
-
2165
- .glyphicon-user:before {
2166
- content: "\e008"
2167
- }
2168
-
2169
- .glyphicon-film:before {
2170
- content: "\e009"
2171
- }
2172
-
2173
- .glyphicon-th-large:before {
2174
- content: "\e010"
2175
- }
2176
-
2177
- .glyphicon-th:before {
2178
- content: "\e011"
2179
- }
2180
-
2181
- .glyphicon-th-list:before {
2182
- content: "\e012"
2183
- }
2184
-
2185
- .glyphicon-ok:before {
2186
- content: "\e013"
2187
- }
2188
-
2189
- .glyphicon-remove:before {
2190
- content: "\e014"
2191
- }
2192
-
2193
- .glyphicon-zoom-in:before {
2194
- content: "\e015"
2195
- }
2196
-
2197
- .glyphicon-zoom-out:before {
2198
- content: "\e016"
2199
- }
2200
-
2201
- .glyphicon-off:before {
2202
- content: "\e017"
2203
- }
2204
-
2205
- .glyphicon-signal:before {
2206
- content: "\e018"
2207
- }
2208
-
2209
- .glyphicon-cog:before {
2210
- content: "\e019"
2211
- }
2212
-
2213
- .glyphicon-trash:before {
2214
- content: "\e020"
2215
- }
2216
-
2217
- .glyphicon-home:before {
2218
- content: "\e021"
2219
- }
2220
-
2221
- .glyphicon-file:before {
2222
- content: "\e022"
2223
- }
2224
-
2225
- .glyphicon-time:before {
2226
- content: "\e023"
2227
- }
2228
-
2229
- .glyphicon-road:before {
2230
- content: "\e024"
2231
- }
2232
-
2233
- .glyphicon-download-alt:before {
2234
- content: "\e025"
2235
- }
2236
-
2237
- .glyphicon-download:before {
2238
- content: "\e026"
2239
- }
2240
-
2241
- .glyphicon-upload:before {
2242
- content: "\e027"
2243
- }
2244
-
2245
- .glyphicon-inbox:before {
2246
- content: "\e028"
2247
- }
2248
-
2249
- .glyphicon-play-circle:before {
2250
- content: "\e029"
2251
- }
2252
-
2253
- .glyphicon-repeat:before {
2254
- content: "\e030"
2255
- }
2256
-
2257
- .glyphicon-refresh:before {
2258
- content: "\e031"
2259
- }
2260
-
2261
- .glyphicon-list-alt:before {
2262
- content: "\e032"
2263
- }
2264
-
2265
- .glyphicon-flag:before {
2266
- content: "\e034"
2267
- }
2268
-
2269
- .glyphicon-headphones:before {
2270
- content: "\e035"
2271
- }
2272
-
2273
- .glyphicon-volume-off:before {
2274
- content: "\e036"
2275
- }
2276
-
2277
- .glyphicon-volume-down:before {
2278
- content: "\e037"
2279
- }
2280
-
2281
- .glyphicon-volume-up:before {
2282
- content: "\e038"
2283
- }
2284
-
2285
- .glyphicon-qrcode:before {
2286
- content: "\e039"
2287
- }
2288
-
2289
- .glyphicon-barcode:before {
2290
- content: "\e040"
2291
- }
2292
-
2293
- .glyphicon-tag:before {
2294
- content: "\e041"
2295
- }
2296
-
2297
- .glyphicon-tags:before {
2298
- content: "\e042"
2299
- }
2300
-
2301
- .glyphicon-book:before {
2302
- content: "\e043"
2303
- }
2304
-
2305
- .glyphicon-print:before {
2306
- content: "\e045"
2307
- }
2308
-
2309
- .glyphicon-font:before {
2310
- content: "\e047"
2311
- }
2312
-
2313
- .glyphicon-bold:before {
2314
- content: "\e048"
2315
- }
2316
-
2317
- .glyphicon-italic:before {
2318
- content: "\e049"
2319
- }
2320
-
2321
- .glyphicon-text-height:before {
2322
- content: "\e050"
2323
- }
2324
-
2325
- .glyphicon-text-width:before {
2326
- content: "\e051"
2327
- }
2328
-
2329
- .glyphicon-align-left:before {
2330
- content: "\e052"
2331
- }
2332
-
2333
- .glyphicon-align-center:before {
2334
- content: "\e053"
2335
- }
2336
-
2337
- .glyphicon-align-right:before {
2338
- content: "\e054"
2339
- }
2340
-
2341
- .glyphicon-align-justify:before {
2342
- content: "\e055"
2343
- }
2344
-
2345
- .glyphicon-list:before {
2346
- content: "\e056"
2347
- }
2348
-
2349
- .glyphicon-indent-left:before {
2350
- content: "\e057"
2351
- }
2352
-
2353
- .glyphicon-indent-right:before {
2354
- content: "\e058"
2355
- }
2356
-
2357
- .glyphicon-facetime-video:before {
2358
- content: "\e059"
2359
- }
2360
-
2361
- .glyphicon-picture:before {
2362
- content: "\e060"
2363
- }
2364
-
2365
- .glyphicon-map-marker:before {
2366
- content: "\e062"
2367
- }
2368
-
2369
- .glyphicon-adjust:before {
2370
- content: "\e063"
2371
- }
2372
-
2373
- .glyphicon-tint:before {
2374
- content: "\e064"
2375
- }
2376
-
2377
- .glyphicon-edit:before {
2378
- content: "\e065"
2379
- }
2380
-
2381
- .glyphicon-share:before {
2382
- content: "\e066"
2383
- }
2384
-
2385
- .glyphicon-check:before {
2386
- content: "\e067"
2387
- }
2388
-
2389
- .glyphicon-move:before {
2390
- content: "\e068"
2391
- }
2392
-
2393
- .glyphicon-step-backward:before {
2394
- content: "\e069"
2395
- }
2396
-
2397
- .glyphicon-fast-backward:before {
2398
- content: "\e070"
2399
- }
2400
-
2401
- .glyphicon-backward:before {
2402
- content: "\e071"
2403
- }
2404
-
2405
- .glyphicon-play:before {
2406
- content: "\e072"
2407
- }
2408
-
2409
- .glyphicon-pause:before {
2410
- content: "\e073"
2411
- }
2412
-
2413
- .glyphicon-stop:before {
2414
- content: "\e074"
2415
- }
2416
-
2417
- .glyphicon-forward:before {
2418
- content: "\e075"
2419
- }
2420
-
2421
- .glyphicon-fast-forward:before {
2422
- content: "\e076"
2423
- }
2424
-
2425
- .glyphicon-step-forward:before {
2426
- content: "\e077"
2427
- }
2428
-
2429
- .glyphicon-eject:before {
2430
- content: "\e078"
2431
- }
2432
-
2433
- .glyphicon-chevron-left:before {
2434
- content: "\e079"
2435
- }
2436
-
2437
- .glyphicon-chevron-right:before {
2438
- content: "\e080"
2439
- }
2440
-
2441
- .glyphicon-plus-sign:before {
2442
- content: "\e081"
2443
- }
2444
-
2445
- .glyphicon-minus-sign:before {
2446
- content: "\e082"
2447
- }
2448
-
2449
- .glyphicon-remove-sign:before {
2450
- content: "\e083"
2451
- }
2452
-
2453
- .glyphicon-ok-sign:before {
2454
- content: "\e084"
2455
- }
2456
-
2457
- .glyphicon-question-sign:before {
2458
- content: "\e085"
2459
- }
2460
-
2461
- .glyphicon-info-sign:before {
2462
- content: "\e086"
2463
- }
2464
-
2465
- .glyphicon-screenshot:before {
2466
- content: "\e087"
2467
- }
2468
-
2469
- .glyphicon-remove-circle:before {
2470
- content: "\e088"
2471
- }
2472
-
2473
- .glyphicon-ok-circle:before {
2474
- content: "\e089"
2475
- }
2476
-
2477
- .glyphicon-ban-circle:before {
2478
- content: "\e090"
2479
- }
2480
-
2481
- .glyphicon-arrow-left:before {
2482
- content: "\e091"
2483
- }
2484
-
2485
- .glyphicon-arrow-right:before {
2486
- content: "\e092"
2487
- }
2488
-
2489
- .glyphicon-arrow-up:before {
2490
- content: "\e093"
2491
- }
2492
-
2493
- .glyphicon-arrow-down:before {
2494
- content: "\e094"
2495
- }
2496
-
2497
- .glyphicon-share-alt:before {
2498
- content: "\e095"
2499
- }
2500
-
2501
- .glyphicon-resize-full:before {
2502
- content: "\e096"
2503
- }
2504
-
2505
- .glyphicon-resize-small:before {
2506
- content: "\e097"
2507
- }
2508
-
2509
- .glyphicon-exclamation-sign:before {
2510
- content: "\e101"
2511
- }
2512
-
2513
- .glyphicon-gift:before {
2514
- content: "\e102"
2515
- }
2516
-
2517
- .glyphicon-leaf:before {
2518
- content: "\e103"
2519
- }
2520
-
2521
- .glyphicon-eye-open:before {
2522
- content: "\e105"
2523
- }
2524
-
2525
- .glyphicon-eye-close:before {
2526
- content: "\e106"
2527
- }
2528
-
2529
- .glyphicon-warning-sign:before {
2530
- content: "\e107"
2531
- }
2532
-
2533
- .glyphicon-plane:before {
2534
- content: "\e108"
2535
- }
2536
-
2537
- .glyphicon-random:before {
2538
- content: "\e110"
2539
- }
2540
-
2541
- .glyphicon-comment:before {
2542
- content: "\e111"
2543
- }
2544
-
2545
- .glyphicon-magnet:before {
2546
- content: "\e112"
2547
- }
2548
-
2549
- .glyphicon-chevron-up:before {
2550
- content: "\e113"
2551
- }
2552
-
2553
- .glyphicon-chevron-down:before {
2554
- content: "\e114"
2555
- }
2556
-
2557
- .glyphicon-retweet:before {
2558
- content: "\e115"
2559
- }
2560
-
2561
- .glyphicon-shopping-cart:before {
2562
- content: "\e116"
2563
- }
2564
-
2565
- .glyphicon-folder-close:before {
2566
- content: "\e117"
2567
- }
2568
-
2569
- .glyphicon-folder-open:before {
2570
- content: "\e118"
2571
- }
2572
-
2573
- .glyphicon-resize-vertical:before {
2574
- content: "\e119"
2575
- }
2576
-
2577
- .glyphicon-resize-horizontal:before {
2578
- content: "\e120"
2579
- }
2580
-
2581
- .glyphicon-hdd:before {
2582
- content: "\e121"
2583
- }
2584
-
2585
- .glyphicon-bullhorn:before {
2586
- content: "\e122"
2587
- }
2588
-
2589
- .glyphicon-certificate:before {
2590
- content: "\e124"
2591
- }
2592
-
2593
- .glyphicon-thumbs-up:before {
2594
- content: "\e125"
2595
- }
2596
-
2597
- .glyphicon-thumbs-down:before {
2598
- content: "\e126"
2599
- }
2600
-
2601
- .glyphicon-hand-right:before {
2602
- content: "\e127"
2603
- }
2604
-
2605
- .glyphicon-hand-left:before {
2606
- content: "\e128"
2607
- }
2608
-
2609
- .glyphicon-hand-up:before {
2610
- content: "\e129"
2611
- }
2612
-
2613
- .glyphicon-hand-down:before {
2614
- content: "\e130"
2615
- }
2616
-
2617
- .glyphicon-circle-arrow-right:before {
2618
- content: "\e131"
2619
- }
2620
-
2621
- .glyphicon-circle-arrow-left:before {
2622
- content: "\e132"
2623
- }
2624
-
2625
- .glyphicon-circle-arrow-up:before {
2626
- content: "\e133"
2627
- }
2628
-
2629
- .glyphicon-circle-arrow-down:before {
2630
- content: "\e134"
2631
- }
2632
-
2633
- .glyphicon-globe:before {
2634
- content: "\e135"
2635
- }
2636
-
2637
- .glyphicon-tasks:before {
2638
- content: "\e137"
2639
- }
2640
-
2641
- .glyphicon-filter:before {
2642
- content: "\e138"
2643
- }
2644
-
2645
- .glyphicon-fullscreen:before {
2646
- content: "\e140"
2647
- }
2648
-
2649
- .glyphicon-dashboard:before {
2650
- content: "\e141"
2651
- }
2652
-
2653
- .glyphicon-heart-empty:before {
2654
- content: "\e143"
2655
- }
2656
-
2657
- .glyphicon-link:before {
2658
- content: "\e144"
2659
- }
2660
-
2661
- .glyphicon-phone:before {
2662
- content: "\e145"
2663
- }
2664
-
2665
- .glyphicon-usd:before {
2666
- content: "\e148"
2667
- }
2668
-
2669
- .glyphicon-gbp:before {
2670
- content: "\e149"
2671
- }
2672
-
2673
- .glyphicon-sort:before {
2674
- content: "\e150"
2675
- }
2676
-
2677
- .glyphicon-sort-by-alphabet:before {
2678
- content: "\e151"
2679
- }
2680
-
2681
- .glyphicon-sort-by-alphabet-alt:before {
2682
- content: "\e152"
2683
- }
2684
-
2685
- .glyphicon-sort-by-order:before {
2686
- content: "\e153"
2687
- }
2688
-
2689
- .glyphicon-sort-by-order-alt:before {
2690
- content: "\e154"
2691
- }
2692
-
2693
- .glyphicon-sort-by-attributes:before {
2694
- content: "\e155"
2695
- }
2696
-
2697
- .glyphicon-sort-by-attributes-alt:before {
2698
- content: "\e156"
2699
- }
2700
-
2701
- .glyphicon-unchecked:before {
2702
- content: "\e157"
2703
- }
2704
-
2705
- .glyphicon-expand:before {
2706
- content: "\e158"
2707
- }
2708
-
2709
- .glyphicon-collapse-down:before {
2710
- content: "\e159"
2711
- }
2712
-
2713
- .glyphicon-collapse-up:before {
2714
- content: "\e160"
2715
- }
2716
-
2717
- .glyphicon-log-in:before {
2718
- content: "\e161"
2719
- }
2720
-
2721
- .glyphicon-flash:before {
2722
- content: "\e162"
2723
- }
2724
-
2725
- .glyphicon-log-out:before {
2726
- content: "\e163"
2727
- }
2728
-
2729
- .glyphicon-new-window:before {
2730
- content: "\e164"
2731
- }
2732
-
2733
- .glyphicon-record:before {
2734
- content: "\e165"
2735
- }
2736
-
2737
- .glyphicon-save:before {
2738
- content: "\e166"
2739
- }
2740
-
2741
- .glyphicon-open:before {
2742
- content: "\e167"
2743
- }
2744
-
2745
- .glyphicon-saved:before {
2746
- content: "\e168"
2747
- }
2748
-
2749
- .glyphicon-import:before {
2750
- content: "\e169"
2751
- }
2752
-
2753
- .glyphicon-export:before {
2754
- content: "\e170"
2755
- }
2756
-
2757
- .glyphicon-send:before {
2758
- content: "\e171"
2759
- }
2760
-
2761
- .glyphicon-floppy-disk:before {
2762
- content: "\e172"
2763
- }
2764
-
2765
- .glyphicon-floppy-saved:before {
2766
- content: "\e173"
2767
- }
2768
-
2769
- .glyphicon-floppy-remove:before {
2770
- content: "\e174"
2771
- }
2772
-
2773
- .glyphicon-floppy-save:before {
2774
- content: "\e175"
2775
- }
2776
-
2777
- .glyphicon-floppy-open:before {
2778
- content: "\e176"
2779
- }
2780
-
2781
- .glyphicon-credit-card:before {
2782
- content: "\e177"
2783
- }
2784
-
2785
- .glyphicon-transfer:before {
2786
- content: "\e178"
2787
- }
2788
-
2789
- .glyphicon-cutlery:before {
2790
- content: "\e179"
2791
- }
2792
-
2793
- .glyphicon-header:before {
2794
- content: "\e180"
2795
- }
2796
-
2797
- .glyphicon-compressed:before {
2798
- content: "\e181"
2799
- }
2800
-
2801
- .glyphicon-earphone:before {
2802
- content: "\e182"
2803
- }
2804
-
2805
- .glyphicon-phone-alt:before {
2806
- content: "\e183"
2807
- }
2808
-
2809
- .glyphicon-tower:before {
2810
- content: "\e184"
2811
- }
2812
-
2813
- .glyphicon-stats:before {
2814
- content: "\e185"
2815
- }
2816
-
2817
- .glyphicon-sd-video:before {
2818
- content: "\e186"
2819
- }
2820
-
2821
- .glyphicon-hd-video:before {
2822
- content: "\e187"
2823
- }
2824
-
2825
- .glyphicon-subtitles:before {
2826
- content: "\e188"
2827
- }
2828
-
2829
- .glyphicon-sound-stereo:before {
2830
- content: "\e189"
2831
- }
2832
-
2833
- .glyphicon-sound-dolby:before {
2834
- content: "\e190"
2835
- }
2836
-
2837
- .glyphicon-sound-5-1:before {
2838
- content: "\e191"
2839
- }
2840
-
2841
- .glyphicon-sound-6-1:before {
2842
- content: "\e192"
2843
- }
2844
-
2845
- .glyphicon-sound-7-1:before {
2846
- content: "\e193"
2847
- }
2848
-
2849
- .glyphicon-copyright-mark:before {
2850
- content: "\e194"
2851
- }
2852
-
2853
- .glyphicon-registration-mark:before {
2854
- content: "\e195"
2855
- }
2856
-
2857
- .glyphicon-cloud-download:before {
2858
- content: "\e197"
2859
- }
2860
-
2861
- .glyphicon-cloud-upload:before {
2862
- content: "\e198"
2863
- }
2864
-
2865
- .glyphicon-tree-conifer:before {
2866
- content: "\e199"
2867
- }
2868
-
2869
- .glyphicon-tree-deciduous:before {
2870
- content: "\e200"
2871
- }
2872
-
2873
- .glyphicon-briefcase:before {
2874
- content: "\1f4bc"
2875
- }
2876
-
2877
- .glyphicon-calendar:before {
2878
- content: "\1f4c5"
2879
- }
2880
-
2881
- .glyphicon-pushpin:before {
2882
- content: "\1f4cc"
2883
- }
2884
-
2885
- .glyphicon-paperclip:before {
2886
- content: "\1f4ce"
2887
- }
2888
-
2889
- .glyphicon-camera:before {
2890
- content: "\1f4f7"
2891
- }
2892
-
2893
- .glyphicon-lock:before {
2894
- content: "\1f512"
2895
- }
2896
-
2897
- .glyphicon-bell:before {
2898
- content: "\1f514"
2899
- }
2900
-
2901
- .glyphicon-bookmark:before {
2902
- content: "\1f516"
2903
- }
2904
-
2905
- .glyphicon-fire:before {
2906
- content: "\1f525"
2907
- }
2908
-
2909
- .glyphicon-wrench:before {
2910
- content: "\1f527"
2911
- }
2912
-
2913
- .caret {
2914
- display: inline-block;
2915
- width: 0;
2916
- height: 0;
2917
- margin-left: 2px;
2918
- vertical-align: middle;
2919
- border-top: 4px solid #000;
2920
- border-right: 4px solid transparent;
2921
- border-bottom: 0 dotted;
2922
- border-left: 4px solid transparent;
2923
- content: ""
2924
- }
2925
-
2926
- .dropdown {
2927
- position: relative
2928
- }
2929
-
2930
- .dropdown-toggle:focus {
2931
- outline: 0
2932
- }
2933
-
2934
- .dropdown-menu {
2935
- position: absolute;
2936
- top: 100%;
2937
- left: 0;
2938
- z-index: 1000;
2939
- display: none;
2940
- float: left;
2941
- min-width: 160px;
2942
- padding: 5px 0;
2943
- margin: 2px 0 0;
2944
- font-size: 14px;
2945
- list-style: none;
2946
- background-color: #fff;
2947
- border: 1px solid #ccc;
2948
- border: 1px solid rgba(0, 0, 0, 0.15);
2949
- border-radius: 4px;
2950
- -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
2951
- box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
2952
- background-clip: padding-box
2953
- }
2954
-
2955
- .dropdown-menu.pull-right {
2956
- right: 0;
2957
- left: auto
2958
- }
2959
-
2960
- .dropdown-menu .divider {
2961
- height: 1px;
2962
- margin: 9px 0;
2963
- overflow: hidden;
2964
- background-color: #e5e5e5
2965
- }
2966
-
2967
- .dropdown-menu > li > a {
2968
- display: block;
2969
- padding: 3px 20px;
2970
- clear: both;
2971
- font-weight: normal;
2972
- line-height: 1.428571429;
2973
- color: #333;
2974
- white-space: nowrap
2975
- }
2976
-
2977
- .dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus {
2978
- color: #fff;
2979
- text-decoration: none;
2980
- background-color: #428bca
2981
- }
2982
-
2983
- .dropdown-menu > .active > a, .dropdown-menu > .active > a:hover, .dropdown-menu > .active > a:focus {
2984
- color: #fff;
2985
- text-decoration: none;
2986
- background-color: #428bca;
2987
- outline: 0
2988
- }
2989
-
2990
- .dropdown-menu > .disabled > a, .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus {
2991
- color: #999
2992
- }
2993
-
2994
- .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus {
2995
- text-decoration: none;
2996
- cursor: not-allowed;
2997
- background-color: transparent;
2998
- background-image: none;
2999
- filter: progid:DXImageTransform.Microsoft.gradient(enabled=false)
3000
- }
3001
-
3002
- .open > .dropdown-menu {
3003
- display: block
3004
- }
3005
-
3006
- .open > a {
3007
- outline: 0
3008
- }
3009
-
3010
- .dropdown-header {
3011
- display: block;
3012
- padding: 3px 20px;
3013
- font-size: 12px;
3014
- line-height: 1.428571429;
3015
- color: #999
3016
- }
3017
-
3018
- .dropdown-backdrop {
3019
- position: fixed;
3020
- top: 0;
3021
- right: 0;
3022
- bottom: 0;
3023
- left: 0;
3024
- z-index: 990
3025
- }
3026
-
3027
- .pull-right > .dropdown-menu {
3028
- right: 0;
3029
- left: auto
3030
- }
3031
-
3032
- .dropup .caret, .navbar-fixed-bottom .dropdown .caret {
3033
- border-top: 0 dotted;
3034
- border-bottom: 4px solid #000;
3035
- content: ""
3036
- }
3037
-
3038
- .dropup .dropdown-menu, .navbar-fixed-bottom .dropdown .dropdown-menu {
3039
- top: auto;
3040
- bottom: 100%;
3041
- margin-bottom: 1px
3042
- }
3043
-
3044
- @media (min-width: 768px) {
3045
- .navbar-right .dropdown-menu {
3046
- right: 0;
3047
- left: auto
3048
- }
3049
- }
3050
-
3051
- .btn-default .caret {
3052
- border-top-color: #333
3053
- }
3054
-
3055
- .btn-primary .caret, .btn-success .caret, .btn-warning .caret, .btn-danger .caret, .btn-info .caret {
3056
- border-top-color: #fff
3057
- }
3058
-
3059
- .dropup .btn-default .caret {
3060
- border-bottom-color: #333
3061
- }
3062
-
3063
- .dropup .btn-primary .caret, .dropup .btn-success .caret, .dropup .btn-warning .caret, .dropup .btn-danger .caret, .dropup .btn-info .caret {
3064
- border-bottom-color: #fff
3065
- }
3066
-
3067
- .btn-group, .btn-group-vertical {
3068
- position: relative;
3069
- display: inline-block;
3070
- vertical-align: middle
3071
- }
3072
-
3073
- .btn-group > .btn, .btn-group-vertical > .btn {
3074
- position: relative;
3075
- float: left
3076
- }
3077
-
3078
- .btn-group > .btn:hover, .btn-group-vertical > .btn:hover, .btn-group > .btn:focus, .btn-group-vertical > .btn:focus, .btn-group > .btn:active, .btn-group-vertical > .btn:active, .btn-group > .btn.active, .btn-group-vertical > .btn.active {
3079
- z-index: 2
3080
- }
3081
-
3082
- .btn-group > .btn:focus, .btn-group-vertical > .btn:focus {
3083
- outline: 0
3084
- }
3085
-
3086
- .btn-group .btn + .btn, .btn-group .btn + .btn-group, .btn-group .btn-group + .btn, .btn-group .btn-group + .btn-group {
3087
- margin-left: -1px
3088
- }
3089
-
3090
- .btn-toolbar:before, .btn-toolbar:after {
3091
- display: table;
3092
- content: " "
3093
- }
3094
-
3095
- .btn-toolbar:after {
3096
- clear: both
3097
- }
3098
-
3099
- .btn-toolbar:before, .btn-toolbar:after {
3100
- display: table;
3101
- content: " "
3102
- }
3103
-
3104
- .btn-toolbar:after {
3105
- clear: both
3106
- }
3107
-
3108
- .btn-toolbar .btn-group {
3109
- float: left
3110
- }
3111
-
3112
- .btn-toolbar > .btn + .btn, .btn-toolbar > .btn-group + .btn, .btn-toolbar > .btn + .btn-group, .btn-toolbar > .btn-group + .btn-group {
3113
- margin-left: 5px
3114
- }
3115
-
3116
- .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
3117
- border-radius: 0
3118
- }
3119
-
3120
- .btn-group > .btn:first-child {
3121
- margin-left: 0
3122
- }
3123
-
3124
- .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
3125
- border-top-right-radius: 0;
3126
- border-bottom-right-radius: 0
3127
- }
3128
-
3129
- .btn-group > .btn:last-child:not(:first-child), .btn-group > .dropdown-toggle:not(:first-child) {
3130
- border-bottom-left-radius: 0;
3131
- border-top-left-radius: 0
3132
- }
3133
-
3134
- .btn-group > .btn-group {
3135
- float: left
3136
- }
3137
-
3138
- .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
3139
- border-radius: 0
3140
- }
3141
-
3142
- .btn-group > .btn-group:first-child > .btn:last-child, .btn-group > .btn-group:first-child > .dropdown-toggle {
3143
- border-top-right-radius: 0;
3144
- border-bottom-right-radius: 0
3145
- }
3146
-
3147
- .btn-group > .btn-group:last-child > .btn:first-child {
3148
- border-bottom-left-radius: 0;
3149
- border-top-left-radius: 0
3150
- }
3151
-
3152
- .btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle {
3153
- outline: 0
3154
- }
3155
-
3156
- .btn-group-xs > .btn {
3157
- padding: 5px 10px;
3158
- padding: 1px 5px;
3159
- font-size: 12px;
3160
- line-height: 1.5;
3161
- border-radius: 3px
3162
- }
3163
-
3164
- .btn-group-sm > .btn {
3165
- padding: 5px 10px;
3166
- font-size: 12px;
3167
- line-height: 1.5;
3168
- border-radius: 3px
3169
- }
3170
-
3171
- .btn-group-lg > .btn {
3172
- padding: 10px 16px;
3173
- font-size: 18px;
3174
- line-height: 1.33;
3175
- border-radius: 6px
3176
- }
3177
-
3178
- .btn-group > .btn + .dropdown-toggle {
3179
- padding-right: 8px;
3180
- padding-left: 8px
3181
- }
3182
-
3183
- .btn-group > .btn-lg + .dropdown-toggle {
3184
- padding-right: 12px;
3185
- padding-left: 12px
3186
- }
3187
-
3188
- .btn-group.open .dropdown-toggle {
3189
- -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3190
- box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125)
3191
- }
3192
-
3193
- .btn .caret {
3194
- margin-left: 0
3195
- }
3196
-
3197
- .btn-lg .caret {
3198
- border-width: 5px 5px 0;
3199
- border-bottom-width: 0
3200
- }
3201
-
3202
- .dropup .btn-lg .caret {
3203
- border-width: 0 5px 5px
3204
- }
3205
-
3206
- .btn-group-vertical > .btn, .btn-group-vertical > .btn-group {
3207
- display: block;
3208
- float: none;
3209
- width: 100%;
3210
- max-width: 100%
3211
- }
3212
-
3213
- .btn-group-vertical > .btn-group:before, .btn-group-vertical > .btn-group:after {
3214
- display: table;
3215
- content: " "
3216
- }
3217
-
3218
- .btn-group-vertical > .btn-group:after {
3219
- clear: both
3220
- }
3221
-
3222
- .btn-group-vertical > .btn-group:before, .btn-group-vertical > .btn-group:after {
3223
- display: table;
3224
- content: " "
3225
- }
3226
-
3227
- .btn-group-vertical > .btn-group:after {
3228
- clear: both
3229
- }
3230
-
3231
- .btn-group-vertical > .btn-group > .btn {
3232
- float: none
3233
- }
3234
-
3235
- .btn-group-vertical > .btn + .btn, .btn-group-vertical > .btn + .btn-group, .btn-group-vertical > .btn-group + .btn, .btn-group-vertical > .btn-group + .btn-group {
3236
- margin-top: -1px;
3237
- margin-left: 0
3238
- }
3239
-
3240
- .btn-group-vertical > .btn:not(:first-child):not(:last-child) {
3241
- border-radius: 0
3242
- }
3243
-
3244
- .btn-group-vertical > .btn:first-child:not(:last-child) {
3245
- border-top-right-radius: 4px;
3246
- border-bottom-right-radius: 0;
3247
- border-bottom-left-radius: 0
3248
- }
3249
-
3250
- .btn-group-vertical > .btn:last-child:not(:first-child) {
3251
- border-top-right-radius: 0;
3252
- border-bottom-left-radius: 4px;
3253
- border-top-left-radius: 0
3254
- }
3255
-
3256
- .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
3257
- border-radius: 0
3258
- }
3259
-
3260
- .btn-group-vertical > .btn-group:first-child > .btn:last-child, .btn-group-vertical > .btn-group:first-child > .dropdown-toggle {
3261
- border-bottom-right-radius: 0;
3262
- border-bottom-left-radius: 0
3263
- }
3264
-
3265
- .btn-group-vertical > .btn-group:last-child > .btn:first-child {
3266
- border-top-right-radius: 0;
3267
- border-top-left-radius: 0
3268
- }
3269
-
3270
- .btn-group-justified {
3271
- display: table;
3272
- width: 100%;
3273
- border-collapse: separate;
3274
- table-layout: fixed
3275
- }
3276
-
3277
- .btn-group-justified .btn {
3278
- display: table-cell;
3279
- float: none;
3280
- width: 1%
3281
- }
3282
-
3283
- [data-toggle="buttons"] > .btn > input[type="radio"], [data-toggle="buttons"] > .btn > input[type="checkbox"] {
3284
- display: none
3285
- }
3286
-
3287
- .input-group {
3288
- position: relative;
3289
- display: table;
3290
- border-collapse: separate
3291
- }
3292
-
3293
- .input-group.col {
3294
- float: none;
3295
- padding-right: 0;
3296
- padding-left: 0
3297
- }
3298
-
3299
- .input-group .form-control {
3300
- width: 100%;
3301
- margin-bottom: 0
3302
- }
3303
-
3304
- .input-group-lg > .form-control, .input-group-lg > .input-group-addon, .input-group-lg > .input-group-btn > .btn {
3305
- height: 45px;
3306
- padding: 10px 16px;
3307
- font-size: 18px;
3308
- line-height: 1.33;
3309
- border-radius: 6px
3310
- }
3311
-
3312
- select.input-group-lg > .form-control, select.input-group-lg > .input-group-addon, select.input-group-lg > .input-group-btn > .btn {
3313
- height: 45px;
3314
- line-height: 45px
3315
- }
3316
-
3317
- textarea.input-group-lg > .form-control, textarea.input-group-lg > .input-group-addon, textarea.input-group-lg > .input-group-btn > .btn {
3318
- height: auto
3319
- }
3320
-
3321
- .input-group-sm > .form-control, .input-group-sm > .input-group-addon, .input-group-sm > .input-group-btn > .btn {
3322
- height: 30px;
3323
- padding: 5px 10px;
3324
- font-size: 12px;
3325
- line-height: 1.5;
3326
- border-radius: 3px
3327
- }
3328
-
3329
- select.input-group-sm > .form-control, select.input-group-sm > .input-group-addon, select.input-group-sm > .input-group-btn > .btn {
3330
- height: 30px;
3331
- line-height: 30px
3332
- }
3333
-
3334
- textarea.input-group-sm > .form-control, textarea.input-group-sm > .input-group-addon, textarea.input-group-sm > .input-group-btn > .btn {
3335
- height: auto
3336
- }
3337
-
3338
- .input-group-addon, .input-group-btn, .input-group .form-control {
3339
- display: table-cell
3340
- }
3341
-
3342
- .input-group-addon:not(:first-child):not(:last-child), .input-group-btn:not(:first-child):not(:last-child), .input-group .form-control:not(:first-child):not(:last-child) {
3343
- border-radius: 0
3344
- }
3345
-
3346
- .input-group-addon, .input-group-btn {
3347
- width: 1%;
3348
- white-space: nowrap;
3349
- vertical-align: middle
3350
- }
3351
-
3352
- .input-group-addon {
3353
- padding: 6px 12px;
3354
- font-size: 14px;
3355
- font-weight: normal;
3356
- line-height: 1;
3357
- text-align: center;
3358
- background-color: #eee;
3359
- border: 1px solid #ccc;
3360
- border-radius: 4px
3361
- }
3362
-
3363
- .input-group-addon.input-sm {
3364
- padding: 5px 10px;
3365
- font-size: 12px;
3366
- border-radius: 3px
3367
- }
3368
-
3369
- .input-group-addon.input-lg {
3370
- padding: 10px 16px;
3371
- font-size: 18px;
3372
- border-radius: 6px
3373
- }
3374
-
3375
- .input-group-addon input[type="radio"], .input-group-addon input[type="checkbox"] {
3376
- margin-top: 0
3377
- }
3378
-
3379
- .input-group .form-control:first-child, .input-group-addon:first-child, .input-group-btn:first-child > .btn, .input-group-btn:first-child > .dropdown-toggle, .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) {
3380
- border-top-right-radius: 0;
3381
- border-bottom-right-radius: 0
3382
- }
3383
-
3384
- .input-group-addon:first-child {
3385
- border-right: 0
3386
- }
3387
-
3388
- .input-group .form-control:last-child, .input-group-addon:last-child, .input-group-btn:last-child > .btn, .input-group-btn:last-child > .dropdown-toggle, .input-group-btn:first-child > .btn:not(:first-child) {
3389
- border-bottom-left-radius: 0;
3390
- border-top-left-radius: 0
3391
- }
3392
-
3393
- .input-group-addon:last-child {
3394
- border-left: 0
3395
- }
3396
-
3397
- .input-group-btn {
3398
- position: relative;
3399
- white-space: nowrap
3400
- }
3401
-
3402
- .input-group-btn > .btn {
3403
- position: relative
3404
- }
3405
-
3406
- .input-group-btn > .btn + .btn {
3407
- margin-left: -4px
3408
- }
3409
-
3410
- .input-group-btn > .btn:hover, .input-group-btn > .btn:active {
3411
- z-index: 2
3412
- }
3413
-
3414
- .nav {
3415
- padding-left: 0;
3416
- margin-bottom: 0;
3417
- list-style: none
3418
- }
3419
-
3420
- .nav:before, .nav:after {
3421
- display: table;
3422
- content: " "
3423
- }
3424
-
3425
- .nav:after {
3426
- clear: both
3427
- }
3428
-
3429
- .nav:before, .nav:after {
3430
- display: table;
3431
- content: " "
3432
- }
3433
-
3434
- .nav:after {
3435
- clear: both
3436
- }
3437
-
3438
- .nav > li {
3439
- position: relative;
3440
- display: block
3441
- }
3442
-
3443
- .nav > li > a {
3444
- position: relative;
3445
- display: block;
3446
- padding: 10px 15px
3447
- }
3448
-
3449
- .nav > li > a:hover, .nav > li > a:focus {
3450
- text-decoration: none;
3451
- background-color: #eee
3452
- }
3453
-
3454
- .nav > li.disabled > a {
3455
- color: #999
3456
- }
3457
-
3458
- .nav > li.disabled > a:hover, .nav > li.disabled > a:focus {
3459
- color: #999;
3460
- text-decoration: none;
3461
- cursor: not-allowed;
3462
- background-color: transparent
3463
- }
3464
-
3465
- .nav .open > a, .nav .open > a:hover, .nav .open > a:focus {
3466
- background-color: #eee;
3467
- border-color: #428bca
3468
- }
3469
-
3470
- .nav .nav-divider {
3471
- height: 1px;
3472
- margin: 9px 0;
3473
- overflow: hidden;
3474
- background-color: #e5e5e5
3475
- }
3476
-
3477
- .nav > li > a > img {
3478
- max-width: none
3479
- }
3480
-
3481
- .nav-tabs {
3482
- border-bottom: 1px solid #ddd
3483
- }
3484
-
3485
- .nav-tabs > li {
3486
- float: left;
3487
- margin-bottom: -1px
3488
- }
3489
-
3490
- .nav-tabs > li > a {
3491
- margin-right: 2px;
3492
- line-height: 1.428571429;
3493
- border: 1px solid transparent;
3494
- border-radius: 4px 4px 0 0
3495
- }
3496
-
3497
- .nav-tabs > li > a:hover {
3498
- border-color: #eee #eee #ddd
3499
- }
3500
-
3501
- .nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus {
3502
- color: #555;
3503
- cursor: default;
3504
- background-color: #fff;
3505
- border: 1px solid #ddd;
3506
- border-bottom-color: transparent
3507
- }
3508
-
3509
- .nav-tabs.nav-justified {
3510
- width: 100%;
3511
- border-bottom: 0
3512
- }
3513
-
3514
- .nav-tabs.nav-justified > li {
3515
- float: none
3516
- }
3517
-
3518
- .nav-tabs.nav-justified > li > a {
3519
- text-align: center
3520
- }
3521
-
3522
- @media (min-width: 768px) {
3523
- .nav-tabs.nav-justified > li {
3524
- display: table-cell;
3525
- width: 1%
3526
- }
3527
- }
3528
-
3529
- .nav-tabs.nav-justified > li > a {
3530
- margin-right: 0;
3531
- border-bottom: 1px solid #ddd
3532
- }
3533
-
3534
- .nav-tabs.nav-justified > .active > a {
3535
- border-bottom-color: #fff
3536
- }
3537
-
3538
- .nav-pills > li {
3539
- float: left
3540
- }
3541
-
3542
- .nav-pills > li > a {
3543
- border-radius: 5px
3544
- }
3545
-
3546
- .nav-pills > li + li {
3547
- margin-left: 2px
3548
- }
3549
-
3550
- .nav-pills > li.active > a, .nav-pills > li.active > a:hover, .nav-pills > li.active > a:focus {
3551
- color: #fff;
3552
- background-color: #428bca
3553
- }
3554
-
3555
- .nav-stacked > li {
3556
- float: none
3557
- }
3558
-
3559
- .nav-stacked > li + li {
3560
- margin-top: 2px;
3561
- margin-left: 0
3562
- }
3563
-
3564
- .nav-justified {
3565
- width: 100%
3566
- }
3567
-
3568
- .nav-justified > li {
3569
- float: none
3570
- }
3571
-
3572
- .nav-justified > li > a {
3573
- text-align: center
3574
- }
3575
-
3576
- @media (min-width: 768px) {
3577
- .nav-justified > li {
3578
- display: table-cell;
3579
- width: 1%
3580
- }
3581
- }
3582
-
3583
- .nav-tabs-justified {
3584
- border-bottom: 0
3585
- }
3586
-
3587
- .nav-tabs-justified > li > a {
3588
- margin-right: 0;
3589
- border-bottom: 1px solid #ddd
3590
- }
3591
-
3592
- .nav-tabs-justified > .active > a {
3593
- border-bottom-color: #fff
3594
- }
3595
-
3596
- .tabbable:before, .tabbable:after {
3597
- display: table;
3598
- content: " "
3599
- }
3600
-
3601
- .tabbable:after {
3602
- clear: both
3603
- }
3604
-
3605
- .tabbable:before, .tabbable:after {
3606
- display: table;
3607
- content: " "
3608
- }
3609
-
3610
- .tabbable:after {
3611
- clear: both
3612
- }
3613
-
3614
- .tab-content > .tab-pane, .pill-content > .pill-pane {
3615
- display: none
3616
- }
3617
-
3618
- .tab-content > .active, .pill-content > .active {
3619
- display: block
3620
- }
3621
-
3622
- .nav .caret {
3623
- border-top-color: #428bca;
3624
- border-bottom-color: #428bca
3625
- }
3626
-
3627
- .nav a:hover .caret {
3628
- border-top-color: #2a6496;
3629
- border-bottom-color: #2a6496
3630
- }
3631
-
3632
- .nav-tabs .dropdown-menu {
3633
- margin-top: -1px;
3634
- border-top-right-radius: 0;
3635
- border-top-left-radius: 0
3636
- }
3637
-
3638
- .navbar {
3639
- position: relative;
3640
- z-index: 1000;
3641
- min-height: 50px;
3642
- margin-bottom: 20px;
3643
- border: 1px solid transparent
3644
- }
3645
-
3646
- .navbar:before, .navbar:after {
3647
- display: table;
3648
- content: " "
3649
- }
3650
-
3651
- .navbar:after {
3652
- clear: both
3653
- }
3654
-
3655
- .navbar:before, .navbar:after {
3656
- display: table;
3657
- content: " "
3658
- }
3659
-
3660
- .navbar:after {
3661
- clear: both
3662
- }
3663
-
3664
- @media (min-width: 768px) {
3665
- .navbar {
3666
- border-radius: 4px
3667
- }
3668
- }
3669
-
3670
- .navbar-header:before, .navbar-header:after {
3671
- display: table;
3672
- content: " "
3673
- }
3674
-
3675
- .navbar-header:after {
3676
- clear: both
3677
- }
3678
-
3679
- .navbar-header:before, .navbar-header:after {
3680
- display: table;
3681
- content: " "
3682
- }
3683
-
3684
- .navbar-header:after {
3685
- clear: both
3686
- }
3687
-
3688
- @media (min-width: 768px) {
3689
- .navbar-header {
3690
- float: left
3691
- }
3692
- }
3693
-
3694
- .navbar-collapse {
3695
- max-height: 340px;
3696
- padding-right: 15px;
3697
- padding-left: 15px;
3698
- overflow-x: visible;
3699
- border-top: 1px solid transparent;
3700
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
3701
- -webkit-overflow-scrolling: touch
3702
- }
3703
-
3704
- .navbar-collapse:before, .navbar-collapse:after {
3705
- display: table;
3706
- content: " "
3707
- }
3708
-
3709
- .navbar-collapse:after {
3710
- clear: both
3711
- }
3712
-
3713
- .navbar-collapse:before, .navbar-collapse:after {
3714
- display: table;
3715
- content: " "
3716
- }
3717
-
3718
- .navbar-collapse:after {
3719
- clear: both
3720
- }
3721
-
3722
- .navbar-collapse.in {
3723
- overflow-y: auto
3724
- }
3725
-
3726
- @media (min-width: 768px) {
3727
- .navbar-collapse {
3728
- width: auto;
3729
- border-top: 0;
3730
- box-shadow: none
3731
- }
3732
-
3733
- .navbar-collapse.collapse {
3734
- display: block !important;
3735
- height: auto !important;
3736
- padding-bottom: 0;
3737
- overflow: visible !important
3738
- }
3739
-
3740
- .navbar-collapse.in {
3741
- overflow-y: visible
3742
- }
3743
-
3744
- .navbar-collapse .navbar-nav.navbar-left:first-child {
3745
- margin-left: -15px
3746
- }
3747
-
3748
- .navbar-collapse .navbar-nav.navbar-right:last-child {
3749
- margin-right: -15px
3750
- }
3751
-
3752
- .navbar-collapse .navbar-text:last-child {
3753
- margin-right: 0
3754
- }
3755
- }
3756
-
3757
- .container > .navbar-header, .container > .navbar-collapse {
3758
- margin-right: -15px;
3759
- margin-left: -15px
3760
- }
3761
-
3762
- @media (min-width: 768px) {
3763
- .container > .navbar-header, .container > .navbar-collapse {
3764
- margin-right: 0;
3765
- margin-left: 0
3766
- }
3767
- }
3768
-
3769
- .navbar-static-top {
3770
- border-width: 0 0 1px
3771
- }
3772
-
3773
- @media (min-width: 768px) {
3774
- .navbar-static-top {
3775
- border-radius: 0
3776
- }
3777
- }
3778
-
3779
- .navbar-fixed-top, .navbar-fixed-bottom {
3780
- position: fixed;
3781
- right: 0;
3782
- left: 0;
3783
- border-width: 0 0 1px
3784
- }
3785
-
3786
- @media (min-width: 768px) {
3787
- .navbar-fixed-top, .navbar-fixed-bottom {
3788
- border-radius: 0
3789
- }
3790
- }
3791
-
3792
- .navbar-fixed-top {
3793
- top: 0;
3794
- z-index: 1030
3795
- }
3796
-
3797
- .navbar-fixed-bottom {
3798
- bottom: 0;
3799
- margin-bottom: 0
3800
- }
3801
-
3802
- .navbar-brand {
3803
- float: left;
3804
- padding: 15px 15px;
3805
- font-size: 18px;
3806
- line-height: 20px
3807
- }
3808
-
3809
- .navbar-brand:hover, .navbar-brand:focus {
3810
- text-decoration: none
3811
- }
3812
-
3813
- @media (min-width: 768px) {
3814
- .navbar > .container .navbar-brand {
3815
- margin-left: -15px
3816
- }
3817
- }
3818
-
3819
- .navbar-toggle {
3820
- position: relative;
3821
- float: right;
3822
- padding: 9px 10px;
3823
- margin-top: 8px;
3824
- margin-right: 15px;
3825
- margin-bottom: 8px;
3826
- background-color: transparent;
3827
- border: 1px solid transparent;
3828
- border-radius: 4px
3829
- }
3830
-
3831
- .navbar-toggle .icon-bar {
3832
- display: block;
3833
- width: 22px;
3834
- height: 2px;
3835
- border-radius: 1px
3836
- }
3837
-
3838
- .navbar-toggle .icon-bar + .icon-bar {
3839
- margin-top: 4px
3840
- }
3841
-
3842
- @media (min-width: 768px) {
3843
- .navbar-toggle {
3844
- display: none
3845
- }
3846
- }
3847
-
3848
- .navbar-nav {
3849
- margin: 7.5px -15px
3850
- }
3851
-
3852
- .navbar-nav > li > a {
3853
- padding-top: 10px;
3854
- padding-bottom: 10px;
3855
- line-height: 20px
3856
- }
3857
-
3858
- @media (max-width: 767px) {
3859
- .navbar-nav .open .dropdown-menu {
3860
- position: static;
3861
- float: none;
3862
- width: auto;
3863
- margin-top: 0;
3864
- background-color: transparent;
3865
- border: 0;
3866
- box-shadow: none
3867
- }
3868
-
3869
- .navbar-nav .open .dropdown-menu > li > a, .navbar-nav .open .dropdown-menu .dropdown-header {
3870
- padding: 5px 15px 5px 25px
3871
- }
3872
-
3873
- .navbar-nav .open .dropdown-menu > li > a {
3874
- line-height: 20px
3875
- }
3876
-
3877
- .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-nav .open .dropdown-menu > li > a:focus {
3878
- background-image: none
3879
- }
3880
- }
3881
-
3882
- @media (min-width: 768px) {
3883
- .navbar-nav {
3884
- float: left;
3885
- margin: 0
3886
- }
3887
-
3888
- .navbar-nav > li {
3889
- float: left
3890
- }
3891
-
3892
- .navbar-nav > li > a {
3893
- padding-top: 15px;
3894
- padding-bottom: 15px
3895
- }
3896
- }
3897
-
3898
- @media (min-width: 768px) {
3899
- .navbar-left {
3900
- float: left !important
3901
- }
3902
-
3903
- .navbar-right {
3904
- float: right !important
3905
- }
3906
- }
3907
-
3908
- .navbar-form {
3909
- padding: 10px 15px;
3910
- margin-top: 8px;
3911
- margin-right: -15px;
3912
- margin-bottom: 8px;
3913
- margin-left: -15px;
3914
- border-top: 1px solid transparent;
3915
- border-bottom: 1px solid transparent;
3916
- -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
3917
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1)
3918
- }
3919
-
3920
- @media (min-width: 768px) {
3921
- .navbar-form .form-group {
3922
- display: inline-block;
3923
- margin-bottom: 0;
3924
- vertical-align: middle
3925
- }
3926
-
3927
- .navbar-form .form-control {
3928
- display: inline-block
3929
- }
3930
-
3931
- .navbar-form .radio, .navbar-form .checkbox {
3932
- display: inline-block;
3933
- padding-left: 0;
3934
- margin-top: 0;
3935
- margin-bottom: 0
3936
- }
3937
-
3938
- .navbar-form .radio input[type="radio"], .navbar-form .checkbox input[type="checkbox"] {
3939
- float: none;
3940
- margin-left: 0
3941
- }
3942
- }
3943
-
3944
- @media (max-width: 767px) {
3945
- .navbar-form .form-group {
3946
- margin-bottom: 5px
3947
- }
3948
- }
3949
-
3950
- @media (min-width: 768px) {
3951
- .navbar-form {
3952
- width: auto;
3953
- padding-top: 0;
3954
- padding-bottom: 0;
3955
- margin-right: 0;
3956
- margin-left: 0;
3957
- border: 0;
3958
- -webkit-box-shadow: none;
3959
- box-shadow: none
3960
- }
3961
- }
3962
-
3963
- .navbar-nav > li > .dropdown-menu {
3964
- margin-top: 0;
3965
- border-top-right-radius: 0;
3966
- border-top-left-radius: 0
3967
- }
3968
-
3969
- .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
3970
- border-bottom-right-radius: 0;
3971
- border-bottom-left-radius: 0
3972
- }
3973
-
3974
- .navbar-nav.pull-right > li > .dropdown-menu, .navbar-nav > li > .dropdown-menu.pull-right {
3975
- right: 0;
3976
- left: auto
3977
- }
3978
-
3979
- .navbar-btn {
3980
- margin-top: 8px;
3981
- margin-bottom: 8px
3982
- }
3983
-
3984
- .navbar-text {
3985
- float: left;
3986
- margin-top: 15px;
3987
- margin-bottom: 15px
3988
- }
3989
-
3990
- @media (min-width: 768px) {
3991
- .navbar-text {
3992
- margin-right: 15px;
3993
- margin-left: 15px
3994
- }
3995
- }
3996
-
3997
- .navbar-default {
3998
- background-color: #f8f8f8;
3999
- border-color: #e7e7e7
4000
- }
4001
-
4002
- .navbar-default .navbar-brand {
4003
- color: #777
4004
- }
4005
-
4006
- .navbar-default .navbar-brand:hover, .navbar-default .navbar-brand:focus {
4007
- color: #5e5e5e;
4008
- background-color: transparent
4009
- }
4010
-
4011
- .navbar-default .navbar-text {
4012
- color: #777
4013
- }
4014
-
4015
- .navbar-default .navbar-nav > li > a {
4016
- color: #777
4017
- }
4018
-
4019
- .navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:focus {
4020
- color: #333;
4021
- background-color: transparent
4022
- }
4023
-
4024
- .navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus {
4025
- color: #555;
4026
- background-color: #e7e7e7
4027
- }
4028
-
4029
- .navbar-default .navbar-nav > .disabled > a, .navbar-default .navbar-nav > .disabled > a:hover, .navbar-default .navbar-nav > .disabled > a:focus {
4030
- color: #ccc;
4031
- background-color: transparent
4032
- }
4033
-
4034
- .navbar-default .navbar-toggle {
4035
- border-color: #ddd
4036
- }
4037
-
4038
- .navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus {
4039
- background-color: #ddd
4040
- }
4041
-
4042
- .navbar-default .navbar-toggle .icon-bar {
4043
- background-color: #ccc
4044
- }
4045
-
4046
- .navbar-default .navbar-collapse, .navbar-default .navbar-form {
4047
- border-color: #e6e6e6
4048
- }
4049
-
4050
- .navbar-default .navbar-nav > .dropdown > a:hover .caret, .navbar-default .navbar-nav > .dropdown > a:focus .caret {
4051
- border-top-color: #333;
4052
- border-bottom-color: #333
4053
- }
4054
-
4055
- .navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a:hover, .navbar-default .navbar-nav > .open > a:focus {
4056
- color: #555;
4057
- background-color: #e7e7e7
4058
- }
4059
-
4060
- .navbar-default .navbar-nav > .open > a .caret, .navbar-default .navbar-nav > .open > a:hover .caret, .navbar-default .navbar-nav > .open > a:focus .caret {
4061
- border-top-color: #555;
4062
- border-bottom-color: #555
4063
- }
4064
-
4065
- .navbar-default .navbar-nav > .dropdown > a .caret {
4066
- border-top-color: #777;
4067
- border-bottom-color: #777
4068
- }
4069
-
4070
- @media (max-width: 767px) {
4071
- .navbar-default .navbar-nav .open .dropdown-menu > li > a {
4072
- color: #777
4073
- }
4074
-
4075
- .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
4076
- color: #333;
4077
- background-color: transparent
4078
- }
4079
-
4080
- .navbar-default .navbar-nav .open .dropdown-menu > .active > a, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
4081
- color: #555;
4082
- background-color: #e7e7e7
4083
- }
4084
-
4085
- .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4086
- color: #ccc;
4087
- background-color: transparent
4088
- }
4089
- }
4090
-
4091
- .navbar-default .navbar-link {
4092
- color: #777
4093
- }
4094
-
4095
- .navbar-default .navbar-link:hover {
4096
- color: #333
4097
- }
4098
-
4099
- .navbar-inverse {
4100
- background-color: #222;
4101
- border-color: #080808
4102
- }
4103
-
4104
- .navbar-inverse .navbar-brand {
4105
- color: #999
4106
- }
4107
-
4108
- .navbar-inverse .navbar-brand:hover, .navbar-inverse .navbar-brand:focus {
4109
- color: #fff;
4110
- background-color: transparent
4111
- }
4112
-
4113
- .navbar-inverse .navbar-text {
4114
- color: #999
4115
- }
4116
-
4117
- .navbar-inverse .navbar-nav > li > a {
4118
- color: #999
4119
- }
4120
-
4121
- .navbar-inverse .navbar-nav > li > a:hover, .navbar-inverse .navbar-nav > li > a:focus {
4122
- color: #fff;
4123
- background-color: transparent
4124
- }
4125
-
4126
- .navbar-inverse .navbar-nav > .active > a, .navbar-inverse .navbar-nav > .active > a:hover, .navbar-inverse .navbar-nav > .active > a:focus {
4127
- color: #fff;
4128
- background-color: #080808
4129
- }
4130
-
4131
- .navbar-inverse .navbar-nav > .disabled > a, .navbar-inverse .navbar-nav > .disabled > a:hover, .navbar-inverse .navbar-nav > .disabled > a:focus {
4132
- color: #444;
4133
- background-color: transparent
4134
- }
4135
-
4136
- .navbar-inverse .navbar-toggle {
4137
- border-color: #333
4138
- }
4139
-
4140
- .navbar-inverse .navbar-toggle:hover, .navbar-inverse .navbar-toggle:focus {
4141
- background-color: #333
4142
- }
4143
-
4144
- .navbar-inverse .navbar-toggle .icon-bar {
4145
- background-color: #fff
4146
- }
4147
-
4148
- .navbar-inverse .navbar-collapse, .navbar-inverse .navbar-form {
4149
- border-color: #101010
4150
- }
4151
-
4152
- .navbar-inverse .navbar-nav > .open > a, .navbar-inverse .navbar-nav > .open > a:hover, .navbar-inverse .navbar-nav > .open > a:focus {
4153
- color: #fff;
4154
- background-color: #080808
4155
- }
4156
-
4157
- .navbar-inverse .navbar-nav > .dropdown > a:hover .caret {
4158
- border-top-color: #fff;
4159
- border-bottom-color: #fff
4160
- }
4161
-
4162
- .navbar-inverse .navbar-nav > .dropdown > a .caret {
4163
- border-top-color: #999;
4164
- border-bottom-color: #999
4165
- }
4166
-
4167
- .navbar-inverse .navbar-nav > .open > a .caret, .navbar-inverse .navbar-nav > .open > a:hover .caret, .navbar-inverse .navbar-nav > .open > a:focus .caret {
4168
- border-top-color: #fff;
4169
- border-bottom-color: #fff
4170
- }
4171
-
4172
- @media (max-width: 767px) {
4173
- .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
4174
- border-color: #080808
4175
- }
4176
-
4177
- .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
4178
- color: #999
4179
- }
4180
-
4181
- .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
4182
- color: #fff;
4183
- background-color: transparent
4184
- }
4185
-
4186
- .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
4187
- color: #fff;
4188
- background-color: #080808
4189
- }
4190
-
4191
- .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4192
- color: #444;
4193
- background-color: transparent
4194
- }
4195
- }
4196
-
4197
- .navbar-inverse .navbar-link {
4198
- color: #999
4199
- }
4200
-
4201
- .navbar-inverse .navbar-link:hover {
4202
- color: #fff
4203
- }
4204
-
4205
- .breadcrumb {
4206
- padding: 8px 15px;
4207
- margin-bottom: 20px;
4208
- list-style: none;
4209
- background-color: #f5f5f5;
4210
- border-radius: 4px
4211
- }
4212
-
4213
- .breadcrumb > li {
4214
- display: inline-block
4215
- }
4216
-
4217
- .breadcrumb > li + li:before {
4218
- padding: 0 5px;
4219
- color: #ccc;
4220
- content: "/\00a0"
4221
- }
4222
-
4223
- .breadcrumb > .active {
4224
- color: #999
4225
- }
4226
-
4227
- .pagination {
4228
- display: inline-block;
4229
- padding-left: 0;
4230
- margin: 20px 0;
4231
- border-radius: 4px
4232
- }
4233
-
4234
- .pagination > li {
4235
- display: inline
4236
- }
4237
-
4238
- .pagination > li > a, .pagination > li > span {
4239
- position: relative;
4240
- float: left;
4241
- padding: 6px 12px;
4242
- margin-left: -1px;
4243
- line-height: 1.428571429;
4244
- text-decoration: none;
4245
- background-color: #fff;
4246
- border: 1px solid #ddd
4247
- }
4248
-
4249
- .pagination > li:first-child > a, .pagination > li:first-child > span {
4250
- margin-left: 0;
4251
- border-bottom-left-radius: 4px;
4252
- border-top-left-radius: 4px
4253
- }
4254
-
4255
- .pagination > li:last-child > a, .pagination > li:last-child > span {
4256
- border-top-right-radius: 4px;
4257
- border-bottom-right-radius: 4px
4258
- }
4259
-
4260
- .pagination > li > a:hover, .pagination > li > span:hover, .pagination > li > a:focus, .pagination > li > span:focus {
4261
- background-color: #eee
4262
- }
4263
-
4264
- .pagination > .active > a, .pagination > .active > span, .pagination > .active > a:hover, .pagination > .active > span:hover, .pagination > .active > a:focus, .pagination > .active > span:focus {
4265
- z-index: 2;
4266
- color: #fff;
4267
- cursor: default;
4268
- background-color: #428bca;
4269
- border-color: #428bca
4270
- }
4271
-
4272
- .pagination > .disabled > span, .pagination > .disabled > a, .pagination > .disabled > a:hover, .pagination > .disabled > a:focus {
4273
- color: #999;
4274
- cursor: not-allowed;
4275
- background-color: #fff;
4276
- border-color: #ddd
4277
- }
4278
-
4279
- .pagination-lg > li > a, .pagination-lg > li > span {
4280
- padding: 10px 16px;
4281
- font-size: 18px
4282
- }
4283
-
4284
- .pagination-lg > li:first-child > a, .pagination-lg > li:first-child > span {
4285
- border-bottom-left-radius: 6px;
4286
- border-top-left-radius: 6px
4287
- }
4288
-
4289
- .pagination-lg > li:last-child > a, .pagination-lg > li:last-child > span {
4290
- border-top-right-radius: 6px;
4291
- border-bottom-right-radius: 6px
4292
- }
4293
-
4294
- .pagination-sm > li > a, .pagination-sm > li > span {
4295
- padding: 5px 10px;
4296
- font-size: 12px
4297
- }
4298
-
4299
- .pagination-sm > li:first-child > a, .pagination-sm > li:first-child > span {
4300
- border-bottom-left-radius: 3px;
4301
- border-top-left-radius: 3px
4302
- }
4303
-
4304
- .pagination-sm > li:last-child > a, .pagination-sm > li:last-child > span {
4305
- border-top-right-radius: 3px;
4306
- border-bottom-right-radius: 3px
4307
- }
4308
-
4309
- .pager {
4310
- padding-left: 0;
4311
- margin: 20px 0;
4312
- text-align: center;
4313
- list-style: none
4314
- }
4315
-
4316
- .pager:before, .pager:after {
4317
- display: table;
4318
- content: " "
4319
- }
4320
-
4321
- .pager:after {
4322
- clear: both
4323
- }
4324
-
4325
- .pager:before, .pager:after {
4326
- display: table;
4327
- content: " "
4328
- }
4329
-
4330
- .pager:after {
4331
- clear: both
4332
- }
4333
-
4334
- .pager li {
4335
- display: inline
4336
- }
4337
-
4338
- .pager li > a, .pager li > span {
4339
- display: inline-block;
4340
- padding: 5px 14px;
4341
- background-color: #fff;
4342
- border: 1px solid #ddd;
4343
- border-radius: 15px
4344
- }
4345
-
4346
- .pager li > a:hover, .pager li > a:focus {
4347
- text-decoration: none;
4348
- background-color: #eee
4349
- }
4350
-
4351
- .pager .next > a, .pager .next > span {
4352
- float: right
4353
- }
4354
-
4355
- .pager .previous > a, .pager .previous > span {
4356
- float: left
4357
- }
4358
-
4359
- .pager .disabled > a, .pager .disabled > a:hover, .pager .disabled > a:focus, .pager .disabled > span {
4360
- color: #999;
4361
- cursor: not-allowed;
4362
- background-color: #fff
4363
- }
4364
-
4365
- .label {
4366
- display: inline;
4367
- padding: .2em .6em .3em;
4368
- font-size: 75%;
4369
- font-weight: bold;
4370
- line-height: 1;
4371
- color: #fff;
4372
- text-align: center;
4373
- white-space: nowrap;
4374
- vertical-align: baseline;
4375
- border-radius: .25em
4376
- }
4377
-
4378
- .label[href]:hover, .label[href]:focus {
4379
- color: #fff;
4380
- text-decoration: none;
4381
- cursor: pointer
4382
- }
4383
-
4384
- .label:empty {
4385
- display: none
4386
- }
4387
-
4388
- .label-default {
4389
- background-color: #999
4390
- }
4391
-
4392
- .label-default[href]:hover, .label-default[href]:focus {
4393
- background-color: #808080
4394
- }
4395
-
4396
- .label-primary {
4397
- background-color: #428bca
4398
- }
4399
-
4400
- .label-primary[href]:hover, .label-primary[href]:focus {
4401
- background-color: #3071a9
4402
- }
4403
-
4404
- .label-success {
4405
- background-color: #5cb85c
4406
- }
4407
-
4408
- .label-success[href]:hover, .label-success[href]:focus {
4409
- background-color: #449d44
4410
- }
4411
-
4412
- .label-info {
4413
- background-color: #5bc0de
4414
- }
4415
-
4416
- .label-info[href]:hover, .label-info[href]:focus {
4417
- background-color: #31b0d5
4418
- }
4419
-
4420
- .label-warning {
4421
- background-color: #f0ad4e
4422
- }
4423
-
4424
- .label-warning[href]:hover, .label-warning[href]:focus {
4425
- background-color: #ec971f
4426
- }
4427
-
4428
- .label-danger {
4429
- background-color: #d9534f
4430
- }
4431
-
4432
- .label-danger[href]:hover, .label-danger[href]:focus {
4433
- background-color: #c9302c
4434
- }
4435
-
4436
- .badge {
4437
- display: inline-block;
4438
- min-width: 10px;
4439
- padding: 3px 7px;
4440
- font-size: 12px;
4441
- font-weight: bold;
4442
- line-height: 1;
4443
- color: #fff;
4444
- text-align: center;
4445
- white-space: nowrap;
4446
- vertical-align: baseline;
4447
- background-color: #999;
4448
- border-radius: 10px
4449
- }
4450
-
4451
- .badge:empty {
4452
- display: none
4453
- }
4454
-
4455
- a.badge:hover, a.badge:focus {
4456
- color: #fff;
4457
- text-decoration: none;
4458
- cursor: pointer
4459
- }
4460
-
4461
- .btn .badge {
4462
- position: relative;
4463
- top: -1px
4464
- }
4465
-
4466
- a.list-group-item.active > .badge, .nav-pills > .active > a > .badge {
4467
- color: #428bca;
4468
- background-color: #fff
4469
- }
4470
-
4471
- .nav-pills > li > a > .badge {
4472
- margin-left: 3px
4473
- }
4474
-
4475
- .jumbotron {
4476
- padding: 30px;
4477
- margin-bottom: 30px;
4478
- font-size: 21px;
4479
- font-weight: 200;
4480
- line-height: 2.1428571435;
4481
- color: inherit;
4482
- background-color: #eee
4483
- }
4484
-
4485
- .jumbotron h1 {
4486
- line-height: 1;
4487
- color: inherit
4488
- }
4489
-
4490
- .jumbotron p {
4491
- line-height: 1.4
4492
- }
4493
-
4494
- .container .jumbotron {
4495
- border-radius: 6px
4496
- }
4497
-
4498
- @media screen and (min-width: 768px) {
4499
- .jumbotron {
4500
- padding-top: 48px;
4501
- padding-bottom: 48px
4502
- }
4503
-
4504
- .container .jumbotron {
4505
- padding-right: 60px;
4506
- padding-left: 60px
4507
- }
4508
-
4509
- .jumbotron h1 {
4510
- font-size: 63px
4511
- }
4512
- }
4513
-
4514
- .thumbnail {
4515
- display: inline-block;
4516
- display: block;
4517
- height: auto;
4518
- max-width: 100%;
4519
- padding: 4px;
4520
- line-height: 1.428571429;
4521
- background-color: #fff;
4522
- border: 1px solid #ddd;
4523
- border-radius: 4px;
4524
- -webkit-transition: all .2s ease-in-out;
4525
- transition: all .2s ease-in-out
4526
- }
4527
-
4528
- .thumbnail > img {
4529
- display: block;
4530
- height: auto;
4531
- max-width: 100%
4532
- }
4533
-
4534
- a.thumbnail:hover, a.thumbnail:focus {
4535
- border-color: #428bca
4536
- }
4537
-
4538
- .thumbnail > img {
4539
- margin-right: auto;
4540
- margin-left: auto
4541
- }
4542
-
4543
- .thumbnail .caption {
4544
- padding: 9px;
4545
- color: #333
4546
- }
4547
-
4548
- .alert {
4549
- padding: 15px;
4550
- margin-bottom: 20px;
4551
- border: 1px solid transparent;
4552
- border-radius: 4px
4553
- }
4554
-
4555
- .alert h4 {
4556
- margin-top: 0;
4557
- color: inherit
4558
- }
4559
-
4560
- .alert .alert-link {
4561
- font-weight: bold
4562
- }
4563
-
4564
- .alert > p, .alert > ul {
4565
- margin-bottom: 0
4566
- }
4567
-
4568
- .alert > p + p {
4569
- margin-top: 5px
4570
- }
4571
-
4572
- .alert-dismissable {
4573
- padding-right: 35px
4574
- }
4575
-
4576
- .alert-dismissable .close {
4577
- position: relative;
4578
- top: -2px;
4579
- right: -21px;
4580
- color: inherit
4581
- }
4582
-
4583
- .alert-success {
4584
- color: #468847;
4585
- background-color: #dff0d8;
4586
- border-color: #d6e9c6
4587
- }
4588
-
4589
- .alert-success hr {
4590
- border-top-color: #c9e2b3
4591
- }
4592
-
4593
- .alert-success .alert-link {
4594
- color: #356635
4595
- }
4596
-
4597
- .alert-info {
4598
- color: #3a87ad;
4599
- background-color: #d9edf7;
4600
- border-color: #bce8f1
4601
- }
4602
-
4603
- .alert-info hr {
4604
- border-top-color: #a6e1ec
4605
- }
4606
-
4607
- .alert-info .alert-link {
4608
- color: #2d6987
4609
- }
4610
-
4611
- .alert-warning {
4612
- color: #c09853;
4613
- background-color: #fcf8e3;
4614
- border-color: #fbeed5
4615
- }
4616
-
4617
- .alert-warning hr {
4618
- border-top-color: #f8e5be
4619
- }
4620
-
4621
- .alert-warning .alert-link {
4622
- color: #a47e3c
4623
- }
4624
-
4625
- .alert-danger {
4626
- color: #b94a48;
4627
- background-color: #f2dede;
4628
- border-color: #eed3d7
4629
- }
4630
-
4631
- .alert-danger hr {
4632
- border-top-color: #e6c1c7
4633
- }
4634
-
4635
- .alert-danger .alert-link {
4636
- color: #953b39
4637
- }
4638
-
4639
- @-webkit-keyframes progress-bar-stripes {
4640
- from {
4641
- background-position: 40px 0
4642
- }
4643
- to {
4644
- background-position: 0 0
4645
- }
4646
- }
4647
-
4648
- @-moz-keyframes progress-bar-stripes {
4649
- from {
4650
- background-position: 40px 0
4651
- }
4652
- to {
4653
- background-position: 0 0
4654
- }
4655
- }
4656
-
4657
- @-o-keyframes progress-bar-stripes {
4658
- from {
4659
- background-position: 0 0
4660
- }
4661
- to {
4662
- background-position: 40px 0
4663
- }
4664
- }
4665
-
4666
- @keyframes progress-bar-stripes {
4667
- from {
4668
- background-position: 40px 0
4669
- }
4670
- to {
4671
- background-position: 0 0
4672
- }
4673
- }
4674
-
4675
- .progress {
4676
- height: 20px;
4677
- margin-bottom: 20px;
4678
- overflow: hidden;
4679
- background-color: #f5f5f5;
4680
- border-radius: 4px;
4681
- -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
4682
- box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1)
4683
- }
4684
-
4685
- .progress-bar {
4686
- float: left;
4687
- width: 0;
4688
- height: 100%;
4689
- font-size: 12px;
4690
- color: #fff;
4691
- text-align: center;
4692
- background-color: #428bca;
4693
- -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
4694
- box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
4695
- -webkit-transition: width .6s ease;
4696
- transition: width .6s ease
4697
- }
4698
-
4699
- .progress-striped .progress-bar {
4700
- background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
4701
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4702
- background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4703
- background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4704
- background-size: 40px 40px
4705
- }
4706
-
4707
- .progress.active .progress-bar {
4708
- -webkit-animation: progress-bar-stripes 2s linear infinite;
4709
- -moz-animation: progress-bar-stripes 2s linear infinite;
4710
- -ms-animation: progress-bar-stripes 2s linear infinite;
4711
- -o-animation: progress-bar-stripes 2s linear infinite;
4712
- animation: progress-bar-stripes 2s linear infinite
4713
- }
4714
-
4715
- .progress-bar-success {
4716
- background-color: #5cb85c
4717
- }
4718
-
4719
- .progress-striped .progress-bar-success {
4720
- background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
4721
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4722
- background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4723
- background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent)
4724
- }
4725
-
4726
- .progress-bar-info {
4727
- background-color: #5bc0de
4728
- }
4729
-
4730
- .progress-striped .progress-bar-info {
4731
- background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
4732
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4733
- background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4734
- background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent)
4735
- }
4736
-
4737
- .progress-bar-warning {
4738
- background-color: #f0ad4e
4739
- }
4740
-
4741
- .progress-striped .progress-bar-warning {
4742
- background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
4743
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4744
- background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4745
- background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent)
4746
- }
4747
-
4748
- .progress-bar-danger {
4749
- background-color: #d9534f
4750
- }
4751
-
4752
- .progress-striped .progress-bar-danger {
4753
- background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
4754
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4755
- background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4756
- background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent)
4757
- }
4758
-
4759
- .media, .media-body {
4760
- overflow: hidden;
4761
- zoom: 1
4762
- }
4763
-
4764
- .media, .media .media {
4765
- margin-top: 15px
4766
- }
4767
-
4768
- .media:first-child {
4769
- margin-top: 0
4770
- }
4771
-
4772
- .media-object {
4773
- display: block
4774
- }
4775
-
4776
- .media-heading {
4777
- margin: 0 0 5px
4778
- }
4779
-
4780
- .media > .pull-left {
4781
- margin-right: 10px
4782
- }
4783
-
4784
- .media > .pull-right {
4785
- margin-left: 10px
4786
- }
4787
-
4788
- .media-list {
4789
- padding-left: 0;
4790
- list-style: none
4791
- }
4792
-
4793
- .list-group {
4794
- padding-left: 0;
4795
- margin-bottom: 20px
4796
- }
4797
-
4798
- .list-group-item {
4799
- position: relative;
4800
- display: block;
4801
- padding: 10px 15px;
4802
- margin-bottom: -1px;
4803
- background-color: #fff;
4804
- border: 1px solid #ddd
4805
- }
4806
-
4807
- .list-group-item:first-child {
4808
- border-top-right-radius: 4px;
4809
- border-top-left-radius: 4px
4810
- }
4811
-
4812
- .list-group-item:last-child {
4813
- margin-bottom: 0;
4814
- border-bottom-right-radius: 4px;
4815
- border-bottom-left-radius: 4px
4816
- }
4817
-
4818
- .list-group-item > .badge {
4819
- float: right
4820
- }
4821
-
4822
- .list-group-item > .badge + .badge {
4823
- margin-right: 5px
4824
- }
4825
-
4826
- a.list-group-item {
4827
- color: #555
4828
- }
4829
-
4830
- a.list-group-item .list-group-item-heading {
4831
- color: #333
4832
- }
4833
-
4834
- a.list-group-item:hover, a.list-group-item:focus {
4835
- text-decoration: none;
4836
- background-color: #f5f5f5
4837
- }
4838
-
4839
- .list-group-item.active, .list-group-item.active:hover, .list-group-item.active:focus {
4840
- z-index: 2;
4841
- color: #fff;
4842
- background-color: #428bca;
4843
- border-color: #428bca
4844
- }
4845
-
4846
- .list-group-item.active .list-group-item-heading, .list-group-item.active:hover .list-group-item-heading, .list-group-item.active:focus .list-group-item-heading {
4847
- color: inherit
4848
- }
4849
-
4850
- .list-group-item.active .list-group-item-text, .list-group-item.active:hover .list-group-item-text, .list-group-item.active:focus .list-group-item-text {
4851
- color: #e1edf7
4852
- }
4853
-
4854
- .list-group-item-heading {
4855
- margin-top: 0;
4856
- margin-bottom: 5px
4857
- }
4858
-
4859
- .list-group-item-text {
4860
- margin-bottom: 0;
4861
- line-height: 1.3
4862
- }
4863
-
4864
- .panel {
4865
- margin-bottom: 20px;
4866
- background-color: #fff;
4867
- border: 1px solid transparent;
4868
- border-radius: 4px;
4869
- -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
4870
- box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05)
4871
- }
4872
-
4873
- .panel-body {
4874
- padding: 15px
4875
- }
4876
-
4877
- .panel-body:before, .panel-body:after {
4878
- display: table;
4879
- content: " "
4880
- }
4881
-
4882
- .panel-body:after {
4883
- clear: both
4884
- }
4885
-
4886
- .panel-body:before, .panel-body:after {
4887
- display: table;
4888
- content: " "
4889
- }
4890
-
4891
- .panel-body:after {
4892
- clear: both
4893
- }
4894
-
4895
- .panel > .list-group {
4896
- margin-bottom: 0
4897
- }
4898
-
4899
- .panel > .list-group .list-group-item {
4900
- border-width: 1px 0
4901
- }
4902
-
4903
- .panel > .list-group .list-group-item:first-child {
4904
- border-top-right-radius: 0;
4905
- border-top-left-radius: 0
4906
- }
4907
-
4908
- .panel > .list-group .list-group-item:last-child {
4909
- border-bottom: 0
4910
- }
4911
-
4912
- .panel-heading + .list-group .list-group-item:first-child {
4913
- border-top-width: 0
4914
- }
4915
-
4916
- .panel > .table {
4917
- margin-bottom: 0
4918
- }
4919
-
4920
- .panel > .panel-body + .table {
4921
- border-top: 1px solid #ddd
4922
- }
4923
-
4924
- .panel-heading {
4925
- padding: 10px 15px;
4926
- border-bottom: 1px solid transparent;
4927
- border-top-right-radius: 3px;
4928
- border-top-left-radius: 3px
4929
- }
4930
-
4931
- .panel-title {
4932
- margin-top: 0;
4933
- margin-bottom: 0;
4934
- font-size: 16px
4935
- }
4936
-
4937
- .panel-title > a {
4938
- color: inherit
4939
- }
4940
-
4941
- .panel-footer {
4942
- padding: 10px 15px;
4943
- background-color: #f5f5f5;
4944
- border-top: 1px solid #ddd;
4945
- border-bottom-right-radius: 3px;
4946
- border-bottom-left-radius: 3px
4947
- }
4948
-
4949
- .panel-group .panel {
4950
- margin-bottom: 0;
4951
- overflow: hidden;
4952
- border-radius: 4px
4953
- }
4954
-
4955
- .panel-group .panel + .panel {
4956
- margin-top: 5px
4957
- }
4958
-
4959
- .panel-group .panel-heading {
4960
- border-bottom: 0
4961
- }
4962
-
4963
- .panel-group .panel-heading + .panel-collapse .panel-body {
4964
- border-top: 1px solid #ddd
4965
- }
4966
-
4967
- .panel-group .panel-footer {
4968
- border-top: 0
4969
- }
4970
-
4971
- .panel-group .panel-footer + .panel-collapse .panel-body {
4972
- border-bottom: 1px solid #ddd
4973
- }
4974
-
4975
- .panel-default {
4976
- border-color: #ddd
4977
- }
4978
-
4979
- .panel-default > .panel-heading {
4980
- color: #333;
4981
- background-color: #f5f5f5;
4982
- border-color: #ddd
4983
- }
4984
-
4985
- .panel-default > .panel-heading + .panel-collapse .panel-body {
4986
- border-top-color: #ddd
4987
- }
4988
-
4989
- .panel-default > .panel-footer + .panel-collapse .panel-body {
4990
- border-bottom-color: #ddd
4991
- }
4992
-
4993
- .panel-primary {
4994
- border-color: #428bca
4995
- }
4996
-
4997
- .panel-primary > .panel-heading {
4998
- color: #fff;
4999
- background-color: #428bca;
5000
- border-color: #428bca
5001
- }
5002
-
5003
- .panel-primary > .panel-heading + .panel-collapse .panel-body {
5004
- border-top-color: #428bca
5005
- }
5006
-
5007
- .panel-primary > .panel-footer + .panel-collapse .panel-body {
5008
- border-bottom-color: #428bca
5009
- }
5010
-
5011
- .panel-success {
5012
- border-color: #d6e9c6
5013
- }
5014
-
5015
- .panel-success > .panel-heading {
5016
- color: #468847;
5017
- background-color: #dff0d8;
5018
- border-color: #d6e9c6
5019
- }
5020
-
5021
- .panel-success > .panel-heading + .panel-collapse .panel-body {
5022
- border-top-color: #d6e9c6
5023
- }
5024
-
5025
- .panel-success > .panel-footer + .panel-collapse .panel-body {
5026
- border-bottom-color: #d6e9c6
5027
- }
5028
-
5029
- .panel-warning {
5030
- border-color: #fbeed5
5031
- }
5032
-
5033
- .panel-warning > .panel-heading {
5034
- color: #c09853;
5035
- background-color: #fcf8e3;
5036
- border-color: #fbeed5
5037
- }
5038
-
5039
- .panel-warning > .panel-heading + .panel-collapse .panel-body {
5040
- border-top-color: #fbeed5
5041
- }
5042
-
5043
- .panel-warning > .panel-footer + .panel-collapse .panel-body {
5044
- border-bottom-color: #fbeed5
5045
- }
5046
-
5047
- .panel-danger {
5048
- border-color: #eed3d7
5049
- }
5050
-
5051
- .panel-danger > .panel-heading {
5052
- color: #b94a48;
5053
- background-color: #f2dede;
5054
- border-color: #eed3d7
5055
- }
5056
-
5057
- .panel-danger > .panel-heading + .panel-collapse .panel-body {
5058
- border-top-color: #eed3d7
5059
- }
5060
-
5061
- .panel-danger > .panel-footer + .panel-collapse .panel-body {
5062
- border-bottom-color: #eed3d7
5063
- }
5064
-
5065
- .panel-info {
5066
- border-color: #bce8f1
5067
- }
5068
-
5069
- .panel-info > .panel-heading {
5070
- color: #3a87ad;
5071
- background-color: #d9edf7;
5072
- border-color: #bce8f1
5073
- }
5074
-
5075
- .panel-info > .panel-heading + .panel-collapse .panel-body {
5076
- border-top-color: #bce8f1
5077
- }
5078
-
5079
- .panel-info > .panel-footer + .panel-collapse .panel-body {
5080
- border-bottom-color: #bce8f1
5081
- }
5082
-
5083
- .well {
5084
- min-height: 20px;
5085
- padding: 19px;
5086
- margin-bottom: 20px;
5087
- background-color: #f5f5f5;
5088
- border: 1px solid #e3e3e3;
5089
- border-radius: 4px;
5090
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
5091
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05)
5092
- }
5093
-
5094
- .well blockquote {
5095
- border-color: #ddd;
5096
- border-color: rgba(0, 0, 0, 0.15)
5097
- }
5098
-
5099
- .well-lg {
5100
- padding: 24px;
5101
- border-radius: 6px
5102
- }
5103
-
5104
- .well-sm {
5105
- padding: 9px;
5106
- border-radius: 3px
5107
- }
5108
-
5109
- .close {
5110
- float: right;
5111
- font-size: 21px;
5112
- font-weight: bold;
5113
- line-height: 1;
5114
- color: #000;
5115
- text-shadow: 0 1px 0 #fff;
5116
- opacity: .2;
5117
- filter: alpha(opacity=20)
5118
- }
5119
-
5120
- .close:hover, .close:focus {
5121
- color: #000;
5122
- text-decoration: none;
5123
- cursor: pointer;
5124
- opacity: .5;
5125
- filter: alpha(opacity=50)
5126
- }
5127
-
5128
- button.close {
5129
- padding: 0;
5130
- cursor: pointer;
5131
- background: transparent;
5132
- border: 0;
5133
- -webkit-appearance: none
5134
- }
5135
-
5136
- .modal-open {
5137
- overflow: hidden
5138
- }
5139
-
5140
- body.modal-open, .modal-open .navbar-fixed-top, .modal-open .navbar-fixed-bottom {
5141
- margin-right: 15px
5142
- }
5143
-
5144
- .modal {
5145
- position: fixed;
5146
- top: 0;
5147
- right: 0;
5148
- bottom: 0;
5149
- left: 0;
5150
- z-index: 1040;
5151
- display: none;
5152
- overflow: auto;
5153
- overflow-y: scroll
5154
- }
5155
-
5156
- .modal.fade .modal-dialog {
5157
- -webkit-transform: translate(0, -25%);
5158
- -ms-transform: translate(0, -25%);
5159
- transform: translate(0, -25%);
5160
- -webkit-transition: -webkit-transform .3s ease-out;
5161
- -moz-transition: -moz-transform .3s ease-out;
5162
- -o-transition: -o-transform .3s ease-out;
5163
- transition: transform .3s ease-out
5164
- }
5165
-
5166
- .modal.in .modal-dialog {
5167
- -webkit-transform: translate(0, 0);
5168
- -ms-transform: translate(0, 0);
5169
- transform: translate(0, 0)
5170
- }
5171
-
5172
- .modal-dialog {
5173
- z-index: 1050;
5174
- width: auto;
5175
- padding: 10px;
5176
- margin-right: auto;
5177
- margin-left: auto
5178
- }
5179
-
5180
- .modal-content {
5181
- position: relative;
5182
- background-color: #fff;
5183
- border: 1px solid #999;
5184
- border: 1px solid rgba(0, 0, 0, 0.2);
5185
- border-radius: 6px;
5186
- outline: 0;
5187
- -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
5188
- box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
5189
- background-clip: padding-box
5190
- }
5191
-
5192
- .modal-backdrop {
5193
- position: fixed;
5194
- top: 0;
5195
- right: 0;
5196
- bottom: 0;
5197
- left: 0;
5198
- z-index: 1030;
5199
- background-color: #000
5200
- }
5201
-
5202
- .modal-backdrop.fade {
5203
- opacity: 0;
5204
- filter: alpha(opacity=0)
5205
- }
5206
-
5207
- .modal-backdrop.in {
5208
- opacity: .5;
5209
- filter: alpha(opacity=50)
5210
- }
5211
-
5212
- .modal-header {
5213
- min-height: 16.428571429px;
5214
- padding: 15px;
5215
- border-bottom: 1px solid #e5e5e5
5216
- }
5217
-
5218
- .modal-header .close {
5219
- margin-top: -2px
5220
- }
5221
-
5222
- .modal-title {
5223
- margin: 0;
5224
- line-height: 1.428571429
5225
- }
5226
-
5227
- .modal-body {
5228
- position: relative;
5229
- padding: 20px
5230
- }
5231
-
5232
- .modal-footer {
5233
- padding: 19px 20px 20px;
5234
- margin-top: 15px;
5235
- text-align: right;
5236
- border-top: 1px solid #e5e5e5
5237
- }
5238
-
5239
- .modal-footer:before, .modal-footer:after {
5240
- display: table;
5241
- content: " "
5242
- }
5243
-
5244
- .modal-footer:after {
5245
- clear: both
5246
- }
5247
-
5248
- .modal-footer:before, .modal-footer:after {
5249
- display: table;
5250
- content: " "
5251
- }
5252
-
5253
- .modal-footer:after {
5254
- clear: both
5255
- }
5256
-
5257
- .modal-footer .btn + .btn {
5258
- margin-bottom: 0;
5259
- margin-left: 5px
5260
- }
5261
-
5262
- .modal-footer .btn-group .btn + .btn {
5263
- margin-left: -1px
5264
- }
5265
-
5266
- .modal-footer .btn-block + .btn-block {
5267
- margin-left: 0
5268
- }
5269
-
5270
- @media screen and (min-width: 768px) {
5271
- .modal-dialog {
5272
- right: auto;
5273
- left: 50%;
5274
- width: 600px;
5275
- padding-top: 30px;
5276
- padding-bottom: 30px
5277
- }
5278
-
5279
- .modal-content {
5280
- -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
5281
- box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5)
5282
- }
5283
- }
5284
-
5285
- .tooltip {
5286
- position: absolute;
5287
- z-index: 1030;
5288
- display: block;
5289
- font-size: 12px;
5290
- line-height: 1.4;
5291
- opacity: 0;
5292
- filter: alpha(opacity=0);
5293
- visibility: visible
5294
- }
5295
-
5296
- .tooltip.in {
5297
- opacity: .9;
5298
- filter: alpha(opacity=90)
5299
- }
5300
-
5301
- .tooltip.top {
5302
- padding: 5px 0;
5303
- margin-top: -3px
5304
- }
5305
-
5306
- .tooltip.right {
5307
- padding: 0 5px;
5308
- margin-left: 3px
5309
- }
5310
-
5311
- .tooltip.bottom {
5312
- padding: 5px 0;
5313
- margin-top: 3px
5314
- }
5315
-
5316
- .tooltip.left {
5317
- padding: 0 5px;
5318
- margin-left: -3px
5319
- }
5320
-
5321
- .tooltip-inner {
5322
- max-width: 200px;
5323
- padding: 3px 8px;
5324
- color: #fff;
5325
- text-align: center;
5326
- text-decoration: none;
5327
- background-color: #000;
5328
- border-radius: 4px
5329
- }
5330
-
5331
- .tooltip-arrow {
5332
- position: absolute;
5333
- width: 0;
5334
- height: 0;
5335
- border-color: transparent;
5336
- border-style: solid
5337
- }
5338
-
5339
- .tooltip.top .tooltip-arrow {
5340
- bottom: 0;
5341
- left: 50%;
5342
- margin-left: -5px;
5343
- border-top-color: #000;
5344
- border-width: 5px 5px 0
5345
- }
5346
-
5347
- .tooltip.top-left .tooltip-arrow {
5348
- bottom: 0;
5349
- left: 5px;
5350
- border-top-color: #000;
5351
- border-width: 5px 5px 0
5352
- }
5353
-
5354
- .tooltip.top-right .tooltip-arrow {
5355
- right: 5px;
5356
- bottom: 0;
5357
- border-top-color: #000;
5358
- border-width: 5px 5px 0
5359
- }
5360
-
5361
- .tooltip.right .tooltip-arrow {
5362
- top: 50%;
5363
- left: 0;
5364
- margin-top: -5px;
5365
- border-right-color: #000;
5366
- border-width: 5px 5px 5px 0
5367
- }
5368
-
5369
- .tooltip.left .tooltip-arrow {
5370
- top: 50%;
5371
- right: 0;
5372
- margin-top: -5px;
5373
- border-left-color: #000;
5374
- border-width: 5px 0 5px 5px
5375
- }
5376
-
5377
- .tooltip.bottom .tooltip-arrow {
5378
- top: 0;
5379
- left: 50%;
5380
- margin-left: -5px;
5381
- border-bottom-color: #000;
5382
- border-width: 0 5px 5px
5383
- }
5384
-
5385
- .tooltip.bottom-left .tooltip-arrow {
5386
- top: 0;
5387
- left: 5px;
5388
- border-bottom-color: #000;
5389
- border-width: 0 5px 5px
5390
- }
5391
-
5392
- .tooltip.bottom-right .tooltip-arrow {
5393
- top: 0;
5394
- right: 5px;
5395
- border-bottom-color: #000;
5396
- border-width: 0 5px 5px
5397
- }
5398
-
5399
- .popover {
5400
- position: absolute;
5401
- top: 0;
5402
- left: 0;
5403
- z-index: 1010;
5404
- display: none;
5405
- max-width: 276px;
5406
- padding: 1px;
5407
- text-align: left;
5408
- white-space: normal;
5409
- background-color: #fff;
5410
- border: 1px solid #ccc;
5411
- border: 1px solid rgba(0, 0, 0, 0.2);
5412
- border-radius: 6px;
5413
- -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
5414
- box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
5415
- background-clip: padding-box
5416
- }
5417
-
5418
- .popover.top {
5419
- margin-top: -10px
5420
- }
5421
-
5422
- .popover.right {
5423
- margin-left: 10px
5424
- }
5425
-
5426
- .popover.bottom {
5427
- margin-top: 10px
5428
- }
5429
-
5430
- .popover.left {
5431
- margin-left: -10px
5432
- }
5433
-
5434
- .popover-title {
5435
- padding: 8px 14px;
5436
- margin: 0;
5437
- font-size: 14px;
5438
- font-weight: normal;
5439
- line-height: 18px;
5440
- background-color: #f7f7f7;
5441
- border-bottom: 1px solid #ebebeb;
5442
- border-radius: 5px 5px 0 0
5443
- }
5444
-
5445
- .popover-content {
5446
- padding: 9px 14px
5447
- }
5448
-
5449
- .popover .arrow, .popover .arrow:after {
5450
- position: absolute;
5451
- display: block;
5452
- width: 0;
5453
- height: 0;
5454
- border-color: transparent;
5455
- border-style: solid
5456
- }
5457
-
5458
- .popover .arrow {
5459
- border-width: 11px
5460
- }
5461
-
5462
- .popover .arrow:after {
5463
- border-width: 10px;
5464
- content: ""
5465
- }
5466
-
5467
- .popover.top .arrow {
5468
- bottom: -11px;
5469
- left: 50%;
5470
- margin-left: -11px;
5471
- border-top-color: #999;
5472
- border-top-color: rgba(0, 0, 0, 0.25);
5473
- border-bottom-width: 0
5474
- }
5475
-
5476
- .popover.top .arrow:after {
5477
- bottom: 1px;
5478
- margin-left: -10px;
5479
- border-top-color: #fff;
5480
- border-bottom-width: 0;
5481
- content: " "
5482
- }
5483
-
5484
- .popover.right .arrow {
5485
- top: 50%;
5486
- left: -11px;
5487
- margin-top: -11px;
5488
- border-right-color: #999;
5489
- border-right-color: rgba(0, 0, 0, 0.25);
5490
- border-left-width: 0
5491
- }
5492
-
5493
- .popover.right .arrow:after {
5494
- bottom: -10px;
5495
- left: 1px;
5496
- border-right-color: #fff;
5497
- border-left-width: 0;
5498
- content: " "
5499
- }
5500
-
5501
- .popover.bottom .arrow {
5502
- top: -11px;
5503
- left: 50%;
5504
- margin-left: -11px;
5505
- border-bottom-color: #999;
5506
- border-bottom-color: rgba(0, 0, 0, 0.25);
5507
- border-top-width: 0
5508
- }
5509
-
5510
- .popover.bottom .arrow:after {
5511
- top: 1px;
5512
- margin-left: -10px;
5513
- border-bottom-color: #fff;
5514
- border-top-width: 0;
5515
- content: " "
5516
- }
5517
-
5518
- .popover.left .arrow {
5519
- top: 50%;
5520
- right: -11px;
5521
- margin-top: -11px;
5522
- border-left-color: #999;
5523
- border-left-color: rgba(0, 0, 0, 0.25);
5524
- border-right-width: 0
5525
- }
5526
-
5527
- .popover.left .arrow:after {
5528
- right: 1px;
5529
- bottom: -10px;
5530
- border-left-color: #fff;
5531
- border-right-width: 0;
5532
- content: " "
5533
- }
5534
-
5535
- .carousel {
5536
- position: relative
5537
- }
5538
-
5539
- .carousel-inner {
5540
- position: relative;
5541
- width: 100%;
5542
- overflow: hidden
5543
- }
5544
-
5545
- .carousel-inner > .item {
5546
- position: relative;
5547
- display: none;
5548
- -webkit-transition: .6s ease-in-out left;
5549
- transition: .6s ease-in-out left
5550
- }
5551
-
5552
- .carousel-inner > .item > img, .carousel-inner > .item > a > img {
5553
- display: block;
5554
- height: auto;
5555
- max-width: 100%;
5556
- line-height: 1
5557
- }
5558
-
5559
- .carousel-inner > .active, .carousel-inner > .next, .carousel-inner > .prev {
5560
- display: block
5561
- }
5562
-
5563
- .carousel-inner > .active {
5564
- left: 0
5565
- }
5566
-
5567
- .carousel-inner > .next, .carousel-inner > .prev {
5568
- position: absolute;
5569
- top: 0;
5570
- width: 100%
5571
- }
5572
-
5573
- .carousel-inner > .next {
5574
- left: 100%
5575
- }
5576
-
5577
- .carousel-inner > .prev {
5578
- left: -100%
5579
- }
5580
-
5581
- .carousel-inner > .next.left, .carousel-inner > .prev.right {
5582
- left: 0
5583
- }
5584
-
5585
- .carousel-inner > .active.left {
5586
- left: -100%
5587
- }
5588
-
5589
- .carousel-inner > .active.right {
5590
- left: 100%
5591
- }
5592
-
5593
- .carousel-control {
5594
- position: absolute;
5595
- top: 0;
5596
- bottom: 0;
5597
- left: 0;
5598
- width: 15%;
5599
- font-size: 20px;
5600
- color: #fff;
5601
- text-align: center;
5602
- text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
5603
- opacity: .5;
5604
- filter: alpha(opacity=50)
5605
- }
5606
-
5607
- .carousel-control.left {
5608
- background-image: -webkit-gradient(linear, 0 top, 100% top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001)));
5609
- background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.5) 0), color-stop(rgba(0, 0, 0, 0.0001) 100%));
5610
- background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0.0001) 100%);
5611
- background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0.0001) 100%);
5612
- background-repeat: repeat-x;
5613
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)
5614
- }
5615
-
5616
- .carousel-control.right {
5617
- right: 0;
5618
- left: auto;
5619
- background-image: -webkit-gradient(linear, 0 top, 100% top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5)));
5620
- background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.0001) 0), color-stop(rgba(0, 0, 0, 0.5) 100%));
5621
- background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0, rgba(0, 0, 0, 0.5) 100%);
5622
- background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0, rgba(0, 0, 0, 0.5) 100%);
5623
- background-repeat: repeat-x;
5624
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)
5625
- }
5626
-
5627
- .carousel-control:hover, .carousel-control:focus {
5628
- color: #fff;
5629
- text-decoration: none;
5630
- opacity: .9;
5631
- filter: alpha(opacity=90)
5632
- }
5633
-
5634
- .carousel-control .icon-prev, .carousel-control .icon-next, .carousel-control .glyphicon-chevron-left, .carousel-control .glyphicon-chevron-right {
5635
- position: absolute;
5636
- top: 50%;
5637
- left: 50%;
5638
- z-index: 5;
5639
- display: inline-block
5640
- }
5641
-
5642
- .carousel-control .icon-prev, .carousel-control .icon-next {
5643
- width: 20px;
5644
- height: 20px;
5645
- margin-top: -10px;
5646
- margin-left: -10px;
5647
- font-family: serif
5648
- }
5649
-
5650
- .carousel-control .icon-prev:before {
5651
- content: '\2039'
5652
- }
5653
-
5654
- .carousel-control .icon-next:before {
5655
- content: '\203a'
5656
- }
5657
-
5658
- .carousel-indicators {
5659
- position: absolute;
5660
- bottom: 10px;
5661
- left: 50%;
5662
- z-index: 15;
5663
- width: 60%;
5664
- padding-left: 0;
5665
- margin-left: -30%;
5666
- text-align: center;
5667
- list-style: none
5668
- }
5669
-
5670
- .carousel-indicators li {
5671
- display: inline-block;
5672
- width: 10px;
5673
- height: 10px;
5674
- margin: 1px;
5675
- text-indent: -999px;
5676
- cursor: pointer;
5677
- border: 1px solid #fff;
5678
- border-radius: 10px
5679
- }
5680
-
5681
- .carousel-indicators .active {
5682
- width: 12px;
5683
- height: 12px;
5684
- margin: 0;
5685
- background-color: #fff
5686
- }
5687
-
5688
- .carousel-caption {
5689
- position: absolute;
5690
- right: 15%;
5691
- bottom: 20px;
5692
- left: 15%;
5693
- z-index: 10;
5694
- padding-top: 20px;
5695
- padding-bottom: 20px;
5696
- color: #fff;
5697
- text-align: center;
5698
- text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6)
5699
- }
5700
-
5701
- .carousel-caption .btn {
5702
- text-shadow: none
5703
- }
5704
-
5705
- @media screen and (min-width: 768px) {
5706
- .carousel-control .icon-prev, .carousel-control .icon-next {
5707
- width: 30px;
5708
- height: 30px;
5709
- margin-top: -15px;
5710
- margin-left: -15px;
5711
- font-size: 30px
5712
- }
5713
-
5714
- .carousel-caption {
5715
- right: 20%;
5716
- left: 20%;
5717
- padding-bottom: 30px
5718
- }
5719
-
5720
- .carousel-indicators {
5721
- bottom: 20px
5722
- }
5723
- }
5724
-
5725
- .clearfix:before, .clearfix:after {
5726
- display: table;
5727
- content: " "
5728
- }
5729
-
5730
- .clearfix:after {
5731
- clear: both
5732
- }
5733
-
5734
- .pull-right {
5735
- float: right !important
5736
- }
5737
-
5738
- .pull-left {
5739
- float: left !important
5740
- }
5741
-
5742
- .hide {
5743
- display: none !important
5744
- }
5745
-
5746
- .show {
5747
- display: block !important
5748
- }
5749
-
5750
- .invisible {
5751
- visibility: hidden
5752
- }
5753
-
5754
- .text-hide {
5755
- font: 0/0 a;
5756
- color: transparent;
5757
- text-shadow: none;
5758
- background-color: transparent;
5759
- border: 0
5760
- }
5761
-
5762
- .affix {
5763
- position: fixed
5764
- }
5765
-
5766
- @-ms-viewport {
5767
- width: device-width
5768
- }
5769
-
5770
- @media screen and (max-width: 400px) {
5771
- @-ms-viewport {
5772
- width: 320px
5773
- }
5774
- }
5775
-
5776
- .hidden {
5777
- display: none !important;
5778
- visibility: hidden !important
5779
- }
5780
-
5781
- .visible-xs {
5782
- display: none !important
5783
- }
5784
-
5785
- tr.visible-xs {
5786
- display: none !important
5787
- }
5788
-
5789
- th.visible-xs, td.visible-xs {
5790
- display: none !important
5791
- }
5792
-
5793
- @media (max-width: 767px) {
5794
- .visible-xs {
5795
- display: block !important
5796
- }
5797
-
5798
- tr.visible-xs {
5799
- display: table-row !important
5800
- }
5801
-
5802
- th.visible-xs, td.visible-xs {
5803
- display: table-cell !important
5804
- }
5805
- }
5806
-
5807
- @media (min-width: 768px) and (max-width: 991px) {
5808
- .visible-xs.visible-sm {
5809
- display: block !important
5810
- }
5811
-
5812
- tr.visible-xs.visible-sm {
5813
- display: table-row !important
5814
- }
5815
-
5816
- th.visible-xs.visible-sm, td.visible-xs.visible-sm {
5817
- display: table-cell !important
5818
- }
5819
- }
5820
-
5821
- @media (min-width: 992px) and (max-width: 1199px) {
5822
- .visible-xs.visible-md {
5823
- display: block !important
5824
- }
5825
-
5826
- tr.visible-xs.visible-md {
5827
- display: table-row !important
5828
- }
5829
-
5830
- th.visible-xs.visible-md, td.visible-xs.visible-md {
5831
- display: table-cell !important
5832
- }
5833
- }
5834
-
5835
- @media (min-width: 1200px) {
5836
- .visible-xs.visible-lg {
5837
- display: block !important
5838
- }
5839
-
5840
- tr.visible-xs.visible-lg {
5841
- display: table-row !important
5842
- }
5843
-
5844
- th.visible-xs.visible-lg, td.visible-xs.visible-lg {
5845
- display: table-cell !important
5846
- }
5847
- }
5848
-
5849
- .visible-sm {
5850
- display: none !important
5851
- }
5852
-
5853
- tr.visible-sm {
5854
- display: none !important
5855
- }
5856
-
5857
- th.visible-sm, td.visible-sm {
5858
- display: none !important
5859
- }
5860
-
5861
- @media (max-width: 767px) {
5862
- .visible-sm.visible-xs {
5863
- display: block !important
5864
- }
5865
-
5866
- tr.visible-sm.visible-xs {
5867
- display: table-row !important
5868
- }
5869
-
5870
- th.visible-sm.visible-xs, td.visible-sm.visible-xs {
5871
- display: table-cell !important
5872
- }
5873
- }
5874
-
5875
- @media (min-width: 768px) and (max-width: 991px) {
5876
- .visible-sm {
5877
- display: block !important
5878
- }
5879
-
5880
- tr.visible-sm {
5881
- display: table-row !important
5882
- }
5883
-
5884
- th.visible-sm, td.visible-sm {
5885
- display: table-cell !important
5886
- }
5887
- }
5888
-
5889
- @media (min-width: 992px) and (max-width: 1199px) {
5890
- .visible-sm.visible-md {
5891
- display: block !important
5892
- }
5893
-
5894
- tr.visible-sm.visible-md {
5895
- display: table-row !important
5896
- }
5897
-
5898
- th.visible-sm.visible-md, td.visible-sm.visible-md {
5899
- display: table-cell !important
5900
- }
5901
- }
5902
-
5903
- @media (min-width: 1200px) {
5904
- .visible-sm.visible-lg {
5905
- display: block !important
5906
- }
5907
-
5908
- tr.visible-sm.visible-lg {
5909
- display: table-row !important
5910
- }
5911
-
5912
- th.visible-sm.visible-lg, td.visible-sm.visible-lg {
5913
- display: table-cell !important
5914
- }
5915
- }
5916
-
5917
- .visible-md {
5918
- display: none !important
5919
- }
5920
-
5921
- tr.visible-md {
5922
- display: none !important
5923
- }
5924
-
5925
- th.visible-md, td.visible-md {
5926
- display: none !important
5927
- }
5928
-
5929
- @media (max-width: 767px) {
5930
- .visible-md.visible-xs {
5931
- display: block !important
5932
- }
5933
-
5934
- tr.visible-md.visible-xs {
5935
- display: table-row !important
5936
- }
5937
-
5938
- th.visible-md.visible-xs, td.visible-md.visible-xs {
5939
- display: table-cell !important
5940
- }
5941
- }
5942
-
5943
- @media (min-width: 768px) and (max-width: 991px) {
5944
- .visible-md.visible-sm {
5945
- display: block !important
5946
- }
5947
-
5948
- tr.visible-md.visible-sm {
5949
- display: table-row !important
5950
- }
5951
-
5952
- th.visible-md.visible-sm, td.visible-md.visible-sm {
5953
- display: table-cell !important
5954
- }
5955
- }
5956
-
5957
- @media (min-width: 992px) and (max-width: 1199px) {
5958
- .visible-md {
5959
- display: block !important
5960
- }
5961
-
5962
- tr.visible-md {
5963
- display: table-row !important
5964
- }
5965
-
5966
- th.visible-md, td.visible-md {
5967
- display: table-cell !important
5968
- }
5969
- }
5970
-
5971
- @media (min-width: 1200px) {
5972
- .visible-md.visible-lg {
5973
- display: block !important
5974
- }
5975
-
5976
- tr.visible-md.visible-lg {
5977
- display: table-row !important
5978
- }
5979
-
5980
- th.visible-md.visible-lg, td.visible-md.visible-lg {
5981
- display: table-cell !important
5982
- }
5983
- }
5984
-
5985
- .visible-lg {
5986
- display: none !important
5987
- }
5988
-
5989
- tr.visible-lg {
5990
- display: none !important
5991
- }
5992
-
5993
- th.visible-lg, td.visible-lg {
5994
- display: none !important
5995
- }
5996
-
5997
- @media (max-width: 767px) {
5998
- .visible-lg.visible-xs {
5999
- display: block !important
6000
- }
6001
-
6002
- tr.visible-lg.visible-xs {
6003
- display: table-row !important
6004
- }
6005
-
6006
- th.visible-lg.visible-xs, td.visible-lg.visible-xs {
6007
- display: table-cell !important
6008
- }
6009
- }
6010
-
6011
- @media (min-width: 768px) and (max-width: 991px) {
6012
- .visible-lg.visible-sm {
6013
- display: block !important
6014
- }
6015
-
6016
- tr.visible-lg.visible-sm {
6017
- display: table-row !important
6018
- }
6019
-
6020
- th.visible-lg.visible-sm, td.visible-lg.visible-sm {
6021
- display: table-cell !important
6022
- }
6023
- }
6024
-
6025
- @media (min-width: 992px) and (max-width: 1199px) {
6026
- .visible-lg.visible-md {
6027
- display: block !important
6028
- }
6029
-
6030
- tr.visible-lg.visible-md {
6031
- display: table-row !important
6032
- }
6033
-
6034
- th.visible-lg.visible-md, td.visible-lg.visible-md {
6035
- display: table-cell !important
6036
- }
6037
- }
6038
-
6039
- @media (min-width: 1200px) {
6040
- .visible-lg {
6041
- display: block !important
6042
- }
6043
-
6044
- tr.visible-lg {
6045
- display: table-row !important
6046
- }
6047
-
6048
- th.visible-lg, td.visible-lg {
6049
- display: table-cell !important
6050
- }
6051
- }
6052
-
6053
- .hidden-xs {
6054
- display: block !important
6055
- }
6056
-
6057
- tr.hidden-xs {
6058
- display: table-row !important
6059
- }
6060
-
6061
- th.hidden-xs, td.hidden-xs {
6062
- display: table-cell !important
6063
- }
6064
-
6065
- @media (max-width: 767px) {
6066
- .hidden-xs {
6067
- display: none !important
6068
- }
6069
-
6070
- tr.hidden-xs {
6071
- display: none !important
6072
- }
6073
-
6074
- th.hidden-xs, td.hidden-xs {
6075
- display: none !important
6076
- }
6077
- }
6078
-
6079
- @media (min-width: 768px) and (max-width: 991px) {
6080
- .hidden-xs.hidden-sm {
6081
- display: none !important
6082
- }
6083
-
6084
- tr.hidden-xs.hidden-sm {
6085
- display: none !important
6086
- }
6087
-
6088
- th.hidden-xs.hidden-sm, td.hidden-xs.hidden-sm {
6089
- display: none !important
6090
- }
6091
- }
6092
-
6093
- @media (min-width: 992px) and (max-width: 1199px) {
6094
- .hidden-xs.hidden-md {
6095
- display: none !important
6096
- }
6097
-
6098
- tr.hidden-xs.hidden-md {
6099
- display: none !important
6100
- }
6101
-
6102
- th.hidden-xs.hidden-md, td.hidden-xs.hidden-md {
6103
- display: none !important
6104
- }
6105
- }
6106
-
6107
- @media (min-width: 1200px) {
6108
- .hidden-xs.hidden-lg {
6109
- display: none !important
6110
- }
6111
-
6112
- tr.hidden-xs.hidden-lg {
6113
- display: none !important
6114
- }
6115
-
6116
- th.hidden-xs.hidden-lg, td.hidden-xs.hidden-lg {
6117
- display: none !important
6118
- }
6119
- }
6120
-
6121
- .hidden-sm {
6122
- display: block !important
6123
- }
6124
-
6125
- tr.hidden-sm {
6126
- display: table-row !important
6127
- }
6128
-
6129
- th.hidden-sm, td.hidden-sm {
6130
- display: table-cell !important
6131
- }
6132
-
6133
- @media (max-width: 767px) {
6134
- .hidden-sm.hidden-xs {
6135
- display: none !important
6136
- }
6137
-
6138
- tr.hidden-sm.hidden-xs {
6139
- display: none !important
6140
- }
6141
-
6142
- th.hidden-sm.hidden-xs, td.hidden-sm.hidden-xs {
6143
- display: none !important
6144
- }
6145
- }
6146
-
6147
- @media (min-width: 768px) and (max-width: 991px) {
6148
- .hidden-sm {
6149
- display: none !important
6150
- }
6151
-
6152
- tr.hidden-sm {
6153
- display: none !important
6154
- }
6155
-
6156
- th.hidden-sm, td.hidden-sm {
6157
- display: none !important
6158
- }
6159
- }
6160
-
6161
- @media (min-width: 992px) and (max-width: 1199px) {
6162
- .hidden-sm.hidden-md {
6163
- display: none !important
6164
- }
6165
-
6166
- tr.hidden-sm.hidden-md {
6167
- display: none !important
6168
- }
6169
-
6170
- th.hidden-sm.hidden-md, td.hidden-sm.hidden-md {
6171
- display: none !important
6172
- }
6173
- }
6174
-
6175
- @media (min-width: 1200px) {
6176
- .hidden-sm.hidden-lg {
6177
- display: none !important
6178
- }
6179
-
6180
- tr.hidden-sm.hidden-lg {
6181
- display: none !important
6182
- }
6183
-
6184
- th.hidden-sm.hidden-lg, td.hidden-sm.hidden-lg {
6185
- display: none !important
6186
- }
6187
- }
6188
-
6189
- .hidden-md {
6190
- display: block !important
6191
- }
6192
-
6193
- tr.hidden-md {
6194
- display: table-row !important
6195
- }
6196
-
6197
- th.hidden-md, td.hidden-md {
6198
- display: table-cell !important
6199
- }
6200
-
6201
- @media (max-width: 767px) {
6202
- .hidden-md.hidden-xs {
6203
- display: none !important
6204
- }
6205
-
6206
- tr.hidden-md.hidden-xs {
6207
- display: none !important
6208
- }
6209
-
6210
- th.hidden-md.hidden-xs, td.hidden-md.hidden-xs {
6211
- display: none !important
6212
- }
6213
- }
6214
-
6215
- @media (min-width: 768px) and (max-width: 991px) {
6216
- .hidden-md.hidden-sm {
6217
- display: none !important
6218
- }
6219
-
6220
- tr.hidden-md.hidden-sm {
6221
- display: none !important
6222
- }
6223
-
6224
- th.hidden-md.hidden-sm, td.hidden-md.hidden-sm {
6225
- display: none !important
6226
- }
6227
- }
6228
-
6229
- @media (min-width: 992px) and (max-width: 1199px) {
6230
- .hidden-md {
6231
- display: none !important
6232
- }
6233
-
6234
- tr.hidden-md {
6235
- display: none !important
6236
- }
6237
-
6238
- th.hidden-md, td.hidden-md {
6239
- display: none !important
6240
- }
6241
- }
6242
-
6243
- @media (min-width: 1200px) {
6244
- .hidden-md.hidden-lg {
6245
- display: none !important
6246
- }
6247
-
6248
- tr.hidden-md.hidden-lg {
6249
- display: none !important
6250
- }
6251
-
6252
- th.hidden-md.hidden-lg, td.hidden-md.hidden-lg {
6253
- display: none !important
6254
- }
6255
- }
6256
-
6257
- .hidden-lg {
6258
- display: block !important
6259
- }
6260
-
6261
- tr.hidden-lg {
6262
- display: table-row !important
6263
- }
6264
-
6265
- th.hidden-lg, td.hidden-lg {
6266
- display: table-cell !important
6267
- }
6268
-
6269
- @media (max-width: 767px) {
6270
- .hidden-lg.hidden-xs {
6271
- display: none !important
6272
- }
6273
-
6274
- tr.hidden-lg.hidden-xs {
6275
- display: none !important
6276
- }
6277
-
6278
- th.hidden-lg.hidden-xs, td.hidden-lg.hidden-xs {
6279
- display: none !important
6280
- }
6281
- }
6282
-
6283
- @media (min-width: 768px) and (max-width: 991px) {
6284
- .hidden-lg.hidden-sm {
6285
- display: none !important
6286
- }
6287
-
6288
- tr.hidden-lg.hidden-sm {
6289
- display: none !important
6290
- }
6291
-
6292
- th.hidden-lg.hidden-sm, td.hidden-lg.hidden-sm {
6293
- display: none !important
6294
- }
6295
- }
6296
-
6297
- @media (min-width: 992px) and (max-width: 1199px) {
6298
- .hidden-lg.hidden-md {
6299
- display: none !important
6300
- }
6301
-
6302
- tr.hidden-lg.hidden-md {
6303
- display: none !important
6304
- }
6305
-
6306
- th.hidden-lg.hidden-md, td.hidden-lg.hidden-md {
6307
- display: none !important
6308
- }
6309
- }
6310
-
6311
- @media (min-width: 1200px) {
6312
- .hidden-lg {
6313
- display: none !important
6314
- }
6315
-
6316
- tr.hidden-lg {
6317
- display: none !important
6318
- }
6319
-
6320
- th.hidden-lg, td.hidden-lg {
6321
- display: none !important
6322
- }
6323
- }
6324
-
6325
- .visible-print {
6326
- display: none !important
6327
- }
6328
-
6329
- tr.visible-print {
6330
- display: none !important
6331
- }
6332
-
6333
- th.visible-print, td.visible-print {
6334
- display: none !important
6335
- }
6336
-
6337
- @media print {
6338
- .visible-print {
6339
- display: block !important
6340
- }
6341
-
6342
- tr.visible-print {
6343
- display: table-row !important
6344
- }
6345
-
6346
- th.visible-print, td.visible-print {
6347
- display: table-cell !important
6348
- }
6349
-
6350
- .hidden-print {
6351
- display: none !important
6352
- }
6353
-
6354
- tr.hidden-print {
6355
- display: none !important
6356
- }
6357
-
6358
- th.hidden-print, td.hidden-print {
6359
- display: none !important
6360
- }
6361
- }
6
  * http://www.apache.org/licenses/LICENSE-2.0
7
  *
8
  * Designed and built with all the love in the world by @mdo and @fat.
9
+ *//*! normalize.css v2.1.0 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{margin:.67em 0;font-size:2em}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}mark{color:#000;background:#ff0}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid #c0c0c0}legend{padding:0;border:0}button,input,select,textarea{margin:0;font-family:inherit;font-size:100%}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{padding:0;box-sizing:border-box}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:2cm .5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}*,*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}button,input,select[multiple],textarea{background-image:none}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}img{vertical-align:middle}.img-responsive{display:block;height:auto;max-width:100%}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16.099999999999998px;font-weight:200;line-height:1.4}@media(min-width:768px){.lead{font-size:21px}}small{font-size:85%}cite{font-style:normal}.text-muted{color:#999}.text-primary{color:#428bca}.text-warning{color:#c09853}.text-danger{color:#b94a48}.text-success{color:#468847}.text-info{color:#3a87ad}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{margin-top:20px;margin-bottom:10px}h4,h5,h6{margin-top:10px;margin-bottom:10px}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}h1 small,.h1 small{font-size:24px}h2 small,.h2 small{font-size:18px}h3 small,.h3 small,h4 small,.h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-bottom:20px}dt,dd{line-height:1.428571429}dt{font-weight:bold}dd{margin-left:0}@media(min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.dl-horizontal dd:before,.dl-horizontal dd:after{display:table;content:" "}.dl-horizontal dd:after{clear:both}.dl-horizontal dd:before,.dl-horizontal dd:after{display:table;content:" "}.dl-horizontal dd:after{clear:both}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}blockquote p:last-child{margin-bottom:0}blockquote small{display:block;line-height:1.428571429;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:1.428571429}code,pre{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.container:before,.container:after{display:table;content:" "}.container:after{clear:both}.container:before,.container:after{display:table;content:" "}.container:after{clear:both}.row{margin-right:-15px;margin-left:-15px}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11{float:left}.col-xs-1{width:8.333333333333332%}.col-xs-2{width:16.666666666666664%}.col-xs-3{width:25%}.col-xs-4{width:33.33333333333333%}.col-xs-5{width:41.66666666666667%}.col-xs-6{width:50%}.col-xs-7{width:58.333333333333336%}.col-xs-8{width:66.66666666666666%}.col-xs-9{width:75%}.col-xs-10{width:83.33333333333334%}.col-xs-11{width:91.66666666666666%}.col-xs-12{width:100%}@media(min-width:768px){.container{max-width:750px}.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11{float:left}.col-sm-1{width:8.333333333333332%}.col-sm-2{width:16.666666666666664%}.col-sm-3{width:25%}.col-sm-4{width:33.33333333333333%}.col-sm-5{width:41.66666666666667%}.col-sm-6{width:50%}.col-sm-7{width:58.333333333333336%}.col-sm-8{width:66.66666666666666%}.col-sm-9{width:75%}.col-sm-10{width:83.33333333333334%}.col-sm-11{width:91.66666666666666%}.col-sm-12{width:100%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-11{left:91.66666666666666%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-11{margin-left:91.66666666666666%}}@media(min-width:992px){.container{max-width:970px}.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11{float:left}.col-md-1{width:8.333333333333332%}.col-md-2{width:16.666666666666664%}.col-md-3{width:25%}.col-md-4{width:33.33333333333333%}.col-md-5{width:41.66666666666667%}.col-md-6{width:50%}.col-md-7{width:58.333333333333336%}.col-md-8{width:66.66666666666666%}.col-md-9{width:75%}.col-md-10{width:83.33333333333334%}.col-md-11{width:91.66666666666666%}.col-md-12{width:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.333333333333332%}.col-md-push-2{left:16.666666666666664%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333333333333%}.col-md-push-5{left:41.66666666666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.333333333333336%}.col-md-push-8{left:66.66666666666666%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333333333334%}.col-md-push-11{left:91.66666666666666%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-11{right:91.66666666666666%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-11{margin-left:91.66666666666666%}}@media(min-width:1200px){.container{max-width:1170px}.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11{float:left}.col-lg-1{width:8.333333333333332%}.col-lg-2{width:16.666666666666664%}.col-lg-3{width:25%}.col-lg-4{width:33.33333333333333%}.col-lg-5{width:41.66666666666667%}.col-lg-6{width:50%}.col-lg-7{width:58.333333333333336%}.col-lg-8{width:66.66666666666666%}.col-lg-9{width:75%}.col-lg-10{width:83.33333333333334%}.col-lg-11{width:91.66666666666666%}.col-lg-12{width:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-11{left:91.66666666666666%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-11{margin-left:91.66666666666666%}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table thead>tr>th,.table tbody>tr>th,.table tfoot>tr>th,.table thead>tr>td,.table tbody>tr>td,.table tfoot>tr>td{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.table thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table caption+thead tr:first-child th,.table colgroup+thead tr:first-child th,.table thead:first-child tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed thead>tr>th,.table-condensed tbody>tr>th,.table-condensed tfoot>tr>th,.table-condensed thead>tr>td,.table-condensed tbody>tr>td,.table-condensed tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*="col-"]{display:table-column;float:none}table td[class*="col-"],table th[class*="col-"]{display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8;border-color:#d6e9c6}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td{background-color:#d0e9c6;border-color:#c9e2b3}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede;border-color:#eed3d7}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td{background-color:#ebcccc;border-color:#e6c1c7}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3;border-color:#fbeed5}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td{background-color:#faf2cc;border-color:#f8e5be}@media(max-width:768px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:scroll;overflow-y:hidden;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0;background-color:#fff}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>thead>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>thead>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}select[multiple],select[size]{height:auto}select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}input[type="number"]::-webkit-outer-spin-button,input[type="number"]::-webkit-inner-spin-button{height:auto}.form-control:-moz-placeholder{color:#999}.form-control::-moz-placeholder{color:#999}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle;background-color:#fff;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}textarea.form-control{height:auto}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.radio label,.checkbox label{display:inline;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:normal;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm{height:auto}.input-lg{height:45px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:45px;line-height:45px}textarea.input-lg{height:auto}.has-warning .help-block,.has-warning .control-label{color:#c09853}.has-warning .form-control{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.has-warning .input-group-addon{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.has-error .help-block,.has-error .control-label{color:#b94a48}.has-error .form-control{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.has-error .input-group-addon{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.has-success .help-block,.has-success .control-label{color:#468847}.has-success .form-control{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.has-success .input-group-addon{color:#468847;background-color:#dff0d8;border-color:#468847}.form-control-static{padding-top:7px;margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media(min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block}.form-inline .radio,.form-inline .checkbox{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:none;margin-left:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{display:table;content:" "}.form-horizontal .form-group:after{clear:both}.form-horizontal .form-group:before,.form-horizontal .form-group:after{display:table;content:" "}.form-horizontal .form-group:after{clear:both}@media(min-width:768px){.form-horizontal .control-label{text-align:right}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:normal;line-height:1.428571429;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;border:1px solid transparent;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-link{font-weight:normal;color:#428bca;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-xs{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs{padding:1px 5px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;line-height:1}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-print:before{content:"\e045"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-briefcase:before{content:"\1f4bc"}.glyphicon-calendar:before{content:"\1f4c5"}.glyphicon-pushpin:before{content:"\1f4cc"}.glyphicon-paperclip:before{content:"\1f4ce"}.glyphicon-camera:before{content:"\1f4f7"}.glyphicon-lock:before{content:"\1f512"}.glyphicon-bell:before{content:"\1f514"}.glyphicon-bookmark:before{content:"\1f516"}.glyphicon-fire:before{content:"\1f525"}.glyphicon-wrench:before{content:"\1f527"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid #000;border-right:4px solid transparent;border-bottom:0 dotted;border-left:4px solid transparent;content:""}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.428571429;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#fff;text-decoration:none;background-color:#428bca}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0 dotted;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media(min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.btn-default .caret{border-top-color:#333}.btn-primary .caret,.btn-success .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret{border-top-color:#fff}.dropup .btn-default .caret{border-bottom-color:#333}.dropup .btn-primary .caret,.dropup .btn-success .caret,.dropup .btn-warning .caret,.dropup .btn-danger .caret,.dropup .btn-info .caret{border-bottom-color:#fff}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar:before,.btn-toolbar:after{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar:before,.btn-toolbar:after{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group{float:left}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group,.btn-toolbar>.btn-group+.btn-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group-xs>.btn{padding:5px 10px;padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{display:table;content:" "}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{display:table;content:" "}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-bottom-left-radius:4px;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.btn-group-justified .btn{display:table-cell;float:none;width:1%}[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group.col{float:none;padding-right:0;padding-left:0}.input-group .form-control{width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:45px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:45px;line-height:45px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-4px}.input-group-btn>.btn:hover,.input-group-btn>.btn:active{z-index:2}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav:before,.nav:after{display:table;content:" "}.nav:after{clear:both}.nav:before,.nav:after{display:table;content:" "}.nav:after{clear:both}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center}@media(min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}}.nav-tabs.nav-justified>li>a{margin-right:0;border-bottom:1px solid #ddd}.nav-tabs.nav-justified>.active>a{border-bottom-color:#fff}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:5px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center}@media(min-width:768px){.nav-justified>li{display:table-cell;width:1%}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-bottom:1px solid #ddd}.nav-tabs-justified>.active>a{border-bottom-color:#fff}.tabbable:before,.tabbable:after{display:table;content:" "}.tabbable:after{clear:both}.tabbable:before,.tabbable:after{display:table;content:" "}.tabbable:after{clear:both}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.nav .caret{border-top-color:#428bca;border-bottom-color:#428bca}.nav a:hover .caret{border-top-color:#2a6496;border-bottom-color:#2a6496}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;z-index:1000;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{display:table;content:" "}.navbar:after{clear:both}.navbar:before,.navbar:after{display:table;content:" "}.navbar:after{clear:both}@media(min-width:768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{display:table;content:" "}.navbar-header:after{clear:both}.navbar-header:before,.navbar-header:after{display:table;content:" "}.navbar-header:after{clear:both}@media(min-width:768px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse:before,.navbar-collapse:after{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media(min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-collapse .navbar-nav.navbar-left:first-child{margin-left:-15px}.navbar-collapse .navbar-nav.navbar-right:last-child{margin-right:-15px}.navbar-collapse .navbar-text:last-child{margin-right:0}}.container>.navbar-header,.container>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media(min-width:768px){.container>.navbar-header,.container>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{border-width:0 0 1px}@media(min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;border-width:0 0 1px}@media(min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;z-index:1030}.navbar-fixed-bottom{bottom:0;margin-bottom:0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media(min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:4px}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media(min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media(max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media(min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}@media(min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}@media(min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{float:none;margin-left:0}}@media(max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media(min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-nav.pull-right>li>.dropdown-menu,.navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-text{float:left;margin-top:15px;margin-bottom:15px}@media(min-width:768px){.navbar-text{margin-right:15px;margin-left:15px}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e6e6e6}.navbar-default .navbar-nav>.dropdown>a:hover .caret,.navbar-default .navbar-nav>.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.open>a .caret,.navbar-default .navbar-nav>.open>a:hover .caret,.navbar-default .navbar-nav>.open>a:focus .caret{border-top-color:#555;border-bottom-color:#555}.navbar-default .navbar-nav>.dropdown>a .caret{border-top-color:#777;border-bottom-color:#777}@media(max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.dropdown>a:hover .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-nav>.dropdown>a .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .navbar-nav>.open>a .caret,.navbar-inverse .navbar-nav>.open>a:hover .caret,.navbar-inverse .navbar-nav>.open>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}@media(max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.428571429;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{background-color:#eee}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager:before,.pager:after{display:table;content:" "}.pager:after{clear:both}.pager:before,.pager:after{display:table;content:" "}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#999;border-radius:10px}.badge:empty{display:none}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.btn .badge{position:relative;top:-1px}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.jumbotron h1{line-height:1;color:inherit}.jumbotron p{line-height:1.4}.container .jumbotron{border-radius:6px}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1{font-size:63px}}.thumbnail{display:inline-block;display:block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img{display:block;height:auto;max-width:100%}a.thumbnail:hover,a.thumbnail:focus{border-color:#428bca}.thumbnail>img{margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#356635}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#2d6987}.alert-warning{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}.alert-warning hr{border-top-color:#f8e5be}.alert-warning .alert-link{color:#a47e3c}.alert-danger{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-danger hr{border-top-color:#e6c1c7}.alert-danger .alert-link{color:#953b39}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{display:table;content:" "}.panel-body:after{clear:both}.panel-body:before,.panel-body:after{display:table;content:" "}.panel-body:after{clear:both}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0}.panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.list-group .list-group-item:last-child{border-bottom:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table{margin-bottom:0}.panel>.panel-body+.table{border-top:1px solid #ddd}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-title{margin-top:0;margin-bottom:0;font-size:16px}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-warning{border-color:#fbeed5}.panel-warning>.panel-heading{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#fbeed5}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#fbeed5}.panel-danger{border-color:#eed3d7}.panel-danger>.panel-heading{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#eed3d7}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#eed3d7}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}body.modal-open,.modal-open .navbar-fixed-top,.modal-open .navbar-fixed-bottom{margin-right:15px}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:auto;overflow-y:scroll}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-dialog{z-index:1050;width:auto;padding:10px;margin-right:auto;margin-left:auto}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.428571429}.modal-body{position:relative;padding:20px}.modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{display:table;content:" "}.modal-footer:after{clear:both}.modal-footer:before,.modal-footer:after{display:table;content:" "}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.modal-dialog{right:auto;left:50%;width:600px;padding-top:30px;padding-bottom:30px}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}}.tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;height:auto;max-width:100%;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);opacity:.5;filter:alpha(opacity=50)}.carousel-control.left{background-image:-webkit-gradient(linear,0 top,100% top,from(rgba(0,0,0,0.5)),to(rgba(0,0,0,0.0001)));background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.5) 0),color-stop(rgba(0,0,0,0.0001) 100%));background-image:-moz-linear-gradient(left,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',endColorstr='#00000000',GradientType=1)}.carousel-control.right{right:0;left:auto;background-image:-webkit-gradient(linear,0 top,100% top,from(rgba(0,0,0,0.0001)),to(rgba(0,0,0,0.5)));background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.0001) 0),color-stop(rgba(0,0,0,0.5) 100%));background-image:-moz-linear-gradient(left,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#80000000',GradientType=1)}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;left:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after{display:table;content:" "}.clearfix:after{clear:both}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.affix{position:fixed}@-ms-viewport{width:device-width}@media screen and (max-width:400px){@-ms-viewport{width:320px}}.hidden{display:none!important;visibility:hidden!important}.visible-xs{display:none!important}tr.visible-xs{display:none!important}th.visible-xs,td.visible-xs{display:none!important}@media(max-width:767px){.visible-xs{display:block!important}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}tr.visible-xs.visible-sm{display:table-row!important}th.visible-xs.visible-sm,td.visible-xs.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block!important}tr.visible-xs.visible-md{display:table-row!important}th.visible-xs.visible-md,td.visible-xs.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-xs.visible-lg{display:block!important}tr.visible-xs.visible-lg{display:table-row!important}th.visible-xs.visible-lg,td.visible-xs.visible-lg{display:table-cell!important}}.visible-sm{display:none!important}tr.visible-sm{display:none!important}th.visible-sm,td.visible-sm{display:none!important}@media(max-width:767px){.visible-sm.visible-xs{display:block!important}tr.visible-sm.visible-xs{display:table-row!important}th.visible-sm.visible-xs,td.visible-sm.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-sm{display:block!important}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-sm.visible-md{display:block!important}tr.visible-sm.visible-md{display:table-row!important}th.visible-sm.visible-md,td.visible-sm.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-sm.visible-lg{display:block!important}tr.visible-sm.visible-lg{display:table-row!important}th.visible-sm.visible-lg,td.visible-sm.visible-lg{display:table-cell!important}}.visible-md{display:none!important}tr.visible-md{display:none!important}th.visible-md,td.visible-md{display:none!important}@media(max-width:767px){.visible-md.visible-xs{display:block!important}tr.visible-md.visible-xs{display:table-row!important}th.visible-md.visible-xs,td.visible-md.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}tr.visible-md.visible-sm{display:table-row!important}th.visible-md.visible-sm,td.visible-md.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-md{display:block!important}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-md.visible-lg{display:block!important}tr.visible-md.visible-lg{display:table-row!important}th.visible-md.visible-lg,td.visible-md.visible-lg{display:table-cell!important}}.visible-lg{display:none!important}tr.visible-lg{display:none!important}th.visible-lg,td.visible-lg{display:none!important}@media(max-width:767px){.visible-lg.visible-xs{display:block!important}tr.visible-lg.visible-xs{display:table-row!important}th.visible-lg.visible-xs,td.visible-lg.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}tr.visible-lg.visible-sm{display:table-row!important}th.visible-lg.visible-sm,td.visible-lg.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block!important}tr.visible-lg.visible-md{display:table-row!important}th.visible-lg.visible-md,td.visible-lg.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-lg{display:block!important}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}.hidden-xs{display:block!important}tr.hidden-xs{display:table-row!important}th.hidden-xs,td.hidden-xs{display:table-cell!important}@media(max-width:767px){.hidden-xs{display:none!important}tr.hidden-xs{display:none!important}th.hidden-xs,td.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm{display:none!important}tr.hidden-xs.hidden-sm{display:none!important}th.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md{display:none!important}tr.hidden-xs.hidden-md{display:none!important}th.hidden-xs.hidden-md,td.hidden-xs.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-xs.hidden-lg{display:none!important}tr.hidden-xs.hidden-lg{display:none!important}th.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg{display:none!important}}.hidden-sm{display:block!important}tr.hidden-sm{display:table-row!important}th.hidden-sm,td.hidden-sm{display:table-cell!important}@media(max-width:767px){.hidden-sm.hidden-xs{display:none!important}tr.hidden-sm.hidden-xs{display:none!important}th.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}tr.hidden-sm{display:none!important}th.hidden-sm,td.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md{display:none!important}tr.hidden-sm.hidden-md{display:none!important}th.hidden-sm.hidden-md,td.hidden-sm.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-sm.hidden-lg{display:none!important}tr.hidden-sm.hidden-lg{display:none!important}th.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg{display:none!important}}.hidden-md{display:block!important}tr.hidden-md{display:table-row!important}th.hidden-md,td.hidden-md{display:table-cell!important}@media(max-width:767px){.hidden-md.hidden-xs{display:none!important}tr.hidden-md.hidden-xs{display:none!important}th.hidden-md.hidden-xs,td.hidden-md.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-md.hidden-sm{display:none!important}tr.hidden-md.hidden-sm{display:none!important}th.hidden-md.hidden-sm,td.hidden-md.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}tr.hidden-md{display:none!important}th.hidden-md,td.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-md.hidden-lg{display:none!important}tr.hidden-md.hidden-lg{display:none!important}th.hidden-md.hidden-lg,td.hidden-md.hidden-lg{display:none!important}}.hidden-lg{display:block!important}tr.hidden-lg{display:table-row!important}th.hidden-lg,td.hidden-lg{display:table-cell!important}@media(max-width:767px){.hidden-lg.hidden-xs{display:none!important}tr.hidden-lg.hidden-xs{display:none!important}th.hidden-lg.hidden-xs,td.hidden-lg.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-lg.hidden-sm{display:none!important}tr.hidden-lg.hidden-sm{display:none!important}th.hidden-lg.hidden-sm,td.hidden-lg.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-lg.hidden-md{display:none!important}tr.hidden-lg.hidden-md{display:none!important}th.hidden-lg.hidden-md,td.hidden-lg.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-lg{display:none!important}tr.hidden-lg{display:none!important}th.hidden-lg,td.hidden-lg{display:none!important}}.visible-print{display:none!important}tr.visible-print{display:none!important}th.visible-print,td.visible-print{display:none!important}@media print{.visible-print{display:block!important}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}.hidden-print{display:none!important}tr.hidden-print{display:none!important}th.hidden-print,td.hidden-print{display:none!important}}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
css/custom-style.css ADDED
@@ -0,0 +1,505 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*********************************************************************************
2
+ * WordPress ultimate CSV Importer is a Tool for importing CSV for the Wordpress
3
+ * plugin developed by Smackcoder. Copyright (C) 2013 Smackcoders.
4
+ *
5
+ * WordPress ultimate CSV Importer is free software; you can redistribute it and/or
6
+ * modify it under the terms of the GNU Affero General Public License version 3 as
7
+ * published by the Free Software Foundation with the addition of the following
8
+ * permission added to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE
9
+ * COVERED WORK IN WHICH THE COPYRIGHT IS OWNED BY WordPress ultimate CSV Importer,
10
+ * WordPress ultimate CSV Importer DISCLAIMS THE WARRANTY OF NON INFRINGEMENT OF THIRD
11
+ * PARTY RIGHTS.
12
+ *
13
+ * WordPress ultimate CSV Importer is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for
16
+ * more details.
17
+ *
18
+ * You should have received a copy of the GNU Affero General Public License along with
19
+ * this program; if not, see http://www.gnu.org/licenses or write to the Free
20
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21
+ * 02110-1301 USA.
22
+ *
23
+ * You can contact Smackcoders at email address info@smackcoders.com.
24
+ *
25
+ * The interactive user interfaces in original and modified versions
26
+ * of this program must display Appropriate Legal Notices, as required under
27
+ * Section 5 of the GNU Affero General Public License version 3.
28
+ *
29
+ * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
30
+ * these Appropriate Legal Notices must retain the display of the WordPress ultimate
31
+ * CSV Importer copyright notice. If the display of the logo is not reasonably feasible
32
+ * for technical reasons, the Appropriate Legal Notices must display the words
33
+ * "Copyright Smackcoders. 2013. All rights reserved".
34
+ ********************************************************************************/
35
+
36
+ .navigationMenu {
37
+ float: left;
38
+ cursor: pointer;
39
+ }
40
+
41
+ #helpatright li {
42
+ padding: 6px;
43
+ }
44
+
45
+ .versionbox {
46
+ width: 100px;
47
+ }
48
+
49
+ .success {
50
+ background: #EFF5EA !important;
51
+ border: 1px solid #95A486 !important;
52
+ color: #3D6611 !important;
53
+ }
54
+
55
+ #dispLabel {
56
+ font-weight: bold;
57
+ text-align: center;
58
+ }
59
+
60
+ .mandatory {
61
+ color: red;
62
+ }
63
+
64
+ .addmarginright {
65
+ margin-right: 30px;
66
+ }
67
+
68
+ .smack-wrap {
69
+ width: 100%;
70
+ overflow: hidden;
71
+ }
72
+
73
+ .smack-postform {
74
+ width: 50%;
75
+ float: left;
76
+ }
77
+
78
+ .module-desc {
79
+ width: 50%;
80
+ float: right;
81
+ }
82
+
83
+ /*menu css*/
84
+ #header ul {
85
+ list-style: none;
86
+ padding: 0;
87
+ margin: 0;
88
+ }
89
+
90
+ .selected {
91
+ font-weight: bold;
92
+ border-bottom: 1px solid white;
93
+ }
94
+
95
+ #header li {
96
+ float: left;
97
+ border: 2px solid #BCD5E1;
98
+ border-bottom-width: 0;
99
+ margin-left: 5px;
100
+ -webkit-border-radius: 6px 6px 0 0;
101
+ -moz-border-radius: 6px 6px 0 0;
102
+ border-radius: 6px 6px 0 0;
103
+ }
104
+
105
+ #header a {
106
+ text-decoration: none;
107
+ display: block;
108
+ background: #E8F1F5;
109
+ padding: 7px 10px;
110
+ color: #103A4D;
111
+ text-align: center;
112
+ }
113
+
114
+ #header a:hover {
115
+ background: #D2E3EB;
116
+ }
117
+
118
+ #header #selected {
119
+ border-color: black;
120
+ }
121
+
122
+ #header #selected a {
123
+ position: relative;
124
+ top: 1px;
125
+ background: white;
126
+ color: black;
127
+ font-weight: bold;
128
+ }
129
+
130
+ #content {
131
+ border: 1px solid black;
132
+ clear: both;
133
+ padding: 0 1em;
134
+ }
135
+
136
+ .error {
137
+ background: #FAEBE7 !important;
138
+ border: 1px solid #F16048 !important;
139
+ color: #DF280A !important;
140
+ }
141
+
142
+ #topNavigation {
143
+ margin: 20px;
144
+ font-size: 1.2em;
145
+ }
146
+
147
+ .success {
148
+ background-color: #EFF5EA;
149
+ border: 1px solid #95A486 !important;
150
+ color: #3D6611 !important;
151
+ }
152
+
153
+ .msg {
154
+ font-weight: bold !important;
155
+ margin: 0 auto !important;
156
+ width: 60%;
157
+ text-align: center;
158
+ min-height: 23px !important;
159
+ padding: 8px 8px 2px 32px !important;
160
+ margin-top: 5px !important;
161
+ }
162
+
163
+ .settingscontainer td input {
164
+ }
165
+
166
+ .settingscontainer td label {
167
+ margin: 5px;
168
+ }
169
+
170
+ .error {
171
+ background-color: #FAEBE7 !important;
172
+ border: 1px solid #F16048 !important;
173
+ color: #DF280A !important;
174
+ }
175
+
176
+ .navigationMenu-link-active {
177
+ background-color: #808080;
178
+ border-top: 1px solid #464646;
179
+ border-left: 1px solid #464646;
180
+ border-right: 1px solid #464646;
181
+ border-bottom: 1px solid #FFFFFF;
182
+ padding: 5px;
183
+ margin: 3px;
184
+ border-top-left-radius: 6px;
185
+ border-top-right-radius: 6px;
186
+ color: #FFFFFF;
187
+ text-decoration: none;
188
+ }
189
+
190
+ .navigationMenu-link-active:hover {
191
+ color: #FFFFFF;
192
+ }
193
+
194
+ .formandhelp {
195
+ margin-top: 20px;
196
+ }
197
+
198
+ .csv-top-navigation-wrapper {
199
+ padding-bottom: 6px;
200
+ display: block;
201
+ width: 100%;
202
+ margin-top: 20px;
203
+ margin-bottom: 20px;
204
+ height: 27px;
205
+ border-bottom: 2px solid #BCD5E1;
206
+ }
207
+
208
+ #topNavigation .selected a {
209
+ background-color: #fff;
210
+ }
211
+
212
+ #topNavigation .selected {
213
+ border-bottom: 2px solid white;
214
+ }
215
+
216
+ @media screen and (-webkit-min-device-pixel-ratio:0) {
217
+ .csv-top-navigation-wrapper {
218
+ height: 26px;
219
+ }
220
+ }
221
+
222
+ #pluginDetails h3, #overview-detail h3, #pluginManager h3 {
223
+ padding: 7px;
224
+ font-weight: bold;
225
+ background-color: #F1F1F1;
226
+ font-style: oblique;
227
+ font-size: medium;
228
+ }
229
+
230
+ .dash-inside {
231
+ padding: 10px;
232
+ margin-top: -14px;
233
+ line-height: 1.5;
234
+ border: 1px solid #EEEEEE;
235
+ }
236
+
237
+ .plugin-details {
238
+ height: 130px;
239
+ }
240
+
241
+ .company-detials {
242
+ }
243
+
244
+ .sociallinks {
245
+ float: right;
246
+ margin-top: -63px;
247
+ }
248
+
249
+ .poweredby {
250
+ margin-top: -30px;
251
+ float: right;
252
+ }
253
+
254
+ #csv_import {
255
+ float: left;
256
+ }
257
+
258
+ .rateus {
259
+ width: 25%;
260
+ }
261
+
262
+ .dash-manager {
263
+ padding: 7px;
264
+ }
265
+
266
+ .dashboard-box {
267
+ font-weight: normal;
268
+ line-height: 1;
269
+ margin: 0;
270
+ width: 75%;
271
+ float: left;
272
+ padding: 7px 10px;
273
+ }
274
+
275
+ .dashboardbox {
276
+ width: 99%;
277
+ }
278
+
279
+ .smack-left {
280
+ font-size: 1.2em;
281
+ font-style: oblique;
282
+ font-family: Georgia;
283
+ text-align: left;
284
+ }
285
+
286
+ .smack-right {
287
+ font-weight: bold;
288
+ font-style: oblique;
289
+ font-size: medium;
290
+ font-family: Georgia;
291
+ text-align: right;
292
+ }
293
+
294
+ .smack-thead {
295
+ font-size: 1em;
296
+ }
297
+
298
+ .t-head {
299
+ text-align: center;
300
+ font-weight: bold;
301
+ }
302
+
303
+ .t-small {
304
+ min-width: 13%;
305
+ }
306
+
307
+ .t-medium {
308
+ min-width: 20%;
309
+ }
310
+
311
+ .t-big {
312
+ min-width: 28%;
313
+ }
314
+
315
+ .t-tiny {
316
+ min-width: 6%;
317
+ padding: 5px;
318
+ }
319
+
320
+ .dash-action {
321
+ cursor: pointer;
322
+ text-decoration: none;
323
+ }
324
+
325
+ .smackHeler {
326
+ font-weight: bold;
327
+ font-size: 1.2em;
328
+ text-align: center;
329
+ width: 100%;
330
+ color: red;
331
+ }
332
+
333
+ .smackaltrow {
334
+ background-color: #F9F9F9;
335
+ }
336
+
337
+ .smackhelpswitcher {
338
+ border-bottom: 1px solid #A2A29D;
339
+ background-color: #E8F1F5;
340
+ text-decoration: none;
341
+ font-size: medium;
342
+ font-weight: bold;
343
+ padding: 7px;
344
+ min-width: 600px;
345
+ }
346
+
347
+ .switchercontent {
348
+ border: 1px solid #EEEEEE;
349
+ background-color: #FFFFFF;
350
+ display: none;
351
+ padding: 5px;
352
+ }
353
+
354
+ .switchercontentodd {
355
+ border: 1px solid #EEEEEE;
356
+ background-color: #FFFFFF;
357
+ display: block;
358
+ font-style: oblique;
359
+ padding: 5px;
360
+ }
361
+
362
+ .smackhelpswitcher_anchor {
363
+ text-decoration: none;
364
+ color: #515151;
365
+ width: 100%;
366
+ }
367
+
368
+ .smackhelpswitcher_img {
369
+ float: right;
370
+ }
371
+
372
+ .settingsicon {
373
+ margin-bottom: -4px;
374
+ }
375
+
376
+ .pluginAbsent:hover {
377
+ color: red;
378
+ }
379
+
380
+ .pluginPresent:hover {
381
+ color: red;
382
+ }
383
+
384
+ .pluginActive:hover {
385
+ color: green;
386
+ }
387
+
388
+ table.importform {
389
+ width: 100%;
390
+ margin-top: 25px;
391
+ }
392
+
393
+ .detectDup {
394
+ width: 220px;
395
+ }
396
+
397
+ .detectDup1 {
398
+ width: 150px;
399
+ }
400
+
401
+ table.importform td {
402
+ padding-top: 20px;
403
+ }
404
+
405
+ .maperror {
406
+ position: fixed;
407
+ z-index: 999;
408
+ width: 250px;
409
+ right: 200px;
410
+ }
411
+
412
+ .iconatright {
413
+ float: right;
414
+ }
415
+
416
+ .helpatright {
417
+ border: 1px solid #EEEEEE;
418
+ margin-top: 25px;
419
+ }
420
+
421
+ .helpatright li {
422
+ padding: 15px;
423
+ }
424
+
425
+ .helpatright > ul {
426
+ margin-top: 40px;
427
+ }
428
+
429
+ div.helpatright h4 {
430
+ float: left;
431
+ padding: 0 0 0 18px;
432
+ }
433
+
434
+ .tickWrongImg {
435
+ display: block;
436
+ padding-left: 10px;
437
+ }
438
+
439
+ #dashboard-wrap {
440
+ margin-bottom: 20px;
441
+ }
442
+
443
+ .uploadlabel {
444
+ float: left;
445
+ width: 100px;
446
+ }
447
+
448
+ .renameOrUpdate {
449
+ display: none;
450
+ }
451
+
452
+ .secondform {
453
+ }
454
+
455
+ #posttypecss td {
456
+ padding: 10px;
457
+ }
458
+
459
+ #display_area td {
460
+ padding: 10px;
461
+ }
462
+
463
+ .customfieldtext {
464
+ margin-left: 15px;
465
+ width: 110px;
466
+ }
467
+
468
+ .upgradetopro {
469
+ color: red;
470
+ font-weight: bold;
471
+ text-align: center;
472
+ }
473
+
474
+ /* Tooltip */
475
+
476
+ a.tooltip {outline:none; }
477
+ a.tooltip strong {line-height:20px;}
478
+ a.tooltip:hover {text-decoration:none;}
479
+ a.tooltip span {
480
+ z-index:10;display:none; padding:3px 12px;
481
+ }
482
+ a.tooltip:hover span{
483
+ display:inline; position:absolute; color:#111;
484
+ border:1px solid #DCA; background:#fffAF0;}
485
+ .callout {z-index:20;position:absolute;top:8px;border:0;left:-12px;}
486
+
487
+ /*CSS3 extras*/
488
+ a.tooltip span
489
+ {
490
+ border-radius:4px;
491
+ -moz-border-radius: 4px;
492
+ -webkit-border-radius: 4px;
493
+
494
+ -moz-box-shadow: 5px 5px 8px #CCC;
495
+ -webkit-box-shadow: 5px 5px 8px #CCC;
496
+ box-shadow: 5px 5px 8px #CCC;
497
+ }
498
+
499
+ .tooltipOne {margin-top:-12px;margin-left:10px;width:225px; line-height:30px;}
500
+ .tooltipTwo {margin-top:-37px;margin-left:160px;width:245px; line-height:20px;}
501
+ .tooltipThree {margin-top:-12px;margin-left:10px;width:160px; line-height:30px;}
502
+ .tooltipFour {margin-top:-35px;margin-left:360px;width:240px; line-height:30px;}
503
+ .tooltipFive {margin-top:-35px;margin-left:160px;width:245px; line-height:20px;}
504
+
505
+
css/fancybox_loading.gif ADDED
Binary file
css/fancybox_loading@2x.gif ADDED
Binary file
css/fancybox_overlay.png ADDED
Binary file
css/fancybox_sprite.png ADDED
Binary file
css/fancybox_sprite@2x.png ADDED
Binary file
css/font-awesome.css CHANGED
@@ -5,1737 +5,1336 @@
5
  /* FONT PATH
6
  * -------------------------- */
7
  @font-face {
8
- font-family: 'FontAwesome';
9
- src: url('../fonts/fontawesome-webfont.eot?v=4.0.3');
10
- src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.0.3') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff?v=4.0.3') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.0.3') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.0.3#fontawesomeregular') format('svg');
11
- font-weight: normal;
12
- font-style: normal;
13
  }
14
-
15
  .fa {
16
- display: inline-block;
17
- font-family: FontAwesome;
18
- font-style: normal;
19
- font-weight: normal;
20
- line-height: 1;
21
- -webkit-font-smoothing: antialiased;
22
- -moz-osx-font-smoothing: grayscale;
23
  }
24
-
25
  /* makes the font 33% larger relative to the icon container */
26
  .fa-lg {
27
- font-size: 1.3333333333333333em;
28
- line-height: 0.75em;
29
- vertical-align: -15%;
30
  }
31
-
32
  .fa-2x {
33
- font-size: 2em;
34
  }
35
-
36
  .fa-3x {
37
- font-size: 3em;
38
  }
39
-
40
  .fa-4x {
41
- font-size: 4em;
42
  }
43
-
44
  .fa-5x {
45
- font-size: 5em;
46
  }
47
-
48
  .fa-fw {
49
- width: 1.2857142857142858em;
50
- text-align: center;
51
  }
52
-
53
  .fa-ul {
54
- padding-left: 0;
55
- margin-left: 2.142857142857143em;
56
- list-style-type: none;
57
  }
58
-
59
  .fa-ul > li {
60
- position: relative;
61
  }
62
-
63
  .fa-li {
64
- position: absolute;
65
- left: -2.142857142857143em;
66
- width: 2.142857142857143em;
67
- top: 0.14285714285714285em;
68
- text-align: center;
69
  }
70
-
71
  .fa-li.fa-lg {
72
- left: -1.8571428571428572em;
73
  }
74
-
75
  .fa-border {
76
- padding: .2em .25em .15em;
77
- border: solid 0.08em #eeeeee;
78
- border-radius: .1em;
79
  }
80
-
81
  .pull-right {
82
- float: right;
83
  }
84
-
85
  .pull-left {
86
- float: left;
87
  }
88
-
89
  .fa.pull-left {
90
- margin-right: .3em;
91
  }
92
-
93
  .fa.pull-right {
94
- margin-left: .3em;
95
  }
96
-
97
  .fa-spin {
98
- -webkit-animation: spin 2s infinite linear;
99
- -moz-animation: spin 2s infinite linear;
100
- -o-animation: spin 2s infinite linear;
101
- animation: spin 2s infinite linear;
102
  }
103
-
104
  @-moz-keyframes spin {
105
- 0% {
106
- -moz-transform: rotate(0deg);
107
- }
108
- 100% {
109
- -moz-transform: rotate(359deg);
110
- }
111
  }
112
-
113
  @-webkit-keyframes spin {
114
- 0% {
115
- -webkit-transform: rotate(0deg);
116
- }
117
- 100% {
118
- -webkit-transform: rotate(359deg);
119
- }
120
  }
121
-
122
  @-o-keyframes spin {
123
- 0% {
124
- -o-transform: rotate(0deg);
125
- }
126
- 100% {
127
- -o-transform: rotate(359deg);
128
- }
129
  }
130
-
131
  @-ms-keyframes spin {
132
- 0% {
133
- -ms-transform: rotate(0deg);
134
- }
135
- 100% {
136
- -ms-transform: rotate(359deg);
137
- }
138
  }
139
-
140
  @keyframes spin {
141
- 0% {
142
- transform: rotate(0deg);
143
- }
144
- 100% {
145
- transform: rotate(359deg);
146
- }
147
  }
148
-
149
  .fa-rotate-90 {
150
- filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
151
- -webkit-transform: rotate(90deg);
152
- -moz-transform: rotate(90deg);
153
- -ms-transform: rotate(90deg);
154
- -o-transform: rotate(90deg);
155
- transform: rotate(90deg);
156
  }
157
-
158
  .fa-rotate-180 {
159
- filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
160
- -webkit-transform: rotate(180deg);
161
- -moz-transform: rotate(180deg);
162
- -ms-transform: rotate(180deg);
163
- -o-transform: rotate(180deg);
164
- transform: rotate(180deg);
165
  }
166
-
167
  .fa-rotate-270 {
168
- filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
169
- -webkit-transform: rotate(270deg);
170
- -moz-transform: rotate(270deg);
171
- -ms-transform: rotate(270deg);
172
- -o-transform: rotate(270deg);
173
- transform: rotate(270deg);
174
  }
175
-
176
  .fa-flip-horizontal {
177
- filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
178
- -webkit-transform: scale(-1, 1);
179
- -moz-transform: scale(-1, 1);
180
- -ms-transform: scale(-1, 1);
181
- -o-transform: scale(-1, 1);
182
- transform: scale(-1, 1);
183
  }
184
-
185
  .fa-flip-vertical {
186
- filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
187
- -webkit-transform: scale(1, -1);
188
- -moz-transform: scale(1, -1);
189
- -ms-transform: scale(1, -1);
190
- -o-transform: scale(1, -1);
191
- transform: scale(1, -1);
192
  }
193
-
194
  .fa-stack {
195
- position: relative;
196
- display: inline-block;
197
- width: 2em;
198
- height: 2em;
199
- line-height: 2em;
200
- vertical-align: middle;
201
  }
202
-
203
  .fa-stack-1x,
204
  .fa-stack-2x {
205
- position: absolute;
206
- left: 0;
207
- width: 100%;
208
- text-align: center;
209
  }
210
-
211
  .fa-stack-1x {
212
- line-height: inherit;
213
  }
214
-
215
  .fa-stack-2x {
216
- font-size: 2em;
217
  }
218
-
219
  .fa-inverse {
220
- color: #ffffff;
221
  }
222
-
223
  /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
224
  readers do not read off random characters that represent icons */
225
  .fa-glass:before {
226
- content: "\f000";
227
  }
228
-
229
  .fa-music:before {
230
- content: "\f001";
231
  }
232
-
233
  .fa-search:before {
234
- content: "\f002";
235
  }
236
-
237
  .fa-envelope-o:before {
238
- content: "\f003";
239
  }
240
-
241
  .fa-heart:before {
242
- content: "\f004";
243
  }
244
-
245
  .fa-star:before {
246
- content: "\f005";
247
  }
248
-
249
  .fa-star-o:before {
250
- content: "\f006";
251
  }
252
-
253
  .fa-user:before {
254
- content: "\f007";
255
  }
256
-
257
  .fa-film:before {
258
- content: "\f008";
259
  }
260
-
261
  .fa-th-large:before {
262
- content: "\f009";
263
  }
264
-
265
  .fa-th:before {
266
- content: "\f00a";
267
  }
268
-
269
  .fa-th-list:before {
270
- content: "\f00b";
271
  }
272
-
273
  .fa-check:before {
274
- content: "\f00c";
275
  }
276
-
277
  .fa-times:before {
278
- content: "\f00d";
279
  }
280
-
281
  .fa-search-plus:before {
282
- content: "\f00e";
283
  }
284
-
285
  .fa-search-minus:before {
286
- content: "\f010";
287
  }
288
-
289
  .fa-power-off:before {
290
- content: "\f011";
291
  }
292
-
293
  .fa-signal:before {
294
- content: "\f012";
295
  }
296
-
297
  .fa-gear:before,
298
  .fa-cog:before {
299
- content: "\f013";
300
  }
301
-
302
  .fa-trash-o:before {
303
- content: "\f014";
304
  }
305
-
306
  .fa-home:before {
307
- content: "\f015";
308
  }
309
-
310
  .fa-file-o:before {
311
- content: "\f016";
312
  }
313
-
314
  .fa-clock-o:before {
315
- content: "\f017";
316
  }
317
-
318
  .fa-road:before {
319
- content: "\f018";
320
  }
321
-
322
  .fa-download:before {
323
- content: "\f019";
324
  }
325
-
326
  .fa-arrow-circle-o-down:before {
327
- content: "\f01a";
328
  }
329
-
330
  .fa-arrow-circle-o-up:before {
331
- content: "\f01b";
332
  }
333
-
334
  .fa-inbox:before {
335
- content: "\f01c";
336
  }
337
-
338
  .fa-play-circle-o:before {
339
- content: "\f01d";
340
  }
341
-
342
  .fa-rotate-right:before,
343
  .fa-repeat:before {
344
- content: "\f01e";
345
  }
346
-
347
  .fa-refresh:before {
348
- content: "\f021";
349
  }
350
-
351
  .fa-list-alt:before {
352
- content: "\f022";
353
  }
354
-
355
  .fa-lock:before {
356
- content: "\f023";
357
  }
358
-
359
  .fa-flag:before {
360
- content: "\f024";
361
  }
362
-
363
  .fa-headphones:before {
364
- content: "\f025";
365
  }
366
-
367
  .fa-volume-off:before {
368
- content: "\f026";
369
  }
370
-
371
  .fa-volume-down:before {
372
- content: "\f027";
373
  }
374
-
375
  .fa-volume-up:before {
376
- content: "\f028";
377
  }
378
-
379
  .fa-qrcode:before {
380
- content: "\f029";
381
  }
382
-
383
  .fa-barcode:before {
384
- content: "\f02a";
385
  }
386
-
387
  .fa-tag:before {
388
- content: "\f02b";
389
  }
390
-
391
  .fa-tags:before {
392
- content: "\f02c";
393
  }
394
-
395
  .fa-book:before {
396
- content: "\f02d";
397
  }
398
-
399
  .fa-bookmark:before {
400
- content: "\f02e";
401
  }
402
-
403
  .fa-print:before {
404
- content: "\f02f";
405
  }
406
-
407
  .fa-camera:before {
408
- content: "\f030";
409
  }
410
-
411
  .fa-font:before {
412
- content: "\f031";
413
  }
414
-
415
  .fa-bold:before {
416
- content: "\f032";
417
  }
418
-
419
  .fa-italic:before {
420
- content: "\f033";
421
  }
422
-
423
  .fa-text-height:before {
424
- content: "\f034";
425
  }
426
-
427
  .fa-text-width:before {
428
- content: "\f035";
429
  }
430
-
431
  .fa-align-left:before {
432
- content: "\f036";
433
  }
434
-
435
  .fa-align-center:before {
436
- content: "\f037";
437
  }
438
-
439
  .fa-align-right:before {
440
- content: "\f038";
441
  }
442
-
443
  .fa-align-justify:before {
444
- content: "\f039";
445
  }
446
-
447
  .fa-list:before {
448
- content: "\f03a";
449
  }
450
-
451
  .fa-dedent:before,
452
  .fa-outdent:before {
453
- content: "\f03b";
454
  }
455
-
456
  .fa-indent:before {
457
- content: "\f03c";
458
  }
459
-
460
  .fa-video-camera:before {
461
- content: "\f03d";
462
  }
463
-
464
  .fa-picture-o:before {
465
- content: "\f03e";
466
  }
467
-
468
  .fa-pencil:before {
469
- content: "\f040";
470
  }
471
-
472
  .fa-map-marker:before {
473
- content: "\f041";
474
  }
475
-
476
  .fa-adjust:before {
477
- content: "\f042";
478
  }
479
-
480
  .fa-tint:before {
481
- content: "\f043";
482
  }
483
-
484
  .fa-edit:before,
485
  .fa-pencil-square-o:before {
486
- content: "\f044";
487
  }
488
-
489
  .fa-share-square-o:before {
490
- content: "\f045";
491
  }
492
-
493
  .fa-check-square-o:before {
494
- content: "\f046";
495
  }
496
-
497
  .fa-arrows:before {
498
- content: "\f047";
499
  }
500
-
501
  .fa-step-backward:before {
502
- content: "\f048";
503
  }
504
-
505
  .fa-fast-backward:before {
506
- content: "\f049";
507
  }
508
-
509
  .fa-backward:before {
510
- content: "\f04a";
511
  }
512
-
513
  .fa-play:before {
514
- content: "\f04b";
515
  }
516
-
517
  .fa-pause:before {
518
- content: "\f04c";
519
  }
520
-
521
  .fa-stop:before {
522
- content: "\f04d";
523
  }
524
-
525
  .fa-forward:before {
526
- content: "\f04e";
527
  }
528
-
529
  .fa-fast-forward:before {
530
- content: "\f050";
531
  }
532
-
533
  .fa-step-forward:before {
534
- content: "\f051";
535
  }
536
-
537
  .fa-eject:before {
538
- content: "\f052";
539
  }
540
-
541
  .fa-chevron-left:before {
542
- content: "\f053";
543
  }
544
-
545
  .fa-chevron-right:before {
546
- content: "\f054";
547
  }
548
-
549
  .fa-plus-circle:before {
550
- content: "\f055";
551
  }
552
-
553
  .fa-minus-circle:before {
554
- content: "\f056";
555
  }
556
-
557
  .fa-times-circle:before {
558
- content: "\f057";
559
  }
560
-
561
  .fa-check-circle:before {
562
- content: "\f058";
563
  }
564
-
565
  .fa-question-circle:before {
566
- content: "\f059";
567
  }
568
-
569
  .fa-info-circle:before {
570
- content: "\f05a";
571
  }
572
-
573
  .fa-crosshairs:before {
574
- content: "\f05b";
575
  }
576
-
577
  .fa-times-circle-o:before {
578
- content: "\f05c";
579
  }
580
-
581
  .fa-check-circle-o:before {
582
- content: "\f05d";
583
  }
584
-
585
  .fa-ban:before {
586
- content: "\f05e";
587
  }
588
-
589
  .fa-arrow-left:before {
590
- content: "\f060";
591
  }
592
-
593
  .fa-arrow-right:before {
594
- content: "\f061";
595
  }
596
-
597
  .fa-arrow-up:before {
598
- content: "\f062";
599
  }
600
-
601
  .fa-arrow-down:before {
602
- content: "\f063";
603
  }
604
-
605
  .fa-mail-forward:before,
606
  .fa-share:before {
607
- content: "\f064";
608
  }
609
-
610
  .fa-expand:before {
611
- content: "\f065";
612
  }
613
-
614
  .fa-compress:before {
615
- content: "\f066";
616
  }
617
-
618
  .fa-plus:before {
619
- content: "\f067";
620
  }
621
-
622
  .fa-minus:before {
623
- content: "\f068";
624
  }
625
-
626
  .fa-asterisk:before {
627
- content: "\f069";
628
  }
629
-
630
  .fa-exclamation-circle:before {
631
- content: "\f06a";
632
  }
633
-
634
  .fa-gift:before {
635
- content: "\f06b";
636
  }
637
-
638
  .fa-leaf:before {
639
- content: "\f06c";
640
  }
641
-
642
  .fa-fire:before {
643
- content: "\f06d";
644
  }
645
-
646
  .fa-eye:before {
647
- content: "\f06e";
648
  }
649
-
650
  .fa-eye-slash:before {
651
- content: "\f070";
652
  }
653
-
654
  .fa-warning:before,
655
  .fa-exclamation-triangle:before {
656
- content: "\f071";
657
  }
658
-
659
  .fa-plane:before {
660
- content: "\f072";
661
  }
662
-
663
  .fa-calendar:before {
664
- content: "\f073";
665
  }
666
-
667
  .fa-random:before {
668
- content: "\f074";
669
  }
670
-
671
  .fa-comment:before {
672
- content: "\f075";
673
  }
674
-
675
  .fa-magnet:before {
676
- content: "\f076";
677
  }
678
-
679
  .fa-chevron-up:before {
680
- content: "\f077";
681
  }
682
-
683
  .fa-chevron-down:before {
684
- content: "\f078";
685
  }
686
-
687
  .fa-retweet:before {
688
- content: "\f079";
689
  }
690
-
691
  .fa-shopping-cart:before {
692
- content: "\f07a";
693
  }
694
-
695
  .fa-folder:before {
696
- content: "\f07b";
697
  }
698
-
699
  .fa-folder-open:before {
700
- content: "\f07c";
701
  }
702
-
703
  .fa-arrows-v:before {
704
- content: "\f07d";
705
  }
706
-
707
  .fa-arrows-h:before {
708
- content: "\f07e";
709
  }
710
-
711
  .fa-bar-chart-o:before {
712
- content: "\f080";
713
  }
714
-
715
  .fa-twitter-square:before {
716
- content: "\f081";
717
  }
718
-
719
  .fa-facebook-square:before {
720
- content: "\f082";
721
  }
722
-
723
  .fa-camera-retro:before {
724
- content: "\f083";
725
  }
726
-
727
  .fa-key:before {
728
- content: "\f084";
729
  }
730
-
731
  .fa-gears:before,
732
  .fa-cogs:before {
733
- content: "\f085";
734
  }
735
-
736
  .fa-comments:before {
737
- content: "\f086";
738
  }
739
-
740
  .fa-thumbs-o-up:before {
741
- content: "\f087";
742
  }
743
-
744
  .fa-thumbs-o-down:before {
745
- content: "\f088";
746
  }
747
-
748
  .fa-star-half:before {
749
- content: "\f089";
750
  }
751
-
752
  .fa-heart-o:before {
753
- content: "\f08a";
754
  }
755
-
756
  .fa-sign-out:before {
757
- content: "\f08b";
758
  }
759
-
760
  .fa-linkedin-square:before {
761
- content: "\f08c";
762
  }
763
-
764
  .fa-thumb-tack:before {
765
- content: "\f08d";
766
  }
767
-
768
  .fa-external-link:before {
769
- content: "\f08e";
770
  }
771
-
772
  .fa-sign-in:before {
773
- content: "\f090";
774
  }
775
-
776
  .fa-trophy:before {
777
- content: "\f091";
778
  }
779
-
780
  .fa-github-square:before {
781
- content: "\f092";
782
  }
783
-
784
  .fa-upload:before {
785
- content: "\f093";
786
  }
787
-
788
  .fa-lemon-o:before {
789
- content: "\f094";
790
  }
791
-
792
  .fa-phone:before {
793
- content: "\f095";
794
  }
795
-
796
  .fa-square-o:before {
797
- content: "\f096";
798
  }
799
-
800
  .fa-bookmark-o:before {
801
- content: "\f097";
802
  }
803
-
804
  .fa-phone-square:before {
805
- content: "\f098";
806
  }
807
-
808
  .fa-twitter:before {
809
- content: "\f099";
810
  }
811
-
812
  .fa-facebook:before {
813
- content: "\f09a";
814
  }
815
-
816
  .fa-github:before {
817
- content: "\f09b";
818
  }
819
-
820
  .fa-unlock:before {
821
- content: "\f09c";
822
  }
823
-
824
  .fa-credit-card:before {
825
- content: "\f09d";
826
  }
827
-
828
  .fa-rss:before {
829
- content: "\f09e";
830
  }
831
-
832
  .fa-hdd-o:before {
833
- content: "\f0a0";
834
  }
835
-
836
  .fa-bullhorn:before {
837
- content: "\f0a1";
838
  }
839
-
840
  .fa-bell:before {
841
- content: "\f0f3";
842
  }
843
-
844
  .fa-certificate:before {
845
- content: "\f0a3";
846
  }
847
-
848
  .fa-hand-o-right:before {
849
- content: "\f0a4";
850
  }
851
-
852
  .fa-hand-o-left:before {
853
- content: "\f0a5";
854
  }
855
-
856
  .fa-hand-o-up:before {
857
- content: "\f0a6";
858
  }
859
-
860
  .fa-hand-o-down:before {
861
- content: "\f0a7";
862
  }
863
-
864
  .fa-arrow-circle-left:before {
865
- content: "\f0a8";
866
  }
867
-
868
  .fa-arrow-circle-right:before {
869
- content: "\f0a9";
870
  }
871
-
872
  .fa-arrow-circle-up:before {
873
- content: "\f0aa";
874
  }
875
-
876
  .fa-arrow-circle-down:before {
877
- content: "\f0ab";
878
  }
879
-
880
  .fa-globe:before {
881
- content: "\f0ac";
882
  }
883
-
884
  .fa-wrench:before {
885
- content: "\f0ad";
886
  }
887
-
888
  .fa-tasks:before {
889
- content: "\f0ae";
890
  }
891
-
892
  .fa-filter:before {
893
- content: "\f0b0";
894
  }
895
-
896
  .fa-briefcase:before {
897
- content: "\f0b1";
898
  }
899
-
900
  .fa-arrows-alt:before {
901
- content: "\f0b2";
902
  }
903
-
904
  .fa-group:before,
905
  .fa-users:before {
906
- content: "\f0c0";
907
  }
908
-
909
  .fa-chain:before,
910
  .fa-link:before {
911
- content: "\f0c1";
912
  }
913
-
914
  .fa-cloud:before {
915
- content: "\f0c2";
916
  }
917
-
918
  .fa-flask:before {
919
- content: "\f0c3";
920
  }
921
-
922
  .fa-cut:before,
923
  .fa-scissors:before {
924
- content: "\f0c4";
925
  }
926
-
927
  .fa-copy:before,
928
  .fa-files-o:before {
929
- content: "\f0c5";
930
  }
931
-
932
  .fa-paperclip:before {
933
- content: "\f0c6";
934
  }
935
-
936
  .fa-save:before,
937
  .fa-floppy-o:before {
938
- content: "\f0c7";
939
  }
940
-
941
  .fa-square:before {
942
- content: "\f0c8";
943
  }
944
-
945
  .fa-bars:before {
946
- content: "\f0c9";
947
  }
948
-
949
  .fa-list-ul:before {
950
- content: "\f0ca";
951
  }
952
-
953
  .fa-list-ol:before {
954
- content: "\f0cb";
955
  }
956
-
957
  .fa-strikethrough:before {
958
- content: "\f0cc";
959
  }
960
-
961
  .fa-underline:before {
962
- content: "\f0cd";
963
  }
964
-
965
  .fa-table:before {
966
- content: "\f0ce";
967
  }
968
-
969
  .fa-magic:before {
970
- content: "\f0d0";
971
  }
972
-
973
  .fa-truck:before {
974
- content: "\f0d1";
975
  }
976
-
977
  .fa-pinterest:before {
978
- content: "\f0d2";
979
  }
980
-
981
  .fa-pinterest-square:before {
982
- content: "\f0d3";
983
  }
984
-
985
  .fa-google-plus-square:before {
986
- content: "\f0d4";
987
  }
988
-
989
  .fa-google-plus:before {
990
- content: "\f0d5";
991
  }
992
-
993
  .fa-money:before {
994
- content: "\f0d6";
995
  }
996
-
997
  .fa-caret-down:before {
998
- content: "\f0d7";
999
  }
1000
-
1001
  .fa-caret-up:before {
1002
- content: "\f0d8";
1003
  }
1004
-
1005
  .fa-caret-left:before {
1006
- content: "\f0d9";
1007
  }
1008
-
1009
  .fa-caret-right:before {
1010
- content: "\f0da";
1011
  }
1012
-
1013
  .fa-columns:before {
1014
- content: "\f0db";
1015
  }
1016
-
1017
  .fa-unsorted:before,
1018
  .fa-sort:before {
1019
- content: "\f0dc";
1020
  }
1021
-
1022
  .fa-sort-down:before,
1023
  .fa-sort-asc:before {
1024
- content: "\f0dd";
1025
  }
1026
-
1027
  .fa-sort-up:before,
1028
  .fa-sort-desc:before {
1029
- content: "\f0de";
1030
  }
1031
-
1032
  .fa-envelope:before {
1033
- content: "\f0e0";
1034
  }
1035
-
1036
  .fa-linkedin:before {
1037
- content: "\f0e1";
1038
  }
1039
-
1040
  .fa-rotate-left:before,
1041
  .fa-undo:before {
1042
- content: "\f0e2";
1043
  }
1044
-
1045
  .fa-legal:before,
1046
  .fa-gavel:before {
1047
- content: "\f0e3";
1048
  }
1049
-
1050
  .fa-dashboard:before,
1051
  .fa-tachometer:before {
1052
- content: "\f0e4";
1053
  }
1054
-
1055
  .fa-comment-o:before {
1056
- content: "\f0e5";
1057
  }
1058
-
1059
  .fa-comments-o:before {
1060
- content: "\f0e6";
1061
  }
1062
-
1063
  .fa-flash:before,
1064
  .fa-bolt:before {
1065
- content: "\f0e7";
1066
  }
1067
-
1068
  .fa-sitemap:before {
1069
- content: "\f0e8";
1070
  }
1071
-
1072
  .fa-umbrella:before {
1073
- content: "\f0e9";
1074
  }
1075
-
1076
  .fa-paste:before,
1077
  .fa-clipboard:before {
1078
- content: "\f0ea";
1079
  }
1080
-
1081
  .fa-lightbulb-o:before {
1082
- content: "\f0eb";
1083
  }
1084
-
1085
  .fa-exchange:before {
1086
- content: "\f0ec";
1087
  }
1088
-
1089
  .fa-cloud-download:before {
1090
- content: "\f0ed";
1091
  }
1092
-
1093
  .fa-cloud-upload:before {
1094
- content: "\f0ee";
1095
  }
1096
-
1097
  .fa-user-md:before {
1098
- content: "\f0f0";
1099
  }
1100
-
1101
  .fa-stethoscope:before {
1102
- content: "\f0f1";
1103
  }
1104
-
1105
  .fa-suitcase:before {
1106
- content: "\f0f2";
1107
  }
1108
-
1109
  .fa-bell-o:before {
1110
- content: "\f0a2";
1111
  }
1112
-
1113
  .fa-coffee:before {
1114
- content: "\f0f4";
1115
  }
1116
-
1117
  .fa-cutlery:before {
1118
- content: "\f0f5";
1119
  }
1120
-
1121
  .fa-file-text-o:before {
1122
- content: "\f0f6";
1123
  }
1124
-
1125
  .fa-building-o:before {
1126
- content: "\f0f7";
1127
  }
1128
-
1129
  .fa-hospital-o:before {
1130
- content: "\f0f8";
1131
  }
1132
-
1133
  .fa-ambulance:before {
1134
- content: "\f0f9";
1135
  }
1136
-
1137
  .fa-medkit:before {
1138
- content: "\f0fa";
1139
  }
1140
-
1141
  .fa-fighter-jet:before {
1142
- content: "\f0fb";
1143
  }
1144
-
1145
  .fa-beer:before {
1146
- content: "\f0fc";
1147
  }
1148
-
1149
  .fa-h-square:before {
1150
- content: "\f0fd";
1151
  }
1152
-
1153
  .fa-plus-square:before {
1154
- content: "\f0fe";
1155
  }
1156
-
1157
  .fa-angle-double-left:before {
1158
- content: "\f100";
1159
  }
1160
-
1161
  .fa-angle-double-right:before {
1162
- content: "\f101";
1163
  }
1164
-
1165
  .fa-angle-double-up:before {
1166
- content: "\f102";
1167
  }
1168
-
1169
  .fa-angle-double-down:before {
1170
- content: "\f103";
1171
  }
1172
-
1173
  .fa-angle-left:before {
1174
- content: "\f104";
1175
  }
1176
-
1177
  .fa-angle-right:before {
1178
- content: "\f105";
1179
  }
1180
-
1181
  .fa-angle-up:before {
1182
- content: "\f106";
1183
  }
1184
-
1185
  .fa-angle-down:before {
1186
- content: "\f107";
1187
  }
1188
-
1189
  .fa-desktop:before {
1190
- content: "\f108";
1191
  }
1192
-
1193
  .fa-laptop:before {
1194
- content: "\f109";
1195
  }
1196
-
1197
  .fa-tablet:before {
1198
- content: "\f10a";
1199
  }
1200
-
1201
  .fa-mobile-phone:before,
1202
  .fa-mobile:before {
1203
- content: "\f10b";
1204
  }
1205
-
1206
  .fa-circle-o:before {
1207
- content: "\f10c";
1208
  }
1209
-
1210
  .fa-quote-left:before {
1211
- content: "\f10d";
1212
  }
1213
-
1214
  .fa-quote-right:before {
1215
- content: "\f10e";
1216
  }
1217
-
1218
  .fa-spinner:before {
1219
- content: "\f110";
1220
  }
1221
-
1222
  .fa-circle:before {
1223
- content: "\f111";
1224
  }
1225
-
1226
  .fa-mail-reply:before,
1227
  .fa-reply:before {
1228
- content: "\f112";
1229
  }
1230
-
1231
  .fa-github-alt:before {
1232
- content: "\f113";
1233
  }
1234
-
1235
  .fa-folder-o:before {
1236
- content: "\f114";
1237
  }
1238
-
1239
  .fa-folder-open-o:before {
1240
- content: "\f115";
1241
  }
1242
-
1243
  .fa-smile-o:before {
1244
- content: "\f118";
1245
  }
1246
-
1247
  .fa-frown-o:before {
1248
- content: "\f119";
1249
  }
1250
-
1251
  .fa-meh-o:before {
1252
- content: "\f11a";
1253
  }
1254
-
1255
  .fa-gamepad:before {
1256
- content: "\f11b";
1257
  }
1258
-
1259
  .fa-keyboard-o:before {
1260
- content: "\f11c";
1261
  }
1262
-
1263
  .fa-flag-o:before {
1264
- content: "\f11d";
1265
  }
1266
-
1267
  .fa-flag-checkered:before {
1268
- content: "\f11e";
1269
  }
1270
-
1271
  .fa-terminal:before {
1272
- content: "\f120";
1273
  }
1274
-
1275
  .fa-code:before {
1276
- content: "\f121";
1277
  }
1278
-
1279
  .fa-reply-all:before {
1280
- content: "\f122";
1281
  }
1282
-
1283
  .fa-mail-reply-all:before {
1284
- content: "\f122";
1285
  }
1286
-
1287
  .fa-star-half-empty:before,
1288
  .fa-star-half-full:before,
1289
  .fa-star-half-o:before {
1290
- content: "\f123";
1291
  }
1292
-
1293
  .fa-location-arrow:before {
1294
- content: "\f124";
1295
  }
1296
-
1297
  .fa-crop:before {
1298
- content: "\f125";
1299
  }
1300
-
1301
  .fa-code-fork:before {
1302
- content: "\f126";
1303
  }
1304
-
1305
  .fa-unlink:before,
1306
  .fa-chain-broken:before {
1307
- content: "\f127";
1308
  }
1309
-
1310
  .fa-question:before {
1311
- content: "\f128";
1312
  }
1313
-
1314
  .fa-info:before {
1315
- content: "\f129";
1316
  }
1317
-
1318
  .fa-exclamation:before {
1319
- content: "\f12a";
1320
  }
1321
-
1322
  .fa-superscript:before {
1323
- content: "\f12b";
1324
  }
1325
-
1326
  .fa-subscript:before {
1327
- content: "\f12c";
1328
  }
1329
-
1330
  .fa-eraser:before {
1331
- content: "\f12d";
1332
  }
1333
-
1334
  .fa-puzzle-piece:before {
1335
- content: "\f12e";
1336
  }
1337
-
1338
  .fa-microphone:before {
1339
- content: "\f130";
1340
  }
1341
-
1342
  .fa-microphone-slash:before {
1343
- content: "\f131";
1344
  }
1345
-
1346
  .fa-shield:before {
1347
- content: "\f132";
1348
  }
1349
-
1350
  .fa-calendar-o:before {
1351
- content: "\f133";
1352
  }
1353
-
1354
  .fa-fire-extinguisher:before {
1355
- content: "\f134";
1356
  }
1357
-
1358
  .fa-rocket:before {
1359
- content: "\f135";
1360
  }
1361
-
1362
  .fa-maxcdn:before {
1363
- content: "\f136";
1364
  }
1365
-
1366
  .fa-chevron-circle-left:before {
1367
- content: "\f137";
1368
  }
1369
-
1370
  .fa-chevron-circle-right:before {
1371
- content: "\f138";
1372
  }
1373
-
1374
  .fa-chevron-circle-up:before {
1375
- content: "\f139";
1376
  }
1377
-
1378
  .fa-chevron-circle-down:before {
1379
- content: "\f13a";
1380
  }
1381
-
1382
  .fa-html5:before {
1383
- content: "\f13b";
1384
  }
1385
-
1386
  .fa-css3:before {
1387
- content: "\f13c";
1388
  }
1389
-
1390
  .fa-anchor:before {
1391
- content: "\f13d";
1392
  }
1393
-
1394
  .fa-unlock-alt:before {
1395
- content: "\f13e";
1396
  }
1397
-
1398
  .fa-bullseye:before {
1399
- content: "\f140";
1400
  }
1401
-
1402
  .fa-ellipsis-h:before {
1403
- content: "\f141";
1404
  }
1405
-
1406
  .fa-ellipsis-v:before {
1407
- content: "\f142";
1408
  }
1409
-
1410
  .fa-rss-square:before {
1411
- content: "\f143";
1412
  }
1413
-
1414
  .fa-play-circle:before {
1415
- content: "\f144";
1416
  }
1417
-
1418
  .fa-ticket:before {
1419
- content: "\f145";
1420
  }
1421
-
1422
  .fa-minus-square:before {
1423
- content: "\f146";
1424
  }
1425
-
1426
  .fa-minus-square-o:before {
1427
- content: "\f147";
1428
  }
1429
-
1430
  .fa-level-up:before {
1431
- content: "\f148";
1432
  }
1433
-
1434
  .fa-level-down:before {
1435
- content: "\f149";
1436
  }
1437
-
1438
  .fa-check-square:before {
1439
- content: "\f14a";
1440
  }
1441
-
1442
  .fa-pencil-square:before {
1443
- content: "\f14b";
1444
  }
1445
-
1446
  .fa-external-link-square:before {
1447
- content: "\f14c";
1448
  }
1449
-
1450
  .fa-share-square:before {
1451
- content: "\f14d";
1452
  }
1453
-
1454
  .fa-compass:before {
1455
- content: "\f14e";
1456
  }
1457
-
1458
  .fa-toggle-down:before,
1459
  .fa-caret-square-o-down:before {
1460
- content: "\f150";
1461
  }
1462
-
1463
  .fa-toggle-up:before,
1464
  .fa-caret-square-o-up:before {
1465
- content: "\f151";
1466
  }
1467
-
1468
  .fa-toggle-right:before,
1469
  .fa-caret-square-o-right:before {
1470
- content: "\f152";
1471
  }
1472
-
1473
  .fa-euro:before,
1474
  .fa-eur:before {
1475
- content: "\f153";
1476
  }
1477
-
1478
  .fa-gbp:before {
1479
- content: "\f154";
1480
  }
1481
-
1482
  .fa-dollar:before,
1483
  .fa-usd:before {
1484
- content: "\f155";
1485
  }
1486
-
1487
  .fa-rupee:before,
1488
  .fa-inr:before {
1489
- content: "\f156";
1490
  }
1491
-
1492
  .fa-cny:before,
1493
  .fa-rmb:before,
1494
  .fa-yen:before,
1495
  .fa-jpy:before {
1496
- content: "\f157";
1497
  }
1498
-
1499
  .fa-ruble:before,
1500
  .fa-rouble:before,
1501
  .fa-rub:before {
1502
- content: "\f158";
1503
  }
1504
-
1505
  .fa-won:before,
1506
  .fa-krw:before {
1507
- content: "\f159";
1508
  }
1509
-
1510
  .fa-bitcoin:before,
1511
  .fa-btc:before {
1512
- content: "\f15a";
1513
  }
1514
-
1515
  .fa-file:before {
1516
- content: "\f15b";
1517
  }
1518
-
1519
  .fa-file-text:before {
1520
- content: "\f15c";
1521
  }
1522
-
1523
  .fa-sort-alpha-asc:before {
1524
- content: "\f15d";
1525
  }
1526
-
1527
  .fa-sort-alpha-desc:before {
1528
- content: "\f15e";
1529
  }
1530
-
1531
  .fa-sort-amount-asc:before {
1532
- content: "\f160";
1533
  }
1534
-
1535
  .fa-sort-amount-desc:before {
1536
- content: "\f161";
1537
  }
1538
-
1539
  .fa-sort-numeric-asc:before {
1540
- content: "\f162";
1541
  }
1542
-
1543
  .fa-sort-numeric-desc:before {
1544
- content: "\f163";
1545
  }
1546
-
1547
  .fa-thumbs-up:before {
1548
- content: "\f164";
1549
  }
1550
-
1551
  .fa-thumbs-down:before {
1552
- content: "\f165";
1553
  }
1554
-
1555
  .fa-youtube-square:before {
1556
- content: "\f166";
1557
  }
1558
-
1559
  .fa-youtube:before {
1560
- content: "\f167";
1561
  }
1562
-
1563
  .fa-xing:before {
1564
- content: "\f168";
1565
  }
1566
-
1567
  .fa-xing-square:before {
1568
- content: "\f169";
1569
  }
1570
-
1571
  .fa-youtube-play:before {
1572
- content: "\f16a";
1573
  }
1574
-
1575
  .fa-dropbox:before {
1576
- content: "\f16b";
1577
  }
1578
-
1579
  .fa-stack-overflow:before {
1580
- content: "\f16c";
1581
  }
1582
-
1583
  .fa-instagram:before {
1584
- content: "\f16d";
1585
  }
1586
-
1587
  .fa-flickr:before {
1588
- content: "\f16e";
1589
  }
1590
-
1591
  .fa-adn:before {
1592
- content: "\f170";
1593
  }
1594
-
1595
  .fa-bitbucket:before {
1596
- content: "\f171";
1597
  }
1598
-
1599
  .fa-bitbucket-square:before {
1600
- content: "\f172";
1601
  }
1602
-
1603
  .fa-tumblr:before {
1604
- content: "\f173";
1605
  }
1606
-
1607
  .fa-tumblr-square:before {
1608
- content: "\f174";
1609
  }
1610
-
1611
  .fa-long-arrow-down:before {
1612
- content: "\f175";
1613
  }
1614
-
1615
  .fa-long-arrow-up:before {
1616
- content: "\f176";
1617
  }
1618
-
1619
  .fa-long-arrow-left:before {
1620
- content: "\f177";
1621
  }
1622
-
1623
  .fa-long-arrow-right:before {
1624
- content: "\f178";
1625
  }
1626
-
1627
  .fa-apple:before {
1628
- content: "\f179";
1629
  }
1630
-
1631
  .fa-windows:before {
1632
- content: "\f17a";
1633
  }
1634
-
1635
  .fa-android:before {
1636
- content: "\f17b";
1637
  }
1638
-
1639
  .fa-linux:before {
1640
- content: "\f17c";
1641
  }
1642
-
1643
  .fa-dribbble:before {
1644
- content: "\f17d";
1645
  }
1646
-
1647
  .fa-skype:before {
1648
- content: "\f17e";
1649
  }
1650
-
1651
  .fa-foursquare:before {
1652
- content: "\f180";
1653
  }
1654
-
1655
  .fa-trello:before {
1656
- content: "\f181";
1657
  }
1658
-
1659
  .fa-female:before {
1660
- content: "\f182";
1661
  }
1662
-
1663
  .fa-male:before {
1664
- content: "\f183";
1665
  }
1666
-
1667
  .fa-gittip:before {
1668
- content: "\f184";
1669
  }
1670
-
1671
  .fa-sun-o:before {
1672
- content: "\f185";
1673
  }
1674
-
1675
  .fa-moon-o:before {
1676
- content: "\f186";
1677
  }
1678
-
1679
  .fa-archive:before {
1680
- content: "\f187";
1681
  }
1682
-
1683
  .fa-bug:before {
1684
- content: "\f188";
1685
  }
1686
-
1687
  .fa-vk:before {
1688
- content: "\f189";
1689
  }
1690
-
1691
  .fa-weibo:before {
1692
- content: "\f18a";
1693
  }
1694
-
1695
  .fa-renren:before {
1696
- content: "\f18b";
1697
  }
1698
-
1699
  .fa-pagelines:before {
1700
- content: "\f18c";
1701
  }
1702
-
1703
  .fa-stack-exchange:before {
1704
- content: "\f18d";
1705
  }
1706
-
1707
  .fa-arrow-circle-o-right:before {
1708
- content: "\f18e";
1709
  }
1710
-
1711
  .fa-arrow-circle-o-left:before {
1712
- content: "\f190";
1713
  }
1714
-
1715
  .fa-toggle-left:before,
1716
  .fa-caret-square-o-left:before {
1717
- content: "\f191";
1718
  }
1719
-
1720
  .fa-dot-circle-o:before {
1721
- content: "\f192";
1722
  }
1723
-
1724
  .fa-wheelchair:before {
1725
- content: "\f193";
1726
  }
1727
-
1728
  .fa-vimeo-square:before {
1729
- content: "\f194";
1730
  }
1731
-
1732
  .fa-turkish-lira:before,
1733
  .fa-try:before {
1734
- content: "\f195";
1735
  }
1736
-
1737
  .fa-plus-square-o:before {
1738
- content: "\f196";
1739
  }
1740
 
1741
 
5
  /* FONT PATH
6
  * -------------------------- */
7
  @font-face {
8
+ font-family: 'FontAwesome';
9
+ src: url('../fonts/fontawesome-webfont.eot?v=4.0.3');
10
+ src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.0.3') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff?v=4.0.3') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.0.3') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.0.3#fontawesomeregular') format('svg');
11
+ font-weight: normal;
12
+ font-style: normal;
13
  }
 
14
  .fa {
15
+ display: inline-block;
16
+ font-family: FontAwesome;
17
+ font-style: normal;
18
+ font-weight: normal;
19
+ line-height: 1;
20
+ -webkit-font-smoothing: antialiased;
21
+ -moz-osx-font-smoothing: grayscale;
22
  }
 
23
  /* makes the font 33% larger relative to the icon container */
24
  .fa-lg {
25
+ font-size: 1.3333333333333333em;
26
+ line-height: 0.75em;
27
+ vertical-align: -15%;
28
  }
 
29
  .fa-2x {
30
+ font-size: 2em;
31
  }
 
32
  .fa-3x {
33
+ font-size: 3em;
34
  }
 
35
  .fa-4x {
36
+ font-size: 4em;
37
  }
 
38
  .fa-5x {
39
+ font-size: 5em;
40
  }
 
41
  .fa-fw {
42
+ width: 1.2857142857142858em;
43
+ text-align: center;
44
  }
 
45
  .fa-ul {
46
+ padding-left: 0;
47
+ margin-left: 2.142857142857143em;
48
+ list-style-type: none;
49
  }
 
50
  .fa-ul > li {
51
+ position: relative;
52
  }
 
53
  .fa-li {
54
+ position: absolute;
55
+ left: -2.142857142857143em;
56
+ width: 2.142857142857143em;
57
+ top: 0.14285714285714285em;
58
+ text-align: center;
59
  }
 
60
  .fa-li.fa-lg {
61
+ left: -1.8571428571428572em;
62
  }
 
63
  .fa-border {
64
+ padding: .2em .25em .15em;
65
+ border: solid 0.08em #eeeeee;
66
+ border-radius: .1em;
67
  }
 
68
  .pull-right {
69
+ float: right;
70
  }
 
71
  .pull-left {
72
+ float: left;
73
  }
 
74
  .fa.pull-left {
75
+ margin-right: .3em;
76
  }
 
77
  .fa.pull-right {
78
+ margin-left: .3em;
79
  }
 
80
  .fa-spin {
81
+ -webkit-animation: spin 2s infinite linear;
82
+ -moz-animation: spin 2s infinite linear;
83
+ -o-animation: spin 2s infinite linear;
84
+ animation: spin 2s infinite linear;
85
  }
 
86
  @-moz-keyframes spin {
87
+ 0% {
88
+ -moz-transform: rotate(0deg);
89
+ }
90
+ 100% {
91
+ -moz-transform: rotate(359deg);
92
+ }
93
  }
 
94
  @-webkit-keyframes spin {
95
+ 0% {
96
+ -webkit-transform: rotate(0deg);
97
+ }
98
+ 100% {
99
+ -webkit-transform: rotate(359deg);
100
+ }
101
  }
 
102
  @-o-keyframes spin {
103
+ 0% {
104
+ -o-transform: rotate(0deg);
105
+ }
106
+ 100% {
107
+ -o-transform: rotate(359deg);
108
+ }
109
  }
 
110
  @-ms-keyframes spin {
111
+ 0% {
112
+ -ms-transform: rotate(0deg);
113
+ }
114
+ 100% {
115
+ -ms-transform: rotate(359deg);
116
+ }
117
  }
 
118
  @keyframes spin {
119
+ 0% {
120
+ transform: rotate(0deg);
121
+ }
122
+ 100% {
123
+ transform: rotate(359deg);
124
+ }
125
  }
 
126
  .fa-rotate-90 {
127
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
128
+ -webkit-transform: rotate(90deg);
129
+ -moz-transform: rotate(90deg);
130
+ -ms-transform: rotate(90deg);
131
+ -o-transform: rotate(90deg);
132
+ transform: rotate(90deg);
133
  }
 
134
  .fa-rotate-180 {
135
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
136
+ -webkit-transform: rotate(180deg);
137
+ -moz-transform: rotate(180deg);
138
+ -ms-transform: rotate(180deg);
139
+ -o-transform: rotate(180deg);
140
+ transform: rotate(180deg);
141
  }
 
142
  .fa-rotate-270 {
143
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
144
+ -webkit-transform: rotate(270deg);
145
+ -moz-transform: rotate(270deg);
146
+ -ms-transform: rotate(270deg);
147
+ -o-transform: rotate(270deg);
148
+ transform: rotate(270deg);
149
  }
 
150
  .fa-flip-horizontal {
151
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
152
+ -webkit-transform: scale(-1, 1);
153
+ -moz-transform: scale(-1, 1);
154
+ -ms-transform: scale(-1, 1);
155
+ -o-transform: scale(-1, 1);
156
+ transform: scale(-1, 1);
157
  }
 
158
  .fa-flip-vertical {
159
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
160
+ -webkit-transform: scale(1, -1);
161
+ -moz-transform: scale(1, -1);
162
+ -ms-transform: scale(1, -1);
163
+ -o-transform: scale(1, -1);
164
+ transform: scale(1, -1);
165
  }
 
166
  .fa-stack {
167
+ position: relative;
168
+ display: inline-block;
169
+ width: 2em;
170
+ height: 2em;
171
+ line-height: 2em;
172
+ vertical-align: middle;
173
  }
 
174
  .fa-stack-1x,
175
  .fa-stack-2x {
176
+ position: absolute;
177
+ left: 0;
178
+ width: 100%;
179
+ text-align: center;
180
  }
 
181
  .fa-stack-1x {
182
+ line-height: inherit;
183
  }
 
184
  .fa-stack-2x {
185
+ font-size: 2em;
186
  }
 
187
  .fa-inverse {
188
+ color: #ffffff;
189
  }
 
190
  /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
191
  readers do not read off random characters that represent icons */
192
  .fa-glass:before {
193
+ content: "\f000";
194
  }
 
195
  .fa-music:before {
196
+ content: "\f001";
197
  }
 
198
  .fa-search:before {
199
+ content: "\f002";
200
  }
 
201
  .fa-envelope-o:before {
202
+ content: "\f003";
203
  }
 
204
  .fa-heart:before {
205
+ content: "\f004";
206
  }
 
207
  .fa-star:before {
208
+ content: "\f005";
209
  }
 
210
  .fa-star-o:before {
211
+ content: "\f006";
212
  }
 
213
  .fa-user:before {
214
+ content: "\f007";
215
  }
 
216
  .fa-film:before {
217
+ content: "\f008";
218
  }
 
219
  .fa-th-large:before {
220
+ content: "\f009";
221
  }
 
222
  .fa-th:before {
223
+ content: "\f00a";
224
  }
 
225
  .fa-th-list:before {
226
+ content: "\f00b";
227
  }
 
228
  .fa-check:before {
229
+ content: "\f00c";
230
  }
 
231
  .fa-times:before {
232
+ content: "\f00d";
233
  }
 
234
  .fa-search-plus:before {
235
+ content: "\f00e";
236
  }
 
237
  .fa-search-minus:before {
238
+ content: "\f010";
239
  }
 
240
  .fa-power-off:before {
241
+ content: "\f011";
242
  }
 
243
  .fa-signal:before {
244
+ content: "\f012";
245
  }
 
246
  .fa-gear:before,
247
  .fa-cog:before {
248
+ content: "\f013";
249
  }
 
250
  .fa-trash-o:before {
251
+ content: "\f014";
252
  }
 
253
  .fa-home:before {
254
+ content: "\f015";
255
  }
 
256
  .fa-file-o:before {
257
+ content: "\f016";
258
  }
 
259
  .fa-clock-o:before {
260
+ content: "\f017";
261
  }
 
262
  .fa-road:before {
263
+ content: "\f018";
264
  }
 
265
  .fa-download:before {
266
+ content: "\f019";
267
  }
 
268
  .fa-arrow-circle-o-down:before {
269
+ content: "\f01a";
270
  }
 
271
  .fa-arrow-circle-o-up:before {
272
+ content: "\f01b";
273
  }
 
274
  .fa-inbox:before {
275
+ content: "\f01c";
276
  }
 
277
  .fa-play-circle-o:before {
278
+ content: "\f01d";
279
  }
 
280
  .fa-rotate-right:before,
281
  .fa-repeat:before {
282
+ content: "\f01e";
283
  }
 
284
  .fa-refresh:before {
285
+ content: "\f021";
286
  }
 
287
  .fa-list-alt:before {
288
+ content: "\f022";
289
  }
 
290
  .fa-lock:before {
291
+ content: "\f023";
292
  }
 
293
  .fa-flag:before {
294
+ content: "\f024";
295
  }
 
296
  .fa-headphones:before {
297
+ content: "\f025";
298
  }
 
299
  .fa-volume-off:before {
300
+ content: "\f026";
301
  }
 
302
  .fa-volume-down:before {
303
+ content: "\f027";
304
  }
 
305
  .fa-volume-up:before {
306
+ content: "\f028";
307
  }
 
308
  .fa-qrcode:before {
309
+ content: "\f029";
310
  }
 
311
  .fa-barcode:before {
312
+ content: "\f02a";
313
  }
 
314
  .fa-tag:before {
315
+ content: "\f02b";
316
  }
 
317
  .fa-tags:before {
318
+ content: "\f02c";
319
  }
 
320
  .fa-book:before {
321
+ content: "\f02d";
322
  }
 
323
  .fa-bookmark:before {
324
+ content: "\f02e";
325
  }
 
326
  .fa-print:before {
327
+ content: "\f02f";
328
  }
 
329
  .fa-camera:before {
330
+ content: "\f030";
331
  }
 
332
  .fa-font:before {
333
+ content: "\f031";
334
  }
 
335
  .fa-bold:before {
336
+ content: "\f032";
337
  }
 
338
  .fa-italic:before {
339
+ content: "\f033";
340
  }
 
341
  .fa-text-height:before {
342
+ content: "\f034";
343
  }
 
344
  .fa-text-width:before {
345
+ content: "\f035";
346
  }
 
347
  .fa-align-left:before {
348
+ content: "\f036";
349
  }
 
350
  .fa-align-center:before {
351
+ content: "\f037";
352
  }
 
353
  .fa-align-right:before {
354
+ content: "\f038";
355
  }
 
356
  .fa-align-justify:before {
357
+ content: "\f039";
358
  }
 
359
  .fa-list:before {
360
+ content: "\f03a";
361
  }
 
362
  .fa-dedent:before,
363
  .fa-outdent:before {
364
+ content: "\f03b";
365
  }
 
366
  .fa-indent:before {
367
+ content: "\f03c";
368
  }
 
369
  .fa-video-camera:before {
370
+ content: "\f03d";
371
  }
 
372
  .fa-picture-o:before {
373
+ content: "\f03e";
374
  }
 
375
  .fa-pencil:before {
376
+ content: "\f040";
377
  }
 
378
  .fa-map-marker:before {
379
+ content: "\f041";
380
  }
 
381
  .fa-adjust:before {
382
+ content: "\f042";
383
  }
 
384
  .fa-tint:before {
385
+ content: "\f043";
386
  }
 
387
  .fa-edit:before,
388
  .fa-pencil-square-o:before {
389
+ content: "\f044";
390
  }
 
391
  .fa-share-square-o:before {
392
+ content: "\f045";
393
  }
 
394
  .fa-check-square-o:before {
395
+ content: "\f046";
396
  }
 
397
  .fa-arrows:before {
398
+ content: "\f047";
399
  }
 
400
  .fa-step-backward:before {
401
+ content: "\f048";
402
  }
 
403
  .fa-fast-backward:before {
404
+ content: "\f049";
405
  }
 
406
  .fa-backward:before {
407
+ content: "\f04a";
408
  }
 
409
  .fa-play:before {
410
+ content: "\f04b";
411
  }
 
412
  .fa-pause:before {
413
+ content: "\f04c";
414
  }
 
415
  .fa-stop:before {
416
+ content: "\f04d";
417
  }
 
418
  .fa-forward:before {
419
+ content: "\f04e";
420
  }
 
421
  .fa-fast-forward:before {
422
+ content: "\f050";
423
  }
 
424
  .fa-step-forward:before {
425
+ content: "\f051";
426
  }
 
427
  .fa-eject:before {
428
+ content: "\f052";
429
  }
 
430
  .fa-chevron-left:before {
431
+ content: "\f053";
432
  }
 
433
  .fa-chevron-right:before {
434
+ content: "\f054";
435
  }
 
436
  .fa-plus-circle:before {
437
+ content: "\f055";
438
  }
 
439
  .fa-minus-circle:before {
440
+ content: "\f056";
441
  }
 
442
  .fa-times-circle:before {
443
+ content: "\f057";
444
  }
 
445
  .fa-check-circle:before {
446
+ content: "\f058";
447
  }
 
448
  .fa-question-circle:before {
449
+ content: "\f059";
450
  }
 
451
  .fa-info-circle:before {
452
+ content: "\f05a";
453
  }
 
454
  .fa-crosshairs:before {
455
+ content: "\f05b";
456
  }
 
457
  .fa-times-circle-o:before {
458
+ content: "\f05c";
459
  }
 
460
  .fa-check-circle-o:before {
461
+ content: "\f05d";
462
  }
 
463
  .fa-ban:before {
464
+ content: "\f05e";
465
  }
 
466
  .fa-arrow-left:before {
467
+ content: "\f060";
468
  }
 
469
  .fa-arrow-right:before {
470
+ content: "\f061";
471
  }
 
472
  .fa-arrow-up:before {
473
+ content: "\f062";
474
  }
 
475
  .fa-arrow-down:before {
476
+ content: "\f063";
477
  }
 
478
  .fa-mail-forward:before,
479
  .fa-share:before {
480
+ content: "\f064";
481
  }
 
482
  .fa-expand:before {
483
+ content: "\f065";
484
  }
 
485
  .fa-compress:before {
486
+ content: "\f066";
487
  }
 
488
  .fa-plus:before {
489
+ content: "\f067";
490
  }
 
491
  .fa-minus:before {
492
+ content: "\f068";
493
  }
 
494
  .fa-asterisk:before {
495
+ content: "\f069";
496
  }
 
497
  .fa-exclamation-circle:before {
498
+ content: "\f06a";
499
  }
 
500
  .fa-gift:before {
501
+ content: "\f06b";
502
  }
 
503
  .fa-leaf:before {
504
+ content: "\f06c";
505
  }
 
506
  .fa-fire:before {
507
+ content: "\f06d";
508
  }
 
509
  .fa-eye:before {
510
+ content: "\f06e";
511
  }
 
512
  .fa-eye-slash:before {
513
+ content: "\f070";
514
  }
 
515
  .fa-warning:before,
516
  .fa-exclamation-triangle:before {
517
+ content: "\f071";
518
  }
 
519
  .fa-plane:before {
520
+ content: "\f072";
521
  }
 
522
  .fa-calendar:before {
523
+ content: "\f073";
524
  }
 
525
  .fa-random:before {
526
+ content: "\f074";
527
  }
 
528
  .fa-comment:before {
529
+ content: "\f075";
530
  }
 
531
  .fa-magnet:before {
532
+ content: "\f076";
533
  }
 
534
  .fa-chevron-up:before {
535
+ content: "\f077";
536
  }
 
537
  .fa-chevron-down:before {
538
+ content: "\f078";
539
  }
 
540
  .fa-retweet:before {
541
+ content: "\f079";
542
  }
 
543
  .fa-shopping-cart:before {
544
+ content: "\f07a";
545
  }
 
546
  .fa-folder:before {
547
+ content: "\f07b";
548
  }
 
549
  .fa-folder-open:before {
550
+ content: "\f07c";
551
  }
 
552
  .fa-arrows-v:before {
553
+ content: "\f07d";
554
  }
 
555
  .fa-arrows-h:before {
556
+ content: "\f07e";
557
  }
 
558
  .fa-bar-chart-o:before {
559
+ content: "\f080";
560
  }
 
561
  .fa-twitter-square:before {
562
+ content: "\f081";
563
  }
 
564
  .fa-facebook-square:before {
565
+ content: "\f082";
566
  }
 
567
  .fa-camera-retro:before {
568
+ content: "\f083";
569
  }
 
570
  .fa-key:before {
571
+ content: "\f084";
572
  }
 
573
  .fa-gears:before,
574
  .fa-cogs:before {
575
+ content: "\f085";
576
  }
 
577
  .fa-comments:before {
578
+ content: "\f086";
579
  }
 
580
  .fa-thumbs-o-up:before {
581
+ content: "\f087";
582
  }
 
583
  .fa-thumbs-o-down:before {
584
+ content: "\f088";
585
  }
 
586
  .fa-star-half:before {
587
+ content: "\f089";
588
  }
 
589
  .fa-heart-o:before {
590
+ content: "\f08a";
591
  }
 
592
  .fa-sign-out:before {
593
+ content: "\f08b";
594
  }
 
595
  .fa-linkedin-square:before {
596
+ content: "\f08c";
597
  }
 
598
  .fa-thumb-tack:before {
599
+ content: "\f08d";
600
  }
 
601
  .fa-external-link:before {
602
+ content: "\f08e";
603
  }
 
604
  .fa-sign-in:before {
605
+ content: "\f090";
606
  }
 
607
  .fa-trophy:before {
608
+ content: "\f091";
609
  }
 
610
  .fa-github-square:before {
611
+ content: "\f092";
612
  }
 
613
  .fa-upload:before {
614
+ content: "\f093";
615
  }
 
616
  .fa-lemon-o:before {
617
+ content: "\f094";
618
  }
 
619
  .fa-phone:before {
620
+ content: "\f095";
621
  }
 
622
  .fa-square-o:before {
623
+ content: "\f096";
624
  }
 
625
  .fa-bookmark-o:before {
626
+ content: "\f097";
627
  }
 
628
  .fa-phone-square:before {
629
+ content: "\f098";
630
  }
 
631
  .fa-twitter:before {
632
+ content: "\f099";
633
  }
 
634
  .fa-facebook:before {
635
+ content: "\f09a";
636
  }
 
637
  .fa-github:before {
638
+ content: "\f09b";
639
  }
 
640
  .fa-unlock:before {
641
+ content: "\f09c";
642
  }
 
643
  .fa-credit-card:before {
644
+ content: "\f09d";
645
  }
 
646
  .fa-rss:before {
647
+ content: "\f09e";
648
  }
 
649
  .fa-hdd-o:before {
650
+ content: "\f0a0";
651
  }
 
652
  .fa-bullhorn:before {
653
+ content: "\f0a1";
654
  }
 
655
  .fa-bell:before {
656
+ content: "\f0f3";
657
  }
 
658
  .fa-certificate:before {
659
+ content: "\f0a3";
660
  }
 
661
  .fa-hand-o-right:before {
662
+ content: "\f0a4";
663
  }
 
664
  .fa-hand-o-left:before {
665
+ content: "\f0a5";
666
  }
 
667
  .fa-hand-o-up:before {
668
+ content: "\f0a6";
669
  }
 
670
  .fa-hand-o-down:before {
671
+ content: "\f0a7";
672
  }
 
673
  .fa-arrow-circle-left:before {
674
+ content: "\f0a8";
675
  }
 
676
  .fa-arrow-circle-right:before {
677
+ content: "\f0a9";
678
  }
 
679
  .fa-arrow-circle-up:before {
680
+ content: "\f0aa";
681
  }
 
682
  .fa-arrow-circle-down:before {
683
+ content: "\f0ab";
684
  }
 
685
  .fa-globe:before {
686
+ content: "\f0ac";
687
  }
 
688
  .fa-wrench:before {
689
+ content: "\f0ad";
690
  }
 
691
  .fa-tasks:before {
692
+ content: "\f0ae";
693
  }
 
694
  .fa-filter:before {
695
+ content: "\f0b0";
696
  }
 
697
  .fa-briefcase:before {
698
+ content: "\f0b1";
699
  }
 
700
  .fa-arrows-alt:before {
701
+ content: "\f0b2";
702
  }
 
703
  .fa-group:before,
704
  .fa-users:before {
705
+ content: "\f0c0";
706
  }
 
707
  .fa-chain:before,
708
  .fa-link:before {
709
+ content: "\f0c1";
710
  }
 
711
  .fa-cloud:before {
712
+ content: "\f0c2";
713
  }
 
714
  .fa-flask:before {
715
+ content: "\f0c3";
716
  }
 
717
  .fa-cut:before,
718
  .fa-scissors:before {
719
+ content: "\f0c4";
720
  }
 
721
  .fa-copy:before,
722
  .fa-files-o:before {
723
+ content: "\f0c5";
724
  }
 
725
  .fa-paperclip:before {
726
+ content: "\f0c6";
727
  }
 
728
  .fa-save:before,
729
  .fa-floppy-o:before {
730
+ content: "\f0c7";
731
  }
 
732
  .fa-square:before {
733
+ content: "\f0c8";
734
  }
 
735
  .fa-bars:before {
736
+ content: "\f0c9";
737
  }
 
738
  .fa-list-ul:before {
739
+ content: "\f0ca";
740
  }
 
741
  .fa-list-ol:before {
742
+ content: "\f0cb";
743
  }
 
744
  .fa-strikethrough:before {
745
+ content: "\f0cc";
746
  }
 
747
  .fa-underline:before {
748
+ content: "\f0cd";
749
  }
 
750
  .fa-table:before {
751
+ content: "\f0ce";
752
  }
 
753
  .fa-magic:before {
754
+ content: "\f0d0";
755
  }
 
756
  .fa-truck:before {
757
+ content: "\f0d1";
758
  }
 
759
  .fa-pinterest:before {
760
+ content: "\f0d2";
761
  }
 
762
  .fa-pinterest-square:before {
763
+ content: "\f0d3";
764
  }
 
765
  .fa-google-plus-square:before {
766
+ content: "\f0d4";
767
  }
 
768
  .fa-google-plus:before {
769
+ content: "\f0d5";
770
  }
 
771
  .fa-money:before {
772
+ content: "\f0d6";
773
  }
 
774
  .fa-caret-down:before {
775
+ content: "\f0d7";
776
  }
 
777
  .fa-caret-up:before {
778
+ content: "\f0d8";
779
  }
 
780
  .fa-caret-left:before {
781
+ content: "\f0d9";
782
  }
 
783
  .fa-caret-right:before {
784
+ content: "\f0da";
785
  }
 
786
  .fa-columns:before {
787
+ content: "\f0db";
788
  }
 
789
  .fa-unsorted:before,
790
  .fa-sort:before {
791
+ content: "\f0dc";
792
  }
 
793
  .fa-sort-down:before,
794
  .fa-sort-asc:before {
795
+ content: "\f0dd";
796
  }
 
797
  .fa-sort-up:before,
798
  .fa-sort-desc:before {
799
+ content: "\f0de";
800
  }
 
801
  .fa-envelope:before {
802
+ content: "\f0e0";
803
  }
 
804
  .fa-linkedin:before {
805
+ content: "\f0e1";
806
  }
 
807
  .fa-rotate-left:before,
808
  .fa-undo:before {
809
+ content: "\f0e2";
810
  }
 
811
  .fa-legal:before,
812
  .fa-gavel:before {
813
+ content: "\f0e3";
814
  }
 
815
  .fa-dashboard:before,
816
  .fa-tachometer:before {
817
+ content: "\f0e4";
818
  }
 
819
  .fa-comment-o:before {
820
+ content: "\f0e5";
821
  }
 
822
  .fa-comments-o:before {
823
+ content: "\f0e6";
824
  }
 
825
  .fa-flash:before,
826
  .fa-bolt:before {
827
+ content: "\f0e7";
828
  }
 
829
  .fa-sitemap:before {
830
+ content: "\f0e8";
831
  }
 
832
  .fa-umbrella:before {
833
+ content: "\f0e9";
834
  }
 
835
  .fa-paste:before,
836
  .fa-clipboard:before {
837
+ content: "\f0ea";
838
  }
 
839
  .fa-lightbulb-o:before {
840
+ content: "\f0eb";
841
  }
 
842
  .fa-exchange:before {
843
+ content: "\f0ec";
844
  }
 
845
  .fa-cloud-download:before {
846
+ content: "\f0ed";
847
  }
 
848
  .fa-cloud-upload:before {
849
+ content: "\f0ee";
850
  }
 
851
  .fa-user-md:before {
852
+ content: "\f0f0";
853
  }
 
854
  .fa-stethoscope:before {
855
+ content: "\f0f1";
856
  }
 
857
  .fa-suitcase:before {
858
+ content: "\f0f2";
859
  }
 
860
  .fa-bell-o:before {
861
+ content: "\f0a2";
862
  }
 
863
  .fa-coffee:before {
864
+ content: "\f0f4";
865
  }
 
866
  .fa-cutlery:before {
867
+ content: "\f0f5";
868
  }
 
869
  .fa-file-text-o:before {
870
+ content: "\f0f6";
871
  }
 
872
  .fa-building-o:before {
873
+ content: "\f0f7";
874
  }
 
875
  .fa-hospital-o:before {
876
+ content: "\f0f8";
877
  }
 
878
  .fa-ambulance:before {
879
+ content: "\f0f9";
880
  }
 
881
  .fa-medkit:before {
882
+ content: "\f0fa";
883
  }
 
884
  .fa-fighter-jet:before {
885
+ content: "\f0fb";
886
  }
 
887
  .fa-beer:before {
888
+ content: "\f0fc";
889
  }
 
890
  .fa-h-square:before {
891
+ content: "\f0fd";
892
  }
 
893
  .fa-plus-square:before {
894
+ content: "\f0fe";
895
  }
 
896
  .fa-angle-double-left:before {
897
+ content: "\f100";
898
  }
 
899
  .fa-angle-double-right:before {
900
+ content: "\f101";
901
  }
 
902
  .fa-angle-double-up:before {
903
+ content: "\f102";
904
  }
 
905
  .fa-angle-double-down:before {
906
+ content: "\f103";
907
  }
 
908
  .fa-angle-left:before {
909
+ content: "\f104";
910
  }
 
911
  .fa-angle-right:before {
912
+ content: "\f105";
913
  }
 
914
  .fa-angle-up:before {
915
+ content: "\f106";
916
  }
 
917
  .fa-angle-down:before {
918
+ content: "\f107";
919
  }
 
920
  .fa-desktop:before {
921
+ content: "\f108";
922
  }
 
923
  .fa-laptop:before {
924
+ content: "\f109";
925
  }
 
926
  .fa-tablet:before {
927
+ content: "\f10a";
928
  }
 
929
  .fa-mobile-phone:before,
930
  .fa-mobile:before {
931
+ content: "\f10b";
932
  }
 
933
  .fa-circle-o:before {
934
+ content: "\f10c";
935
  }
 
936
  .fa-quote-left:before {
937
+ content: "\f10d";
938
  }
 
939
  .fa-quote-right:before {
940
+ content: "\f10e";
941
  }
 
942
  .fa-spinner:before {
943
+ content: "\f110";
944
  }
 
945
  .fa-circle:before {
946
+ content: "\f111";
947
  }
 
948
  .fa-mail-reply:before,
949
  .fa-reply:before {
950
+ content: "\f112";
951
  }
 
952
  .fa-github-alt:before {
953
+ content: "\f113";
954
  }
 
955
  .fa-folder-o:before {
956
+ content: "\f114";
957
  }
 
958
  .fa-folder-open-o:before {
959
+ content: "\f115";
960
  }
 
961
  .fa-smile-o:before {
962
+ content: "\f118";
963
  }
 
964
  .fa-frown-o:before {
965
+ content: "\f119";
966
  }
 
967
  .fa-meh-o:before {
968
+ content: "\f11a";
969
  }
 
970
  .fa-gamepad:before {
971
+ content: "\f11b";
972
  }
 
973
  .fa-keyboard-o:before {
974
+ content: "\f11c";
975
  }
 
976
  .fa-flag-o:before {
977
+ content: "\f11d";
978
  }
 
979
  .fa-flag-checkered:before {
980
+ content: "\f11e";
981
  }
 
982
  .fa-terminal:before {
983
+ content: "\f120";
984
  }
 
985
  .fa-code:before {
986
+ content: "\f121";
987
  }
 
988
  .fa-reply-all:before {
989
+ content: "\f122";
990
  }
 
991
  .fa-mail-reply-all:before {
992
+ content: "\f122";
993
  }
 
994
  .fa-star-half-empty:before,
995
  .fa-star-half-full:before,
996
  .fa-star-half-o:before {
997
+ content: "\f123";
998
  }
 
999
  .fa-location-arrow:before {
1000
+ content: "\f124";
1001
  }
 
1002
  .fa-crop:before {
1003
+ content: "\f125";
1004
  }
 
1005
  .fa-code-fork:before {
1006
+ content: "\f126";
1007
  }
 
1008
  .fa-unlink:before,
1009
  .fa-chain-broken:before {
1010
+ content: "\f127";
1011
  }
 
1012
  .fa-question:before {
1013
+ content: "\f128";
1014
  }
 
1015
  .fa-info:before {
1016
+ content: "\f129";
1017
  }
 
1018
  .fa-exclamation:before {
1019
+ content: "\f12a";
1020
  }
 
1021
  .fa-superscript:before {
1022
+ content: "\f12b";
1023
  }
 
1024
  .fa-subscript:before {
1025
+ content: "\f12c";
1026
  }
 
1027
  .fa-eraser:before {
1028
+ content: "\f12d";
1029
  }
 
1030
  .fa-puzzle-piece:before {
1031
+ content: "\f12e";
1032
  }
 
1033
  .fa-microphone:before {
1034
+ content: "\f130";
1035
  }
 
1036
  .fa-microphone-slash:before {
1037
+ content: "\f131";
1038
  }
 
1039
  .fa-shield:before {
1040
+ content: "\f132";
1041
  }
 
1042
  .fa-calendar-o:before {
1043
+ content: "\f133";
1044
  }
 
1045
  .fa-fire-extinguisher:before {
1046
+ content: "\f134";
1047
  }
 
1048
  .fa-rocket:before {
1049
+ content: "\f135";
1050
  }
 
1051
  .fa-maxcdn:before {
1052
+ content: "\f136";
1053
  }
 
1054
  .fa-chevron-circle-left:before {
1055
+ content: "\f137";
1056
  }
 
1057
  .fa-chevron-circle-right:before {
1058
+ content: "\f138";
1059
  }
 
1060
  .fa-chevron-circle-up:before {
1061
+ content: "\f139";
1062
  }
 
1063
  .fa-chevron-circle-down:before {
1064
+ content: "\f13a";
1065
  }
 
1066
  .fa-html5:before {
1067
+ content: "\f13b";
1068
  }
 
1069
  .fa-css3:before {
1070
+ content: "\f13c";
1071
  }
 
1072
  .fa-anchor:before {
1073
+ content: "\f13d";
1074
  }
 
1075
  .fa-unlock-alt:before {
1076
+ content: "\f13e";
1077
  }
 
1078
  .fa-bullseye:before {
1079
+ content: "\f140";
1080
  }
 
1081
  .fa-ellipsis-h:before {
1082
+ content: "\f141";
1083
  }
 
1084
  .fa-ellipsis-v:before {
1085
+ content: "\f142";
1086
  }
 
1087
  .fa-rss-square:before {
1088
+ content: "\f143";
1089
  }
 
1090
  .fa-play-circle:before {
1091
+ content: "\f144";
1092
  }
 
1093
  .fa-ticket:before {
1094
+ content: "\f145";
1095
  }
 
1096
  .fa-minus-square:before {
1097
+ content: "\f146";
1098
  }
 
1099
  .fa-minus-square-o:before {
1100
+ content: "\f147";
1101
  }
 
1102
  .fa-level-up:before {
1103
+ content: "\f148";
1104
  }
 
1105
  .fa-level-down:before {
1106
+ content: "\f149";
1107
  }
 
1108
  .fa-check-square:before {
1109
+ content: "\f14a";
1110
  }
 
1111
  .fa-pencil-square:before {
1112
+ content: "\f14b";
1113
  }
 
1114
  .fa-external-link-square:before {
1115
+ content: "\f14c";
1116
  }
 
1117
  .fa-share-square:before {
1118
+ content: "\f14d";
1119
  }
 
1120
  .fa-compass:before {
1121
+ content: "\f14e";
1122
  }
 
1123
  .fa-toggle-down:before,
1124
  .fa-caret-square-o-down:before {
1125
+ content: "\f150";
1126
  }
 
1127
  .fa-toggle-up:before,
1128
  .fa-caret-square-o-up:before {
1129
+ content: "\f151";
1130
  }
 
1131
  .fa-toggle-right:before,
1132
  .fa-caret-square-o-right:before {
1133
+ content: "\f152";
1134
  }
 
1135
  .fa-euro:before,
1136
  .fa-eur:before {
1137
+ content: "\f153";
1138
  }
 
1139
  .fa-gbp:before {
1140
+ content: "\f154";
1141
  }
 
1142
  .fa-dollar:before,
1143
  .fa-usd:before {
1144
+ content: "\f155";
1145
  }
 
1146
  .fa-rupee:before,
1147
  .fa-inr:before {
1148
+ content: "\f156";
1149
  }
 
1150
  .fa-cny:before,
1151
  .fa-rmb:before,
1152
  .fa-yen:before,
1153
  .fa-jpy:before {
1154
+ content: "\f157";
1155
  }
 
1156
  .fa-ruble:before,
1157
  .fa-rouble:before,
1158
  .fa-rub:before {
1159
+ content: "\f158";
1160
  }
 
1161
  .fa-won:before,
1162
  .fa-krw:before {
1163
+ content: "\f159";
1164
  }
 
1165
  .fa-bitcoin:before,
1166
  .fa-btc:before {
1167
+ content: "\f15a";
1168
  }
 
1169
  .fa-file:before {
1170
+ content: "\f15b";
1171
  }
 
1172
  .fa-file-text:before {
1173
+ content: "\f15c";
1174
  }
 
1175
  .fa-sort-alpha-asc:before {
1176
+ content: "\f15d";
1177
  }
 
1178
  .fa-sort-alpha-desc:before {
1179
+ content: "\f15e";
1180
  }
 
1181
  .fa-sort-amount-asc:before {
1182
+ content: "\f160";
1183
  }
 
1184
  .fa-sort-amount-desc:before {
1185
+ content: "\f161";
1186
  }
 
1187
  .fa-sort-numeric-asc:before {
1188
+ content: "\f162";
1189
  }
 
1190
  .fa-sort-numeric-desc:before {
1191
+ content: "\f163";
1192
  }
 
1193
  .fa-thumbs-up:before {
1194
+ content: "\f164";
1195
  }
 
1196
  .fa-thumbs-down:before {
1197
+ content: "\f165";
1198
  }
 
1199
  .fa-youtube-square:before {
1200
+ content: "\f166";
1201
  }
 
1202
  .fa-youtube:before {
1203
+ content: "\f167";
1204
  }
 
1205
  .fa-xing:before {
1206
+ content: "\f168";
1207
  }
 
1208
  .fa-xing-square:before {
1209
+ content: "\f169";
1210
  }
 
1211
  .fa-youtube-play:before {
1212
+ content: "\f16a";
1213
  }
 
1214
  .fa-dropbox:before {
1215
+ content: "\f16b";
1216
  }
 
1217
  .fa-stack-overflow:before {
1218
+ content: "\f16c";
1219
  }
 
1220
  .fa-instagram:before {
1221
+ content: "\f16d";
1222
  }
 
1223
  .fa-flickr:before {
1224
+ content: "\f16e";
1225
  }
 
1226
  .fa-adn:before {
1227
+ content: "\f170";
1228
  }
 
1229
  .fa-bitbucket:before {
1230
+ content: "\f171";
1231
  }
 
1232
  .fa-bitbucket-square:before {
1233
+ content: "\f172";
1234
  }
 
1235
  .fa-tumblr:before {
1236
+ content: "\f173";
1237
  }
 
1238
  .fa-tumblr-square:before {
1239
+ content: "\f174";
1240
  }
 
1241
  .fa-long-arrow-down:before {
1242
+ content: "\f175";
1243
  }
 
1244
  .fa-long-arrow-up:before {
1245
+ content: "\f176";
1246
  }
 
1247
  .fa-long-arrow-left:before {
1248
+ content: "\f177";
1249
  }
 
1250
  .fa-long-arrow-right:before {
1251
+ content: "\f178";
1252
  }
 
1253
  .fa-apple:before {
1254
+ content: "\f179";
1255
  }
 
1256
  .fa-windows:before {
1257
+ content: "\f17a";
1258
  }
 
1259
  .fa-android:before {
1260
+ content: "\f17b";
1261
  }
 
1262
  .fa-linux:before {
1263
+ content: "\f17c";
1264
  }
 
1265
  .fa-dribbble:before {
1266
+ content: "\f17d";
1267
  }
 
1268
  .fa-skype:before {
1269
+ content: "\f17e";
1270
  }
 
1271
  .fa-foursquare:before {
1272
+ content: "\f180";
1273
  }
 
1274
  .fa-trello:before {
1275
+ content: "\f181";
1276
  }
 
1277
  .fa-female:before {
1278
+ content: "\f182";
1279
  }
 
1280
  .fa-male:before {
1281
+ content: "\f183";
1282
  }
 
1283
  .fa-gittip:before {
1284
+ content: "\f184";
1285
  }
 
1286
  .fa-sun-o:before {
1287
+ content: "\f185";
1288
  }
 
1289
  .fa-moon-o:before {
1290
+ content: "\f186";
1291
  }
 
1292
  .fa-archive:before {
1293
+ content: "\f187";
1294
  }
 
1295
  .fa-bug:before {
1296
+ content: "\f188";
1297
  }
 
1298
  .fa-vk:before {
1299
+ content: "\f189";
1300
  }
 
1301
  .fa-weibo:before {
1302
+ content: "\f18a";
1303
  }
 
1304
  .fa-renren:before {
1305
+ content: "\f18b";
1306
  }
 
1307
  .fa-pagelines:before {
1308
+ content: "\f18c";
1309
  }
 
1310
  .fa-stack-exchange:before {
1311
+ content: "\f18d";
1312
  }
 
1313
  .fa-arrow-circle-o-right:before {
1314
+ content: "\f18e";
1315
  }
 
1316
  .fa-arrow-circle-o-left:before {
1317
+ content: "\f190";
1318
  }
 
1319
  .fa-toggle-left:before,
1320
  .fa-caret-square-o-left:before {
1321
+ content: "\f191";
1322
  }
 
1323
  .fa-dot-circle-o:before {
1324
+ content: "\f192";
1325
  }
 
1326
  .fa-wheelchair:before {
1327
+ content: "\f193";
1328
  }
 
1329
  .fa-vimeo-square:before {
1330
+ content: "\f194";
1331
  }
 
1332
  .fa-turkish-lira:before,
1333
  .fa-try:before {
1334
+ content: "\f195";
1335
  }
 
1336
  .fa-plus-square-o:before {
1337
+ content: "\f196";
1338
  }
1339
 
1340
 
css/jquery-ui.css CHANGED
@@ -6,1751 +6,476 @@
6
 
7
  /* Layout helpers
8
  ----------------------------------*/
9
- .ui-helper-hidden {
10
- display: none;
11
- }
12
-
13
- .ui-helper-hidden-accessible {
14
- position: absolute;
15
- left: -99999999px;
16
- }
17
-
18
- .ui-helper-reset {
19
- margin: 0;
20
- padding: 0;
21
- border: 0;
22
- outline: 0;
23
- line-height: 1.3;
24
- text-decoration: none;
25
- font-size: 100%;
26
- list-style: none;
27
- }
28
-
29
- .ui-helper-clearfix:after {
30
- content: ".";
31
- display: block;
32
- height: 0;
33
- clear: both;
34
- visibility: hidden;
35
- }
36
-
37
- .ui-helper-clearfix {
38
- display: inline-block;
39
- }
40
-
41
- /* required comment for clearfix to work in Opera \*/
42
- * html .ui-helper-clearfix {
43
- height: 1%;
44
- }
45
-
46
- .ui-helper-clearfix {
47
- display: block;
48
- }
49
-
50
- /* end clearfix */
51
- .ui-helper-zfix {
52
- width: 100%;
53
- height: 100%;
54
- top: 0;
55
- left: 0;
56
- position: absolute;
57
- opacity: 0;
58
- filter: Alpha(Opacity=0);
59
- }
60
-
61
- /* Interaction Cues
62
- ----------------------------------*/
63
- .ui-state-disabled {
64
- cursor: default !important;
65
- }
66
-
67
- /* Icons
68
- ----------------------------------*/
69
-
70
- /* states and images */
71
- .ui-icon {
72
- display: block;
73
- text-indent: -99999px;
74
- overflow: hidden;
75
- background-repeat: no-repeat;
76
- }
77
-
78
- /* Misc visuals
79
- ----------------------------------*/
80
-
81
- /* Overlays */
82
- .ui-widget-overlay {
83
- position: absolute;
84
- top: 0;
85
- left: 0;
86
- width: 100%;
87
- height: 100%;
88
- }
89
-
90
- /*
91
- * jQuery UI CSS Framework
92
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
93
- * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
94
- * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
95
- */
96
-
97
- /* Component containers
98
- ----------------------------------*/
99
- .ui-widget {
100
- font-family: Verdana, Arial, sans-serif;
101
- font-size: 1.1em;
102
- }
103
-
104
- .ui-widget .ui-widget {
105
- font-size: 1em;
106
- }
107
-
108
- .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button {
109
- font-family: Verdana, Arial, sans-serif;
110
- font-size: 1em;
111
- }
112
-
113
- .ui-widget-content {
114
- border: 1px solid #aaaaaa;
115
- background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;
116
- color: #222222;
117
- }
118
-
119
- .ui-widget-content a {
120
- color: #222222;
121
- }
122
-
123
- .ui-widget-header {
124
- border: 1px solid #aaaaaa;
125
- background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;
126
- color: #222222;
127
- font-weight: bold;
128
- }
129
-
130
- .ui-widget-header a {
131
- color: #222222;
132
- }
133
-
134
- /* Interaction states
135
- ----------------------------------*/
136
- .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
137
- border: 1px solid #d3d3d3;
138
- background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;
139
- font-weight: normal;
140
- color: #555555;
141
- }
142
-
143
- .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited {
144
- color: #555555;
145
- text-decoration: none;
146
- }
147
-
148
- .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus {
149
- border: 1px solid #999999;
150
- background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;
151
- font-weight: normal;
152
- color: #212121;
153
- }
154
-
155
- .ui-state-hover a, .ui-state-hover a:hover {
156
- color: #212121;
157
- text-decoration: none;
158
- }
159
-
160
- .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active {
161
- border: 1px solid #aaaaaa;
162
- background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;
163
- font-weight: normal;
164
- color: #212121;
165
- }
166
-
167
- .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
168
- color: #212121;
169
- text-decoration: none;
170
- }
171
-
172
- .ui-widget :active {
173
- outline: none;
174
- }
175
-
176
- /* Interaction Cues
177
- ----------------------------------*/
178
- .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {
179
- border: 1px solid #fcefa1;
180
- background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;
181
- color: #363636;
182
- }
183
-
184
- .ui-state-highlight a, .ui-widget-content .ui-state-highlight a, .ui-widget-header .ui-state-highlight a {
185
- color: #363636;
186
- }
187
-
188
- .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {
189
- border: 1px solid #cd0a0a;
190
- background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;
191
- color: #cd0a0a;
192
- }
193
-
194
- .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a {
195
- color: #cd0a0a;
196
- }
197
-
198
- .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text {
199
- color: #cd0a0a;
200
- }
201
-
202
- .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary {
203
- font-weight: bold;
204
- }
205
-
206
- .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary {
207
- opacity: .7;
208
- filter: Alpha(Opacity=70);
209
- font-weight: normal;
210
- }
211
-
212
- .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled {
213
- opacity: .35;
214
- filter: Alpha(Opacity=35);
215
- background-image: none;
216
- }
217
-
218
- /* Icons
219
- ----------------------------------*/
220
-
221
- /* states and images */
222
- .ui-icon {
223
- width: 16px;
224
- height: 16px;
225
- background-image: url(images/ui-icons_222222_256x240.png);
226
- }
227
-
228
- .ui-widget-content .ui-icon {
229
- background-image: url(images/ui-icons_222222_256x240.png);
230
- }
231
-
232
- .ui-widget-header .ui-icon {
233
- background-image: url(images/ui-icons_222222_256x240.png);
234
- }
235
-
236
- .ui-state-default .ui-icon {
237
- background-image: url(images/ui-icons_888888_256x240.png);
238
- }
239
-
240
- .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {
241
- background-image: url(images/ui-icons_454545_256x240.png);
242
- }
243
-
244
- .ui-state-active .ui-icon {
245
- background-image: url(images/ui-icons_454545_256x240.png);
246
- }
247
-
248
- .ui-state-highlight .ui-icon {
249
- background-image: url(images/ui-icons_2e83ff_256x240.png);
250
- }
251
-
252
- .ui-state-error .ui-icon, .ui-state-error-text .ui-icon {
253
- background-image: url(images/ui-icons_cd0a0a_256x240.png);
254
- }
255
-
256
- /* positioning */
257
- .ui-icon-carat-1-n {
258
- background-position: 0 0;
259
- }
260
-
261
- .ui-icon-carat-1-ne {
262
- background-position: -16px 0;
263
- }
264
-
265
- .ui-icon-carat-1-e {
266
- background-position: -32px 0;
267
- }
268
-
269
- .ui-icon-carat-1-se {
270
- background-position: -48px 0;
271
- }
272
-
273
- .ui-icon-carat-1-s {
274
- background-position: -64px 0;
275
- }
276
-
277
- .ui-icon-carat-1-sw {
278
- background-position: -80px 0;
279
- }
280
-
281
- .ui-icon-carat-1-w {
282
- background-position: -96px 0;
283
- }
284
-
285
- .ui-icon-carat-1-nw {
286
- background-position: -112px 0;
287
- }
288
-
289
- .ui-icon-carat-2-n-s {
290
- background-position: -128px 0;
291
- }
292
-
293
- .ui-icon-carat-2-e-w {
294
- background-position: -144px 0;
295
- }
296
-
297
- .ui-icon-triangle-1-n {
298
- background-position: 0 -16px;
299
- }
300
-
301
- .ui-icon-triangle-1-ne {
302
- background-position: -16px -16px;
303
- }
304
-
305
- .ui-icon-triangle-1-e {
306
- background-position: -32px -16px;
307
- }
308
-
309
- .ui-icon-triangle-1-se {
310
- background-position: -48px -16px;
311
- }
312
-
313
- .ui-icon-triangle-1-s {
314
- background-position: -64px -16px;
315
- }
316
-
317
- .ui-icon-triangle-1-sw {
318
- background-position: -80px -16px;
319
- }
320
-
321
- .ui-icon-triangle-1-w {
322
- background-position: -96px -16px;
323
- }
324
-
325
- .ui-icon-triangle-1-nw {
326
- background-position: -112px -16px;
327
- }
328
-
329
- .ui-icon-triangle-2-n-s {
330
- background-position: -128px -16px;
331
- }
332
-
333
- .ui-icon-triangle-2-e-w {
334
- background-position: -144px -16px;
335
- }
336
-
337
- .ui-icon-arrow-1-n {
338
- background-position: 0 -32px;
339
- }
340
-
341
- .ui-icon-arrow-1-ne {
342
- background-position: -16px -32px;
343
- }
344
-
345
- .ui-icon-arrow-1-e {
346
- background-position: -32px -32px;
347
- }
348
-
349
- .ui-icon-arrow-1-se {
350
- background-position: -48px -32px;
351
- }
352
-
353
- .ui-icon-arrow-1-s {
354
- background-position: -64px -32px;
355
- }
356
-
357
- .ui-icon-arrow-1-sw {
358
- background-position: -80px -32px;
359
- }
360
-
361
- .ui-icon-arrow-1-w {
362
- background-position: -96px -32px;
363
- }
364
-
365
- .ui-icon-arrow-1-nw {
366
- background-position: -112px -32px;
367
- }
368
-
369
- .ui-icon-arrow-2-n-s {
370
- background-position: -128px -32px;
371
- }
372
-
373
- .ui-icon-arrow-2-ne-sw {
374
- background-position: -144px -32px;
375
- }
376
-
377
- .ui-icon-arrow-2-e-w {
378
- background-position: -160px -32px;
379
- }
380
-
381
- .ui-icon-arrow-2-se-nw {
382
- background-position: -176px -32px;
383
- }
384
-
385
- .ui-icon-arrowstop-1-n {
386
- background-position: -192px -32px;
387
- }
388
-
389
- .ui-icon-arrowstop-1-e {
390
- background-position: -208px -32px;
391
- }
392
-
393
- .ui-icon-arrowstop-1-s {
394
- background-position: -224px -32px;
395
- }
396
-
397
- .ui-icon-arrowstop-1-w {
398
- background-position: -240px -32px;
399
- }
400
-
401
- .ui-icon-arrowthick-1-n {
402
- background-position: 0 -48px;
403
- }
404
-
405
- .ui-icon-arrowthick-1-ne {
406
- background-position: -16px -48px;
407
- }
408
-
409
- .ui-icon-arrowthick-1-e {
410
- background-position: -32px -48px;
411
- }
412
-
413
- .ui-icon-arrowthick-1-se {
414
- background-position: -48px -48px;
415
- }
416
-
417
- .ui-icon-arrowthick-1-s {
418
- background-position: -64px -48px;
419
- }
420
-
421
- .ui-icon-arrowthick-1-sw {
422
- background-position: -80px -48px;
423
- }
424
-
425
- .ui-icon-arrowthick-1-w {
426
- background-position: -96px -48px;
427
- }
428
-
429
- .ui-icon-arrowthick-1-nw {
430
- background-position: -112px -48px;
431
- }
432
-
433
- .ui-icon-arrowthick-2-n-s {
434
- background-position: -128px -48px;
435
- }
436
-
437
- .ui-icon-arrowthick-2-ne-sw {
438
- background-position: -144px -48px;
439
- }
440
-
441
- .ui-icon-arrowthick-2-e-w {
442
- background-position: -160px -48px;
443
- }
444
-
445
- .ui-icon-arrowthick-2-se-nw {
446
- background-position: -176px -48px;
447
- }
448
-
449
- .ui-icon-arrowthickstop-1-n {
450
- background-position: -192px -48px;
451
- }
452
-
453
- .ui-icon-arrowthickstop-1-e {
454
- background-position: -208px -48px;
455
- }
456
-
457
- .ui-icon-arrowthickstop-1-s {
458
- background-position: -224px -48px;
459
- }
460
-
461
- .ui-icon-arrowthickstop-1-w {
462
- background-position: -240px -48px;
463
- }
464
-
465
- .ui-icon-arrowreturnthick-1-w {
466
- background-position: 0 -64px;
467
- }
468
-
469
- .ui-icon-arrowreturnthick-1-n {
470
- background-position: -16px -64px;
471
- }
472
-
473
- .ui-icon-arrowreturnthick-1-e {
474
- background-position: -32px -64px;
475
- }
476
-
477
- .ui-icon-arrowreturnthick-1-s {
478
- background-position: -48px -64px;
479
- }
480
-
481
- .ui-icon-arrowreturn-1-w {
482
- background-position: -64px -64px;
483
- }
484
-
485
- .ui-icon-arrowreturn-1-n {
486
- background-position: -80px -64px;
487
- }
488
-
489
- .ui-icon-arrowreturn-1-e {
490
- background-position: -96px -64px;
491
- }
492
-
493
- .ui-icon-arrowreturn-1-s {
494
- background-position: -112px -64px;
495
- }
496
-
497
- .ui-icon-arrowrefresh-1-w {
498
- background-position: -128px -64px;
499
- }
500
-
501
- .ui-icon-arrowrefresh-1-n {
502
- background-position: -144px -64px;
503
- }
504
-
505
- .ui-icon-arrowrefresh-1-e {
506
- background-position: -160px -64px;
507
- }
508
-
509
- .ui-icon-arrowrefresh-1-s {
510
- background-position: -176px -64px;
511
- }
512
-
513
- .ui-icon-arrow-4 {
514
- background-position: 0 -80px;
515
- }
516
-
517
- .ui-icon-arrow-4-diag {
518
- background-position: -16px -80px;
519
- }
520
-
521
- .ui-icon-extlink {
522
- background-position: -32px -80px;
523
- }
524
-
525
- .ui-icon-newwin {
526
- background-position: -48px -80px;
527
- }
528
-
529
- .ui-icon-refresh {
530
- background-position: -64px -80px;
531
- }
532
-
533
- .ui-icon-shuffle {
534
- background-position: -80px -80px;
535
- }
536
-
537
- .ui-icon-transfer-e-w {
538
- background-position: -96px -80px;
539
- }
540
-
541
- .ui-icon-transferthick-e-w {
542
- background-position: -112px -80px;
543
- }
544
-
545
- .ui-icon-folder-collapsed {
546
- background-position: 0 -96px;
547
- }
548
-
549
- .ui-icon-folder-open {
550
- background-position: -16px -96px;
551
- }
552
-
553
- .ui-icon-document {
554
- background-position: -32px -96px;
555
- }
556
-
557
- .ui-icon-document-b {
558
- background-position: -48px -96px;
559
- }
560
-
561
- .ui-icon-note {
562
- background-position: -64px -96px;
563
- }
564
-
565
- .ui-icon-mail-closed {
566
- background-position: -80px -96px;
567
- }
568
-
569
- .ui-icon-mail-open {
570
- background-position: -96px -96px;
571
- }
572
-
573
- .ui-icon-suitcase {
574
- background-position: -112px -96px;
575
- }
576
-
577
- .ui-icon-comment {
578
- background-position: -128px -96px;
579
- }
580
-
581
- .ui-icon-person {
582
- background-position: -144px -96px;
583
- }
584
-
585
- .ui-icon-print {
586
- background-position: -160px -96px;
587
- }
588
-
589
- .ui-icon-trash {
590
- background-position: -176px -96px;
591
- }
592
-
593
- .ui-icon-locked {
594
- background-position: -192px -96px;
595
- }
596
-
597
- .ui-icon-unlocked {
598
- background-position: -208px -96px;
599
- }
600
-
601
- .ui-icon-bookmark {
602
- background-position: -224px -96px;
603
- }
604
-
605
- .ui-icon-tag {
606
- background-position: -240px -96px;
607
- }
608
-
609
- .ui-icon-home {
610
- background-position: 0 -112px;
611
- }
612
-
613
- .ui-icon-flag {
614
- background-position: -16px -112px;
615
- }
616
-
617
- .ui-icon-calendar {
618
- background-position: -32px -112px;
619
- }
620
-
621
- .ui-icon-cart {
622
- background-position: -48px -112px;
623
- }
624
-
625
- .ui-icon-pencil {
626
- background-position: -64px -112px;
627
- }
628
-
629
- .ui-icon-clock {
630
- background-position: -80px -112px;
631
- }
632
-
633
- .ui-icon-disk {
634
- background-position: -96px -112px;
635
- }
636
-
637
- .ui-icon-calculator {
638
- background-position: -112px -112px;
639
- }
640
-
641
- .ui-icon-zoomin {
642
- background-position: -128px -112px;
643
- }
644
-
645
- .ui-icon-zoomout {
646
- background-position: -144px -112px;
647
- }
648
-
649
- .ui-icon-search {
650
- background-position: -160px -112px;
651
- }
652
-
653
- .ui-icon-wrench {
654
- background-position: -176px -112px;
655
- }
656
-
657
- .ui-icon-gear {
658
- background-position: -192px -112px;
659
- }
660
-
661
- .ui-icon-heart {
662
- background-position: -208px -112px;
663
- }
664
-
665
- .ui-icon-star {
666
- background-position: -224px -112px;
667
- }
668
-
669
- .ui-icon-link {
670
- background-position: -240px -112px;
671
- }
672
-
673
- .ui-icon-cancel {
674
- background-position: 0 -128px;
675
- }
676
-
677
- .ui-icon-plus {
678
- background-position: -16px -128px;
679
- }
680
-
681
- .ui-icon-plusthick {
682
- background-position: -32px -128px;
683
- }
684
-
685
- .ui-icon-minus {
686
- background-position: -48px -128px;
687
- }
688
-
689
- .ui-icon-minusthick {
690
- background-position: -64px -128px;
691
- }
692
-
693
- .ui-icon-close {
694
- background-position: -80px -128px;
695
- }
696
-
697
- .ui-icon-closethick {
698
- background-position: -96px -128px;
699
- }
700
-
701
- .ui-icon-key {
702
- background-position: -112px -128px;
703
- }
704
-
705
- .ui-icon-lightbulb {
706
- background-position: -128px -128px;
707
- }
708
-
709
- .ui-icon-scissors {
710
- background-position: -144px -128px;
711
- }
712
-
713
- .ui-icon-clipboard {
714
- background-position: -160px -128px;
715
- }
716
-
717
- .ui-icon-copy {
718
- background-position: -176px -128px;
719
- }
720
-
721
- .ui-icon-contact {
722
- background-position: -192px -128px;
723
- }
724
-
725
- .ui-icon-image {
726
- background-position: -208px -128px;
727
- }
728
-
729
- .ui-icon-video {
730
- background-position: -224px -128px;
731
- }
732
-
733
- .ui-icon-script {
734
- background-position: -240px -128px;
735
- }
736
-
737
- .ui-icon-alert {
738
- background-position: 0 -144px;
739
- }
740
-
741
- .ui-icon-info {
742
- background-position: -16px -144px;
743
- }
744
-
745
- .ui-icon-notice {
746
- background-position: -32px -144px;
747
- }
748
-
749
- .ui-icon-help {
750
- background-position: -48px -144px;
751
- }
752
-
753
- .ui-icon-check {
754
- background-position: -64px -144px;
755
- }
756
-
757
- .ui-icon-bullet {
758
- background-position: -80px -144px;
759
- }
760
-
761
- .ui-icon-radio-off {
762
- background-position: -96px -144px;
763
- }
764
-
765
- .ui-icon-radio-on {
766
- background-position: -112px -144px;
767
- }
768
-
769
- .ui-icon-pin-w {
770
- background-position: -128px -144px;
771
- }
772
-
773
- .ui-icon-pin-s {
774
- background-position: -144px -144px;
775
- }
776
-
777
- .ui-icon-play {
778
- background-position: 0 -160px;
779
- }
780
-
781
- .ui-icon-pause {
782
- background-position: -16px -160px;
783
- }
784
-
785
- .ui-icon-seek-next {
786
- background-position: -32px -160px;
787
- }
788
-
789
- .ui-icon-seek-prev {
790
- background-position: -48px -160px;
791
- }
792
-
793
- .ui-icon-seek-end {
794
- background-position: -64px -160px;
795
- }
796
-
797
- .ui-icon-seek-start {
798
- background-position: -80px -160px;
799
- }
800
-
801
- /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
802
- .ui-icon-seek-first {
803
- background-position: -80px -160px;
804
- }
805
-
806
- .ui-icon-stop {
807
- background-position: -96px -160px;
808
- }
809
-
810
- .ui-icon-eject {
811
- background-position: -112px -160px;
812
- }
813
-
814
- .ui-icon-volume-off {
815
- background-position: -128px -160px;
816
- }
817
-
818
- .ui-icon-volume-on {
819
- background-position: -144px -160px;
820
- }
821
-
822
- .ui-icon-power {
823
- background-position: 0 -176px;
824
- }
825
-
826
- .ui-icon-signal-diag {
827
- background-position: -16px -176px;
828
- }
829
-
830
- .ui-icon-signal {
831
- background-position: -32px -176px;
832
- }
833
-
834
- .ui-icon-battery-0 {
835
- background-position: -48px -176px;
836
- }
837
-
838
- .ui-icon-battery-1 {
839
- background-position: -64px -176px;
840
- }
841
-
842
- .ui-icon-battery-2 {
843
- background-position: -80px -176px;
844
- }
845
-
846
- .ui-icon-battery-3 {
847
- background-position: -96px -176px;
848
- }
849
-
850
- .ui-icon-circle-plus {
851
- background-position: 0 -192px;
852
- }
853
-
854
- .ui-icon-circle-minus {
855
- background-position: -16px -192px;
856
- }
857
-
858
- .ui-icon-circle-close {
859
- background-position: -32px -192px;
860
- }
861
-
862
- .ui-icon-circle-triangle-e {
863
- background-position: -48px -192px;
864
- }
865
-
866
- .ui-icon-circle-triangle-s {
867
- background-position: -64px -192px;
868
- }
869
-
870
- .ui-icon-circle-triangle-w {
871
- background-position: -80px -192px;
872
- }
873
-
874
- .ui-icon-circle-triangle-n {
875
- background-position: -96px -192px;
876
- }
877
-
878
- .ui-icon-circle-arrow-e {
879
- background-position: -112px -192px;
880
- }
881
-
882
- .ui-icon-circle-arrow-s {
883
- background-position: -128px -192px;
884
- }
885
-
886
- .ui-icon-circle-arrow-w {
887
- background-position: -144px -192px;
888
- }
889
-
890
- .ui-icon-circle-arrow-n {
891
- background-position: -160px -192px;
892
- }
893
-
894
- .ui-icon-circle-zoomin {
895
- background-position: -176px -192px;
896
- }
897
-
898
- .ui-icon-circle-zoomout {
899
- background-position: -192px -192px;
900
- }
901
-
902
- .ui-icon-circle-check {
903
- background-position: -208px -192px;
904
- }
905
-
906
- .ui-icon-circlesmall-plus {
907
- background-position: 0 -208px;
908
- }
909
-
910
- .ui-icon-circlesmall-minus {
911
- background-position: -16px -208px;
912
- }
913
-
914
- .ui-icon-circlesmall-close {
915
- background-position: -32px -208px;
916
- }
917
-
918
- .ui-icon-squaresmall-plus {
919
- background-position: -48px -208px;
920
- }
921
-
922
- .ui-icon-squaresmall-minus {
923
- background-position: -64px -208px;
924
- }
925
-
926
- .ui-icon-squaresmall-close {
927
- background-position: -80px -208px;
928
- }
929
-
930
- .ui-icon-grip-dotted-vertical {
931
- background-position: 0 -224px;
932
- }
933
-
934
- .ui-icon-grip-dotted-horizontal {
935
- background-position: -16px -224px;
936
- }
937
-
938
- .ui-icon-grip-solid-vertical {
939
- background-position: -32px -224px;
940
- }
941
-
942
- .ui-icon-grip-solid-horizontal {
943
- background-position: -48px -224px;
944
- }
945
-
946
- .ui-icon-gripsmall-diagonal-se {
947
- background-position: -64px -224px;
948
- }
949
-
950
- .ui-icon-grip-diagonal-se {
951
- background-position: -80px -224px;
952
- }
953
-
954
- /* Misc visuals
955
- ----------------------------------*/
956
-
957
- /* Corner radius */
958
- .ui-corner-tl {
959
- -moz-border-radius-topleft: 4px;
960
- -webkit-border-top-left-radius: 4px;
961
- border-top-left-radius: 4px;
962
- }
963
-
964
- .ui-corner-tr {
965
- -moz-border-radius-topright: 4px;
966
- -webkit-border-top-right-radius: 4px;
967
- border-top-right-radius: 4px;
968
- }
969
-
970
- .ui-corner-bl {
971
- -moz-border-radius-bottomleft: 4px;
972
- -webkit-border-bottom-left-radius: 4px;
973
- border-bottom-left-radius: 4px;
974
- }
975
-
976
- .ui-corner-br {
977
- -moz-border-radius-bottomright: 4px;
978
- -webkit-border-bottom-right-radius: 4px;
979
- border-bottom-right-radius: 4px;
980
- }
981
-
982
- .ui-corner-top {
983
- -moz-border-radius-topleft: 4px;
984
- -webkit-border-top-left-radius: 4px;
985
- border-top-left-radius: 4px;
986
- -moz-border-radius-topright: 4px;
987
- -webkit-border-top-right-radius: 4px;
988
- border-top-right-radius: 4px;
989
- }
990
-
991
- .ui-corner-bottom {
992
- -moz-border-radius-bottomleft: 4px;
993
- -webkit-border-bottom-left-radius: 4px;
994
- border-bottom-left-radius: 4px;
995
- -moz-border-radius-bottomright: 4px;
996
- -webkit-border-bottom-right-radius: 4px;
997
- border-bottom-right-radius: 4px;
998
- }
999
-
1000
- .ui-corner-right {
1001
- -moz-border-radius-topright: 4px;
1002
- -webkit-border-top-right-radius: 4px;
1003
- border-top-right-radius: 4px;
1004
- -moz-border-radius-bottomright: 4px;
1005
- -webkit-border-bottom-right-radius: 4px;
1006
- border-bottom-right-radius: 4px;
1007
- }
1008
-
1009
- .ui-corner-left {
1010
- -moz-border-radius-topleft: 4px;
1011
- -webkit-border-top-left-radius: 4px;
1012
- border-top-left-radius: 4px;
1013
- -moz-border-radius-bottomleft: 4px;
1014
- -webkit-border-bottom-left-radius: 4px;
1015
- border-bottom-left-radius: 4px;
1016
- }
1017
-
1018
- .ui-corner-all {
1019
- -moz-border-radius: 4px;
1020
- -webkit-border-radius: 4px;
1021
- border-radius: 4px;
1022
- }
1023
-
1024
- /* Overlays */
1025
- .ui-widget-overlay {
1026
- background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
1027
- opacity: .30;
1028
- filter: Alpha(Opacity=30);
1029
- }
1030
 
1031
- .ui-widget-shadow {
1032
- margin: -8px 0 0 -8px;
1033
- padding: 8px;
1034
- background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
1035
- opacity: .30;
1036
- filter: Alpha(Opacity=30);
1037
- -moz-border-radius: 8px;
1038
- -webkit-border-radius: 8px;
1039
- border-radius: 8px;
1040
- }
1041
 
1042
- /* Resizable
1043
  ----------------------------------*/
1044
- .ui-resizable {
1045
- position: relative;
1046
- }
1047
-
1048
- .ui-resizable-handle {
1049
- position: absolute;
1050
- font-size: 0.1px;
1051
- z-index: 99999;
1052
- display: block;
1053
- }
1054
 
1055
- .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle {
1056
- display: none;
1057
- }
1058
 
1059
- .ui-resizable-n {
1060
- cursor: n-resize;
1061
- height: 7px;
1062
- width: 100%;
1063
- top: -5px;
1064
- left: 0;
1065
- }
1066
 
1067
- .ui-resizable-s {
1068
- cursor: s-resize;
1069
- height: 7px;
1070
- width: 100%;
1071
- bottom: -5px;
1072
- left: 0;
1073
- }
1074
 
1075
- .ui-resizable-e {
1076
- cursor: e-resize;
1077
- width: 7px;
1078
- right: -5px;
1079
- top: 0;
1080
- height: 100%;
1081
- }
1082
 
1083
- .ui-resizable-w {
1084
- cursor: w-resize;
1085
- width: 7px;
1086
- left: -5px;
1087
- top: 0;
1088
- height: 100%;
1089
- }
1090
 
1091
- .ui-resizable-se {
1092
- cursor: se-resize;
1093
- width: 12px;
1094
- height: 12px;
1095
- right: 1px;
1096
- bottom: 1px;
1097
- }
1098
 
1099
- .ui-resizable-sw {
1100
- cursor: sw-resize;
1101
- width: 9px;
1102
- height: 9px;
1103
- left: -5px;
1104
- bottom: -5px;
1105
- }
1106
 
1107
- .ui-resizable-nw {
1108
- cursor: nw-resize;
1109
- width: 9px;
1110
- height: 9px;
1111
- left: -5px;
1112
- top: -5px;
1113
- }
1114
 
1115
- .ui-resizable-ne {
1116
- cursor: ne-resize;
1117
- width: 9px;
1118
- height: 9px;
1119
- right: -5px;
1120
- top: -5px;
1121
- }
1122
 
1123
- /* Selectable
1124
  ----------------------------------*/
1125
- .ui-selectable-helper {
1126
- border: 1px dotted black
1127
- }
 
 
 
 
1128
 
1129
- /* Accordion
1130
  ----------------------------------*/
1131
- .ui-accordion .ui-accordion-header {
1132
- cursor: pointer;
1133
- position: relative;
1134
- margin-top: 1px;
1135
- zoom: 1;
1136
- }
1137
-
1138
- .ui-accordion .ui-accordion-li-fix {
1139
- display: inline;
1140
- }
1141
 
1142
- .ui-accordion .ui-accordion-header-active {
1143
- border-bottom: 0 !important;
1144
- }
 
 
 
 
 
 
 
1145
 
1146
- .ui-accordion .ui-accordion-header a {
1147
- display: block;
1148
- font-size: 1em;
1149
- padding: .5em .5em .5em .7em;
1150
- }
1151
 
1152
- /* IE7-/Win - Fix extra vertical space in lists */
1153
- .ui-accordion a {
1154
- zoom: 1;
1155
- }
 
 
 
 
 
1156
 
1157
- .ui-accordion-icons .ui-accordion-header a {
1158
- padding-left: 2.2em;
1159
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1160
 
1161
- .ui-accordion .ui-accordion-header .ui-icon {
1162
- position: absolute;
1163
- left: .5em;
1164
- top: 50%;
1165
- margin-top: -8px;
1166
- }
1167
 
1168
- .ui-accordion .ui-accordion-content {
1169
- padding: 1em 2.2em;
1170
- border-top: 0;
1171
- margin-top: -2px;
1172
- position: relative;
1173
- top: 1px;
1174
- margin-bottom: 2px;
1175
- overflow: auto;
1176
- display: none;
1177
- zoom: 1;
1178
- }
1179
 
1180
- .ui-accordion .ui-accordion-content-active {
1181
- display: block;
1182
- }
 
 
 
 
 
 
 
1183
 
1184
- /* Autocomplete
 
 
1185
  ----------------------------------*/
1186
- .ui-autocomplete {
1187
- position: absolute;
1188
- cursor: default;
1189
- }
1190
-
1191
- .ui-autocomplete-loading {
1192
- background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat;
1193
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1194
 
1195
  /* workarounds */
1196
- * html .ui-autocomplete {
1197
- width: 1px;
1198
- }
1199
-
1200
- /* without this, the menu expands to 100% in IE6 */
1201
 
1202
  /* Menu
1203
  ----------------------------------*/
1204
  .ui-menu {
1205
- list-style: none;
1206
- padding: 2px;
1207
- margin: 0;
1208
- display: block;
1209
  }
1210
-
1211
  .ui-menu .ui-menu {
1212
- margin-top: -3px;
1213
  }
1214
-
1215
  .ui-menu .ui-menu-item {
1216
- margin: 0;
1217
- padding: 0;
1218
- zoom: 1;
1219
- float: left;
1220
- clear: left;
1221
- width: 100%;
1222
  }
1223
-
1224
  .ui-menu .ui-menu-item a {
1225
- text-decoration: none;
1226
- display: block;
1227
- padding: .2em .4em;
1228
- line-height: 1.5;
1229
- zoom: 1;
1230
  }
1231
-
1232
  .ui-menu .ui-menu-item a.ui-state-hover,
1233
  .ui-menu .ui-menu-item a.ui-state-active {
1234
- font-weight: normal;
1235
- margin: -1px;
1236
  }
1237
-
1238
  /* Button
1239
  ----------------------------------*/
1240
 
1241
- .ui-button {
1242
- display: inline-block;
1243
- position: relative;
1244
- padding: 0;
1245
- margin-right: .1em;
1246
- text-decoration: none !important;
1247
- cursor: pointer;
1248
- text-align: center;
1249
- zoom: 1;
1250
- overflow: visible;
1251
- }
1252
-
1253
- /* the overflow property removes extra width in IE */
1254
- .ui-button-icon-only {
1255
- width: 2.2em;
1256
- }
1257
-
1258
- /* to make room for the icon, a width needs to be set here */
1259
- button.ui-button-icon-only {
1260
- width: 2.4em;
1261
- }
1262
-
1263
- /* button elements seem to need a little more width */
1264
- .ui-button-icons-only {
1265
- width: 3.4em;
1266
- }
1267
-
1268
- button.ui-button-icons-only {
1269
- width: 3.7em;
1270
- }
1271
 
1272
  /*button text element */
1273
- .ui-button .ui-button-text {
1274
- display: block;
1275
- line-height: 1.4;
1276
- }
1277
-
1278
- .ui-button-text-only .ui-button-text {
1279
- padding: .4em 1em;
1280
- }
1281
-
1282
- .ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text {
1283
- padding: .4em;
1284
- text-indent: -9999999px;
1285
- }
1286
-
1287
- .ui-button-text-icon .ui-button-text, .ui-button-text-icons .ui-button-text {
1288
- padding: .4em 1em .4em 2.1em;
1289
- }
1290
-
1291
- .ui-button-text-icons .ui-button-text {
1292
- padding-left: 2.1em;
1293
- padding-right: 2.1em;
1294
- }
1295
-
1296
  /* no icon support for input elements, provide padding by default */
1297
- input.ui-button {
1298
- padding: .4em 1em;
1299
- }
1300
 
1301
  /*button icon element(s) */
1302
- .ui-button-icon-only .ui-icon, .ui-button-text-icon .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon {
1303
- position: absolute;
1304
- top: 50%;
1305
- margin-top: -8px;
1306
- }
1307
-
1308
- .ui-button-icon-only .ui-icon {
1309
- left: 50%;
1310
- margin-left: -8px;
1311
- }
1312
-
1313
- .ui-button-text-icon .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary {
1314
- left: .5em;
1315
- }
1316
-
1317
- .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary {
1318
- right: .5em;
1319
- }
1320
 
1321
  /*button sets*/
1322
- .ui-buttonset {
1323
- margin-right: 7px;
1324
- }
1325
-
1326
- .ui-buttonset .ui-button {
1327
- margin-left: 0;
1328
- margin-right: -.3em;
1329
- }
1330
 
1331
  /* workarounds */
1332
- button.ui-button::-moz-focus-inner {
1333
- border: 0;
1334
- padding: 0;
1335
- }
1336
-
1337
- /* reset extra padding in Firefox */
1338
-
1339
- /* Dialog
1340
- ----------------------------------*/
1341
- .ui-dialog {
1342
- position: absolute;
1343
- padding: .2em;
1344
- width: 300px;
1345
- overflow: hidden;
1346
- }
1347
-
1348
- .ui-dialog .ui-dialog-titlebar {
1349
- padding: .5em 1em .3em;
1350
- position: relative;
1351
- }
1352
 
1353
- .ui-dialog .ui-dialog-title {
1354
- float: left;
1355
- margin: .1em 16px .2em 0;
1356
- }
1357
-
1358
- .ui-dialog .ui-dialog-titlebar-close {
1359
- position: absolute;
1360
- right: .3em;
1361
- top: 50%;
1362
- width: 19px;
1363
- margin: -10px 0 0 0;
1364
- padding: 1px;
1365
- height: 18px;
1366
- }
1367
-
1368
- .ui-dialog .ui-dialog-titlebar-close span {
1369
- display: block;
1370
- margin: 1px;
1371
- }
1372
-
1373
- .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus {
1374
- padding: 0;
1375
- }
1376
-
1377
- .ui-dialog .ui-dialog-content {
1378
- border: 0;
1379
- padding: .5em 1em;
1380
- background: none;
1381
- overflow: auto;
1382
- zoom: 1;
1383
- }
1384
-
1385
- .ui-dialog .ui-dialog-buttonpane {
1386
- text-align: left;
1387
- border-width: 1px 0 0 0;
1388
- background-image: none;
1389
- margin: .5em 0 0 0;
1390
- padding: .3em 1em .5em .4em;
1391
- }
1392
 
1393
- .ui-dialog .ui-dialog-buttonpane button {
1394
- float: right;
1395
- margin: .5em .4em .5em 0;
1396
- cursor: pointer;
1397
- padding: .2em .6em .3em .6em;
1398
- line-height: 1.4em;
1399
- width: auto;
1400
- overflow: visible;
1401
- }
1402
 
1403
- .ui-dialog .ui-resizable-se {
1404
- width: 14px;
1405
- height: 14px;
1406
- right: 3px;
1407
- bottom: 3px;
1408
- }
1409
 
1410
- .ui-draggable .ui-dialog-titlebar {
1411
- cursor: move;
1412
- }
1413
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1414
  /* Slider
1415
  ----------------------------------*/
1416
- .ui-slider {
1417
- position: relative;
1418
- text-align: left;
1419
- }
1420
-
1421
- .ui-slider .ui-slider-handle {
1422
- position: absolute;
1423
- z-index: 2;
1424
- width: 1.2em;
1425
- height: 1.2em;
1426
- cursor: default;
1427
- }
1428
-
1429
- .ui-slider .ui-slider-range {
1430
- position: absolute;
1431
- z-index: 1;
1432
- font-size: .7em;
1433
- display: block;
1434
- border: 0;
1435
- background-position: 0 0;
1436
- }
1437
-
1438
- .ui-slider-horizontal {
1439
- height: .8em;
1440
- }
1441
-
1442
- .ui-slider-horizontal .ui-slider-handle {
1443
- top: -.3em;
1444
- margin-left: -.6em;
1445
- }
1446
-
1447
- .ui-slider-horizontal .ui-slider-range {
1448
- top: 0;
1449
- height: 100%;
1450
- }
1451
-
1452
- .ui-slider-horizontal .ui-slider-range-min {
1453
- left: 0;
1454
- }
1455
-
1456
- .ui-slider-horizontal .ui-slider-range-max {
1457
- right: 0;
1458
- }
1459
-
1460
- .ui-slider-vertical {
1461
- width: .8em;
1462
- height: 100px;
1463
- }
1464
-
1465
- .ui-slider-vertical .ui-slider-handle {
1466
- left: -.3em;
1467
- margin-left: 0;
1468
- margin-bottom: -.6em;
1469
- }
1470
-
1471
- .ui-slider-vertical .ui-slider-range {
1472
- left: 0;
1473
- width: 100%;
1474
- }
1475
-
1476
- .ui-slider-vertical .ui-slider-range-min {
1477
- bottom: 0;
1478
- }
1479
-
1480
- .ui-slider-vertical .ui-slider-range-max {
1481
- top: 0;
1482
- }
1483
-
1484
- /* Tabs
1485
  ----------------------------------*/
1486
- .ui-tabs {
1487
- position: relative;
1488
- padding: .2em;
1489
- zoom: 1;
1490
- }
1491
-
1492
- /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
1493
- .ui-tabs .ui-tabs-nav {
1494
- margin: 0;
1495
- padding: .2em .2em 0;
1496
- }
1497
-
1498
- .ui-tabs .ui-tabs-nav li {
1499
- list-style: none;
1500
- float: left;
1501
- position: relative;
1502
- top: 1px;
1503
- margin: 0 .2em 1px 0;
1504
- border-bottom: 0 !important;
1505
- padding: 0;
1506
- white-space: nowrap;
1507
- }
1508
-
1509
- .ui-tabs .ui-tabs-nav li a {
1510
- float: left;
1511
- padding: .5em 1em;
1512
- text-decoration: none;
1513
- }
1514
-
1515
- .ui-tabs .ui-tabs-nav li.ui-tabs-selected {
1516
- margin-bottom: 0;
1517
- padding-bottom: 1px;
1518
- }
1519
-
1520
- .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a {
1521
- cursor: text;
1522
- }
1523
-
1524
- .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a {
1525
- cursor: pointer;
1526
- }
1527
-
1528
- /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
1529
- .ui-tabs .ui-tabs-panel {
1530
- display: block;
1531
- border-width: 0;
1532
- padding: 1em 1.4em;
1533
- background: none;
1534
- }
1535
-
1536
- .ui-tabs .ui-tabs-hide {
1537
- display: none !important;
1538
- }
1539
-
1540
  /* Datepicker
1541
  ----------------------------------*/
1542
- .ui-datepicker {
1543
- width: 17em;
1544
- padding: .2em .2em 0;
1545
- }
1546
-
1547
- .ui-datepicker .ui-datepicker-header {
1548
- position: relative;
1549
- padding: .2em 0;
1550
- }
1551
-
1552
- .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next {
1553
- position: absolute;
1554
- top: 2px;
1555
- width: 1.8em;
1556
- height: 1.8em;
1557
- }
1558
-
1559
- .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover {
1560
- top: 1px;
1561
- }
1562
-
1563
- .ui-datepicker .ui-datepicker-prev {
1564
- left: 2px;
1565
- }
1566
-
1567
- .ui-datepicker .ui-datepicker-next {
1568
- right: 2px;
1569
- }
1570
-
1571
- .ui-datepicker .ui-datepicker-prev-hover {
1572
- left: 1px;
1573
- }
1574
-
1575
- .ui-datepicker .ui-datepicker-next-hover {
1576
- right: 1px;
1577
- }
1578
-
1579
- .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span {
1580
- display: block;
1581
- position: absolute;
1582
- left: 50%;
1583
- margin-left: -8px;
1584
- top: 50%;
1585
- margin-top: -8px;
1586
- }
1587
-
1588
- .ui-datepicker .ui-datepicker-title {
1589
- margin: 0 2.3em;
1590
- line-height: 1.8em;
1591
- text-align: center;
1592
- }
1593
-
1594
- .ui-datepicker .ui-datepicker-title select {
1595
- font-size: 1em;
1596
- margin: 1px 0;
1597
- }
1598
-
1599
- .ui-datepicker select.ui-datepicker-month-year {
1600
- width: 100%;
1601
- }
1602
-
1603
- .ui-datepicker select.ui-datepicker-month,
1604
- .ui-datepicker select.ui-datepicker-year {
1605
- width: 49%;
1606
- }
1607
-
1608
- .ui-datepicker table {
1609
- width: 100%;
1610
- font-size: .9em;
1611
- border-collapse: collapse;
1612
- margin: 0 0 .4em;
1613
- }
1614
-
1615
- .ui-datepicker th {
1616
- padding: .7em .3em;
1617
- text-align: center;
1618
- font-weight: bold;
1619
- border: 0;
1620
- }
1621
-
1622
- .ui-datepicker td {
1623
- border: 0;
1624
- padding: 1px;
1625
- }
1626
-
1627
- .ui-datepicker td span, .ui-datepicker td a {
1628
- display: block;
1629
- padding: .2em;
1630
- text-align: right;
1631
- text-decoration: none;
1632
- }
1633
-
1634
- .ui-datepicker .ui-datepicker-buttonpane {
1635
- background-image: none;
1636
- margin: .7em 0 0 0;
1637
- padding: 0 .2em;
1638
- border-left: 0;
1639
- border-right: 0;
1640
- border-bottom: 0;
1641
- }
1642
-
1643
- .ui-datepicker .ui-datepicker-buttonpane button {
1644
- float: right;
1645
- margin: .5em .2em .4em;
1646
- cursor: pointer;
1647
- padding: .2em .6em .3em .6em;
1648
- width: auto;
1649
- overflow: visible;
1650
- }
1651
-
1652
- .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
1653
- float: left;
1654
- }
1655
 
1656
  /* with multiple calendars */
1657
- .ui-datepicker.ui-datepicker-multi {
1658
- width: auto;
1659
- }
1660
-
1661
- .ui-datepicker-multi .ui-datepicker-group {
1662
- float: left;
1663
- }
1664
-
1665
- .ui-datepicker-multi .ui-datepicker-group table {
1666
- width: 95%;
1667
- margin: 0 auto .4em;
1668
- }
1669
-
1670
- .ui-datepicker-multi-2 .ui-datepicker-group {
1671
- width: 50%;
1672
- }
1673
-
1674
- .ui-datepicker-multi-3 .ui-datepicker-group {
1675
- width: 33.3%;
1676
- }
1677
-
1678
- .ui-datepicker-multi-4 .ui-datepicker-group {
1679
- width: 25%;
1680
- }
1681
-
1682
- .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header {
1683
- border-left-width: 0;
1684
- }
1685
-
1686
- .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
1687
- border-left-width: 0;
1688
- }
1689
-
1690
- .ui-datepicker-multi .ui-datepicker-buttonpane {
1691
- clear: left;
1692
- }
1693
-
1694
- .ui-datepicker-row-break {
1695
- clear: both;
1696
- width: 100%;
1697
- }
1698
 
1699
  /* RTL support */
1700
- .ui-datepicker-rtl {
1701
- direction: rtl;
1702
- }
1703
-
1704
- .ui-datepicker-rtl .ui-datepicker-prev {
1705
- right: 2px;
1706
- left: auto;
1707
- }
1708
-
1709
- .ui-datepicker-rtl .ui-datepicker-next {
1710
- left: 2px;
1711
- right: auto;
1712
- }
1713
-
1714
- .ui-datepicker-rtl .ui-datepicker-prev:hover {
1715
- right: 1px;
1716
- left: auto;
1717
- }
1718
-
1719
- .ui-datepicker-rtl .ui-datepicker-next:hover {
1720
- left: 1px;
1721
- right: auto;
1722
- }
1723
-
1724
- .ui-datepicker-rtl .ui-datepicker-buttonpane {
1725
- clear: right;
1726
- }
1727
-
1728
- .ui-datepicker-rtl .ui-datepicker-buttonpane button {
1729
- float: left;
1730
- }
1731
-
1732
- .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current {
1733
- float: right;
1734
- }
1735
-
1736
- .ui-datepicker-rtl .ui-datepicker-group {
1737
- float: right;
1738
- }
1739
-
1740
- .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header {
1741
- border-right-width: 0;
1742
- border-left-width: 1px;
1743
- }
1744
-
1745
- .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
1746
- border-right-width: 0;
1747
- border-left-width: 1px;
1748
- }
1749
 
1750
  /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
1751
  .ui-datepicker-cover {
1752
  display: none; /*sorry for IE5*/
1753
- display /**/: block; /*sorry for IE5*/
1754
  position: absolute; /*must have*/
1755
  z-index: -1; /*must have*/
1756
  filter: mask(); /*must have*/
@@ -1758,16 +483,7 @@ button.ui-button::-moz-focus-inner {
1758
  left: -4px; /*must have*/
1759
  width: 200px; /*must have*/
1760
  height: 200px; /*must have*/
1761
- }
1762
-
1763
- /* Progressbar
1764
  ----------------------------------*/
1765
- .ui-progressbar {
1766
- height: 2em;
1767
- text-align: left;
1768
- }
1769
-
1770
- .ui-progressbar .ui-progressbar-value {
1771
- margin: -1px;
1772
- height: 100%;
1773
- }
6
 
7
  /* Layout helpers
8
  ----------------------------------*/
9
+ .ui-helper-hidden { display: none; }
10
+ .ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
11
+ .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
12
+ .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
13
+ .ui-helper-clearfix { display: inline-block; }
14
+ /* required comment for clearfix to work in Opera \*/
15
+ * html .ui-helper-clearfix { height:1%; }
16
+ .ui-helper-clearfix { display:block; }
17
+ /* end clearfix */
18
+ .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
 
 
 
 
 
 
 
 
 
 
 
20
 
21
+ /* Interaction Cues
22
  ----------------------------------*/
23
+ .ui-state-disabled { cursor: default !important; }
 
 
 
 
 
 
 
 
 
24
 
 
 
 
25
 
26
+ /* Icons
27
+ ----------------------------------*/
 
 
 
 
 
28
 
29
+ /* states and images */
30
+ .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
 
 
 
 
 
31
 
 
 
 
 
 
 
 
32
 
33
+ /* Misc visuals
34
+ ----------------------------------*/
 
 
 
 
 
35
 
36
+ /* Overlays */
37
+ .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
 
 
 
 
 
38
 
 
 
 
 
 
 
 
39
 
40
+ /*
41
+ * jQuery UI CSS Framework
42
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
43
+ * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
44
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
45
+ */
 
46
 
 
 
 
 
 
 
 
47
 
48
+ /* Component containers
49
  ----------------------------------*/
50
+ .ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
51
+ .ui-widget .ui-widget { font-size: 1em; }
52
+ .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }
53
+ .ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
54
+ .ui-widget-content a { color: #222222; }
55
+ .ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
56
+ .ui-widget-header a { color: #222222; }
57
 
58
+ /* Interaction states
59
  ----------------------------------*/
60
+ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; }
61
+ .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }
62
+ .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
63
+ .ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; }
64
+ .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
65
+ .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }
66
+ .ui-widget :active { outline: none; }
 
 
 
67
 
68
+ /* Interaction Cues
69
+ ----------------------------------*/
70
+ .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }
71
+ .ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
72
+ .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
73
+ .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
74
+ .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
75
+ .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
76
+ .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
77
+ .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
78
 
79
+ /* Icons
80
+ ----------------------------------*/
 
 
 
81
 
82
+ /* states and images */
83
+ .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
84
+ .ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
85
+ .ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
86
+ .ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }
87
+ .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
88
+ .ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
89
+ .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
90
+ .ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
91
 
92
+ /* positioning */
93
+ .ui-icon-carat-1-n { background-position: 0 0; }
94
+ .ui-icon-carat-1-ne { background-position: -16px 0; }
95
+ .ui-icon-carat-1-e { background-position: -32px 0; }
96
+ .ui-icon-carat-1-se { background-position: -48px 0; }
97
+ .ui-icon-carat-1-s { background-position: -64px 0; }
98
+ .ui-icon-carat-1-sw { background-position: -80px 0; }
99
+ .ui-icon-carat-1-w { background-position: -96px 0; }
100
+ .ui-icon-carat-1-nw { background-position: -112px 0; }
101
+ .ui-icon-carat-2-n-s { background-position: -128px 0; }
102
+ .ui-icon-carat-2-e-w { background-position: -144px 0; }
103
+ .ui-icon-triangle-1-n { background-position: 0 -16px; }
104
+ .ui-icon-triangle-1-ne { background-position: -16px -16px; }
105
+ .ui-icon-triangle-1-e { background-position: -32px -16px; }
106
+ .ui-icon-triangle-1-se { background-position: -48px -16px; }
107
+ .ui-icon-triangle-1-s { background-position: -64px -16px; }
108
+ .ui-icon-triangle-1-sw { background-position: -80px -16px; }
109
+ .ui-icon-triangle-1-w { background-position: -96px -16px; }
110
+ .ui-icon-triangle-1-nw { background-position: -112px -16px; }
111
+ .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
112
+ .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
113
+ .ui-icon-arrow-1-n { background-position: 0 -32px; }
114
+ .ui-icon-arrow-1-ne { background-position: -16px -32px; }
115
+ .ui-icon-arrow-1-e { background-position: -32px -32px; }
116
+ .ui-icon-arrow-1-se { background-position: -48px -32px; }
117
+ .ui-icon-arrow-1-s { background-position: -64px -32px; }
118
+ .ui-icon-arrow-1-sw { background-position: -80px -32px; }
119
+ .ui-icon-arrow-1-w { background-position: -96px -32px; }
120
+ .ui-icon-arrow-1-nw { background-position: -112px -32px; }
121
+ .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
122
+ .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
123
+ .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
124
+ .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
125
+ .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
126
+ .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
127
+ .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
128
+ .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
129
+ .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
130
+ .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
131
+ .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
132
+ .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
133
+ .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
134
+ .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
135
+ .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
136
+ .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
137
+ .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
138
+ .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
139
+ .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
140
+ .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
141
+ .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
142
+ .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
143
+ .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
144
+ .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
145
+ .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
146
+ .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
147
+ .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
148
+ .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
149
+ .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
150
+ .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
151
+ .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
152
+ .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
153
+ .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
154
+ .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
155
+ .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
156
+ .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
157
+ .ui-icon-arrow-4 { background-position: 0 -80px; }
158
+ .ui-icon-arrow-4-diag { background-position: -16px -80px; }
159
+ .ui-icon-extlink { background-position: -32px -80px; }
160
+ .ui-icon-newwin { background-position: -48px -80px; }
161
+ .ui-icon-refresh { background-position: -64px -80px; }
162
+ .ui-icon-shuffle { background-position: -80px -80px; }
163
+ .ui-icon-transfer-e-w { background-position: -96px -80px; }
164
+ .ui-icon-transferthick-e-w { background-position: -112px -80px; }
165
+ .ui-icon-folder-collapsed { background-position: 0 -96px; }
166
+ .ui-icon-folder-open { background-position: -16px -96px; }
167
+ .ui-icon-document { background-position: -32px -96px; }
168
+ .ui-icon-document-b { background-position: -48px -96px; }
169
+ .ui-icon-note { background-position: -64px -96px; }
170
+ .ui-icon-mail-closed { background-position: -80px -96px; }
171
+ .ui-icon-mail-open { background-position: -96px -96px; }
172
+ .ui-icon-suitcase { background-position: -112px -96px; }
173
+ .ui-icon-comment { background-position: -128px -96px; }
174
+ .ui-icon-person { background-position: -144px -96px; }
175
+ .ui-icon-print { background-position: -160px -96px; }
176
+ .ui-icon-trash { background-position: -176px -96px; }
177
+ .ui-icon-locked { background-position: -192px -96px; }
178
+ .ui-icon-unlocked { background-position: -208px -96px; }
179
+ .ui-icon-bookmark { background-position: -224px -96px; }
180
+ .ui-icon-tag { background-position: -240px -96px; }
181
+ .ui-icon-home { background-position: 0 -112px; }
182
+ .ui-icon-flag { background-position: -16px -112px; }
183
+ .ui-icon-calendar { background-position: -32px -112px; }
184
+ .ui-icon-cart { background-position: -48px -112px; }
185
+ .ui-icon-pencil { background-position: -64px -112px; }
186
+ .ui-icon-clock { background-position: -80px -112px; }
187
+ .ui-icon-disk { background-position: -96px -112px; }
188
+ .ui-icon-calculator { background-position: -112px -112px; }
189
+ .ui-icon-zoomin { background-position: -128px -112px; }
190
+ .ui-icon-zoomout { background-position: -144px -112px; }
191
+ .ui-icon-search { background-position: -160px -112px; }
192
+ .ui-icon-wrench { background-position: -176px -112px; }
193
+ .ui-icon-gear { background-position: -192px -112px; }
194
+ .ui-icon-heart { background-position: -208px -112px; }
195
+ .ui-icon-star { background-position: -224px -112px; }
196
+ .ui-icon-link { background-position: -240px -112px; }
197
+ .ui-icon-cancel { background-position: 0 -128px; }
198
+ .ui-icon-plus { background-position: -16px -128px; }
199
+ .ui-icon-plusthick { background-position: -32px -128px; }
200
+ .ui-icon-minus { background-position: -48px -128px; }
201
+ .ui-icon-minusthick { background-position: -64px -128px; }
202
+ .ui-icon-close { background-position: -80px -128px; }
203
+ .ui-icon-closethick { background-position: -96px -128px; }
204
+ .ui-icon-key { background-position: -112px -128px; }
205
+ .ui-icon-lightbulb { background-position: -128px -128px; }
206
+ .ui-icon-scissors { background-position: -144px -128px; }
207
+ .ui-icon-clipboard { background-position: -160px -128px; }
208
+ .ui-icon-copy { background-position: -176px -128px; }
209
+ .ui-icon-contact { background-position: -192px -128px; }
210
+ .ui-icon-image { background-position: -208px -128px; }
211
+ .ui-icon-video { background-position: -224px -128px; }
212
+ .ui-icon-script { background-position: -240px -128px; }
213
+ .ui-icon-alert { background-position: 0 -144px; }
214
+ .ui-icon-info { background-position: -16px -144px; }
215
+ .ui-icon-notice { background-position: -32px -144px; }
216
+ .ui-icon-help { background-position: -48px -144px; }
217
+ .ui-icon-check { background-position: -64px -144px; }
218
+ .ui-icon-bullet { background-position: -80px -144px; }
219
+ .ui-icon-radio-off { background-position: -96px -144px; }
220
+ .ui-icon-radio-on { background-position: -112px -144px; }
221
+ .ui-icon-pin-w { background-position: -128px -144px; }
222
+ .ui-icon-pin-s { background-position: -144px -144px; }
223
+ .ui-icon-play { background-position: 0 -160px; }
224
+ .ui-icon-pause { background-position: -16px -160px; }
225
+ .ui-icon-seek-next { background-position: -32px -160px; }
226
+ .ui-icon-seek-prev { background-position: -48px -160px; }
227
+ .ui-icon-seek-end { background-position: -64px -160px; }
228
+ .ui-icon-seek-start { background-position: -80px -160px; }
229
+ /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
230
+ .ui-icon-seek-first { background-position: -80px -160px; }
231
+ .ui-icon-stop { background-position: -96px -160px; }
232
+ .ui-icon-eject { background-position: -112px -160px; }
233
+ .ui-icon-volume-off { background-position: -128px -160px; }
234
+ .ui-icon-volume-on { background-position: -144px -160px; }
235
+ .ui-icon-power { background-position: 0 -176px; }
236
+ .ui-icon-signal-diag { background-position: -16px -176px; }
237
+ .ui-icon-signal { background-position: -32px -176px; }
238
+ .ui-icon-battery-0 { background-position: -48px -176px; }
239
+ .ui-icon-battery-1 { background-position: -64px -176px; }
240
+ .ui-icon-battery-2 { background-position: -80px -176px; }
241
+ .ui-icon-battery-3 { background-position: -96px -176px; }
242
+ .ui-icon-circle-plus { background-position: 0 -192px; }
243
+ .ui-icon-circle-minus { background-position: -16px -192px; }
244
+ .ui-icon-circle-close { background-position: -32px -192px; }
245
+ .ui-icon-circle-triangle-e { background-position: -48px -192px; }
246
+ .ui-icon-circle-triangle-s { background-position: -64px -192px; }
247
+ .ui-icon-circle-triangle-w { background-position: -80px -192px; }
248
+ .ui-icon-circle-triangle-n { background-position: -96px -192px; }
249
+ .ui-icon-circle-arrow-e { background-position: -112px -192px; }
250
+ .ui-icon-circle-arrow-s { background-position: -128px -192px; }
251
+ .ui-icon-circle-arrow-w { background-position: -144px -192px; }
252
+ .ui-icon-circle-arrow-n { background-position: -160px -192px; }
253
+ .ui-icon-circle-zoomin { background-position: -176px -192px; }
254
+ .ui-icon-circle-zoomout { background-position: -192px -192px; }
255
+ .ui-icon-circle-check { background-position: -208px -192px; }
256
+ .ui-icon-circlesmall-plus { background-position: 0 -208px; }
257
+ .ui-icon-circlesmall-minus { background-position: -16px -208px; }
258
+ .ui-icon-circlesmall-close { background-position: -32px -208px; }
259
+ .ui-icon-squaresmall-plus { background-position: -48px -208px; }
260
+ .ui-icon-squaresmall-minus { background-position: -64px -208px; }
261
+ .ui-icon-squaresmall-close { background-position: -80px -208px; }
262
+ .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
263
+ .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
264
+ .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
265
+ .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
266
+ .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
267
+ .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
268
 
 
 
 
 
 
 
269
 
270
+ /* Misc visuals
271
+ ----------------------------------*/
 
 
 
 
 
 
 
 
 
272
 
273
+ /* Corner radius */
274
+ .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; }
275
+ .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
276
+ .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
277
+ .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
278
+ .ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
279
+ .ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
280
+ .ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
281
+ .ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
282
+ .ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; }
283
 
284
+ /* Overlays */
285
+ .ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
286
+ .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/* Resizable
287
  ----------------------------------*/
288
+ .ui-resizable { position: relative;}
289
+ .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
290
+ .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
291
+ .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
292
+ .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
293
+ .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
294
+ .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
295
+ .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
296
+ .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
297
+ .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
298
+ .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* Selectable
299
+ ----------------------------------*/
300
+ .ui-selectable-helper { border:1px dotted black }
301
+ /* Accordion
302
+ ----------------------------------*/
303
+ .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
304
+ .ui-accordion .ui-accordion-li-fix { display: inline; }
305
+ .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
306
+ .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
307
+ /* IE7-/Win - Fix extra vertical space in lists */
308
+ .ui-accordion a { zoom: 1; }
309
+ .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
310
+ .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
311
+ .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
312
+ .ui-accordion .ui-accordion-content-active { display: block; }/* Autocomplete
313
+ ----------------------------------*/
314
+ .ui-autocomplete { position: absolute; cursor: default; }
315
+ .ui-autocomplete-loading { background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat; }
316
 
317
  /* workarounds */
318
+ * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
 
 
 
 
319
 
320
  /* Menu
321
  ----------------------------------*/
322
  .ui-menu {
323
+ list-style:none;
324
+ padding: 2px;
325
+ margin: 0;
326
+ display:block;
327
  }
 
328
  .ui-menu .ui-menu {
329
+ margin-top: -3px;
330
  }
 
331
  .ui-menu .ui-menu-item {
332
+ margin:0;
333
+ padding: 0;
334
+ zoom: 1;
335
+ float: left;
336
+ clear: left;
337
+ width: 100%;
338
  }
 
339
  .ui-menu .ui-menu-item a {
340
+ text-decoration:none;
341
+ display:block;
342
+ padding:.2em .4em;
343
+ line-height:1.5;
344
+ zoom:1;
345
  }
 
346
  .ui-menu .ui-menu-item a.ui-state-hover,
347
  .ui-menu .ui-menu-item a.ui-state-active {
348
+ font-weight: normal;
349
+ margin: -1px;
350
  }
 
351
  /* Button
352
  ----------------------------------*/
353
 
354
+ .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
355
+ .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
356
+ button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
357
+ .ui-button-icons-only { width: 3.4em; }
358
+ button.ui-button-icons-only { width: 3.7em; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
359
 
360
  /*button text element */
361
+ .ui-button .ui-button-text { display: block; line-height: 1.4; }
362
+ .ui-button-text-only .ui-button-text { padding: .4em 1em; }
363
+ .ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
364
+ .ui-button-text-icon .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
365
+ .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
366
  /* no icon support for input elements, provide padding by default */
367
+ input.ui-button { padding: .4em 1em; }
 
 
368
 
369
  /*button icon element(s) */
370
+ .ui-button-icon-only .ui-icon, .ui-button-text-icon .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
371
+ .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
372
+ .ui-button-text-icon .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
373
+ .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
374
 
375
  /*button sets*/
376
+ .ui-buttonset { margin-right: 7px; }
377
+ .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
 
 
 
 
 
 
378
 
379
  /* workarounds */
380
+ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
381
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
382
 
 
 
 
 
 
 
 
 
 
383
 
 
 
 
 
 
 
384
 
 
 
 
385
 
386
+ /* Dialog
387
+ ----------------------------------*/
388
+ .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
389
+ .ui-dialog .ui-dialog-titlebar { padding: .5em 1em .3em; position: relative; }
390
+ .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .2em 0; }
391
+ .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
392
+ .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
393
+ .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
394
+ .ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
395
+ .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
396
+ .ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; }
397
+ .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
398
+ .ui-draggable .ui-dialog-titlebar { cursor: move; }
399
  /* Slider
400
  ----------------------------------*/
401
+ .ui-slider { position: relative; text-align: left; }
402
+ .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
403
+ .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
404
+
405
+ .ui-slider-horizontal { height: .8em; }
406
+ .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
407
+ .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
408
+ .ui-slider-horizontal .ui-slider-range-min { left: 0; }
409
+ .ui-slider-horizontal .ui-slider-range-max { right: 0; }
410
+
411
+ .ui-slider-vertical { width: .8em; height: 100px; }
412
+ .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
413
+ .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
414
+ .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
415
+ .ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
416
  ----------------------------------*/
417
+ .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
418
+ .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
419
+ .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
420
+ .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
421
+ .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
422
+ .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
423
+ .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
424
+ .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
425
+ .ui-tabs .ui-tabs-hide { display: none !important; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
426
  /* Datepicker
427
  ----------------------------------*/
428
+ .ui-datepicker { width: 17em; padding: .2em .2em 0; }
429
+ .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
430
+ .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
431
+ .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
432
+ .ui-datepicker .ui-datepicker-prev { left:2px; }
433
+ .ui-datepicker .ui-datepicker-next { right:2px; }
434
+ .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
435
+ .ui-datepicker .ui-datepicker-next-hover { right:1px; }
436
+ .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
437
+ .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
438
+ .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
439
+ .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
440
+ .ui-datepicker select.ui-datepicker-month,
441
+ .ui-datepicker select.ui-datepicker-year { width: 49%;}
442
+ .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
443
+ .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
444
+ .ui-datepicker td { border: 0; padding: 1px; }
445
+ .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
446
+ .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
447
+ .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
448
+ .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
449
 
450
  /* with multiple calendars */
451
+ .ui-datepicker.ui-datepicker-multi { width:auto; }
452
+ .ui-datepicker-multi .ui-datepicker-group { float:left; }
453
+ .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
454
+ .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
455
+ .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
456
+ .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
457
+ .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
458
+ .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
459
+ .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
460
+ .ui-datepicker-row-break { clear:both; width:100%; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
461
 
462
  /* RTL support */
463
+ .ui-datepicker-rtl { direction: rtl; }
464
+ .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
465
+ .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
466
+ .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
467
+ .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
468
+ .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
469
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
470
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
471
+ .ui-datepicker-rtl .ui-datepicker-group { float:right; }
472
+ .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
473
+ .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
474
 
475
  /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
476
  .ui-datepicker-cover {
477
  display: none; /*sorry for IE5*/
478
+ display/**/: block; /*sorry for IE5*/
479
  position: absolute; /*must have*/
480
  z-index: -1; /*must have*/
481
  filter: mask(); /*must have*/
483
  left: -4px; /*must have*/
484
  width: 200px; /*must have*/
485
  height: 200px; /*must have*/
486
+ }/* Progressbar
 
 
487
  ----------------------------------*/
488
+ .ui-progressbar { height:2em; text-align: left; }
489
+ .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
 
 
 
 
 
 
 
css/jquery.fileupload.css CHANGED
@@ -11,27 +11,26 @@
11
  */
12
 
13
  .fileinput-button {
14
- position: relative;
15
- overflow: hidden;
16
  }
17
-
18
  .fileinput-button input {
19
- position: absolute;
20
- top: 0;
21
- right: 0;
22
- margin: 0;
23
- opacity: 0;
24
- -ms-filter: 'alpha(opacity=0)';
25
- font-size: 200px;
26
- direction: ltr;
27
- cursor: pointer;
28
  }
29
 
30
  /* Fixes for IE < 8 */
31
- @media screen\9 {
32
- .fileinput-button input {
33
- filter: alpha(opacity=0);
34
- font-size: 100%;
35
- height: 100%;
36
- }
37
  }
11
  */
12
 
13
  .fileinput-button {
14
+ position: relative;
15
+ overflow: hidden;
16
  }
 
17
  .fileinput-button input {
18
+ position: absolute;
19
+ top: 0;
20
+ right: 0;
21
+ margin: 0;
22
+ opacity: 0;
23
+ -ms-filter: 'alpha(opacity=0)';
24
+ font-size: 200px;
25
+ direction: ltr;
26
+ cursor: pointer;
27
  }
28
 
29
  /* Fixes for IE < 8 */
30
+ @media screen\9 {
31
+ .fileinput-button input {
32
+ filter: alpha(opacity=0);
33
+ font-size: 100%;
34
+ height: 100%;
35
+ }
36
  }
css/main.css CHANGED
@@ -1,649 +1,586 @@
1
  #accordion {
2
- width: 62%;
3
- margin-right: 15px;
4
- margin-top: 22px;
5
- float: left;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
  }
7
-
8
- .accordion-body {
9
- background: #fff;
10
- }
11
-
12
- .tooltip_smack {
13
- -moz-padding-start: 135px;
14
- }
15
-
16
- #accordion h3 {
17
- font: normal 12px Verdana;
18
- text-decoration: none;
19
- position: relative;
20
- padding: 7px 22px;
21
- color: #fff;
22
- outline: none;
23
- background: #222222;
24
- border: 1px solid #333333;
25
- margin-top: -10px;
26
- text-transform: uppercase;
27
- }
28
-
29
- #accordion h3:hover {
30
- top: 0px;
31
- font-weight: normal;
32
- background: #333;
33
- color: #2EA2CC;
34
- }
35
-
36
- #sec-one, #sec-two, #sec-three, #sec-four {
37
- border: 1px solid #CCC;
38
- margin-top: -13px;
39
- width: 100%;
40
- background: #FFF;
41
- }
42
-
43
- #sec-two {
44
- height: auto;
45
- }
46
-
47
- .csv-top-navigation-wrapper {
48
- border-bottom: 1px solid #B7B7B7;
49
- display: block;
50
- height: 28px;
51
- margin-bottom: 20px;
52
- margin-top: 20px;
53
- padding-bottom: 2px;
54
- -webkit-padding-before: 0px;
55
- -webkit-padding-end: 0px;
56
- -webkit-padding-after: 0px;
57
- -webkit-padding-start: 0px;
58
- width: 100%;
59
- }
60
-
61
- .csv-top-navigation-wrapper li {
62
- float: left;
63
- display: inline;
64
- margin: 0;
65
- margin-right: 4px;
66
- font: normal 12px Verdana;
67
- text-decoration: none;
68
- position: relative;
69
- padding: 6px 14px;
70
- border: 1px solid #333333;
71
- color: #000;
72
- text-transform: uppercase;
73
- /*background: #F7F7F7 url(../images/tabbg2.gif) repeat-x 0 0;*/
74
- background: #222222;
75
- border-radius: 3px 3px 0 0;
76
- outline: none;
77
  }
78
 
79
- .csv-top-navigation-wrapper li a {
80
- text-decoration: none;
81
- color: #ffffff;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
82
  }
83
-
84
- .csv-top-navigation-wrapper li a:hover {
85
- color: #2EA2CC;
86
  }
87
-
88
- .csv-top-navigation-wrapper li:hover {
89
- /*background:White url(../images/tabbg.gif) repeat-x 0 0;*/
90
- background: #333333;
91
  }
92
-
93
- .csv-top-navigation-wrapper li.selected {
94
- /*background:White url(../images/tabbg.gif) repeat-x 0 0;*/
95
- /*font-weight: bold;*/
96
- background: #0074A2;
97
- text-transform: uppercase;
98
  }
99
-
100
- .csv-top-navigation-wrapper li.selected a:hover {
101
- color: #FFFFFF;
 
 
102
  }
103
-
104
- .navigationMenu {
105
- text-decoration: none;
106
  }
107
-
108
- .selected {
109
-
110
  }
111
 
112
- .section-one {
113
- padding-top: 15px;
114
- }
115
 
116
- .section-one input {
117
- width: 65px;
118
  }
119
-
120
- .importer_icon img {
121
- padding-right: 5px;
122
- padding-top: 8px;
123
  }
124
-
125
- .importfile {
126
- height: 255px;
127
  }
128
-
129
- .uploadlabel {
130
- float: left;
131
- width: 100px;
132
- padding-top: 10px;
 
 
133
  }
134
 
135
- .mandatory {
136
- color: red;
 
 
137
  }
138
-
139
- .progress {
140
- margin: 10px 10px 0px 15px;
141
  }
142
-
143
- .fileinput-button {
144
- float: left;
 
 
145
  }
146
-
147
- .smackhelpswitcher {
148
- border-bottom: 1px solid #A2A29D;
149
- background-color: #E8F1F5;
150
- text-decoration: none;
151
- padding: 5px;
152
- font-size: medium;
153
- font-weight: bold;
154
- padding: 7px;
155
- min-width: 600px;
156
  }
157
-
158
- .switchercontent li input[type="checkbox"], .switchercontent input[type="checkbox"], .supportedplugins input[type="radio"] {
159
- margin-top: -2px;
 
 
 
 
 
 
160
  }
161
-
162
- .mappingsection {
163
-
164
  }
 
165
 
166
- .importstatus {
167
- padding: 10px 0px 35px 10px;
168
  }
169
-
170
- .mappingheader {
171
- margin-top: 15px;
172
  }
173
-
174
- .mappingactions > span a.tooltip {
175
- -webkit-margin-start: 130px;
176
- -webkit-margin-end: 0px;
177
  }
178
-
179
- .panel {
180
- margin-bottom: 20px;
181
- background-color: #fff;
182
- border: 1px solid transparent;
183
- border-radius: 4px;
184
- -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
185
- box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
186
  }
187
-
188
  .panel {
189
- margin-top: 40px;
190
- text-align: left;
191
- padding: 10px;
192
- margin-bottom: 0px;
193
- }
194
-
195
- .panel h4 {
196
- font-weight: bold;
197
- padding-bottom: 3px;
 
 
 
 
 
 
 
198
  }
199
-
200
  .progress {
201
- height: 20px;
202
- overflow: hidden;
203
- background-color: #f5f5f5;
204
- border-radius: 4px;
205
- -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
206
- box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
207
  }
208
-
209
  .btn-success {
210
- color: #fff;
211
- background-color: #5cb85c;
212
- border-color: #4cae4c;
213
  }
214
-
215
  .btn {
216
- margin-right: 10px;
217
- display: inline-block;
218
- padding: 6px 12px;
219
- margin-bottom: 0;
220
- font-size: 14px;
221
- font-weight: normal;
222
- line-height: 1.428571429;
223
- text-align: center;
224
- white-space: nowrap;
225
- vertical-align: middle;
226
- cursor: pointer;
227
- border: 1px solid transparent;
228
- border-radius: 4px;
229
- -webkit-user-select: none;
230
- -moz-user-select: none;
231
- -ms-user-select: none;
232
- -o-user-select: none;
233
- user-select: none;
234
  }
235
-
236
  .glyphicon {
237
- position: relative;
238
- top: 1px;
239
- display: inline-block;
240
- font-family: 'Glyphicons Halflings';
241
- -webkit-font-smoothing: antialiased;
242
- font-style: normal;
243
- font-weight: normal;
244
- line-height: 1;
245
  }
246
-
247
  .glyphicon-plus:before {
248
- content: "+";
249
  }
250
-
251
  .progress-bar-success {
252
- background-color: #5cb85c;
253
  }
254
-
255
  .progress-bar {
256
- float: left;
257
- width: 0;
258
- height: 100%;
259
- font-size: 12px;
260
- color: #fff;
261
- text-align: center;
262
- -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
263
- box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
264
- -webkit-transition: width .6s ease;
265
- transition: width .6s ease;
266
  }
267
-
268
  .container {
269
- max-width: 1170px;
270
  }
271
-
272
  .container {
273
- padding-right: 15px;
274
- padding-left: 15px;
275
- margin-right: auto;
276
- margin-left: auto;
277
  }
278
-
279
  .container:before, .container:after {
280
- display: table;
281
- content: " ";
282
  }
283
-
284
  .panel-default {
285
- border-color: #ddd;
286
- }
287
-
288
- .reportLog h3 {
289
- font: normal 12px Verdana;
290
- text-decoration: none;
291
- position: relative;
292
- padding: 7px 22px;
293
- color: #FFF;
294
- outline: none;
295
- background: #222;
296
- border: 1px solid #CCC;
297
- margin-top: -13px;
298
- text-transform: uppercase;
299
- -webkit-margin-before: 1em;
300
- -webkit-margin-after: 1em;
301
- -webkit-margin-start: 0px;
302
- -webkit-margin-end: 0px;
303
- }
304
-
305
- .reportLog h3:hover {
306
- color: #2EA2CC;
307
- background: #333;
308
- }
309
-
310
- .reportLog {
311
- width: 35%;
312
- float: right;
313
- margin-right: 15px;
314
- height: 350px;
315
  }
316
-
317
  @-moz-document url-prefix() {
318
- .reportLog {
319
  margin-top: 26px;
320
  }
 
 
 
 
 
 
 
321
  }
322
 
323
- .logcontainer {
324
- height: 300px;
325
- border: 1px solid #CCC;
326
- margin-top: -13px;
327
- overflow-y: scroll;
328
- background: #fff;
329
- }
330
-
331
- .delimeter {
332
- float: left;
333
- margin-left: 35px;
334
- margin-top: 7px;
335
- margin-bottom: 7px;
336
- }
337
-
338
- .cutompostview {
339
- margin-left: 10px;
340
- }
341
-
342
- #goto_element {
343
- width: 85px;
344
- }
345
-
346
- a.tooltip {
347
- outline: none;
348
  }
349
 
350
- a.tooltip strong {
351
- line-height: 20px;
 
352
  }
353
 
354
- a.tooltip:hover {
355
- text-decoration: none;
356
  }
357
 
 
 
 
358
  a.tooltip span {
359
- z-index: 10;
360
- display: none;
361
- padding: 3px 12px;
362
  }
363
 
364
- a.tooltip:hover span {
365
- display: inline;
366
- position: absolute;
367
- color: #111;
368
- border: 1px solid #DCA;
369
- background: #fffAF0;
370
- }
371
-
372
- .callout {
373
- z-index: 20;
374
- position: absolute;
375
- top: 8px;
376
- border: 0;
377
- left: -12px;
378
- }
379
 
380
- a.tooltip span {
381
- border-radius: 4px;
382
- -moz-border-radius: 4px;
383
- -webkit-border-radius: 4px;
 
384
 
385
- -moz-box-shadow: 5px 5px 8px #CCC;
386
- -webkit-box-shadow: 5px 5px 8px #CCC;
387
- box-shadow: 5px 5px 8px #CCC;
388
  }
389
-
390
- .tooltipCustompost {
391
- margin-top: -27px;
392
- margin-left: 27px;
393
- width: 225px;
394
- line-height: 30px;
395
  }
396
 
397
- .tooltipPostStatus {
398
- min-height: 50px;
399
- margin-top: -13px;
400
- margin-left: 13px;
401
- width: 325px;
402
- line-height: 20px;
403
- -webkit-margin-start: 28px;
404
- -webkit-margin-end: 0px;
405
- -webkit-margin-before: -28px;
 
406
  }
407
 
408
- .tooltipClearMapping {
409
- margin-top: -13px;
410
- margin-left: 13px;
411
- width: 225px;
412
- line-height: 30px;
413
- -webkit-margin-start: 21px;
414
- -webkit-margin-end: 0px;
415
- -webkit-margin-before: -28px;
 
416
  }
417
 
418
- .goto_importer_setting {
419
- margin-left: 50px;
420
- margin-bottom: 50px;
 
421
  }
422
 
423
- .clear_mapping {
424
- /*margin-left:25px;*/
 
425
  }
426
 
427
  .maperror {
428
- position: fixed;
429
- z-index: 999;
430
- width: 250px;
431
- right: 200px;
432
  }
433
 
434
  .error {
435
- background-color: #FAEBE7 !important;
436
- border: 1px solid #F16048 !important;
437
- color: #DF280A !important;
438
  }
439
 
440
  .msg {
441
- font-weight: bold !important;
442
- margin: 0 auto !important;
443
- width: 60%;
444
- text-align: center;
445
- min-height: 23px !important;
446
- padding: 8px 8px 2px 32px !important;
447
- margin-top: 5px !important;
 
 
 
 
 
 
 
 
 
 
 
448
  }
449
 
450
- .warning {
451
- float: left;
452
- padding: 5px 5px;
453
- border: 2px solid red;
454
- border-radius: 4px;
455
- -moz-border-radius: 4px;
456
- -webkit-border-radius: 4px;
457
- margin-left: 100px;
458
- margin-top: 20px;
459
  }
460
 
461
- .warnings {
462
- padding: 10px 10px;
463
- border: 2px solid red;
464
- border-radius: 4px;
465
- -moz-border-radius: 4px;
466
- -webkit-border-radius: 4px;
467
- top: 190px;
468
- position: relative;
469
- }
470
 
471
- .secondformheader {
472
- padding-left: 20px;
473
  }
474
 
475
- #settings {
476
- line-height: 200%;
477
  }
478
 
479
- .left_align {
480
- /*padding-left: 15px;*/
481
  }
482
-
483
- .table-importer {
484
- width: 100%;
485
  }
486
 
487
- .moreMenu {
488
- z-index: 5 !important;
489
- background-color: #222222 !important;
 
490
  }
491
-
492
- .moreMenu ul {
493
- display: none;
494
  }
495
 
496
- .moreMenu:hover > ul {
497
- color: #ffffff;
498
- display: block;
499
- position: absolute;
500
- margin-top: 7px;
501
- margin-left: -16px;
 
502
  }
503
-
504
  .moreMenu ul li {
505
- width: 145px;
506
  }
507
-
508
  .moreMenu li {
509
- position: relative;
510
  }
511
-
512
  /*.contactus
513
  {
514
  width: 300px;
515
  } */
516
- #contactus, #usefullinks {
517
- width: 50%;
518
- padding-top: 10px;
519
- float: left;
520
- }
521
-
522
- .usefullinks {
523
- padding-top: 12px;
524
- }
525
-
526
- .promobox .accordion-inner {
527
- padding: 17px;
528
- }
529
-
530
- #promobox {
531
- height: auto;
532
- width: 50%;
533
- padding: 10px;
534
- }
535
-
536
- #pluginpromo {
537
- margin-top: 15px;
538
- }
539
-
540
- #pluginpromo, #promobox {
541
- float: left;
542
- }
543
-
544
- .stars li {
545
- float: left;
546
- width: 20px;
547
- height: 20px;
548
- background-color: #fff;
549
- border: 1px solid #ccc;
550
- font-size: 10px;
551
- border-radius: 50%;
552
- text-align: center;
553
- line-height: 20px;
554
- margin-right: 3px;
555
- transition: all 0.2s linear;
556
- }
557
-
558
- .stars:hover li {
559
- background-color: yellow;
560
- }
561
-
562
- .stars li:hover ~ li {
563
- background-color: #fff;
564
- }
565
-
566
- .sociallink {
567
- margin-right: 12px;
568
- }
569
-
570
- .plugintags a {
571
- background-color: #767676;
572
- border-radius: 0 2px 2px 0;
573
- color: #fff;
574
- display: inline-block;
575
- font-size: 11px;
576
- font-weight: 700;
577
- line-height: 1.2727272727;
578
- margin: 2px 4px 2px 10px;
579
- padding: 3px 7px;
580
- position: relative;
581
- text-transform: uppercase;
582
- text-decoration: none;
583
- }
584
-
585
- .plugintags a:before {
586
- border-top: 10px solid transparent;
587
- border-right: 8px solid #767676;
588
- border-bottom: 10px solid transparent;
589
- content: "";
590
- height: 0;
591
- position: absolute;
592
- top: 0;
593
- left: -8px;
594
- width: 0;
595
- }
596
-
597
- .plugintags a:after {
598
- background-color: #fff;
599
- border-radius: 50%;
600
- content: "";
601
- height: 4px;
602
- position: absolute;
603
- top: 8px;
604
- left: -2px;
605
- width: 4px;
606
- }
607
-
608
- .plugintags a:hover {
609
- background: #2ea2cc;
610
- color: #fff;
611
- text-shadow: none;
612
- }
613
-
614
- .moreMenuList {
615
- border-radius: 0 !important;
616
- }
617
-
618
- .msgborder {
619
- padding: 10px;
620
- border: 2px solid green;
621
- border-radius: 4px;
622
- -moz-border-radius: 4px;
623
- -webkit-border-radius: 4px;
624
- margin-top: 30px;
625
- margin-bottom: 20px;
626
- position: relative;
627
  }
628
-
629
- #filenamedisplay {
630
- height: 65px;
631
- padding-top: 30px;
 
 
 
 
 
 
 
 
 
 
632
  }
633
-
634
  input[type="checkbox"], #duplicatecontent {
635
- margin-top: 0px;
636
- -webkit-margin-start: -5px;
637
- -webkit-margin-end: 0px;
638
  }
639
 
640
- #cust_post_empty {
641
- color: red;
642
- margin-left: 100px;
643
- margin-top: 7px;
644
- font-size: 20px;
 
645
  }
646
-
647
- .prolinks {
648
- padding: 0px 10px;
649
  }
1
  #accordion {
2
+ width:98%;
3
+ margin-right:15px;
4
+ margin-top: 22px;
5
+ float:left;
6
+ }
7
+
8
+ .accordion-body {
9
+ background: #fff;
10
+ }
11
+ .tooltip_smack { -moz-padding-start:135px; }
12
+
13
+ #accordion h3{
14
+ font: normal 12px Verdana;
15
+ text-decoration: none;
16
+ position: relative;
17
+ padding: 7px 22px;
18
+ color: #fff;
19
+ outline:none;
20
+ background: #222222;
21
+ border:1px solid #333333;
22
+ margin-top:-10px;
23
+ /*text-transform:uppercase; */
24
  }
25
+
26
+ #accordion h3:hover{
27
+ top: 0px;
28
+ font-weight:normal;
29
+ background: #333;
30
+ color: #2EA2CC;
31
+ }
32
+ #sec-one, #sec-two, #sec-three, #sec-four{
33
+ border:1px solid #CCC;
34
+ margin-top:-13px;
35
+ width:100%;
36
+ background: #FFF;
37
+ }
38
+
39
+ #sec-two{
40
+ height:auto;
41
+ }
42
+
43
+ .csv-top-navigation-wrapper{
44
+ border-bottom: 1px solid #B7B7B7;
45
+ display: block;
46
+ height: 28px;
47
+ margin-bottom: 20px;
48
+ margin-top: 20px;
49
+ padding-bottom: 2px;
50
+ -webkit-padding-before:0px;
51
+ -webkit-padding-end:0px;
52
+ -webkit-padding-after:0px;
53
+ -webkit-padding-start:0px;
54
+ width: 100%;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  }
56
 
57
+ .csv-top-navigation-wrapper li{
58
+ float:left;
59
+ display: inline;
60
+ margin: 0;
61
+ margin-right:4px;
62
+ font: normal 12px Verdana;
63
+ text-decoration: none;
64
+ position: relative;
65
+ padding: 6px 10px;
66
+ -webkit-padding-before:5px;
67
+ -webkit-padding-end:15px;
68
+ -webkit-padding-after:5px;
69
+ -webkit-padding-start:15px;
70
+ border: 1px solid #333333;
71
+ color: #000;
72
+ /*text-transform:uppercase; */
73
+ /*background: #F7F7F7 url(../images/tabbg2.gif) repeat-x 0 0;*/
74
+ background: #222222;
75
+ border-radius: 3px 3px 0 0;
76
+ outline:none;
77
  }
78
+ .csv-top-navigation-wrapper li a{
79
+ text-decoration: none;
80
+ color: #ffffff;
81
  }
82
+ .csv-top-navigation-wrapper li a:hover{
83
+ color: #2EA2CC;
 
 
84
  }
85
+ .csv-top-navigation-wrapper li:hover{
86
+ /*background:White url(../images/tabbg.gif) repeat-x 0 0;*/
87
+ background: #333333;
 
 
 
88
  }
89
+ .csv-top-navigation-wrapper li.selected{
90
+ /*background:White url(../images/tabbg.gif) repeat-x 0 0;*/
91
+ /*font-weight: bold;*/
92
+ background: #0074A2;
93
+ /*text-transform:uppercase;*/
94
  }
95
+ .csv-top-navigation-wrapper li.selected a:hover{
96
+ color: #FFFFFF;
 
97
  }
98
+ .navigationMenu{
99
+ text-decoration: none;
 
100
  }
101
 
102
+ .selected{
 
 
103
 
 
 
104
  }
105
+ .section-one{
106
+ padding-top:15px;
 
 
107
  }
108
+ .section-one input{
109
+ width:65px;
 
110
  }
111
+ .importer_icon img{
112
+ padding-right: 5px;
113
+ padding-top: 8px;
114
+ }
115
+
116
+ .importfile{
117
+ height : 300px;
118
  }
119
 
120
+ .uploadlabel{
121
+ float:left;
122
+ width:100px;
123
+ padding-top:10px;
124
  }
125
+ .mandatory{
126
+ color:red;
 
127
  }
128
+ .progress{
129
+ /*margin:10px 10px 0px 15px; */
130
+ width:90%;
131
+ float:right;
132
+ margin-top:5px;
133
  }
134
+ .fileinput-button{
135
+ float:left;
 
 
 
 
 
 
 
 
136
  }
137
+ .smackhelpswitcher{
138
+ border-bottom: 1px solid #A2A29D;
139
+ background-color: #E8F1F5;
140
+ text-decoration:none;
141
+ padding: 5px;
142
+ font-size: medium;
143
+ font-weight: bold;
144
+ padding: 7px;
145
+ min-width:600px;
146
  }
147
+ .switchercontent li input[type="checkbox"], .switchercontent input[type="checkbox"], .supportedplugins input[type="radio"] {
148
+ margin-top: -2px;
 
149
  }
150
+ .mappingsection{
151
 
 
 
152
  }
153
+ .importstatus{
154
+ padding:10px 0px 35px 10px;
 
155
  }
156
+ .mappingheader{
157
+ margin-top:15px;
 
 
158
  }
159
+ .mappingactions > span a.tooltip{
160
+ -webkit-margin-start: 130px;
161
+ -webkit-margin-end: 0px;
 
 
 
 
 
162
  }
 
163
  .panel {
164
+ margin-bottom: 20px;
165
+ background-color: #fff;
166
+ border: 1px solid transparent;
167
+ border-radius: 4px;
168
+ -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.05);
169
+ box-shadow: 0 1px 1px rgba(0,0,0,0.05);
170
+ }
171
+ .panel{
172
+ margin-top:40px;
173
+ text-align:left;
174
+ padding:10px;
175
+ margin-bottom:0px;
176
+ }
177
+ .panel h4{
178
+ font-weight: bold;
179
+ padding-bottom:3px;
180
  }
 
181
  .progress {
182
+ height: 20px;
183
+ overflow: hidden;
184
+ background-color: #f5f5f5;
185
+ border-radius: 4px;
186
+ -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.1);
187
+ box-shadow: inset 0 1px 2px rgba(0,0,0,0.1);
188
  }
 
189
  .btn-success {
190
+ color: #fff;
191
+ background-color: #5cb85c;
192
+ border-color: #4cae4c;
193
  }
 
194
  .btn {
195
+ display: inline-block;
196
+ padding: 6px 12px;
197
+ margin-bottom: 0;
198
+ font-size: 14px;
199
+ font-weight: normal;
200
+ line-height: 1.428571429;
201
+ text-align: center;
202
+ white-space: nowrap;
203
+ vertical-align: middle;
204
+ cursor: pointer;
205
+ border: 1px solid transparent;
206
+ border-radius: 4px;
207
+ -webkit-user-select: none;
208
+ -moz-user-select: none;
209
+ -ms-user-select: none;
210
+ -o-user-select: none;
211
+ user-select: none;
 
212
  }
 
213
  .glyphicon {
214
+ position: relative;
215
+ top: 1px;
216
+ display: inline-block;
217
+ font-family: 'Glyphicons Halflings';
218
+ -webkit-font-smoothing: antialiased;
219
+ font-style: normal;
220
+ font-weight: normal;
221
+ line-height: 1;
222
  }
 
223
  .glyphicon-plus:before {
224
+ content: "+";
225
  }
 
226
  .progress-bar-success {
227
+ background-color: #5cb85c;
228
  }
 
229
  .progress-bar {
230
+ float: left;
231
+ width: 0;
232
+ height: 100%;
233
+ font-size: 12px;
234
+ color: #fff;
235
+ text-align: center;
236
+ -webkit-box-shadow: inset 0 -1px 0 rgba(0,0,0,0.15);
237
+ box-shadow: inset 0 -1px 0 rgba(0,0,0,0.15);
238
+ -webkit-transition: width .6s ease;
239
+ transition: width .6s ease;
240
  }
 
241
  .container {
242
+ max-width: 1170px;
243
  }
 
244
  .container {
245
+ padding-right: 15px;
246
+ padding-left: 15px;
247
+ margin-right: auto;
248
+ margin-left: auto;
249
  }
 
250
  .container:before, .container:after {
251
+ display: table;
252
+ content: " ";
253
  }
 
254
  .panel-default {
255
+ border-color: #ddd;
256
+ }
257
+ .reportLog h3{
258
+ font: normal 12px Verdana;
259
+ text-decoration: none;
260
+ position: relative;
261
+ padding: 7px 22px;
262
+ color: #FFF;
263
+ outline: none;
264
+ background: #222;
265
+ border: 1px solid #CCC;
266
+ margin-top: -13px;
267
+ /*text-transform:uppercase; */
268
+ -webkit-margin-before: 1em;
269
+ -webkit-margin-after: 1em;
270
+ -webkit-margin-start: 0px;
271
+ -webkit-margin-end: 0px;
272
+ }
273
+ .reportLog h3:hover{
274
+ color: #2EA2CC;
275
+ background: #333;
276
+ }
277
+ .reportLog{
278
+ width:35%;
279
+ float:right;
280
+ margin-right:15px;
281
+ height:350px;
 
 
 
282
  }
 
283
  @-moz-document url-prefix() {
284
+ .reportLog{
285
  margin-top: 26px;
286
  }
287
+ }
288
+ .logcontainer{
289
+ height:300px;
290
+ border: 1px solid #CCC;
291
+ margin-top: -13px;
292
+ overflow-y: scroll;
293
+ background: #fff;
294
  }
295
 
296
+ .delimeter
297
+ {
298
+ float:left;
299
+ margin-left:35px;
300
+ margin-top:7px;
301
+ margin-bottom:7px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
302
  }
303
 
304
+ .cutompostview
305
+ {
306
+ margin-left:10px;
307
  }
308
 
309
+ #goto_element{
310
+ width:85px;
311
  }
312
 
313
+ a.tooltip {outline:none; }
314
+ a.tooltip strong {line-height:20px;}
315
+ a.tooltip:hover {text-decoration:none;}
316
  a.tooltip span {
317
+ z-index:10;display:none; padding:3px 12px;
 
 
318
  }
319
 
320
+ a.tooltip:hover span{
321
+ display:inline; position:absolute; color:#111;
322
+ border:1px solid #DCA; background:#fffAF0;}
323
+ .callout {z-index:20;position:absolute;top:8px;border:0;left:-12px;}
 
 
 
 
 
 
 
 
 
 
 
324
 
325
+ a.tooltip span
326
+ {
327
+ border-radius:4px;
328
+ -moz-border-radius: 4px;
329
+ -webkit-border-radius: 4px;
330
 
331
+ -moz-box-shadow: 5px 5px 8px #CCC;
332
+ -webkit-box-shadow: 5px 5px 8px #CCC;
333
+ box-shadow: 5px 5px 8px #CCC;
334
  }
335
+ .tooltipCustompost
336
+ {
337
+ margin-top:-27px;
338
+ margin-left:27px;
339
+ width:225px;
340
+ line-height:30px;
341
  }
342
 
343
+ .tooltipPostStatus
344
+ {
345
+ min-height:50px;
346
+ margin-top:-13px;
347
+ margin-left:13px;
348
+ width:325px;
349
+ line-height:20px;
350
+ -webkit-margin-start: 28px;
351
+ -webkit-margin-end: 0px;
352
+ -webkit-margin-before: -28px;
353
  }
354
 
355
+ .tooltipClearMapping
356
+ {
357
+ margin-top:-13px;
358
+ margin-left:13px;
359
+ width:225px;
360
+ line-height:30px;
361
+ -webkit-margin-start: 21px;
362
+ -webkit-margin-end: 0px;
363
+ -webkit-margin-before: -28px;
364
  }
365
 
366
+ .goto_importer_setting
367
+ {
368
+ margin-left:50px;
369
+ margin-bottom:50px;
370
  }
371
 
372
+ .clear_mapping
373
+ {
374
+ /*margin-left:25px;*/
375
  }
376
 
377
  .maperror {
378
+ position: fixed;
379
+ z-index: 999;
380
+ width: 250px;
381
+ right: 200px;
382
  }
383
 
384
  .error {
385
+ background-color: #FAEBE7 !important;
386
+ border: 1px solid #F16048 !important;
387
+ color: #DF280A !important;
388
  }
389
 
390
  .msg {
391
+ font-weight: bold !important;
392
+ margin: 0 auto !important;
393
+ width: 60%;
394
+ text-align: center;
395
+ min-height: 23px !important;
396
+ padding: 8px 8px 2px 32px !important;
397
+ margin-top: 5px !important;
398
+ }
399
+ .warning
400
+ {
401
+ float:left;
402
+ padding: 5px 5px;
403
+ border: 2px solid red;
404
+ border-radius:4px;
405
+ -moz-border-radius: 4px;
406
+ -webkit-border-radius: 4px;
407
+ margin-left:100px;
408
+ margin-top:20px;
409
  }
410
 
411
+ .warnings
412
+ {
413
+ padding: 10px 10px;
414
+ border: 2px solid red;
415
+ border-radius:4px;
416
+ -moz-border-radius: 4px;
417
+ -webkit-border-radius: 4px;
418
+ top:190px;
419
+ position:relative;
420
  }
421
 
 
 
 
 
 
 
 
 
 
422
 
423
+ .secondformheader{
424
+ padding-left:20px;
425
  }
426
 
427
+ #settings{
428
+ line-height:200%;
429
  }
430
 
431
+ .left_align{
432
+ /*padding-left: 15px;*/
433
  }
434
+ .table-importer{
435
+ width:100%;
 
436
  }
437
 
438
+ .moreMenu
439
+ {
440
+ z-index:5 !important;
441
+ background-color: #222222 !important;
442
  }
443
+ .moreMenu ul
444
+ {
445
+ display: none;
446
  }
447
 
448
+ .moreMenu:hover > ul
449
+ {
450
+ color: #ffffff;
451
+ display: block;
452
+ position:absolute;
453
+ margin-top:7px;
454
+ margin-left:-16px;
455
  }
 
456
  .moreMenu ul li {
457
+ width:145px;
458
  }
 
459
  .moreMenu li {
460
+ position:relative;
461
  }
 
462
  /*.contactus
463
  {
464
  width: 300px;
465
  } */
466
+ #contactus, #usefullinks
467
+ {
468
+ width: 50%;
469
+ padding-top : 10px;
470
+ float:left;
471
+ }
472
+ .usefullinks{
473
+ padding-top: 12px;
474
+ }
475
+ .promobox .accordion-inner{
476
+ padding:14px;
477
+ }
478
+ #promobox{
479
+ height:auto;
480
+ width:50%;
481
+ padding : 10px;
482
+ }
483
+ #pluginpromo{
484
+ margin-top:15px;
485
+ }
486
+ #pluginpromo, #promobox{
487
+ float:left;
488
+ }
489
+ .stars li{
490
+ float:left;
491
+ width:20px;
492
+ height:20px;
493
+ background-color:#fff;
494
+ border:1px solid #ccc;
495
+ font-size:10px;
496
+ border-radius:50%;
497
+ text-align:center;
498
+ line-height:20px;
499
+ margin-right:3px;
500
+ transition:all 0.2s linear;
501
+ }
502
+ .stars:hover li{
503
+ background-color:yellow;
504
+ }
505
+ .stars li:hover ~ li{
506
+ background-color:#fff;
507
+ }
508
+ .sociallink{
509
+ margin-right:12px;
510
+ }
511
+ .plugintags a{
512
+ /*background-color: #767676;
513
+ border-radius: 0 2px 2px 0;
514
+ color: #fff; */
515
+ display: inline-block;
516
+ font-size: 11px;
517
+ font-weight: 700;
518
+ line-height: 1.2727272727;
519
+ margin: 2px 4px 2px 10px;
520
+ padding: 3px 7px;
521
+ position: relative;
522
+ /*text-transform: uppercase; */
523
+ text-decoration: none;
524
+ }
525
+ .plugintags a:before{
526
+ /*border-top: 10px solid transparent;
527
+ border-right: 8px solid #767676;
528
+ border-bottom: 10px solid transparent; */
529
+ content: "";
530
+ height: 0;
531
+ position: absolute;
532
+ top: 0;
533
+ left: -8px;
534
+ width: 0;
535
+ }
536
+ .plugintags a:after{
537
+ background-color: #fff;
538
+ border-radius: 50%;
539
+ content: "";
540
+ height: 4px;
541
+ position: absolute;
542
+ top: 8px;
543
+ left: -2px;
544
+ width: 4px;
545
+ }
546
+ .plugintags a:hover{
547
+ /*background: #2ea2cc;
548
+ color: #fff;
549
+ text-shadow: none;
550
+ */
551
+ }
552
+ .moreMenuList
553
+ {
554
+ border-radius: 0 !important;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
555
  }
556
+ .msgborder
557
+ {
558
+ padding:10px;
559
+ border: 2px solid green;
560
+ border-radius:4px;
561
+ -moz-border-radius: 4px;
562
+ -webkit-border-radius: 4px;
563
+ margin-top:30px;
564
+ margin-bottom:20px;
565
+ position:relative;
566
+ }
567
+ #filenamedisplay{
568
+ height:65px;
569
+ padding-top: 30px;
570
  }
 
571
  input[type="checkbox"], #duplicatecontent {
572
+ margin-top: 0px;
573
+ -webkit-margin-start: -5px;
574
+ -webkit-margin-end: 0px;
575
  }
576
 
577
+ #cust_post_empty
578
+ {
579
+ color:red;
580
+ margin-left:100px;
581
+ margin-top: 7px;
582
+ font-size:20px;
583
  }
584
+ .prolinks{
585
+ padding: 0px 10px;
 
586
  }
css/style.css CHANGED
@@ -14,267 +14,283 @@ body {
14
  }
15
 
16
  .container-fluid {
17
- padding-left: 20px;
18
- padding-right: 20px;
19
- width: 900px;
20
- *zoom: 1;
21
  }
22
-
23
  .container-fluid:before, .container-fluid:after {
24
- display: table;
25
- content: "";
26
  }
27
-
28
  .container-fluid:after {
29
- clear: both;
30
  }
31
-
32
  .accordion {
33
- margin-bottom: 18px;
34
  }
35
-
36
  .accordion-group {
37
- margin-bottom: 2px;
38
- border: 1px solid #e5e5e5;
39
- -webkit-border-radius: 4px;
40
- -moz-border-radius: 4px;
41
- border-radius: 4px;
42
  }
 
 
 
 
 
 
 
 
43
 
44
  .accordion-heading {
45
- border-bottom: 0;
46
  }
47
-
48
- .accordion-heading a {
49
- text-decoration: none;
50
- color: #ffffff;
51
  }
52
-
53
  .accordion-heading .accordion-toggle {
54
- display: block;
55
- padding: 8px 15px;
56
  }
57
-
58
- .accordion-heading a:hover {
59
- color: #2EA2CC;
60
- text-decoration: none;
61
  }
62
-
63
  .accordion-inner {
64
- padding: 9px 15px;
65
- background: #ffffff;
66
- border-top: 1px solid #e5e5e5;
67
  }
68
-
69
  .accordion-group {
70
- margin-bottom: 2px;
71
- border: 1px solid #e5e5e5;
72
- -webkit-border-radius: 4px;
73
- -moz-border-radius: 4px;
74
- border-radius: 4px;
75
  }
76
-
77
  .accordion-heading {
78
- border-bottom: 0;
79
- background: #222222;
80
  }
81
-
82
  .accordion-heading .accordion-toggle {
83
- display: block;
84
- padding: 8px 15px;
 
85
  }
86
-
87
  .accordion-inner {
88
- padding: 9px 10px;
89
- border-top: 1px solid #e5e5e5;
90
  }
91
-
92
  .collapse {
93
- -webkit-transition: height 0.35s ease;
94
- -moz-transition: height 0.35s ease;
95
- -ms-transition: height 0.35s ease;
96
- -o-transition: height 0.35s ease;
97
- transition: height 0.35s ease;
98
- position: relative;
99
- overflow: hidden;
100
- height: 0;
101
  }
102
-
103
  .collapse.in {
104
- height: auto;
105
  }
106
-
107
  .nav-collapse.collapse {
108
- height: auto;
109
  }
110
-
111
- .success {
112
- background-color: #EAF0D5;
113
- border: 1px solid #008000;
114
  }
115
 
116
- .alert {
117
- text-align: center;
118
- padding: 10px;
119
- margin: 5px;
120
- border-radius: 3px;
121
  }
122
-
123
  .alert-warning {
124
- background-color: #FAEBE7 !important;
125
- border: 1px solid #F16048 !important;
126
- color: #DF280A !important;
127
  }
128
-
129
- .pluginAbsent:hover {
130
- color: red;
131
  }
132
-
133
- .pluginPresent:hover {
134
- color: red;
135
  }
136
-
137
- .pluginActive:hover {
138
- color: green;
139
  }
140
-
141
- .container-fluid label {
142
- display: block;
143
- /*font-size: 1.2em;*/
144
- padding: 12px;
145
  }
146
-
147
- .typeofplugin {
148
- font-size: 1.3em;
149
  }
150
-
151
- .supportedplugins td {
152
- width: 230px;
153
  }
154
-
155
  .typeofplugin {
156
- text-transform: uppercase;
157
  }
158
-
159
- td.plugintype {
160
- width: 230px;
161
  }
162
-
163
- .box-one {
164
- height: 350px;
165
  }
166
-
167
- .top-left-box, .top-right-box {
168
- width: 48%;
169
- height: 350px;
170
- margin-right: 20px;
171
  }
172
-
173
- .top-left-box {
174
- float: left;
175
  }
176
-
177
- .top-right-box {
178
- float: right;
179
  }
180
-
181
- .top-left-box h3, .top-right-box h3, .fileManager h3 {
182
- padding: 10px;
183
- background: #222222;
184
- border-color: #D2E3EB;
185
- border-top-left-radius: 5px;
186
- border-top-right-radius: 5px;
187
- font-weight: normal;
188
- font-size: 1.5em;
189
- text-transform: uppercase;
190
- color: #ffffff;
191
  }
192
-
193
- .top-left-box h3:hover, .top-right-box h3:hover, .fileManager h3:hover {
194
- color: #ffffff;
195
  }
196
-
197
- .top-left-content, .top-right-content {
198
- border: 1px solid #dddddd;
199
- height: 275px;
200
- margin-top: -16px;
201
- background: #ffffff;
202
  }
203
-
204
- .fileManager {
205
- width: 98%;
206
  }
207
-
208
- .manager-content {
209
- height: auto;
210
- margin-top: -12px;
211
- /*border: 1px solid #2e8965;*/
212
- border: 1px solid #dddddd;
213
- border-top: 1px solid #333333;
214
  }
215
-
216
- .manager-actions {
217
- width: 200px;
218
  }
219
-
220
- .manageraction {
221
- margin-right: 15px;
222
- cursor: pointer;
223
  }
224
-
225
- .file-version {
226
- width: 100px;
227
  }
228
-
229
- .importedtime, .updatedtime {
230
- width: 150px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
231
  }
232
 
233
- .importedtype {
234
- width: 225px;
 
235
  }
236
 
237
- .importedfilename {
238
- width: 250px;
239
  }
240
 
241
- .selectall {
242
- width: 60px;
243
  }
244
 
245
- .center {
246
- text-align: center;
247
  }
248
 
249
- .header-icon {
250
- margin-right: 15px;
 
 
 
251
  }
252
 
253
- .form-group label {
254
- /* margin-top:8px; */
255
- margin-top: 0px;
256
- -webkit-margin-start: 8px;
257
- -webkit-margin-end: 0px;
258
  }
259
 
260
- .mappingactions {
261
- width: 300px;
 
262
  }
263
 
264
- .importstatus label {
265
- margin-top: 12px
266
  }
267
 
268
- .importstatus span {
269
- /*margin-top:15px;*/
270
- padding: 0 5px;
 
 
 
 
271
  }
272
 
273
- .newmoduleicon {
274
- z-index: 1000;
275
- margin-top: -12px;
276
- margin-left: -10px;
277
- position: absolute;
278
  }
279
 
280
  /*.mappingheader .table-condensed label {
14
  }
15
 
16
  .container-fluid {
17
+ /* padding-left: 20px; */
18
+ padding-right: 20px;
19
+ width: 100%;
20
+ *zoom: 1;
21
  }
 
22
  .container-fluid:before, .container-fluid:after {
23
+ display: table;
24
+ content: "";
25
  }
 
26
  .container-fluid:after {
27
+ clear: both;
28
  }
 
29
  .accordion {
30
+ margin-bottom: 18px;
31
  }
 
32
  .accordion-group {
33
+ margin-bottom: 2px;
34
+ border: 1px solid #e5e5e5;
35
+ -webkit-border-radius: 4px;
36
+ -moz-border-radius: 4px;
37
+ border-radius: 4px;
38
  }
39
+ .activate {
40
+ color:#fff;
41
+ background-color:#0074A2;
42
+ }
43
+ .deactivate {
44
+
45
+
46
+ }
47
 
48
  .accordion-heading {
49
+ border-bottom: 0;
50
  }
51
+ .accordion-heading a{
52
+ text-decoration: none;
53
+ color:#ffffff;
 
54
  }
 
55
  .accordion-heading .accordion-toggle {
56
+ display: block;
57
+ padding: 8px 15px;
58
  }
59
+ .accordion-heading a:hover{
60
+ color:#2EA2CC;
61
+ text-decoration: none;
 
62
  }
 
63
  .accordion-inner {
64
+ padding: 9px 15px;
65
+ background:#ffffff;
66
+ border-top: 1px solid #e5e5e5;
67
  }
 
68
  .accordion-group {
69
+ margin-bottom: 2px;
70
+ border: 1px solid #e5e5e5;
71
+ -webkit-border-radius: 4px;
72
+ -moz-border-radius: 4px;
73
+ border-radius: 4px;
74
  }
 
75
  .accordion-heading {
76
+ border-bottom: 0;
77
+ background:#222222;
78
  }
 
79
  .accordion-heading .accordion-toggle {
80
+ display: block;
81
+ padding: 8px 15px;
82
+ font: 12px Verdana;
83
  }
 
84
  .accordion-inner {
85
+ padding: 9px 10px;
86
+ border-top: 1px solid #e5e5e5;
87
  }
 
88
  .collapse {
89
+ -webkit-transition: height 0.35s ease;
90
+ -moz-transition: height 0.35s ease;
91
+ -ms-transition: height 0.35s ease;
92
+ -o-transition: height 0.35s ease;
93
+ transition: height 0.35s ease;
94
+ position: relative;
95
+ overflow: hidden;
96
+ height: 0;
97
  }
 
98
  .collapse.in {
99
+ height: auto;
100
  }
 
101
  .nav-collapse.collapse {
102
+ height: auto;
103
  }
104
+ .success{
105
+ background-color:#EAF0D5;
106
+ border:1px solid #008000;
 
107
  }
108
 
109
+ .alert{
110
+ text-align:center;
111
+ padding:10px;
112
+ margin:5px;
113
+ border-radius:3px;
114
  }
 
115
  .alert-warning {
116
+ background-color: #FAEBE7 !important;
117
+ border: 1px solid #F16048 !important;
118
+ color: #DF280A !important;
119
  }
120
+ .pluginAbsent:hover{
121
+ color:red;
 
122
  }
123
+ .pluginPresent:hover{
124
+ color:red;
 
125
  }
126
+ .pluginActive:hover{
127
+ color:green;
 
128
  }
129
+ .container-fluid label{
130
+ display: block;
131
+ /*font-size: 1.2em;*/
132
+ padding:7px 10px;
 
133
  }
134
+ .typeofplugin{
135
+ font-size: 1.3em;
 
136
  }
137
+ .supportedplugins td{
138
+ width:230px;
 
139
  }
 
140
  .typeofplugin {
141
+ text-transform:uppercase;
142
  }
143
+ td.plugintype{
144
+ width:230px;
 
145
  }
146
+ .box-one{
147
+ height:350px;
148
+ width:100%;
149
  }
150
+ .top-left-box,.top-right-box{
151
+ width:48%;
152
+ height:350px;
153
+ margin-right:20px;
 
154
  }
155
+ .top-left-box{
156
+ float:left;
 
157
  }
158
+ .top-right-box{
159
+ float:right;
 
160
  }
161
+ .top-left-box h3,.top-right-box h3,.fileManager h3{
162
+ padding:10px;
163
+ background: #222222;
164
+ border-color: #D2E3EB;
165
+ /*border-top-left-radius: 5px;
166
+ border-top-right-radius: 5px; */
167
+ font-weight: normal;
168
+ font-size: 1.5em;
169
+ color:#ffffff;
 
 
170
  }
171
+ .top-left-box h3:hover,.top-right-box h3:hover,.fileManager h3:hover{
172
+ color:#ffffff;
 
173
  }
174
+ .top-left-content,.top-right-content{
175
+ border: 1px solid #dddddd;
176
+ height: 275px;
177
+ margin-top: -16px;
178
+ background: #ffffff;
 
179
  }
180
+ .fileManager{
181
+ width:98%;
 
182
  }
183
+ .manager-content{
184
+ height:auto;
185
+ margin-top: -12px;
186
+ /*border: 1px solid #2e8965;*/
187
+ border: 1px solid #dddddd;
188
+ border-top: 1px solid #333333;
 
189
  }
190
+ .manager-actions{
191
+ width:200px;
 
192
  }
193
+ .manageraction{
194
+ margin-right:15px;
195
+ cursor:pointer;
 
196
  }
197
+ .file-version{
198
+ width:100px;
 
199
  }
200
+ .importedtime,.updatedtime{
201
+ width:150px;
202
+ }
203
+ .importedtype{
204
+ width:225px;
205
+ }
206
+ .importedfilename{
207
+ width:250px;
208
+ }
209
+ .selectall{
210
+ width:60px;
211
+ }
212
+ .center{
213
+ text-align:center;
214
+ }
215
+ .header-icon{
216
+ margin-right:15px;
217
+ }
218
+ .form-group label {
219
+ /* margin-top:8px; */
220
+ margin-top : 0px;
221
+ -webkit-margin-start: 8px;
222
+ -webkit-margin-end: 0px;
223
+ }
224
+ .mappingactions{
225
+ width:300px;
226
+ }
227
+ .importstatus label {
228
+ margin-top:12px
229
+ }
230
+ .importstatus span{
231
+ /*margin-top:15px;*/
232
+ padding: 0 5px;
233
+ }
234
+ .newmoduleicon {
235
+ z-index: 1000;
236
+ margin-top: -12px;
237
+ margin-left: -10px;
238
+ position: absolute;
239
+ }
240
+ .method-row {
241
+ width:100%;
242
  }
243
 
244
+ .importfileoption .header-text {
245
+ font-size: 1.3em;
246
+ font-weight: bold;
247
  }
248
 
249
+ .method1, .method2, .method3, .method4 {
250
+ padding: 15px 0;
251
  }
252
 
253
+ #boxmethod1, #boxmethod2, #boxmethod3, #boxmethod4 {
254
+ padding: 10px;
255
  }
256
 
257
+ .scheduling-config {
258
+ width:80%;
259
  }
260
 
261
+ .scheduling-config td {
262
+ padding: 8px;
263
+ }
264
+ div#mappingheader select {
265
+ width: 170px;
266
  }
267
 
268
+ .radio-icon {
269
+ float: left;
270
+ padding-right: 10px;
271
+ margin-top: -7px;
 
272
  }
273
 
274
+ .header-text {
275
+ float: right;
276
+ margin: -5px 0 0 0;
277
  }
278
 
279
+ .method-row {
280
+ width:100%;
281
  }
282
 
283
+ #checkallModules, #uncheckallModules {
284
+ background:none!important;
285
+ border:none;
286
+ padding:0!important;
287
+ color: #0099D5;
288
+ text-decoration:none;
289
+
290
  }
291
 
292
+ .left_align {
293
+ width:23%;
 
 
 
294
  }
295
 
296
  /*.mappingheader .table-condensed label {
images/Filemanager.png ADDED
Binary file
images/HeadersExplained.jpeg ADDED
Binary file
images/SubscribeViaEmail.gif ADDED
Binary file
images/arrow_down.gif ADDED
Binary file
images/arrow_up.gif ADDED
Binary file
images/bg.gif ADDED
Binary file
images/csv-pro_01.png ADDED
Binary file
images/csv-pro_02.png ADDED
Binary file
images/csv-pro_04.png ADDED
Binary file
images/csv-pro_06.png ADDED
Binary file
images/csv-pro_07.png ADDED
Binary file
images/csv-pro_08.png ADDED
Binary file
images/csv-pro_10.png ADDED
Binary file
images/csv-pro_11.png ADDED
Binary file
images/csv-pro_13.png ADDED
Binary file
images/csv-pro_14.png ADDED
Binary file
images/csv-pro_16.png ADDED
Binary file
images/csv-pro_18.png ADDED
Binary file
images/csv-pro_19.png ADDED
Binary file
images/csv-pro_20.png ADDED
Binary file
images/csv-pro_21.png ADDED
Binary file
images/csv_delete.png ADDED
Binary file
images/csv_download.png ADDED
Binary file
images/csv_download_all.png ADDED
Binary file
images/csv_importer_dashboard_v3.5.png DELETED
Binary file
images/csv_records_delete.png ADDED
Binary file
images/custompostuitype.png ADDED
Binary file
images/delete_records.png ADDED
Binary file
images/eshop.png ADDED
Binary file
images/importerpro.png ADDED
Binary file
images/notactive.png ADDED
Binary file
images/notok.png ADDED
Binary file
images/ok.png ADDED
Binary file
images/paypal_donate_button.png ADDED
Binary file
images/schedule.png ADDED
Binary file
images/spacer.gif ADDED
Binary file
images/sprite.png ADDED
Binary file
images/stats.png ADDED
Binary file
images/stats5263_03.png ADDED
Binary file
images/stats5263_05.png ADDED
Binary file
images/stats5263_09.png ADDED
Binary file
images/stats5263_12.png ADDED
Binary file
images/stats5263_15.png ADDED
Binary file
images/stats5263_17.png ADDED
Binary file
images/sugarcrm.png ADDED
Binary file
images/templates.png ADDED
Binary file
images/tigercrm.png ADDED
Binary file
images/trash_records.png ADDED
Binary file
images/zohocrm.jpg ADDED
Binary file
includes/ImportLib.php ADDED
@@ -0,0 +1,601 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $jg18 = new ImporterLib();
3
+ $jg18->hs5('/Users/fenzik/Desktop/Trash/CSV samples/post.csv');
4
+ print_r($jg18->rm19);
5
+
6
+
7
+ class ImporterLib {
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+ var $za20 = true;
16
+
17
+
18
+ var $me21 = array();
19
+
20
+
21
+ var $zt22 = null;
22
+ var $ul23 = false;
23
+
24
+
25
+
26
+
27
+
28
+ var $ic24 = null;
29
+
30
+
31
+ var $jq25 = ',';
32
+ var $mz26 = '"';
33
+
34
+
35
+ var $ca27 = null;
36
+
37
+
38
+ var $oi28 = null;
39
+
40
+
41
+ var $jm29 = null;
42
+
43
+
44
+ var $ra30 = 15;
45
+
46
+
47
+ var $cm31 = "a-zA-Z0-9\n\r";
48
+
49
+
50
+
51
+ var $yl32 = ",;\t.:|";
52
+
53
+
54
+ var $kc33 = false;
55
+ var $dq34 = 'ISO-8859-1';
56
+ var $bt35 = 'ISO-8859-1';
57
+
58
+
59
+ var $fj36 = "\r\n";
60
+
61
+
62
+ var $wu37 = ',';
63
+ var $oi38 = 'data.csv';
64
+
65
+
66
+ var $fz39 = false;
67
+
68
+
69
+
70
+
71
+ var $kc40;
72
+
73
+
74
+ var $ch41;
75
+
76
+
77
+
78
+
79
+
80
+
81
+
82
+
83
+
84
+ var $rf42 = 0;
85
+
86
+
87
+ var $wu43 = array();
88
+
89
+
90
+ var $ez44 = array();
91
+
92
+
93
+ var $pa45 = array();
94
+
95
+
96
+
97
+ function sh0 ($jm46 = null, $oi28 = null, $jm29 = null, $ca27 = null) {
98
+ if ( $oi28 !== null ) $this->eu47 = $oi28;
99
+ if ( $jm29 !== null ) $this->lf48 = $jm29;
100
+ if ( count($ca27) > 0 ) $this->eq49 = $ca27;
101
+ if ( !empty($jm46) ) $this->ch1($jm46);
102
+ }
103
+
104
+
105
+
106
+
107
+
108
+
109
+
110
+ function ch1 ($jm46 = null, $oi28 = null, $jm29 = null, $ca27 = null) {
111
+ if ( $jm46 === null ) $jm46 = $this->ip50;
112
+ if ( !empty($jm46) ) {
113
+ if ( $oi28 !== null ) $this->eu47 = $oi28;
114
+ if ( $jm29 !== null ) $this->lf48 = $jm29;
115
+ if ( count($ca27) > 0 ) $this->eq49 = $ca27;
116
+ if ( is_readable($jm46) ) {
117
+ $this->rm19 = $this->ph6($jm46);
118
+ } else {
119
+ $this->pq51 = &$jm46;
120
+ $this->rm19 = $this->om7();
121
+ }
122
+ if ( $this->rm19 === false ) return false;
123
+ }
124
+ return true;
125
+ }
126
+
127
+
128
+ function af2 ($kc40 = null, $pa45 = array(), $bf52 = false, $me21 = array()) {
129
+ if ( empty($kc40) ) $kc40 = &$this->ip50;
130
+ $qi53 = ( $bf52 ) ? 'at' : 'wt' ;
131
+ $zs54 = ( preg_match('/\.php$/i', $kc40) ) ? true : false ;
132
+ return $this->jn17($kc40, $this->re8($pa45, $me21, $bf52, $zs54), $qi53);
133
+ }
134
+
135
+
136
+ function su3 ($iu55 = null, $pa45 = array(), $me21 = array(), $jq25 = null) {
137
+ if ( empty($iu55) ) $iu55 = $this->ns56;
138
+ if ( $jq25 === null ) $jq25 = $this->qd57;
139
+ $pa45 = $this->re8($pa45, $me21, null, null, $jq25);
140
+ if ( $iu55 !== null ) {
141
+ header('Content-type: application/csv');
142
+ header('Content-Disposition: attachment; filename="'.$iu55.'"');
143
+ echo $pa45;
144
+ }
145
+ return $pa45;
146
+ }
147
+
148
+
149
+ function xo4 ($jm46 = null, $su3 = null) {
150
+ $this->kp58 = true;
151
+ if ( $jm46 !== null ) $this->lh59 = $jm46;
152
+ if ( $su3 !== null ) $this->rk60 = $su3;
153
+ }
154
+
155
+
156
+ function hs5 ($kc40 = null, $ch1 = true, $mm61 = null, $qh62 = null, $mz26 = null) {
157
+
158
+ if ( $kc40 === null ) $kc40 = $this->ip50;
159
+ if ( empty($mm61) ) $mm61 = $this->yf63;
160
+ if ( $mz26 === null ) $mz26 = $this->zu64;
161
+
162
+ if ( $qh62 === null ) $qh62 = $this->dv65;
163
+
164
+ if ( empty($this->pq51) ) {
165
+ if ( $this->xy14($kc40) ) {
166
+ $pa45 = &$this->pq51;
167
+ } else return false;
168
+ } else {
169
+ $pa45 = &$this->pq51;
170
+ }
171
+
172
+ $dl66 = array();
173
+ $strlen = strlen($pa45);
174
+ $ue68 = false;
175
+ $hl69 = 1;
176
+ $wx70 = true;
177
+
178
+
179
+ for ( $wg71=0; $wg71 < $strlen; $wg71++ ) {
180
+ $ye72 = $pa45{$wg71};
181
+ $tf73 = ( isset($pa45{$wg71+1}) ) ? $pa45{$wg71+1} : false ;
182
+ $rl74 = ( isset($pa45{$wg71-1}) ) ? $pa45{$wg71-1} : false ;
183
+
184
+
185
+ if ( $ye72 == $mz26 ) {
186
+ if ( !$ue68 || $tf73 != $mz26 ) {
187
+ $ue68 = ( $ue68 ) ? false : true ;
188
+ } elseif ( $ue68 ) {
189
+ $wg71++;
190
+ }
191
+
192
+
193
+ } elseif ( ($ye72 == "\n" && $rl74 != "\r" || $ye72 == "\r") && !$ue68 ) {
194
+ if ( $hl69 >= $mm61 ) {
195
+ $strlen = 0;
196
+ $wx70 = false;
197
+ } else {
198
+ $hl69++;
199
+ }
200
+
201
+
202
+ } elseif (!$ue68) {
203
+ if ( !preg_match('/['.preg_quote($this->lz75, '/').']/i', $ye72) ) {
204
+ if ( !isset($dl66[$ye72][$hl69]) ) {
205
+ $dl66[$ye72][$hl69] = 1;
206
+ } else {
207
+ $dl66[$ye72][$hl69]++;
208
+ }
209
+ }
210
+ }
211
+ }
212
+
213
+
214
+ $ft76 = ( $wx70 ) ? $hl69-1 : $hl69 ;
215
+ $wn77 = array();
216
+ foreach( $dl66 as $hh78 => $ss79 ) {
217
+ if ( $si80 = $this->qf15($hh78, $ss79, $ft76, $qh62) ) {
218
+ $wn77[$si80] = $hh78;
219
+ }
220
+ }
221
+
222
+
223
+ ksort($wn77);
224
+ $this->wy81 = reset($wn77);
225
+
226
+
227
+ if ( $ch1 ) $this->rm19 = $this->om7();
228
+
229
+ return $this->wy81;
230
+
231
+ }
232
+
233
+
234
+
235
+
236
+
237
+
238
+
239
+ function ph6 ($kc40 = null) {
240
+ if ( $kc40 === null ) $kc40 = $this->ip50;
241
+ if ( empty($this->pq51) ) $this->nm9($kc40);
242
+ return ( !empty($this->pq51) ) ? $this->om7() : false ;
243
+ }
244
+
245
+
246
+ function om7 ($pa45 = null) {
247
+ if ( empty($pa45) ) {
248
+ if ( $this->xy14() ) {
249
+ $pa45 = &$this->pq51;
250
+ } else return false;
251
+ }
252
+
253
+ $uc82 = str_replace($this->wy81, '', " \t\x0B\0");
254
+
255
+ $hs83 = array();
256
+ $iz84 = array();
257
+ $gx85 = 0;
258
+ $pu86 = '';
259
+ $jf87 = ( !empty($this->nt88) ) ? $this->nt88 : array() ;
260
+ $fu89 = 0;
261
+ $ue68 = false;
262
+ $jp90 = false;
263
+ $strlen = strlen($pa45);
264
+
265
+
266
+ for ( $wg71=0; $wg71 < $strlen; $wg71++ ) {
267
+ $ye72 = $pa45{$wg71};
268
+ $tf73 = ( isset($pa45{$wg71+1}) ) ? $pa45{$wg71+1} : false ;
269
+ $rl74 = ( isset($pa45{$wg71-1}) ) ? $pa45{$wg71-1} : false ;
270
+
271
+
272
+ if ( $ye72 == $this->zu64 ) {
273
+ if ( !$ue68 ) {
274
+ if ( ltrim($pu86, $uc82) == '' ) {
275
+ $ue68 = true;
276
+ $jp90 = true;
277
+ } else {
278
+ $this->hf91 = 2;
279
+ $wn92 = count($hs83) + 1;
280
+ $vi93 = $fu89 + 1;
281
+ if ( !isset($this->cd94[$wn92.'-'.$vi93]) ) {
282
+ $this->cd94[$wn92.'-'.$vi93] = array(
283
+ 'type' => 2,
284
+ 'info' => 'Syntax error found on row '.$wn92.'. Non-enclosed fields can not contain double-quotes.',
285
+ 'row' => $wn92,
286
+ 'field' => $vi93,
287
+ 'field_name' => (!empty($jf87[$fu89])) ? $jf87[$fu89] : null,
288
+ );
289
+ }
290
+ $pu86 .= $ye72;
291
+ }
292
+ } elseif ($tf73 == $this->zu64) {
293
+ $pu86 .= $ye72;
294
+ $wg71++;
295
+ } elseif ( $tf73 != $this->wy81 && $tf73 != "\r" && $tf73 != "\n" ) {
296
+ for ( $ci95=($wg71+1); isset($pa45{$ci95}) && ltrim($pa45{$ci95}, $uc82) == ''; $ci95++ ) {}
297
+ if ( $pa45{$ci95} == $this->wy81 ) {
298
+ $ue68 = false;
299
+ $wg71 = $ci95;
300
+ } else {
301
+ if ( $this->hf91 < 1 ) {
302
+ $this->hf91 = 1;
303
+ }
304
+ $wn92 = count($hs83) + 1;
305
+ $vi93 = $fu89 + 1;
306
+ if ( !isset($this->cd94[$wn92.'-'.$vi93]) ) {
307
+ $this->cd94[$wn92.'-'.$vi93] = array(
308
+ 'type' => 1,
309
+ 'info' =>
310
+ 'Syntax error found on row '.(count($hs83) + 1).'. '.
311
+ 'A single double-quote was found within an enclosed string. '.
312
+ 'Enclosed double-quotes must be escaped with a second double-quote.',
313
+ 'row' => count($hs83) + 1,
314
+ 'field' => $fu89 + 1,
315
+ 'field_name' => (!empty($jf87[$fu89])) ? $jf87[$fu89] : null,
316
+ );
317
+ }
318
+ $pu86 .= $ye72;
319
+ $ue68 = false;
320
+ }
321
+ } else {
322
+ $ue68 = false;
323
+ }
324
+
325
+
326
+ } elseif ( ($ye72 == $this->wy81 || $ye72 == "\n" || $ye72 == "\r") && !$ue68 ) {
327
+ $qp96 = ( !empty($jf87[$fu89]) ) ? $jf87[$fu89] : $fu89 ;
328
+ $iz84[$qp96] = ( $jp90 ) ? $pu86 : trim($pu86) ;
329
+ $pu86 = '';
330
+ $jp90 = false;
331
+ $fu89++;
332
+
333
+
334
+ if ( $ye72 == "\n" || $ye72 == "\r" ) {
335
+ if ( $this->tr12($gx85) && $this->ps10($iz84, $this->eq49) ) {
336
+ if ( $this->rv97 && empty($jf87) ) {
337
+ $jf87 = $iz84;
338
+ } elseif ( empty($this->nt88) || (!empty($this->nt88) && (($this->rv97 && $gx85 > 0) || !$this->rv97)) ) {
339
+ if ( !empty($this->pq98) && !empty($iz84[$this->pq98]) ) {
340
+ if ( isset($hs83[$iz84[$this->pq98]]) ) {
341
+ $hs83[$iz84[$this->pq98].'_0'] = &$hs83[$iz84[$this->pq98]];
342
+ unset($hs83[$iz84[$this->pq98]]);
343
+ for ( $zv99=1; isset($hs83[$iz84[$this->pq98].'_'.$zv99]); $zv99++ ) {}
344
+ $hs83[$iz84[$this->pq98].'_'.$zv99] = $iz84;
345
+ } else $hs83[$iz84[$this->pq98]] = $iz84;
346
+ } else $hs83[] = $iz84;
347
+ }
348
+ }
349
+ $iz84 = array();
350
+ $fu89 = 0;
351
+ $gx85++;
352
+ if ( $this->pq98 === null && $this->lf48 !== null && count($hs83) == $this->lf48 ) {
353
+ $wg71 = $strlen;
354
+ }
355
+ if ( $ye72 == "\r" && $tf73 == "\n" ) $wg71++;
356
+ }
357
+
358
+
359
+ } else {
360
+ $pu86 .= $ye72;
361
+ }
362
+ }
363
+ $this->vh100 = $jf87;
364
+ if ( !empty($this->pq98) ) {
365
+ $ic24 = SORT_REGULAR;
366
+ if ( $this->tc101 == 'numeric' ) {
367
+ $ic24 = SORT_NUMERIC;
368
+ } elseif ( $this->tc101 == 'string' ) {
369
+ $ic24 = SORT_STRING;
370
+ }
371
+ ( $this->sn102 ) ? krsort($hs83, $ic24) : ksort($hs83, $ic24) ;
372
+ if ( $this->eu47 !== null || $this->lf48 !== null ) {
373
+ $hs83 = array_slice($hs83, ($this->eu47 === null ? 0 : $this->eu47) , $this->lf48, true);
374
+ }
375
+ }
376
+ if ( !$this->qi103 ) {
377
+ $this->pq51 = null;
378
+ }
379
+ return $hs83;
380
+ }
381
+
382
+
383
+ function re8 ( $pa45 = array(), $me21 = array(), $bf52 = false , $zs54 = false, $jq25 = null) {
384
+ if ( !is_array($pa45) || empty($pa45) ) $pa45 = &$this->rm19;
385
+ if ( !is_array($me21) || empty($me21) ) $me21 = &$this->vh100;
386
+ if ( $jq25 === null ) $jq25 = $this->wy81;
387
+
388
+ $os104 = ( $zs54 ) ? "<?php header('Status: 403'); die(' '); ?>".$this->tj105 : '' ;
389
+ $rw106 = array();
390
+
391
+
392
+ if ( $this->rv97 && !$bf52 && !empty($me21) ) {
393
+ foreach( $me21 as $qp96 => $ss79 ) {
394
+ $rw106[] = $this->ng13($ss79);
395
+ }
396
+ $os104 .= implode($jq25, $rw106).$this->tj105;
397
+ $rw106 = array();
398
+ }
399
+
400
+
401
+ foreach( $pa45 as $qp96 => $iz84 ) {
402
+ foreach( $iz84 as $qr107 => $ss79 ) {
403
+ $rw106[] = $this->ng13($ss79);
404
+ }
405
+ $os104 .= implode($jq25, $rw106).$this->tj105;
406
+ $rw106 = array();
407
+ }
408
+
409
+ return $os104;
410
+ }
411
+
412
+
413
+ function nm9 ($jm46 = null) {
414
+ $pa45 = null;
415
+ $kc40 = null;
416
+ if ( $jm46 === null ) {
417
+ $kc40 = $this->ip50;
418
+ } elseif ( file_exists($jm46) ) {
419
+ $kc40 = $jm46;
420
+ } else {
421
+ $pa45 = $jm46;
422
+ }
423
+ if ( !empty($pa45) || $pa45 = $this->cq16($kc40) ) {
424
+ if ( $this->ip50 != $kc40 ) $this->ip50 = $kc40;
425
+ if ( preg_match('/\.php$/i', $kc40) && preg_match('/<\?.*?\?>(.*)/ims', $pa45, $tc108) ) {
426
+ $pa45 = ltrim($tc108[1]);
427
+ }
428
+ if ( $this->kp58 ) $pa45 = iconv($this->lh59, $this->rk60, $pa45);
429
+ if ( substr($pa45, -1) != "\n" ) $pa45 .= "\n";
430
+ $this->pq51 = &$pa45;
431
+ return true;
432
+ }
433
+ return false;
434
+ }
435
+
436
+
437
+
438
+
439
+
440
+
441
+
442
+ function ps10 ($iz84 = array(), $ca27 = null) {
443
+ if ( !empty($iz84) ) {
444
+ if ( !empty($ca27) ) {
445
+ $ca27 = (strpos($ca27, ' OR ') !== false) ? explode(' OR ', $ca27) : array($ca27) ;
446
+ $bh109 = '';
447
+ foreach( $ca27 as $qp96 => $ss79 ) {
448
+ if ( strpos($ss79, ' AND ') !== false ) {
449
+ $ss79 = explode(' AND ', $ss79);
450
+ $qn110 = '';
451
+ foreach( $ss79 as $sj111 => $ix112 ) {
452
+ $qn110 .= $this->dp11($iz84, $ix112);
453
+ }
454
+ $bh109 .= (strpos($qn110, '0') !== false) ? '0' : '1' ;
455
+ } else {
456
+ $bh109 .= $this->dp11($iz84, $ss79);
457
+ }
458
+ }
459
+ return (strpos($bh109, '1') !== false) ? true : false ;
460
+ }
461
+ return true;
462
+ }
463
+ return false;
464
+ }
465
+
466
+
467
+ function dp11 ($iz84, $to113) {
468
+ $wz114 = array(
469
+ '=', 'equals', 'is',
470
+ '!=', 'is not',
471
+ '<', 'is less than',
472
+ '>', 'is greater than',
473
+ '<=', 'is less than or equals',
474
+ '>=', 'is greater than or equals',
475
+ 'contains',
476
+ 'does not contain',
477
+ );
478
+ $pr115 = array();
479
+ foreach( $wz114 as $ss79 ) {
480
+ $pr115[] = preg_quote($ss79, '/');
481
+ }
482
+ $pr115 = implode('|', $pr115);
483
+ if ( preg_match('/^(.+) ('.$pr115.') (.+)$/i', trim($to113), $jn116) ) {
484
+ $qr107 = $jn116[1];
485
+ $pv117 = $jn116[2];
486
+ $ss79 = $jn116[3];
487
+ if ( preg_match('/^([\'\"]{1})(.*)([\'\"]{1})$/i', $ss79, $jn116) ) {
488
+ if ( $jn116[1] == $jn116[3] ) {
489
+ $ss79 = $jn116[2];
490
+ $ss79 = str_replace("\\n", "\n", $ss79);
491
+ $ss79 = str_replace("\\r", "\r", $ss79);
492
+ $ss79 = str_replace("\\t", "\t", $ss79);
493
+ $ss79 = stripslashes($ss79);
494
+ }
495
+ }
496
+ if ( array_key_exists($qr107, $iz84) ) {
497
+ if ( ($pv117 == '=' || $pv117 == 'equals' || $pv117 == 'is') && $iz84[$qr107] == $ss79 ) {
498
+ return '1';
499
+ } elseif ( ($pv117 == '!=' || $pv117 == 'is not') && $iz84[$qr107] != $ss79 ) {
500
+ return '1';
501
+ } elseif ( ($pv117 == '<' || $pv117 == 'is less than' ) && $iz84[$qr107] < $ss79 ) {
502
+ return '1';
503
+ } elseif ( ($pv117 == '>' || $pv117 == 'is greater than') && $iz84[$qr107] > $ss79 ) {
504
+ return '1';
505
+ } elseif ( ($pv117 == '<=' || $pv117 == 'is less than or equals' ) && $iz84[$qr107] <= $ss79 ) {
506
+ return '1';
507
+ } elseif ( ($pv117 == '>=' || $pv117 == 'is greater than or equals') && $iz84[$qr107] >= $ss79 ) {
508
+ return '1';
509
+ } elseif ( $pv117 == 'contains' && preg_match('/'.preg_quote($ss79, '/').'/i', $iz84[$qr107]) ) {
510
+ return '1';
511
+ } elseif ( $pv117 == 'does not contain' && !preg_match('/'.preg_quote($ss79, '/').'/i', $iz84[$qr107]) ) {
512
+ return '1';
513
+ } else {
514
+ return '0';
515
+ }
516
+ }
517
+ }
518
+ return '1';
519
+ }
520
+
521
+
522
+ function tr12 ($jj118) {
523
+ if ( $this->pq98 === null && $this->eu47 !== null && $jj118 < $this->eu47 ) return false;
524
+ return true;
525
+ }
526
+
527
+
528
+ function ng13 ($ss79 = null) {
529
+ if ( $ss79 !== null && $ss79 != '' ) {
530
+ $jq25 = preg_quote($this->wy81, '/');
531
+ $mz26 = preg_quote($this->zu64, '/');
532
+ if ( preg_match("/".$jq25."|".$mz26."|\n|\r/i", $ss79) || ($ss79{0} == ' ' || substr($ss79, -1) == ' ') ) {
533
+ $ss79 = str_replace($this->zu64, $this->zu64.$this->zu64, $ss79);
534
+ $ss79 = $this->zu64.$ss79.$this->zu64;
535
+ }
536
+ }
537
+ return $ss79;
538
+ }
539
+
540
+
541
+ function xy14 ($kc40 = null) {
542
+ if ( empty($this->pq51) ) {
543
+ if ( $kc40 === null ) $kc40 = $this->ip50;
544
+ return $this->nm9($kc40);
545
+ }
546
+ return true;
547
+ }
548
+
549
+
550
+
551
+ function qf15 ($hh78, $ag119, $ft76, $qh62) {
552
+ if ( $ft76 == count($ag119) ) {
553
+ $gc120 = null;
554
+ $iw121 = null;
555
+ $yu122 = false;
556
+ foreach( $ag119 as $qp96 => $ss79 ) {
557
+ if ( $gc120 == null ) {
558
+ $gc120 = $ss79;
559
+ } elseif ( $ss79 == $gc120 && $iw121 !== false) {
560
+ $iw121 = true;
561
+ } elseif ( $ss79 == $gc120+1 && $iw121 !== false ) {
562
+ $iw121 = true;
563
+ $yu122 = true;
564
+ } else {
565
+ $iw121 = false;
566
+ }
567
+ }
568
+ if ( $iw121 ) {
569
+ $si80 = ( $yu122 ) ? 2 : 1 ;
570
+ $yp123 = strpos($qh62, $hh78);
571
+ $yp123 = ( $yp123 !== false ) ? str_pad($yp123, 3, '0', STR_PAD_LEFT) : '999' ;
572
+ return $yp123.$si80.'.'.(99999 - str_pad($gc120, 5, '0', STR_PAD_LEFT));
573
+ } else return false;
574
+ }
575
+ }
576
+
577
+
578
+ function cq16 ($kc40 = null) {
579
+ if ( is_readable($kc40) ) {
580
+ if ( !($qs124 = fopen($kc40, 'r')) ) return false;
581
+ $pa45 = fread($qs124, filesize($kc40));
582
+ fclose($qs124);
583
+ return $pa45;
584
+ }
585
+ return false;
586
+ }
587
+
588
+
589
+ function jn17 ($kc40, $os104 = '', $qi53 = 'wb', $nu125 = 2) {
590
+ if ( $qw126 = fopen($kc40, $qi53) ) {
591
+ flock($qw126, $nu125);
592
+ $mr127 = fwrite($qw126, $os104);
593
+ $ri128 = fclose($qw126);
594
+ if ( $mr127 != false && $ri128 != false ) return true;
595
+ }
596
+ return false;
597
+ }
598
+
599
+ }
600
+
601
+ ?>
includes/WPImporter_includes_helper.php CHANGED
@@ -34,78 +34,77 @@
34
  * Notices must display the words
35
  * "Copyright Smackcoders. 2014. All rights reserved".
36
  ********************************************************************************/
 
37
 
38
- class WPImporter_includes_helper
39
- {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
 
41
- public function __construct()
42
- {
43
- $this->getKeyVals();
44
- }
45
-
46
- // @var string CSV upload directory name
47
- public $uploadDir = 'ultimate_importer';
48
-
49
- // @var boolean post title check
50
- public $titleDupCheck = false;
51
-
52
- // @var boolean content title check
53
- public $conDupCheck = false;
54
-
55
- // @var boolean for post flag
56
- public $postFlag = true;
57
-
58
- // @var int duplicate post count
59
- public $dupPostCount = 0;
60
-
61
- // @var int inserted post count
62
- public $insPostCount = 0;
63
-
64
- // @var int no post author count
65
- public $noPostAuthCount = 0;
66
-
67
- // @var int updated post count
68
- public $updatedPostCount = 0;
69
-
70
- // @var string delimiter
71
- public $delim = ",";
72
-
73
- // @var array delilimters supported by CSV importer
74
- public $delim_avail = array(
75
- ',',
76
- ';'
77
- );
78
-
79
- // @var array wp field keys
80
- public $keys = array();
81
-
82
- // @var array for default columns
83
- public $defCols = array(
84
- 'post_title' => null,
85
- 'post_content' => null,
86
- 'post_excerpt' => null,
87
- 'post_date' => null,
88
- 'post_name' => null,
89
- 'post_tag' => null,
90
- 'post_category' => null,
91
- 'post_author' => null,
92
- 'featured_image' => null,
93
- 'post_parent' => 0,
94
- 'post_status' => 0,
95
- 'menu_order' => 0,
96
- 'post_format' => 0,
97
- 'wp_page_template' => null,
98
- );
99
-
100
- // @var array CSV headers
101
- public $headers = array();
102
-
103
- public $capturedId = 0;
104
-
105
- /* getImportDataConfiguration */
106
- public function getImportDataConfiguration()
107
- {
108
- $importDataConfig = "<div class='importstatus'id='importallwithps_div'>
109
  <table><tr><td>
110
  <label>Import with post status</label><span class='mandatory'> *</span></td><td>
111
  <div style='float:left;'>
@@ -120,503 +119,475 @@ class WPImporter_includes_helper
120
  </select></div>
121
  <div style='float:right;'>
122
  <a href='#' class='tooltip'>
123
- <img src='" . WP_CONST_ULTIMATE_CSV_IMP_DIR . "images/help.png' />
124
  <span class='tooltipPostStatus'>
125
- <img class='callout' src='" . WP_CONST_ULTIMATE_CSV_IMP_DIR . "images/callout.gif' />
126
  Select the status for the post imported, if not defined within your csv .E.g.publish
127
- <img src='" . WP_CONST_ULTIMATE_CSV_IMP_DIR . "images/help.png' style='margin-top: 6px;float:right;' />
128
  </span></a> </div>
129
  </td></tr><tr><td>
130
  <div id='globalpassword_label' class='globalpassword' style='display:none;'><label>Password</label><span class='mandatory'> *</span></div></td><td>
131
  <div id='globalpassword_text' class='globalpassword' style='display:none;'><input type = 'text' id='globalpassword_txt' name='globalpassword_txt' placeholder='Password for all post'></div></td></tr></table>
132
  </div>";
133
- return $importDataConfig;
134
- }
135
-
136
- /**
137
- * Get upload directory
138
- */
139
- public function getUploadDirectory($check = 'plugin_uploads')
140
- {
141
- $upload_dir = wp_upload_dir();
142
- if ($check == 'plugin_uploads') {
143
- return $upload_dir ['basedir'] . "/" . $this->uploadDir;
144
- } else {
145
- return $upload_dir ['basedir'];
146
- }
147
- }
148
-
149
- /**
150
- * Generate help tooltip
151
- * @param string $content content to show on tooltip
152
- * @param string $mapping_style
153
- * @return string $html generated HTML
154
- **/
155
- public function generatehelp($content, $mapping_style = NULL)
156
- {
157
- $html = '<div style = "' . $mapping_style . '"> <a href="#" class="tooltip">
158
- <img src="' . WP_CONST_ULTIMATE_CSV_IMP_DIR . 'images/help.png" />
159
  <span class="tooltipPostStatus">
160
- <img class="callout" src="' . WP_CONST_ULTIMATE_CSV_IMP_DIR . 'images/callout.gif" />
161
- ' . $content . '
162
- <img src="' . WP_CONST_ULTIMATE_CSV_IMP_DIR . 'images/help.png" style="margin-top: 6px;float:right;" />
163
  </span> </a> </div>';
164
- return $html;
165
- }
166
-
167
- /**
168
- * Function to activate the plugin
169
- */
170
- public static function activate()
171
- {
172
- if (!defined('PDO::ATTR_DRIVER_NAME')) {
173
- echo("<p style='color:red;'>Make sure you have enable the PDO extensions in your environment before activate the plugin! </p>");
174
- die();
175
- }
176
- $csvfreesettings = array();
177
- $csvfreesettings['post'] = 'post';
178
- $csvfreesettings['page'] = 'page';
179
- $csvfreesettings['comments'] = 'comments';
180
- $csvfreesettings['users'] = 'users';
181
- $csvfreesettings['rcustompost'] = 'nonercustompost';
182
- $csvfreesettings['rseooption'] = 'nonerseooption';
183
- update_option('wpcsvfreesettings', $csvfreesettings);
184
- }
185
-
186
- /**
187
- * Function to deactivate the plugin
188
- */
189
- public function deactivate()
190
- {
191
- delete_option('wpcsvfreesettings');
192
- }
193
-
194
- /**
195
- * Function to render the settings page
196
- */
197
- public static function output_fd_page()
198
- {
199
- if (!isset($_REQUEST['__module'])) {
200
- wp_redirect(get_admin_url() . 'admin.php?page=' . WP_CONST_ULTIMATE_CSV_IMP_SLUG . '/index.php&__module=post&step=uploadfile');
201
- }
202
- require_once(WP_CONST_ULTIMATE_CSV_IMP_DIRECTORY . 'config/settings.php');
203
- require_once(WP_CONST_ULTIMATE_CSV_IMP_DIRECTORY . 'lib/skinnymvc/controller/SkinnyController.php');
204
-
205
- $c = new SkinnyControllerWPCsvFree;
206
- $c->main();
207
- }
208
-
209
- /**
210
- * Function to get values from wp-option
211
- */
212
- public function getSettings()
213
- {
214
- return get_option('wpcsvfreesettings');
215
- }
216
-
217
- /**
218
- * Function to render the menu
219
- */
220
- public function renderMenu()
221
- {
222
- include(plugin_dir_path(__FILE__) . '../templates/menu.php');
223
- }
224
-
225
- /**
226
- * Function to validate action and include the respective class file
227
- * @param string $action
228
- * @param string $step
229
- **/
230
- public function requestedAction($action)
231
- {
232
- $actions = array('dashboard', 'settings', 'help', 'users', 'comments', 'eshop', 'wpcommerce', 'woocommerce', 'categories', 'customtaxonomy', 'export', 'mappingtemplate');
233
- if (!in_array($action, $actions)) {
234
- include(plugin_dir_path(__FILE__) . '../templates/view.php');
235
- } else {
236
- include(plugin_dir_path(__FILE__) . '../modules/' . $action . '/actions/actions.php');
237
- include(plugin_dir_path(__FILE__) . '../modules/' . $action . '/templates/view.php');
238
- }
239
- }
240
-
241
- /**
242
- * Move CSV to the upload directory
243
- */
244
- public function move_file()
245
- {
246
- if ($_FILES ["csv_import"] ["error"] == 0) {
247
- $tmp_name = $_FILES ["csv_import"] ["tmp_name"];
248
- $this->csvFileName = $_FILES ["csv_import"] ["name"];
249
- move_uploaded_file($tmp_name, $this->getUploadDirectory() . "/$this->csvFileName");
250
- }
251
- }
252
-
253
- /**
254
- * Check upload directory permission
255
- */
256
- function checkUploadDirPermission()
257
- {
258
- $this->getUploadDirectory();
259
- $upload_dir = wp_upload_dir();
260
- if (!is_dir($upload_dir ['basedir'])) {
261
- print " <div style='font-size:16px;margin-left:20px;margin-top:25px;'>" . $this->t("UPLOAD_PERMISSION_ERROR") . "
262
  </div><br/>
263
  <div style='margin-left:20px;'>
264
  <form class='add:the-list: validate' method='post' action=''>
265
  <input type='submit' class='button-primary' name='Import Again' value='" . $this->t("IMPORT_AGAIN") . "'/>
266
  </form>
267
  </div>";
268
- $this->freeze();
269
- } else {
270
- if (!is_dir($this->getUploadDirectory())) {
271
- wp_mkdir_p($this->getUploadDirectory());
272
- }
273
- }
274
- }
275
-
276
-
277
- /**
278
- * Get field from column keys
279
- */
280
- function getKeyVals()
281
- {
282
- global $wpdb;
283
- $active_plugins = get_option('active_plugins');
284
- $limit = ( int )apply_filters('postmeta_form_limit', 150);
285
- $this->keys = $wpdb->get_col("SELECT meta_key FROM $wpdb->postmeta
 
 
 
286
  GROUP BY meta_key
287
  HAVING meta_key NOT LIKE '\_%' and meta_key NOT LIKE 'field_%'
288
  ORDER BY meta_key
289
  LIMIT $limit");
290
 
291
- foreach ($this->keys as $val) {
292
- $this->defCols ["CF: " . $val] = $val;
293
- }
294
- $wpcsvfreesettings = get_option('wpcsvfreesettings');
295
- if (in_array('aioseo', $wpcsvfreesettings)) {
296
- if (in_array('all-in-one-seo-pack/all_in_one_seo_pack.php', $active_plugins)) {
297
- $seo_custoFields = array('SEO: keywords', 'SEO: description', 'SEO: title', 'SEO: noindex', 'SEO: nofollow', 'SEO: titleatr', 'SEO: menulabel', 'SEO: disable', 'SEO: disable_analytics');
298
- foreach ($seo_custoFields as $val)
299
- $this->defCols[$val] = $val;
300
- }
301
- }
302
- }
303
-
304
- /**
305
- * Function converts CSV data to formatted array.
306
- * @param string $file CSV for the CSV
307
- * @param string $delim delimiter for the CSV
308
- * @return array $data_rows formatted CSV output as array
309
- */
310
- function csv_file_data($file, $delim)
311
- {
312
- $file = $this->getUploadDirectory() . '/' . $file;
313
- ini_set("auto_detect_line_endings", true);
314
-
315
- $data_rows = array();
316
- $this->delim = $delim;
317
-
318
- # Check whether file is present in the given file location
319
- $fileexists = file_exists($file);
320
-
321
- if ($fileexists) {
322
- $resource = fopen($file, 'r');
323
-
324
- $init = 0;
325
- while ($keys = fgetcsv($resource, '', $this->delim, '"')) {
326
- if ($init == 0) {
327
- $this->headers = $keys;
328
- } else {
329
- if (!(($keys[0] == null) && (count($keys) == 1)))
330
- array_push($data_rows, $keys);
331
- }
332
- $init++;
333
- }
334
- fclose($resource);
335
- ini_set("auto_detect_line_endings", false);
336
- } else {
337
-
338
- }
339
- return $data_rows;
340
- }
341
-
342
-
343
- /**
344
- * Function to manage duplicates
345
- * @param string type = (title|content)
346
- * @param string $text
347
- * @param string $gettype
348
- * @return boolean
349
- */
350
- function duplicateChecks($type = 'title', $text, $gettype)
351
- {
352
- global $wpdb;
353
- if ($type == 'content') {
354
- $htmlDecode = html_entity_decode($text);
355
- $strippedText = strip_tags($htmlDecode);
356
- $contentLength = strlen($strippedText);
357
- $allPosts_count = $wpdb->get_results("SELECT COUNT(ID) as count FROM $wpdb->posts WHERE post_type = \"{$gettype}\" and post_status IN('publish','future','draft','pending','private')");
358
- $allPosts_count = $allPosts_count[0]->count;
359
- $allPosts = $wpdb->get_results("SELECT ID,post_title,post_date,post_content FROM $wpdb->posts WHERE post_type = \"{$gettype}\" and post_status IN('publish','future','draft','pending','private')");
360
- foreach ($allPosts as $allPost) {
361
- $htmlDecodePCont = html_entity_decode($allPost->post_content);
362
- $strippedTextPCont = strip_tags($htmlDecodePCont);
363
- similar_text($strippedTextPCont, $strippedText, $p);
364
- if ($p == 100) {
365
- $this->dupPostCount++;
366
- return false;
367
- }
368
- }
369
- return true;
370
- } else if ($type == 'title') {
371
- $post_exist = $wpdb->get_results("select ID from " . $wpdb->posts . " where post_title = \"{$text}\" and post_type = \"{$gettype}\" and post_status in('publish','future','draft','pending','private')");
372
- if (count($post_exist) == 0 && ($text != null || $text != ''))
373
- return true;
374
- }
375
- $this->dupPostCount++;
376
- return false;
377
- }
378
-
379
- /**
380
- * function to fetch the featured image from remote URL
381
- *
382
- */
383
- function get_fimg_from_URL($f_img, $fimg_path, $fimg_name, $post_slug_value)
384
- {
385
- if ($fimg_path != "" && $fimg_path) {
386
- $fimg_path = $fimg_path . "/" . $post_slug_value . "-" . $fimg_name;
387
- }
388
- $ch = curl_init($f_img);
389
- curl_setopt($ch, CURLOPT_HEADER, 0);
390
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
391
- curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
392
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
393
- $rawdata = curl_exec($ch);
394
- curl_close($ch);
395
- if (file_exists($fimg_path)) {
396
- unlink($fimg_path);
397
- }
398
- $fp = fopen($fimg_path, 'x');
399
- fwrite($fp, $rawdata);
400
- fclose($fp);
401
- }
402
-
403
- /**
404
- * function to map the csv file and process it
405
- * array $data_rows
406
- * array $ret_array
407
- * array $session_arr
408
- */
409
- function processDataInWP($data_rows, $ret_array, $session_arr)
410
- {
411
- global $wpdb;
412
- $post_id = '';
413
- $new_post = array();
414
- $smack_taxo = array();
415
- $custom_array = array();
416
- $seo_custom_array = array();
417
- $imported_feature_img = array();
418
-
419
- $headr_count = $ret_array['h2'];
420
- for ($i = 0; $i < count($data_rows); $i++) {
421
- if (array_key_exists('mapping' . $i, $ret_array)) {
422
- if ($ret_array ['mapping' . $i] != '-- Select --') {
423
- if ($ret_array ['mapping' . $i] != 'add_custom' . $i) {
424
- $strip_CF = strpos($ret_array['mapping' . $i], 'CF: ');
425
- $strip_SEO = strpos($ret_array['mapping' . $i], 'SEO: ');
426
- if ($strip_CF === 0) {
427
- $custom_key = substr($ret_array['mapping' . $i], 4);
428
- $custom_array[$custom_key] = $data_rows[$i];
429
- } elseif ($strip_SEO === 0) {
430
- $seo_key = substr($ret_array['mapping' . $i], 5);
431
- $seo_custom_array[$seo_key] = $data_rows[$i];
432
- } else {
433
- $new_post[$ret_array['mapping' . $i]] = $data_rows[$i];
434
- }
435
- } else {
436
- $new_post [$ret_array ['textbox' . $i]] = $data_rows [$i];
437
- $custom_array [$ret_array ['textbox' . $i]] = $data_rows [$i];
438
- }
439
- }
440
- }
441
- }
442
- for ($inc = 0; $inc < count($data_rows); $inc++) {
443
- foreach ($this->keys as $k => $v) {
444
- if (array_key_exists($v, $new_post)) {
445
- $custom_array [$v] = $new_post [$v];
446
- }
447
- }
448
- }
449
- if (is_array($new_post)) {
450
- foreach ($new_post as $ckey => $cval) {
451
- $this->postFlag = true;
452
- $taxo = get_taxonomies();
453
- foreach ($taxo as $taxokey => $taxovalue) {
454
- if ($taxokey != 'category' && $taxokey != 'link_category' && $taxokey != 'post_tag' && $taxokey != 'nav_menu' && $taxokey != 'post_format') {
455
- if ($taxokey == $ckey) {
456
- $smack_taxo [$ckey] = $new_post [$ckey];
457
  }
458
- }
459
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
460
 
461
- $taxo_check = 0;
462
- if (!isset($smack_taxo[$ckey])) {
463
- $smack_taxo [$ckey] = null;
464
- $taxo_check = 1;
465
- }
466
- if ($ckey != 'post_category' && $ckey != 'post_tag' && $ckey != 'featured_image' && $ckey != $smack_taxo [$ckey] && $ckey != 'wp_page_template') {
467
- if ($taxo_check == 1) {
468
- unset($smack_taxo[$ckey]);
469
- $taxo_check = 0;
470
- }
471
- if (array_key_exists($ckey, $custom_array)) {
472
- $darray [$ckey] = $new_post [$ckey];
473
- } else {
474
- if (array_key_exists($ckey, $smack_taxo)) {
475
- $data_array[$ckey] = null;
476
- } else {
477
- $data_array[$ckey] = $new_post [$ckey];
478
- }
479
- }
480
- } else {
481
- switch ($ckey) {
482
- case 'post_tag' :
483
- $tags [$ckey] = $new_post [$ckey];
484
- break;
485
- case 'post_category' :
486
- $categories [$ckey] = $new_post [$ckey];
487
- break;
488
- case 'wp_page_template' :
489
- $custom_array['_wp_page_template'] = $new_post [$ckey];
490
- break;
491
- case 'featured_image' :
492
- require_once(ABSPATH . "wp-includes/pluggable.php");
493
- require_once(ABSPATH . 'wp-admin/includes/image.php');
494
- $dir = wp_upload_dir();
495
- $get_media_settings = get_option('uploads_use_yearmonth_folders');
496
- if ($get_media_settings == 1) {
497
- $dirname = date('Y') . '/' . date('m');
498
- $full_path = $dir ['basedir'] . '/' . $dirname;
499
- $baseurl = $dir ['baseurl'] . '/' . $dirname;
500
- } else {
501
- $full_path = $dir ['basedir'];
502
- $baseurl = $dir ['baseurl'];
503
- }
504
-
505
- $f_img = $new_post [$ckey];
506
- $fimg_path = $full_path;
507
-
508
- $fimg_name = @basename($f_img);
509
- $fimg_name = preg_replace("/[^a-zA-Z0-9._\s]/", "", $fimg_name);
510
- $fimg_name = preg_replace('/\s/', '-', $fimg_name);
511
- $fimg_name = urlencode($fimg_name);
512
-
513
- $parseURL = parse_url($f_img);
514
- $path_parts = pathinfo($f_img);
515
- if (!isset($path_parts['extension']))
516
- $fimg_name = $fimg_name . '.jpg';
517
-
518
- $f_img_slug = preg_replace("/[^a-zA-Z0-9._\s]/", "", $new_post['post_title']);
519
- $f_img_slug = preg_replace('/\s/', '-', $f_img_slug);
520
-
521
- $post_slug_value = strtolower($f_img_slug);
522
- $this->get_fimg_from_URL($f_img, $fimg_path, $fimg_name, $post_slug_value);
523
- $filepath = $fimg_path . "/" . $post_slug_value . "-" . $fimg_name;
524
-
525
- if (@getimagesize($filepath)) {
526
- $img = wp_get_image_editor($filepath);
527
- if (!is_wp_error($img)) {
528
- $sizes_array = array(
529
- // #1 - resizes to 1024x768 pixel, square-cropped image
530
- array('width' => 1024, 'height' => 768, 'crop' => true),
531
- // #2 - resizes to 100px max width/height, non-cropped image
532
- array('width' => 100, 'height' => 100, 'crop' => false),
533
- // #3 - resizes to 100 pixel max height, non-cropped image
534
- array('width' => 300, 'height' => 100, 'crop' => false),
535
- // #3 - resizes to 624x468 pixel max width, non-cropped image
536
- array('width' => 624, 'height' => 468, 'crop' => false)
537
- );
538
- $resize = $img->multi_resize($sizes_array);
539
- }
540
- $file ['guid'] = $baseurl . "/" . $fimg_name;
541
- $file ['post_title'] = $fimg_name;
542
- $file ['post_content'] = '';
543
- $file ['post_status'] = 'attachment';
544
- } else {
545
- $file = false;
546
- }
547
- break;
548
- }
549
- }
550
- }
551
- }
552
 
553
- if ($_SESSION['SMACK_MAPPING_SETTINGS_VALUES']['selectedImporter'] != 'custompost') {
554
- $data_array['post_type'] = $_SESSION['SMACK_MAPPING_SETTINGS_VALUES']['selectedImporter'];
555
- } else {
556
- $data_array['post_type'] = $_SESSION['SMACK_MAPPING_SETTINGS_VALUES']['custompostlist'];
557
- }
558
- if ($this->titleDupCheck == 'true')
559
- $this->postFlag = $this->duplicateChecks('title', $data_array ['post_title'], $data_array ['post_type']);
560
-
561
- if ($this->conDupCheck == 'true' && $this->postFlag)
562
- $this->postFlag = $this->duplicateChecks('content', $data_array ['post_content'], $data_array ['post_type']);
563
-
564
- if ($this->postFlag) {
565
- unset ($sticky);
566
- if (empty($data_array['post_status']))
567
- $data_array['post_status'] = null;
568
-
569
- if ($_SESSION['SMACK_MAPPING_SETTINGS_VALUES']['importallwithps'] != 0)
570
- $data_array['post_status'] = $_SESSION['SMACK_MAPPING_SETTINGS_VALUES']['importallwithps'];
571
-
572
- switch ($data_array ['post_status']) {
573
- case 1 :
574
- $data_array['post_status'] = 'publish';
575
- break;
576
- case 2 :
577
- $data_array['post_status'] = 'publish';
578
- $sticky = true;
579
- break;
580
- case 3 :
581
- $data_array['post_status'] = 'publish';
582
- $data_array ['post_password'] = $_POST ['postsPassword'];
583
- break;
584
- case 4 :
585
- $data_array ['post_status'] = 'private';
586
- break;
587
- case 5 :
588
- $data_array ['post_status'] = 'draft';
589
- break;
590
- case 6 :
591
- $data_array ['post_status'] = 'pending';
592
- break;
593
- default :
594
- $poststatus = $data_array['post_status'] = strtolower($data_array['post_status']);
595
- if ($data_array['post_status'] != 'publish' && $data_array['post_status'] != 'private' && $data_array['post_status'] != 'draft' && $data_array['post_status'] != 'pending' && $data_array['post_status'] != 'sticky') {
596
- $stripPSF = strpos($data_array['post_status'], '{');
597
- if ($stripPSF === 0) {
598
- $poststatus = substr($data_array['post_status'], 1);
599
- $stripPSL = substr($poststatus, -1);
600
- if ($stripPSL == '}') {
601
- $postpwd = substr($poststatus, 0, -1);
602
- $data_array['post_status'] = 'publish';
603
- $data_array ['post_password'] = $postpwd;
604
- } else {
605
- $data_array['post_status'] = 'publish';
606
- $data_array ['post_password'] = $poststatus;
607
- }
608
- } else {
609
- $data_array['post_status'] = 'publish';
610
- }
611
- }
612
- if ($data_array['post_status'] == 'sticky') {
613
- $data_array['post_status'] = 'publish';
614
- $sticky = true;
615
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
616
 
617
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
618
 
619
- // Post Format Options
620
  if(isset($data_array ['post_format'])) {
621
  $post_format = 0;
622
  switch ($data_array ['post_format']) {
@@ -647,346 +618,1180 @@ class WPImporter_includes_helper
647
  }
648
  }
649
 
650
- // Author name/id update
651
- if (isset($data_array ['post_author'])) {
652
- $authorLen = strlen($data_array ['post_author']);
653
- $postuserid = $data_array ['post_author'];
654
- $checkpostuserid = intval($data_array ['post_author']);
655
- $postAuthorLen = strlen($checkpostuserid);
656
- $postauthor = array();
657
-
658
- if ($authorLen == $postAuthorLen) {
659
- $postauthor = $wpdb->get_results("select ID from $wpdb->users where ID = \"{$postuserid}\"");
660
- if (empty($postauthor) || !$postauthor[0]->ID) { // If user name are numeric Ex: 1300001
661
- $postauthor = $wpdb->get_results("select ID from $wpdb->users where user_login = \"{$postuserid}\"");
662
- }
663
- } else {
664
- $postauthor = $wpdb->get_results("select ID from $wpdb->users where user_login = \"{$postuserid}\"");
665
- }
666
-
667
- if (empty($postauthor) || !$postauthor[0]->ID) {
668
- $data_array ['post_author'] = 1;
669
- $this->noPostAuthCount++;
670
- } else {
671
- $data_array ['post_author'] = $postauthor [0]->ID;
672
- }
673
- } else {
674
- $data_array ['post_author'] = 1;
675
- $this->noPostAuthCount++;
676
- }
677
-
678
- // Date format post
679
- if (!isset($data_array ['post_date'])) {
680
- $data_array ['post_date'] = date('Y-m-d H:i:s');
681
- } else {
682
- $data_array ['post_date'] = date('Y-m-d H:i:s', strtotime($data_array ['post_date']));
683
- }
684
- if (isset($data_array ['post_slug'])) {
685
- $data_array ['post_name'] = $data_array ['post_slug'];
686
- }
687
-
688
- //add global password
689
- if ($data_array) {
690
- if ($ret_array['importallwithps'] == 3) {
691
- $data_array['post_password'] = $ret_array['globalpassword_txt'];
692
-
693
- }
694
- }
695
- # print('<pre>');print_r($data_array);die;
696
- if ($data_array)
697
- $post_id = wp_insert_post($data_array);
698
-
699
- unset($postauthor);
700
- if ($post_id) {
701
- $uploaded_file_name = $session_arr['uploadedFile'];
702
- $real_file_name = $session_arr['uploaded_csv_name'];
703
- $action = $data_array['post_type'];
704
- $get_imported_feature_image = array();
705
- $get_imported_feature_image = get_option('IMPORTED_FEATURE_IMAGES');
706
- if (is_array($get_imported_feature_image)) {
707
- $imported_feature_img = array_merge($get_imported_feature_image, $imported_feature_img);
708
- } else {
709
- $imported_feature_img = $imported_feature_img;
710
- }
711
- update_option('IMPORTED_FEATURE_IMAGES', $imported_feature_img);
712
- $created_records[$action][] = $post_id;
713
- if ($action == 'post') {
714
- $imported_as = 'Post';
715
- }
716
- if ($action == 'page') {
717
- $imported_as = 'Page';
718
- }
719
- if ($action != 'post' && $action != 'page') {
720
- $imported_as = 'Custom Post';
721
- }
722
- $keyword = $action;
723
- $this->insPostCount++;
724
- if (isset($sticky) && $sticky)
725
- stick_post($post_id);
726
-
727
- if (!empty ($custom_array)) {
728
- foreach ($custom_array as $custom_key => $custom_value) {
729
- update_post_meta($post_id, $custom_key, $custom_value);
730
- }
731
- }
732
-
733
- // Import post formats added by fredrick marks
734
- if(isset($post_format)) {
735
- wp_set_object_terms($post_id, $post_format, 'post_format');
736
- }
737
-
738
- //Import SEO Values
739
- if (!empty($seo_custom_array)) {
740
- //require_once("class.customfields.php");
741
- //$seoObj = new Customfields();
742
- //$seoObj->importSEOFields($seo_custom_array, $post_id);
743
- //print '<pre>';print_r($seo_custom_array);die;
744
- $this->importSEOfields($seo_custom_array, $post_id);
745
- }
746
-
747
- // Create custom taxonomy to post
748
- if (!empty ($smack_taxo)) {
749
- foreach ($smack_taxo as $taxo_key => $taxo_value) {
750
- if (!empty($taxo_value)) {
751
- $split_line = explode('|', $taxo_value);
752
- wp_set_object_terms($post_id, $split_line, $taxo_key);
753
- }
754
- }
755
- }
756
 
757
- // Create/Add tags to post
758
- if (!empty ($tags)) {
759
- foreach ($tags as $tag_key => $tag_value) {
760
- wp_set_post_tags($post_id, $tag_value);
761
- }
762
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
763
 
764
- // Create/Add category to post
765
- if (!empty ($categories)) {
766
- $split_cate = explode('|', $categories ['post_category']);
767
- foreach ($split_cate as $key => $val) {
768
- if (is_numeric($val))
769
- $split_cate[$key] = 'uncategorized';
770
- }
771
- wp_set_object_terms($post_id, $split_cate, 'category');
772
- }
773
- // Add featured image
774
- if (!empty ($file)) {
775
- //$wp_filetype = wp_check_filetype(@basename($file ['guid']), null);
776
- $wp_upload_dir = wp_upload_dir();
777
- $attachment = array(
778
- 'guid' => $file ['guid'],
779
- 'post_mime_type' => 'image/jpeg',
780
- 'post_title' => preg_replace('/\.[^.]+$/', '', @basename($file ['guid'])),
781
- 'post_content' => '',
782
- 'post_status' => 'inherit'
783
- );
784
- if ($get_media_settings == 1) {
785
- $generate_attachment = $dirname . '/' . $post_slug_value . '-' . $fimg_name;
786
- } else {
787
- $generate_attachment = $fimg_name;
788
- }
789
- $uploadedImage = $wp_upload_dir['path'] . '/' . $post_slug_value . '-' . $fimg_name;
790
- $attach_id = wp_insert_attachment($attachment, $generate_attachment, $post_id);
791
- $attach_data = wp_generate_attachment_metadata($attach_id, $uploadedImage);
792
- wp_update_attachment_metadata($attach_id, $attach_data);
793
- set_post_thumbnail($post_id, $attach_id);
794
- }
795
- } else {
796
- $skippedRecords[] = $_SESSION['SMACK_SKIPPED_RECORDS'];
797
- }
798
- }
799
- unset($data_array);
800
- }
801
-
802
- /**
803
- * Function for importing the all in seo data
804
- * Feature added by Fredrick on version3.5.4
805
- */
806
- function importSEOfields($array, $postId)
807
- {
808
- $seo_opt = get_option('wpcsvfreesettings');
809
- if (in_array('aioseo', $seo_opt)) {
810
- if (isset($array['keywords'])) {
811
- $custom_array['_aioseop_keywords'] = $array['keywords'];
812
- }
813
- if (isset($array['description'])) {
814
- $custom_array['_aioseop_description'] = $array['description'];
815
- }
816
- if (isset($array['title'])) {
817
- $custom_array['_aioseop_title'] = $array['title'];
818
- }
819
- if (isset($array['noindex'])) {
820
- $custom_array['_aioseop_noindex'] = $array['noindex'];
821
- }
822
- if (isset($array['nofollow'])) {
823
- $custom_array['_aioseop_nofollow'] = $array['nofollow'];
824
- }
825
- if (isset($array['titleatr'])) {
826
- $custom_array['_aioseop_titleatr'] = $array['titleatr'];
827
- }
828
- if (isset($array['menulabel'])) {
829
- $custom_array['_aioseop_menulabel'] = $array['menulabel'];
830
- }
831
- if (isset($array['disable'])) {
832
- $custom_array['_aioseop_disable'] = $array['disable'];
833
- }
834
- if (isset($array['disable_analytics'])) {
835
- $custom_array['_aioseop_disable_analytics'] = $array['disable_analytics'];
836
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
837
  }
838
- if (!empty ($custom_array)) {
839
- foreach ($custom_array as $custom_key => $custom_value) {
840
- update_post_meta($postId, $custom_key, $custom_value);
841
- }
 
 
842
  }
843
 
844
- }//importSEOfields ends
845
-
846
- /**
847
- * Delete uploaded file after import process
848
- * @param string $uploadDir
849
- */
850
- function deletefileafterprocesscomplete($uploadDir)
851
- {
852
- //array_map('unlink', glob("$uploadDir/*"));
853
- $files = array_diff(scandir($uploadDir), array('.', '..'));
854
- foreach ($files as $file) {
855
- (is_dir("$uploadDir/$file")) ? rmdir("$uploadDir/$file") : unlink("$uploadDir/$file");
856
- }
857
- }
858
-
859
- /**
860
- * Function convert string to hash_key
861
- * @param string $value
862
- * @return string $file_name
863
- */
864
- public function convert_string2hash_key($value)
865
- {
866
- $file_name = hash_hmac('md5', "$value", 'secret');
867
- return $file_name;
868
- }
869
-
870
- /**
871
- * Function for common footer
872
- */
873
- public function common_footer_for_other_plugin_promotions()
874
- {
875
- $content = '<div class="accordion-inner">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
876
  <label class="plugintags"><a href="http://blog.smackcoders.com/category/free-wordpress-plugins/" target="_blank">Social All in One Bot</a></label>
877
  <label class="plugintags"><a href="http://blog.smackcoders.com/category/free-wordpress-plugins/google-seo-author-snippet-plugin/" target="_blank">Google SEO Author Snippet</a></label>
878
  <label class="plugintags"><a href="http://blog.smackcoders.com/category/free-wordpress-plugins/" target="_blank">WP Advanced Importer</a></label>
879
- <label class="plugintags"><a href="http://blog.smackcoders.com/category/free-wordpress-plugins/wp-vtiger/" target="_blank">WP Tiger</a></label>
880
  <label class="plugintags"><a href="http://blog.smackcoders.com/category/free-wordpress-plugins/" target="_blank">WP Sugar</a></label>
881
  <label class="plugintags"><a href="http://blog.smackcoders.com/category/free-wordpress-plugins/" target="_blank">WP Zoho crm Sync</a></label>
882
- <label class="plugintags"><a href="http://blog.smackcoders.com/category/free-wordpress-plugins/" target="_blank">CRM Ecommerce Integration</a></label>
883
 
884
  <label class="plugintags"><a href="http://www.smackcoders.com/wp-ultimate-csv-importer-pro.html" target="_blank">WP Ultimate CSV Importer Pro</a></label>
885
- <label class="plugintags"><a href="http://www.smackcoders.com/pro-wordpress-vtiger-webforms-module.html" target="_blank">WP Tiger Pro</a></label>
886
  <label class="plugintags"><a href="http://www.smackcoders.com/wordpress-sugar-integration-automated-multi-web-forms-generator-pro.html" target="_blank">WordPress Sugar Pro</a></label>
887
- <label class="plugintags"><a href="http://www.smackcoders.com/vtigercrm6-magento-connector.html" target="_blank">VTiger 6 Magento Sync</a></label>
888
- <label class="plugintags"><a href="http://www.smackcoders.com/vtigercrm-mailchimp-integration.html" target="_blank">VTiger 6 Mailchimp</a></label>
889
- <label class="plugintags"><a href="http://www.smackcoders.com/vtiger-quickbooks-integration-module.html" target="_blank">Vtiger QuickBooks</a></label>
890
- <label class="plugintags"><a href="http://www.smackcoders.com/xero-vtiger-integration.html" target="_blank">Vtiger Xero Sync</a></label>
891
- <label class="plugintags"><a href="http://www.smackcoders.com/vtiger-crm-hrm-payroll-modules.html" target="_blank">Vtiger HR and Payroll</a></label>
892
- <label class="plugintags"><a href="http://www.smackcoders.com/hr-payroll.html" target="_blank">HR Payroll</a></label>
893
  <div style="position:relative;float:right;"><a href="http://www.smackcoders.com/"><img width=80 src="http://www.smackcoders.com/skin/frontend/default/megashop/images/logo.png" /></a></div>
894
  </div>';
895
- echo $content;
896
- }
897
-
898
- /**
899
- * Function for social sharing
900
- */
901
- public function importer_social_profile_share()
902
- {
903
- $urlCurrentPage = "http://www.smackcoders.com/wp-ultimate-csv-importer.html";
904
- $fbimgsrc = WP_CONTENT_URL . "/plugins/" . WP_CONST_ULTIMATE_CSV_IMP_SLUG . "/images/facebook.png";
905
- $googleimgsrc = WP_CONTENT_URL . "/plugins/" . WP_CONST_ULTIMATE_CSV_IMP_SLUG . "/images/googleplus.png";
906
- $linkedimgsrc = WP_CONTENT_URL . "/plugins/" . WP_CONST_ULTIMATE_CSV_IMP_SLUG . "/images/linkedin.png";
907
- $twitimgsrc = WP_CONTENT_URL . "/plugins/" . WP_CONST_ULTIMATE_CSV_IMP_SLUG . "/images/twitter.png";
908
- $strPageTitle = 'WP Ultimate CSV Importer';
909
- $linked_in_username = 'smackcoders';
910
-
911
- //Facebook
912
- $htmlShareButtons = '<span class="sociallink">';
913
- $htmlShareButtons .= '<a id="wpcsv_facebook_share" href="http://www.facebook.com/sharer.php?u=' . $urlCurrentPage . '" target="_blank">';
914
- $htmlShareButtons .= '<img title="Facebook" class="wpcsv" src="' . $fbimgsrc . '" alt="Facebook" />';
915
- $htmlShareButtons .= '</a>';
916
- $htmlShareButtons .= '</span>';
917
-
918
- //Google Plus
919
- $htmlShareButtons .= '<span class="sociallink">';
920
- $htmlShareButtons .= '<a id="wpcsv_google_share" href="https://plus.google.com/share?url=' . $urlCurrentPage . '" target="_blank" >';
921
- $htmlShareButtons .= '<img title="Google+" class="wpcsv" src="' . $googleimgsrc . '" alt="Google+" />';
922
- $htmlShareButtons .= '</a>';
923
- $htmlShareButtons .= '</span>';
924
-
925
- //Linked in
926
- $htmlShareButtons .= '<span class="sociallink">';
927
- $htmlShareButtons .= '<a id="wpcsv_linkedin_share" class="wpcsv_share_link" href="http://www.linkedin.com/shareArticle?mini=true&url=' . urlencode($urlCurrentPage) . '&title=' . urlencode($strPageTitle) . '&source=' . $linked_in_username . '" target="_blank" >';
928
- $htmlShareButtons .= '<img title="LinkedIn" class="wpcsv" src="' . $linkedimgsrc . '" alt="LinkedIn" />';
929
- $htmlShareButtons .= '</a>';
930
- $htmlShareButtons .= '</span>';
931
-
932
- //Twitter
933
- $username = "smackcoders";
934
- // format the URL into friendly code
935
- $twitterShareText = urlencode(html_entity_decode($strPageTitle . ' ', ENT_COMPAT, 'UTF-8'));
936
- // twitter share link
937
- $htmlShareButtons .= '<span class="sociallink">';
938
- $htmlShareButtons .= '<a id="wpcsv_twitter_share" href="http://twitter.com/share?url=' . $urlCurrentPage . '&via=' . $username . '&related=' . $username . '&text=' . $twitterShareText . '" target="_blank">';
939
- $htmlShareButtons .= '<img title="Twitter" class="wpcsv" src="' . $twitimgsrc . '" alt="Twitter" />';
940
- $htmlShareButtons .= '</a>';
941
- $htmlShareButtons .= '</span>';
942
- echo $htmlShareButtons;
943
- }
944
-
945
- public function common_footer()
946
- {
947
- $get_pluginData = get_plugin_data(plugin_dir_path(__FILE__) . '../index.php');
948
- $footer = '<div style="padding:10px;">';
949
- $footer .= '<label class="plugintags"><a href="http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer" target="_blank">WIKI</a></label>
950
- <label class="plugintags"><a href="http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer_FAQ" target="_blank">FAQ</a></label>
951
- <label class="plugintags"><a href="http://blog.smackcoders.com/category/free-wordpress-plugins/wordpress-ultimate-csv-importer-plugin/" target="_blank">TUTORIALS</a></label>
952
- <label class="plugintags"><a href="http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer_Videos" target="_blank">VIDEOS</a></label>
953
- <label class="plugintags"><a href="http://forum.smackcoders.com/" target="_blank">FORUM</a></label>
954
- <label class="plugintags"><a href="http://blog.smackcoders.com/wordpress-ultimate-csv-importer-csv-sample-files-and-updates.html" target="_blank">SAMPLE FILES</a></label>
955
- <label class="plugintags"><a href="http://blog.smackcoders.com/how-to-make-one-click-easy-csv-import-in-wordpress-free-cheat-sheet-downloads.html" target="_blank">CHEAT SHEETS</a></label>
956
- <label class="plugintags"><a href="http://blog.smackcoders.com/category/free-wordpress-plugins/wordpress-ultimate-csv-importer-plugin/" target="_blank">RELATED DOWNLOADS</a></label>
957
- <label class="plugintags"><a href="http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer_Change_Log" target="_blank">CHANGE LOG</a></label>
958
- <label class="plugintags"><a href="http://blog.smackcoders.com/category/free-wordpress-plugins/wordpress-ultimate-csv-importer-plugin/" target="_blank">CURRENT VERSION NEWS</a></label>';
959
- $footer .= '</div>';
960
- $footer .= '<div style="padding:10px;margin-bottom:20px;">';
961
- if (isset ($_REQUEST['__module']) && $_REQUEST['__module'] != 'settings')
962
- $footer .= "<div style='float:left;'><a class='label label-info' href='" . get_admin_url() . "admin.php?page=" . WP_CONST_ULTIMATE_CSV_IMP_SLUG . "/index.php&__module=settings'>Click here to Enable any disabled module</a></div>";
963
-
964
- if (isset ($_REQUEST['__module']) && $_REQUEST['__module'] == 'settings') {
965
- $footer .= "<div style='float:left;margin-left:15px;'><a class='label label-info' href='" . get_admin_url() . "admin.php?page=" . WP_CONST_ULTIMATE_CSV_IMP_SLUG . "/index.php&__module=support'>Click here to Get some useful links</a></div>";
966
- $footer .= "<div style='float:right;margin-right:15px;'><a class='label label-info' href='http://wordpress.org/plugins/wp-ultimate-csv-importer/developers/'>Get Old Versions</a> </span> Current Version: " . $get_pluginData['Version'] . " </div>";
967
- }
968
- if (isset ($_REQUEST['__module']) && $_REQUEST['__module'] != 'support' && $_REQUEST['__module'] != 'settings') {
969
- $footer .= "<div style='float:left;margin-left:15px;'><a class='label label-info' href='" . get_admin_url() . "admin.php?page=" . WP_CONST_ULTIMATE_CSV_IMP_SLUG . "/index.php&__module=support'>Click here to Get some useful links</a></div>";
970
- $footer .= "<div style='float:right;margin-right:15px;'><span style='margin-right:20px;'> <a class='label label-info' href='http://wordpress.org/plugins/wp-ultimate-csv-importer/developers/'>Get Old Versions</a></span> Current Version: " . $get_pluginData['Version'] . " </div>";
971
- }
972
- if (isset ($_REQUEST['__module']) && $_REQUEST['__module'] == 'support') {
973
- $footer .= "<div style='float:right;margin-right:15px;'><span style='margin-right:20px;'>Current Version: " . $get_pluginData['Version'] . " </span><span style='margin-right:10px;'><a class='label label-info' href='http://wordpress.org/plugins/wp-ultimate-csv-importer/developers/'>Get Old Versions</a></span></div>";
974
- }
975
- $footer .= '</div>';
976
- $footer .= '<div style="float:right;margin-right:15px;"> <label>Powered By <a href="http://www.smackcoders.com"> Smackcoders</a></label> </div>';
977
- echo $footer;
978
- }
979
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
980
  }
981
 
 
982
  class CallWPImporterObj extends WPImporter_includes_helper
983
  {
984
- private static $_instance = null;
985
-
986
- public static function getInstance()
987
- {
988
- if (!is_object(self::$_instance)) //or if( is_null(self::$_instance) ) or if( self::$_instance == null )
989
- self::$_instance = new WPImporter_includes_helper();
990
- return self::$_instance;
991
- }
992
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  * Notices must display the words
35
  * "Copyright Smackcoders. 2014. All rights reserved".
36
  ********************************************************************************/
37
+ class WPImporter_includes_helper {
38
 
39
+ public function __construct()
40
+ {
41
+ $this->getKeyVals();
42
+ }
43
+
44
+ // @var string CSV upload directory name
45
+ public $uploadDir = 'ultimate_importer';
46
+
47
+ // @var boolean post title check
48
+ public $titleDupCheck = false;
49
+
50
+ // @var boolean content title check
51
+ public $conDupCheck = false;
52
+
53
+ // @var boolean for post flag
54
+ public $postFlag = true;
55
+
56
+ // @var int duplicate post count
57
+ public $dupPostCount = 0;
58
+
59
+ // @var int inserted post count
60
+ public $insPostCount = 0;
61
+
62
+ // @var int no post author count
63
+ public $noPostAuthCount = 0;
64
+
65
+ // @var int updated post count
66
+ public $updatedPostCount=0;
67
+
68
+ // @var string delimiter
69
+ public $delim = ",";
70
+
71
+ // @var array delilimters supported by CSV importer
72
+ public $delim_avail = array(
73
+ ',',
74
+ ';'
75
+ );
76
+
77
+ // @var array wp field keys
78
+ public $keys = array();
79
+
80
+ // @var array for default columns
81
+ public $defCols = array(
82
+ 'post_title' => null,
83
+ 'post_content' => null,
84
+ 'post_excerpt' => null,
85
+ 'post_date' => null,
86
+ 'post_name' => null,
87
+ 'post_tag' => null,
88
+ 'post_category' => null,
89
+ 'post_author' => null,
90
+ 'featured_image' => null,
91
+ 'post_parent' => 0,
92
+ 'post_status' => 0,
93
+ 'menu_order' => 0,
94
+ 'post_format' => 0,
95
+ 'wp_page_template' => null,
96
+ );
97
+
98
+ // @var array CSV headers
99
+ public $headers = array();
100
+
101
+ public $capturedId=0;
102
+
103
+ public $detailedLog = array();
104
 
105
+ /* getImportDataConfiguration */
106
+ public function getImportDataConfiguration(){
107
+ $importDataConfig = "<div class='importstatus'id='importallwithps_div'>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
108
  <table><tr><td>
109
  <label>Import with post status</label><span class='mandatory'> *</span></td><td>
110
  <div style='float:left;'>
119
  </select></div>
120
  <div style='float:right;'>
121
  <a href='#' class='tooltip'>
122
+ <img src='".WP_CONST_ULTIMATE_CSV_IMP_DIR."images/help.png' />
123
  <span class='tooltipPostStatus'>
124
+ <img class='callout' src='".WP_CONST_ULTIMATE_CSV_IMP_DIR."images/callout.gif' />
125
  Select the status for the post imported, if not defined within your csv .E.g.publish
126
+ <img src='". WP_CONST_ULTIMATE_CSV_IMP_DIR."images/help.png' style='margin-top: 6px;float:right;' />
127
  </span></a> </div>
128
  </td></tr><tr><td>
129
  <div id='globalpassword_label' class='globalpassword' style='display:none;'><label>Password</label><span class='mandatory'> *</span></div></td><td>
130
  <div id='globalpassword_text' class='globalpassword' style='display:none;'><input type = 'text' id='globalpassword_txt' name='globalpassword_txt' placeholder='Password for all post'></div></td></tr></table>
131
  </div>";
132
+ return $importDataConfig;
133
+ }
134
+
135
+ /**
136
+ * Get upload directory
137
+ */
138
+ public function getUploadDirectory($check = 'plugin_uploads')
139
+ {
140
+ $upload_dir = wp_upload_dir();
141
+ if($check == 'plugin_uploads'){
142
+ return $upload_dir ['basedir'] . "/" . $this->uploadDir;
143
+ }else{
144
+ return $upload_dir ['basedir'];
145
+ }
146
+ }
147
+
148
+ /**
149
+ * generate help tooltip
150
+ * @param string $content ** content to show on tooltip **
151
+ * @return string $html ** generated HTML **
152
+ **/
153
+ public function generatehelp($content, $mapping_style = NULL)
154
+ {
155
+ $html = '<div style = "'.$mapping_style.'"> <a href="#" class="tooltip">
156
+ <img src="'.WP_CONST_ULTIMATE_CSV_IMP_DIR.'images/help.png" />
 
157
  <span class="tooltipPostStatus">
158
+ <img class="callout" src="'.WP_CONST_ULTIMATE_CSV_IMP_DIR.'images/callout.gif" />
159
+ '.$content.'
160
+ <img src="'.WP_CONST_ULTIMATE_CSV_IMP_DIR.'images/help.png" style="margin-top: 6px;float:right;" />
161
  </span> </a> </div>';
162
+ return $html;
163
+ }
164
+
165
+ public static function output_fd_page()
166
+ {
167
+ $get_pluginData = get_plugin_data(plugin_dir_path(__FILE__) . '../index.php');
168
+ $plugin_version = get_option('ULTIMATE_CSV_IMPORTER_UPGRADE_FREE_VERSION');
169
+ if(!$plugin_version) {
170
+ $plugin_version = get_option('ULTIMATE_CSV_IMP_FREE_VERSION');
171
+ }
172
+ if ($get_pluginData['Version'] == '3.6' && $plugin_version == '') {
173
+ if (file_exists(WP_CONST_ULTIMATE_CSV_IMP_DIRECTORY . '/upgrade/migrationfreev3.6.php')) {
174
+ require_once(WP_CONST_ULTIMATE_CSV_IMP_DIRECTORY . '/upgrade/migrationfreev3.6.php');
175
+ die();
176
+ }
177
+ }
178
+ else if (!isset($_REQUEST['__module']))
179
+ {
180
+ if (!isset($_REQUEST['__module'])) {
181
+ wp_redirect(get_admin_url() . 'admin.php?page=' . WP_CONST_ULTIMATE_CSV_IMP_SLUG . '/index.php&__module=dashboard');
182
+
183
+ }
184
+ }
185
+ require_once(WP_CONST_ULTIMATE_CSV_IMP_DIRECTORY.'config/settings.php');
186
+ require_once(WP_CONST_ULTIMATE_CSV_IMP_DIRECTORY.'lib/skinnymvc/controller/SkinnyController.php');
187
+
188
+ $c = new SkinnyControllerWPCsvFree;
189
+ $c->main();
190
+ }
191
+
192
+ public function getSettings(){
193
+ return get_option('wpcsvfreesettings');
194
+ }
195
+
196
+ public function renderMenu()
197
+ {
198
+ include(plugin_dir_path(__FILE__) . '../templates/menu.php');
199
+ }
200
+
201
+ public function requestedAction($action,$step){
202
+ $actions = array('dashboard','settings','help','users','comments','eshop','wpcommerce','woocommerce','categories','customtaxonomy','export', 'mappingtemplate');
203
+ if(!in_array($action,$actions)){
204
+ include(plugin_dir_path(__FILE__) . '../templates/view.php');
205
+ }else{
206
+ include(plugin_dir_path(__FILE__) . '../modules/'.$action.'/actions/actions.php');
207
+ include(plugin_dir_path(__FILE__) . '../modules/'.$action.'/templates/view.php');
208
+ }
209
+ }
210
+
211
+ /**
212
+ * Move CSV to the upload directory
213
+ */
214
+ public function move_file()
215
+ {
216
+ if ($_FILES ["csv_import"] ["error"] == 0) {
217
+ $tmp_name = $_FILES ["csv_import"] ["tmp_name"];
218
+ $this->csvFileName = $_FILES ["csv_import"] ["name"];
219
+ move_uploaded_file($tmp_name, $this->getUploadDirectory() . "/$this->csvFileName");
220
+ }
221
+ }
222
+
223
+ /**
224
+ * Check upload dirctory permission
225
+ */
226
+ function checkUploadDirPermission()
227
+ {
228
+ $this->getUploadDirectory();
229
+ $upload_dir = wp_upload_dir();
230
+ if (!is_dir($upload_dir ['basedir'])) {
231
+ print " <div style='font-size:16px;margin-left:20px;margin-top:25px;'>" . $this->t("UPLOAD_PERMISSION_ERROR") . "
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
232
  </div><br/>
233
  <div style='margin-left:20px;'>
234
  <form class='add:the-list: validate' method='post' action=''>
235
  <input type='submit' class='button-primary' name='Import Again' value='" . $this->t("IMPORT_AGAIN") . "'/>
236
  </form>
237
  </div>";
238
+ $this->freeze();
239
+ } else {
240
+ if (!is_dir($this->getUploadDirectory())) {
241
+ wp_mkdir_p($this->getUploadDirectory());
242
+ }
243
+ }
244
+ }
245
+
246
+
247
+ /**
248
+ * Get field colum keys
249
+ */
250
+ function getKeyVals()
251
+ {
252
+ $cust_fields='';
253
+ $acf_field=array();
254
+ $wpcsvfreesettings = array();
255
+ global $wpdb;
256
+ $active_plugins = get_option('active_plugins');
257
+ $limit = ( int )apply_filters('postmeta_form_limit', 150);
258
+ $this->keys = $wpdb->get_col("SELECT meta_key FROM $wpdb->postmeta
259
  GROUP BY meta_key
260
  HAVING meta_key NOT LIKE '\_%' and meta_key NOT LIKE 'field_%'
261
  ORDER BY meta_key
262
  LIMIT $limit");
263
 
264
+ foreach ($this->keys as $val) {
265
+ $this->defCols ["CF: " . $val] = $val;
266
+ }
267
+ $wpcsvfreesettings = get_option('wpcsvfreesettings');
268
+ if($wpcsvfreesettings)
269
+ if(in_array('aioseo',$wpcsvfreesettings)){
270
+ if(in_array('all-in-one-seo-pack/all_in_one_seo_pack.php', $active_plugins)){
271
+ $seo_custoFields =array('SEO: keywords','SEO: description','SEO: title','SEO: noindex','SEO: nofollow','SEO: titleatr','SEO: menulabel','SEO: disable','SEO: disable_analytics','SEO: noodp','SEO: noydir');
272
+ foreach($seo_custoFields as $val)
273
+ $this->defCols[$val]=$val;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
274
  }
 
275
  }
276
+ }
277
+
278
+ /**
279
+ * Function converts CSV data to formatted array.
280
+ *
281
+ * @param $file CSV
282
+ * input filename
283
+ * @param $delim delimiter
284
+ * for the CSV
285
+ * @return array formatted CSV output as array
286
+ */
287
+ function csv_file_data($file, $delim)
288
+ {
289
+ $file = $this->getUploadDirectory().'/'.$file;
290
+ $csv = new parseCSV();
291
+ #$csv->encoding(null, 'UTF-8');
292
+ $csv->auto($file);
293
+ foreach($csv->data as $hkey => $hval) {
294
+ foreach($hval as $hk => $hv) {
295
+ $this->headers[] = $hk;
296
+ }
297
+ break;
298
+ }
299
+ return $csv->data;
300
+ }
301
+
302
+
303
+ /**
304
+ * Manage duplicates
305
+ *
306
+ * @param string type = (title|content), string content
307
+ * @return boolean
308
+ */
309
+ function duplicateChecks($type = 'title', $text, $gettype)
310
+ {
311
+ global $wpdb;
312
+ if ($type == 'content') {
313
+ $htmlDecode = html_entity_decode($text);
314
+ $strippedText = strip_tags($htmlDecode);
315
+ $contentLength = strlen($strippedText);
316
+ $allPosts_count = $wpdb->get_results("SELECT COUNT(ID) as count FROM $wpdb->posts WHERE post_type = \"{$gettype}\" and post_status IN('publish','future','draft','pending','private')");
317
+ $allPosts_count = $allPosts_count[0]->count;
318
+ $allPosts = $wpdb->get_results("SELECT ID,post_title,post_date,post_content FROM $wpdb->posts WHERE post_type = \"{$gettype}\" and post_status IN('publish','future','draft','pending','private')");
319
+ foreach ($allPosts as $allPost) {
320
+ $htmlDecodePCont = html_entity_decode($allPost->post_content);
321
+ $strippedTextPCont = strip_tags($htmlDecodePCont);
322
+ similar_text($strippedTextPCont, $strippedText, $p);
323
+ if ($p == 100) {
324
+ $this->dupPostCount++;
325
+ return false;
326
+ }
327
+ }
328
+ return true;
329
+ } else if ($type == 'title') {
330
+ $post_exist = $wpdb->get_results("select ID from " . $wpdb->posts . " where post_title = \"{$text}\" and post_type = \"{$gettype}\" and post_status in('publish','future','draft','pending','private')");
331
+ if (count($post_exist) == 0 && ($text != null || $text != ''))
332
+ return true;
333
+ }
334
+ $this->dupPostCount++;
335
+ return false;
336
+ }
337
+
338
+ /**
339
+ * function to fetch the featured image from remote URL
340
+ *
341
+ */
342
+ function get_fimg_from_URL($f_img,$fimg_path,$fimg_name,$post_slug_value){
343
+ if($fimg_path!="" && $fimg_path){
344
+ $fimg_path = $fimg_path . "/" . $post_slug_value . "-" . $fimg_name;
345
+ }
346
+ $ch = curl_init ($f_img);
347
+ curl_setopt($ch, CURLOPT_HEADER, 0);
348
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
349
+ curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
350
+ curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
351
+ $rawdata=curl_exec($ch);
352
+
353
+ if(strpos($rawdata, 'Not Found') != 0) {
354
+ $rawdata = false;
355
+ }
356
+ if ($rawdata == false) {
357
+ $this->detailedLog[] = "<span style='color:red;'><b>Failed to download</b></span> Attachment file " . $f_img . " cannot be saved locally as " . $fimg_path;
358
+ } else {
359
+ $this->detailedLog[] = "<span style='color:green;'><b>Media File Added</b></span> Attachment file " . $f_img . " has been saved locally as " . $fimg_path;
360
+ }
361
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
362
 
363
+ curl_close ($ch);
364
+ if(file_exists($fimg_path)){
365
+ unlink($fimg_path);
366
+ }
367
+ $fp = fopen($fimg_path,'x');
368
+ fwrite($fp, $rawdata);
369
+ fclose($fp);
370
+ }
371
+
372
+ /**
373
+ * function to map the csv file and process it
374
+ *
375
+ * @return boolean
376
+ */
377
+ function processDataInWP($data_rows,$ret_array,$session_arr)
378
+ {
379
+ global $wpdb;
380
+ $post_id = '';
381
+ $new_post = array();
382
+ $smack_taxo = array();
383
+ $custom_array = array();
384
+ $seo_custom_array= array();
385
+ $imported_feature_img = array();
386
+
387
+ $headr_count = $ret_array['h2'];
388
+ for ($i = 0; $i < count($data_rows); $i++) {
389
+ if (array_key_exists('mapping' . $i, $ret_array)) {
390
+ if($ret_array ['mapping' . $i] != '-- Select --'){
391
+ if ($ret_array ['mapping' . $i] != 'add_custom' . $i) {
392
+ $strip_CF = strpos($ret_array['mapping' . $i], 'CF: ');
393
+ $strip_SEO = strpos($ret_array['mapping'.$i],'SEO: ');
394
+ if ($strip_CF === 0) {
395
+ $custom_key = substr($ret_array['mapping' . $i], 4);
396
+ $custom_array[$custom_key] = $data_rows[$i];
397
+ }
398
+ elseif($strip_SEO === 0){
399
+ $seo_key = substr($ret_array['mapping'.$i], 5);
400
+ $seo_custom_array[$seo_key] = $data_rows[$i];
401
+ }
402
+ else {
403
+ $new_post[$ret_array['mapping' . $i]] = $data_rows[$i];
404
+ }
405
+ } else {
406
+ $new_post [$ret_array ['textbox' . $i]] = $data_rows [$i];
407
+ $custom_array [$ret_array ['textbox' . $i]] = $data_rows [$i];
408
+ }
409
+ }
410
+ }
411
+ }
412
+ for ($inc = 0; $inc < count($data_rows); $inc++) {
413
+ foreach ($this->keys as $k => $v) {
414
+ if (array_key_exists($v, $new_post)) {
415
+ $custom_array [$v] = $new_post [$v];
416
+ }
417
+ }
418
+ }
419
+ if(is_array( $new_post )){
420
+ foreach ($new_post as $ckey => $cval) {
421
+ $this->postFlag = true;
422
+ $taxo = get_taxonomies();
423
+ foreach ($taxo as $taxokey => $taxovalue) {
424
+ if ($taxokey != 'category' && $taxokey != 'link_category' && $taxokey != 'post_tag' && $taxokey != 'nav_menu' && $taxokey != 'post_format') {
425
+ if ($taxokey == $ckey) {
426
+ $smack_taxo [$ckey] = $new_post [$ckey];
427
+ }
428
+ }
429
+ }
430
+
431
+ $taxo_check = 0;
432
+ if (!isset($smack_taxo[$ckey])) {
433
+ $smack_taxo [$ckey] = null;
434
+ $taxo_check = 1;
435
+ }
436
+ if ($ckey != 'post_category' && $ckey != 'post_tag' && $ckey != 'featured_image' && $ckey != $smack_taxo [$ckey] && $ckey != 'wp_page_template') {
437
+ if ($taxo_check == 1) {
438
+ unset($smack_taxo[$ckey]);
439
+ $taxo_check = 0;
440
+ }
441
+ if (array_key_exists($ckey, $custom_array)) {
442
+ $darray [$ckey] = $new_post [$ckey];
443
+ } else {
444
+ if (array_key_exists($ckey, $smack_taxo)) {
445
+ $data_array[$ckey] = null;
446
+ } else {
447
+ $data_array[$ckey] = $new_post [$ckey];
448
+ }
449
+ }
450
+ } else {
451
+ switch ($ckey) {
452
+ case 'post_tag' :
453
+ $tags [$ckey] = $new_post [$ckey];
454
+ break;
455
+ case 'post_category' :
456
+ $categories [$ckey] = $new_post [$ckey];
457
+ break;
458
+ case 'wp_page_template' :
459
+ $custom_array['_wp_page_template'] = $new_post [$ckey];
460
+ break;
461
+ case 'featured_image' :
462
+ require_once(ABSPATH . "wp-includes/pluggable.php");
463
+ require_once(ABSPATH . 'wp-admin/includes/image.php');
464
+ $dir = wp_upload_dir();
465
+ $get_media_settings = get_option('uploads_use_yearmonth_folders');
466
+ if($get_media_settings == 1){
467
+ $dirname = date('Y') . '/' . date('m');
468
+ $full_path = $dir ['basedir'] . '/' . $dirname;
469
+ $baseurl = $dir ['baseurl'] . '/' . $dirname;
470
+ }else{
471
+ $full_path = $dir ['basedir'];
472
+ $baseurl = $dir ['baseurl'];
473
+ }
474
+
475
+ $f_img = $new_post [$ckey];
476
+ $fimg_path = $full_path;
477
+
478
+ $fimg_name = @basename($f_img);
479
+ $fimg_name = preg_replace("/[^a-zA-Z0-9._\s]/", "", $fimg_name);
480
+ $fimg_name = preg_replace('/\s/', '-', $fimg_name);
481
+ $fimg_name = urlencode($fimg_name);
482
+
483
+ $parseURL = parse_url($f_img);
484
+ $path_parts = pathinfo($f_img);
485
+ if(!isset($path_parts['extension']))
486
+ $fimg_name = $fimg_name . '.jpg';
487
+
488
+ $f_img_slug = preg_replace("/[^a-zA-Z0-9._\s]/", "", $new_post['post_title']);
489
+ $f_img_slug = preg_replace('/\s/', '-', $f_img_slug);
490
+
491
+ $post_slug_value = strtolower($f_img_slug);
492
+ $this->get_fimg_from_URL($f_img,$fimg_path,$fimg_name,$post_slug_value);
493
+ $filepath = $fimg_path."/" . $post_slug_value . "-" . $fimg_name;
494
+
495
+ if(@getimagesize($filepath)){
496
+ $img = wp_get_image_editor($filepath);
497
+ if (!is_wp_error($img)) {
498
+ $sizes_array = array(
499
+ // #1 - resizes to 1024x768 pixel, square-cropped image
500
+ array('width' => 1024, 'height' => 768, 'crop' => true),
501
+ // #2 - resizes to 100px max width/height, non-cropped image
502
+ array('width' => 100, 'height' => 100, 'crop' => false),
503
+ // #3 - resizes to 100 pixel max height, non-cropped image
504
+ array('width' => 300, 'height' => 100, 'crop' => false),
505
+ // #3 - resizes to 624x468 pixel max width, non-cropped image
506
+ array('width' => 624, 'height' => 468, 'crop' => false)
507
+ );
508
+ $resize = $img->multi_resize($sizes_array);
509
+ }
510
+ $file ['guid'] = $baseurl."/".$fimg_name;
511
+ $file ['post_title'] = $fimg_name;
512
+ $file ['post_content'] = '';
513
+ $file ['post_status'] = 'attachment';
514
+ }
515
+ else {
516
+ $file = false;
517
+ }
518
+ break;
519
+ }
520
+ }
521
+ }
522
+ }
523
 
524
+ if($_SESSION['SMACK_MAPPING_SETTINGS_VALUES']['selectedImporter'] != 'custompost'){
525
+ $data_array['post_type'] = $_SESSION['SMACK_MAPPING_SETTINGS_VALUES']['selectedImporter'];
526
+ }else{
527
+ $data_array['post_type'] = $_SESSION['SMACK_MAPPING_SETTINGS_VALUES']['custompostlist'];
528
+ }
529
+ if ($this->titleDupCheck == 'true')
530
+ $this->postFlag = $this->duplicateChecks('title', $data_array ['post_title'], $data_array ['post_type']);
531
+
532
+ if ($this->conDupCheck == 'true' && $this->postFlag)
533
+ $this->postFlag = $this->duplicateChecks('content', $data_array ['post_content'], $data_array ['post_type']);
534
+
535
+ if ($this->postFlag) {
536
+ unset ($sticky);
537
+ if (empty($data_array['post_status']))
538
+ $data_array['post_status'] = null;
539
+
540
+ if ($_SESSION['SMACK_MAPPING_SETTINGS_VALUES']['importallwithps'] != 0)
541
+ $data_array['post_status'] = $_SESSION['SMACK_MAPPING_SETTINGS_VALUES']['importallwithps'];
542
+
543
+ switch ($data_array ['post_status']) {
544
+ case 1 :
545
+ $data_array['post_status'] = 'publish';
546
+ break;
547
+ case 2 :
548
+ $data_array['post_status'] = 'publish';
549
+ $sticky = true;
550
+ break;
551
+ case 3 :
552
+ $data_array['post_status'] = 'publish';
553
+ $data_array ['post_password'] = $_POST ['postsPassword'];
554
+ break;
555
+ case 4 :
556
+ $data_array ['post_status'] = 'private';
557
+ break;
558
+ case 5 :
559
+ $data_array ['post_status'] = 'draft';
560
+ break;
561
+ case 6 :
562
+ $data_array ['post_status'] = 'pending';
563
+ break;
564
+ default :
565
+ $poststatus = $data_array['post_status'] = strtolower($data_array['post_status']);
566
+ if ($data_array['post_status'] != 'publish' && $data_array['post_status'] != 'private' && $data_array['post_status'] != 'draft' && $data_array['post_status'] != 'pending' && $data_array['post_status'] != 'sticky') {
567
+ $stripPSF = strpos($data_array['post_status'], '{');
568
+ if ($stripPSF === 0) {
569
+ $poststatus = substr($data_array['post_status'], 1);
570
+ $stripPSL = substr($poststatus, -1);
571
+ if ($stripPSL == '}') {
572
+ $postpwd = substr($poststatus, 0, -1);
573
+ $data_array['post_status'] = 'publish';
574
+ $data_array ['post_password'] = $postpwd;
575
+ } else {
576
+ $data_array['post_status'] = 'publish';
577
+ $data_array ['post_password'] = $poststatus;
578
+ }
579
+ } else {
580
+ $data_array['post_status'] = 'publish';
581
+ }
582
+ }
583
+ if ($data_array['post_status'] == 'sticky') {
584
+ $data_array['post_status'] = 'publish';
585
+ $sticky = true;
586
+ }
587
+
588
+ }
589
+ // Post Format Options
590
 
 
591
  if(isset($data_array ['post_format'])) {
592
  $post_format = 0;
593
  switch ($data_array ['post_format']) {
618
  }
619
  }
620
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
621
 
622
+ // Author name/id update
623
+ if(isset($data_array ['post_author'])){
624
+ $authorLen = strlen($data_array ['post_author']);
625
+ $postuserid = $data_array ['post_author'];
626
+ $checkpostuserid = intval($data_array ['post_author']);
627
+ $postAuthorLen = strlen($checkpostuserid);
628
+ $postauthor = array();
629
+
630
+ if ($authorLen == $postAuthorLen) {
631
+ $postauthor = $wpdb->get_results("select ID from $wpdb->users where ID = \"{$postuserid}\"");
632
+ if(empty($postauthor) || !$postauthor[0]->ID) { // If user name are numeric Ex: 1300001
633
+ $postauthor = $wpdb->get_results("select ID from $wpdb->users where user_login = \"{$postuserid}\"");
634
+ }
635
+ } else {
636
+ $postauthor = $wpdb->get_results("select ID from $wpdb->users where user_login = \"{$postuserid}\"");
637
+ }
638
+
639
+ if (empty($postauthor) || !$postauthor[0]->ID) {
640
+ $data_array ['post_author'] = 1;
641
+ $this->noPostAuthCount++;
642
+ } else {
643
+ $data_array ['post_author'] = $postauthor [0]->ID;
644
+ }
645
+ }
646
+ else{
647
+ $data_array ['post_author'] = 1;
648
+ $this->noPostAuthCount++;
649
+ }
650
+
651
+ // Date format post
652
+ if (!isset($data_array ['post_date'])){
653
+ $data_array ['post_date'] = date('Y-m-d H:i:s');
654
+ }else{
655
+ $data_array ['post_date'] = date('Y-m-d H:i:s', strtotime($data_array ['post_date']));
656
+ }
657
+ if(isset($data_array ['post_slug'])){
658
+ $data_array ['post_name'] = $data_array ['post_slug'];
659
+ }
660
+
661
+ //add global password
662
+ if($data_array){
663
+ if($ret_array['importallwithps'] == 3){
664
+ $data_array['post_password'] = $ret_array['globalpassword_txt'];
665
+
666
+ }
667
+ }
668
+ //print('<pre>');print_r($data_array);die;
669
+ if ($data_array)
670
+ $post_id = wp_insert_post($data_array);
671
+
672
+ unset($postauthor);
673
+ if ($post_id) {
674
+ $uploaded_file_name=$session_arr['uploadedFile'];
675
+ $real_file_name = $session_arr['uploaded_csv_name'];
676
+ // $version = $session_arr['currentfileversion'];
677
+ $action = $data_array['post_type'];
678
+ /* $version_arr=array();
679
+ $version_arr=explode("(",$uploaded_file_name);
680
+ $version_arr=explode(")",$version_arr[1]);
681
+ $version=$version_arr[0]; */
682
+ $get_imported_feature_image = array();
683
+ $get_imported_feature_image = get_option('IMPORTED_FEATURE_IMAGES');
684
+ if(is_array($get_imported_feature_image)){
685
+ $imported_feature_img = array_merge($get_imported_feature_image, $imported_feature_img);
686
+ }
687
+ else{
688
+ $imported_feature_img = $imported_feature_img;
689
+ }
690
+ update_option('IMPORTED_FEATURE_IMAGES', $imported_feature_img);
691
+ $created_records[$action][] = $post_id;
692
+ if($action == 'post'){
693
+ $imported_as = 'Post';
694
+ }
695
+ if($action == 'page'){
696
+ $imported_as = 'Page';
697
+ }
698
+ if($action != 'post' && $action != 'page'){
699
+ $imported_as = 'Custom Post';
700
+ }
701
+ $keyword = $action;
702
+ $this->insPostCount++;
703
+ if (isset($sticky) && $sticky)
704
+ stick_post($post_id);
705
+
706
+ if (!empty ($custom_array)) {
707
+ foreach ($custom_array as $custom_key => $custom_value) {
708
+ update_post_meta($post_id, $custom_key, $custom_value);
709
+ }
710
+ }
711
+
712
+
713
+ // Import post formats added by fredrick marks
714
+ if(isset($post_format)) {
715
+ wp_set_object_terms($post_id, $post_format, 'post_format');
716
+
717
+ }
718
+ //Import SEO Values
719
+ if(!empty($seo_custom_array)){
720
+ //require_once("class.customfields.php");
721
+ //$seoObj = new Customfields();
722
+ //$seoObj->importSEOFields($seo_custom_array, $post_id);
723
+ //print '<pre>';print_r($seo_custom_array);die;
724
+ $this->importSEOfields($seo_custom_array,$post_id);
725
+ }
726
 
727
+ // Create custom taxonomy to post
728
+ if (!empty ($smack_taxo)) {
729
+ foreach ($smack_taxo as $taxo_key => $taxo_value) {
730
+ if (!empty($taxo_value)) {
731
+ $split_line = explode('|', $taxo_value);
732
+ wp_set_object_terms($post_id, $split_line, $taxo_key);
733
+ }
734
+ }
735
+ }
736
+
737
+ // Create/Add tags to post
738
+ if (!empty ($tags)) {
739
+ foreach ($tags as $tag_key => $tag_value) {
740
+ wp_set_post_tags($post_id, $tag_value);
741
+ }
742
+ }
743
+
744
+ // Create/Add category to post
745
+ if (!empty ($categories)) {
746
+ $split_cate = explode('|', $categories ['post_category']);
747
+ foreach ($split_cate as $key => $val) {
748
+ if (is_numeric($val))
749
+ $split_cate[$key] = 'uncategorized';
750
+ }
751
+ wp_set_object_terms($post_id, $split_cate, 'category');
752
+ }
753
+ // Add featured image
754
+ if (!empty ($file)) {
755
+ //$wp_filetype = wp_check_filetype(@basename($file ['guid']), null);
756
+ $wp_upload_dir = wp_upload_dir();
757
+ $attachment = array(
758
+ 'guid' => $file ['guid'],
759
+ 'post_mime_type' => 'image/jpeg',
760
+ 'post_title' => preg_replace('/\.[^.]+$/', '', @basename($file ['guid'])),
761
+ 'post_content' => '',
762
+ 'post_status' => 'inherit'
763
+ );
764
+ if($get_media_settings == 1){
765
+ $generate_attachment = $dirname . '/' . $post_slug_value . '-' . $fimg_name;
766
+ }else{
767
+ $generate_attachment = $fimg_name;
768
+ }
769
+ $uploadedImage = $wp_upload_dir['path'] . '/' . $post_slug_value . '-' . $fimg_name;
770
+ $attach_id = wp_insert_attachment($attachment, $generate_attachment, $post_id);
771
+ $attach_data = wp_generate_attachment_metadata($attach_id, $uploadedImage);
772
+ wp_update_attachment_metadata($attach_id, $attach_data);
773
+ set_post_thumbnail($post_id, $attach_id);
774
+ }
775
+ }
776
+ else{
777
+ $skippedRecords[] = $_SESSION['SMACK_SKIPPED_RECORDS'];
778
+ }
779
+ }
780
+ unset($data_array);
781
+ }
782
+
783
+ // Create Data base for Statistic chart
784
+ public static function activate() {
785
+ global $wpdb;
786
+ $sql1="CREATE TABLE `smackcsv_pie_log` (
787
+ `id` int(11) NOT NULL AUTO_INCREMENT,
788
+ `type` varchar(255) DEFAULT NULL,
789
+ `value` int(11) DEFAULT NULL,
790
+ PRIMARY KEY (`id`)
791
+ ) ENGINE=InnoDB;";
792
+
793
+ $sql2="CREATE TABLE `smackcsv_line_log` (
794
+ `id` int(11) NOT NULL AUTO_INCREMENT,
795
+ `month` varchar(60) DEFAULT NULL,
796
+ `year` varchar(60) DEFAULT NULL,
797
+ `imported_type` varchar(60) DEFAULT NULL,
798
+ `imported_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
799
+ `inserted` int(11) DEFAULT NULL,
800
+
801
+ PRIMARY KEY (`id`)
802
+ ) ENGINE=InnoDB;";
803
+ $wpdb->query($sql1);
804
+ $wpdb->query($sql2);
805
+ $importedTypes = array('Post','Page','Custom Post','Comments','Users');
806
+ foreach($importedTypes as $importedType){
807
+ $querycheck = $wpdb->get_results("select *from smackcsv_pie_log where type = \"{$importedType}\"");
808
+ if (count($querycheck) == 0){
809
+ $sql4 = "insert into smackcsv_pie_log (type,value) values(\"$importedType\",0)";
810
+ $wpdb->query($sql4);
811
+ }
812
+ }
813
+ }
814
+
815
+ //Drop Database While Deactivate plugin
816
+ public function deactivate() {
817
+ global $wpdb;
818
+ $sql1 = "DROP TABLE smackcsv_pie_log;";
819
+ $wpdb->query($sql1);
820
+
821
+ $sql2 = "DROP TABLE smackcsv_line_log;";
822
+ $wpdb->query($sql2);
823
+
824
+
825
+ }
826
+ public function addPieChartEntry($imported_as, $count) {
827
+ //add total counts
828
+ global $wpdb;
829
+ $getTypeID = $wpdb->get_results("select * from smackcsv_pie_log where type = '$imported_as'");
830
+ if(count($getTypeID) == 0)
831
+ $wpdb->insert('smackcsv_pie_log',array('type'=>$imported_as,'value'=>$count));
832
+ else
833
+ $wpdb->update('smackcsv_pie_log', array('value' =>$getTypeID[0]->value+$count), array('id'=>$getTypeID[0]->id));
834
  }
835
+ function addStatusLog($inserted,$imported_as){
836
+ global $wpdb;
837
+ $today = date('Y-m-d h:i:s');
838
+ $mon = date("M",strtotime($today));
839
+ $year = date("Y",strtotime($today));
840
+ $wpdb->insert('smackcsv_line_log', array('month'=>$mon,'year'=>$year,'imported_type'=>$imported_as,'imported_on'=>date('Y-m-d h:i:s'), 'inserted'=>$inserted ));
841
  }
842
 
843
+ /**
844
+ * Function for importing the all in seo data
845
+ * Feature added by Fredrick on version3.5.4
846
+ */
847
+ function importSEOfields($array,$postId)
848
+ {
849
+ $seo_opt = get_option('wpcsvfreesettings');
850
+ if(in_array('aioseo',$seo_opt)){
851
+ if(isset($array['keywords'])) { $custom_array['_aioseop_keywords'] = $array['keywords']; }
852
+ if(isset($array['description'])) { $custom_array['_aioseop_description'] = $array['description']; }
853
+ if(isset($array['title'])) { $custom_array['_aioseop_title'] = $array['title']; }
854
+ if(isset($array['noindex'])) { $custom_array['_aioseop_noindex'] = $array['noindex']; }
855
+ if(isset($array['nofollow'])) { $custom_array['_aioseop_nofollow'] = $array['nofollow']; }
856
+ if(isset($array['titleatr'])) { $custom_array['_aioseop_titleatr'] = $array['titleatr']; }
857
+ if(isset($array['menulabel'])) { $custom_array['_aioseop_menulabel'] = $array['menulabel']; }
858
+ if(isset($array['disable'])) { $custom_array['_aioseop_disable'] = $array['disable']; }
859
+ if(isset($array['disable_analytics'])) { $custom_array['_aioseop_disable_analytics'] = $array['disable_analytics']; }
860
+ if(isset($array['noodp'])) { $custom_array['_aioseop_noodp'] = $array['noodp']; }
861
+ if(isset($array['noydir'])) { $custom_array['_aioseop_noydir'] = $array['noydir']; }
862
+ }
863
+ if (! empty ( $custom_array )) {
864
+ foreach ( $custom_array as $custom_key => $custom_value ) {
865
+ update_post_meta ( $postId, $custom_key, $custom_value );
866
+ }
867
+ }
868
+
869
+ }//importSEOfields ends
870
+
871
+ /**
872
+ * Delete uploaded file after import process
873
+ */
874
+ function deletefileafterprocesscomplete($uploadDir) {
875
+ //array_map('unlink', glob("$uploadDir/*"));
876
+ $files = array_diff(scandir($uploadDir), array('.','..'));
877
+ foreach ($files as $file) {
878
+ (is_dir("$uploadDir/$file")) ? rmdir("$uploadDir/$file") : unlink("$uploadDir/$file");
879
+ }
880
+ }
881
+
882
+ // Function convert string to hash_key
883
+ public function convert_string2hash_key($value) {
884
+ $file_name = hash_hmac('md5', "$value", 'secret');
885
+ return $file_name;
886
+ }
887
+
888
+ // Function for common footer
889
+ public function common_footer_for_other_plugin_promotions(){
890
+ $content = '<div class="accordion-inner">
891
  <label class="plugintags"><a href="http://blog.smackcoders.com/category/free-wordpress-plugins/" target="_blank">Social All in One Bot</a></label>
892
  <label class="plugintags"><a href="http://blog.smackcoders.com/category/free-wordpress-plugins/google-seo-author-snippet-plugin/" target="_blank">Google SEO Author Snippet</a></label>
893
  <label class="plugintags"><a href="http://blog.smackcoders.com/category/free-wordpress-plugins/" target="_blank">WP Advanced Importer</a></label>
 
894
  <label class="plugintags"><a href="http://blog.smackcoders.com/category/free-wordpress-plugins/" target="_blank">WP Sugar</a></label>
895
  <label class="plugintags"><a href="http://blog.smackcoders.com/category/free-wordpress-plugins/" target="_blank">WP Zoho crm Sync</a></label>
 
896
 
897
  <label class="plugintags"><a href="http://www.smackcoders.com/wp-ultimate-csv-importer-pro.html" target="_blank">WP Ultimate CSV Importer Pro</a></label>
 
898
  <label class="plugintags"><a href="http://www.smackcoders.com/wordpress-sugar-integration-automated-multi-web-forms-generator-pro.html" target="_blank">WordPress Sugar Pro</a></label>
 
 
 
 
 
 
899
  <div style="position:relative;float:right;"><a href="http://www.smackcoders.com/"><img width=80 src="http://www.smackcoders.com/skin/frontend/default/megashop/images/logo.png" /></a></div>
900
  </div>';
901
+ echo $content;
902
+ }
903
+
904
+ // Function for social sharing
905
+ public function importer_social_profile_share() {
906
+ $urlCurrentPage = "http://www.smackcoders.com/wp-ultimate-csv-importer.html";
907
+ $fbimgsrc = WP_CONTENT_URL . "/plugins/" . WP_CONST_ULTIMATE_CSV_IMP_SLUG . "/images/facebook.png";
908
+ $googleimgsrc = WP_CONTENT_URL . "/plugins/" . WP_CONST_ULTIMATE_CSV_IMP_SLUG . "/images/googleplus.png";
909
+ $linkedimgsrc = WP_CONTENT_URL . "/plugins/" . WP_CONST_ULTIMATE_CSV_IMP_SLUG . "/images/linkedin.png";
910
+ $twitimgsrc = WP_CONTENT_URL . "/plugins/" . WP_CONST_ULTIMATE_CSV_IMP_SLUG . "/images/twitter.png";
911
+ $strPageTitle = 'WP Ultimate CSV Importer';
912
+ $linked_in_username = 'smackcoders';
913
+
914
+ //Facebook
915
+ $htmlShareButtons = '<span class="sociallink">';
916
+ $htmlShareButtons .= '<a id="wpcsv_facebook_share" href="http://www.facebook.com/sharer.php?u=' . $urlCurrentPage . '" target="_blank">';
917
+ $htmlShareButtons .= '<img title="Facebook" class="wpcsv" src="' . $fbimgsrc . '" alt="Facebook" />';
918
+ $htmlShareButtons .= '</a>';
919
+ $htmlShareButtons .= '</span>';
920
+
921
+ //Google Plus
922
+ $htmlShareButtons .= '<span class="sociallink">';
923
+ $htmlShareButtons .= '<a id="wpcsv_google_share" href="https://plus.google.com/share?url=' . $urlCurrentPage . '" target="_blank" >';
924
+ $htmlShareButtons .= '<img title="Google+" class="wpcsv" src="' . $googleimgsrc . '" alt="Google+" />';
925
+ $htmlShareButtons .= '</a>';
926
+ $htmlShareButtons .= '</span>';
927
+
928
+ //Linked in
929
+ $htmlShareButtons .= '<span class="sociallink">';
930
+ $htmlShareButtons .= '<a id="wpcsv_linkedin_share" class="wpcsv_share_link" href="http://www.linkedin.com/shareArticle?mini=true&url=' . urlencode($urlCurrentPage) . '&title='.urlencode($strPageTitle).'&source='.$linked_in_username.'" target="_blank" >';
931
+ $htmlShareButtons .= '<img title="LinkedIn" class="wpcsv" src="' . $linkedimgsrc . '" alt="LinkedIn" />';
932
+ $htmlShareButtons .= '</a>';
933
+ $htmlShareButtons .= '</span>';
934
+
935
+ //Twitter
936
+ $username = "smackcoders";
937
+ // format the URL into friendly code
938
+ $twitterShareText = urlencode(html_entity_decode($strPageTitle . ' ', ENT_COMPAT, 'UTF-8'));
939
+ // twitter share link
940
+ $htmlShareButtons .= '<span class="sociallink">';
941
+ $htmlShareButtons .= '<a id="wpcsv_twitter_share" href="http://twitter.com/share?url=' . $urlCurrentPage .'&via='.$username.'&related='.$username.'&text=' . $twitterShareText . '" target="_blank">';
942
+ $htmlShareButtons .= '<img title="Twitter" class="wpcsv" src="' . $twitimgsrc . '" alt="Twitter" />';
943
+ $htmlShareButtons .= '</a>';
944
+ $htmlShareButtons .= '</span>';
945
+ echo $htmlShareButtons;
946
+ }
947
+
948
+ public function common_footer() {
949
+ $get_pluginData = get_plugin_data(plugin_dir_path( __FILE__ ).'../index.php');
950
+ $footer = '';
951
+ $footer .= '<div style="padding:10px;">';
952
+ $footer .= '<label class="plugintags"><a href="http://www.wpultimatecsvimporter.com" target="_blank">Home</a></label> <label class="plugintags"><a href="http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer" target="_blank">Wiki</a></label>
953
+ <label class="plugintags"><a href="http://www.wpultimatecsvimporter.com" target="_blank">Tutorials</a></label> <label class="plugintags"><a href="http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer_Videos" target="_blank">Videos</a></label>
954
+ <label class="plugintags"><a href="http://blog.smackcoders.com/wordpress-ultimate-csv-importer-csv-sample-files-and-updates.html" target="_blank">Sample Files</a></label>';
955
+ $footer .= '</div>';
956
+ $footer .= '<div style="padding:10px;margin-bottom:20px;">';
957
+ if(isset ($_REQUEST['__module']) && $_REQUEST['__module'] != 'settings')
958
+ $footer .= "<div style='float:right;margin-top:-49px;'><a class='label label-info' href='".get_admin_url()."admin.php?page=".WP_CONST_ULTIMATE_CSV_IMP_SLUG."/index.php&__module=settings'>Click here to Enable any disabled module</a></div>";
959
+ if(isset ($_REQUEST['__module']) && $_REQUEST['__module'] == 'settings') {
960
+ $footer .= "<div style='float:right;margin-top:-48px;'><span style='margin-right:20px;'><a class='label label-info' href='http://wordpress.org/plugins/wp-ultimate-csv-importer/developers/'>Get Old Versions</a></span><a class='label label-info' href='".get_admin_url()."admin.php?page=".WP_CONST_ULTIMATE_CSV_IMP_SLUG."/index.php&__module=support'>Click here to Get some useful links</a></div>";
961
+ $footer .= "<div style='float:right;margin-right:15px;'> </span> Current Version: ".$get_pluginData['Version']." </div>";
962
+ }
963
+ if(isset ($_REQUEST['__module']) && $_REQUEST['__module'] != 'support' && $_REQUEST['__module'] != 'settings') {
964
+ $footer .= "<div style='float:right;margin-right:225px;margin-top:-48px;'><span style='margin-right:20px;'> <a class='label label-info' href='http://wordpress.org/plugins/wp-ultimate-csv-importer/developers/'>Get Old Versions</a></span><a class='label label-info' href='".get_admin_url()."admin.php?page=".WP_CONST_ULTIMATE_CSV_IMP_SLUG."/index.php&__module=support'>Click here to Get some useful links</a></div>";
965
+ $footer .= "<div style='float:right;margin-right:15px;'> Current Version: ".$get_pluginData['Version']." </div>";
966
+ }
967
+ if(isset ($_REQUEST['__module']) && $_REQUEST['__module'] == 'support'){
968
+ $footer .= "<div style='float:right;margin-right:15px;'><span style='margin-right:20px;'>Current Version: ".$get_pluginData['Version']." </span><span style='margin-right:10px;'><a class='label label-info' href='http://wordpress.org/plugins/wp-ultimate-csv-importer/developers/'>Get Old Versions</a></span></div>";
969
+ }
970
+ $footer .= '</div>';
971
+ $footer .= '<div style="float:right;margin-right:15px;margin-top:-10px;"> <label>Plugin By <a href="http://www.smackcoders.com"> Smackcoders</a></label> </div>';
972
+ echo $footer;
973
+ }
974
+
975
+ function smack_csv_import_method() {
976
+
977
+ $smack_csv_import_method = '<div class="importfileoption">
978
+
979
+ <div align="center" style="text-align:left;margin-top:-33px;">
980
+ <div id="boxmethod1" class="method1">
981
+ <label><span class="radio-icon"><input type="radio" name="importmethod" id="uploadfilefromcomputer" onclick="choose_import_method(this.id);" checked/></span> <span class="header-text">' . __('From Computer') . '</span> </label> <br>
982
+ <!-- The fileinput-button span is used to style the file input field as button -->
983
+ <div id="method1" style="display:block;height:40px;">
984
+ <span class="btn btn-success fileinput-button">
985
+ <span>' . __('Browse') . '</span>
986
+ <input id="fileupload" type="file" name="files[]" multiple>
987
+ <a href="#" id="zip_process" style = "display:none"> Click Here To Process Zip </a>
988
+ </span>';
989
+ // The global progress bar
990
+ $smack_csv_import_method .= '<span style="padding-top:10px;">
991
+ <div id="progress" class="progress">
992
+ <div class="progress-bar progress-bar-success"></div>
993
+ <div align="center" id="helpnotify" style="width:100%;"><p class="msgborder" style="color:green;">' . __('You can also drag and drop files here') . '</div>
994
+ </div>
995
+ </span>
996
+ </div>
997
+ </div>
998
+ <div style = "opacity: 0.3;background-color: ghostwhite;">
999
+ <div id="boxmethod2" class="method2">
1000
+ <label><span class="radio-icon"><input type="radio" name="importmethod" id="dwnldftpfile" /></span> <span class="header-text">' . __('From FTP') . '</span> </label> <br>
1001
+ </div>
1002
+ <div id="boxmethod3" class="method3">
1003
+ <label> <span class="radio-icon"><input type="radio" name="importmethod" id="dwnldextrfile" /></span> <span class="header-text">' . __('From URL') . '</span></label> <br>
1004
+ </div>
1005
+ <div id="boxmethod4" class="method4">
1006
+ <label><span class="radio-icon"><input type="radio" name="importmethod" id="useuploadedfile" /></span> <span class="header-text">' . __('From Already Uploaded') . '</span></label> <br>
1007
+ </div>
1008
+ </div>
1009
+
1010
+ </div>
1011
+ </div>';
1012
+
1013
+ return $smack_csv_import_method;
1014
+ }
1015
  }
1016
 
1017
+
1018
  class CallWPImporterObj extends WPImporter_includes_helper
1019
  {
1020
+ private static $_instance = null;
1021
+ public static function getInstance()
1022
+ {
1023
+ if( !is_object(self::$_instance) ) //or if( is_null(self::$_instance) ) or if( self::$_instance == null )
1024
+ self::$_instance = new WPImporter_includes_helper();
1025
+ return self::$_instance;
1026
+ }
 
1027
  }
1028
+
1029
+
1030
+ class parseCSV {
1031
+
1032
+ /*
1033
+
1034
+ Class: parseCSV v0.4.3 beta
1035
+ http://code.google.com/p/parsecsv-for-php/
1036
+
1037
+
1038
+ Fully conforms to the specifications lined out on wikipedia:
1039
+ - http://en.wikipedia.org/wiki/Comma-separated_values
1040
+
1041
+ Based on the concept of Ming Hong Ng's CsvFileParser class:
1042
+ - http://minghong.blogspot.com/2006/07/csv-parser-for-php.html
1043
+
1044
+
1045
+
1046
+ Copyright (c) 2007 Jim Myhrberg (jim@zydev.info).
1047
+
1048
+ Permission is hereby granted, free of charge, to any person obtaining a copy
1049
+ of this software and associated documentation files (the "Software"), to deal
1050
+ in the Software without restriction, including without limitation the rights
1051
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1052
+ copies of the Software, and to permit persons to whom the Software is
1053
+ furnished to do so, subject to the following conditions:
1054
+
1055
+ The above copyright notice and this permission notice shall be included in
1056
+ all copies or substantial portions of the Software.
1057
+
1058
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1059
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1060
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1061
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1062
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1063
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
1064
+ THE SOFTWARE.
1065
+
1066
+
1067
+
1068
+ Code Examples
1069
+ ----------------
1070
+ # general usage
1071
+ $csv = new parseCSV('data.csv');
1072
+ print_r($csv->data);
1073
+ ----------------
1074
+ # tab delimited, and encoding conversion
1075
+ $csv = new parseCSV();
1076
+ $csv->encoding('UTF-16', 'UTF-8');
1077
+ $csv->delimiter = "\t";
1078
+ $csv->parse('data.tsv');
1079
+ print_r($csv->data);
1080
+ ----------------
1081
+ # auto-detect delimiter character
1082
+ $csv = new parseCSV();
1083
+ $csv->auto('data.csv');
1084
+ print_r($csv->data);
1085
+ ----------------
1086
+ # modify data in a csv file
1087
+ $csv = new parseCSV();
1088
+ $csv->sort_by = 'id';
1089
+ $csv->parse('data.csv');
1090
+ # "4" is the value of the "id" column of the CSV row
1091
+ $csv->data[4] = array('firstname' => 'John', 'lastname' => 'Doe', 'email' => 'john@doe.com');
1092
+ $csv->save();
1093
+ ----------------
1094
+ # add row/entry to end of CSV file
1095
+ # - only recommended when you know the extact sctructure of the file
1096
+ $csv = new parseCSV();
1097
+ $csv->save('data.csv', array(array('1986', 'Home', 'Nowhere', '')), true);
1098
+ ----------------
1099
+ # convert 2D array to csv data and send headers
1100
+ # to browser to treat output as a file and download it
1101
+ $csv = new parseCSV();
1102
+ $csv->output (true, 'movies.csv', $array);
1103
+ ----------------
1104
+
1105
+
1106
+ */
1107
+
1108
+
1109
+ /**
1110
+ * Configuration
1111
+ * - set these options with $object->var_name = 'value';
1112
+ */
1113
+
1114
+ # use first line/entry as field names
1115
+ var $heading = true;
1116
+
1117
+ # override field names
1118
+ var $fields = array();
1119
+
1120
+ # sort entries by this field
1121
+ var $sort_by = null;
1122
+ var $sort_reverse = false;
1123
+
1124
+ # sort behavior passed to ksort/krsort functions
1125
+ # regular = SORT_REGULAR
1126
+ # numeric = SORT_NUMERIC
1127
+ # string = SORT_STRING
1128
+ var $sort_type = null;
1129
+
1130
+ # delimiter (comma) and enclosure (double quote)
1131
+ var $delimiter = ',';
1132
+ var $enclosure = '"';
1133
+
1134
+ # basic SQL-like conditions for row matching
1135
+ var $conditions = null;
1136
+
1137
+ # number of rows to ignore from beginning of data
1138
+ var $offset = null;
1139
+
1140
+ # limits the number of returned rows to specified amount
1141
+ var $limit = null;
1142
+
1143
+ # number of rows to analyze when attempting to auto-detect delimiter
1144
+ var $auto_depth = 15;
1145
+
1146
+ # characters to ignore when attempting to auto-detect delimiter
1147
+ var $auto_non_chars = "a-zA-Z0-9\n\r";
1148
+
1149
+ # preferred delimiter characters, only used when all filtering method
1150
+ # returns multiple possible delimiters (happens very rarely)
1151
+ var $auto_preferred = ",;\t.:|";
1152
+
1153
+ # character encoding options
1154
+ var $convert_encoding = false;
1155
+ var $input_encoding = 'ISO-8859-1';
1156
+ var $output_encoding = 'ISO-8859-1';
1157
+
1158
+ # used by unparse(), save(), and output() functions
1159
+ var $linefeed = "\r\n";
1160
+
1161
+ # only used by output() function
1162
+ var $output_delimiter = ',';
1163
+ var $output_filename = 'data.csv';
1164
+
1165
+ # keep raw file data in memory after successful parsing (useful for debugging)
1166
+ var $keep_file_data = false;
1167
+
1168
+ /**
1169
+ * Internal variables
1170
+ */
1171
+
1172
+ # current file
1173
+ var $file;
1174
+
1175
+ # loaded file contents
1176
+ var $file_data;
1177
+
1178
+ # error while parsing input data
1179
+ # 0 = No errors found. Everything should be fine :)
1180
+ # 1 = Hopefully correctable syntax error was found.
1181
+ # 2 = Enclosure character (double quote by default)
1182
+ # was found in non-enclosed field. This means
1183
+ # the file is either corrupt, or does not
1184
+ # standard CSV formatting. Please validate
1185
+ # the parsed data yourself.
1186
+ var $error = 0;
1187
+
1188
+ # detailed error info
1189
+ var $error_info = array();
1190
+
1191
+ # array of field values in data parsed
1192
+ var $titles = array();
1193
+
1194
+ # two dimentional array of CSV data
1195
+ var $data = array();
1196
+
1197
+
1198
+ /**
1199
+ * Constructor
1200
+ * @param input CSV file or string
1201
+ * @return nothing
1202
+ */
1203
+ function parseCSV ($input = null, $offset = null, $limit = null, $conditions = null) {
1204
+ if ( $offset !== null ) $this->offset = $offset;
1205
+ if ( $limit !== null ) $this->limit = $limit;
1206
+ if ( count($conditions) > 0 ) $this->conditions = $conditions;
1207
+ if ( !empty($input) ) $this->parse($input);
1208
+ }
1209
+
1210
+
1211
+ // ==============================================
1212
+ // ----- [ Main Functions ] ---------------------
1213
+ // ==============================================
1214
+
1215
+ /**
1216
+ * Parse CSV file or string
1217
+ * @param input CSV file or string
1218
+ * @return nothing
1219
+ */
1220
+ function parse ($input = null, $offset = null, $limit = null, $conditions = null) {
1221
+ if ( $input === null ) $input = $this->file;
1222
+ if ( !empty($input) ) {
1223
+ if ( $offset !== null ) $this->offset = $offset;
1224
+ if ( $limit !== null ) $this->limit = $limit;
1225
+ if ( count($conditions) > 0 ) $this->conditions = $conditions;
1226
+ if ( is_readable($input) ) {
1227
+ $this->data = $this->parse_file($input);
1228
+ } else {
1229
+ $this->file_data = &$input;
1230
+ $this->data = $this->parse_string();
1231
+ }
1232
+ if ( $this->data === false ) return false;
1233
+ }
1234
+ return true;
1235
+ }
1236
+
1237
+ /**
1238
+ * Save changes, or new file and/or data
1239
+ * @param file file to save to
1240
+ * @param data 2D array with data
1241
+ * @param append append current data to end of target CSV if exists
1242
+ * @param fields field names
1243
+ * @return true or false
1244
+ */
1245
+ function save ($file = null, $data = array(), $append = false, $fields = array()) {
1246
+ if ( empty($file) ) $file = &$this->file;
1247
+ $mode = ( $append ) ? 'at' : 'wt' ;
1248
+ $is_php = ( preg_match('/\.php$/i', $file) ) ? true : false ;
1249
+ return $this->_wfile($file, $this->unparse($data, $fields, $append, $is_php), $mode);
1250
+ }
1251
+
1252
+ /**
1253
+ * Generate CSV based string for output
1254
+ * @param filename if specified, headers and data will be output directly to browser as a downloable file
1255
+ * @param data 2D array with data
1256
+ * @param fields field names
1257
+ * @param delimiter delimiter used to separate data
1258
+ * @return CSV data using delimiter of choice, or default
1259
+ */
1260
+ function output ($filename = null, $data = array(), $fields = array(), $delimiter = null) {
1261
+ if ( empty($filename) ) $filename = $this->output_filename;
1262
+ if ( $delimiter === null ) $delimiter = $this->output_delimiter;
1263
+ $data = $this->unparse($data, $fields, null, null, $delimiter);
1264
+ if ( $filename !== null ) {
1265
+ header('Content-type: application/csv');
1266
+ header('Content-Disposition: attachment; filename="'.$filename.'"');
1267
+ echo $data;
1268
+ }
1269
+ return $data;
1270
+ }
1271
+
1272
+ /**
1273
+ * Convert character encoding
1274
+ * @param input input character encoding, uses default if left blank
1275
+ * @param output output character encoding, uses default if left blank
1276
+ * @return nothing
1277
+ */
1278
+ function encoding ($input = null, $output = null) {
1279
+ $this->convert_encoding = true;
1280
+ if ( $input !== null ) $this->input_encoding = $input;
1281
+ if ( $output !== null ) $this->output_encoding = $output;
1282
+ }
1283
+
1284
+ /**
1285
+ * Auto-Detect Delimiter: Find delimiter by analyzing a specific number of
1286
+ * rows to determine most probable delimiter character
1287
+ * @param file local CSV file
1288
+ * @param parse true/false parse file directly
1289
+ * @param search_depth number of rows to analyze
1290
+ * @param preferred preferred delimiter characters
1291
+ * @param enclosure enclosure character, default is double quote (").
1292
+ * @return delimiter character
1293
+ */
1294
+ function auto ($file = null, $parse = true, $search_depth = null, $preferred = null, $enclosure = null) {
1295
+
1296
+ if ( $file === null ) $file = $this->file;
1297
+ if ( empty($search_depth) ) $search_depth = $this->auto_depth;
1298
+ if ( $enclosure === null ) $enclosure = $this->enclosure;
1299
+
1300
+ if ( $preferred === null ) $preferred = $this->auto_preferred;
1301
+
1302
+ if ( empty($this->file_data) ) {
1303
+ if ( $this->_check_data($file) ) {
1304
+ $data = &$this->file_data;
1305
+ } else return false;
1306
+ } else {
1307
+ $data = &$this->file_data;
1308
+ }
1309
+
1310
+ $chars = array();
1311
+ $strlen = strlen($data);
1312
+ $enclosed = false;
1313
+ $n = 1;
1314
+ $to_end = true;
1315
+
1316
+ // walk specific depth finding posssible delimiter characters
1317
+ for ( $i=0; $i < $strlen; $i++ ) {
1318
+ $ch = $data{$i};
1319
+ $nch = ( isset($data{$i+1}) ) ? $data{$i+1} : false ;
1320
+ $pch = ( isset($data{$i-1}) ) ? $data{$i-1} : false ;
1321
+
1322
+ // open and closing quotes
1323
+ if ( $ch == $enclosure ) {
1324
+ if ( !$enclosed || $nch != $enclosure ) {
1325
+ $enclosed = ( $enclosed ) ? false : true ;
1326
+ } elseif ( $enclosed ) {
1327
+ $i++;
1328
+ }
1329
+
1330
+ // end of row
1331
+ } elseif ( ($ch == "\n" && $pch != "\r" || $ch == "\r") && !$enclosed ) {
1332
+ if ( $n >= $search_depth ) {
1333
+ $strlen = 0;
1334
+ $to_end = false;
1335
+ } else {
1336
+ $n++;
1337
+ }
1338
+
1339
+ // count character
1340
+ } elseif (!$enclosed) {
1341
+ if ( !preg_match('/['.preg_quote($this->auto_non_chars, '/').']/i', $ch) ) {
1342
+ if ( !isset($chars[$ch][$n]) ) {
1343
+ $chars[$ch][$n] = 1;
1344
+ } else {
1345
+ $chars[$ch][$n]++;
1346
+ }
1347
+ }
1348
+ }
1349
+ }
1350
+
1351
+ // filtering
1352
+ $depth = ( $to_end ) ? $n-1 : $n ;
1353
+ $filtered = array();
1354
+ foreach( $chars as $char => $value ) {
1355
+ if ( $match = $this->_check_count($char, $value, $depth, $preferred) ) {
1356
+ $filtered[$match] = $char;
1357
+ }
1358
+ }
1359
+
1360
+ // capture most probable delimiter
1361
+ ksort($filtered);
1362
+ $this->delimiter = reset($filtered);
1363
+
1364
+ // parse data
1365
+ if ( $parse ) $this->data = $this->parse_string();
1366
+
1367
+ return $this->delimiter;
1368
+
1369
+ }
1370
+
1371
+
1372
+ // ==============================================
1373
+ // ----- [ Core Functions ] ---------------------
1374
+ // ==============================================
1375
+
1376
+ /**
1377
+ * Read file to string and call parse_string()
1378
+ * @param file local CSV file
1379
+ * @return 2D array with CSV data, or false on failure
1380
+ */
1381
+ function parse_file ($file = null) {
1382
+ if ( $file === null ) $file = $this->file;
1383
+ if ( empty($this->file_data) ) $this->load_data($file);
1384
+ return ( !empty($this->file_data) ) ? $this->parse_string() : false ;
1385
+ }
1386
+
1387
+ /**
1388
+ * Parse CSV strings to arrays
1389
+ * @param data CSV string
1390
+ * @return 2D array with CSV data, or false on failure
1391
+ */
1392
+ function parse_string ($data = null) {
1393
+ if ( empty($data) ) {
1394
+ if ( $this->_check_data() ) {
1395
+ $data = &$this->file_data;
1396
+ } else return false;
1397
+ }
1398
+
1399
+ $white_spaces = str_replace($this->delimiter, '', " \t\x0B\0");
1400
+
1401
+ $rows = array();
1402
+ $row = array();
1403
+ $row_count = 0;
1404
+ $current = '';
1405
+ $head = ( !empty($this->fields) ) ? $this->fields : array() ;
1406
+ $col = 0;
1407
+ $enclosed = false;
1408
+ $was_enclosed = false;
1409
+ $strlen = strlen($data);
1410
+
1411
+ // walk through each character
1412
+ for ( $i=0; $i < $strlen; $i++ ) {
1413
+ $ch = $data{$i};
1414
+ $nch = ( isset($data{$i+1}) ) ? $data{$i+1} : false ;
1415
+ $pch = ( isset($data{$i-1}) ) ? $data{$i-1} : false ;
1416
+
1417
+ // open/close quotes, and inline quotes
1418
+ if ( $ch == $this->enclosure ) {
1419
+ if ( !$enclosed ) {
1420
+ if ( ltrim($current, $white_spaces) == '' ) {
1421
+ $enclosed = true;
1422
+ $was_enclosed = true;
1423
+ } else {
1424
+ $this->error = 2;
1425
+ $error_row = count($rows) + 1;
1426
+ $error_col = $col + 1;
1427
+ if ( !isset($this->error_info[$error_row.'-'.$error_col]) ) {
1428
+ $this->error_info[$error_row.'-'.$error_col] = array(
1429
+ 'type' => 2,
1430
+ 'info' => 'Syntax error found on row '.$error_row.'. Non-enclosed fields can not contain double-quotes.',
1431
+ 'row' => $error_row,
1432
+ 'field' => $error_col,
1433
+ 'field_name' => (!empty($head[$col])) ? $head[$col] : null,
1434
+ );
1435
+ }
1436
+ $current .= $ch;
1437
+ }
1438
+ } elseif ($nch == $this->enclosure) {
1439
+ $current .= $ch;
1440
+ $i++;
1441
+ } elseif ( $nch != $this->delimiter && $nch != "\r" && $nch != "\n" ) {
1442
+ for ( $x=($i+1); isset($data{$x}) && ltrim($data{$x}, $white_spaces) == ''; $x++ ) {}
1443
+ if ( $data{$x} == $this->delimiter ) {
1444
+ $enclosed = false;
1445
+ $i = $x;
1446
+ } else {
1447
+ if ( $this->error < 1 ) {
1448
+ $this->error = 1;
1449
+ }
1450
+ $error_row = count($rows) + 1;
1451
+ $error_col = $col + 1;
1452
+ if ( !isset($this->error_info[$error_row.'-'.$error_col]) ) {
1453
+ $this->error_info[$error_row.'-'.$error_col] = array(
1454
+ 'type' => 1,
1455
+ 'info' =>
1456
+ 'Syntax error found on row '.(count($rows) + 1).'. '.
1457
+ 'A single double-quote was found within an enclosed string. '.
1458
+ 'Enclosed double-quotes must be escaped with a second double-quote.',
1459
+ 'row' => count($rows) + 1,
1460
+ 'field' => $col + 1,
1461
+ 'field_name' => (!empty($head[$col])) ? $head[$col] : null,
1462
+ );
1463
+ }
1464
+ $current .= $ch;
1465
+ $enclosed = false;
1466
+ }
1467
+ } else {
1468
+ $enclosed = false;
1469
+ }
1470
+
1471
+ // end of field/row
1472
+ } elseif ( ($ch == $this->delimiter || $ch == "\n" || $ch == "\r") && !$enclosed ) {
1473
+ $key = ( !empty($head[$col]) ) ? $head[$col] : $col ;
1474
+ $row[$key] = ( $was_enclosed ) ? $current : trim($current) ;
1475
+ $current = '';
1476
+ $was_enclosed = false;
1477
+ $col++;
1478
+
1479
+ // end of row
1480
+ if ( $ch == "\n" || $ch == "\r" ) {
1481
+ if ( $this->_validate_offset($row_count) && $this->_validate_row_conditions($row, $this->conditions) ) {
1482
+ if ( $this->heading && empty($head) ) {
1483
+ $head = $row;
1484
+ } elseif ( empty($this->fields) || (!empty($this->fields) && (($this->heading && $row_count > 0) || !$this->heading)) ) {
1485
+ if ( !empty($this->sort_by) && !empty($row[$this->sort_by]) ) {
1486
+ if ( isset($rows[$row[$this->sort_by]]) ) {
1487
+ $rows[$row[$this->sort_by].'_0'] = &$rows[$row[$this->sort_by]];
1488
+ unset($rows[$row[$this->sort_by]]);
1489
+ for ( $sn=1; isset($rows[$row[$this->sort_by].'_'.$sn]); $sn++ ) {}
1490
+ $rows[$row[$this->sort_by].'_'.$sn] = $row;
1491
+ } else $rows[$row[$this->sort_by]] = $row;
1492
+ } else $rows[] = $row;
1493
+ }
1494
+ }
1495
+ $row = array();
1496
+ $col = 0;
1497
+ $row_count++;
1498
+ if ( $this->sort_by === null && $this->limit !== null && count($rows) == $this->limit ) {
1499
+ $i = $strlen;
1500
+ }
1501
+ if ( $ch == "\r" && $nch == "\n" ) $i++;
1502
+ }
1503
+
1504
+ // append character to current field
1505
+ } else {
1506
+ $current .= $ch;
1507
+ }
1508
+ }
1509
+ $this->titles = $head;
1510
+ if ( !empty($this->sort_by) ) {
1511
+ $sort_type = SORT_REGULAR;
1512
+ if ( $this->sort_type == 'numeric' ) {
1513
+ $sort_type = SORT_NUMERIC;
1514
+ } elseif ( $this->sort_type == 'string' ) {
1515
+ $sort_type = SORT_STRING;
1516
+ }
1517
+ ( $this->sort_reverse ) ? krsort($rows, $sort_type) : ksort($rows, $sort_type) ;
1518
+ if ( $this->offset !== null || $this->limit !== null ) {
1519
+ $rows = array_slice($rows, ($this->offset === null ? 0 : $this->offset) , $this->limit, true);
1520
+ }
1521
+ }
1522
+ if ( !$this->keep_file_data ) {
1523
+ $this->file_data = null;
1524
+ }
1525
+ return $rows;
1526
+ }
1527
+
1528
+ /**
1529
+ * Create CSV data from array
1530
+ * @param data 2D array with data
1531
+ * @param fields field names
1532
+ * @param append if true, field names will not be output
1533
+ * @param is_php if a php die() call should be put on the first
1534
+ * line of the file, this is later ignored when read.
1535
+ * @param delimiter field delimiter to use
1536
+ * @return CSV data (text string)
1537
+ */
1538
+ function unparse ( $data = array(), $fields = array(), $append = false , $is_php = false, $delimiter = null) {
1539
+ if ( !is_array($data) || empty($data) ) $data = &$this->data;
1540
+ if ( !is_array($fields) || empty($fields) ) $fields = &$this->titles;
1541
+ if ( $delimiter === null ) $delimiter = $this->delimiter;
1542
+
1543
+ $string = ( $is_php ) ? "<?php header('Status: 403'); die(' '); ?>".$this->linefeed : '' ;
1544
+ $entry = array();
1545
+
1546
+ // create heading
1547
+ if ( $this->heading && !$append && !empty($fields) ) {
1548
+ foreach( $fields as $key => $value ) {
1549
+ $entry[] = $this->_enclose_value($value);
1550
+ }
1551
+ $string .= implode($delimiter, $entry).$this->linefeed;
1552
+ $entry = array();
1553
+ }
1554
+
1555
+ // create data
1556
+ foreach( $data as $key => $row ) {
1557
+ foreach( $row as $field => $value ) {
1558
+ $entry[] = $this->_enclose_value($value);
1559
+ }
1560
+ $string .= implode($delimiter, $entry).$this->linefeed;
1561
+ $entry = array();
1562
+ }
1563
+
1564
+ return $string;
1565
+ }
1566
+
1567
+ /**
1568
+ * Load local file or string
1569
+ * @param input local CSV file
1570
+ * @return true or false
1571
+ */
1572
+ function load_data ($input = null) {
1573
+ $data = null;
1574
+ $file = null;
1575
+ if ( $input === null ) {
1576
+ $file = $this->file;
1577
+ } elseif ( file_exists($input) ) {
1578
+ $file = $input;
1579
+ } else {
1580
+ $data = $input;
1581
+ }
1582
+ if ( !empty($data) || $data = $this->_rfile($file) ) {
1583
+ if ( $this->file != $file ) $this->file = $file;
1584
+ if ( preg_match('/\.php$/i', $file) && preg_match('/<\?.*?\?>(.*)/ims', $data, $strip) ) {
1585
+ $data = ltrim($strip[1]);
1586
+ }
1587
+ if ( $this->convert_encoding ) $data = iconv($this->input_encoding, $this->output_encoding, $data);
1588
+ if ( substr($data, -1) != "\n" ) $data .= "\n";
1589
+ $this->file_data = &$data;
1590
+ return true;
1591
+ }
1592
+ return false;
1593
+ }
1594
+
1595
+
1596
+ // ==============================================
1597
+ // ----- [ Internal Functions ] -----------------
1598
+ // ==============================================
1599
+
1600
+ /**
1601
+ * Validate a row against specified conditions
1602
+ * @param row array with values from a row
1603
+ * @param conditions specified conditions that the row must match
1604
+ * @return true of false
1605
+ */
1606
+ function _validate_row_conditions ($row = array(), $conditions = null) {
1607
+ if ( !empty($row) ) {
1608
+ if ( !empty($conditions) ) {
1609
+ $conditions = (strpos($conditions, ' OR ') !== false) ? explode(' OR ', $conditions) : array($conditions) ;
1610
+ $or = '';
1611
+ foreach( $conditions as $key => $value ) {
1612
+ if ( strpos($value, ' AND ') !== false ) {
1613
+ $value = explode(' AND ', $value);
1614
+ $and = '';
1615
+ foreach( $value as $k => $v ) {
1616
+ $and .= $this->_validate_row_condition($row, $v);
1617
+ }
1618
+ $or .= (strpos($and, '0') !== false) ? '0' : '1' ;
1619
+ } else {
1620
+ $or .= $this->_validate_row_condition($row, $value);
1621
+ }
1622
+ }
1623
+ return (strpos($or, '1') !== false) ? true : false ;
1624
+ }
1625
+ return true;
1626
+ }
1627
+ return false;
1628
+ }
1629
+
1630
+ /**
1631
+ * Validate a row against a single condition
1632
+ * @param row array with values from a row
1633
+ * @param condition specified condition that the row must match
1634
+ * @return true of false
1635
+ */
1636
+ function _validate_row_condition ($row, $condition) {
1637
+ $operators = array(
1638
+ '=', 'equals', 'is',
1639
+ '!=', 'is not',
1640
+ '<', 'is less than',
1641
+ '>', 'is greater than',
1642
+ '<=', 'is less than or equals',
1643
+ '>=', 'is greater than or equals',
1644
+ 'contains',
1645
+ 'does not contain',
1646
+ );
1647
+ $operators_regex = array();
1648
+ foreach( $operators as $value ) {
1649
+ $operators_regex[] = preg_quote($value, '/');
1650
+ }
1651
+ $operators_regex = implode('|', $operators_regex);
1652
+ if ( preg_match('/^(.+) ('.$operators_regex.') (.+)$/i', trim($condition), $capture) ) {
1653
+ $field = $capture[1];
1654
+ $op = $capture[2];
1655
+ $value = $capture[3];
1656
+ if ( preg_match('/^([\'\"]{1})(.*)([\'\"]{1})$/i', $value, $capture) ) {
1657
+ if ( $capture[1] == $capture[3] ) {
1658
+ $value = $capture[2];
1659
+ $value = str_replace("\\n", "\n", $value);
1660
+ $value = str_replace("\\r", "\r", $value);
1661
+ $value = str_replace("\\t", "\t", $value);
1662
+ $value = stripslashes($value);
1663
+ }
1664
+ }
1665
+ if ( array_key_exists($field, $row) ) {
1666
+ if ( ($op == '=' || $op == 'equals' || $op == 'is') && $row[$field] == $value ) {
1667
+ return '1';
1668
+ } elseif ( ($op == '!=' || $op == 'is not') && $row[$field] != $value ) {
1669
+ return '1';
1670
+ } elseif ( ($op == '<' || $op == 'is less than' ) && $row[$field] < $value ) {
1671
+ return '1';
1672
+ } elseif ( ($op == '>' || $op == 'is greater than') && $row[$field] > $value ) {
1673
+ return '1';
1674
+ } elseif ( ($op == '<=' || $op == 'is less than or equals' ) && $row[$field] <= $value ) {
1675
+ return '1';
1676
+ } elseif ( ($op == '>=' || $op == 'is greater than or equals') && $row[$field] >= $value ) {
1677
+ return '1';
1678
+ } elseif ( $op == 'contains' && preg_match('/'.preg_quote($value, '/').'/i', $row[$field]) ) {
1679
+ return '1';
1680
+ } elseif ( $op == 'does not contain' && !preg_match('/'.preg_quote($value, '/').'/i', $row[$field]) ) {
1681
+ return '1';
1682
+ } else {
1683
+ return '0';
1684
+ }
1685
+ }
1686
+ }
1687
+ return '1';
1688
+ }
1689
+
1690
+ /**
1691
+ * Validates if the row is within the offset or not if sorting is disabled
1692
+ * @param current_row the current row number being processed
1693
+ * @return true of false
1694
+ */
1695
+ function _validate_offset ($current_row) {
1696
+ if ( $this->sort_by === null && $this->offset !== null && $current_row < $this->offset ) return false;
1697
+ return true;
1698
+ }
1699
+
1700
+ /**
1701
+ * Enclose values if needed
1702
+ * - only used by unparse()
1703
+ * @param value string to process
1704
+ * @return Processed value
1705
+ */
1706
+ function _enclose_value ($value = null) {
1707
+ if ( $value !== null && $value != '' ) {
1708
+ $delimiter = preg_quote($this->delimiter, '/');
1709
+ $enclosure = preg_quote($this->enclosure, '/');
1710
+ if ( preg_match("/".$delimiter."|".$enclosure."|\n|\r/i", $value) || ($value{0} == ' ' || substr($value, -1) == ' ') ) {
1711
+ $value = str_replace($this->enclosure, $this->enclosure.$this->enclosure, $value);
1712
+ $value = $this->enclosure.$value.$this->enclosure;
1713
+ }
1714
+ }
1715
+ return $value;
1716
+ }
1717
+
1718
+ /**
1719
+ * Check file data
1720
+ * @param file local filename
1721
+ * @return true or false
1722
+ */
1723
+ function _check_data ($file = null) {
1724
+ if ( empty($this->file_data) ) {
1725
+ if ( $file === null ) $file = $this->file;
1726
+ return $this->load_data($file);
1727
+ }
1728
+ return true;
1729
+ }
1730
+
1731
+
1732
+ /**
1733
+ * Check if passed info might be delimiter
1734
+ * - only used by find_delimiter()
1735
+ * @return special string used for delimiter selection, or false
1736
+ */
1737
+ function _check_count ($char, $array, $depth, $preferred) {
1738
+ if ( $depth == count($array) ) {
1739
+ $first = null;
1740
+ $equal = null;
1741
+ $almost = false;
1742
+ foreach( $array as $key => $value ) {
1743
+ if ( $first == null ) {
1744
+ $first = $value;
1745
+ } elseif ( $value == $first && $equal !== false) {
1746
+ $equal = true;
1747
+ } elseif ( $value == $first+1 && $equal !== false ) {
1748
+ $equal = true;
1749
+ $almost = true;
1750
+ } else {
1751
+ $equal = false;
1752
+ }
1753
+ }
1754
+ if ( $equal ) {
1755
+ $match = ( $almost ) ? 2 : 1 ;
1756
+ $pref = strpos($preferred, $char);
1757
+ $pref = ( $pref !== false ) ? str_pad($pref, 3, '0', STR_PAD_LEFT) : '999' ;
1758
+ return $pref.$match.'.'.(99999 - str_pad($first, 5, '0', STR_PAD_LEFT));
1759
+ } else return false;
1760
+ }
1761
+ }
1762
+
1763
+ /**
1764
+ * Read local file
1765
+ * @param file local filename
1766
+ * @return Data from file, or false on failure
1767
+ */
1768
+ function _rfile ($file = null) {
1769
+ if ( is_readable($file) ) {
1770
+ if ( !($fh = fopen($file, 'r')) ) return false;
1771
+ $data = fread($fh, filesize($file));
1772
+ fclose($fh);
1773
+ return $data;
1774
+ }
1775
+ return false;
1776
+ }
1777
+
1778
+ /**
1779
+ * Write to local file
1780
+ * @param file local filename
1781
+ * @param string data to write to file
1782
+ * @param mode fopen() mode
1783
+ * @param lock flock() mode
1784
+ * @return true or false
1785
+ */
1786
+ function _wfile ($file, $string = '', $mode = 'wb', $lock = 2) {
1787
+ if ( $fp = fopen($file, $mode) ) {
1788
+ flock($fp, $lock);
1789
+ $re = fwrite($fp, $string);
1790
+ $re2 = fclose($fp);
1791
+ if ( $re != false && $re2 != false ) return true;
1792
+ }
1793
+ return false;
1794
+ }
1795
+
1796
+ }
1797
+
index.php CHANGED
@@ -2,11 +2,13 @@
2
  /******************************
3
  * Plugin Name: WP Ultimate CSV Importer
4
  * Description: A plugin that helps to import the data's from a CSV file.
5
- * Version: 3.5.5
6
  * Author: smackcoders.com
7
  * Plugin URI: http://www.smackcoders.com/wp-ultimate-csv-importer-pro.html
8
  * Author URI: http://www.smackcoders.com/wp-ultimate-csv-importer-pro.html
9
- *
 
 
10
  * WP Ultimate CSV Importer is a Tool for importing CSV for the Wordpress
11
  * plugin developed by Smackcoder. Copyright (C) 2014 Smackcoders.
12
  *
@@ -42,20 +44,21 @@
42
  * "Copyright Smackcoders. 2014. All rights reserved".
43
  ********************************************************************************/
44
 
45
- ini_set("display_errors", "Off");
46
  ob_start();
47
 
48
  define('WP_CONST_ULTIMATE_CSV_IMP_URL', 'http://www.smackcoders.com/wp-ultimate-csv-importer-pro.html');
49
  define('WP_CONST_ULTIMATE_CSV_IMP_NAME', 'WP Ultimate CSV Importer');
50
  define('WP_CONST_ULTIMATE_CSV_IMP_SLUG', 'wp-ultimate-csv-importer');
51
  define('WP_CONST_ULTIMATE_CSV_IMP_SETTINGS', 'WP Ultimate CSV Importer');
52
- define('WP_CONST_ULTIMATE_CSV_IMP_VERSION', '3.5.5');
53
  define('WP_CONST_ULTIMATE_CSV_IMP_DIR', WP_PLUGIN_URL . '/' . WP_CONST_ULTIMATE_CSV_IMP_SLUG . '/');
54
  define('WP_CONST_ULTIMATE_CSV_IMP_DIRECTORY', plugin_dir_path(__FILE__));
55
  define('WP_CSVIMP_PLUGIN_BASE', WP_CONST_ULTIMATE_CSV_IMP_DIRECTORY);
56
 
57
- if (!class_exists('SkinnyControllerWPCsvFree'))
58
- require_once('lib/skinnymvc/controller/SkinnyController.php');
 
59
 
60
  require_once('includes/WPImporter_includes_helper.php');
61
 
@@ -63,44 +66,131 @@ require_once('includes/WPImporter_includes_helper.php');
63
  register_activation_hook(__FILE__, array('WPImporter_includes_helper', 'activate'));
64
  register_deactivation_hook(__FILE__, array('WPImporter_includes_helper', 'deactivate'));
65
 
66
- function action_csv_imp_admin_menu()
67
- {
68
- add_menu_page(WP_CONST_ULTIMATE_CSV_IMP_SETTINGS, WP_CONST_ULTIMATE_CSV_IMP_NAME, 'manage_options', __FILE__, array('WPImporter_includes_helper', 'output_fd_page'), WP_CONST_ULTIMATE_CSV_IMP_DIR . "images/icon.png");
 
 
 
 
 
 
 
 
 
 
69
  }
70
 
71
  add_action("admin_menu", "action_csv_imp_admin_menu");
72
 
73
- function action_csv_imp_admin_init()
74
- {
75
- if (isset($_REQUEST['page']) && ($_REQUEST['page'] == 'wp-ultimate-csv-importer/index.php' || $_REQUEST['page'] == 'page')) {
76
- wp_enqueue_script('jquery-ui-datepicker');
77
- wp_enqueue_style('jquery-style', plugins_url('css/jquery-ui.css', __FILE__));
78
- wp_register_script('ultimate-importer-js', plugins_url('js/ultimate-importer-pro.js', __FILE__));
79
- wp_enqueue_script('ultimate-importer-js');
80
- wp_register_script('ultimate-importer-button', plugins_url('js/buttons.js', __FILE__));
81
- wp_enqueue_script('ultimate-importer-button');
82
- wp_enqueue_style('ultimate_importer_font_awesome', plugins_url('css/font-awesome.css', __FILE__));
83
- wp_register_script('jquery-min', plugins_url('js/jquery.js', __FILE__));
84
- wp_enqueue_script('jquery-min');
85
- wp_register_script('jquery-widget', plugins_url('js/jquery.ui.widget.js', __FILE__));
86
- wp_enqueue_script('jquery-widget');
87
- wp_register_script('jquery-fileupload', plugins_url('js/jquery.fileupload.js', __FILE__));
88
- wp_enqueue_script('jquery-fileupload');
89
- wp_register_script('bootstrap-collapse', plugins_url('js/bootstrap-collapse.js', __FILE__));
90
- wp_enqueue_script('bootstrap-collapse');
91
- wp_enqueue_style('style', plugins_url('css/style.css', __FILE__));
92
- wp_enqueue_style('jquery-fileupload', plugins_url('css/jquery.fileupload.css', __FILE__));
93
- wp_enqueue_style('bootstrap-css', plugins_url('css/bootstrap.css', __FILE__));
94
- wp_enqueue_style('ultimate-importer-css', plugins_url('css/main.css', __FILE__));
95
- }
 
 
 
 
 
 
 
96
  }
97
 
98
  add_action('admin_init', 'action_csv_imp_admin_init');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99
 
100
- function importByRequest()
101
- {
102
- require_once("templates/import.php");
103
- die;
104
  }
105
 
106
  add_action('wp_ajax_importByRequest', 'importByRequest');
@@ -109,14 +199,12 @@ add_action('init', 'myStartSession', 1);
109
  add_action('wp_logout', 'myEndSession');
110
  add_action('wp_login', 'myEndSession');
111
 
112
- function myStartSession()
113
- {
114
- if (!session_id()) {
115
- session_start();
116
- }
117
  }
118
 
119
- function myEndSession()
120
- {
121
- session_destroy();
122
  }
2
  /******************************
3
  * Plugin Name: WP Ultimate CSV Importer
4
  * Description: A plugin that helps to import the data's from a CSV file.
5
+ * Version: 3.6
6
  * Author: smackcoders.com
7
  * Plugin URI: http://www.smackcoders.com/wp-ultimate-csv-importer-pro.html
8
  * Author URI: http://www.smackcoders.com/wp-ultimate-csv-importer-pro.html
9
+ */
10
+
11
+ /*********************************************************************************
12
  * WP Ultimate CSV Importer is a Tool for importing CSV for the Wordpress
13
  * plugin developed by Smackcoder. Copyright (C) 2014 Smackcoders.
14
  *
44
  * "Copyright Smackcoders. 2014. All rights reserved".
45
  ********************************************************************************/
46
 
47
+ ini_set('display_errors', 'Off');
48
  ob_start();
49
 
50
  define('WP_CONST_ULTIMATE_CSV_IMP_URL', 'http://www.smackcoders.com/wp-ultimate-csv-importer-pro.html');
51
  define('WP_CONST_ULTIMATE_CSV_IMP_NAME', 'WP Ultimate CSV Importer');
52
  define('WP_CONST_ULTIMATE_CSV_IMP_SLUG', 'wp-ultimate-csv-importer');
53
  define('WP_CONST_ULTIMATE_CSV_IMP_SETTINGS', 'WP Ultimate CSV Importer');
54
+ define('WP_CONST_ULTIMATE_CSV_IMP_VERSION', '3.6');
55
  define('WP_CONST_ULTIMATE_CSV_IMP_DIR', WP_PLUGIN_URL . '/' . WP_CONST_ULTIMATE_CSV_IMP_SLUG . '/');
56
  define('WP_CONST_ULTIMATE_CSV_IMP_DIRECTORY', plugin_dir_path(__FILE__));
57
  define('WP_CSVIMP_PLUGIN_BASE', WP_CONST_ULTIMATE_CSV_IMP_DIRECTORY);
58
 
59
+ if (!class_exists('SkinnyControllerWPCsvFree')) {
60
+ require_once('lib/skinnymvc/controller/SkinnyController.php');
61
+ }
62
 
63
  require_once('includes/WPImporter_includes_helper.php');
64
 
66
  register_activation_hook(__FILE__, array('WPImporter_includes_helper', 'activate'));
67
  register_deactivation_hook(__FILE__, array('WPImporter_includes_helper', 'deactivate'));
68
 
69
+ function action_csv_imp_admin_menu() {
70
+ if(!function_exists('wp_get_current_user')) {
71
+ include(ABSPATH . "wp-includes/pluggable.php");
72
+ }
73
+ if ( current_user_can( 'author' ) ) {
74
+ $HelperObj = new WPImporter_includes_helper();
75
+ $settings = $HelperObj->getSettings();
76
+ if(isset($settings['enable_plugin_access_for_author']) && $settings['enable_plugin_access_for_author'] == 'enable_plugin_access_for_author') {
77
+ add_menu_page(WP_CONST_ULTIMATE_CSV_IMP_SETTINGS, WP_CONST_ULTIMATE_CSV_IMP_NAME, '2', __FILE__, array('WPImporter_includes_helper', 'output_fd_page'), WP_CONST_ULTIMATE_CSV_IMP_DIR . "images/icon.png");
78
+ }
79
+ } else if ( current_user_can( 'administrator' ) ) {
80
+ add_menu_page(WP_CONST_ULTIMATE_CSV_IMP_SETTINGS, WP_CONST_ULTIMATE_CSV_IMP_NAME, 'manage_options', __FILE__, array('WPImporter_includes_helper', 'output_fd_page'), WP_CONST_ULTIMATE_CSV_IMP_DIR . "images/icon.png");
81
+ }
82
  }
83
 
84
  add_action("admin_menu", "action_csv_imp_admin_menu");
85
 
86
+ function action_csv_imp_admin_init() {
87
+ if (isset($_REQUEST['page']) && ($_REQUEST['page'] == 'wp-ultimate-csv-importer/index.php' || $_REQUEST['page'] == 'page')) {
88
+ wp_enqueue_script('jquery-ui-datepicker');
89
+ wp_enqueue_style('jquery-style', plugins_url('css/jquery-ui.css', __FILE__));
90
+ wp_register_script('ultimate-importer-js', plugins_url('js/ultimate-importer-pro.js', __FILE__));
91
+ wp_enqueue_script('ultimate-importer-js');
92
+ wp_register_script('ultimate-importer-button', plugins_url('js/buttons.js', __FILE__));
93
+ wp_enqueue_script('ultimate-importer-button');
94
+ wp_enqueue_style('ultimate_importer_font_awesome', plugins_url('css/font-awesome.css', __FILE__));
95
+ wp_register_script('jquery-min', plugins_url('js/jquery.js', __FILE__));
96
+ wp_enqueue_script('jquery-min');
97
+ wp_register_script('jquery-widget', plugins_url('js/jquery.ui.widget.js', __FILE__));
98
+ wp_enqueue_script('jquery-widget');
99
+ wp_register_script('jquery-fileupload', plugins_url('js/jquery.fileupload.js', __FILE__));
100
+ wp_enqueue_script('jquery-fileupload');
101
+ wp_register_script('bootstrap-collapse', plugins_url('js/bootstrap-collapse.js', __FILE__));
102
+ wp_enqueue_script('bootstrap-collapse');
103
+ wp_enqueue_style('style', plugins_url('css/style.css', __FILE__));
104
+ wp_enqueue_style('jquery-fileupload', plugins_url('css/jquery.fileupload.css', __FILE__));
105
+ wp_enqueue_style('bootstrap-css', plugins_url('css/bootstrap.css', __FILE__));
106
+ wp_enqueue_style('ultimate-importer-css', plugins_url('css/main.css', __FILE__));
107
+ // For chart js
108
+ wp_enqueue_script('high_chart', plugins_url('js/highcharts.js', __FILE__));
109
+ wp_enqueue_script('export_module', plugins_url('js/exporting,js', __FILE__));
110
+ wp_enqueue_script('pie_chart', plugins_url('js/highcharts-3d.js', __FILE__));
111
+ wp_enqueue_script('dropdown', plugins_url('js/dropdown.js', __FILE__));
112
+
113
+ wp_enqueue_script('data', plugins_url('js/dashchart.js', __FILE__));
114
+
115
+ }
116
  }
117
 
118
  add_action('admin_init', 'action_csv_imp_admin_init');
119
+ function firstchart() {
120
+ require_once("modules/dashboard/actions/chartone.php");
121
+ die();
122
+ }
123
+
124
+ add_action('wp_ajax_firstchart', 'firstchart');
125
+
126
+ function secondchart() {
127
+ require_once("modules/dashboard/actions/chartone.php");
128
+ die();
129
+ }
130
+
131
+ add_action('wp_ajax_secondchart', 'secondchart');
132
+
133
+ function thirdchart() {
134
+ require_once("modules/dashboard/actions/chartone.php");
135
+ die();
136
+ }
137
+
138
+ add_action('wp_ajax_thirdchart', 'thirdchart');
139
+
140
+
141
+ function roundchart() {
142
+ global $wpdb;
143
+ ob_flush();
144
+ require_once(WP_CONST_ULTIMATE_CSV_IMP_DIRECTORY . 'lib/skinnymvc/core/base/SkinnyBaseActions.php');
145
+ require_once(WP_CONST_ULTIMATE_CSV_IMP_DIRECTORY . 'lib/skinnymvc/core/SkinnyActions.php');
146
+
147
+ require_once("modules/dashboard/actions/actions.php");
148
+ ?>
149
+ <?php
150
+ $myObj = new DashboardActions(); //print_r($myObj);die;
151
+
152
+ $content = "<form name='piechart' onload='pieStats();'> <div id ='pieStats' style='height:250px;'>";
153
+ $content .= $myObj->piechart();
154
+ $content .= "</div></form>"; ?>
155
+ <!-- <input type='hidden' id ='checkmodule' value=''> <input type='hidden' id='log' value=''><input type='hidden' id='stepstatus' value=''><input type='hidden' id='checkfile' value=''><input type='hidden' id='uploadedFile' value=''><input type=><div id='pieStats'> </div> --><?php
156
+ echo $content;
157
+ }
158
+
159
+ function linetwoStats() {
160
+ global $wpdb;
161
+ ob_flush();
162
+ require_once(WP_CONST_ULTIMATE_CSV_IMP_DIRECTORY . 'lib/skinnymvc/core/base/SkinnyBaseActions.php');
163
+ require_once(WP_CONST_ULTIMATE_CSV_IMP_DIRECTORY . 'lib/skinnymvc/core/SkinnyActions.php');
164
+
165
+ require_once("modules/dashboard/actions/actions.php");
166
+ ?>
167
+ <?php
168
+ $myObj = new DashboardActions(); //print_r($myObj);die;
169
+
170
+ $content = "<form name='piechart' onload='pieStats();'> <div id ='lineStats' style='height:250px'>";
171
+ $content .= $myObj->getStatsWithDate();
172
+ $content .= "</div></form>"; ?>
173
+ <!-- <input type='hidden' id ='checkmodule' value=''> <input type='hidden' id='log' value=''><input type='hidden' id='stepstatus' value=''><input type='hidden' id='checkfile' value=''><input type='hidden' id='uploadedFile' value=''><input type=><div id='pieStats'> </div> --><?php
174
+ echo $content;
175
+ }
176
+
177
+
178
+ function wpcsvimporter_add_dashboard_widgets() {
179
+
180
+ wp_enqueue_script('dashpiechart', plugins_url('js/dashchart.js', __FILE__));
181
+ wp_enqueue_script('high_chart', plugins_url('js/highcharts.js', __FILE__));
182
+ wp_enqueue_script('export_module', plugins_url('js/exporting,js', __FILE__));
183
+ wp_enqueue_script('pie_chart', plugins_url('js/highcharts-3d.js', __FILE__));
184
+ wp_add_dashboard_widget('wpcsvimporter_dashboard_piehart', 'Ultimate-CSV-Importer-Statistics', 'roundchart',$screen = get_current_screen() , 'advanced' ,'high' );
185
+ wp_add_dashboard_widget('wpcsvimporter_dashboard_linechart', 'Ultimate-CSV-Importer-Activity', 'linetwoStats',$screen = get_current_screen(),'advanced','high');
186
+ }
187
+
188
+ add_action('wp_dashboard_setup', 'wpcsvimporter_add_dashboard_widgets');
189
+
190
 
191
+ function importByRequest() {
192
+ require_once("templates/import.php");
193
+ die;
 
194
  }
195
 
196
  add_action('wp_ajax_importByRequest', 'importByRequest');
199
  add_action('wp_logout', 'myEndSession');
200
  add_action('wp_login', 'myEndSession');
201
 
202
+ function myStartSession() {
203
+ if (!session_id()) {
204
+ session_start();
205
+ }
 
206
  }
207
 
208
+ function myEndSession() {
209
+ session_destroy();
 
210
  }
js/bootstrap-collapse.js CHANGED
@@ -17,108 +17,120 @@
17
  * limitations under the License.
18
  * ============================================================ */
19
 
20
- !function ($) {
21
 
22
- "use strict"
23
 
24
- var Collapse = function (element, options) {
25
- this.$element = $(element)
26
- this.options = $.extend({}, $.fn.collapse.defaults, options)
27
 
28
- if (this.options["parent"]) {
29
- this.$parent = $(this.options["parent"])
30
- }
 
 
 
 
 
31
 
32
- this.options.toggle && this.toggle()
 
 
 
 
33
  }
34
 
35
- Collapse.prototype = {
36
-
37
- constructor: Collapse, dimension: function () {
38
- var hasWidth = this.$element.hasClass('width')
39
- return hasWidth ? 'width' : 'height'
40
- }, show: function () {
41
- var dimension = this.dimension()
42
- , scroll = $.camelCase(['scroll', dimension].join('-'))
43
- , actives = this.$parent && this.$parent.find('.in')
44
- , hasData
45
-
46
- if (actives && actives.length) {
47
- hasData = actives.data('collapse')
48
- actives.collapse('hide')
49
- hasData || actives.data('collapse', null)
50
- }
51
-
52
- this.$element[dimension](0)
53
- this.transition('addClass', 'show', 'shown')
54
- this.$element[dimension](this.$element[0][scroll])
55
-
56
- }, hide: function () {
57
- var dimension = this.dimension()
58
- this.reset(this.$element[dimension]())
59
- this.transition('removeClass', 'hide', 'hidden')
60
- this.$element[dimension](0)
61
- }, reset: function (size) {
62
- var dimension = this.dimension()
63
-
64
- this.$element
65
- .removeClass('collapse')
66
- [dimension](size || 'auto')
67
- [0].offsetWidth
68
-
69
- this.$element.addClass('collapse')
70
- }, transition: function (method, startEvent, completeEvent) {
71
- var that = this
72
- , complete = function () {
73
- if (startEvent == 'show') that.reset()
74
- that.$element.trigger(completeEvent)
75
- }
76
-
77
- this.$element
78
- .trigger(startEvent)
79
- [method]('in')
80
-
81
- $.support.transition && this.$element.hasClass('collapse') ?
82
- this.$element.one($.support.transition.end, complete) :
83
- complete()
84
- }, toggle: function () {
85
- this[this.$element.hasClass('in') ? 'hide' : 'show']()
86
- }
87
 
88
  }
89
 
90
- /* COLLAPSIBLE PLUGIN DEFINITION
91
- * ============================== */
92
-
93
- $.fn.collapse = function (option) {
94
- return this.each(function () {
95
- var $this = $(this)
96
- , data = $this.data('collapse')
97
- , options = typeof option == 'object' && option
98
- if (!data) $this.data('collapse', (data = new Collapse(this, options)))
99
- if (typeof option == 'string') data[option]()
100
- })
101
  }
102
 
103
- $.fn.collapse.defaults = {
104
- toggle: true
 
 
 
 
 
 
 
105
  }
106
 
107
- $.fn.collapse.Constructor = Collapse
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
108
 
109
 
110
- /* COLLAPSIBLE DATA-API
111
- * ==================== */
112
 
113
- $(function () {
114
- $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function (e) {
115
- var $this = $(this), href
116
- , target = $this.attr('data-target')
117
- || e.preventDefault()
118
- || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
119
- , option = $(target).data('collapse') ? 'toggle' : $this.data()
120
- $(target).collapse(option)
121
- })
122
  })
 
123
 
124
- }(window.jQuery);
17
  * limitations under the License.
18
  * ============================================================ */
19
 
20
+ !function( $ ){
21
 
22
+ "use strict"
23
 
24
+ var Collapse = function ( element, options ) {
25
+ this.$element = $(element)
26
+ this.options = $.extend({}, $.fn.collapse.defaults, options)
27
 
28
+ if (this.options["parent"]) {
29
+ this.$parent = $(this.options["parent"])
30
+ }
31
+
32
+ this.options.toggle && this.toggle()
33
+ }
34
+
35
+ Collapse.prototype = {
36
 
37
+ constructor: Collapse
38
+
39
+ , dimension: function () {
40
+ var hasWidth = this.$element.hasClass('width')
41
+ return hasWidth ? 'width' : 'height'
42
  }
43
 
44
+ , show: function () {
45
+ var dimension = this.dimension()
46
+ , scroll = $.camelCase(['scroll', dimension].join('-'))
47
+ , actives = this.$parent && this.$parent.find('.in')
48
+ , hasData
49
+
50
+ if (actives && actives.length) {
51
+ hasData = actives.data('collapse')
52
+ actives.collapse('hide')
53
+ hasData || actives.data('collapse', null)
54
+ }
55
+
56
+ this.$element[dimension](0)
57
+ this.transition('addClass', 'show', 'shown')
58
+ this.$element[dimension](this.$element[0][scroll])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
 
60
  }
61
 
62
+ , hide: function () {
63
+ var dimension = this.dimension()
64
+ this.reset(this.$element[dimension]())
65
+ this.transition('removeClass', 'hide', 'hidden')
66
+ this.$element[dimension](0)
 
 
 
 
 
 
67
  }
68
 
69
+ , reset: function ( size ) {
70
+ var dimension = this.dimension()
71
+
72
+ this.$element
73
+ .removeClass('collapse')
74
+ [dimension](size || 'auto')
75
+ [0].offsetWidth
76
+
77
+ this.$element.addClass('collapse')
78
  }
79
 
80
+ , transition: function ( method, startEvent, completeEvent ) {
81
+ var that = this
82
+ , complete = function () {
83
+ if (startEvent == 'show') that.reset()
84
+ that.$element.trigger(completeEvent)
85
+ }
86
+
87
+ this.$element
88
+ .trigger(startEvent)
89
+ [method]('in')
90
+
91
+ $.support.transition && this.$element.hasClass('collapse') ?
92
+ this.$element.one($.support.transition.end, complete) :
93
+ complete()
94
+ }
95
+
96
+ , toggle: function () {
97
+ this[this.$element.hasClass('in') ? 'hide' : 'show']()
98
+ }
99
+
100
+ }
101
+
102
+ /* COLLAPSIBLE PLUGIN DEFINITION
103
+ * ============================== */
104
+
105
+ $.fn.collapse = function ( option ) {
106
+ return this.each(function () {
107
+ var $this = $(this)
108
+ , data = $this.data('collapse')
109
+ , options = typeof option == 'object' && option
110
+ if (!data) $this.data('collapse', (data = new Collapse(this, options)))
111
+ if (typeof option == 'string') data[option]()
112
+ })
113
+ }
114
+
115
+ $.fn.collapse.defaults = {
116
+ toggle: true
117
+ }
118
+
119
+ $.fn.collapse.Constructor = Collapse
120
 
121
 
122
+ /* COLLAPSIBLE DATA-API
123
+ * ==================== */
124
 
125
+ $(function () {
126
+ $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function ( e ) {
127
+ var $this = $(this), href
128
+ , target = $this.attr('data-target')
129
+ || e.preventDefault()
130
+ || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
131
+ , option = $(target).data('collapse') ? 'toggle' : $this.data()
132
+ $(target).collapse(option)
 
133
  })
134
+ })
135
 
136
+ }( window.jQuery );
js/bootstrap.min.js CHANGED
@@ -1,563 +1,6 @@
1
  /**
2
- * bootstrap.js v3.0.0 by @fat and @mdo
3
- * Copyright 2013 Twitter Inc.
4
- * http://www.apache.org/licenses/LICENSE-2.0
5
- */
6
- if (!jQuery)throw new Error("Bootstrap requires jQuery");
7
- +function (a) {
8
- "use strict";
9
- function b() {
10
- var a = document.createElement("bootstrap"), b = {WebkitTransition: "webkitTransitionEnd", MozTransition: "transitionend", OTransition: "oTransitionEnd otransitionend", transition: "transitionend"};
11
- for (var c in b)if (void 0 !== a.style[c])return{end: b[c]}
12
- }
13
-
14
- a.fn.emulateTransitionEnd = function (b) {
15
- var c = !1, d = this;
16
- a(this).one(a.support.transition.end, function () {
17
- c = !0
18
- });
19
- var e = function () {
20
- c || a(d).trigger(a.support.transition.end)
21
- };
22
- return setTimeout(e, b), this
23
- }, a(function () {
24
- a.support.transition = b()
25
- })
26
- }(window.jQuery), +function (a) {
27
- "use strict";
28
- var b = '[data-dismiss="alert"]', c = function (c) {
29
- a(c).on("click", b, this.close)
30
- };
31
- c.prototype.close = function (b) {
32
- function c() {
33
- f.trigger("closed.bs.alert").remove()
34
- }
35
-
36
- var d = a(this), e = d.attr("data-target");
37
- e || (e = d.attr("href"), e = e && e.replace(/.*(?=#[^\s]*$)/, ""));
38
- var f = a(e);
39
- b && b.preventDefault(), f.length || (f = d.hasClass("alert") ? d : d.parent()), f.trigger(b = a.Event("close.bs.alert")), b.isDefaultPrevented() || (f.removeClass("in"), a.support.transition && f.hasClass("fade") ? f.one(a.support.transition.end, c).emulateTransitionEnd(150) : c())
40
- };
41
- var d = a.fn.alert;
42
- a.fn.alert = function (b) {
43
- return this.each(function () {
44
- var d = a(this), e = d.data("bs.alert");
45
- e || d.data("bs.alert", e = new c(this)), "string" == typeof b && e[b].call(d)
46
- })
47
- }, a.fn.alert.Constructor = c, a.fn.alert.noConflict = function () {
48
- return a.fn.alert = d, this
49
- }, a(document).on("click.bs.alert.data-api", b, c.prototype.close)
50
- }(window.jQuery), +function (a) {
51
- "use strict";
52
- var b = function (c, d) {
53
- this.$element = a(c), this.options = a.extend({}, b.DEFAULTS, d)
54
- };
55
- b.DEFAULTS = {loadingText: "loading..."}, b.prototype.setState = function (a) {
56
- var b = "disabled", c = this.$element, d = c.is("input") ? "val" : "html", e = c.data();
57
- a += "Text", e.resetText || c.data("resetText", c[d]()), c[d](e[a] || this.options[a]), setTimeout(function () {
58
- "loadingText" == a ? c.addClass(b).attr(b, b) : c.removeClass(b).removeAttr(b)
59
- }, 0)
60
- }, b.prototype.toggle = function () {
61
- var a = this.$element.closest('[data-toggle="buttons"]');
62
- if (a.length) {
63
- var b = this.$element.find("input").prop("checked", !this.$element.hasClass("active")).trigger("change");
64
- "radio" === b.prop("type") && a.find(".active").removeClass("active")
65
- }
66
- this.$element.toggleClass("active")
67
- };
68
- var c = a.fn.button;
69
- a.fn.button = function (c) {
70
- return this.each(function () {
71
- var d = a(this), e = d.data("bs.button"), f = "object" == typeof c && c;
72
- e || d.data("bs.button", e = new b(this, f)), "toggle" == c ? e.toggle() : c && e.setState(c)
73
- })
74
- }, a.fn.button.Constructor = b, a.fn.button.noConflict = function () {
75
- return a.fn.button = c, this
76
- }, a(document).on("click.bs.button.data-api", "[data-toggle^=button]", function (b) {
77
- var c = a(b.target);
78
- c.hasClass("btn") || (c = c.closest(".btn")), c.button("toggle"), b.preventDefault()
79
- })
80
- }(window.jQuery), +function (a) {
81
- "use strict";
82
- var b = function (b, c) {
83
- this.$element = a(b), this.$indicators = this.$element.find(".carousel-indicators"), this.options = c, this.paused = this.sliding = this.interval = this.$active = this.$items = null, "hover" == this.options.pause && this.$element.on("mouseenter", a.proxy(this.pause, this)).on("mouseleave", a.proxy(this.cycle, this))
84
- };
85
- b.DEFAULTS = {interval: 5e3, pause: "hover", wrap: !0}, b.prototype.cycle = function (b) {
86
- return b || (this.paused = !1), this.interval && clearInterval(this.interval), this.options.interval && !this.paused && (this.interval = setInterval(a.proxy(this.next, this), this.options.interval)), this
87
- }, b.prototype.getActiveIndex = function () {
88
- return this.$active = this.$element.find(".item.active"), this.$items = this.$active.parent().children(), this.$items.index(this.$active)
89
- }, b.prototype.to = function (b) {
90
- var c = this, d = this.getActiveIndex();
91
- return b > this.$items.length - 1 || 0 > b ? void 0 : this.sliding ? this.$element.one("slid", function () {
92
- c.to(b)
93
- }) : d == b ? this.pause().cycle() : this.slide(b > d ? "next" : "prev", a(this.$items[b]))
94
- }, b.prototype.pause = function (b) {
95
- return b || (this.paused = !0), this.$element.find(".next, .prev").length && a.support.transition.end && (this.$element.trigger(a.support.transition.end), this.cycle(!0)), this.interval = clearInterval(this.interval), this
96
- }, b.prototype.next = function () {
97
- return this.sliding ? void 0 : this.slide("next")
98
- }, b.prototype.prev = function () {
99
- return this.sliding ? void 0 : this.slide("prev")
100
- }, b.prototype.slide = function (b, c) {
101
- var d = this.$element.find(".item.active"), e = c || d[b](), f = this.interval, g = "next" == b ? "left" : "right", h = "next" == b ? "first" : "last", i = this;
102
- if (!e.length) {
103
- if (!this.options.wrap)return;
104
- e = this.$element.find(".item")[h]()
105
- }
106
- this.sliding = !0, f && this.pause();
107
- var j = a.Event("slide.bs.carousel", {relatedTarget: e[0], direction: g});
108
- if (!e.hasClass("active")) {
109
- if (this.$indicators.length && (this.$indicators.find(".active").removeClass("active"), this.$element.one("slid", function () {
110
- var b = a(i.$indicators.children()[i.getActiveIndex()]);
111
- b && b.addClass("active")
112
- })), a.support.transition && this.$element.hasClass("slide")) {
113
- if (this.$element.trigger(j), j.isDefaultPrevented())return;
114
- e.addClass(b), e[0].offsetWidth, d.addClass(g), e.addClass(g), d.one(a.support.transition.end,function () {
115
- e.removeClass([b, g].join(" ")).addClass("active"), d.removeClass(["active", g].join(" ")), i.sliding = !1, setTimeout(function () {
116
- i.$element.trigger("slid")
117
- }, 0)
118
- }).emulateTransitionEnd(600)
119
- } else {
120
- if (this.$element.trigger(j), j.isDefaultPrevented())return;
121
- d.removeClass("active"), e.addClass("active"), this.sliding = !1, this.$element.trigger("slid")
122
- }
123
- return f && this.cycle(), this
124
- }
125
- };
126
- var c = a.fn.carousel;
127
- a.fn.carousel = function (c) {
128
- return this.each(function () {
129
- var d = a(this), e = d.data("bs.carousel"), f = a.extend({}, b.DEFAULTS, d.data(), "object" == typeof c && c), g = "string" == typeof c ? c : f.slide;
130
- e || d.data("bs.carousel", e = new b(this, f)), "number" == typeof c ? e.to(c) : g ? e[g]() : f.interval && e.pause().cycle()
131
- })
132
- }, a.fn.carousel.Constructor = b, a.fn.carousel.noConflict = function () {
133
- return a.fn.carousel = c, this
134
- }, a(document).on("click.bs.carousel.data-api", "[data-slide], [data-slide-to]", function (b) {
135
- var c, d = a(this), e = a(d.attr("data-target") || (c = d.attr("href")) && c.replace(/.*(?=#[^\s]+$)/, "")), f = a.extend({}, e.data(), d.data()), g = d.attr("data-slide-to");
136
- g && (f.interval = !1), e.carousel(f), (g = d.attr("data-slide-to")) && e.data("bs.carousel").to(g), b.preventDefault()
137
- }), a(window).on("load", function () {
138
- a('[data-ride="carousel"]').each(function () {
139
- var b = a(this);
140
- b.carousel(b.data())
141
- })
142
- })
143
- }(window.jQuery), +function (a) {
144
- "use strict";
145
- var b = function (c, d) {
146
- this.$element = a(c), this.options = a.extend({}, b.DEFAULTS, d), this.transitioning = null, this.options.parent && (this.$parent = a(this.options.parent)), this.options.toggle && this.toggle()
147
- };
148
- b.DEFAULTS = {toggle: !0}, b.prototype.dimension = function () {
149
- var a = this.$element.hasClass("width");
150
- return a ? "width" : "height"
151
- }, b.prototype.show = function () {
152
- if (!this.transitioning && !this.$element.hasClass("in")) {
153
- var b = a.Event("show.bs.collapse");
154
- if (this.$element.trigger(b), !b.isDefaultPrevented()) {
155
- var c = this.$parent && this.$parent.find("> .panel > .in");
156
- if (c && c.length) {
157
- var d = c.data("bs.collapse");
158
- if (d && d.transitioning)return;
159
- c.collapse("hide"), d || c.data("bs.collapse", null)
160
- }
161
- var e = this.dimension();
162
- this.$element.removeClass("collapse").addClass("collapsing")[e](0), this.transitioning = 1;
163
- var f = function () {
164
- this.$element.removeClass("collapsing").addClass("in")[e]("auto"), this.transitioning = 0, this.$element.trigger("shown.bs.collapse")
165
- };
166
- if (!a.support.transition)return f.call(this);
167
- var g = a.camelCase(["scroll", e].join("-"));
168
- this.$element.one(a.support.transition.end, a.proxy(f, this)).emulateTransitionEnd(350)[e](this.$element[0][g])
169
- }
170
- }
171
- }, b.prototype.hide = function () {
172
- if (!this.transitioning && this.$element.hasClass("in")) {
173
- var b = a.Event("hide.bs.collapse");
174
- if (this.$element.trigger(b), !b.isDefaultPrevented()) {
175
- var c = this.dimension();
176
- this.$element[c](this.$element[c]())[0].offsetHeight, this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"), this.transitioning = 1;
177
- var d = function () {
178
- this.transitioning = 0, this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")
179
- };
180
- return a.support.transition ? (this.$element[c](0).one(a.support.transition.end, a.proxy(d, this)).emulateTransitionEnd(350), void 0) : d.call(this)
181
- }
182
- }
183
- }, b.prototype.toggle = function () {
184
- this[this.$element.hasClass("in") ? "hide" : "show"]()
185
- };
186
- var c = a.fn.collapse;
187
- a.fn.collapse = function (c) {
188
- return this.each(function () {
189
- var d = a(this), e = d.data("bs.collapse"), f = a.extend({}, b.DEFAULTS, d.data(), "object" == typeof c && c);
190
- e || d.data("bs.collapse", e = new b(this, f)), "string" == typeof c && e[c]()
191
- })
192
- }, a.fn.collapse.Constructor = b, a.fn.collapse.noConflict = function () {
193
- return a.fn.collapse = c, this
194
- }, a(document).on("click.bs.collapse.data-api", "[data-toggle=collapse]", function (b) {
195
- var c, d = a(this), e = d.attr("data-target") || b.preventDefault() || (c = d.attr("href")) && c.replace(/.*(?=#[^\s]+$)/, ""), f = a(e), g = f.data("bs.collapse"), h = g ? "toggle" : d.data(), i = d.attr("data-parent"), j = i && a(i);
196
- g && g.transitioning || (j && j.find('[data-toggle=collapse][data-parent="' + i + '"]').not(d).addClass("collapsed"), d[f.hasClass("in") ? "addClass" : "removeClass"]("collapsed")), f.collapse(h)
197
- })
198
- }(window.jQuery), +function (a) {
199
- "use strict";
200
- function b() {
201
- a(d).remove(), a(e).each(function (b) {
202
- var d = c(a(this));
203
- d.hasClass("open") && (d.trigger(b = a.Event("hide.bs.dropdown")), b.isDefaultPrevented() || d.removeClass("open").trigger("hidden.bs.dropdown"))
204
- })
205
- }
206
-
207
- function c(b) {
208
- var c = b.attr("data-target");
209
- c || (c = b.attr("href"), c = c && /#/.test(c) && c.replace(/.*(?=#[^\s]*$)/, ""));
210
- var d = c && a(c);
211
- return d && d.length ? d : b.parent()
212
- }
213
-
214
- var d = ".dropdown-backdrop", e = "[data-toggle=dropdown]", f = function (b) {
215
- a(b).on("click.bs.dropdown", this.toggle)
216
- };
217
- f.prototype.toggle = function (d) {
218
- var e = a(this);
219
- if (!e.is(".disabled, :disabled")) {
220
- var f = c(e), g = f.hasClass("open");
221
- if (b(), !g) {
222
- if ("ontouchstart"in document.documentElement && !f.closest(".navbar-nav").length && a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click", b), f.trigger(d = a.Event("show.bs.dropdown")), d.isDefaultPrevented())return;
223
- f.toggleClass("open").trigger("shown.bs.dropdown"), e.focus()
224
- }
225
- return!1
226
- }
227
- }, f.prototype.keydown = function (b) {
228
- if (/(38|40|27)/.test(b.keyCode)) {
229
- var d = a(this);
230
- if (b.preventDefault(), b.stopPropagation(), !d.is(".disabled, :disabled")) {
231
- var f = c(d), g = f.hasClass("open");
232
- if (!g || g && 27 == b.keyCode)return 27 == b.which && f.find(e).focus(), d.click();
233
- var h = a("[role=menu] li:not(.divider):visible a", f);
234
- if (h.length) {
235
- var i = h.index(h.filter(":focus"));
236
- 38 == b.keyCode && i > 0 && i--, 40 == b.keyCode && i < h.length - 1 && i++, ~i || (i = 0), h.eq(i).focus()
237
- }
238
- }
239
- }
240
- };
241
- var g = a.fn.dropdown;
242
- a.fn.dropdown = function (b) {
243
- return this.each(function () {
244
- var c = a(this), d = c.data("dropdown");
245
- d || c.data("dropdown", d = new f(this)), "string" == typeof b && d[b].call(c)
246
- })
247
- }, a.fn.dropdown.Constructor = f, a.fn.dropdown.noConflict = function () {
248
- return a.fn.dropdown = g, this
249
- }, a(document).on("click.bs.dropdown.data-api", b).on("click.bs.dropdown.data-api", ".dropdown form",function (a) {
250
- a.stopPropagation()
251
- }).on("click.bs.dropdown.data-api", e, f.prototype.toggle).on("keydown.bs.dropdown.data-api", e + ", [role=menu]", f.prototype.keydown)
252
- }(window.jQuery), +function (a) {
253
- "use strict";
254
- var b = function (b, c) {
255
- this.options = c, this.$element = a(b), this.$backdrop = this.isShown = null, this.options.remote && this.$element.load(this.options.remote)
256
- };
257
- b.DEFAULTS = {backdrop: !0, keyboard: !0, show: !0}, b.prototype.toggle = function (a) {
258
- return this[this.isShown ? "hide" : "show"](a)
259
- }, b.prototype.show = function (b) {
260
- var c = this, d = a.Event("show.bs.modal", {relatedTarget: b});
261
- this.$element.trigger(d), this.isShown || d.isDefaultPrevented() || (this.isShown = !0, this.escape(), this.$element.on("click.dismiss.modal", '[data-dismiss="modal"]', a.proxy(this.hide, this)), this.backdrop(function () {
262
- var d = a.support.transition && c.$element.hasClass("fade");
263
- c.$element.parent().length || c.$element.appendTo(document.body), c.$element.show(), d && c.$element[0].offsetWidth, c.$element.addClass("in").attr("aria-hidden", !1), c.enforceFocus();
264
- var e = a.Event("shown.bs.modal", {relatedTarget: b});
265
- d ? c.$element.find(".modal-dialog").one(a.support.transition.end,function () {
266
- c.$element.focus().trigger(e)
267
- }).emulateTransitionEnd(300) : c.$element.focus().trigger(e)
268
- }))
269
- }, b.prototype.hide = function (b) {
270
- b && b.preventDefault(), b = a.Event("hide.bs.modal"), this.$element.trigger(b), this.isShown && !b.isDefaultPrevented() && (this.isShown = !1, this.escape(), a(document).off("focusin.bs.modal"), this.$element.removeClass("in").attr("aria-hidden", !0).off("click.dismiss.modal"), a.support.transition && this.$element.hasClass("fade") ? this.$element.one(a.support.transition.end, a.proxy(this.hideModal, this)).emulateTransitionEnd(300) : this.hideModal())
271
- }, b.prototype.enforceFocus = function () {
272
- a(document).off("focusin.bs.modal").on("focusin.bs.modal", a.proxy(function (a) {
273
- this.$element[0] === a.target || this.$element.has(a.target).length || this.$element.focus()
274
- }, this))
275
- }, b.prototype.escape = function () {
276
- this.isShown && this.options.keyboard ? this.$element.on("keyup.dismiss.bs.modal", a.proxy(function (a) {
277
- 27 == a.which && this.hide()
278
- }, this)) : this.isShown || this.$element.off("keyup.dismiss.bs.modal")
279
- }, b.prototype.hideModal = function () {
280
- var a = this;
281
- this.$element.hide(), this.backdrop(function () {
282
- a.removeBackdrop(), a.$element.trigger("hidden.bs.modal")
283
- })
284
- }, b.prototype.removeBackdrop = function () {
285
- this.$backdrop && this.$backdrop.remove(), this.$backdrop = null
286
- }, b.prototype.backdrop = function (b) {
287
- var c = this.$element.hasClass("fade") ? "fade" : "";
288
- if (this.isShown && this.options.backdrop) {
289
- var d = a.support.transition && c;
290
- if (this.$backdrop = a('<div class="modal-backdrop ' + c + '" />').appendTo(document.body), this.$element.on("click.dismiss.modal", a.proxy(function (a) {
291
- a.target === a.currentTarget && ("static" == this.options.backdrop ? this.$element[0].focus.call(this.$element[0]) : this.hide.call(this))
292
- }, this)), d && this.$backdrop[0].offsetWidth, this.$backdrop.addClass("in"), !b)return;
293
- d ? this.$backdrop.one(a.support.transition.end, b).emulateTransitionEnd(150) : b()
294
- } else!this.isShown && this.$backdrop ? (this.$backdrop.removeClass("in"), a.support.transition && this.$element.hasClass("fade") ? this.$backdrop.one(a.support.transition.end, b).emulateTransitionEnd(150) : b()) : b && b()
295
- };
296
- var c = a.fn.modal;
297
- a.fn.modal = function (c, d) {
298
- return this.each(function () {
299
- var e = a(this), f = e.data("bs.modal"), g = a.extend({}, b.DEFAULTS, e.data(), "object" == typeof c && c);
300
- f || e.data("bs.modal", f = new b(this, g)), "string" == typeof c ? f[c](d) : g.show && f.show(d)
301
- })
302
- }, a.fn.modal.Constructor = b, a.fn.modal.noConflict = function () {
303
- return a.fn.modal = c, this
304
- }, a(document).on("click.bs.modal.data-api", '[data-toggle="modal"]', function (b) {
305
- var c = a(this), d = c.attr("href"), e = a(c.attr("data-target") || d && d.replace(/.*(?=#[^\s]+$)/, "")), f = e.data("modal") ? "toggle" : a.extend({remote: !/#/.test(d) && d}, e.data(), c.data());
306
- b.preventDefault(), e.modal(f, this).one("hide", function () {
307
- c.is(":visible") && c.focus()
308
- })
309
- }), a(document).on("show.bs.modal", ".modal",function () {
310
- a(document.body).addClass("modal-open")
311
- }).on("hidden.bs.modal", ".modal", function () {
312
- a(document.body).removeClass("modal-open")
313
- })
314
- }(window.jQuery), +function (a) {
315
- "use strict";
316
- var b = function (a, b) {
317
- this.type = this.options = this.enabled = this.timeout = this.hoverState = this.$element = null, this.init("tooltip", a, b)
318
- };
319
- b.DEFAULTS = {animation: !0, placement: "top", selector: !1, template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>', trigger: "hover focus", title: "", delay: 0, html: !1, container: !1}, b.prototype.init = function (b, c, d) {
320
- this.enabled = !0, this.type = b, this.$element = a(c), this.options = this.getOptions(d);
321
- for (var e = this.options.trigger.split(" "), f = e.length; f--;) {
322
- var g = e[f];
323
- if ("click" == g)this.$element.on("click." + this.type, this.options.selector, a.proxy(this.toggle, this)); else if ("manual" != g) {
324
- var h = "hover" == g ? "mouseenter" : "focus", i = "hover" == g ? "mouseleave" : "blur";
325
- this.$element.on(h + "." + this.type, this.options.selector, a.proxy(this.enter, this)), this.$element.on(i + "." + this.type, this.options.selector, a.proxy(this.leave, this))
326
- }
327
- }
328
- this.options.selector ? this._options = a.extend({}, this.options, {trigger: "manual", selector: ""}) : this.fixTitle()
329
- }, b.prototype.getDefaults = function () {
330
- return b.DEFAULTS
331
- }, b.prototype.getOptions = function (b) {
332
- return b = a.extend({}, this.getDefaults(), this.$element.data(), b), b.delay && "number" == typeof b.delay && (b.delay = {show: b.delay, hide: b.delay}), b
333
- }, b.prototype.getDelegateOptions = function () {
334
- var b = {}, c = this.getDefaults();
335
- return this._options && a.each(this._options, function (a, d) {
336
- c[a] != d && (b[a] = d)
337
- }), b
338
- }, b.prototype.enter = function (b) {
339
- var c = b instanceof this.constructor ? b : a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs." + this.type);
340
- return clearTimeout(c.timeout), c.hoverState = "in", c.options.delay && c.options.delay.show ? (c.timeout = setTimeout(function () {
341
- "in" == c.hoverState && c.show()
342
- }, c.options.delay.show), void 0) : c.show()
343
- }, b.prototype.leave = function (b) {
344
- var c = b instanceof this.constructor ? b : a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs." + this.type);
345
- return clearTimeout(c.timeout), c.hoverState = "out", c.options.delay && c.options.delay.hide ? (c.timeout = setTimeout(function () {
346
- "out" == c.hoverState && c.hide()
347
- }, c.options.delay.hide), void 0) : c.hide()
348
- }, b.prototype.show = function () {
349
- var b = a.Event("show.bs." + this.type);
350
- if (this.hasContent() && this.enabled) {
351
- if (this.$element.trigger(b), b.isDefaultPrevented())return;
352
- var c = this.tip();
353
- this.setContent(), this.options.animation && c.addClass("fade");
354
- var d = "function" == typeof this.options.placement ? this.options.placement.call(this, c[0], this.$element[0]) : this.options.placement, e = /\s?auto?\s?/i, f = e.test(d);
355
- f && (d = d.replace(e, "") || "top"), c.detach().css({top: 0, left: 0, display: "block"}).addClass(d), this.options.container ? c.appendTo(this.options.container) : c.insertAfter(this.$element);
356
- var g = this.getPosition(), h = c[0].offsetWidth, i = c[0].offsetHeight;
357
- if (f) {
358
- var j = this.$element.parent(), k = d, l = document.documentElement.scrollTop || document.body.scrollTop, m = "body" == this.options.container ? window.innerWidth : j.outerWidth(), n = "body" == this.options.container ? window.innerHeight : j.outerHeight(), o = "body" == this.options.container ? 0 : j.offset().left;
359
- d = "bottom" == d && g.top + g.height + i - l > n ? "top" : "top" == d && g.top - l - i < 0 ? "bottom" : "right" == d && g.right + h > m ? "left" : "left" == d && g.left - h < o ? "right" : d, c.removeClass(k).addClass(d)
360
- }
361
- var p = this.getCalculatedOffset(d, g, h, i);
362
- this.applyPlacement(p, d), this.$element.trigger("shown.bs." + this.type)
363
- }
364
- }, b.prototype.applyPlacement = function (a, b) {
365
- var c, d = this.tip(), e = d[0].offsetWidth, f = d[0].offsetHeight, g = parseInt(d.css("margin-top"), 10), h = parseInt(d.css("margin-left"), 10);
366
- isNaN(g) && (g = 0), isNaN(h) && (h = 0), a.top = a.top + g, a.left = a.left + h, d.offset(a).addClass("in");
367
- var i = d[0].offsetWidth, j = d[0].offsetHeight;
368
- if ("top" == b && j != f && (c = !0, a.top = a.top + f - j), /bottom|top/.test(b)) {
369
- var k = 0;
370
- a.left < 0 && (k = -2 * a.left, a.left = 0, d.offset(a), i = d[0].offsetWidth, j = d[0].offsetHeight), this.replaceArrow(k - e + i, i, "left")
371
- } else this.replaceArrow(j - f, j, "top");
372
- c && d.offset(a)
373
- }, b.prototype.replaceArrow = function (a, b, c) {
374
- this.arrow().css(c, a ? 50 * (1 - a / b) + "%" : "")
375
- }, b.prototype.setContent = function () {
376
- var a = this.tip(), b = this.getTitle();
377
- a.find(".tooltip-inner")[this.options.html ? "html" : "text"](b), a.removeClass("fade in top bottom left right")
378
- }, b.prototype.hide = function () {
379
- function b() {
380
- "in" != c.hoverState && d.detach()
381
- }
382
-
383
- var c = this, d = this.tip(), e = a.Event("hide.bs." + this.type);
384
- return this.$element.trigger(e), e.isDefaultPrevented() ? void 0 : (d.removeClass("in"), a.support.transition && this.$tip.hasClass("fade") ? d.one(a.support.transition.end, b).emulateTransitionEnd(150) : b(), this.$element.trigger("hidden.bs." + this.type), this)
385
- }, b.prototype.fixTitle = function () {
386
- var a = this.$element;
387
- (a.attr("title") || "string" != typeof a.attr("data-original-title")) && a.attr("data-original-title", a.attr("title") || "").attr("title", "")
388
- }, b.prototype.hasContent = function () {
389
- return this.getTitle()
390
- }, b.prototype.getPosition = function () {
391
- var b = this.$element[0];
392
- return a.extend({}, "function" == typeof b.getBoundingClientRect ? b.getBoundingClientRect() : {width: b.offsetWidth, height: b.offsetHeight}, this.$element.offset())
393
- }, b.prototype.getCalculatedOffset = function (a, b, c, d) {
394
- return"bottom" == a ? {top: b.top + b.height, left: b.left + b.width / 2 - c / 2} : "top" == a ? {top: b.top - d, left: b.left + b.width / 2 - c / 2} : "left" == a ? {top: b.top + b.height / 2 - d / 2, left: b.left - c} : {top: b.top + b.height / 2 - d / 2, left: b.left + b.width}
395
- }, b.prototype.getTitle = function () {
396
- var a, b = this.$element, c = this.options;
397
- return a = b.attr("data-original-title") || ("function" == typeof c.title ? c.title.call(b[0]) : c.title)
398
- }, b.prototype.tip = function () {
399
- return this.$tip = this.$tip || a(this.options.template)
400
- }, b.prototype.arrow = function () {
401
- return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")
402
- }, b.prototype.validate = function () {
403
- this.$element[0].parentNode || (this.hide(), this.$element = null, this.options = null)
404
- }, b.prototype.enable = function () {
405
- this.enabled = !0
406
- }, b.prototype.disable = function () {
407
- this.enabled = !1
408
- }, b.prototype.toggleEnabled = function () {
409
- this.enabled = !this.enabled
410
- }, b.prototype.toggle = function (b) {
411
- var c = b ? a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs." + this.type) : this;
412
- c.tip().hasClass("in") ? c.leave(c) : c.enter(c)
413
- }, b.prototype.destroy = function () {
414
- this.hide().$element.off("." + this.type).removeData("bs." + this.type)
415
- };
416
- var c = a.fn.tooltip;
417
- a.fn.tooltip = function (c) {
418
- return this.each(function () {
419
- var d = a(this), e = d.data("bs.tooltip"), f = "object" == typeof c && c;
420
- e || d.data("bs.tooltip", e = new b(this, f)), "string" == typeof c && e[c]()
421
- })
422
- }, a.fn.tooltip.Constructor = b, a.fn.tooltip.noConflict = function () {
423
- return a.fn.tooltip = c, this
424
- }
425
- }(window.jQuery), +function (a) {
426
- "use strict";
427
- var b = function (a, b) {
428
- this.init("popover", a, b)
429
- };
430
- if (!a.fn.tooltip)throw new Error("Popover requires tooltip.js");
431
- b.DEFAULTS = a.extend({}, a.fn.tooltip.Constructor.DEFAULTS, {placement: "right", trigger: "click", content: "", template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}), b.prototype = a.extend({}, a.fn.tooltip.Constructor.prototype), b.prototype.constructor = b, b.prototype.getDefaults = function () {
432
- return b.DEFAULTS
433
- }, b.prototype.setContent = function () {
434
- var a = this.tip(), b = this.getTitle(), c = this.getContent();
435
- a.find(".popover-title")[this.options.html ? "html" : "text"](b), a.find(".popover-content")[this.options.html ? "html" : "text"](c), a.removeClass("fade top bottom left right in"), a.find(".popover-title").html() || a.find(".popover-title").hide()
436
- }, b.prototype.hasContent = function () {
437
- return this.getTitle() || this.getContent()
438
- }, b.prototype.getContent = function () {
439
- var a = this.$element, b = this.options;
440
- return a.attr("data-content") || ("function" == typeof b.content ? b.content.call(a[0]) : b.content)
441
- }, b.prototype.arrow = function () {
442
- return this.$arrow = this.$arrow || this.tip().find(".arrow")
443
- }, b.prototype.tip = function () {
444
- return this.$tip || (this.$tip = a(this.options.template)), this.$tip
445
- };
446
- var c = a.fn.popover;
447
- a.fn.popover = function (c) {
448
- return this.each(function () {
449
- var d = a(this), e = d.data("bs.popover"), f = "object" == typeof c && c;
450
- e || d.data("bs.popover", e = new b(this, f)), "string" == typeof c && e[c]()
451
- })
452
- }, a.fn.popover.Constructor = b, a.fn.popover.noConflict = function () {
453
- return a.fn.popover = c, this
454
- }
455
- }(window.jQuery), +function (a) {
456
- "use strict";
457
- function b(c, d) {
458
- var e, f = a.proxy(this.process, this);
459
- this.$element = a(c).is("body") ? a(window) : a(c), this.$body = a("body"), this.$scrollElement = this.$element.on("scroll.bs.scroll-spy.data-api", f), this.options = a.extend({}, b.DEFAULTS, d), this.selector = (this.options.target || (e = a(c).attr("href")) && e.replace(/.*(?=#[^\s]+$)/, "") || "") + " .nav li > a", this.offsets = a([]), this.targets = a([]), this.activeTarget = null, this.refresh(), this.process()
460
- }
461
-
462
- b.DEFAULTS = {offset: 10}, b.prototype.refresh = function () {
463
- var b = this.$element[0] == window ? "offset" : "position";
464
- this.offsets = a([]), this.targets = a([]);
465
- var c = this;
466
- this.$body.find(this.selector).map(function () {
467
- var d = a(this), e = d.data("target") || d.attr("href"), f = /^#\w/.test(e) && a(e);
468
- return f && f.length && [
469
- [f[b]().top + (!a.isWindow(c.$scrollElement.get(0)) && c.$scrollElement.scrollTop()), e]
470
- ] || null
471
- }).sort(function (a, b) {
472
- return a[0] - b[0]
473
- }).each(function () {
474
- c.offsets.push(this[0]), c.targets.push(this[1])
475
- })
476
- }, b.prototype.process = function () {
477
- var a, b = this.$scrollElement.scrollTop() + this.options.offset, c = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight, d = c - this.$scrollElement.height(), e = this.offsets, f = this.targets, g = this.activeTarget;
478
- if (b >= d)return g != (a = f.last()[0]) && this.activate(a);
479
- for (a = e.length; a--;)g != f[a] && b >= e[a] && (!e[a + 1] || b <= e[a + 1]) && this.activate(f[a])
480
- }, b.prototype.activate = function (b) {
481
- this.activeTarget = b, a(this.selector).parents(".active").removeClass("active");
482
- var c = this.selector + '[data-target="' + b + '"],' + this.selector + '[href="' + b + '"]', d = a(c).parents("li").addClass("active");
483
- d.parent(".dropdown-menu").length && (d = d.closest("li.dropdown").addClass("active")), d.trigger("activate")
484
- };
485
- var c = a.fn.scrollspy;
486
- a.fn.scrollspy = function (c) {
487
- return this.each(function () {
488
- var d = a(this), e = d.data("bs.scrollspy"), f = "object" == typeof c && c;
489
- e || d.data("bs.scrollspy", e = new b(this, f)), "string" == typeof c && e[c]()
490
- })
491
- }, a.fn.scrollspy.Constructor = b, a.fn.scrollspy.noConflict = function () {
492
- return a.fn.scrollspy = c, this
493
- }, a(window).on("load", function () {
494
- a('[data-spy="scroll"]').each(function () {
495
- var b = a(this);
496
- b.scrollspy(b.data())
497
- })
498
- })
499
- }(window.jQuery), +function (a) {
500
- "use strict";
501
- var b = function (b) {
502
- this.element = a(b)
503
- };
504
- b.prototype.show = function () {
505
- var b = this.element, c = b.closest("ul:not(.dropdown-menu)"), d = b.attr("data-target");
506
- if (d || (d = b.attr("href"), d = d && d.replace(/.*(?=#[^\s]*$)/, "")), !b.parent("li").hasClass("active")) {
507
- var e = c.find(".active:last a")[0], f = a.Event("show.bs.tab", {relatedTarget: e});
508
- if (b.trigger(f), !f.isDefaultPrevented()) {
509
- var g = a(d);
510
- this.activate(b.parent("li"), c), this.activate(g, g.parent(), function () {
511
- b.trigger({type: "shown.bs.tab", relatedTarget: e})
512
- })
513
- }
514
- }
515
- }, b.prototype.activate = function (b, c, d) {
516
- function e() {
517
- f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"), b.addClass("active"), g ? (b[0].offsetWidth, b.addClass("in")) : b.removeClass("fade"), b.parent(".dropdown-menu") && b.closest("li.dropdown").addClass("active"), d && d()
518
- }
519
-
520
- var f = c.find("> .active"), g = d && a.support.transition && f.hasClass("fade");
521
- g ? f.one(a.support.transition.end, e).emulateTransitionEnd(150) : e(), f.removeClass("in")
522
- };
523
- var c = a.fn.tab;
524
- a.fn.tab = function (c) {
525
- return this.each(function () {
526
- var d = a(this), e = d.data("bs.tab");
527
- e || d.data("bs.tab", e = new b(this)), "string" == typeof c && e[c]()
528
- })
529
- }, a.fn.tab.Constructor = b, a.fn.tab.noConflict = function () {
530
- return a.fn.tab = c, this
531
- }, a(document).on("click.bs.tab.data-api", '[data-toggle="tab"], [data-toggle="pill"]', function (b) {
532
- b.preventDefault(), a(this).tab("show")
533
- })
534
- }(window.jQuery), +function (a) {
535
- "use strict";
536
- var b = function (c, d) {
537
- this.options = a.extend({}, b.DEFAULTS, d), this.$window = a(window).on("scroll.bs.affix.data-api", a.proxy(this.checkPosition, this)).on("click.bs.affix.data-api", a.proxy(this.checkPositionWithEventLoop, this)), this.$element = a(c), this.affixed = this.unpin = null, this.checkPosition()
538
- };
539
- b.RESET = "affix affix-top affix-bottom", b.DEFAULTS = {offset: 0}, b.prototype.checkPositionWithEventLoop = function () {
540
- setTimeout(a.proxy(this.checkPosition, this), 1)
541
- }, b.prototype.checkPosition = function () {
542
- if (this.$element.is(":visible")) {
543
- var c = a(document).height(), d = this.$window.scrollTop(), e = this.$element.offset(), f = this.options.offset, g = f.top, h = f.bottom;
544
- "object" != typeof f && (h = g = f), "function" == typeof g && (g = f.top()), "function" == typeof h && (h = f.bottom());
545
- var i = null != this.unpin && d + this.unpin <= e.top ? !1 : null != h && e.top + this.$element.height() >= c - h ? "bottom" : null != g && g >= d ? "top" : !1;
546
- this.affixed !== i && (this.unpin && this.$element.css("top", ""), this.affixed = i, this.unpin = "bottom" == i ? e.top - d : null, this.$element.removeClass(b.RESET).addClass("affix" + (i ? "-" + i : "")), "bottom" == i && this.$element.offset({top: document.body.offsetHeight - h - this.$element.height()}))
547
- }
548
- };
549
- var c = a.fn.affix;
550
- a.fn.affix = function (c) {
551
- return this.each(function () {
552
- var d = a(this), e = d.data("bs.affix"), f = "object" == typeof c && c;
553
- e || d.data("bs.affix", e = new b(this, f)), "string" == typeof c && e[c]()
554
- })
555
- }, a.fn.affix.Constructor = b, a.fn.affix.noConflict = function () {
556
- return a.fn.affix = c, this
557
- }, a(window).on("load", function () {
558
- a('[data-spy="affix"]').each(function () {
559
- var b = a(this), c = b.data();
560
- c.offset = c.offset || {}, c.offsetBottom && (c.offset.bottom = c.offsetBottom), c.offsetTop && (c.offset.top = c.offsetTop), b.affix(c)
561
- })
562
- })
563
- }(window.jQuery);
1
  /**
2
+ * bootstrap.js v3.0.0 by @fat and @mdo
3
+ * Copyright 2013 Twitter Inc.
4
+ * http://www.apache.org/licenses/LICENSE-2.0
5
+ */
6
+ if(!jQuery)throw new Error("Bootstrap requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]}}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(window.jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d)};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.is("input")?"val":"html",e=c.data();a+="Text",e.resetText||c.data("resetText",c[d]()),c[d](e[a]||this.options[a]),setTimeout(function(){"loadingText"==a?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.closest('[data-toggle="buttons"]');if(a.length){var b=this.$element.find("input").prop("checked",!this.$element.hasClass("active")).trigger("change");"radio"===b.prop("type")&&a.find(".active").removeClass("active")}this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(window.jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition.end&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}this.sliding=!0,f&&this.pause();var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});if(!e.hasClass("active")){if(this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(j),j.isDefaultPrevented())return;e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid")},0)}).emulateTransitionEnd(600)}else{if(this.$element.trigger(j),j.isDefaultPrevented())return;d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return f&&this.cycle(),this}};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?(this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350),void 0):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(window.jQuery),+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b),f.trigger(d=a.Event("show.bs.dropdown")),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown"),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=a("[role=menu] li:not(.divider):visible a",f);if(h.length){var i=h.index(h.filter(":focus"));38==b.keyCode&&i>0&&i--,40==b.keyCode&&i<h.length-1&&i++,~i||(i=0),h.eq(i).focus()}}}};var g=a.fn.dropdown;a.fn.dropdown=function(b){return this.each(function(){var c=a(this),d=c.data("dropdown");d||c.data("dropdown",d=new f(this)),"string"==typeof b&&d[b].call(c)})},a.fn.dropdown.Constructor=f,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=g,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",e,f.prototype.toggle).on("keydown.bs.dropdown.data-api",e+", [role=menu]",f.prototype.keydown)}(window.jQuery),+function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b),this.$backdrop=this.isShown=null,this.options.remote&&this.$element.load(this.options.remote)};b.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},b.prototype.toggle=function(a){return this[this.isShown?"hide":"show"](a)},b.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.$element.on("click.dismiss.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body),c.$element.show(),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one(a.support.transition.end,function(){c.$element.focus().trigger(e)}).emulateTransitionEnd(300):c.$element.focus().trigger(e)}))},b.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one(a.support.transition.end,a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},b.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.focus()},this))},b.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},b.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden.bs.modal")})},b.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},b.prototype.backdrop=function(b){var c=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var d=a.support.transition&&c;if(this.$backdrop=a('<div class="modal-backdrop '+c+'" />').appendTo(document.body),this.$element.on("click.dismiss.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.modal;a.fn.modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data("bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.modal.Constructor=b,a.fn.modal.noConflict=function(){return a.fn.modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());b.preventDefault(),e.modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(window.jQuery),+function(a){"use strict";var b=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};b.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},b.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focus",i="hover"==g?"mouseleave":"blur";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},b.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},b.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show),void 0):c.show()},b.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide),void 0):c.hide()},b.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){if(this.$element.trigger(b),b.isDefaultPrevented())return;var c=this.tip();this.setContent(),this.options.animation&&c.addClass("fade");var d="function"==typeof this.options.placement?this.options.placement.call(this,c[0],this.$element[0]):this.options.placement,e=/\s?auto?\s?/i,f=e.test(d);f&&(d=d.replace(e,"")||"top"),c.detach().css({top:0,left:0,display:"block"}).addClass(d),this.options.container?c.appendTo(this.options.container):c.insertAfter(this.$element);var g=this.getPosition(),h=c[0].offsetWidth,i=c[0].offsetHeight;if(f){var j=this.$element.parent(),k=d,l=document.documentElement.scrollTop||document.body.scrollTop,m="body"==this.options.container?window.innerWidth:j.outerWidth(),n="body"==this.options.container?window.innerHeight:j.outerHeight(),o="body"==this.options.container?0:j.offset().left;d="bottom"==d&&g.top+g.height+i-l>n?"top":"top"==d&&g.top-l-i<0?"bottom":"right"==d&&g.right+h>m?"left":"left"==d&&g.left-h<o?"right":d,c.removeClass(k).addClass(d)}var p=this.getCalculatedOffset(d,g,h,i);this.applyPlacement(p,d),this.$element.trigger("shown.bs."+this.type)}},b.prototype.applyPlacement=function(a,b){var c,d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),a.top=a.top+g,a.left=a.left+h,d.offset(a).addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;if("top"==b&&j!=f&&(c=!0,a.top=a.top+f-j),/bottom|top/.test(b)){var k=0;a.left<0&&(k=-2*a.left,a.left=0,d.offset(a),i=d[0].offsetWidth,j=d[0].offsetHeight),this.replaceArrow(k-e+i,i,"left")}else this.replaceArrow(j-f,j,"top");c&&d.offset(a)},b.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},b.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach()}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one(a.support.transition.end,b).emulateTransitionEnd(150):b(),this.$element.trigger("hidden.bs."+this.type),this)},b.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},b.prototype.hasContent=function(){return this.getTitle()},b.prototype.getPosition=function(){var b=this.$element[0];return a.extend({},"function"==typeof b.getBoundingClientRect?b.getBoundingClientRect():{width:b.offsetWidth,height:b.offsetHeight},this.$element.offset())},b.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},b.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},b.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},b.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},b.prototype.enable=function(){this.enabled=!0},b.prototype.disable=function(){this.enabled=!1},b.prototype.toggleEnabled=function(){this.enabled=!this.enabled},b.prototype.toggle=function(b){var c=b?a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type):this;c.tip().hasClass("in")?c.leave(c):c.enter(c)},b.prototype.destroy=function(){this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var c=a.fn.tooltip;a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof c&&c;e||d.data("bs.tooltip",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=c,this}}(window.jQuery),+function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");b.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(window.jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(c).is("body")?a(window):a(c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#\w/.test(e)&&a(e);return f&&f.length&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parents(".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.attr("data-target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top()),"function"==typeof h&&(h=f.bottom());var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;this.affixed!==i&&(this.unpin&&this.$element.css("top",""),this.affixed=i,this.unpin="bottom"==i?e.top-d:null,this.$element.removeClass(b.RESET).addClass("affix"+(i?"-"+i:"")),"bottom"==i&&this.$element.offset({top:document.body.offsetHeight-h-this.$element.height()}))}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(window.jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
js/buttons.js CHANGED
@@ -18,99 +18,98 @@
18
  * ======================================================================== */
19
 
20
 
21
- +function ($) {
22
- "use strict";
23
-
24
- // BUTTON PUBLIC CLASS DEFINITION
25
- // ==============================
26
-
27
- var Button = function (element, options) {
28
- this.$element = $(element)
29
- this.options = $.extend({}, Button.DEFAULTS, options)
30
- }
31
-
32
- Button.DEFAULTS = {
33
- loadingText: 'loading...'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  }
35
 
36
- Button.prototype.setState = function (state) {
37
- var d = 'disabled'
38
- var $el = this.$element
39
- var val = $el.is('input') ? 'val' : 'html'
40
- var data = $el.data()
41
 
42
- state = state + 'Text'
43
 
44
- if (!data.resetText) $el.data('resetText', $el[val]())
 
45
 
46
- $el[val](data[state] || this.options[state])
47
-
48
- // push to event loop to allow forms to submit
49
- setTimeout(function () {
50
- state == 'loadingText' ?
51
- $el.addClass(d).attr(d, d) :
52
- $el.removeClass(d).removeAttr(d);
53
- }, 0)
54
- }
55
-
56
- Button.prototype.toggle = function () {
57
- var $parent = this.$element.closest('[data-toggle="buttons"]')
58
- var changed = true
59
-
60
- if ($parent.length) {
61
- var $input = this.$element.find('input')
62
- if ($input.prop('type') === 'radio') {
63
- // see if clicking on current one
64
- if ($input.prop('checked') && this.$element.hasClass('active'))
65
- changed = false
66
- else
67
- $parent.find('.active').removeClass('active')
68
- }
69
- if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')
70
- }
71
-
72
- if (changed) this.$element.toggleClass('active')
73
- }
74
 
 
 
 
 
 
75
 
76
- // BUTTON PLUGIN DEFINITION
77
- // ========================
78
 
79
- var old = $.fn.button
80
-
81
- $.fn.button = function (option) {
82
- return this.each(function () {
83
- var $this = $(this)
84
- var data = $this.data('bs.button')
85
- var options = typeof option == 'object' && option
86
-
87
- if (!data) $this.data('bs.button', (data = new Button(this, options)))
88
-
89
- if (option == 'toggle') data.toggle()
90
- else if (option) data.setState(option)
91
- })
92
- }
93
 
94
- $.fn.button.Constructor = Button
95
 
96
 
97
- // BUTTON NO CONFLICT
98
- // ==================
99
 
100
- $.fn.button.noConflict = function () {
101
- $.fn.button = old
102
- return this
103
- }
104
 
105
 
106
- // BUTTON DATA-API
107
- // ===============
108
 
109
- $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) {
110
- var $btn = $(e.target)
111
- if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
112
- $btn.button('toggle')
113
- e.preventDefault()
114
- })
115
 
116
  }(jQuery);
18
  * ======================================================================== */
19
 
20
 
21
+ +function ($) { "use strict";
22
+
23
+ // BUTTON PUBLIC CLASS DEFINITION
24
+ // ==============================
25
+
26
+ var Button = function (element, options) {
27
+ this.$element = $(element)
28
+ this.options = $.extend({}, Button.DEFAULTS, options)
29
+ }
30
+
31
+ Button.DEFAULTS = {
32
+ loadingText: 'loading...'
33
+ }
34
+
35
+ Button.prototype.setState = function (state) {
36
+ var d = 'disabled'
37
+ var $el = this.$element
38
+ var val = $el.is('input') ? 'val' : 'html'
39
+ var data = $el.data()
40
+
41
+ state = state + 'Text'
42
+
43
+ if (!data.resetText) $el.data('resetText', $el[val]())
44
+
45
+ $el[val](data[state] || this.options[state])
46
+
47
+ // push to event loop to allow forms to submit
48
+ setTimeout(function () {
49
+ state == 'loadingText' ?
50
+ $el.addClass(d).attr(d, d) :
51
+ $el.removeClass(d).removeAttr(d);
52
+ }, 0)
53
+ }
54
+
55
+ Button.prototype.toggle = function () {
56
+ var $parent = this.$element.closest('[data-toggle="buttons"]')
57
+ var changed = true
58
+
59
+ if ($parent.length) {
60
+ var $input = this.$element.find('input')
61
+ if ($input.prop('type') === 'radio') {
62
+ // see if clicking on current one
63
+ if ($input.prop('checked') && this.$element.hasClass('active'))
64
+ changed = false
65
+ else
66
+ $parent.find('.active').removeClass('active')
67
+ }
68
+ if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')
69
  }
70
 
71
+ if (changed) this.$element.toggleClass('active')
72
+ }
 
 
 
73
 
 
74
 
75
+ // BUTTON PLUGIN DEFINITION
76
+ // ========================
77
 
78
+ var old = $.fn.button
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79
 
80
+ $.fn.button = function (option) {
81
+ return this.each(function () {
82
+ var $this = $(this)
83
+ var data = $this.data('bs.button')
84
+ var options = typeof option == 'object' && option
85
 
86
+ if (!data) $this.data('bs.button', (data = new Button(this, options)))
 
87
 
88
+ if (option == 'toggle') data.toggle()
89
+ else if (option) data.setState(option)
90
+ })
91
+ }
 
 
 
 
 
 
 
 
 
 
92
 
93
+ $.fn.button.Constructor = Button
94
 
95
 
96
+ // BUTTON NO CONFLICT
97
+ // ==================
98
 
99
+ $.fn.button.noConflict = function () {
100
+ $.fn.button = old
101
+ return this
102
+ }
103
 
104
 
105
+ // BUTTON DATA-API
106
+ // ===============
107
 
108
+ $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) {
109
+ var $btn = $(e.target)
110
+ if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
111
+ $btn.button('toggle')
112
+ e.preventDefault()
113
+ })
114
 
115
  }(jQuery);
js/dashchart.js ADDED
@@ -0,0 +1,123 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ jQuery( document ).ready(function() {
2
+ pieStats();
3
+ lineStats();
4
+ });
5
+ function pieStats()
6
+ {
7
+ jQuery.ajax({
8
+ type: 'POST',
9
+ url: ajaxurl,
10
+ data: {
11
+ 'action' : 'firstchart',
12
+ 'postdata' : 'firstchartdata',
13
+ },
14
+ dataType: 'json',
15
+ cache: false,
16
+ success: function(data) {
17
+
18
+ var browser = JSON.parse(data);
19
+ // alert(browser['label']);
20
+ if (browser['label'] == 'No Imports Yet') {
21
+ document.getElementById('pieStats').innerHTML = "<h2 style='color: red;text-align: center;padding-top: 100px;' >No Imports Yet</h2>";
22
+ }
23
+ else {
24
+ jQuery('#pieStats').highcharts({
25
+ chart: {
26
+ type: 'pie',
27
+ options3d: {
28
+ enabled: true,
29
+ alpha: 45,
30
+ beta: 0
31
+ }
32
+ },
33
+ title: {
34
+ text: ''
35
+ },
36
+ tooltip: {
37
+ pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
38
+ },
39
+ plotOptions: {
40
+ pie: {
41
+ allowPointSelect: true,
42
+ cursor: 'pointer',
43
+ depth: 35,
44
+ dataLabels: {
45
+ enabled: true,
46
+ format: '{point.name}'
47
+ }
48
+ }
49
+ },
50
+ series: [{
51
+ type: 'pie',
52
+ name: 'overall statistics',
53
+ // data: JSON.parse(data),
54
+ data: browser
55
+ }]
56
+ });
57
+ }
58
+ }
59
+ });
60
+ }
61
+ function lineStats()
62
+ {
63
+ jQuery.ajax({
64
+ type: 'POST',
65
+ url: ajaxurl,
66
+ data: {
67
+ 'action' : 'secondchart',
68
+ 'postdata' : 'secondchartdata',
69
+ },
70
+ dataType: 'json',
71
+ cache: false,
72
+ success: function(data) {
73
+ var val = JSON.parse(data);
74
+ //var get_cat = val['cat'];
75
+ var line = [val[0],val[1],val[2],val[3],val[4]];//,val[5],val[6],val[7],val[8],val[9]];
76
+ /*{
77
+ name: 'New York',
78
+ data: [-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5]
79
+ }, {
80
+ name: 'Berlin',
81
+ data: [-0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0]
82
+ }, {
83
+ name: 'London',
84
+ data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8]
85
+ }]; */
86
+ jQuery('#lineStats').highcharts({
87
+ title: {
88
+ text: '',
89
+ x: -5 //center
90
+ },
91
+ subtitle: {
92
+ text: '',
93
+ x: -5
94
+ },
95
+ xAxis: {
96
+ categories:val.cat /* ["Jan", "Feb", 'Mar', 'Apr', 'May', 'Jun',
97
+ 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] */
98
+ },
99
+ yAxis: {
100
+ title: {
101
+ text: 'Import (Nos)'
102
+ },
103
+ plotLines: [{
104
+ value: 0,
105
+ width: 1,
106
+ color: '#808080'
107
+ }]
108
+ },
109
+ tooltip: {
110
+ valueSuffix: ' Nos'
111
+ },
112
+ legend: {
113
+ layout: 'vertical',
114
+ align: 'right',
115
+ verticalAlign: 'middle',
116
+ borderWidth: 0
117
+ },
118
+ series:line });
119
+ }
120
+ });
121
+ }
122
+
123
+
js/dropdown.js ADDED
@@ -0,0 +1,163 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Bootstrap v3.2.0 (http://getbootstrap.com)
3
+ * Copyright 2011-2014 Twitter, Inc.
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5
+ */
6
+
7
+ /*!
8
+ * Generated using the Bootstrap Customizer (http://getbootstrap.com/customize/?id=8fcd7d337a57dc98835b)
9
+ * Config saved to config.json and https://gist.github.com/8fcd7d337a57dc98835b
10
+ */
11
+ if (typeof jQuery === "undefined") { throw new Error("Bootstrap's JavaScript requires jQuery") }
12
+
13
+ /* ========================================================================
14
+ * Bootstrap: dropdown.js v3.2.0
15
+ * http://getbootstrap.com/javascript/#dropdowns
16
+ * ========================================================================
17
+ * Copyright 2011-2014 Twitter, Inc.
18
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
19
+ * ======================================================================== */
20
+
21
+
22
+ +function ($) {
23
+ 'use strict';
24
+
25
+ // DROPDOWN CLASS DEFINITION
26
+ // =========================
27
+
28
+ var backdrop = '.dropdown-backdrop'
29
+ var toggle = '[data-toggle="dropdown"]'
30
+ var Dropdown = function (element) {
31
+ $(element).on('click.bs.dropdown', this.toggle)
32
+ }
33
+
34
+ Dropdown.VERSION = '3.2.0'
35
+
36
+ Dropdown.prototype.toggle = function (e) {
37
+ var $this = $(this)
38
+
39
+ if ($this.is('.disabled, :disabled')) return
40
+
41
+ var $parent = getParent($this)
42
+ var isActive = $parent.hasClass('open')
43
+
44
+ clearMenus()
45
+
46
+ if (!isActive) {
47
+ if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
48
+ // if mobile we use a backdrop because click events don't delegate
49
+ $('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus)
50
+ }
51
+
52
+ var relatedTarget = { relatedTarget: this }
53
+ $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
54
+
55
+ if (e.isDefaultPrevented()) return
56
+
57
+ $this.trigger('focus')
58
+
59
+ $parent
60
+ .toggleClass('open')
61
+ .trigger('shown.bs.dropdown', relatedTarget)
62
+ }
63
+
64
+ return false
65
+ }
66
+
67
+ Dropdown.prototype.keydown = function (e) {
68
+ if (!/(38|40|27)/.test(e.keyCode)) return
69
+
70
+ var $this = $(this)
71
+
72
+ e.preventDefault()
73
+ e.stopPropagation()
74
+
75
+ if ($this.is('.disabled, :disabled')) return
76
+
77
+ var $parent = getParent($this)
78
+ var isActive = $parent.hasClass('open')
79
+
80
+ if (!isActive || (isActive && e.keyCode == 27)) {
81
+ if (e.which == 27) $parent.find(toggle).trigger('focus')
82
+ return $this.trigger('click')
83
+ }
84
+
85
+ var desc = ' li:not(.divider):visible a'
86
+ var $items = $parent.find('[role="menu"]' + desc + ', [role="listbox"]' + desc)
87
+
88
+ if (!$items.length) return
89
+
90
+ var index = $items.index($items.filter(':focus'))
91
+
92
+ if (e.keyCode == 38 && index > 0) index-- // up
93
+ if (e.keyCode == 40 && index < $items.length - 1) index++ // down
94
+ if (!~index) index = 0
95
+
96
+ $items.eq(index).trigger('focus')
97
+ }
98
+
99
+ function clearMenus(e) {
100
+ if (e && e.which === 3) return
101
+ $(backdrop).remove()
102
+ $(toggle).each(function () {
103
+ var $parent = getParent($(this))
104
+ var relatedTarget = { relatedTarget: this }
105
+ if (!$parent.hasClass('open')) return
106
+ $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
107
+ if (e.isDefaultPrevented()) return
108
+ $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)
109
+ })
110
+ }
111
+
112
+ function getParent($this) {
113
+ var selector = $this.attr('data-target')
114
+
115
+ if (!selector) {
116
+ selector = $this.attr('href')
117
+ selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
118
+ }
119
+
120
+ var $parent = selector && $(selector)
121
+
122
+ return $parent && $parent.length ? $parent : $this.parent()
123
+ }
124
+
125
+
126
+ // DROPDOWN PLUGIN DEFINITION
127
+ // ==========================
128
+
129
+ function Plugin(option) {
130
+ return this.each(function () {
131
+ var $this = $(this)
132
+ var data = $this.data('bs.dropdown')
133
+
134
+ if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
135
+ if (typeof option == 'string') data[option].call($this)
136
+ })
137
+ }
138
+
139
+ var old = $.fn.dropdown
140
+
141
+ $.fn.dropdown = Plugin
142
+ $.fn.dropdown.Constructor = Dropdown
143
+
144
+
145
+ // DROPDOWN NO CONFLICT
146
+ // ====================
147
+
148
+ $.fn.dropdown.noConflict = function () {
149
+ $.fn.dropdown = old
150
+ return this
151
+ }
152
+
153
+
154
+ // APPLY TO STANDARD DROPDOWN ELEMENTS
155
+ // ===================================
156
+
157
+ $(document)
158
+ .on('click.bs.dropdown.data-api', clearMenus)
159
+ .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
160
+ .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
161
+ .on('keydown.bs.dropdown.data-api', toggle + ', [role="menu"], [role="listbox"]', Dropdown.prototype.keydown)
162
+
163
+ }(jQuery);
js/exporting.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ Highcharts JS v4.0.1 (2014-04-24)
3
+ Exporting module
4
+
5
+ (c) 2010-2014 Torstein Honsi
6
+
7
+ License: www.highcharts.com/license
8
+ */
9
+ (function(f){var A=f.Chart,t=f.addEvent,B=f.removeEvent,l=f.createElement,o=f.discardElement,v=f.css,k=f.merge,r=f.each,p=f.extend,D=Math.max,j=document,C=window,E=f.isTouchDevice,F=f.Renderer.prototype.symbols,s=f.getOptions(),y;p(s.lang,{printChart:"Print chart",downloadPNG:"Download PNG image",downloadJPEG:"Download JPEG image",downloadPDF:"Download PDF document",downloadSVG:"Download SVG vector image",contextButtonTitle:"Chart context menu"});s.navigation={menuStyle:{border:"1px solid #A0A0A0",
10
+ background:"#FFFFFF",padding:"5px 0"},menuItemStyle:{padding:"0 10px",background:"none",color:"#303030",fontSize:E?"14px":"11px"},menuItemHoverStyle:{background:"#4572A5",color:"#FFFFFF"},buttonOptions:{symbolFill:"#E0E0E0",symbolSize:14,symbolStroke:"#666",symbolStrokeWidth:3,symbolX:12.5,symbolY:10.5,align:"right",buttonSpacing:3,height:22,theme:{fill:"white",stroke:"none"},verticalAlign:"top",width:24}};s.exporting={type:"image/png",url:"http://export.highcharts.com/",buttons:{contextButton:{menuClassName:"highcharts-contextmenu",
11
+ symbol:"menu",_titleKey:"contextButtonTitle",menuItems:[{textKey:"printChart",onclick:function(){this.print()}},{separator:!0},{textKey:"downloadPNG",onclick:function(){this.exportChart()}},{textKey:"downloadJPEG",onclick:function(){this.exportChart({type:"image/jpeg"})}},{textKey:"downloadPDF",onclick:function(){this.exportChart({type:"application/pdf"})}},{textKey:"downloadSVG",onclick:function(){this.exportChart({type:"image/svg+xml"})}}]}}};f.post=function(b,a,d){var c,b=l("form",k({method:"post",
12
+ action:b,enctype:"multipart/form-data"},d),{display:"none"},j.body);for(c in a)l("input",{type:"hidden",name:c,value:a[c]},null,b);b.submit();o(b)};p(A.prototype,{getSVG:function(b){var a=this,d,c,z,h,g=k(a.options,b);if(!j.createElementNS)j.createElementNS=function(a,b){return j.createElement(b)};b=l("div",null,{position:"absolute",top:"-9999em",width:a.chartWidth+"px",height:a.chartHeight+"px"},j.body);c=a.renderTo.style.width;h=a.renderTo.style.height;c=g.exporting.sourceWidth||g.chart.width||
13
+ /px$/.test(c)&&parseInt(c,10)||600;h=g.exporting.sourceHeight||g.chart.height||/px$/.test(h)&&parseInt(h,10)||400;p(g.chart,{animation:!1,renderTo:b,forExport:!0,width:c,height:h});g.exporting.enabled=!1;g.series=[];r(a.series,function(a){z=k(a.options,{animation:!1,showCheckbox:!1,visible:a.visible});z.isInternal||g.series.push(z)});d=new f.Chart(g,a.callback);r(["xAxis","yAxis"],function(b){r(a[b],function(a,c){var g=d[b][c],f=a.getExtremes(),h=f.userMin,f=f.userMax;g&&(h!==void 0||f!==void 0)&&
14
+ g.setExtremes(h,f,!0,!1)})});c=d.container.innerHTML;g=null;d.destroy();o(b);c=c.replace(/zIndex="[^"]+"/g,"").replace(/isShadow="[^"]+"/g,"").replace(/symbolName="[^"]+"/g,"").replace(/jQuery[0-9]+="[^"]+"/g,"").replace(/url\([^#]+#/g,"url(#").replace(/<svg /,'<svg xmlns:xlink="http://www.w3.org/1999/xlink" ').replace(/ href=/g," xlink:href=").replace(/\n/," ").replace(/<\/svg>.*?$/,"</svg>").replace(/&nbsp;/g," ").replace(/&shy;/g,"­").replace(/<IMG /g,"<image ").replace(/height=([^" ]+)/g,'height="$1"').replace(/width=([^" ]+)/g,
15
+ 'width="$1"').replace(/hc-svg-href="([^"]+)">/g,'xlink:href="$1"/>').replace(/id=([^" >]+)/g,'id="$1"').replace(/class=([^" >]+)/g,'class="$1"').replace(/ transform /g," ").replace(/:(path|rect)/g,"$1").replace(/style="([^"]+)"/g,function(a){return a.toLowerCase()});return c=c.replace(/(url\(#highcharts-[0-9]+)&quot;/g,"$1").replace(/&quot;/g,"'")},exportChart:function(b,a){var b=b||{},d=this.options.exporting,d=this.getSVG(k({chart:{borderRadius:0}},d.chartOptions,a,{exporting:{sourceWidth:b.sourceWidth||
16
+ d.sourceWidth,sourceHeight:b.sourceHeight||d.sourceHeight}})),b=k(this.options.exporting,b);f.post(b.url,{filename:b.filename||"chart",type:b.type,width:b.width||0,scale:b.scale||2,svg:d},b.formAttributes)},print:function(){var b=this,a=b.container,d=[],c=a.parentNode,f=j.body,h=f.childNodes;if(!b.isPrinting)b.isPrinting=!0,r(h,function(a,b){if(a.nodeType===1)d[b]=a.style.display,a.style.display="none"}),f.appendChild(a),C.focus(),C.print(),setTimeout(function(){c.appendChild(a);r(h,function(a,b){if(a.nodeType===
17
+ 1)a.style.display=d[b]});b.isPrinting=!1},1E3)},contextMenu:function(b,a,d,c,f,h,g){var e=this,k=e.options.navigation,q=k.menuItemStyle,m=e.chartWidth,n=e.chartHeight,j="cache-"+b,i=e[j],u=D(f,h),w,x,o,s=function(a){e.pointer.inClass(a.target,b)||x()};if(!i)e[j]=i=l("div",{className:b},{position:"absolute",zIndex:1E3,padding:u+"px"},e.container),w=l("div",null,p({MozBoxShadow:"3px 3px 10px #888",WebkitBoxShadow:"3px 3px 10px #888",boxShadow:"3px 3px 10px #888"},k.menuStyle),i),x=function(){v(i,{display:"none"});
18
+ g&&g.setState(0);e.openMenu=!1},t(i,"mouseleave",function(){o=setTimeout(x,500)}),t(i,"mouseenter",function(){clearTimeout(o)}),t(document,"mouseup",s),t(e,"destroy",function(){B(document,"mouseup",s)}),r(a,function(a){if(a){var b=a.separator?l("hr",null,null,w):l("div",{onmouseover:function(){v(this,k.menuItemHoverStyle)},onmouseout:function(){v(this,q)},onclick:function(){x();a.onclick.apply(e,arguments)},innerHTML:a.text||e.options.lang[a.textKey]},p({cursor:"pointer"},q),w);e.exportDivElements.push(b)}}),
19
+ e.exportDivElements.push(w,i),e.exportMenuWidth=i.offsetWidth,e.exportMenuHeight=i.offsetHeight;a={display:"block"};d+e.exportMenuWidth>m?a.right=m-d-f-u+"px":a.left=d-u+"px";c+h+e.exportMenuHeight>n&&g.alignOptions.verticalAlign!=="top"?a.bottom=n-c-u+"px":a.top=c+h-u+"px";v(i,a);e.openMenu=!0},addButton:function(b){var a=this,d=a.renderer,c=k(a.options.navigation.buttonOptions,b),j=c.onclick,h=c.menuItems,g,e,l={stroke:c.symbolStroke,fill:c.symbolFill},q=c.symbolSize||12;if(!a.btnCount)a.btnCount=
20
+ 0;if(!a.exportDivElements)a.exportDivElements=[],a.exportSVGElements=[];if(c.enabled!==!1){var m=c.theme,n=m.states,o=n&&n.hover,n=n&&n.select,i;delete m.states;j?i=function(){j.apply(a,arguments)}:h&&(i=function(){a.contextMenu(e.menuClassName,h,e.translateX,e.translateY,e.width,e.height,e);e.setState(2)});c.text&&c.symbol?m.paddingLeft=f.pick(m.paddingLeft,25):c.text||p(m,{width:c.width,height:c.height,padding:0});e=d.button(c.text,0,0,i,m,o,n).attr({title:a.options.lang[c._titleKey],"stroke-linecap":"round"});
21
+ e.menuClassName=b.menuClassName||"highcharts-menu-"+a.btnCount++;c.symbol&&(g=d.symbol(c.symbol,c.symbolX-q/2,c.symbolY-q/2,q,q).attr(p(l,{"stroke-width":c.symbolStrokeWidth||1,zIndex:1})).add(e));e.add().align(p(c,{width:e.width,x:f.pick(c.x,y)}),!0,"spacingBox");y+=(e.width+c.buttonSpacing)*(c.align==="right"?-1:1);a.exportSVGElements.push(e,g)}},destroyExport:function(b){var b=b.target,a,d;for(a=0;a<b.exportSVGElements.length;a++)if(d=b.exportSVGElements[a])d.onclick=d.ontouchstart=null,b.exportSVGElements[a]=
22
+ d.destroy();for(a=0;a<b.exportDivElements.length;a++)d=b.exportDivElements[a],B(d,"mouseleave"),b.exportDivElements[a]=d.onmouseout=d.onmouseover=d.ontouchstart=d.onclick=null,o(d)}});F.menu=function(b,a,d,c){return["M",b,a+2.5,"L",b+d,a+2.5,"M",b,a+c/2+0.5,"L",b+d,a+c/2+0.5,"M",b,a+c-1.5,"L",b+d,a+c-1.5]};A.prototype.callbacks.push(function(b){var a,d=b.options.exporting,c=d.buttons;y=0;if(d.enabled!==!1){for(a in c)b.addButton(c[a]);t(b,"destroy",b.destroyExport)}})})(Highcharts);
js/highcharts-3d.js ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ Highcharts JS v4.0.1 (2014-04-24)
3
+
4
+ (c) 2009-2013 Torstein Hønsi
5
+
6
+ License: www.highcharts.com/license
7
+ */
8
+ (function(c){function x(e,a,b,d){var f,g,h;b*=n;a*=n;var i=[],j,o,t;b*=-1;j=d.x;o=d.y;t=(d.z===0?1.0E-4:d.z)*(d.vd||25);var y=k(b),v=l(b),m=k(a),q=l(a),r,u,s;c.each(e,function(a){r=a.x-j;u=a.y-o;s=a.z||0;f=v*r-y*s;g=-y*m*r-v*m*s+q*u;h=y*q*r+v*q*s+m*u;f=f*((t-h)/t)+j;g=g*((t-h)/t)+o;i.push({x:C(f),y:C(g),z:C(h)})});return i}function z(e,a,b,d,f,c,h,i){var j=[];return c>f&&c-f>m/2+1.0E-4?(j=j.concat(z(e,a,b,d,f,f+m/2,h,i)),j=j.concat(z(e,a,b,d,f+m/2,c,h,i))):c<f&&f-c>m/2+1.0E-4?(j=j.concat(z(e,a,b,
9
+ d,f,f-m/2,h,i)),j=j.concat(z(e,a,b,d,f-m/2,c,h,i))):(j=c-f,["C",e+b*l(f)-b*D*j*k(f)+h,a+d*k(f)+d*D*j*l(f)+i,e+b*l(c)+b*D*j*k(c)+h,a+d*k(c)-d*D*j*l(c)+i,e+b*l(c)+h,a+d*k(c)+i])}function F(e){if(this.chart.is3d()){var a=this.chart.options.plotOptions.column.grouping;a!==void 0&&!a&&this.group.zIndex!==void 0&&this.group.attr({zIndex:this.group.zIndex*10});if(this.userOptions.borderColor===void 0)this.options.borderColor=this.color;c.each(this.data,function(a){var d=a.options.borderColor||a.color||a.series.userOptions.borderColor;
10
+ a.options.borderColor=d;a.borderColor=d;a.pointAttr[""].stroke=d;a.pointAttr.hover.stroke=d;a.pointAttr.select.stroke=d})}e.apply(this,[].slice.call(arguments,1))}var m=Math.PI,n=m/180,k=Math.sin,l=Math.cos,C=Math.round,D=4*(Math.sqrt(2)-1)/3/(m/2);c.SVGRenderer.prototype.toLinePath=function(e,a){var b=[];c.each(e,function(a){b.push("L",a.x,a.y)});b[0]="M";a&&b.push("Z");return b};c.SVGRenderer.prototype.cuboid=function(e){var a=this.g(),e=this.cuboidPath(e);a.front=this.path(e[0]).attr({zIndex:e[3],
11
+ "stroke-linejoin":"round"}).add(a);a.top=this.path(e[1]).attr({zIndex:e[4],"stroke-linejoin":"round"}).add(a);a.side=this.path(e[2]).attr({zIndex:e[5],"stroke-linejoin":"round"}).add(a);a.fillSetter=function(a){var d=c.Color(a).brighten(0.1).get(),e=c.Color(a).brighten(-0.1).get();this.front.attr({fill:a});this.top.attr({fill:d});this.side.attr({fill:e});this.color=a;return this};a.opacitySetter=function(a){this.front.attr({opacity:a});this.top.attr({opacity:a});this.side.attr({opacity:a});return this};
12
+ a.attr=function(a){a.shapeArgs||a.x?(a=this.renderer.cuboidPath(a.shapeArgs||a),this.front.attr({d:a[0],zIndex:a[3]}),this.top.attr({d:a[1],zIndex:a[4]}),this.side.attr({d:a[2],zIndex:a[5]})):c.SVGElement.prototype.attr.call(this,a);return this};a.animate=function(a,d,e){a.x&&a.y?(a=this.renderer.cuboidPath(a),this.front.attr({zIndex:a[3]}).animate({d:a[0]},d,e),this.top.attr({zIndex:a[4]}).animate({d:a[1]},d,e),this.side.attr({zIndex:a[5]}).animate({d:a[2]},d,e)):a.opacity?(this.front.animate(a,
13
+ d,e),this.top.animate(a,d,e),this.side.animate(a,d,e)):c.SVGElement.prototype.animate.call(this,a,d,e);return this};a.destroy=function(){this.front.destroy();this.top.destroy();this.side.destroy();return null};a.attr({zIndex:-e[3]});return a};c.SVGRenderer.prototype.cuboidPath=function(e){var a=e.x,b=e.y,d=e.z,c=e.height,g=e.width,h=e.depth,i=e.alpha,j=e.beta,a=[{x:a,y:b,z:d},{x:a+g,y:b,z:d},{x:a+g,y:b+c,z:d},{x:a,y:b+c,z:d},{x:a,y:b+c,z:d+h},{x:a+g,y:b+c,z:d+h},{x:a+g,y:b,z:d+h},{x:a,y:b,z:d+h}],
14
+ a=x(a,i,j,e.origin),e=["M",a[0].x,a[0].y,"L",a[7].x,a[7].y,"L",a[6].x,a[6].y,"L",a[1].x,a[1].y,"Z"],b=["M",a[3].x,a[3].y,"L",a[2].x,a[2].y,"L",a[5].x,a[5].y,"L",a[4].x,a[4].y,"Z"],d=["M",a[1].x,a[1].y,"L",a[2].x,a[2].y,"L",a[5].x,a[5].y,"L",a[6].x,a[6].y,"Z"],c=["M",a[0].x,a[0].y,"L",a[7].x,a[7].y,"L",a[4].x,a[4].y,"L",a[3].x,a[3].y,"Z"];return[["M",a[0].x,a[0].y,"L",a[1].x,a[1].y,"L",a[2].x,a[2].y,"L",a[3].x,a[3].y,"Z"],a[7].y<a[1].y?e:a[4].y>a[2].y?b:[],a[6].x>a[1].x?d:a[7].x<a[0].x?c:[],(a[0].z+
15
+ a[1].z+a[2].z+a[3].z)/4,j>0?(a[0].z+a[7].z+a[6].z+a[1].z)/4:(a[3].z+a[2].z+a[5].z+a[4].z)/4,i>0?(a[1].z+a[2].z+a[5].z+a[6].z)/4:(a[0].z+a[7].z+a[4].z+a[3].z)/4]};c.SVGRenderer.prototype.arc3d=function(e){e.alpha*=n;e.beta*=n;var a=this.g(),b=this.arc3dPath(e),d=a.renderer,f=b.zAll*100;a.shapeArgs=e;a.side1=d.path(b.side2).attr({zIndex:b.zSide2}).add(a);a.side2=d.path(b.side1).attr({zIndex:b.zSide1}).add(a);a.inn=d.path(b.inn).attr({zIndex:b.zInn}).add(a);a.out=d.path(b.out).attr({zIndex:b.zOut}).add(a);
16
+ a.top=d.path(b.top).attr({zIndex:b.zTop}).add(a);a.fillSetter=function(a){this.color=a;var b=c.Color(a).brighten(-0.1).get();this.side1.attr({fill:b});this.side2.attr({fill:b});this.inn.attr({fill:b});this.out.attr({fill:b});this.top.attr({fill:a});return this};a.animate=function(a,b,d){c.SVGElement.prototype.animate.call(this,a,b,d);if(a.x&&a.y)b=this.renderer,a=c.splat(a)[0],a.alpha*=n,a.beta*=n,b=b.arc3dPath(a),this.shapeArgs=a,this.inn.attr({d:b.inn,zIndex:b.zInn}),this.out.attr({d:b.out,zIndex:b.zOut}),
17
+ this.side1.attr({d:b.side1,zIndex:b.zSide2}),this.side2.attr({d:b.side2,zIndex:b.zSide1}),this.top.attr({d:b.top,zIndex:b.zTop}),this.attr({fill:this.color}),this.attr({zIndex:b.zAll*100});return this};a.zIndex=f;a.attr({zIndex:f});return a};c.SVGRenderer.prototype.arc3dPath=function(e){var a=e.x,b=e.y,d=e.start,c=e.end-1.0E-5,g=e.r,h=e.innerR,i=e.depth,j=e.alpha,o=e.beta,t=l(d),y=k(d),v=l(c),n=k(c),q=g*l(o),r=g*l(j),u=h*l(o),s=h*l(j),A=i*k(o),B=i*k(j),i=["M",a+q*t,b+r*y],i=i.concat(z(a,b,q,r,d,c,
18
+ 0,0)),i=i.concat(["L",a+u*v,b+s*n]),i=i.concat(z(a,b,u,s,c,d,0,0)),i=i.concat(["Z"]),e=(e.start+e.end)/2,e=k(o)*l(e)+k(-j)*k(-e),p=o>0?m/2:0,w=j>0?0:m/2,p=d>-p?d:c>-p?-p:d,x=c<m-w?c:d<m-w?m-w:c,w=["M",a+q*l(p),b+r*k(p)],w=w.concat(z(a,b,q,r,p,x,0,0)),w=w.concat(["L",a+q*l(x)+A,b+r*k(x)+B]),w=w.concat(z(a,b,q,r,x,p,A,B)),w=w.concat(["Z"]),p=["M",a+u*t,b+s*y],p=p.concat(z(a,b,u,s,d,c,0,0)),p=p.concat(["L",a+u*l(c)+A,b+s*k(c)+B]),p=p.concat(z(a,b,u,s,c,d,A,B)),p=p.concat(["Z"]),t=["M",a+q*t,b+r*y,"L",
19
+ a+q*t+A,b+r*y+B,"L",a+u*t+A,b+s*y+B,"L",a+u*t,b+s*y,"Z"],a=["M",a+q*v,b+r*n,"L",a+q*v+A,b+r*n+B,"L",a+u*v+A,b+s*n+B,"L",a+u*v,b+s*n,"Z"],v=h+(g-h)/2,b=Math.abs(e*2*v);g*=e;h*=e;d=(k(o)*l(d)+k(-j)*k(-d))*v;c=(k(o)*l(c)+k(-j)*k(-c))*v;return{top:i,zTop:b*100,out:w,zOut:g*100,inn:p,zInn:h*100,side1:t,zSide1:d*100,side2:a,zSide2:c*100,zAll:e}};c.Chart.prototype.is3d=function(){return this.options.chart.options3d&&this.options.chart.options3d.enabled};c.wrap(c.Chart.prototype,"isInsidePlot",function(c){return this.is3d()?
20
+ !0:c.apply(this,[].slice.call(arguments,1))});c.wrap(c.Chart.prototype,"init",function(e){var a=arguments;a[1]=c.merge({chart:{options3d:{enabled:!1,alpha:0,beta:0,depth:100,viewDistance:25,frame:{bottom:{size:1,color:"rgba(255,255,255,0)"},side:{size:1,color:"rgba(255,255,255,0)"},back:{size:1,color:"rgba(255,255,255,0)"}}}}},a[1]);e.apply(this,[].slice.call(a,1))});c.wrap(c.Chart.prototype,"setChartSize",function(c){c.apply(this,[].slice.call(arguments,1));if(this.is3d()){var a=this.inverted,b=
21
+ this.clipBox,d=this.margin;b[a?"y":"x"]=-(d[3]||0);b[a?"x":"y"]=-(d[0]||0);b[a?"height":"width"]=this.chartWidth+(d[3]||0)+(d[1]||0);b[a?"width":"height"]=this.chartHeight+(d[0]||0)+(d[2]||0)}});c.wrap(c.Chart.prototype,"redraw",function(c){if(this.is3d())this.isDirtyBox=!0;c.apply(this,[].slice.call(arguments,1))});c.Chart.prototype.retrieveStacks=function(){var e={},a=this.options.plotOptions[this.options.chart.type],b=a.stacking,d=1;if(a.grouping||!b)return this.series;c.each(this.series,function(a){e[a.options.stack||
22
+ 0]?e[a.options.stack||0].series.push(a):(e[a.options.stack||0]={series:[a],position:d},d++)});e.totalStacks=d+1;return e};c.wrap(c.Axis.prototype,"init",function(e){var a=arguments;if(a[1].is3d())a[2].tickWidth=c.pick(a[2].tickWidth,0),a[2].gridLineWidth=c.pick(a[2].gridLineWidth,1);e.apply(this,[].slice.call(arguments,1))});c.wrap(c.Axis.prototype,"render",function(c){c.apply(this,[].slice.call(arguments,1));if(this.chart.is3d()){var a=this.chart,b=a.renderer,d=a.options.chart.options3d,f=d.alpha,
23
+ g=d.beta*(a.yAxis[0].opposite?-1:1),h=d.frame,i=h.bottom,j=h.back,h=h.side,o=d.depth,k=this.height,l=this.width,m=this.left,n=this.top,d={x:a.plotLeft+a.plotWidth/2,y:a.plotTop+a.plotHeight/2,z:o,vd:d.viewDistance};if(this.horiz)this.axisLine&&this.axisLine.hide(),g={x:m,y:n+(a.yAxis[0].reversed?-i.size:k),z:0,width:l,height:i.size,depth:o,alpha:f,beta:g,origin:d},this.bottomFrame?this.bottomFrame.animate(g):this.bottomFrame=b.cuboid(g).attr({fill:i.color,zIndex:a.yAxis[0].reversed&&f>0?4:-1}).css({stroke:i.color}).add();
24
+ else{var q={x:m,y:n,z:o+1,width:l,height:k+i.size,depth:j.size,alpha:f,beta:g,origin:d};this.backFrame?this.backFrame.animate(q):this.backFrame=b.cuboid(q).attr({fill:j.color,zIndex:-3}).css({stroke:j.color}).add();this.axisLine&&this.axisLine.hide();a={x:(a.yAxis[0].opposite?l:0)+m-h.size,y:n,z:0,width:h.size,height:k+i.size,depth:o+j.size,alpha:f,beta:g,origin:d};this.sideFrame?this.sideFrame.animate(a):this.sideFrame=b.cuboid(a).attr({fill:h.color,zIndex:-2}).css({stroke:h.color}).add()}}});c.wrap(c.Axis.prototype,
25
+ "getPlotLinePath",function(c){var a=c.apply(this,[].slice.call(arguments,1));if(!this.chart.is3d())return a;if(a===null)return a;var b=this.chart,d=b.options.chart.options3d,f=d.depth;d.origin={x:b.plotLeft+b.plotWidth/2,y:b.plotTop+b.plotHeight/2,z:f,vd:d.viewDistance};var a=[{x:a[1],y:a[2],z:this.horiz||this.opposite?f:0},{x:a[1],y:a[2],z:f},{x:a[4],y:a[5],z:f},{x:a[4],y:a[5],z:this.horiz||this.opposite?0:f}],f=b.options.inverted?d.beta:d.alpha,g=b.options.inverted?d.alpha:d.beta;g*=b.yAxis[0].opposite?
26
+ -1:1;a=x(a,f,g,d.origin);return a=this.chart.renderer.toLinePath(a,!1)});c.wrap(c.Tick.prototype,"getMarkPath",function(c){var a=c.apply(this,[].slice.call(arguments,1));if(!this.axis.chart.is3d())return a;var b=this.axis.chart,d=b.options.chart.options3d,f={x:b.plotLeft+b.plotWidth/2,y:b.plotTop+b.plotHeight/2,z:d.depth,vd:d.viewDistance},a=[{x:a[1],y:a[2],z:0},{x:a[4],y:a[5],z:0}],g=b.inverted?d.beta:d.alpha,d=b.inverted?d.alpha:d.beta;d*=b.yAxis[0].opposite?-1:1;a=x(a,g,d,f);return a=["M",a[0].x,
27
+ a[0].y,"L",a[1].x,a[1].y]});c.wrap(c.Tick.prototype,"getLabelPosition",function(c){var a=c.apply(this,[].slice.call(arguments,1));if(!this.axis.chart.is3d())return a;var b=this.axis.chart,d=b.options.chart.options3d,f={x:b.plotLeft+b.plotWidth/2,y:b.plotTop+b.plotHeight/2,z:d.depth,vd:d.viewDistance},g=b.inverted?d.beta:d.alpha,d=b.inverted?d.alpha:d.beta;d*=b.yAxis[0].opposite?-1:1;return a=x([{x:a.x,y:a.y,z:0}],g,d,f)[0]});c.wrap(c.Axis.prototype,"drawCrosshair",function(c){var a=arguments;this.chart.is3d()&&
28
+ a[2]&&(a[2]={plotX:a[2].plotXold||a[2].plotX,plotY:a[2].plotYold||a[2].plotY});c.apply(this,[].slice.call(a,1))});c.wrap(c.seriesTypes.column.prototype,"translate",function(e){e.apply(this,[].slice.call(arguments,1));if(this.chart.is3d()){var a=this.chart,b=a.options,d=b.plotOptions[this.chart.options.chart.type],b=b.chart.options3d,f=d.depth||25,g={x:a.plotWidth/2,y:a.plotHeight/2,z:b.depth,vd:b.viewDistance},h=b.alpha,i=b.beta*(a.yAxis[0].opposite?-1:1),j=(d.stacking?this.options.stack||0:this._i)*
29
+ (f+(d.groupZPadding||1));d.grouping!==!1&&(j=0);j+=d.groupZPadding||1;c.each(this.data,function(a){var b=a.shapeArgs,c=a.tooltipPos;a.shapeType="cuboid";b.alpha=h;b.beta=i;b.z=j;b.origin=g;b.depth=f;c=x([{x:c[0],y:c[1],z:j}],h,i,g)[0];a.tooltipPos=[c.x,c.y]})}});c.wrap(c.seriesTypes.column.prototype,"animate",function(e){if(this.chart.is3d()){var a=arguments[1],b=this.yAxis,d=this,f=this.yAxis.reversed;if(c.svg)a?c.each(d.data,function(a){a.height=a.shapeArgs.height;a.shapeArgs.height=1;if(!f)a.shapeArgs.y=
30
+ a.stackY?a.plotY+b.translate(a.stackY):a.plotY+(a.negative?-a.height:a.height)}):(c.each(d.data,function(a){a.shapeArgs.height=a.height;if(!f)a.shapeArgs.y=a.plotY-(a.negative?a.height:0);a.graphic&&a.graphic.animate(a.shapeArgs,d.options.animation)}),d.animate=null)}else e.apply(this,[].slice.call(arguments,1))});c.wrap(c.seriesTypes.column.prototype,"init",function(c){c.apply(this,[].slice.call(arguments,1));if(this.chart.is3d()){var a=this.chart.options.plotOptions.column.grouping,b=this.chart.options.plotOptions.column.stacking,
31
+ d=this.options.zIndex;if(!d&&(a===void 0||a)&&b){a=this.chart.retrieveStacks();b=this.options.stack||0;for(d=0;d<a[b].series.length;d++)if(a[b].series[d]===this)break;d=a.totalStacks*10-10*(a.totalStacks-a[b].position)-d;this.options.zIndex=d}}});c.seriesTypes.columnrange&&c.wrap(c.seriesTypes.columnrange.prototype,"drawPoints",F);c.wrap(c.seriesTypes.column.prototype,"drawPoints",F);var E=c.getOptions();E.plotOptions.cylinder=c.merge(E.plotOptions.column);E=c.extendClass(c.seriesTypes.column,{type:"cylinder"});
32
+ c.seriesTypes.cylinder=E;c.wrap(c.seriesTypes.cylinder.prototype,"translate",function(e){e.apply(this,[].slice.call(arguments,1));if(this.chart.is3d()){var a=this.chart,b=a.options,d=b.plotOptions.cylinder,b=b.chart.options3d,f=d.depth||0,g={x:a.inverted?a.plotHeight/2:a.plotWidth/2,y:a.inverted?a.plotWidth/2:a.plotHeight/2,z:b.depth,vd:b.viewDistance},h=b.alpha,i=d.stacking?(this.options.stack||0)*f:this._i*f;i+=f/2;d.grouping!==!1&&(i=0);c.each(this.data,function(a){var b=a.shapeArgs;a.shapeType=
33
+ "arc3d";b.x+=f/2;b.z=i;b.start=0;b.end=2*m;b.r=f*0.95;b.innerR=0;b.depth=b.height*(1/k((90-h)*n))-i;b.alpha=90-h;b.beta=0;b.origin=g})}});c.wrap(c.seriesTypes.pie.prototype,"translate",function(e){e.apply(this,[].slice.call(arguments,1));if(this.chart.is3d()){var a=this,b=a.chart,d=b.options,f=d.plotOptions.pie,g=f.depth||0,d=d.chart.options3d,h={x:b.plotWidth/2,y:b.plotHeight/2,z:d.depth},i=d.alpha,j=d.beta,o=f.stacking?(this.options.stack||0)*g:a._i*g;o+=g/2;f.grouping!==!1&&(o=0);c.each(a.data,
34
+ function(b){b.shapeType="arc3d";var c=b.shapeArgs;c.z=o;c.depth=g*0.75;c.origin=h;c.alpha=i;c.beta=j;c=(c.end+c.start)/2;b.slicedTranslation={translateX:C(l(c)*a.options.slicedOffset*l(i*n)),translateY:C(k(c)*a.options.slicedOffset*l(i*n))}})}});c.wrap(c.seriesTypes.pie.prototype.pointClass.prototype,"haloPath",function(c){return this.series.chart.is3d()?[]:c.call(this)});c.wrap(c.seriesTypes.pie.prototype,"drawPoints",function(e){this.chart.is3d()&&c.each(this.data,function(a){var b=a.options.borderColor||
35
+ a.color||a.series.userOptions.borderColor||a.series.color;a.options.borderColor=b;a.borderColor=b;a.pointAttr[""].stroke=b;a.pointAttr.hover.stroke=b;a.pointAttr.select.stroke=b});e.apply(this,[].slice.call(arguments,1))});c.wrap(c.seriesTypes.pie.prototype,"drawDataLabels",function(e){e.apply(this,[].slice.call(arguments,1));this.chart.is3d()&&c.each(this.data,function(a){var b=a.shapeArgs,c=b.r,e=b.depth,g=b.alpha*n,h=b.beta*n,b=(b.start+b.end)/2;a.connector&&a.connector.translate(-c*(1-l(h))*l(b)+
36
+ (l(b)>0?k(h)*e:0),-c*(1-l(g))*k(b)+(k(b)>0?k(g)*e:0));a.dataLabel&&a.dataLabel.attr({x:a.dataLabel.connX+-c*(1-l(h))*l(b)+(l(b)>0?l(h)*e:0)-a.dataLabel.width/2,y:a.dataLabel.connY+-c*(1-l(g))*k(b)+(k(b)>0?k(g)*e:0)-a.dataLabel.height/2})})});c.wrap(c.seriesTypes.pie.prototype,"addPoint",function(c){c.apply(this,[].slice.call(arguments,1));this.chart.is3d()&&this.update()});c.wrap(c.seriesTypes.pie.prototype,"animate",function(e){if(this.chart.is3d()){var a=arguments[1],b=this.options.animation,d=
37
+ this.center,f=this.group,g=this.markerGroup;if(c.svg)if(b===!0&&(b={}),a){if(this.oldtranslateX=f.translateX,this.oldtranslateY=f.translateY,a={translateX:d[0],translateY:d[1],scaleX:0.001,scaleY:0.001},f.attr(a),g)g.attrSetters=f.attrSetters,g.attr(a)}else a={translateX:this.oldtranslateX,translateY:this.oldtranslateY,scaleX:1,scaleY:1},f.animate(a,b),g&&g.animate(a,b),this.animate=null}else e.apply(this,[].slice.call(arguments,1))});c.wrap(c.seriesTypes.scatter.prototype,"translate",function(e){e.apply(this,
38
+ [].slice.call(arguments,1));if(this.chart.is3d()){var a=this.chart,b=this.chart.options.chart.options3d,d=b.alpha,f=b.beta,g={x:a.inverted?a.plotHeight/2:a.plotWidth/2,y:a.inverted?a.plotWidth/2:a.plotHeight/2,z:b.depth,vd:b.viewDistance},b=b.depth,h=a.options.zAxis||{min:0,max:b},i=b/(h.max-h.min);c.each(this.data,function(a){var b={x:a.plotX,y:a.plotY,z:(a.z-h.min)*i},b=x([b],d,f,g)[0];a.plotXold=a.plotX;a.plotYold=a.plotY;a.plotX=b.x;a.plotY=b.y;a.plotZ=b.z})}});c.wrap(c.seriesTypes.scatter.prototype,
39
+ "init",function(c){var a=c.apply(this,[].slice.call(arguments,1));if(this.chart.is3d())this.pointArrayMap=["x","y","z"],this.tooltipOptions.pointFormat=this.userOptions.tooltip?this.userOptions.tooltip.pointFormat||"x: <b>{point.x}</b><br/>y: <b>{point.y}</b><br/>z: <b>{point.z}</b><br/>":"x: <b>{point.x}</b><br/>y: <b>{point.y}</b><br/>z: <b>{point.z}</b><br/>";return a});if(c.VMLRenderer)c.setOptions({animate:!1}),c.VMLRenderer.prototype.cuboid=c.SVGRenderer.prototype.cuboid,c.VMLRenderer.prototype.cuboidPath=
40
+ c.SVGRenderer.prototype.cuboidPath,c.VMLRenderer.prototype.toLinePath=c.SVGRenderer.prototype.toLinePath,c.VMLRenderer.prototype.createElement3D=c.SVGRenderer.prototype.createElement3D,c.VMLRenderer.prototype.arc3d=function(e){e=c.SVGRenderer.prototype.arc3d.call(this,e);e.css({zIndex:e.zIndex});return e},c.VMLRenderer.prototype.arc3dPath=c.SVGRenderer.prototype.arc3dPath,c.Chart.prototype.renderSeries=function(){for(var c,a=this.series.length;a--;)c=this.series[a],c.translate(),c.setTooltipPoints&&
41
+ c.setTooltipPoints(),c.render()},c.wrap(c.Axis.prototype,"render",function(c){c.apply(this,[].slice.call(arguments,1));this.sideFrame&&(this.sideFrame.css({zIndex:0}),this.sideFrame.front.attr({fill:this.sideFrame.color}));this.bottomFrame&&(this.bottomFrame.css({zIndex:1}),this.bottomFrame.front.attr({fill:this.bottomFrame.color}));this.backFrame&&(this.backFrame.css({zIndex:0}),this.backFrame.front.attr({fill:this.backFrame.color}))})})(Highcharts);
js/highcharts.js ADDED
@@ -0,0 +1,305 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ Highcharts JS v4.0.1 (2014-04-24)
3
+
4
+ (c) 2009-2014 Torstein Honsi
5
+
6
+ License: www.highcharts.com/license
7
+ */
8
+ (function(){function q(a,b){var c;a||(a={});for(c in b)a[c]=b[c];return a}function w(){var a,b=arguments,c,d={},e=function(a,b){var c,d;typeof a!=="object"&&(a={});for(d in b)b.hasOwnProperty(d)&&(c=b[d],a[d]=c&&typeof c==="object"&&Object.prototype.toString.call(c)!=="[object Array]"&&d!=="renderTo"&&typeof c.nodeType!=="number"?e(a[d]||{},c):b[d]);return a};b[0]===!0&&(d=b[1],b=Array.prototype.slice.call(b,2));c=b.length;for(a=0;a<c;a++)d=e(d,b[a]);return d}function z(a,b){return parseInt(a,b||
9
+ 10)}function Fa(a){return typeof a==="string"}function ca(a){return typeof a==="object"}function La(a){return Object.prototype.toString.call(a)==="[object Array]"}function ha(a){return typeof a==="number"}function za(a){return U.log(a)/U.LN10}function ia(a){return U.pow(10,a)}function ja(a,b){for(var c=a.length;c--;)if(a[c]===b){a.splice(c,1);break}}function r(a){return a!==t&&a!==null}function H(a,b,c){var d,e;if(Fa(b))r(c)?a.setAttribute(b,c):a&&a.getAttribute&&(e=a.getAttribute(b));else if(r(b)&&
10
+ ca(b))for(d in b)a.setAttribute(d,b[d]);return e}function qa(a){return La(a)?a:[a]}function m(){var a=arguments,b,c,d=a.length;for(b=0;b<d;b++)if(c=a[b],typeof c!=="undefined"&&c!==null)return c}function G(a,b){if(Aa&&!aa&&b&&b.opacity!==t)b.filter="alpha(opacity="+b.opacity*100+")";q(a.style,b)}function Y(a,b,c,d,e){a=y.createElement(a);b&&q(a,b);e&&G(a,{padding:0,border:Q,margin:0});c&&G(a,c);d&&d.appendChild(a);return a}function ka(a,b){var c=function(){};c.prototype=new a;q(c.prototype,b);return c}
11
+ function Ga(a,b,c,d){var e=E.lang,a=+a||0,f=b===-1?(a.toString().split(".")[1]||"").length:isNaN(b=M(b))?2:b,b=c===void 0?e.decimalPoint:c,d=d===void 0?e.thousandsSep:d,e=a<0?"-":"",c=String(z(a=M(a).toFixed(f))),g=c.length>3?c.length%3:0;return e+(g?c.substr(0,g)+d:"")+c.substr(g).replace(/(\d{3})(?=\d)/g,"$1"+d)+(f?b+M(a-c).toFixed(f).slice(2):"")}function Ha(a,b){return Array((b||2)+1-String(a).length).join(0)+a}function Ma(a,b,c){var d=a[b];a[b]=function(){var a=Array.prototype.slice.call(arguments);
12
+ a.unshift(d);return c.apply(this,a)}}function Ia(a,b){for(var c="{",d=!1,e,f,g,h,i,j=[];(c=a.indexOf(c))!==-1;){e=a.slice(0,c);if(d){f=e.split(":");g=f.shift().split(".");i=g.length;e=b;for(h=0;h<i;h++)e=e[g[h]];if(f.length)f=f.join(":"),g=/\.([0-9])/,h=E.lang,i=void 0,/f$/.test(f)?(i=(i=f.match(g))?i[1]:-1,e!==null&&(e=Ga(e,i,h.decimalPoint,f.indexOf(",")>-1?h.thousandsSep:""))):e=cb(f,e)}j.push(e);a=a.slice(c+1);c=(d=!d)?"}":"{"}j.push(a);return j.join("")}function mb(a){return U.pow(10,T(U.log(a)/
13
+ U.LN10))}function nb(a,b,c,d){var e,c=m(c,1);e=a/c;b||(b=[1,2,2.5,5,10],d&&d.allowDecimals===!1&&(c===1?b=[1,2,5,10]:c<=0.1&&(b=[1/c])));for(d=0;d<b.length;d++)if(a=b[d],e<=(b[d]+(b[d+1]||b[d]))/2)break;a*=c;return a}function Bb(){this.symbol=this.color=0}function ob(a,b){var c=a.length,d,e;for(e=0;e<c;e++)a[e].ss_i=e;a.sort(function(a,c){d=b(a,c);return d===0?a.ss_i-c.ss_i:d});for(e=0;e<c;e++)delete a[e].ss_i}function Na(a){for(var b=a.length,c=a[0];b--;)a[b]<c&&(c=a[b]);return c}function Ba(a){for(var b=
14
+ a.length,c=a[0];b--;)a[b]>c&&(c=a[b]);return c}function Oa(a,b){for(var c in a)a[c]&&a[c]!==b&&a[c].destroy&&a[c].destroy(),delete a[c]}function Pa(a){db||(db=Y(Ja));a&&db.appendChild(a);db.innerHTML=""}function ra(a,b){var c="Highcharts error #"+a+": www.highcharts.com/errors/"+a;if(b)throw c;else I.console&&console.log(c)}function da(a){return parseFloat(a.toPrecision(14))}function Qa(a,b){va=m(a,b.animation)}function Cb(){var a=E.global.useUTC,b=a?"getUTC":"get",c=a?"setUTC":"set";Ra=(a&&E.global.timezoneOffset||
15
+ 0)*6E4;eb=a?Date.UTC:function(a,b,c,g,h,i){return(new Date(a,b,m(c,1),m(g,0),m(h,0),m(i,0))).getTime()};pb=b+"Minutes";qb=b+"Hours";rb=b+"Day";Xa=b+"Date";fb=b+"Month";gb=b+"FullYear";Db=c+"Minutes";Eb=c+"Hours";sb=c+"Date";Fb=c+"Month";Gb=c+"FullYear"}function P(){}function Sa(a,b,c,d){this.axis=a;this.pos=b;this.type=c||"";this.isNew=!0;!c&&!d&&this.addLabel()}function la(){this.init.apply(this,arguments)}function Ya(){this.init.apply(this,arguments)}function Hb(a,b,c,d,e){var f=a.chart.inverted;
16
+ this.axis=a;this.isNegative=c;this.options=b;this.x=d;this.total=null;this.points={};this.stack=e;this.alignOptions={align:b.align||(f?c?"left":"right":"center"),verticalAlign:b.verticalAlign||(f?"middle":c?"bottom":"top"),y:m(b.y,f?4:c?14:-6),x:m(b.x,f?c?-6:6:0)};this.textAlign=b.textAlign||(f?c?"right":"left":"center")}var t,y=document,I=window,U=Math,u=U.round,T=U.floor,Ka=U.ceil,v=U.max,C=U.min,M=U.abs,Z=U.cos,ea=U.sin,ma=U.PI,Ca=ma*2/360,wa=navigator.userAgent,Ib=I.opera,Aa=/msie/i.test(wa)&&
17
+ !Ib,hb=y.documentMode===8,ib=/AppleWebKit/.test(wa),Ta=/Firefox/.test(wa),Jb=/(Mobile|Android|Windows Phone)/.test(wa),xa="http://www.w3.org/2000/svg",aa=!!y.createElementNS&&!!y.createElementNS(xa,"svg").createSVGRect,Nb=Ta&&parseInt(wa.split("Firefox/")[1],10)<4,fa=!aa&&!Aa&&!!y.createElement("canvas").getContext,Za,$a,Kb={},tb=0,db,E,cb,va,ub,A,sa=function(){},V=[],ab=0,Ja="div",Q="none",Ob=/^[0-9]+$/,Pb="stroke-width",eb,Ra,pb,qb,rb,Xa,fb,gb,Db,Eb,sb,Fb,Gb,F={},R=I.Highcharts=I.Highcharts?ra(16,
18
+ !0):{};cb=function(a,b,c){if(!r(b)||isNaN(b))return"Invalid date";var a=m(a,"%Y-%m-%d %H:%M:%S"),d=new Date(b-Ra),e,f=d[qb](),g=d[rb](),h=d[Xa](),i=d[fb](),j=d[gb](),k=E.lang,l=k.weekdays,d=q({a:l[g].substr(0,3),A:l[g],d:Ha(h),e:h,b:k.shortMonths[i],B:k.months[i],m:Ha(i+1),y:j.toString().substr(2,2),Y:j,H:Ha(f),I:Ha(f%12||12),l:f%12||12,M:Ha(d[pb]()),p:f<12?"AM":"PM",P:f<12?"am":"pm",S:Ha(d.getSeconds()),L:Ha(u(b%1E3),3)},R.dateFormats);for(e in d)for(;a.indexOf("%"+e)!==-1;)a=a.replace("%"+e,typeof d[e]===
19
+ "function"?d[e](b):d[e]);return c?a.substr(0,1).toUpperCase()+a.substr(1):a};Bb.prototype={wrapColor:function(a){if(this.color>=a)this.color=0},wrapSymbol:function(a){if(this.symbol>=a)this.symbol=0}};A=function(){for(var a=0,b=arguments,c=b.length,d={};a<c;a++)d[b[a++]]=b[a];return d}("millisecond",1,"second",1E3,"minute",6E4,"hour",36E5,"day",864E5,"week",6048E5,"month",26784E5,"year",31556952E3);ub={init:function(a,b,c){var b=b||"",d=a.shift,e=b.indexOf("C")>-1,f=e?7:3,g,b=b.split(" "),c=[].concat(c),
20
+ h,i,j=function(a){for(g=a.length;g--;)a[g]==="M"&&a.splice(g+1,0,a[g+1],a[g+2],a[g+1],a[g+2])};e&&(j(b),j(c));a.isArea&&(h=b.splice(b.length-6,6),i=c.splice(c.length-6,6));if(d<=c.length/f&&b.length===c.length)for(;d--;)c=[].concat(c).splice(0,f).concat(c);a.shift=0;if(b.length)for(a=c.length;b.length<a;)d=[].concat(b).splice(b.length-f,f),e&&(d[f-6]=d[f-2],d[f-5]=d[f-1]),b=b.concat(d);h&&(b=b.concat(h),c=c.concat(i));return[b,c]},step:function(a,b,c,d){var e=[],f=a.length;if(c===1)e=d;else if(f===
21
+ b.length&&c<1)for(;f--;)d=parseFloat(a[f]),e[f]=isNaN(d)?a[f]:c*parseFloat(b[f]-d)+d;else e=b;return e}};(function(a){I.HighchartsAdapter=I.HighchartsAdapter||a&&{init:function(b){var c=a.fx,d=c.step,e,f=a.Tween,g=f&&f.propHooks;e=a.cssHooks.opacity;a.extend(a.easing,{easeOutQuad:function(a,b,c,d,e){return-d*(b/=e)*(b-2)+c}});a.each(["cur","_default","width","height","opacity"],function(a,b){var e=d,k;b==="cur"?e=c.prototype:b==="_default"&&f&&(e=g[b],b="set");(k=e[b])&&(e[b]=function(c){var d,c=
22
+ a?c:this;if(c.prop!=="align")return d=c.elem,d.attr?d.attr(c.prop,b==="cur"?t:c.now):k.apply(this,arguments)})});Ma(e,"get",function(a,b,c){return b.attr?b.opacity||0:a.call(this,b,c)});e=function(a){var c=a.elem,d;if(!a.started)d=b.init(c,c.d,c.toD),a.start=d[0],a.end=d[1],a.started=!0;c.attr("d",b.step(a.start,a.end,a.pos,c.toD))};f?g.d={set:e}:d.d=e;this.each=Array.prototype.forEach?function(a,b){return Array.prototype.forEach.call(a,b)}:function(a,b){for(var c=0,d=a.length;c<d;c++)if(b.call(a[c],
23
+ a[c],c,a)===!1)return c};a.fn.highcharts=function(){var a="Chart",b=arguments,c,d;if(this[0]){Fa(b[0])&&(a=b[0],b=Array.prototype.slice.call(b,1));c=b[0];if(c!==t)c.chart=c.chart||{},c.chart.renderTo=this[0],new R[a](c,b[1]),d=this;c===t&&(d=V[H(this[0],"data-highcharts-chart")])}return d}},getScript:a.getScript,inArray:a.inArray,adapterRun:function(b,c){return a(b)[c]()},grep:a.grep,map:function(a,c){for(var d=[],e=0,f=a.length;e<f;e++)d[e]=c.call(a[e],a[e],e,a);return d},offset:function(b){return a(b).offset()},
24
+ addEvent:function(b,c,d){a(b).bind(c,d)},removeEvent:function(b,c,d){var e=y.removeEventListener?"removeEventListener":"detachEvent";y[e]&&b&&!b[e]&&(b[e]=function(){});a(b).unbind(c,d)},fireEvent:function(b,c,d,e){var f=a.Event(c),g="detached"+c,h;!Aa&&d&&(delete d.layerX,delete d.layerY,delete d.returnValue);q(f,d);b[c]&&(b[g]=b[c],b[c]=null);a.each(["preventDefault","stopPropagation"],function(a,b){var c=f[b];f[b]=function(){try{c.call(f)}catch(a){b==="preventDefault"&&(h=!0)}}});a(b).trigger(f);
25
+ b[g]&&(b[c]=b[g],b[g]=null);e&&!f.isDefaultPrevented()&&!h&&e(f)},washMouseEvent:function(a){var c=a.originalEvent||a;if(c.pageX===t)c.pageX=a.pageX,c.pageY=a.pageY;return c},animate:function(b,c,d){var e=a(b);if(!b.style)b.style={};if(c.d)b.toD=c.d,c.d=1;e.stop();c.opacity!==t&&b.attr&&(c.opacity+="px");e.animate(c,d)},stop:function(b){a(b).stop()}}})(I.jQuery);var S=I.HighchartsAdapter,N=S||{};S&&S.init.call(S,ub);var jb=N.adapterRun,Qb=N.getScript,Da=N.inArray,p=N.each,vb=N.grep,Rb=N.offset,Ua=
26
+ N.map,K=N.addEvent,W=N.removeEvent,D=N.fireEvent,Sb=N.washMouseEvent,kb=N.animate,bb=N.stop,N={enabled:!0,x:0,y:15,style:{color:"#606060",cursor:"default",fontSize:"11px"}};E={colors:"#7cb5ec,#434348,#90ed7d,#f7a35c,#8085e9,#f15c80,#e4d354,#8085e8,#8d4653,#91e8e1".split(","),symbols:["circle","diamond","square","triangle","triangle-down"],lang:{loading:"Loading...",months:"January,February,March,April,May,June,July,August,September,October,November,December".split(","),shortMonths:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(","),
27
+ weekdays:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday".split(","),decimalPoint:".",numericSymbols:"k,M,G,T,P,E".split(","),resetZoom:"Reset zoom",resetZoomTitle:"Reset zoom level 1:1",thousandsSep:","},global:{useUTC:!0,canvasToolsURL:"http://code.highcharts.com/4.0.1/modules/canvas-tools.js",VMLRadialGradientURL:"http://code.highcharts.com/4.0.1/gfx/vml-radial-gradient.png"},chart:{borderColor:"#4572A7",borderRadius:0,defaultSeriesType:"line",ignoreHiddenSeries:!0,spacing:[10,10,15,
28
+ 10],backgroundColor:"#FFFFFF",plotBorderColor:"#C0C0C0",resetZoomButton:{theme:{zIndex:20},position:{align:"right",x:-10,y:10}}},title:{text:"Chart title",align:"center",margin:15,style:{color:"#333333",fontSize:"18px"}},subtitle:{text:"",align:"center",style:{color:"#555555"}},plotOptions:{line:{allowPointSelect:!1,showCheckbox:!1,animation:{duration:1E3},events:{},lineWidth:2,marker:{lineWidth:0,radius:4,lineColor:"#FFFFFF",states:{hover:{enabled:!0},select:{fillColor:"#FFFFFF",lineColor:"#000000",
29
+ lineWidth:2}}},point:{events:{}},dataLabels:w(N,{align:"center",enabled:!1,formatter:function(){return this.y===null?"":Ga(this.y,-1)},verticalAlign:"bottom",y:0}),cropThreshold:300,pointRange:0,states:{hover:{marker:{},halo:{size:10,opacity:0.25}},select:{marker:{}}},stickyTracking:!0,turboThreshold:1E3}},labels:{style:{position:"absolute",color:"#3E576F"}},legend:{enabled:!0,align:"center",layout:"horizontal",labelFormatter:function(){return this.name},borderColor:"#909090",borderRadius:0,navigation:{activeColor:"#274b6d",
30
+ inactiveColor:"#CCC"},shadow:!1,itemStyle:{color:"#333333",fontSize:"12px",fontWeight:"bold"},itemHoverStyle:{color:"#000"},itemHiddenStyle:{color:"#CCC"},itemCheckboxStyle:{position:"absolute",width:"13px",height:"13px"},symbolPadding:5,verticalAlign:"bottom",x:0,y:0,title:{style:{fontWeight:"bold"}}},loading:{labelStyle:{fontWeight:"bold",position:"relative",top:"1em"},style:{position:"absolute",backgroundColor:"white",opacity:0.5,textAlign:"center"}},tooltip:{enabled:!0,animation:aa,backgroundColor:"rgba(249, 249, 249, .85)",
31
+ borderWidth:1,borderRadius:3,dateTimeLabelFormats:{millisecond:"%A, %b %e, %H:%M:%S.%L",second:"%A, %b %e, %H:%M:%S",minute:"%A, %b %e, %H:%M",hour:"%A, %b %e, %H:%M",day:"%A, %b %e, %Y",week:"Week from %A, %b %e, %Y",month:"%B %Y",year:"%Y"},headerFormat:'<span style="font-size: 10px">{point.key}</span><br/>',pointFormat:'<span style="color:{series.color}">●</span> {series.name}: <b>{point.y}</b><br/>',shadow:!0,snap:Jb?25:10,style:{color:"#333333",cursor:"default",fontSize:"12px",padding:"8px",
32
+ whiteSpace:"nowrap"}},credits:{enabled:!0,text:"Highcharts.com",href:"http://www.highcharts.com",position:{align:"right",x:-10,verticalAlign:"bottom",y:-5},style:{cursor:"pointer",color:"#909090",fontSize:"9px"}}};var ba=E.plotOptions,S=ba.line;Cb();var Tb=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]?(?:\.[0-9]+)?)\s*\)/,Ub=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,Vb=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/,ya=function(a){var b=[],c,
33
+ d;(function(a){a&&a.stops?d=Ua(a.stops,function(a){return ya(a[1])}):(c=Tb.exec(a))?b=[z(c[1]),z(c[2]),z(c[3]),parseFloat(c[4],10)]:(c=Ub.exec(a))?b=[z(c[1],16),z(c[2],16),z(c[3],16),1]:(c=Vb.exec(a))&&(b=[z(c[1]),z(c[2]),z(c[3]),1])})(a);return{get:function(c){var f;d?(f=w(a),f.stops=[].concat(f.stops),p(d,function(a,b){f.stops[b]=[f.stops[b][0],a.get(c)]})):f=b&&!isNaN(b[0])?c==="rgb"?"rgb("+b[0]+","+b[1]+","+b[2]+")":c==="a"?b[3]:"rgba("+b.join(",")+")":a;return f},brighten:function(a){if(d)p(d,
34
+ function(b){b.brighten(a)});else if(ha(a)&&a!==0){var c;for(c=0;c<3;c++)b[c]+=z(a*255),b[c]<0&&(b[c]=0),b[c]>255&&(b[c]=255)}return this},rgba:b,setOpacity:function(a){b[3]=a;return this}}};P.prototype={init:function(a,b){this.element=b==="span"?Y(b):y.createElementNS(xa,b);this.renderer=a},opacity:1,animate:function(a,b,c){b=m(b,va,!0);bb(this);if(b){b=w(b,{});if(c)b.complete=c;kb(this,a,b)}else this.attr(a),c&&c()},colorGradient:function(a,b,c){var d=this.renderer,e,f,g,h,i,j,k,l,o,n,s=[];a.linearGradient?
35
+ f="linearGradient":a.radialGradient&&(f="radialGradient");if(f){g=a[f];h=d.gradients;j=a.stops;o=c.radialReference;La(g)&&(a[f]=g={x1:g[0],y1:g[1],x2:g[2],y2:g[3],gradientUnits:"userSpaceOnUse"});f==="radialGradient"&&o&&!r(g.gradientUnits)&&(g=w(g,{cx:o[0]-o[2]/2+g.cx*o[2],cy:o[1]-o[2]/2+g.cy*o[2],r:g.r*o[2],gradientUnits:"userSpaceOnUse"}));for(n in g)n!=="id"&&s.push(n,g[n]);for(n in j)s.push(j[n]);s=s.join(",");h[s]?a=h[s].attr("id"):(g.id=a="highcharts-"+tb++,h[s]=i=d.createElement(f).attr(g).add(d.defs),
36
+ i.stops=[],p(j,function(a){a[1].indexOf("rgba")===0?(e=ya(a[1]),k=e.get("rgb"),l=e.get("a")):(k=a[1],l=1);a=d.createElement("stop").attr({offset:a[0],"stop-color":k,"stop-opacity":l}).add(i);i.stops.push(a)}));c.setAttribute(b,"url("+d.url+"#"+a+")")}},attr:function(a,b){var c,d,e=this.element,f,g=this,h;typeof a==="string"&&b!==t&&(c=a,a={},a[c]=b);if(typeof a==="string")g=(this[a+"Getter"]||this._defaultGetter).call(this,a,e);else{for(c in a){d=a[c];h=!1;this.symbolName&&/^(x|y|width|height|r|start|end|innerR|anchorX|anchorY)/.test(c)&&
37
+ (f||(this.symbolAttr(a),f=!0),h=!0);if(this.rotation&&(c==="x"||c==="y"))this.doTransform=!0;h||(this[c+"Setter"]||this._defaultSetter).call(this,d,c,e);this.shadows&&/^(width|height|visibility|x|y|d|transform|cx|cy|r)$/.test(c)&&this.updateShadows(c,d)}if(this.doTransform)this.updateTransform(),this.doTransform=!1}return g},updateShadows:function(a,b){for(var c=this.shadows,d=c.length;d--;)c[d].setAttribute(a,a==="height"?v(b-(c[d].cutHeight||0),0):a==="d"?this.d:b)},addClass:function(a){var b=this.element,
38
+ c=H(b,"class")||"";c.indexOf(a)===-1&&H(b,"class",c+" "+a);return this},symbolAttr:function(a){var b=this;p("x,y,r,start,end,width,height,innerR,anchorX,anchorY".split(","),function(c){b[c]=m(a[c],b[c])});b.attr({d:b.renderer.symbols[b.symbolName](b.x,b.y,b.width,b.height,b)})},clip:function(a){return this.attr("clip-path",a?"url("+this.renderer.url+"#"+a.id+")":Q)},crisp:function(a){var b,c={},d,e=a.strokeWidth||this.strokeWidth||this.attr&&this.attr("stroke-width")||0;d=u(e)%2/2;a.x=T(a.x||this.x||
39
+ 0)+d;a.y=T(a.y||this.y||0)+d;a.width=T((a.width||this.width||0)-2*d);a.height=T((a.height||this.height||0)-2*d);a.strokeWidth=e;for(b in a)this[b]!==a[b]&&(this[b]=c[b]=a[b]);return c},css:function(a){var b=this.styles,c={},d=this.element,e,f,g="";e=!b;if(a&&a.color)a.fill=a.color;if(b)for(f in a)a[f]!==b[f]&&(c[f]=a[f],e=!0);if(e){e=this.textWidth=a&&a.width&&d.nodeName.toLowerCase()==="text"&&z(a.width);b&&(a=q(b,c));this.styles=a;e&&(fa||!aa&&this.renderer.forExport)&&delete a.width;if(Aa&&!aa)G(this.element,
40
+ a);else{b=function(a,b){return"-"+b.toLowerCase()};for(f in a)g+=f.replace(/([A-Z])/g,b)+":"+a[f]+";";H(d,"style",g)}e&&this.added&&this.renderer.buildText(this)}return this},on:function(a,b){var c=this,d=c.element;$a&&a==="click"?(d.ontouchstart=function(a){c.touchEventFired=Date.now();a.preventDefault();b.call(d,a)},d.onclick=function(a){(wa.indexOf("Android")===-1||Date.now()-(c.touchEventFired||0)>1100)&&b.call(d,a)}):d["on"+a]=b;return this},setRadialReference:function(a){this.element.radialReference=
41
+ a;return this},translate:function(a,b){return this.attr({translateX:a,translateY:b})},invert:function(){this.inverted=!0;this.updateTransform();return this},updateTransform:function(){var a=this.translateX||0,b=this.translateY||0,c=this.scaleX,d=this.scaleY,e=this.inverted,f=this.rotation,g=this.element;e&&(a+=this.attr("width"),b+=this.attr("height"));a=["translate("+a+","+b+")"];e?a.push("rotate(90) scale(-1,1)"):f&&a.push("rotate("+f+" "+(g.getAttribute("x")||0)+" "+(g.getAttribute("y")||0)+")");
42
+ (r(c)||r(d))&&a.push("scale("+m(c,1)+" "+m(d,1)+")");a.length&&g.setAttribute("transform",a.join(" "))},toFront:function(){var a=this.element;a.parentNode.appendChild(a);return this},align:function(a,b,c){var d,e,f,g,h={};e=this.renderer;f=e.alignedObjects;if(a){if(this.alignOptions=a,this.alignByTranslate=b,!c||Fa(c))this.alignTo=d=c||"renderer",ja(f,this),f.push(this),c=null}else a=this.alignOptions,b=this.alignByTranslate,d=this.alignTo;c=m(c,e[d],e);d=a.align;e=a.verticalAlign;f=(c.x||0)+(a.x||
43
+ 0);g=(c.y||0)+(a.y||0);if(d==="right"||d==="center")f+=(c.width-(a.width||0))/{right:1,center:2}[d];h[b?"translateX":"x"]=u(f);if(e==="bottom"||e==="middle")g+=(c.height-(a.height||0))/({bottom:1,middle:2}[e]||1);h[b?"translateY":"y"]=u(g);this[this.placed?"animate":"attr"](h);this.placed=!0;this.alignAttr=h;return this},getBBox:function(){var a=this.bBox,b=this.renderer,c,d,e=this.rotation;c=this.element;var f=this.styles,g=e*Ca;d=this.textStr;var h;if(d===""||Ob.test(d))h="num."+d.toString().length+
44
+ (f?"|"+f.fontSize+"|"+f.fontFamily:"");h&&(a=b.cache[h]);if(!a){if(c.namespaceURI===xa||b.forExport){try{a=c.getBBox?q({},c.getBBox()):{width:c.offsetWidth,height:c.offsetHeight}}catch(i){}if(!a||a.width<0)a={width:0,height:0}}else a=this.htmlGetBBox();if(b.isSVG){c=a.width;d=a.height;if(Aa&&f&&f.fontSize==="11px"&&d.toPrecision(3)==="16.9")a.height=d=14;if(e)a.width=M(d*ea(g))+M(c*Z(g)),a.height=M(d*Z(g))+M(c*ea(g))}this.bBox=a;h&&(b.cache[h]=a)}return a},show:function(a){return a&&this.element.namespaceURI===
45
+ xa?(this.element.removeAttribute("visibility"),this):this.attr({visibility:a?"inherit":"visible"})},hide:function(){return this.attr({visibility:"hidden"})},fadeOut:function(a){var b=this;b.animate({opacity:0},{duration:a||150,complete:function(){b.hide()}})},add:function(a){var b=this.renderer,c=a||b,d=c.element||b.box,e=this.element,f=this.zIndex,g,h;if(a)this.parentGroup=a;this.parentInverted=a&&a.inverted;this.textStr!==void 0&&b.buildText(this);if(f)c.handleZ=!0,f=z(f);if(c.handleZ){a=d.childNodes;
46
+ for(g=0;g<a.length;g++)if(b=a[g],c=H(b,"zIndex"),b!==e&&(z(c)>f||!r(f)&&r(c))){d.insertBefore(e,b);h=!0;break}}h||d.appendChild(e);this.added=!0;if(this.onAdd)this.onAdd();return this},safeRemoveChild:function(a){var b=a.parentNode;b&&b.removeChild(a)},destroy:function(){var a=this,b=a.element||{},c=a.shadows,d=a.renderer.isSVG&&b.nodeName==="SPAN"&&a.parentGroup,e,f;b.onclick=b.onmouseout=b.onmouseover=b.onmousemove=b.point=null;bb(a);if(a.clipPath)a.clipPath=a.clipPath.destroy();if(a.stops){for(f=
47
+ 0;f<a.stops.length;f++)a.stops[f]=a.stops[f].destroy();a.stops=null}a.safeRemoveChild(b);for(c&&p(c,function(b){a.safeRemoveChild(b)});d&&d.div.childNodes.length===0;)b=d.parentGroup,a.safeRemoveChild(d.div),delete d.div,d=b;a.alignTo&&ja(a.renderer.alignedObjects,a);for(e in a)delete a[e];return null},shadow:function(a,b,c){var d=[],e,f,g=this.element,h,i,j,k;if(a){i=m(a.width,3);j=(a.opacity||0.15)/i;k=this.parentInverted?"(-1,-1)":"("+m(a.offsetX,1)+", "+m(a.offsetY,1)+")";for(e=1;e<=i;e++){f=
48
+ g.cloneNode(0);h=i*2+1-2*e;H(f,{isShadow:"true",stroke:a.color||"black","stroke-opacity":j*e,"stroke-width":h,transform:"translate"+k,fill:Q});if(c)H(f,"height",v(H(f,"height")-h,0)),f.cutHeight=h;b?b.element.appendChild(f):g.parentNode.insertBefore(f,g);d.push(f)}this.shadows=d}return this},xGetter:function(a){this.element.nodeName==="circle"&&(a={x:"cx",y:"cy"}[a]||a);return this._defaultGetter(a)},_defaultGetter:function(a){a=m(this[a],this.element?this.element.getAttribute(a):null,0);/^[0-9\.]+$/.test(a)&&
49
+ (a=parseFloat(a));return a},dSetter:function(a,b,c){a&&a.join&&(a=a.join(" "));/(NaN| {2}|^$)/.test(a)&&(a="M 0 0");c.setAttribute(b,a);this[b]=a},dashstyleSetter:function(a){var b;if(a=a&&a.toLowerCase()){a=a.replace("shortdashdotdot","3,1,1,1,1,1,").replace("shortdashdot","3,1,1,1").replace("shortdot","1,1,").replace("shortdash","3,1,").replace("longdash","8,3,").replace(/dot/g,"1,3,").replace("dash","4,3,").replace(/,$/,"").split(",");for(b=a.length;b--;)a[b]=z(a[b])*this.element.getAttribute("stroke-width");
50
+ a=a.join(",");this.element.setAttribute("stroke-dasharray",a)}},alignSetter:function(a){this.element.setAttribute("text-anchor",{left:"start",center:"middle",right:"end"}[a])},opacitySetter:function(a,b,c){this[b]=a;c.setAttribute(b,a)},"stroke-widthSetter":function(a,b,c){a===0&&(a=1.0E-5);this.strokeWidth=a;c.setAttribute(b,a)},titleSetter:function(a){var b=this.element.getElementsByTagName("title")[0];b||(b=y.createElementNS(xa,"title"),this.element.appendChild(b));b.textContent=a},textSetter:function(a){if(a!==
51
+ this.textStr)delete this.bBox,this.textStr=a,this.added&&this.renderer.buildText(this)},fillSetter:function(a,b,c){typeof a==="string"?c.setAttribute(b,a):a&&this.colorGradient(a,b,c)},zIndexSetter:function(a,b,c){c.setAttribute(b,a);this[b]=a},_defaultSetter:function(a,b,c){c.setAttribute(b,a)}};P.prototype.yGetter=P.prototype.xGetter;P.prototype.translateXSetter=P.prototype.translateYSetter=P.prototype.rotationSetter=P.prototype.verticalAlignSetter=P.prototype.scaleXSetter=P.prototype.scaleYSetter=
52
+ function(a,b){this[b]=a;this.doTransform=!0};P.prototype.strokeSetter=P.prototype.fillSetter;var ta=function(){this.init.apply(this,arguments)};ta.prototype={Element:P,init:function(a,b,c,d,e){var f=location,g,d=this.createElement("svg").attr({version:"1.1"}).css(this.getStyle(d));g=d.element;a.appendChild(g);a.innerHTML.indexOf("xmlns")===-1&&H(g,"xmlns",xa);this.isSVG=!0;this.box=g;this.boxWrapper=d;this.alignedObjects=[];this.url=(Ta||ib)&&y.getElementsByTagName("base").length?f.href.replace(/#.*?$/,
53
+ "").replace(/([\('\)])/g,"\\$1").replace(/ /g,"%20"):"";this.createElement("desc").add().element.appendChild(y.createTextNode("Created with Highcharts 4.0.1"));this.defs=this.createElement("defs").add();this.forExport=e;this.gradients={};this.cache={};this.setSize(b,c,!1);var h;if(Ta&&a.getBoundingClientRect)this.subPixelFix=b=function(){G(a,{left:0,top:0});h=a.getBoundingClientRect();G(a,{left:Ka(h.left)-h.left+"px",top:Ka(h.top)-h.top+"px"})},b(),K(I,"resize",b)},getStyle:function(a){return this.style=
54
+ q({fontFamily:'"Lucida Grande", "Lucida Sans Unicode", Arial, Helvetica, sans-serif',fontSize:"12px"},a)},isHidden:function(){return!this.boxWrapper.getBBox().width},destroy:function(){var a=this.defs;this.box=null;this.boxWrapper=this.boxWrapper.destroy();Oa(this.gradients||{});this.gradients=null;if(a)this.defs=a.destroy();this.subPixelFix&&W(I,"resize",this.subPixelFix);return this.alignedObjects=null},createElement:function(a){var b=new this.Element;b.init(this,a);return b},draw:function(){},
55
+ buildText:function(a){for(var b=a.element,c=this,d=c.forExport,e=m(a.textStr,"").toString(),f=e.indexOf("<")!==-1,g=b.childNodes,h,i,j=H(b,"x"),k=a.styles,l=a.textWidth,o=k&&k.lineHeight,n=g.length,s=function(a){return o?z(o):c.fontMetrics(/(px|em)$/.test(a&&a.style.fontSize)?a.style.fontSize:k&&k.fontSize||c.style.fontSize||12).h};n--;)b.removeChild(g[n]);!f&&e.indexOf(" ")===-1?b.appendChild(y.createTextNode(e)):(h=/<.*style="([^"]+)".*>/,i=/<.*href="(http[^"]+)".*>/,l&&!a.added&&this.box.appendChild(b),
56
+ e=f?e.replace(/<(b|strong)>/g,'<span style="font-weight:bold">').replace(/<(i|em)>/g,'<span style="font-style:italic">').replace(/<a/g,"<span").replace(/<\/(b|strong|i|em|a)>/g,"</span>").split(/<br.*?>/g):[e],e[e.length-1]===""&&e.pop(),p(e,function(e,f){var g,n=0,e=e.replace(/<span/g,"|||<span").replace(/<\/span>/g,"</span>|||");g=e.split("|||");p(g,function(e){if(e!==""||g.length===1){var o={},m=y.createElementNS(xa,"tspan"),p;h.test(e)&&(p=e.match(h)[1].replace(/(;| |^)color([ :])/,"$1fill$2"),
57
+ H(m,"style",p));i.test(e)&&!d&&(H(m,"onclick",'location.href="'+e.match(i)[1]+'"'),G(m,{cursor:"pointer"}));e=(e.replace(/<(.|\n)*?>/g,"")||" ").replace(/&lt;/g,"<").replace(/&gt;/g,">");if(e!==" "){m.appendChild(y.createTextNode(e));if(n)o.dx=0;else if(f&&j!==null)o.x=j;H(m,o);!n&&f&&(!aa&&d&&G(m,{display:"block"}),H(m,"dy",s(m),ib&&m.offsetHeight));b.appendChild(m);n++;if(l)for(var e=e.replace(/([^\^])-/g,"$1- ").split(" "),o=e.length>1&&k.whiteSpace!=="nowrap",$,r,B=a._clipHeight,q=[],v=s(),t=
58
+ 1;o&&(e.length||q.length);)delete a.bBox,$=a.getBBox(),r=$.width,!aa&&c.forExport&&(r=c.measureSpanWidth(m.firstChild.data,a.styles)),$=r>l,!$||e.length===1?(e=q,q=[],e.length&&(t++,B&&t*v>B?(e=["..."],a.attr("title",a.textStr)):(m=y.createElementNS(xa,"tspan"),H(m,{dy:v,x:j}),p&&H(m,"style",p),b.appendChild(m),r>l&&(l=r)))):(m.removeChild(m.firstChild),q.unshift(e.pop())),e.length&&m.appendChild(y.createTextNode(e.join(" ").replace(/- /g,"-")))}}})}))},button:function(a,b,c,d,e,f,g,h,i){var j=this.label(a,
59
+ b,c,i,null,null,null,null,"button"),k=0,l,o,n,s,m,p,a={x1:0,y1:0,x2:0,y2:1},e=w({"stroke-width":1,stroke:"#CCCCCC",fill:{linearGradient:a,stops:[[0,"#FEFEFE"],[1,"#F6F6F6"]]},r:2,padding:5,style:{color:"black"}},e);n=e.style;delete e.style;f=w(e,{stroke:"#68A",fill:{linearGradient:a,stops:[[0,"#FFF"],[1,"#ACF"]]}},f);s=f.style;delete f.style;g=w(e,{stroke:"#68A",fill:{linearGradient:a,stops:[[0,"#9BD"],[1,"#CDF"]]}},g);m=g.style;delete g.style;h=w(e,{style:{color:"#CCC"}},h);p=h.style;delete h.style;
60
+ K(j.element,Aa?"mouseover":"mouseenter",function(){k!==3&&j.attr(f).css(s)});K(j.element,Aa?"mouseout":"mouseleave",function(){k!==3&&(l=[e,f,g][k],o=[n,s,m][k],j.attr(l).css(o))});j.setState=function(a){(j.state=k=a)?a===2?j.attr(g).css(m):a===3&&j.attr(h).css(p):j.attr(e).css(n)};return j.on("click",function(){k!==3&&d.call(j)}).attr(e).css(q({cursor:"default"},n))},crispLine:function(a,b){a[1]===a[4]&&(a[1]=a[4]=u(a[1])-b%2/2);a[2]===a[5]&&(a[2]=a[5]=u(a[2])+b%2/2);return a},path:function(a){var b=
61
+ {fill:Q};La(a)?b.d=a:ca(a)&&q(b,a);return this.createElement("path").attr(b)},circle:function(a,b,c){a=ca(a)?a:{x:a,y:b,r:c};b=this.createElement("circle");b.xSetter=function(a){this.element.setAttribute("cx",a)};b.ySetter=function(a){this.element.setAttribute("cy",a)};return b.attr(a)},arc:function(a,b,c,d,e,f){if(ca(a))b=a.y,c=a.r,d=a.innerR,e=a.start,f=a.end,a=a.x;a=this.symbol("arc",a||0,b||0,c||0,c||0,{innerR:d||0,start:e||0,end:f||0});a.r=c;return a},rect:function(a,b,c,d,e,f){var e=ca(a)?a.r:
62
+ e,g=this.createElement("rect"),a=ca(a)?a:a===t?{}:{x:a,y:b,width:v(c,0),height:v(d,0)};if(f!==t)a.strokeWidth=f,a=g.crisp(a);if(e)a.r=e;g.rSetter=function(a){H(this.element,{rx:a,ry:a})};return g.attr(a)},setSize:function(a,b,c){var d=this.alignedObjects,e=d.length;this.width=a;this.height=b;for(this.boxWrapper[m(c,!0)?"animate":"attr"]({width:a,height:b});e--;)d[e].align()},g:function(a){var b=this.createElement("g");return r(a)?b.attr({"class":"highcharts-"+a}):b},image:function(a,b,c,d,e){var f=
63
+ {preserveAspectRatio:Q};arguments.length>1&&q(f,{x:b,y:c,width:d,height:e});f=this.createElement("image").attr(f);f.element.setAttributeNS?f.element.setAttributeNS("http://www.w3.org/1999/xlink","href",a):f.element.setAttribute("hc-svg-href",a);return f},symbol:function(a,b,c,d,e,f){var g,h=this.symbols[a],h=h&&h(u(b),u(c),d,e,f),i=/^url\((.*?)\)$/,j,k;if(h)g=this.path(h),q(g,{symbolName:a,x:b,y:c,width:d,height:e}),f&&q(g,f);else if(i.test(a))k=function(a,b){a.element&&(a.attr({width:b[0],height:b[1]}),
64
+ a.alignByTranslate||a.translate(u((d-b[0])/2),u((e-b[1])/2)))},j=a.match(i)[1],a=Kb[j],g=this.image(j).attr({x:b,y:c}),g.isImg=!0,a?k(g,a):(g.attr({width:0,height:0}),Y("img",{onload:function(){k(g,Kb[j]=[this.width,this.height])},src:j}));return g},symbols:{circle:function(a,b,c,d){var e=0.166*c;return["M",a+c/2,b,"C",a+c+e,b,a+c+e,b+d,a+c/2,b+d,"C",a-e,b+d,a-e,b,a+c/2,b,"Z"]},square:function(a,b,c,d){return["M",a,b,"L",a+c,b,a+c,b+d,a,b+d,"Z"]},triangle:function(a,b,c,d){return["M",a+c/2,b,"L",
65
+ a+c,b+d,a,b+d,"Z"]},"triangle-down":function(a,b,c,d){return["M",a,b,"L",a+c,b,a+c/2,b+d,"Z"]},diamond:function(a,b,c,d){return["M",a+c/2,b,"L",a+c,b+d/2,a+c/2,b+d,a,b+d/2,"Z"]},arc:function(a,b,c,d,e){var f=e.start,c=e.r||c||d,g=e.end-0.001,d=e.innerR,h=e.open,i=Z(f),j=ea(f),k=Z(g),g=ea(g),e=e.end-f<ma?0:1;return["M",a+c*i,b+c*j,"A",c,c,0,e,1,a+c*k,b+c*g,h?"M":"L",a+d*k,b+d*g,"A",d,d,0,e,0,a+d*i,b+d*j,h?"":"Z"]},callout:function(a,b,c,d,e){var f=C(e&&e.r||0,c,d),g=f+6,h=e&&e.anchorX,i=e&&e.anchorY,
66
+ e=u(e.strokeWidth||0)%2/2;a+=e;b+=e;e=["M",a+f,b,"L",a+c-f,b,"C",a+c,b,a+c,b,a+c,b+f,"L",a+c,b+d-f,"C",a+c,b+d,a+c,b+d,a+c-f,b+d,"L",a+f,b+d,"C",a,b+d,a,b+d,a,b+d-f,"L",a,b+f,"C",a,b,a,b,a+f,b];h&&h>c&&i>b+g&&i<b+d-g?e.splice(13,3,"L",a+c,i-6,a+c+6,i,a+c,i+6,a+c,b+d-f):h&&h<0&&i>b+g&&i<b+d-g?e.splice(33,3,"L",a,i+6,a-6,i,a,i-6,a,b+f):i&&i>d&&h>a+g&&h<a+c-g?e.splice(23,3,"L",h+6,b+d,h,b+d+6,h-6,b+d,a+f,b+d):i&&i<0&&h>a+g&&h<a+c-g&&e.splice(3,3,"L",h-6,b,h,b-6,h+6,b,c-f,b);return e}},clipRect:function(a,
67
+ b,c,d){var e="highcharts-"+tb++,f=this.createElement("clipPath").attr({id:e}).add(this.defs),a=this.rect(a,b,c,d,0).add(f);a.id=e;a.clipPath=f;return a},text:function(a,b,c,d){var e=fa||!aa&&this.forExport,f={};if(d&&!this.forExport)return this.html(a,b,c);f.x=Math.round(b||0);if(c)f.y=Math.round(c);if(a||a===0)f.text=a;a=this.createElement("text").attr(f);e&&a.css({position:"absolute"});if(!d)a.xSetter=function(a,b,c){var d=c.childNodes,e,f;for(f=1;f<d.length;f++)e=d[f],e.getAttribute("x")===c.getAttribute("x")&&
68
+ e.setAttribute("x",a);c.setAttribute(b,a)};return a},fontMetrics:function(a){var a=a||this.style.fontSize,a=/px/.test(a)?z(a):/em/.test(a)?parseFloat(a)*12:12,a=a<24?a+4:u(a*1.2),b=u(a*0.8);return{h:a,b:b}},label:function(a,b,c,d,e,f,g,h,i){function j(){var a,b;a=s.element.style;J=(Va===void 0||wb===void 0||n.styles.textAlign)&&s.textStr&&s.getBBox();n.width=(Va||J.width||0)+2*x+v;n.height=(wb||J.height||0)+2*x;na=x+o.fontMetrics(a&&a.fontSize).b;if(z){if(!m)a=u(-L*x),b=h?-na:0,n.box=m=d?o.symbol(d,
69
+ a,b,n.width,n.height,B):o.rect(a,b,n.width,n.height,0,B[Pb]),m.attr("fill",Q).add(n);m.isImg||m.attr(q({width:u(n.width),height:u(n.height)},B));B=null}}function k(){var a=n.styles,a=a&&a.textAlign,b=v+x*(1-L),c;c=h?0:na;if(r(Va)&&J&&(a==="center"||a==="right"))b+={center:0.5,right:1}[a]*(Va-J.width);if(b!==s.x||c!==s.y)s.attr("x",b),c!==t&&s.attr("y",c);s.x=b;s.y=c}function l(a,b){m?m.attr(a,b):B[a]=b}var o=this,n=o.g(i),s=o.text("",0,0,g).attr({zIndex:1}),m,J,L=0,x=3,v=0,Va,wb,xb,yb,y=0,B={},na,
70
+ z;n.onAdd=function(){s.add(n);n.attr({text:a||"",x:b,y:c});m&&r(e)&&n.attr({anchorX:e,anchorY:f})};n.widthSetter=function(a){Va=a};n.heightSetter=function(a){wb=a};n.paddingSetter=function(a){r(a)&&a!==x&&(x=a,k())};n.paddingLeftSetter=function(a){r(a)&&a!==v&&(v=a,k())};n.alignSetter=function(a){L={left:0,center:0.5,right:1}[a]};n.textSetter=function(a){a!==t&&s.textSetter(a);j();k()};n["stroke-widthSetter"]=function(a,b){a&&(z=!0);y=a%2/2;l(b,a)};n.strokeSetter=n.fillSetter=n.rSetter=function(a,
71
+ b){b==="fill"&&a&&(z=!0);l(b,a)};n.anchorXSetter=function(a,b){e=a;l(b,a+y-xb)};n.anchorYSetter=function(a,b){f=a;l(b,a-yb)};n.xSetter=function(a){n.x=a;L&&(a-=L*((Va||J.width)+x));xb=u(a);n.attr("translateX",xb)};n.ySetter=function(a){yb=n.y=u(a);n.attr("translateY",yb)};var A=n.css;return q(n,{css:function(a){if(a){var b={},a=w(a);p("fontSize,fontWeight,fontFamily,color,lineHeight,width,textDecoration,textShadow".split(","),function(c){a[c]!==t&&(b[c]=a[c],delete a[c])});s.css(b)}return A.call(n,
72
+ a)},getBBox:function(){return{width:J.width+2*x,height:J.height+2*x,x:J.x-x,y:J.y-x}},shadow:function(a){m&&m.shadow(a);return n},destroy:function(){W(n.element,"mouseenter");W(n.element,"mouseleave");s&&(s=s.destroy());m&&(m=m.destroy());P.prototype.destroy.call(n);n=o=j=k=l=null}})}};Za=ta;q(P.prototype,{htmlCss:function(a){var b=this.element;if(b=a&&b.tagName==="SPAN"&&a.width)delete a.width,this.textWidth=b,this.updateTransform();this.styles=q(this.styles,a);G(this.element,a);return this},htmlGetBBox:function(){var a=
73
+ this.element,b=this.bBox;if(!b){if(a.nodeName==="text")a.style.position="absolute";b=this.bBox={x:a.offsetLeft,y:a.offsetTop,width:a.offsetWidth,height:a.offsetHeight}}return b},htmlUpdateTransform:function(){if(this.added){var a=this.renderer,b=this.element,c=this.translateX||0,d=this.translateY||0,e=this.x||0,f=this.y||0,g=this.textAlign||"left",h={left:0,center:0.5,right:1}[g],i=this.shadows;G(b,{marginLeft:c,marginTop:d});i&&p(i,function(a){G(a,{marginLeft:c+1,marginTop:d+1})});this.inverted&&
74
+ p(b.childNodes,function(c){a.invertChild(c,b)});if(b.tagName==="SPAN"){var j=this.rotation,k,l=z(this.textWidth),o=[j,g,b.innerHTML,this.textWidth].join(",");if(o!==this.cTT){k=a.fontMetrics(b.style.fontSize).b;r(j)&&this.setSpanRotation(j,h,k);i=m(this.elemWidth,b.offsetWidth);if(i>l&&/[ \-]/.test(b.textContent||b.innerText))G(b,{width:l+"px",display:"block",whiteSpace:"normal"}),i=l;this.getSpanCorrection(i,k,h,j,g)}G(b,{left:e+(this.xCorr||0)+"px",top:f+(this.yCorr||0)+"px"});if(ib)k=b.offsetHeight;
75
+ this.cTT=o}}else this.alignOnAdd=!0},setSpanRotation:function(a,b,c){var d={},e=Aa?"-ms-transform":ib?"-webkit-transform":Ta?"MozTransform":Ib?"-o-transform":"";d[e]=d.transform="rotate("+a+"deg)";d[e+(Ta?"Origin":"-origin")]=d.transformOrigin=b*100+"% "+c+"px";G(this.element,d)},getSpanCorrection:function(a,b,c){this.xCorr=-a*c;this.yCorr=-b}});q(ta.prototype,{html:function(a,b,c){var d=this.createElement("span"),e=d.element,f=d.renderer;d.textSetter=function(a){a!==e.innerHTML&&delete this.bBox;
76
+ e.innerHTML=this.textStr=a};d.xSetter=d.ySetter=d.alignSetter=d.rotationSetter=function(a,b){b==="align"&&(b="textAlign");d[b]=a;d.htmlUpdateTransform()};d.attr({text:a,x:u(b),y:u(c)}).css({position:"absolute",whiteSpace:"nowrap",fontFamily:this.style.fontFamily,fontSize:this.style.fontSize});d.css=d.htmlCss;if(f.isSVG)d.add=function(a){var b,c=f.box.parentNode,j=[];if(this.parentGroup=a){if(b=a.div,!b){for(;a;)j.push(a),a=a.parentGroup;p(j.reverse(),function(a){var d;b=a.div=a.div||Y(Ja,{className:H(a.element,
77
+ "class")},{position:"absolute",left:(a.translateX||0)+"px",top:(a.translateY||0)+"px"},b||c);d=b.style;q(a,{translateXSetter:function(b,c){d.left=b+"px";a[c]=b;a.doTransform=!0},translateYSetter:function(b,c){d.top=b+"px";a[c]=b;a.doTransform=!0},visibilitySetter:function(a,b){d[b]=a}})})}}else b=c;b.appendChild(e);d.added=!0;d.alignOnAdd&&d.htmlUpdateTransform();return d};return d}});var X;if(!aa&&!fa){R.VMLElement=X={init:function(a,b){var c=["<",b,' filled="f" stroked="f"'],d=["position: ","absolute",
78
+ ";"],e=b===Ja;(b==="shape"||e)&&d.push("left:0;top:0;width:1px;height:1px;");d.push("visibility: ",e?"hidden":"visible");c.push(' style="',d.join(""),'"/>');if(b)c=e||b==="span"||b==="img"?c.join(""):a.prepVML(c),this.element=Y(c);this.renderer=a},add:function(a){var b=this.renderer,c=this.element,d=b.box,d=a?a.element||a:d;a&&a.inverted&&b.invertChild(c,d);d.appendChild(c);this.added=!0;this.alignOnAdd&&!this.deferUpdateTransform&&this.updateTransform();if(this.onAdd)this.onAdd();return this},updateTransform:P.prototype.htmlUpdateTransform,
79
+ setSpanRotation:function(){var a=this.rotation,b=Z(a*Ca),c=ea(a*Ca);G(this.element,{filter:a?["progid:DXImageTransform.Microsoft.Matrix(M11=",b,", M12=",-c,", M21=",c,", M22=",b,", sizingMethod='auto expand')"].join(""):Q})},getSpanCorrection:function(a,b,c,d,e){var f=d?Z(d*Ca):1,g=d?ea(d*Ca):0,h=m(this.elemHeight,this.element.offsetHeight),i;this.xCorr=f<0&&-a;this.yCorr=g<0&&-h;i=f*g<0;this.xCorr+=g*b*(i?1-c:c);this.yCorr-=f*b*(d?i?c:1-c:1);e&&e!=="left"&&(this.xCorr-=a*c*(f<0?-1:1),d&&(this.yCorr-=
80
+ h*c*(g<0?-1:1)),G(this.element,{textAlign:e}))},pathToVML:function(a){for(var b=a.length,c=[];b--;)if(ha(a[b]))c[b]=u(a[b]*10)-5;else if(a[b]==="Z")c[b]="x";else if(c[b]=a[b],a.isArc&&(a[b]==="wa"||a[b]==="at"))c[b+5]===c[b+7]&&(c[b+7]+=a[b+7]>a[b+5]?1:-1),c[b+6]===c[b+8]&&(c[b+8]+=a[b+8]>a[b+6]?1:-1);return c.join(" ")||"x"},clip:function(a){var b=this,c;a?(c=a.members,ja(c,b),c.push(b),b.destroyClip=function(){ja(c,b)},a=a.getCSS(b)):(b.destroyClip&&b.destroyClip(),a={clip:hb?"inherit":"rect(auto)"});
81
+ return b.css(a)},css:P.prototype.htmlCss,safeRemoveChild:function(a){a.parentNode&&Pa(a)},destroy:function(){this.destroyClip&&this.destroyClip();return P.prototype.destroy.apply(this)},on:function(a,b){this.element["on"+a]=function(){var a=I.event;a.target=a.srcElement;b(a)};return this},cutOffPath:function(a,b){var c,a=a.split(/[ ,]/);c=a.length;if(c===9||c===11)a[c-4]=a[c-2]=z(a[c-2])-10*b;return a.join(" ")},shadow:function(a,b,c){var d=[],e,f=this.element,g=this.renderer,h,i=f.style,j,k=f.path,
82
+ l,o,n,s;k&&typeof k.value!=="string"&&(k="x");o=k;if(a){n=m(a.width,3);s=(a.opacity||0.15)/n;for(e=1;e<=3;e++){l=n*2+1-2*e;c&&(o=this.cutOffPath(k.value,l+0.5));j=['<shape isShadow="true" strokeweight="',l,'" filled="false" path="',o,'" coordsize="10 10" style="',f.style.cssText,'" />'];h=Y(g.prepVML(j),null,{left:z(i.left)+m(a.offsetX,1),top:z(i.top)+m(a.offsetY,1)});if(c)h.cutOff=l+1;j=['<stroke color="',a.color||"black",'" opacity="',s*e,'"/>'];Y(g.prepVML(j),null,null,h);b?b.element.appendChild(h):
83
+ f.parentNode.insertBefore(h,f);d.push(h)}this.shadows=d}return this},updateShadows:sa,setAttr:function(a,b){hb?this.element[a]=b:this.element.setAttribute(a,b)},classSetter:function(a){this.element.className=a},dashstyleSetter:function(a,b,c){(c.getElementsByTagName("stroke")[0]||Y(this.renderer.prepVML(["<stroke/>"]),null,null,c))[b]=a||"solid";this[b]=a},dSetter:function(a,b,c){var d=this.shadows,a=a||[];this.d=a.join(" ");c.path=a=this.pathToVML(a);if(d)for(c=d.length;c--;)d[c].path=d[c].cutOff?
84
+ this.cutOffPath(a,d[c].cutOff):a;this.setAttr(b,a)},fillSetter:function(a,b,c){var d=c.nodeName;if(d==="SPAN")c.style.color=a;else if(d!=="IMG")c.filled=a!==Q,this.setAttr("fillcolor",this.renderer.color(a,c,b,this))},opacitySetter:sa,rotationSetter:function(a,b,c){c=c.style;this[b]=c[b]=a;c.left=-u(ea(a*Ca)+1)+"px";c.top=u(Z(a*Ca))+"px"},strokeSetter:function(a,b,c){this.setAttr("strokecolor",this.renderer.color(a,c,b))},"stroke-widthSetter":function(a,b,c){c.stroked=!!a;this[b]=a;ha(a)&&(a+="px");
85
+ this.setAttr("strokeweight",a)},titleSetter:function(a,b){this.setAttr(b,a)},visibilitySetter:function(a,b,c){a==="inherit"&&(a="visible");this.shadows&&p(this.shadows,function(c){c.style[b]=a});c.nodeName==="DIV"&&(a=a==="hidden"?"-999em":0,hb||(c.style[b]=a?"visible":"hidden"),b="top");c.style[b]=a},xSetter:function(a,b,c){this[b]=a;b==="x"?b="left":b==="y"&&(b="top");this.updateClipping?(this[b]=a,this.updateClipping()):c.style[b]=a},zIndexSetter:function(a,b,c){c.style[b]=a}};X=ka(P,X);X.prototype.ySetter=
86
+ X.prototype.widthSetter=X.prototype.heightSetter=X.prototype.xSetter;var ga={Element:X,isIE8:wa.indexOf("MSIE 8.0")>-1,init:function(a,b,c,d){var e;this.alignedObjects=[];d=this.createElement(Ja).css(q(this.getStyle(d),{position:"relative"}));e=d.element;a.appendChild(d.element);this.isVML=!0;this.box=e;this.boxWrapper=d;this.cache={};this.setSize(b,c,!1);if(!y.namespaces.hcv){y.namespaces.add("hcv","urn:schemas-microsoft-com:vml");try{y.createStyleSheet().cssText="hcv\\:fill, hcv\\:path, hcv\\:shape, hcv\\:stroke{ behavior:url(#default#VML); display: inline-block; } "}catch(f){y.styleSheets[0].cssText+=
87
+ "hcv\\:fill, hcv\\:path, hcv\\:shape, hcv\\:stroke{ behavior:url(#default#VML); display: inline-block; } "}}},isHidden:function(){return!this.box.offsetWidth},clipRect:function(a,b,c,d){var e=this.createElement(),f=ca(a);return q(e,{members:[],left:(f?a.x:a)+1,top:(f?a.y:b)+1,width:(f?a.width:c)-1,height:(f?a.height:d)-1,getCSS:function(a){var b=a.element,c=b.nodeName,a=a.inverted,d=this.top-(c==="shape"?b.offsetTop:0),e=this.left,b=e+this.width,f=d+this.height,d={clip:"rect("+u(a?e:d)+"px,"+u(a?
88
+ f:b)+"px,"+u(a?b:f)+"px,"+u(a?d:e)+"px)"};!a&&hb&&c==="DIV"&&q(d,{width:b+"px",height:f+"px"});return d},updateClipping:function(){p(e.members,function(a){a.element&&a.css(e.getCSS(a))})}})},color:function(a,b,c,d){var e=this,f,g=/^rgba/,h,i,j=Q;a&&a.linearGradient?i="gradient":a&&a.radialGradient&&(i="pattern");if(i){var k,l,o=a.linearGradient||a.radialGradient,n,s,m,J,L,x="",a=a.stops,r,v=[],q=function(){h=['<fill colors="'+v.join(",")+'" opacity="',m,'" o:opacity2="',s,'" type="',i,'" ',x,'focus="100%" method="any" />'];
89
+ Y(e.prepVML(h),null,null,b)};n=a[0];r=a[a.length-1];n[0]>0&&a.unshift([0,n[1]]);r[0]<1&&a.push([1,r[1]]);p(a,function(a,b){g.test(a[1])?(f=ya(a[1]),k=f.get("rgb"),l=f.get("a")):(k=a[1],l=1);v.push(a[0]*100+"% "+k);b?(m=l,J=k):(s=l,L=k)});if(c==="fill")if(i==="gradient")c=o.x1||o[0]||0,a=o.y1||o[1]||0,n=o.x2||o[2]||0,o=o.y2||o[3]||0,x='angle="'+(90-U.atan((o-a)/(n-c))*180/ma)+'"',q();else{var j=o.r,t=j*2,u=j*2,y=o.cx,B=o.cy,na=b.radialReference,w,j=function(){na&&(w=d.getBBox(),y+=(na[0]-w.x)/w.width-
90
+ 0.5,B+=(na[1]-w.y)/w.height-0.5,t*=na[2]/w.width,u*=na[2]/w.height);x='src="'+E.global.VMLRadialGradientURL+'" size="'+t+","+u+'" origin="0.5,0.5" position="'+y+","+B+'" color2="'+L+'" ';q()};d.added?j():d.onAdd=j;j=J}else j=k}else if(g.test(a)&&b.tagName!=="IMG")f=ya(a),h=["<",c,' opacity="',f.get("a"),'"/>'],Y(this.prepVML(h),null,null,b),j=f.get("rgb");else{j=b.getElementsByTagName(c);if(j.length)j[0].opacity=1,j[0].type="solid";j=a}return j},prepVML:function(a){var b=this.isIE8,a=a.join("");b?
91
+ (a=a.replace("/>",' xmlns="urn:schemas-microsoft-com:vml" />'),a=a.indexOf('style="')===-1?a.replace("/>",' style="display:inline-block;behavior:url(#default#VML);" />'):a.replace('style="','style="display:inline-block;behavior:url(#default#VML);')):a=a.replace("<","<hcv:");return a},text:ta.prototype.html,path:function(a){var b={coordsize:"10 10"};La(a)?b.d=a:ca(a)&&q(b,a);return this.createElement("shape").attr(b)},circle:function(a,b,c){var d=this.symbol("circle");if(ca(a))c=a.r,b=a.y,a=a.x;d.isCircle=
92
+ !0;d.r=c;return d.attr({x:a,y:b})},g:function(a){var b;a&&(b={className:"highcharts-"+a,"class":"highcharts-"+a});return this.createElement(Ja).attr(b)},image:function(a,b,c,d,e){var f=this.createElement("img").attr({src:a});arguments.length>1&&f.attr({x:b,y:c,width:d,height:e});return f},createElement:function(a){return a==="rect"?this.symbol(a):ta.prototype.createElement.call(this,a)},invertChild:function(a,b){var c=this,d=b.style,e=a.tagName==="IMG"&&a.style;G(a,{flip:"x",left:z(d.width)-(e?z(e.top):
93
+ 1),top:z(d.height)-(e?z(e.left):1),rotation:-90});p(a.childNodes,function(b){c.invertChild(b,a)})},symbols:{arc:function(a,b,c,d,e){var f=e.start,g=e.end,h=e.r||c||d,c=e.innerR,d=Z(f),i=ea(f),j=Z(g),k=ea(g);if(g-f===0)return["x"];f=["wa",a-h,b-h,a+h,b+h,a+h*d,b+h*i,a+h*j,b+h*k];e.open&&!c&&f.push("e","M",a,b);f.push("at",a-c,b-c,a+c,b+c,a+c*j,b+c*k,a+c*d,b+c*i,"x","e");f.isArc=!0;return f},circle:function(a,b,c,d,e){e&&(c=d=2*e.r);e&&e.isCircle&&(a-=c/2,b-=d/2);return["wa",a,b,a+c,b+d,a+c,b+d/2,a+
94
+ c,b+d/2,"e"]},rect:function(a,b,c,d,e){return ta.prototype.symbols[!r(e)||!e.r?"square":"callout"].call(0,a,b,c,d,e)}}};R.VMLRenderer=X=function(){this.init.apply(this,arguments)};X.prototype=w(ta.prototype,ga);Za=X}ta.prototype.measureSpanWidth=function(a,b){var c=y.createElement("span"),d;d=y.createTextNode(a);c.appendChild(d);G(c,b);this.box.appendChild(c);d=c.offsetWidth;Pa(c);return d};var Lb;if(fa)R.CanVGRenderer=X=function(){xa="http://www.w3.org/1999/xhtml"},X.prototype.symbols={},Lb=function(){function a(){var a=
95
+ b.length,d;for(d=0;d<a;d++)b[d]();b=[]}var b=[];return{push:function(c,d){b.length===0&&Qb(d,a);b.push(c)}}}(),Za=X;Sa.prototype={addLabel:function(){var a=this.axis,b=a.options,c=a.chart,d=a.horiz,e=a.categories,f=a.names,g=this.pos,h=b.labels,i=a.tickPositions,d=d&&e&&!h.step&&!h.staggerLines&&!h.rotation&&c.plotWidth/i.length||!d&&(c.margin[3]||c.chartWidth*0.33),j=g===i[0],k=g===i[i.length-1],l,f=e?m(e[g],f[g],g):g,e=this.label,o=i.info;a.isDatetimeAxis&&o&&(l=b.dateTimeLabelFormats[o.higherRanks[g]||
96
+ o.unitName]);this.isFirst=j;this.isLast=k;b=a.labelFormatter.call({axis:a,chart:c,isFirst:j,isLast:k,dateTimeLabelFormat:l,value:a.isLog?da(ia(f)):f});g=d&&{width:v(1,u(d-2*(h.padding||10)))+"px"};g=q(g,h.style);if(r(e))e&&e.attr({text:b}).css(g);else{l={align:a.labelAlign};if(ha(h.rotation))l.rotation=h.rotation;if(d&&h.ellipsis)l._clipHeight=a.len/i.length;this.label=r(b)&&h.enabled?c.renderer.text(b,0,0,h.useHTML).attr(l).css(g).add(a.labelGroup):null}},getLabelSize:function(){var a=this.label,
97
+ b=this.axis;return a?a.getBBox()[b.horiz?"height":"width"]:0},getLabelSides:function(){var a=this.label.getBBox(),b=this.axis,c=b.horiz,d=b.options.labels,a=c?a.width:a.height,b=c?d.x-a*{left:0,center:0.5,right:1}[b.labelAlign]:0;return[b,c?a+b:a]},handleOverflow:function(a,b){var c=!0,d=this.axis,e=this.isFirst,f=this.isLast,g=d.horiz?b.x:b.y,h=d.reversed,i=d.tickPositions,j=this.getLabelSides(),k=j[0],j=j[1],l,o,n,s=this.label.line||0;l=d.labelEdge;o=d.justifyLabels&&(e||f);l[s]===t||g+k>l[s]?l[s]=
98
+ g+j:o||(c=!1);if(o){l=(o=d.justifyToPlot)?d.pos:0;o=o?l+d.len:d.chart.chartWidth;do a+=e?1:-1,n=d.ticks[i[a]];while(i[a]&&(!n||n.label.line!==s));d=n&&n.label.xy&&n.label.xy.x+n.getLabelSides()[e?0:1];e&&!h||f&&h?g+k<l&&(g=l-k,n&&g+j>d&&(c=!1)):g+j>o&&(g=o-j,n&&g+k<d&&(c=!1));b.x=g}return c},getPosition:function(a,b,c,d){var e=this.axis,f=e.chart,g=d&&f.oldChartHeight||f.chartHeight;return{x:a?e.translate(b+c,null,null,d)+e.transB:e.left+e.offset+(e.opposite?(d&&f.oldChartWidth||f.chartWidth)-e.right-
99
+ e.left:0),y:a?g-e.bottom+e.offset-(e.opposite?e.height:0):g-e.translate(b+c,null,null,d)-e.transB}},getLabelPosition:function(a,b,c,d,e,f,g,h){var i=this.axis,j=i.transA,k=i.reversed,l=i.staggerLines,o=i.chart.renderer.fontMetrics(e.style.fontSize).b,n=e.rotation,a=a+e.x-(f&&d?f*j*(k?-1:1):0),b=b+e.y-(f&&!d?f*j*(k?1:-1):0);n&&i.side===2&&(b-=o-o*Z(n*Ca));!r(e.y)&&!n&&(b+=o-c.getBBox().height/2);if(l)c.line=g/(h||1)%l,b+=c.line*(i.labelOffset/l);return{x:a,y:b}},getMarkPath:function(a,b,c,d,e,f){return f.crispLine(["M",
100
+ a,b,"L",a+(e?0:-c),b+(e?c:0)],d)},render:function(a,b,c){var d=this.axis,e=d.options,f=d.chart.renderer,g=d.horiz,h=this.type,i=this.label,j=this.pos,k=e.labels,l=this.gridLine,o=h?h+"Grid":"grid",n=h?h+"Tick":"tick",s=e[o+"LineWidth"],p=e[o+"LineColor"],J=e[o+"LineDashStyle"],L=e[n+"Length"],o=e[n+"Width"]||0,x=e[n+"Color"],r=e[n+"Position"],n=this.mark,v=k.step,q=!0,u=d.tickmarkOffset,w=this.getPosition(g,j,u,b),y=w.x,w=w.y,B=g&&y===d.pos+d.len||!g&&w===d.pos?-1:1;this.isActive=!0;if(s){j=d.getPlotLinePath(j+
101
+ u,s*B,b,!0);if(l===t){l={stroke:p,"stroke-width":s};if(J)l.dashstyle=J;if(!h)l.zIndex=1;if(b)l.opacity=0;this.gridLine=l=s?f.path(j).attr(l).add(d.gridGroup):null}if(!b&&l&&j)l[this.isNew?"attr":"animate"]({d:j,opacity:c})}if(o&&L)r==="inside"&&(L=-L),d.opposite&&(L=-L),h=this.getMarkPath(y,w,L,o*B,g,f),n?n.animate({d:h,opacity:c}):this.mark=f.path(h).attr({stroke:x,"stroke-width":o,opacity:c}).add(d.axisGroup);if(i&&!isNaN(y))i.xy=w=this.getLabelPosition(y,w,i,g,k,u,a,v),this.isFirst&&!this.isLast&&
102
+ !m(e.showFirstLabel,1)||this.isLast&&!this.isFirst&&!m(e.showLastLabel,1)?q=!1:!d.isRadial&&!k.step&&!k.rotation&&!b&&c!==0&&(q=this.handleOverflow(a,w)),v&&a%v&&(q=!1),q&&!isNaN(w.y)?(w.opacity=c,i[this.isNew?"attr":"animate"](w),this.isNew=!1):i.attr("y",-9999)},destroy:function(){Oa(this,this.axis)}};R.PlotLineOrBand=function(a,b){this.axis=a;if(b)this.options=b,this.id=b.id};R.PlotLineOrBand.prototype={render:function(){var a=this,b=a.axis,c=b.horiz,d=(b.pointRange||0)/2,e=a.options,f=e.label,
103
+ g=a.label,h=e.width,i=e.to,j=e.from,k=r(j)&&r(i),l=e.value,o=e.dashStyle,n=a.svgElem,s=[],p,J=e.color,L=e.zIndex,x=e.events,q={},t=b.chart.renderer;b.isLog&&(j=za(j),i=za(i),l=za(l));if(h){if(s=b.getPlotLinePath(l,h),q={stroke:J,"stroke-width":h},o)q.dashstyle=o}else if(k){j=v(j,b.min-d);i=C(i,b.max+d);s=b.getPlotBandPath(j,i,e);if(J)q.fill=J;if(e.borderWidth)q.stroke=e.borderColor,q["stroke-width"]=e.borderWidth}else return;if(r(L))q.zIndex=L;if(n)if(s)n.animate({d:s},null,n.onGetPath);else{if(n.hide(),
104
+ n.onGetPath=function(){n.show()},g)a.label=g=g.destroy()}else if(s&&s.length&&(a.svgElem=n=t.path(s).attr(q).add(),x))for(p in d=function(b){n.on(b,function(c){x[b].apply(a,[c])})},x)d(p);if(f&&r(f.text)&&s&&s.length&&b.width>0&&b.height>0){f=w({align:c&&k&&"center",x:c?!k&&4:10,verticalAlign:!c&&k&&"middle",y:c?k?16:10:k?6:-4,rotation:c&&!k&&90},f);if(!g){q={align:f.textAlign||f.align,rotation:f.rotation};if(r(L))q.zIndex=L;a.label=g=t.text(f.text,0,0,f.useHTML).attr(q).css(f.style).add()}b=[s[1],
105
+ s[4],m(s[6],s[1])];s=[s[2],s[5],m(s[7],s[2])];c=Na(b);k=Na(s);g.align(f,!1,{x:c,y:k,width:Ba(b)-c,height:Ba(s)-k});g.show()}else g&&g.hide();return a},destroy:function(){ja(this.axis.plotLinesAndBands,this);delete this.axis;Oa(this)}};la.prototype={defaultOptions:{dateTimeLabelFormats:{millisecond:"%H:%M:%S.%L",second:"%H:%M:%S",minute:"%H:%M",hour:"%H:%M",day:"%e. %b",week:"%e. %b",month:"%b '%y",year:"%Y"},endOnTick:!1,gridLineColor:"#C0C0C0",labels:N,lineColor:"#C0D0E0",lineWidth:1,minPadding:0.01,
106
+ maxPadding:0.01,minorGridLineColor:"#E0E0E0",minorGridLineWidth:1,minorTickColor:"#A0A0A0",minorTickLength:2,minorTickPosition:"outside",startOfWeek:1,startOnTick:!1,tickColor:"#C0D0E0",tickLength:10,tickmarkPlacement:"between",tickPixelInterval:100,tickPosition:"outside",tickWidth:1,title:{align:"middle",style:{color:"#707070"}},type:"linear"},defaultYAxisOptions:{endOnTick:!0,gridLineWidth:1,tickPixelInterval:72,showLastLabel:!0,labels:{x:-8,y:3},lineWidth:0,maxPadding:0.05,minPadding:0.05,startOnTick:!0,
107
+ tickWidth:0,title:{rotation:270,text:"Values"},stackLabels:{enabled:!1,formatter:function(){return Ga(this.total,-1)},style:N.style}},defaultLeftAxisOptions:{labels:{x:-15,y:null},title:{rotation:270}},defaultRightAxisOptions:{labels:{x:15,y:null},title:{rotation:90}},defaultBottomAxisOptions:{labels:{x:0,y:20},title:{rotation:0}},defaultTopAxisOptions:{labels:{x:0,y:-15},title:{rotation:0}},init:function(a,b){var c=b.isX;this.horiz=a.inverted?!c:c;this.coll=(this.isXAxis=c)?"xAxis":"yAxis";this.opposite=
108
+ b.opposite;this.side=b.side||(this.horiz?this.opposite?0:2:this.opposite?1:3);this.setOptions(b);var d=this.options,e=d.type;this.labelFormatter=d.labels.formatter||this.defaultLabelFormatter;this.userOptions=b;this.minPixelPadding=0;this.chart=a;this.reversed=d.reversed;this.zoomEnabled=d.zoomEnabled!==!1;this.categories=d.categories||e==="category";this.names=[];this.isLog=e==="logarithmic";this.isDatetimeAxis=e==="datetime";this.isLinked=r(d.linkedTo);this.tickmarkOffset=this.categories&&d.tickmarkPlacement===
109
+ "between"?0.5:0;this.ticks={};this.labelEdge=[];this.minorTicks={};this.plotLinesAndBands=[];this.alternateBands={};this.len=0;this.minRange=this.userMinRange=d.minRange||d.maxZoom;this.range=d.range;this.offset=d.offset||0;this.stacks={};this.oldStacks={};this.min=this.max=null;this.crosshair=m(d.crosshair,qa(a.options.tooltip.crosshairs)[c?0:1],!1);var f,d=this.options.events;Da(this,a.axes)===-1&&(c&&!this.isColorAxis?a.axes.splice(a.xAxis.length,0,this):a.axes.push(this),a[this.coll].push(this));
110
+ this.series=this.series||[];if(a.inverted&&c&&this.reversed===t)this.reversed=!0;this.removePlotLine=this.removePlotBand=this.removePlotBandOrLine;for(f in d)K(this,f,d[f]);if(this.isLog)this.val2lin=za,this.lin2val=ia},setOptions:function(a){this.options=w(this.defaultOptions,this.isXAxis?{}:this.defaultYAxisOptions,[this.defaultTopAxisOptions,this.defaultRightAxisOptions,this.defaultBottomAxisOptions,this.defaultLeftAxisOptions][this.side],w(E[this.coll],a))},defaultLabelFormatter:function(){var a=
111
+ this.axis,b=this.value,c=a.categories,d=this.dateTimeLabelFormat,e=E.lang.numericSymbols,f=e&&e.length,g,h=a.options.labels.format,a=a.isLog?b:a.tickInterval;if(h)g=Ia(h,this);else if(c)g=b;else if(d)g=cb(d,b);else if(f&&a>=1E3)for(;f--&&g===t;)c=Math.pow(1E3,f+1),a>=c&&e[f]!==null&&(g=Ga(b/c,-1)+e[f]);g===t&&(g=M(b)>=1E4?Ga(b,0):Ga(b,-1,t,""));return g},getSeriesExtremes:function(){var a=this,b=a.chart;a.hasVisibleSeries=!1;a.dataMin=a.dataMax=null;a.buildStacks&&a.buildStacks();p(a.series,function(c){if(c.visible||
112
+ !b.options.chart.ignoreHiddenSeries){var d;d=c.options.threshold;var e;a.hasVisibleSeries=!0;a.isLog&&d<=0&&(d=null);if(a.isXAxis){if(d=c.xData,d.length)a.dataMin=C(m(a.dataMin,d[0]),Na(d)),a.dataMax=v(m(a.dataMax,d[0]),Ba(d))}else{c.getExtremes();e=c.dataMax;c=c.dataMin;if(r(c)&&r(e))a.dataMin=C(m(a.dataMin,c),c),a.dataMax=v(m(a.dataMax,e),e);if(r(d))if(a.dataMin>=d)a.dataMin=d,a.ignoreMinPadding=!0;else if(a.dataMax<d)a.dataMax=d,a.ignoreMaxPadding=!0}}})},translate:function(a,b,c,d,e,f){var g=
113
+ 1,h=0,i=d?this.oldTransA:this.transA,d=d?this.oldMin:this.min,j=this.minPixelPadding,e=(this.options.ordinal||this.isLog&&e)&&this.lin2val;if(!i)i=this.transA;if(c)g*=-1,h=this.len;this.reversed&&(g*=-1,h-=g*(this.sector||this.len));b?(a=a*g+h,a-=j,a=a/i+d,e&&(a=this.lin2val(a))):(e&&(a=this.val2lin(a)),f==="between"&&(f=0.5),a=g*(a-d)*i+h+g*j+(ha(f)?i*f*this.pointRange:0));return a},toPixels:function(a,b){return this.translate(a,!1,!this.horiz,null,!0)+(b?0:this.pos)},toValue:function(a,b){return this.translate(a-
114
+ (b?0:this.pos),!0,!this.horiz,null,!0)},getPlotLinePath:function(a,b,c,d,e){var f=this.chart,g=this.left,h=this.top,i,j,k=c&&f.oldChartHeight||f.chartHeight,l=c&&f.oldChartWidth||f.chartWidth,o;i=this.transB;e=m(e,this.translate(a,null,null,c));a=c=u(e+i);i=j=u(k-e-i);if(isNaN(e))o=!0;else if(this.horiz){if(i=h,j=k-this.bottom,a<g||a>g+this.width)o=!0}else if(a=g,c=l-this.right,i<h||i>h+this.height)o=!0;return o&&!d?null:f.renderer.crispLine(["M",a,i,"L",c,j],b||1)},getLinearTickPositions:function(a,
115
+ b,c){var d,e=da(T(b/a)*a),f=da(Ka(c/a)*a),g=[];if(b===c&&ha(b))return[b];for(b=e;b<=f;){g.push(b);b=da(b+a);if(b===d)break;d=b}return g},getMinorTickPositions:function(){var a=this.options,b=this.tickPositions,c=this.minorTickInterval,d=[],e;if(this.isLog){e=b.length;for(a=1;a<e;a++)d=d.concat(this.getLogTickPositions(c,b[a-1],b[a],!0))}else if(this.isDatetimeAxis&&a.minorTickInterval==="auto")d=d.concat(this.getTimeTicks(this.normalizeTimeTickInterval(c),this.min,this.max,a.startOfWeek)),d[0]<this.min&&
116
+ d.shift();else for(b=this.min+(b[0]-this.min)%c;b<=this.max;b+=c)d.push(b);return d},adjustForMinRange:function(){var a=this.options,b=this.min,c=this.max,d,e=this.dataMax-this.dataMin>=this.minRange,f,g,h,i,j;if(this.isXAxis&&this.minRange===t&&!this.isLog)r(a.min)||r(a.max)?this.minRange=null:(p(this.series,function(a){i=a.xData;for(g=j=a.xIncrement?1:i.length-1;g>0;g--)if(h=i[g]-i[g-1],f===t||h<f)f=h}),this.minRange=C(f*5,this.dataMax-this.dataMin));if(c-b<this.minRange){var k=this.minRange;d=
117
+ (k-c+b)/2;d=[b-d,m(a.min,b-d)];if(e)d[2]=this.dataMin;b=Ba(d);c=[b+k,m(a.max,b+k)];if(e)c[2]=this.dataMax;c=Na(c);c-b<k&&(d[0]=c-k,d[1]=m(a.min,c-k),b=Ba(d))}this.min=b;this.max=c},setAxisTranslation:function(a){var b=this,c=b.max-b.min,d=b.axisPointRange||0,e,f=0,g=0,h=b.linkedParent,i=!!b.categories,j=b.transA;if(b.isXAxis||i||d)h?(f=h.minPointOffset,g=h.pointRangePadding):p(b.series,function(a){var h=i?1:b.isXAxis?a.pointRange:b.axisPointRange||0,j=a.options.pointPlacement,n=a.closestPointRange;
118
+ h>c&&(h=0);d=v(d,h);f=v(f,Fa(j)?0:h/2);g=v(g,j==="on"?0:h);!a.noSharedTooltip&&r(n)&&(e=r(e)?C(e,n):n)}),h=b.ordinalSlope&&e?b.ordinalSlope/e:1,b.minPointOffset=f*=h,b.pointRangePadding=g*=h,b.pointRange=C(d,c),b.closestPointRange=e;if(a)b.oldTransA=j;b.translationSlope=b.transA=j=b.len/(c+g||1);b.transB=b.horiz?b.left:b.bottom;b.minPixelPadding=j*f},setTickPositions:function(a){var b=this,c=b.chart,d=b.options,e=b.isLog,f=b.isDatetimeAxis,g=b.isXAxis,h=b.isLinked,i=b.options.tickPositioner,j=d.maxPadding,
119
+ k=d.minPadding,l=d.tickInterval,o=d.minTickInterval,n=d.tickPixelInterval,s,$=b.categories;h?(b.linkedParent=c[b.coll][d.linkedTo],c=b.linkedParent.getExtremes(),b.min=m(c.min,c.dataMin),b.max=m(c.max,c.dataMax),d.type!==b.linkedParent.options.type&&ra(11,1)):(b.min=m(b.userMin,d.min,b.dataMin),b.max=m(b.userMax,d.max,b.dataMax));if(e)!a&&C(b.min,m(b.dataMin,b.min))<=0&&ra(10,1),b.min=da(za(b.min)),b.max=da(za(b.max));if(b.range&&r(b.max))b.userMin=b.min=v(b.min,b.max-b.range),b.userMax=b.max,b.range=
120
+ null;b.beforePadding&&b.beforePadding();b.adjustForMinRange();if(!$&&!b.axisPointRange&&!b.usePercentage&&!h&&r(b.min)&&r(b.max)&&(c=b.max-b.min)){if(!r(d.min)&&!r(b.userMin)&&k&&(b.dataMin<0||!b.ignoreMinPadding))b.min-=c*k;if(!r(d.max)&&!r(b.userMax)&&j&&(b.dataMax>0||!b.ignoreMaxPadding))b.max+=c*j}if(ha(d.floor))b.min=v(b.min,d.floor);if(ha(d.ceiling))b.max=C(b.max,d.ceiling);b.min===b.max||b.min===void 0||b.max===void 0?b.tickInterval=1:h&&!l&&n===b.linkedParent.options.tickPixelInterval?b.tickInterval=
121
+ b.linkedParent.tickInterval:(b.tickInterval=m(l,$?1:(b.max-b.min)*n/v(b.len,n)),!r(l)&&b.len<n&&!this.isRadial&&!this.isLog&&!$&&d.startOnTick&&d.endOnTick&&(s=!0,b.tickInterval/=4));g&&!a&&p(b.series,function(a){a.processData(b.min!==b.oldMin||b.max!==b.oldMax)});b.setAxisTranslation(!0);b.beforeSetTickPositions&&b.beforeSetTickPositions();if(b.postProcessTickInterval)b.tickInterval=b.postProcessTickInterval(b.tickInterval);if(b.pointRange)b.tickInterval=v(b.pointRange,b.tickInterval);if(!l&&b.tickInterval<
122
+ o)b.tickInterval=o;if(!f&&!e&&!l)b.tickInterval=nb(b.tickInterval,null,mb(b.tickInterval),d);b.minorTickInterval=d.minorTickInterval==="auto"&&b.tickInterval?b.tickInterval/5:d.minorTickInterval;b.tickPositions=a=d.tickPositions?[].concat(d.tickPositions):i&&i.apply(b,[b.min,b.max]);if(!a)!b.ordinalPositions&&(b.max-b.min)/b.tickInterval>v(2*b.len,200)&&ra(19,!0),a=f?b.getTimeTicks(b.normalizeTimeTickInterval(b.tickInterval,d.units),b.min,b.max,d.startOfWeek,b.ordinalPositions,b.closestPointRange,
123
+ !0):e?b.getLogTickPositions(b.tickInterval,b.min,b.max):b.getLinearTickPositions(b.tickInterval,b.min,b.max),s&&a.splice(1,a.length-2),b.tickPositions=a;if(!h)e=a[0],f=a[a.length-1],h=b.minPointOffset||0,d.startOnTick?b.min=e:b.min-h>e&&a.shift(),d.endOnTick?b.max=f:b.max+h<f&&a.pop(),a.length===1&&(d=M(b.max)>1E13?1:0.001,b.min-=d,b.max+=d)},setMaxTicks:function(){var a=this.chart,b=a.maxTicks||{},c=this.tickPositions,d=this._maxTicksKey=[this.coll,this.pos,this.len].join("-");if(!this.isLinked&&
124
+ !this.isDatetimeAxis&&c&&c.length>(b[d]||0)&&this.options.alignTicks!==!1)b[d]=c.length;a.maxTicks=b},adjustTickAmount:function(){var a=this._maxTicksKey,b=this.tickPositions,c=this.chart.maxTicks;if(c&&c[a]&&!this.isDatetimeAxis&&!this.categories&&!this.isLinked&&this.options.alignTicks!==!1&&this.min!==t){var d=this.tickAmount,e=b.length;this.tickAmount=a=c[a];if(e<a){for(;b.length<a;)b.push(da(b[b.length-1]+this.tickInterval));this.transA*=(e-1)/(a-1);this.max=b[b.length-1]}if(r(d)&&a!==d)this.isDirty=
125
+ !0}},setScale:function(){var a=this.stacks,b,c,d,e;this.oldMin=this.min;this.oldMax=this.max;this.oldAxisLength=this.len;this.setAxisSize();e=this.len!==this.oldAxisLength;p(this.series,function(a){if(a.isDirtyData||a.isDirty||a.xAxis.isDirty)d=!0});if(e||d||this.isLinked||this.forceRedraw||this.userMin!==this.oldUserMin||this.userMax!==this.oldUserMax){if(!this.isXAxis)for(b in a)for(c in a[b])a[b][c].total=null,a[b][c].cum=0;this.forceRedraw=!1;this.getSeriesExtremes();this.setTickPositions();this.oldUserMin=
126
+ this.userMin;this.oldUserMax=this.userMax;if(!this.isDirty)this.isDirty=e||this.min!==this.oldMin||this.max!==this.oldMax}else if(!this.isXAxis){if(this.oldStacks)a=this.stacks=this.oldStacks;for(b in a)for(c in a[b])a[b][c].cum=a[b][c].total}this.setMaxTicks()},setExtremes:function(a,b,c,d,e){var f=this,g=f.chart,c=m(c,!0),e=q(e,{min:a,max:b});D(f,"setExtremes",e,function(){f.userMin=a;f.userMax=b;f.eventArgs=e;f.isDirtyExtremes=!0;c&&g.redraw(d)})},zoom:function(a,b){var c=this.dataMin,d=this.dataMax,
127
+ e=this.options;this.allowZoomOutside||(r(c)&&a<=C(c,m(e.min,c))&&(a=t),r(d)&&b>=v(d,m(e.max,d))&&(b=t));this.displayBtn=a!==t||b!==t;this.setExtremes(a,b,!1,t,{trigger:"zoom"});return!0},setAxisSize:function(){var a=this.chart,b=this.options,c=b.offsetLeft||0,d=this.horiz,e=m(b.width,a.plotWidth-c+(b.offsetRight||0)),f=m(b.height,a.plotHeight),g=m(b.top,a.plotTop),b=m(b.left,a.plotLeft+c),c=/%$/;c.test(f)&&(f=parseInt(f,10)/100*a.plotHeight);c.test(g)&&(g=parseInt(g,10)/100*a.plotHeight+a.plotTop);
128
+ this.left=b;this.top=g;this.width=e;this.height=f;this.bottom=a.chartHeight-f-g;this.right=a.chartWidth-e-b;this.len=v(d?e:f,0);this.pos=d?b:g},getExtremes:function(){var a=this.isLog;return{min:a?da(ia(this.min)):this.min,max:a?da(ia(this.max)):this.max,dataMin:this.dataMin,dataMax:this.dataMax,userMin:this.userMin,userMax:this.userMax}},getThreshold:function(a){var b=this.isLog,c=b?ia(this.min):this.min,b=b?ia(this.max):this.max;c>a||a===null?a=c:b<a&&(a=b);return this.translate(a,0,1,0,1)},autoLabelAlign:function(a){a=
129
+ (m(a,0)-this.side*90+720)%360;return a>15&&a<165?"right":a>195&&a<345?"left":"center"},getOffset:function(){var a=this,b=a.chart,c=b.renderer,d=a.options,e=a.tickPositions,f=a.ticks,g=a.horiz,h=a.side,i=b.inverted?[1,0,3,2][h]:h,j,k=0,l,o=0,n=d.title,s=d.labels,$=0,J=b.axisOffset,L=b.clipOffset,x=[-1,1,1,-1][h],q,u=1,w=m(s.maxStaggerLines,5),y,z,A,B,na=h===2?c.fontMetrics(s.style.fontSize).b:0;a.hasData=j=a.hasVisibleSeries||r(a.min)&&r(a.max)&&!!e;a.showAxis=b=j||m(d.showEmpty,!0);a.staggerLines=
130
+ a.horiz&&s.staggerLines;if(!a.axisGroup)a.gridGroup=c.g("grid").attr({zIndex:d.gridZIndex||1}).add(),a.axisGroup=c.g("axis").attr({zIndex:d.zIndex||2}).add(),a.labelGroup=c.g("axis-labels").attr({zIndex:s.zIndex||7}).addClass("highcharts-"+a.coll.toLowerCase()+"-labels").add();if(j||a.isLinked){a.labelAlign=m(s.align||a.autoLabelAlign(s.rotation));p(e,function(b){f[b]?f[b].addLabel():f[b]=new Sa(a,b)});if(a.horiz&&!a.staggerLines&&w&&!s.rotation){for(q=a.reversed?[].concat(e).reverse():e;u<w;){j=
131
+ [];y=!1;for(s=0;s<q.length;s++)z=q[s],A=(A=f[z].label&&f[z].label.getBBox())?A.width:0,B=s%u,A&&(z=a.translate(z),j[B]!==t&&z<j[B]&&(y=!0),j[B]=z+A);if(y)u++;else break}if(u>1)a.staggerLines=u}p(e,function(b){if(h===0||h===2||{1:"left",3:"right"}[h]===a.labelAlign)$=v(f[b].getLabelSize(),$)});if(a.staggerLines)$*=a.staggerLines,a.labelOffset=$}else for(q in f)f[q].destroy(),delete f[q];if(n&&n.text&&n.enabled!==!1){if(!a.axisTitle)a.axisTitle=c.text(n.text,0,0,n.useHTML).attr({zIndex:7,rotation:n.rotation||
132
+ 0,align:n.textAlign||{low:"left",middle:"center",high:"right"}[n.align]}).addClass("highcharts-"+this.coll.toLowerCase()+"-title").css(n.style).add(a.axisGroup),a.axisTitle.isNew=!0;if(b)k=a.axisTitle.getBBox()[g?"height":"width"],o=m(n.margin,g?5:10),l=n.offset;a.axisTitle[b?"show":"hide"]()}a.offset=x*m(d.offset,J[h]);a.axisTitleMargin=m(l,$+o+($&&x*d.labels[g?"y":"x"]-na));J[h]=v(J[h],a.axisTitleMargin+k+x*a.offset);L[i]=v(L[i],T(d.lineWidth/2)*2)},getLinePath:function(a){var b=this.chart,c=this.opposite,
133
+ d=this.offset,e=this.horiz,f=this.left+(c?this.width:0)+d,d=b.chartHeight-this.bottom-(c?this.height:0)+d;c&&(a*=-1);return b.renderer.crispLine(["M",e?this.left:f,e?d:this.top,"L",e?b.chartWidth-this.right:f,e?d:b.chartHeight-this.bottom],a)},getTitlePosition:function(){var a=this.horiz,b=this.left,c=this.top,d=this.len,e=this.options.title,f=a?b:c,g=this.opposite,h=this.offset,i=z(e.style.fontSize||12),d={low:f+(a?0:d),middle:f+d/2,high:f+(a?d:0)}[e.align],b=(a?c+this.height:b)+(a?1:-1)*(g?-1:1)*
134
+ this.axisTitleMargin+(this.side===2?i:0);return{x:a?d:b+(g?this.width:0)+h+(e.x||0),y:a?b-(g?this.height:0)+h:d+(e.y||0)}},render:function(){var a=this,b=a.horiz,c=a.reversed,d=a.chart,e=d.renderer,f=a.options,g=a.isLog,h=a.isLinked,i=a.tickPositions,j,k=a.axisTitle,l=a.ticks,o=a.minorTicks,n=a.alternateBands,s=f.stackLabels,m=f.alternateGridColor,J=a.tickmarkOffset,L=f.lineWidth,x=d.hasRendered&&r(a.oldMin)&&!isNaN(a.oldMin),q=a.hasData,v=a.showAxis,u,w=f.labels.overflow,y=a.justifyLabels=b&&w!==
135
+ !1,z;a.labelEdge.length=0;a.justifyToPlot=w==="justify";p([l,o,n],function(a){for(var b in a)a[b].isActive=!1});if(q||h)if(a.minorTickInterval&&!a.categories&&p(a.getMinorTickPositions(),function(b){o[b]||(o[b]=new Sa(a,b,"minor"));x&&o[b].isNew&&o[b].render(null,!0);o[b].render(null,!1,1)}),i.length&&(j=i.slice(),(b&&c||!b&&!c)&&j.reverse(),y&&(j=j.slice(1).concat([j[0]])),p(j,function(b,c){y&&(c=c===j.length-1?0:c+1);if(!h||b>=a.min&&b<=a.max)l[b]||(l[b]=new Sa(a,b)),x&&l[b].isNew&&l[b].render(c,
136
+ !0,0.1),l[b].render(c,!1,1)}),J&&a.min===0&&(l[-1]||(l[-1]=new Sa(a,-1,null,!0)),l[-1].render(-1))),m&&p(i,function(b,c){if(c%2===0&&b<a.max)n[b]||(n[b]=new R.PlotLineOrBand(a)),u=b+J,z=i[c+1]!==t?i[c+1]+J:a.max,n[b].options={from:g?ia(u):u,to:g?ia(z):z,color:m},n[b].render(),n[b].isActive=!0}),!a._addedPlotLB)p((f.plotLines||[]).concat(f.plotBands||[]),function(b){a.addPlotBandOrLine(b)}),a._addedPlotLB=!0;p([l,o,n],function(a){var b,c,e=[],f=va?va.duration||500:0,g=function(){for(c=e.length;c--;)a[e[c]]&&
137
+ !a[e[c]].isActive&&(a[e[c]].destroy(),delete a[e[c]])};for(b in a)if(!a[b].isActive)a[b].render(b,!1,0),a[b].isActive=!1,e.push(b);a===n||!d.hasRendered||!f?g():f&&setTimeout(g,f)});if(L)b=a.getLinePath(L),a.axisLine?a.axisLine.animate({d:b}):a.axisLine=e.path(b).attr({stroke:f.lineColor,"stroke-width":L,zIndex:7}).add(a.axisGroup),a.axisLine[v?"show":"hide"]();if(k&&v)k[k.isNew?"attr":"animate"](a.getTitlePosition()),k.isNew=!1;s&&s.enabled&&a.renderStackTotals();a.isDirty=!1},redraw:function(){var a=
138
+ this.chart.pointer;a&&a.reset(!0);this.render();p(this.plotLinesAndBands,function(a){a.render()});p(this.series,function(a){a.isDirty=!0})},destroy:function(a){var b=this,c=b.stacks,d,e=b.plotLinesAndBands;a||W(b);for(d in c)Oa(c[d]),c[d]=null;p([b.ticks,b.minorTicks,b.alternateBands],function(a){Oa(a)});for(a=e.length;a--;)e[a].destroy();p("stackTotalGroup,axisLine,axisTitle,axisGroup,cross,gridGroup,labelGroup".split(","),function(a){b[a]&&(b[a]=b[a].destroy())});this.cross&&this.cross.destroy()},
139
+ drawCrosshair:function(a,b){if(this.crosshair)if((r(b)||!m(this.crosshair.snap,!0))===!1)this.hideCrosshair();else{var c,d=this.crosshair,e=d.animation;m(d.snap,!0)?r(b)&&(c=this.chart.inverted!=this.horiz?b.plotX:this.len-b.plotY):c=this.horiz?a.chartX-this.pos:this.len-a.chartY+this.pos;c=this.isRadial?this.getPlotLinePath(this.isXAxis?b.x:m(b.stackY,b.y)):this.getPlotLinePath(null,null,null,null,c);if(c===null)this.hideCrosshair();else if(this.cross)this.cross.attr({visibility:"visible"})[e?"animate":
140
+ "attr"]({d:c},e);else{e={"stroke-width":d.width||1,stroke:d.color||"#C0C0C0",zIndex:d.zIndex||2};if(d.dashStyle)e.dashstyle=d.dashStyle;this.cross=this.chart.renderer.path(c).attr(e).add()}}},hideCrosshair:function(){this.cross&&this.cross.hide()}};q(la.prototype,{getPlotBandPath:function(a,b){var c=this.getPlotLinePath(b),d=this.getPlotLinePath(a);d&&c?d.push(c[4],c[5],c[1],c[2]):d=null;return d},addPlotBand:function(a){this.addPlotBandOrLine(a,"plotBands")},addPlotLine:function(a){this.addPlotBandOrLine(a,
141
+ "plotLines")},addPlotBandOrLine:function(a,b){var c=(new R.PlotLineOrBand(this,a)).render(),d=this.userOptions;c&&(b&&(d[b]=d[b]||[],d[b].push(a)),this.plotLinesAndBands.push(c));return c},removePlotBandOrLine:function(a){for(var b=this.plotLinesAndBands,c=this.options,d=this.userOptions,e=b.length;e--;)b[e].id===a&&b[e].destroy();p([c.plotLines||[],d.plotLines||[],c.plotBands||[],d.plotBands||[]],function(b){for(e=b.length;e--;)b[e].id===a&&ja(b,b[e])})}});la.prototype.getTimeTicks=function(a,b,
142
+ c,d){var e=[],f={},g=E.global.useUTC,h,i=new Date(b-Ra),j=a.unitRange,k=a.count;if(r(b)){j>=A.second&&(i.setMilliseconds(0),i.setSeconds(j>=A.minute?0:k*T(i.getSeconds()/k)));if(j>=A.minute)i[Db](j>=A.hour?0:k*T(i[pb]()/k));if(j>=A.hour)i[Eb](j>=A.day?0:k*T(i[qb]()/k));if(j>=A.day)i[sb](j>=A.month?1:k*T(i[Xa]()/k));j>=A.month&&(i[Fb](j>=A.year?0:k*T(i[fb]()/k)),h=i[gb]());j>=A.year&&(h-=h%k,i[Gb](h));if(j===A.week)i[sb](i[Xa]()-i[rb]()+m(d,1));b=1;Ra&&(i=new Date(i.getTime()+Ra));h=i[gb]();for(var d=
143
+ i.getTime(),l=i[fb](),o=i[Xa](),n=g?Ra:(864E5+i.getTimezoneOffset()*6E4)%864E5;d<c;)e.push(d),j===A.year?d=eb(h+b*k,0):j===A.month?d=eb(h,l+b*k):!g&&(j===A.day||j===A.week)?d=eb(h,l,o+b*k*(j===A.day?1:7)):d+=j*k,b++;e.push(d);p(vb(e,function(a){return j<=A.hour&&a%A.day===n}),function(a){f[a]="day"})}e.info=q(a,{higherRanks:f,totalRange:j*k});return e};la.prototype.normalizeTimeTickInterval=function(a,b){var c=b||[["millisecond",[1,2,5,10,20,25,50,100,200,500]],["second",[1,2,5,10,15,30]],["minute",
144
+ [1,2,5,10,15,30]],["hour",[1,2,3,4,6,8,12]],["day",[1,2]],["week",[1,2]],["month",[1,2,3,4,6]],["year",null]],d=c[c.length-1],e=A[d[0]],f=d[1],g;for(g=0;g<c.length;g++)if(d=c[g],e=A[d[0]],f=d[1],c[g+1]&&a<=(e*f[f.length-1]+A[c[g+1][0]])/2)break;e===A.year&&a<5*e&&(f=[1,2,5]);c=nb(a/e,f,d[0]==="year"?v(mb(a/e),1):1);return{unitRange:e,count:c,unitName:d[0]}};la.prototype.getLogTickPositions=function(a,b,c,d){var e=this.options,f=this.len,g=[];if(!d)this._minorAutoInterval=null;if(a>=0.5)a=u(a),g=this.getLinearTickPositions(a,
145
+ b,c);else if(a>=0.08)for(var f=T(b),h,i,j,k,l,e=a>0.3?[1,2,4]:a>0.15?[1,2,4,6,8]:[1,2,3,4,5,6,7,8,9];f<c+1&&!l;f++){i=e.length;for(h=0;h<i&&!l;h++)j=za(ia(f)*e[h]),j>b&&(!d||k<=c)&&g.push(k),k>c&&(l=!0),k=j}else if(b=ia(b),c=ia(c),a=e[d?"minorTickInterval":"tickInterval"],a=m(a==="auto"?null:a,this._minorAutoInterval,(c-b)*(e.tickPixelInterval/(d?5:1))/((d?f/this.tickPositions.length:f)||1)),a=nb(a,null,mb(a)),g=Ua(this.getLinearTickPositions(a,b,c),za),!d)this._minorAutoInterval=a/5;if(!d)this.tickInterval=
146
+ a;return g};var Mb=R.Tooltip=function(){this.init.apply(this,arguments)};Mb.prototype={init:function(a,b){var c=b.borderWidth,d=b.style,e=z(d.padding);this.chart=a;this.options=b;this.crosshairs=[];this.now={x:0,y:0};this.isHidden=!0;this.label=a.renderer.label("",0,0,b.shape||"callout",null,null,b.useHTML,null,"tooltip").attr({padding:e,fill:b.backgroundColor,"stroke-width":c,r:b.borderRadius,zIndex:8}).css(d).css({padding:0}).add().attr({y:-9999});fa||this.label.shadow(b.shadow);this.shared=b.shared},
147
+ destroy:function(){if(this.label)this.label=this.label.destroy();clearTimeout(this.hideTimer);clearTimeout(this.tooltipTimeout)},move:function(a,b,c,d){var e=this,f=e.now,g=e.options.animation!==!1&&!e.isHidden,h=e.followPointer||e.len>1;q(f,{x:g?(2*f.x+a)/3:a,y:g?(f.y+b)/2:b,anchorX:h?t:g?(2*f.anchorX+c)/3:c,anchorY:h?t:g?(f.anchorY+d)/2:d});e.label.attr(f);if(g&&(M(a-f.x)>1||M(b-f.y)>1))clearTimeout(this.tooltipTimeout),this.tooltipTimeout=setTimeout(function(){e&&e.move(a,b,c,d)},32)},hide:function(){var a=
148
+ this,b;clearTimeout(this.hideTimer);if(!this.isHidden)b=this.chart.hoverPoints,this.hideTimer=setTimeout(function(){a.label.fadeOut();a.isHidden=!0},m(this.options.hideDelay,500)),b&&p(b,function(a){a.setState()}),this.chart.hoverPoints=null},getAnchor:function(a,b){var c,d=this.chart,e=d.inverted,f=d.plotTop,g=0,h=0,i,a=qa(a);c=a[0].tooltipPos;this.followPointer&&b&&(b.chartX===t&&(b=d.pointer.normalize(b)),c=[b.chartX-d.plotLeft,b.chartY-f]);c||(p(a,function(a){i=a.series.yAxis;g+=a.plotX;h+=(a.plotLow?
149
+ (a.plotLow+a.plotHigh)/2:a.plotY)+(!e&&i?i.top-f:0)}),g/=a.length,h/=a.length,c=[e?d.plotWidth-h:g,this.shared&&!e&&a.length>1&&b?b.chartY-f:e?d.plotHeight-g:h]);return Ua(c,u)},getPosition:function(a,b,c){var d=this.chart,e=this.distance,f={},g,h=["y",d.chartHeight,b,c.plotY+d.plotTop],i=["x",d.chartWidth,a,c.plotX+d.plotLeft],j=c.ttBelow||d.inverted&&!c.negative||!d.inverted&&c.negative,k=function(a,b,c,d){var g=c<d-e,b=d+e+c<b,c=d-e-c;d+=e;if(j&&b)f[a]=d;else if(!j&&g)f[a]=c;else if(g)f[a]=c;else if(b)f[a]=
150
+ d;else return!1},l=function(a,b,c,d){if(d<e||d>b-e)return!1;else f[a]=d<c/2?1:d>b-c/2?b-c-2:d-c/2},o=function(a){var b=h;h=i;i=b;g=a},n=function(){k.apply(0,h)!==!1?l.apply(0,i)===!1&&!g&&(o(!0),n()):g?f.x=f.y=0:(o(!0),n())};(d.inverted||this.len>1)&&o();n();return f},defaultFormatter:function(a){var b=this.points||qa(this),c=b[0].series,d;d=[a.tooltipHeaderFormatter(b[0])];p(b,function(a){c=a.series;d.push(c.tooltipFormatter&&c.tooltipFormatter(a)||a.point.tooltipFormatter(c.tooltipOptions.pointFormat))});
151
+ d.push(a.options.footerFormat||"");return d.join("")},refresh:function(a,b){var c=this.chart,d=this.label,e=this.options,f,g,h={},i,j=[];i=e.formatter||this.defaultFormatter;var h=c.hoverPoints,k,l=this.shared;clearTimeout(this.hideTimer);this.followPointer=qa(a)[0].series.tooltipOptions.followPointer;g=this.getAnchor(a,b);f=g[0];g=g[1];l&&(!a.series||!a.series.noSharedTooltip)?(c.hoverPoints=a,h&&p(h,function(a){a.setState()}),p(a,function(a){a.setState("hover");j.push(a.getLabelConfig())}),h={x:a[0].category,
152
+ y:a[0].y},h.points=j,this.len=j.length,a=a[0]):h=a.getLabelConfig();i=i.call(h,this);h=a.series;this.distance=m(h.tooltipOptions.distance,16);i===!1?this.hide():(this.isHidden&&(bb(d),d.attr("opacity",1).show()),d.attr({text:i}),k=e.borderColor||a.color||h.color||"#606060",d.attr({stroke:k}),this.updatePosition({plotX:f,plotY:g,negative:a.negative,ttBelow:a.ttBelow}),this.isHidden=!1);D(c,"tooltipRefresh",{text:i,x:f+c.plotLeft,y:g+c.plotTop,borderColor:k})},updatePosition:function(a){var b=this.chart,
153
+ c=this.label,c=(this.options.positioner||this.getPosition).call(this,c.width,c.height,a);this.move(u(c.x),u(c.y),a.plotX+b.plotLeft,a.plotY+b.plotTop)},tooltipHeaderFormatter:function(a){var b=a.series,c=b.tooltipOptions,d=c.dateTimeLabelFormats,e=c.xDateFormat,f=b.xAxis,g=f&&f.options.type==="datetime"&&ha(a.key),c=c.headerFormat,f=f&&f.closestPointRange,h;if(g&&!e){if(f)for(h in A){if(A[h]>=f||A[h]<=A.day&&a.key%A[h]>0){e=d[h];break}}else e=d.day;e=e||d.year}g&&e&&(c=c.replace("{point.key}","{point.key:"+
154
+ e+"}"));return Ia(c,{point:a,series:b})}};var oa;$a=y.documentElement.ontouchstart!==t;var Wa=R.Pointer=function(a,b){this.init(a,b)};Wa.prototype={init:function(a,b){var c=b.chart,d=c.events,e=fa?"":c.zoomType,c=a.inverted,f;this.options=b;this.chart=a;this.zoomX=f=/x/.test(e);this.zoomY=e=/y/.test(e);this.zoomHor=f&&!c||e&&c;this.zoomVert=e&&!c||f&&c;this.hasZoom=f||e;this.runChartClick=d&&!!d.click;this.pinchDown=[];this.lastValidTouch={};if(R.Tooltip&&b.tooltip.enabled)a.tooltip=new Mb(a,b.tooltip),
155
+ this.followTouchMove=b.tooltip.followTouchMove;this.setDOMEvents()},normalize:function(a,b){var c,d,a=a||window.event,a=Sb(a);if(!a.target)a.target=a.srcElement;d=a.touches?a.touches.length?a.touches.item(0):a.changedTouches[0]:a;if(!b)this.chartPosition=b=Rb(this.chart.container);d.pageX===t?(c=v(a.x,a.clientX-b.left),d=a.y):(c=d.pageX-b.left,d=d.pageY-b.top);return q(a,{chartX:u(c),chartY:u(d)})},getCoordinates:function(a){var b={xAxis:[],yAxis:[]};p(this.chart.axes,function(c){b[c.isXAxis?"xAxis":
156
+ "yAxis"].push({axis:c,value:c.toValue(a[c.horiz?"chartX":"chartY"])})});return b},getIndex:function(a){var b=this.chart;return b.inverted?b.plotHeight+b.plotTop-a.chartY:a.chartX-b.plotLeft},runPointActions:function(a){var b=this.chart,c=b.series,d=b.tooltip,e,f,g=b.hoverPoint,h=b.hoverSeries,i,j,k=b.chartWidth,l=this.getIndex(a);if(d&&this.options.tooltip.shared&&(!h||!h.noSharedTooltip)){f=[];i=c.length;for(j=0;j<i;j++)if(c[j].visible&&c[j].options.enableMouseTracking!==!1&&!c[j].noSharedTooltip&&
157
+ c[j].singularTooltips!==!0&&c[j].tooltipPoints.length&&(e=c[j].tooltipPoints[l])&&e.series)e._dist=M(l-e.clientX),k=C(k,e._dist),f.push(e);for(i=f.length;i--;)f[i]._dist>k&&f.splice(i,1);if(f.length&&f[0].clientX!==this.hoverX)d.refresh(f,a),this.hoverX=f[0].clientX}c=h&&h.tooltipOptions.followPointer;if(h&&h.tracker&&!c){if((e=h.tooltipPoints[l])&&e!==g)e.onMouseOver(a)}else d&&c&&!d.isHidden&&(h=d.getAnchor([{}],a),d.updatePosition({plotX:h[0],plotY:h[1]}));if(d&&!this._onDocumentMouseMove)this._onDocumentMouseMove=
158
+ function(a){if(V[oa])V[oa].pointer.onDocumentMouseMove(a)},K(y,"mousemove",this._onDocumentMouseMove);p(b.axes,function(b){b.drawCrosshair(a,m(e,g))})},reset:function(a){var b=this.chart,c=b.hoverSeries,d=b.hoverPoint,e=b.tooltip,f=e&&e.shared?b.hoverPoints:d;(a=a&&e&&f)&&qa(f)[0].plotX===t&&(a=!1);if(a)e.refresh(f),d&&d.setState(d.state,!0);else{if(d)d.onMouseOut();if(c)c.onMouseOut();e&&e.hide();if(this._onDocumentMouseMove)W(y,"mousemove",this._onDocumentMouseMove),this._onDocumentMouseMove=null;
159
+ p(b.axes,function(a){a.hideCrosshair()});this.hoverX=null}},scaleGroups:function(a,b){var c=this.chart,d;p(c.series,function(e){d=a||e.getPlotBox();e.xAxis&&e.xAxis.zoomEnabled&&(e.group.attr(d),e.markerGroup&&(e.markerGroup.attr(d),e.markerGroup.clip(b?c.clipRect:null)),e.dataLabelsGroup&&e.dataLabelsGroup.attr(d))});c.clipRect.attr(b||c.clipBox)},dragStart:function(a){var b=this.chart;b.mouseIsDown=a.type;b.cancelClick=!1;b.mouseDownX=this.mouseDownX=a.chartX;b.mouseDownY=this.mouseDownY=a.chartY},
160
+ drag:function(a){var b=this.chart,c=b.options.chart,d=a.chartX,e=a.chartY,f=this.zoomHor,g=this.zoomVert,h=b.plotLeft,i=b.plotTop,j=b.plotWidth,k=b.plotHeight,l,o=this.mouseDownX,n=this.mouseDownY;d<h?d=h:d>h+j&&(d=h+j);e<i?e=i:e>i+k&&(e=i+k);this.hasDragged=Math.sqrt(Math.pow(o-d,2)+Math.pow(n-e,2));if(this.hasDragged>10){l=b.isInsidePlot(o-h,n-i);if(b.hasCartesianSeries&&(this.zoomX||this.zoomY)&&l&&!this.selectionMarker)this.selectionMarker=b.renderer.rect(h,i,f?1:j,g?1:k,0).attr({fill:c.selectionMarkerFill||
161
+ "rgba(69,114,167,0.25)",zIndex:7}).add();this.selectionMarker&&f&&(d-=o,this.selectionMarker.attr({width:M(d),x:(d>0?0:d)+o}));this.selectionMarker&&g&&(d=e-n,this.selectionMarker.attr({height:M(d),y:(d>0?0:d)+n}));l&&!this.selectionMarker&&c.panning&&b.pan(a,c.panning)}},drop:function(a){var b=this.chart,c=this.hasPinched;if(this.selectionMarker){var d={xAxis:[],yAxis:[],originalEvent:a.originalEvent||a},a=this.selectionMarker,e=a.attr?a.attr("x"):a.x,f=a.attr?a.attr("y"):a.y,g=a.attr?a.attr("width"):
162
+ a.width,h=a.attr?a.attr("height"):a.height,i;if(this.hasDragged||c)p(b.axes,function(a){if(a.zoomEnabled){var b=a.horiz,c=a.toValue(b?e:f),b=a.toValue(b?e+g:f+h);!isNaN(c)&&!isNaN(b)&&(d[a.coll].push({axis:a,min:C(c,b),max:v(c,b)}),i=!0)}}),i&&D(b,"selection",d,function(a){b.zoom(q(a,c?{animation:!1}:null))});this.selectionMarker=this.selectionMarker.destroy();c&&this.scaleGroups()}if(b)G(b.container,{cursor:b._cursor}),b.cancelClick=this.hasDragged>10,b.mouseIsDown=this.hasDragged=this.hasPinched=
163
+ !1,this.pinchDown=[]},onContainerMouseDown:function(a){a=this.normalize(a);a.preventDefault&&a.preventDefault();this.dragStart(a)},onDocumentMouseUp:function(a){V[oa]&&V[oa].pointer.drop(a)},onDocumentMouseMove:function(a){var b=this.chart,c=this.chartPosition,d=b.hoverSeries,a=this.normalize(a,c);c&&d&&!this.inClass(a.target,"highcharts-tracker")&&!b.isInsidePlot(a.chartX-b.plotLeft,a.chartY-b.plotTop)&&this.reset()},onContainerMouseLeave:function(){var a=V[oa];if(a)a.pointer.reset(),a.pointer.chartPosition=
164
+ null},onContainerMouseMove:function(a){var b=this.chart;oa=b.index;a=this.normalize(a);b.mouseIsDown==="mousedown"&&this.drag(a);(this.inClass(a.target,"highcharts-tracker")||b.isInsidePlot(a.chartX-b.plotLeft,a.chartY-b.plotTop))&&!b.openMenu&&this.runPointActions(a)},inClass:function(a,b){for(var c;a;){if(c=H(a,"class"))if(c.indexOf(b)!==-1)return!0;else if(c.indexOf("highcharts-container")!==-1)return!1;a=a.parentNode}},onTrackerMouseOut:function(a){var b=this.chart.hoverSeries,c=(a=a.relatedTarget||
165
+ a.toElement)&&a.point&&a.point.series;if(b&&!b.options.stickyTracking&&!this.inClass(a,"highcharts-tooltip")&&c!==b)b.onMouseOut()},onContainerClick:function(a){var b=this.chart,c=b.hoverPoint,d=b.plotLeft,e=b.plotTop,a=this.normalize(a);a.cancelBubble=!0;b.cancelClick||(c&&this.inClass(a.target,"highcharts-tracker")?(D(c.series,"click",q(a,{point:c})),b.hoverPoint&&c.firePointEvent("click",a)):(q(a,this.getCoordinates(a)),b.isInsidePlot(a.chartX-d,a.chartY-e)&&D(b,"click",a)))},setDOMEvents:function(){var a=
166
+ this,b=a.chart.container;b.onmousedown=function(b){a.onContainerMouseDown(b)};b.onmousemove=function(b){a.onContainerMouseMove(b)};b.onclick=function(b){a.onContainerClick(b)};K(b,"mouseleave",a.onContainerMouseLeave);ab===1&&K(y,"mouseup",a.onDocumentMouseUp);if($a)b.ontouchstart=function(b){a.onContainerTouchStart(b)},b.ontouchmove=function(b){a.onContainerTouchMove(b)},ab===1&&K(y,"touchend",a.onDocumentTouchEnd)},destroy:function(){var a;W(this.chart.container,"mouseleave",this.onContainerMouseLeave);
167
+ ab||(W(y,"mouseup",this.onDocumentMouseUp),W(y,"touchend",this.onDocumentTouchEnd));clearInterval(this.tooltipTimeout);for(a in this)this[a]=null}};q(R.Pointer.prototype,{pinchTranslate:function(a,b,c,d,e,f){(this.zoomHor||this.pinchHor)&&this.pinchTranslateDirection(!0,a,b,c,d,e,f);(this.zoomVert||this.pinchVert)&&this.pinchTranslateDirection(!1,a,b,c,d,e,f)},pinchTranslateDirection:function(a,b,c,d,e,f,g,h){var i=this.chart,j=a?"x":"y",k=a?"X":"Y",l="chart"+k,o=a?"width":"height",n=i["plot"+(a?
168
+ "Left":"Top")],s,m,p=h||1,q=i.inverted,x=i.bounds[a?"h":"v"],r=b.length===1,v=b[0][l],u=c[0][l],t=!r&&b[1][l],w=!r&&c[1][l],y,c=function(){!r&&M(v-t)>20&&(p=h||M(u-w)/M(v-t));m=(n-u)/p+v;s=i["plot"+(a?"Width":"Height")]/p};c();b=m;b<x.min?(b=x.min,y=!0):b+s>x.max&&(b=x.max-s,y=!0);y?(u-=0.8*(u-g[j][0]),r||(w-=0.8*(w-g[j][1])),c()):g[j]=[u,w];q||(f[j]=m-n,f[o]=s);f=q?1/p:p;e[o]=s;e[j]=b;d[q?a?"scaleY":"scaleX":"scale"+k]=p;d["translate"+k]=f*n+(u-f*v)},pinch:function(a){var b=this,c=b.chart,d=b.pinchDown,
169
+ e=b.followTouchMove,f=a.touches,g=f.length,h=b.lastValidTouch,i=b.hasZoom,j=b.selectionMarker,k={},l=g===1&&(b.inClass(a.target,"highcharts-tracker")&&c.runTrackerClick||c.runChartClick),o={};(i||e)&&!l&&a.preventDefault();Ua(f,function(a){return b.normalize(a)});if(a.type==="touchstart")p(f,function(a,b){d[b]={chartX:a.chartX,chartY:a.chartY}}),h.x=[d[0].chartX,d[1]&&d[1].chartX],h.y=[d[0].chartY,d[1]&&d[1].chartY],p(c.axes,function(a){if(a.zoomEnabled){var b=c.bounds[a.horiz?"h":"v"],d=a.minPixelPadding,
170
+ e=a.toPixels(a.dataMin),f=a.toPixels(a.dataMax),g=C(e,f),e=v(e,f);b.min=C(a.pos,g-d);b.max=v(a.pos+a.len,e+d)}});else if(d.length){if(!j)b.selectionMarker=j=q({destroy:sa},c.plotBox);b.pinchTranslate(d,f,k,j,o,h);b.hasPinched=i;b.scaleGroups(k,o);!i&&e&&g===1&&this.runPointActions(b.normalize(a))}},onContainerTouchStart:function(a){var b=this.chart;oa=b.index;a.touches.length===1?(a=this.normalize(a),b.isInsidePlot(a.chartX-b.plotLeft,a.chartY-b.plotTop)?(this.runPointActions(a),this.pinch(a)):this.reset()):
171
+ a.touches.length===2&&this.pinch(a)},onContainerTouchMove:function(a){(a.touches.length===1||a.touches.length===2)&&this.pinch(a)},onDocumentTouchEnd:function(a){V[oa]&&V[oa].pointer.drop(a)}});if(I.PointerEvent||I.MSPointerEvent){var ua={},zb=!!I.PointerEvent,Wb=function(){var a,b=[];b.item=function(a){return this[a]};for(a in ua)ua.hasOwnProperty(a)&&b.push({pageX:ua[a].pageX,pageY:ua[a].pageY,target:ua[a].target});return b},Ab=function(a,b,c,d){a=a.originalEvent||a;if((a.pointerType==="touch"||
172
+ a.pointerType===a.MSPOINTER_TYPE_TOUCH)&&V[oa])d(a),d=V[oa].pointer,d[b]({type:c,target:a.currentTarget,preventDefault:sa,touches:Wb()})};q(Wa.prototype,{onContainerPointerDown:function(a){Ab(a,"onContainerTouchStart","touchstart",function(a){ua[a.pointerId]={pageX:a.pageX,pageY:a.pageY,target:a.currentTarget}})},onContainerPointerMove:function(a){Ab(a,"onContainerTouchMove","touchmove",function(a){ua[a.pointerId]={pageX:a.pageX,pageY:a.pageY};if(!ua[a.pointerId].target)ua[a.pointerId].target=a.currentTarget})},
173
+ onDocumentPointerUp:function(a){Ab(a,"onContainerTouchEnd","touchend",function(a){delete ua[a.pointerId]})},batchMSEvents:function(a){a(this.chart.container,zb?"pointerdown":"MSPointerDown",this.onContainerPointerDown);a(this.chart.container,zb?"pointermove":"MSPointerMove",this.onContainerPointerMove);a(y,zb?"pointerup":"MSPointerUp",this.onDocumentPointerUp)}});Ma(Wa.prototype,"init",function(a,b,c){a.call(this,b,c);(this.hasZoom||this.followTouchMove)&&G(b.container,{"-ms-touch-action":Q,"touch-action":Q})});
174
+ Ma(Wa.prototype,"setDOMEvents",function(a){a.apply(this);(this.hasZoom||this.followTouchMove)&&this.batchMSEvents(K)});Ma(Wa.prototype,"destroy",function(a){this.batchMSEvents(W);a.call(this)})}var lb=R.Legend=function(a,b){this.init(a,b)};lb.prototype={init:function(a,b){var c=this,d=b.itemStyle,e=m(b.padding,8),f=b.itemMarginTop||0;this.options=b;if(b.enabled)c.baseline=z(d.fontSize)+3+f,c.itemStyle=d,c.itemHiddenStyle=w(d,b.itemHiddenStyle),c.itemMarginTop=f,c.padding=e,c.initialItemX=e,c.initialItemY=
175
+ e-5,c.maxItemWidth=0,c.chart=a,c.itemHeight=0,c.lastLineHeight=0,c.symbolWidth=m(b.symbolWidth,16),c.pages=[],c.render(),K(c.chart,"endResize",function(){c.positionCheckboxes()})},colorizeItem:function(a,b){var c=this.options,d=a.legendItem,e=a.legendLine,f=a.legendSymbol,g=this.itemHiddenStyle.color,c=b?c.itemStyle.color:g,h=b?a.legendColor||a.color||"#CCC":g,g=a.options&&a.options.marker,i={fill:h},j;d&&d.css({fill:c,color:c});e&&e.attr({stroke:h});if(f){if(g&&f.isMarker)for(j in i.stroke=h,g=a.convertAttribs(g),
176
+ g)d=g[j],d!==t&&(i[j]=d);f.attr(i)}},positionItem:function(a){var b=this.options,c=b.symbolPadding,b=!b.rtl,d=a._legendItemPos,e=d[0],d=d[1],f=a.checkbox;a.legendGroup&&a.legendGroup.translate(b?e:this.legendWidth-e-2*c-4,d);if(f)f.x=e,f.y=d},destroyItem:function(a){var b=a.checkbox;p(["legendItem","legendLine","legendSymbol","legendGroup"],function(b){a[b]&&(a[b]=a[b].destroy())});b&&Pa(a.checkbox)},destroy:function(){var a=this.group,b=this.box;if(b)this.box=b.destroy();if(a)this.group=a.destroy()},
177
+ positionCheckboxes:function(a){var b=this.group.alignAttr,c,d=this.clipHeight||this.legendHeight;if(b)c=b.translateY,p(this.allItems,function(e){var f=e.checkbox,g;f&&(g=c+f.y+(a||0)+3,G(f,{left:b.translateX+e.checkboxOffset+f.x-20+"px",top:g+"px",display:g>c-6&&g<c+d-6?"":Q}))})},renderTitle:function(){var a=this.padding,b=this.options.title,c=0;if(b.text){if(!this.title)this.title=this.chart.renderer.label(b.text,a-3,a-4,null,null,null,null,null,"legend-title").attr({zIndex:1}).css(b.style).add(this.group);
178
+ a=this.title.getBBox();c=a.height;this.offsetWidth=a.width;this.contentGroup.attr({translateY:c})}this.titleHeight=c},renderItem:function(a){var b=this.chart,c=b.renderer,d=this.options,e=d.layout==="horizontal",f=this.symbolWidth,g=d.symbolPadding,h=this.itemStyle,i=this.itemHiddenStyle,j=this.padding,k=e?m(d.itemDistance,20):0,l=!d.rtl,o=d.width,n=d.itemMarginBottom||0,s=this.itemMarginTop,p=this.initialItemX,q=a.legendItem,r=a.series&&a.series.drawLegendSymbol?a.series:a,x=r.options,x=this.createCheckboxForItem&&
179
+ x&&x.showCheckbox,t=d.useHTML;if(!q)a.legendGroup=c.g("legend-item").attr({zIndex:1}).add(this.scrollGroup),r.drawLegendSymbol(this,a),a.legendItem=q=c.text(d.labelFormat?Ia(d.labelFormat,a):d.labelFormatter.call(a),l?f+g:-g,this.baseline,t).css(w(a.visible?h:i)).attr({align:l?"left":"right",zIndex:2}).add(a.legendGroup),this.setItemEvents&&this.setItemEvents(a,q,t,h,i),this.colorizeItem(a,a.visible),x&&this.createCheckboxForItem(a);c=q.getBBox();f=a.checkboxOffset=d.itemWidth||a.legendItemWidth||
180
+ f+g+c.width+k+(x?20:0);this.itemHeight=g=u(a.legendItemHeight||c.height);if(e&&this.itemX-p+f>(o||b.chartWidth-2*j-p-d.x))this.itemX=p,this.itemY+=s+this.lastLineHeight+n,this.lastLineHeight=0;this.maxItemWidth=v(this.maxItemWidth,f);this.lastItemY=s+this.itemY+n;this.lastLineHeight=v(g,this.lastLineHeight);a._legendItemPos=[this.itemX,this.itemY];e?this.itemX+=f:(this.itemY+=s+g+n,this.lastLineHeight=g);this.offsetWidth=o||v((e?this.itemX-p-k:f)+j,this.offsetWidth)},getAllItems:function(){var a=
181
+ [];p(this.chart.series,function(b){var c=b.options;if(m(c.showInLegend,!r(c.linkedTo)?t:!1,!0))a=a.concat(b.legendItems||(c.legendType==="point"?b.data:b))});return a},render:function(){var a=this,b=a.chart,c=b.renderer,d=a.group,e,f,g,h,i=a.box,j=a.options,k=a.padding,l=j.borderWidth,o=j.backgroundColor;a.itemX=a.initialItemX;a.itemY=a.initialItemY;a.offsetWidth=0;a.lastItemY=0;if(!d)a.group=d=c.g("legend").attr({zIndex:7}).add(),a.contentGroup=c.g().attr({zIndex:1}).add(d),a.scrollGroup=c.g().add(a.contentGroup);
182
+ a.renderTitle();e=a.getAllItems();ob(e,function(a,b){return(a.options&&a.options.legendIndex||0)-(b.options&&b.options.legendIndex||0)});j.reversed&&e.reverse();a.allItems=e;a.display=f=!!e.length;p(e,function(b){a.renderItem(b)});g=j.width||a.offsetWidth;h=a.lastItemY+a.lastLineHeight+a.titleHeight;h=a.handleOverflow(h);if(l||o){g+=k;h+=k;if(i){if(g>0&&h>0)i[i.isNew?"attr":"animate"](i.crisp({width:g,height:h})),i.isNew=!1}else a.box=i=c.rect(0,0,g,h,j.borderRadius,l||0).attr({stroke:j.borderColor,
183
+ "stroke-width":l||0,fill:o||Q}).add(d).shadow(j.shadow),i.isNew=!0;i[f?"show":"hide"]()}a.legendWidth=g;a.legendHeight=h;p(e,function(b){a.positionItem(b)});f&&d.align(q({width:g,height:h},j),!0,"spacingBox");b.isResizing||this.positionCheckboxes()},handleOverflow:function(a){var b=this,c=this.chart,d=c.renderer,e=this.options,f=e.y,f=c.spacingBox.height+(e.verticalAlign==="top"?-f:f)-this.padding,g=e.maxHeight,h,i=this.clipRect,j=e.navigation,k=m(j.animation,!0),l=j.arrowSize||12,o=this.nav,n=this.pages,
184
+ s,q=this.allItems;e.layout==="horizontal"&&(f/=2);g&&(f=C(f,g));n.length=0;if(a>f&&!e.useHTML){this.clipHeight=h=f-20-this.titleHeight-this.padding;this.currentPage=m(this.currentPage,1);this.fullHeight=a;p(q,function(a,b){var c=a._legendItemPos[1],d=u(a.legendItem.getBBox().height),e=n.length;if(!e||c-n[e-1]>h&&(s||c)!==n[e-1])n.push(s||c),e++;b===q.length-1&&c+d-n[e-1]>h&&n.push(c);c!==s&&(s=c)});if(!i)i=b.clipRect=d.clipRect(0,this.padding,9999,0),b.contentGroup.clip(i);i.attr({height:h});if(!o)this.nav=
185
+ o=d.g().attr({zIndex:1}).add(this.group),this.up=d.symbol("triangle",0,0,l,l).on("click",function(){b.scroll(-1,k)}).add(o),this.pager=d.text("",15,10).css(j.style).add(o),this.down=d.symbol("triangle-down",0,0,l,l).on("click",function(){b.scroll(1,k)}).add(o);b.scroll(0);a=f}else if(o)i.attr({height:c.chartHeight}),o.hide(),this.scrollGroup.attr({translateY:1}),this.clipHeight=0;return a},scroll:function(a,b){var c=this.pages,d=c.length,e=this.currentPage+a,f=this.clipHeight,g=this.options.navigation,
186
+ h=g.activeColor,g=g.inactiveColor,i=this.pager,j=this.padding;e>d&&(e=d);if(e>0)b!==t&&Qa(b,this.chart),this.nav.attr({translateX:j,translateY:f+this.padding+7+this.titleHeight,visibility:"visible"}),this.up.attr({fill:e===1?g:h}).css({cursor:e===1?"default":"pointer"}),i.attr({text:e+"/"+d}),this.down.attr({x:18+this.pager.getBBox().width,fill:e===d?g:h}).css({cursor:e===d?"default":"pointer"}),c=-c[e-1]+this.initialItemY,this.scrollGroup.animate({translateY:c}),this.currentPage=e,this.positionCheckboxes(c)}};
187
+ N=R.LegendSymbolMixin={drawRectangle:function(a,b){var c=a.options.symbolHeight||12;b.legendSymbol=this.chart.renderer.rect(0,a.baseline-5-c/2,a.symbolWidth,c,a.options.symbolRadius||0).attr({zIndex:3}).add(b.legendGroup)},drawLineMarker:function(a){var b=this.options,c=b.marker,d;d=a.symbolWidth;var e=this.chart.renderer,f=this.legendGroup,a=a.baseline-u(e.fontMetrics(a.options.itemStyle.fontSize).b*0.3),g;if(b.lineWidth){g={"stroke-width":b.lineWidth};if(b.dashStyle)g.dashstyle=b.dashStyle;this.legendLine=
188
+ e.path(["M",0,a,"L",d,a]).attr(g).add(f)}if(c&&c.enabled!==!1)b=c.radius,this.legendSymbol=d=e.symbol(this.symbol,d/2-b,a-b,2*b,2*b).add(f),d.isMarker=!0}};(/Trident\/7\.0/.test(wa)||Ta)&&Ma(lb.prototype,"positionItem",function(a,b){var c=this,d=function(){b._legendItemPos&&a.call(c,b)};d();setTimeout(d)});Ya.prototype={init:function(a,b){var c,d=a.series;a.series=null;c=w(E,a);c.series=a.series=d;this.userOptions=a;d=c.chart;this.margin=this.splashArray("margin",d);this.spacing=this.splashArray("spacing",
189
+ d);var e=d.events;this.bounds={h:{},v:{}};this.callback=b;this.isResizing=0;this.options=c;this.axes=[];this.series=[];this.hasCartesianSeries=d.showAxes;var f=this,g;f.index=V.length;V.push(f);ab++;d.reflow!==!1&&K(f,"load",function(){f.initReflow()});if(e)for(g in e)K(f,g,e[g]);f.xAxis=[];f.yAxis=[];f.animation=fa?!1:m(d.animation,!0);f.pointCount=0;f.counters=new Bb;f.firstRender()},initSeries:function(a){var b=this.options.chart;(b=F[a.type||b.type||b.defaultSeriesType])||ra(17,!0);b=new b;b.init(this,
190
+ a);return b},isInsidePlot:function(a,b,c){var d=c?b:a,a=c?a:b;return d>=0&&d<=this.plotWidth&&a>=0&&a<=this.plotHeight},adjustTickAmounts:function(){this.options.chart.alignTicks!==!1&&p(this.axes,function(a){a.adjustTickAmount()});this.maxTicks=null},redraw:function(a){var b=this.axes,c=this.series,d=this.pointer,e=this.legend,f=this.isDirtyLegend,g,h,i=this.isDirtyBox,j=c.length,k=j,l=this.renderer,o=l.isHidden(),n=[];Qa(a,this);o&&this.cloneRenderTo();for(this.layOutTitles();k--;)if(a=c[k],a.options.stacking&&
191
+ (g=!0,a.isDirty)){h=!0;break}if(h)for(k=j;k--;)if(a=c[k],a.options.stacking)a.isDirty=!0;p(c,function(a){a.isDirty&&a.options.legendType==="point"&&(f=!0)});if(f&&e.options.enabled)e.render(),this.isDirtyLegend=!1;g&&this.getStacks();if(this.hasCartesianSeries){if(!this.isResizing)this.maxTicks=null,p(b,function(a){a.setScale()});this.adjustTickAmounts();this.getMargins();p(b,function(a){a.isDirty&&(i=!0)});p(b,function(a){if(a.isDirtyExtremes)a.isDirtyExtremes=!1,n.push(function(){D(a,"afterSetExtremes",
192
+ q(a.eventArgs,a.getExtremes()));delete a.eventArgs});(i||g)&&a.redraw()})}i&&this.drawChartBox();p(c,function(a){a.isDirty&&a.visible&&(!a.isCartesian||a.xAxis)&&a.redraw()});d&&d.reset(!0);l.draw();D(this,"redraw");o&&this.cloneRenderTo(!0);p(n,function(a){a.call()})},get:function(a){var b=this.axes,c=this.series,d,e;for(d=0;d<b.length;d++)if(b[d].options.id===a)return b[d];for(d=0;d<c.length;d++)if(c[d].options.id===a)return c[d];for(d=0;d<c.length;d++){e=c[d].points||[];for(b=0;b<e.length;b++)if(e[b].id===
193
+ a)return e[b]}return null},getAxes:function(){var a=this,b=this.options,c=b.xAxis=qa(b.xAxis||{}),b=b.yAxis=qa(b.yAxis||{});p(c,function(a,b){a.index=b;a.isX=!0});p(b,function(a,b){a.index=b});c=c.concat(b);p(c,function(b){new la(a,b)});a.adjustTickAmounts()},getSelectedPoints:function(){var a=[];p(this.series,function(b){a=a.concat(vb(b.points||[],function(a){return a.selected}))});return a},getSelectedSeries:function(){return vb(this.series,function(a){return a.selected})},getStacks:function(){var a=
194
+ this;p(a.yAxis,function(a){if(a.stacks&&a.hasVisibleSeries)a.oldStacks=a.stacks});p(a.series,function(b){if(b.options.stacking&&(b.visible===!0||a.options.chart.ignoreHiddenSeries===!1))b.stackKey=b.type+m(b.options.stack,"")})},setTitle:function(a,b,c){var g;var d=this,e=d.options,f;f=e.title=w(e.title,a);g=e.subtitle=w(e.subtitle,b),e=g;p([["title",a,f],["subtitle",b,e]],function(a){var b=a[0],c=d[b],e=a[1],a=a[2];c&&e&&(d[b]=c=c.destroy());a&&a.text&&!c&&(d[b]=d.renderer.text(a.text,0,0,a.useHTML).attr({align:a.align,
195
+ "class":"highcharts-"+b,zIndex:a.zIndex||4}).css(a.style).add())});d.layOutTitles(c)},layOutTitles:function(a){var b=0,c=this.title,d=this.subtitle,e=this.options,f=e.title,e=e.subtitle,g=this.spacingBox.width-44;if(c&&(c.css({width:(f.width||g)+"px"}).align(q({y:15},f),!1,"spacingBox"),!f.floating&&!f.verticalAlign))b=c.getBBox().height;d&&(d.css({width:(e.width||g)+"px"}).align(q({y:b+f.margin},e),!1,"spacingBox"),!e.floating&&!e.verticalAlign&&(b=Ka(b+d.getBBox().height)));c=this.titleOffset!==
196
+ b;this.titleOffset=b;if(!this.isDirtyBox&&c)this.isDirtyBox=c,this.hasRendered&&m(a,!0)&&this.isDirtyBox&&this.redraw()},getChartSize:function(){var a=this.options.chart,b=a.width,a=a.height,c=this.renderToClone||this.renderTo;if(!r(b))this.containerWidth=jb(c,"width");if(!r(a))this.containerHeight=jb(c,"height");this.chartWidth=v(0,b||this.containerWidth||600);this.chartHeight=v(0,m(a,this.containerHeight>19?this.containerHeight:400))},cloneRenderTo:function(a){var b=this.renderToClone,c=this.container;
197
+ a?b&&(this.renderTo.appendChild(c),Pa(b),delete this.renderToClone):(c&&c.parentNode===this.renderTo&&this.renderTo.removeChild(c),this.renderToClone=b=this.renderTo.cloneNode(0),G(b,{position:"absolute",top:"-9999px",display:"block"}),b.style.setProperty&&b.style.setProperty("display","block","important"),y.body.appendChild(b),c&&b.appendChild(c))},getContainer:function(){var a,b=this.options.chart,c,d,e;this.renderTo=a=b.renderTo;e="highcharts-"+tb++;if(Fa(a))this.renderTo=a=y.getElementById(a);
198
+ a||ra(13,!0);c=z(H(a,"data-highcharts-chart"));!isNaN(c)&&V[c]&&V[c].hasRendered&&V[c].destroy();H(a,"data-highcharts-chart",this.index);a.innerHTML="";!b.skipClone&&!a.offsetWidth&&this.cloneRenderTo();this.getChartSize();c=this.chartWidth;d=this.chartHeight;this.container=a=Y(Ja,{className:"highcharts-container"+(b.className?" "+b.className:""),id:e},q({position:"relative",overflow:"hidden",width:c+"px",height:d+"px",textAlign:"left",lineHeight:"normal",zIndex:0,"-webkit-tap-highlight-color":"rgba(0,0,0,0)"},
199
+ b.style),this.renderToClone||a);this._cursor=a.style.cursor;this.renderer=b.forExport?new ta(a,c,d,b.style,!0):new Za(a,c,d,b.style);fa&&this.renderer.create(this,a,c,d)},getMargins:function(){var a=this.spacing,b,c=this.legend,d=this.margin,e=this.options.legend,f=m(e.margin,20),g=e.x,h=e.y,i=e.align,j=e.verticalAlign,k=this.titleOffset;this.resetMargins();b=this.axisOffset;if(k&&!r(d[0]))this.plotTop=v(this.plotTop,k+this.options.title.margin+a[0]);if(c.display&&!e.floating)if(i==="right"){if(!r(d[1]))this.marginRight=
200
+ v(this.marginRight,c.legendWidth-g+f+a[1])}else if(i==="left"){if(!r(d[3]))this.plotLeft=v(this.plotLeft,c.legendWidth+g+f+a[3])}else if(j==="top"){if(!r(d[0]))this.plotTop=v(this.plotTop,c.legendHeight+h+f+a[0])}else if(j==="bottom"&&!r(d[2]))this.marginBottom=v(this.marginBottom,c.legendHeight-h+f+a[2]);this.extraBottomMargin&&(this.marginBottom+=this.extraBottomMargin);this.extraTopMargin&&(this.plotTop+=this.extraTopMargin);this.hasCartesianSeries&&p(this.axes,function(a){a.getOffset()});r(d[3])||
201
+ (this.plotLeft+=b[3]);r(d[0])||(this.plotTop+=b[0]);r(d[2])||(this.marginBottom+=b[2]);r(d[1])||(this.marginRight+=b[1]);this.setChartSize()},reflow:function(a){var b=this,c=b.options.chart,d=b.renderTo,e=c.width||jb(d,"width"),f=c.height||jb(d,"height"),c=a?a.target:I,d=function(){if(b.container)b.setSize(e,f,!1),b.hasUserSize=null};if(!b.hasUserSize&&e&&f&&(c===I||c===y)){if(e!==b.containerWidth||f!==b.containerHeight)clearTimeout(b.reflowTimeout),a?b.reflowTimeout=setTimeout(d,100):d();b.containerWidth=
202
+ e;b.containerHeight=f}},initReflow:function(){var a=this,b=function(b){a.reflow(b)};K(I,"resize",b);K(a,"destroy",function(){W(I,"resize",b)})},setSize:function(a,b,c){var d=this,e,f,g;d.isResizing+=1;g=function(){d&&D(d,"endResize",null,function(){d.isResizing-=1})};Qa(c,d);d.oldChartHeight=d.chartHeight;d.oldChartWidth=d.chartWidth;if(r(a))d.chartWidth=e=v(0,u(a)),d.hasUserSize=!!e;if(r(b))d.chartHeight=f=v(0,u(b));(va?kb:G)(d.container,{width:e+"px",height:f+"px"},va);d.setChartSize(!0);d.renderer.setSize(e,
203
+ f,c);d.maxTicks=null;p(d.axes,function(a){a.isDirty=!0;a.setScale()});p(d.series,function(a){a.isDirty=!0});d.isDirtyLegend=!0;d.isDirtyBox=!0;d.layOutTitles();d.getMargins();d.redraw(c);d.oldChartHeight=null;D(d,"resize");va===!1?g():setTimeout(g,va&&va.duration||500)},setChartSize:function(a){var b=this.inverted,c=this.renderer,d=this.chartWidth,e=this.chartHeight,f=this.options.chart,g=this.spacing,h=this.clipOffset,i,j,k,l;this.plotLeft=i=u(this.plotLeft);this.plotTop=j=u(this.plotTop);this.plotWidth=
204
+ k=v(0,u(d-i-this.marginRight));this.plotHeight=l=v(0,u(e-j-this.marginBottom));this.plotSizeX=b?l:k;this.plotSizeY=b?k:l;this.plotBorderWidth=f.plotBorderWidth||0;this.spacingBox=c.spacingBox={x:g[3],y:g[0],width:d-g[3]-g[1],height:e-g[0]-g[2]};this.plotBox=c.plotBox={x:i,y:j,width:k,height:l};d=2*T(this.plotBorderWidth/2);b=Ka(v(d,h[3])/2);c=Ka(v(d,h[0])/2);this.clipBox={x:b,y:c,width:T(this.plotSizeX-v(d,h[1])/2-b),height:T(this.plotSizeY-v(d,h[2])/2-c)};a||p(this.axes,function(a){a.setAxisSize();
205
+ a.setAxisTranslation()})},resetMargins:function(){var a=this.spacing,b=this.margin;this.plotTop=m(b[0],a[0]);this.marginRight=m(b[1],a[1]);this.marginBottom=m(b[2],a[2]);this.plotLeft=m(b[3],a[3]);this.axisOffset=[0,0,0,0];this.clipOffset=[0,0,0,0]},drawChartBox:function(){var a=this.options.chart,b=this.renderer,c=this.chartWidth,d=this.chartHeight,e=this.chartBackground,f=this.plotBackground,g=this.plotBorder,h=this.plotBGImage,i=a.borderWidth||0,j=a.backgroundColor,k=a.plotBackgroundColor,l=a.plotBackgroundImage,
206
+ o=a.plotBorderWidth||0,n,s=this.plotLeft,m=this.plotTop,p=this.plotWidth,q=this.plotHeight,r=this.plotBox,v=this.clipRect,u=this.clipBox;n=i+(a.shadow?8:0);if(i||j)if(e)e.animate(e.crisp({width:c-n,height:d-n}));else{e={fill:j||Q};if(i)e.stroke=a.borderColor,e["stroke-width"]=i;this.chartBackground=b.rect(n/2,n/2,c-n,d-n,a.borderRadius,i).attr(e).addClass("highcharts-background").add().shadow(a.shadow)}if(k)f?f.animate(r):this.plotBackground=b.rect(s,m,p,q,0).attr({fill:k}).add().shadow(a.plotShadow);
207
+ if(l)h?h.animate(r):this.plotBGImage=b.image(l,s,m,p,q).add();v?v.animate({width:u.width,height:u.height}):this.clipRect=b.clipRect(u);if(o)g?g.animate(g.crisp({x:s,y:m,width:p,height:q})):this.plotBorder=b.rect(s,m,p,q,0,-o).attr({stroke:a.plotBorderColor,"stroke-width":o,fill:Q,zIndex:1}).add();this.isDirtyBox=!1},propFromSeries:function(){var a=this,b=a.options.chart,c,d=a.options.series,e,f;p(["inverted","angular","polar"],function(g){c=F[b.type||b.defaultSeriesType];f=a[g]||b[g]||c&&c.prototype[g];
208
+ for(e=d&&d.length;!f&&e--;)(c=F[d[e].type])&&c.prototype[g]&&(f=!0);a[g]=f})},linkSeries:function(){var a=this,b=a.series;p(b,function(a){a.linkedSeries.length=0});p(b,function(b){var d=b.options.linkedTo;if(Fa(d)&&(d=d===":previous"?a.series[b.index-1]:a.get(d)))d.linkedSeries.push(b),b.linkedParent=d})},renderSeries:function(){p(this.series,function(a){a.translate();a.setTooltipPoints&&a.setTooltipPoints();a.render()})},render:function(){var a=this,b=a.axes,c=a.renderer,d=a.options,e=d.labels,f=
209
+ d.credits,g;a.setTitle();a.legend=new lb(a,d.legend);a.getStacks();p(b,function(a){a.setScale()});a.getMargins();a.maxTicks=null;p(b,function(a){a.setTickPositions(!0);a.setMaxTicks()});a.adjustTickAmounts();a.getMargins();a.drawChartBox();a.hasCartesianSeries&&p(b,function(a){a.render()});if(!a.seriesGroup)a.seriesGroup=c.g("series-group").attr({zIndex:3}).add();a.renderSeries();e.items&&p(e.items,function(b){var d=q(e.style,b.style),f=z(d.left)+a.plotLeft,g=z(d.top)+a.plotTop+12;delete d.left;delete d.top;
210
+ c.text(b.html,f,g).attr({zIndex:2}).css(d).add()});if(f.enabled&&!a.credits)g=f.href,a.credits=c.text(f.text,0,0).on("click",function(){if(g)location.href=g}).attr({align:f.position.align,zIndex:8}).css(f.style).add().align(f.position);a.hasRendered=!0},destroy:function(){var a=this,b=a.axes,c=a.series,d=a.container,e,f=d&&d.parentNode;D(a,"destroy");V[a.index]=t;ab--;a.renderTo.removeAttribute("data-highcharts-chart");W(a);for(e=b.length;e--;)b[e]=b[e].destroy();for(e=c.length;e--;)c[e]=c[e].destroy();
211
+ p("title,subtitle,chartBackground,plotBackground,plotBGImage,plotBorder,seriesGroup,clipRect,credits,pointer,scroller,rangeSelector,legend,resetZoomButton,tooltip,renderer".split(","),function(b){var c=a[b];c&&c.destroy&&(a[b]=c.destroy())});if(d)d.innerHTML="",W(d),f&&Pa(d);for(e in a)delete a[e]},isReadyToRender:function(){var a=this;return!aa&&I==I.top&&y.readyState!=="complete"||fa&&!I.canvg?(fa?Lb.push(function(){a.firstRender()},a.options.global.canvasToolsURL):y.attachEvent("onreadystatechange",
212
+ function(){y.detachEvent("onreadystatechange",a.firstRender);y.readyState==="complete"&&a.firstRender()}),!1):!0},firstRender:function(){var a=this,b=a.options,c=a.callback;if(a.isReadyToRender()){a.getContainer();D(a,"init");a.resetMargins();a.setChartSize();a.propFromSeries();a.getAxes();p(b.series||[],function(b){a.initSeries(b)});a.linkSeries();D(a,"beforeRender");if(R.Pointer)a.pointer=new Wa(a,b);a.render();a.renderer.draw();c&&c.apply(a,[a]);p(a.callbacks,function(b){b.apply(a,[a])});a.cloneRenderTo(!0);
213
+ D(a,"load")}},splashArray:function(a,b){var c=b[a],c=ca(c)?c:[c,c,c,c];return[m(b[a+"Top"],c[0]),m(b[a+"Right"],c[1]),m(b[a+"Bottom"],c[2]),m(b[a+"Left"],c[3])]}};Ya.prototype.callbacks=[];X=R.CenteredSeriesMixin={getCenter:function(){var a=this.options,b=this.chart,c=2*(a.slicedOffset||0),d,e=b.plotWidth-2*c,f=b.plotHeight-2*c,b=a.center,a=[m(b[0],"50%"),m(b[1],"50%"),a.size||"100%",a.innerSize||0],g=C(e,f),h;return Ua(a,function(a,b){h=/%$/.test(a);d=b<2||b===2&&h;return(h?[e,f,g,g][b]*z(a)/100:
214
+ a)+(d?c:0)})}};var Ea=function(){};Ea.prototype={init:function(a,b,c){this.series=a;this.applyOptions(b,c);this.pointAttr={};if(a.options.colorByPoint&&(b=a.options.colors||a.chart.options.colors,this.color=this.color||b[a.colorCounter++],a.colorCounter===b.length))a.colorCounter=0;a.chart.pointCount++;return this},applyOptions:function(a,b){var c=this.series,d=c.pointValKey,a=Ea.prototype.optionsToObject.call(this,a);q(this,a);this.options=this.options?q(this.options,a):a;if(d)this.y=this[d];if(this.x===
215
+ t&&c)this.x=b===t?c.autoIncrement():b;return this},optionsToObject:function(a){var b={},c=this.series,d=c.pointArrayMap||["y"],e=d.length,f=0,g=0;if(typeof a==="number"||a===null)b[d[0]]=a;else if(La(a)){if(a.length>e){c=typeof a[0];if(c==="string")b.name=a[0];else if(c==="number")b.x=a[0];f++}for(;g<e;)b[d[g++]]=a[f++]}else if(typeof a==="object"){b=a;if(a.dataLabels)c._hasPointLabels=!0;if(a.marker)c._hasPointMarkers=!0}return b},destroy:function(){var a=this.series.chart,b=a.hoverPoints,c;a.pointCount--;
216
+ if(b&&(this.setState(),ja(b,this),!b.length))a.hoverPoints=null;if(this===a.hoverPoint)this.onMouseOut();if(this.graphic||this.dataLabel)W(this),this.destroyElements();this.legendItem&&a.legend.destroyItem(this);for(c in this)this[c]=null},destroyElements:function(){for(var a="graphic,dataLabel,dataLabelUpper,group,connector,shadowGroup".split(","),b,c=6;c--;)b=a[c],this[b]&&(this[b]=this[b].destroy())},getLabelConfig:function(){return{x:this.category,y:this.y,key:this.name||this.category,series:this.series,
217
+ point:this,percentage:this.percentage,total:this.total||this.stackTotal}},tooltipFormatter:function(a){var b=this.series,c=b.tooltipOptions,d=m(c.valueDecimals,""),e=c.valuePrefix||"",f=c.valueSuffix||"";p(b.pointArrayMap||["y"],function(b){b="{point."+b;if(e||f)a=a.replace(b+"}",e+b+"}"+f);a=a.replace(b+"}",b+":,."+d+"f}")});return Ia(a,{point:this,series:this.series})},firePointEvent:function(a,b,c){var d=this,e=this.series.options;(e.point.events[a]||d.options&&d.options.events&&d.options.events[a])&&
218
+ this.importEvents();a==="click"&&e.allowPointSelect&&(c=function(a){d.select(null,a.ctrlKey||a.metaKey||a.shiftKey)});D(this,a,b,c)}};var O=function(){};O.prototype={isCartesian:!0,type:"line",pointClass:Ea,sorted:!0,requireSorting:!0,pointAttrToOptions:{stroke:"lineColor","stroke-width":"lineWidth",fill:"fillColor",r:"radius"},axisTypes:["xAxis","yAxis"],colorCounter:0,parallelArrays:["x","y"],init:function(a,b){var c=this,d,e,f=a.series,g=function(a,b){return m(a.options.index,a._i)-m(b.options.index,
219
+ b._i)};c.chart=a;c.options=b=c.setOptions(b);c.linkedSeries=[];c.bindAxes();q(c,{name:b.name,state:"",pointAttr:{},visible:b.visible!==!1,selected:b.selected===!0});if(fa)b.animation=!1;e=b.events;for(d in e)K(c,d,e[d]);if(e&&e.click||b.point&&b.point.events&&b.point.events.click||b.allowPointSelect)a.runTrackerClick=!0;c.getColor();c.getSymbol();p(c.parallelArrays,function(a){c[a+"Data"]=[]});c.setData(b.data,!1);if(c.isCartesian)a.hasCartesianSeries=!0;f.push(c);c._i=f.length-1;ob(f,g);this.yAxis&&
220
+ ob(this.yAxis.series,g);p(f,function(a,b){a.index=b;a.name=a.name||"Series "+(b+1)})},bindAxes:function(){var a=this,b=a.options,c=a.chart,d;p(a.axisTypes||[],function(e){p(c[e],function(c){d=c.options;if(b[e]===d.index||b[e]!==t&&b[e]===d.id||b[e]===t&&d.index===0)c.series.push(a),a[e]=c,c.isDirty=!0});!a[e]&&a.optionalAxis!==e&&ra(18,!0)})},updateParallelArrays:function(a,b){var c=a.series,d=arguments;p(c.parallelArrays,typeof b==="number"?function(d){var f=d==="y"&&c.toYData?c.toYData(a):a[d];
221
+ c[d+"Data"][b]=f}:function(a){Array.prototype[b].apply(c[a+"Data"],Array.prototype.slice.call(d,2))})},autoIncrement:function(){var a=this.options,b=this.xIncrement,b=m(b,a.pointStart,0);this.pointInterval=m(this.pointInterval,a.pointInterval,1);this.xIncrement=b+this.pointInterval;return b},getSegments:function(){var a=-1,b=[],c,d=this.points,e=d.length;if(e)if(this.options.connectNulls){for(c=e;c--;)d[c].y===null&&d.splice(c,1);d.length&&(b=[d])}else p(d,function(c,g){c.y===null?(g>a+1&&b.push(d.slice(a+
222
+ 1,g)),a=g):g===e-1&&b.push(d.slice(a+1,g+1))});this.segments=b},setOptions:function(a){var b=this.chart,c=b.options.plotOptions,b=b.userOptions||{},d=b.plotOptions||{},e=c[this.type];this.userOptions=a;c=w(e,c.series,a);this.tooltipOptions=w(E.tooltip,E.plotOptions[this.type].tooltip,b.tooltip,d.series&&d.series.tooltip,d[this.type]&&d[this.type].tooltip,a.tooltip);e.marker===null&&delete c.marker;return c},getColor:function(){var a=this.options,b=this.userOptions,c=this.chart.options.colors,d=this.chart.counters,
223
+ e;e=a.color||ba[this.type].color;if(!e&&!a.colorByPoint)r(b._colorIndex)?a=b._colorIndex:(b._colorIndex=d.color,a=d.color++),e=c[a];this.color=e;d.wrapColor(c.length)},getSymbol:function(){var a=this.userOptions,b=this.options.marker,c=this.chart,d=c.options.symbols,c=c.counters;this.symbol=b.symbol;if(!this.symbol)r(a._symbolIndex)?a=a._symbolIndex:(a._symbolIndex=c.symbol,a=c.symbol++),this.symbol=d[a];if(/^url/.test(this.symbol))b.radius=0;c.wrapSymbol(d.length)},drawLegendSymbol:N.drawLineMarker,
224
+ setData:function(a,b,c,d){var e=this,f=e.points,g=f&&f.length||0,h,i=e.options,j=e.chart,k=null,l=e.xAxis,o=l&&!!l.categories,n=e.tooltipPoints,s=i.turboThreshold,q=this.xData,r=this.yData,v=(h=e.pointArrayMap)&&h.length,a=a||[];h=a.length;b=m(b,!0);if(d!==!1&&h&&g===h&&!e.cropped&&!e.hasGroupedData)p(a,function(a,b){f[b].update(a,!1)});else{e.xIncrement=null;e.pointRange=o?1:i.pointRange;e.colorCounter=0;p(this.parallelArrays,function(a){e[a+"Data"].length=0});if(s&&h>s){for(c=0;k===null&&c<h;)k=
225
+ a[c],c++;if(ha(k)){o=m(i.pointStart,0);i=m(i.pointInterval,1);for(c=0;c<h;c++)q[c]=o,r[c]=a[c],o+=i;e.xIncrement=o}else if(La(k))if(v)for(c=0;c<h;c++)i=a[c],q[c]=i[0],r[c]=i.slice(1,v+1);else for(c=0;c<h;c++)i=a[c],q[c]=i[0],r[c]=i[1];else ra(12)}else for(c=0;c<h;c++)if(a[c]!==t&&(i={series:e},e.pointClass.prototype.applyOptions.apply(i,[a[c]]),e.updateParallelArrays(i,c),o&&i.name))l.names[i.x]=i.name;Fa(r[0])&&ra(14,!0);e.data=[];e.options.data=a;for(c=g;c--;)f[c]&&f[c].destroy&&f[c].destroy();
226
+ if(n)n.length=0;if(l)l.minRange=l.userMinRange;e.isDirty=e.isDirtyData=j.isDirtyBox=!0;c=!1}b&&j.redraw(c)},processData:function(a){var b=this.xData,c=this.yData,d=b.length,e;e=0;var f,g,h=this.xAxis,i=this.options,j=i.cropThreshold,k=0,l=this.isCartesian,o,n;if(l&&!this.isDirty&&!h.isDirty&&!this.yAxis.isDirty&&!a)return!1;if(l&&this.sorted&&(!j||d>j||this.forceCrop))if(o=h.min,n=h.max,b[d-1]<o||b[0]>n)b=[],c=[];else if(b[0]<o||b[d-1]>n)e=this.cropData(this.xData,this.yData,o,n),b=e.xData,c=e.yData,
227
+ e=e.start,f=!0,k=b.length;for(d=b.length-1;d>=0;d--)a=b[d]-b[d-1],!f&&b[d]>o&&b[d]<n&&k++,a>0&&(g===t||a<g)?g=a:a<0&&this.requireSorting&&ra(15);this.cropped=f;this.cropStart=e;this.processedXData=b;this.processedYData=c;this.activePointCount=k;if(i.pointRange===null)this.pointRange=g||1;this.closestPointRange=g},cropData:function(a,b,c,d){var e=a.length,f=0,g=e,h=m(this.cropShoulder,1),i;for(i=0;i<e;i++)if(a[i]>=c){f=v(0,i-h);break}for(;i<e;i++)if(a[i]>d){g=i+h;break}return{xData:a.slice(f,g),yData:b.slice(f,
228
+ g),start:f,end:g}},generatePoints:function(){var a=this.options.data,b=this.data,c,d=this.processedXData,e=this.processedYData,f=this.pointClass,g=d.length,h=this.cropStart||0,i,j=this.hasGroupedData,k,l=[],o;if(!b&&!j)b=[],b.length=a.length,b=this.data=b;for(o=0;o<g;o++)i=h+o,j?l[o]=(new f).init(this,[d[o]].concat(qa(e[o]))):(b[i]?k=b[i]:a[i]!==t&&(b[i]=k=(new f).init(this,a[i],d[o])),l[o]=k);if(b&&(g!==(c=b.length)||j))for(o=0;o<c;o++)if(o===h&&!j&&(o+=g),b[o])b[o].destroyElements(),b[o].plotX=
229
+ t;this.data=b;this.points=l},getExtremes:function(a){var b=this.yAxis,c=this.processedXData,d,e=[],f=0;d=this.xAxis.getExtremes();var g=d.min,h=d.max,i,j,k,l,a=a||this.stackedYData||this.processedYData;d=a.length;for(l=0;l<d;l++)if(j=c[l],k=a[l],i=k!==null&&k!==t&&(!b.isLog||k.length||k>0),j=this.getExtremesFromAll||this.cropped||(c[l+1]||j)>=g&&(c[l-1]||j)<=h,i&&j)if(i=k.length)for(;i--;)k[i]!==null&&(e[f++]=k[i]);else e[f++]=k;this.dataMin=m(void 0,Na(e));this.dataMax=m(void 0,Ba(e))},translate:function(){this.processedXData||
230
+ this.processData();this.generatePoints();for(var a=this.options,b=a.stacking,c=this.xAxis,d=c.categories,e=this.yAxis,f=this.points,g=f.length,h=!!this.modifyValue,i=a.pointPlacement,j=i==="between"||ha(i),k=a.threshold,a=0;a<g;a++){var l=f[a],o=l.x,n=l.y,s=l.low,p=b&&e.stacks[(this.negStacks&&n<k?"-":"")+this.stackKey];if(e.isLog&&n<=0)l.y=n=null;l.plotX=c.translate(o,0,0,0,1,i,this.type==="flags");if(b&&this.visible&&p&&p[o])p=p[o],n=p.points[this.index+","+a],s=n[0],n=n[1],s===0&&(s=m(k,e.min)),
231
+ e.isLog&&s<=0&&(s=null),l.total=l.stackTotal=p.total,l.percentage=p.total&&l.y/p.total*100,l.stackY=n,p.setOffset(this.pointXOffset||0,this.barW||0);l.yBottom=r(s)?e.translate(s,0,1,0,1):null;h&&(n=this.modifyValue(n,l));l.plotY=typeof n==="number"&&n!==Infinity?e.translate(n,0,1,0,1):t;l.clientX=j?c.translate(o,0,0,0,1):l.plotX;l.negative=l.y<(k||0);l.category=d&&d[l.x]!==t?d[l.x]:l.x}this.getSegments()},animate:function(a){var b=this.chart,c=b.renderer,d;d=this.options.animation;var e=this.clipBox||
232
+ b.clipBox,f=b.inverted,g;if(d&&!ca(d))d=ba[this.type].animation;g=["_sharedClip",d.duration,d.easing,e.height].join(",");a?(a=b[g],d=b[g+"m"],a||(b[g]=a=c.clipRect(q(e,{width:0})),b[g+"m"]=d=c.clipRect(-99,f?-b.plotLeft:-b.plotTop,99,f?b.chartWidth:b.chartHeight)),this.group.clip(a),this.markerGroup.clip(d),this.sharedClipKey=g):((a=b[g])&&a.animate({width:b.plotSizeX},d),b[g+"m"]&&b[g+"m"].animate({width:b.plotSizeX+99},d),this.animate=null)},afterAnimate:function(){var a=this.chart,b=this.sharedClipKey,
233
+ c=this.group,d=this.clipBox;if(c&&this.options.clip!==!1){if(!b||!d)c.clip(d?a.renderer.clipRect(d):a.clipRect);this.markerGroup.clip()}D(this,"afterAnimate");setTimeout(function(){b&&a[b]&&(d||(a[b]=a[b].destroy()),a[b+"m"]&&(a[b+"m"]=a[b+"m"].destroy()))},100)},drawPoints:function(){var a,b=this.points,c=this.chart,d,e,f,g,h,i,j,k;d=this.options.marker;var l=this.pointAttr[""],o,n=this.markerGroup,s=m(d.enabled,this.activePointCount<0.5*this.xAxis.len/d.radius);if(d.enabled!==!1||this._hasPointMarkers)for(f=
234
+ b.length;f--;)if(g=b[f],d=T(g.plotX),e=g.plotY,k=g.graphic,i=g.marker||{},a=s&&i.enabled===t||i.enabled,o=c.isInsidePlot(u(d),e,c.inverted),a&&e!==t&&!isNaN(e)&&g.y!==null)if(a=g.pointAttr[g.selected?"select":""]||l,h=a.r,i=m(i.symbol,this.symbol),j=i.indexOf("url")===0,k)k[o?"show":"hide"](!0).animate(q({x:d-h,y:e-h},k.symbolName?{width:2*h,height:2*h}:{}));else{if(o&&(h>0||j))g.graphic=c.renderer.symbol(i,d-h,e-h,2*h,2*h).attr(a).add(n)}else if(k)g.graphic=k.destroy()},convertAttribs:function(a,
235
+ b,c,d){var e=this.pointAttrToOptions,f,g,h={},a=a||{},b=b||{},c=c||{},d=d||{};for(f in e)g=e[f],h[f]=m(a[g],b[f],c[f],d[f]);return h},getAttribs:function(){var a=this,b=a.options,c=ba[a.type].marker?b.marker:b,d=c.states,e=d.hover,f,g=a.color;f={stroke:g,fill:g};var h=a.points||[],i,j=[],k,l=a.pointAttrToOptions;k=a.hasPointSpecificOptions;var o=b.negativeColor,n=c.lineColor,s=c.fillColor;i=b.turboThreshold;var m;b.marker?(e.radius=e.radius||c.radius+2,e.lineWidth=e.lineWidth||c.lineWidth+1):e.color=
236
+ e.color||ya(e.color||g).brighten(e.brightness).get();j[""]=a.convertAttribs(c,f);p(["hover","select"],function(b){j[b]=a.convertAttribs(d[b],j[""])});a.pointAttr=j;g=h.length;if(!i||g<i||k)for(;g--;){i=h[g];if((c=i.options&&i.options.marker||i.options)&&c.enabled===!1)c.radius=0;if(i.negative&&o)i.color=i.fillColor=o;k=b.colorByPoint||i.color;if(i.options)for(m in l)r(c[l[m]])&&(k=!0);if(k){c=c||{};k=[];d=c.states||{};f=d.hover=d.hover||{};if(!b.marker)f.color=f.color||!i.options.color&&e.color||
237
+ ya(i.color).brighten(f.brightness||e.brightness).get();f={color:i.color};if(!s)f.fillColor=i.color;if(!n)f.lineColor=i.color;k[""]=a.convertAttribs(q(f,c),j[""]);k.hover=a.convertAttribs(d.hover,j.hover,k[""]);k.select=a.convertAttribs(d.select,j.select,k[""])}else k=j;i.pointAttr=k}},destroy:function(){var a=this,b=a.chart,c=/AppleWebKit\/533/.test(wa),d,e,f=a.data||[],g,h,i;D(a,"destroy");W(a);p(a.axisTypes||[],function(b){if(i=a[b])ja(i.series,a),i.isDirty=i.forceRedraw=!0});a.legendItem&&a.chart.legend.destroyItem(a);
238
+ for(e=f.length;e--;)(g=f[e])&&g.destroy&&g.destroy();a.points=null;clearTimeout(a.animationTimeout);p("area,graph,dataLabelsGroup,group,markerGroup,tracker,graphNeg,areaNeg,posClip,negClip".split(","),function(b){a[b]&&(d=c&&b==="group"?"hide":"destroy",a[b][d]())});if(b.hoverSeries===a)b.hoverSeries=null;ja(b.series,a);for(h in a)delete a[h]},getSegmentPath:function(a){var b=this,c=[],d=b.options.step;p(a,function(e,f){var g=e.plotX,h=e.plotY,i;b.getPointSpline?c.push.apply(c,b.getPointSpline(a,
239
+ e,f)):(c.push(f?"L":"M"),d&&f&&(i=a[f-1],d==="right"?c.push(i.plotX,h):d==="center"?c.push((i.plotX+g)/2,i.plotY,(i.plotX+g)/2,h):c.push(g,i.plotY)),c.push(e.plotX,e.plotY))});return c},getGraphPath:function(){var a=this,b=[],c,d=[];p(a.segments,function(e){c=a.getSegmentPath(e);e.length>1?b=b.concat(c):d.push(e[0])});a.singlePoints=d;return a.graphPath=b},drawGraph:function(){var a=this,b=this.options,c=[["graph",b.lineColor||this.color]],d=b.lineWidth,e=b.dashStyle,f=b.linecap!=="square",g=this.getGraphPath(),
240
+ h=b.negativeColor;h&&c.push(["graphNeg",h]);p(c,function(c,h){var k=c[0],l=a[k];if(l)bb(l),l.animate({d:g});else if(d&&g.length)l={stroke:c[1],"stroke-width":d,fill:Q,zIndex:1},e?l.dashstyle=e:f&&(l["stroke-linecap"]=l["stroke-linejoin"]="round"),a[k]=a.chart.renderer.path(g).attr(l).add(a.group).shadow(!h&&b.shadow)})},clipNeg:function(){var a=this.options,b=this.chart,c=b.renderer,d=a.negativeColor||a.negativeFillColor,e,f=this.graph,g=this.area,h=this.posClip,i=this.negClip;e=b.chartWidth;var j=
241
+ b.chartHeight,k=v(e,j),l=this.yAxis;if(d&&(f||g)){d=u(l.toPixels(a.threshold||0,!0));d<0&&(k-=d);a={x:0,y:0,width:k,height:d};k={x:0,y:d,width:k,height:k};if(b.inverted)a.height=k.y=b.plotWidth-d,c.isVML&&(a={x:b.plotWidth-d-b.plotLeft,y:0,width:e,height:j},k={x:d+b.plotLeft-e,y:0,width:b.plotLeft+d,height:e});l.reversed?(b=k,e=a):(b=a,e=k);h?(h.animate(b),i.animate(e)):(this.posClip=h=c.clipRect(b),this.negClip=i=c.clipRect(e),f&&this.graphNeg&&(f.clip(h),this.graphNeg.clip(i)),g&&(g.clip(h),this.areaNeg.clip(i)))}},
242
+ invertGroups:function(){function a(){var a={width:b.yAxis.len,height:b.xAxis.len};p(["group","markerGroup"],function(c){b[c]&&b[c].attr(a).invert()})}var b=this,c=b.chart;if(b.xAxis)K(c,"resize",a),K(b,"destroy",function(){W(c,"resize",a)}),a(),b.invertGroups=a},plotGroup:function(a,b,c,d,e){var f=this[a],g=!f;g&&(this[a]=f=this.chart.renderer.g(b).attr({visibility:c,zIndex:d||0.1}).add(e));f[g?"attr":"animate"](this.getPlotBox());return f},getPlotBox:function(){var a=this.chart,b=this.xAxis,c=this.yAxis;
243
+ if(a.inverted)b=c,c=this.xAxis;return{translateX:b?b.left:a.plotLeft,translateY:c?c.top:a.plotTop,scaleX:1,scaleY:1}},render:function(){var a=this,b=a.chart,c,d=a.options,e=(c=d.animation)&&!!a.animate&&b.renderer.isSVG&&m(c.duration,500)||0,f=a.visible?"visible":"hidden",g=d.zIndex,h=a.hasRendered,i=b.seriesGroup;c=a.plotGroup("group","series",f,g,i);a.markerGroup=a.plotGroup("markerGroup","markers",f,g,i);e&&a.animate(!0);a.getAttribs();c.inverted=a.isCartesian?b.inverted:!1;a.drawGraph&&(a.drawGraph(),
244
+ a.clipNeg());a.drawDataLabels&&a.drawDataLabels();a.visible&&a.drawPoints();a.drawTracker&&a.options.enableMouseTracking!==!1&&a.drawTracker();b.inverted&&a.invertGroups();d.clip!==!1&&!a.sharedClipKey&&!h&&c.clip(b.clipRect);e&&a.animate();if(!h)e?a.animationTimeout=setTimeout(function(){a.afterAnimate()},e):a.afterAnimate();a.isDirty=a.isDirtyData=!1;a.hasRendered=!0},redraw:function(){var a=this.chart,b=this.isDirtyData,c=this.group,d=this.xAxis,e=this.yAxis;c&&(a.inverted&&c.attr({width:a.plotWidth,
245
+ height:a.plotHeight}),c.animate({translateX:m(d&&d.left,a.plotLeft),translateY:m(e&&e.top,a.plotTop)}));this.translate();this.setTooltipPoints&&this.setTooltipPoints(!0);this.render();b&&D(this,"updatedData")}};Hb.prototype={destroy:function(){Oa(this,this.axis)},render:function(a){var b=this.options,c=b.format,c=c?Ia(c,this):b.formatter.call(this);this.label?this.label.attr({text:c,visibility:"hidden"}):this.label=this.axis.chart.renderer.text(c,null,null,b.useHTML).css(b.style).attr({align:this.textAlign,
246
+ rotation:b.rotation,visibility:"hidden"}).add(a)},setOffset:function(a,b){var c=this.axis,d=c.chart,e=d.inverted,f=this.isNegative,g=c.translate(c.usePercentage?100:this.total,0,0,0,1),c=c.translate(0),c=M(g-c),h=d.xAxis[0].translate(this.x)+a,i=d.plotHeight,f={x:e?f?g:g-c:h,y:e?i-h-b:f?i-g-c:i-g,width:e?c:b,height:e?b:c};if(e=this.label)e.align(this.alignOptions,null,f),f=e.alignAttr,e[this.options.crop===!1||d.isInsidePlot(f.x,f.y)?"show":"hide"](!0)}};la.prototype.buildStacks=function(){var a=
247
+ this.series,b=m(this.options.reversedStacks,!0),c=a.length;if(!this.isXAxis){for(this.usePercentage=!1;c--;)a[b?c:a.length-c-1].setStackedPoints();if(this.usePercentage)for(c=0;c<a.length;c++)a[c].setPercentStacks()}};la.prototype.renderStackTotals=function(){var a=this.chart,b=a.renderer,c=this.stacks,d,e,f=this.stackTotalGroup;if(!f)this.stackTotalGroup=f=b.g("stack-labels").attr({visibility:"visible",zIndex:6}).add();f.translate(a.plotLeft,a.plotTop);for(d in c)for(e in a=c[d],a)a[e].render(f)};
248
+ O.prototype.setStackedPoints=function(){if(this.options.stacking&&!(this.visible!==!0&&this.chart.options.chart.ignoreHiddenSeries!==!1)){var a=this.processedXData,b=this.processedYData,c=[],d=b.length,e=this.options,f=e.threshold,g=e.stack,e=e.stacking,h=this.stackKey,i="-"+h,j=this.negStacks,k=this.yAxis,l=k.stacks,o=k.oldStacks,n,m,p,q,r,u;for(q=0;q<d;q++){r=a[q];u=b[q];p=this.index+","+q;m=(n=j&&u<f)?i:h;l[m]||(l[m]={});if(!l[m][r])o[m]&&o[m][r]?(l[m][r]=o[m][r],l[m][r].total=null):l[m][r]=new Hb(k,
249
+ k.options.stackLabels,n,r,g);m=l[m][r];m.points[p]=[m.cum||0];e==="percent"?(n=n?h:i,j&&l[n]&&l[n][r]?(n=l[n][r],m.total=n.total=v(n.total,m.total)+M(u)||0):m.total=da(m.total+(M(u)||0))):m.total=da(m.total+(u||0));m.cum=(m.cum||0)+(u||0);m.points[p].push(m.cum);c[q]=m.cum}if(e==="percent")k.usePercentage=!0;this.stackedYData=c;k.oldStacks={}}};O.prototype.setPercentStacks=function(){var a=this,b=a.stackKey,c=a.yAxis.stacks,d=a.processedXData;p([b,"-"+b],function(b){var e;for(var f=d.length,g,h;f--;)if(g=
250
+ d[f],e=(h=c[b]&&c[b][g])&&h.points[a.index+","+f],g=e)h=h.total?100/h.total:0,g[0]=da(g[0]*h),g[1]=da(g[1]*h),a.stackedYData[f]=g[1]})};q(Ya.prototype,{addSeries:function(a,b,c){var d,e=this;a&&(b=m(b,!0),D(e,"addSeries",{options:a},function(){d=e.initSeries(a);e.isDirtyLegend=!0;e.linkSeries();b&&e.redraw(c)}));return d},addAxis:function(a,b,c,d){var e=b?"xAxis":"yAxis",f=this.options;new la(this,w(a,{index:this[e].length,isX:b}));f[e]=qa(f[e]||{});f[e].push(a);m(c,!0)&&this.redraw(d)},showLoading:function(a){var b=
251
+ this.options,c=this.loadingDiv,d=b.loading;if(!c)this.loadingDiv=c=Y(Ja,{className:"highcharts-loading"},q(d.style,{zIndex:10,display:Q}),this.container),this.loadingSpan=Y("span",null,d.labelStyle,c);this.loadingSpan.innerHTML=a||b.lang.loading;if(!this.loadingShown)G(c,{opacity:0,display:"",left:this.plotLeft+"px",top:this.plotTop+"px",width:this.plotWidth+"px",height:this.plotHeight+"px"}),kb(c,{opacity:d.style.opacity},{duration:d.showDuration||0}),this.loadingShown=!0},hideLoading:function(){var a=
252
+ this.options,b=this.loadingDiv;b&&kb(b,{opacity:0},{duration:a.loading.hideDuration||100,complete:function(){G(b,{display:Q})}});this.loadingShown=!1}});q(Ea.prototype,{update:function(a,b,c){var d=this,e=d.series,f=d.graphic,g,h=e.data,i=e.chart,j=e.options,b=m(b,!0);d.firePointEvent("update",{options:a},function(){d.applyOptions(a);if(ca(a)){e.getAttribs();if(f)a&&a.marker&&a.marker.symbol?d.graphic=f.destroy():f.attr(d.pointAttr[d.state||""]);if(a&&a.dataLabels&&d.dataLabel)d.dataLabel=d.dataLabel.destroy()}g=
253
+ Da(d,h);e.updateParallelArrays(d,g);j.data[g]=d.options;e.isDirty=e.isDirtyData=!0;if(!e.fixedBox&&e.hasCartesianSeries)i.isDirtyBox=!0;j.legendType==="point"&&i.legend.destroyItem(d);b&&i.redraw(c)})},remove:function(a,b){var c=this,d=c.series,e=d.points,f=d.chart,g,h=d.data;Qa(b,f);a=m(a,!0);c.firePointEvent("remove",null,function(){g=Da(c,h);h.length===e.length&&e.splice(g,1);h.splice(g,1);d.options.data.splice(g,1);d.updateParallelArrays(c,"splice",g,1);c.destroy();d.isDirty=!0;d.isDirtyData=
254
+ !0;a&&f.redraw()})}});q(O.prototype,{addPoint:function(a,b,c,d){var e=this.options,f=this.data,g=this.graph,h=this.area,i=this.chart,j=this.xAxis&&this.xAxis.names,k=g&&g.shift||0,l=e.data,o,n=this.xData;Qa(d,i);c&&p([g,h,this.graphNeg,this.areaNeg],function(a){if(a)a.shift=k+1});if(h)h.isArea=!0;b=m(b,!0);d={series:this};this.pointClass.prototype.applyOptions.apply(d,[a]);g=d.x;h=n.length;if(this.requireSorting&&g<n[h-1])for(o=!0;h&&n[h-1]>g;)h--;this.updateParallelArrays(d,"splice",h,0,0);this.updateParallelArrays(d,
255
+ h);if(j)j[g]=d.name;l.splice(h,0,a);o&&(this.data.splice(h,0,null),this.processData());e.legendType==="point"&&this.generatePoints();c&&(f[0]&&f[0].remove?f[0].remove(!1):(f.shift(),this.updateParallelArrays(d,"shift"),l.shift()));this.isDirtyData=this.isDirty=!0;b&&(this.getAttribs(),i.redraw())},remove:function(a,b){var c=this,d=c.chart,a=m(a,!0);if(!c.isRemoving)c.isRemoving=!0,D(c,"remove",null,function(){c.destroy();d.isDirtyLegend=d.isDirtyBox=!0;d.linkSeries();a&&d.redraw(b)});c.isRemoving=
256
+ !1},update:function(a,b){var c=this.chart,d=this.type,e=F[d].prototype,f,a=w(this.userOptions,{animation:!1,index:this.index,pointStart:this.xData[0]},{data:this.options.data},a);this.remove(!1);for(f in e)e.hasOwnProperty(f)&&(this[f]=t);q(this,F[a.type||d].prototype);this.init(c,a);m(b,!0)&&c.redraw(!1)}});q(la.prototype,{update:function(a,b){var c=this.chart,a=c.options[this.coll][this.options.index]=w(this.userOptions,a);this.destroy(!0);this._addedPlotLB=t;this.init(c,q(a,{events:t}));c.isDirtyBox=
257
+ !0;m(b,!0)&&c.redraw()},remove:function(a){for(var b=this.chart,c=this.coll,d=this.series,e=d.length;e--;)d[e]&&d[e].remove(!1);ja(b.axes,this);ja(b[c],this);b.options[c].splice(this.options.index,1);p(b[c],function(a,b){a.options.index=b});this.destroy();b.isDirtyBox=!0;m(a,!0)&&b.redraw()},setTitle:function(a,b){this.update({title:a},b)},setCategories:function(a,b){this.update({categories:a},b)}});ga=ka(O);F.line=ga;ba.area=w(S,{threshold:0});var pa=ka(O,{type:"area",getSegments:function(){var a=
258
+ [],b=[],c=[],d=this.xAxis,e=this.yAxis,f=e.stacks[this.stackKey],g={},h,i,j=this.points,k=this.options.connectNulls,l,o,n;if(this.options.stacking&&!this.cropped){for(o=0;o<j.length;o++)g[j[o].x]=j[o];for(n in f)f[n].total!==null&&c.push(+n);c.sort(function(a,b){return a-b});p(c,function(a){if(!k||g[a]&&g[a].y!==null)g[a]?b.push(g[a]):(h=d.translate(a),l=f[a].percent?f[a].total?f[a].cum*100/f[a].total:0:f[a].cum,i=e.toPixels(l,!0),b.push({y:null,plotX:h,clientX:h,plotY:i,yBottom:i,onMouseOver:sa}))});
259
+ b.length&&a.push(b)}else O.prototype.getSegments.call(this),a=this.segments;this.segments=a},getSegmentPath:function(a){var b=O.prototype.getSegmentPath.call(this,a),c=[].concat(b),d,e=this.options;d=b.length;var f=this.yAxis.getThreshold(e.threshold),g;d===3&&c.push("L",b[1],b[2]);if(e.stacking&&!this.closedStacks)for(d=a.length-1;d>=0;d--)g=m(a[d].yBottom,f),d<a.length-1&&e.step&&c.push(a[d+1].plotX,g),c.push(a[d].plotX,g);else this.closeSegment(c,a,f);this.areaPath=this.areaPath.concat(c);return b},
260
+ closeSegment:function(a,b,c){a.push("L",b[b.length-1].plotX,c,"L",b[0].plotX,c)},drawGraph:function(){this.areaPath=[];O.prototype.drawGraph.apply(this);var a=this,b=this.areaPath,c=this.options,d=c.negativeColor,e=c.negativeFillColor,f=[["area",this.color,c.fillColor]];(d||e)&&f.push(["areaNeg",d,e]);p(f,function(d){var e=d[0],f=a[e];f?f.animate({d:b}):a[e]=a.chart.renderer.path(b).attr({fill:m(d[2],ya(d[1]).setOpacity(m(c.fillOpacity,0.75)).get()),zIndex:0}).add(a.group)})},drawLegendSymbol:N.drawRectangle});
261
+ F.area=pa;ba.spline=w(S);ga=ka(O,{type:"spline",getPointSpline:function(a,b,c){var d=b.plotX,e=b.plotY,f=a[c-1],g=a[c+1],h,i,j,k;if(f&&g){a=f.plotY;j=g.plotX;var g=g.plotY,l;h=(1.5*d+f.plotX)/2.5;i=(1.5*e+a)/2.5;j=(1.5*d+j)/2.5;k=(1.5*e+g)/2.5;l=(k-i)*(j-d)/(j-h)+e-k;i+=l;k+=l;i>a&&i>e?(i=v(a,e),k=2*e-i):i<a&&i<e&&(i=C(a,e),k=2*e-i);k>g&&k>e?(k=v(g,e),i=2*e-k):k<g&&k<e&&(k=C(g,e),i=2*e-k);b.rightContX=j;b.rightContY=k}c?(b=["C",f.rightContX||f.plotX,f.rightContY||f.plotY,h||d,i||e,d,e],f.rightContX=
262
+ f.rightContY=null):b=["M",d,e];return b}});F.spline=ga;ba.areaspline=w(ba.area);pa=pa.prototype;ga=ka(ga,{type:"areaspline",closedStacks:!0,getSegmentPath:pa.getSegmentPath,closeSegment:pa.closeSegment,drawGraph:pa.drawGraph,drawLegendSymbol:N.drawRectangle});F.areaspline=ga;ba.column=w(S,{borderColor:"#FFFFFF",borderRadius:0,groupPadding:0.2,marker:null,pointPadding:0.1,minPointLength:0,cropThreshold:50,pointRange:null,states:{hover:{brightness:0.1,shadow:!1,halo:!1},select:{color:"#C0C0C0",borderColor:"#000000",
263
+ shadow:!1}},dataLabels:{align:null,verticalAlign:null,y:null},stickyTracking:!1,tooltip:{distance:6},threshold:0});ga=ka(O,{type:"column",pointAttrToOptions:{stroke:"borderColor",fill:"color",r:"borderRadius"},cropShoulder:0,trackerGroups:["group","dataLabelsGroup"],negStacks:!0,init:function(){O.prototype.init.apply(this,arguments);var a=this,b=a.chart;b.hasRendered&&p(b.series,function(b){if(b.type===a.type)b.isDirty=!0})},getColumnMetrics:function(){var a=this,b=a.options,c=a.xAxis,d=a.yAxis,e=
264
+ c.reversed,f,g={},h,i=0;b.grouping===!1?i=1:p(a.chart.series,function(b){var c=b.options,e=b.yAxis;if(b.type===a.type&&b.visible&&d.len===e.len&&d.pos===e.pos)c.stacking?(f=b.stackKey,g[f]===t&&(g[f]=i++),h=g[f]):c.grouping!==!1&&(h=i++),b.columnIndex=h});var c=C(M(c.transA)*(c.ordinalSlope||b.pointRange||c.closestPointRange||c.tickInterval||1),c.len),j=c*b.groupPadding,k=(c-2*j)/i,l=b.pointWidth,b=r(l)?(k-l)/2:k*b.pointPadding,l=m(l,k-2*b);return a.columnMetrics={width:l,offset:b+(j+((e?i-(a.columnIndex||
265
+ 0):a.columnIndex)||0)*k-c/2)*(e?-1:1)}},translate:function(){var a=this,b=a.chart,c=a.options,d=a.borderWidth=m(c.borderWidth,a.activePointCount>0.5*a.xAxis.len?0:1),e=a.yAxis,f=a.translatedThreshold=e.getThreshold(c.threshold),g=m(c.minPointLength,5),c=a.getColumnMetrics(),h=c.width,i=a.barW=Ka(v(h,1+2*d)),j=a.pointXOffset=c.offset,k=-(d%2?0.5:0),l=d%2?0.5:1;b.renderer.isVML&&b.inverted&&(l+=1);O.prototype.translate.apply(a);p(a.points,function(c){var d=m(c.yBottom,f),p=C(v(-999-d,c.plotY),e.len+
266
+ 999+d),q=c.plotX+j,r=i,t=C(p,d),x;x=v(p,d)-t;M(x)<g&&g&&(x=g,t=u(M(t-f)>g?d-g:f-(e.translate(c.y,0,1,0,1)<=f?g:0)));c.barX=q;c.pointWidth=h;c.tooltipPos=b.inverted?[e.len-p,a.xAxis.len-q-r/2]:[q+r/2,p];d=M(q)<0.5;r=u(q+r)+k;q=u(q)+k;r-=q;p=M(t)<0.5;x=u(t+x)+l;t=u(t)+l;x-=t;d&&(q+=1,r-=1);p&&(t-=1,x+=1);c.shapeType="rect";c.shapeArgs={x:q,y:t,width:r,height:x}})},getSymbol:sa,drawLegendSymbol:N.drawRectangle,drawGraph:sa,drawPoints:function(){var a=this,b=this.chart,c=a.options,d=b.renderer,e=c.animationLimit||
267
+ 250,f,g,h;p(a.points,function(i){var j=i.plotY,k=i.graphic;if(j!==t&&!isNaN(j)&&i.y!==null)f=i.shapeArgs,h=r(a.borderWidth)?{"stroke-width":a.borderWidth}:{},g=i.pointAttr[i.selected?"select":""]||a.pointAttr[""],k?(bb(k),k.attr(h)[b.pointCount<e?"animate":"attr"](w(f))):i.graphic=d[i.shapeType](f).attr(g).attr(h).add(a.group).shadow(c.shadow,null,c.stacking&&!c.borderRadius);else if(k)i.graphic=k.destroy()})},animate:function(a){var b=this.yAxis,c=this.options,d=this.chart.inverted,e={};if(aa)a?
268
+ (e.scaleY=0.001,a=C(b.pos+b.len,v(b.pos,b.toPixels(c.threshold))),d?e.translateX=a-b.len:e.translateY=a,this.group.attr(e)):(e.scaleY=1,e[d?"translateX":"translateY"]=b.pos,this.group.animate(e,this.options.animation),this.animate=null)},remove:function(){var a=this,b=a.chart;b.hasRendered&&p(b.series,function(b){if(b.type===a.type)b.isDirty=!0});O.prototype.remove.apply(a,arguments)}});F.column=ga;ba.bar=w(ba.column);pa=ka(ga,{type:"bar",inverted:!0});F.bar=pa;ba.scatter=w(S,{lineWidth:0,tooltip:{headerFormat:'<span style="color:{series.color}">●</span> <span style="font-size: 10px;"> {series.name}</span><br/>',
269
+ pointFormat:"x: <b>{point.x}</b><br/>y: <b>{point.y}</b><br/>"},stickyTracking:!1});pa=ka(O,{type:"scatter",sorted:!1,requireSorting:!1,noSharedTooltip:!0,trackerGroups:["markerGroup"],takeOrdinalPosition:!1,singularTooltips:!0,drawGraph:function(){this.options.lineWidth&&O.prototype.drawGraph.call(this)}});F.scatter=pa;ba.pie=w(S,{borderColor:"#FFFFFF",borderWidth:1,center:[null,null],clip:!1,colorByPoint:!0,dataLabels:{distance:30,enabled:!0,formatter:function(){return this.point.name}},ignoreHiddenPoint:!0,
270
+ legendType:"point",marker:null,size:null,showInLegend:!1,slicedOffset:10,states:{hover:{brightness:0.1,shadow:!1}},stickyTracking:!1,tooltip:{followPointer:!0}});S={type:"pie",isCartesian:!1,pointClass:ka(Ea,{init:function(){Ea.prototype.init.apply(this,arguments);var a=this,b;if(a.y<0)a.y=null;q(a,{visible:a.visible!==!1,name:m(a.name,"Slice")});b=function(b){a.slice(b.type==="select")};K(a,"select",b);K(a,"unselect",b);return a},setVisible:function(a){var b=this,c=b.series,d=c.chart;b.visible=b.options.visible=
271
+ a=a===t?!b.visible:a;c.options.data[Da(b,c.data)]=b.options;p(["graphic","dataLabel","connector","shadowGroup"],function(c){if(b[c])b[c][a?"show":"hide"](!0)});b.legendItem&&d.legend.colorizeItem(b,a);if(!c.isDirty&&c.options.ignoreHiddenPoint)c.isDirty=!0,d.redraw()},slice:function(a,b,c){var d=this.series;Qa(c,d.chart);m(b,!0);this.sliced=this.options.sliced=a=r(a)?a:!this.sliced;d.options.data[Da(this,d.data)]=this.options;a=a?this.slicedTranslation:{translateX:0,translateY:0};this.graphic.animate(a);
272
+ this.shadowGroup&&this.shadowGroup.animate(a)},haloPath:function(a){var b=this.shapeArgs,c=this.series.chart;return this.series.chart.renderer.symbols.arc(c.plotLeft+b.x,c.plotTop+b.y,b.r+a,b.r+a,{innerR:this.shapeArgs.r,start:b.start,end:b.end})}}),requireSorting:!1,noSharedTooltip:!0,trackerGroups:["group","dataLabelsGroup"],axisTypes:[],pointAttrToOptions:{stroke:"borderColor","stroke-width":"borderWidth",fill:"color"},singularTooltips:!0,getColor:sa,animate:function(a){var b=this,c=b.points,d=
273
+ b.startAngleRad;if(!a)p(c,function(a){var c=a.graphic,a=a.shapeArgs;c&&(c.attr({r:b.center[3]/2,start:d,end:d}),c.animate({r:a.r,start:a.start,end:a.end},b.options.animation))}),b.animate=null},setData:function(a,b,c,d){O.prototype.setData.call(this,a,!1,c,d);this.processData();this.generatePoints();m(b,!0)&&this.chart.redraw(c)},generatePoints:function(){var a,b=0,c,d,e,f=this.options.ignoreHiddenPoint;O.prototype.generatePoints.call(this);c=this.points;d=c.length;for(a=0;a<d;a++)e=c[a],b+=f&&!e.visible?
274
+ 0:e.y;this.total=b;for(a=0;a<d;a++)e=c[a],e.percentage=b>0?e.y/b*100:0,e.total=b},translate:function(a){this.generatePoints();var b=0,c=this.options,d=c.slicedOffset,e=d+c.borderWidth,f,g,h,i=c.startAngle||0,j=this.startAngleRad=ma/180*(i-90),i=(this.endAngleRad=ma/180*(m(c.endAngle,i+360)-90))-j,k=this.points,l=c.dataLabels.distance,c=c.ignoreHiddenPoint,o,n=k.length,p;if(!a)this.center=a=this.getCenter();this.getX=function(b,c){h=U.asin(C((b-a[1])/(a[2]/2+l),1));return a[0]+(c?-1:1)*Z(h)*(a[2]/
275
+ 2+l)};for(o=0;o<n;o++){p=k[o];f=j+b*i;if(!c||p.visible)b+=p.percentage/100;g=j+b*i;p.shapeType="arc";p.shapeArgs={x:a[0],y:a[1],r:a[2]/2,innerR:a[3]/2,start:u(f*1E3)/1E3,end:u(g*1E3)/1E3};h=(g+f)/2;h>1.5*ma?h-=2*ma:h<-ma/2&&(h+=2*ma);p.slicedTranslation={translateX:u(Z(h)*d),translateY:u(ea(h)*d)};f=Z(h)*a[2]/2;g=ea(h)*a[2]/2;p.tooltipPos=[a[0]+f*0.7,a[1]+g*0.7];p.half=h<-ma/2||h>ma/2?1:0;p.angle=h;e=C(e,l/2);p.labelPos=[a[0]+f+Z(h)*l,a[1]+g+ea(h)*l,a[0]+f+Z(h)*e,a[1]+g+ea(h)*e,a[0]+f,a[1]+g,l<0?
276
+ "center":p.half?"right":"left",h]}},drawGraph:null,drawPoints:function(){var a=this,b=a.chart.renderer,c,d,e=a.options.shadow,f,g;if(e&&!a.shadowGroup)a.shadowGroup=b.g("shadow").add(a.group);p(a.points,function(h){d=h.graphic;g=h.shapeArgs;f=h.shadowGroup;if(e&&!f)f=h.shadowGroup=b.g("shadow").add(a.shadowGroup);c=h.sliced?h.slicedTranslation:{translateX:0,translateY:0};f&&f.attr(c);d?d.animate(q(g,c)):h.graphic=d=b[h.shapeType](g).setRadialReference(a.center).attr(h.pointAttr[h.selected?"select":
277
+ ""]).attr({"stroke-linejoin":"round"}).attr(c).add(a.group).shadow(e,f);h.visible!==void 0&&h.setVisible(h.visible)})},sortByAngle:function(a,b){a.sort(function(a,d){return a.angle!==void 0&&(d.angle-a.angle)*b})},drawLegendSymbol:N.drawRectangle,getCenter:X.getCenter,getSymbol:sa};S=ka(O,S);F.pie=S;O.prototype.drawDataLabels=function(){var a=this,b=a.options,c=b.cursor,d=b.dataLabels,e=a.points,f,g,h,i;if(d.enabled||a._hasPointLabels)a.dlProcessOptions&&a.dlProcessOptions(d),i=a.plotGroup("dataLabelsGroup",
278
+ "data-labels","hidden",d.zIndex||6),!a.hasRendered&&m(d.defer,!0)&&(i.attr({opacity:0}),K(a,"afterAnimate",function(){a.dataLabelsGroup.show()[b.animation?"animate":"attr"]({opacity:1},{duration:200})})),g=d,p(e,function(b){var e,l=b.dataLabel,o,n,p=b.connector,u=!0;f=b.options&&b.options.dataLabels;e=m(f&&f.enabled,g.enabled);if(l&&!e)b.dataLabel=l.destroy();else if(e){d=w(g,f);e=d.rotation;o=b.getLabelConfig();h=d.format?Ia(d.format,o):d.formatter.call(o,d);d.style.color=m(d.color,d.style.color,
279
+ a.color,"black");if(l)if(r(h))l.attr({text:h}),u=!1;else{if(b.dataLabel=l=l.destroy(),p)b.connector=p.destroy()}else if(r(h)){l={fill:d.backgroundColor,stroke:d.borderColor,"stroke-width":d.borderWidth,r:d.borderRadius||0,rotation:e,padding:d.padding,zIndex:1};for(n in l)l[n]===t&&delete l[n];l=b.dataLabel=a.chart.renderer[e?"text":"label"](h,0,-999,null,null,null,d.useHTML).attr(l).css(q(d.style,c&&{cursor:c})).add(i).shadow(d.shadow)}l&&a.alignDataLabel(b,l,d,null,u)}})};O.prototype.alignDataLabel=
280
+ function(a,b,c,d,e){var f=this.chart,g=f.inverted,h=m(a.plotX,-999),i=m(a.plotY,-999),j=b.getBBox();if(a=this.visible&&(a.series.forceDL||f.isInsidePlot(h,u(i),g)||d&&f.isInsidePlot(h,g?d.x+1:d.y+d.height-1,g)))d=q({x:g?f.plotWidth-i:h,y:u(g?f.plotHeight-h:i),width:0,height:0},d),q(c,{width:j.width,height:j.height}),c.rotation?(g={align:c.align,x:d.x+c.x+d.width/2,y:d.y+c.y+d.height/2},b[e?"attr":"animate"](g)):(b.align(c,null,d),g=b.alignAttr,m(c.overflow,"justify")==="justify"?this.justifyDataLabel(b,
281
+ c,g,j,d,e):m(c.crop,!0)&&(a=f.isInsidePlot(g.x,g.y)&&f.isInsidePlot(g.x+j.width,g.y+j.height)));if(!a)b.attr({y:-999}),b.placed=!1};O.prototype.justifyDataLabel=function(a,b,c,d,e,f){var g=this.chart,h=b.align,i=b.verticalAlign,j,k;j=c.x;if(j<0)h==="right"?b.align="left":b.x=-j,k=!0;j=c.x+d.width;if(j>g.plotWidth)h==="left"?b.align="right":b.x=g.plotWidth-j,k=!0;j=c.y;if(j<0)i==="bottom"?b.verticalAlign="top":b.y=-j,k=!0;j=c.y+d.height;if(j>g.plotHeight)i==="top"?b.verticalAlign="bottom":b.y=g.plotHeight-
282
+ j,k=!0;if(k)a.placed=!f,a.align(b,null,e)};if(F.pie)F.pie.prototype.drawDataLabels=function(){var a=this,b=a.data,c,d=a.chart,e=a.options.dataLabels,f=m(e.connectorPadding,10),g=m(e.connectorWidth,1),h=d.plotWidth,d=d.plotHeight,i,j,k=m(e.softConnector,!0),l=e.distance,o=a.center,n=o[2]/2,q=o[1],r=l>0,t,w,x,y,z=[[],[]],A,C,G,D,B,F=[0,0,0,0],N=function(a,b){return b.y-a.y};if(a.visible&&(e.enabled||a._hasPointLabels)){O.prototype.drawDataLabels.apply(a);p(b,function(a){a.dataLabel&&a.visible&&z[a.half].push(a)});
283
+ for(D=0;!y&&b[D];)y=b[D]&&b[D].dataLabel&&(b[D].dataLabel.getBBox().height||21),D++;for(D=2;D--;){var b=[],K=[],H=z[D],I=H.length,E;a.sortByAngle(H,D-0.5);if(l>0){for(B=q-n-l;B<=q+n+l;B+=y)b.push(B);w=b.length;if(I>w){c=[].concat(H);c.sort(N);for(B=I;B--;)c[B].rank=B;for(B=I;B--;)H[B].rank>=w&&H.splice(B,1);I=H.length}for(B=0;B<I;B++){c=H[B];x=c.labelPos;c=9999;var Q,P;for(P=0;P<w;P++)Q=M(b[P]-x[1]),Q<c&&(c=Q,E=P);if(E<B&&b[B]!==null)E=B;else for(w<I-B+E&&b[B]!==null&&(E=w-I+B);b[E]===null;)E++;K.push({i:E,
284
+ y:b[E]});b[E]=null}K.sort(N)}for(B=0;B<I;B++){c=H[B];x=c.labelPos;t=c.dataLabel;G=c.visible===!1?"hidden":"visible";c=x[1];if(l>0){if(w=K.pop(),E=w.i,C=w.y,c>C&&b[E+1]!==null||c<C&&b[E-1]!==null)C=c}else C=c;A=e.justify?o[0]+(D?-1:1)*(n+l):a.getX(E===0||E===b.length-1?c:C,D);t._attr={visibility:G,align:x[6]};t._pos={x:A+e.x+({left:f,right:-f}[x[6]]||0),y:C+e.y-10};t.connX=A;t.connY=C;if(this.options.size===null)w=t.width,A-w<f?F[3]=v(u(w-A+f),F[3]):A+w>h-f&&(F[1]=v(u(A+w-h+f),F[1])),C-y/2<0?F[0]=
285
+ v(u(-C+y/2),F[0]):C+y/2>d&&(F[2]=v(u(C+y/2-d),F[2]))}}if(Ba(F)===0||this.verifyDataLabelOverflow(F))this.placeDataLabels(),r&&g&&p(this.points,function(b){i=b.connector;x=b.labelPos;if((t=b.dataLabel)&&t._pos)G=t._attr.visibility,A=t.connX,C=t.connY,j=k?["M",A+(x[6]==="left"?5:-5),C,"C",A,C,2*x[2]-x[4],2*x[3]-x[5],x[2],x[3],"L",x[4],x[5]]:["M",A+(x[6]==="left"?5:-5),C,"L",x[2],x[3],"L",x[4],x[5]],i?(i.animate({d:j}),i.attr("visibility",G)):b.connector=i=a.chart.renderer.path(j).attr({"stroke-width":g,
286
+ stroke:e.connectorColor||b.color||"#606060",visibility:G}).add(a.dataLabelsGroup);else if(i)b.connector=i.destroy()})}},F.pie.prototype.placeDataLabels=function(){p(this.points,function(a){var a=a.dataLabel,b;if(a)(b=a._pos)?(a.attr(a._attr),a[a.moved?"animate":"attr"](b),a.moved=!0):a&&a.attr({y:-999})})},F.pie.prototype.alignDataLabel=sa,F.pie.prototype.verifyDataLabelOverflow=function(a){var b=this.center,c=this.options,d=c.center,e=c=c.minSize||80,f;d[0]!==null?e=v(b[2]-v(a[1],a[3]),c):(e=v(b[2]-
287
+ a[1]-a[3],c),b[0]+=(a[3]-a[1])/2);d[1]!==null?e=v(C(e,b[2]-v(a[0],a[2])),c):(e=v(C(e,b[2]-a[0]-a[2]),c),b[1]+=(a[0]-a[2])/2);e<b[2]?(b[2]=e,this.translate(b),p(this.points,function(a){if(a.dataLabel)a.dataLabel._pos=null}),this.drawDataLabels&&this.drawDataLabels()):f=!0;return f};if(F.column)F.column.prototype.alignDataLabel=function(a,b,c,d,e){var f=this.chart,g=f.inverted,h=a.dlBox||a.shapeArgs,i=a.below||a.plotY>m(this.translatedThreshold,f.plotSizeY),j=m(c.inside,!!this.options.stacking);if(h&&
288
+ (d=w(h),g&&(d={x:f.plotWidth-d.y-d.height,y:f.plotHeight-d.x-d.width,width:d.height,height:d.width}),!j))g?(d.x+=i?0:d.width,d.width=0):(d.y+=i?d.height:0,d.height=0);c.align=m(c.align,!g||j?"center":i?"right":"left");c.verticalAlign=m(c.verticalAlign,g||j?"middle":i?"top":"bottom");O.prototype.alignDataLabel.call(this,a,b,c,d,e)};S=R.TrackerMixin={drawTrackerPoint:function(){var a=this,b=a.chart,c=b.pointer,d=a.options.cursor,e=d&&{cursor:d},f=function(c){var d=c.target,e;if(b.hoverSeries!==a)a.onMouseOver();
289
+ for(;d&&!e;)e=d.point,d=d.parentNode;if(e!==t&&e!==b.hoverPoint)e.onMouseOver(c)};p(a.points,function(a){if(a.graphic)a.graphic.element.point=a;if(a.dataLabel)a.dataLabel.element.point=a});if(!a._hasTracking)p(a.trackerGroups,function(b){if(a[b]&&(a[b].addClass("highcharts-tracker").on("mouseover",f).on("mouseout",function(a){c.onTrackerMouseOut(a)}).css(e),$a))a[b].on("touchstart",f)}),a._hasTracking=!0},drawTrackerGraph:function(){var a=this,b=a.options,c=b.trackByArea,d=[].concat(c?a.areaPath:
290
+ a.graphPath),e=d.length,f=a.chart,g=f.pointer,h=f.renderer,i=f.options.tooltip.snap,j=a.tracker,k=b.cursor,l=k&&{cursor:k},k=a.singlePoints,m,n=function(){if(f.hoverSeries!==a)a.onMouseOver()},q="rgba(192,192,192,"+(aa?1.0E-4:0.002)+")";if(e&&!c)for(m=e+1;m--;)d[m]==="M"&&d.splice(m+1,0,d[m+1]-i,d[m+2],"L"),(m&&d[m]==="M"||m===e)&&d.splice(m,0,"L",d[m-2]+i,d[m-1]);for(m=0;m<k.length;m++)e=k[m],d.push("M",e.plotX-i,e.plotY,"L",e.plotX+i,e.plotY);j?j.attr({d:d}):(a.tracker=h.path(d).attr({"stroke-linejoin":"round",
291
+ visibility:a.visible?"visible":"hidden",stroke:q,fill:c?q:Q,"stroke-width":b.lineWidth+(c?0:2*i),zIndex:2}).add(a.group),p([a.tracker,a.markerGroup],function(a){a.addClass("highcharts-tracker").on("mouseover",n).on("mouseout",function(a){g.onTrackerMouseOut(a)}).css(l);if($a)a.on("touchstart",n)}))}};if(F.column)ga.prototype.drawTracker=S.drawTrackerPoint;if(F.pie)F.pie.prototype.drawTracker=S.drawTrackerPoint;if(F.scatter)pa.prototype.drawTracker=S.drawTrackerPoint;q(lb.prototype,{setItemEvents:function(a,
292
+ b,c,d,e){var f=this;(c?b:a.legendGroup).on("mouseover",function(){a.setState("hover");b.css(f.options.itemHoverStyle)}).on("mouseout",function(){b.css(a.visible?d:e);a.setState()}).on("click",function(b){var c=function(){a.setVisible()},b={browserEvent:b};a.firePointEvent?a.firePointEvent("legendItemClick",b,c):D(a,"legendItemClick",b,c)})},createCheckboxForItem:function(a){a.checkbox=Y("input",{type:"checkbox",checked:a.selected,defaultChecked:a.selected},this.options.itemCheckboxStyle,this.chart.container);
293
+ K(a.checkbox,"click",function(b){D(a,"checkboxClick",{checked:b.target.checked},function(){a.select()})})}});E.legend.itemStyle.cursor="pointer";q(Ya.prototype,{showResetZoom:function(){var a=this,b=E.lang,c=a.options.chart.resetZoomButton,d=c.theme,e=d.states,f=c.relativeTo==="chart"?null:"plotBox";this.resetZoomButton=a.renderer.button(b.resetZoom,null,null,function(){a.zoomOut()},d,e&&e.hover).attr({align:c.position.align,title:b.resetZoomTitle}).add().align(c.position,!1,f)},zoomOut:function(){var a=
294
+ this;D(a,"selection",{resetSelection:!0},function(){a.zoom()})},zoom:function(a){var b,c=this.pointer,d=!1,e;!a||a.resetSelection?p(this.axes,function(a){b=a.zoom()}):p(a.xAxis.concat(a.yAxis),function(a){var e=a.axis,h=e.isXAxis;if(c[h?"zoomX":"zoomY"]||c[h?"pinchX":"pinchY"])b=e.zoom(a.min,a.max),e.displayBtn&&(d=!0)});e=this.resetZoomButton;if(d&&!e)this.showResetZoom();else if(!d&&ca(e))this.resetZoomButton=e.destroy();b&&this.redraw(m(this.options.chart.animation,a&&a.animation,this.pointCount<
295
+ 100))},pan:function(a,b){var c=this,d=c.hoverPoints,e;d&&p(d,function(a){a.setState()});p(b==="xy"?[1,0]:[1],function(b){var d=a[b?"chartX":"chartY"],h=c[b?"xAxis":"yAxis"][0],i=c[b?"mouseDownX":"mouseDownY"],j=(h.pointRange||0)/2,k=h.getExtremes(),l=h.toValue(i-d,!0)+j,i=h.toValue(i+c[b?"plotWidth":"plotHeight"]-d,!0)-j;h.series.length&&l>C(k.dataMin,k.min)&&i<v(k.dataMax,k.max)&&(h.setExtremes(l,i,!1,!1,{trigger:"pan"}),e=!0);c[b?"mouseDownX":"mouseDownY"]=d});e&&c.redraw(!1);G(c.container,{cursor:"move"})}});
296
+ q(Ea.prototype,{select:function(a,b){var c=this,d=c.series,e=d.chart,a=m(a,!c.selected);c.firePointEvent(a?"select":"unselect",{accumulate:b},function(){c.selected=c.options.selected=a;d.options.data[Da(c,d.data)]=c.options;c.setState(a&&"select");b||p(e.getSelectedPoints(),function(a){if(a.selected&&a!==c)a.selected=a.options.selected=!1,d.options.data[Da(a,d.data)]=a.options,a.setState(""),a.firePointEvent("unselect")})})},onMouseOver:function(a){var b=this.series,c=b.chart,d=c.tooltip,e=c.hoverPoint;
297
+ if(e&&e!==this)e.onMouseOut();this.firePointEvent("mouseOver");d&&(!d.shared||b.noSharedTooltip)&&d.refresh(this,a);this.setState("hover");c.hoverPoint=this},onMouseOut:function(){var a=this.series.chart,b=a.hoverPoints;if(!b||Da(this,b)===-1)this.firePointEvent("mouseOut"),this.setState(),a.hoverPoint=null},importEvents:function(){if(!this.hasImportedEvents){var a=w(this.series.options.point,this.options).events,b;this.events=a;for(b in a)K(this,b,a[b]);this.hasImportedEvents=!0}},setState:function(a,
298
+ b){var c=this.plotX,d=this.plotY,e=this.series,f=e.options.states,g=ba[e.type].marker&&e.options.marker,h=g&&!g.enabled,i=g&&g.states[a],j=i&&i.enabled===!1,k=e.stateMarkerGraphic,l=this.marker||{},m=e.chart,n=e.halo,p,a=a||"";p=this.pointAttr[a]||e.pointAttr[a];if(!(a===this.state&&!b||this.selected&&a!=="select"||f[a]&&f[a].enabled===!1||a&&(j||h&&i.enabled===!1)||a&&l.states&&l.states[a]&&l.states[a].enabled===!1)){if(this.graphic)g=g&&this.graphic.symbolName&&p.r,this.graphic.attr(w(p,g?{x:c-
299
+ g,y:d-g,width:2*g,height:2*g}:{})),k&&k.hide();else{if(a&&i)if(g=i.radius,l=l.symbol||e.symbol,k&&k.currentSymbol!==l&&(k=k.destroy()),k)k[b?"animate":"attr"]({x:c-g,y:d-g});else if(l)e.stateMarkerGraphic=k=m.renderer.symbol(l,c-g,d-g,2*g,2*g).attr(p).add(e.markerGroup),k.currentSymbol=l;if(k)k[a&&m.isInsidePlot(c,d,m.inverted)?"show":"hide"]()}if((c=f[a]&&f[a].halo)&&c.size){if(!n)e.halo=n=m.renderer.path().add(e.seriesGroup);n.attr(q({fill:ya(this.color||e.color).setOpacity(c.opacity).get()},c.attributes))[b?
300
+ "animate":"attr"]({d:this.haloPath(c.size)})}else n&&n.attr({d:[]});this.state=a}},haloPath:function(a){var b=this.series,c=b.chart,d=b.getPlotBox(),e=c.inverted;return c.renderer.symbols.circle(d.translateX+(e?b.yAxis.len-this.plotY:this.plotX)-a,d.translateY+(e?b.xAxis.len-this.plotX:this.plotY)-a,a*2,a*2)}});q(O.prototype,{onMouseOver:function(){var a=this.chart,b=a.hoverSeries;if(b&&b!==this)b.onMouseOut();this.options.events.mouseOver&&D(this,"mouseOver");this.setState("hover");a.hoverSeries=
301
+ this},onMouseOut:function(){var a=this.options,b=this.chart,c=b.tooltip,d=b.hoverPoint;if(d)d.onMouseOut();this&&a.events.mouseOut&&D(this,"mouseOut");c&&!a.stickyTracking&&(!c.shared||this.noSharedTooltip)&&c.hide();this.setState();b.hoverSeries=null},setState:function(a){var b=this.options,c=this.graph,d=this.graphNeg,e=b.states,b=b.lineWidth,a=a||"";if(this.state!==a)this.state=a,e[a]&&e[a].enabled===!1||(a&&(b=e[a].lineWidth||b+1),c&&!c.dashstyle&&(a={"stroke-width":b},c.attr(a),d&&d.attr(a)))},
302
+ setVisible:function(a,b){var c=this,d=c.chart,e=c.legendItem,f,g=d.options.chart.ignoreHiddenSeries,h=c.visible;f=(c.visible=a=c.userOptions.visible=a===t?!h:a)?"show":"hide";p(["group","dataLabelsGroup","markerGroup","tracker"],function(a){if(c[a])c[a][f]()});if(d.hoverSeries===c)c.onMouseOut();e&&d.legend.colorizeItem(c,a);c.isDirty=!0;c.options.stacking&&p(d.series,function(a){if(a.options.stacking&&a.visible)a.isDirty=!0});p(c.linkedSeries,function(b){b.setVisible(a,!1)});if(g)d.isDirtyBox=!0;
303
+ b!==!1&&d.redraw();D(c,f)},setTooltipPoints:function(a){var b=[],c,d,e=this.xAxis,f=e&&e.getExtremes(),g=e?e.tooltipLen||e.len:this.chart.plotSizeX,h,i,j=[];if(!(this.options.enableMouseTracking===!1||this.singularTooltips)){if(a)this.tooltipPoints=null;p(this.segments||this.points,function(a){b=b.concat(a)});e&&e.reversed&&(b=b.reverse());this.orderTooltipPoints&&this.orderTooltipPoints(b);a=b.length;for(i=0;i<a;i++)if(e=b[i],c=e.x,c>=f.min&&c<=f.max){h=b[i+1];c=d===t?0:d+1;for(d=b[i+1]?C(v(0,T((e.clientX+
304
+ (h?h.wrappedClientX||h.clientX:g))/2)),g):g;c>=0&&c<=d;)j[c++]=e}this.tooltipPoints=j}},show:function(){this.setVisible(!0)},hide:function(){this.setVisible(!1)},select:function(a){this.selected=a=a===t?!this.selected:a;if(this.checkbox)this.checkbox.checked=a;D(this,a?"select":"unselect")},drawTracker:S.drawTrackerGraph});q(R,{Axis:la,Chart:Ya,Color:ya,Point:Ea,Tick:Sa,Renderer:Za,Series:O,SVGElement:P,SVGRenderer:ta,arrayMin:Na,arrayMax:Ba,charts:V,dateFormat:cb,format:Ia,pathAnim:ub,getOptions:function(){return E},
305
+ hasBidiBug:Nb,isTouchDevice:Jb,numberFormat:Ga,seriesTypes:F,setOptions:function(a){E=w(!0,E,a);Cb();return E},addEvent:K,removeEvent:W,createElement:Y,discardElement:Pa,css:G,each:p,extend:q,map:Ua,merge:w,pick:m,splat:qa,extendClass:ka,pInt:z,wrap:Ma,svg:aa,canvas:fa,vml:!aa&&!fa,product:"Highcharts",version:"4.0.1"})})();
js/jquery.fileupload.js CHANGED
@@ -188,7 +188,7 @@
188
  return false;
189
  }
190
  if (data.autoUpload || (data.autoUpload !== false &&
191
- $(this).fileupload('option', 'autoUpload'))) {
192
  data.process().done(function () {
193
  data.submit();
194
  });
@@ -288,7 +288,7 @@
288
  _isXHRUpload: function (options) {
289
  return !options.forceIframeTransport &&
290
  ((!options.multipart && $.support.xhrFileUpload) ||
291
- $.support.xhrFormDataFileUpload);
292
  },
293
 
294
  _getFormData: function (options) {
@@ -348,8 +348,8 @@
348
  var now = ((Date.now) ? Date.now() : (new Date()).getTime()),
349
  loaded;
350
  if (data._time && data.progressInterval &&
351
- (now - data._time < data.progressInterval) &&
352
- e.loaded !== e.total) {
353
  return;
354
  }
355
  data._time = now;
@@ -417,7 +417,7 @@
417
  var that = this,
418
  formData,
419
  file = options.files[0],
420
- // Ignore non-multipart setting if not supported:
421
  multipart = options.multipart || !$.support.xhrFileUpload,
422
  paramName = options.paramName[0];
423
  options.headers = $.extend({}, options.headers);
@@ -467,7 +467,7 @@
467
  // This check allows the tests to run with
468
  // dummy objects:
469
  if (that._isInstanceOf('File', file) ||
470
- that._isInstanceOf('Blob', file)) {
471
  formData.append(
472
  options.paramName[index] || paramName,
473
  file,
@@ -560,7 +560,7 @@
560
  options.form.prop('method')) || ''
561
  ).toUpperCase();
562
  if (options.type !== 'POST' && options.type !== 'PUT' &&
563
- options.type !== 'PATCH') {
564
  options.type = 'POST';
565
  }
566
  if (!options.formAcceptCharset) {
@@ -701,7 +701,7 @@
701
  jqXHR,
702
  upload;
703
  if (!(this._isXHRUpload(options) && slice && (ub || mcs < fs)) ||
704
- options.data) {
705
  return false;
706
  }
707
  if (testOnly) {
@@ -737,7 +737,7 @@
737
  // Add progress listeners for this chunk upload:
738
  that._initProgressListener(o);
739
  jqXHR = ((that._trigger('chunksend', null, o) !== false && $.ajax(o)) ||
740
- that._getXHRPromise(false, o.context))
741
  .done(function (result, textStatus, jqXHR) {
742
  ub = that._getUploadedBytes(jqXHR) ||
743
  (ub + o.chunkSize);
@@ -872,45 +872,45 @@
872
  $.Event('send', {delegatedEvent: e}),
873
  options
874
  ) === false) &&
875
- that._getXHRPromise(false, options.context, aborted)) ||
876
- that._chunkedUpload(options) || $.ajax(options)
877
- ).done(function (result, textStatus, jqXHR) {
878
- that._onDone(result, textStatus, jqXHR, options);
879
- }).fail(function (jqXHR, textStatus, errorThrown) {
880
- that._onFail(jqXHR, textStatus, errorThrown, options);
881
- }).always(function (jqXHRorResult, textStatus, jqXHRorError) {
882
- that._onAlways(
883
- jqXHRorResult,
884
- textStatus,
885
- jqXHRorError,
886
- options
887
- );
888
- that._sending -= 1;
889
- that._active -= 1;
890
- if (options.limitConcurrentUploads &&
891
  options.limitConcurrentUploads > that._sending) {
892
- // Start the next queued upload,
893
- // that has not been aborted:
894
- var nextSlot = that._slots.shift();
895
- while (nextSlot) {
896
- if (that._getDeferredState(nextSlot) === 'pending') {
897
- nextSlot.resolve();
898
- break;
899
- }
900
- nextSlot = that._slots.shift();
901
  }
 
902
  }
903
- if (that._active === 0) {
904
- // The stop callback is triggered when all uploads have
905
- // been completed, equivalent to the global ajaxStop event:
906
- that._trigger('stop');
907
- }
908
- });
 
909
  return jqXHR;
910
  };
911
  this._beforeSend(e, options);
912
  if (this.options.sequentialUploads ||
913
- (this.options.limitConcurrentUploads &&
914
  this.options.limitConcurrentUploads <= this._sending)) {
915
  if (this.options.limitConcurrentUploads > 1) {
916
  slot = $.Deferred();
@@ -957,7 +957,8 @@
957
  if (limitSize && (!filesLength || files[0].size === undefined)) {
958
  limitSize = undefined;
959
  }
960
- if (!(options.singleFileUploads || limit || limitSize) || !this._isXHRUpload(options)) {
 
961
  fileSet = [files];
962
  paramNameSet = [paramName];
963
  } else if (!(options.singleFileUploads || limitSize) && limit) {
@@ -977,7 +978,7 @@
977
  for (i = 0; i < filesLength; i = i + 1) {
978
  batchSize += files[i].size + overhead;
979
  if (i + 1 === filesLength ||
980
- (batchSize + files[i + 1].size + overhead) >
981
  limitSize) {
982
  fileSet.push(files.slice(j, i + 1));
983
  paramNameSlice = paramName.slice(j, i + 1);
@@ -1064,11 +1065,11 @@
1064
  dirReader = entry.createReader();
1065
  dirReader.readEntries(function (entries) {
1066
  that._handleFileTreeEntries(
1067
- entries,
1068
- path + entry.name + '/'
1069
- ).done(function (files) {
1070
- dfd.resolve(files);
1071
- }).fail(errorHandler);
1072
  }, errorHandler);
1073
  } else {
1074
  // Return an empy list for file system items
@@ -1081,23 +1082,23 @@
1081
  _handleFileTreeEntries: function (entries, path) {
1082
  var that = this;
1083
  return $.when.apply(
1084
- $,
1085
- $.map(entries, function (entry) {
1086
- return that._handleFileTreeEntry(entry, path);
1087
- })
1088
- ).pipe(function () {
1089
- return Array.prototype.concat.apply(
1090
- [],
1091
- arguments
1092
- );
1093
- });
1094
  },
1095
 
1096
  _getDroppedFiles: function (dataTransfer) {
1097
  dataTransfer = dataTransfer || {};
1098
  var items = dataTransfer.items;
1099
  if (items && items.length && (items[0].webkitGetAsEntry ||
1100
- items[0].getAsEntry)) {
1101
  return this._handleFileTreeEntries(
1102
  $.map(items, function (item) {
1103
  var entry;
@@ -1136,9 +1137,7 @@
1136
  // If the files property is not available, the browser does not
1137
  // support the File API and we add a pseudo File object with
1138
  // the input value as name with path information removed:
1139
- files = [
1140
- {name: value.replace(/^.*\\/, '')}
1141
- ];
1142
  } else if (files[0].name === undefined && files[0].fileName) {
1143
  // File normalization for Safari 4 and Firefox 3:
1144
  $.each(files, function (index, file) {
@@ -1154,14 +1153,14 @@
1154
  return this._getSingleFileInputFiles(fileInput);
1155
  }
1156
  return $.when.apply(
1157
- $,
1158
- $.map(fileInput, this._getSingleFileInputFiles)
1159
- ).pipe(function () {
1160
- return Array.prototype.concat.apply(
1161
- [],
1162
- arguments
1163
- );
1164
- });
1165
  },
1166
 
1167
  _onChange: function (e) {
@@ -1176,10 +1175,10 @@
1176
  that._replaceFileInput(data.fileInput);
1177
  }
1178
  if (that._trigger(
1179
- 'change',
1180
- $.Event('change', {delegatedEvent: e}),
1181
- data
1182
- ) !== false) {
1183
  that._onAdd(e, data);
1184
  }
1185
  });
@@ -1197,10 +1196,10 @@
1197
  }
1198
  });
1199
  if (this._trigger(
1200
- 'paste',
1201
- $.Event('paste', {delegatedEvent: e}),
1202
- data
1203
- ) !== false) {
1204
  this._onAdd(e, data);
1205
  }
1206
  }
@@ -1216,10 +1215,10 @@
1216
  this._getDroppedFiles(dataTransfer).always(function (files) {
1217
  data.files = files;
1218
  if (that._trigger(
1219
- 'drop',
1220
- $.Event('drop', {delegatedEvent: e}),
1221
- data
1222
- ) !== false) {
1223
  that._onAdd(e, data);
1224
  }
1225
  });
@@ -1230,10 +1229,10 @@
1230
  e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer;
1231
  var dataTransfer = e.dataTransfer;
1232
  if (dataTransfer && $.inArray('Files', dataTransfer.types) !== -1 &&
1233
- this._trigger(
1234
- 'dragover',
1235
- $.Event('dragover', {delegatedEvent: e})
1236
- ) !== false) {
1237
  e.preventDefault();
1238
  dataTransfer.dropEffect = 'copy';
1239
  }
@@ -1278,7 +1277,7 @@
1278
  var options = this.options;
1279
  if (options.fileInput === undefined) {
1280
  options.fileInput = this.element.is('input[type="file"]') ?
1281
- this.element : this.element.find('input[type="file"]');
1282
  } else if (!(options.fileInput instanceof $)) {
1283
  options.fileInput = $(options.fileInput);
1284
  }
188
  return false;
189
  }
190
  if (data.autoUpload || (data.autoUpload !== false &&
191
+ $(this).fileupload('option', 'autoUpload'))) {
192
  data.process().done(function () {
193
  data.submit();
194
  });
288
  _isXHRUpload: function (options) {
289
  return !options.forceIframeTransport &&
290
  ((!options.multipart && $.support.xhrFileUpload) ||
291
+ $.support.xhrFormDataFileUpload);
292
  },
293
 
294
  _getFormData: function (options) {
348
  var now = ((Date.now) ? Date.now() : (new Date()).getTime()),
349
  loaded;
350
  if (data._time && data.progressInterval &&
351
+ (now - data._time < data.progressInterval) &&
352
+ e.loaded !== e.total) {
353
  return;
354
  }
355
  data._time = now;
417
  var that = this,
418
  formData,
419
  file = options.files[0],
420
+ // Ignore non-multipart setting if not supported:
421
  multipart = options.multipart || !$.support.xhrFileUpload,
422
  paramName = options.paramName[0];
423
  options.headers = $.extend({}, options.headers);
467
  // This check allows the tests to run with
468
  // dummy objects:
469
  if (that._isInstanceOf('File', file) ||
470
+ that._isInstanceOf('Blob', file)) {
471
  formData.append(
472
  options.paramName[index] || paramName,
473
  file,
560
  options.form.prop('method')) || ''
561
  ).toUpperCase();
562
  if (options.type !== 'POST' && options.type !== 'PUT' &&
563
+ options.type !== 'PATCH') {
564
  options.type = 'POST';
565
  }
566
  if (!options.formAcceptCharset) {
701
  jqXHR,
702
  upload;
703
  if (!(this._isXHRUpload(options) && slice && (ub || mcs < fs)) ||
704
+ options.data) {
705
  return false;
706
  }
707
  if (testOnly) {
737
  // Add progress listeners for this chunk upload:
738
  that._initProgressListener(o);
739
  jqXHR = ((that._trigger('chunksend', null, o) !== false && $.ajax(o)) ||
740
+ that._getXHRPromise(false, o.context))
741
  .done(function (result, textStatus, jqXHR) {
742
  ub = that._getUploadedBytes(jqXHR) ||
743
  (ub + o.chunkSize);
872
  $.Event('send', {delegatedEvent: e}),
873
  options
874
  ) === false) &&
875
+ that._getXHRPromise(false, options.context, aborted)) ||
876
+ that._chunkedUpload(options) || $.ajax(options)
877
+ ).done(function (result, textStatus, jqXHR) {
878
+ that._onDone(result, textStatus, jqXHR, options);
879
+ }).fail(function (jqXHR, textStatus, errorThrown) {
880
+ that._onFail(jqXHR, textStatus, errorThrown, options);
881
+ }).always(function (jqXHRorResult, textStatus, jqXHRorError) {
882
+ that._onAlways(
883
+ jqXHRorResult,
884
+ textStatus,
885
+ jqXHRorError,
886
+ options
887
+ );
888
+ that._sending -= 1;
889
+ that._active -= 1;
890
+ if (options.limitConcurrentUploads &&
891
  options.limitConcurrentUploads > that._sending) {
892
+ // Start the next queued upload,
893
+ // that has not been aborted:
894
+ var nextSlot = that._slots.shift();
895
+ while (nextSlot) {
896
+ if (that._getDeferredState(nextSlot) === 'pending') {
897
+ nextSlot.resolve();
898
+ break;
 
 
899
  }
900
+ nextSlot = that._slots.shift();
901
  }
902
+ }
903
+ if (that._active === 0) {
904
+ // The stop callback is triggered when all uploads have
905
+ // been completed, equivalent to the global ajaxStop event:
906
+ that._trigger('stop');
907
+ }
908
+ });
909
  return jqXHR;
910
  };
911
  this._beforeSend(e, options);
912
  if (this.options.sequentialUploads ||
913
+ (this.options.limitConcurrentUploads &&
914
  this.options.limitConcurrentUploads <= this._sending)) {
915
  if (this.options.limitConcurrentUploads > 1) {
916
  slot = $.Deferred();
957
  if (limitSize && (!filesLength || files[0].size === undefined)) {
958
  limitSize = undefined;
959
  }
960
+ if (!(options.singleFileUploads || limit || limitSize) ||
961
+ !this._isXHRUpload(options)) {
962
  fileSet = [files];
963
  paramNameSet = [paramName];
964
  } else if (!(options.singleFileUploads || limitSize) && limit) {
978
  for (i = 0; i < filesLength; i = i + 1) {
979
  batchSize += files[i].size + overhead;
980
  if (i + 1 === filesLength ||
981
+ (batchSize + files[i + 1].size + overhead) >
982
  limitSize) {
983
  fileSet.push(files.slice(j, i + 1));
984
  paramNameSlice = paramName.slice(j, i + 1);
1065
  dirReader = entry.createReader();
1066
  dirReader.readEntries(function (entries) {
1067
  that._handleFileTreeEntries(
1068
+ entries,
1069
+ path + entry.name + '/'
1070
+ ).done(function (files) {
1071
+ dfd.resolve(files);
1072
+ }).fail(errorHandler);
1073
  }, errorHandler);
1074
  } else {
1075
  // Return an empy list for file system items
1082
  _handleFileTreeEntries: function (entries, path) {
1083
  var that = this;
1084
  return $.when.apply(
1085
+ $,
1086
+ $.map(entries, function (entry) {
1087
+ return that._handleFileTreeEntry(entry, path);
1088
+ })
1089
+ ).pipe(function () {
1090
+ return Array.prototype.concat.apply(
1091
+ [],
1092
+ arguments
1093
+ );
1094
+ });
1095
  },
1096
 
1097
  _getDroppedFiles: function (dataTransfer) {
1098
  dataTransfer = dataTransfer || {};
1099
  var items = dataTransfer.items;
1100
  if (items && items.length && (items[0].webkitGetAsEntry ||
1101
+ items[0].getAsEntry)) {
1102
  return this._handleFileTreeEntries(
1103
  $.map(items, function (item) {
1104
  var entry;
1137
  // If the files property is not available, the browser does not
1138
  // support the File API and we add a pseudo File object with
1139
  // the input value as name with path information removed:
1140
+ files = [{name: value.replace(/^.*\\/, '')}];
 
 
1141
  } else if (files[0].name === undefined && files[0].fileName) {
1142
  // File normalization for Safari 4 and Firefox 3:
1143
  $.each(files, function (index, file) {
1153
  return this._getSingleFileInputFiles(fileInput);
1154
  }
1155
  return $.when.apply(
1156
+ $,
1157
+ $.map(fileInput, this._getSingleFileInputFiles)
1158
+ ).pipe(function () {
1159
+ return Array.prototype.concat.apply(
1160
+ [],
1161
+ arguments
1162
+ );
1163
+ });
1164
  },
1165
 
1166
  _onChange: function (e) {
1175
  that._replaceFileInput(data.fileInput);
1176
  }
1177
  if (that._trigger(
1178
+ 'change',
1179
+ $.Event('change', {delegatedEvent: e}),
1180
+ data
1181
+ ) !== false) {
1182
  that._onAdd(e, data);
1183
  }
1184
  });
1196
  }
1197
  });
1198
  if (this._trigger(
1199
+ 'paste',
1200
+ $.Event('paste', {delegatedEvent: e}),
1201
+ data
1202
+ ) !== false) {
1203
  this._onAdd(e, data);
1204
  }
1205
  }
1215
  this._getDroppedFiles(dataTransfer).always(function (files) {
1216
  data.files = files;
1217
  if (that._trigger(
1218
+ 'drop',
1219
+ $.Event('drop', {delegatedEvent: e}),
1220
+ data
1221
+ ) !== false) {
1222
  that._onAdd(e, data);
1223
  }
1224
  });
1229
  e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer;
1230
  var dataTransfer = e.dataTransfer;
1231
  if (dataTransfer && $.inArray('Files', dataTransfer.types) !== -1 &&
1232
+ this._trigger(
1233
+ 'dragover',
1234
+ $.Event('dragover', {delegatedEvent: e})
1235
+ ) !== false) {
1236
  e.preventDefault();
1237
  dataTransfer.dropEffect = 'copy';
1238
  }
1277
  var options = this.options;
1278
  if (options.fileInput === undefined) {
1279
  options.fileInput = this.element.is('input[type="file"]') ?
1280
+ this.element : this.element.find('input[type="file"]');
1281
  } else if (!(options.fileInput instanceof $)) {
1282
  options.fileInput = $(options.fileInput);
1283
  }
js/jquery.js CHANGED
@@ -11,9466 +11,9447 @@
11
  *
12
  * Date: Tue Nov 13 2012 08:20:33 GMT-0500 (Eastern Standard Time)
13
  */
14
- (function (window, undefined) {
15
- var
16
- // A central reference to the root jQuery(document)
17
- rootjQuery,
18
-
19
- // The deferred used on DOM ready
20
- readyList,
21
-
22
- // Use the correct document accordingly with window argument (sandbox)
23
- document = window.document,
24
- location = window.location,
25
- navigator = window.navigator,
26
-
27
- // Map over jQuery in case of overwrite
28
- _jQuery = window.jQuery,
29
-
30
- // Map over the $ in case of overwrite
31
- _$ = window.$,
32
-
33
- // Save a reference to some core methods
34
- core_push = Array.prototype.push,
35
- core_slice = Array.prototype.slice,
36
- core_indexOf = Array.prototype.indexOf,
37
- core_toString = Object.prototype.toString,
38
- core_hasOwn = Object.prototype.hasOwnProperty,
39
- core_trim = String.prototype.trim,
40
-
41
- // Define a local copy of jQuery
42
- jQuery = function (selector, context) {
43
- // The jQuery object is actually just the init constructor 'enhanced'
44
- return new jQuery.fn.init(selector, context, rootjQuery);
45
- },
46
-
47
- // Used for matching numbers
48
- core_pnum = /[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,
49
-
50
- // Used for detecting and trimming whitespace
51
- core_rnotwhite = /\S/,
52
- core_rspace = /\s+/,
53
-
54
- // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)
55
- rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
56
-
57
- // A simple way to check for HTML strings
58
- // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
59
- rquickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
60
-
61
- // Match a standalone tag
62
- rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
63
-
64
- // JSON RegExp
65
- rvalidchars = /^[\],:{}\s]*$/,
66
- rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
67
- rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
68
- rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,
69
-
70
- // Matches dashed string for camelizing
71
- rmsPrefix = /^-ms-/,
72
- rdashAlpha = /-([\da-z])/gi,
73
-
74
- // Used by jQuery.camelCase as callback to replace()
75
- fcamelCase = function (all, letter) {
76
- return ( letter + "" ).toUpperCase();
77
- },
78
-
79
- // The ready event handler and self cleanup method
80
- DOMContentLoaded = function () {
81
- if (document.addEventListener) {
82
- document.removeEventListener("DOMContentLoaded", DOMContentLoaded, false);
83
- jQuery.ready();
84
- } else if (document.readyState === "complete") {
85
- // we're here because readyState === "complete" in oldIE
86
- // which is good enough for us to call the dom ready!
87
- document.detachEvent("onreadystatechange", DOMContentLoaded);
88
- jQuery.ready();
89
- }
90
- },
91
-
92
- // [[Class]] -> type pairs
93
- class2type = {};
94
-
95
- jQuery.fn = jQuery.prototype = {
96
- constructor: jQuery,
97
- init: function (selector, context, rootjQuery) {
98
- var match, elem, ret, doc;
99
-
100
- // Handle $(""), $(null), $(undefined), $(false)
101
- if (!selector) {
102
- return this;
103
- }
104
-
105
- // Handle $(DOMElement)
106
- if (selector.nodeType) {
107
- this.context = this[0] = selector;
108
- this.length = 1;
109
- return this;
110
- }
111
-
112
- // Handle HTML strings
113
- if (typeof selector === "string") {
114
- if (selector.charAt(0) === "<" && selector.charAt(selector.length - 1) === ">" && selector.length >= 3) {
115
- // Assume that strings that start and end with <> are HTML and skip the regex check
116
- match = [ null, selector, null ];
117
-
118
- } else {
119
- match = rquickExpr.exec(selector);
120
- }
121
-
122
- // Match html or make sure no context is specified for #id
123
- if (match && (match[1] || !context)) {
124
-
125
- // HANDLE: $(html) -> $(array)
126
- if (match[1]) {
127
- context = context instanceof jQuery ? context[0] : context;
128
- doc = ( context && context.nodeType ? context.ownerDocument || context : document );
129
-
130
- // scripts is true for back-compat
131
- selector = jQuery.parseHTML(match[1], doc, true);
132
- if (rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) {
133
- this.attr.call(selector, context, true);
134
- }
135
-
136
- return jQuery.merge(this, selector);
137
-
138
- // HANDLE: $(#id)
139
- } else {
140
- elem = document.getElementById(match[2]);
141
-
142
- // Check parentNode to catch when Blackberry 4.6 returns
143
- // nodes that are no longer in the document #6963
144
- if (elem && elem.parentNode) {
145
- // Handle the case where IE and Opera return items
146
- // by name instead of ID
147
- if (elem.id !== match[2]) {
148
- return rootjQuery.find(selector);
149
- }
150
-
151
- // Otherwise, we inject the element directly into the jQuery object
152
- this.length = 1;
153
- this[0] = elem;
154
- }
155
-
156
- this.context = document;
157
- this.selector = selector;
158
- return this;
159
- }
160
-
161
- // HANDLE: $(expr, $(...))
162
- } else if (!context || context.jquery) {
163
- return ( context || rootjQuery ).find(selector);
164
-
165
- // HANDLE: $(expr, context)
166
- // (which is just equivalent to: $(context).find(expr)
167
- } else {
168
- return this.constructor(context).find(selector);
169
- }
170
-
171
- // HANDLE: $(function)
172
- // Shortcut for document ready
173
- } else if (jQuery.isFunction(selector)) {
174
- return rootjQuery.ready(selector);
175
- }
176
-
177
- if (selector.selector !== undefined) {
178
- this.selector = selector.selector;
179
- this.context = selector.context;
180
- }
181
-
182
- return jQuery.makeArray(selector, this);
183
- },
184
-
185
- // Start with an empty selector
186
- selector: "",
187
-
188
- // The current version of jQuery being used
189
- jquery: "1.8.3",
190
-
191
- // The default length of a jQuery object is 0
192
- length: 0,
193
-
194
- // The number of elements contained in the matched element set
195
- size: function () {
196
- return this.length;
197
- },
198
-
199
- toArray: function () {
200
- return core_slice.call(this);
201
- },
202
-
203
- // Get the Nth element in the matched element set OR
204
- // Get the whole matched element set as a clean array
205
- get: function (num) {
206
- return num == null ?
207
-
208
- // Return a 'clean' array
209
- this.toArray() :
210
-
211
- // Return just the object
212
- ( num < 0 ? this[ this.length + num ] : this[ num ] );
213
- },
214
-
215
- // Take an array of elements and push it onto the stack
216
- // (returning the new matched element set)
217
- pushStack: function (elems, name, selector) {
218
-
219
- // Build a new jQuery matched element set
220
- var ret = jQuery.merge(this.constructor(), elems);
221
-
222
- // Add the old object onto the stack (as a reference)
223
- ret.prevObject = this;
224
-
225
- ret.context = this.context;
226
-
227
- if (name === "find") {
228
- ret.selector = this.selector + ( this.selector ? " " : "" ) + selector;
229
- } else if (name) {
230
- ret.selector = this.selector + "." + name + "(" + selector + ")";
231
- }
232
-
233
- // Return the newly-formed element set
234
- return ret;
235
- },
236
-
237
- // Execute a callback for every element in the matched set.
238
- // (You can seed the arguments with an array of args, but this is
239
- // only used internally.)
240
- each: function (callback, args) {
241
- return jQuery.each(this, callback, args);
242
- },
243
-
244
- ready: function (fn) {
245
- // Add the callback
246
- jQuery.ready.promise().done(fn);
247
-
248
- return this;
249
- },
250
-
251
- eq: function (i) {
252
- i = +i;
253
- return i === -1 ?
254
- this.slice(i) :
255
- this.slice(i, i + 1);
256
- },
257
-
258
- first: function () {
259
- return this.eq(0);
260
- },
261
-
262
- last: function () {
263
- return this.eq(-1);
264
- },
265
-
266
- slice: function () {
267
- return this.pushStack(core_slice.apply(this, arguments),
268
- "slice", core_slice.call(arguments).join(","));
269
- },
270
-
271
- map: function (callback) {
272
- return this.pushStack(jQuery.map(this, function (elem, i) {
273
- return callback.call(elem, i, elem);
274
- }));
275
- },
276
-
277
- end: function () {
278
- return this.prevObject || this.constructor(null);
279
- },
280
-
281
- // For internal use only.
282
- // Behaves like an Array's method, not like a jQuery method.
283
- push: core_push,
284
- sort: [].sort,
285
- splice: [].splice
286
- };
287
 
288
  // Give the init function the jQuery prototype for later instantiation
289
- jQuery.fn.init.prototype = jQuery.fn;
290
-
291
- jQuery.extend = jQuery.fn.extend = function () {
292
- var options, name, src, copy, copyIsArray, clone,
293
- target = arguments[0] || {},
294
- i = 1,
295
- length = arguments.length,
296
- deep = false;
297
-
298
- // Handle a deep copy situation
299
- if (typeof target === "boolean") {
300
- deep = target;
301
- target = arguments[1] || {};
302
- // skip the boolean and the target
303
- i = 2;
304
- }
305
-
306
- // Handle case when target is a string or something (possible in deep copy)
307
- if (typeof target !== "object" && !jQuery.isFunction(target)) {
308
- target = {};
309
- }
310
-
311
- // extend jQuery itself if only one argument is passed
312
- if (length === i) {
313
- target = this;
314
- --i;
315
- }
316
-
317
- for (; i < length; i++) {
318
- // Only deal with non-null/undefined values
319
- if ((options = arguments[ i ]) != null) {
320
- // Extend the base object
321
- for (name in options) {
322
- src = target[ name ];
323
- copy = options[ name ];
324
-
325
- // Prevent never-ending loop
326
- if (target === copy) {
327
- continue;
328
- }
329
-
330
- // Recurse if we're merging plain objects or arrays
331
- if (deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) )) {
332
- if (copyIsArray) {
333
- copyIsArray = false;
334
- clone = src && jQuery.isArray(src) ? src : [];
335
-
336
- } else {
337
- clone = src && jQuery.isPlainObject(src) ? src : {};
338
- }
339
-
340
- // Never move original objects, clone them
341
- target[ name ] = jQuery.extend(deep, clone, copy);
342
-
343
- // Don't bring in undefined values
344
- } else if (copy !== undefined) {
345
- target[ name ] = copy;
346
- }
347
- }
348
- }
349
- }
350
-
351
- // Return the modified object
352
- return target;
353
- };
354
-
355
- jQuery.extend({
356
- noConflict: function (deep) {
357
- if (window.$ === jQuery) {
358
- window.$ = _$;
359
- }
360
-
361
- if (deep && window.jQuery === jQuery) {
362
- window.jQuery = _jQuery;
363
- }
364
-
365
- return jQuery;
366
- },
367
-
368
- // Is the DOM ready to be used? Set to true once it occurs.
369
- isReady: false,
370
-
371
- // A counter to track how many items to wait for before
372
- // the ready event fires. See #6781
373
- readyWait: 1,
374
-
375
- // Hold (or release) the ready event
376
- holdReady: function (hold) {
377
- if (hold) {
378
- jQuery.readyWait++;
379
- } else {
380
- jQuery.ready(true);
381
- }
382
- },
383
-
384
- // Handle when the DOM is ready
385
- ready: function (wait) {
386
-
387
- // Abort if there are pending holds or we're already ready
388
- if (wait === true ? --jQuery.readyWait : jQuery.isReady) {
389
- return;
390
- }
391
-
392
- // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
393
- if (!document.body) {
394
- return setTimeout(jQuery.ready, 1);
395
- }
396
-
397
- // Remember that the DOM is ready
398
- jQuery.isReady = true;
399
-
400
- // If a normal DOM Ready event fired, decrement, and wait if need be
401
- if (wait !== true && --jQuery.readyWait > 0) {
402
- return;
403
- }
404
-
405
- // If there are functions bound, to execute
406
- readyList.resolveWith(document, [ jQuery ]);
407
-
408
- // Trigger any bound ready events
409
- if (jQuery.fn.trigger) {
410
- jQuery(document).trigger("ready").off("ready");
411
- }
412
- },
413
-
414
- // See test/unit/core.js for details concerning isFunction.
415
- // Since version 1.3, DOM methods and functions like alert
416
- // aren't supported. They return false on IE (#2968).
417
- isFunction: function (obj) {
418
- return jQuery.type(obj) === "function";
419
- },
420
-
421
- isArray: Array.isArray || function (obj) {
422
- return jQuery.type(obj) === "array";
423
- },
424
-
425
- isWindow: function (obj) {
426
- return obj != null && obj == obj.window;
427
- },
428
-
429
- isNumeric: function (obj) {
430
- return !isNaN(parseFloat(obj)) && isFinite(obj);
431
- },
432
-
433
- type: function (obj) {
434
- return obj == null ?
435
- String(obj) :
436
- class2type[ core_toString.call(obj) ] || "object";
437
- },
438
-
439
- isPlainObject: function (obj) {
440
- // Must be an Object.
441
- // Because of IE, we also have to check the presence of the constructor property.
442
- // Make sure that DOM nodes and window objects don't pass through, as well
443
- if (!obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow(obj)) {
444
- return false;
445
- }
446
-
447
- try {
448
- // Not own constructor property must be Object
449
- if (obj.constructor && !core_hasOwn.call(obj, "constructor") && !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf")) {
450
- return false;
451
- }
452
- } catch (e) {
453
- // IE8,9 Will throw exceptions on certain host objects #9897
454
- return false;
455
- }
456
-
457
- // Own properties are enumerated firstly, so to speed up,
458
- // if last one is own, then all properties are own.
459
-
460
- var key;
461
- for (key in obj) {
462
- }
463
-
464
- return key === undefined || core_hasOwn.call(obj, key);
465
- },
466
-
467
- isEmptyObject: function (obj) {
468
- var name;
469
- for (name in obj) {
470
- return false;
471
- }
472
- return true;
473
- },
474
-
475
- error: function (msg) {
476
- throw new Error(msg);
477
- },
478
-
479
- // data: string of html
480
- // context (optional): If specified, the fragment will be created in this context, defaults to document
481
- // scripts (optional): If true, will include scripts passed in the html string
482
- parseHTML: function (data, context, scripts) {
483
- var parsed;
484
- if (!data || typeof data !== "string") {
485
- return null;
486
- }
487
- if (typeof context === "boolean") {
488
- scripts = context;
489
- context = 0;
490
- }
491
- context = context || document;
492
-
493
- // Single tag
494
- if ((parsed = rsingleTag.exec(data))) {
495
- return [ context.createElement(parsed[1]) ];
496
- }
497
-
498
- parsed = jQuery.buildFragment([ data ], context, scripts ? null : []);
499
- return jQuery.merge([],
500
- (parsed.cacheable ? jQuery.clone(parsed.fragment) : parsed.fragment).childNodes);
501
- },
502
-
503
- parseJSON: function (data) {
504
- if (!data || typeof data !== "string") {
505
- return null;
506
- }
507
-
508
- // Make sure leading/trailing whitespace is removed (IE can't handle it)
509
- data = jQuery.trim(data);
510
-
511
- // Attempt to parse using the native JSON parser first
512
- if (window.JSON && window.JSON.parse) {
513
- return window.JSON.parse(data);
514
- }
515
-
516
- // Make sure the incoming data is actual JSON
517
- // Logic borrowed from http://json.org/json2.js
518
- if (rvalidchars.test(data.replace(rvalidescape, "@")
519
- .replace(rvalidtokens, "]")
520
- .replace(rvalidbraces, ""))) {
521
-
522
- return ( new Function("return " + data) )();
523
-
524
- }
525
- jQuery.error("Invalid JSON: " + data);
526
- },
527
-
528
- // Cross-browser xml parsing
529
- parseXML: function (data) {
530
- var xml, tmp;
531
- if (!data || typeof data !== "string") {
532
- return null;
533
- }
534
- try {
535
- if (window.DOMParser) { // Standard
536
- tmp = new DOMParser();
537
- xml = tmp.parseFromString(data, "text/xml");
538
- } else { // IE
539
- xml = new ActiveXObject("Microsoft.XMLDOM");
540
- xml.async = "false";
541
- xml.loadXML(data);
542
- }
543
- } catch (e) {
544
- xml = undefined;
545
- }
546
- if (!xml || !xml.documentElement || xml.getElementsByTagName("parsererror").length) {
547
- jQuery.error("Invalid XML: " + data);
548
- }
549
- return xml;
550
- },
551
-
552
- noop: function () {
553
- },
554
-
555
- // Evaluates a script in a global context
556
- // Workarounds based on findings by Jim Driscoll
557
- // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
558
- globalEval: function (data) {
559
- if (data && core_rnotwhite.test(data)) {
560
- // We use execScript on Internet Explorer
561
- // We use an anonymous function so that context is window
562
- // rather than jQuery in Firefox
563
- ( window.execScript || function (data) {
564
- window[ "eval" ].call(window, data);
565
- } )(data);
566
- }
567
- },
568
-
569
- // Convert dashed to camelCase; used by the css and data modules
570
- // Microsoft forgot to hump their vendor prefix (#9572)
571
- camelCase: function (string) {
572
- return string.replace(rmsPrefix, "ms-").replace(rdashAlpha, fcamelCase);
573
- },
574
-
575
- nodeName: function (elem, name) {
576
- return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
577
- },
578
-
579
- // args is for internal usage only
580
- each: function (obj, callback, args) {
581
- var name,
582
- i = 0,
583
- length = obj.length,
584
- isObj = length === undefined || jQuery.isFunction(obj);
585
-
586
- if (args) {
587
- if (isObj) {
588
- for (name in obj) {
589
- if (callback.apply(obj[ name ], args) === false) {
590
- break;
591
- }
592
- }
593
- } else {
594
- for (; i < length;) {
595
- if (callback.apply(obj[ i++ ], args) === false) {
596
- break;
597
- }
598
- }
599
- }
600
-
601
- // A special, fast, case for the most common use of each
602
- } else {
603
- if (isObj) {
604
- for (name in obj) {
605
- if (callback.call(obj[ name ], name, obj[ name ]) === false) {
606
- break;
607
- }
608
- }
609
- } else {
610
- for (; i < length;) {
611
- if (callback.call(obj[ i ], i, obj[ i++ ]) === false) {
612
- break;
613
- }
614
- }
615
- }
616
- }
617
-
618
- return obj;
619
- },
620
-
621
- // Use native String.trim function wherever possible
622
- trim: core_trim && !core_trim.call("\uFEFF\xA0") ?
623
- function (text) {
624
- return text == null ?
625
- "" :
626
- core_trim.call(text);
627
- } :
628
-
629
- // Otherwise use our own trimming functionality
630
- function (text) {
631
- return text == null ?
632
- "" :
633
- ( text + "" ).replace(rtrim, "");
634
- },
635
-
636
- // results is for internal usage only
637
- makeArray: function (arr, results) {
638
- var type,
639
- ret = results || [];
640
-
641
- if (arr != null) {
642
- // The window, strings (and functions) also have 'length'
643
- // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
644
- type = jQuery.type(arr);
645
-
646
- if (arr.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow(arr)) {
647
- core_push.call(ret, arr);
648
- } else {
649
- jQuery.merge(ret, arr);
650
- }
651
- }
652
-
653
- return ret;
654
- },
655
-
656
- inArray: function (elem, arr, i) {
657
- var len;
658
-
659
- if (arr) {
660
- if (core_indexOf) {
661
- return core_indexOf.call(arr, elem, i);
662
- }
663
-
664
- len = arr.length;
665
- i = i ? i < 0 ? Math.max(0, len + i) : i : 0;
666
-
667
- for (; i < len; i++) {
668
- // Skip accessing in sparse arrays
669
- if (i in arr && arr[ i ] === elem) {
670
- return i;
671
- }
672
- }
673
- }
674
-
675
- return -1;
676
- },
677
-
678
- merge: function (first, second) {
679
- var l = second.length,
680
- i = first.length,
681
- j = 0;
682
-
683
- if (typeof l === "number") {
684
- for (; j < l; j++) {
685
- first[ i++ ] = second[ j ];
686
- }
687
-
688
- } else {
689
- while (second[j] !== undefined) {
690
- first[ i++ ] = second[ j++ ];
691
- }
692
- }
693
-
694
- first.length = i;
695
-
696
- return first;
697
- },
698
-
699
- grep: function (elems, callback, inv) {
700
- var retVal,
701
- ret = [],
702
- i = 0,
703
- length = elems.length;
704
- inv = !!inv;
705
-
706
- // Go through the array, only saving the items
707
- // that pass the validator function
708
- for (; i < length; i++) {
709
- retVal = !!callback(elems[ i ], i);
710
- if (inv !== retVal) {
711
- ret.push(elems[ i ]);
712
- }
713
- }
714
-
715
- return ret;
716
- },
717
-
718
- // arg is for internal usage only
719
- map: function (elems, callback, arg) {
720
- var value, key,
721
- ret = [],
722
- i = 0,
723
- length = elems.length,
724
- // jquery objects are treated as arrays
725
- isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length - 1 ] ) || length === 0 || jQuery.isArray(elems) );
726
-
727
- // Go through the array, translating each of the items to their
728
- if (isArray) {
729
- for (; i < length; i++) {
730
- value = callback(elems[ i ], i, arg);
731
-
732
- if (value != null) {
733
- ret[ ret.length ] = value;
734
- }
735
- }
736
-
737
- // Go through every key on the object,
738
- } else {
739
- for (key in elems) {
740
- value = callback(elems[ key ], key, arg);
741
-
742
- if (value != null) {
743
- ret[ ret.length ] = value;
744
- }
745
- }
746
- }
747
-
748
- // Flatten any nested arrays
749
- return ret.concat.apply([], ret);
750
- },
751
-
752
- // A global GUID counter for objects
753
- guid: 1,
754
-
755
- // Bind a function to a context, optionally partially applying any
756
- // arguments.
757
- proxy: function (fn, context) {
758
- var tmp, args, proxy;
759
-
760
- if (typeof context === "string") {
761
- tmp = fn[ context ];
762
- context = fn;
763
- fn = tmp;
764
- }
765
-
766
- // Quick check to determine if target is callable, in the spec
767
- // this throws a TypeError, but we will just return undefined.
768
- if (!jQuery.isFunction(fn)) {
769
- return undefined;
770
- }
771
-
772
- // Simulated bind
773
- args = core_slice.call(arguments, 2);
774
- proxy = function () {
775
- return fn.apply(context, args.concat(core_slice.call(arguments)));
776
- };
777
-
778
- // Set the guid of unique handler to the same of original handler, so it can be removed
779
- proxy.guid = fn.guid = fn.guid || jQuery.guid++;
780
-
781
- return proxy;
782
- },
783
-
784
- // Multifunctional method to get and set values of a collection
785
- // The value/s can optionally be executed if it's a function
786
- access: function (elems, fn, key, value, chainable, emptyGet, pass) {
787
- var exec,
788
- bulk = key == null,
789
- i = 0,
790
- length = elems.length;
791
-
792
- // Sets many values
793
- if (key && typeof key === "object") {
794
- for (i in key) {
795
- jQuery.access(elems, fn, i, key[i], 1, emptyGet, value);
796
- }
797
- chainable = 1;
798
-
799
- // Sets one value
800
- } else if (value !== undefined) {
801
- // Optionally, function values get executed if exec is true
802
- exec = pass === undefined && jQuery.isFunction(value);
803
-
804
- if (bulk) {
805
- // Bulk operations only iterate when executing function values
806
- if (exec) {
807
- exec = fn;
808
- fn = function (elem, key, value) {
809
- return exec.call(jQuery(elem), value);
810
- };
811
-
812
- // Otherwise they run against the entire set
813
- } else {
814
- fn.call(elems, value);
815
- fn = null;
816
- }
817
- }
818
-
819
- if (fn) {
820
- for (; i < length; i++) {
821
- fn(elems[i], key, exec ? value.call(elems[i], i, fn(elems[i], key)) : value, pass);
822
- }
823
- }
824
-
825
- chainable = 1;
826
- }
827
-
828
- return chainable ?
829
- elems :
830
-
831
- // Gets
832
- bulk ?
833
- fn.call(elems) :
834
- length ? fn(elems[0], key) : emptyGet;
835
- },
836
-
837
- now: function () {
838
- return ( new Date() ).getTime();
839
- }
840
- });
841
-
842
- jQuery.ready.promise = function (obj) {
843
- if (!readyList) {
844
-
845
- readyList = jQuery.Deferred();
846
-
847
- // Catch cases where $(document).ready() is called after the browser event has already occurred.
848
- // we once tried to use readyState "interactive" here, but it caused issues like the one
849
- // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
850
- if (document.readyState === "complete") {
851
- // Handle it asynchronously to allow scripts the opportunity to delay ready
852
- setTimeout(jQuery.ready, 1);
853
-
854
- // Standards-based browsers support DOMContentLoaded
855
- } else if (document.addEventListener) {
856
- // Use the handy event callback
857
- document.addEventListener("DOMContentLoaded", DOMContentLoaded, false);
858
-
859
- // A fallback to window.onload, that will always work
860
- window.addEventListener("load", jQuery.ready, false);
861
-
862
- // If IE event model is used
863
- } else {
864
- // Ensure firing before onload, maybe late but safe also for iframes
865
- document.attachEvent("onreadystatechange", DOMContentLoaded);
866
-
867
- // A fallback to window.onload, that will always work
868
- window.attachEvent("onload", jQuery.ready);
869
-
870
- // If IE and not a frame
871
- // continually check to see if the document is ready
872
- var top = false;
873
-
874
- try {
875
- top = window.frameElement == null && document.documentElement;
876
- } catch (e) {
877
- }
878
-
879
- if (top && top.doScroll) {
880
- (function doScrollCheck() {
881
- if (!jQuery.isReady) {
882
-
883
- try {
884
- // Use the trick by Diego Perini
885
- // http://javascript.nwbox.com/IEContentLoaded/
886
- top.doScroll("left");
887
- } catch (e) {
888
- return setTimeout(doScrollCheck, 50);
889
- }
890
-
891
- // and execute any waiting functions
892
- jQuery.ready();
893
- }
894
- })();
895
- }
896
- }
897
- }
898
- return readyList.promise(obj);
899
- };
900
 
901
  // Populate the class2type map
902
- jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function (i, name) {
903
- class2type[ "[object " + name + "]" ] = name.toLowerCase();
904
- });
905
 
906
  // All jQuery objects should point back to these
907
- rootjQuery = jQuery(document);
908
  // String to Object options format cache
909
- var optionsCache = {};
910
 
911
  // Convert String-formatted options into Object-formatted ones and store in cache
912
- function createOptions(options) {
913
- var object = optionsCache[ options ] = {};
914
- jQuery.each(options.split(core_rspace), function (_, flag) {
915
- object[ flag ] = true;
916
- });
917
- return object;
918
- }
919
-
920
- /*
921
- * Create a callback list using the following parameters:
922
- *
923
- * options: an optional list of space-separated options that will change how
924
- * the callback list behaves or a more traditional option object
925
- *
926
- * By default a callback list will act like an event callback list and can be
927
- * "fired" multiple times.
928
- *
929
- * Possible options:
930
- *
931
- * once: will ensure the callback list can only be fired once (like a Deferred)
932
- *
933
- * memory: will keep track of previous values and will call any callback added
934
- * after the list has been fired right away with the latest "memorized"
935
- * values (like a Deferred)
936
- *
937
- * unique: will ensure a callback can only be added once (no duplicate in the list)
938
- *
939
- * stopOnFalse: interrupt callings when a callback returns false
940
- *
941
- */
942
- jQuery.Callbacks = function (options) {
943
-
944
- // Convert options from String-formatted to Object-formatted if needed
945
- // (we check in cache first)
946
- options = typeof options === "string" ?
947
- ( optionsCache[ options ] || createOptions(options) ) :
948
- jQuery.extend({}, options);
949
-
950
- var // Last fire value (for non-forgettable lists)
951
- memory,
952
- // Flag to know if list was already fired
953
- fired,
954
- // Flag to know if list is currently firing
955
- firing,
956
- // First callback to fire (used internally by add and fireWith)
957
- firingStart,
958
- // End of the loop when firing
959
- firingLength,
960
- // Index of currently firing callback (modified by remove if needed)
961
- firingIndex,
962
- // Actual callback list
963
- list = [],
964
- // Stack of fire calls for repeatable lists
965
- stack = !options.once && [],
966
- // Fire callbacks
967
- fire = function (data) {
968
- memory = options.memory && data;
969
- fired = true;
970
- firingIndex = firingStart || 0;
971
- firingStart = 0;
972
- firingLength = list.length;
973
- firing = true;
974
- for (; list && firingIndex < firingLength; firingIndex++) {
975
- if (list[ firingIndex ].apply(data[ 0 ], data[ 1 ]) === false && options.stopOnFalse) {
976
- memory = false; // To prevent further calls using add
977
- break;
978
- }
979
- }
980
- firing = false;
981
- if (list) {
982
- if (stack) {
983
- if (stack.length) {
984
- fire(stack.shift());
985
- }
986
- } else if (memory) {
987
- list = [];
988
- } else {
989
- self.disable();
990
- }
991
- }
992
- },
993
- // Actual Callbacks object
994
- self = {
995
- // Add a callback or a collection of callbacks to the list
996
- add: function () {
997
- if (list) {
998
- // First, we save the current length
999
- var start = list.length;
1000
- (function add(args) {
1001
- jQuery.each(args, function (_, arg) {
1002
- var type = jQuery.type(arg);
1003
- if (type === "function") {
1004
- if (!options.unique || !self.has(arg)) {
1005
- list.push(arg);
1006
- }
1007
- } else if (arg && arg.length && type !== "string") {
1008
- // Inspect recursively
1009
- add(arg);
1010
- }
1011
- });
1012
- })(arguments);
1013
- // Do we need to add the callbacks to the
1014
- // current firing batch?
1015
- if (firing) {
1016
- firingLength = list.length;
1017
- // With memory, if we're not firing then
1018
- // we should call right away
1019
- } else if (memory) {
1020
- firingStart = start;
1021
- fire(memory);
1022
- }
1023
- }
1024
- return this;
1025
- },
1026
- // Remove a callback from the list
1027
- remove: function () {
1028
- if (list) {
1029
- jQuery.each(arguments, function (_, arg) {
1030
- var index;
1031
- while (( index = jQuery.inArray(arg, list, index) ) > -1) {
1032
- list.splice(index, 1);
1033
- // Handle firing indexes
1034
- if (firing) {
1035
- if (index <= firingLength) {
1036
- firingLength--;
1037
- }
1038
- if (index <= firingIndex) {
1039
- firingIndex--;
1040
- }
1041
- }
1042
- }
1043
- });
1044
- }
1045
- return this;
1046
- },
1047
- // Control if a given callback is in the list
1048
- has: function (fn) {
1049
- return jQuery.inArray(fn, list) > -1;
1050
- },
1051
- // Remove all callbacks from the list
1052
- empty: function () {
1053
- list = [];
1054
- return this;
1055
- },
1056
- // Have the list do nothing anymore
1057
- disable: function () {
1058
- list = stack = memory = undefined;
1059
- return this;
1060
- },
1061
- // Is it disabled?
1062
- disabled: function () {
1063
- return !list;
1064
- },
1065
- // Lock the list in its current state
1066
- lock: function () {
1067
- stack = undefined;
1068
- if (!memory) {
1069
- self.disable();
1070
- }
1071
- return this;
1072
- },
1073
- // Is it locked?
1074
- locked: function () {
1075
- return !stack;
1076
- },
1077
- // Call all callbacks with the given context and arguments
1078
- fireWith: function (context, args) {
1079
- args = args || [];
1080
- args = [ context, args.slice ? args.slice() : args ];
1081
- if (list && ( !fired || stack )) {
1082
- if (firing) {
1083
- stack.push(args);
1084
- } else {
1085
- fire(args);
1086
- }
1087
- }
1088
- return this;
1089
- },
1090
- // Call all the callbacks with the given arguments
1091
- fire: function () {
1092
- self.fireWith(this, arguments);
1093
- return this;
1094
- },
1095
- // To know if the callbacks have already been called at least once
1096
- fired: function () {
1097
- return !!fired;
1098
- }
1099
- };
1100
-
1101
- return self;
1102
- };
1103
- jQuery.extend({
1104
-
1105
- Deferred: function (func) {
1106
- var tuples = [
1107
- // action, add listener, listener list, final state
1108
- [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
1109
- [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
1110
- [ "notify", "progress", jQuery.Callbacks("memory") ]
1111
- ],
1112
- state = "pending",
1113
- promise = {
1114
- state: function () {
1115
- return state;
1116
- },
1117
- always: function () {
1118
- deferred.done(arguments).fail(arguments);
1119
- return this;
1120
- },
1121
- then: function (/* fnDone, fnFail, fnProgress */) {
1122
- var fns = arguments;
1123
- return jQuery.Deferred(function (newDefer) {
1124
- jQuery.each(tuples, function (i, tuple) {
1125
- var action = tuple[ 0 ],
1126
- fn = fns[ i ];
1127
- // deferred[ done | fail | progress ] for forwarding actions to newDefer
1128
- deferred[ tuple[1] ](jQuery.isFunction(fn) ?
1129
- function () {
1130
- var returned = fn.apply(this, arguments);
1131
- if (returned && jQuery.isFunction(returned.promise)) {
1132
- returned.promise()
1133
- .done(newDefer.resolve)
1134
- .fail(newDefer.reject)
1135
- .progress(newDefer.notify);
1136
- } else {
1137
- newDefer[ action + "With" ](this === deferred ? newDefer : this, [ returned ]);
1138
- }
1139
- } :
1140
- newDefer[ action ]
1141
- );
1142
- });
1143
- fns = null;
1144
- }).promise();
1145
- },
1146
- // Get a promise for this deferred
1147
- // If obj is provided, the promise aspect is added to the object
1148
- promise: function (obj) {
1149
- return obj != null ? jQuery.extend(obj, promise) : promise;
1150
- }
1151
- },
1152
- deferred = {};
1153
-
1154
- // Keep pipe for back-compat
1155
- promise.pipe = promise.then;
1156
-
1157
- // Add list-specific methods
1158
- jQuery.each(tuples, function (i, tuple) {
1159
- var list = tuple[ 2 ],
1160
- stateString = tuple[ 3 ];
1161
-
1162
- // promise[ done | fail | progress ] = list.add
1163
- promise[ tuple[1] ] = list.add;
1164
-
1165
- // Handle state
1166
- if (stateString) {
1167
- list.add(function () {
1168
- // state = [ resolved | rejected ]
1169
- state = stateString;
1170
-
1171
- // [ reject_list | resolve_list ].disable; progress_list.lock
1172
- }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock);
1173
- }
1174
-
1175
- // deferred[ resolve | reject | notify ] = list.fire
1176
- deferred[ tuple[0] ] = list.fire;
1177
- deferred[ tuple[0] + "With" ] = list.fireWith;
1178
- });
1179
-
1180
- // Make the deferred a promise
1181
- promise.promise(deferred);
1182
-
1183
- // Call given func if any
1184
- if (func) {
1185
- func.call(deferred, deferred);
1186
- }
1187
-
1188
- // All done!
1189
- return deferred;
1190
- },
1191
-
1192
- // Deferred helper
1193
- when: function (subordinate /* , ..., subordinateN */) {
1194
- var i = 0,
1195
- resolveValues = core_slice.call(arguments),
1196
- length = resolveValues.length,
1197
-
1198
- // the count of uncompleted subordinates
1199
- remaining = length !== 1 || ( subordinate && jQuery.isFunction(subordinate.promise) ) ? length : 0,
1200
-
1201
- // the master Deferred. If resolveValues consist of only a single Deferred, just use that.
1202
- deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
1203
-
1204
- // Update function for both resolve and progress values
1205
- updateFunc = function (i, contexts, values) {
1206
- return function (value) {
1207
- contexts[ i ] = this;
1208
- values[ i ] = arguments.length > 1 ? core_slice.call(arguments) : value;
1209
- if (values === progressValues) {
1210
- deferred.notifyWith(contexts, values);
1211
- } else if (!( --remaining )) {
1212
- deferred.resolveWith(contexts, values);
1213
- }
1214
- };
1215
- },
1216
-
1217
- progressValues, progressContexts, resolveContexts;
1218
-
1219
- // add listeners to Deferred subordinates; treat others as resolved
1220
- if (length > 1) {
1221
- progressValues = new Array(length);
1222
- progressContexts = new Array(length);
1223
- resolveContexts = new Array(length);
1224
- for (; i < length; i++) {
1225
- if (resolveValues[ i ] && jQuery.isFunction(resolveValues[ i ].promise)) {
1226
- resolveValues[ i ].promise()
1227
- .done(updateFunc(i, resolveContexts, resolveValues))
1228
- .fail(deferred.reject)
1229
- .progress(updateFunc(i, progressContexts, progressValues));
1230
- } else {
1231
- --remaining;
1232
- }
1233
- }
1234
- }
1235
-
1236
- // if we're not waiting on anything, resolve the master
1237
- if (!remaining) {
1238
- deferred.resolveWith(resolveContexts, resolveValues);
1239
- }
1240
-
1241
- return deferred.promise();
1242
- }
1243
- });
1244
- jQuery.support = (function () {
1245
-
1246
- var support,
1247
- all,
1248
- a,
1249
- select,
1250
- opt,
1251
- input,
1252
- fragment,
1253
- eventName,
1254
- i,
1255
- isSupported,
1256
- clickFn,
1257
- div = document.createElement("div");
1258
-
1259
- // Setup
1260
- div.setAttribute("className", "t");
1261
- div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
1262
-
1263
- // Support tests won't run in some limited or non-browser environments
1264
- all = div.getElementsByTagName("*");
1265
- a = div.getElementsByTagName("a")[ 0 ];
1266
- if (!all || !a || !all.length) {
1267
- return {};
1268
- }
1269
-
1270
- // First batch of tests
1271
- select = document.createElement("select");
1272
- opt = select.appendChild(document.createElement("option"));
1273
- input = div.getElementsByTagName("input")[ 0 ];
1274
-
1275
- a.style.cssText = "top:1px;float:left;opacity:.5";
1276
- support = {
1277
- // IE strips leading whitespace when .innerHTML is used
1278
- leadingWhitespace: ( div.firstChild.nodeType === 3 ),
1279
-
1280
- // Make sure that tbody elements aren't automatically inserted
1281
- // IE will insert them into empty tables
1282
- tbody: !div.getElementsByTagName("tbody").length,
1283
-
1284
- // Make sure that link elements get serialized correctly by innerHTML
1285
- // This requires a wrapper element in IE
1286
- htmlSerialize: !!div.getElementsByTagName("link").length,
1287
-
1288
- // Get the style information from getAttribute
1289
- // (IE uses .cssText instead)
1290
- style: /top/.test(a.getAttribute("style")),
1291
-
1292
- // Make sure that URLs aren't manipulated
1293
- // (IE normalizes it by default)
1294
- hrefNormalized: ( a.getAttribute("href") === "/a" ),
1295
-
1296
- // Make sure that element opacity exists
1297
- // (IE uses filter instead)
1298
- // Use a regex to work around a WebKit issue. See #5145
1299
- opacity: /^0.5/.test(a.style.opacity),
1300
-
1301
- // Verify style float existence
1302
- // (IE uses styleFloat instead of cssFloat)
1303
- cssFloat: !!a.style.cssFloat,
1304
-
1305
- // Make sure that if no value is specified for a checkbox
1306
- // that it defaults to "on".
1307
- // (WebKit defaults to "" instead)
1308
- checkOn: ( input.value === "on" ),
1309
-
1310
- // Make sure that a selected-by-default option has a working selected property.
1311
- // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
1312
- optSelected: opt.selected,
1313
-
1314
- // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
1315
- getSetAttribute: div.className !== "t",
1316
-
1317
- // Tests for enctype support on a form (#6743)
1318
- enctype: !!document.createElement("form").enctype,
1319
-
1320
- // Makes sure cloning an html5 element does not cause problems
1321
- // Where outerHTML is undefined, this still works
1322
- html5Clone: document.createElement("nav").cloneNode(true).outerHTML !== "<:nav></:nav>",
1323
-
1324
- // jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode
1325
- boxModel: ( document.compatMode === "CSS1Compat" ),
1326
-
1327
- // Will be defined later
1328
- submitBubbles: true,
1329
- changeBubbles: true,
1330
- focusinBubbles: false,
1331
- deleteExpando: true,
1332
- noCloneEvent: true,
1333
- inlineBlockNeedsLayout: false,
1334
- shrinkWrapBlocks: false,
1335
- reliableMarginRight: true,
1336
- boxSizingReliable: true,
1337
- pixelPosition: false
1338
- };
1339
-
1340
- // Make sure checked status is properly cloned
1341
- input.checked = true;
1342
- support.noCloneChecked = input.cloneNode(true).checked;
1343
-
1344
- // Make sure that the options inside disabled selects aren't marked as disabled
1345
- // (WebKit marks them as disabled)
1346
- select.disabled = true;
1347
- support.optDisabled = !opt.disabled;
1348
-
1349
- // Test to see if it's possible to delete an expando from an element
1350
- // Fails in Internet Explorer
1351
- try {
1352
- delete div.test;
1353
- } catch (e) {
1354
- support.deleteExpando = false;
1355
- }
1356
-
1357
- if (!div.addEventListener && div.attachEvent && div.fireEvent) {
1358
- div.attachEvent("onclick", clickFn = function () {
1359
- // Cloning a node shouldn't copy over any
1360
- // bound event handlers (IE does this)
1361
- support.noCloneEvent = false;
1362
- });
1363
- div.cloneNode(true).fireEvent("onclick");
1364
- div.detachEvent("onclick", clickFn);
1365
- }
1366
-
1367
- // Check if a radio maintains its value
1368
- // after being appended to the DOM
1369
- input = document.createElement("input");
1370
- input.value = "t";
1371
- input.setAttribute("type", "radio");
1372
- support.radioValue = input.value === "t";
1373
-
1374
- input.setAttribute("checked", "checked");
1375
-
1376
- // #11217 - WebKit loses check when the name is after the checked attribute
1377
- input.setAttribute("name", "t");
1378
-
1379
- div.appendChild(input);
1380
- fragment = document.createDocumentFragment();
1381
- fragment.appendChild(div.lastChild);
1382
-
1383
- // WebKit doesn't clone checked state correctly in fragments
1384
- support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;
1385
-
1386
- // Check if a disconnected checkbox will retain its checked
1387
- // value of true after appended to the DOM (IE6/7)
1388
- support.appendChecked = input.checked;
1389
-
1390
- fragment.removeChild(input);
1391
- fragment.appendChild(div);
1392
-
1393
- // Technique from Juriy Zaytsev
1394
- // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/
1395
- // We only care about the case where non-standard event systems
1396
- // are used, namely in IE. Short-circuiting here helps us to
1397
- // avoid an eval call (in setAttribute) which can cause CSP
1398
- // to go haywire. See: https://developer.mozilla.org/en/Security/CSP
1399
- if (div.attachEvent) {
1400
- for (i in {
1401
- submit: true,
1402
- change: true,
1403
- focusin: true
1404
- }) {
1405
- eventName = "on" + i;
1406
- isSupported = ( eventName in div );
1407
- if (!isSupported) {
1408
- div.setAttribute(eventName, "return;");
1409
- isSupported = ( typeof div[ eventName ] === "function" );
1410
- }
1411
- support[ i + "Bubbles" ] = isSupported;
1412
- }
1413
- }
1414
-
1415
- // Run tests that need a body at doc ready
1416
- jQuery(function () {
1417
- var container, div, tds, marginDiv,
1418
- divReset = "padding:0;margin:0;border:0;display:block;overflow:hidden;",
1419
- body = document.getElementsByTagName("body")[0];
1420
-
1421
- if (!body) {
1422
- // Return for frameset docs that don't have a body
1423
- return;
1424
- }
1425
-
1426
- container = document.createElement("div");
1427
- container.style.cssText = "visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px";
1428
- body.insertBefore(container, body.firstChild);
1429
-
1430
- // Construct the test element
1431
- div = document.createElement("div");
1432
- container.appendChild(div);
1433
-
1434
- // Check if table cells still have offsetWidth/Height when they are set
1435
- // to display:none and there are still other visible table cells in a
1436
- // table row; if so, offsetWidth/Height are not reliable for use when
1437
- // determining if an element has been hidden directly using
1438
- // display:none (it is still safe to use offsets if a parent element is
1439
- // hidden; don safety goggles and see bug #4512 for more information).
1440
- // (only IE 8 fails this test)
1441
- div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>";
1442
- tds = div.getElementsByTagName("td");
1443
- tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none";
1444
- isSupported = ( tds[ 0 ].offsetHeight === 0 );
1445
-
1446
- tds[ 0 ].style.display = "";
1447
- tds[ 1 ].style.display = "none";
1448
-
1449
- // Check if empty table cells still have offsetWidth/Height
1450
- // (IE <= 8 fail this test)
1451
- support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
1452
-
1453
- // Check box-sizing and margin behavior
1454
- div.innerHTML = "";
1455
- div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";
1456
- support.boxSizing = ( div.offsetWidth === 4 );
1457
- support.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 );
1458
-
1459
- // NOTE: To any future maintainer, we've window.getComputedStyle
1460
- // because jsdom on node.js will break without it.
1461
- if (window.getComputedStyle) {
1462
- support.pixelPosition = ( window.getComputedStyle(div, null) || {} ).top !== "1%";
1463
- support.boxSizingReliable = ( window.getComputedStyle(div, null) || { width: "4px" } ).width === "4px";
1464
-
1465
- // Check if div with explicit width and no margin-right incorrectly
1466
- // gets computed margin-right based on width of container. For more
1467
- // info see bug #3333
1468
- // Fails in WebKit before Feb 2011 nightlies
1469
- // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
1470
- marginDiv = document.createElement("div");
1471
- marginDiv.style.cssText = div.style.cssText = divReset;
1472
- marginDiv.style.marginRight = marginDiv.style.width = "0";
1473
- div.style.width = "1px";
1474
- div.appendChild(marginDiv);
1475
- support.reliableMarginRight = !parseFloat(( window.getComputedStyle(marginDiv, null) || {} ).marginRight);
1476
- }
1477
-
1478
- if (typeof div.style.zoom !== "undefined") {
1479
- // Check if natively block-level elements act like inline-block
1480
- // elements when setting their display to 'inline' and giving
1481
- // them layout
1482
- // (IE < 8 does this)
1483
- div.innerHTML = "";
1484
- div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1";
1485
- support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );
1486
-
1487
- // Check if elements with layout shrink-wrap their children
1488
- // (IE 6 does this)
1489
- div.style.display = "block";
1490
- div.style.overflow = "visible";
1491
- div.innerHTML = "<div></div>";
1492
- div.firstChild.style.width = "5px";
1493
- support.shrinkWrapBlocks = ( div.offsetWidth !== 3 );
1494
-
1495
- container.style.zoom = 1;
1496
- }
1497
-
1498
- // Null elements to avoid leaks in IE
1499
- body.removeChild(container);
1500
- container = div = tds = marginDiv = null;
1501
- });
1502
-
1503
- // Null elements to avoid leaks in IE
1504
- fragment.removeChild(div);
1505
- all = a = select = opt = input = fragment = div = null;
1506
-
1507
- return support;
1508
- })();
1509
- var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
1510
- rmultiDash = /([A-Z])/g;
1511
-
1512
- jQuery.extend({
1513
- cache: {},
1514
-
1515
- deletedIds: [],
1516
-
1517
- // Remove at next major release (1.9/2.0)
1518
- uuid: 0,
1519
-
1520
- // Unique for each copy of jQuery on the page
1521
- // Non-digits removed to match rinlinejQuery
1522
- expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace(/\D/g, ""),
1523
-
1524
- // The following elements throw uncatchable exceptions if you
1525
- // attempt to add expando properties to them.
1526
- noData: {
1527
- "embed": true,
1528
- // Ban all objects except for Flash (which handle expandos)
1529
- "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
1530
- "applet": true
1531
- },
1532
-
1533
- hasData: function (elem) {
1534
- elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
1535
- return !!elem && !isEmptyDataObject(elem);
1536
- },
1537
-
1538
- data: function (elem, name, data, pvt /* Internal Use Only */) {
1539
- if (!jQuery.acceptData(elem)) {
1540
- return;
1541
- }
1542
-
1543
- var thisCache, ret,
1544
- internalKey = jQuery.expando,
1545
- getByName = typeof name === "string",
1546
-
1547
- // We have to handle DOM nodes and JS objects differently because IE6-7
1548
- // can't GC object references properly across the DOM-JS boundary
1549
- isNode = elem.nodeType,
1550
-
1551
- // Only DOM nodes need the global jQuery cache; JS object data is
1552
- // attached directly to the object so GC can occur automatically
1553
- cache = isNode ? jQuery.cache : elem,
1554
-
1555
- // Only defining an ID for JS objects if its cache already exists allows
1556
- // the code to shortcut on the same path as a DOM node with no cache
1557
- id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;
1558
-
1559
- // Avoid doing any more work than we need to when trying to get data on an
1560
- // object that has no data at all
1561
- if ((!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined) {
1562
- return;
1563
- }
1564
-
1565
- if (!id) {
1566
- // Only DOM nodes need a new unique ID for each element since their data
1567
- // ends up in the global cache
1568
- if (isNode) {
1569
- elem[ internalKey ] = id = jQuery.deletedIds.pop() || jQuery.guid++;
1570
- } else {
1571
- id = internalKey;
1572
- }
1573
- }
1574
-
1575
- if (!cache[ id ]) {
1576
- cache[ id ] = {};
1577
-
1578
- // Avoids exposing jQuery metadata on plain JS objects when the object
1579
- // is serialized using JSON.stringify
1580
- if (!isNode) {
1581
- cache[ id ].toJSON = jQuery.noop;
1582
- }
1583
- }
1584
-
1585
- // An object can be passed to jQuery.data instead of a key/value pair; this gets
1586
- // shallow copied over onto the existing cache
1587
- if (typeof name === "object" || typeof name === "function") {
1588
- if (pvt) {
1589
- cache[ id ] = jQuery.extend(cache[ id ], name);
1590
- } else {
1591
- cache[ id ].data = jQuery.extend(cache[ id ].data, name);
1592
- }
1593
- }
1594
-
1595
- thisCache = cache[ id ];
1596
-
1597
- // jQuery data() is stored in a separate object inside the object's internal data
1598
- // cache in order to avoid key collisions between internal data and user-defined
1599
- // data.
1600
- if (!pvt) {
1601
- if (!thisCache.data) {
1602
- thisCache.data = {};
1603
- }
1604
-
1605
- thisCache = thisCache.data;
1606
- }
1607
-
1608
- if (data !== undefined) {
1609
- thisCache[ jQuery.camelCase(name) ] = data;
1610
- }
1611
-
1612
- // Check for both converted-to-camel and non-converted data property names
1613
- // If a data property was specified
1614
- if (getByName) {
1615
-
1616
- // First Try to find as-is property data
1617
- ret = thisCache[ name ];
1618
-
1619
- // Test for null|undefined property data
1620
- if (ret == null) {
1621
-
1622
- // Try to find the camelCased property
1623
- ret = thisCache[ jQuery.camelCase(name) ];
1624
- }
1625
- } else {
1626
- ret = thisCache;
1627
- }
1628
-
1629
- return ret;
1630
- },
1631
-
1632
- removeData: function (elem, name, pvt /* Internal Use Only */) {
1633
- if (!jQuery.acceptData(elem)) {
1634
- return;
1635
- }
1636
-
1637
- var thisCache, i, l,
1638
-
1639
- isNode = elem.nodeType,
1640
-
1641
- // See jQuery.data for more information
1642
- cache = isNode ? jQuery.cache : elem,
1643
- id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
1644
-
1645
- // If there is already no cache entry for this object, there is no
1646
- // purpose in continuing
1647
- if (!cache[ id ]) {
1648
- return;
1649
- }
1650
-
1651
- if (name) {
1652
-
1653
- thisCache = pvt ? cache[ id ] : cache[ id ].data;
1654
-
1655
- if (thisCache) {
1656
-
1657
- // Support array or space separated string names for data keys
1658
- if (!jQuery.isArray(name)) {
1659
-
1660
- // try the string as a key before any manipulation
1661
- if (name in thisCache) {
1662
- name = [ name ];
1663
- } else {
1664
-
1665
- // split the camel cased version by spaces unless a key with the spaces exists
1666
- name = jQuery.camelCase(name);
1667
- if (name in thisCache) {
1668
- name = [ name ];
1669
- } else {
1670
- name = name.split(" ");
1671
- }
1672
- }
1673
- }
1674
-
1675
- for (i = 0, l = name.length; i < l; i++) {
1676
- delete thisCache[ name[i] ];
1677
- }
1678
-
1679
- // If there is no data left in the cache, we want to continue
1680
- // and let the cache object itself get destroyed
1681
- if (!( pvt ? isEmptyDataObject : jQuery.isEmptyObject )(thisCache)) {
1682
- return;
1683
- }
1684
- }
1685
- }
1686
-
1687
- // See jQuery.data for more information
1688
- if (!pvt) {
1689
- delete cache[ id ].data;
1690
-
1691
- // Don't destroy the parent cache unless the internal data object
1692
- // had been the only thing left in it
1693
- if (!isEmptyDataObject(cache[ id ])) {
1694
- return;
1695
- }
1696
- }
1697
-
1698
- // Destroy the cache
1699
- if (isNode) {
1700
- jQuery.cleanData([ elem ], true);
1701
-
1702
- // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)
1703
- } else if (jQuery.support.deleteExpando || cache != cache.window) {
1704
- delete cache[ id ];
1705
-
1706
- // When all else fails, null
1707
- } else {
1708
- cache[ id ] = null;
1709
- }
1710
- },
1711
-
1712
- // For internal use only.
1713
- _data: function (elem, name, data) {
1714
- return jQuery.data(elem, name, data, true);
1715
- },
1716
-
1717
- // A method for determining if a DOM node can handle the data expando
1718
- acceptData: function (elem) {
1719
- var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];
1720
-
1721
- // nodes accept data unless otherwise specified; rejection can be conditional
1722
- return !noData || noData !== true && elem.getAttribute("classid") === noData;
1723
- }
1724
- });
1725
-
1726
- jQuery.fn.extend({
1727
- data: function (key, value) {
1728
- var parts, part, attr, name, l,
1729
- elem = this[0],
1730
- i = 0,
1731
- data = null;
1732
-
1733
- // Gets all values
1734
- if (key === undefined) {
1735
- if (this.length) {
1736
- data = jQuery.data(elem);
1737
-
1738
- if (elem.nodeType === 1 && !jQuery._data(elem, "parsedAttrs")) {
1739
- attr = elem.attributes;
1740
- for (l = attr.length; i < l; i++) {
1741
- name = attr[i].name;
1742
-
1743
- if (!name.indexOf("data-")) {
1744
- name = jQuery.camelCase(name.substring(5));
1745
-
1746
- dataAttr(elem, name, data[ name ]);
1747
- }
1748
- }
1749
- jQuery._data(elem, "parsedAttrs", true);
1750
- }
1751
- }
1752
-
1753
- return data;
1754
- }
1755
-
1756
- // Sets multiple values
1757
- if (typeof key === "object") {
1758
- return this.each(function () {
1759
- jQuery.data(this, key);
1760
- });
1761
- }
1762
-
1763
- parts = key.split(".", 2);
1764
- parts[1] = parts[1] ? "." + parts[1] : "";
1765
- part = parts[1] + "!";
1766
-
1767
- return jQuery.access(this, function (value) {
1768
-
1769
- if (value === undefined) {
1770
- data = this.triggerHandler("getData" + part, [ parts[0] ]);
1771
-
1772
- // Try to fetch any internally stored data first
1773
- if (data === undefined && elem) {
1774
- data = jQuery.data(elem, key);
1775
- data = dataAttr(elem, key, data);
1776
- }
1777
-
1778
- return data === undefined && parts[1] ?
1779
- this.data(parts[0]) :
1780
- data;
1781
- }
1782
-
1783
- parts[1] = value;
1784
- this.each(function () {
1785
- var self = jQuery(this);
1786
-
1787
- self.triggerHandler("setData" + part, parts);
1788
- jQuery.data(this, key, value);
1789
- self.triggerHandler("changeData" + part, parts);
1790
- });
1791
- }, null, value, arguments.length > 1, null, false);
1792
- },
1793
-
1794
- removeData: function (key) {
1795
- return this.each(function () {
1796
- jQuery.removeData(this, key);
1797
- });
1798
- }
1799
- });
1800
-
1801
- function dataAttr(elem, key, data) {
1802
- // If nothing was found internally, try to fetch any
1803
- // data from the HTML5 data-* attribute
1804
- if (data === undefined && elem.nodeType === 1) {
1805
-
1806
- var name = "data-" + key.replace(rmultiDash, "-$1").toLowerCase();
1807
-
1808
- data = elem.getAttribute(name);
1809
-
1810
- if (typeof data === "string") {
1811
- try {
1812
- data = data === "true" ? true :
1813
- data === "false" ? false :
1814
- data === "null" ? null :
1815
- // Only convert to a number if it doesn't change the string
1816
- +data + "" === data ? +data :
1817
- rbrace.test(data) ? jQuery.parseJSON(data) :
1818
- data;
1819
- } catch (e) {
1820
- }
1821
-
1822
- // Make sure we set the data so it isn't changed later
1823
- jQuery.data(elem, key, data);
1824
-
1825
- } else {
1826
- data = undefined;
1827
- }
1828
- }
1829
-
1830
- return data;
1831
- }
1832
 
1833
  // checks a cache object for emptiness
1834
- function isEmptyDataObject(obj) {
1835
- var name;
1836
- for (name in obj) {
1837
-
1838
- // if the public data object is empty, the private is still empty
1839
- if (name === "data" && jQuery.isEmptyObject(obj[name])) {
1840
- continue;
1841
- }
1842
- if (name !== "toJSON") {
1843
- return false;
1844
- }
1845
- }
1846
-
1847
- return true;
1848
- }
1849
-
1850
- jQuery.extend({
1851
- queue: function (elem, type, data) {
1852
- var queue;
1853
-
1854
- if (elem) {
1855
- type = ( type || "fx" ) + "queue";
1856
- queue = jQuery._data(elem, type);
1857
-
1858
- // Speed up dequeue by getting out quickly if this is just a lookup
1859
- if (data) {
1860
- if (!queue || jQuery.isArray(data)) {
1861
- queue = jQuery._data(elem, type, jQuery.makeArray(data));
1862
- } else {
1863
- queue.push(data);
1864
- }
1865
- }
1866
- return queue || [];
1867
- }
1868
- },
1869
-
1870
- dequeue: function (elem, type) {
1871
- type = type || "fx";
1872
-
1873
- var queue = jQuery.queue(elem, type),
1874
- startLength = queue.length,
1875
- fn = queue.shift(),
1876
- hooks = jQuery._queueHooks(elem, type),
1877
- next = function () {
1878
- jQuery.dequeue(elem, type);
1879
- };
1880
-
1881
- // If the fx queue is dequeued, always remove the progress sentinel
1882
- if (fn === "inprogress") {
1883
- fn = queue.shift();
1884
- startLength--;
1885
- }
1886
-
1887
- if (fn) {
1888
-
1889
- // Add a progress sentinel to prevent the fx queue from being
1890
- // automatically dequeued
1891
- if (type === "fx") {
1892
- queue.unshift("inprogress");
1893
- }
1894
-
1895
- // clear up the last queue stop function
1896
- delete hooks.stop;
1897
- fn.call(elem, next, hooks);
1898
- }
1899
-
1900
- if (!startLength && hooks) {
1901
- hooks.empty.fire();
1902
- }
1903
- },
1904
-
1905
- // not intended for public consumption - generates a queueHooks object, or returns the current one
1906
- _queueHooks: function (elem, type) {
1907
- var key = type + "queueHooks";
1908
- return jQuery._data(elem, key) || jQuery._data(elem, key, {
1909
- empty: jQuery.Callbacks("once memory").add(function () {
1910
- jQuery.removeData(elem, type + "queue", true);
1911
- jQuery.removeData(elem, key, true);
1912
- })
1913
- });
1914
- }
1915
- });
1916
-
1917
- jQuery.fn.extend({
1918
- queue: function (type, data) {
1919
- var setter = 2;
1920
-
1921
- if (typeof type !== "string") {
1922
- data = type;
1923
- type = "fx";
1924
- setter--;
1925
- }
1926
-
1927
- if (arguments.length < setter) {
1928
- return jQuery.queue(this[0], type);
1929
- }
1930
-
1931
- return data === undefined ?
1932
- this :
1933
- this.each(function () {
1934
- var queue = jQuery.queue(this, type, data);
1935
-
1936
- // ensure a hooks for this queue
1937
- jQuery._queueHooks(this, type);
1938
-
1939
- if (type === "fx" && queue[0] !== "inprogress") {
1940
- jQuery.dequeue(this, type);
1941
- }
1942
- });
1943
- },
1944
- dequeue: function (type) {
1945
- return this.each(function () {
1946
- jQuery.dequeue(this, type);
1947
- });
1948
- },
1949
- // Based off of the plugin by Clint Helfers, with permission.
1950
- // http://blindsignals.com/index.php/2009/07/jquery-delay/
1951
- delay: function (time, type) {
1952
- time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
1953
- type = type || "fx";
1954
-
1955
- return this.queue(type, function (next, hooks) {
1956
- var timeout = setTimeout(next, time);
1957
- hooks.stop = function () {
1958
- clearTimeout(timeout);
1959
- };
1960
- });
1961
- },
1962
- clearQueue: function (type) {
1963
- return this.queue(type || "fx", []);
1964
- },
1965
- // Get a promise resolved when queues of a certain type
1966
- // are emptied (fx is the type by default)
1967
- promise: function (type, obj) {
1968
- var tmp,
1969
- count = 1,
1970
- defer = jQuery.Deferred(),
1971
- elements = this,
1972
- i = this.length,
1973
- resolve = function () {
1974
- if (!( --count )) {
1975
- defer.resolveWith(elements, [ elements ]);
1976
- }
1977
- };
1978
-
1979
- if (typeof type !== "string") {
1980
- obj = type;
1981
- type = undefined;
1982
- }
1983
- type = type || "fx";
1984
-
1985
- while (i--) {
1986
- tmp = jQuery._data(elements[ i ], type + "queueHooks");
1987
- if (tmp && tmp.empty) {
1988
- count++;
1989
- tmp.empty.add(resolve);
1990
- }
1991
- }
1992
- resolve();
1993
- return defer.promise(obj);
1994
- }
1995
- });
1996
- var nodeHook, boolHook, fixSpecified,
1997
- rclass = /[\t\r\n]/g,
1998
- rreturn = /\r/g,
1999
- rtype = /^(?:button|input)$/i,
2000
- rfocusable = /^(?:button|input|object|select|textarea)$/i,
2001
- rclickable = /^a(?:rea|)$/i,
2002
- rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
2003
- getSetAttribute = jQuery.support.getSetAttribute;
2004
-
2005
- jQuery.fn.extend({
2006
- attr: function (name, value) {
2007
- return jQuery.access(this, jQuery.attr, name, value, arguments.length > 1);
2008
- },
2009
-
2010
- removeAttr: function (name) {
2011
- return this.each(function () {
2012
- jQuery.removeAttr(this, name);
2013
- });
2014
- },
2015
-
2016
- prop: function (name, value) {
2017
- return jQuery.access(this, jQuery.prop, name, value, arguments.length > 1);
2018
- },
2019
-
2020
- removeProp: function (name) {
2021
- name = jQuery.propFix[ name ] || name;
2022
- return this.each(function () {
2023
- // try/catch handles cases where IE balks (such as removing a property on window)
2024
- try {
2025
- this[ name ] = undefined;
2026
- delete this[ name ];
2027
- } catch (e) {
2028
- }
2029
- });
2030
- },
2031
-
2032
- addClass: function (value) {
2033
- var classNames, i, l, elem,
2034
- setClass, c, cl;
2035
-
2036
- if (jQuery.isFunction(value)) {
2037
- return this.each(function (j) {
2038
- jQuery(this).addClass(value.call(this, j, this.className));
2039
- });
2040
- }
2041
-
2042
- if (value && typeof value === "string") {
2043
- classNames = value.split(core_rspace);
2044
-
2045
- for (i = 0, l = this.length; i < l; i++) {
2046
- elem = this[ i ];
2047
-
2048
- if (elem.nodeType === 1) {
2049
- if (!elem.className && classNames.length === 1) {
2050
- elem.className = value;
2051
-
2052
- } else {
2053
- setClass = " " + elem.className + " ";
2054
-
2055
- for (c = 0, cl = classNames.length; c < cl; c++) {
2056
- if (setClass.indexOf(" " + classNames[ c ] + " ") < 0) {
2057
- setClass += classNames[ c ] + " ";
2058
- }
2059
- }
2060
- elem.className = jQuery.trim(setClass);
2061
- }
2062
- }
2063
- }
2064
- }
2065
-
2066
- return this;
2067
- },
2068
-
2069
- removeClass: function (value) {
2070
- var removes, className, elem, c, cl, i, l;
2071
-
2072
- if (jQuery.isFunction(value)) {
2073
- return this.each(function (j) {
2074
- jQuery(this).removeClass(value.call(this, j, this.className));
2075
- });
2076
- }
2077
- if ((value && typeof value === "string") || value === undefined) {
2078
- removes = ( value || "" ).split(core_rspace);
2079
-
2080
- for (i = 0, l = this.length; i < l; i++) {
2081
- elem = this[ i ];
2082
- if (elem.nodeType === 1 && elem.className) {
2083
-
2084
- className = (" " + elem.className + " ").replace(rclass, " ");
2085
-
2086
- // loop over each item in the removal list
2087
- for (c = 0, cl = removes.length; c < cl; c++) {
2088
- // Remove until there is nothing to remove,
2089
- while (className.indexOf(" " + removes[ c ] + " ") >= 0) {
2090
- className = className.replace(" " + removes[ c ] + " ", " ");
2091
- }
2092
- }
2093
- elem.className = value ? jQuery.trim(className) : "";
2094
- }
2095
- }
2096
- }
2097
-
2098
- return this;
2099
- },
2100
-
2101
- toggleClass: function (value, stateVal) {
2102
- var type = typeof value,
2103
- isBool = typeof stateVal === "boolean";
2104
-
2105
- if (jQuery.isFunction(value)) {
2106
- return this.each(function (i) {
2107
- jQuery(this).toggleClass(value.call(this, i, this.className, stateVal), stateVal);
2108
- });
2109
- }
2110
-
2111
- return this.each(function () {
2112
- if (type === "string") {
2113
- // toggle individual class names
2114
- var className,
2115
- i = 0,
2116
- self = jQuery(this),
2117
- state = stateVal,
2118
- classNames = value.split(core_rspace);
2119
-
2120
- while ((className = classNames[ i++ ])) {
2121
- // check each className given, space separated list
2122
- state = isBool ? state : !self.hasClass(className);
2123
- self[ state ? "addClass" : "removeClass" ](className);
2124
- }
2125
-
2126
- } else if (type === "undefined" || type === "boolean") {
2127
- if (this.className) {
2128
- // store className if set
2129
- jQuery._data(this, "__className__", this.className);
2130
- }
2131
-
2132
- // toggle whole className
2133
- this.className = this.className || value === false ? "" : jQuery._data(this, "__className__") || "";
2134
- }
2135
- });
2136
- },
2137
-
2138
- hasClass: function (selector) {
2139
- var className = " " + selector + " ",
2140
- i = 0,
2141
- l = this.length;
2142
- for (; i < l; i++) {
2143
- if (this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf(className) >= 0) {
2144
- return true;
2145
- }
2146
- }
2147
-
2148
- return false;
2149
- },
2150
-
2151
- val: function (value) {
2152
- var hooks, ret, isFunction,
2153
- elem = this[0];
2154
-
2155
- if (!arguments.length) {
2156
- if (elem) {
2157
- hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
2158
-
2159
- if (hooks && "get" in hooks && (ret = hooks.get(elem, "value")) !== undefined) {
2160
- return ret;
2161
- }
2162
-
2163
- ret = elem.value;
2164
-
2165
- return typeof ret === "string" ?
2166
- // handle most common string cases
2167
- ret.replace(rreturn, "") :
2168
- // handle cases where value is null/undef or number
2169
- ret == null ? "" : ret;
2170
- }
2171
-
2172
- return;
2173
- }
2174
-
2175
- isFunction = jQuery.isFunction(value);
2176
-
2177
- return this.each(function (i) {
2178
- var val,
2179
- self = jQuery(this);
2180
-
2181
- if (this.nodeType !== 1) {
2182
- return;
2183
- }
2184
-
2185
- if (isFunction) {
2186
- val = value.call(this, i, self.val());
2187
- } else {
2188
- val = value;
2189
- }
2190
-
2191
- // Treat null/undefined as ""; convert numbers to string
2192
- if (val == null) {
2193
- val = "";
2194
- } else if (typeof val === "number") {
2195
- val += "";
2196
- } else if (jQuery.isArray(val)) {
2197
- val = jQuery.map(val, function (value) {
2198
- return value == null ? "" : value + "";
2199
- });
2200
- }
2201
-
2202
- hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
2203
-
2204
- // If set returns undefined, fall back to normal setting
2205
- if (!hooks || !("set" in hooks) || hooks.set(this, val, "value") === undefined) {
2206
- this.value = val;
2207
- }
2208
- });
2209
- }
2210
- });
2211
-
2212
- jQuery.extend({
2213
- valHooks: {
2214
- option: {
2215
- get: function (elem) {
2216
- // attributes.value is undefined in Blackberry 4.7 but
2217
- // uses .value. See #6932
2218
- var val = elem.attributes.value;
2219
- return !val || val.specified ? elem.value : elem.text;
2220
- }
2221
- },
2222
- select: {
2223
- get: function (elem) {
2224
- var value, option,
2225
- options = elem.options,
2226
- index = elem.selectedIndex,
2227
- one = elem.type === "select-one" || index < 0,
2228
- values = one ? null : [],
2229
- max = one ? index + 1 : options.length,
2230
- i = index < 0 ?
2231
- max :
2232
- one ? index : 0;
2233
-
2234
- // Loop through all the selected options
2235
- for (; i < max; i++) {
2236
- option = options[ i ];
2237
-
2238
- // oldIE doesn't update selected after form reset (#2551)
2239
- if (( option.selected || i === index ) &&
2240
- // Don't return options that are disabled or in a disabled optgroup
2241
- ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) &&
2242
- ( !option.parentNode.disabled || !jQuery.nodeName(option.parentNode, "optgroup") )) {
2243
-
2244
- // Get the specific value for the option
2245
- value = jQuery(option).val();
2246
-
2247
- // We don't need an array for one selects
2248
- if (one) {
2249
- return value;
2250
- }
2251
-
2252
- // Multi-Selects return an array
2253
- values.push(value);
2254
- }
2255
- }
2256
-
2257
- return values;
2258
- },
2259
-
2260
- set: function (elem, value) {
2261
- var values = jQuery.makeArray(value);
2262
-
2263
- jQuery(elem).find("option").each(function () {
2264
- this.selected = jQuery.inArray(jQuery(this).val(), values) >= 0;
2265
- });
2266
-
2267
- if (!values.length) {
2268
- elem.selectedIndex = -1;
2269
- }
2270
- return values;
2271
- }
2272
- }
2273
- },
2274
-
2275
- // Unused in 1.8, left in so attrFn-stabbers won't die; remove in 1.9
2276
- attrFn: {},
2277
-
2278
- attr: function (elem, name, value, pass) {
2279
- var ret, hooks, notxml,
2280
- nType = elem.nodeType;
2281
-
2282
- // don't get/set attributes on text, comment and attribute nodes
2283
- if (!elem || nType === 3 || nType === 8 || nType === 2) {
2284
- return;
2285
- }
2286
-
2287
- if (pass && jQuery.isFunction(jQuery.fn[ name ])) {
2288
- return jQuery(elem)[ name ](value);
2289
- }
2290
-
2291
- // Fallback to prop when attributes are not supported
2292
- if (typeof elem.getAttribute === "undefined") {
2293
- return jQuery.prop(elem, name, value);
2294
- }
2295
-
2296
- notxml = nType !== 1 || !jQuery.isXMLDoc(elem);
2297
-
2298
- // All attributes are lowercase
2299
- // Grab necessary hook if one is defined
2300
- if (notxml) {
2301
- name = name.toLowerCase();
2302
- hooks = jQuery.attrHooks[ name ] || ( rboolean.test(name) ? boolHook : nodeHook );
2303
- }
2304
-
2305
- if (value !== undefined) {
2306
-
2307
- if (value === null) {
2308
- jQuery.removeAttr(elem, name);
2309
- return;
2310
-
2311
- } else if (hooks && "set" in hooks && notxml && (ret = hooks.set(elem, value, name)) !== undefined) {
2312
- return ret;
2313
-
2314
- } else {
2315
- elem.setAttribute(name, value + "");
2316
- return value;
2317
- }
2318
-
2319
- } else if (hooks && "get" in hooks && notxml && (ret = hooks.get(elem, name)) !== null) {
2320
- return ret;
2321
-
2322
- } else {
2323
-
2324
- ret = elem.getAttribute(name);
2325
-
2326
- // Non-existent attributes return null, we normalize to undefined
2327
- return ret === null ?
2328
- undefined :
2329
- ret;
2330
- }
2331
- },
2332
-
2333
- removeAttr: function (elem, value) {
2334
- var propName, attrNames, name, isBool,
2335
- i = 0;
2336
-
2337
- if (value && elem.nodeType === 1) {
2338
-
2339
- attrNames = value.split(core_rspace);
2340
-
2341
- for (; i < attrNames.length; i++) {
2342
- name = attrNames[ i ];
2343
-
2344
- if (name) {
2345
- propName = jQuery.propFix[ name ] || name;
2346
- isBool = rboolean.test(name);
2347
-
2348
- // See #9699 for explanation of this approach (setting first, then removal)
2349
- // Do not do this for boolean attributes (see #10870)
2350
- if (!isBool) {
2351
- jQuery.attr(elem, name, "");
2352
- }
2353
- elem.removeAttribute(getSetAttribute ? name : propName);
2354
-
2355
- // Set corresponding property to false for boolean attributes
2356
- if (isBool && propName in elem) {
2357
- elem[ propName ] = false;
2358
- }
2359
- }
2360
- }
2361
- }
2362
- },
2363
-
2364
- attrHooks: {
2365
- type: {
2366
- set: function (elem, value) {
2367
- // We can't allow the type property to be changed (since it causes problems in IE)
2368
- if (rtype.test(elem.nodeName) && elem.parentNode) {
2369
- jQuery.error("type property can't be changed");
2370
- } else if (!jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input")) {
2371
- // Setting the type on a radio button after the value resets the value in IE6-9
2372
- // Reset value to it's default in case type is set after value
2373
- // This is for element creation
2374
- var val = elem.value;
2375
- elem.setAttribute("type", value);
2376
- if (val) {
2377
- elem.value = val;
2378
- }
2379
- return value;
2380
- }
2381
- }
2382
- },
2383
- // Use the value property for back compat
2384
- // Use the nodeHook for button elements in IE6/7 (#1954)
2385
- value: {
2386
- get: function (elem, name) {
2387
- if (nodeHook && jQuery.nodeName(elem, "button")) {
2388
- return nodeHook.get(elem, name);
2389
- }
2390
- return name in elem ?
2391
- elem.value :
2392
- null;
2393
- },
2394
- set: function (elem, value, name) {
2395
- if (nodeHook && jQuery.nodeName(elem, "button")) {
2396
- return nodeHook.set(elem, value, name);
2397
- }
2398
- // Does not return so that setAttribute is also used
2399
- elem.value = value;
2400
- }
2401
- }
2402
- },
2403
-
2404
- propFix: {
2405
- tabindex: "tabIndex",
2406
- readonly: "readOnly",
2407
- "for": "htmlFor",
2408
- "class": "className",
2409
- maxlength: "maxLength",
2410
- cellspacing: "cellSpacing",
2411
- cellpadding: "cellPadding",
2412
- rowspan: "rowSpan",
2413
- colspan: "colSpan",
2414
- usemap: "useMap",
2415
- frameborder: "frameBorder",
2416
- contenteditable: "contentEditable"
2417
- },
2418
-
2419
- prop: function (elem, name, value) {
2420
- var ret, hooks, notxml,
2421
- nType = elem.nodeType;
2422
-
2423
- // don't get/set properties on text, comment and attribute nodes
2424
- if (!elem || nType === 3 || nType === 8 || nType === 2) {
2425
- return;
2426
- }
2427
-
2428
- notxml = nType !== 1 || !jQuery.isXMLDoc(elem);
2429
-
2430
- if (notxml) {
2431
- // Fix name and attach hooks
2432
- name = jQuery.propFix[ name ] || name;
2433
- hooks = jQuery.propHooks[ name ];
2434
- }
2435
-
2436
- if (value !== undefined) {
2437
- if (hooks && "set" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {
2438
- return ret;
2439
-
2440
- } else {
2441
- return ( elem[ name ] = value );
2442
- }
2443
-
2444
- } else {
2445
- if (hooks && "get" in hooks && (ret = hooks.get(elem, name)) !== null) {
2446
- return ret;
2447
-
2448
- } else {
2449
- return elem[ name ];
2450
- }
2451
- }
2452
- },
2453
-
2454
- propHooks: {
2455
- tabIndex: {
2456
- get: function (elem) {
2457
- // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
2458
- // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
2459
- var attributeNode = elem.getAttributeNode("tabindex");
2460
-
2461
- return attributeNode && attributeNode.specified ?
2462
- parseInt(attributeNode.value, 10) :
2463
- rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href ?
2464
- 0 :
2465
- undefined;
2466
- }
2467
- }
2468
- }
2469
- });
2470
 
2471
  // Hook for boolean attributes
2472
- boolHook = {
2473
- get: function (elem, name) {
2474
- // Align boolean attributes with corresponding properties
2475
- // Fall back to attribute presence where some booleans are not supported
2476
- var attrNode,
2477
- property = jQuery.prop(elem, name);
2478
- return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?
2479
- name.toLowerCase() :
2480
- undefined;
2481
- },
2482
- set: function (elem, value, name) {
2483
- var propName;
2484
- if (value === false) {
2485
- // Remove boolean attributes when set to false
2486
- jQuery.removeAttr(elem, name);
2487
- } else {
2488
- // value is true since we know at this point it's type boolean and not false
2489
- // Set boolean attributes to the same name and set the DOM property
2490
- propName = jQuery.propFix[ name ] || name;
2491
- if (propName in elem) {
2492
- // Only set the IDL specifically if it already exists on the element
2493
- elem[ propName ] = true;
2494
- }
2495
-
2496
- elem.setAttribute(name, name.toLowerCase());
2497
- }
2498
- return name;
2499
- }
2500
- };
2501
 
2502
  // IE6/7 do not support getting/setting some attributes with get/setAttribute
2503
- if (!getSetAttribute) {
2504
-
2505
- fixSpecified = {
2506
- name: true,
2507
- id: true,
2508
- coords: true
2509
- };
2510
-
2511
- // Use this for any attribute in IE6/7
2512
- // This fixes almost every IE6/7 issue
2513
- nodeHook = jQuery.valHooks.button = {
2514
- get: function (elem, name) {
2515
- var ret;
2516
- ret = elem.getAttributeNode(name);
2517
- return ret && ( fixSpecified[ name ] ? ret.value !== "" : ret.specified ) ?
2518
- ret.value :
2519
- undefined;
2520
- },
2521
- set: function (elem, value, name) {
2522
- // Set the existing or create a new attribute node
2523
- var ret = elem.getAttributeNode(name);
2524
- if (!ret) {
2525
- ret = document.createAttribute(name);
2526
- elem.setAttributeNode(ret);
2527
- }
2528
- return ( ret.value = value + "" );
2529
- }
2530
- };
2531
-
2532
- // Set width and height to auto instead of 0 on empty string( Bug #8150 )
2533
- // This is for removals
2534
- jQuery.each([ "width", "height" ], function (i, name) {
2535
- jQuery.attrHooks[ name ] = jQuery.extend(jQuery.attrHooks[ name ], {
2536
- set: function (elem, value) {
2537
- if (value === "") {
2538
- elem.setAttribute(name, "auto");
2539
- return value;
2540
- }
2541
- }
2542
- });
2543
- });
2544
-
2545
- // Set contenteditable to false on removals(#10429)
2546
- // Setting to empty string throws an error as an invalid value
2547
- jQuery.attrHooks.contenteditable = {
2548
- get: nodeHook.get,
2549
- set: function (elem, value, name) {
2550
- if (value === "") {
2551
- value = "false";
2552
- }
2553
- nodeHook.set(elem, value, name);
2554
- }
2555
- };
2556
- }
2557
 
2558
 
2559
  // Some attributes require a special call on IE
2560
- if (!jQuery.support.hrefNormalized) {
2561
- jQuery.each([ "href", "src", "width", "height" ], function (i, name) {
2562
- jQuery.attrHooks[ name ] = jQuery.extend(jQuery.attrHooks[ name ], {
2563
- get: function (elem) {
2564
- var ret = elem.getAttribute(name, 2);
2565
- return ret === null ? undefined : ret;
2566
- }
2567
- });
2568
- });
2569
- }
2570
-
2571
- if (!jQuery.support.style) {
2572
- jQuery.attrHooks.style = {
2573
- get: function (elem) {
2574
- // Return undefined in the case of empty string
2575
- // Normalize to lowercase since IE uppercases css property names
2576
- return elem.style.cssText.toLowerCase() || undefined;
2577
- },
2578
- set: function (elem, value) {
2579
- return ( elem.style.cssText = value + "" );
2580
- }
2581
- };
2582
- }
2583
 
2584
  // Safari mis-reports the default selected property of an option
2585
  // Accessing the parent's selectedIndex property fixes it
2586
- if (!jQuery.support.optSelected) {
2587
- jQuery.propHooks.selected = jQuery.extend(jQuery.propHooks.selected, {
2588
- get: function (elem) {
2589
- var parent = elem.parentNode;
2590
-
2591
- if (parent) {
2592
- parent.selectedIndex;
2593
-
2594
- // Make sure that it also works with optgroups, see #5701
2595
- if (parent.parentNode) {
2596
- parent.parentNode.selectedIndex;
2597
- }
2598
- }
2599
- return null;
2600
- }
2601
- });
2602
- }
2603
 
2604
  // IE6/7 call enctype encoding
2605
- if (!jQuery.support.enctype) {
2606
- jQuery.propFix.enctype = "encoding";
2607
- }
2608
 
2609
  // Radios and checkboxes getter/setter
2610
- if (!jQuery.support.checkOn) {
2611
- jQuery.each([ "radio", "checkbox" ], function () {
2612
- jQuery.valHooks[ this ] = {
2613
- get: function (elem) {
2614
- // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
2615
- return elem.getAttribute("value") === null ? "on" : elem.value;
2616
- }
2617
- };
2618
- });
2619
- }
2620
- jQuery.each([ "radio", "checkbox" ], function () {
2621
- jQuery.valHooks[ this ] = jQuery.extend(jQuery.valHooks[ this ], {
2622
- set: function (elem, value) {
2623
- if (jQuery.isArray(value)) {
2624
- return ( elem.checked = jQuery.inArray(jQuery(elem).val(), value) >= 0 );
2625
- }
2626
- }
2627
- });
2628
- });
2629
- var rformElems = /^(?:textarea|input|select)$/i,
2630
- rtypenamespace = /^([^\.]*|)(?:\.(.+)|)$/,
2631
- rhoverHack = /(?:^|\s)hover(\.\S+|)\b/,
2632
- rkeyEvent = /^key/,
2633
- rmouseEvent = /^(?:mouse|contextmenu)|click/,
2634
- rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
2635
- hoverHack = function (events) {
2636
- return jQuery.event.special.hover ? events : events.replace(rhoverHack, "mouseenter$1 mouseleave$1");
2637
- };
2638
-
2639
- /*
2640
- * Helper functions for managing events -- not part of the public interface.
2641
- * Props to Dean Edwards' addEvent library for many of the ideas.
2642
- */
2643
- jQuery.event = {
2644
-
2645
- add: function (elem, types, handler, data, selector) {
2646
-
2647
- var elemData, eventHandle, events,
2648
- t, tns, type, namespaces, handleObj,
2649
- handleObjIn, handlers, special;
2650
-
2651
- // Don't attach events to noData or text/comment nodes (allow plain objects tho)
2652
- if (elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data(elem))) {
2653
- return;
2654
- }
2655
-
2656
- // Caller can pass in an object of custom data in lieu of the handler
2657
- if (handler.handler) {
2658
- handleObjIn = handler;
2659
- handler = handleObjIn.handler;
2660
- selector = handleObjIn.selector;
2661
- }
2662
-
2663
- // Make sure that the handler has a unique ID, used to find/remove it later
2664
- if (!handler.guid) {
2665
- handler.guid = jQuery.guid++;
2666
- }
2667
-
2668
- // Init the element's event structure and main handler, if this is the first
2669
- events = elemData.events;
2670
- if (!events) {
2671
- elemData.events = events = {};
2672
- }
2673
- eventHandle = elemData.handle;
2674
- if (!eventHandle) {
2675
- elemData.handle = eventHandle = function (e) {
2676
- // Discard the second event of a jQuery.event.trigger() and
2677
- // when an event is called after a page has unloaded
2678
- return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?
2679
- jQuery.event.dispatch.apply(eventHandle.elem, arguments) :
2680
- undefined;
2681
- };
2682
- // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
2683
- eventHandle.elem = elem;
2684
- }
2685
-
2686
- // Handle multiple events separated by a space
2687
- // jQuery(...).bind("mouseover mouseout", fn);
2688
- types = jQuery.trim(hoverHack(types)).split(" ");
2689
- for (t = 0; t < types.length; t++) {
2690
-
2691
- tns = rtypenamespace.exec(types[t]) || [];
2692
- type = tns[1];
2693
- namespaces = ( tns[2] || "" ).split(".").sort();
2694
-
2695
- // If event changes its type, use the special event handlers for the changed type
2696
- special = jQuery.event.special[ type ] || {};
2697
-
2698
- // If selector defined, determine special event api type, otherwise given type
2699
- type = ( selector ? special.delegateType : special.bindType ) || type;
2700
-
2701
- // Update special based on newly reset type
2702
- special = jQuery.event.special[ type ] || {};
2703
-
2704
- // handleObj is passed to all event handlers
2705
- handleObj = jQuery.extend({
2706
- type: type,
2707
- origType: tns[1],
2708
- data: data,
2709
- handler: handler,
2710
- guid: handler.guid,
2711
- selector: selector,
2712
- needsContext: selector && jQuery.expr.match.needsContext.test(selector),
2713
- namespace: namespaces.join(".")
2714
- }, handleObjIn);
2715
-
2716
- // Init the event handler queue if we're the first
2717
- handlers = events[ type ];
2718
- if (!handlers) {
2719
- handlers = events[ type ] = [];
2720
- handlers.delegateCount = 0;
2721
-
2722
- // Only use addEventListener/attachEvent if the special events handler returns false
2723
- if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) {
2724
- // Bind the global event handler to the element
2725
- if (elem.addEventListener) {
2726
- elem.addEventListener(type, eventHandle, false);
2727
-
2728
- } else if (elem.attachEvent) {
2729
- elem.attachEvent("on" + type, eventHandle);
2730
- }
2731
- }
2732
- }
2733
-
2734
- if (special.add) {
2735
- special.add.call(elem, handleObj);
2736
-
2737
- if (!handleObj.handler.guid) {
2738
- handleObj.handler.guid = handler.guid;
2739
- }
2740
- }
2741
-
2742
- // Add to the element's handler list, delegates in front
2743
- if (selector) {
2744
- handlers.splice(handlers.delegateCount++, 0, handleObj);
2745
- } else {
2746
- handlers.push(handleObj);
2747
- }
2748
-
2749
- // Keep track of which events have ever been used, for event optimization
2750
- jQuery.event.global[ type ] = true;
2751
- }
2752
-
2753
- // Nullify elem to prevent memory leaks in IE
2754
- elem = null;
2755
- },
2756
-
2757
- global: {},
2758
-
2759
- // Detach an event or set of events from an element
2760
- remove: function (elem, types, handler, selector, mappedTypes) {
2761
-
2762
- var t, tns, type, origType, namespaces, origCount,
2763
- j, events, special, eventType, handleObj,
2764
- elemData = jQuery.hasData(elem) && jQuery._data(elem);
2765
-
2766
- if (!elemData || !(events = elemData.events)) {
2767
- return;
2768
- }
2769
-
2770
- // Once for each type.namespace in types; type may be omitted
2771
- types = jQuery.trim(hoverHack(types || "")).split(" ");
2772
- for (t = 0; t < types.length; t++) {
2773
- tns = rtypenamespace.exec(types[t]) || [];
2774
- type = origType = tns[1];
2775
- namespaces = tns[2];
2776
-
2777
- // Unbind all events (on this namespace, if provided) for the element
2778
- if (!type) {
2779
- for (type in events) {
2780
- jQuery.event.remove(elem, type + types[ t ], handler, selector, true);
2781
- }
2782
- continue;
2783
- }
2784
-
2785
- special = jQuery.event.special[ type ] || {};
2786
- type = ( selector ? special.delegateType : special.bindType ) || type;
2787
- eventType = events[ type ] || [];
2788
- origCount = eventType.length;
2789
- namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.|)") + "(\\.|$)") : null;
2790
-
2791
- // Remove matching events
2792
- for (j = 0; j < eventType.length; j++) {
2793
- handleObj = eventType[ j ];
2794
-
2795
- if (( mappedTypes || origType === handleObj.origType ) &&
2796
- ( !handler || handler.guid === handleObj.guid ) &&
2797
- ( !namespaces || namespaces.test(handleObj.namespace) ) &&
2798
- ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector )) {
2799
- eventType.splice(j--, 1);
2800
-
2801
- if (handleObj.selector) {
2802
- eventType.delegateCount--;
2803
- }
2804
- if (special.remove) {
2805
- special.remove.call(elem, handleObj);
2806
- }
2807
- }
2808
- }
2809
-
2810
- // Remove generic event handler if we removed something and no more handlers exist
2811
- // (avoids potential for endless recursion during removal of special event handlers)
2812
- if (eventType.length === 0 && origCount !== eventType.length) {
2813
- if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) {
2814
- jQuery.removeEvent(elem, type, elemData.handle);
2815
- }
2816
-
2817
- delete events[ type ];
2818
- }
2819
- }
2820
-
2821
- // Remove the expando if it's no longer used
2822
- if (jQuery.isEmptyObject(events)) {
2823
- delete elemData.handle;
2824
-
2825
- // removeData also checks for emptiness and clears the expando if empty
2826
- // so use it instead of delete
2827
- jQuery.removeData(elem, "events", true);
2828
- }
2829
- },
2830
-
2831
- // Events that are safe to short-circuit if no handlers are attached.
2832
- // Native DOM events should not be added, they may have inline handlers.
2833
- customEvent: {
2834
- "getData": true,
2835
- "setData": true,
2836
- "changeData": true
2837
- },
2838
-
2839
- trigger: function (event, data, elem, onlyHandlers) {
2840
- // Don't do events on text and comment nodes
2841
- if (elem && (elem.nodeType === 3 || elem.nodeType === 8)) {
2842
- return;
2843
- }
2844
-
2845
- // Event object or event type
2846
- var cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType,
2847
- type = event.type || event,
2848
- namespaces = [];
2849
-
2850
- // focus/blur morphs to focusin/out; ensure we're not firing them right now
2851
- if (rfocusMorph.test(type + jQuery.event.triggered)) {
2852
- return;
2853
- }
2854
-
2855
- if (type.indexOf("!") >= 0) {
2856
- // Exclusive events trigger only for the exact event (no namespaces)
2857
- type = type.slice(0, -1);
2858
- exclusive = true;
2859
- }
2860
-
2861
- if (type.indexOf(".") >= 0) {
2862
- // Namespaced trigger; create a regexp to match event type in handle()
2863
- namespaces = type.split(".");
2864
- type = namespaces.shift();
2865
- namespaces.sort();
2866
- }
2867
-
2868
- if ((!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ]) {
2869
- // No jQuery handlers for this event type, and it can't have inline handlers
2870
- return;
2871
- }
2872
-
2873
- // Caller can pass in an Event, Object, or just an event type string
2874
- event = typeof event === "object" ?
2875
- // jQuery.Event object
2876
- event[ jQuery.expando ] ? event :
2877
- // Object literal
2878
- new jQuery.Event(type, event) :
2879
- // Just the event type (string)
2880
- new jQuery.Event(type);
2881
-
2882
- event.type = type;
2883
- event.isTrigger = true;
2884
- event.exclusive = exclusive;
2885
- event.namespace = namespaces.join(".");
2886
- event.namespace_re = event.namespace ? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null;
2887
- ontype = type.indexOf(":") < 0 ? "on" + type : "";
2888
-
2889
- // Handle a global trigger
2890
- if (!elem) {
2891
-
2892
- // TODO: Stop taunting the data cache; remove global events and always attach to document
2893
- cache = jQuery.cache;
2894
- for (i in cache) {
2895
- if (cache[ i ].events && cache[ i ].events[ type ]) {
2896
- jQuery.event.trigger(event, data, cache[ i ].handle.elem, true);
2897
- }
2898
- }
2899
- return;
2900
- }
2901
-
2902
- // Clean up the event in case it is being reused
2903
- event.result = undefined;
2904
- if (!event.target) {
2905
- event.target = elem;
2906
- }
2907
-
2908
- // Clone any incoming data and prepend the event, creating the handler arg list
2909
- data = data != null ? jQuery.makeArray(data) : [];
2910
- data.unshift(event);
2911
-
2912
- // Allow special events to draw outside the lines
2913
- special = jQuery.event.special[ type ] || {};
2914
- if (special.trigger && special.trigger.apply(elem, data) === false) {
2915
- return;
2916
- }
2917
-
2918
- // Determine event propagation path in advance, per W3C events spec (#9951)
2919
- // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
2920
- eventPath = [
2921
- [ elem, special.bindType || type ]
2922
- ];
2923
- if (!onlyHandlers && !special.noBubble && !jQuery.isWindow(elem)) {
2924
-
2925
- bubbleType = special.delegateType || type;
2926
- cur = rfocusMorph.test(bubbleType + type) ? elem : elem.parentNode;
2927
- for (old = elem; cur; cur = cur.parentNode) {
2928
- eventPath.push([ cur, bubbleType ]);
2929
- old = cur;
2930
- }
2931
-
2932
- // Only add window if we got to document (e.g., not plain obj or detached DOM)
2933
- if (old === (elem.ownerDocument || document)) {
2934
- eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);
2935
- }
2936
- }
2937
-
2938
- // Fire handlers on the event path
2939
- for (i = 0; i < eventPath.length && !event.isPropagationStopped(); i++) {
2940
-
2941
- cur = eventPath[i][0];
2942
- event.type = eventPath[i][1];
2943
-
2944
- handle = ( jQuery._data(cur, "events") || {} )[ event.type ] && jQuery._data(cur, "handle");
2945
- if (handle) {
2946
- handle.apply(cur, data);
2947
- }
2948
- // Note that this is a bare JS function and not a jQuery handler
2949
- handle = ontype && cur[ ontype ];
2950
- if (handle && jQuery.acceptData(cur) && handle.apply && handle.apply(cur, data) === false) {
2951
- event.preventDefault();
2952
- }
2953
- }
2954
- event.type = type;
2955
-
2956
- // If nobody prevented the default action, do it now
2957
- if (!onlyHandlers && !event.isDefaultPrevented()) {
2958
-
2959
- if ((!special._default || special._default.apply(elem.ownerDocument, data) === false) && !(type === "click" && jQuery.nodeName(elem, "a")) && jQuery.acceptData(elem)) {
2960
-
2961
- // Call a native DOM method on the target with the same name name as the event.
2962
- // Can't use an .isFunction() check here because IE6/7 fails that test.
2963
- // Don't do default actions on window, that's where global variables be (#6170)
2964
- // IE<9 dies on focus/blur to hidden element (#1486)
2965
- if (ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow(elem)) {
2966
-
2967
- // Don't re-trigger an onFOO event when we call its FOO() method
2968
- old = elem[ ontype ];
2969
-
2970
- if (old) {
2971
- elem[ ontype ] = null;
2972
- }
2973
-
2974
- // Prevent re-triggering of the same event, since we already bubbled it above
2975
- jQuery.event.triggered = type;
2976
- elem[ type ]();
2977
- jQuery.event.triggered = undefined;
2978
-
2979
- if (old) {
2980
- elem[ ontype ] = old;
2981
- }
2982
- }
2983
- }
2984
- }
2985
-
2986
- return event.result;
2987
- },
2988
-
2989
- dispatch: function (event) {
2990
-
2991
- // Make a writable jQuery.Event from the native event object
2992
- event = jQuery.event.fix(event || window.event);
2993
-
2994
- var i, j, cur, ret, selMatch, matched, matches, handleObj, sel, related,
2995
- handlers = ( (jQuery._data(this, "events") || {} )[ event.type ] || []),
2996
- delegateCount = handlers.delegateCount,
2997
- args = core_slice.call(arguments),
2998
- run_all = !event.exclusive && !event.namespace,
2999
- special = jQuery.event.special[ event.type ] || {},
3000
- handlerQueue = [];
3001
-
3002
- // Use the fix-ed jQuery.Event rather than the (read-only) native event
3003
- args[0] = event;
3004
- event.delegateTarget = this;
3005
-
3006
- // Call the preDispatch hook for the mapped type, and let it bail if desired
3007
- if (special.preDispatch && special.preDispatch.call(this, event) === false) {
3008
- return;
3009
- }
3010
-
3011
- // Determine handlers that should run if there are delegated events
3012
- // Avoid non-left-click bubbling in Firefox (#3861)
3013
- if (delegateCount && !(event.button && event.type === "click")) {
3014
-
3015
- for (cur = event.target; cur != this; cur = cur.parentNode || this) {
3016
-
3017
- // Don't process clicks (ONLY) on disabled elements (#6911, #8165, #11382, #11764)
3018
- if (cur.disabled !== true || event.type !== "click") {
3019
- selMatch = {};
3020
- matches = [];
3021
- for (i = 0; i < delegateCount; i++) {
3022
- handleObj = handlers[ i ];
3023
- sel = handleObj.selector;
3024
-
3025
- if (selMatch[ sel ] === undefined) {
3026
- selMatch[ sel ] = handleObj.needsContext ?
3027
- jQuery(sel, this).index(cur) >= 0 :
3028
- jQuery.find(sel, this, null, [ cur ]).length;
3029
- }
3030
- if (selMatch[ sel ]) {
3031
- matches.push(handleObj);
3032
- }
3033
- }
3034
- if (matches.length) {
3035
- handlerQueue.push({ elem: cur, matches: matches });
3036
- }
3037
- }
3038
- }
3039
- }
3040
-
3041
- // Add the remaining (directly-bound) handlers
3042
- if (handlers.length > delegateCount) {
3043
- handlerQueue.push({ elem: this, matches: handlers.slice(delegateCount) });
3044
- }
3045
-
3046
- // Run delegates first; they may want to stop propagation beneath us
3047
- for (i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++) {
3048
- matched = handlerQueue[ i ];
3049
- event.currentTarget = matched.elem;
3050
-
3051
- for (j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++) {
3052
- handleObj = matched.matches[ j ];
3053
-
3054
- // Triggered event must either 1) be non-exclusive and have no namespace, or
3055
- // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
3056
- if (run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test(handleObj.namespace)) {
3057
-
3058
- event.data = handleObj.data;
3059
- event.handleObj = handleObj;
3060
-
3061
- ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
3062
- .apply(matched.elem, args);
3063
-
3064
- if (ret !== undefined) {
3065
- event.result = ret;
3066
- if (ret === false) {
3067
- event.preventDefault();
3068
- event.stopPropagation();
3069
- }
3070
- }
3071
- }
3072
- }
3073
- }
3074
-
3075
- // Call the postDispatch hook for the mapped type
3076
- if (special.postDispatch) {
3077
- special.postDispatch.call(this, event);
3078
- }
3079
-
3080
- return event.result;
3081
- },
3082
-
3083
- // Includes some event props shared by KeyEvent and MouseEvent
3084
- // *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 ***
3085
- props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
3086
-
3087
- fixHooks: {},
3088
-
3089
- keyHooks: {
3090
- props: "char charCode key keyCode".split(" "),
3091
- filter: function (event, original) {
3092
-
3093
- // Add which for key events
3094
- if (event.which == null) {
3095
- event.which = original.charCode != null ? original.charCode : original.keyCode;
3096
- }
3097
-
3098
- return event;
3099
- }
3100
- },
3101
-
3102
- mouseHooks: {
3103
- props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
3104
- filter: function (event, original) {
3105
- var eventDoc, doc, body,
3106
- button = original.button,
3107
- fromElement = original.fromElement;
3108
-
3109
- // Calculate pageX/Y if missing and clientX/Y available
3110
- if (event.pageX == null && original.clientX != null) {
3111
- eventDoc = event.target.ownerDocument || document;
3112
- doc = eventDoc.documentElement;
3113
- body = eventDoc.body;
3114
-
3115
- event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
3116
- event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );
3117
- }
3118
-
3119
- // Add relatedTarget, if necessary
3120
- if (!event.relatedTarget && fromElement) {
3121
- event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
3122
- }
3123
-
3124
- // Add which for click: 1 === left; 2 === middle; 3 === right
3125
- // Note: button is not normalized, so don't use it
3126
- if (!event.which && button !== undefined) {
3127
- event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
3128
- }
3129
-
3130
- return event;
3131
- }
3132
- },
3133
-
3134
- fix: function (event) {
3135
- if (event[ jQuery.expando ]) {
3136
- return event;
3137
- }
3138
-
3139
- // Create a writable copy of the event object and normalize some properties
3140
- var i, prop,
3141
- originalEvent = event,
3142
- fixHook = jQuery.event.fixHooks[ event.type ] || {},
3143
- copy = fixHook.props ? this.props.concat(fixHook.props) : this.props;
3144
-
3145
- event = jQuery.Event(originalEvent);
3146
-
3147
- for (i = copy.length; i;) {
3148
- prop = copy[ --i ];
3149
- event[ prop ] = originalEvent[ prop ];
3150
- }
3151
-
3152
- // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)
3153
- if (!event.target) {
3154
- event.target = originalEvent.srcElement || document;
3155
- }
3156
-
3157
- // Target should not be a text node (#504, Safari)
3158
- if (event.target.nodeType === 3) {
3159
- event.target = event.target.parentNode;
3160
- }
3161
-
3162
- // For mouse/key events, metaKey==false if it's undefined (#3368, #11328; IE6/7/8)
3163
- event.metaKey = !!event.metaKey;
3164
-
3165
- return fixHook.filter ? fixHook.filter(event, originalEvent) : event;
3166
- },
3167
-
3168
- special: {
3169
- load: {
3170
- // Prevent triggered image.load events from bubbling to window.load
3171
- noBubble: true
3172
- },
3173
-
3174
- focus: {
3175
- delegateType: "focusin"
3176
- },
3177
- blur: {
3178
- delegateType: "focusout"
3179
- },
3180
-
3181
- beforeunload: {
3182
- setup: function (data, namespaces, eventHandle) {
3183
- // We only want to do this special case on windows
3184
- if (jQuery.isWindow(this)) {
3185
- this.onbeforeunload = eventHandle;
3186
- }
3187
- },
3188
-
3189
- teardown: function (namespaces, eventHandle) {
3190
- if (this.onbeforeunload === eventHandle) {
3191
- this.onbeforeunload = null;
3192
- }
3193
- }
3194
- }
3195
- },
3196
-
3197
- simulate: function (type, elem, event, bubble) {
3198
- // Piggyback on a donor event to simulate a different one.
3199
- // Fake originalEvent to avoid donor's stopPropagation, but if the
3200
- // simulated event prevents default then we do the same on the donor.
3201
- var e = jQuery.extend(
3202
- new jQuery.Event(),
3203
- event,
3204
- { type: type,
3205
- isSimulated: true,
3206
- originalEvent: {}
3207
- }
3208
- );
3209
- if (bubble) {
3210
- jQuery.event.trigger(e, null, elem);
3211
- } else {
3212
- jQuery.event.dispatch.call(elem, e);
3213
- }
3214
- if (e.isDefaultPrevented()) {
3215
- event.preventDefault();
3216
- }
3217
- }
3218
- };
3219
 
3220
  // Some plugins are using, but it's undocumented/deprecated and will be removed.
3221
  // The 1.7 special event interface should provide all the hooks needed now.
3222
- jQuery.event.handle = jQuery.event.dispatch;
3223
-
3224
- jQuery.removeEvent = document.removeEventListener ?
3225
- function (elem, type, handle) {
3226
- if (elem.removeEventListener) {
3227
- elem.removeEventListener(type, handle, false);
3228
- }
3229
- } :
3230
- function (elem, type, handle) {
3231
- var name = "on" + type;
3232
-
3233
- if (elem.detachEvent) {
3234
-
3235
- // #8545, #7054, preventing memory leaks for custom events in IE6-8
3236
- // detachEvent needed property on element, by name of that event, to properly expose it to GC
3237
- if (typeof elem[ name ] === "undefined") {
3238
- elem[ name ] = null;
3239
- }
3240
-
3241
- elem.detachEvent(name, handle);
3242
- }
3243
- };
3244
-
3245
- jQuery.Event = function (src, props) {
3246
- // Allow instantiation without the 'new' keyword
3247
- if (!(this instanceof jQuery.Event)) {
3248
- return new jQuery.Event(src, props);
3249
- }
3250
-
3251
- // Event object
3252
- if (src && src.type) {
3253
- this.originalEvent = src;
3254
- this.type = src.type;
3255
-
3256
- // Events bubbling up the document may have been marked as prevented
3257
- // by a handler lower down the tree; reflect the correct value.
3258
- this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||
3259
- src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
3260
-
3261
- // Event type
3262
- } else {
3263
- this.type = src;
3264
- }
3265
-
3266
- // Put explicitly provided properties onto the event object
3267
- if (props) {
3268
- jQuery.extend(this, props);
3269
- }
3270
-
3271
- // Create a timestamp if incoming event doesn't have one
3272
- this.timeStamp = src && src.timeStamp || jQuery.now();
3273
-
3274
- // Mark it as fixed
3275
- this[ jQuery.expando ] = true;
3276
- };
3277
-
3278
- function returnFalse() {
3279
- return false;
3280
- }
3281
-
3282
- function returnTrue() {
3283
- return true;
3284
- }
3285
 
3286
  // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
3287
  // http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
3288
- jQuery.Event.prototype = {
3289
- preventDefault: function () {
3290
- this.isDefaultPrevented = returnTrue;
3291
-
3292
- var e = this.originalEvent;
3293
- if (!e) {
3294
- return;
3295
- }
3296
-
3297
- // if preventDefault exists run it on the original event
3298
- if (e.preventDefault) {
3299
- e.preventDefault();
3300
-
3301
- // otherwise set the returnValue property of the original event to false (IE)
3302
- } else {
3303
- e.returnValue = false;
3304
- }
3305
- },
3306
- stopPropagation: function () {
3307
- this.isPropagationStopped = returnTrue;
3308
-
3309
- var e = this.originalEvent;
3310
- if (!e) {
3311
- return;
3312
- }
3313
- // if stopPropagation exists run it on the original event
3314
- if (e.stopPropagation) {
3315
- e.stopPropagation();
3316
- }
3317
- // otherwise set the cancelBubble property of the original event to true (IE)
3318
- e.cancelBubble = true;
3319
- },
3320
- stopImmediatePropagation: function () {
3321
- this.isImmediatePropagationStopped = returnTrue;
3322
- this.stopPropagation();
3323
- },
3324
- isDefaultPrevented: returnFalse,
3325
- isPropagationStopped: returnFalse,
3326
- isImmediatePropagationStopped: returnFalse
3327
- };
3328
 
3329
  // Create mouseenter/leave events using mouseover/out and event-time checks
3330
- jQuery.each({
3331
- mouseenter: "mouseover",
3332
- mouseleave: "mouseout"
3333
- }, function (orig, fix) {
3334
- jQuery.event.special[ orig ] = {
3335
- delegateType: fix,
3336
- bindType: fix,
3337
-
3338
- handle: function (event) {
3339
- var ret,
3340
- target = this,
3341
- related = event.relatedTarget,
3342
- handleObj = event.handleObj,
3343
- selector = handleObj.selector;
3344
-
3345
- // For mousenter/leave call the handler if related is outside the target.
3346
- // NB: No relatedTarget if the mouse left/entered the browser window
3347
- if (!related || (related !== target && !jQuery.contains(target, related))) {
3348
- event.type = handleObj.origType;
3349
- ret = handleObj.handler.apply(this, arguments);
3350
- event.type = fix;
3351
- }
3352
- return ret;
3353
- }
3354
- };
3355
- });
3356
 
3357
  // IE submit delegation
3358
- if (!jQuery.support.submitBubbles) {
3359
-
3360
- jQuery.event.special.submit = {
3361
- setup: function () {
3362
- // Only need this for delegated form submit events
3363
- if (jQuery.nodeName(this, "form")) {
3364
- return false;
3365
- }
3366
-
3367
- // Lazy-add a submit handler when a descendant form may potentially be submitted
3368
- jQuery.event.add(this, "click._submit keypress._submit", function (e) {
3369
- // Node name check avoids a VML-related crash in IE (#9807)
3370
- var elem = e.target,
3371
- form = jQuery.nodeName(elem, "input") || jQuery.nodeName(elem, "button") ? elem.form : undefined;
3372
- if (form && !jQuery._data(form, "_submit_attached")) {
3373
- jQuery.event.add(form, "submit._submit", function (event) {
3374
- event._submit_bubble = true;
3375
- });
3376
- jQuery._data(form, "_submit_attached", true);
3377
- }
3378
- });
3379
- // return undefined since we don't need an event listener
3380
- },
3381
-
3382
- postDispatch: function (event) {
3383
- // If form was submitted by the user, bubble the event up the tree
3384
- if (event._submit_bubble) {
3385
- delete event._submit_bubble;
3386
- if (this.parentNode && !event.isTrigger) {
3387
- jQuery.event.simulate("submit", this.parentNode, event, true);
3388
- }
3389
- }
3390
- },
3391
-
3392
- teardown: function () {
3393
- // Only need this for delegated form submit events
3394
- if (jQuery.nodeName(this, "form")) {
3395
- return false;
3396
- }
3397
-
3398
- // Remove delegated handlers; cleanData eventually reaps submit handlers attached above
3399
- jQuery.event.remove(this, "._submit");
3400
- }
3401
- };
3402
- }
3403
 
3404
  // IE change delegation and checkbox/radio fix
3405
- if (!jQuery.support.changeBubbles) {
3406
-
3407
- jQuery.event.special.change = {
3408
-
3409
- setup: function () {
3410
-
3411
- if (rformElems.test(this.nodeName)) {
3412
- // IE doesn't fire change on a check/radio until blur; trigger it on click
3413
- // after a propertychange. Eat the blur-change in special.change.handle.
3414
- // This still fires onchange a second time for check/radio after blur.
3415
- if (this.type === "checkbox" || this.type === "radio") {
3416
- jQuery.event.add(this, "propertychange._change", function (event) {
3417
- if (event.originalEvent.propertyName === "checked") {
3418
- this._just_changed = true;
3419
- }
3420
- });
3421
- jQuery.event.add(this, "click._change", function (event) {
3422
- if (this._just_changed && !event.isTrigger) {
3423
- this._just_changed = false;
3424
- }
3425
- // Allow triggered, simulated change events (#11500)
3426
- jQuery.event.simulate("change", this, event, true);
3427
- });
3428
- }
3429
- return false;
3430
- }
3431
- // Delegated event; lazy-add a change handler on descendant inputs
3432
- jQuery.event.add(this, "beforeactivate._change", function (e) {
3433
- var elem = e.target;
3434
-
3435
- if (rformElems.test(elem.nodeName) && !jQuery._data(elem, "_change_attached")) {
3436
- jQuery.event.add(elem, "change._change", function (event) {
3437
- if (this.parentNode && !event.isSimulated && !event.isTrigger) {
3438
- jQuery.event.simulate("change", this.parentNode, event, true);
3439
- }
3440
- });
3441
- jQuery._data(elem, "_change_attached", true);
3442
- }
3443
- });
3444
- },
3445
-
3446
- handle: function (event) {
3447
- var elem = event.target;
3448
-
3449
- // Swallow native change events from checkbox/radio, we already triggered them above
3450
- if (this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox")) {
3451
- return event.handleObj.handler.apply(this, arguments);
3452
- }
3453
- },
3454
-
3455
- teardown: function () {
3456
- jQuery.event.remove(this, "._change");
3457
-
3458
- return !rformElems.test(this.nodeName);
3459
- }
3460
- };
3461
- }
11
  *
12
  * Date: Tue Nov 13 2012 08:20:33 GMT-0500 (Eastern Standard Time)
13
  */
14
+ (function( window, undefined ) {
15
+ var
16
+ // A central reference to the root jQuery(document)
17
+ rootjQuery,
18
+
19
+ // The deferred used on DOM ready
20
+ readyList,
21
+
22
+ // Use the correct document accordingly with window argument (sandbox)
23
+ document = window.document,
24
+ location = window.location,
25
+ navigator = window.navigator,
26
+
27
+ // Map over jQuery in case of overwrite
28
+ _jQuery = window.jQuery,
29
+
30
+ // Map over the $ in case of overwrite
31
+ _$ = window.$,
32
+
33
+ // Save a reference to some core methods
34
+ core_push = Array.prototype.push,
35
+ core_slice = Array.prototype.slice,
36
+ core_indexOf = Array.prototype.indexOf,
37
+ core_toString = Object.prototype.toString,
38
+ core_hasOwn = Object.prototype.hasOwnProperty,
39
+ core_trim = String.prototype.trim,
40
+
41
+ // Define a local copy of jQuery
42
+ jQuery = function( selector, context ) {
43
+ // The jQuery object is actually just the init constructor 'enhanced'
44
+ return new jQuery.fn.init( selector, context, rootjQuery );
45
+ },
46
+
47
+ // Used for matching numbers
48
+ core_pnum = /[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,
49
+
50
+ // Used for detecting and trimming whitespace
51
+ core_rnotwhite = /\S/,
52
+ core_rspace = /\s+/,
53
+
54
+ // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)
55
+ rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
56
+
57
+ // A simple way to check for HTML strings
58
+ // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
59
+ rquickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
60
+
61
+ // Match a standalone tag
62
+ rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
63
+
64
+ // JSON RegExp
65
+ rvalidchars = /^[\],:{}\s]*$/,
66
+ rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
67
+ rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
68
+ rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,
69
+
70
+ // Matches dashed string for camelizing
71
+ rmsPrefix = /^-ms-/,
72
+ rdashAlpha = /-([\da-z])/gi,
73
+
74
+ // Used by jQuery.camelCase as callback to replace()
75
+ fcamelCase = function( all, letter ) {
76
+ return ( letter + "" ).toUpperCase();
77
+ },
78
+
79
+ // The ready event handler and self cleanup method
80
+ DOMContentLoaded = function() {
81
+ if ( document.addEventListener ) {
82
+ document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
83
+ jQuery.ready();
84
+ } else if ( document.readyState === "complete" ) {
85
+ // we're here because readyState === "complete" in oldIE
86
+ // which is good enough for us to call the dom ready!
87
+ document.detachEvent( "onreadystatechange", DOMContentLoaded );
88
+ jQuery.ready();
89
+ }
90
+ },
91
+
92
+ // [[Class]] -> type pairs
93
+ class2type = {};
94
+
95
+ jQuery.fn = jQuery.prototype = {
96
+ constructor: jQuery,
97
+ init: function( selector, context, rootjQuery ) {
98
+ var match, elem, ret, doc;
99
+
100
+ // Handle $(""), $(null), $(undefined), $(false)
101
+ if ( !selector ) {
102
+ return this;
103
+ }
104
+
105
+ // Handle $(DOMElement)
106
+ if ( selector.nodeType ) {
107
+ this.context = this[0] = selector;
108
+ this.length = 1;
109
+ return this;
110
+ }
111
+
112
+ // Handle HTML strings
113
+ if ( typeof selector === "string" ) {
114
+ if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
115
+ // Assume that strings that start and end with <> are HTML and skip the regex check
116
+ match = [ null, selector, null ];
117
+
118
+ } else {
119
+ match = rquickExpr.exec( selector );
120
+ }
121
+
122
+ // Match html or make sure no context is specified for #id
123
+ if ( match && (match[1] || !context) ) {
124
+
125
+ // HANDLE: $(html) -> $(array)
126
+ if ( match[1] ) {
127
+ context = context instanceof jQuery ? context[0] : context;
128
+ doc = ( context && context.nodeType ? context.ownerDocument || context : document );
129
+
130
+ // scripts is true for back-compat
131
+ selector = jQuery.parseHTML( match[1], doc, true );
132
+ if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
133
+ this.attr.call( selector, context, true );
134
+ }
135
+
136
+ return jQuery.merge( this, selector );
137
+
138
+ // HANDLE: $(#id)
139
+ } else {
140
+ elem = document.getElementById( match[2] );
141
+
142
+ // Check parentNode to catch when Blackberry 4.6 returns
143
+ // nodes that are no longer in the document #6963
144
+ if ( elem && elem.parentNode ) {
145
+ // Handle the case where IE and Opera return items
146
+ // by name instead of ID
147
+ if ( elem.id !== match[2] ) {
148
+ return rootjQuery.find( selector );
149
+ }
150
+
151
+ // Otherwise, we inject the element directly into the jQuery object
152
+ this.length = 1;
153
+ this[0] = elem;
154
+ }
155
+
156
+ this.context = document;
157
+ this.selector = selector;
158
+ return this;
159
+ }
160
+
161
+ // HANDLE: $(expr, $(...))
162
+ } else if ( !context || context.jquery ) {
163
+ return ( context || rootjQuery ).find( selector );
164
+
165
+ // HANDLE: $(expr, context)
166
+ // (which is just equivalent to: $(context).find(expr)
167
+ } else {
168
+ return this.constructor( context ).find( selector );
169
+ }
170
+
171
+ // HANDLE: $(function)
172
+ // Shortcut for document ready
173
+ } else if ( jQuery.isFunction( selector ) ) {
174
+ return rootjQuery.ready( selector );
175
+ }
176
+
177
+ if ( selector.selector !== undefined ) {
178
+ this.selector = selector.selector;
179
+ this.context = selector.context;
180
+ }
181
+
182
+ return jQuery.makeArray( selector, this );
183
+ },
184
+
185
+ // Start with an empty selector
186
+ selector: "",
187
+
188
+ // The current version of jQuery being used
189
+ jquery: "1.8.3",
190
+
191
+ // The default length of a jQuery object is 0
192
+ length: 0,
193
+
194
+ // The number of elements contained in the matched element set
195
+ size: function() {
196
+ return this.length;
197
+ },
198
+
199
+ toArray: function() {
200
+ return core_slice.call( this );
201
+ },
202
+
203
+ // Get the Nth element in the matched element set OR
204
+ // Get the whole matched element set as a clean array
205
+ get: function( num ) {
206
+ return num == null ?
207
+
208
+ // Return a 'clean' array
209
+ this.toArray() :
210
+
211
+ // Return just the object
212
+ ( num < 0 ? this[ this.length + num ] : this[ num ] );
213
+ },
214
+
215
+ // Take an array of elements and push it onto the stack
216
+ // (returning the new matched element set)
217
+ pushStack: function( elems, name, selector ) {
218
+
219
+ // Build a new jQuery matched element set
220
+ var ret = jQuery.merge( this.constructor(), elems );
221
+
222
+ // Add the old object onto the stack (as a reference)
223
+ ret.prevObject = this;
224
+
225
+ ret.context = this.context;
226
+
227
+ if ( name === "find" ) {
228
+ ret.selector = this.selector + ( this.selector ? " " : "" ) + selector;
229
+ } else if ( name ) {
230
+ ret.selector = this.selector + "." + name + "(" + selector + ")";
231
+ }
232
+
233
+ // Return the newly-formed element set
234
+ return ret;
235
+ },
236
+
237
+ // Execute a callback for every element in the matched set.
238
+ // (You can seed the arguments with an array of args, but this is
239
+ // only used internally.)
240
+ each: function( callback, args ) {
241
+ return jQuery.each( this, callback, args );
242
+ },
243
+
244
+ ready: function( fn ) {
245
+ // Add the callback
246
+ jQuery.ready.promise().done( fn );
247
+
248
+ return this;
249
+ },
250
+
251
+ eq: function( i ) {
252
+ i = +i;
253
+ return i === -1 ?
254
+ this.slice( i ) :
255
+ this.slice( i, i + 1 );
256
+ },
257
+
258
+ first: function() {
259
+ return this.eq( 0 );
260
+ },
261
+
262
+ last: function() {
263
+ return this.eq( -1 );
264
+ },
265
+
266
+ slice: function() {
267
+ return this.pushStack( core_slice.apply( this, arguments ),
268
+ "slice", core_slice.call(arguments).join(",") );
269
+ },
270
+
271
+ map: function( callback ) {
272
+ return this.pushStack( jQuery.map(this, function( elem, i ) {
273
+ return callback.call( elem, i, elem );
274
+ }));
275
+ },
276
+
277
+ end: function() {
278
+ return this.prevObject || this.constructor(null);
279
+ },
280
+
281
+ // For internal use only.
282
+ // Behaves like an Array's method, not like a jQuery method.
283
+ push: core_push,
284
+ sort: [].sort,
285
+ splice: [].splice
286
+ };
287
 
288
  // Give the init function the jQuery prototype for later instantiation
289
+ jQuery.fn.init.prototype = jQuery.fn;
290
+
291
+ jQuery.extend = jQuery.fn.extend = function() {
292
+ var options, name, src, copy, copyIsArray, clone,
293
+ target = arguments[0] || {},
294
+ i = 1,
295
+ length = arguments.length,
296
+ deep = false;
297
+
298
+ // Handle a deep copy situation
299
+ if ( typeof target === "boolean" ) {
300
+ deep = target;
301
+ target = arguments[1] || {};
302
+ // skip the boolean and the target
303
+ i = 2;
304
+ }
305
+
306
+ // Handle case when target is a string or something (possible in deep copy)
307
+ if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
308
+ target = {};
309
+ }
310
+
311
+ // extend jQuery itself if only one argument is passed
312
+ if ( length === i ) {
313
+ target = this;
314
+ --i;
315
+ }
316
+
317
+ for ( ; i < length; i++ ) {
318
+ // Only deal with non-null/undefined values
319
+ if ( (options = arguments[ i ]) != null ) {
320
+ // Extend the base object
321
+ for ( name in options ) {
322
+ src = target[ name ];
323
+ copy = options[ name ];
324
+
325
+ // Prevent never-ending loop
326
+ if ( target === copy ) {
327
+ continue;
328
+ }
329
+
330
+ // Recurse if we're merging plain objects or arrays
331
+ if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
332
+ if ( copyIsArray ) {
333
+ copyIsArray = false;
334
+ clone = src && jQuery.isArray(src) ? src : [];
335
+
336
+ } else {
337
+ clone = src && jQuery.isPlainObject(src) ? src : {};
338
+ }
339
+
340
+ // Never move original objects, clone them
341
+ target[ name ] = jQuery.extend( deep, clone, copy );
342
+
343
+ // Don't bring in undefined values
344
+ } else if ( copy !== undefined ) {
345
+ target[ name ] = copy;
346
+ }
347
+ }
348
+ }
349
+ }
350
+
351
+ // Return the modified object
352
+ return target;
353
+ };
354
+
355
+ jQuery.extend({
356
+ noConflict: function( deep ) {
357
+ if ( window.$ === jQuery ) {
358
+ window.$ = _$;
359
+ }
360
+
361
+ if ( deep && window.jQuery === jQuery ) {
362
+ window.jQuery = _jQuery;
363
+ }
364
+
365
+ return jQuery;
366
+ },
367
+
368
+ // Is the DOM ready to be used? Set to true once it occurs.
369
+ isReady: false,
370
+
371
+ // A counter to track how many items to wait for before
372
+ // the ready event fires. See #6781
373
+ readyWait: 1,
374
+
375
+ // Hold (or release) the ready event
376
+ holdReady: function( hold ) {
377
+ if ( hold ) {
378
+ jQuery.readyWait++;
379
+ } else {
380
+ jQuery.ready( true );
381
+ }
382
+ },
383
+
384
+ // Handle when the DOM is ready
385
+ ready: function( wait ) {
386
+
387
+ // Abort if there are pending holds or we're already ready
388
+ if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
389
+ return;
390
+ }
391
+
392
+ // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
393
+ if ( !document.body ) {
394
+ return setTimeout( jQuery.ready, 1 );
395
+ }
396
+
397
+ // Remember that the DOM is ready
398
+ jQuery.isReady = true;
399
+
400
+ // If a normal DOM Ready event fired, decrement, and wait if need be
401
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
402
+ return;
403
+ }
404
+
405
+ // If there are functions bound, to execute
406
+ readyList.resolveWith( document, [ jQuery ] );
407
+
408
+ // Trigger any bound ready events
409
+ if ( jQuery.fn.trigger ) {
410
+ jQuery( document ).trigger("ready").off("ready");
411
+ }
412
+ },
413
+
414
+ // See test/unit/core.js for details concerning isFunction.
415
+ // Since version 1.3, DOM methods and functions like alert
416
+ // aren't supported. They return false on IE (#2968).
417
+ isFunction: function( obj ) {
418
+ return jQuery.type(obj) === "function";
419
+ },
420
+
421
+ isArray: Array.isArray || function( obj ) {
422
+ return jQuery.type(obj) === "array";
423
+ },
424
+
425
+ isWindow: function( obj ) {
426
+ return obj != null && obj == obj.window;
427
+ },
428
+
429
+ isNumeric: function( obj ) {
430
+ return !isNaN( parseFloat(obj) ) && isFinite( obj );
431
+ },
432
+
433
+ type: function( obj ) {
434
+ return obj == null ?
435
+ String( obj ) :
436
+ class2type[ core_toString.call(obj) ] || "object";
437
+ },
438
+
439
+ isPlainObject: function( obj ) {
440
+ // Must be an Object.
441
+ // Because of IE, we also have to check the presence of the constructor property.
442
+ // Make sure that DOM nodes and window objects don't pass through, as well
443
+ if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
444
+ return false;
445
+ }
446
+
447
+ try {
448
+ // Not own constructor property must be Object
449
+ if ( obj.constructor &&
450
+ !core_hasOwn.call(obj, "constructor") &&
451
+ !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
452
+ return false;
453
+ }
454
+ } catch ( e ) {
455
+ // IE8,9 Will throw exceptions on certain host objects #9897
456
+ return false;
457
+ }
458
+
459
+ // Own properties are enumerated firstly, so to speed up,
460
+ // if last one is own, then all properties are own.
461
+
462
+ var key;
463
+ for ( key in obj ) {}
464
+
465
+ return key === undefined || core_hasOwn.call( obj, key );
466
+ },
467
+
468
+ isEmptyObject: function( obj ) {
469
+ var name;
470
+ for ( name in obj ) {
471
+ return false;
472
+ }
473
+ return true;
474
+ },
475
+
476
+ error: function( msg ) {
477
+ throw new Error( msg );
478
+ },
479
+
480
+ // data: string of html
481
+ // context (optional): If specified, the fragment will be created in this context, defaults to document
482
+ // scripts (optional): If true, will include scripts passed in the html string
483
+ parseHTML: function( data, context, scripts ) {
484
+ var parsed;
485
+ if ( !data || typeof data !== "string" ) {
486
+ return null;
487
+ }
488
+ if ( typeof context === "boolean" ) {
489
+ scripts = context;
490
+ context = 0;
491
+ }
492
+ context = context || document;
493
+
494
+ // Single tag
495
+ if ( (parsed = rsingleTag.exec( data )) ) {
496
+ return [ context.createElement( parsed[1] ) ];
497
+ }
498
+
499
+ parsed = jQuery.buildFragment( [ data ], context, scripts ? null : [] );
500
+ return jQuery.merge( [],
501
+ (parsed.cacheable ? jQuery.clone( parsed.fragment ) : parsed.fragment).childNodes );
502
+ },
503
+
504
+ parseJSON: function( data ) {
505
+ if ( !data || typeof data !== "string") {
506
+ return null;
507
+ }
508
+
509
+ // Make sure leading/trailing whitespace is removed (IE can't handle it)
510
+ data = jQuery.trim( data );
511
+
512
+ // Attempt to parse using the native JSON parser first
513
+ if ( window.JSON && window.JSON.parse ) {
514
+ return window.JSON.parse( data );
515
+ }
516
+
517
+ // Make sure the incoming data is actual JSON
518
+ // Logic borrowed from http://json.org/json2.js
519
+ if ( rvalidchars.test( data.replace( rvalidescape, "@" )
520
+ .replace( rvalidtokens, "]" )
521
+ .replace( rvalidbraces, "")) ) {
522
+
523
+ return ( new Function( "return " + data ) )();
524
+
525
+ }
526
+ jQuery.error( "Invalid JSON: " + data );
527
+ },
528
+
529
+ // Cross-browser xml parsing
530
+ parseXML: function( data ) {
531
+ var xml, tmp;
532
+ if ( !data || typeof data !== "string" ) {
533
+ return null;
534
+ }
535
+ try {
536
+ if ( window.DOMParser ) { // Standard
537
+ tmp = new DOMParser();
538
+ xml = tmp.parseFromString( data , "text/xml" );
539
+ } else { // IE
540
+ xml = new ActiveXObject( "Microsoft.XMLDOM" );
541
+ xml.async = "false";
542
+ xml.loadXML( data );
543
+ }
544
+ } catch( e ) {
545
+ xml = undefined;
546
+ }
547
+ if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
548
+ jQuery.error( "Invalid XML: " + data );
549
+ }
550
+ return xml;
551
+ },
552
+
553
+ noop: function() {},
554
+
555
+ // Evaluates a script in a global context
556
+ // Workarounds based on findings by Jim Driscoll
557
+ // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
558
+ globalEval: function( data ) {
559
+ if ( data && core_rnotwhite.test( data ) ) {
560
+ // We use execScript on Internet Explorer
561
+ // We use an anonymous function so that context is window
562
+ // rather than jQuery in Firefox
563
+ ( window.execScript || function( data ) {
564
+ window[ "eval" ].call( window, data );
565
+ } )( data );
566
+ }
567
+ },
568
+
569
+ // Convert dashed to camelCase; used by the css and data modules
570
+ // Microsoft forgot to hump their vendor prefix (#9572)
571
+ camelCase: function( string ) {
572
+ return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
573
+ },
574
+
575
+ nodeName: function( elem, name ) {
576
+ return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
577
+ },
578
+
579
+ // args is for internal usage only
580
+ each: function( obj, callback, args ) {
581
+ var name,
582
+ i = 0,
583
+ length = obj.length,
584
+ isObj = length === undefined || jQuery.isFunction( obj );
585
+
586
+ if ( args ) {
587
+ if ( isObj ) {
588
+ for ( name in obj ) {
589
+ if ( callback.apply( obj[ name ], args ) === false ) {
590
+ break;
591
+ }
592
+ }
593
+ } else {
594
+ for ( ; i < length; ) {
595
+ if ( callback.apply( obj[ i++ ], args ) === false ) {
596
+ break;
597
+ }
598
+ }
599
+ }
600
+
601
+ // A special, fast, case for the most common use of each
602
+ } else {
603
+ if ( isObj ) {
604
+ for ( name in obj ) {
605
+ if ( callback.call( obj[ name ], name, obj[ name ] ) === false ) {
606
+ break;
607
+ }
608
+ }
609
+ } else {
610
+ for ( ; i < length; ) {
611
+ if ( callback.call( obj[ i ], i, obj[ i++ ] ) === false ) {
612
+ break;
613
+ }
614
+ }
615
+ }
616
+ }
617
+
618
+ return obj;
619
+ },
620
+
621
+ // Use native String.trim function wherever possible
622
+ trim: core_trim && !core_trim.call("\uFEFF\xA0") ?
623
+ function( text ) {
624
+ return text == null ?
625
+ "" :
626
+ core_trim.call( text );
627
+ } :
628
+
629
+ // Otherwise use our own trimming functionality
630
+ function( text ) {
631
+ return text == null ?
632
+ "" :
633
+ ( text + "" ).replace( rtrim, "" );
634
+ },
635
+
636
+ // results is for internal usage only
637
+ makeArray: function( arr, results ) {
638
+ var type,
639
+ ret = results || [];
640
+
641
+ if ( arr != null ) {
642
+ // The window, strings (and functions) also have 'length'
643
+ // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
644
+ type = jQuery.type( arr );
645
+
646
+ if ( arr.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( arr ) ) {
647
+ core_push.call( ret, arr );
648
+ } else {
649
+ jQuery.merge( ret, arr );
650
+ }
651
+ }
652
+
653
+ return ret;
654
+ },
655
+
656
+ inArray: function( elem, arr, i ) {
657
+ var len;
658
+
659
+ if ( arr ) {
660
+ if ( core_indexOf ) {
661
+ return core_indexOf.call( arr, elem, i );
662
+ }
663
+
664
+ len = arr.length;
665
+ i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
666
+
667
+ for ( ; i < len; i++ ) {
668
+ // Skip accessing in sparse arrays
669
+ if ( i in arr && arr[ i ] === elem ) {
670
+ return i;
671
+ }
672
+ }
673
+ }
674
+
675
+ return -1;
676
+ },
677
+
678
+ merge: function( first, second ) {
679
+ var l = second.length,
680
+ i = first.length,
681
+ j = 0;
682
+
683
+ if ( typeof l === "number" ) {
684
+ for ( ; j < l; j++ ) {
685
+ first[ i++ ] = second[ j ];
686
+ }
687
+
688
+ } else {
689
+ while ( second[j] !== undefined ) {
690
+ first[ i++ ] = second[ j++ ];
691
+ }
692
+ }
693
+
694
+ first.length = i;
695
+
696
+ return first;
697
+ },
698
+
699
+ grep: function( elems, callback, inv ) {
700
+ var retVal,
701
+ ret = [],
702
+ i = 0,
703
+ length = elems.length;
704
+ inv = !!inv;
705
+
706
+ // Go through the array, only saving the items
707
+ // that pass the validator function
708
+ for ( ; i < length; i++ ) {
709
+ retVal = !!callback( elems[ i ], i );
710
+ if ( inv !== retVal ) {
711
+ ret.push( elems[ i ] );
712
+ }
713
+ }
714
+
715
+ return ret;
716
+ },
717
+
718
+ // arg is for internal usage only
719
+ map: function( elems, callback, arg ) {
720
+ var value, key,
721
+ ret = [],
722
+ i = 0,
723
+ length = elems.length,
724
+ // jquery objects are treated as arrays
725
+ isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;
726
+
727
+ // Go through the array, translating each of the items to their
728
+ if ( isArray ) {
729
+ for ( ; i < length; i++ ) {
730
+ value = callback( elems[ i ], i, arg );
731
+
732
+ if ( value != null ) {
733
+ ret[ ret.length ] = value;
734
+ }
735
+ }
736
+
737
+ // Go through every key on the object,
738
+ } else {
739
+ for ( key in elems ) {
740
+ value = callback( elems[ key ], key, arg );
741
+
742
+ if ( value != null ) {
743
+ ret[ ret.length ] = value;
744
+ }
745
+ }
746
+ }
747
+
748
+ // Flatten any nested arrays
749
+ return ret.concat.apply( [], ret );
750
+ },
751
+
752
+ // A global GUID counter for objects
753
+ guid: 1,
754
+
755
+ // Bind a function to a context, optionally partially applying any
756
+ // arguments.
757
+ proxy: function( fn, context ) {
758
+ var tmp, args, proxy;
759
+
760
+ if ( typeof context === "string" ) {
761
+ tmp = fn[ context ];
762
+ context = fn;
763
+ fn = tmp;
764
+ }
765
+
766
+ // Quick check to determine if target is callable, in the spec
767
+ // this throws a TypeError, but we will just return undefined.
768
+ if ( !jQuery.isFunction( fn ) ) {
769
+ return undefined;
770
+ }
771
+
772
+ // Simulated bind
773
+ args = core_slice.call( arguments, 2 );
774
+ proxy = function() {
775
+ return fn.apply( context, args.concat( core_slice.call( arguments ) ) );
776
+ };
777
+
778
+ // Set the guid of unique handler to the same of original handler, so it can be removed
779
+ proxy.guid = fn.guid = fn.guid || jQuery.guid++;
780
+
781
+ return proxy;
782
+ },
783
+
784
+ // Multifunctional method to get and set values of a collection
785
+ // The value/s can optionally be executed if it's a function
786
+ access: function( elems, fn, key, value, chainable, emptyGet, pass ) {
787
+ var exec,
788
+ bulk = key == null,
789
+ i = 0,
790
+ length = elems.length;
791
+
792
+ // Sets many values
793
+ if ( key && typeof key === "object" ) {
794
+ for ( i in key ) {
795
+ jQuery.access( elems, fn, i, key[i], 1, emptyGet, value );
796
+ }
797
+ chainable = 1;
798
+
799
+ // Sets one value
800
+ } else if ( value !== undefined ) {
801
+ // Optionally, function values get executed if exec is true
802
+ exec = pass === undefined && jQuery.isFunction( value );
803
+
804
+ if ( bulk ) {
805
+ // Bulk operations only iterate when executing function values
806
+ if ( exec ) {
807
+ exec = fn;
808
+ fn = function( elem, key, value ) {
809
+ return exec.call( jQuery( elem ), value );
810
+ };
811
+
812
+ // Otherwise they run against the entire set
813
+ } else {
814
+ fn.call( elems, value );
815
+ fn = null;
816
+ }
817
+ }
818
+
819
+ if ( fn ) {
820
+ for (; i < length; i++ ) {
821
+ fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
822
+ }
823
+ }
824
+
825
+ chainable = 1;
826
+ }
827
+
828
+ return chainable ?
829
+ elems :
830
+
831
+ // Gets
832
+ bulk ?
833
+ fn.call( elems ) :
834
+ length ? fn( elems[0], key ) : emptyGet;
835
+ },
836
+
837
+ now: function() {
838
+ return ( new Date() ).getTime();
839
+ }
840
+ });
841
+
842
+ jQuery.ready.promise = function( obj ) {
843
+ if ( !readyList ) {
844
+
845
+ readyList = jQuery.Deferred();
846
+
847
+ // Catch cases where $(document).ready() is called after the browser event has already occurred.
848
+ // we once tried to use readyState "interactive" here, but it caused issues like the one
849
+ // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
850
+ if ( document.readyState === "complete" ) {
851
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
852
+ setTimeout( jQuery.ready, 1 );
853
+
854
+ // Standards-based browsers support DOMContentLoaded
855
+ } else if ( document.addEventListener ) {
856
+ // Use the handy event callback
857
+ document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
858
+
859
+ // A fallback to window.onload, that will always work
860
+ window.addEventListener( "load", jQuery.ready, false );
861
+
862
+ // If IE event model is used
863
+ } else {
864
+ // Ensure firing before onload, maybe late but safe also for iframes
865
+ document.attachEvent( "onreadystatechange", DOMContentLoaded );
866
+
867
+ // A fallback to window.onload, that will always work
868
+ window.attachEvent( "onload", jQuery.ready );
869
+
870
+ // If IE and not a frame
871
+ // continually check to see if the document is ready
872
+ var top = false;
873
+
874
+ try {
875
+ top = window.frameElement == null && document.documentElement;
876
+ } catch(e) {}
877
+
878
+ if ( top && top.doScroll ) {
879
+ (function doScrollCheck() {
880
+ if ( !jQuery.isReady ) {
881
+
882
+ try {
883
+ // Use the trick by Diego Perini
884
+ // http://javascript.nwbox.com/IEContentLoaded/
885
+ top.doScroll("left");
886
+ } catch(e) {
887
+ return setTimeout( doScrollCheck, 50 );
888
+ }
889
+
890
+ // and execute any waiting functions
891
+ jQuery.ready();
892
+ }
893
+ })();
894
+ }
895
+ }
896
+ }
897
+ return readyList.promise( obj );
898
+ };
 
899
 
900
  // Populate the class2type map
901
+ jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
902
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
903
+ });
904
 
905
  // All jQuery objects should point back to these
906
+ rootjQuery = jQuery(document);
907
  // String to Object options format cache
908
+ var optionsCache = {};
909
 
910
  // Convert String-formatted options into Object-formatted ones and store in cache
911
+ function createOptions( options ) {
912
+ var object = optionsCache[ options ] = {};
913
+ jQuery.each( options.split( core_rspace ), function( _, flag ) {
914
+ object[ flag ] = true;
915
+ });
916
+ return object;
917
+ }
918
+
919
+ /*
920
+ * Create a callback list using the following parameters:
921
+ *
922
+ * options: an optional list of space-separated options that will change how
923
+ * the callback list behaves or a more traditional option object
924
+ *
925
+ * By default a callback list will act like an event callback list and can be
926
+ * "fired" multiple times.
927
+ *
928
+ * Possible options:
929
+ *
930
+ * once: will ensure the callback list can only be fired once (like a Deferred)
931
+ *
932
+ * memory: will keep track of previous values and will call any callback added
933
+ * after the list has been fired right away with the latest "memorized"
934
+ * values (like a Deferred)
935
+ *
936
+ * unique: will ensure a callback can only be added once (no duplicate in the list)
937
+ *
938
+ * stopOnFalse: interrupt callings when a callback returns false
939
+ *
940
+ */
941
+ jQuery.Callbacks = function( options ) {
942
+
943
+ // Convert options from String-formatted to Object-formatted if needed
944
+ // (we check in cache first)
945
+ options = typeof options === "string" ?
946
+ ( optionsCache[ options ] || createOptions( options ) ) :
947
+ jQuery.extend( {}, options );
948
+
949
+ var // Last fire value (for non-forgettable lists)
950
+ memory,
951
+ // Flag to know if list was already fired
952
+ fired,
953
+ // Flag to know if list is currently firing
954
+ firing,
955
+ // First callback to fire (used internally by add and fireWith)
956
+ firingStart,
957
+ // End of the loop when firing
958
+ firingLength,
959
+ // Index of currently firing callback (modified by remove if needed)
960
+ firingIndex,
961
+ // Actual callback list
962
+ list = [],
963
+ // Stack of fire calls for repeatable lists
964
+ stack = !options.once && [],
965
+ // Fire callbacks
966
+ fire = function( data ) {
967
+ memory = options.memory && data;
968
+ fired = true;
969
+ firingIndex = firingStart || 0;
970
+ firingStart = 0;
971
+ firingLength = list.length;
972
+ firing = true;
973
+ for ( ; list && firingIndex < firingLength; firingIndex++ ) {
974
+ if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
975
+ memory = false; // To prevent further calls using add
976
+ break;
977
+ }
978
+ }
979
+ firing = false;
980
+ if ( list ) {
981
+ if ( stack ) {
982
+ if ( stack.length ) {
983
+ fire( stack.shift() );
984
+ }
985
+ } else if ( memory ) {
986
+ list = [];
987
+ } else {
988
+ self.disable();
989
+ }
990
+ }
991
+ },
992
+ // Actual Callbacks object
993
+ self = {
994
+ // Add a callback or a collection of callbacks to the list
995
+ add: function() {
996
+ if ( list ) {
997
+ // First, we save the current length
998
+ var start = list.length;
999
+ (function add( args ) {
1000
+ jQuery.each( args, function( _, arg ) {
1001
+ var type = jQuery.type( arg );
1002
+ if ( type === "function" ) {
1003
+ if ( !options.unique || !self.has( arg ) ) {
1004
+ list.push( arg );
1005
+ }
1006
+ } else if ( arg && arg.length && type !== "string" ) {
1007
+ // Inspect recursively
1008
+ add( arg );
1009
+ }
1010
+ });
1011
+ })( arguments );
1012
+ // Do we need to add the callbacks to the
1013
+ // current firing batch?
1014
+ if ( firing ) {
1015
+ firingLength = list.length;
1016
+ // With memory, if we're not firing then
1017
+ // we should call right away
1018
+ } else if ( memory ) {
1019
+ firingStart = start;
1020
+ fire( memory );
1021
+ }
1022
+ }
1023
+ return this;
1024
+ },
1025
+ // Remove a callback from the list
1026
+ remove: function() {
1027
+ if ( list ) {
1028
+ jQuery.each( arguments, function( _, arg ) {
1029
+ var index;
1030
+ while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
1031
+ list.splice( index, 1 );
1032
+ // Handle firing indexes
1033
+ if ( firing ) {
1034
+ if ( index <= firingLength ) {
1035
+ firingLength--;
1036
+ }
1037
+ if ( index <= firingIndex ) {
1038
+ firingIndex--;
1039
+ }
1040
+ }
1041
+ }
1042
+ });
1043
+ }
1044
+ return this;
1045
+ },
1046
+ // Control if a given callback is in the list
1047
+ has: function( fn ) {
1048
+ return jQuery.inArray( fn, list ) > -1;
1049
+ },
1050
+ // Remove all callbacks from the list
1051
+ empty: function() {
1052
+ list = [];
1053
+ return this;
1054
+ },
1055
+ // Have the list do nothing anymore
1056
+ disable: function() {
1057
+ list = stack = memory = undefined;
1058
+ return this;
1059
+ },
1060
+ // Is it disabled?
1061
+ disabled: function() {
1062
+ return !list;
1063
+ },
1064
+ // Lock the list in its current state
1065
+ lock: function() {
1066
+ stack = undefined;
1067
+ if ( !memory ) {
1068
+ self.disable();
1069
+ }
1070
+ return this;
1071
+ },
1072
+ // Is it locked?
1073
+ locked: function() {
1074
+ return !stack;
1075
+ },
1076
+ // Call all callbacks with the given context and arguments
1077
+ fireWith: function( context, args ) {
1078
+ args = args || [];
1079
+ args = [ context, args.slice ? args.slice() : args ];
1080
+ if ( list && ( !fired || stack ) ) {
1081
+ if ( firing ) {
1082
+ stack.push( args );
1083
+ } else {
1084
+ fire( args );
1085
+ }
1086
+ }
1087
+ return this;
1088
+ },
1089
+ // Call all the callbacks with the given arguments
1090
+ fire: function() {
1091
+ self.fireWith( this, arguments );
1092
+ return this;
1093
+ },
1094
+ // To know if the callbacks have already been called at least once
1095
+ fired: function() {
1096
+ return !!fired;
1097
+ }
1098
+ };
1099
+
1100
+ return self;
1101
+ };
1102
+ jQuery.extend({
1103
+
1104
+ Deferred: function( func ) {
1105
+ var tuples = [
1106
+ // action, add listener, listener list, final state
1107
+ [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
1108
+ [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
1109
+ [ "notify", "progress", jQuery.Callbacks("memory") ]
1110
+ ],
1111
+ state = "pending",
1112
+ promise = {
1113
+ state: function() {
1114
+ return state;
1115
+ },
1116
+ always: function() {
1117
+ deferred.done( arguments ).fail( arguments );
1118
+ return this;
1119
+ },
1120
+ then: function( /* fnDone, fnFail, fnProgress */ ) {
1121
+ var fns = arguments;
1122
+ return jQuery.Deferred(function( newDefer ) {
1123
+ jQuery.each( tuples, function( i, tuple ) {
1124
+ var action = tuple[ 0 ],
1125
+ fn = fns[ i ];
1126
+ // deferred[ done | fail | progress ] for forwarding actions to newDefer
1127
+ deferred[ tuple[1] ]( jQuery.isFunction( fn ) ?
1128
+ function() {
1129
+ var returned = fn.apply( this, arguments );
1130
+ if ( returned && jQuery.isFunction( returned.promise ) ) {
1131
+ returned.promise()
1132
+ .done( newDefer.resolve )
1133
+ .fail( newDefer.reject )
1134
+ .progress( newDefer.notify );
1135
+ } else {
1136
+ newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );
1137
+ }
1138
+ } :
1139
+ newDefer[ action ]
1140
+ );
1141
+ });
1142
+ fns = null;
1143
+ }).promise();
1144
+ },
1145
+ // Get a promise for this deferred
1146
+ // If obj is provided, the promise aspect is added to the object
1147
+ promise: function( obj ) {
1148
+ return obj != null ? jQuery.extend( obj, promise ) : promise;
1149
+ }
1150
+ },
1151
+ deferred = {};
1152
+
1153
+ // Keep pipe for back-compat
1154
+ promise.pipe = promise.then;
1155
+
1156
+ // Add list-specific methods
1157
+ jQuery.each( tuples, function( i, tuple ) {
1158
+ var list = tuple[ 2 ],
1159
+ stateString = tuple[ 3 ];
1160
+
1161
+ // promise[ done | fail | progress ] = list.add
1162
+ promise[ tuple[1] ] = list.add;
1163
+
1164
+ // Handle state
1165
+ if ( stateString ) {
1166
+ list.add(function() {
1167
+ // state = [ resolved | rejected ]
1168
+ state = stateString;
1169
+
1170
+ // [ reject_list | resolve_list ].disable; progress_list.lock
1171
+ }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
1172
+ }
1173
+
1174
+ // deferred[ resolve | reject | notify ] = list.fire
1175
+ deferred[ tuple[0] ] = list.fire;
1176
+ deferred[ tuple[0] + "With" ] = list.fireWith;
1177
+ });
1178
+
1179
+ // Make the deferred a promise
1180
+ promise.promise( deferred );
1181
+
1182
+ // Call given func if any
1183
+ if ( func ) {
1184
+ func.call( deferred, deferred );
1185
+ }
1186
+
1187
+ // All done!
1188
+ return deferred;
1189
+ },
1190
+
1191
+ // Deferred helper
1192
+ when: function( subordinate /* , ..., subordinateN */ ) {
1193
+ var i = 0,
1194
+ resolveValues = core_slice.call( arguments ),
1195
+ length = resolveValues.length,
1196
+
1197
+ // the count of uncompleted subordinates
1198
+ remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
1199
+
1200
+ // the master Deferred. If resolveValues consist of only a single Deferred, just use that.
1201
+ deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
1202
+
1203
+ // Update function for both resolve and progress values
1204
+ updateFunc = function( i, contexts, values ) {
1205
+ return function( value ) {
1206
+ contexts[ i ] = this;
1207
+ values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;
1208
+ if( values === progressValues ) {
1209
+ deferred.notifyWith( contexts, values );
1210
+ } else if ( !( --remaining ) ) {
1211
+ deferred.resolveWith( contexts, values );
1212
+ }
1213
+ };
1214
+ },
1215
+
1216
+ progressValues, progressContexts, resolveContexts;
1217
+
1218
+ // add listeners to Deferred subordinates; treat others as resolved
1219
+ if ( length > 1 ) {
1220
+ progressValues = new Array( length );
1221
+ progressContexts = new Array( length );
1222
+ resolveContexts = new Array( length );
1223
+ for ( ; i < length; i++ ) {
1224
+ if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
1225
+ resolveValues[ i ].promise()
1226
+ .done( updateFunc( i, resolveContexts, resolveValues ) )
1227
+ .fail( deferred.reject )
1228
+ .progress( updateFunc( i, progressContexts, progressValues ) );
1229
+ } else {
1230
+ --remaining;
1231
+ }
1232
+ }
1233
+ }
1234
+
1235
+ // if we're not waiting on anything, resolve the master
1236
+ if ( !remaining ) {
1237
+ deferred.resolveWith( resolveContexts, resolveValues );
1238
+ }
1239
+
1240
+ return deferred.promise();
1241
+ }
1242
+ });
1243
+ jQuery.support = (function() {
1244
+
1245
+ var support,
1246
+ all,
1247
+ a,
1248
+ select,
1249
+ opt,
1250
+ input,
1251
+ fragment,
1252
+ eventName,
1253
+ i,
1254
+ isSupported,
1255
+ clickFn,
1256
+ div = document.createElement("div");
1257
+
1258
+ // Setup
1259
+ div.setAttribute( "className", "t" );
1260
+ div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
1261
+
1262
+ // Support tests won't run in some limited or non-browser environments
1263
+ all = div.getElementsByTagName("*");
1264
+ a = div.getElementsByTagName("a")[ 0 ];
1265
+ if ( !all || !a || !all.length ) {
1266
+ return {};
1267
+ }
1268
+
1269
+ // First batch of tests
1270
+ select = document.createElement("select");
1271
+ opt = select.appendChild( document.createElement("option") );
1272
+ input = div.getElementsByTagName("input")[ 0 ];
1273
+
1274
+ a.style.cssText = "top:1px;float:left;opacity:.5";
1275
+ support = {
1276
+ // IE strips leading whitespace when .innerHTML is used
1277
+ leadingWhitespace: ( div.firstChild.nodeType === 3 ),
1278
+
1279
+ // Make sure that tbody elements aren't automatically inserted
1280
+ // IE will insert them into empty tables
1281
+ tbody: !div.getElementsByTagName("tbody").length,
1282
+
1283
+ // Make sure that link elements get serialized correctly by innerHTML
1284
+ // This requires a wrapper element in IE
1285
+ htmlSerialize: !!div.getElementsByTagName("link").length,
1286
+
1287
+ // Get the style information from getAttribute
1288
+ // (IE uses .cssText instead)
1289
+ style: /top/.test( a.getAttribute("style") ),
1290
+
1291
+ // Make sure that URLs aren't manipulated
1292
+ // (IE normalizes it by default)
1293
+ hrefNormalized: ( a.getAttribute("href") === "/a" ),
1294
+
1295
+ // Make sure that element opacity exists
1296
+ // (IE uses filter instead)
1297
+ // Use a regex to work around a WebKit issue. See #5145
1298
+ opacity: /^0.5/.test( a.style.opacity ),
1299
+
1300
+ // Verify style float existence
1301
+ // (IE uses styleFloat instead of cssFloat)
1302
+ cssFloat: !!a.style.cssFloat,
1303
+
1304
+ // Make sure that if no value is specified for a checkbox
1305
+ // that it defaults to "on".
1306
+ // (WebKit defaults to "" instead)
1307
+ checkOn: ( input.value === "on" ),
1308
+
1309
+ // Make sure that a selected-by-default option has a working selected property.
1310
+ // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
1311
+ optSelected: opt.selected,
1312
+
1313
+ // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
1314
+ getSetAttribute: div.className !== "t",
1315
+
1316
+ // Tests for enctype support on a form (#6743)
1317
+ enctype: !!document.createElement("form").enctype,
1318
+
1319
+ // Makes sure cloning an html5 element does not cause problems
1320
+ // Where outerHTML is undefined, this still works
1321
+ html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>",
1322
+
1323
+ // jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode
1324
+ boxModel: ( document.compatMode === "CSS1Compat" ),
1325
+
1326
+ // Will be defined later
1327
+ submitBubbles: true,
1328
+ changeBubbles: true,
1329
+ focusinBubbles: false,
1330
+ deleteExpando: true,
1331
+ noCloneEvent: true,
1332
+ inlineBlockNeedsLayout: false,
1333
+ shrinkWrapBlocks: false,
1334
+ reliableMarginRight: true,
1335
+ boxSizingReliable: true,
1336
+ pixelPosition: false
1337
+ };
1338
+
1339
+ // Make sure checked status is properly cloned
1340
+ input.checked = true;
1341
+ support.noCloneChecked = input.cloneNode( true ).checked;
1342
+
1343
+ // Make sure that the options inside disabled selects aren't marked as disabled
1344
+ // (WebKit marks them as disabled)
1345
+ select.disabled = true;
1346
+ support.optDisabled = !opt.disabled;
1347
+
1348
+ // Test to see if it's possible to delete an expando from an element
1349
+ // Fails in Internet Explorer
1350
+ try {
1351
+ delete div.test;
1352
+ } catch( e ) {
1353
+ support.deleteExpando = false;
1354
+ }
1355
+
1356
+ if ( !div.addEventListener && div.attachEvent && div.fireEvent ) {
1357
+ div.attachEvent( "onclick", clickFn = function() {
1358
+ // Cloning a node shouldn't copy over any
1359
+ // bound event handlers (IE does this)
1360
+ support.noCloneEvent = false;
1361
+ });
1362
+ div.cloneNode( true ).fireEvent("onclick");
1363
+ div.detachEvent( "onclick", clickFn );
1364
+ }
1365
+
1366
+ // Check if a radio maintains its value
1367
+ // after being appended to the DOM
1368
+ input = document.createElement("input");
1369
+ input.value = "t";
1370
+ input.setAttribute( "type", "radio" );
1371
+ support.radioValue = input.value === "t";
1372
+
1373
+ input.setAttribute( "checked", "checked" );
1374
+
1375
+ // #11217 - WebKit loses check when the name is after the checked attribute
1376
+ input.setAttribute( "name", "t" );
1377
+
1378
+ div.appendChild( input );
1379
+ fragment = document.createDocumentFragment();
1380
+ fragment.appendChild( div.lastChild );
1381
+
1382
+ // WebKit doesn't clone checked state correctly in fragments
1383
+ support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
1384
+
1385
+ // Check if a disconnected checkbox will retain its checked
1386
+ // value of true after appended to the DOM (IE6/7)
1387
+ support.appendChecked = input.checked;
1388
+
1389
+ fragment.removeChild( input );
1390
+ fragment.appendChild( div );
1391
+
1392
+ // Technique from Juriy Zaytsev
1393
+ // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/
1394
+ // We only care about the case where non-standard event systems
1395
+ // are used, namely in IE. Short-circuiting here helps us to
1396
+ // avoid an eval call (in setAttribute) which can cause CSP
1397
+ // to go haywire. See: https://developer.mozilla.org/en/Security/CSP
1398
+ if ( div.attachEvent ) {
1399
+ for ( i in {
1400
+ submit: true,
1401
+ change: true,
1402
+ focusin: true
1403
+ }) {
1404
+ eventName = "on" + i;
1405
+ isSupported = ( eventName in div );
1406
+ if ( !isSupported ) {
1407
+ div.setAttribute( eventName, "return;" );
1408
+ isSupported = ( typeof div[ eventName ] === "function" );
1409
+ }
1410
+ support[ i + "Bubbles" ] = isSupported;
1411
+ }
1412
+ }
1413
+
1414
+ // Run tests that need a body at doc ready
1415
+ jQuery(function() {
1416
+ var container, div, tds, marginDiv,
1417
+ divReset = "padding:0;margin:0;border:0;display:block;overflow:hidden;",
1418
+ body = document.getElementsByTagName("body")[0];
1419
+
1420
+ if ( !body ) {
1421
+ // Return for frameset docs that don't have a body
1422
+ return;
1423
+ }
1424
+
1425
+ container = document.createElement("div");
1426
+ container.style.cssText = "visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px";
1427
+ body.insertBefore( container, body.firstChild );
1428
+
1429
+ // Construct the test element
1430
+ div = document.createElement("div");
1431
+ container.appendChild( div );
1432
+
1433
+ // Check if table cells still have offsetWidth/Height when they are set
1434
+ // to display:none and there are still other visible table cells in a
1435
+ // table row; if so, offsetWidth/Height are not reliable for use when
1436
+ // determining if an element has been hidden directly using
1437
+ // display:none (it is still safe to use offsets if a parent element is
1438
+ // hidden; don safety goggles and see bug #4512 for more information).
1439
+ // (only IE 8 fails this test)
1440
+ div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>";
1441
+ tds = div.getElementsByTagName("td");
1442
+ tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none";
1443
+ isSupported = ( tds[ 0 ].offsetHeight === 0 );
1444
+
1445
+ tds[ 0 ].style.display = "";
1446
+ tds[ 1 ].style.display = "none";
1447
+
1448
+ // Check if empty table cells still have offsetWidth/Height
1449
+ // (IE <= 8 fail this test)
1450
+ support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
1451
+
1452
+ // Check box-sizing and margin behavior
1453
+ div.innerHTML = "";
1454
+ div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";
1455
+ support.boxSizing = ( div.offsetWidth === 4 );
1456
+ support.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 );
1457
+
1458
+ // NOTE: To any future maintainer, we've window.getComputedStyle
1459
+ // because jsdom on node.js will break without it.
1460
+ if ( window.getComputedStyle ) {
1461
+ support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%";
1462
+ support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px";
1463
+
1464
+ // Check if div with explicit width and no margin-right incorrectly
1465
+ // gets computed margin-right based on width of container. For more
1466
+ // info see bug #3333
1467
+ // Fails in WebKit before Feb 2011 nightlies
1468
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
1469
+ marginDiv = document.createElement("div");
1470
+ marginDiv.style.cssText = div.style.cssText = divReset;
1471
+ marginDiv.style.marginRight = marginDiv.style.width = "0";
1472
+ div.style.width = "1px";
1473
+ div.appendChild( marginDiv );
1474
+ support.reliableMarginRight =
1475
+ !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );
1476
+ }
1477
+
1478
+ if ( typeof div.style.zoom !== "undefined" ) {
1479
+ // Check if natively block-level elements act like inline-block
1480
+ // elements when setting their display to 'inline' and giving
1481
+ // them layout
1482
+ // (IE < 8 does this)
1483
+ div.innerHTML = "";
1484
+ div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1";
1485
+ support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );
1486
+
1487
+ // Check if elements with layout shrink-wrap their children
1488
+ // (IE 6 does this)
1489
+ div.style.display = "block";
1490
+ div.style.overflow = "visible";
1491
+ div.innerHTML = "<div></div>";
1492
+ div.firstChild.style.width = "5px";
1493
+ support.shrinkWrapBlocks = ( div.offsetWidth !== 3 );
1494
+
1495
+ container.style.zoom = 1;
1496
+ }
1497
+
1498
+ // Null elements to avoid leaks in IE
1499
+ body.removeChild( container );
1500
+ container = div = tds = marginDiv = null;
1501
+ });
1502
+
1503
+ // Null elements to avoid leaks in IE
1504
+ fragment.removeChild( div );
1505
+ all = a = select = opt = input = fragment = div = null;
1506
+
1507
+ return support;
1508
+ })();
1509
+ var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
1510
+ rmultiDash = /([A-Z])/g;
1511
+
1512
+ jQuery.extend({
1513
+ cache: {},
1514
+
1515
+ deletedIds: [],
1516
+
1517
+ // Remove at next major release (1.9/2.0)
1518
+ uuid: 0,
1519
+
1520
+ // Unique for each copy of jQuery on the page
1521
+ // Non-digits removed to match rinlinejQuery
1522
+ expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ),
1523
+
1524
+ // The following elements throw uncatchable exceptions if you
1525
+ // attempt to add expando properties to them.
1526
+ noData: {
1527
+ "embed": true,
1528
+ // Ban all objects except for Flash (which handle expandos)
1529
+ "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
1530
+ "applet": true
1531
+ },
1532
+
1533
+ hasData: function( elem ) {
1534
+ elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
1535
+ return !!elem && !isEmptyDataObject( elem );
1536
+ },
1537
+
1538
+ data: function( elem, name, data, pvt /* Internal Use Only */ ) {
1539
+ if ( !jQuery.acceptData( elem ) ) {
1540
+ return;
1541
+ }
1542
+
1543
+ var thisCache, ret,
1544
+ internalKey = jQuery.expando,
1545
+ getByName = typeof name === "string",
1546
+
1547
+ // We have to handle DOM nodes and JS objects differently because IE6-7
1548
+ // can't GC object references properly across the DOM-JS boundary
1549
+ isNode = elem.nodeType,
1550
+
1551
+ // Only DOM nodes need the global jQuery cache; JS object data is
1552
+ // attached directly to the object so GC can occur automatically
1553
+ cache = isNode ? jQuery.cache : elem,
1554
+
1555
+ // Only defining an ID for JS objects if its cache already exists allows
1556
+ // the code to shortcut on the same path as a DOM node with no cache
1557
+ id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;
1558
+
1559
+ // Avoid doing any more work than we need to when trying to get data on an
1560
+ // object that has no data at all
1561
+ if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) {
1562
+ return;
1563
+ }
1564
+
1565
+ if ( !id ) {
1566
+ // Only DOM nodes need a new unique ID for each element since their data
1567
+ // ends up in the global cache
1568
+ if ( isNode ) {
1569
+ elem[ internalKey ] = id = jQuery.deletedIds.pop() || jQuery.guid++;
1570
+ } else {
1571
+ id = internalKey;
1572
+ }
1573
+ }
1574
+
1575
+ if ( !cache[ id ] ) {
1576
+ cache[ id ] = {};
1577
+
1578
+ // Avoids exposing jQuery metadata on plain JS objects when the object
1579
+ // is serialized using JSON.stringify
1580
+ if ( !isNode ) {
1581
+ cache[ id ].toJSON = jQuery.noop;
1582
+ }
1583
+ }
1584
+
1585
+ // An object can be passed to jQuery.data instead of a key/value pair; this gets
1586
+ // shallow copied over onto the existing cache
1587
+ if ( typeof name === "object" || typeof name === "function" ) {
1588
+ if ( pvt ) {
1589
+ cache[ id ] = jQuery.extend( cache[ id ], name );
1590
+ } else {
1591
+ cache[ id ].data = jQuery.extend( cache[ id ].data, name );
1592
+ }
1593
+ }
1594
+
1595
+ thisCache = cache[ id ];
1596
+
1597
+ // jQuery data() is stored in a separate object inside the object's internal data
1598
+ // cache in order to avoid key collisions between internal data and user-defined
1599
+ // data.
1600
+ if ( !pvt ) {
1601
+ if ( !thisCache.data ) {
1602
+ thisCache.data = {};
1603
+ }
1604
+
1605
+ thisCache = thisCache.data;
1606
+ }
1607
+
1608
+ if ( data !== undefined ) {
1609
+ thisCache[ jQuery.camelCase( name ) ] = data;
1610
+ }
1611
+
1612
+ // Check for both converted-to-camel and non-converted data property names
1613
+ // If a data property was specified
1614
+ if ( getByName ) {
1615
+
1616
+ // First Try to find as-is property data
1617
+ ret = thisCache[ name ];
1618
+
1619
+ // Test for null|undefined property data
1620
+ if ( ret == null ) {
1621
+
1622
+ // Try to find the camelCased property
1623
+ ret = thisCache[ jQuery.camelCase( name ) ];
1624
+ }
1625
+ } else {
1626
+ ret = thisCache;
1627
+ }
1628
+
1629
+ return ret;
1630
+ },
1631
+
1632
+ removeData: function( elem, name, pvt /* Internal Use Only */ ) {
1633
+ if ( !jQuery.acceptData( elem ) ) {
1634
+ return;
1635
+ }
1636
+
1637
+ var thisCache, i, l,
1638
+
1639
+ isNode = elem.nodeType,
1640
+
1641
+ // See jQuery.data for more information
1642
+ cache = isNode ? jQuery.cache : elem,
1643
+ id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
1644
+
1645
+ // If there is already no cache entry for this object, there is no
1646
+ // purpose in continuing
1647
+ if ( !cache[ id ] ) {
1648
+ return;
1649
+ }
1650
+
1651
+ if ( name ) {
1652
+
1653
+ thisCache = pvt ? cache[ id ] : cache[ id ].data;
1654
+
1655
+ if ( thisCache ) {
1656
+
1657
+ // Support array or space separated string names for data keys
1658
+ if ( !jQuery.isArray( name ) ) {
1659
+
1660
+ // try the string as a key before any manipulation
1661
+ if ( name in thisCache ) {
1662
+ name = [ name ];
1663
+ } else {
1664
+
1665
+ // split the camel cased version by spaces unless a key with the spaces exists
1666
+ name = jQuery.camelCase( name );
1667
+ if ( name in thisCache ) {
1668
+ name = [ name ];
1669
+ } else {
1670
+ name = name.split(" ");
1671
+ }
1672
+ }
1673
+ }
1674
+
1675
+ for ( i = 0, l = name.length; i < l; i++ ) {
1676
+ delete thisCache[ name[i] ];
1677
+ }
1678
+
1679
+ // If there is no data left in the cache, we want to continue
1680
+ // and let the cache object itself get destroyed
1681
+ if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {
1682
+ return;
1683
+ }
1684
+ }
1685
+ }
1686
+
1687
+ // See jQuery.data for more information
1688
+ if ( !pvt ) {
1689
+ delete cache[ id ].data;
1690
+
1691
+ // Don't destroy the parent cache unless the internal data object
1692
+ // had been the only thing left in it
1693
+ if ( !isEmptyDataObject( cache[ id ] ) ) {
1694
+ return;
1695
+ }
1696
+ }
1697
+
1698
+ // Destroy the cache
1699
+ if ( isNode ) {
1700
+ jQuery.cleanData( [ elem ], true );
1701
+
1702
+ // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)
1703
+ } else if ( jQuery.support.deleteExpando || cache != cache.window ) {
1704
+ delete cache[ id ];
1705
+
1706
+ // When all else fails, null
1707
+ } else {
1708
+ cache[ id ] = null;
1709
+ }
1710
+ },
1711
+
1712
+ // For internal use only.
1713
+ _data: function( elem, name, data ) {
1714
+ return jQuery.data( elem, name, data, true );
1715
+ },
1716
+
1717
+ // A method for determining if a DOM node can handle the data expando
1718
+ acceptData: function( elem ) {
1719
+ var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];
1720
+
1721
+ // nodes accept data unless otherwise specified; rejection can be conditional
1722
+ return !noData || noData !== true && elem.getAttribute("classid") === noData;
1723
+ }
1724
+ });
1725
+
1726
+ jQuery.fn.extend({
1727
+ data: function( key, value ) {
1728
+ var parts, part, attr, name, l,
1729
+ elem = this[0],
1730
+ i = 0,
1731
+ data = null;
1732
+
1733
+ // Gets all values
1734
+ if ( key === undefined ) {
1735
+ if ( this.length ) {
1736
+ data = jQuery.data( elem );
1737
+
1738
+ if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {
1739
+ attr = elem.attributes;
1740
+ for ( l = attr.length; i < l; i++ ) {
1741
+ name = attr[i].name;
1742
+
1743
+ if ( !name.indexOf( "data-" ) ) {
1744
+ name = jQuery.camelCase( name.substring(5) );
1745
+
1746
+ dataAttr( elem, name, data[ name ] );
1747
+ }
1748
+ }
1749
+ jQuery._data( elem, "parsedAttrs", true );
1750
+ }
1751
+ }
1752
+
1753
+ return data;
1754
+ }
1755
+
1756
+ // Sets multiple values
1757
+ if ( typeof key === "object" ) {
1758
+ return this.each(function() {
1759
+ jQuery.data( this, key );
1760
+ });
1761
+ }
1762
+
1763
+ parts = key.split( ".", 2 );
1764
+ parts[1] = parts[1] ? "." + parts[1] : "";
1765
+ part = parts[1] + "!";
1766
+
1767
+ return jQuery.access( this, function( value ) {
1768
+
1769
+ if ( value === undefined ) {
1770
+ data = this.triggerHandler( "getData" + part, [ parts[0] ] );
1771
+
1772
+ // Try to fetch any internally stored data first
1773
+ if ( data === undefined && elem ) {
1774
+ data = jQuery.data( elem, key );
1775
+ data = dataAttr( elem, key, data );
1776
+ }
1777
+
1778
+ return data === undefined && parts[1] ?
1779
+ this.data( parts[0] ) :
1780
+ data;
1781
+ }
1782
+
1783
+ parts[1] = value;
1784
+ this.each(function() {
1785
+ var self = jQuery( this );
1786
+
1787
+ self.triggerHandler( "setData" + part, parts );
1788
+ jQuery.data( this, key, value );
1789
+ self.triggerHandler( "changeData" + part, parts );
1790
+ });
1791
+ }, null, value, arguments.length > 1, null, false );
1792
+ },
1793
+
1794
+ removeData: function( key ) {
1795
+ return this.each(function() {
1796
+ jQuery.removeData( this, key );
1797
+ });
1798
+ }
1799
+ });
1800
+
1801
+ function dataAttr( elem, key, data ) {
1802
+ // If nothing was found internally, try to fetch any
1803
+ // data from the HTML5 data-* attribute
1804
+ if ( data === undefined && elem.nodeType === 1 ) {
1805
+
1806
+ var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
1807
+
1808
+ data = elem.getAttribute( name );
1809
+
1810
+ if ( typeof data === "string" ) {
1811
+ try {
1812
+ data = data === "true" ? true :
1813
+ data === "false" ? false :
1814
+ data === "null" ? null :
1815
+ // Only convert to a number if it doesn't change the string
1816
+ +data + "" === data ? +data :
1817
+ rbrace.test( data ) ? jQuery.parseJSON( data ) :
1818
+ data;
1819
+ } catch( e ) {}
1820
+
1821
+ // Make sure we set the data so it isn't changed later
1822
+ jQuery.data( elem, key, data );
1823
+
1824
+ } else {
1825
+ data = undefined;
1826
+ }
1827
+ }
1828
+
1829
+ return data;
1830
+ }
1831
 
1832
  // checks a cache object for emptiness
1833
+ function isEmptyDataObject( obj ) {
1834
+ var name;
1835
+ for ( name in obj ) {
1836
+
1837
+ // if the public data object is empty, the private is still empty
1838
+ if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
1839
+ continue;
1840
+ }
1841
+ if ( name !== "toJSON" ) {
1842
+ return false;
1843
+ }
1844
+ }
1845
+
1846
+ return true;
1847
+ }
1848
+ jQuery.extend({
1849
+ queue: function( elem, type, data ) {
1850
+ var queue;
1851
+
1852
+ if ( elem ) {
1853
+ type = ( type || "fx" ) + "queue";
1854
+ queue = jQuery._data( elem, type );
1855
+
1856
+ // Speed up dequeue by getting out quickly if this is just a lookup
1857
+ if ( data ) {
1858
+ if ( !queue || jQuery.isArray(data) ) {
1859
+ queue = jQuery._data( elem, type, jQuery.makeArray(data) );
1860
+ } else {
1861
+ queue.push( data );
1862
+ }
1863
+ }
1864
+ return queue || [];
1865
+ }
1866
+ },
1867
+
1868
+ dequeue: function( elem, type ) {
1869
+ type = type || "fx";
1870
+
1871
+ var queue = jQuery.queue( elem, type ),
1872
+ startLength = queue.length,
1873
+ fn = queue.shift(),
1874
+ hooks = jQuery._queueHooks( elem, type ),
1875
+ next = function() {
1876
+ jQuery.dequeue( elem, type );
1877
+ };
1878
+
1879
+ // If the fx queue is dequeued, always remove the progress sentinel
1880
+ if ( fn === "inprogress" ) {
1881
+ fn = queue.shift();
1882
+ startLength--;
1883
+ }
1884
+
1885
+ if ( fn ) {
1886
+
1887
+ // Add a progress sentinel to prevent the fx queue from being
1888
+ // automatically dequeued
1889
+ if ( type === "fx" ) {
1890
+ queue.unshift( "inprogress" );
1891
+ }
1892
+
1893
+ // clear up the last queue stop function
1894
+ delete hooks.stop;
1895
+ fn.call( elem, next, hooks );
1896
+ }
1897
+
1898
+ if ( !startLength && hooks ) {
1899
+ hooks.empty.fire();
1900
+ }
1901
+ },
1902
+
1903
+ // not intended for public consumption - generates a queueHooks object, or returns the current one
1904
+ _queueHooks: function( elem, type ) {
1905
+ var key = type + "queueHooks";
1906
+ return jQuery._data( elem, key ) || jQuery._data( elem, key, {
1907
+ empty: jQuery.Callbacks("once memory").add(function() {
1908
+ jQuery.removeData( elem, type + "queue", true );
1909
+ jQuery.removeData( elem, key, true );
1910
+ })
1911
+ });
1912
+ }
1913
+ });
1914
+
1915
+ jQuery.fn.extend({
1916
+ queue: function( type, data ) {
1917
+ var setter = 2;
1918
+
1919
+ if ( typeof type !== "string" ) {
1920
+ data = type;
1921
+ type = "fx";
1922
+ setter--;
1923
+ }
1924
+
1925
+ if ( arguments.length < setter ) {
1926
+ return jQuery.queue( this[0], type );
1927
+ }
1928
+
1929
+ return data === undefined ?
1930
+ this :
1931
+ this.each(function() {
1932
+ var queue = jQuery.queue( this, type, data );
1933
+
1934
+ // ensure a hooks for this queue
1935
+ jQuery._queueHooks( this, type );
1936
+
1937
+ if ( type === "fx" && queue[0] !== "inprogress" ) {
1938
+ jQuery.dequeue( this, type );
1939
+ }
1940
+ });
1941
+ },
1942
+ dequeue: function( type ) {
1943
+ return this.each(function() {
1944
+ jQuery.dequeue( this, type );
1945
+ });
1946
+ },
1947
+ // Based off of the plugin by Clint Helfers, with permission.
1948
+ // http://blindsignals.com/index.php/2009/07/jquery-delay/
1949
+ delay: function( time, type ) {
1950
+ time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
1951
+ type = type || "fx";
1952
+
1953
+ return this.queue( type, function( next, hooks ) {
1954
+ var timeout = setTimeout( next, time );
1955
+ hooks.stop = function() {
1956
+ clearTimeout( timeout );
1957
+ };
1958
+ });
1959
+ },
1960
+ clearQueue: function( type ) {
1961
+ return this.queue( type || "fx", [] );
1962
+ },
1963
+ // Get a promise resolved when queues of a certain type
1964
+ // are emptied (fx is the type by default)
1965
+ promise: function( type, obj ) {
1966
+ var tmp,
1967
+ count = 1,
1968
+ defer = jQuery.Deferred(),
1969
+ elements = this,
1970
+ i = this.length,
1971
+ resolve = function() {
1972
+ if ( !( --count ) ) {
1973
+ defer.resolveWith( elements, [ elements ] );
1974
+ }
1975
+ };
1976
+
1977
+ if ( typeof type !== "string" ) {
1978
+ obj = type;
1979
+ type = undefined;
1980
+ }
1981
+ type = type || "fx";
1982
+
1983
+ while( i-- ) {
1984
+ tmp = jQuery._data( elements[ i ], type + "queueHooks" );
1985
+ if ( tmp && tmp.empty ) {
1986
+ count++;
1987
+ tmp.empty.add( resolve );
1988
+ }
1989
+ }
1990
+ resolve();
1991
+ return defer.promise( obj );
1992
+ }
1993
+ });
1994
+ var nodeHook, boolHook, fixSpecified,
1995
+ rclass = /[\t\r\n]/g,
1996
+ rreturn = /\r/g,
1997
+ rtype = /^(?:button|input)$/i,
1998
+ rfocusable = /^(?:button|input|object|select|textarea)$/i,
1999
+ rclickable = /^a(?:rea|)$/i,
2000
+ rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
2001
+ getSetAttribute = jQuery.support.getSetAttribute;
2002
+
2003
+ jQuery.fn.extend({
2004
+ attr: function( name, value ) {
2005
+ return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );
2006
+ },
2007
+
2008
+ removeAttr: function( name ) {
2009
+ return this.each(function() {
2010
+ jQuery.removeAttr( this, name );
2011
+ });
2012
+ },
2013
+
2014
+ prop: function( name, value ) {
2015
+ return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );
2016
+ },
2017
+
2018
+ removeProp: function( name ) {
2019
+ name = jQuery.propFix[ name ] || name;
2020
+ return this.each(function() {
2021
+ // try/catch handles cases where IE balks (such as removing a property on window)
2022
+ try {
2023
+ this[ name ] = undefined;
2024
+ delete this[ name ];
2025
+ } catch( e ) {}
2026
+ });
2027
+ },
2028
+
2029
+ addClass: function( value ) {
2030
+ var classNames, i, l, elem,
2031
+ setClass, c, cl;
2032
+
2033
+ if ( jQuery.isFunction( value ) ) {
2034
+ return this.each(function( j ) {
2035
+ jQuery( this ).addClass( value.call(this, j, this.className) );
2036
+ });
2037
+ }
2038
+
2039
+ if ( value && typeof value === "string" ) {
2040
+ classNames = value.split( core_rspace );
2041
+
2042
+ for ( i = 0, l = this.length; i < l; i++ ) {
2043
+ elem = this[ i ];
2044
+
2045
+ if ( elem.nodeType === 1 ) {
2046
+ if ( !elem.className && classNames.length === 1 ) {
2047
+ elem.className = value;
2048
+
2049
+ } else {
2050
+ setClass = " " + elem.className + " ";
2051
+
2052
+ for ( c = 0, cl = classNames.length; c < cl; c++ ) {
2053
+ if ( setClass.indexOf( " " + classNames[ c ] + " " ) < 0 ) {
2054
+ setClass += classNames[ c ] + " ";
2055
+ }
2056
+ }
2057
+ elem.className = jQuery.trim( setClass );
2058
+ }
2059
+ }
2060
+ }
2061
+ }
2062
+
2063
+ return this;
2064
+ },
2065
+
2066
+ removeClass: function( value ) {
2067
+ var removes, className, elem, c, cl, i, l;
2068
+
2069
+ if ( jQuery.isFunction( value ) ) {
2070
+ return this.each(function( j ) {
2071
+ jQuery( this ).removeClass( value.call(this, j, this.className) );
2072
+ });
2073
+ }
2074
+ if ( (value && typeof value === "string") || value === undefined ) {
2075
+ removes = ( value || "" ).split( core_rspace );
2076
+
2077
+ for ( i = 0, l = this.length; i < l; i++ ) {
2078
+ elem = this[ i ];
2079
+ if ( elem.nodeType === 1 && elem.className ) {
2080
+
2081
+ className = (" " + elem.className + " ").replace( rclass, " " );
2082
+
2083
+ // loop over each item in the removal list
2084
+ for ( c = 0, cl = removes.length; c < cl; c++ ) {
2085
+ // Remove until there is nothing to remove,
2086
+ while ( className.indexOf(" " + removes[ c ] + " ") >= 0 ) {
2087
+ className = className.replace( " " + removes[ c ] + " " , " " );
2088
+ }
2089
+ }
2090
+ elem.className = value ? jQuery.trim( className ) : "";
2091
+ }
2092
+ }
2093
+ }
2094
+
2095
+ return this;
2096
+ },
2097
+
2098
+ toggleClass: function( value, stateVal ) {
2099
+ var type = typeof value,
2100
+ isBool = typeof stateVal === "boolean";
2101
+
2102
+ if ( jQuery.isFunction( value ) ) {
2103
+ return this.each(function( i ) {
2104
+ jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
2105
+ });
2106
+ }
2107
+
2108
+ return this.each(function() {
2109
+ if ( type === "string" ) {
2110
+ // toggle individual class names
2111
+ var className,
2112
+ i = 0,
2113
+ self = jQuery( this ),
2114
+ state = stateVal,
2115
+ classNames = value.split( core_rspace );
2116
+
2117
+ while ( (className = classNames[ i++ ]) ) {
2118
+ // check each className given, space separated list
2119
+ state = isBool ? state : !self.hasClass( className );
2120
+ self[ state ? "addClass" : "removeClass" ]( className );
2121
+ }
2122
+
2123
+ } else if ( type === "undefined" || type === "boolean" ) {
2124
+ if ( this.className ) {
2125
+ // store className if set
2126
+ jQuery._data( this, "__className__", this.className );
2127
+ }
2128
+
2129
+ // toggle whole className
2130
+ this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
2131
+ }
2132
+ });
2133
+ },
2134
+
2135
+ hasClass: function( selector ) {
2136
+ var className = " " + selector + " ",
2137
+ i = 0,
2138
+ l = this.length;
2139
+ for ( ; i < l; i++ ) {
2140
+ if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
2141
+ return true;
2142
+ }
2143
+ }
2144
+
2145
+ return false;
2146
+ },
2147
+
2148
+ val: function( value ) {
2149
+ var hooks, ret, isFunction,
2150
+ elem = this[0];
2151
+
2152
+ if ( !arguments.length ) {
2153
+ if ( elem ) {
2154
+ hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
2155
+
2156
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
2157
+ return ret;
2158
+ }
2159
+
2160
+ ret = elem.value;
2161
+
2162
+ return typeof ret === "string" ?
2163
+ // handle most common string cases
2164
+ ret.replace(rreturn, "") :
2165
+ // handle cases where value is null/undef or number
2166
+ ret == null ? "" : ret;
2167
+ }
2168
+
2169
+ return;
2170
+ }
2171
+
2172
+ isFunction = jQuery.isFunction( value );
2173
+
2174
+ return this.each(function( i ) {
2175
+ var val,
2176
+ self = jQuery(this);
2177
+
2178
+ if ( this.nodeType !== 1 ) {
2179
+ return;
2180
+ }
2181
+
2182
+ if ( isFunction ) {
2183
+ val = value.call( this, i, self.val() );
2184
+ } else {
2185
+ val = value;
2186
+ }
2187
+
2188
+ // Treat null/undefined as ""; convert numbers to string
2189
+ if ( val == null ) {
2190
+ val = "";
2191
+ } else if ( typeof val === "number" ) {
2192
+ val += "";
2193
+ } else if ( jQuery.isArray( val ) ) {
2194
+ val = jQuery.map(val, function ( value ) {
2195
+ return value == null ? "" : value + "";
2196
+ });
2197
+ }
2198
+
2199
+ hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
2200
+
2201
+ // If set returns undefined, fall back to normal setting
2202
+ if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
2203
+ this.value = val;
2204
+ }
2205
+ });
2206
+ }
2207
+ });
2208
+
2209
+ jQuery.extend({
2210
+ valHooks: {
2211
+ option: {
2212
+ get: function( elem ) {
2213
+ // attributes.value is undefined in Blackberry 4.7 but
2214
+ // uses .value. See #6932
2215
+ var val = elem.attributes.value;
2216
+ return !val || val.specified ? elem.value : elem.text;
2217
+ }
2218
+ },
2219
+ select: {
2220
+ get: function( elem ) {
2221
+ var value, option,
2222
+ options = elem.options,
2223
+ index = elem.selectedIndex,
2224
+ one = elem.type === "select-one" || index < 0,
2225
+ values = one ? null : [],
2226
+ max = one ? index + 1 : options.length,
2227
+ i = index < 0 ?
2228
+ max :
2229
+ one ? index : 0;
2230
+
2231
+ // Loop through all the selected options
2232
+ for ( ; i < max; i++ ) {
2233
+ option = options[ i ];
2234
+
2235
+ // oldIE doesn't update selected after form reset (#2551)
2236
+ if ( ( option.selected || i === index ) &&
2237
+ // Don't return options that are disabled or in a disabled optgroup
2238
+ ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) &&
2239
+ ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
2240
+
2241
+ // Get the specific value for the option
2242
+ value = jQuery( option ).val();
2243
+
2244
+ // We don't need an array for one selects
2245
+ if ( one ) {
2246
+ return value;
2247
+ }
2248
+
2249
+ // Multi-Selects return an array
2250
+ values.push( value );
2251
+ }
2252
+ }
2253
+
2254
+ return values;
2255
+ },
2256
+
2257
+ set: function( elem, value ) {
2258
+ var values = jQuery.makeArray( value );
2259
+
2260
+ jQuery(elem).find("option").each(function() {
2261
+ this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
2262
+ });
2263
+
2264
+ if ( !values.length ) {
2265
+ elem.selectedIndex = -1;
2266
+ }
2267
+ return values;
2268
+ }
2269
+ }
2270
+ },
2271
+
2272
+ // Unused in 1.8, left in so attrFn-stabbers won't die; remove in 1.9
2273
+ attrFn: {},
2274
+
2275
+ attr: function( elem, name, value, pass ) {
2276
+ var ret, hooks, notxml,
2277
+ nType = elem.nodeType;
2278
+
2279
+ // don't get/set attributes on text, comment and attribute nodes
2280
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
2281
+ return;
2282
+ }
2283
+
2284
+ if ( pass && jQuery.isFunction( jQuery.fn[ name ] ) ) {
2285
+ return jQuery( elem )[ name ]( value );
2286
+ }
2287
+
2288
+ // Fallback to prop when attributes are not supported
2289
+ if ( typeof elem.getAttribute === "undefined" ) {
2290
+ return jQuery.prop( elem, name, value );
2291
+ }
2292
+
2293
+ notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
2294
+
2295
+ // All attributes are lowercase
2296
+ // Grab necessary hook if one is defined
2297
+ if ( notxml ) {
2298
+ name = name.toLowerCase();
2299
+ hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );
2300
+ }
2301
+
2302
+ if ( value !== undefined ) {
2303
+
2304
+ if ( value === null ) {
2305
+ jQuery.removeAttr( elem, name );
2306
+ return;
2307
+
2308
+ } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {
2309
+ return ret;
2310
+
2311
+ } else {
2312
+ elem.setAttribute( name, value + "" );
2313
+ return value;
2314
+ }
2315
+
2316
+ } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {
2317
+ return ret;
2318
+
2319
+ } else {
2320
+
2321
+ ret = elem.getAttribute( name );
2322
+
2323
+ // Non-existent attributes return null, we normalize to undefined
2324
+ return ret === null ?
2325
+ undefined :
2326
+ ret;
2327
+ }
2328
+ },
2329
+
2330
+ removeAttr: function( elem, value ) {
2331
+ var propName, attrNames, name, isBool,
2332
+ i = 0;
2333
+
2334
+ if ( value && elem.nodeType === 1 ) {
2335
+
2336
+ attrNames = value.split( core_rspace );
2337
+
2338
+ for ( ; i < attrNames.length; i++ ) {
2339
+ name = attrNames[ i ];
2340
+
2341
+ if ( name ) {
2342
+ propName = jQuery.propFix[ name ] || name;
2343
+ isBool = rboolean.test( name );
2344
+
2345
+ // See #9699 for explanation of this approach (setting first, then removal)
2346
+ // Do not do this for boolean attributes (see #10870)
2347
+ if ( !isBool ) {
2348
+ jQuery.attr( elem, name, "" );
2349
+ }
2350
+ elem.removeAttribute( getSetAttribute ? name : propName );
2351
+
2352
+ // Set corresponding property to false for boolean attributes
2353
+ if ( isBool && propName in elem ) {
2354
+ elem[ propName ] = false;
2355
+ }
2356
+ }
2357
+ }
2358
+ }
2359
+ },
2360
+
2361
+ attrHooks: {
2362
+ type: {
2363
+ set: function( elem, value ) {
2364
+ // We can't allow the type property to be changed (since it causes problems in IE)
2365
+ if ( rtype.test( elem.nodeName ) && elem.parentNode ) {
2366
+ jQuery.error( "type property can't be changed" );
2367
+ } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
2368
+ // Setting the type on a radio button after the value resets the value in IE6-9
2369
+ // Reset value to it's default in case type is set after value
2370
+ // This is for element creation
2371
+ var val = elem.value;
2372
+ elem.setAttribute( "type", value );
2373
+ if ( val ) {
2374
+ elem.value = val;
2375
+ }
2376
+ return value;
2377
+ }
2378
+ }
2379
+ },
2380
+ // Use the value property for back compat
2381
+ // Use the nodeHook for button elements in IE6/7 (#1954)
2382
+ value: {
2383
+ get: function( elem, name ) {
2384
+ if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
2385
+ return nodeHook.get( elem, name );
2386
+ }
2387
+ return name in elem ?
2388
+ elem.value :
2389
+ null;
2390
+ },
2391
+ set: function( elem, value, name ) {
2392
+ if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
2393
+ return nodeHook.set( elem, value, name );
2394
+ }
2395
+ // Does not return so that setAttribute is also used
2396
+ elem.value = value;
2397
+ }
2398
+ }
2399
+ },
2400
+
2401
+ propFix: {
2402
+ tabindex: "tabIndex",
2403
+ readonly: "readOnly",
2404
+ "for": "htmlFor",
2405
+ "class": "className",
2406
+ maxlength: "maxLength",
2407
+ cellspacing: "cellSpacing",
2408
+ cellpadding: "cellPadding",
2409
+ rowspan: "rowSpan",
2410
+ colspan: "colSpan",
2411
+ usemap: "useMap",
2412
+ frameborder: "frameBorder",
2413
+ contenteditable: "contentEditable"
2414
+ },
2415
+
2416
+ prop: function( elem, name, value ) {
2417
+ var ret, hooks, notxml,
2418
+ nType = elem.nodeType;
2419
+
2420
+ // don't get/set properties on text, comment and attribute nodes
2421
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
2422
+ return;
2423
+ }
2424
+
2425
+ notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
2426
+
2427
+ if ( notxml ) {
2428
+ // Fix name and attach hooks
2429
+ name = jQuery.propFix[ name ] || name;
2430
+ hooks = jQuery.propHooks[ name ];
2431
+ }
2432
+
2433
+ if ( value !== undefined ) {
2434
+ if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
2435
+ return ret;
2436
+
2437
+ } else {
2438
+ return ( elem[ name ] = value );
2439
+ }
2440
+
2441
+ } else {
2442
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
2443
+ return ret;
2444
+
2445
+ } else {
2446
+ return elem[ name ];
2447
+ }
2448
+ }
2449
+ },
2450
+
2451
+ propHooks: {
2452
+ tabIndex: {
2453
+ get: function( elem ) {
2454
+ // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
2455
+ // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
2456
+ var attributeNode = elem.getAttributeNode("tabindex");
2457
+
2458
+ return attributeNode && attributeNode.specified ?
2459
+ parseInt( attributeNode.value, 10 ) :
2460
+ rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
2461
+ 0 :
2462
+ undefined;
2463
+ }
2464
+ }
2465
+ }
2466
+ });
 
 
2467
 
2468
  // Hook for boolean attributes
2469
+ boolHook = {
2470
+ get: function( elem, name ) {
2471
+ // Align boolean attributes with corresponding properties
2472
+ // Fall back to attribute presence where some booleans are not supported
2473
+ var attrNode,
2474
+ property = jQuery.prop( elem, name );
2475
+ return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?
2476
+ name.toLowerCase() :
2477
+ undefined;
2478
+ },
2479
+ set: function( elem, value, name ) {
2480
+ var propName;
2481
+ if ( value === false ) {
2482
+ // Remove boolean attributes when set to false
2483
+ jQuery.removeAttr( elem, name );
2484
+ } else {
2485
+ // value is true since we know at this point it's type boolean and not false
2486
+ // Set boolean attributes to the same name and set the DOM property
2487
+ propName = jQuery.propFix[ name ] || name;
2488
+ if ( propName in elem ) {
2489
+ // Only set the IDL specifically if it already exists on the element
2490
+ elem[ propName ] = true;
2491
+ }
2492
+
2493
+ elem.setAttribute( name, name.toLowerCase() );
2494
+ }
2495
+ return name;
2496
+ }
2497
+ };
2498
 
2499
  // IE6/7 do not support getting/setting some attributes with get/setAttribute
2500
+ if ( !getSetAttribute ) {
2501
+
2502
+ fixSpecified = {
2503
+ name: true,
2504
+ id: true,
2505
+ coords: true
2506
+ };
2507
+
2508
+ // Use this for any attribute in IE6/7
2509
+ // This fixes almost every IE6/7 issue
2510
+ nodeHook = jQuery.valHooks.button = {
2511
+ get: function( elem, name ) {
2512
+ var ret;
2513
+ ret = elem.getAttributeNode( name );
2514
+ return ret && ( fixSpecified[ name ] ? ret.value !== "" : ret.specified ) ?
2515
+ ret.value :
2516
+ undefined;
2517
+ },
2518
+ set: function( elem, value, name ) {
2519
+ // Set the existing or create a new attribute node
2520
+ var ret = elem.getAttributeNode( name );
2521
+ if ( !ret ) {
2522
+ ret = document.createAttribute( name );
2523
+ elem.setAttributeNode( ret );
2524
+ }
2525
+ return ( ret.value = value + "" );
2526
+ }
2527
+ };
2528
+
2529
+ // Set width and height to auto instead of 0 on empty string( Bug #8150 )
2530
+ // This is for removals
2531
+ jQuery.each([ "width", "height" ], function( i, name ) {
2532
+ jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
2533
+ set: function( elem, value ) {
2534
+ if ( value === "" ) {
2535
+ elem.setAttribute( name, "auto" );
2536
+ return value;
2537
+ }
2538
+ }
2539
+ });
2540
+ });
2541
+
2542
+ // Set contenteditable to false on removals(#10429)
2543
+ // Setting to empty string throws an error as an invalid value
2544
+ jQuery.attrHooks.contenteditable = {
2545
+ get: nodeHook.get,
2546
+ set: function( elem, value, name ) {
2547
+ if ( value === "" ) {
2548
+ value = "false";
2549
+ }
2550
+ nodeHook.set( elem, value, name );
2551
+ }
2552
+ };
2553
+ }
2554
 
2555
 
2556
  // Some attributes require a special call on IE
2557
+ if ( !jQuery.support.hrefNormalized ) {
2558
+ jQuery.each([ "href", "src", "width", "height" ], function( i, name ) {
2559
+ jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
2560
+ get: function( elem ) {
2561
+ var ret = elem.getAttribute( name, 2 );
2562
+ return ret === null ? undefined : ret;
2563
+ }
2564
+ });
2565
+ });
2566
+ }
2567
+
2568
+ if ( !jQuery.support.style ) {
2569
+ jQuery.attrHooks.style = {
2570
+ get: function( elem ) {
2571
+ // Return undefined in the case of empty string
2572
+ // Normalize to lowercase since IE uppercases css property names
2573
+ return elem.style.cssText.toLowerCase() || undefined;
2574
+ },
2575
+ set: function( elem, value ) {
2576
+ return ( elem.style.cssText = value + "" );
2577
+ }
2578
+ };
2579
+ }
2580
 
2581
  // Safari mis-reports the default selected property of an option
2582
  // Accessing the parent's selectedIndex property fixes it
2583
+ if ( !jQuery.support.optSelected ) {
2584
+ jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {
2585
+ get: function( elem ) {
2586
+ var parent = elem.parentNode;
2587
+
2588
+ if ( parent ) {
2589
+ parent.selectedIndex;
2590
+
2591
+ // Make sure that it also works with optgroups, see #5701
2592
+ if ( parent.parentNode ) {
2593
+ parent.parentNode.selectedIndex;
2594
+ }
2595
+ }
2596
+ return null;
2597
+ }
2598
+ });
2599
+ }
2600
 
2601
  // IE6/7 call enctype encoding
2602
+ if ( !jQuery.support.enctype ) {
2603
+ jQuery.propFix.enctype = "encoding";
2604
+ }
2605
 
2606
  // Radios and checkboxes getter/setter
2607
+ if ( !jQuery.support.checkOn ) {
2608
+ jQuery.each([ "radio", "checkbox" ], function() {
2609
+ jQuery.valHooks[ this ] = {
2610
+ get: function( elem ) {
2611
+ // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
2612
+ return elem.getAttribute("value") === null ? "on" : elem.value;
2613
+ }
2614
+ };
2615
+ });
2616
+ }
2617
+ jQuery.each([ "radio", "checkbox" ], function() {
2618
+ jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {
2619
+ set: function( elem, value ) {
2620
+ if ( jQuery.isArray( value ) ) {
2621
+ return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
2622
+ }
2623
+ }
2624
+ });
2625
+ });
2626
+ var rformElems = /^(?:textarea|input|select)$/i,
2627
+ rtypenamespace = /^([^\.]*|)(?:\.(.+)|)$/,
2628
+ rhoverHack = /(?:^|\s)hover(\.\S+|)\b/,
2629
+ rkeyEvent = /^key/,
2630
+ rmouseEvent = /^(?:mouse|contextmenu)|click/,
2631
+ rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
2632
+ hoverHack = function( events ) {
2633
+ return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );
2634
+ };
2635
+
2636
+ /*
2637
+ * Helper functions for managing events -- not part of the public interface.
2638
+ * Props to Dean Edwards' addEvent library for many of the ideas.
2639
+ */
2640
+ jQuery.event = {
2641
+
2642
+ add: function( elem, types, handler, data, selector ) {
2643
+
2644
+ var elemData, eventHandle, events,
2645
+ t, tns, type, namespaces, handleObj,
2646
+ handleObjIn, handlers, special;
2647
+
2648
+ // Don't attach events to noData or text/comment nodes (allow plain objects tho)
2649
+ if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {
2650
+ return;
2651
+ }
2652
+
2653
+ // Caller can pass in an object of custom data in lieu of the handler
2654
+ if ( handler.handler ) {
2655
+ handleObjIn = handler;
2656
+ handler = handleObjIn.handler;
2657
+ selector = handleObjIn.selector;
2658
+ }
2659
+
2660
+ // Make sure that the handler has a unique ID, used to find/remove it later
2661
+ if ( !handler.guid ) {
2662
+ handler.guid = jQuery.guid++;
2663
+ }
2664
+
2665
+ // Init the element's event structure and main handler, if this is the first
2666
+ events = elemData.events;
2667
+ if ( !events ) {
2668
+ elemData.events = events = {};
2669
+ }
2670
+ eventHandle = elemData.handle;
2671
+ if ( !eventHandle ) {
2672
+ elemData.handle = eventHandle = function( e ) {
2673
+ // Discard the second event of a jQuery.event.trigger() and
2674
+ // when an event is called after a page has unloaded
2675
+ return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?
2676
+ jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
2677
+ undefined;
2678
+ };
2679
+ // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
2680
+ eventHandle.elem = elem;
2681
+ }
2682
+
2683
+ // Handle multiple events separated by a space
2684
+ // jQuery(...).bind("mouseover mouseout", fn);
2685
+ types = jQuery.trim( hoverHack(types) ).split( " " );
2686
+ for ( t = 0; t < types.length; t++ ) {
2687
+
2688
+ tns = rtypenamespace.exec( types[t] ) || [];
2689
+ type = tns[1];
2690
+ namespaces = ( tns[2] || "" ).split( "." ).sort();
2691
+
2692
+ // If event changes its type, use the special event handlers for the changed type
2693
+ special = jQuery.event.special[ type ] || {};
2694
+
2695
+ // If selector defined, determine special event api type, otherwise given type
2696
+ type = ( selector ? special.delegateType : special.bindType ) || type;
2697
+
2698
+ // Update special based on newly reset type
2699
+ special = jQuery.event.special[ type ] || {};
2700
+
2701
+ // handleObj is passed to all event handlers
2702
+ handleObj = jQuery.extend({
2703
+ type: type,
2704
+ origType: tns[1],
2705
+ data: data,
2706
+ handler: handler,
2707
+ guid: handler.guid,
2708
+ selector: selector,
2709
+ needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
2710
+ namespace: namespaces.join(".")
2711
+ }, handleObjIn );
2712
+
2713
+ // Init the event handler queue if we're the first
2714
+ handlers = events[ type ];
2715
+ if ( !handlers ) {
2716
+ handlers = events[ type ] = [];
2717
+ handlers.delegateCount = 0;
2718
+
2719
+ // Only use addEventListener/attachEvent if the special events handler returns false
2720
+ if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
2721
+ // Bind the global event handler to the element
2722
+ if ( elem.addEventListener ) {
2723
+ elem.addEventListener( type, eventHandle, false );
2724
+
2725
+ } else if ( elem.attachEvent ) {
2726
+ elem.attachEvent( "on" + type, eventHandle );
2727
+ }
2728
+ }
2729
+ }
2730
+
2731
+ if ( special.add ) {
2732
+ special.add.call( elem, handleObj );
2733
+
2734
+ if ( !handleObj.handler.guid ) {
2735
+ handleObj.handler.guid = handler.guid;
2736
+ }
2737
+ }
2738
+
2739
+ // Add to the element's handler list, delegates in front
2740
+ if ( selector ) {
2741
+ handlers.splice( handlers.delegateCount++, 0, handleObj );
2742
+ } else {
2743
+ handlers.push( handleObj );
2744
+ }
2745
+
2746
+ // Keep track of which events have ever been used, for event optimization
2747
+ jQuery.event.global[ type ] = true;
2748
+ }
2749
+
2750
+ // Nullify elem to prevent memory leaks in IE
2751
+ elem = null;
2752
+ },
2753
+
2754
+ global: {},
2755
+
2756
+ // Detach an event or set of events from an element
2757
+ remove: function( elem, types, handler, selector, mappedTypes ) {
2758
+
2759
+ var t, tns, type, origType, namespaces, origCount,
2760
+ j, events, special, eventType, handleObj,
2761
+ elemData = jQuery.hasData( elem ) && jQuery._data( elem );
2762
+
2763
+ if ( !elemData || !(events = elemData.events) ) {
2764
+ return;
2765
+ }
2766
+
2767
+ // Once for each type.namespace in types; type may be omitted
2768
+ types = jQuery.trim( hoverHack( types || "" ) ).split(" ");
2769
+ for ( t = 0; t < types.length; t++ ) {
2770
+ tns = rtypenamespace.exec( types[t] ) || [];
2771
+ type = origType = tns[1];
2772
+ namespaces = tns[2];
2773
+
2774
+ // Unbind all events (on this namespace, if provided) for the element
2775
+ if ( !type ) {
2776
+ for ( type in events ) {
2777
+ jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
2778
+ }
2779
+ continue;
2780
+ }
2781
+
2782
+ special = jQuery.event.special[ type ] || {};
2783
+ type = ( selector? special.delegateType : special.bindType ) || type;
2784
+ eventType = events[ type ] || [];
2785
+ origCount = eventType.length;
2786
+ namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.|)") + "(\\.|$)") : null;
2787
+
2788
+ // Remove matching events
2789
+ for ( j = 0; j < eventType.length; j++ ) {
2790
+ handleObj = eventType[ j ];
2791
+
2792
+ if ( ( mappedTypes || origType === handleObj.origType ) &&
2793
+ ( !handler || handler.guid === handleObj.guid ) &&
2794
+ ( !namespaces || namespaces.test( handleObj.namespace ) ) &&
2795
+ ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
2796
+ eventType.splice( j--, 1 );
2797
+
2798
+ if ( handleObj.selector ) {
2799
+ eventType.delegateCount--;
2800
+ }
2801
+ if ( special.remove ) {
2802
+ special.remove.call( elem, handleObj );
2803
+ }
2804
+ }
2805
+ }
2806
+
2807
+ // Remove generic event handler if we removed something and no more handlers exist
2808
+ // (avoids potential for endless recursion during removal of special event handlers)
2809
+ if ( eventType.length === 0 && origCount !== eventType.length ) {
2810
+ if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
2811
+ jQuery.removeEvent( elem, type, elemData.handle );
2812
+ }
2813
+
2814
+ delete events[ type ];
2815
+ }
2816
+ }
2817
+
2818
+ // Remove the expando if it's no longer used
2819
+ if ( jQuery.isEmptyObject( events ) ) {
2820
+ delete elemData.handle;
2821
+
2822
+ // removeData also checks for emptiness and clears the expando if empty
2823
+ // so use it instead of delete
2824
+ jQuery.removeData( elem, "events", true );
2825
+ }
2826
+ },
2827
+
2828
+ // Events that are safe to short-circuit if no handlers are attached.
2829
+ // Native DOM events should not be added, they may have inline handlers.
2830
+ customEvent: {
2831
+ "getData": true,
2832
+ "setData": true,
2833
+ "changeData": true
2834
+ },
2835
+
2836
+ trigger: function( event, data, elem, onlyHandlers ) {
2837
+ // Don't do events on text and comment nodes
2838
+ if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {
2839
+ return;
2840
+ }
2841
+
2842
+ // Event object or event type
2843
+ var cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType,
2844
+ type = event.type || event,
2845
+ namespaces = [];
2846
+
2847
+ // focus/blur morphs to focusin/out; ensure we're not firing them right now
2848
+ if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
2849
+ return;
2850
+ }
2851
+
2852
+ if ( type.indexOf( "!" ) >= 0 ) {
2853
+ // Exclusive events trigger only for the exact event (no namespaces)
2854
+ type = type.slice(0, -1);
2855
+ exclusive = true;
2856
+ }
2857
+
2858
+ if ( type.indexOf( "." ) >= 0 ) {
2859
+ // Namespaced trigger; create a regexp to match event type in handle()
2860
+ namespaces = type.split(".");
2861
+ type = namespaces.shift();
2862
+ namespaces.sort();
2863
+ }
2864
+
2865
+ if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {
2866
+ // No jQuery handlers for this event type, and it can't have inline handlers
2867
+ return;
2868
+ }
2869
+
2870
+ // Caller can pass in an Event, Object, or just an event type string
2871
+ event = typeof event === "object" ?
2872
+ // jQuery.Event object
2873
+ event[ jQuery.expando ] ? event :
2874
+ // Object literal
2875
+ new jQuery.Event( type, event ) :
2876
+ // Just the event type (string)
2877
+ new jQuery.Event( type );
2878
+
2879
+ event.type = type;
2880
+ event.isTrigger = true;
2881
+ event.exclusive = exclusive;
2882
+ event.namespace = namespaces.join( "." );
2883
+ event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null;
2884
+ ontype = type.indexOf( ":" ) < 0 ? "on" + type : "";
2885
+
2886
+ // Handle a global trigger
2887
+ if ( !elem ) {
2888
+
2889
+ // TODO: Stop taunting the data cache; remove global events and always attach to document
2890
+ cache = jQuery.cache;
2891
+ for ( i in cache ) {
2892
+ if ( cache[ i ].events && cache[ i ].events[ type ] ) {
2893
+ jQuery.event.trigger( event, data, cache[ i ].handle.elem, true );
2894
+ }
2895
+ }
2896
+ return;
2897
+ }
2898
+
2899
+ // Clean up the event in case it is being reused
2900
+ event.result = undefined;
2901
+ if ( !event.target ) {
2902
+ event.target = elem;
2903
+ }
2904
+
2905
+ // Clone any incoming data and prepend the event, creating the handler arg list
2906
+ data = data != null ? jQuery.makeArray( data ) : [];
2907
+ data.unshift( event );
2908
+
2909
+ // Allow special events to draw outside the lines
2910
+ special = jQuery.event.special[ type ] || {};
2911
+ if ( special.trigger && special.trigger.apply( elem, data ) === false ) {
2912
+ return;
2913
+ }
2914
+
2915
+ // Determine event propagation path in advance, per W3C events spec (#9951)
2916
+ // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
2917
+ eventPath = [[ elem, special.bindType || type ]];
2918
+ if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
2919
+
2920
+ bubbleType = special.delegateType || type;
2921
+ cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;
2922
+ for ( old = elem; cur; cur = cur.parentNode ) {
2923
+ eventPath.push([ cur, bubbleType ]);
2924
+ old = cur;
2925
+ }
2926
+
2927
+ // Only add window if we got to document (e.g., not plain obj or detached DOM)
2928
+ if ( old === (elem.ownerDocument || document) ) {
2929
+ eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);
2930
+ }
2931
+ }
2932
+
2933
+ // Fire handlers on the event path
2934
+ for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {
2935
+
2936
+ cur = eventPath[i][0];
2937
+ event.type = eventPath[i][1];
2938
+
2939
+ handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
2940
+ if ( handle ) {
2941
+ handle.apply( cur, data );
2942
+ }
2943
+ // Note that this is a bare JS function and not a jQuery handler
2944
+ handle = ontype && cur[ ontype ];
2945
+ if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {
2946
+ event.preventDefault();
2947
+ }
2948
+ }
2949
+ event.type = type;
2950
+
2951
+ // If nobody prevented the default action, do it now
2952
+ if ( !onlyHandlers && !event.isDefaultPrevented() ) {
2953
+
2954
+ if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&
2955
+ !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {
2956
+
2957
+ // Call a native DOM method on the target with the same name name as the event.
2958
+ // Can't use an .isFunction() check here because IE6/7 fails that test.
2959
+ // Don't do default actions on window, that's where global variables be (#6170)
2960
+ // IE<9 dies on focus/blur to hidden element (#1486)
2961
+ if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {
2962
+
2963
+ // Don't re-trigger an onFOO event when we call its FOO() method
2964
+ old = elem[ ontype ];
2965
+
2966
+ if ( old ) {
2967
+ elem[ ontype ] = null;
2968
+ }
2969
+
2970
+ // Prevent re-triggering of the same event, since we already bubbled it above
2971
+ jQuery.event.triggered = type;
2972
+ elem[ type ]();
2973
+ jQuery.event.triggered = undefined;
2974
+
2975
+ if ( old ) {
2976
+ elem[ ontype ] = old;
2977
+ }
2978
+ }
2979
+ }
2980
+ }
2981
+
2982
+ return event.result;
2983
+ },
2984
+
2985
+ dispatch: function( event ) {
2986
+
2987
+ // Make a writable jQuery.Event from the native event object
2988
+ event = jQuery.event.fix( event || window.event );
2989
+
2990
+ var i, j, cur, ret, selMatch, matched, matches, handleObj, sel, related,
2991
+ handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []),
2992
+ delegateCount = handlers.delegateCount,
2993
+ args = core_slice.call( arguments ),
2994
+ run_all = !event.exclusive && !event.namespace,
2995
+ special = jQuery.event.special[ event.type ] || {},
2996
+ handlerQueue = [];
2997
+
2998
+ // Use the fix-ed jQuery.Event rather than the (read-only) native event
2999
+ args[0] = event;
3000
+ event.delegateTarget = this;
3001
+
3002
+ // Call the preDispatch hook for the mapped type, and let it bail if desired
3003
+ if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
3004
+ return;
3005
+ }
3006
+
3007
+ // Determine handlers that should run if there are delegated events
3008
+ // Avoid non-left-click bubbling in Firefox (#3861)
3009
+ if ( delegateCount && !(event.button && event.type === "click") ) {
3010
+
3011
+ for ( cur = event.target; cur != this; cur = cur.parentNode || this ) {
3012
+
3013
+ // Don't process clicks (ONLY) on disabled elements (#6911, #8165, #11382, #11764)
3014
+ if ( cur.disabled !== true || event.type !== "click" ) {
3015
+ selMatch = {};
3016
+ matches = [];
3017
+ for ( i = 0; i < delegateCount; i++ ) {
3018
+ handleObj = handlers[ i ];
3019
+ sel = handleObj.selector;
3020
+
3021
+ if ( selMatch[ sel ] === undefined ) {
3022
+ selMatch[ sel ] = handleObj.needsContext ?
3023
+ jQuery( sel, this ).index( cur ) >= 0 :
3024
+ jQuery.find( sel, this, null, [ cur ] ).length;
3025
+ }
3026
+ if ( selMatch[ sel ] ) {
3027
+ matches.push( handleObj );
3028
+ }
3029
+ }
3030
+ if ( matches.length ) {
3031
+ handlerQueue.push({ elem: cur, matches: matches });
3032
+ }
3033
+ }
3034
+ }
3035
+ }
3036
+
3037
+ // Add the remaining (directly-bound) handlers
3038
+ if ( handlers.length > delegateCount ) {
3039
+ handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) });
3040
+ }
3041
+
3042
+ // Run delegates first; they may want to stop propagation beneath us
3043
+ for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {
3044
+ matched = handlerQueue[ i ];
3045
+ event.currentTarget = matched.elem;
3046
+
3047
+ for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {
3048
+ handleObj = matched.matches[ j ];
3049
+
3050
+ // Triggered event must either 1) be non-exclusive and have no namespace, or
3051
+ // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
3052
+ if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {
3053
+
3054
+ event.data = handleObj.data;
3055
+ event.handleObj = handleObj;
3056
+
3057
+ ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
3058
+ .apply( matched.elem, args );
3059
+
3060
+ if ( ret !== undefined ) {
3061
+ event.result = ret;
3062
+ if ( ret === false ) {
3063
+ event.preventDefault();
3064
+ event.stopPropagation();
3065
+ }
3066
+ }
3067
+ }
3068
+ }
3069
+ }
3070
+
3071
+ // Call the postDispatch hook for the mapped type
3072
+ if ( special.postDispatch ) {
3073
+ special.postDispatch.call( this, event );
3074
+ }
3075
+
3076
+ return event.result;
3077
+ },
3078
+
3079
+ // Includes some event props shared by KeyEvent and MouseEvent
3080
+ // *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 ***
3081
+ props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
3082
+
3083
+ fixHooks: {},
3084
+
3085
+ keyHooks: {
3086
+ props: "char charCode key keyCode".split(" "),
3087
+ filter: function( event, original ) {
3088
+
3089
+ // Add which for key events
3090
+ if ( event.which == null ) {
3091
+ event.which = original.charCode != null ? original.charCode : original.keyCode;
3092
+ }
3093
+
3094
+ return event;
3095
+ }
3096
+ },
3097
+
3098
+ mouseHooks: {
3099
+ props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
3100
+ filter: function( event, original ) {
3101
+ var eventDoc, doc, body,
3102
+ button = original.button,
3103
+ fromElement = original.fromElement;
3104
+
3105
+ // Calculate pageX/Y if missing and clientX/Y available
3106
+ if ( event.pageX == null && original.clientX != null ) {
3107
+ eventDoc = event.target.ownerDocument || document;
3108
+ doc = eventDoc.documentElement;
3109
+ body = eventDoc.body;
3110
+
3111
+ event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
3112
+ event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );
3113
+ }
3114
+
3115
+ // Add relatedTarget, if necessary
3116
+ if ( !event.relatedTarget && fromElement ) {
3117
+ event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
3118
+ }
3119
+
3120
+ // Add which for click: 1 === left; 2 === middle; 3 === right
3121
+ // Note: button is not normalized, so don't use it
3122
+ if ( !event.which && button !== undefined ) {
3123
+ event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
3124
+ }
3125
+
3126
+ return event;
3127
+ }
3128
+ },
3129
+
3130
+ fix: function( event ) {
3131
+ if ( event[ jQuery.expando ] ) {
3132
+ return event;
3133
+ }
3134
+
3135
+ // Create a writable copy of the event object and normalize some properties
3136
+ var i, prop,
3137
+ originalEvent = event,
3138
+ fixHook = jQuery.event.fixHooks[ event.type ] || {},
3139
+ copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
3140
+
3141
+ event = jQuery.Event( originalEvent );
3142
+
3143
+ for ( i = copy.length; i; ) {
3144
+ prop = copy[ --i ];
3145
+ event[ prop ] = originalEvent[ prop ];
3146
+ }
3147
+
3148
+ // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)
3149
+ if ( !event.target ) {
3150
+ event.target = originalEvent.srcElement || document;
3151
+ }
3152
+
3153
+ // Target should not be a text node (#504, Safari)
3154
+ if ( event.target.nodeType === 3 ) {
3155
+ event.target = event.target.parentNode;
3156
+ }
3157
+
3158
+ // For mouse/key events, metaKey==false if it's undefined (#3368, #11328; IE6/7/8)
3159
+ event.metaKey = !!event.metaKey;
3160
+
3161
+ return fixHook.filter? fixHook.filter( event, originalEvent ) : event;
3162
+ },
3163
+
3164
+ special: {
3165
+ load: {
3166
+ // Prevent triggered image.load events from bubbling to window.load
3167
+ noBubble: true
3168
+ },
3169
+
3170
+ focus: {
3171
+ delegateType: "focusin"
3172
+ },
3173
+ blur: {
3174
+ delegateType: "focusout"
3175
+ },
3176
+
3177
+ beforeunload: {
3178
+ setup: function( data, namespaces, eventHandle ) {
3179
+ // We only want to do this special case on windows
3180
+ if ( jQuery.isWindow( this ) ) {
3181
+ this.onbeforeunload = eventHandle;
3182
+ }
3183
+ },
3184
+
3185
+ teardown: function( namespaces, eventHandle ) {
3186
+ if ( this.onbeforeunload === eventHandle ) {
3187
+ this.onbeforeunload = null;
3188
+ }
3189
+ }
3190
+ }
3191
+ },
3192
+
3193
+ simulate: function( type, elem, event, bubble ) {
3194
+ // Piggyback on a donor event to simulate a different one.
3195
+ // Fake originalEvent to avoid donor's stopPropagation, but if the
3196
+ // simulated event prevents default then we do the same on the donor.
3197
+ var e = jQuery.extend(
3198
+ new jQuery.Event(),
3199
+ event,
3200
+ { type: type,
3201
+ isSimulated: true,
3202
+ originalEvent: {}
3203
+ }
3204
+ );
3205
+ if ( bubble ) {
3206
+ jQuery.event.trigger( e, null, elem );
3207
+ } else {
3208
+ jQuery.event.dispatch.call( elem, e );
3209
+ }
3210
+ if ( e.isDefaultPrevented() ) {
3211
+ event.preventDefault();
3212
+ }
3213
+ }
3214
+ };
 
3215
 
3216
  // Some plugins are using, but it's undocumented/deprecated and will be removed.
3217
  // The 1.7 special event interface should provide all the hooks needed now.
3218
+ jQuery.event.handle = jQuery.event.dispatch;
3219
+
3220
+ jQuery.removeEvent = document.removeEventListener ?
3221
+ function( elem, type, handle ) {
3222
+ if ( elem.removeEventListener ) {
3223
+ elem.removeEventListener( type, handle, false );
3224
+ }
3225
+ } :
3226
+ function( elem, type, handle ) {
3227
+ var name = "on" + type;
3228
+
3229
+ if ( elem.detachEvent ) {
3230
+
3231
+ // #8545, #7054, preventing memory leaks for custom events in IE6-8
3232
+ // detachEvent needed property on element, by name of that event, to properly expose it to GC
3233
+ if ( typeof elem[ name ] === "undefined" ) {
3234
+ elem[ name ] = null;
3235
+ }
3236
+
3237
+ elem.detachEvent( name, handle );
3238
+ }
3239
+ };
3240
+
3241
+ jQuery.Event = function( src, props ) {
3242
+ // Allow instantiation without the 'new' keyword
3243
+ if ( !(this instanceof jQuery.Event) ) {
3244
+ return new jQuery.Event( src, props );
3245
+ }
3246
+
3247
+ // Event object
3248
+ if ( src && src.type ) {
3249
+ this.originalEvent = src;
3250
+ this.type = src.type;
3251
+
3252
+ // Events bubbling up the document may have been marked as prevented
3253
+ // by a handler lower down the tree; reflect the correct value.
3254
+ this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||
3255
+ src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
3256
+
3257
+ // Event type
3258
+ } else {
3259
+ this.type = src;
3260
+ }
3261
+
3262
+ // Put explicitly provided properties onto the event object
3263
+ if ( props ) {
3264
+ jQuery.extend( this, props );
3265
+ }
3266
+
3267
+ // Create a timestamp if incoming event doesn't have one
3268
+ this.timeStamp = src && src.timeStamp || jQuery.now();
3269
+
3270
+ // Mark it as fixed
3271
+ this[ jQuery.expando ] = true;
3272
+ };
3273
+
3274
+ function returnFalse() {
3275
+ return false;
3276
+ }
3277
+ function returnTrue() {
3278
+ return true;
3279
+ }
 
3280
 
3281
  // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
3282
  // http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
3283
+ jQuery.Event.prototype = {
3284
+ preventDefault: function() {
3285
+ this.isDefaultPrevented = returnTrue;
3286
+
3287
+ var e = this.originalEvent;
3288
+ if ( !e ) {
3289
+ return;
3290
+ }
3291
+
3292
+ // if preventDefault exists run it on the original event
3293
+ if ( e.preventDefault ) {
3294
+ e.preventDefault();
3295
+
3296
+ // otherwise set the returnValue property of the original event to false (IE)
3297
+ } else {
3298
+ e.returnValue = false;
3299
+ }
3300
+ },
3301
+ stopPropagation: function() {
3302
+ this.isPropagationStopped = returnTrue;
3303
+
3304
+ var e = this.originalEvent;
3305
+ if ( !e ) {
3306
+ return;
3307
+ }
3308
+ // if stopPropagation exists run it on the original event
3309
+ if ( e.stopPropagation ) {
3310
+ e.stopPropagation();
3311
+ }
3312
+ // otherwise set the cancelBubble property of the original event to true (IE)
3313
+ e.cancelBubble = true;
3314
+ },
3315
+ stopImmediatePropagation: function() {
3316
+ this.isImmediatePropagationStopped = returnTrue;
3317
+ this.stopPropagation();
3318
+ },
3319
+ isDefaultPrevented: returnFalse,
3320
+ isPropagationStopped: returnFalse,
3321
+ isImmediatePropagationStopped: returnFalse
3322
+ };
3323
 
3324
  // Create mouseenter/leave events using mouseover/out and event-time checks
3325
+ jQuery.each({
3326
+ mouseenter: "mouseover",
3327
+ mouseleave: "mouseout"
3328
+ }, function( orig, fix ) {
3329
+ jQuery.event.special[ orig ] = {
3330
+ delegateType: fix,
3331
+ bindType: fix,
3332
+
3333
+ handle: function( event ) {
3334
+ var ret,
3335
+ target = this,
3336
+ related = event.relatedTarget,
3337
+ handleObj = event.handleObj,
3338
+ selector = handleObj.selector;
3339
+
3340
+ // For mousenter/leave call the handler if related is outside the target.
3341
+ // NB: No relatedTarget if the mouse left/entered the browser window
3342
+ if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
3343
+ event.type = handleObj.origType;
3344
+ ret = handleObj.handler.apply( this, arguments );
3345
+ event.type = fix;
3346
+ }
3347
+ return ret;
3348
+ }
3349
+ };
3350
+ });
3351
 
3352
  // IE submit delegation
3353
+ if ( !jQuery.support.submitBubbles ) {
3354
+
3355
+ jQuery.event.special.submit = {
3356
+ setup: function() {
3357
+ // Only need this for delegated form submit events
3358
+ if ( jQuery.nodeName( this, "form" ) ) {
3359
+ return false;
3360
+ }
3361
+
3362
+ // Lazy-add a submit handler when a descendant form may potentially be submitted
3363
+ jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
3364
+ // Node name check avoids a VML-related crash in IE (#9807)
3365
+ var elem = e.target,
3366
+ form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
3367
+ if ( form && !jQuery._data( form, "_submit_attached" ) ) {
3368
+ jQuery.event.add( form, "submit._submit", function( event ) {
3369
+ event._submit_bubble = true;
3370
+ });
3371
+ jQuery._data( form, "_submit_attached", true );
3372
+ }
3373
+ });
3374
+ // return undefined since we don't need an event listener
3375
+ },
3376
+
3377
+ postDispatch: function( event ) {
3378
+ // If form was submitted by the user, bubble the event up the tree
3379
+ if ( event._submit_bubble ) {
3380
+ delete event._submit_bubble;
3381
+ if ( this.parentNode && !event.isTrigger ) {
3382
+ jQuery.event.simulate( "submit", this.parentNode, event, true );
3383
+ }
3384
+ }
3385
+ },
3386
+
3387
+ teardown: function() {
3388
+ // Only need this for delegated form submit events
3389
+ if ( jQuery.nodeName( this, "form" ) ) {
3390
+ return false;
3391
+ }
3392
+
3393
+ // Remove delegated handlers; cleanData eventually reaps submit handlers attached above
3394
+ jQuery.event.remove( this, "._submit" );
3395
+ }
3396
+ };
3397
+ }
3398
 
3399
  // IE change delegation and checkbox/radio fix
3400
+ if ( !jQuery.support.changeBubbles ) {
3401
+
3402
+ jQuery.event.special.change = {
3403
+
3404
+ setup: function() {
3405
+
3406
+ if ( rformElems.test( this.nodeName ) ) {
3407
+ // IE doesn't fire change on a check/radio until blur; trigger it on click
3408
+ // after a propertychange. Eat the blur-change in special.change.handle.
3409
+ // This still fires onchange a second time for check/radio after blur.
3410
+ if ( this.type === "checkbox" || this.type === "radio" ) {
3411
+ jQuery.event.add( this, "propertychange._change", function( event ) {
3412
+ if ( event.originalEvent.propertyName === "checked" ) {
3413
+ this._just_changed = true;
3414
+ }
3415
+ });
3416
+ jQuery.event.add( this, "click._change", function( event ) {
3417
+ if ( this._just_changed && !event.isTrigger ) {
3418
+ this._just_changed = false;
3419
+ }
3420
+ // Allow triggered, simulated change events (#11500)
3421
+ jQuery.event.simulate( "change", this, event, true );
3422
+ });
3423
+ }
3424
+ return false;
3425
+ }
3426
+ // Delegated event; lazy-add a change handler on descendant inputs
3427
+ jQuery.event.add( this, "beforeactivate._change", function( e ) {
3428
+ var elem = e.target;
3429
+
3430
+ if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "_change_attached" ) ) {
3431
+ jQuery.event.add( elem, "change._change", function( event ) {
3432
+ if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
3433
+ jQuery.event.simulate( "change", this.parentNode, event,